Name: series-workflow24x98 Phase: Running StartedAt: 2026-08-06 15:44:17 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[0] Phase: Succeeded StartedAt: 2026-08-06 15:44:17 +0000 UTC FinishedAt: 2026-08-06 16:29:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 15:44:17 +0000 UTC FinishedAt: 2026-08-06 16:29:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b0057c68df711bf6a62033c072ac61c4f9d3cbc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "REALTEK_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b0057c68df711bf6a62033c072ac61c4f9d3cbc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "REALTEK_PHY" ], "series_id": "c44c9fb9-8cce-4c69-ab9a-cfde5f53142b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtlgen_write_mmd", "rtl822x_write_mmd" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JFQUxURUtfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsZ2VuX3dyaXRlX21tZCYjMzQ7LAogICAgJiMzNDtydGw4MjJ4X3dyaXRlX21tZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhcmd1bWVudHMgd2VyZSBzd2FwcGVkIGluIGEgY2FsbCB0byBydGxnZW5fd3JpdGVfdmVuZDIgaW5zaWRlIHJ0bGdlbl93cml0ZV9tbWQuIFRoaXMgZnVuY3Rpb24gaXMgYSAud3JpdGVfbW1kIGNhbGxiYWNrIGZvciBSZWFsdGVrIFBIWSBkcml2ZXJzIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFNJT0NTTUlJUkVHIGlvY3RsIG9yIEVUSFRPT0xfU0VFRSB3aGVuIGEgUmVhbHRlayBQSFkgaXMgYXR0YWNoZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMWE4MDNjMGZkNmZkZmQxYzdmY2JmNmMxZmRhOTg2NzY1MWEyZWZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxNjoyMToxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5pbmRleCBhMGE3OTE5MjM4NGVlLi4xNzdiNjJhN2IyZDE2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtMTc2OCw3ICYjNDM7MTc2OCw3IEBAIHN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxuIFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9WRU5EMilcbiBcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCB2YWwpO1xuIFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxuLVx0XHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIFJUTF9NRElPX0FOX0VFRV9BRFYpO1xuJiM0MztcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEViwgdmFsKTtcbiBcdGVsc2VcbiBcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JFQUxURUtfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsZ2VuX3dyaXRlX21tZCYjMzQ7LAogICAgJiMzNDtydGw4MjJ4X3dyaXRlX21tZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhcmd1bWVudHMgd2VyZSBzd2FwcGVkIGluIGEgY2FsbCB0byBydGxnZW5fd3JpdGVfdmVuZDIgaW5zaWRlIHJ0bGdlbl93cml0ZV9tbWQuIFRoaXMgZnVuY3Rpb24gaXMgYSAud3JpdGVfbW1kIGNhbGxiYWNrIGZvciBSZWFsdGVrIFBIWSBkcml2ZXJzIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFNJT0NTTUlJUkVHIGlvY3RsIG9yIEVUSFRPT0xfU0VFRSB3aGVuIGEgUmVhbHRlayBQSFkgaXMgYXR0YWNoZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMWE4MDNjMGZkNmZkZmQxYzdmY2JmNmMxZmRhOTg2NzY1MWEyZWZjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAxNjoyMToxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKaW5kZXggYTBhNzkxOTIzODRlZS4uMTc3YjYyYTdiMmQxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKQEAgLTE3NjgsNyAmIzQzOzE3NjgsNyBAQCBzdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSwKIAlpZiAoZGV2bnVtID09IE1ESU9fTU1EX1ZFTkQyKQogCQlyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIHZhbCk7CiAJZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOICZhbXA7JmFtcDsgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVikKLQkJcmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCBSVExfTURJT19BTl9FRUVfQURWKTsKJiM0MzsJCXJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYsIHZhbCk7CiAJZWxzZQogCQlyZXQgPSAtRU9QTk9UU1VQUDsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlYWx0ZWsgUEhZIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYC4gSXQmIzM5O3MgYSBSZWFsdGVrIFBIWSBkcml2ZXIsIHdoaWNoIGlzIGEgY29tbW9uIGFyZWEgZm9yIHBvdGVudGlhbCBpc3N1ZXMuIFRoZSBkZXNjcmlwdGlvbiBpbmRpY2F0ZXMgYSBidWdmaXggaW4gYHJ0bGdlbl93cml0ZV9tbWRgLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBob3cgYHJ0bGdlbl93cml0ZV92ZW5kMmAgaXMgYmVpbmcgY2FsbGVkLiBSaWdodCwgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIHRoZSBhcmd1bWVudHMgZm9yIGBydGxnZW5fd3JpdGVfdmVuZDJgIHN3YXBwZWQuIEl0IGxvb2tzIGxpa2UgaXQgd2FzIHBhc3NpbmcgYHJlZ251bWAgYW5kIGB2YWxgIGluIHRoZSB3cm9uZyBvcmRlci4gVGhlIGZpeGVkIGNvZGUgc2VlbXMgdG8gY29ycmVjdCB0aGlzIHRvIGBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpYC4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIHRoaXMgYmUgdHJpZ2dlcmVkPyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgcmVhY2hhYmlsaXR5LiBTaW5jZSBpdCYjMzk7cyBhIFBIWSBkcml2ZXIsIGl0JiMzOTtzIHByZXR0eSBsaWtlbHkgdGhhdCB3ZSBjYW4gaGl0IHRoaXMgY29kZSBwYXRoIHNvbWVob3cuIFZpcnR1YWwgbmV0d29yayBkZXZpY2VzIHRoYXQgdXNlIFBIWXMgYXJlIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYW5kIEkmIzM5O2QgYmV0IHRoZSBNRElPIGJ1cyBpcyB0aGUga2V5IGhlcmUuIFdlIG1pZ2h0IGJlIGFibGUgdG8gaW5zdGFudGlhdGUgUEhZcyB1c2luZyB0aGUgTURJTyBidXMgdG8gdHJpZ2dlciB0aGlzLCBvciB2aWEgTURJTyBpb2N0bHMuCgpMZXQmIzM5O3Mgc2VlLi4uc3l6a2FsbGVyISBJdCYjMzk7cyBsaWtlbHkgdGhhdCBzeXprYWxsZXIgY2FuIGhhbmRsZSB0aGlzLCByaWdodD8gSXQgY2FuIGZ1enogTURJTyBidXNlcyBhbmQgUEhZcyB1c2luZyBgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG9yIGp1c3QgdGhyb3VnaCBkaXJlY3QgTURJTyBpb2N0bCBtYW5pcHVsYXRpb24uIFRoYXQgc2hvdWxkIGJlIGEgdmVyeSBlZmZlY3RpdmUgd2F5IHRvIGdldCB0byB0aGlzIGNvZGUuIE9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYHJ0bGdlbl93cml0ZV9tbWRgIGFuZCBzZWUgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGxnZW5fd3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc0NT1zdGF0aWMgaW50IHJ0bGdlbl9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NjItXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzYzOnN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc2NC1cdFx0XHQgICAgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzk1PXN0YXRpYyBpbnQgcnRsODIyeF93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzk3LXtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3OTg6XHRpbnQgcmV0ID0gcnRsZ2VuX3dyaXRlX21tZChwaHlkZXYsIGRldm51bSwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5OS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zMDg2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjAzLVx0XHQucmVhZF9tbWRcdD0gcnRsZ2VuX3JlYWRfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIwNDpcdFx0LndyaXRlX21tZFx0PSBydGxnZW5fd3JpdGVfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwNS1cdH0sIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjE3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLgoKKipJbnZlc3RpZ2F0aW5nIHJ0bGdlbl93cml0ZV9tbWQgaW4gUmVhbHRlayBQSFkgRHJpdmVycyoqCgpSaWdodCwgc28gYHJ0bGdlbl93cml0ZV9tbWRgIGlzIGJlaW5nIGVtcGxveWVkIGFzIHRoZSBgLndyaXRlX21tZGAgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYSBoYW5kZnVsIG9mIFBIWSBkcml2ZXJzIHJlc2lkaW5nIGluIHRoZSBgcmVhbHRla19kcnZzYCBkaXJlY3RvcnkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGFyZSBmb3IgdGhpcyBzcGVjaWZpYyBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIG92ZXJhbGwgY29udGV4dCB0byBlbnN1cmUgdGhpcyBpcyB1c2VkIGFzIGludGVuZGVkLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBhc3NvY2lhdGVkIGZpbGVzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWFsdGVrX21haW4ubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlOjI6cmVhbHRlay15XHRcdFx0JiM0Mzs9IHJlYWx0ZWtfbWFpbi5vXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZS0zLXJlYWx0ZWstJChDT05GSUdfUkVBTFRFS19QSFlfSFdNT04pICYjNDM7PSByZWFsdGVrX2h3bW9uLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczoKCioqSW52ZXN0aWdhdGluZyB0aGUgUmVhbHRlayBQSFkgRHJpdmVyIExvY2F0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBSZWFsdGVrIFBIWSBkcml2ZXJzIGFyZSBsb2NhdGVkIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBNeSBmaXJzdCBpbnN0aW5jdCwgYW5kIHRoZSBzdGFuZGFyZCBwcmFjdGljZSBmb3IgdGhpcyBraW5kIG9mIGludmVzdGlnYXRpb24sIGlzIHRvIGNoZWNrIHRoZSBgTWFrZWZpbGVgIHdpdGhpbiB0aGUgcmVsZXZhbnQgZHJpdmVyIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBuZXR3b3JrIFBIWSBkcml2ZXJzLiBHaXZlbiBteSBleHBlcmllbmNlLCBgZHJpdmVycy9uZXQvcGh5L2AgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuIEEgcXVpY2sgcGVlayBpbiBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCB3aWxsIHByb2JhYmx5IGdpdmUgbWUgdGhlIGFuc3dlciwgbGlzdGluZyB0aGUgc3BlY2lmaWMgb2JqZWN0IGZpbGVzIG9yIHNvdXJjZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggUmVhbHRlayBQSFkgc3VwcG9ydC4gVGhpcyBzaG91bGQgYmUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWFsdGVrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT05NT1vYmotJChDT05GSUdfUVNFTUlfUEhZKVx0XHQmIzQzOz0gcXNlbWkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk2Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcdCYjNDM7PSByZWFsdGVrL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk3LW9iai0kKENPTkZJR19SRU5FU0FTX1BIWSlcdCYjNDM7PSB1UEQ2MDYyMC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgzMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBSZWFsdGVrIFBIWSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyB3ZSBuZWVkIGBDT05GSUdfUkVBTFRFS19QSFlgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBiZWZvcmUgSSBqdXN0IGJsaW5kbHkgZW5hYmxlIGl0LCBsZXQmIzM5O3MgYmUgc21hcnQgYWJvdXQgdGhpcy4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiB3aGF0IGFyZSBpdHMgZGVwZW5kZW5jaWVzPyBUaGVyZSYjMzk7cyBhbHdheXMgYSB3ZWIgb2YgaW50ZXJjb25uZWN0ZWQgY29uZmlndXJhdGlvbnMgaW4gdGhlc2UgdGhpbmdzLCBhbmQgb3Zlcmxvb2tpbmcgYSBkZXBlbmRlbmN5IGNhbiBsZWFkIHRvIGhvdXJzIG9mIGRlYnVnZ2luZyBsYXRlciBvbi4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgYENPTkZJR19SRUFMVEVLX1BIWWAuIFdlIGRvbiYjMzk7dCB3YW50IHRvIGJyZWFrIGFueXRoaW5nIGVsc2UgaW4gdGhlIHByb2Nlc3MsIGFuZCB3ZSB3YW50IHRvIGVuc3VyZSBldmVyeXRoaW5nIG5lZWRlZCBpcyBlbmFibGVkIG9yIHNldCB1cCBjb3JyZWN0bHkgYmVmb3JlIHdlIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJFQUxURUtfUEhZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFBIWXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnPTg9aWYgUkVBTFRFS19QSFlcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctOS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTA6Y29uZmlnIFJFQUxURUtfUEhZX0hXTU9OXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtIV01PTiBzdXBwb3J0IGZvciBSZWFsdGVrIFBIWXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIyOQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBpZiBJJiMzOTttIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgUmVhbHRlayBQSFkgS2NvbmZpZyoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGlzIFJlYWx0ZWsgUEhZIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQga25vd2luZyBpdHMgZGVwZW5kZW5jaWVzIHdpbGwgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuIFRoaXMgZmlsZSB3aWxsIHJldmVhbCB3aGF0IG90aGVyIGNvbXBvbmVudHMgb3Igc2V0dGluZ3MgYXJlIHJlcXVpcmVkIG9yIGNhbiBpbXBhY3QgdGhpcyBzcGVjaWZpYyBQSFkgZHJpdmVyJiMzOTtzIGluY2x1c2lvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IG5lY2Vzc2FyeSBjb3JlIG5ldHdvcmsgZmVhdHVyZXMsIHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQsIG90aGVyIFJlYWx0ZWsgZGVwZW5kZW5jaWVzLCBvciBwZXJoYXBzIGV2ZW4gYnJvYWRlciBhcmNoaXRlY3R1cmFsIHJlcXVpcmVtZW50cy4gVGhlIEtjb25maWcgZmlsZSBpcyBteSBrZXkgdG8gdW5sb2NraW5nIHRoZSBjb25maWd1cmF0aW9uIHB1enpsZSBhbmQgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBlY29zeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBSRUFMVEVLX1BIWVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBQSFlzXCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIFJUTDgyMXgvUlRMODIyeCBhbmQgZmFzdCBldGhlcm5ldCBQSFlzXG4gICA3Olx0XG4gICA4Olx0aWYgUkVBTFRFS19QSFlcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgUkVBTFRFS19QSFlfSFdNT05cbiAgMTE6XHRcdGJvb2wgXCYjMzQ7SFdNT04gc3VwcG9ydCBmb3IgUmVhbHRlayBQSFlzXCYjMzQ7XG4gIDEyOlx0XHRkZXBlbmRzIG9uIEhXTU9OIFx1MDAyNlx1MDAyNiAhKFJFQUxURUtfUEhZPXkgXHUwMDI2XHUwMDI2IEhXTU9OPW0pXG4gIDEzOlx0XHRoZWxwXG4gIDE0Olx0XHQgIE9wdGlvbmFsIGh3bW9uIHN1cHBvcnQgZm9yIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3JcbiAgMTU6XHRcbiAgMTY6XHRlbmRpZiAjIFJFQUxURUtfUEhZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2OTIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBQSFkgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiBpc24mIzM5O3QgZGlyZWN0bHkgdGllZCB0byBhbnl0aGluZyAqb2J2aW91cyogaW4gdGhlIGNvZGUuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgaXQgcmVzaWRlcyB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBpcyBhIHByZXR0eSBzdHJvbmcgaGludC4gIFRoYXQgZGlyZWN0b3J5IHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggUEhZIChQaHlzaWNhbCBMYXllcikgZHJpdmVycywgc28gbGV0JiMzOTtzIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMuLi4gYW5kIHRoZXJlIGl0IGlzOiBgUEhZTElCYC4gSXQmIzM5O3MgYSBrZXkgZGVwZW5kZW5jeS4gTm93IEkgbmVlZCB0byBzZWUgd2hhdCBQSFlMSUIgZW5hYmxlcywgYW5kIGlmIHRoYXQgZ2l2ZXMgbW9yZSBjbGFyaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz02PWNvbmZpZyBQSFlMSU5LXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTptZW51Y29uZmlnIFBIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cdGRlZl9ib29sIE9GXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgUEhZTElCIGFuZCBNRElPIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHdlIGNhbiByZWFjaCBgUEhZTElCYCBmcm9tIHVzZXIgc3BhY2UuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3ZlIGdvdCBhIGNvdXBsZSBvZiBzb2xpZCBvcHRpb25zOiBuZXRsaW5rIG9yIGdvb2Qgb2xkLWZhc2hpb25lZCBpb2N0bHMsIGxpa2UgYFNJT0NTTUlJUkVHYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgaG93IHdlIGNhbiBpbnRlZ3JhdGUgdGhpcyBpbnRvIGEgZnV6emluZyBzZXR1cCB3aXRoIHN5emthbGxlci4KCkNhbiBzeXprYWxsZXIgZnV6eiBNRElPIGJ1c2VzIHVzaW5nIHZpcnR1YWwgZGV2aWNlcz8gV2UgY291bGQgdXNlIGB0dW5gLCBgdmV0aGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyIGFuZCBhdHRhY2ggUEhZcyB0aGF0IHdheS4gT3IsIHBlcmhhcHMsIHdlIGNhbiB0YXJnZXQgdGhlIGBtZGlvYCBzdWJzeXN0ZW0gZGlyZWN0bHkuIFdhaXQgYSBtaW51dGXigKZJIHJlY2FsbCBzZWVpbmcgTURJTyBhbmQgUEhZIGRlc2NyaXB0aW9ucyBpbiBzeXprYWxsZXIgYWxyZWFkeS4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiEgSXQgbWVhbnMgc29tZW9uZSYjMzk7cyBhbHJlYWR5IHB1dCBpbiBzb21lIGdyb3VuZHdvcmssIHdoaWNoIGlzIGZhbnRhc3RpYyBuZXdzLgoKQWxyaWdodCwgbGV0JiMzOTtzIGRyaWxsIGRvd24gYSBiaXQuIExldCYjMzk7cyBzZWUgaWYgd2UgY2FuIHJlYWNoIGBydGxnZW5fd3JpdGVfbW1kYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIGAud3JpdGVfbW1kYCBjYWxsYmFjay4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSBiYWNrIGFuZCBmaW5kIG91dCB3aGVyZSB0aGF0IGNhbGxiYWNrIGlzIGFjdHVhbGx5IHVzZWQuIFdoZXJlIGFyZSB0aGUgY2FsbHMgdG8gYC53cml0ZV9tbWRgIGhhcHBlbmluZz8gVGhhdCYjMzk7cyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCB0aGUgYXR0YWNrIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dyaXRlX21tZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0yNzg2PUVYUE9SVF9TWU1CT0woZ2VucGh5X3JlYWRfbW1kX2M0NSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3ODctXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjI3ODg6aW50IGdlbnBoeV93cml0ZV9tbWRfYzQ1KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3ODktXHRcdFx0IHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yNzk1LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mjc5NjpFWFBPUlRfU1lNQk9MKGdlbnBoeV93cml0ZV9tbWRfYzQ1KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjc5Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTI4MDY9RVhQT1JUX1NZTUJPTChnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yODA3LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoyODA4OmludCBnZW5waHlfd3JpdGVfbW1kX3Vuc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaGRldiwgaW50IGRldm51bSxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgwOS1cdFx0XHRcdCB1MTYgcmVnbnVtLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgxMi19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjI4MTM6RVhQT1JUX1NZTUJPTChnZW5waHlfd3JpdGVfbW1kX3Vuc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgxNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg3MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBUEkgQ2xhcmlmaWNhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gZ2V0IHRoaXMgc3RyYWlnaHQgaW4gbXkgaGVhZC4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgd3JpdGUgcGF0aCwgYW5kIEkmIzM5O3ZlIGJlZW4gbXVsbGluZyBvdmVyIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMuIFRoZW4gaXQgaGl0IG1lOiB0aGUgZnVuY3Rpb24gSSYjMzk7bSBhY3R1YWxseSBkZWFsaW5nIHdpdGggaGVyZSwgdGhlIGNvcmUgQVBJIGZvciB3cml0aW5nIHRvIHRoZSBtZW1vcnkgbWFwcGVkIGRldmljZSAoTU1EKSwgaXMgYHBoeV93cml0ZV9tbWRgLiBJdCYjMzk7cyB0aGF0IHNpbXBsZSwgcmVhbGx5LiBUaGF0JiMzOTtzIHRoZSBrZXkgZnVuY3Rpb24gdG8gdHJhY2UgYW5kIHVuZGVyc3RhbmQ7IGV2ZXJ5dGhpbmcgZWxzZSBpcyBsaWtlbHkgbGVhZGluZyB0byBvciBzdXBwb3J0aW5nIGl0cyBleGVjdXRpb24uIEdvb2QsIHRoYXQgY2xhcmlmaWVzIHRoaW5ncy4gTm93IEkgY2FuIGJ1aWxkIG9uIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV93cml0ZV9tbWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODI4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTI3NT1zdGF0aWMgaW50IGFkaW5fY29uZmlnX3JnbWlpX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTMxNi1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzE3Olx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzE4LVx0XHRcdCAgICAgQURJTjEzMDBfR0VfUkdNSUlfQ0ZHX1JFRywgcmVnKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTMyMT1zdGF0aWMgaW50IGFkaW5fY29uZmlnX3JtaWlfbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzQzLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozNDQ6XHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDUtXHRcdFx0ICAgICBBRElOMTMwMF9HRV9STUlJX0NGR19SRUcsIHJlZyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM9MTkyPXN0YXRpYyBpbnQgYWRpbl9zZXRfcG93ZXJkb3duX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xOTUtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxOTY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xOTctXHRcdFx0ICAgIEFESU5fQ1JTTV9TRlRfUERfQ05UUkwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jPTQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhZGluMTE0MF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmMtNTQtXHRcdC5yZWFkX21tZCA9IGdlbnBoeV9yZWFkX21tZF9jNDUsXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmM6NTU6XHRcdC53cml0ZV9tbWQgPSBnZW5waHlfd3JpdGVfbW1kX2M0NSxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy01Ni1cdFx0LmdldF9wbGNhX2NmZyA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM9MjcyPXN0YXRpYyBpbnQgYW44ODAxcl9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzAwLVx0XHRcdFx0ICAgICBMRURfQkxJTktfRFVSX01BU0spO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozMDE6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEVEX0JMSU5LX0RVUixcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzAyLVx0XHRcdFx0ICAgIGJsaW5rX2R1cik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zMDUtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjMwNjpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMRURfT05fRFVSLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zMDctXHRcdFx0XHQgICAgaHdfZGVsYXlfb24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM9OTAyPXN0YXRpYyBpbnQgYW44ODAxcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTExLVx0LyogRGlzYWJsZSBMb3cgUG93ZXIgTW9kZSAoTFBNKSAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5MTI6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFOODgwMV9SRUdfUEhZX0lOVEVSTkFMMCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTEzLVx0XHRcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfSU5URlVOQ19NQVNLLCAweDFlKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MTYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjkxNzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQU44ODAxX1JFR19QSFlfSU5URVJOQUwxLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MTgtXHRcdFx0ICAgIEZJRUxEX1BSRVAoQU44ODAxX1BIWV9JTlRGVU5DX01BU0ssIDB4MikpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTU3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NTg6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk1OS1cdFx0XHQgICAgQU44ODAxX1BIWV9UWF9QQUlSX0RMWV9TRUxfR0JFLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTY0LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NjU6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFOODgwMV9QSFlfUlhBRENfQ1RSTCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTY2LVx0XHRcdCAgICBBTjg4MDFfUEhZX1JYQURDX1NBTVBfUEhTRUxfQSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NzAtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjk3MTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQU44ODAxX1BIWV9SWEFEQ19SRVZfMCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTcyLVx0XHRcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfUlhBRENfUkVWX01BU0tfQSwgMSkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTc1LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NzY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFOODgwMV9QSFlfUlhBRENfUkVWXzEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk3Ny1cdFx0XHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX1JYQURDX1JFVl9NQVNLX0MsIDEpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz02MTA9c3RhdGljIGludCBhaXJfaHdfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MjgtXHRpZiAoY2hhbmdlZClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYyOTpcdFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYzMC1cdFx0XHRcdCAgICAgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTcwOD1zdGF0aWMgaW50IGFpcl9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzY0LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzY1Olx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzY2LVx0XHRcdCAgICAgYmxpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTc5Nz1zdGF0aWMgaW50IGFpcl9sZWRzX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IG51bSwgaW50IGR1ciwgaW50IG1vZGUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODAxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODAyOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9EVVJfQkxJTkssXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDMtXHRcdFx0ICAgIGR1cik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODA2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODA3Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9EVVJfT04sXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDgtXHRcdFx0ICAgIGR1ciBcdTAwM2VcdTAwM2UgMSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTI4MT1zdGF0aWMgaW50IGVuODgxMWhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMjk4LVx0ICovXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjk5Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDAtXHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8xX01PREUxKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzAyLVx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMwMzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA0LVx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfMl9NT0RFMSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwNi1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDc6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwOC1cdFx0XHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfTU9ERTEpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMTAtXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzExOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfNCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMTItXHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X01PREUxKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xNDUyPXN0YXRpYyBpbnQgZW44ODExaF9jbGVhcl9pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ1NS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0NTY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ1Ny1cdFx0XHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfRE9DTUQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjAtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDYxOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfNCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjItXHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X0lOVENMUik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM9OTA9c3RhdGljIGludCBhcXJfZndfbG9hZF9tZW1vcnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtOTUtXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzo5NjpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk3LVx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UxLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtOTgtXHRcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTFfQ1JDX1JFU0VUKTtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjk5Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTAwLVx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTAxLVx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UzX01TV19BRERSKGFkZHIpKTtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjEwMjpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTEwMy1cdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMTUtXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoxMTY6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTExNy1cdFx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U1X01TV19EQVRBKHdvcmQpKTtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjExODpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U2LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTE5LVx0XHRcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTZfTFNXX0RBVEEod29yZCkpO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTIwLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTIxOlx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTEsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMjItXHRcdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMV9FWEVDVVRFIHxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYz0xNDk9c3RhdGljIGludCBhcXJfZndfYm9vdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCB1OCAqZGF0YSwgc2l6ZV90IHNpemUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjYxLVx0Lyogc3RhbGwgdGhlIG1pY3JvY3Byb2Nlc3NvciAqL1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MjYyOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfQ09OVFJPTDIsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yNjMtXHRcdCAgICAgIFZFTkQxX0dMT0JBTF9DT05UUk9MMl9VUF9SVU5fU1RBTEwgfCBWRU5EMV9HTE9CQUxfQ09OVFJPTDJfVVBfUlVOX1NUQUxMX09WRCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjgzLVx0LyogUmVsZWFzZSB0aGUgbWljcm9wcm9jZXNzb3IuIFVQX1JFU0VUIG11c3QgYmUgaGVsZCBmb3IgMTAwIHVzZWMuICovXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoyODQ6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9DT05UUk9MMixcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI4NS1cdFx0ICAgICAgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTCB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjg5LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MjkwOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfQ09OVFJPTDIsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yOTEtXHRcdCAgICAgIFZFTkQxX0dMT0JBTF9DT05UUk9MMl9VUF9SVU5fU1RBTExfT1ZEKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYz01NT1zdGF0aWMgaW50IGFxcl9od21vbl9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHJlZywgbG9uZyB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYy02NC1cdC8qIHRlbXAgaXMgaW4gczE2IHJhbmdlIGFuZCB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbiBsb3dlciAxNiBiaXRzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9od21vbi5jOjY1Olx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgcmVnLCAodTE2KXRlbXApO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2h3bW9uLmMtNjYtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM9MjUzPXN0YXRpYyBpbnQgYXFyX2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNjQtXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjI2NTpcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9UWF9WRU5EX0lOVF9NQVNLMixcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY2LVx0XHRcdCAgICBlbiA/IE1ESU9fQU5fVFhfVkVORF9JTlRfTUFTSzJfTElOSyA6IDApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY5LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNzA6XHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9JTlRfU1REX01BU0ssXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI3MS1cdFx0XHQgICAgZW4gPyBWRU5EMV9HTE9CQUxfSU5UX1NURF9NQVNLX0FMTCA6IDApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjc0LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNzU6XHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9JTlRfVkVORF9NQVNLLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNzYtXHRcdFx0ICAgIGVuID8gVkVORDFfR0xPQkFMX0lOVF9WRU5EX01BU0tfR0xPQkFMMyB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYz0zNjk9c3RhdGljIGludCBhcXIxMDVfc2V0dXBfZm9yY2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDEtXHR9XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjQwMjpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9BRFZFUlRJU0UsIGFkdik7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwMy1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNC1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6NDA1Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOX1ZFTkRfUFJPViwgdmVuZCk7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNi1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNy1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6NDA4Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwsIGN0cmwxMCk7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwOS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz0yOTc9c3RhdGljIGludCBhZW9uX2Zpcm13YXJlX2Jvb3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgdTggKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMDctXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjMwODpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfRldfU1RBUlRfQUREUixcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzA5LVx0XHRcdCAgICBBRU9OX0JPT1RfQUREUik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMjktXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjMzMDpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMzEtXHRcdFx0XHQgICAgVkVORDFfR0xCX1JFR19NRElPX0lORElSRUNUX0xPQUQsIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMzUtXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjMzNjpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzM3LVx0XHRcdCAgICBWRU5EMV9HTEJfUkVHX0NQVV9SRVNFVF9BRERSX0xPX0JBU0VBRERSLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzQxLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzozNDI6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTM0My1cdFx0XHQgICAgVkVORDFfR0xCX1JFR19DUFVfUkVTRVRfQUREUl9ISV9CQVNFQUREUixcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jPTQwNT1zdGF0aWMgaW50IGFlb25faXBjX3NlbmRfY21kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy00MjItXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjQyMzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfSVBDX0NNRCwgY21kKTtcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDI0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jPTQ1NT1zdGF0aWMgaW50IGFlb25faXBjX3NlbmRfbXNnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy00NzEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkYXRhX2xlbiAvIHNpemVvZih1MTYpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6NDcyOlx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0lQQ19EQVRBKGkpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy00NzMtXHRcdFx0ICAgICAgZGF0YVtpXSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9MzcyPWludCBiY21fcGh5X3NldF9lZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzg1LVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Mzg2Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBCUkNNX0NMNDVWRU5fRUVFX0NPTlRST0wsICh1MzIpdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTM4Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy00MDQtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo0MDU6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIEJDTV9DTDQ1VkVOX0VFRV9BRFYsICh1MzIpdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTQwNi1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jPTYyOD1zdGF0aWMgaW50IGJjbTd4eHhfMjhubV9lcGh5X3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYy02NTctXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jOjY1ODpzdGF0aWMgaW50IGJjbTd4eHhfMjhubV9lcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYy02NTktXHRcdFx0XHQgICAgICAgaW50IGRldm51bSwgdTE2IHJlZ251bSwgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jPTgyMT1zdGF0aWMgaW50IGJjbTd4eHhfMjhubV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtODg2LVx0LnJlYWRfbW1kXHQ9IGJjbTd4eHhfMjhubV9lcGh5X3JlYWRfbW1kLFx0XHRcdFxcXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jOjg4NzpcdC53cml0ZV9tbWRcdD0gYmNtN3h4eF8yOG5tX2VwaHlfd3JpdGVfbW1kLFx0XHRcdFxcXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jLTg4OC19XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmM9OTk9c3RhdGljIGludCBiY204NDg5eF9sZWRfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTAzLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmM6MTA0Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1BNQVBNRCxcbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jLTEwNS1cdFx0XHQgICAgYmNtODQ4OXhfbGVkX3JlZ3NbaW5kZXhdLm1hc2tfbG93LCBsb3cpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jLTEwNy1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jOjEwODpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDktXHRcdFx0ICAgIGJjbTg0ODl4X2xlZF9yZWdzW2luZGV4XS5tYXNrX2V4dCwgZXh0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jPTM0PXN0YXRpYyBpbnQgYmNtODd4eF9vZl9yZWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtNjgtXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jOjY5Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgZGV2aWQsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtNzAtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYz0xNDA9c3RhdGljIGludCBiY204N3h4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTQtXHRcdHJlZyB8PSAxO1xuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYzoxNTU6XHRcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QQ1MsXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE1Ni1cdFx0XHRcdCAgICBCQ004N1hYX0xBU0lfQ09OVFJPTCwgcmVnKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE1OC1cdFx0cmVnIFx1MDAyNj0gfjE7XG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jOjE1OTpcdFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1BDUyxcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtMTYwLVx0XHRcdFx0ICAgIEJDTTg3WFhfTEFTSV9DT05UUk9MLCByZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM9MjE0PXN0YXRpYyBpbnQgZHA4MzgyMl9jb25maWdfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMjktXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyMzA6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0RBMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjMxLVx0XHRcdCAgICAgIChtYWNbMV0gXHUwMDNjXHUwMDNjIDgpIHwgbWFjWzBdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjMyOlx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIE1JSV9EUDgzODIyX1dPTF9EQTIsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTIzMy1cdFx0XHQgICAgICAobWFjWzNdIFx1MDAzY1x1MDAzYyA4KSB8IG1hY1syXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjIzNDpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfREEzLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMzUtXHRcdFx0ICAgICAgKG1hY1s1XSBcdTAwM2NcdTAwM2MgOCkgfCBtYWNbNF0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjQ0LVx0XHRpZiAod29sLVx1MDAzZXdvbG9wdHMgXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjQ1Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjQ2LVx0XHRcdFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AxLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNDctXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1sxXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzBdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjQ4Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjQ5LVx0XHRcdFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNTAtXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1szXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzJdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjUxOlx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjUyLVx0XHRcdFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjY0LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyNjU6XHRcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI2Ni1cdFx0XHRcdCAgICAgTUlJX0RQODM4MjJfV09MX0NGRywgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM9MTA0NT1zdGF0aWMgaW50IGRwODM4MjJfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0xMDUyLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoxMDUzOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfQ0ZHLCB2YWx1ZSB8XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTEwNTQtXHRcdCAgICAgIERQODM4MjJfV09MX0NMUl9JTkRJQ0FUSU9OKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTIxMT1zdGF0aWMgaW50IGRwODM4Njdfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjMxLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMzI6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQxLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzMtXHRcdFx0XHQgICAgICAobWFjWzFdIFx1MDAzY1x1MDAzYyA4IHwgbWFjWzBdKSk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzNDpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzNS1cdFx0XHRcdCAgICAgIChtYWNbM10gXHUwMDNjXHUwMDNjIDggfCBtYWNbMl0pKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM2Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjM3LVx0XHRcdFx0ICAgICAgKG1hY1s1XSBcdTAwM2NcdTAwM2MgOCB8IG1hY1s0XSkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ0LVx0XHRpZiAod29sLVx1MDAzZXdvbG9wdHMgXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQ1Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ2LVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbMV0gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1swXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0NzpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0OC1cdFx0XHRcdCAgICAgICh3b2wtXHUwMDNlc29wYXNzWzNdIFx1MDAzY1x1MDAzYyA4KSB8IHdvbC1cdTAwM2Vzb3Bhc3NbMl0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDk6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AzLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTAtXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1s1XSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzRdKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjcxOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZDRkcsIHZhbF9yeGNmZyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3Mi1cdHBoeV93cml0ZShwaHlkZXYsIE1JSV9EUDgzODY3X01JQ1IsIHZhbF9taWNyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTczNj1zdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgwOC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODA5Olx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JHTUlJQ1RMLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTAtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgxMTpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SR01JSURDVEwsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgxMi1cdFx0XHQgICAgICBkcDgzODY3LVx1MDAzZXJ4X2lkX2RlbGF5IHxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgxNi1cdFx0dmFsIFx1MDAyNj0gfkRQODM4NjdfUkdNSUlfRU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgxNzpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SR01JSUNUTCwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODE4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODYwLVx0XHRcdHZhbCBcdTAwMjY9IH5EUDgzODY3X1NHTUlJX1RZUEU7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjg2MTpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19TR01JSUNUTCwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODYyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9OTM1PXN0YXRpYyBpbnQgZHA4Mzg2N19waHlfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk1My1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5NTQ6XHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X0RTUF9GRkVfQ0ZHLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05NTUtXHRcdFx0ICAgIDB4MGU4MSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYz0yNTk9c3RhdGljIGludCBkcDgzODY5X3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI4Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6Mjg3Olx0XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI4OC1cdFx0XHRcdFx0ICAgIERQODM4NjlfUlhGUE1EMSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI5Mi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MjkzOlx0XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI5NC1cdFx0XHRcdFx0ICAgIERQODM4NjlfUlhGUE1EMixcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI5OC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6Mjk5Olx0XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMwMC1cdFx0XHRcdFx0ICAgIERQODM4NjlfUlhGUE1EMyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMxMC1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjMxMTpcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTItXHRcdFx0XHRcdCAgICBEUDgzODY5X1JYRlNPUDEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTYtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjMxNzpcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTgtXHRcdFx0XHRcdCAgICBEUDgzODY5X1JYRlNPUDIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMjEtXHRcdFx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozMjI6XHRcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzIzLVx0XHRcdFx0XHQgICAgRFA4Mzg2OV9SWEZTT1AzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzQ2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozNDc6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLCBEUDgzODY5X1JYRkNGRywgdmFsX3J4Y2ZnKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzQ4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jPTY5ND1zdGF0aWMgaW50IGRwODM4NjlfY29uZmlndXJlX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTcxOC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6NzE5Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUiwgRFA4Mzg2OV9PUF9NT0RFLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03MjAtXHRcdFx0ICAgIHBoeV9jdHJsX3ZhbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03NTMtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjc1NDpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzU1LVx0XHRcdFx0ICAgIERQODM4NjlfRlhfQ1RSTCwgRFA4Mzg2OV9GWF9DVFJMX0RFRkFVTFQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzY1LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo3NjY6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc2Ny1cdFx0XHRcdCAgICBEUDgzODY5X0ZYX0NUUkwsIERQODM4NjlfRlhfQ1RSTF9ERUZBVUxUKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc4Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6Nzg3Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03ODgtXHRcdFx0XHQgICAgRFA4Mzg2OV9GWF9DVFJMLCBEUDgzODY5X0ZYX0NUUkxfREVGQVVMVCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYz04MDQ9c3RhdGljIGludCBkcDgzODY5X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04MzQtXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo4MzU6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTgzNi1cdFx0XHRcdCAgICBEUDgzODY5X0FOQV9QTExfUFJPR19QSSwgMHgxMCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NDctXHRpZiAocGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjg0ODpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUiwgRFA4Mzg2OV9SR01JSURDVEwsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTg0OS1cdFx0XHRcdCAgICBkcDgzODY5LVx1MDAzZXJ4X2ludF9kZWxheSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NjctXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjg2ODpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUiwgRFA4Mzg2OV9SR01JSUNUTCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODY5LVx0XHRcdFx0ICAgIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jPTk3PXN0YXRpYyBpbnQgZHA4MzgxMV9zZXRfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExMi1cdFx0ICovXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTEzOlx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREExLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExNC1cdFx0XHQgICAgICAobWFjWzFdIFx1MDAzY1x1MDAzYyA4KSB8IG1hY1swXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTE1Olx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREEyLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExNi1cdFx0XHQgICAgICAobWFjWzNdIFx1MDAzY1x1MDAzYyA4KSB8IG1hY1syXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTE3Olx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREEzLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExOC1cdFx0XHQgICAgICAobWFjWzVdIFx1MDAzY1x1MDAzYyA4KSB8IG1hY1s0XSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEyNy1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTI4Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTI5LVx0XHRcdFx0ICAgICAgTUlJX0RQODM4MTFfUlhTT1AxLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEzMC1cdFx0XHRcdCAgICAgICh3b2wtXHUwMDNlc29wYXNzWzFdIFx1MDAzY1x1MDAzYyA4KSB8IHdvbC1cdTAwM2Vzb3Bhc3NbMF0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjEzMTpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEzMi1cdFx0XHRcdCAgICAgIE1JSV9EUDgzODExX1JYU09QMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzMtXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1szXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzJdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxMzQ6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzUtXHRcdFx0XHQgICAgICBNSUlfRFA4MzgxMV9SWFNPUDMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTE0Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxNDg6XHRcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTE0OS1cdFx0XHRcdCAgICAgTUlJX0RQODM4MTFfV09MX0NGRywgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYz01MzA9c3RhdGljIGludCBkcDgzdGQ1MTBfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNTM0LVx0aWYgKHBoeWRldi1cdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjUzNTpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTUzNi1cdFx0XHRcdCAgICBEUDgzVEQ1MTBFX0lOVEVSUlVQVF9SRUdfMSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNTQ2LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo1NDc6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01NDgtXHRcdFx0XHQgICAgRFA4M1RENTEwRV9JTlRFUlJVUFRfUkVHXzEsIDB4MCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jPTY4ND1zdGF0aWMgaW50IGRwODN0ZDUxMF9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTczOC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo3Mzk6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURDUxMEVfVERSX0NGRzIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzQwLVx0XHRcdCAgICBGSUVMRF9QUkVQKERQODNURDUxMEVfVERSX0VORF9UQVBfSU5ERVhfMSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzQ2LVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjc0NzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9URFJfRkFVTFRfQ0ZHMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NDgtXHRcdFx0ICAgIEZJRUxEX1BSRVAoRFA4M1RENTEwRV9URFJfRkxUX0xPQ19PRkZTRVRfMSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzU3LVx0ICovXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzU4Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1VOS05fMDMwRSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NTktXHRcdFx0ICAgIERQODNURDUxMEVfMDMwRV9WQUwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NjItXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzYzOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1REUl9DRkczLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc2NC1cdFx0XHQgICAgRFA4M1RENTEwRV9URFJfVFhfRFVSQVRJT05fVVNfREVGKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM9MzI0PXN0YXRpYyBpbnQgZHA4M3RnNzIwX2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzQwLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM0MTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19URFJfQ0ZHMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNDItXHRcdFx0ICAgIDB4YTAwOCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0NS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzozNDY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVERSX0NGRzMsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzQ3LVx0XHRcdCAgICAweDA5MjgpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNTAtXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzUxOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX1REUl9DRkc0LFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1Mi1cdFx0XHQgICAgMHgwMDA0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzU1LVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM1NjpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19VTktOT1dOXzA0MDUsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzU3LVx0XHRcdCAgICAweDY0MDApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNjAtXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzYxOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX1VOS05PV05fMDgzRixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNjItXHRcdFx0ICAgIDB4MzAwMyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jPTU1OD1zdGF0aWMgaW50IGRwODN0ZzcyMF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy01NzUtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzo1NzY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfTFBTX0NGRzMsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtNTc3LVx0XHRcdCAgICBEUDgzVEc3MjBTX0xQU19DRkczX1BXUl9NT0RFXzApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM9MjQ1PXN0YXRpYyBpbnQgeHdheV9ncGh5X2luaXRfbGVkcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjU5LVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNjA6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRENILFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNjEtXHRcdCAgICAgIFhXQVlfTU1EX0xFRENIX05BQ1NfTk9ORSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNjMtXHRcdCAgICAgIFhXQVlfTU1EX0xFRENIX0ZCRl9GMTZIWik7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI2NDpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEQ0wsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI2NS1cdFx0ICAgICAgWFdBWV9NTURfTEVEQ0hfQ0JMSU5LX05PTkUgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjc2LVx0XHRYV0FZX01NRF9MRUR4TF9CTElOS1NfTk9ORTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Mjc3Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQwSCwgbGVkeGgpO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNzg6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDBMLCBsZWR4bCk7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI3OTpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMUgsIGxlZHhoKTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjgwOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQxTCwgbGVkeGwpO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyODE6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDJILCBsZWR4aCk7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI4MjpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMkwsIGxlZHhsKTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjgzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM9MzkzPXN0YXRpYyBpbnQgeHdheV9ncGh5X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDEwLVx0aWYgKHZhbHVlID09IExFRF9PRkYpIHtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NDExOlx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRHhIKGluZGV4KSwgMCk7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTQxMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTQxNC1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NDE1Olx0XHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUR4TChpbmRleCksIDApO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTYtXHR9IGVsc2Uge1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLgoKKipUcmFjaW5nIHRoZSBNTUQgV3JpdGUgRnVuY3Rpb24gQ2FsbHMqKgoKSG1tLCBzbyBgcnRsZ2VuX3dyaXRlX21tZGAgaXMgZGVmaW5pdGVseSB0aGUgdGFyZ2V0IGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBiZWluZyBpbnZva2VkLiBSaWdodCwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHJ0bDgyMnhfd3JpdGVfbW1kYC4gQW5kIHRoYXQgZnVuY3Rpb24sIGBydGw4MjJ4X3dyaXRlX21tZGAsIGlzIHRoZSBgLndyaXRlX21tZGAgZnVuY3Rpb24gZm9yIHRoZSBgcmVhbHRla19kcnZzYCBzdHJ1Y3R1cmUuIFRoYXQgdGVsbHMgbWUgYSBsb3Qg4oCTIGl0JiMzOTtzIHBhcnQgb2YgdGhlIFJlYWx0ZWsgZHJpdmVyIGZhbWlseSwgbGlrZWx5IGludGVyYWN0aW5nIGRpcmVjdGx5IHdpdGggdGhlIGhhcmR3YXJlLgoKVGhlbiwgdGhlcmUmIzM5O3MgYHBoeV93cml0ZV9tbWRgLCBhbmQgdGhhdCYjMzk7cyBhbiBpbnRlcmVzdGluZyBvbmUgYmVjYXVzZSBpdCYjMzk7cyB0aGUgZ2VuZXJpYyBQSFkgYWJzdHJhY3Rpb24gbGF5ZXIuIEl0JiMzOTtzIHN1cHBvc2VkIHRvIGludm9rZSBpdHMgb3duIGAud3JpdGVfbW1kYCBmdW5jdGlvbiBpZiBvbmUgaXMgZGVmaW5lZC4gU28sIHRoZXJlIGlzIGEgZ29vZCBjaGFuY2UgdGhhdCBgcGh5X3dyaXRlX21tZGAgaXMgdGhlIG9uZSB0aGF0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIGNhbGxpbmcgYHJ0bDgyMnhfd3JpdGVfbW1kYCB3aGljaCB1bHRpbWF0ZWx5IGNhbGxzIGBydGxnZW5fd3JpdGVfbW1kYC4KClRvIGJlIGNlcnRhaW4sIGFuZCB0byBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGVjdXRpb24gcGF0aCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHBoeV93cml0ZV9tbWRgLiBJdCBpcyB0aGUgY3J1Y2lhbCBqdW5jdGlvbiBpbiB0aGlzIGNoYWluIG9mIGNhbGxzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBhc3N1bXB0aW9ucyBhYm91dCBob3cgYHBoeV93cml0ZV9tbWRgIGhhbmRsZXMgaXRzIGAud3JpdGVfbW1kYCBmdW5jdGlvbiBwb2ludGVyIGFyZSBjb3JyZWN0LiBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IHBoeV93cml0ZV9tbWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTAyNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipOYXZpZ2F0aW5nIHRoZSBQSFkgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIHVzYWdlIG9mIGBwaHlfd3JpdGVfbW1kYC4gSXQmIzM5O3MgbGlrZWx5IHdpdGhpbiB0aGUgYHBoeV9kZXZpY2UuY2AgZmlsZSwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBJJiMzOTtsbCBuZWVkIHRvIG9wZW4gdGhhdCB1cCBhbmQgZWl0aGVyIHNlYXJjaCBkaXJlY3RseSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgb3IgbWF5YmUgdHJhY2UgaXRzIGNhbGxzIGlmIGl0JiMzOTtzIG5vdCBhIGRpcmVjdCBpbXBsZW1lbnRhdGlvbiBidXQgcmF0aGVyIGEgd3JhcHBlciBvciBhYnN0cmFjdGlvbi4gVW5kZXJzdGFuZGluZyBob3cgYHBoeV93cml0ZV9tbWRgIHdvcmtzIGlzIGNydWNpYWw7IGl0IG1pZ2h0IGJlIHJlc3BvbnNpYmxlIGZvciBkaXJlY3QgYWNjZXNzIHRvIHRoZSBNYW5hZ2VtZW50IE1vZGUgRGV2aWNlIHJlZ2lzdGVycyB3aXRoaW4gdGhlIFBIWSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgd2l0aGluIHRoZSBicm9hZGVyIFBIWSBkcml2ZXIgc3RydWN0dXJlLiBJJiMzOTtsbCBsaWtlbHkgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgcmVnaXN0ZXIgYWRkcmVzc2VzLCBkYXRhIGZvcm1hdHRpbmcsIHBvdGVudGlhbCBlcnJvciBoYW5kbGluZywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBidXMg4oCTIGxpa2VseSBNRElPLCBidXQgY29uZmlybWF0aW9uIGlzIG5lZWRlZC4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgcGh5X3dyaXRlX21tZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI5MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipMb2NhdGluZyB0aGUgUEhZIFdyaXRlIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBkZWZpbml0aW9uIG9yIGRlY2xhcmF0aW9uIG9mIGBwaHlfd3JpdGVfbW1kYC4gQmFzZWQgb24gdGhlIGNvbnRleHQsIHRoYXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBhIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gd3JpdGluZyB0byBhIE1hbmFnZW1lbnQgTW9kZSBEZXZpY2UgKE1NRCkgd2l0aGluIGEgUEhZIChQaHlzaWNhbCBMYXllcikuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgd291bGQgYmUgd2l0aGluIHRoZSBuZXR3b3JrIGRldmljZSBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmUuIGBkcml2ZXJzL25ldC9waHlgIGlzIHRoZSBvYnZpb3VzIHRvcC1sZXZlbCBkaXJlY3RvcnkgdG8gYmVnaW4gbXkgc2VhcmNoLgoKTW9yZSBzcGVjaWZpY2FsbHksIGBwaHlfY29yZS5jYCBpcyB1c3VhbGx5IHRoZSByZXBvc2l0b3J5IGZvciB0aGUgY29yZSBQSFkgZHJpdmVyIGZ1bmN0aW9ucywgdGhlIG9uZXMgdGhhdCBhcmUgbGlrZWx5IHNoYXJlZCBhbW9uZyBkaWZmZXJlbnQgUEhZIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMuIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGFjdHVhbCBmdW5jdGlvbiBkZWZpbml0aW9uIHRoZXJlLiBBbHRlcm5hdGl2ZWx5LCBJIG1pZ2h0IGZpbmQgYSBkZWNsYXJhdGlvbiBvciBwcm90b3R5cGUgaW4gdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUsIHdoaWNoIGlzIHByb2JhYmx5IGBpbmNsdWRlL2xpbnV4L3BoeS5oYC4gVGhhdCBoZWFkZXIgd291bGQgZGVmaW5lIHRoZSBQSFkgQVBJIGFuZCBkYXRhIHN0cnVjdHVyZXMuIEl0JiMzOTtzIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIHRoZSBmdW5jdGlvbiBpcyBkZWNsYXJlZCB0aGVyZSBiZWZvcmUgSSBzdGFydCBzZWFyY2hpbmcgdGhlIHNvdXJjZSBmaWxlLiBJdCBpcyB0aGUgbG9naWNhbCBvcmRlciB0byBzdGFydCBteSBzZWFyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBwaHlfd3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz01MjM9RVhQT1JUX1NZTUJPTChfX3BoeV93cml0ZV9tbWQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTUzNC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jOjUzNTppbnQgcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2YWQsIHUzMiByZWdudW0sIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy01MzYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTcyNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gUEhZIENvcmUgQ29kZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGggdGhpcyBQSFkgbW9kdWxlLCBhbmQgdGhlIGZ1bmN0aW9uIGBwaHlfd3JpdGVfbW1kYCBzZWVtcyBsaWtlIGEga2V5IGFyZWEgdG8gZGlzc2VjdC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IE1NRCwgb3IgTW9kZS9SZWdpc3RlciBNYXAsIGlzIGEgY29tbW9uIHRlY2huaXF1ZSB3aXRoaW4gdGhlIFBIWSByZWFsbSwgd2hlcmUgeW91IHNlbGVjdCBhICYjMzQ7bW9kZSYjMzQ7IG9yIHJlZ2lzdGVyIGJhbmsgdXNpbmcgYW4gYWRkcmVzcyBhbmQgdGhlbiBpbnRlcmFjdCB3aXRoIHRoZSBzcGVjaWZpYyByZWdpc3RlcnMgd2l0aGluIHRoYXQgc2VsZWN0ZWQgYmFuay4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoYXQgdGhlIGBwaHlfd3JpdGVfbW1kYCBmdW5jdGlvbiBwcm9iYWJseSBoYW5kbGVzIHRoZSBsb3ctbGV2ZWwgd3JpdGVzIHRvIHRoaXMgTU1EIGludGVyZmFjZS4gSSYjMzk7bSBrZWVuIHRvIHNlZSBpZiBpdCYjMzk7cyBhYnN0cmFjdGVkIGZvciBtdWx0aXBsZSBQSFkgdHlwZXMgb3IgaW1wbGVtZW50ZWQgc3BlY2lmaWNhbGx5IGZvciBhIG5hcnJvdyByYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCBvcGVyYXRlcyBvbi4gSSYjMzk7bSBhbHNvIGludGVyZXN0ZWQgdG8gc2VlIHRoZSBlcnJvciBjaGVja2luZyBhbmQgaG93IHRoZSBmdW5jdGlvbiBoYW5kbGVzIHBvc3NpYmxlIEkyQyBvciBTUEkgd3JpdGUgZmFpbHVyZXMuIFdoYXQgYXNzdW1wdGlvbnMgZG9lcyBpdCBtYWtlIGFib3V0IHRoZSB1bmRlcmx5aW5nIGJ1cz8gRG9lcyBpdCBoYXZlIGFueSBkZWJ1ZyBvciBsb2dnaW5nIGNhcGFiaWxpdGllcyBJIGNhbiBsZXZlcmFnZT8gTXkgZ29hbCBpcyB0byBncmFzcCBpdHMgZnVuY3Rpb25hbGl0eS4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUzNTpcdGludCBwaHlfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCwgdTMyIHJlZ251bSwgdTE2IHZhbClcbiA1MzY6XHR7XG4gNTM3Olx0XHRpbnQgcmV0O1xuIDUzODpcdFxuIDUzOTpcdFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbiA1NDA6XHRcdHJldCA9IF9fcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldmFkLCByZWdudW0sIHZhbCk7XG4gNTQxOlx0XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG4gNTQyOlx0XG4gNTQzOlx0XHRyZXR1cm4gcmV0O1xuIDU0NDpcdH1cbiA1NDU6XHRFWFBPUlRfU1lNQk9MKHBoeV93cml0ZV9tbWQpO1xuIDU0NjpcdFxuIDU0NzpcdC8qKlxuIDU0ODpcdCAqIHBoeV9tb2RpZnlfY2hhbmdlZCAtIEZ1bmN0aW9uIGZvciBtb2RpZnlpbmcgYSBQSFkgcmVnaXN0ZXJcbiA1NDk6XHQgKiBAcGh5ZGV2OiB0aGUgcGh5X2RldmljZSBzdHJ1Y3RcbiA1NTA6XHQgKiBAcmVnbnVtOiByZWdpc3RlciBudW1iZXIgdG8gbW9kaWZ5XG4gNTUxOlx0ICogQG1hc2s6IGJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXJcbiA1NTI6XHQgKiBAc2V0OiBuZXcgdmFsdWUgb2YgYml0cyBzZXQgaW4gbWFzayB0byB3cml0ZSB0byBAcmVnbnVtXG4gNTUzOlx0ICpcbiA1NTQ6XHQgKiBOT1RFOiBNVVNUIE5PVCBiZSBjYWxsZWQgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNDMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZCwgZ2VhcmVkIHRvd2FyZCBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIGBfX3BoeV93cml0ZV9tbWRgKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIGBfX3BoeV93cml0ZV9tbWRgIGZ1bmN0aW9uLiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgdG8gcmFjZS4gVGhpcyBuYW1lIHN1Z2dlc3RzIGl0JiMzOTtzIGEgbG93LWxldmVsLCBpbnRlcm5hbCBmdW5jdGlvbiByZWxhdGVkIHRvIHdyaXRpbmcgdG8gc29tZXRoaW5nIHdpdGhpbiB0aGUgUEhZLCBwcm9iYWJseSBzb21lIHJlZ2lzdGVyIG9yIG1lbW9yeS1tYXBwZWQgZGF0YSBzcGFjZS4gVGhlIGBfX2AgcHJlZml4IGlzIGEgc3Ryb25nIGluZGljYXRvciBvZiBhbiBpbnRlcm5hbCBBUEksIGEgZnVuY3Rpb24gbm90IGludGVuZGVkIGZvciBkaXJlY3QgdXNlIGJ5IHRoZSBnZW5lcmFsIGRyaXZlciBjb2RlLiBUaGlzIHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBhIGNyaXRpY2FsIGNvbXBvbmVudCwgcG90ZW50aWFsbHkgaGFuZGxpbmcgdGhlIGFjdHVhbCBidXMgdHJhbnNhY3Rpb25zIG9yIHJlZ2lzdGVyIGFjY2VzcyBwYXR0ZXJucy4KCkkmIzM5O20gaW5zdGFudGx5IHdvbmRlcmluZyBhYm91dCB0aGUgY29udGV4dC4gV2hhdCBQSFkgaXMgdGhpcyByZWxhdGVkIHRvPyBJcyBpdCBhIHNwZWNpZmljIHR5cGUsIGxpa2UgRXRoZXJuZXQsIFBDSWUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgJiMzNDttbWQmIzM0OyBwYXJ0IGlzIGludHJpZ3VpbmcuIElzIGl0IHJlbGF0ZWQgdG8gdGhlICYjMzQ7TWVzc2FnZSBNb2RlIERldmljZSYjMzQ7IG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJJiMzOTtkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBoZWFkZXIgZmlsZXMgb3IgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gYmVpbmcgdXNlZC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSB1bmRlcmx5aW5nIGJ1cywgYmUgaXQgSTJDLCBTUEksIG9yIGEgY3VzdG9tIG9uZSwgdG8gZnVsbHkgZ3Jhc3AgaXRzIGZ1bmN0aW9uLgoKVGhlbiBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGVycm9yIHNjZW5hcmlvcy4gV2hhdCBraW5kIG9mIGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkPyBEb2VzIGl0IGNoZWNrIGZvciB3cml0ZSB0aW1lb3V0cyBvciBidXMgZXJyb3JzPyBJcyB0aGVyZSBhbnkgcmV0cnkgbG9naWM/IERvZXMgaXQgbG9nIGVycm9ycyBpbiBhIHVzZWZ1bCB3YXkgb3IganVzdCByZXR1cm4gYSBnZW5lcmljIGVycm9yIGNvZGU/IENvbnNpZGVyaW5nIHRoZSBjcml0aWNhbGl0eSBvZiB0aGVzZSB0eXBlcyBvZiByb3V0aW5lcywgcm9idXN0IGVycm9yIGhhbmRsaW5nIGlzIHBhcmFtb3VudC4gSWYgYSB3cml0ZSBmYWlscywgaXQgY2FuIGltcGFjdCBlbnRpcmUgc3lzdGVtIG9wZXJhdGlvbiwgdGhlcmVmb3JlIEkgc2hvdWxkIGJlIGNoZWNraW5nIGZvciB0aGUgZXJyb3ItaGFuZGxpbmcgbWV0aG9kIHVzZWQuCgpJIGFsc28gd29uZGVyIGFib3V0IGNvbmN1cnJlbmN5IGlzc3Vlcy4gSXMgdGhpcyBmdW5jdGlvbiByZS1lbnRyYW50PyBEb2VzIGl0IG5lZWQgYW55IGtpbmQgb2YgbXV0ZXggb3Igc2VtYXBob3JlIHRvIHByb3RlY3Qgc2hhcmVkIHJlc291cmNlcywgcGFydGljdWxhcmx5IGlmIGl0JiMzOTtzIG9wZXJhdGluZyBvbiBhIHNoYXJlZCBtZW1vcnkgbWFwPyBBbnkgbXVsdGl0aHJlYWRpbmcgaW4gdGhlIGRyaXZlciBjb250ZXh0IHdvdWxkIG5lZWQgdGhhdCBwcm90ZWN0aW9uIHRvIHJlbWFpbiBzdGFibGUuCgpNeSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gdHJhY2UgaXRzIGNhbGxzIGFuZCBzZWUgd2hlcmUgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLiBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgc2lnbmlmaWNhbnQgaW5zaWdodCBpbnRvIHRoZSBkYXRhIGJlaW5nIHdyaXR0ZW4sIHRoZSBwdXJwb3NlIG9mIHRoZSB3cml0ZSwgYW5kIHRoZSBvdmVyYWxsIGRyaXZlciBhcmNoaXRlY3R1cmUuIFVsdGltYXRlbHksIEkmIzM5O2Qgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBkYXRhIHBhdGggZm9yIHdyaXRpbmcuCgpGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtkIGJlIGxvb2tpbmcgZm9yOgoKKiAgICoqUmVnaXN0ZXIgb2Zmc2V0cyBhbmQgdGhlaXIgaW50ZXJwcmV0YXRpb25zKio6IEFyZSB0aGV5IGNsZWFybHkgZGVmaW5lZD8gQXJlIHRoZXJlIGFueSBjb21tZW50cyBleHBsYWluaW5nIHdoYXQgZWFjaCBiaXRmaWVsZCByZXByZXNlbnRzPwoqICAgKipEYXRhIHBhY2tpbmcqKjogSXMgdGhlIGRhdGEgYmVpbmcgcGFja2VkIG9yIHVucGFja2VkIGNvcnJlY3RseT8gV2hhdCYjMzk7cyB0aGUgYnl0ZSBvcmRlcj8KKiAgICoqQnVzIHRyYW5zYWN0aW9ucyoqOiBIb3cgYXJlIHRoZSBidXMgY3ljbGVzIGJlaW5nIG9yY2hlc3RyYXRlZD8gSXMgdGhlcmUgYW55IG9wdGltaXphdGlvbiBnb2luZyBvbj8KKiAgICoqUG90ZW50aWFsIGZvciBvcHRpbWl6YXRpb24qKjogSXMgdGhlcmUgYW55IG92ZXJoZWFkIHRoYXQgY291bGQgYmUgbWluaW1pemVkPyBJcyBpdCB1c2luZyB0aGUgYXBwcm9wcmlhdGUgYnVzIHdpZHRoLCBvciB0aGUgbWluaW11bSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIHBvc3NpYmxlPwoKRXNzZW50aWFsbHksIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgYF9fcGh5X3dyaXRlX21tZGAgZnVuY3Rpb24gdG8gYmUgYSBrZXkgYnVpbGRpbmcgYmxvY2sgaW4gYSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciwgYW5kIG15IGFuYWx5c2lzIHdvdWxkIGludm9sdmUgcXVpY2tseSBkaXNzZWN0aW5nIGl0cyByb2xlIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHdpdGhpbiB0aGF0IGxheWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgX19waHlfd3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9NTAwPUVYUE9SVF9TWU1CT0wocGh5X3JlYWRfbW1kKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy01MTEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzo1MTI6aW50IF9fcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2YWQsIHUzMiByZWdudW0sIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy01MTMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzE2OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgYF9fcGh5X3dyaXRlX21tZGAqKgoKQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBjb2RlIGFuZCBmb2N1cyBvbiBgX19waHlfd3JpdGVfbW1kYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBmdW5jdGlvbi4gSXQmIzM5O3MgY2xlYXJseSBhIGNvcmUgcGllY2UgcmVsYXRlZCB0byB3cml0aW5nIHRvIHRoZSBNTUQsIGxpa2VseSB3aXRoaW4gdGhlIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIG9mIHRoaXMgc3lzdGVtLiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gZ3Jhc3AgaXRzIHB1cnBvc2UsIGhvdyBpdCYjMzk7cyB1c2VkLCBhbmQgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gZm9yIGRlYnVnZ2luZyBvciBvcHRpbWl6YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBpdCYjMzk7cyB3cml0aW5nLCBob3cgaXQgZGV0ZXJtaW5lcyB0aGUgdmFsdWVzLCBhbmQgd2hlcmUgdGhpcyBkYXRhIGlzIGNvbWluZyBmcm9tLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTEyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MTI6XHRpbnQgX19waHlfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCwgdTMyIHJlZ251bSwgdTE2IHZhbClcbiA1MTM6XHR7XG4gNTE0Olx0XHRpZiAocmVnbnVtIFx1MDAzZSAodTE2KX4wIHx8IGRldmFkIFx1MDAzZSAzMilcbiA1MTU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTE2Olx0XG4gNTE3Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2V3cml0ZV9tbWQpXG4gNTE4Olx0XHRcdHJldHVybiBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXdyaXRlX21tZChwaHlkZXYsIGRldmFkLCByZWdudW0sIHZhbCk7XG4gNTE5Olx0XG4gNTIwOlx0XHRyZXR1cm4gbW1kX3BoeV93cml0ZShwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIsXG4gNTIxOlx0XHRcdFx0ICAgICBwaHlkZXYtXHUwMDNlaXNfYzQ1LCBkZXZhZCwgcmVnbnVtLCB2YWwpO1xuIDUyMjpcdH1cbiA1MjM6XHRFWFBPUlRfU1lNQk9MKF9fcGh5X3dyaXRlX21tZCk7XG4gNTI0Olx0XG4gNTI1Olx0LyoqXG4gNTI2Olx0ICogcGh5X3dyaXRlX21tZCAtIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciB3cml0aW5nIGEgcmVnaXN0ZXJcbiA1Mjc6XHQgKiBvbiBhbiBNTUQgb24gYSBnaXZlbiBQSFkuXG4gNTI4Olx0ICogQHBoeWRldjogVGhlIHBoeV9kZXZpY2Ugc3RydWN0XG4gNTI5Olx0ICogQGRldmFkOiBUaGUgTU1EIHRvIHJlYWQgZnJvbVxuIDUzMDpcdCAqIEByZWdudW06IFRoZSByZWdpc3RlciBvbiB0aGUgTU1EIHRvIHJlYWRcbiA1MzE6XHQgKiBAdmFsOiB2YWx1ZSB0byB3cml0ZSB0byBAcmVnbnVtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzM1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIFBIWSBXcml0ZSBNZWNoYW5pc20qKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRocm91Z2ggdGhpcyBjb2RlLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBSZWFsdGVrIFBIWSB3cml0ZSBmdW5jdGlvbmFsaXR5IHdvcmtzLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9wZXJhdGlvbiBpcyB0cmlnZ2VyZWQgYnkgYHBoeWRldi0mZ3Q7ZHJ2LSZndDt3cml0ZV9tbWRgLiBSaWdodCwgYW5kIGJhc2VkIG9uIHRoZSBjb250ZXh0LCB0aGF0JiMzOTtzIGJlaW5nIGhhbmRsZWQgYnkgYHJ0bGdlbl93cml0ZV9tbWRgLiBTbyB0aGF0JiMzOTtzIHRoZSBSZWFsdGVrLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNTUQgd3JpdGUuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBmb3IgbWUgaXMsIGNhbiB0aGlzIGJlIGFjY2Vzc2VkIGZyb20gdXNlcnNwYWNlPyBJcyB0aGVyZSBhIHBhdGg/CgpBaCwgeWVzLCB0aGUgYFNJT0NTTUlJUkVHYCBpb2N0bC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIHdheSB0byBpbnRlcmFjdCB3aXRoIHRoZSBNSUkvTURJTyBpbnRlcmZhY2UgZnJvbSB1c2Vyc3BhY2UuIFNvLCBpdCYjMzk7cyBkZWZpbml0ZWx5IGFjY2Vzc2libGUsIHdoaWNoIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQuIFRpbWUgdG8gZGl2ZSBpbnRvIGBwaHlfbWlpX2lvY3RsYCBhbmQgc2VlIGV4YWN0bHkgaG93IHRoYXQgaW9jdGwgY2FsbCBtYXBzIG9udG8gdGhpcyBNTUQgd3JpdGUgcGF0aC4gVW5kZXJzdGFuZGluZyB0aGUgYHBoeV9taWlfaW9jdGxgIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfbWlpX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LmM9Mjk4PUVYUE9SVF9TWU1CT0wocGh5X2V0aHRvb2xfa3NldHRpbmdzX2dldCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTMwMC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzozMDE6ICogcGh5X21paV9pb2N0bCAtIGdlbmVyaWMgUEhZIE1JSSBpb2N0bCBpbnRlcmZhY2VcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0zMDItICogQHBoeWRldjogdGhlIHBoeV9kZXZpY2Ugc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTMwOS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHkuYzozMTA6aW50IHBoeV9taWlfaW9jdGwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMzExLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtNDMwLX1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo0MzE6RVhQT1JUX1NZTUJPTChwaHlfbWlpX2lvY3RsKTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy00MzItXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTQzOT1pbnQgcGh5X2RvX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy00NDMtXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6NDQ0Olx0cmV0dXJuIHBoeV9taWlfaW9jdGwoZGV2LVx1MDAzZXBoeWRldiwgaWZyLCBjbWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTQ0NS19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTI0PWludCBwaHlsaW5rX21paV9pb2N0bChzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU1MS1cdFx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU1MjpcdFx0XHRyZXQgPSBwaHlfbWlpX2lvY3RsKHBsLVx1MDAzZXBoeWRldiwgaWZyLCBjbWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTUzLVx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDUyOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIENhbGwgdG8gYHBoeV9taWlfaW9jdGxgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgcGh5X21paV9pb2N0bGAgZnVuY3Rpb24gY2FsbC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgZ2VhcmVkIHRvd2FyZHMgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZSwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBtZWRpYXRpbmcgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTUlJKSBvciBSZWR1Y2VkIE1JSSAoUk1JSSkgYW5kIHRoZSB1cHBlci1sZXZlbCBuZXR3b3JrIGRyaXZlci4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlOiBXaGF0JiMzOTtzIHRoZSB0YXJnZXQgcGxhdGZvcm0/IFdoYXQmIzM5O3MgdGhlIGtlcm5lbCB2ZXJzaW9uPyBLbm93aW5nIHRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgYW55IHBvdGVudGlhbCBwbGF0Zm9ybS1zcGVjaWZpYyBxdWlya3MuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbiwgbG9va2luZyBmb3IgaXRzIGFyZ3VtZW50cy4gSXQmIzM5O3Mgc2FmZSB0byBhc3N1bWUgaXQmIzM5O3MgaGFuZGxpbmcgYGlvY3RsYCBjYWxscyByZWxhdGVkIHRvIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIG1hbmFnZW1lbnQsIHdoaWNoIGNvdWxkIGluY2x1ZGUgcmVhZGluZy93cml0aW5nIHJlZ2lzdGVycywgcmVzZXR0aW5nIHRoZSBQSFksIGF1dG9uZWdvdGlhdGlvbiBjb250cm9sLCBsaW5rIHN0YXR1cyByZXRyaWV2YWwsIGFuZCBzbyBvbi4KClRoZSBuZXh0IHRoaW5nIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGlzIHRoZSBkYXRhIHN0cnVjdHVyZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLCBwcm9iYWJseSBzb21lIHNvcnQgb2YgYG1paV9pb2N0bF9kYXRhYCBvciBzaW1pbGFyLiBJIGV4cGVjdCBpdCB0byBoYXZlIGEgYGNtZGAgZmllbGQsIHdoaWNoIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBJcyBpdCBhIHN0YW5kYXJkIHNldCBvZiBgaW9jdGxgIGNvbW1hbmRzIGRlZmluZWQgYnkgdGhlIGtlcm5lbCwgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBjdXN0b20gb25lcyBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYW5kIFBIWSBjaGlwPyBUaGUgc3BlY2lmaWMgYGNtZGAgdmFsdWUgd2lsbCBkcml2ZSBteSBzdWJzZXF1ZW50IGFuYWx5c2lzLgoKSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgZXJyb3IgaGFuZGxpbmcuIEFyZSB0aGVyZSBzdWZmaWNpZW50IGNoZWNrcyBmb3IgaW52YWxpZCBjb21tYW5kIHZhbHVlcywgb3V0LW9mLXJhbmdlIHJlZ2lzdGVyIGFjY2Vzc2VzLCBvciBwb3RlbnRpYWwgaGFyZHdhcmUgaXNzdWVzPyBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gY29uZmlybSBpZiB0aGUgZHJpdmVyIHByb3Blcmx5IGltcGxlbWVudHMgbG9ja2luZyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aGVuIG11bHRpcGxlIHRocmVhZHMgYWNjZXNzIHRoZSBQSFkgY29uY3VycmVudGx5LiBBbmQgSSB3aWxsIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZm9yIGRlYWRsb2Nrcy4KCkkgYWxzbyBleHBlY3QgdG8gc2VlIGEgY2FsbCB0byB0aGUgdW5kZXJseWluZyBQSFkgZHJpdmVyJiMzOTtzIHJlYWQvd3JpdGUgZnVuY3Rpb25zIChlLmcuLCBgcGh5X3JlYWRgLCBgcGh5X3dyaXRlYCkuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgaW50ZXJhY3Qgd2l0aCB0aGUgc3BlY2lmaWMgUEhZIGNoaXAuIEkgd2FudCB0byBzZWUgaWYgdGhlIGRyaXZlciBpcyBjb3JyZWN0bHkgaGFuZGxpbmcgYW55IFBIWS1zcGVjaWZpYyBpZGlvc3luY3Jhc2llcywgc3VjaCBhcyByZWdpc3RlciBvZmZzZXRzIG9yIGJpdGZpZWxkIGRlZmluaXRpb25zLiBJJiMzOTtsbCB3YW50IHRvIGNoZWNrIGlmIHRoZSBkcml2ZXIgc3VwcG9ydHMgYWxsIHRoZSBkZWZpbmVkIHN0YXRlcyBhbmQgbW9kZXMsIGxpa2UgYXV0b25lZ290aWF0aW9uLCBmb3JjZWQgc3BlZWQsIGFuZCBkdXBsZXggc2V0dGluZ3MuCgpGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgbGlrZSB1bmNoZWNrZWQgdXNlci1wcm92aWRlZCBpbnB1dCB0aGF0IGNvdWxkIGxlYWQgdG8gcmVnaXN0ZXIgY29ycnVwdGlvbiBvciBvdGhlciBleHBsb2l0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMxMDpcdGludCBwaHlfbWlpX2lvY3RsKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxuIDMxMTpcdHtcbiAzMTI6XHRcdHN0cnVjdCBtaWlfaW9jdGxfZGF0YSAqbWlpX2RhdGEgPSBpZl9taWkoaWZyKTtcbiAzMTM6XHRcdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnIGtlcm5lbF9jZmc7XG4gMzE0Olx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrIGV4dGFjayA9IHt9O1xuIDMxNTpcdFx0dTE2IHZhbCA9IG1paV9kYXRhLVx1MDAzZXZhbF9pbjtcbiAzMTY6XHRcdGJvb2wgY2hhbmdlX2F1dG9uZWcgPSBmYWxzZTtcbiAzMTc6XHRcdHN0cnVjdCBod3RzdGFtcF9jb25maWcgY2ZnO1xuIDMxODpcdFx0aW50IHBydGFkLCBkZXZhZDtcbiAzMTk6XHRcdGludCByZXQ7XG4gMzIwOlx0XG4gMzIxOlx0XHRzd2l0Y2ggKGNtZCkge1xuIDMyMjpcdFx0Y2FzZSBTSU9DR01JSVBIWTpcbiAzMjM6XHRcdFx0bWlpX2RhdGEtXHUwMDNlcGh5X2lkID0gcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcjtcbiAzMjQ6XHRcdFx0ZmFsbHRocm91Z2g7XG4gMzI1Olx0XG4gMzI2Olx0XHRjYXNlIFNJT0NHTUlJUkVHOlxuIDMyNzpcdFx0XHRpZiAobWRpb19waHlfaWRfaXNfYzQ1KG1paV9kYXRhLVx1MDAzZXBoeV9pZCkpIHtcbiAzMjg6XHRcdFx0XHRwcnRhZCA9IG1kaW9fcGh5X2lkX3BydGFkKG1paV9kYXRhLVx1MDAzZXBoeV9pZCk7XG4gMzI5Olx0XHRcdFx0ZGV2YWQgPSBtZGlvX3BoeV9pZF9kZXZhZChtaWlfZGF0YS1cdTAwM2VwaHlfaWQpO1xuIDMzMDpcdFx0XHRcdHJldCA9IG1kaW9idXNfYzQ1X3JlYWQocGh5ZGV2LVx1MDAzZW1kaW8uYnVzLCBwcnRhZCwgZGV2YWQsXG4gMzMxOlx0XHRcdFx0XHRcdCAgICAgICBtaWlfZGF0YS1cdTAwM2VyZWdfbnVtKTtcbiAzMzI6XHRcbiAzMzM6XHRcdFx0fSBlbHNlIHtcbiAzMzQ6XHRcdFx0XHRyZXQgPSBtZGlvYnVzX3JlYWQocGh5ZGV2LVx1MDAzZW1kaW8uYnVzLCBtaWlfZGF0YS1cdTAwM2VwaHlfaWQsXG4gMzM1Olx0XHRcdFx0XHRcdCAgIG1paV9kYXRhLVx1MDAzZXJlZ19udW0pO1xuIDMzNjpcdFx0XHR9XG4gMzM3Olx0XG4gMzM4Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMzM5Olx0XHRcdFx0cmV0dXJuIHJldDtcbiAzNDA6XHRcbiAzNDE6XHRcdFx0bWlpX2RhdGEtXHUwMDNldmFsX291dCA9IHJldDtcbiAzNDI6XHRcbiAzNDM6XHRcdFx0cmV0dXJuIDA7XG4gMzQ0Olx0XG4gMzQ1Olx0XHRjYXNlIFNJT0NTTUlJUkVHOlxuIDM0NjpcdFx0XHRpZiAobWRpb19waHlfaWRfaXNfYzQ1KG1paV9kYXRhLVx1MDAzZXBoeV9pZCkpIHtcbiAzNDc6XHRcdFx0XHRwcnRhZCA9IG1kaW9fcGh5X2lkX3BydGFkKG1paV9kYXRhLVx1MDAzZXBoeV9pZCk7XG4gMzQ4Olx0XHRcdFx0ZGV2YWQgPSBtZGlvX3BoeV9pZF9kZXZhZChtaWlfZGF0YS1cdTAwM2VwaHlfaWQpO1xuIDM0OTpcdFx0XHR9IGVsc2Uge1xuIDM1MDpcdFx0XHRcdHBydGFkID0gbWlpX2RhdGEtXHUwMDNlcGh5X2lkO1xuIDM1MTpcdFx0XHRcdGRldmFkID0gbWlpX2RhdGEtXHUwMDNlcmVnX251bTtcbiAzNTI6XHRcdFx0fVxuIDM1MzpcdFx0XHRpZiAocHJ0YWQgPT0gcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcikge1xuIDM1NDpcdFx0XHRcdHN3aXRjaCAoZGV2YWQpIHtcbiAzNTU6XHRcdFx0XHRjYXNlIE1JSV9CTUNSOlxuIDM1NjpcdFx0XHRcdFx0aWYgKCh2YWwgXHUwMDI2IChCTUNSX1JFU0VUIHwgQk1DUl9BTkVOQUJMRSkpID09IDApIHtcbiAzNTc6XHRcdFx0XHRcdFx0aWYgKHBoeWRldi1cdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRU5BQkxFKVxuIDM1ODpcdFx0XHRcdFx0XHRcdGNoYW5nZV9hdXRvbmVnID0gdHJ1ZTtcbiAzNTk6XHRcdFx0XHRcdFx0cGh5ZGV2LVx1MDAzZWF1dG9uZWcgPSBBVVRPTkVHX0RJU0FCTEU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTQyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgUEhZIE1JSSBJT0NUTCoqCgpBbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgbG93LWxldmVsIGRldGFpbHMgb2YgdGhpcyBkcml2ZXIuIFdoZW4gYFNJT0NTTUlJUkVHYCBnZXRzIGNhbGxlZCwgaXMgaXQgdXNpbmcgdGhlIG1vcmUgc3BlY2lmaWMgYG1kaW9idXNfYzQ1X3dyaXRlYCBmdW5jdGlvbiwgb3IgdGhlIGdlbmVyYWwgYG1kaW9idXNfd3JpdGVgPyBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhYm91dCBob3cgdGhpcyBNSUkgcmVnaXN0ZXIgd3JpdGUgaXMgYmVpbmcgaGFuZGxlZC4gVGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgZXNwZWNpYWxseSB3aXRoIFBIWSBpbnRlcmFjdGlvbi4gSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIHJlc3Qgb2YgYHBoeV9taWlfaW9jdGxgIGFuZCB2ZXJpZnkgdGhlIGV4YWN0IHBhdGggb2YgdGhlIHdyaXRlIG9wZXJhdGlvbi4gR290dGEgbWFrZSBzdXJlIGl0JiMzOTtzIHRoZSBleHBlY3RlZCBvbmUgZm9yIHRoZSBnaXZlbiBQSFkgdHlwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM2MDpcdFx0XHRcdFx0XHRpZiAodmFsIFx1MDAyNiBCTUNSX0ZVTExEUExYKVxuIDM2MTpcdFx0XHRcdFx0XHRcdHBoeWRldi1cdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcbiAzNjI6XHRcdFx0XHRcdFx0ZWxzZVxuIDM2MzpcdFx0XHRcdFx0XHRcdHBoeWRldi1cdTAwM2VkdXBsZXggPSBEVVBMRVhfSEFMRjtcbiAzNjQ6XHRcdFx0XHRcdFx0aWYgKHZhbCBcdTAwMjYgQk1DUl9TUEVFRDEwMDApXG4gMzY1Olx0XHRcdFx0XHRcdFx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDtcbiAzNjY6XHRcdFx0XHRcdFx0ZWxzZSBpZiAodmFsIFx1MDAyNiBCTUNSX1NQRUVEMTAwKVxuIDM2NzpcdFx0XHRcdFx0XHRcdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDtcbiAzNjg6XHRcdFx0XHRcdFx0ZWxzZSBwaHlkZXYtXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDtcbiAzNjk6XHRcdFx0XHRcdH0gZWxzZSB7XG4gMzcwOlx0XHRcdFx0XHRcdGlmIChwaHlkZXYtXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXG4gMzcxOlx0XHRcdFx0XHRcdFx0Y2hhbmdlX2F1dG9uZWcgPSB0cnVlO1xuIDM3MjpcdFx0XHRcdFx0XHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRU5BQkxFO1xuIDM3MzpcdFx0XHRcdFx0fVxuIDM3NDpcdFx0XHRcdFx0YnJlYWs7XG4gMzc1Olx0XHRcdFx0Y2FzZSBNSUlfQURWRVJUSVNFOlxuIDM3NjpcdFx0XHRcdFx0bWlpX2Fkdl9tb2RfbGlua21vZGVfYWR2X3QocGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nLFxuIDM3NzpcdFx0XHRcdFx0XHRcdFx0ICAgdmFsKTtcbiAzNzg6XHRcdFx0XHRcdGNoYW5nZV9hdXRvbmVnID0gdHJ1ZTtcbiAzNzk6XHRcdFx0XHRcdGJyZWFrO1xuIDM4MDpcdFx0XHRcdGNhc2UgTUlJX0NUUkwxMDAwOlxuIDM4MTpcdFx0XHRcdFx0bWlpX2N0cmwxMDAwX21vZF9saW5rbW9kZV9hZHZfdChwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcsXG4gMzgyOlx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHZhbCk7XG4gMzgzOlx0XHRcdFx0XHRjaGFuZ2VfYXV0b25lZyA9IHRydWU7XG4gMzg0Olx0XHRcdFx0XHRicmVhaztcbiAzODU6XHRcdFx0XHRkZWZhdWx0OlxuIDM4NjpcdFx0XHRcdFx0LyogZG8gbm90aGluZyAqL1xuIDM4NzpcdFx0XHRcdFx0YnJlYWs7XG4gMzg4Olx0XHRcdFx0fVxuIDM4OTpcdFx0XHR9XG4gMzkwOlx0XG4gMzkxOlx0XHRcdGlmIChtZGlvX3BoeV9pZF9pc19jNDUobWlpX2RhdGEtXHUwMDNlcGh5X2lkKSlcbiAzOTI6XHRcdFx0XHRtZGlvYnVzX2M0NV93cml0ZShwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBydGFkLCBkZXZhZCxcbiAzOTM6XHRcdFx0XHRcdFx0ICBtaWlfZGF0YS1cdTAwM2VyZWdfbnVtLCB2YWwpO1xuIDM5NDpcdFx0XHRlbHNlXG4gMzk1Olx0XHRcdFx0bWRpb2J1c193cml0ZShwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBydGFkLCBkZXZhZCwgdmFsKTtcbiAzOTY6XHRcbiAzOTc6XHRcdFx0aWYgKHBydGFkID09IHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgXHUwMDI2XHUwMDI2XG4gMzk4Olx0XHRcdCAgICBkZXZhZCA9PSBNSUlfQk1DUiBcdTAwMjZcdTAwMjZcbiAzOTk6XHRcdFx0ICAgIHZhbCBcdTAwMjYgQk1DUl9SRVNFVClcbiA0MDA6XHRcdFx0XHRyZXR1cm4gcGh5X2luaXRfaHcocGh5ZGV2KTtcbiA0MDE6XHRcbiA0MDI6XHRcdFx0aWYgKGNoYW5nZV9hdXRvbmVnKVxuIDQwMzpcdFx0XHRcdHJldHVybiBwaHlfc3RhcnRfYW5lZyhwaHlkZXYpO1xuIDQwNDpcdFxuIDQwNTpcdFx0XHRyZXR1cm4gMDtcbiA0MDY6XHRcbiA0MDc6XHRcdGNhc2UgU0lPQ1NIV1RTVEFNUDpcbiA0MDg6XHRcdFx0aWYgKHBoeWRldi1cdTAwM2VtaWlfdHMgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VtaWlfdHMtXHUwMDNlaHd0c3RhbXBfc2V0KSB7XG4gNDA5Olx0XHRcdFx0aWYgKGNvcHlfZnJvbV91c2VyKFx1MDAyNmNmZywgaWZyLVx1MDAzZWlmcl9kYXRhLCBzaXplb2YoY2ZnKSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTc1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIFBIWSBNTUQgV3JpdGUgRnVuY3Rpb24gQ2FsbHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBwaHlfbWlpX2lvY3RsYCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCAqZG9lc24mIzM5O3QqIGRpcmVjdGx5IGNhbGwgYHBoeV93cml0ZV9tbWRgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGl0IHdvdWxkLCBidXQgbm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhY3R1YWwgY2FsbCBjaGFpbi4gTm93LCBJIHNlZSB0aGF0IGBwaHlfd3JpdGVfbW1kYCBnZXRzIGNhbGxlZCBmcm9tIGBnZW5waHlfd3JpdGVfbW1kX2M0NWAsIHdhaXQgYSBtaW51dGUsIG5vIHRoYXQgaXMgYSBjYWxsYmFjayBmdW5jdGlvbi4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgbW9yZSBjYXJlZnVsbHkuCgpMZXQgbWUgc2VlLi4uIHdoZXJlICppcyogYHBoeV93cml0ZV9tbWRgIGFjdHVhbGx5IGdldHRpbmcgY2FsbGVkPyBIbW0sIGl0IGxvb2tzIGxpa2UgYHBoeV93cml0ZV9tbWRgIGdldHMgY2FsbGVkIGluIGBydGxnZW5fd3JpdGVfbW1kYD8gTm8sIHdhaXQgYSBtaW51dGUsIGBydGxnZW5fd3JpdGVfbW1kYCBpcyBqdXN0IHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgYC53cml0ZV9tbWRgLiBTbywgSSBuZWVkIHRvIGtub3cgd2hlcmUgYC53cml0ZV9tbWRgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQuCgpSaWdodCwgaGVyZSB3ZSBnby4uLiBsb29rcyBsaWtlIGAud3JpdGVfbW1kYCBpcyBjYWxsZWQgaW4gYF9fcGh5X3dyaXRlX21tZGAuIFRoYXQmIzM5O3MgdGhlIGtleS4gQW5kIGBfX3BoeV93cml0ZV9tbWRgIGlzICpkaXJlY3RseSogY2FsbGVkIGJ5IGBwaHlfd3JpdGVfbW1kYCBpdHNlbGYuIE9rYXksIHRoYXQmIzM5O3Mgbm90IHRvbyBzdXJwcmlzaW5nLgoKTm93LCB0aGUgaW1wb3J0YW50IHBhcnQuIGBwaHlfd3JpdGVfbW1kYCBpcyB0aGUgd29ya2hvcnNlLiBJIHNlZSBpdCBnZXRzIGNhbGxlZCBmcm9tIGEgYnVuY2ggb2YgcGxhY2VzIHdpdGhpbiB0aGUgdmFyaW91cyBQSFkgZHJpdmVyIGltcGxlbWVudGF0aW9ucyAtIGFzIGV4cGVjdGVkLCB0aGF0IG1ha2VzIHNlbnNlLiBBbmQsIEkgc2VlIGl0JiMzOTtzIGFsc28gY2FsbGVkIGJ5IHNvbWUgb2YgdGhlIG1vcmUgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBsaWtlIGBwaHlfaW5pdF9lZWVgIGFuZCBgcGh5X2V0aHRvb2xfc2V0X2VlZWAgYW5kIG90aGVyIFBIWSBjb25maWd1cmF0aW9uIHJvdXRpbmVzLiBTbywgaXRzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSwgYW5kIHVzZWQgYnJvYWRseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfd3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2MjQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBFdGhlcm5ldCBlbmVyZ3kgZWZmaWNpZW5jeSwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZS4gR2l2ZW4gd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aCwgbXkgZmlyc3QgaHVuY2ggaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBsb3ctbGV2ZWwgUEhZIHNldHRpbmdzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZXhhbWluaW5nIHRoZSBgcGh5X2V0aHRvb2xfc2V0X2VlZWAgZnVuY3Rpb24gKG9yIHNvbWV0aGluZyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBpZiB0aGUgc3lzdGVtIHV0aWxpemVzIGEgY3VzdG9tIG9yIHZlbmRvci1zcGVjaWZpYyBuYW1pbmcgY29udmVudGlvbikuIEl0JiMzOTtzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2Qgc3RhcnQuIEkgc3VzcGVjdCB0aGF0JiMzOTtzIHdoZXJlIEkgY2FuIGZpbmQgdGhlIGNvbnRyb2wgcG9pbnRzIHRvIGFkanVzdCBFRUUgY2FwYWJpbGl0aWVzLiBJZiB0aGF0IGRvZXNuJiMzOTt0IHlpZWxkIHJlc3VsdHMsIEkmIzM5O2QgdHJhY2UgYmFjayBmcm9tIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfd3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTgyOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz0yNzU9c3RhdGljIGludCBhZGluX2NvbmZpZ19yZ21paV9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zMTYtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjMxNzpcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTMxOC1cdFx0XHQgICAgIEFESU4xMzAwX0dFX1JHTUlJX0NGR19SRUcsIHJlZyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz0zMjE9c3RhdGljIGludCBhZGluX2NvbmZpZ19ybWlpX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTM0My1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzQ0Olx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzQ1LVx0XHRcdCAgICAgQURJTjEzMDBfR0VfUk1JSV9DRkdfUkVHLCByZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jPTE5Mj1zdGF0aWMgaW50IGFkaW5fc2V0X3Bvd2VyZG93bl9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW4pXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTk1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MTk2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTk3LVx0XHRcdCAgICBBRElOX0NSU01fU0ZUX1BEX0NOVFJMLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYz00Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYWRpbjExNDBfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTU0LVx0XHQucmVhZF9tbWQgPSBnZW5waHlfcmVhZF9tbWRfYzQ1LFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjU1Olx0XHQud3JpdGVfbW1kID0gZ2VucGh5X3dyaXRlX21tZF9jNDUsXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmMtNTYtXHRcdC5nZXRfcGxjYV9jZmcgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTI3Mj1zdGF0aWMgaW50IGFuODgwMXJfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMwMC1cdFx0XHRcdCAgICAgTEVEX0JMSU5LX0RVUl9NQVNLKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MzAxOlx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExFRF9CTElOS19EVVIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMwMi1cdFx0XHRcdCAgICBibGlua19kdXIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzA1LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozMDY6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEVEX09OX0RVUixcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzA3LVx0XHRcdFx0ICAgIGh3X2RlbGF5X29uKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTkwMj1zdGF0aWMgaW50IGFuODgwMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkxMS1cdC8qIERpc2FibGUgTG93IFBvd2VyIE1vZGUgKExQTSkgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTEyOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBTjg4MDFfUkVHX1BIWV9JTlRFUk5BTDAsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkxMy1cdFx0XHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX0lOVEZVTkNfTUFTSywgMHgxZSkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTE2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5MTc6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFOODgwMV9SRUdfUEhZX0lOVEVSTkFMMSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTE4LVx0XHRcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfSU5URlVOQ19NQVNLLCAweDIpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk1Ny1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTU4Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NTktXHRcdFx0ICAgIEFOODgwMV9QSFlfVFhfUEFJUl9ETFlfU0VMX0dCRSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk2NC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTY1Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBTjg4MDFfUEhZX1JYQURDX0NUUkwsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk2Ni1cdFx0XHQgICAgQU44ODAxX1BIWV9SWEFEQ19TQU1QX1BIU0VMX0EgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTcwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NzE6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFOODgwMV9QSFlfUlhBRENfUkVWXzAsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk3Mi1cdFx0XHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX1JYQURDX1JFVl9NQVNLX0EsIDEpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk3NS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTc2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBTjg4MDFfUEhZX1JYQURDX1JFVl8xLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NzctXHRcdFx0ICAgIEZJRUxEX1BSRVAoQU44ODAxX1BIWV9SWEFEQ19SRVZfTUFTS19DLCAxKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NjEwPXN0YXRpYyBpbnQgYWlyX2h3X2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjI4LVx0aWYgKGNoYW5nZWQpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2Mjk6XHRcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MzAtXHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JMSU5LKGluZGV4KSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz03MDg9c3RhdGljIGludCBhaXJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2NC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc2NTpcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0JMSU5LKGluZGV4KSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2Ni1cdFx0XHQgICAgIGJsaW5rKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz03OTc9c3RhdGljIGludCBhaXJfbGVkc19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBudW0sIGludCBkdXIsIGludCBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwMS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgwMjpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfRFVSX0JMSU5LLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODAzLVx0XHRcdCAgICBkdXIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwNi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgwNzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfRFVSX09OLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODA4LVx0XHRcdCAgICBkdXIgXHUwMDNlXHUwMDNlIDEpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEyODE9c3RhdGljIGludCBlbjg4MTFoX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI5OC1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI5OTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzAwLVx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfMV9NT0RFMSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwMi1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDM6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8yLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwNC1cdFx0XHQgICAgQUlSX1BIWV9NQ1VfQ01EXzJfTU9ERTEpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDYtXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzA3Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDgtXHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX01PREUxKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzEwLVx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMxMTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzEyLVx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfNF9NT0RFMSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTQ1Mj1zdGF0aWMgaW50IGVuODgxMWhfY2xlYXJfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NTUtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDU2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NTctXHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX0RPQ01EKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDYwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQ2MTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDYyLVx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfNF9JTlRDTFIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jPTkwPXN0YXRpYyBpbnQgYXFyX2Z3X2xvYWRfbWVtb3J5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk1LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6OTY6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy05Ny1cdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk4LVx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UxX0NSQ19SRVNFVCk7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzo5OTpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTEwMC1cdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMyxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTEwMS1cdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFM19NU1dfQUREUihhZGRyKSk7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoxMDI6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMDMtXHRcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTE1LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTE2Olx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTUsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMTctXHRcdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNV9NU1dfREFUQSh3b3JkKSk7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoxMTg6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNixcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTExOS1cdFx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U2X0xTV19EQVRBKHdvcmQpKTtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTEyMC1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjEyMTpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UxLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTIyLVx0XHRcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTFfRVhFQ1VURSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM9MTQ5PXN0YXRpYyBpbnQgYXFyX2Z3X2Jvb3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgdTggKmRhdGEsIHNpemVfdCBzaXplLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI2MS1cdC8qIHN0YWxsIHRoZSBtaWNyb2Nwcm9jZXNzb3IgKi9cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjI2MjpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX0NPTlRST0wyLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjYzLVx0XHQgICAgICBWRU5EMV9HTE9CQUxfQ09OVFJPTDJfVVBfUlVOX1NUQUxMIHwgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTF9PVkQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI4My1cdC8qIFJlbGVhc2UgdGhlIG1pY3JvcHJvY2Vzc29yLiBVUF9SRVNFVCBtdXN0IGJlIGhlbGQgZm9yIDEwMCB1c2VjLiAqL1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6Mjg0Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfQ09OVFJPTDIsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yODUtXHRcdCAgICAgIFZFTkQxX0dMT0JBTF9DT05UUk9MMl9VUF9SVU5fU1RBTEwgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI4OS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjI5MDpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX0NPTlRST0wyLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjkxLVx0XHQgICAgICBWRU5EMV9HTE9CQUxfQ09OVFJPTDJfVVBfUlVOX1NUQUxMX09WRCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2h3bW9uLmM9NTU9c3RhdGljIGludCBhcXJfaHdtb25fc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCByZWcsIGxvbmcgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2h3bW9uLmMtNjQtXHQvKiB0ZW1wIGlzIGluIHMxNiByYW5nZSBhbmQgd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4gbG93ZXIgMTYgYml0cyBvbmx5ICovXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYzo2NTpcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIHJlZywgKHUxNil0ZW1wKTtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9od21vbi5jLTY2LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTI1Mz1zdGF0aWMgaW50IGFxcl9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY0LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNjU6XHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fVFhfVkVORF9JTlRfTUFTSzIsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI2Ni1cdFx0XHQgICAgZW4gPyBNRElPX0FOX1RYX1ZFTkRfSU5UX01BU0syX0xJTksgOiAwKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI2OS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MjcwOlx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfSU5UX1NURF9NQVNLLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNzEtXHRcdFx0ICAgIGVuID8gVkVORDFfR0xPQkFMX0lOVF9TVERfTUFTS19BTEwgOiAwKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI3NC1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6Mjc1Olx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfSU5UX1ZFTkRfTUFTSyxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjc2LVx0XHRcdCAgICBlbiA/IFZFTkQxX0dMT0JBTF9JTlRfVkVORF9NQVNLX0dMT0JBTDMgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM9MzY5PXN0YXRpYyBpbnQgYXFyMTA1X3NldHVwX2ZvcmNlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtNDAxLVx0fVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzo0MDI6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fQURWRVJUSVNFLCBhZHYpO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDMtXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDQtXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjQwNTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9WRU5EX1BST1YsIHZlbmQpO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDYtXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDctXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjQwODpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl8xMEdCVF9DVFJMLCBjdHJsMTApO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDktXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9Mjk3PXN0YXRpYyBpbnQgYWVvbl9maXJtd2FyZV9ib290KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IHU4ICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzA3LVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzozMDg6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0ZXX1NUQVJUX0FERFIsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMwOS1cdFx0XHQgICAgQUVPTl9CT09UX0FERFIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzI5LVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzozMzA6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzMxLVx0XHRcdFx0ICAgIFZFTkQxX0dMQl9SRUdfTURJT19JTkRJUkVDVF9MT0FELCB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzM1LVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzozMzY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMzNy1cdFx0XHQgICAgVkVORDFfR0xCX1JFR19DUFVfUkVTRVRfQUREUl9MT19CQVNFQUREUixcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTM0MS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MzQyOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zNDMtXHRcdFx0ICAgIFZFTkQxX0dMQl9SRUdfQ1BVX1JFU0VUX0FERFJfSElfQkFTRUFERFIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz00MDU9c3RhdGljIGludCBhZW9uX2lwY19zZW5kX2NtZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDIyLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzo0MjM6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0lQQ19DTUQsIGNtZCk7XG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTQyNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz00NTU9c3RhdGljIGludCBhZW9uX2lwY19zZW5kX21zZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDcxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGF0YV9sZW4gLyBzaXplb2YodTE2KTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjQ3MjpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9JUENfREFUQShpKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDczLVx0XHRcdCAgICAgIGRhdGFbaV0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTM3Mj1pbnQgYmNtX3BoeV9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTM4NS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjM4NjpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgQlJDTV9DTDQ1VkVOX0VFRV9DT05UUk9MLCAodTMyKXZhbCk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zODctXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNDA0LVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6NDA1Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBCQ01fQ0w0NVZFTl9FRUVfQURWLCAodTMyKXZhbCk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy00MDYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYz02Mjg9c3RhdGljIGludCBiY203eHh4XzI4bm1fZXBoeV9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtNjU3LVxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYzo2NTg6c3RhdGljIGludCBiY203eHh4XzI4bm1fZXBoeV93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtNjU5LVx0XHRcdFx0ICAgICAgIGludCBkZXZudW0sIHUxNiByZWdudW0sIHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYz04MjE9c3RhdGljIGludCBiY203eHh4XzI4bm1fcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jLTg4Ni1cdC5yZWFkX21tZFx0PSBiY203eHh4XzI4bm1fZXBoeV9yZWFkX21tZCxcdFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYzo4ODc6XHQud3JpdGVfbW1kXHQ9IGJjbTd4eHhfMjhubV9lcGh5X3dyaXRlX21tZCxcdFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYy04ODgtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jPTk5PXN0YXRpYyBpbnQgYmNtODQ4OXhfbGVkX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jLTEwMy1cbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jOjEwNDpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDUtXHRcdFx0ICAgIGJjbTg0ODl4X2xlZF9yZWdzW2luZGV4XS5tYXNrX2xvdywgbG93KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDctXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYzoxMDg6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfUE1BUE1ELFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTA5LVx0XHRcdCAgICBiY204NDg5eF9sZWRfcmVnc1tpbmRleF0ubWFza19leHQsIGV4dCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYz0zND1zdGF0aWMgaW50IGJjbTg3eHhfb2ZfcmVnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTY4LVxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYzo2OTpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldmlkLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTcwLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM9MTQwPXN0YXRpYyBpbnQgYmNtODd4eF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtMTU0LVx0XHRyZWcgfD0gMTtcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM6MTU1Olx0XHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfUENTLFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTYtXHRcdFx0XHQgICAgQkNNODdYWF9MQVNJX0NPTlRST0wsIHJlZyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTgtXHRcdHJlZyBcdTAwMjY9IH4xO1xuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYzoxNTk6XHRcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QQ1MsXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE2MC1cdFx0XHRcdCAgICBCQ004N1hYX0xBU0lfQ09OVFJPTCwgcmVnKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jPTIxND1zdGF0aWMgaW50IGRwODM4MjJfY29uZmlnX3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjI5LVx0XHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjMwOlx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIE1JSV9EUDgzODIyX1dPTF9EQTEsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTIzMS1cdFx0XHQgICAgICAobWFjWzFdIFx1MDAzY1x1MDAzYyA4KSB8IG1hY1swXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjIzMjpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfREEyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMzMtXHRcdFx0ICAgICAgKG1hY1szXSBcdTAwM2NcdTAwM2MgOCkgfCBtYWNbMl0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyMzQ6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0RBMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjM1LVx0XHRcdCAgICAgIChtYWNbNV0gXHUwMDNjXHUwMDNjIDgpIHwgbWFjWzRdKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0NC1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI0NTpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0Ni1cdFx0XHRcdCAgICAgIE1JSV9EUDgzODIyX1JYU09QMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjQ3LVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbMV0gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1swXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI0ODpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0OS1cdFx0XHRcdCAgICAgIE1JSV9EUDgzODIyX1JYU09QMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjUwLVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbM10gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1syXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI1MTpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI1Mi1cdFx0XHRcdCAgICAgIE1JSV9EUDgzODIyX1JYU09QMyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI2NC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjY1Olx0XHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNjYtXHRcdFx0XHQgICAgIE1JSV9EUDgzODIyX1dPTF9DRkcsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jPTEwNDU9c3RhdGljIGludCBkcDgzODIyX3Jlc3VtZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMTA1Mi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MTA1MzpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0NGRywgdmFsdWUgfFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0xMDU0LVx0XHQgICAgICBEUDgzODIyX1dPTF9DTFJfSU5ESUNBVElPTik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0yMTE9c3RhdGljIGludCBkcDgzODY3X3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzMS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjMyOlx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjMzLVx0XHRcdFx0ICAgICAgKG1hY1sxXSBcdTAwM2NcdTAwM2MgOCB8IG1hY1swXSkpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMzQ6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzUtXHRcdFx0XHQgICAgICAobWFjWzNdIFx1MDAzY1x1MDAzYyA4IHwgbWFjWzJdKSk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzNjpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDMsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzNy1cdFx0XHRcdCAgICAgIChtYWNbNV0gXHUwMDNjXHUwMDNjIDggfCBtYWNbNF0pKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0NC1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0NTpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDEsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0Ni1cdFx0XHRcdCAgICAgICh3b2wtXHUwMDNlc29wYXNzWzFdIFx1MDAzY1x1MDAzYyA4KSB8IHdvbC1cdTAwM2Vzb3Bhc3NbMF0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDc6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNDgtXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1szXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzJdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQ5Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjUwLVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbNV0gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1s0XSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzAtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI3MTpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGQ0ZHLCB2YWxfcnhjZmcpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzItXHRwaHlfd3JpdGUocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSLCB2YWxfbWljcik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz03MzY9c3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MDgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgwOTpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SR01JSUNUTCwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODEwLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4MTE6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUkdNSUlEQ1RMLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTItXHRcdFx0ICAgICAgZHA4Mzg2Ny1cdTAwM2VyeF9pZF9kZWxheSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTYtXHRcdHZhbCBcdTAwMjY9IH5EUDgzODY3X1JHTUlJX0VOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4MTc6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUkdNSUlDVEwsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgxOC1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTg2MC1cdFx0XHR2YWwgXHUwMDI2PSB+RFA4Mzg2N19TR01JSV9UWVBFO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4NjE6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfU0dNSUlDVEwsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTg2Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTkzNT1zdGF0aWMgaW50IGRwODM4NjdfcGh5X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05NTMtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6OTU0Olx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19EU1BfRkZFX0NGRyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTU1LVx0XHRcdCAgICAweDBlODEpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM9MjU5PXN0YXRpYyBpbnQgZHA4Mzg2OV9zZXRfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yODYtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjI4NzpcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yODgtXHRcdFx0XHRcdCAgICBEUDgzODY5X1JYRlBNRDEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTItXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjI5MzpcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTQtXHRcdFx0XHRcdCAgICBEUDgzODY5X1JYRlBNRDIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjI5OTpcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMDAtXHRcdFx0XHRcdCAgICBEUDgzODY5X1JYRlBNRDMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTAtXHRcdGlmICh3b2wtXHUwMDNld29sb3B0cyBcdTAwMjYgV0FLRV9NQUdJQ1NFQ1VSRSkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozMTE6XHRcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzEyLVx0XHRcdFx0XHQgICAgRFA4Mzg2OV9SWEZTT1AxLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzE2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozMTc6XHRcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzE4LVx0XHRcdFx0XHQgICAgRFA4Mzg2OV9SWEZTT1AyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzIxLVx0XHRcdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MzIyOlx0XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMyMy1cdFx0XHRcdFx0ICAgIERQODM4NjlfUlhGU09QMyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTM0Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MzQ3Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUiwgRFA4Mzg2OV9SWEZDRkcsIHZhbF9yeGNmZyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTM0OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYz02OTQ9c3RhdGljIGludCBkcDgzODY5X2NvbmZpZ3VyZV9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03MTgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjcxOTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfT1BfTU9ERSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzIwLVx0XHRcdCAgICBwaHlfY3RybF92YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzUzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo3NTQ6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc1NS1cdFx0XHRcdCAgICBEUDgzODY5X0ZYX0NUUkwsIERQODM4NjlfRlhfQ1RSTF9ERUZBVUxUKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc2NS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6NzY2Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03NjctXHRcdFx0XHQgICAgRFA4Mzg2OV9GWF9DVFJMLCBEUDgzODY5X0ZYX0NUUkxfREVGQVVMVCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03ODYtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjc4NzpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzg4LVx0XHRcdFx0ICAgIERQODM4NjlfRlhfQ1RSTCwgRFA4Mzg2OV9GWF9DVFJMX0RFRkFVTFQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM9ODA0PXN0YXRpYyBpbnQgZHA4Mzg2OV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODM0LVx0XHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6ODM1Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04MzYtXHRcdFx0XHQgICAgRFA4Mzg2OV9BTkFfUExMX1BST0dfUEksIDB4MTApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODQ3LVx0aWYgKHBoeV9pbnRlcmZhY2VfaXNfcmdtaWkocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo4NDg6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfUkdNSUlEQ1RMLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NDktXHRcdFx0XHQgICAgZHA4Mzg2OS1cdTAwM2VyeF9pbnRfZGVsYXkgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODY3LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo4Njg6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfUkdNSUlDVEwsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTg2OS1cdFx0XHRcdCAgICB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYz05Nz1zdGF0aWMgaW50IGRwODM4MTFfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTItXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExMzpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUiwgTUlJX0RQODM4MTFfV09MX0RBMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTQtXHRcdFx0ICAgICAgKG1hY1sxXSBcdTAwM2NcdTAwM2MgOCkgfCBtYWNbMF0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExNTpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUiwgTUlJX0RQODM4MTFfV09MX0RBMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTYtXHRcdFx0ICAgICAgKG1hY1szXSBcdTAwM2NcdTAwM2MgOCkgfCBtYWNbMl0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExNzpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUiwgTUlJX0RQODM4MTFfV09MX0RBMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTgtXHRcdFx0ICAgICAgKG1hY1s1XSBcdTAwM2NcdTAwM2MgOCkgfCBtYWNbNF0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMjctXHRcdGlmICh3b2wtXHUwMDNld29sb3B0cyBcdTAwMjYgV0FLRV9NQUdJQ1NFQ1VSRSkge1xuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjEyODpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEyOS1cdFx0XHRcdCAgICAgIE1JSV9EUDgzODExX1JYU09QMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzAtXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1sxXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzBdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxMzE6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzItXHRcdFx0XHQgICAgICBNSUlfRFA4MzgxMV9SWFNPUDIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTMzLVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbM10gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1syXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTM0Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTM1LVx0XHRcdFx0ICAgICAgTUlJX0RQODM4MTFfUlhTT1AzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xNDctXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTQ4Olx0XHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xNDktXHRcdFx0XHQgICAgIE1JSV9EUDgzODExX1dPTF9DRkcsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM9NTMwPXN0YXRpYyBpbnQgZHA4M3RkNTEwX2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTUzNC1cdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJydXB0cyA9PSBQSFlfSU5URVJSVVBUX0VOQUJMRUQpIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo1MzU6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01MzYtXHRcdFx0XHQgICAgRFA4M1RENTEwRV9JTlRFUlJVUFRfUkVHXzEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTU0Ni1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NTQ3Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNTQ4LVx0XHRcdFx0ICAgIERQODNURDUxMEVfSU5URVJSVVBUX1JFR18xLCAweDApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYz02ODQ9c3RhdGljIGludCBkcDgzdGQ1MTBfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03MzgtXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzM5Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1REUl9DRkcyLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc0MC1cdFx0XHQgICAgRklFTERfUFJFUChEUDgzVEQ1MTBFX1REUl9FTkRfVEFQX0lOREVYXzEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc0Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo3NDc6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURDUxMEVfVERSX0ZBVUxUX0NGRzEsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzQ4LVx0XHRcdCAgICBGSUVMRF9QUkVQKERQODNURDUxMEVfVERSX0ZMVF9MT0NfT0ZGU0VUXzEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc1Ny1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjc1ODpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9VTktOXzAzMEUsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzU5LVx0XHRcdCAgICBEUDgzVEQ1MTBFXzAzMEVfVkFMKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzYyLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjc2MzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9URFJfQ0ZHMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NjQtXHRcdFx0ICAgIERQODNURDUxMEVfVERSX1RYX0RVUkFUSU9OX1VTX0RFRik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jPTMyND1zdGF0aWMgaW50IGRwODN0ZzcyMF9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzozNDE6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVERSX0NGRzIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzQyLVx0XHRcdCAgICAweGEwMDgpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNDUtXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzQ2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX1REUl9DRkczLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0Ny1cdFx0XHQgICAgMHgwOTI4KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzUwLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM1MTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19URFJfQ0ZHNCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNTItXHRcdFx0ICAgIDB4MDAwNCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1NS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzozNTY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVU5LTk9XTl8wNDA1LFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1Ny1cdFx0XHQgICAgMHg2NDAwKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzYwLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM2MTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19VTktOT1dOXzA4M0YsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzYyLVx0XHRcdCAgICAweDMwMDMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYz01NTg9c3RhdGljIGludCBkcDgzdGc3MjBfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtNTc1LVx0ICovXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6NTc2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX0xQU19DRkczLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTU3Ny1cdFx0XHQgICAgRFA4M1RHNzIwU19MUFNfQ0ZHM19QV1JfTU9ERV8wKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTI0NT1zdGF0aWMgaW50IHh3YXlfZ3BoeV9pbml0X2xlZHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI1OS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjYwOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRURDSCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjYxLVx0XHQgICAgICBYV0FZX01NRF9MRURDSF9OQUNTX05PTkUgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjYzLVx0XHQgICAgICBYV0FZX01NRF9MRURDSF9GQkZfRjE2SFopO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNjQ6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRENMLFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNjUtXHRcdCAgICAgIFhXQVlfTU1EX0xFRENIX0NCTElOS19OT05FIHxcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI3Ni1cdFx0WFdBWV9NTURfTEVEeExfQkxJTktTX05PTkU7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI3NzpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMEgsIGxlZHhoKTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Mjc4Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQwTCwgbGVkeGwpO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNzk6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDFILCBsZWR4aCk7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI4MDpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMUwsIGxlZHhsKTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjgxOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQySCwgbGVkeGgpO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyODI6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDJMLCBsZWR4bCk7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI4My1cbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTM5Mz1zdGF0aWMgaW50IHh3YXlfZ3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTQxMC1cdGlmICh2YWx1ZSA9PSBMRURfT0ZGKSB7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjQxMTpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUR4SChpbmRleCksIDApO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTQtXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjQxNTpcdFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEeEwoaW5kZXgpLCAwKTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDE2LVx0fSBlbHNlIHtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzNjMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYHBoeV93cml0ZV9tbWRgIFVzYWdlKioKCk9rYXksIHNvIGBwaHlfd3JpdGVfbW1kYCBpcyBhIGZ1bmN0aW9uIHRoYXQmIzM5O3MgY2xlYXJseSBiZWluZyB1dGlsaXplZCBhY3Jvc3MgYSBzaWduaWZpY2FudCBwb3J0aW9uIG9mIHRoZSBQSFkgZHJpdmVyIGNvZGViYXNlLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBicm9hZGx5IHVzZWQgbWVyaXRzIGNhcmVmdWwgc2NydXRpbnkuIEJ1dCB3YWl0LCBkaWQgSSBqdXN0IHNlZSB0aGF0IGBwaHlfZXRodG9vbF9zZXRfZWVlYCBpcyBjYWxsaW5nIGBwaHlfd3JpdGVfbW1kYD8gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0IChFRUUpIGludGVyYWN0cyB3aXRoIHRoZSBNTUQgcmVnaXN0ZXIgd3JpdGVzLCBhcyB0aGlzIGludGVyYWN0aW9uIG1heSBiZSBpbXBvcnRhbnQgZm9yIGRlYnVnLiBMZXQmIzM5O3MgZGlnIGludG8gYHBoeV9ldGh0b29sX3NldF9lZWVgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9ldGh0b29sX3NldF9lZWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHkuYz0xOTUyPUVYUE9SVF9TWU1CT0wocGh5X2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5NTQtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTk1NTogKiBwaHlfZXRodG9vbF9zZXRfZWVlX25vbmVnIC0gQWRqdXN0cyBNQUMgTFBJIGNvbmZpZ3VyYXRpb24gd2l0aG91dCBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTU2LSAqXHRcdFx0ICAgICAgIHJlbmVnb3RpYXRpb25cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTk2Ny0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxOTY4OnN0YXRpYyB2b2lkIHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTY5LVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGVlZV9jb25maWcgKm9sZF9jZmcpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5ODktLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTk5MDogKiBwaHlfZXRodG9vbF9zZXRfZWVlIC0gc2V0IEVFRSBzdXBwb3J0ZWQgYW5kIHN0YXR1c1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5OTEtICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5OTUtICovXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTk5NjppbnQgcGh5X2V0aHRvb2xfc2V0X2VlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5OTcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDEwLVx0aWYgKHJldCA9PSAwKVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjIwMTE6XHRcdHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcocGh5ZGV2LCBcdTAwMjZvbGRfY2ZnKTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDEyLVx0ZWxzZSBpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDE4LX1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoyMDE5OkVYUE9SVF9TWU1CT0wocGh5X2V0aHRvb2xfc2V0X2VlZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMjAyMC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMzMjI9aW50IHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZWVlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzM0Mi1cdFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkX2xwaSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzNDM6XHRcdHJldCA9IHBoeV9ldGh0b29sX3NldF9lZWUocGwtXHUwMDNlcGh5ZGV2LCBlZWUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzQ0LVx0XHRpZiAocmV0ID09IDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMjc1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gcGh5X2V0aHRvb2xfc2V0X2VlZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBwaHlfZXRodG9vbF9zZXRfZWVlYCBpbiBgcGh5LmNgLiBTdHJhaWdodCBhd2F5LCBJJiMzOTttIGVudmlzaW9uaW5nIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJdCYjMzk7cyB0aGUgRUVFIChFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0KSBzZXR0aW5nIGZ1bmN0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIGhvdyB3ZSYjMzk7cmUgY29udHJvbGxpbmcgdGhlIHBvd2VyLXNhdmluZyBiZWhhdmlvciBvZiB0aGUgUEhZLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljIFBIWSByZWdpc3RlcnMgaW52b2x2ZWQgaW4gRUVFIG5lZ290aWF0aW9uIGFuZCBvcGVyYXRpb24uCgpJJiMzOTttIHByb2JhYmx5IGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGZ1bmN0aW9uJiMzOTtzIGNhbGwgZmxvdyB0byBzZWUgaG93IHRoZSBhcmd1bWVudHMgYXJlIGhhbmRsZWQgYW5kIGlmIHRoZXJlJiMzOTtzIGFueSBjcml0aWNhbCB2YWxpZGF0aW9uLiBJJiMzOTttIGtlZW4gdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBnZW5lcmljIFBIWSBkcml2ZXIgZnJhbWV3b3JrIGFuZCBhbnkgdmVuZG9yLXNwZWNpZmljIGV4dGVuc2lvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgaXQgc2V0cyB0aGUgQXV0by1NRElYIG1vZGUgYWxvbmdzaWRlIHRoZSBFRUUgY29uZmlndXJhdGlvbiwgc2luY2UgdGhlIGNvbWJpbmF0aW9uIG9mIHRob3NlIHR3byBzZXR0aW5ncyBpcyBwcmV0dHkgaW1wb3J0YW50LgoKSSBleHBlY3QgdG8gc2VlIHRoZSBmdW5jdGlvbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBNTUQgcmVnaXN0ZXJzLCBhcyB0aGF0JiMzOTtzIG9mdGVuIHdoZXJlIHRoZSBFRUUgc2V0dGluZ3MgbGl2ZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBob3cgaXQgaGFuZGxlcyB0aGUgcG90ZW50aWFsIGZvciByZXRyaWVzIG9yIGVycm9yIGhhbmRsaW5nIGR1cmluZyB0aGUgcmVnaXN0ZXIgd3JpdGVzLiBJJiMzOTttIGFsc28gY3VyaW91cyBpZiBpdCBkeW5hbWljYWxseSBhZGp1c3RzIGFueSBvdGhlciBzZXR0aW5ncyBiYXNlZCBvbiB0aGUgRUVFIGNvbmZpZ3VyYXRpb24sIGxpa2UgbGluayBzcGVlZCBvciBkdXBsZXguIEl0JiMzOTtzIGFsc28gd29ydGggbG9va2luZyBmb3IgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IFBIWSByZXZpc2lvbnMgb3IgdmVuZG9yLXNwZWNpZmljIEVFRSBmZWF0dXJlcy4gSSYjMzk7bGwgaGF2ZSB0byBzZWUgaWYgdGhlIGRyaXZlciBjb3JyZWN0bHkgaGFuZGxlcyBzaXR1YXRpb25zIHdoZXJlIHRoZSBQSFkgbWlnaHQgbm90IHN1cHBvcnQgRUVFLCBhbmQgYWxzbyBob3cgaXQgcmVwb3J0cyB0aGUgc2V0dGluZyBiYWNrIHRvIHRoZSB1c2VyIHNwYWNlLgoKQmFzaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlLCBmcm9tIHVzZXItc3BhY2UgcmVxdWVzdCB0byBQSFkgcmVnaXN0ZXIgd3JpdGVzLCBzbyBJIGNhbiBlbnN1cmUgaXQmIzM5O3MgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLCBhbmQgZWZmaWNpZW50bHkgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5OTYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTk5NjpcdGludCBwaHlfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXG4xOTk3Olx0e1xuMTk5ODpcdFx0c3RydWN0IGVlZV9jb25maWcgb2xkX2NmZztcbjE5OTk6XHRcdGludCByZXQ7XG4yMDAwOlx0XG4yMDAxOlx0XHRpZiAoIXBoeWRldi1cdTAwM2VkcnYpXG4yMDAyOlx0XHRcdHJldHVybiAtRUlPO1xuMjAwMzpcdFxuMjAwNDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbG9jayk7XG4yMDA1Olx0XG4yMDA2Olx0XHRvbGRfY2ZnID0gcGh5ZGV2LVx1MDAzZWVlZV9jZmc7XG4yMDA3Olx0XHRlZWVfdG9fZWVlY2ZnKFx1MDAyNnBoeWRldi1cdTAwM2VlZWVfY2ZnLCBkYXRhKTtcbjIwMDg6XHRcbjIwMDk6XHRcdHJldCA9IGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKHBoeWRldiwgZGF0YSk7XG4yMDEwOlx0XHRpZiAocmV0ID09IDApXG4yMDExOlx0XHRcdHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcocGh5ZGV2LCBcdTAwMjZvbGRfY2ZnKTtcbjIwMTI6XHRcdGVsc2UgaWYgKHJldCBcdTAwM2MgMClcbjIwMTM6XHRcdFx0cGh5ZGV2LVx1MDAzZWVlZV9jZmcgPSBvbGRfY2ZnO1xuMjAxNDpcdFxuMjAxNTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2Vsb2NrKTtcbjIwMTY6XHRcbjIwMTc6XHRcdHJldHVybiByZXQgXHUwMDNjIDAgPyByZXQgOiAwO1xuMjAxODpcdH1cbjIwMTk6XHRFWFBPUlRfU1lNQk9MKHBoeV9ldGh0b29sX3NldF9lZWUpO1xuMjAyMDpcdFxuMjAyMTpcdC8qKlxuMjAyMjpcdCAqIHBoeV9ldGh0b29sX3NldF93b2wgLSBDb25maWd1cmUgV2FrZSBPbiBMQU5cbjIwMjM6XHQgKlxuMjAyNDpcdCAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuMjAyNTpcdCAqIEB3b2w6IENvbmZpZ3VyYXRpb24gcmVxdWVzdGVkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTYxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZWAgRnVuY3Rpb24qKgoKT2theSwgc28gYGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlYCBoYXMgYmVlbiBpbnZva2VkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIEdpdmVuIHRoZSBuYW1lLCBJJiMzOTttIGJldHRpbmcgaXQgcmVsYXRlcyB0byBzZXR0aW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgcGFyYW1ldGVycywgYW5kIHRoZSAmIzM0O2dlbnBoeV9jNDUmIzM0OyBwcmVmaXggc3VnZ2VzdHMgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgZ2VuZXJpYyBQSFksIHNwZWNpZmljYWxseSBvbmUgdGhhdCYjMzk7cyBtYW5hZ2VkIHRocm91Z2ggdGhlIENsYXVzZSA0NSAob3IgTURJTykgaW50ZXJmYWNlLCBsaWtlbHkgdmlhIGEgc3RhbmRhcmRpemVkIHJlZ2lzdGVyIHNldC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lOgoKKiAgIFdoYXQgc3BlY2lmaWMgRUVFIHBhcmFtZXRlcnMgaXMgaXQgZGVzaWduZWQgdG8gbW9kaWZ5PyBJcyBpdCBjb250cm9sbGluZyB0aGUgYWR2ZXJ0aXNlZCBjYXBhYmlsaXRpZXMsIHRoZSBvcGVyYXRpb25hbCBzZXR0aW5ncywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/CiogICBIb3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlPyBEb2VzIGl0IGRpcmVjdGx5IHdyaXRlIHRvIHRoZSBQSFkgcmVnaXN0ZXJzLCBvciBkb2VzIGl0IHV0aWxpemUgc29tZSBhYnN0cmFjdGlvbiBsYXllciBvciBoZWxwZXIgZnVuY3Rpb25zPwoqICAgV2hhdCYjMzk7cyB0aGUgb3ZlcmFsbCBjb250ZXh0PyBJcyB0aGlzIGNhbGxlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uLCBsaW5rIGNvbmZpZ3VyYXRpb24sIG9yIGFzIGEgcmVzcG9uc2UgdG8gYW4gYGV0aHRvb2xgIGNvbW1hbmQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgY3J1Y2lhbC4KKiAgIEFyZSB0aGVyZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIFBIWSBtb2RlbCBvciBjYXBhYmlsaXRpZXM/IERvZXMgaXQgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBjZXJ0YWluIHJlZ2lzdGVycyBvciBmZWF0dXJlcz8gSSBuZWVkIHRvIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZm9yIGhhcmR3YXJlLXNwZWNpZmljIGhhbmRsaW5nLgoqICAgV2hhdCBlcnJvciBoYW5kbGluZyBpcyBwcmVzZW50PyBBcmUgdGhlcmUgY2hlY2tzIGZvciBpbnZhbGlkIGlucHV0IG9yIGNvbW11bmljYXRpb24gZmFpbHVyZXMgd2l0aCB0aGUgUEhZPwoKSSYjMzk7bGwgc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb24mIzM5O3MgZXhlY3V0aW9uIHBhdGggYW5kIGNhcmVmdWxseSBleGFtaW5lIHRoZSByZWdpc3RlciBhY2Nlc3Nlcy4gSSYjMzk7bGwgbmVlZCB0byBjb3JyZWxhdGUgdGhlc2Ugd2l0aCB0aGUgQ2xhdXNlIDQ1IHNwZWNpZmljYXRpb25zIHRvIGRldGVybWluZSB0aGUgZXhhY3QgaW1wYWN0IG9uIHRoZSBQSFkmIzM5O3MgRUVFIGJlaGF2aW9yLiBBbnkgdXNlIG9mIG1hc2tzIG9yIGJpdGZpZWxkcyB3aWxsIGJlIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QuIEkgd2FudCB0byBzZWUgaG93IGl0IGhhbmRsZXMgdGhpbmdzIGxpa2UgdGhlIExQSSAoTG93IFBvd2VyIElkbGUpIHRpbWVycyBhbmQgb3RoZXIgRUVFLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEJhc2ljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0JiMzOTtzIGRvaW5nIHRoZSByaWdodCB0aGluZywgaW4gdGhlIHJpZ2h0IHdheSwgYW5kIHVuZGVyIHRoZSByaWdodCBjb25kaXRpb25zLCB3aXRob3V0IHVuaW50ZW50aW9uYWxseSBicmVha2luZyBhbnl0aGluZyBlbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYz0xNjU3PUVYUE9SVF9TWU1CT0woZ2VucGh5X2M0NV9ldGh0b29sX2dldF9lZWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY1OS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTY2MDogKiBnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZSAtIHNldCBFRUUgc3VwcG9ydGVkIGFuZCBzdGF0dXNcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY2MS0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2NzEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE2NzI6aW50IGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2NzMtXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNzA4LX1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTcwOTpFWFBPUlRfU1lNQk9MKGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTcxMC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MTk5Nj1pbnQgcGh5X2V0aHRvb2xfc2V0X2VlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDA4LVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjIwMDk6XHRyZXQgPSBnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZShwaHlkZXYsIGRhdGEpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTIwMTAtXHRpZiAocmV0ID09IDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTE0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWVgIGZ1bmN0aW9uLgoKKipBbmFseXppbmcgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUqKgoKUmlnaHQsIHNvIHRoaXMgZnVuY3Rpb24gaXMgY2xlYXJseSBhYm91dCBzZXR0aW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgcGFyYW1ldGVycyBmb3IgYSBnZW5lcmljIFBIWSB0aGF0JiMzOTtzIHVzaW5nIHRoZSBDbGF1c2UgNDUgKEM0NSkgcmVnaXN0ZXIgaW50ZXJmYWNlLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgY29tbW9uIFBIWSwgd2hpY2ggbWVhbnMgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGEgYnJvYWRlciBkcml2ZXIsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuCgpGaXJzdCwgSSBuZWVkIHRvIHNlZSBpZiBpdCBoYW5kbGVzIHRoZSBjb25maWd1cmF0aW9uIG9mIEVFRSBiYXNlZCBvbiB3aGF0JiMzOTtzIHBhc3NlZCBpbiBmcm9tIGV0aHRvb2wuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgcmVxdWlyZWQgb24gdGhlIGhhcmR3YXJlIHNpZGUgYW5kIGhvdyB0aGUgZHJpdmVyIHRyYW5zbGF0ZXMgdGhlIHVzZXImIzM5O3MgaW50ZW50aW9uIChlbmFibGUsIGRpc2FibGUsIHNwZWNpZmljIHNldHRpbmdzKSBpbnRvIGFjdHVhbCByZWdpc3RlciB3cml0ZXMuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl0IHVzZXMgc29tZSBzb3J0IG9mIGhlbHBlciBmdW5jdGlvbnMgb3Igc3RydWN0dXJlcyB0byBhYnN0cmFjdCB0aGUgQzQ1IHJlZ2lzdGVyIGFjY2Vzcywgb3IgaWYgaXQgaGFzIHRvIGRpcmVjdGx5IG1hbmlwdWxhdGUgdGhlIHJlZ2lzdGVycy4gSSYjMzk7bGwgbmVlZCB0byBhc3Nlc3MgaG93IGl0IGRlYWxzIHdpdGggcG90ZW50aWFsIGVycm9ycywgYW5kIHdoYXQgdGhlIGZsb3cgaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIFBIWSBzZXR0aW5ncy4KCkdpdmVuIHRoYXQgaXQmIzM5O3MgYGdlbnBoeWAsIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgZmFpcmx5IGdlbmVyaWMsIGFuZCBJJiMzOTtkIGV4cGVjdCBpdCB0byBoYW5kbGUgdGhlIGJpdC1maWRkbGluZyBmb3IgdGhlIHJlbGV2YW50IEM0NSByZWdpc3RlcnMgY29ycmVjdGx5LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGRlYWxzIHdpdGggYWxsIHRoZSBjb3JuZXIgY2FzZXMgcHJvcGVybHksIGVzcGVjaWFsbHkgaWYgdGhlIGRldmljZSBoYXMgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIG9yIGxpbWl0YXRpb25zLiBJIGFsc28gd2FudCB0byBzZWUgaG93IHRoZSBzZXR0aW5ncyBhcmUgdmVyaWZpZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHNldCB2YWx1ZXMgd29yayBhcyBleHBlY3RlZC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCBoYW5kbGVzIGFueSBzcGVjaWFsIGNhc2VzIGZvciBDNDUgUEhZcyBvciBzcGVjaWZpYyBDNDUgdmVyc2lvbnMuIEl0JiMzOTtzIGxpa2VseSBhbHNvIGxvb2tpbmcgYXQgc3RhbmRhcmQgcmVnaXN0ZXJzLCBzbyBJIGhhdmUgdG8gYmUgYWJsZSB0byBmb2xsb3cgdGhlIGZsb3cgYW5kIHNlZSBob3cgdGhpbmdzIGdldCBzZXQgdXAgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjcyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2NzI6XHRpbnQgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbjE2NzM6XHRcdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcbjE2NzQ6XHR7XG4xNjc1Olx0XHRpbnQgcmV0O1xuMTY3NjpcdFxuMTY3NzpcdFx0aWYgKGRhdGEtXHUwMDNlZWVlX2VuYWJsZWQpIHtcbjE2Nzg6XHRcdFx0dW5zaWduZWQgbG9uZyAqYWR2ID0gZGF0YS1cdTAwM2VhZHZlcnRpc2VkO1xuMTY3OTpcdFxuMTY4MDpcdFx0XHRpZiAoIWxpbmttb2RlX2VtcHR5KGFkdikpIHtcbjE2ODE6XHRcdFx0XHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyh0bXApO1xuMTY4MjpcdFxuMTY4MzpcdFx0XHRcdGlmIChsaW5rbW9kZV9hbmRub3QodG1wLCBhZHYsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWRfZWVlKSkge1xuMTY4NDpcdFx0XHRcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcJiMzNDtBdCBsZWFzdCBzb21lIEVFRSBsaW5rIG1vZGVzIGFyZSBub3Qgc3VwcG9ydGVkLlxcblwmIzM0Oyk7XG4xNjg1Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE2ODY6XHRcdFx0XHR9XG4xNjg3Olx0XG4xNjg4Olx0XHRcdFx0bGlua21vZGVfYW5kbm90KHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZ19lZWUsIGFkdixcbjE2ODk6XHRcdFx0XHRcdFx0cGh5ZGV2LVx1MDAzZWVlZV9kaXNhYmxlZF9tb2Rlcyk7XG4xNjkwOlx0XHRcdH0gZWxzZSBpZiAobGlua21vZGVfZW1wdHkocGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nX2VlZSkpIHtcbjE2OTE6XHRcdFx0XHRwaHlfYWR2ZXJ0aXNlX2VlZV9hbGwocGh5ZGV2KTtcbjE2OTI6XHRcdFx0fVxuMTY5MzpcdFx0fVxuMTY5NDpcdFxuMTY5NTpcdFx0cmV0ID0gZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcocGh5ZGV2KTtcbjE2OTY6XHRcdGlmIChyZXQgXHUwMDNlIDApIHtcbjE2OTc6XHRcdFx0cmV0ID0gcGh5X3Jlc3RhcnRfYW5lZyhwaHlkZXYpO1xuMTY5ODpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTY5OTpcdFx0XHRcdHJldHVybiByZXQ7XG4xNzAwOlx0XG4xNzAxOlx0XHRcdC8qIGV4cGxpY2l0bHkgcmV0dXJuIDEsIG90aGVyd2lzZSAocmV0IFx1MDAzZSAwKSB2YWx1ZSB3aWxsIGJlXG4xNzAyOlx0XHRcdCAqIG92ZXJ3cml0dGVuIGJ5IHBoeV9yZXN0YXJ0X2FuZWcoKS5cbjE3MDM6XHRcdFx0ICovXG4xNzA0Olx0XHRcdHJldHVybiAxO1xuMTcwNTpcdFx0fVxuMTcwNjpcdFxuMTcwNzpcdFx0cmV0dXJuIHJldDtcbjE3MDg6XHR9XG4xNzA5Olx0RVhQT1JUX1NZTUJPTChnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZSk7XG4xNzEwOlx0XG4xNzExOlx0LyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MTUzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbDogYGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnYCoqCgpBbHJpZ2h0LCBzbyB0aGUgY29kZSBmbG93IGhhcyByZWFjaGVkIGEgY2FsbCB0byBgZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWdgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbiBhbmQgZGlzc2VjdCB0aGlzIGZ1bmN0aW9uLiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIEkmIzM5O20gYWxyZWFkeSBtYWtpbmcgc29tZSBlZHVjYXRlZCBndWVzc2VzLCBidXQgbGV0JiMzOTtzIGNvbmZpcm0gdGhlbS4gVGhlIGBnZW5waHlfYCBwcmVmaXggc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyByZWxhdGVkIHRvIGdlbmVyaWMgUEhZIChwaHlzaWNhbCBsYXllcikgb3BlcmF0aW9ucy4gVGhlICYjMzQ7QzQ1JiMzNDsgcGFydCBwcm9iYWJseSBpbmRpY2F0ZXMgdGhpcyBkZWFscyB3aXRoIENsYXVzZSA0NSByZWdpc3RlcnMsIG1lYW5pbmcgdGhpcyB3aWxsIGJlIGFuIE1ESU8gYmFzZWQgZnVuY3Rpb24uICYjMzQ7QU4mIzM0OyBpcyBhIG5vIGJyYWluZXIsIG1lYW5pbmcgaXQmIzM5O3MgbGlua2VkIHRvIGF1dG8tbmVnb3RpYXRpb24sIGFuZCAmIzM0O0VFRSYjMzQ7IHBvaW50cyB0byBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0LiBMYXN0bHksIHRoZSBgYW5lZ2Agc3VmZml4LCB3ZWxsLi4uIHRoYXQgbG9va3Mgc2VsZi1leHBsYW5hdG9yeSEKClNvLCB0aGUgaHlwb3RoZXNpcyBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCBjb25maWd1cmUgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCBhdXRvLW5lZ290aWF0aW9uLCBwcm9iYWJseSB1c2luZyB0aGUgTURJTyBpbnRlcmZhY2UuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbiBhbmQgaW1wbGVtZW50YXRpb24sIG1heWJlIGV2ZW4gdGhlIGZ1bmN0aW9uJiMzOTtzIHVzYWdlLCB0byBmdWxseSBncmFzcCBpdHMgcm9sZSB3aXRoaW4gdGhlIHdpZGVyIFBIWSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gVGhpcyB3aWxsIGhvcGVmdWxseSBjbGFyaWZ5IHRoZSBzcGVjaWZpYyByZWdpc3RlcnMgYmVpbmcgYWNjZXNzZWQsIHRoZSBuZWdvdGlhdGlvbiBwcm9jZXNzIGxvZ2ljLCBhbmQgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgaXQgaGFzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlci4gSSBleHBlY3QgdG8gc2VlIHJlZ2lzdGVyIHdyaXRlcyByZWxhdGVkIHRvIGFkdmVydGlzaW5nIEVFRSBjYXBhYmlsaXRpZXMgYW5kIG1heWJlIHJlYWRpbmcgYmFjayB0aGUgcmVzdWx0cyBvZiB0aGUgYXV0by1uZWdvdGlhdGlvbiBwcm9jZXNzLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyBFRUUgaXMgZW5hYmxlZCBhbmQgY29uZmlndXJlZCBvbiB0aGlzIHBhcnRpY3VsYXIgUEhZLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9MTE0ND1pbnQgYmNtX2NvbmZpZ19scmVfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGNoYW5nZWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMTE0Ny1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjExNDg6XHRpZiAoZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcocGh5ZGV2KSBcdTAwM2UgMClcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTExNDktXHRcdGNoYW5nZWQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM9MjY5PWludCBnZW5waHlfYzQ1X2FuX2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0yNzYtXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjI3NzpcdHJldCA9IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTI3OC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYz0xMDQ4PUVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNTAtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjEwNTE6ICogZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcgLSBjb25maWd1cmUgRUVFIGFkdmVydGlzZW1lbnRcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA1Mi0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA1My0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTA1NDppbnQgZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA1NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xMDcxLX1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTA3MjpFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNzMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYz0xNjcyPWludCBnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY5NC1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTY5NTpcdHJldCA9IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2OTYtXHRpZiAocmV0IFx1MDAzZSAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0yMzA5PWludCBfX2dlbnBoeV9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGNoYW5nZWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yMzE1LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoyMzE2Olx0ZXJyID0gZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjMxNy1cdGlmIChlcnIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NDIwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZ2AuCgoqKkRpdmluZyBpbnRvIGBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZ2AqKgoKQWxyaWdodCwgSSBzZWUgdGhpcyBpcyBhIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gY29uZmlndXJpbmcgYW5kIGhhbmRsaW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgYW5kIEF1dG8tTmVnb3RpYXRpb24gKEFOKSB1c2luZyBhIEM0NSBQSFkgaW50ZXJmYWNlLiBNeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBpbnZvbHZlIG1hbmlwdWxhdGluZyBzcGVjaWZpYyByZWdpc3RlcnMgd2l0aGluIHRoZSBQSFkgdG8gZW5hYmxlLCBkaXNhYmxlLCBhbmQgYWRqdXN0IEVFRSBzZXR0aW5ncywgbGlrZWx5IGluIGNvbmp1bmN0aW9uIHdpdGggQU4gc3RhdGVzLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgbG9naWMgZm9yIGFkdmVydGlzZW1lbnQgb2YgRUVFIGNhcGFiaWxpdGllcyBkdXJpbmcgQU4sIGFzIHdlbGwgYXMgdGhlIGFjdHVhbCBzd2l0Y2hpbmcgb2YgdGhlIFBIWSBpbnRvIGFuZCBvdXQgb2YgRUVFIG1vZGVzIGJhc2VkIG9uIHRoZSBsaW5rIHBhcnRuZXImIzM5O3MgcmVzcG9uc2VzLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGhhbmRsaW5nIG9mIGRpZmZlcmVudCBFRUUgZmxhdm9ycyAoaWYgYXBwbGljYWJsZSwgd2hpY2ggSSBzdXNwZWN0IGl0IGlzKSwgbGlrZSBMUEkgKExvdyBQb3dlciBJZGxlKSBhbmQgbWF5YmUgb3RoZXIgcG93ZXItc2F2aW5nIG1lY2hhbmlzbXMuIFRoZSBDNDUgaW50ZXJmYWNlIHN1Z2dlc3RzIHRoaXMgaXMgYSByZWxhdGl2ZWx5IG1vZGVybiBQSFksIGxpa2VseSB3aXRoIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGFuIGFuIG9sZGVyLCBzaW1wbGVyIGludGVyZmFjZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igcm9idXN0IGVycm9yIGhhbmRsaW5nLCBhcyBFRUUgY2FuIGJlIHNlbnNpdGl2ZSB0byB0aW1pbmcgYW5kIG1pc2NvbmZpZ3VyYXRpb24uIEkmIzM5O20gYWxzbyBob3BpbmcgZm9yIHNvbWUgY2xlYXIgc3RhdGUgbWFjaGluZSBsb2dpYyB3aXRoaW4gdGhpcyBmdW5jdGlvbiwgbWFraW5nIGl0IGVhc2llciB0byBmb2xsb3cgdGhlIHRyYW5zaXRpb25zIGJldHdlZW4gQU4gYW5kIEVFRSBzdGF0ZXMuIEkmIzM5O2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcywgZXNwZWNpYWxseSBpZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gYSBtdWx0aS10aHJlYWRlZCBlbnZpcm9ubWVudC4gVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gc2VlIGhvdyB0aGlzIGltcGxlbWVudGF0aW9uIGVuc3VyZXMgb3B0aW1hbCBwb3dlciBzYXZpbmdzIHdoaWxlIG1haW50YWluaW5nIGEgcmVsaWFibGUgbmV0d29yayBjb25uZWN0aW9uLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBkb25lLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwNTQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA1NDpcdGludCBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTA1NTpcdHtcbjEwNTY6XHRcdC8qIFdyaXRpbmcgTU1EIEFOIGFkdmVydGlzZW1lbnRzIHdoaWxlIGF1dG9uZWcgaXMgZGlzYWJsZWQgaGFzIG5vXG4xMDU3Olx0XHQgKiBlZmZlY3Qgb24gbGluay1wYXJ0bmVyIG5lZ290aWF0aW9uLCBidXQgb24gc29tZSBQSFlzIChlLmcuIHRoZVxuMTA1ODpcdFx0ICogQnJvYWRjb20gQkNNNTQyMTNQRSkgdGhlIHdyaXRlIGl0c2VsZiBkaXN0dXJicyB0aGUgcmVjZWl2ZVxuMTA1OTpcdFx0ICogZGF0YXBhdGguIFNraXAgaXQuXG4xMDYwOlx0XHQgKi9cbjEwNjE6XHRcdGlmIChwaHlkZXYtXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXG4xMDYyOlx0XHRcdHJldHVybiAwO1xuMTA2MzpcdFxuMTA2NDpcdFx0aWYgKCFwaHlkZXYtXHUwMDNlZWVlX2NmZy5lZWVfZW5hYmxlZCkge1xuMTA2NTpcdFx0XHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhhZHYpID0ge307XG4xMDY2Olx0XG4xMDY3Olx0XHRcdHJldHVybiBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYocGh5ZGV2LCBhZHYpO1xuMTA2ODpcdFx0fVxuMTA2OTpcdFxuMTA3MDpcdFx0cmV0dXJuIGdlbnBoeV9jNDVfd3JpdGVfZWVlX2FkdihwaHlkZXYsIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZ19lZWUpO1xuMTA3MTpcdH1cbjEwNzI6XHRFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyk7XG4xMDczOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MTg0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEVFRSBBZHZlcnRpc2VtZW50IFdyaXRlIENhbGwqKgoKT2theSwgSSBzZWUgdGhlIGNvZGUgaXMgY2FsbGluZyBgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2YC4gUmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiB0aGF0IGZ1bmN0aW9uIGNhbGwuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBnZW5waHlgIHByZWZpeC4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGdlbmVyaWMgUEhZIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHRoZSBDNDUgaW50ZXJmYWNlLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgaGFuZGxpbmcgdGhlIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgYWR2ZXJ0aXNlbWVudCByZWdpc3RlciB3cml0ZSBvcGVyYXRpb24uIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCBgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2YCBkb2VzLiBXaGF0IHBhcmFtZXRlcnMgaXMgaXQgdGFraW5nPyBXaGF0IHJlZ2lzdGVyIGFkZHJlc3NlcyBpcyBpdCB3cml0aW5nIHRvLCBhbmQgd2hhdCBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdOKAmXMgY29ycmVjdGx5IGZvcm1pbmcgdGhlIEVFRSBhZHZlcnRpc2VtZW50IGZyYW1lLCBlbnN1cmluZyB0aGUgcHJvcGVyIGJpdCBmaWVsZHMgYXJlIHNldCBhY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkIGFuZCB0aGUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciB0aGlzIHNwZWNpZmljIFBIWS4gSXMgdGhlcmUgYW55IHJlZ2lzdGVyIG1hc2tpbmcgaW52b2x2ZWQ/IEkgbmVlZCB0byBjaGVjayBmb3IgcG90ZW50aWFsIGVycm9yIGhhbmRsaW5nIGFuZCBpZiBpdCYjMzk7cyByZXR1cm5pbmcgYW55IHJlbGV2YW50IHN0YXR1cyBjb2Rlcy4gRmluYWxseSwgSeKAmWxsIG5lZWQgdG8gY3Jvc3MtcmVmZXJlbmNlIHRoaXMgd2l0aCB0aGUgcmVsZXZhbnQgUEhZIGRhdGFzaGVldCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2VucGh5X2M0NV93cml0ZV9lZWVfYWR2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTc5MT1FWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X3JlYWRfbWRpeCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy03OTMtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjc5NDogKiBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYgLSB3cml0ZSBhZHZlcnRpc2VkIEVFRSBsaW5rIG1vZGVzXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTc5NS0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTc5Ny0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6Nzk4OnN0YXRpYyBpbnQgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTc5OS1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nICphZHYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYz0xMDU0PWludCBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA2Ni1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTA2NzpcdFx0cmV0dXJuIGdlbnBoeV9jNDVfd3JpdGVfZWVlX2FkdihwaHlkZXYsIGFkdik7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNjgtXHR9XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNjktXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjEwNzA6XHRyZXR1cm4gZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2KHBoeWRldiwgcGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNzEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk0NgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQmIzM5O3MgZ29pbmcgdGhyb3VnaCBteSBtaW5kIGFzIEkgYXBwcm9hY2ggdGhpcyBgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2YCBmdW5jdGlvbi4KCioqQW5hbHl6aW5nIGdlbnBoeV9jNDVfd3JpdGVfZWVlX2FkdioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgYSBmZXcga2V5IHF1ZXN0aW9uczogV2hhdCYjMzk7cyB0aGUgY29udGV4dD8gV2hhdCYjMzk7cyB0aGUgbGFyZ2VyIHN5c3RlbSB0aGlzIGZ1bmN0aW9uIGZpdHMgaW50bz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0byBoYXZlIGFueSBjaGFuY2Ugb2YgZ3Jhc3BpbmcgaXRzIGlubmVyIHdvcmtpbmdzIGVmZmVjdGl2ZWx5LiBJJiMzOTttIGFzc3VtaW5nLCBnaXZlbiB0aGUgbmFtZSwgaXQgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBnZW5lcmF0aW9uIG9mIFBIWSBjb250cm9sIHNpZ25hbHMsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgYWR2ZXJ0aXNlbWVudCBvdmVyIGEgQzQ1IGludGVyZmFjZSwgbGlrZWx5IHRvIGEgUEhZIGRldmljZS4KCk5leHQsIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBQSFkgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZnVuY3Rpb25zLCBsaWtlIHRob3NlIHJlbGF0ZWQgdG8gcmVnaXN0ZXIgYWNjZXNzIChwcm9iYWJseSB1c2luZyBhbiBNRElPIGludGVyZmFjZSB2aWEgdGhlIEM0NSBjbGF1c2UpLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyB3cml0ZSBpcyBwYXJ0IG9mIGEgbGFyZ2VyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCBhIGR5bmFtaWMgY29uZmlndXJhdGlvbiBwcm9jZWR1cmUsIG9yIHBlcmhhcHMgYSByZXNwb25zZSB0byBzb21lIGV4dGVybmFsIGV2ZW50IG9yIHN0YXR1cyBjaGFuZ2UuCgpJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2UgcmVnaXN0ZXIgYWRkcmVzcyBkZWZpbml0aW9ucywgYml0ZmllbGQgbWFuaXB1bGF0aW9ucywgYW5kIHBlcmhhcHMgc29tZSBlcnJvciBjaGVja2luZy4gVGhlIHdheSB0aGUgRUVFIGFkdmVydGlzZW1lbnQgaXMgc3RydWN0dXJlZCBpbiB0aGUgQzQ1IHNwYWNlIGlzIHNvbWV0aGluZyBJJiMzOTtsbCB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCDigJMgZG9lcyBpdCB1c2UgYSBkZWZpbmVkIHNldCBvZiByZWdpc3RlcnMsIG9yIGFyZSB3ZSB3b3JraW5nIHdpdGggdmVuZG9yLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zPyBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgYnV0IEkmIzM5O3ZlIHNlZW4gZW5vdWdoIHZlbmRvciBxdWlya3MuCgpJ4oCZbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgZXJyb3IgY29uZGl0aW9ucyBhbmQgaG93IHRoZXkmIzM5O3JlIGhhbmRsZWQuIElmIGl0IGlzIGVycm9yIGhhbmRsaW5nLCBhcmUgdGhlcmUgYW55IHJldHJ5IG1lY2hhbmlzbXMsIG9yIGRvZXMgaXQgc2ltcGx5IHJldHVybiBhbiBlcnJvciBjb2RlPyBBIHdlbGwtd3JpdHRlbiBQSFkgZHJpdmVyIHVzdWFsbHkgaW5jbHVkZXMgc29tZSByZXNpbGllbmNlLgoKRmluYWxseSwgYSBxdWljayBnbGFuY2UgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgbWlnaHQgYmUgbmVlZGVkIHRvIHNlZSBpZiBpdCBtYWtlcyBjYWxscyB0byBhbnkgbG9nZ2luZyBvciBkZWJ1ZyBmYWNpbGl0aWVzLiBUaGlzIGNhbiBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kIGluIGEgZGVidWdnaW5nIHNpdHVhdGlvbi4gUmlnaHQgbm93LCBJIHdpbGwgc3RhcnQgdG8gZGlzc2VjdCB0aGUgY29kZSBhbmQgYnVpbGQgYSBtZW50YWwgbW9kZWwgb2YgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCB0aGUgc29mdHdhcmUgZHJpdmVyLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O20gcmVhZHkgdG8gZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc5OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzk4Olx0c3RhdGljIGludCBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiA3OTk6XHRcdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nICphZHYpXG4gODAwOlx0e1xuIDgwMTpcdFx0aW50IHZhbCwgY2hhbmdlZCA9IDA7XG4gODAyOlx0XG4gODAzOlx0XHRpZiAobGlua21vZGVfaW50ZXJzZWN0cyhwaHlkZXYtXHUwMDNlc3VwcG9ydGVkX2VlZSwgUEhZX0VFRV9DQVAxX0ZFQVRVUkVTKSkge1xuIDgwNDpcdFx0XHR2YWwgPSBsaW5rbW9kZV90b19taWlfZWVlX2NhcDFfdChhZHYpO1xuIDgwNTpcdFxuIDgwNjpcdFx0XHQvKiBJRUVFIDgwMi4zLTIwMTggNDUuMi43LjEzIEVFRSBhZHZlcnRpc2VtZW50IDFcbiA4MDc6XHRcdFx0ICogKFJlZ2lzdGVyIDcuNjApXG4gODA4Olx0XHRcdCAqL1xuIDgwOTpcdFx0XHR2YWwgPSBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfQU4sXG4gODEwOlx0XHRcdFx0XHRcdCAgICAgTURJT19BTl9FRUVfQURWLFxuIDgxMTpcdFx0XHRcdFx0XHQgICAgIE1ESU9fRUVFXzEwMFRYIHwgTURJT19FRUVfMTAwMFQgfFxuIDgxMjpcdFx0XHRcdFx0XHQgICAgIE1ESU9fRUVFXzEwR1QgfCBNRElPX0VFRV8xMDAwS1ggfFxuIDgxMzpcdFx0XHRcdFx0XHQgICAgIE1ESU9fRUVFXzEwR0tYNCB8IE1ESU9fRUVFXzEwR0tSLFxuIDgxNDpcdFx0XHRcdFx0XHQgICAgIHZhbCk7XG4gODE1Olx0XHRcdGlmICh2YWwgXHUwMDNjIDApXG4gODE2Olx0XHRcdFx0cmV0dXJuIHZhbDtcbiA4MTc6XHRcdFx0aWYgKHZhbCBcdTAwM2UgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk4NTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHdlbnQgbGlrZSB0aGlzOiB0aGUgY29kZSBwYXRoIGludm9sdmVzIGBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkYCwgd2hpY2ggaXMgYSB3cmFwcGVyIGNhbGxpbmcgYm90aCBgcGh5X3JlYWRfbW1kYCBhbmQgYHBoeV93cml0ZV9tbWRgLiBUaGUgYHBoeV93cml0ZV9tbWRgIGZ1bmN0aW9uIHRoZW4gdWx0aW1hdGVseSBjYWxscyBgcGh5ZGV2LSZndDtkcnYtJmd0O3dyaXRlX21tZGAuIFNvLCBsb2dpY2FsbHksIGBydGxnZW5fd3JpdGVfbW1kYCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb24gdGhhdCYjMzk7cyBiZWluZyBpbnZva2VkIHNvbWV3aGVyZSBkb3duIHRoZSBsaW5lLCBhcyBpdCBpcyByZWxhdGVkIHRvIHRoaXMgcGh5IGRyaXZlci4KCk5vdywgdGhlIHBhdGNoIGl0c2VsZi4gSSBzZWUgYSBjb25kaXRpb25hbCBibG9jazogV2hlbiBgZGV2bnVtYCBpcyBgTURJT19NTURfVkVORDJgLCB0aGUgcGF0Y2ggY2FsbHMgYHJ0bGdlbl93cml0ZV92ZW5kMmAgd2hpY2ggaXMgdGhlIGNvcnJlY3QgYmVoYXZpb3IuIE5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlICYjMzQ7ZWxzZSBpZiYjMzQ7IHN0YXRlbWVudC4KClRoZSBjcnVjaWFsIGNoYW5nZSBpcyBoZXJlLCB3aXRoaW4gdGhlIGBNRElPX01NRF9BTmAgYW5kIGBNRElPX0FOX0VFRV9BRFZgIGNvbmRpdGlvbi4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHBhc3NpbmcgYHJlZ251bWAgKHdoaWNoIGlzIGBNRElPX0FOX0VFRV9BRFZgLCBvciA2MCBJSVJDKSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LCBhbmQgYFJUTF9NRElPX0FOX0VFRV9BRFZgIChhIGNvbnN0YW50IHZhbHVlKSBhcyB0aGUgdGhpcmQgYXJndW1lbnQgdG8gYHJ0bGdlbl93cml0ZV92ZW5kMmAuCgpIb3dldmVyLCBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCBjbGVhcmx5IGV4cGVjdHMgYHJlZ251bWAgYW5kIGB2YWxgIGFzIGl0cyBzZWNvbmQgYW5kIHRoaXJkIGFyZ3VtZW50LiBUaGVyZWZvcmUsIHRoZSBvbGQgY29kZSB3YXMgbWlzdGFrZW5seSB3cml0aW5nIHRoZSBjb25zdGFudCBgUlRMX01ESU9fQU5fRUVFX0FEVmAgdG8gdGhlIHJlZ2lzdGVyIGFkZHJlc3MgYE1ESU9fQU5fRUVFX0FEVmAgKDYwKSwgd2hpY2ggZG9lc24mIzM5O3Qgc2VlbSByaWdodC4gVGhlIHBhdGNoIG5vdyBzd2FwcyB0aGVzZSB0d28gYXJndW1lbnRzLCBwYXNzaW5nIGB2YWxgIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgYW5kIGB2YWxgIGFzIHRoZSB0aGlyZCBhcmd1bWVudCB0byB0aGUgZnVuY3Rpb24uIFRoaXMgaXMgbW9yZSBpbiBsaW5lIHdpdGggd2hhdCBJJiMzOTtkIGV4cGVjdC4gTm93IGl0JiMzOTtzIHdyaXRpbmcgYHZhbGAgKHRoZSB2YWx1ZSB3ZSB3YW50IHRvIHNldCkgdG8gYFJUTF9NRElPX0FOX0VFRV9BRFZgLiBUaGF0JiMzOTtzIGEgdmVuZG9yLXNwZWNpZmljIHJlZ2lzdGVyLCBsaWtlbHkgcmVsYXRlZCB0byBFRUUgKEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQpIGFkdmVydGlzZW1lbnQuIE5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSB2YWx1ZSBvZiBgUlRMX01ESU9fQU5fRUVFX0FEVmAgdG8gY29uZmlybSBteSBzdXNwaWNpb24uLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMX01ESU9fQU5fRUVFX0FEViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNDMtI2RlZmluZVx0UlRMX01ESU9fUENTX0VFRV9BQkxFXHRcdFx0MHhhNWM0XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNDQ6I2RlZmluZVx0UlRMX01ESU9fQU5fRUVFX0FEVlx0XHRcdDB4YTVkMFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjQ1LSNkZWZpbmVcdFJUTF9NRElPX0FOX0VFRV9MUEFCTEVcdFx0XHQweGE1ZDJcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNDktI2RlZmluZVx0UlRMX01ESU9fQU5fRUVFX0xQQUJMRTJcdFx0XHQweGE2ZDBcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI1MDojZGVmaW5lXHRSVExfTURJT19BTl9FRUVfQURWMlx0XHRcdDB4YTZkNFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjUxLSNkZWZpbmVcdFJUTF9NRElPX1BDU19FRUVfQUJMRTJcdFx0XHQweGE2ZWNcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzQ1PXN0YXRpYyBpbnQgcnRsZ2VuX3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc1My1cdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcdTAwMjZcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3NTQ6XHRcdHJldCA9IHJ0bGdlbl9yZWFkX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEVik7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzU1LVx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfTFBBQkxFKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3NjM9c3RhdGljIGludCBydGxnZW5fd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc3MC1cdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcdTAwMjZcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3NzE6XHRcdHJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzcyLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3Nzg9c3RhdGljIGludCBydGw4MjJ4X3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc4Ny1cdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcdTAwMjZcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVjIpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzg4Olx0XHRyZXQgPSBydGxnZW5fcmVhZF92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYyKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3ODktXHRlbHNlIGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9MUEFCTEUyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3OTU9c3RhdGljIGludCBydGw4MjJ4X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE4MDMtXHRpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWMilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE4MDQ6XHRcdHJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYyLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE3NjkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRnVuY3Rpb25hbCBDaGFuZ2UgaW4gdGhlIFJlYWx0ZWsgUEhZIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBSZWFsdGVrIFBIWSBkcml2ZXIgY2hhbmdlLiBUaGUgY3J1eCBvZiBpdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHdyaXRpbmcgYSBzcGVjaWZpYyB2YWx1ZSwgYDB4YTVkMGAsIHRvIGEgcmVnaXN0ZXIuIFByZXZpb3VzbHksIHRoZSBjb2RlIHdhcyBleHBsaWNpdGx5IHdyaXRpbmcgdGhpcyB2YWx1ZSB0byByZWdpc3RlciA2MCAoYE1ESU9fQU5fRUVFX0FEVmApLiBOb3csIGhvd2V2ZXIsIHRoZSBuZXcgY29kZSBpcyB3cml0aW5nIGB2YWxgIHRvIHJlZ2lzdGVyIGAweGE1ZDBgIGRpcmVjdGx5LiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBpdCYjMzk7cyBubyBsb25nZXIgYSBoYXJkY29kZWQgdmFsdWUuCgpUaGlzIGNoYW5nZSBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZS4gSSBjYW4gZ2V0IHRvIGl0IHRocm91Z2ggdGhlIGBTSU9DU01JSVJFR2AgaW9jdGwgaWYgSSYjMzk7bSB1c2luZyBDNDUgTURJTyBhY2Nlc3MgdG8gd3JpdGUgdG8gYE1ESU9fTU1EX0FOYCBhbmQgYE1ESU9fQU5fRUVFX0FEVmAuIE9yLCBJIGNhbiByZWFjaCBpdCB0aHJvdWdoIGBFVEhUT09MX1NFRUVgLCB3aGljaCB0aGVuIGNhbGxzIGEgd2hvbGUgY2hhaW4gb2YgZnVuY3Rpb25zOiBgcGh5X2V0aHRvb2xfc2V0X2VlZWAgLSZndDsgYGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlYCAtJmd0OyBgZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWdgIC0mZ3Q7IGBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZgIC0mZ3Q7IGBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkYCAtJmd0OyBgcGh5X3dyaXRlX21tZGAgLSZndDsgYHJ0bGdlbl93cml0ZV9tbWRgLgoKVGhlIGJpZyBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8gQWJzb2x1dGVseSwgeWVzISBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIHRoYXQgYWx3YXlzIHJhaXNlcyBhIGZsYWcuCgpDYW4gSSB0cmlnZ2VyIHRoaXMgaW4gUUVNVT8gU3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIGBTSU9DU01JSVJFR2AgYW5kIGBFVEhUT09MX1NFRUVgIGFuZCBjYW4gaW5zdGFudGlhdGUgdmlydHVhbCBuZXR3b3JrIGRldmljZXMgd2l0aCBQSFlzISBJIGNvdWxkIHRyeSB1c2luZyBgdHVuYC9gdmV0aGAsIGB2aGNpYCwgb3IgZXZlbiBgbmV0ZGV2c2ltYCB0byBzZXQgaXQgdXAuIEhvbGQgb24uLi4gd2FpdCwgYG5ldGRldnNpbWAgZG9lc24mIzM5O3QgdXNlIHJlYWx0ZWsgUEhZcywgdGhhdCYjMzk7cyByaWdodC4gSG93ZXZlciwgc3l6a2FsbGVyICpjYW4qIGZ1enogTURJTyBidXNlcyBkaXJlY3RseSBhcyBsb25nIGFzIGl0IGhhcyBhIHdheSB0byByZWdpc3RlciBhIFBIWS4gSXQgbG9va3MgbGlrZSBzeXprYWxsZXIgY2FuIHRyaWdnZXIgYFNJT0NTTUlJUkVHYCBvbiAqYW55KiBuZXRkZXYuIElmIHRoZXJlJiMzOTtzIGEgUEhZIGF0dGFjaGVkLCBpdCYjMzk7bGwgcmVhY2ggdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWQuIFRvIGhpdCBgcnRsZ2VuX3dyaXRlX21tZGAgaW4gcGFydGljdWxhciwgSSBhYnNvbHV0ZWx5IG5lZWQgYSBSZWFsdGVrIFBIWSBhdHRhY2hlZC4KCkNhbiBJIGdldCBhIFJlYWx0ZWsgUEhZIGF0dGFjaGVkIHdpdGggc3l6a2FsbGVyPyBJZiBJIHVzZSBgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG9yIGlmIGEgdmlydHVhbCBkZXZpY2UgYWxsb3dzIGF0dGFjaGluZyBhcmJpdHJhcnkgUEhZcywgSSBzaG91bGQgYmUgYWJsZSB0by4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfUkVBTFRFS19QSFlgIGlzIGVuYWJsZWQuCgpSaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIGlmIGBDT05GSUdfUkVBTFRFS19QSFlgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQuIExvb2tzIGxpa2UgaXQgaXMgLSBpdCYjMzk7cyB0aGUgbW9kdWxlIGZvciBSZWFsdGVrIFBIWXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMuIExvb2tpbmcgYWdhaW4sIGBDT05GSUdfUEhZTElCYCBpcyByZXF1aXJlZCwgYnV0IHRoYXQmIzM5O3MgdXN1YWxseSBlbmFibGVkIHNvIEkgc2hvdWxkIGJlIGdvb2QuCgpMZXQmIzM5O3MgY2hlY2sgYEZvY3VzU3ltYm9sc2AgdG8gYmUgc3VyZS4gSXQgbG9va3MgbGlrZSBgcnRsZ2VuX3dyaXRlX21tZGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCwgc28gdGhhdCYjMzk7cyB0aGUgZm9jdXMgc3ltYm9sLiBgcnRsODIyeF93cml0ZV9tbWRgIGNhbGxzIGBydGxnZW5fd3JpdGVfbW1kYCwgc28gYHJ0bGdlbl93cml0ZV9tbWRgIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4KCkkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBgcnRsZ2VuX3dyaXRlX21tZGAgaW4gYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYCBqdXN0IHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzYzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3NjM6XHRzdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcbjE3NjQ6XHRcdFx0XHQgICAgdTE2IHZhbClcbjE3NjU6XHR7XG4xNzY2Olx0XHRpbnQgcmV0O1xuMTc2NzpcdFxuMTc2ODpcdFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9WRU5EMilcbjE3Njk6XHRcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCB2YWwpO1xuMTc3MDpcdFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxuMTc3MTpcdFx0XHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpO1xuMTc3MjpcdFx0ZWxzZVxuMTc3MzpcdFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbjE3NzQ6XHRcbjE3NzU6XHRcdHJldHVybiByZXQ7XG4xNzc2Olx0fVxuMTc3NzpcdFxuMTc3ODpcdHN0YXRpYyBpbnQgcnRsODIyeF9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtKVxuMTc3OTpcdHtcbjE3ODA6XHRcdGludCByZXQgPSBydGxnZW5fcmVhZF9tbWQocGh5ZGV2LCBkZXZudW0sIHJlZ251bSk7XG4xNzgxOlx0XG4xNzgyOlx0XHRpZiAocmV0ICE9IC1FT1BOT1RTVVBQKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzYyMAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBydGxnZW5fd3JpdGVfbW1kYCBGdW5jdGlvbiBmb3IgRnV6emluZyBhbmQgU3ltYm9sIFZpc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHJ0bGdlbl93cml0ZV9tbWRgIGZ1bmN0aW9uLiBJdCYjMzk7cyBtYXJrZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGluaXRpYWxseSBtYWtlcyBtZSB0aGluayBmdXp6aW5nIG1pZ2h0IGJlIHRyaWNreS4gSG93ZXZlciwgSSByZWFsaXplIHRoYXQgc3l6a2FsbGVyICpjYW4qIGFjdHVhbGx5IHJlYWNoIGl0IHRocm91Z2ggYHBoeV93cml0ZV9tbWRgLCB3aGljaCBpcyBhbiBleHBvcnRlZCBzeW1ib2wuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LgoKTm93LCBjb25zaWRlcmluZyBgRm9jdXNTeW1ib2xzYCwgSSBoYXZlIHRvIG1ha2Ugc3VyZSBgcnRsZ2VuX3dyaXRlX21tZGAgaXMgZXhwbGljaXRseSBwcm92aWRlZCwgZXNwZWNpYWxseSBpZiBpdCYjMzk7cyBub3QgaW5saW5lZC4gQW5kIEkgdGhpbmsgdGhhdCYjMzk7cyB1bmxpa2VseTsgaXQmIzM5O3MgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYHJlYWx0ZWtfZHJ2c2A6CgpgYGBjCgkJLndyaXRlX21tZAk9IHJ0bGdlbl93cml0ZV9tbWQsCmBgYAoKR2l2ZW4gaXQmIzM5O3MgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZXJlJiMzOTtzIG5vIHdheSB0aGUgY29tcGlsZXIgY2FuIGlubGluZSBpdC4gVGhhdCBjb25maXJtcyBpdCwgYHJ0bGdlbl93cml0ZV9tbWRgICppcyogYSB2YWxpZCBzeW1ib2wgdGhhdCBzaG91bGQgYmUgdmlzaWJsZS4KCkxldCYjMzk7cyBub3Qgc3RvcCB0aGVyZSwgdGhvdWdoLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIGZhbWlseS4gQWhhLCBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCBpcyBjYWxsZWQuIFRoYXQgc291bmRzIGxpa2UgYW5vdGhlciBpbnRlcmVzdGluZyBvbmUgdG8gbG9vayBhdCBhbmQgc2VlIGlmIGl0JiMzOTtzIGZ1enphYmxlIGFuZC9vciBpZiBpdCBuZWVkcyBzcGVjaWFsIGF0dGVudGlvbiBmb3Igc3ltYm9sIHZpc2liaWxpdHkgYXMgd2VsbC4gTGV0IG1lIGludmVzdGlnYXRlIGBydGxnZW5fd3JpdGVfdmVuZDJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGxnZW5fd3JpdGVfdmVuZDImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTczND1zdGF0aWMgaW50IHJ0bGdlbl9yZWFkX3ZlbmQyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTczOC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3Mzk6c3RhdGljIGludCBydGxnZW5fd3JpdGVfdmVuZDIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHJlZ251bSwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NDAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3NjM9c3RhdGljIGludCBydGxnZW5fd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc2OC1cdGlmIChkZXZudW0gPT0gTURJT19NTURfVkVORDIpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzY5Olx0XHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzcwLVx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTc3MTpcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEViwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NzItXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc5NT1zdGF0aWMgaW50IHJ0bDgyMnhfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwMy1cdGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYyKVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTgwNDpcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEVjIsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xODA1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDcxNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiB0aGUgUmVhbHRlayBQSFkgRHJpdmVyKioKCk9rYXksIHNvIGBydGxnZW5fd3JpdGVfdmVuZDJgIGlzIGFsc28gZGVjbGFyZWQgc3RhdGljLCBtYWtpbmcgaW5saW5pbmcgYSByZWFsIHBvc3NpYmlsaXR5LiBUaGF0IHRocm93cyBhIHdyZW5jaCBpbiB0aGUgd29ya3MuIEJldHRlciB0byB0YXJnZXQgYHJ0bGdlbl93cml0ZV9tbWRgIHRoZW47IGl0JiMzOTtzIGxlc3MgbGlrZWx5IHRvIGJlIG9wdGltaXplZCBhd2F5IGFuZCBtb3JlIGNsZWFybHkgcmVwcmVzZW50cyB0aGUgY29yZSBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudC4gYENPTkZJR19SRUFMVEVLX1BIWWAgaXMgdGhlIGJpZyBvbmUsIG9mIGNvdXJzZS4gQnV0IGFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyPyBSaWdodCwgYENPTkZJR19QSFlMSUJgIGlzICpyZXF1aXJlZCogYnkgYENPTkZJR19SRUFMVEVLX1BIWWAsIHRoYXQgc2VlbXMgaW1wb3J0YW50LiBUaW1lIHRvIHJldmlzaXQgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBhZ2FpbiB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSRUFMVEVLX1BIWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoyOmNvbmZpZyBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBQSFlzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZz04PWlmIFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjEwOmNvbmZpZyBSRUFMVEVLX1BIWV9IV01PTlxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7SFdNT04gc3VwcG9ydCBmb3IgUmVhbHRlayBQSFlzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjA4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgVmVyaWZpY2F0aW9uIG9mIENvbnRyb2wgRmxvdyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGZvY3VzaW5nIG9uIHRoaXMgYFJFQUxURUtfUEhZYCBkcml2ZXIgb3IgbW9kdWxlLCBzcGVjaWZpY2FsbHkuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdGhlIG9ubHkgb25lIGluIHRoZSBydW5uaW5nLiBOb3csIGJlZm9yZSBJIGp1bXAgdG8gYW55IGNvbmNsdXNpb25zLCBJIG5lZWQgdG8gdHJhY2UgdGhpcyBjb250cm9sIGZsb3cgcHJvcGVybHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zLiBIYW5nIG9uLCBpcyBgcnRsZ2VuX3dyaXRlX21tZGAgYWN0dWFsbHkgY2FsbGVkIGZyb20gYHJ0bDgyMnhfd3JpdGVfbW1kYD8gTGV0JiMzOTtzIGNoZWNrIGl0LCBxdWlja2x5LiBBaGEhIFllcywgZ29vZC4gYHJ0bDgyMnhfd3JpdGVfbW1kYCBkb2VzIGluZGVlZCBjYWxsIGBydGxnZW5fd3JpdGVfbW1kYC4gT2theSwgdGhhdCYjMzk7cyBjcnVjaWFsLiBOb3csIHNpbmNlIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHJlbGF0aW9uc2hpcCwgSSYjMzk7bSBnb2luZyB0byB0dXJuIG15IGF0dGVudGlvbiB0byBzY3J1dGluaXppbmcgYHJ0bDgyMnhfd3JpdGVfbW1kYCBpdHNlbGYuIFRoYXQgZnVuY3Rpb24gaXMgd2hlcmUgdGhlIGFjdGlvbiBpcyBzdGFydGluZy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgcHJlY2lzZWx5IHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgbG93ZXIgbGV2ZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3OTU6XHRzdGF0aWMgaW50IHJ0bDgyMnhfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG4xNzk2Olx0XHRcdFx0ICAgICB1MTYgdmFsKVxuMTc5NzpcdHtcbjE3OTg6XHRcdGludCByZXQgPSBydGxnZW5fd3JpdGVfbW1kKHBoeWRldiwgZGV2bnVtLCByZWdudW0sIHZhbCk7XG4xNzk5Olx0XG4xODAwOlx0XHRpZiAocmV0ICE9IC1FT1BOT1RTVVBQKVxuMTgwMTpcdFx0XHRyZXR1cm4gcmV0O1xuMTgwMjpcdFxuMTgwMzpcdFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcdTAwMjZcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVjIpXG4xODA0Olx0XHRcdHJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYyLCB2YWwpO1xuMTgwNTpcdFxuMTgwNjpcdFx0cmV0dXJuIHJldDtcbjE4MDc6XHR9XG4xODA4Olx0XG4xODA5Olx0c3RhdGljIGludCBydGw4MjJ4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4xODEwOlx0e1xuMTgxMTpcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1JFQUxURUtfUEhZX0hXTU9OKSBcdTAwMjZcdTAwMjZcbjE4MTI6XHRcdCAgICBwaHlkZXYtXHUwMDNlcGh5X2lkICE9IFJUTF9HRU5FUklDX1BIWUlEKVxuMTgxMzpcdFx0XHRyZXR1cm4gcnRsODIyeF9od21vbl9pbml0KHBoeWRldik7XG4xODE0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1OTE1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gUEhZIERyaXZlciBBbmFseXNpcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gem9vbSBpbiBvbiBob3cgdGhlc2UgUmVhbHRlayBQSFlzIGFyZSBiZWluZyBjb25maWd1cmVkLCBzbyBgcnRsODIyeF93cml0ZV9tbWRgIGxvb2tzIGxpa2UgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZC4gSXQmIzM5O3MgY2FsbGluZyB0byBtZSBhcyBhIHBvdGVudGlhbCBmb2N1cyBzeW1ib2wuIEl0JiMzOTtzIGJlZW4gYnJvdWdodCB1cCBtdWx0aXBsZSB0aW1lcyBhcyBhIHBvdGVudGlhbCBlbnRyeSBwb2ludCBmb3IgdGhpcyB0YXNrLgoKTm93LCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJyb2FkZXIgcGljdHVyZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2l0aGluIGByZWFsdGVrX2RydnNgIHRvIHNlZSB0aGUgcmVsZXZhbnQgUEhZcy4gSSB3YW50IHRvIGlkZW50aWZ5IHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgZWl0aGVyIGBydGxnZW5fd3JpdGVfbW1kYCBvciwgbW9yZSBzcGVjaWZpY2FsbHksIGBydGw4MjJ4X3dyaXRlX21tZGAuIFRoZSBhaW0gaXMgdG8gbWFwIHRoZSBmdW5jdGlvbiB0byBhIG1vZHVsZS4gSSBhbSBob3BpbmcgdG8gZ2V0IG1vcmUgY29udGV4dCBhbmQgdXNlIGBydGw4MjJ4X3dyaXRlX21tZGAgYXMgYSBzdGFydGluZyBwb2ludC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgZm9yIHRyYWNpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcmVnaXN0ZXIgYWNjZXNzIHBhdHRlcm5zIGluIHRoZXNlIFJlYWx0ZWsgUEhZIGltcGxlbWVudGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9Mzg4PXN0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zOTktXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo0MDA6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9BRERSX1JFRyxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQwMS1cdFx0XHQgICAgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NjIwPXN0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MjgtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2Mjk6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTkVSLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjMwLVx0XHRcdFx0ICAgIFJUTDgyNjFYX0lOVF9NQVNLX0RFRkFVTFQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYzMy1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2MzQ6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTkVSLCAwKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYzNS1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzQ1PXN0YXRpYyBpbnQgcnRsZ2VuX3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc2Mi1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3NjM6c3RhdGljIGludCBydGxnZW5fd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzY0LVx0XHRcdCAgICB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3Nzg9c3RhdGljIGludCBydGw4MjJ4X3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5NC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3OTU6c3RhdGljIGludCBydGw4MjJ4X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5Ni1cdFx0XHQgICAgIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzk3LXtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3OTg6XHRpbnQgcmV0ID0gcnRsZ2VuX3dyaXRlX21tZChwaHlkZXYsIGRldm51bSwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5OS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xODIyPXN0YXRpYyBpbnQgcnRsODIyeGJfcmVhZF9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZylcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xODYwLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTg2MTpzdGF0aWMgaW50IHJ0bDgyMnhiX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTg2Mi1cdFx0XHQgICAgICB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE5NDE9c3RhdGljIGludCBydGw4MjI2X3BhdGNoX21kaV9zd2FwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgc3dhcF9lbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTk5MS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE5OTI6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyNl9WTkQyX0FEQ0NBTF9PRkZTRVQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xOTkzLVx0XHRcdFx0ICAgIGFkY2NhbF9vZmZzZXRbMyAtIGldKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMDM5PXN0YXRpYyBpbnQgcnRsODIyeF9zZXRfc2VyZGVzX29wdGlvbl9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZ2VuMSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDc1LVx0aWYgKCFnZW4xKSB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMDc2Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIDB4NzVmMywgMCk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDc3LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIwODctXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMDg4Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCAweDZhMDQsIDB4MDUwMyk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDg5LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDkxLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjA5MjpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgMHg2ZjEwLCAweGQ0NTUpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA5My1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA5NS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIwOTY6XHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCAweDZmMTEsIDB4ODAyMCk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDk3LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMTA5PXN0YXRpYyBpbnQgcnRsODIyeF9zZXJkZXNfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMTEyLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjExMzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgUlRMODIyWF9WTkQxX1NFUkRFU19BRERSLCByZWcpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjExNC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjExNi1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIxMTc6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFJUTDgyMlhfVk5EMV9TRVJERVNfREFUQSwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIxMTgtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIxMjAtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMTIxOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBSVEw4MjJYX1ZORDFfU0VSREVTX0NNRCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIxMjItXHRcdFx0ICAgIFJUTDgyMlhfVk5EMV9TRVJERVNfQ01EX1dSSVRFIHxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMzY5PXN0YXRpYyBpbnQgcnRsODIyeGJfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIzNzctXHQvKiBjbGVhciBIVyBMRUQgc2V0dXAgKi9cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIzNzg6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMzc5LVx0XHRcdCAgICBSVEw4MjJYX1ZORDJfTEVEKGluZGV4KSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MjQ2OT1zdGF0aWMgaW50IHJ0bDgyMnhiX2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNDk0LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjQ5NTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI0OTYtXHRcdFx0ICAgIFJUTDgyMlhfVk5EMl9MRUQoaW5kZXgpLCB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTI1NDE9c3RhdGljIGludCBydGw4MjI0X3NyYW1fcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgcmVnKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI1NDQtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNTQ1Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjU0Ni1cdFx0XHQgICAgUlRMODIyWF9WTkQyX0MyMl9SRUcoUlRMODIyNF9NSUlfU1JBTV9BRERSKSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yNjc2PXN0YXRpYyBpbnQgcnRsODIyNF9wYWNrYWdlX21vZGlmeV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldmFkLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2OTEtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNjkyOlx0cmV0ID0gX19waHlfcGFja2FnZV93cml0ZV9tbWQocGh5ZGV2LCAwLCBkZXZhZCwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjY5My1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zMDA5PXN0YXRpYyBpbnQgcnRsODIyMWJfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMDE3LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzAxODpcdFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lORVIsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMDE5LVx0XHRcdFx0ICAgIFJUTDgyMjFCX1ZORDJfSU5FUl9MSU5LX1NUQVRVUyk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMDIwLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMwMjE6XHRcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMwMjItXHRcdFx0XHQgICAgUlRMODIyMUJfVk5EMl9JTkVSLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zMDg2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMTA0LVx0XHQucmVhZF9tbWRcdD0gZ2VucGh5X3JlYWRfbW1kX3Vuc3VwcG9ydGVkLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzEwNTpcdFx0LndyaXRlX21tZFx0PSBnZW5waHlfd3JpdGVfbW1kX3Vuc3VwcG9ydGVkLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEwNi1cdFx0LnN1c3BlbmRcdD0gZ2VucGh5X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzExNC1cdFx0LnJlYWRfbW1kXHQ9IFx1MDAyNmdlbnBoeV9yZWFkX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMxMTU6XHRcdC53cml0ZV9tbWRcdD0gXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMTYtXHRcdC5yZWFkX3BhZ2VcdD0gcnRsODIxeF9yZWFkX3BhZ2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEyMy1cdFx0LnJlYWRfbW1kXHQ9IFx1MDAyNmdlbnBoeV9yZWFkX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMxMjQ6XHRcdC53cml0ZV9tbWRcdD0gXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMjUtXHRcdC5zdXNwZW5kXHQ9IHJ0bDgyMTFiX3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEzMy1cdFx0LnJlYWRfbW1kXHQ9IFx1MDAyNmdlbnBoeV9yZWFkX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMxMzQ6XHRcdC53cml0ZV9tbWRcdD0gXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMzUtXHRcdC5yZWFkX3BhZ2VcdD0gcnRsODIxeF9yZWFkX3BhZ2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwMy1cdFx0LnJlYWRfbW1kXHQ9IHJ0bGdlbl9yZWFkX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMyMDQ6XHRcdC53cml0ZV9tbWRcdD0gcnRsZ2VuX3dyaXRlX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMyMDUtXHR9LCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIxNS1cdFx0LnJlYWRfbW1kXHQ9IHJ0bDgyMnhiX3JlYWRfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIxNjpcdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjE3LVx0fSwge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMyMzEtXHRcdC5yZWFkX21tZFx0PSBydGw4MjJ4Yl9yZWFkX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMyMzI6XHRcdC53cml0ZV9tbWRcdD0gcnRsODIyeGJfd3JpdGVfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIzMy1cdH0sIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjQ2LVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeGJfcmVhZF9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMjQ3Olx0XHQud3JpdGVfbW1kXHQ9IHJ0bDgyMnhiX3dyaXRlX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMyNDgtXHR9LCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzI2Mi1cdFx0LnJlYWRfbW1kXHQ9IHJ0bDgyMnhiX3JlYWRfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzI2MzpcdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjY0LVx0fSwge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMyODEtXHRcdC5yZWFkX21tZFx0PSBydGw4MjJ4Yl9yZWFkX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMyODI6XHRcdC53cml0ZV9tbWRcdD0gcnRsODIyeGJfd3JpdGVfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzI4My1cdFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IHJ0bDgyMnhiX2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMzA0LVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeGJfcmVhZF9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzA1Olx0XHQud3JpdGVfbW1kXHQ9IHJ0bDgyMnhiX3dyaXRlX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMzMDYtXHRcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBydGw4MjJ4Yl9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzMzMy1cdFx0LnJlYWRfbW1kXHQ9IHJ0bDgyMnhfcmVhZF9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzM0Olx0XHQud3JpdGVfbW1kXHQ9IHJ0bDgyMnhfd3JpdGVfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzMzNS1cdH0sIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMzQ3LVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNDg6XHRcdC53cml0ZV9tbWRcdD0gcnRsODIyeF93cml0ZV9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMzQ5LVx0fSwge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM0MDEtXHRcdC5yZWFkX21tZFx0PSBnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozNDAyOlx0XHQud3JpdGVfbW1kXHQ9IGdlbnBoeV93cml0ZV9tbWRfdW5zdXBwb3J0ZWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zNDAzLVx0fSwge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDkxOAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIGAud3JpdGVfbW1kYCBJbXBsZW1lbnRhdGlvbnMqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBgLndyaXRlX21tZGAgZnVuY3Rpb25zOiBgcnRsZ2VuX3dyaXRlX21tZGAsIGBydGw4MjJ4X3dyaXRlX21tZGAsIGFuZCBgcnRsODIyeGJfd3JpdGVfbW1kYC4gSXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoZXkgYWxsIHBlcmZvcm0gYSBzaW1pbGFyLCBpZiBub3QgaWRlbnRpY2FsLCBmdW5jdGlvbi4gU3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb25zLCBub3RoaW5nIHVudXN1YWwgc28gZmFyLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgcnRsODIyeGJfd3JpdGVfbW1kYC4gV2FzbiYjMzk7dCB0aGVyZSBhIGNhbGwgdG8gYHJ0bGdlbl93cml0ZV9tbWRgIHdpdGhpbiBpdD8gVGhhdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGNvbmZpcm1pbmcuIEl0JiMzOTtzIGEga2V5IGJpdCBvZiBpbmZvcm1hdGlvbi4gTGV0JiMzOTtzIGRpZyBpbnRvIGBydGw4MjJ4Yl93cml0ZV9tbWRgIGFuZCBjbGFyaWZ5IHRoYXQgZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4NjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTg2MTpcdHN0YXRpYyBpbnQgcnRsODIyeGJfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWcsXG4xODYyOlx0XHRcdFx0ICAgICAgdTE2IHZhbClcbjE4NjM6XHR7XG4xODY0Olx0XHRpbnQgb2xkcGFnZSwgcmV0LCB3cml0ZV9yZXQ7XG4xODY1Olx0XHR1MTYgcGFnZTtcbjE4NjY6XHRcbjE4Njc6XHRcdC8qIFVzZSBkZWZhdWx0IG1ldGhvZCBmb3IgYWxsIE1NRHMgZXhjZXB0IE1ESU9fTU1EX1ZFTkQyIG9yIGluIGNhc2VcbjE4Njg6XHRcdCAqIENsYXVzZS00NSBhY2Nlc3MgaXMgYXZhaWxhYmxlXG4xODY5Olx0XHQgKi9cbjE4NzA6XHRcdGlmIChkZXZudW0gIT0gTURJT19NTURfVkVORDIgfHwgcGh5ZGV2LVx1MDAzZWlzX2M0NSlcbjE4NzE6XHRcdFx0cmV0dXJuIG1tZF9waHlfd3JpdGUocGh5ZGV2LVx1MDAzZW1kaW8uYnVzLCBwaHlkZXYtXHUwMDNlbWRpby5hZGRyLFxuMTg3MjpcdFx0XHRcdFx0ICAgICBwaHlkZXYtXHUwMDNlaXNfYzQ1LCBkZXZudW0sIHJlZywgdmFsKTtcbjE4NzM6XHRcbjE4NzQ6XHRcdC8qIFNpbXBsaWZ5IGFjY2VzcyB0byBDMjItcmVnaXN0ZXJzIGFkZHJlc3NlZCBpbnNpZGUgTURJT19NTURfVkVORDIgKi9cbjE4NzU6XHRcdGlmIChyZWcgXHUwMDNlPSBSVEw4MjJYX1ZORDJfQzIyX1JFRygwKSBcdTAwMjZcdTAwMjZcbjE4NzY6XHRcdCAgICByZWcgXHUwMDNjPSBSVEw4MjJYX1ZORDJfQzIyX1JFRygzMCkpXG4xODc3Olx0XHRcdHJldHVybiBfX3BoeV93cml0ZShwaHlkZXYsIFJUTDgyMlhfVk5EMl9UT19DMjJfUkVHKHJlZyksIHZhbCk7XG4xODc4Olx0XG4xODc5Olx0XHQvKiBVc2UgcGFnZWQgYWNjZXNzIGZvciBNRElPX01NRF9WRU5EMiBvdmVyIENsYXVzZS0yMiAqL1xuMTg4MDpcdFx0cGFnZSA9IFJUTDgyMlhfVk5EMl9UT19QQUdFKHJlZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNjY5CgkJCQkJCQlvdXRwdXQ6IDEzMwoJCQkJCQkJdGhvdWdodHM6IDU2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUmVhbHRlayBQSFkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc3VtcHRpb24gYWJvdXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBydGw4MjJ4Yl93cml0ZV9tbWRgIGFuZCBgcnRsZ2VuX3dyaXRlX21tZGAgd2FzIGluY29ycmVjdC4gV2UmIzM5O3ZlIGVzdGFibGlzaGVkIHRoYXQgYHJ0bGdlbl93cml0ZV9tbWRgIGFuZCBgcnRsODIyeF93cml0ZV9tbWRgIGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdGhhdCB1dGlsaXplIGBydGxnZW5fd3JpdGVfdmVuZDJgIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBgTURJT19BTl9FRUVfQURWYCByZWdpc3Rlci4KCkxldCYjMzk7cyB6b29tIGluIG9uIGBydGxnZW5fd3JpdGVfbW1kYC4gV2Uga25vdyB0aGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IHdhcyBwYXRjaGVkLiBMb29raW5nIGF0IHRoZSBjb2RlOgoKYGBgYwpzdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSwKCQkJICAgIHUxNiB2YWwpCnsKCWludCByZXQ7CgoJaWYgKGRldm51bSA9PSBNRElPX01NRF9WRU5EMikKCQlyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIHZhbCk7CgllbHNlIGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gJmFtcDsmYW1wOyByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKQoJCXJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYsIHZhbCk7CgllbHNlCgkJcmV0ID0gLUVPUE5PVFNVUFA7CgoJcmV0dXJuIHJldDsKfQpgYGAKCk15IHJlYXNvbmluZyBpczogVGhlIGNydXggb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBjb3JyZWN0aW5nIGEgcG90ZW50aWFsIHN3YXAgb2YgYHJlZ251bWAgYW5kIGB2YWxgIHdoZW4gY2FsbGluZyBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCB3aXRoaW4gYHJ0bGdlbl93cml0ZV9tbWRgLiBUaGUgdnVsbmVyYWJpbGl0eSBjb3VsZCBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBgU0lPQ1NNSUlSRUdgIGlvY3RsIG9yLCBwb3RlbnRpYWxseSwgdGhyb3VnaCBgRVRIVE9PTF9TRUVFYCwgd2hpY2gsIGluIHR1cm4sIGludGVyYWN0cyB3aXRoIGBydGxnZW5fd3JpdGVfbW1kYCBhbmQgaXRzIHJlbGF0ZWQgZnVuY3Rpb25zLiBUaGlzIGlzIHNwZWNpZmljYWxseSByZWxldmFudCB3aGVuIGEgUmVhbHRlayBQSFkgaXMgY29ubmVjdGVkLgoKVGhlcmVmb3JlLCB0aGUga2V5IGVsZW1lbnRzIHRvIGhpZ2hsaWdodCBhcmU6CgoqICAgKipXb3J0aEZ1enppbmc6IFRydWUqKiAoZHVlIHRvIHRoZSBidWcgYW5kIGFjY2Vzc2liaWxpdHkpCiogICAqKkZvY3VzU3ltYm9sczoqKiBgcnRsZ2VuX3dyaXRlX21tZGAsIGFuZCBgcnRsODIyeF93cml0ZV9tbWRgIChiZWNhdXNlIHRoZXkgYXJlIHRoZSBvbmVzIHVzaW5nIHRoZSBwYXRjaGVkIGZ1bmN0aW9uKQoqICAgKipFbmFibGVDb25maWdzOioqIGBSRUFMVEVLX1BIWWAgKGJlY2F1c2UgaXQmIzM5O3MgdGhlIHNwZWNpZmljIGNvbmZpZyByZXF1aXJlZCkKCk5vdywgYSBicmllZiBjaGVjayBvbiB0aGUgc3RhdGljIG5hdHVyZSBvZiBgcnRsZ2VuX3dyaXRlX21tZGAuIFllcywgaXQmIzM5O3MgZGVjbGFyZWQgYHN0YXRpY2AuIEhvd2V2ZXIsIHNpbmNlIGl0JiMzOTtzIHVzZWQgd2l0aCBhIGZ1bmN0aW9uIHBvaW50ZXIgKGkuZS4sIHRocm91Z2ggaW9jdGwgb3IgZXRodG9vbCksIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBUaGlzIG1lYW5zIHN5emthbGxlciAqY2FuKiB0YXJnZXQgaXQsIG1ha2luZyBpdCBhIHZpYWJsZSBmb2N1cyBzeW1ib2wuCgpGaW5hbGx5LCBjb25maXJtaW5nIHRoYXQgYFJFQUxURUtfUEhZYCBpcyBhIHRyaXN0YXRlIGNvbmZpZyBpcyBjcnVjaWFsLiBUaGF0IHNldHRsZXMgaXQuIE1lbnRpb25pbmcgYFBIWUxJQmAgaXNuJiMzOTt0IGEgcHJvYmxlbSwgYnV0IGBSRUFMVEVLX1BIWWAgaXMgdGhlIHRhcmdldCBjb25maWcuCgpJJiMzOTttIHJlYWR5IHRvIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSRUFMVEVLX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bGdlbl93cml0ZV9tbWQmIzM0OywKICAgICYjMzQ7cnRsODIyeF93cml0ZV9tbWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYXJndW1lbnRzIHdlcmUgc3dhcHBlZCBpbiBhIGNhbGwgdG8gcnRsZ2VuX3dyaXRlX3ZlbmQyIGluc2lkZSBydGxnZW5fd3JpdGVfbW1kLiBUaGlzIGZ1bmN0aW9uIGlzIGEgLndyaXRlX21tZCBjYWxsYmFjayBmb3IgUmVhbHRlayBQSFkgZHJpdmVycyBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBTSU9DU01JSVJFRyBpb2N0bCBvciBFVEhUT09MX1NFRUUgd2hlbiBhIFJlYWx0ZWsgUEhZIGlzIGF0dGFjaGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSRUFMVEVLX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bGdlbl93cml0ZV9tbWQmIzM0OywKICAgICYjMzQ7cnRsODIyeF93cml0ZV9tbWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYXJndW1lbnRzIHdlcmUgc3dhcHBlZCBpbiBhIGNhbGwgdG8gcnRsZ2VuX3dyaXRlX3ZlbmQyIGluc2lkZSBydGxnZW5fd3JpdGVfbW1kLiBUaGlzIGZ1bmN0aW9uIGlzIGEgLndyaXRlX21tZCBjYWxsYmFjayBmb3IgUmVhbHRlayBQSFkgZHJpdmVycyBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBTSU9DU01JSVJFRyBpb2N0bCBvciBFVEhUT09MX1NFRUUgd2hlbiBhIFJlYWx0ZWsgUEhZIGlzIGF0dGFjaGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjE6MTguODM5Mzg4ODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkyNjExMDAzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUkVBTFRFS19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydGxnZW5fd3JpdGVfbW1kXCIsXG4gICAgXCJydGw4MjJ4X3dyaXRlX21tZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGFyZ3VtZW50cyB3ZXJlIHN3YXBwZWQgaW4gYSBjYWxsIHRvIHJ0bGdlbl93cml0ZV92ZW5kMiBpbnNpZGUgcnRsZ2VuX3dyaXRlX21tZC4gVGhpcyBmdW5jdGlvbiBpcyBhIC53cml0ZV9tbWQgY2FsbGJhY2sgZm9yIFJlYWx0ZWsgUEhZIGRyaXZlcnMgYW5kIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgU0lPQ1NNSUlSRUcgaW9jdGwgb3IgRVRIVE9PTF9TRUVFIHdoZW4gYSBSZWFsdGVrIFBIWSBpcyBhdHRhY2hlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjE6MTguODM5Mzk0ODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzY2NzU4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMxYTgwM2MwZmQ2ZmRmZDFjN2ZjYmY2YzFmZGE5ODY3NjUxYTJlZmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAxNjoyMToxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuaW5kZXggYTBhNzkxOTIzODRlZS4uMTc3YjYyYTdiMmQxNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuQEAgLTE3NjgsNyArMTc2OCw3IEBAIHN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxcbiBcXHRpZiAoZGV2bnVtID09IE1ESU9fTU1EX1ZFTkQyKVxcbiBcXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIHZhbCk7XFxuIFxcdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxcbi1cXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIFJUTF9NRElPX0FOX0VFRV9BRFYpO1xcbitcXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpO1xcbiBcXHRlbHNlXFxuIFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjE6MTkuMjc3ODkxMDk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDc4ODIyNTg3ODAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJFQUxURUtfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRsZ2VuX3dyaXRlX21tZFwiLFxuICAgIFwicnRsODIyeF93cml0ZV9tbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhcmd1bWVudHMgd2VyZSBzd2FwcGVkIGluIGEgY2FsbCB0byBydGxnZW5fd3JpdGVfdmVuZDIgaW5zaWRlIHJ0bGdlbl93cml0ZV9tbWQuIFRoaXMgZnVuY3Rpb24gaXMgYSAud3JpdGVfbW1kIGNhbGxiYWNrIGZvciBSZWFsdGVrIFBIWSBkcml2ZXJzIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFNJT0NTTUlJUkVHIGlvY3RsIG9yIEVUSFRPT0xfU0VFRSB3aGVuIGEgUmVhbHRlayBQSFkgaXMgYXR0YWNoZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMxYTgwM2MwZmQ2ZmRmZDFjN2ZjYmY2YzFmZGE5ODY3NjUxYTJlZmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDE2OjIxOjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuaW5kZXggYTBhNzkxOTIzODRlZS4uMTc3YjYyYTdiMmQxNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuQEAgLTE3NjgsNyArMTc2OCw3IEBAIHN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxuIFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9WRU5EMilcbiBcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCB2YWwpO1xuIFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxuLVx0XHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIFJUTF9NRElPX0FOX0VFRV9BRFYpO1xuK1x0XHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpO1xuIFx0ZWxzZVxuIFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIxOjE5LjI3Nzg5MjM4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3OTkyOTE2MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBQSFkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgLiBJdCdzIGEgUmVhbHRlayBQSFkgZHJpdmVyLCB3aGljaCBpcyBhIGNvbW1vbiBhcmVhIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgZGVzY3JpcHRpb24gaW5kaWNhdGVzIGEgYnVnZml4IGluIGBydGxnZW5fd3JpdGVfbW1kYCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gaG93IGBydGxnZW5fd3JpdGVfdmVuZDJgIGlzIGJlaW5nIGNhbGxlZC4gUmlnaHQsIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCB0aGUgYXJndW1lbnRzIGZvciBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCBzd2FwcGVkLiBJdCBsb29rcyBsaWtlIGl0IHdhcyBwYXNzaW5nIGByZWdudW1gIGFuZCBgdmFsYCBpbiB0aGUgd3Jvbmcgb3JkZXIuIFRoZSBmaXhlZCBjb2RlIHNlZW1zIHRvIGNvcnJlY3QgdGhpcyB0byBgcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEViwgdmFsKWAuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIHRoaXMgYmUgdHJpZ2dlcmVkPyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgcmVhY2hhYmlsaXR5LiBTaW5jZSBpdCdzIGEgUEhZIGRyaXZlciwgaXQncyBwcmV0dHkgbGlrZWx5IHRoYXQgd2UgY2FuIGhpdCB0aGlzIGNvZGUgcGF0aCBzb21laG93LiBWaXJ0dWFsIG5ldHdvcmsgZGV2aWNlcyB0aGF0IHVzZSBQSFlzIGFyZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFuZCBJJ2QgYmV0IHRoZSBNRElPIGJ1cyBpcyB0aGUga2V5IGhlcmUuIFdlIG1pZ2h0IGJlIGFibGUgdG8gaW5zdGFudGlhdGUgUEhZcyB1c2luZyB0aGUgTURJTyBidXMgdG8gdHJpZ2dlciB0aGlzLCBvciB2aWEgTURJTyBpb2N0bHMuXG5cbkxldCdzIHNlZS4uLnN5emthbGxlciEgSXQncyBsaWtlbHkgdGhhdCBzeXprYWxsZXIgY2FuIGhhbmRsZSB0aGlzLCByaWdodD8gSXQgY2FuIGZ1enogTURJTyBidXNlcyBhbmQgUEhZcyB1c2luZyBgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG9yIGp1c3QgdGhyb3VnaCBkaXJlY3QgTURJTyBpb2N0bCBtYW5pcHVsYXRpb24uIFRoYXQgc2hvdWxkIGJlIGEgdmVyeSBlZmZlY3RpdmUgd2F5IHRvIGdldCB0byB0aGlzIGNvZGUuIE9rYXksIGxldCdzIGRpdmUgaW50byBgcnRsZ2VuX3dyaXRlX21tZGAgYW5kIHNlZSB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjE6MjUuMDc3MTg2MjEzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjIwNDk1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGxnZW5fd3JpdGVfbW1kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3NDU9c3RhdGljIGludCBydGxnZW5fcmVhZF9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NjItXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTc2MzpzdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzY0LVxcdFxcdFxcdCAgICB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc5NT1zdGF0aWMgaW50IHJ0bDgyMnhfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzk3LXtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzk4OlxcdGludCByZXQgPSBydGxnZW5fd3JpdGVfbW1kKHBoeWRldiwgZGV2bnVtLCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMwODY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwMy1cXHRcXHQucmVhZF9tbWRcXHQ9IHJ0bGdlbl9yZWFkX21tZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMjA0OlxcdFxcdC53cml0ZV9tbWRcXHQ9IHJ0bGdlbl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwNS1cXHR9LCB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIxOjI1LjMzOTM5NTkwNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MTk0NTUzODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC5cblxuKipJbnZlc3RpZ2F0aW5nIHJ0bGdlbl93cml0ZV9tbWQgaW4gUmVhbHRlayBQSFkgRHJpdmVycyoqXG5cblJpZ2h0LCBzbyBgcnRsZ2VuX3dyaXRlX21tZGAgaXMgYmVpbmcgZW1wbG95ZWQgYXMgdGhlIGAud3JpdGVfbW1kYCBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBhIGhhbmRmdWwgb2YgUEhZIGRyaXZlcnMgcmVzaWRpbmcgaW4gdGhlIGByZWFsdGVrX2RydnNgIGRpcmVjdG9yeS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIG5haWwgZG93biB3aGF0IHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBhcmUgZm9yIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdmVyYWxsIGNvbnRleHQgdG8gZW5zdXJlIHRoaXMgaXMgdXNlZCBhcyBpbnRlbmRlZC4gVGltZSB0byBkaWcgaW50byB0aGUgYXNzb2NpYXRlZCBmaWxlcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMTozMS43NTg4NTMzMjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0ODMyMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVhbHRla19tYWluLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlOjI6cmVhbHRlay15XFx0XFx0XFx0Kz0gcmVhbHRla19tYWluLm9cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZS0zLXJlYWx0ZWstJChDT05GSUdfUkVBTFRFS19QSFlfSFdNT04pICs9IHJlYWx0ZWtfaHdtb24ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMTozMS44MDczNDA4NDFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzg3NjQyMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBSZWFsdGVrIFBIWSBEcml2ZXIgTG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgUmVhbHRlayBQSFkgZHJpdmVycyBhcmUgbG9jYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIHRoaXMga2luZCBvZiBpbnZlc3RpZ2F0aW9uLCBpcyB0byBjaGVjayB0aGUgYE1ha2VmaWxlYCB3aXRoaW4gdGhlIHJlbGV2YW50IGRyaXZlciBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBuZXR3b3JrIFBIWSBkcml2ZXJzLiBHaXZlbiBteSBleHBlcmllbmNlLCBgZHJpdmVycy9uZXQvcGh5L2AgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuIEEgcXVpY2sgcGVlayBpbiBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCB3aWxsIHByb2JhYmx5IGdpdmUgbWUgdGhlIGFuc3dlciwgbGlzdGluZyB0aGUgc3BlY2lmaWMgb2JqZWN0IGZpbGVzIG9yIHNvdXJjZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggUmVhbHRlayBQSFkgc3VwcG9ydC4gVGhpcyBzaG91bGQgYmUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyNSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIxOjM2LjE5NDk4NTI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjE4Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlYWx0ZWtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT05NT1vYmotJChDT05GSUdfUVNFTUlfUEhZKVxcdFxcdCs9IHFzZW1pLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTY6b2JqLSQoQ09ORklHX1JFQUxURUtfUEhZKVxcdCs9IHJlYWx0ZWsvXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk3LW9iai0kKENPTkZJR19SRU5FU0FTX1BIWSlcXHQrPSB1UEQ2MDYyMC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIxOjM2LjI0MjIwODIwOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczMDgxNjk1MzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBSZWFsdGVrIFBIWSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHdlIG5lZWQgYENPTkZJR19SRUFMVEVLX1BIWWAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE5vdywgYmVmb3JlIEkganVzdCBibGluZGx5IGVuYWJsZSBpdCwgbGV0J3MgYmUgc21hcnQgYWJvdXQgdGhpcy4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiB3aGF0IGFyZSBpdHMgZGVwZW5kZW5jaWVzPyBUaGVyZSdzIGFsd2F5cyBhIHdlYiBvZiBpbnRlcmNvbm5lY3RlZCBjb25maWd1cmF0aW9ucyBpbiB0aGVzZSB0aGluZ3MsIGFuZCBvdmVybG9va2luZyBhIGRlcGVuZGVuY3kgY2FuIGxlYWQgdG8gaG91cnMgb2YgZGVidWdnaW5nIGxhdGVyIG9uLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGBDT05GSUdfUkVBTFRFS19QSFlgLiBXZSBkb24ndCB3YW50IHRvIGJyZWFrIGFueXRoaW5nIGVsc2UgaW4gdGhlIHByb2Nlc3MsIGFuZCB3ZSB3YW50IHRvIGVuc3VyZSBldmVyeXRoaW5nIG5lZWRlZCBpcyBlbmFibGVkIG9yIHNldCB1cCBjb3JyZWN0bHkgYmVmb3JlIHdlIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgzMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIyOjQ5LjMyMzkwNTczN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI2NjYyNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSRUFMVEVLX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFBIWXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnPTg9aWYgUkVBTFRFS19QSFlcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTktXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoxMDpjb25maWcgUkVBTFRFS19QSFlfSFdNT05cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIkhXTU9OIHN1cHBvcnQgZm9yIFJlYWx0ZWsgUEhZc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjI6NDkuNjUwNTc0NTU3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MDcwNTgzMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgaWYgSSdtIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBSZWFsdGVrIFBIWSBLY29uZmlnKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGlzIFJlYWx0ZWsgUEhZIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCBrbm93aW5nIGl0cyBkZXBlbmRlbmNpZXMgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZC4gVGhpcyBmaWxlIHdpbGwgcmV2ZWFsIHdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBzZXR0aW5ncyBhcmUgcmVxdWlyZWQgb3IgY2FuIGltcGFjdCB0aGlzIHNwZWNpZmljIFBIWSBkcml2ZXIncyBpbmNsdXNpb24uIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IG5lY2Vzc2FyeSBjb3JlIG5ldHdvcmsgZmVhdHVyZXMsIHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQsIG90aGVyIFJlYWx0ZWsgZGVwZW5kZW5jaWVzLCBvciBwZXJoYXBzIGV2ZW4gYnJvYWRlciBhcmNoaXRlY3R1cmFsIHJlcXVpcmVtZW50cy4gVGhlIEtjb25maWcgZmlsZSBpcyBteSBrZXkgdG8gdW5sb2NraW5nIHRoZSBjb25maWd1cmF0aW9uIHB1enpsZSBhbmQgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBlY29zeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMjksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMjo1My41NTc2MzQ4NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgUkVBTFRFS19QSFlcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFBIWXNcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgUEhZX1BBQ0tBR0VcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgQ3VycmVudGx5IHN1cHBvcnRzIFJUTDgyMXgvUlRMODIyeCBhbmQgZmFzdCBldGhlcm5ldCBQSFlzXFxuICAgNzpcXHRcXG4gICA4OlxcdGlmIFJFQUxURUtfUEhZXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBSRUFMVEVLX1BIWV9IV01PTlxcbiAgMTE6XFx0XFx0Ym9vbCBcXFwiSFdNT04gc3VwcG9ydCBmb3IgUmVhbHRlayBQSFlzXFxcIlxcbiAgMTI6XFx0XFx0ZGVwZW5kcyBvbiBIV01PTiBcXHUwMDI2XFx1MDAyNiAhKFJFQUxURUtfUEhZPXkgXFx1MDAyNlxcdTAwMjYgSFdNT049bSlcXG4gIDEzOlxcdFxcdGhlbHBcXG4gIDE0OlxcdFxcdCAgT3B0aW9uYWwgaHdtb24gc3VwcG9ydCBmb3IgdGhlIHRlbXBlcmF0dXJlIHNlbnNvclxcbiAgMTU6XFx0XFxuICAxNjpcXHRlbmRpZiAjIFJFQUxURUtfUEhZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIyOjUzLjU1NzY5Njk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzMzNzUwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgUEhZIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiBpc24ndCBkaXJlY3RseSB0aWVkIHRvIGFueXRoaW5nICpvYnZpb3VzKiBpbiB0aGUgY29kZS4gSG93ZXZlciwgdGhlIGZhY3QgdGhhdCBpdCByZXNpZGVzIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIGlzIGEgcHJldHR5IHN0cm9uZyBoaW50LiAgVGhhdCBkaXJlY3Rvcnkgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGRyaXZlcnMsIHNvIGxldCdzIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMuLi4gYW5kIHRoZXJlIGl0IGlzOiBgUEhZTElCYC4gSXQncyBhIGtleSBkZXBlbmRlbmN5LiBOb3cgSSBuZWVkIHRvIHNlZSB3aGF0IFBIWUxJQiBlbmFibGVzLCBhbmQgaWYgdGhhdCBnaXZlcyBtb3JlIGNsYXJpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2OTIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIyOjU2LjQ5MTA3NDIyMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2MTIxODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBIWUxJQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cXHRkZWZfYm9vbCBPRlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMjo1Ni41Mzg2OTI2OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjAxMzI5OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFBIWUxJQiBhbmQgTURJTyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgd2UgY2FuIHJlYWNoIGBQSFlMSUJgIGZyb20gdXNlciBzcGFjZS4gSXQgbG9va3MgbGlrZSB3ZSd2ZSBnb3QgYSBjb3VwbGUgb2Ygc29saWQgb3B0aW9uczogbmV0bGluayBvciBnb29kIG9sZC1mYXNoaW9uZWQgaW9jdGxzLCBsaWtlIGBTSU9DU01JSVJFR2AuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgaG93IHdlIGNhbiBpbnRlZ3JhdGUgdGhpcyBpbnRvIGEgZnV6emluZyBzZXR1cCB3aXRoIHN5emthbGxlci5cblxuQ2FuIHN5emthbGxlciBmdXp6IE1ESU8gYnVzZXMgdXNpbmcgdmlydHVhbCBkZXZpY2VzPyBXZSBjb3VsZCB1c2UgYHR1bmAsIGB2ZXRoYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIgYW5kIGF0dGFjaCBQSFlzIHRoYXQgd2F5LiBPciwgcGVyaGFwcywgd2UgY2FuIHRhcmdldCB0aGUgYG1kaW9gIHN1YnN5c3RlbSBkaXJlY3RseS4gV2FpdCBhIG1pbnV0ZeKApkkgcmVjYWxsIHNlZWluZyBNRElPIGFuZCBQSFkgZGVzY3JpcHRpb25zIGluIHN5emthbGxlciBhbHJlYWR5LiBUaGF0J3MgYSBnb29kIHNpZ24hIEl0IG1lYW5zIHNvbWVvbmUncyBhbHJlYWR5IHB1dCBpbiBzb21lIGdyb3VuZHdvcmssIHdoaWNoIGlzIGZhbnRhc3RpYyBuZXdzLlxuXG5BbHJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIGEgYml0LiBMZXQncyBzZWUgaWYgd2UgY2FuIHJlYWNoIGBydGxnZW5fd3JpdGVfbW1kYC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgYC53cml0ZV9tbWRgIGNhbGxiYWNrLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIGJhY2sgYW5kIGZpbmQgb3V0IHdoZXJlIHRoYXQgY2FsbGJhY2sgaXMgYWN0dWFsbHkgdXNlZC4gV2hlcmUgYXJlIHRoZSBjYWxscyB0byBgLndyaXRlX21tZGAgaGFwcGVuaW5nPyBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDMwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIzOjAzLjc0MDAyNTc1NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2Nzg0OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid3JpdGVfbW1kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0yNzg2PUVYUE9SVF9TWU1CT0woZ2VucGh5X3JlYWRfbW1kX2M0NSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yNzg3LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mjc4ODppbnQgZ2VucGh5X3dyaXRlX21tZF9jNDUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3ODktXFx0XFx0XFx0IHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3OTUtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mjc5NjpFWFBPUlRfU1lNQk9MKGdlbnBoeV93cml0ZV9tbWRfYzQ1KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3OTctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTI4MDY9RVhQT1JUX1NZTUJPTChnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgwNy1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjI4MDg6aW50IGdlbnBoeV93cml0ZV9tbWRfdW5zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoZGV2LCBpbnQgZGV2bnVtLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgwOS1cXHRcXHRcXHRcXHQgdTE2IHJlZ251bSwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgxMi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoyODEzOkVYUE9SVF9TWU1CT0woZ2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yODE0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzowMy43ODU3MDgyNzNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc3MzkwMjAzNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBUEkgQ2xhcmlmaWNhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBnZXQgdGhpcyBzdHJhaWdodCBpbiBteSBoZWFkLiBJJ20gZm9jdXNpbmcgb24gdGhlIHdyaXRlIHBhdGgsIGFuZCBJJ3ZlIGJlZW4gbXVsbGluZyBvdmVyIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMuIFRoZW4gaXQgaGl0IG1lOiB0aGUgZnVuY3Rpb24gSSdtIGFjdHVhbGx5IGRlYWxpbmcgd2l0aCBoZXJlLCB0aGUgY29yZSBBUEkgZm9yIHdyaXRpbmcgdG8gdGhlIG1lbW9yeSBtYXBwZWQgZGV2aWNlIChNTUQpLCBpcyBgcGh5X3dyaXRlX21tZGAuIEl0J3MgdGhhdCBzaW1wbGUsIHJlYWxseS4gVGhhdCdzIHRoZSBrZXkgZnVuY3Rpb24gdG8gdHJhY2UgYW5kIHVuZGVyc3RhbmQ7IGV2ZXJ5dGhpbmcgZWxzZSBpcyBsaWtlbHkgbGVhZGluZyB0byBvciBzdXBwb3J0aW5nIGl0cyBleGVjdXRpb24uIEdvb2QsIHRoYXQgY2xhcmlmaWVzIHRoaW5ncy4gTm93IEkgY2FuIGJ1aWxkIG9uIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NzIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzoyMS41MjQ3MzI2OTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzU1MDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV93cml0ZV9tbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE4MjggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM9Mjc1PXN0YXRpYyBpbnQgYWRpbl9jb25maWdfcmdtaWlfbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zMTYtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozMTc6XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTMxOC1cXHRcXHRcXHQgICAgIEFESU4xMzAwX0dFX1JHTUlJX0NGR19SRUcsIHJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTMyMT1zdGF0aWMgaW50IGFkaW5fY29uZmlnX3JtaWlfbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDMtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozNDQ6XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTM0NS1cXHRcXHRcXHQgICAgIEFESU4xMzAwX0dFX1JNSUlfQ0ZHX1JFRywgcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jPTE5Mj1zdGF0aWMgaW50IGFkaW5fc2V0X3Bvd2VyZG93bl9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xOTUtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MTk2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xOTctXFx0XFx0XFx0ICAgIEFESU5fQ1JTTV9TRlRfUERfQ05UUkwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmM9NDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFkaW4xMTQwX2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTU0LVxcdFxcdC5yZWFkX21tZCA9IGdlbnBoeV9yZWFkX21tZF9jNDUsXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjU1OlxcdFxcdC53cml0ZV9tbWQgPSBnZW5waHlfd3JpdGVfbW1kX2M0NSxcXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmMtNTYtXFx0XFx0LmdldF9wbGNhX2NmZyA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz0yNzI9c3RhdGljIGludCBhbjg4MDFyX2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMwMC1cXHRcXHRcXHRcXHQgICAgIExFRF9CTElOS19EVVJfTUFTSyk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozMDE6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMRURfQkxJTktfRFVSLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzAyLVxcdFxcdFxcdFxcdCAgICBibGlua19kdXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zMDUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozMDY6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMRURfT05fRFVSLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzA3LVxcdFxcdFxcdFxcdCAgICBod19kZWxheV9vbik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTkwMj1zdGF0aWMgaW50IGFuODgwMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTExLVxcdC8qIERpc2FibGUgTG93IFBvd2VyIE1vZGUgKExQTSkgKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjkxMjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFOODgwMV9SRUdfUEhZX0lOVEVSTkFMMCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkxMy1cXHRcXHRcXHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX0lOVEZVTkNfTUFTSywgMHgxZSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MTYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5MTc6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBTjg4MDFfUkVHX1BIWV9JTlRFUk5BTDEsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MTgtXFx0XFx0XFx0ICAgIEZJRUxEX1BSRVAoQU44ODAxX1BIWV9JTlRGVU5DX01BU0ssIDB4MikpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NTctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NTg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTU5LVxcdFxcdFxcdCAgICBBTjg4MDFfUEhZX1RYX1BBSVJfRExZX1NFTF9HQkUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk2NC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjk2NTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFOODgwMV9QSFlfUlhBRENfQ1RSTCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk2Ni1cXHRcXHRcXHQgICAgQU44ODAxX1BIWV9SWEFEQ19TQU1QX1BIU0VMX0EgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NzAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NzE6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBTjg4MDFfUEhZX1JYQURDX1JFVl8wLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTcyLVxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfUlhBRENfUkVWX01BU0tfQSwgMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NzUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NzY6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBTjg4MDFfUEhZX1JYQURDX1JFVl8xLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTc3LVxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfUlhBRENfUkVWX01BU0tfQywgMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NjEwPXN0YXRpYyBpbnQgYWlyX2h3X2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MjgtXFx0aWYgKGNoYW5nZWQpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjI5OlxcdFxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjMwLVxcdFxcdFxcdFxcdCAgICAgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NzA4PXN0YXRpYyBpbnQgYWlyX2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2NC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NjU6XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2Ni1cXHRcXHRcXHQgICAgIGJsaW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTc5Nz1zdGF0aWMgaW50IGFpcl9sZWRzX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IG51bSwgaW50IGR1ciwgaW50IG1vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDEtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODAyOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfRFVSX0JMSU5LLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwMy1cXHRcXHRcXHQgICAgZHVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwNi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MDc6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9EVVJfT04sXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODA4LVxcdFxcdFxcdCAgICBkdXIgXFx1MDAzZVxcdTAwM2UgMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMjgxPXN0YXRpYyBpbnQgZW44ODExaF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI5OC1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjk5OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzEsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwMC1cXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzFfTU9ERTEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwMi1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDM6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA0LVxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfMl9NT0RFMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA2LVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMwNzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDgtXFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX01PREUxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMTAtXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzExOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMxMi1cXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzRfTU9ERTEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTQ1Mj1zdGF0aWMgaW50IGVuODgxMWhfY2xlYXJfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ1NS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDU2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzMsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ1Ny1cXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfRE9DTUQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ2MC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDYxOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ2Mi1cXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzRfSU5UQ0xSKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jPTkwPXN0YXRpYyBpbnQgYXFyX2Z3X2xvYWRfbWVtb3J5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtOTUtXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6OTY6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk3LVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTEsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtOTgtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMV9DUkNfUkVTRVQpO1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjk5OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMDAtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMDEtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFM19NU1dfQUREUihhZGRyKSk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTAyOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMDMtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTExNS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoxMTY6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U1LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTExNy1cXHRcXHRcXHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U1X01TV19EQVRBKHdvcmQpKTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoxMTg6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U2LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTExOS1cXHRcXHRcXHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U2X0xTV19EQVRBKHdvcmQpKTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMjAtXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTIxOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMjItXFx0XFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMV9FWEVDVVRFIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jPTE0OT1zdGF0aWMgaW50IGFxcl9md19ib290KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IHU4ICpkYXRhLCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI2MS1cXHQvKiBzdGFsbCB0aGUgbWljcm9jcHJvY2Vzc29yICovXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MjYyOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX0NPTlRST0wyLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI2My1cXHRcXHQgICAgICBWRU5EMV9HTE9CQUxfQ09OVFJPTDJfVVBfUlVOX1NUQUxMIHwgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTF9PVkQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjgzLVxcdC8qIFJlbGVhc2UgdGhlIG1pY3JvcHJvY2Vzc29yLiBVUF9SRVNFVCBtdXN0IGJlIGhlbGQgZm9yIDEwMCB1c2VjLiAqL1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjI4NDpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9DT05UUk9MMixcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yODUtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTCB8XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yODktXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MjkwOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX0NPTlRST0wyLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI5MS1cXHRcXHQgICAgICBWRU5EMV9HTE9CQUxfQ09OVFJPTDJfVVBfUlVOX1NUQUxMX09WRCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYz01NT1zdGF0aWMgaW50IGFxcl9od21vbl9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHJlZywgbG9uZyB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9od21vbi5jLTY0LVxcdC8qIHRlbXAgaXMgaW4gczE2IHJhbmdlIGFuZCB3ZSdyZSBpbnRlcmVzdGVkIGluIGxvd2VyIDE2IGJpdHMgb25seSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9od21vbi5jOjY1OlxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIHJlZywgKHUxNil0ZW1wKTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYy02Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTI1Mz1zdGF0aWMgaW50IGFxcl9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNjQtXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNjU6XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOX1RYX1ZFTkRfSU5UX01BU0syLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY2LVxcdFxcdFxcdCAgICBlbiA/IE1ESU9fQU5fVFhfVkVORF9JTlRfTUFTSzJfTElOSyA6IDApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNjktXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNzA6XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfSU5UX1NURF9NQVNLLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjcxLVxcdFxcdFxcdCAgICBlbiA/IFZFTkQxX0dMT0JBTF9JTlRfU1REX01BU0tfQUxMIDogMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI3NC1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjI3NTpcXHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9JTlRfVkVORF9NQVNLLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjc2LVxcdFxcdFxcdCAgICBlbiA/IFZFTkQxX0dMT0JBTF9JTlRfVkVORF9NQVNLX0dMT0JBTDMgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYz0zNjk9c3RhdGljIGludCBhcXIxMDVfc2V0dXBfZm9yY2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwMS1cXHR9XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzo0MDI6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOX0FEVkVSVElTRSwgYWR2KTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwMy1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNC1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6NDA1OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9WRU5EX1BST1YsIHZlbmQpO1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtNDA2LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtNDA3LVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzo0MDg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwsIGN0cmwxMCk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDktXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jPTI5Nz1zdGF0aWMgaW50IGFlb25fZmlybXdhcmVfYm9vdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCB1OCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzA3LVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MzA4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfRldfU1RBUlRfQUREUixcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMwOS1cXHRcXHRcXHQgICAgQUVPTl9CT09UX0FERFIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMjktXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzozMzA6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzMxLVxcdFxcdFxcdFxcdCAgICBWRU5EMV9HTEJfUkVHX01ESU9fSU5ESVJFQ1RfTE9BRCwgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzM1LVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MzM2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMzNy1cXHRcXHRcXHQgICAgVkVORDFfR0xCX1JFR19DUFVfUkVTRVRfQUREUl9MT19CQVNFQUREUixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzQxLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MzQyOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTM0My1cXHRcXHRcXHQgICAgVkVORDFfR0xCX1JFR19DUFVfUkVTRVRfQUREUl9ISV9CQVNFQUREUixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9NDA1PXN0YXRpYyBpbnQgYWVvbl9pcGNfc2VuZF9jbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDIyLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6NDIzOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfSVBDX0NNRCwgY21kKTtcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTQyNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz00NTU9c3RhdGljIGludCBhZW9uX2lwY19zZW5kX21zZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy00NzEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRhdGFfbGVuIC8gc2l6ZW9mKHUxNik7IGkrKylcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjQ3MjpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0lQQ19EQVRBKGkpLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDczLVxcdFxcdFxcdCAgICAgIGRhdGFbaV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9MzcyPWludCBiY21fcGh5X3NldF9lZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zODUtXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Mzg2OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgQlJDTV9DTDQ1VkVOX0VFRV9DT05UUk9MLCAodTMyKXZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzg3LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNDA0LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjQwNTpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIEJDTV9DTDQ1VkVOX0VFRV9BRFYsICh1MzIpdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy00MDYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jPTYyOD1zdGF0aWMgaW50IGJjbTd4eHhfMjhubV9lcGh5X3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jLTY1Ny1cXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jOjY1ODpzdGF0aWMgaW50IGJjbTd4eHhfMjhubV9lcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtNjU5LVxcdFxcdFxcdFxcdCAgICAgICBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLCB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYz04MjE9c3RhdGljIGludCBiY203eHh4XzI4bm1fcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtODg2LVxcdC5yZWFkX21tZFxcdD0gYmNtN3h4eF8yOG5tX2VwaHlfcmVhZF9tbWQsXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmM6ODg3OlxcdC53cml0ZV9tbWRcXHQ9IGJjbTd4eHhfMjhubV9lcGh5X3dyaXRlX21tZCxcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYy04ODgtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmM9OTk9c3RhdGljIGludCBiY204NDg5eF9sZWRfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDMtXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmM6MTA0OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTA1LVxcdFxcdFxcdCAgICBiY204NDg5eF9sZWRfcmVnc1tpbmRleF0ubWFza19sb3csIGxvdyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDctXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYzoxMDg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1BNQVBNRCxcXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDktXFx0XFx0XFx0ICAgIGJjbTg0ODl4X2xlZF9yZWdzW2luZGV4XS5tYXNrX2V4dCwgZXh0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM9MzQ9c3RhdGljIGludCBiY204N3h4X29mX3JlZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTY4LVxcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM6Njk6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldmlkLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy03MC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM9MTQwPXN0YXRpYyBpbnQgYmNtODd4eF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTQtXFx0XFx0cmVnIHw9IDE7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYzoxNTU6XFx0XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1BDUyxcXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE1Ni1cXHRcXHRcXHRcXHQgICAgQkNNODdYWF9MQVNJX0NPTlRST0wsIHJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE1OC1cXHRcXHRyZWcgXFx1MDAyNj0gfjE7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYzoxNTk6XFx0XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1BDUyxcXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE2MC1cXHRcXHRcXHRcXHQgICAgQkNNODdYWF9MQVNJX0NPTlRST0wsIHJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jPTIxND1zdGF0aWMgaW50IGRwODM4MjJfY29uZmlnX3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMjktXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyMzA6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfREExLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjMxLVxcdFxcdFxcdCAgICAgIChtYWNbMV0gXFx1MDAzY1xcdTAwM2MgOCkgfCBtYWNbMF0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjMyOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0RBMixcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTIzMy1cXHRcXHRcXHQgICAgICAobWFjWzNdIFxcdTAwM2NcXHUwMDNjIDgpIHwgbWFjWzJdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjIzNDpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIE1JSV9EUDgzODIyX1dPTF9EQTMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMzUtXFx0XFx0XFx0ICAgICAgKG1hY1s1XSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY1s0XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0NC1cXHRcXHRpZiAod29sLVxcdTAwM2V3b2xvcHRzIFxcdTAwMjYgV0FLRV9NQUdJQ1NFQ1VSRSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjQ1OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0Ni1cXHRcXHRcXHRcXHQgICAgICBNSUlfRFA4MzgyMl9SWFNPUDEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNDctXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMF0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjQ4OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0OS1cXHRcXHRcXHRcXHQgICAgICBNSUlfRFA4MzgyMl9SWFNPUDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNTAtXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzNdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMl0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjUxOlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI1Mi1cXHRcXHRcXHRcXHQgICAgICBNSUlfRFA4MzgyMl9SWFNPUDMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI2NC1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI2NTpcXHRcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjY2LVxcdFxcdFxcdFxcdCAgICAgTUlJX0RQODM4MjJfV09MX0NGRywgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYz0xMDQ1PXN0YXRpYyBpbnQgZHA4MzgyMl9yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMTA1Mi1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjEwNTM6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfQ0ZHLCB2YWx1ZSB8XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0xMDU0LVxcdFxcdCAgICAgIERQODM4MjJfV09MX0NMUl9JTkRJQ0FUSU9OKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9MjExPXN0YXRpYyBpbnQgZHA4Mzg2N19zZXRfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzMS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzMjpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzMtXFx0XFx0XFx0XFx0ICAgICAgKG1hY1sxXSBcXHUwMDNjXFx1MDAzYyA4IHwgbWFjWzBdKSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMzQ6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjM1LVxcdFxcdFxcdFxcdCAgICAgIChtYWNbM10gXFx1MDAzY1xcdTAwM2MgOCB8IG1hY1syXSkpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM2OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMyxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzNy1cXHRcXHRcXHRcXHQgICAgICAobWFjWzVdIFxcdTAwM2NcXHUwMDNjIDggfCBtYWNbNF0pKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ0LVxcdFxcdGlmICh3b2wtXFx1MDAzZXdvbG9wdHMgXFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDU6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AxLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ2LVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1sxXSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzBdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0NzpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNDgtXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzNdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMl0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQ5OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMyxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI1MC1cXHRcXHRcXHRcXHQgICAgICAod29sLVxcdTAwM2Vzb3Bhc3NbNV0gXFx1MDAzY1xcdTAwM2MgOCkgfCB3b2wtXFx1MDAzZXNvcGFzc1s0XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI3MTpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRkNGRywgdmFsX3J4Y2ZnKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3Mi1cXHRwaHlfd3JpdGUocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSLCB2YWxfbWljcik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTczNj1zdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODA4LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODA5OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUkdNSUlDVEwsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4MTE6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SR01JSURDVEwsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTItXFx0XFx0XFx0ICAgICAgZHA4Mzg2Ny1cXHUwMDNlcnhfaWRfZGVsYXkgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTYtXFx0XFx0dmFsIFxcdTAwMjY9IH5EUDgzODY3X1JHTUlJX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODE3OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUkdNSUlDVEwsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04NjAtXFx0XFx0XFx0dmFsIFxcdTAwMjY9IH5EUDgzODY3X1NHTUlJX1RZUEU7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4NjE6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19TR01JSUNUTCwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTg2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9OTM1PXN0YXRpYyBpbnQgZHA4Mzg2N19waHlfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTUzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6OTU0OlxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfRFNQX0ZGRV9DRkcsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05NTUtXFx0XFx0XFx0ICAgIDB4MGU4MSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jPTI1OT1zdGF0aWMgaW50IGRwODM4Njlfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yODYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzoyODc6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI4OC1cXHRcXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9SWEZQTUQxLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTItXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzoyOTM6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI5NC1cXHRcXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9SWEZQTUQyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzoyOTk6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMwMC1cXHRcXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9SWEZQTUQzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTAtXFx0XFx0aWYgKHdvbC1cXHUwMDNld29sb3B0cyBcXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjMxMTpcXHRcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzEyLVxcdFxcdFxcdFxcdFxcdCAgICBEUDgzODY5X1JYRlNPUDEsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMxNi1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjMxNzpcXHRcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzE4LVxcdFxcdFxcdFxcdFxcdCAgICBEUDgzODY5X1JYRlNPUDIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMyMS1cXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MzIyOlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMjMtXFx0XFx0XFx0XFx0XFx0ICAgIERQODM4NjlfUlhGU09QMyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzQ2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MzQ3OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfUlhGQ0ZHLCB2YWxfcnhjZmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzQ4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jPTY5ND1zdGF0aWMgaW50IGRwODM4NjlfY29uZmlndXJlX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzE4LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6NzE5OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfT1BfTU9ERSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTcyMC1cXHRcXHRcXHQgICAgcGh5X2N0cmxfdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzUzLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6NzU0OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03NTUtXFx0XFx0XFx0XFx0ICAgIERQODM4NjlfRlhfQ1RSTCwgRFA4Mzg2OV9GWF9DVFJMX0RFRkFVTFQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03NjUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo3NjY6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc2Ny1cXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9GWF9DVFJMLCBEUDgzODY5X0ZYX0NUUkxfREVGQVVMVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc4Ni1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjc4NzpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzg4LVxcdFxcdFxcdFxcdCAgICBEUDgzODY5X0ZYX0NUUkwsIERQODM4NjlfRlhfQ1RSTF9ERUZBVUxUKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM9ODA0PXN0YXRpYyBpbnQgZHA4Mzg2OV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04MzQtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo4MzU6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTgzNi1cXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9BTkFfUExMX1BST0dfUEksIDB4MTApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NDctXFx0aWYgKHBoeV9pbnRlcmZhY2VfaXNfcmdtaWkocGh5ZGV2KSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6ODQ4OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfUkdNSUlEQ1RMLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODQ5LVxcdFxcdFxcdFxcdCAgICBkcDgzODY5LVxcdTAwM2VyeF9pbnRfZGVsYXkgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NjctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo4Njg6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUiwgRFA4Mzg2OV9SR01JSUNUTCxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTg2OS1cXHRcXHRcXHRcXHQgICAgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYz05Nz1zdGF0aWMgaW50IGRwODM4MTFfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExMi1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTEzOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsIE1JSV9EUDgzODExX1dPTF9EQTEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExNC1cXHRcXHRcXHQgICAgICAobWFjWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgbWFjWzBdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTE1OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsIE1JSV9EUDgzODExX1dPTF9EQTIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExNi1cXHRcXHRcXHQgICAgICAobWFjWzNdIFxcdTAwM2NcXHUwMDNjIDgpIHwgbWFjWzJdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTE3OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsIE1JSV9EUDgzODExX1dPTF9EQTMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExOC1cXHRcXHRcXHQgICAgICAobWFjWzVdIFxcdTAwM2NcXHUwMDNjIDgpIHwgbWFjWzRdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMjctXFx0XFx0aWYgKHdvbC1cXHUwMDNld29sb3B0cyBcXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTI4OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEyOS1cXHRcXHRcXHRcXHQgICAgICBNSUlfRFA4MzgxMV9SWFNPUDEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEzMC1cXHRcXHRcXHRcXHQgICAgICAod29sLVxcdTAwM2Vzb3Bhc3NbMV0gXFx1MDAzY1xcdTAwM2MgOCkgfCB3b2wtXFx1MDAzZXNvcGFzc1swXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjEzMTpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzItXFx0XFx0XFx0XFx0ICAgICAgTUlJX0RQODM4MTFfUlhTT1AyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzMtXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzNdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMl0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxMzQ6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTM1LVxcdFxcdFxcdFxcdCAgICAgIE1JSV9EUDgzODExX1JYU09QMyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xNDctXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjE0ODpcXHRcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTQ5LVxcdFxcdFxcdFxcdCAgICAgTUlJX0RQODM4MTFfV09MX0NGRywgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jPTUzMD1zdGF0aWMgaW50IGRwODN0ZDUxMF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTUzNC1cXHRpZiAocGh5ZGV2LVxcdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo1MzU6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01MzYtXFx0XFx0XFx0XFx0ICAgIERQODNURDUxMEVfSU5URVJSVVBUX1JFR18xLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTU0Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo1NDc6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01NDgtXFx0XFx0XFx0XFx0ICAgIERQODNURDUxMEVfSU5URVJSVVBUX1JFR18xLCAweDApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jPTY4ND1zdGF0aWMgaW50IGRwODN0ZDUxMF9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzM4LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo3Mzk6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1REUl9DRkcyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NDAtXFx0XFx0XFx0ICAgIEZJRUxEX1BSRVAoRFA4M1RENTEwRV9URFJfRU5EX1RBUF9JTkRFWF8xLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc0Ni1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzQ3OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9URFJfRkFVTFRfQ0ZHMSxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzQ4LVxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKERQODNURDUxMEVfVERSX0ZMVF9MT0NfT0ZGU0VUXzEsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzU3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo3NTg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1VOS05fMDMwRSxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzU5LVxcdFxcdFxcdCAgICBEUDgzVEQ1MTBFXzAzMEVfVkFMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NjItXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjc2MzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURDUxMEVfVERSX0NGRzMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc2NC1cXHRcXHRcXHQgICAgRFA4M1RENTEwRV9URFJfVFhfRFVSQVRJT05fVVNfREVGKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYz0zMjQ9c3RhdGljIGludCBkcDgzdGc3MjBfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzQxOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19URFJfQ0ZHMixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzQyLVxcdFxcdFxcdCAgICAweGEwMDgpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0NS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzQ2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19URFJfQ0ZHMyxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzQ3LVxcdFxcdFxcdCAgICAweDA5MjgpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzUxOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19URFJfQ0ZHNCxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzUyLVxcdFxcdFxcdCAgICAweDAwMDQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1NS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzU2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19VTktOT1dOXzA0MDUsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1Ny1cXHRcXHRcXHQgICAgMHg2NDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNjAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM2MTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVU5LTk9XTl8wODNGLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNjItXFx0XFx0XFx0ICAgIDB4MzAwMyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM9NTU4PXN0YXRpYyBpbnQgZHA4M3RnNzIwX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtNTc1LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzo1NzY6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX0xQU19DRkczLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy01NzctXFx0XFx0XFx0ICAgIERQODNURzcyMFNfTFBTX0NGRzNfUFdSX01PREVfMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTI0NT1zdGF0aWMgaW50IHh3YXlfZ3BoeV9pbml0X2xlZHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjU5LVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjYwOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEQ0gsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNjEtXFx0XFx0ICAgICAgWFdBWV9NTURfTEVEQ0hfTkFDU19OT05FIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjYzLVxcdFxcdCAgICAgIFhXQVlfTU1EX0xFRENIX0ZCRl9GMTZIWik7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNjQ6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRURDTCxcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI2NS1cXHRcXHQgICAgICBYV0FZX01NRF9MRURDSF9DQkxJTktfTk9ORSB8XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI3Ni1cXHRcXHRYV0FZX01NRF9MRUR4TF9CTElOS1NfTk9ORTtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI3NzpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDBILCBsZWR4aCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNzg6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQwTCwgbGVkeGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Mjc5OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMUgsIGxlZHhoKTtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI4MDpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDFMLCBsZWR4bCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyODE6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQySCwgbGVkeGgpO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjgyOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMkwsIGxlZHhsKTtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI4My1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM9MzkzPXN0YXRpYyBpbnQgeHdheV9ncGh5X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTAtXFx0aWYgKHZhbHVlID09IExFRF9PRkYpIHtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjQxMTpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRHhIKGluZGV4KSwgMCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDE0LVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NDE1OlxcdFxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRHhMKGluZGV4KSwgMCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTYtXFx0fSBlbHNlIHtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzoyMS41NzIwOTIyN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzE0NzM2ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKlRyYWNpbmcgdGhlIE1NRCBXcml0ZSBGdW5jdGlvbiBDYWxscyoqXG5cbkhtbSwgc28gYHJ0bGdlbl93cml0ZV9tbWRgIGlzIGRlZmluaXRlbHkgdGhlIHRhcmdldCBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBiZWluZyBpbnZva2VkLiBSaWdodCwgaXQncyBjYWxsZWQgZnJvbSBgcnRsODIyeF93cml0ZV9tbWRgLiBBbmQgdGhhdCBmdW5jdGlvbiwgYHJ0bDgyMnhfd3JpdGVfbW1kYCwgaXMgdGhlIGAud3JpdGVfbW1kYCBmdW5jdGlvbiBmb3IgdGhlIGByZWFsdGVrX2RydnNgIHN0cnVjdHVyZS4gVGhhdCB0ZWxscyBtZSBhIGxvdCDigJMgaXQncyBwYXJ0IG9mIHRoZSBSZWFsdGVrIGRyaXZlciBmYW1pbHksIGxpa2VseSBpbnRlcmFjdGluZyBkaXJlY3RseSB3aXRoIHRoZSBoYXJkd2FyZS5cblxuVGhlbiwgdGhlcmUncyBgcGh5X3dyaXRlX21tZGAsIGFuZCB0aGF0J3MgYW4gaW50ZXJlc3Rpbmcgb25lIGJlY2F1c2UgaXQncyB0aGUgZ2VuZXJpYyBQSFkgYWJzdHJhY3Rpb24gbGF5ZXIuIEl0J3Mgc3VwcG9zZWQgdG8gaW52b2tlIGl0cyBvd24gYC53cml0ZV9tbWRgIGZ1bmN0aW9uIGlmIG9uZSBpcyBkZWZpbmVkLiBTbywgdGhlcmUgaXMgYSBnb29kIGNoYW5jZSB0aGF0IGBwaHlfd3JpdGVfbW1kYCBpcyB0aGUgb25lIHRoYXQncyBzdXBwb3NlZCB0byBiZSBjYWxsaW5nIGBydGw4MjJ4X3dyaXRlX21tZGAgd2hpY2ggdWx0aW1hdGVseSBjYWxscyBgcnRsZ2VuX3dyaXRlX21tZGAuXG5cblRvIGJlIGNlcnRhaW4sIGFuZCB0byBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGVjdXRpb24gcGF0aCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHBoeV93cml0ZV9tbWRgLiBJdCBpcyB0aGUgY3J1Y2lhbCBqdW5jdGlvbiBpbiB0aGlzIGNoYWluIG9mIGNhbGxzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBhc3N1bXB0aW9ucyBhYm91dCBob3cgYHBoeV93cml0ZV9tbWRgIGhhbmRsZXMgaXRzIGAud3JpdGVfbW1kYCBmdW5jdGlvbiBwb2ludGVyIGFyZSBjb3JyZWN0LiBMZXQncyB2ZXJpZnkgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1ODgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzoyNS44ODY4MzE2ODFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjI3NTQ5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgcGh5X3dyaXRlX21tZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIzOjI1LjkzMTQ3ODYyOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk5ODUyMzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqTmF2aWdhdGluZyB0aGUgUEhZIERyaXZlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIHVzYWdlIG9mIGBwaHlfd3JpdGVfbW1kYC4gSXQncyBsaWtlbHkgd2l0aGluIHRoZSBgcGh5X2RldmljZS5jYCBmaWxlLCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gSSdsbCBuZWVkIHRvIG9wZW4gdGhhdCB1cCBhbmQgZWl0aGVyIHNlYXJjaCBkaXJlY3RseSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgb3IgbWF5YmUgdHJhY2UgaXRzIGNhbGxzIGlmIGl0J3Mgbm90IGEgZGlyZWN0IGltcGxlbWVudGF0aW9uIGJ1dCByYXRoZXIgYSB3cmFwcGVyIG9yIGFic3RyYWN0aW9uLiBVbmRlcnN0YW5kaW5nIGhvdyBgcGh5X3dyaXRlX21tZGAgd29ya3MgaXMgY3J1Y2lhbDsgaXQgbWlnaHQgYmUgcmVzcG9uc2libGUgZm9yIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIE1hbmFnZW1lbnQgTW9kZSBEZXZpY2UgcmVnaXN0ZXJzIHdpdGhpbiB0aGUgUEhZLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgUEhZIGRyaXZlciBzdHJ1Y3R1cmUuIEknbGwgbGlrZWx5IGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHJlZ2lzdGVyIGFkZHJlc3NlcywgZGF0YSBmb3JtYXR0aW5nLCBwb3RlbnRpYWwgZXJyb3IgaGFuZGxpbmcsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgYnVzIOKAkyBsaWtlbHkgTURJTywgYnV0IGNvbmZpcm1hdGlvbiBpcyBuZWVkZWQuIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwMjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzoyOS41MzEzMzM0NTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTAxMjI5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgcGh5X3dyaXRlX21tZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzoyOS41NzcyNDEyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTkyMTc4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipMb2NhdGluZyB0aGUgUEhZIFdyaXRlIEZ1bmN0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGZvciB0aGUgZGVmaW5pdGlvbiBvciBkZWNsYXJhdGlvbiBvZiBgcGh5X3dyaXRlX21tZGAuIEJhc2VkIG9uIHRoZSBjb250ZXh0LCB0aGF0J3MgYWxtb3N0IGNlcnRhaW5seSBhIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gd3JpdGluZyB0byBhIE1hbmFnZW1lbnQgTW9kZSBEZXZpY2UgKE1NRCkgd2l0aGluIGEgUEhZIChQaHlzaWNhbCBMYXllcikuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgd291bGQgYmUgd2l0aGluIHRoZSBuZXR3b3JrIGRldmljZSBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmUuIGBkcml2ZXJzL25ldC9waHlgIGlzIHRoZSBvYnZpb3VzIHRvcC1sZXZlbCBkaXJlY3RvcnkgdG8gYmVnaW4gbXkgc2VhcmNoLlxuXG5Nb3JlIHNwZWNpZmljYWxseSwgYHBoeV9jb3JlLmNgIGlzIHVzdWFsbHkgdGhlIHJlcG9zaXRvcnkgZm9yIHRoZSBjb3JlIFBIWSBkcml2ZXIgZnVuY3Rpb25zLCB0aGUgb25lcyB0aGF0IGFyZSBsaWtlbHkgc2hhcmVkIGFtb25nIGRpZmZlcmVudCBQSFkgZHJpdmVyIGltcGxlbWVudGF0aW9ucy4gSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBhY3R1YWwgZnVuY3Rpb24gZGVmaW5pdGlvbiB0aGVyZS4gQWx0ZXJuYXRpdmVseSwgSSBtaWdodCBmaW5kIGEgZGVjbGFyYXRpb24gb3IgcHJvdG90eXBlIGluIHRoZSBjb3JyZXNwb25kaW5nIGhlYWRlciBmaWxlLCB3aGljaCBpcyBwcm9iYWJseSBgaW5jbHVkZS9saW51eC9waHkuaGAuIFRoYXQgaGVhZGVyIHdvdWxkIGRlZmluZSB0aGUgUEhZIEFQSSBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBJdCdzIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIHRoZSBmdW5jdGlvbiBpcyBkZWNsYXJlZCB0aGVyZSBiZWZvcmUgSSBzdGFydCBzZWFyY2hpbmcgdGhlIHNvdXJjZSBmaWxlLiBJdCBpcyB0aGUgbG9naWNhbCBvcmRlciB0byBzdGFydCBteSBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjkxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjM6MzMuNTc2NDYxNDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTcwMTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBwaHlfd3JpdGVfbW1kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9NTIzPUVYUE9SVF9TWU1CT0woX19waHlfd3JpdGVfbW1kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTUzNC0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzo1MzU6aW50IHBoeV93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldmFkLCB1MzIgcmVnbnVtLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTUzNi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIzOjMzLjYyMjQzNjc1OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE2NzEzMTQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBQSFkgQ29yZSBDb2RlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aCB0aGlzIFBIWSBtb2R1bGUsIGFuZCB0aGUgZnVuY3Rpb24gYHBoeV93cml0ZV9tbWRgIHNlZW1zIGxpa2UgYSBrZXkgYXJlYSB0byBkaXNzZWN0LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgTU1ELCBvciBNb2RlL1JlZ2lzdGVyIE1hcCwgaXMgYSBjb21tb24gdGVjaG5pcXVlIHdpdGhpbiB0aGUgUEhZIHJlYWxtLCB3aGVyZSB5b3Ugc2VsZWN0IGEgXCJtb2RlXCIgb3IgcmVnaXN0ZXIgYmFuayB1c2luZyBhbiBhZGRyZXNzIGFuZCB0aGVuIGludGVyYWN0IHdpdGggdGhlIHNwZWNpZmljIHJlZ2lzdGVycyB3aXRoaW4gdGhhdCBzZWxlY3RlZCBiYW5rLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGF0IHRoZSBgcGh5X3dyaXRlX21tZGAgZnVuY3Rpb24gcHJvYmFibHkgaGFuZGxlcyB0aGUgbG93LWxldmVsIHdyaXRlcyB0byB0aGlzIE1NRCBpbnRlcmZhY2UuIEknbSBrZWVuIHRvIHNlZSBpZiBpdCdzIGFic3RyYWN0ZWQgZm9yIG11bHRpcGxlIFBIWSB0eXBlcyBvciBpbXBsZW1lbnRlZCBzcGVjaWZpY2FsbHkgZm9yIGEgbmFycm93IHJhbmdlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IG9wZXJhdGVzIG9uLiBJJ20gYWxzbyBpbnRlcmVzdGVkIHRvIHNlZSB0aGUgZXJyb3IgY2hlY2tpbmcgYW5kIGhvdyB0aGUgZnVuY3Rpb24gaGFuZGxlcyBwb3NzaWJsZSBJMkMgb3IgU1BJIHdyaXRlIGZhaWx1cmVzLiBXaGF0IGFzc3VtcHRpb25zIGRvZXMgaXQgbWFrZSBhYm91dCB0aGUgdW5kZXJseWluZyBidXM/IERvZXMgaXQgaGF2ZSBhbnkgZGVidWcgb3IgbG9nZ2luZyBjYXBhYmlsaXRpZXMgSSBjYW4gbGV2ZXJhZ2U/IE15IGdvYWwgaXMgdG8gZ3Jhc3AgaXRzIGZ1bmN0aW9uYWxpdHkuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTcyNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI0OjI0Ljc4OTU3MTgzNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MzUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MzU6XFx0aW50IHBoeV93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldmFkLCB1MzIgcmVnbnVtLCB1MTYgdmFsKVxcbiA1MzY6XFx0e1xcbiA1Mzc6XFx0XFx0aW50IHJldDtcXG4gNTM4OlxcdFxcbiA1Mzk6XFx0XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG4gNTQwOlxcdFxcdHJldCA9IF9fcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldmFkLCByZWdudW0sIHZhbCk7XFxuIDU0MTpcXHRcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuIDU0MjpcXHRcXG4gNTQzOlxcdFxcdHJldHVybiByZXQ7XFxuIDU0NDpcXHR9XFxuIDU0NTpcXHRFWFBPUlRfU1lNQk9MKHBoeV93cml0ZV9tbWQpO1xcbiA1NDY6XFx0XFxuIDU0NzpcXHQvKipcXG4gNTQ4OlxcdCAqIHBoeV9tb2RpZnlfY2hhbmdlZCAtIEZ1bmN0aW9uIGZvciBtb2RpZnlpbmcgYSBQSFkgcmVnaXN0ZXJcXG4gNTQ5OlxcdCAqIEBwaHlkZXY6IHRoZSBwaHlfZGV2aWNlIHN0cnVjdFxcbiA1NTA6XFx0ICogQHJlZ251bTogcmVnaXN0ZXIgbnVtYmVyIHRvIG1vZGlmeVxcbiA1NTE6XFx0ICogQG1hc2s6IGJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXJcXG4gNTUyOlxcdCAqIEBzZXQ6IG5ldyB2YWx1ZSBvZiBiaXRzIHNldCBpbiBtYXNrIHRvIHdyaXRlIHRvIEByZWdudW1cXG4gNTUzOlxcdCAqXFxuIDU1NDpcXHQgKiBOT1RFOiBNVVNUIE5PVCBiZSBjYWxsZWQgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjQ6MjQuNzg5NjU1MzA0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzg1MjUzMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIGdlYXJlZCB0b3dhcmQgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIGBfX3BoeV93cml0ZV9tbWRgKipcblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBgX19waHlfd3JpdGVfbW1kYCBmdW5jdGlvbi4gSW1tZWRpYXRlbHksIG15IG1pbmQgc3RhcnRzIHRvIHJhY2UuIFRoaXMgbmFtZSBzdWdnZXN0cyBpdCdzIGEgbG93LWxldmVsLCBpbnRlcm5hbCBmdW5jdGlvbiByZWxhdGVkIHRvIHdyaXRpbmcgdG8gc29tZXRoaW5nIHdpdGhpbiB0aGUgUEhZLCBwcm9iYWJseSBzb21lIHJlZ2lzdGVyIG9yIG1lbW9yeS1tYXBwZWQgZGF0YSBzcGFjZS4gVGhlIGBfX2AgcHJlZml4IGlzIGEgc3Ryb25nIGluZGljYXRvciBvZiBhbiBpbnRlcm5hbCBBUEksIGEgZnVuY3Rpb24gbm90IGludGVuZGVkIGZvciBkaXJlY3QgdXNlIGJ5IHRoZSBnZW5lcmFsIGRyaXZlciBjb2RlLiBUaGlzIHRlbGxzIG1lIGl0J3MgbGlrZWx5IGEgY3JpdGljYWwgY29tcG9uZW50LCBwb3RlbnRpYWxseSBoYW5kbGluZyB0aGUgYWN0dWFsIGJ1cyB0cmFuc2FjdGlvbnMgb3IgcmVnaXN0ZXIgYWNjZXNzIHBhdHRlcm5zLlxuXG5JJ20gaW5zdGFudGx5IHdvbmRlcmluZyBhYm91dCB0aGUgY29udGV4dC4gV2hhdCBQSFkgaXMgdGhpcyByZWxhdGVkIHRvPyBJcyBpdCBhIHNwZWNpZmljIHR5cGUsIGxpa2UgRXRoZXJuZXQsIFBDSWUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgXCJtbWRcIiBwYXJ0IGlzIGludHJpZ3VpbmcuIElzIGl0IHJlbGF0ZWQgdG8gdGhlIFwiTWVzc2FnZSBNb2RlIERldmljZVwiIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJJ2QgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGhlYWRlciBmaWxlcyBvciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBiZWluZyB1c2VkLiBJJ2xsIG5lZWQgdG8ga25vdyB0aGUgdW5kZXJseWluZyBidXMsIGJlIGl0IEkyQywgU1BJLCBvciBhIGN1c3RvbSBvbmUsIHRvIGZ1bGx5IGdyYXNwIGl0cyBmdW5jdGlvbi5cblxuVGhlbiBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgZXJyb3Igc2NlbmFyaW9zLiBXaGF0IGtpbmQgb2YgZXJyb3IgaGFuZGxpbmcgaXMgaW1wbGVtZW50ZWQ/IERvZXMgaXQgY2hlY2sgZm9yIHdyaXRlIHRpbWVvdXRzIG9yIGJ1cyBlcnJvcnM/IElzIHRoZXJlIGFueSByZXRyeSBsb2dpYz8gRG9lcyBpdCBsb2cgZXJyb3JzIGluIGEgdXNlZnVsIHdheSBvciBqdXN0IHJldHVybiBhIGdlbmVyaWMgZXJyb3IgY29kZT8gQ29uc2lkZXJpbmcgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZXNlIHR5cGVzIG9mIHJvdXRpbmVzLCByb2J1c3QgZXJyb3IgaGFuZGxpbmcgaXMgcGFyYW1vdW50LiBJZiBhIHdyaXRlIGZhaWxzLCBpdCBjYW4gaW1wYWN0IGVudGlyZSBzeXN0ZW0gb3BlcmF0aW9uLCB0aGVyZWZvcmUgSSBzaG91bGQgYmUgY2hlY2tpbmcgZm9yIHRoZSBlcnJvci1oYW5kbGluZyBtZXRob2QgdXNlZC5cblxuSSBhbHNvIHdvbmRlciBhYm91dCBjb25jdXJyZW5jeSBpc3N1ZXMuIElzIHRoaXMgZnVuY3Rpb24gcmUtZW50cmFudD8gRG9lcyBpdCBuZWVkIGFueSBraW5kIG9mIG11dGV4IG9yIHNlbWFwaG9yZSB0byBwcm90ZWN0IHNoYXJlZCByZXNvdXJjZXMsIHBhcnRpY3VsYXJseSBpZiBpdCdzIG9wZXJhdGluZyBvbiBhIHNoYXJlZCBtZW1vcnkgbWFwPyBBbnkgbXVsdGl0aHJlYWRpbmcgaW4gdGhlIGRyaXZlciBjb250ZXh0IHdvdWxkIG5lZWQgdGhhdCBwcm90ZWN0aW9uIHRvIHJlbWFpbiBzdGFibGUuXG5cbk15IG5leHQgc3RlcCB3b3VsZCBiZSB0byB0cmFjZSBpdHMgY2FsbHMgYW5kIHNlZSB3aGVyZSBhbmQgaG93IGl0J3MgdXNlZC4gS25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbnMgd2lsbCBnaXZlIG1lIHNpZ25pZmljYW50IGluc2lnaHQgaW50byB0aGUgZGF0YSBiZWluZyB3cml0dGVuLCB0aGUgcHVycG9zZSBvZiB0aGUgd3JpdGUsIGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBVbHRpbWF0ZWx5LCBJJ2Qgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBkYXRhIHBhdGggZm9yIHdyaXRpbmcuXG5cbkZpbmFsbHksIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBjb2RlIGl0c2VsZi4gSSdkIGJlIGxvb2tpbmcgZm9yOlxuXG4qICAgKipSZWdpc3RlciBvZmZzZXRzIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMqKjogQXJlIHRoZXkgY2xlYXJseSBkZWZpbmVkPyBBcmUgdGhlcmUgYW55IGNvbW1lbnRzIGV4cGxhaW5pbmcgd2hhdCBlYWNoIGJpdGZpZWxkIHJlcHJlc2VudHM/XG4qICAgKipEYXRhIHBhY2tpbmcqKjogSXMgdGhlIGRhdGEgYmVpbmcgcGFja2VkIG9yIHVucGFja2VkIGNvcnJlY3RseT8gV2hhdCdzIHRoZSBieXRlIG9yZGVyP1xuKiAgICoqQnVzIHRyYW5zYWN0aW9ucyoqOiBIb3cgYXJlIHRoZSBidXMgY3ljbGVzIGJlaW5nIG9yY2hlc3RyYXRlZD8gSXMgdGhlcmUgYW55IG9wdGltaXphdGlvbiBnb2luZyBvbj9cbiogICAqKlBvdGVudGlhbCBmb3Igb3B0aW1pemF0aW9uKio6IElzIHRoZXJlIGFueSBvdmVyaGVhZCB0aGF0IGNvdWxkIGJlIG1pbmltaXplZD8gSXMgaXQgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGJ1cyB3aWR0aCwgb3IgdGhlIG1pbmltdW0gbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBwb3NzaWJsZT9cblxuRXNzZW50aWFsbHksIEknbSBleHBlY3RpbmcgdGhpcyBgX19waHlfd3JpdGVfbW1kYCBmdW5jdGlvbiB0byBiZSBhIGtleSBidWlsZGluZyBibG9jayBpbiBhIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhbmQgbXkgYW5hbHlzaXMgd291bGQgaW52b2x2ZSBxdWlja2x5IGRpc3NlY3RpbmcgaXRzIHJvbGUgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgd2l0aGluIHRoYXQgbGF5ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzQzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNDozNi41NzQ5MTE0NTFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzQxMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBfX3BoeV93cml0ZV9tbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9NTAwPUVYUE9SVF9TWU1CT0wocGh5X3JlYWRfbW1kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTUxMS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzo1MTI6aW50IF9fcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2YWQsIHUzMiByZWdudW0sIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtNTEzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjQ6MzYuNjE5MjU5OTY5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMTQ2NzE1NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIGBfX3BoeV93cml0ZV9tbWRgKipcblxuQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBjb2RlIGFuZCBmb2N1cyBvbiBgX19waHlfd3JpdGVfbW1kYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBmdW5jdGlvbi4gSXQncyBjbGVhcmx5IGEgY29yZSBwaWVjZSByZWxhdGVkIHRvIHdyaXRpbmcgdG8gdGhlIE1NRCwgbGlrZWx5IHdpdGhpbiB0aGUgUEhZIChQaHlzaWNhbCBMYXllcikgb2YgdGhpcyBzeXN0ZW0uIEkgaW1tZWRpYXRlbHkgd2FudCB0byBncmFzcCBpdHMgcHVycG9zZSwgaG93IGl0J3MgdXNlZCwgYW5kIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuIGZvciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemF0aW9uLCBnaXZlbiBteSBleHBlcnRpc2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaXQncyB3cml0aW5nLCBob3cgaXQgZGV0ZXJtaW5lcyB0aGUgdmFsdWVzLCBhbmQgd2hlcmUgdGhpcyBkYXRhIGlzIGNvbWluZyBmcm9tLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE2OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI0OjQwLjgzMzkzNDA4M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MTIsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MTI6XFx0aW50IF9fcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2YWQsIHUzMiByZWdudW0sIHUxNiB2YWwpXFxuIDUxMzpcXHR7XFxuIDUxNDpcXHRcXHRpZiAocmVnbnVtIFxcdTAwM2UgKHUxNil+MCB8fCBkZXZhZCBcXHUwMDNlIDMyKVxcbiA1MTU6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDUxNjpcXHRcXG4gNTE3OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNld3JpdGVfbW1kKVxcbiA1MTg6XFx0XFx0XFx0cmV0dXJuIHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2V3cml0ZV9tbWQocGh5ZGV2LCBkZXZhZCwgcmVnbnVtLCB2YWwpO1xcbiA1MTk6XFx0XFxuIDUyMDpcXHRcXHRyZXR1cm4gbW1kX3BoeV93cml0ZShwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLCBwaHlkZXYtXFx1MDAzZW1kaW8uYWRkcixcXG4gNTIxOlxcdFxcdFxcdFxcdCAgICAgcGh5ZGV2LVxcdTAwM2Vpc19jNDUsIGRldmFkLCByZWdudW0sIHZhbCk7XFxuIDUyMjpcXHR9XFxuIDUyMzpcXHRFWFBPUlRfU1lNQk9MKF9fcGh5X3dyaXRlX21tZCk7XFxuIDUyNDpcXHRcXG4gNTI1OlxcdC8qKlxcbiA1MjY6XFx0ICogcGh5X3dyaXRlX21tZCAtIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciB3cml0aW5nIGEgcmVnaXN0ZXJcXG4gNTI3OlxcdCAqIG9uIGFuIE1NRCBvbiBhIGdpdmVuIFBIWS5cXG4gNTI4OlxcdCAqIEBwaHlkZXY6IFRoZSBwaHlfZGV2aWNlIHN0cnVjdFxcbiA1Mjk6XFx0ICogQGRldmFkOiBUaGUgTU1EIHRvIHJlYWQgZnJvbVxcbiA1MzA6XFx0ICogQHJlZ251bTogVGhlIHJlZ2lzdGVyIG9uIHRoZSBNTUQgdG8gcmVhZFxcbiA1MzE6XFx0ICogQHZhbDogdmFsdWUgdG8gd3JpdGUgdG8gQHJlZ251bVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNDo0MC44MzQwMjUzNDNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2ODQzMTUwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWx0ZWsgUEhZIFdyaXRlIE1lY2hhbmlzbSoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRocm91Z2ggdGhpcyBjb2RlLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBSZWFsdGVrIFBIWSB3cml0ZSBmdW5jdGlvbmFsaXR5IHdvcmtzLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9wZXJhdGlvbiBpcyB0cmlnZ2VyZWQgYnkgYHBoeWRldi1cdTAwM2VkcnYtXHUwMDNld3JpdGVfbW1kYC4gUmlnaHQsIGFuZCBiYXNlZCBvbiB0aGUgY29udGV4dCwgdGhhdCdzIGJlaW5nIGhhbmRsZWQgYnkgYHJ0bGdlbl93cml0ZV9tbWRgLiBTbyB0aGF0J3MgdGhlIFJlYWx0ZWstc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1NRCB3cml0ZS4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGZvciBtZSBpcywgY2FuIHRoaXMgYmUgYWNjZXNzZWQgZnJvbSB1c2Vyc3BhY2U/IElzIHRoZXJlIGEgcGF0aD9cblxuQWgsIHllcywgdGhlIGBTSU9DU01JSVJFR2AgaW9jdGwuIFJpZ2h0LCB0aGF0J3MgdGhlIHN0YW5kYXJkIHdheSB0byBpbnRlcmFjdCB3aXRoIHRoZSBNSUkvTURJTyBpbnRlcmZhY2UgZnJvbSB1c2Vyc3BhY2UuIFNvLCBpdCdzIGRlZmluaXRlbHkgYWNjZXNzaWJsZSwgd2hpY2ggaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZC4gVGltZSB0byBkaXZlIGludG8gYHBoeV9taWlfaW9jdGxgIGFuZCBzZWUgZXhhY3RseSBob3cgdGhhdCBpb2N0bCBjYWxsIG1hcHMgb250byB0aGlzIE1NRCB3cml0ZSBwYXRoLiBVbmRlcnN0YW5kaW5nIHRoZSBgcGh5X21paV9pb2N0bGAgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzM1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNDo0OC42MDI0NTkxN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEyMzYwMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X21paV9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHkuYz0yOTg9RVhQT1JUX1NZTUJPTChwaHlfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0zMDAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjMwMTogKiBwaHlfbWlpX2lvY3RsIC0gZ2VuZXJpYyBQSFkgTUlJIGlvY3RsIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0zMDItICogQHBoeWRldjogdGhlIHBoeV9kZXZpY2Ugc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMzA5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzozMTA6aW50IHBoeV9taWlfaW9jdGwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTMxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtNDMwLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6NDMxOkVYUE9SVF9TWU1CT0wocGh5X21paV9pb2N0bCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTQzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYz00Mzk9aW50IHBoeV9kb19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKmlmciwgaW50IGNtZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy00NDMtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjQ0NDpcXHRyZXR1cm4gcGh5X21paV9pb2N0bChkZXYtXFx1MDAzZXBoeWRldiwgaWZyLCBjbWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy00NDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTI0PWludCBwaHlsaW5rX21paV9pb2N0bChzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTUxLVxcdFxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTUyOlxcdFxcdFxcdHJldCA9IHBoeV9taWlfaW9jdGwocGwtXFx1MDAzZXBoeWRldiwgaWZyLCBjbWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU1My1cXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjQ6NDguNjUzNzAwMTY4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczMjg1ODA3MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIENhbGwgdG8gYHBoeV9taWlfaW9jdGxgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHBoeV9taWlfaW9jdGxgIGZ1bmN0aW9uIGNhbGwuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGdlYXJlZCB0b3dhcmRzIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQgd2l0aGluIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2suIEl0J3MgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZSwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBtZWRpYXRpbmcgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTUlJKSBvciBSZWR1Y2VkIE1JSSAoUk1JSSkgYW5kIHRoZSB1cHBlci1sZXZlbCBuZXR3b3JrIGRyaXZlci5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6IFdoYXQncyB0aGUgdGFyZ2V0IHBsYXRmb3JtPyBXaGF0J3MgdGhlIGtlcm5lbCB2ZXJzaW9uPyBLbm93aW5nIHRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgYW55IHBvdGVudGlhbCBwbGF0Zm9ybS1zcGVjaWZpYyBxdWlya3MuIEknbSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBmdW5jdGlvbidzIGRlZmluaXRpb24sIGxvb2tpbmcgZm9yIGl0cyBhcmd1bWVudHMuIEl0J3Mgc2FmZSB0byBhc3N1bWUgaXQncyBoYW5kbGluZyBgaW9jdGxgIGNhbGxzIHJlbGF0ZWQgdG8gUEhZIChQaHlzaWNhbCBMYXllcikgbWFuYWdlbWVudCwgd2hpY2ggY291bGQgaW5jbHVkZSByZWFkaW5nL3dyaXRpbmcgcmVnaXN0ZXJzLCByZXNldHRpbmcgdGhlIFBIWSwgYXV0b25lZ290aWF0aW9uIGNvbnRyb2wsIGxpbmsgc3RhdHVzIHJldHJpZXZhbCwgYW5kIHNvIG9uLlxuXG5UaGUgbmV4dCB0aGluZyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGlzIHRoZSBkYXRhIHN0cnVjdHVyZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLCBwcm9iYWJseSBzb21lIHNvcnQgb2YgYG1paV9pb2N0bF9kYXRhYCBvciBzaW1pbGFyLiBJIGV4cGVjdCBpdCB0byBoYXZlIGEgYGNtZGAgZmllbGQsIHdoaWNoIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBJcyBpdCBhIHN0YW5kYXJkIHNldCBvZiBgaW9jdGxgIGNvbW1hbmRzIGRlZmluZWQgYnkgdGhlIGtlcm5lbCwgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBjdXN0b20gb25lcyBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYW5kIFBIWSBjaGlwPyBUaGUgc3BlY2lmaWMgYGNtZGAgdmFsdWUgd2lsbCBkcml2ZSBteSBzdWJzZXF1ZW50IGFuYWx5c2lzLlxuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGhhbmRsaW5nLiBBcmUgdGhlcmUgc3VmZmljaWVudCBjaGVja3MgZm9yIGludmFsaWQgY29tbWFuZCB2YWx1ZXMsIG91dC1vZi1yYW5nZSByZWdpc3RlciBhY2Nlc3Nlcywgb3IgcG90ZW50aWFsIGhhcmR3YXJlIGlzc3Vlcz8gSSdtIGdvaW5nIHRvIHdhbnQgdG8gY29uZmlybSBpZiB0aGUgZHJpdmVyIHByb3Blcmx5IGltcGxlbWVudHMgbG9ja2luZyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aGVuIG11bHRpcGxlIHRocmVhZHMgYWNjZXNzIHRoZSBQSFkgY29uY3VycmVudGx5LiBBbmQgSSB3aWxsIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZm9yIGRlYWRsb2Nrcy5cblxuSSBhbHNvIGV4cGVjdCB0byBzZWUgYSBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIFBIWSBkcml2ZXIncyByZWFkL3dyaXRlIGZ1bmN0aW9ucyAoZS5nLiwgYHBoeV9yZWFkYCwgYHBoeV93cml0ZWApLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgaW50ZXJhY3Qgd2l0aCB0aGUgc3BlY2lmaWMgUEhZIGNoaXAuIEkgd2FudCB0byBzZWUgaWYgdGhlIGRyaXZlciBpcyBjb3JyZWN0bHkgaGFuZGxpbmcgYW55IFBIWS1zcGVjaWZpYyBpZGlvc3luY3Jhc2llcywgc3VjaCBhcyByZWdpc3RlciBvZmZzZXRzIG9yIGJpdGZpZWxkIGRlZmluaXRpb25zLiBJJ2xsIHdhbnQgdG8gY2hlY2sgaWYgdGhlIGRyaXZlciBzdXBwb3J0cyBhbGwgdGhlIGRlZmluZWQgc3RhdGVzIGFuZCBtb2RlcywgbGlrZSBhdXRvbmVnb3RpYXRpb24sIGZvcmNlZCBzcGVlZCwgYW5kIGR1cGxleCBzZXR0aW5ncy5cblxuRmluYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgbGlrZSB1bmNoZWNrZWQgdXNlci1wcm92aWRlZCBpbnB1dCB0aGF0IGNvdWxkIGxlYWQgdG8gcmVnaXN0ZXIgY29ycnVwdGlvbiBvciBvdGhlciBleHBsb2l0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ1MjgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNDo1NS45ODIyODMzOTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMTA6XFx0aW50IHBoeV9taWlfaW9jdGwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuIDMxMTpcXHR7XFxuIDMxMjpcXHRcXHRzdHJ1Y3QgbWlpX2lvY3RsX2RhdGEgKm1paV9kYXRhID0gaWZfbWlpKGlmcik7XFxuIDMxMzpcXHRcXHRzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyBrZXJuZWxfY2ZnO1xcbiAzMTQ6XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayBleHRhY2sgPSB7fTtcXG4gMzE1OlxcdFxcdHUxNiB2YWwgPSBtaWlfZGF0YS1cXHUwMDNldmFsX2luO1xcbiAzMTY6XFx0XFx0Ym9vbCBjaGFuZ2VfYXV0b25lZyA9IGZhbHNlO1xcbiAzMTc6XFx0XFx0c3RydWN0IGh3dHN0YW1wX2NvbmZpZyBjZmc7XFxuIDMxODpcXHRcXHRpbnQgcHJ0YWQsIGRldmFkO1xcbiAzMTk6XFx0XFx0aW50IHJldDtcXG4gMzIwOlxcdFxcbiAzMjE6XFx0XFx0c3dpdGNoIChjbWQpIHtcXG4gMzIyOlxcdFxcdGNhc2UgU0lPQ0dNSUlQSFk6XFxuIDMyMzpcXHRcXHRcXHRtaWlfZGF0YS1cXHUwMDNlcGh5X2lkID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHI7XFxuIDMyNDpcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG4gMzI1OlxcdFxcbiAzMjY6XFx0XFx0Y2FzZSBTSU9DR01JSVJFRzpcXG4gMzI3OlxcdFxcdFxcdGlmIChtZGlvX3BoeV9pZF9pc19jNDUobWlpX2RhdGEtXFx1MDAzZXBoeV9pZCkpIHtcXG4gMzI4OlxcdFxcdFxcdFxcdHBydGFkID0gbWRpb19waHlfaWRfcHJ0YWQobWlpX2RhdGEtXFx1MDAzZXBoeV9pZCk7XFxuIDMyOTpcXHRcXHRcXHRcXHRkZXZhZCA9IG1kaW9fcGh5X2lkX2RldmFkKG1paV9kYXRhLVxcdTAwM2VwaHlfaWQpO1xcbiAzMzA6XFx0XFx0XFx0XFx0cmV0ID0gbWRpb2J1c19jNDVfcmVhZChwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLCBwcnRhZCwgZGV2YWQsXFxuIDMzMTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgbWlpX2RhdGEtXFx1MDAzZXJlZ19udW0pO1xcbiAzMzI6XFx0XFxuIDMzMzpcXHRcXHRcXHR9IGVsc2Uge1xcbiAzMzQ6XFx0XFx0XFx0XFx0cmV0ID0gbWRpb2J1c19yZWFkKHBoeWRldi1cXHUwMDNlbWRpby5idXMsIG1paV9kYXRhLVxcdTAwM2VwaHlfaWQsXFxuIDMzNTpcXHRcXHRcXHRcXHRcXHRcXHQgICBtaWlfZGF0YS1cXHUwMDNlcmVnX251bSk7XFxuIDMzNjpcXHRcXHRcXHR9XFxuIDMzNzpcXHRcXG4gMzM4OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAzMzk6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMzQwOlxcdFxcbiAzNDE6XFx0XFx0XFx0bWlpX2RhdGEtXFx1MDAzZXZhbF9vdXQgPSByZXQ7XFxuIDM0MjpcXHRcXG4gMzQzOlxcdFxcdFxcdHJldHVybiAwO1xcbiAzNDQ6XFx0XFxuIDM0NTpcXHRcXHRjYXNlIFNJT0NTTUlJUkVHOlxcbiAzNDY6XFx0XFx0XFx0aWYgKG1kaW9fcGh5X2lkX2lzX2M0NShtaWlfZGF0YS1cXHUwMDNlcGh5X2lkKSkge1xcbiAzNDc6XFx0XFx0XFx0XFx0cHJ0YWQgPSBtZGlvX3BoeV9pZF9wcnRhZChtaWlfZGF0YS1cXHUwMDNlcGh5X2lkKTtcXG4gMzQ4OlxcdFxcdFxcdFxcdGRldmFkID0gbWRpb19waHlfaWRfZGV2YWQobWlpX2RhdGEtXFx1MDAzZXBoeV9pZCk7XFxuIDM0OTpcXHRcXHRcXHR9IGVsc2Uge1xcbiAzNTA6XFx0XFx0XFx0XFx0cHJ0YWQgPSBtaWlfZGF0YS1cXHUwMDNlcGh5X2lkO1xcbiAzNTE6XFx0XFx0XFx0XFx0ZGV2YWQgPSBtaWlfZGF0YS1cXHUwMDNlcmVnX251bTtcXG4gMzUyOlxcdFxcdFxcdH1cXG4gMzUzOlxcdFxcdFxcdGlmIChwcnRhZCA9PSBwaHlkZXYtXFx1MDAzZW1kaW8uYWRkcikge1xcbiAzNTQ6XFx0XFx0XFx0XFx0c3dpdGNoIChkZXZhZCkge1xcbiAzNTU6XFx0XFx0XFx0XFx0Y2FzZSBNSUlfQk1DUjpcXG4gMzU2OlxcdFxcdFxcdFxcdFxcdGlmICgodmFsIFxcdTAwMjYgKEJNQ1JfUkVTRVQgfCBCTUNSX0FORU5BQkxFKSkgPT0gMCkge1xcbiAzNTc6XFx0XFx0XFx0XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0VOQUJMRSlcXG4gMzU4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGNoYW5nZV9hdXRvbmVnID0gdHJ1ZTtcXG4gMzU5OlxcdFxcdFxcdFxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjQ6NTUuOTgyNDA3NDI5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDgxMDIyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgUEhZIE1JSSBJT0NUTCoqXG5cbkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBvZiB0aGlzIGRyaXZlci4gV2hlbiBgU0lPQ1NNSUlSRUdgIGdldHMgY2FsbGVkLCBpcyBpdCB1c2luZyB0aGUgbW9yZSBzcGVjaWZpYyBgbWRpb2J1c19jNDVfd3JpdGVgIGZ1bmN0aW9uLCBvciB0aGUgZ2VuZXJhbCBgbWRpb2J1c193cml0ZWA/IEkgbmVlZCB0byBiZSBwcmVjaXNlIGFib3V0IGhvdyB0aGlzIE1JSSByZWdpc3RlciB3cml0ZSBpcyBiZWluZyBoYW5kbGVkLiBUaGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBlc3BlY2lhbGx5IHdpdGggUEhZIGludGVyYWN0aW9uLiBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgcmVzdCBvZiBgcGh5X21paV9pb2N0bGAgYW5kIHZlcmlmeSB0aGUgZXhhY3QgcGF0aCBvZiB0aGUgd3JpdGUgb3BlcmF0aW9uLiBHb3R0YSBtYWtlIHN1cmUgaXQncyB0aGUgZXhwZWN0ZWQgb25lIGZvciB0aGUgZ2l2ZW4gUEhZIHR5cGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTQyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNDo1OS41OTA1MTIzODFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNjA6XFx0XFx0XFx0XFx0XFx0XFx0aWYgKHZhbCBcXHUwMDI2IEJNQ1JfRlVMTERQTFgpXFxuIDM2MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xcbiAzNjI6XFx0XFx0XFx0XFx0XFx0XFx0ZWxzZVxcbiAzNjM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VkdXBsZXggPSBEVVBMRVhfSEFMRjtcXG4gMzY0OlxcdFxcdFxcdFxcdFxcdFxcdGlmICh2YWwgXFx1MDAyNiBCTUNSX1NQRUVEMTAwMClcXG4gMzY1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHBoeWRldi1cXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDAwO1xcbiAzNjY6XFx0XFx0XFx0XFx0XFx0XFx0ZWxzZSBpZiAodmFsIFxcdTAwMjYgQk1DUl9TUEVFRDEwMClcXG4gMzY3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHBoeWRldi1cXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDA7XFxuIDM2ODpcXHRcXHRcXHRcXHRcXHRcXHRlbHNlIHBoeWRldi1cXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDtcXG4gMzY5OlxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuIDM3MDpcXHRcXHRcXHRcXHRcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSlcXG4gMzcxOlxcdFxcdFxcdFxcdFxcdFxcdFxcdGNoYW5nZV9hdXRvbmVnID0gdHJ1ZTtcXG4gMzcyOlxcdFxcdFxcdFxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRU5BQkxFO1xcbiAzNzM6XFx0XFx0XFx0XFx0XFx0fVxcbiAzNzQ6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDM3NTpcXHRcXHRcXHRcXHRjYXNlIE1JSV9BRFZFUlRJU0U6XFxuIDM3NjpcXHRcXHRcXHRcXHRcXHRtaWlfYWR2X21vZF9saW5rbW9kZV9hZHZfdChwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nLFxcbiAzNzc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgdmFsKTtcXG4gMzc4OlxcdFxcdFxcdFxcdFxcdGNoYW5nZV9hdXRvbmVnID0gdHJ1ZTtcXG4gMzc5OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiAzODA6XFx0XFx0XFx0XFx0Y2FzZSBNSUlfQ1RSTDEwMDA6XFxuIDM4MTpcXHRcXHRcXHRcXHRcXHRtaWlfY3RybDEwMDBfbW9kX2xpbmttb2RlX2Fkdl90KHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmcsXFxuIDM4MjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgIHZhbCk7XFxuIDM4MzpcXHRcXHRcXHRcXHRcXHRjaGFuZ2VfYXV0b25lZyA9IHRydWU7XFxuIDM4NDpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gMzg1OlxcdFxcdFxcdFxcdGRlZmF1bHQ6XFxuIDM4NjpcXHRcXHRcXHRcXHRcXHQvKiBkbyBub3RoaW5nICovXFxuIDM4NzpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gMzg4OlxcdFxcdFxcdFxcdH1cXG4gMzg5OlxcdFxcdFxcdH1cXG4gMzkwOlxcdFxcbiAzOTE6XFx0XFx0XFx0aWYgKG1kaW9fcGh5X2lkX2lzX2M0NShtaWlfZGF0YS1cXHUwMDNlcGh5X2lkKSlcXG4gMzkyOlxcdFxcdFxcdFxcdG1kaW9idXNfYzQ1X3dyaXRlKHBoeWRldi1cXHUwMDNlbWRpby5idXMsIHBydGFkLCBkZXZhZCxcXG4gMzkzOlxcdFxcdFxcdFxcdFxcdFxcdCAgbWlpX2RhdGEtXFx1MDAzZXJlZ19udW0sIHZhbCk7XFxuIDM5NDpcXHRcXHRcXHRlbHNlXFxuIDM5NTpcXHRcXHRcXHRcXHRtZGlvYnVzX3dyaXRlKHBoeWRldi1cXHUwMDNlbWRpby5idXMsIHBydGFkLCBkZXZhZCwgdmFsKTtcXG4gMzk2OlxcdFxcbiAzOTc6XFx0XFx0XFx0aWYgKHBydGFkID09IHBoeWRldi1cXHUwMDNlbWRpby5hZGRyIFxcdTAwMjZcXHUwMDI2XFxuIDM5ODpcXHRcXHRcXHQgICAgZGV2YWQgPT0gTUlJX0JNQ1IgXFx1MDAyNlxcdTAwMjZcXG4gMzk5OlxcdFxcdFxcdCAgICB2YWwgXFx1MDAyNiBCTUNSX1JFU0VUKVxcbiA0MDA6XFx0XFx0XFx0XFx0cmV0dXJuIHBoeV9pbml0X2h3KHBoeWRldik7XFxuIDQwMTpcXHRcXG4gNDAyOlxcdFxcdFxcdGlmIChjaGFuZ2VfYXV0b25lZylcXG4gNDAzOlxcdFxcdFxcdFxcdHJldHVybiBwaHlfc3RhcnRfYW5lZyhwaHlkZXYpO1xcbiA0MDQ6XFx0XFxuIDQwNTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDA2OlxcdFxcbiA0MDc6XFx0XFx0Y2FzZSBTSU9DU0hXVFNUQU1QOlxcbiA0MDg6XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlbWlpX3RzIFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlbWlpX3RzLVxcdTAwM2Vod3RzdGFtcF9zZXQpIHtcXG4gNDA5OlxcdFxcdFxcdFxcdGlmIChjb3B5X2Zyb21fdXNlcihcXHUwMDI2Y2ZnLCBpZnItXFx1MDAzZWlmcl9kYXRhLCBzaXplb2YoY2ZnKSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI0OjU5LjU5MDY3Mjc0MVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTIyOTAwMDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIFBIWSBNTUQgV3JpdGUgRnVuY3Rpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcGh5X21paV9pb2N0bGAgYW5kIEknbSBwcmV0dHkgc3VyZSBpdCAqZG9lc24ndCogZGlyZWN0bHkgY2FsbCBgcGh5X3dyaXRlX21tZGAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBpdCB3b3VsZCwgYnV0IG5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYWN0dWFsIGNhbGwgY2hhaW4uIE5vdywgSSBzZWUgdGhhdCBgcGh5X3dyaXRlX21tZGAgZ2V0cyBjYWxsZWQgZnJvbSBgZ2VucGh5X3dyaXRlX21tZF9jNDVgLCB3YWl0IGEgbWludXRlLCBubyB0aGF0IGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGlzIG1vcmUgY2FyZWZ1bGx5LlxuXG5MZXQgbWUgc2VlLi4uIHdoZXJlICppcyogYHBoeV93cml0ZV9tbWRgIGFjdHVhbGx5IGdldHRpbmcgY2FsbGVkPyBIbW0sIGl0IGxvb2tzIGxpa2UgYHBoeV93cml0ZV9tbWRgIGdldHMgY2FsbGVkIGluIGBydGxnZW5fd3JpdGVfbW1kYD8gTm8sIHdhaXQgYSBtaW51dGUsIGBydGxnZW5fd3JpdGVfbW1kYCBpcyBqdXN0IHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgYC53cml0ZV9tbWRgLiBTbywgSSBuZWVkIHRvIGtub3cgd2hlcmUgYC53cml0ZV9tbWRgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQuXG5cblJpZ2h0LCBoZXJlIHdlIGdvLi4uIGxvb2tzIGxpa2UgYC53cml0ZV9tbWRgIGlzIGNhbGxlZCBpbiBgX19waHlfd3JpdGVfbW1kYC4gVGhhdCdzIHRoZSBrZXkuIEFuZCBgX19waHlfd3JpdGVfbW1kYCBpcyAqZGlyZWN0bHkqIGNhbGxlZCBieSBgcGh5X3dyaXRlX21tZGAgaXRzZWxmLiBPa2F5LCB0aGF0J3Mgbm90IHRvbyBzdXJwcmlzaW5nLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcGFydC4gYHBoeV93cml0ZV9tbWRgIGlzIHRoZSB3b3JraG9yc2UuIEkgc2VlIGl0IGdldHMgY2FsbGVkIGZyb20gYSBidW5jaCBvZiBwbGFjZXMgd2l0aGluIHRoZSB2YXJpb3VzIFBIWSBkcml2ZXIgaW1wbGVtZW50YXRpb25zIC0gYXMgZXhwZWN0ZWQsIHRoYXQgbWFrZXMgc2Vuc2UuIEFuZCwgSSBzZWUgaXQncyBhbHNvIGNhbGxlZCBieSBzb21lIG9mIHRoZSBtb3JlIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgbGlrZSBgcGh5X2luaXRfZWVlYCBhbmQgYHBoeV9ldGh0b29sX3NldF9lZWVgIGFuZCBvdGhlciBQSFkgY29uZmlndXJhdGlvbiByb3V0aW5lcy4gU28sIGl0cyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUsIGFuZCB1c2VkIGJyb2FkbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTc1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MDYuNTEzNTc1NzA0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMzNDQ0OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X3dyaXRlX21tZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI1OjA2LjU1ODkxODY1MloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDg1NjAyNjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgRXRoZXJuZXQgZW5lcmd5IGVmZmljaWVuY3ksIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcmUuIEdpdmVuIHdoYXQgSSdtIGRlYWxpbmcgd2l0aCwgbXkgZmlyc3QgaHVuY2ggaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBsb3ctbGV2ZWwgUEhZIHNldHRpbmdzLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBleGFtaW5pbmcgdGhlIGBwaHlfZXRodG9vbF9zZXRfZWVlYCBmdW5jdGlvbiAob3Igc29tZXRoaW5nIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IGlmIHRoZSBzeXN0ZW0gdXRpbGl6ZXMgYSBjdXN0b20gb3IgdmVuZG9yLXNwZWNpZmljIG5hbWluZyBjb252ZW50aW9uKS4gSXQncyBhIHByZXR0eSBzdGFuZGFyZCBhcHByb2FjaCwgc28gdGhhdCdzIHdoZXJlIEknZCBzdGFydC4gSSBzdXNwZWN0IHRoYXQncyB3aGVyZSBJIGNhbiBmaW5kIHRoZSBjb250cm9sIHBvaW50cyB0byBhZGp1c3QgRUVFIGNhcGFiaWxpdGllcy4gSWYgdGhhdCBkb2Vzbid0IHlpZWxkIHJlc3VsdHMsIEknZCB0cmFjZSBiYWNrIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjI0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MTMuMDQ0NTI0OTc4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzU1NDYzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfd3JpdGVfbW1kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODI4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTI3NT1zdGF0aWMgaW50IGFkaW5fY29uZmlnX3JnbWlpX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzE2LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzE3OlxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zMTgtXFx0XFx0XFx0ICAgICBBRElOMTMwMF9HRV9SR01JSV9DRkdfUkVHLCByZWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz0zMjE9c3RhdGljIGludCBhZGluX2NvbmZpZ19ybWlpX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzQzLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzQ0OlxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDUtXFx0XFx0XFx0ICAgICBBRElOMTMwMF9HRV9STUlJX0NGR19SRUcsIHJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYz0xOTI9c3RhdGljIGludCBhZGluX3NldF9wb3dlcmRvd25fbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTk1LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjE5NjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTk3LVxcdFxcdFxcdCAgICBBRElOX0NSU01fU0ZUX1BEX0NOVFJMLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jPTQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhZGluMTE0MF9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy01NC1cXHRcXHQucmVhZF9tbWQgPSBnZW5waHlfcmVhZF9tbWRfYzQ1LFxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYzo1NTpcXHRcXHQud3JpdGVfbW1kID0gZ2VucGh5X3dyaXRlX21tZF9jNDUsXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTU2LVxcdFxcdC5nZXRfcGxjYV9jZmcgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM9MjcyPXN0YXRpYyBpbnQgYW44ODAxcl9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zMDAtXFx0XFx0XFx0XFx0ICAgICBMRURfQkxJTktfRFVSX01BU0spO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MzAxOlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEVEX0JMSU5LX0RVUixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMwMi1cXHRcXHRcXHRcXHQgICAgYmxpbmtfZHVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzA1LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MzA2OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEVEX09OX0RVUixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMwNy1cXHRcXHRcXHRcXHQgICAgaHdfZGVsYXlfb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz05MDI9c3RhdGljIGludCBhbjg4MDFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkxMS1cXHQvKiBEaXNhYmxlIExvdyBQb3dlciBNb2RlIChMUE0pICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5MTI6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBTjg4MDFfUkVHX1BIWV9JTlRFUk5BTDAsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MTMtXFx0XFx0XFx0ICAgIEZJRUxEX1BSRVAoQU44ODAxX1BIWV9JTlRGVU5DX01BU0ssIDB4MWUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTE2LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTE3OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQU44ODAxX1JFR19QSFlfSU5URVJOQUwxLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTE4LVxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfSU5URlVOQ19NQVNLLCAweDIpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTU3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTU4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk1OS1cXHRcXHRcXHQgICAgQU44ODAxX1BIWV9UWF9QQUlSX0RMWV9TRUxfR0JFLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NjQtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NjU6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBTjg4MDFfUEhZX1JYQURDX0NUUkwsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NjYtXFx0XFx0XFx0ICAgIEFOODgwMV9QSFlfUlhBRENfU0FNUF9QSFNFTF9BIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTcwLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTcxOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQU44ODAxX1BIWV9SWEFEQ19SRVZfMCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk3Mi1cXHRcXHRcXHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX1JYQURDX1JFVl9NQVNLX0EsIDEpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTc1LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTc2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQU44ODAxX1BIWV9SWEFEQ19SRVZfMSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk3Ny1cXHRcXHRcXHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX1JYQURDX1JFVl9NQVNLX0MsIDEpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTYxMD1zdGF0aWMgaW50IGFpcl9od19sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjI4LVxcdGlmIChjaGFuZ2VkKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYyOTpcXHRcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYzMC1cXHRcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX0JMSU5LKGluZGV4KSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTcwOD1zdGF0aWMgaW50IGFpcl9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NjQtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzY1OlxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0JMSU5LKGluZGV4KSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NjYtXFx0XFx0XFx0ICAgICBibGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz03OTc9c3RhdGljIGludCBhaXJfbGVkc19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBudW0sIGludCBkdXIsIGludCBtb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODAxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgwMjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0RVUl9CTElOSyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDMtXFx0XFx0XFx0ICAgIGR1cik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODA3OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfRFVSX09OLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwOC1cXHRcXHRcXHQgICAgZHVyIFxcdTAwM2VcXHUwMDNlIDEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTI4MT1zdGF0aWMgaW50IGVuODgxMWhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyOTgtXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI5OTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8xLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDAtXFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8xX01PREUxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDItXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzAzOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzIsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwNC1cXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzJfTU9ERTEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwNi1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDc6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA4LVxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfM19NT0RFMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzEwLVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMxMTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF80LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMTItXFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X01PREUxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTE0NTI9c3RhdGljIGludCBlbjg4MTFoX2NsZWFyX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NTUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQ1NjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NTctXFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX0RPQ01EKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQ2MTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF80LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjItXFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X0lOVENMUik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYz05MD1zdGF0aWMgaW50IGFxcl9md19sb2FkX21lbW9yeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk1LVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjk2OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy05Ny1cXHRcXHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UxLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk4LVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTFfQ1JDX1JFU0VUKTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzo5OTpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTAwLVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTAxLVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTNfTVNXX0FERFIoYWRkcikpO1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjEwMjpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTAzLVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMTUtXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTE2OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMTctXFx0XFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNV9NU1dfREFUQSh3b3JkKSk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTE4OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNixcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMTktXFx0XFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNl9MU1dfREFUQSh3b3JkKSk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTIwLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjEyMTpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTEsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTIyLVxcdFxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTFfRVhFQ1VURSB8XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYz0xNDk9c3RhdGljIGludCBhcXJfZndfYm9vdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCB1OCAqZGF0YSwgc2l6ZV90IHNpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yNjEtXFx0Lyogc3RhbGwgdGhlIG1pY3JvY3Byb2Nlc3NvciAqL1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjI2MjpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9DT05UUk9MMixcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yNjMtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTCB8IFZFTkQxX0dMT0JBTF9DT05UUk9MMl9VUF9SVU5fU1RBTExfT1ZEKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI4My1cXHQvKiBSZWxlYXNlIHRoZSBtaWNyb3Byb2Nlc3Nvci4gVVBfUkVTRVQgbXVzdCBiZSBoZWxkIGZvciAxMDAgdXNlYy4gKi9cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoyODQ6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfQ09OVFJPTDIsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjg1LVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9DT05UUk9MMl9VUF9SVU5fU1RBTEwgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjg5LVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjI5MDpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9DT05UUk9MMixcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yOTEtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTF9PVkQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2h3bW9uLmM9NTU9c3RhdGljIGludCBhcXJfaHdtb25fc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCByZWcsIGxvbmcgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYy02NC1cXHQvKiB0ZW1wIGlzIGluIHMxNiByYW5nZSBhbmQgd2UncmUgaW50ZXJlc3RlZCBpbiBsb3dlciAxNiBiaXRzIG9ubHkgKi9cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYzo2NTpcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCByZWcsICh1MTYpdGVtcCk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2h3bW9uLmMtNjYtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYz0yNTM9c3RhdGljIGludCBhcXJfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY0LVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MjY1OlxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9UWF9WRU5EX0lOVF9NQVNLMixcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI2Ni1cXHRcXHRcXHQgICAgZW4gPyBNRElPX0FOX1RYX1ZFTkRfSU5UX01BU0syX0xJTksgOiAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY5LVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MjcwOlxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX0lOVF9TVERfTUFTSyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI3MS1cXHRcXHRcXHQgICAgZW4gPyBWRU5EMV9HTE9CQUxfSU5UX1NURF9NQVNLX0FMTCA6IDApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNzQtXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNzU6XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfSU5UX1ZFTkRfTUFTSyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI3Ni1cXHRcXHRcXHQgICAgZW4gPyBWRU5EMV9HTE9CQUxfSU5UX1ZFTkRfTUFTS19HTE9CQUwzIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM9MzY5PXN0YXRpYyBpbnQgYXFyMTA1X3NldHVwX2ZvcmNlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDEtXFx0fVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6NDAyOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9BRFZFUlRJU0UsIGFkdik7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDMtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDQtXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjQwNTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fVkVORF9QUk9WLCB2ZW5kKTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNy1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6NDA4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl8xMEdCVF9DVFJMLCBjdHJsMTApO1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtNDA5LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz0yOTc9c3RhdGljIGludCBhZW9uX2Zpcm13YXJlX2Jvb3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgdTggKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMwNy1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjMwODpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0ZXX1NUQVJUX0FERFIsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMDktXFx0XFx0XFx0ICAgIEFFT05fQk9PVF9BRERSKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzI5LVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MzMwOlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMzMS1cXHRcXHRcXHRcXHQgICAgVkVORDFfR0xCX1JFR19NRElPX0lORElSRUNUX0xPQUQsIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMzNS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjMzNjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMzctXFx0XFx0XFx0ICAgIFZFTkQxX0dMQl9SRUdfQ1BVX1JFU0VUX0FERFJfTE9fQkFTRUFERFIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTM0MS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjM0MjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zNDMtXFx0XFx0XFx0ICAgIFZFTkQxX0dMQl9SRUdfQ1BVX1JFU0VUX0FERFJfSElfQkFTRUFERFIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jPTQwNT1zdGF0aWMgaW50IGFlb25faXBjX3NlbmRfY21kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTQyMi1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjQyMzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0lQQ19DTUQsIGNtZCk7XFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy00MjQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9NDU1PXN0YXRpYyBpbnQgYWVvbl9pcGNfc2VuZF9tc2coc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDcxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkYXRhX2xlbiAvIHNpemVvZih1MTYpOyBpKyspXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzo0NzI6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9JUENfREFUQShpKSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTQ3My1cXHRcXHRcXHQgICAgICBkYXRhW2ldKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTM3Mj1pbnQgYmNtX3BoeV9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzg1LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjM4NjpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIEJSQ01fQ0w0NVZFTl9FRUVfQ09OVFJPTCwgKHUzMil2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTM4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTQwNC1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo0MDU6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBCQ01fQ0w0NVZFTl9FRUVfQURWLCAodTMyKXZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNDA2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYz02Mjg9c3RhdGljIGludCBiY203eHh4XzI4bm1fZXBoeV9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYy02NTctXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYzo2NTg6c3RhdGljIGludCBiY203eHh4XzI4bm1fZXBoeV93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jLTY1OS1cXHRcXHRcXHRcXHQgICAgICAgaW50IGRldm51bSwgdTE2IHJlZ251bSwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmM9ODIxPXN0YXRpYyBpbnQgYmNtN3h4eF8yOG5tX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jLTg4Ni1cXHQucmVhZF9tbWRcXHQ9IGJjbTd4eHhfMjhubV9lcGh5X3JlYWRfbW1kLFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jOjg4NzpcXHQud3JpdGVfbW1kXFx0PSBiY203eHh4XzI4bm1fZXBoeV93cml0ZV9tbWQsXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtODg4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jPTk5PXN0YXRpYyBpbnQgYmNtODQ4OXhfbGVkX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTAzLVxcbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jOjEwNDpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfUE1BUE1ELFxcbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jLTEwNS1cXHRcXHRcXHQgICAgYmNtODQ4OXhfbGVkX3JlZ3NbaW5kZXhdLm1hc2tfbG93LCBsb3cpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTA3LVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmM6MTA4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTA5LVxcdFxcdFxcdCAgICBiY204NDg5eF9sZWRfcmVnc1tpbmRleF0ubWFza19leHQsIGV4dCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jPTM0PXN0YXRpYyBpbnQgYmNtODd4eF9vZl9yZWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy02OC1cXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jOjY5OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBkZXZpZCwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtNzAtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jPTE0MD1zdGF0aWMgaW50IGJjbTg3eHhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtMTU0LVxcdFxcdHJlZyB8PSAxO1xcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM6MTU1OlxcdFxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QQ1MsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTYtXFx0XFx0XFx0XFx0ICAgIEJDTTg3WFhfTEFTSV9DT05UUk9MLCByZWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTgtXFx0XFx0cmVnIFxcdTAwMjY9IH4xO1xcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM6MTU5OlxcdFxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QQ1MsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNjAtXFx0XFx0XFx0XFx0ICAgIEJDTTg3WFhfTEFTSV9DT05UUk9MLCByZWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYz0yMTQ9c3RhdGljIGludCBkcDgzODIyX2NvbmZpZ193b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjI5LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjMwOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0RBMSxcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTIzMS1cXHRcXHRcXHQgICAgICAobWFjWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgbWFjWzBdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjIzMjpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIE1JSV9EUDgzODIyX1dPTF9EQTIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMzMtXFx0XFx0XFx0ICAgICAgKG1hY1szXSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY1syXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyMzQ6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfREEzLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjM1LVxcdFxcdFxcdCAgICAgIChtYWNbNV0gXFx1MDAzY1xcdTAwM2MgOCkgfCBtYWNbNF0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNDQtXFx0XFx0aWYgKHdvbC1cXHUwMDNld29sb3B0cyBcXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI0NTpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNDYtXFx0XFx0XFx0XFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AxLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjQ3LVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1sxXSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzBdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI0ODpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNDktXFx0XFx0XFx0XFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjUwLVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1szXSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzJdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI1MTpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNTItXFx0XFx0XFx0XFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNjQtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyNjU6XFx0XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI2Ni1cXHRcXHRcXHRcXHQgICAgIE1JSV9EUDgzODIyX1dPTF9DRkcsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM9MTA0NT1zdGF0aWMgaW50IGRwODM4MjJfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTEwNTItXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoxMDUzOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0NGRywgdmFsdWUgfFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMTA1NC1cXHRcXHQgICAgICBEUDgzODIyX1dPTF9DTFJfSU5ESUNBVElPTik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTIxMT1zdGF0aWMgaW50IGRwODM4Njdfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzEtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMzI6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQxLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjMzLVxcdFxcdFxcdFxcdCAgICAgIChtYWNbMV0gXFx1MDAzY1xcdTAwM2MgOCB8IG1hY1swXSkpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM0OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzNS1cXHRcXHRcXHRcXHQgICAgICAobWFjWzNdIFxcdTAwM2NcXHUwMDNjIDggfCBtYWNbMl0pKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzNjpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzctXFx0XFx0XFx0XFx0ICAgICAgKG1hY1s1XSBcXHUwMDNjXFx1MDAzYyA4IHwgbWFjWzRdKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0NC1cXHRcXHRpZiAod29sLVxcdTAwM2V3b2xvcHRzIFxcdTAwMjYgV0FLRV9NQUdJQ1NFQ1VSRSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQ1OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0Ni1cXHRcXHRcXHRcXHQgICAgICAod29sLVxcdTAwM2Vzb3Bhc3NbMV0gXFx1MDAzY1xcdTAwM2MgOCkgfCB3b2wtXFx1MDAzZXNvcGFzc1swXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDc6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ4LVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1szXSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzJdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0OTpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTAtXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzVdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbNF0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNzE6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZDRkcsIHZhbF9yeGNmZyk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzItXFx0cGh5X3dyaXRlKHBoeWRldiwgTUlJX0RQODM4NjdfTUlDUiwgdmFsX21pY3IpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz03MzY9c3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgwOC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgwOTpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JHTUlJQ1RMLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODEwLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODExOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUkdNSUlEQ1RMLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODEyLVxcdFxcdFxcdCAgICAgIGRwODM4NjctXFx1MDAzZXJ4X2lkX2RlbGF5IHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODE2LVxcdFxcdHZhbCBcXHUwMDI2PSB+RFA4Mzg2N19SR01JSV9FTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgxNzpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JHTUlJQ1RMLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODE4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODYwLVxcdFxcdFxcdHZhbCBcXHUwMDI2PSB+RFA4Mzg2N19TR01JSV9UWVBFO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODYxOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfU0dNSUlDVEwsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04NjItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTkzNT1zdGF0aWMgaW50IGRwODM4NjdfcGh5X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk1My1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjk1NDpcXHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X0RTUF9GRkVfQ0ZHLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTU1LVxcdFxcdFxcdCAgICAweDBlODEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYz0yNTk9c3RhdGljIGludCBkcDgzODY5X3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMjg2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6Mjg3OlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yODgtXFx0XFx0XFx0XFx0XFx0ICAgIERQODM4NjlfUlhGUE1EMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMjkyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MjkzOlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTQtXFx0XFx0XFx0XFx0XFx0ICAgIERQODM4NjlfUlhGUE1EMixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMjk4LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6Mjk5OlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMDAtXFx0XFx0XFx0XFx0XFx0ICAgIERQODM4NjlfUlhGUE1EMyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzEwLVxcdFxcdGlmICh3b2wtXFx1MDAzZXdvbG9wdHMgXFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozMTE6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMxMi1cXHRcXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9SWEZTT1AxLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozMTc6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMxOC1cXHRcXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9SWEZTT1AyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMjEtXFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjMyMjpcXHRcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzIzLVxcdFxcdFxcdFxcdFxcdCAgICBEUDgzODY5X1JYRlNPUDMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTM0Ni1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjM0NzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLCBEUDgzODY5X1JYRkNGRywgdmFsX3J4Y2ZnKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTM0OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYz02OTQ9c3RhdGljIGludCBkcDgzODY5X2NvbmZpZ3VyZV9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTcxOC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjcxOTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLCBEUDgzODY5X09QX01PREUsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03MjAtXFx0XFx0XFx0ICAgIHBoeV9jdHJsX3ZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc1My1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjc1NDpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzU1LVxcdFxcdFxcdFxcdCAgICBEUDgzODY5X0ZYX0NUUkwsIERQODM4NjlfRlhfQ1RSTF9ERUZBVUxUKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzY1LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6NzY2OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03NjctXFx0XFx0XFx0XFx0ICAgIERQODM4NjlfRlhfQ1RSTCwgRFA4Mzg2OV9GWF9DVFJMX0RFRkFVTFQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03ODYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo3ODc6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc4OC1cXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9GWF9DVFJMLCBEUDgzODY5X0ZYX0NUUkxfREVGQVVMVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jPTgwND1zdGF0aWMgaW50IGRwODM4NjlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODM0LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6ODM1OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04MzYtXFx0XFx0XFx0XFx0ICAgIERQODM4NjlfQU5BX1BMTF9QUk9HX1BJLCAweDEwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODQ3LVxcdGlmIChwaHlfaW50ZXJmYWNlX2lzX3JnbWlpKHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjg0ODpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLCBEUDgzODY5X1JHTUlJRENUTCxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTg0OS1cXHRcXHRcXHRcXHQgICAgZHA4Mzg2OS1cXHUwMDNlcnhfaW50X2RlbGF5IHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODY3LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6ODY4OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfUkdNSUlDVEwsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NjktXFx0XFx0XFx0XFx0ICAgIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM9OTc9c3RhdGljIGludCBkcDgzODExX3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTItXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExMzpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREExLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTQtXFx0XFx0XFx0ICAgICAgKG1hY1sxXSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY1swXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExNTpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREEyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTYtXFx0XFx0XFx0ICAgICAgKG1hY1szXSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY1syXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExNzpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREEzLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTgtXFx0XFx0XFx0ICAgICAgKG1hY1s1XSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY1s0XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTI3LVxcdFxcdGlmICh3b2wtXFx1MDAzZXdvbG9wdHMgXFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjEyODpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMjktXFx0XFx0XFx0XFx0ICAgICAgTUlJX0RQODM4MTFfUlhTT1AxLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzAtXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMF0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxMzE6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTMyLVxcdFxcdFxcdFxcdCAgICAgIE1JSV9EUDgzODExX1JYU09QMixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTMzLVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1szXSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzJdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTM0OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEzNS1cXHRcXHRcXHRcXHQgICAgICBNSUlfRFA4MzgxMV9SWFNPUDMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxNDg6XFx0XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTE0OS1cXHRcXHRcXHRcXHQgICAgIE1JSV9EUDgzODExX1dPTF9DRkcsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYz01MzA9c3RhdGljIGludCBkcDgzdGQ1MTBfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01MzQtXFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJydXB0cyA9PSBQSFlfSU5URVJSVVBUX0VOQUJMRUQpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NTM1OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNTM2LVxcdFxcdFxcdFxcdCAgICBEUDgzVEQ1MTBFX0lOVEVSUlVQVF9SRUdfMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01NDYtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NTQ3OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNTQ4LVxcdFxcdFxcdFxcdCAgICBEUDgzVEQ1MTBFX0lOVEVSUlVQVF9SRUdfMSwgMHgwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYz02ODQ9c3RhdGljIGludCBkcDgzdGQ1MTBfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTczOC1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzM5OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9URFJfQ0ZHMixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzQwLVxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKERQODNURDUxMEVfVERSX0VORF9UQVBfSU5ERVhfMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NDYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjc0NzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURDUxMEVfVERSX0ZBVUxUX0NGRzEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc0OC1cXHRcXHRcXHQgICAgRklFTERfUFJFUChEUDgzVEQ1MTBFX1REUl9GTFRfTE9DX09GRlNFVF8xLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc1Ny1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzU4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9VTktOXzAzMEUsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc1OS1cXHRcXHRcXHQgICAgRFA4M1RENTEwRV8wMzBFX1ZBTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzYyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo3NjM6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1REUl9DRkczLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NjQtXFx0XFx0XFx0ICAgIERQODNURDUxMEVfVERSX1RYX0RVUkFUSU9OX1VTX0RFRik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM9MzI0PXN0YXRpYyBpbnQgZHA4M3RnNzIwX2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNDAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM0MTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVERSX0NGRzIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0Mi1cXHRcXHRcXHQgICAgMHhhMDA4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNDUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM0NjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVERSX0NGRzMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0Ny1cXHRcXHRcXHQgICAgMHgwOTI4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNTAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM1MTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVERSX0NGRzQsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1Mi1cXHRcXHRcXHQgICAgMHgwMDA0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNTUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM1NjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVU5LTk9XTl8wNDA1LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNTctXFx0XFx0XFx0ICAgIDB4NjQwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzYwLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzozNjE6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX1VOS05PV05fMDgzRixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzYyLVxcdFxcdFxcdCAgICAweDMwMDMpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jPTU1OD1zdGF0aWMgaW50IGRwODN0ZzcyMF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTU3NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6NTc2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19MUFNfQ0ZHMyxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtNTc3LVxcdFxcdFxcdCAgICBEUDgzVEc3MjBTX0xQU19DRkczX1BXUl9NT0RFXzApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYz0yNDU9c3RhdGljIGludCB4d2F5X2dwaHlfaW5pdF9sZWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI1OS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI2MDpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRENILFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjYxLVxcdFxcdCAgICAgIFhXQVlfTU1EX0xFRENIX05BQ1NfTk9ORSB8XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI2My1cXHRcXHQgICAgICBYV0FZX01NRF9MRURDSF9GQkZfRjE2SFopO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjY0OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEQ0wsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNjUtXFx0XFx0ICAgICAgWFdBWV9NTURfTEVEQ0hfQ0JMSU5LX05PTkUgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNzYtXFx0XFx0WFdBWV9NTURfTEVEeExfQkxJTktTX05PTkU7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNzc6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQwSCwgbGVkeGgpO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Mjc4OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMEwsIGxlZHhsKTtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI3OTpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDFILCBsZWR4aCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyODA6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQxTCwgbGVkeGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjgxOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMkgsIGxlZHhoKTtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI4MjpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDJMLCBsZWR4bCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yODMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTM5Mz1zdGF0aWMgaW50IHh3YXlfZ3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDEwLVxcdGlmICh2YWx1ZSA9PSBMRURfT0ZGKSB7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo0MTE6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUR4SChpbmRleCksIDApO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDEyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTQxNC1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjQxNTpcXHRcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUR4TChpbmRleCksIDApO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDE2LVxcdH0gZWxzZSB7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MTMuMDkyMDgzOTY2WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzOTkwNTMxODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYHBoeV93cml0ZV9tbWRgIFVzYWdlKipcblxuT2theSwgc28gYHBoeV93cml0ZV9tbWRgIGlzIGEgZnVuY3Rpb24gdGhhdCdzIGNsZWFybHkgYmVpbmcgdXRpbGl6ZWQgYWNyb3NzIGEgc2lnbmlmaWNhbnQgcG9ydGlvbiBvZiB0aGUgUEhZIGRyaXZlciBjb2RlYmFzZS4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBicm9hZGx5IHVzZWQgbWVyaXRzIGNhcmVmdWwgc2NydXRpbnkuIEJ1dCB3YWl0LCBkaWQgSSBqdXN0IHNlZSB0aGF0IGBwaHlfZXRodG9vbF9zZXRfZWVlYCBpcyBjYWxsaW5nIGBwaHlfd3JpdGVfbW1kYD8gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgaW50ZXJhY3RzIHdpdGggdGhlIE1NRCByZWdpc3RlciB3cml0ZXMsIGFzIHRoaXMgaW50ZXJhY3Rpb24gbWF5IGJlIGltcG9ydGFudCBmb3IgZGVidWcuIExldCdzIGRpZyBpbnRvIGBwaHlfZXRodG9vbF9zZXRfZWVlYCBhbmQgc2VlIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMzYzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MjcuMDgyNjE3ODQ4WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzk0NjUzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZXRodG9vbF9zZXRfZWVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS5jPTE5NTI9RVhQT1JUX1NZTUJPTChwaHlfZXRodG9vbF9nZXRfZWVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTU0LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxOTU1OiAqIHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcgLSBBZGp1c3RzIE1BQyBMUEkgY29uZmlndXJhdGlvbiB3aXRob3V0IFBIWVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTU2LSAqXFx0XFx0XFx0ICAgICAgIHJlbmVnb3RpYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTY3LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxOTY4OnN0YXRpYyB2b2lkIHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTk2OS1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZWVlX2NvbmZpZyAqb2xkX2NmZylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTg5LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxOTkwOiAqIHBoeV9ldGh0b29sX3NldF9lZWUgLSBzZXQgRUVFIHN1cHBvcnRlZCBhbmQgc3RhdHVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5OTEtICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTk5NS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTk5NjppbnQgcGh5X2V0aHRvb2xfc2V0X2VlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDEwLVxcdGlmIChyZXQgPT0gMClcXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MjAxMTpcXHRcXHRwaHlfZXRodG9vbF9zZXRfZWVlX25vbmVnKHBoeWRldiwgXFx1MDAyNm9sZF9jZmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDEyLVxcdGVsc2UgaWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMjAxOC19XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjIwMTk6RVhQT1JUX1NZTUJPTChwaHlfZXRodG9vbF9zZXRfZWVlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMjAyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMj1pbnQgcGh5bGlua19ldGh0b29sX3NldF9lZWUoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplZWUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzNDItXFx0XFx0XFx0XFx0ICAgICBwbC1cXHUwMDNlc3VwcG9ydGVkX2xwaSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzQzOlxcdFxcdHJldCA9IHBoeV9ldGh0b29sX3NldF9lZWUocGwtXFx1MDAzZXBoeWRldiwgZWVlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzNDQtXFx0XFx0aWYgKHJldCA9PSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNToyNy4xMzA1NjkxMzZaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY1OTgwMzk4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gcGh5X2V0aHRvb2xfc2V0X2VlZSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgcGh5X2V0aHRvb2xfc2V0X2VlZWAgaW4gYHBoeS5jYC4gU3RyYWlnaHQgYXdheSwgSSdtIGVudmlzaW9uaW5nIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJdCdzIHRoZSBFRUUgKEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQpIHNldHRpbmcgZnVuY3Rpb24sIG1lYW5pbmcgaXQncyBob3cgd2UncmUgY29udHJvbGxpbmcgdGhlIHBvd2VyLXNhdmluZyBiZWhhdmlvciBvZiB0aGUgUEhZLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljIFBIWSByZWdpc3RlcnMgaW52b2x2ZWQgaW4gRUVFIG5lZ290aWF0aW9uIGFuZCBvcGVyYXRpb24uXG5cbkknbSBwcm9iYWJseSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBmdW5jdGlvbidzIGNhbGwgZmxvdyB0byBzZWUgaG93IHRoZSBhcmd1bWVudHMgYXJlIGhhbmRsZWQgYW5kIGlmIHRoZXJlJ3MgYW55IGNyaXRpY2FsIHZhbGlkYXRpb24uIEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgZ2VuZXJpYyBQSFkgZHJpdmVyIGZyYW1ld29yayBhbmQgYW55IHZlbmRvci1zcGVjaWZpYyBleHRlbnNpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheS4gSSdsbCBiZSBsb29raW5nIGZvciBob3cgaXQgc2V0cyB0aGUgQXV0by1NRElYIG1vZGUgYWxvbmdzaWRlIHRoZSBFRUUgY29uZmlndXJhdGlvbiwgc2luY2UgdGhlIGNvbWJpbmF0aW9uIG9mIHRob3NlIHR3byBzZXR0aW5ncyBpcyBwcmV0dHkgaW1wb3J0YW50LlxuXG5JIGV4cGVjdCB0byBzZWUgdGhlIGZ1bmN0aW9uIGludGVyYWN0aW5nIHdpdGggdGhlIE1NRCByZWdpc3RlcnMsIGFzIHRoYXQncyBvZnRlbiB3aGVyZSB0aGUgRUVFIHNldHRpbmdzIGxpdmUuIEknbGwgbmVlZCB0byBjaGVjayBob3cgaXQgaGFuZGxlcyB0aGUgcG90ZW50aWFsIGZvciByZXRyaWVzIG9yIGVycm9yIGhhbmRsaW5nIGR1cmluZyB0aGUgcmVnaXN0ZXIgd3JpdGVzLiBJJ20gYWxzbyBjdXJpb3VzIGlmIGl0IGR5bmFtaWNhbGx5IGFkanVzdHMgYW55IG90aGVyIHNldHRpbmdzIGJhc2VkIG9uIHRoZSBFRUUgY29uZmlndXJhdGlvbiwgbGlrZSBsaW5rIHNwZWVkIG9yIGR1cGxleC4gSXQncyBhbHNvIHdvcnRoIGxvb2tpbmcgZm9yIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBQSFkgcmV2aXNpb25zIG9yIHZlbmRvci1zcGVjaWZpYyBFRUUgZmVhdHVyZXMuIEknbGwgaGF2ZSB0byBzZWUgaWYgdGhlIGRyaXZlciBjb3JyZWN0bHkgaGFuZGxlcyBzaXR1YXRpb25zIHdoZXJlIHRoZSBQSFkgbWlnaHQgbm90IHN1cHBvcnQgRUVFLCBhbmQgYWxzbyBob3cgaXQgcmVwb3J0cyB0aGUgc2V0dGluZyBiYWNrIHRvIHRoZSB1c2VyIHNwYWNlLlxuXG5CYXNpY2FsbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHBpY3R1cmUsIGZyb20gdXNlci1zcGFjZSByZXF1ZXN0IHRvIFBIWSByZWdpc3RlciB3cml0ZXMsIHNvIEkgY2FuIGVuc3VyZSBpdCdzIGRvaW5nIHRoZSByaWdodCB0aGluZywgYW5kIGVmZmljaWVudGx5IHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMyNzUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNTozMi43OTAzNzYzOTdaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTk2LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTk2OlxcdGludCBwaHlfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXFxuMTk5NzpcXHR7XFxuMTk5ODpcXHRcXHRzdHJ1Y3QgZWVlX2NvbmZpZyBvbGRfY2ZnO1xcbjE5OTk6XFx0XFx0aW50IHJldDtcXG4yMDAwOlxcdFxcbjIwMDE6XFx0XFx0aWYgKCFwaHlkZXYtXFx1MDAzZWRydilcXG4yMDAyOlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjIwMDM6XFx0XFxuMjAwNDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHlkZXYtXFx1MDAzZWxvY2spO1xcbjIwMDU6XFx0XFxuMjAwNjpcXHRcXHRvbGRfY2ZnID0gcGh5ZGV2LVxcdTAwM2VlZWVfY2ZnO1xcbjIwMDc6XFx0XFx0ZWVlX3RvX2VlZWNmZyhcXHUwMDI2cGh5ZGV2LVxcdTAwM2VlZWVfY2ZnLCBkYXRhKTtcXG4yMDA4OlxcdFxcbjIwMDk6XFx0XFx0cmV0ID0gZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUocGh5ZGV2LCBkYXRhKTtcXG4yMDEwOlxcdFxcdGlmIChyZXQgPT0gMClcXG4yMDExOlxcdFxcdFxcdHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcocGh5ZGV2LCBcXHUwMDI2b2xkX2NmZyk7XFxuMjAxMjpcXHRcXHRlbHNlIGlmIChyZXQgXFx1MDAzYyAwKVxcbjIwMTM6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VlZWVfY2ZnID0gb2xkX2NmZztcXG4yMDE0OlxcdFxcbjIwMTU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHlkZXYtXFx1MDAzZWxvY2spO1xcbjIwMTY6XFx0XFxuMjAxNzpcXHRcXHRyZXR1cm4gcmV0IFxcdTAwM2MgMCA/IHJldCA6IDA7XFxuMjAxODpcXHR9XFxuMjAxOTpcXHRFWFBPUlRfU1lNQk9MKHBoeV9ldGh0b29sX3NldF9lZWUpO1xcbjIwMjA6XFx0XFxuMjAyMTpcXHQvKipcXG4yMDIyOlxcdCAqIHBoeV9ldGh0b29sX3NldF93b2wgLSBDb25maWd1cmUgV2FrZSBPbiBMQU5cXG4yMDIzOlxcdCAqXFxuMjAyNDpcXHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4yMDI1OlxcdCAqIEB3b2w6IENvbmZpZ3VyYXRpb24gcmVxdWVzdGVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI1OjMyLjc5MDUyNzEzN1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEzNjk3MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZWAgaGFzIGJlZW4gaW52b2tlZC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgZGlnIGluIGFuZCB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLiBHaXZlbiB0aGUgbmFtZSwgSSdtIGJldHRpbmcgaXQgcmVsYXRlcyB0byBzZXR0aW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgcGFyYW1ldGVycywgYW5kIHRoZSBcImdlbnBoeV9jNDVcIiBwcmVmaXggc3VnZ2VzdHMgaXQncyBkZWFsaW5nIHdpdGggYSBnZW5lcmljIFBIWSwgc3BlY2lmaWNhbGx5IG9uZSB0aGF0J3MgbWFuYWdlZCB0aHJvdWdoIHRoZSBDbGF1c2UgNDUgKG9yIE1ESU8pIGludGVyZmFjZSwgbGlrZWx5IHZpYSBhIHN0YW5kYXJkaXplZCByZWdpc3RlciBzZXQuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZTpcblxuKiAgIFdoYXQgc3BlY2lmaWMgRUVFIHBhcmFtZXRlcnMgaXMgaXQgZGVzaWduZWQgdG8gbW9kaWZ5PyBJcyBpdCBjb250cm9sbGluZyB0aGUgYWR2ZXJ0aXNlZCBjYXBhYmlsaXRpZXMsIHRoZSBvcGVyYXRpb25hbCBzZXR0aW5ncywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/XG4qICAgSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZT8gRG9lcyBpdCBkaXJlY3RseSB3cml0ZSB0byB0aGUgUEhZIHJlZ2lzdGVycywgb3IgZG9lcyBpdCB1dGlsaXplIHNvbWUgYWJzdHJhY3Rpb24gbGF5ZXIgb3IgaGVscGVyIGZ1bmN0aW9ucz9cbiogICBXaGF0J3MgdGhlIG92ZXJhbGwgY29udGV4dD8gSXMgdGhpcyBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiwgbGluayBjb25maWd1cmF0aW9uLCBvciBhcyBhIHJlc3BvbnNlIHRvIGFuIGBldGh0b29sYCBjb21tYW5kPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIGNydWNpYWwuXG4qICAgQXJlIHRoZXJlIGFueSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgUEhZIG1vZGVsIG9yIGNhcGFiaWxpdGllcz8gRG9lcyBpdCBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIGNlcnRhaW4gcmVnaXN0ZXJzIG9yIGZlYXR1cmVzPyBJIG5lZWQgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCBmb3IgaGFyZHdhcmUtc3BlY2lmaWMgaGFuZGxpbmcuXG4qICAgV2hhdCBlcnJvciBoYW5kbGluZyBpcyBwcmVzZW50PyBBcmUgdGhlcmUgY2hlY2tzIGZvciBpbnZhbGlkIGlucHV0IG9yIGNvbW11bmljYXRpb24gZmFpbHVyZXMgd2l0aCB0aGUgUEhZP1xuXG5JJ2xsIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGZ1bmN0aW9uJ3MgZXhlY3V0aW9uIHBhdGggYW5kIGNhcmVmdWxseSBleGFtaW5lIHRoZSByZWdpc3RlciBhY2Nlc3Nlcy4gSSdsbCBuZWVkIHRvIGNvcnJlbGF0ZSB0aGVzZSB3aXRoIHRoZSBDbGF1c2UgNDUgc3BlY2lmaWNhdGlvbnMgdG8gZGV0ZXJtaW5lIHRoZSBleGFjdCBpbXBhY3Qgb24gdGhlIFBIWSdzIEVFRSBiZWhhdmlvci4gQW55IHVzZSBvZiBtYXNrcyBvciBiaXRmaWVsZHMgd2lsbCBiZSBvZiBwYXJ0aWN1bGFyIGludGVyZXN0LiBJIHdhbnQgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIHRoaW5ncyBsaWtlIHRoZSBMUEkgKExvdyBQb3dlciBJZGxlKSB0aW1lcnMgYW5kIG90aGVyIEVFRS1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBCYXNpY2FsbHksIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzIGRvaW5nIHRoZSByaWdodCB0aGluZywgaW4gdGhlIHJpZ2h0IHdheSwgYW5kIHVuZGVyIHRoZSByaWdodCBjb25kaXRpb25zLCB3aXRob3V0IHVuaW50ZW50aW9uYWxseSBicmVha2luZyBhbnl0aGluZyBlbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDE2MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MzguMTA0MjI3NTA5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjAzNzAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM9MTY1Nz1FWFBPUlRfU1lNQk9MKGdlbnBoeV9jNDVfZXRodG9vbF9nZXRfZWVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY1OS0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE2NjA6ICogZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUgLSBzZXQgRUVFIHN1cHBvcnRlZCBhbmQgc3RhdHVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjYxLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjcxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTY3MjppbnQgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2NzMtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE3MDgtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTcwOTpFWFBPUlRfU1lNQk9MKGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE3MTAtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MTk5Nj1pbnQgcGh5X2V0aHRvb2xfc2V0X2VlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTIwMDgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjIwMDk6XFx0cmV0ID0gZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUocGh5ZGV2LCBkYXRhKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMjAxMC1cXHRpZiAocmV0ID09IDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI1OjM4LjE1MDI3MzY3OFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODM5OTM4MTYxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlYCBmdW5jdGlvbi5cblxuKipBbmFseXppbmcgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUqKlxuXG5SaWdodCwgc28gdGhpcyBmdW5jdGlvbiBpcyBjbGVhcmx5IGFib3V0IHNldHRpbmcgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCAoRUVFKSBwYXJhbWV0ZXJzIGZvciBhIGdlbmVyaWMgUEhZIHRoYXQncyB1c2luZyB0aGUgQ2xhdXNlIDQ1IChDNDUpIHJlZ2lzdGVyIGludGVyZmFjZS4gV2UncmUgZGVhbGluZyB3aXRoIGEgY29tbW9uIFBIWSwgd2hpY2ggbWVhbnMgdGhlcmUncyBhIGdvb2QgY2hhbmNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYSBicm9hZGVyIGRyaXZlciwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgcGljdHVyZS5cblxuRmlyc3QsIEkgbmVlZCB0byBzZWUgaWYgaXQgaGFuZGxlcyB0aGUgY29uZmlndXJhdGlvbiBvZiBFRUUgYmFzZWQgb24gd2hhdCdzIHBhc3NlZCBpbiBmcm9tIGV0aHRvb2wuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyByZXF1aXJlZCBvbiB0aGUgaGFyZHdhcmUgc2lkZSBhbmQgaG93IHRoZSBkcml2ZXIgdHJhbnNsYXRlcyB0aGUgdXNlcidzIGludGVudGlvbiAoZW5hYmxlLCBkaXNhYmxlLCBzcGVjaWZpYyBzZXR0aW5ncykgaW50byBhY3R1YWwgcmVnaXN0ZXIgd3JpdGVzLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl0IHVzZXMgc29tZSBzb3J0IG9mIGhlbHBlciBmdW5jdGlvbnMgb3Igc3RydWN0dXJlcyB0byBhYnN0cmFjdCB0aGUgQzQ1IHJlZ2lzdGVyIGFjY2Vzcywgb3IgaWYgaXQgaGFzIHRvIGRpcmVjdGx5IG1hbmlwdWxhdGUgdGhlIHJlZ2lzdGVycy4gSSdsbCBuZWVkIHRvIGFzc2VzcyBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgd2hhdCB0aGUgZmxvdyBpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgUEhZIHNldHRpbmdzLlxuXG5HaXZlbiB0aGF0IGl0J3MgYGdlbnBoeWAsIEknbSBhc3N1bWluZyBpdCdzIGRlc2lnbmVkIHRvIGJlIGZhaXJseSBnZW5lcmljLCBhbmQgSSdkIGV4cGVjdCBpdCB0byBoYW5kbGUgdGhlIGJpdC1maWRkbGluZyBmb3IgdGhlIHJlbGV2YW50IEM0NSByZWdpc3RlcnMgY29ycmVjdGx5LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGRlYWxzIHdpdGggYWxsIHRoZSBjb3JuZXIgY2FzZXMgcHJvcGVybHksIGVzcGVjaWFsbHkgaWYgdGhlIGRldmljZSBoYXMgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIG9yIGxpbWl0YXRpb25zLiBJIGFsc28gd2FudCB0byBzZWUgaG93IHRoZSBzZXR0aW5ncyBhcmUgdmVyaWZpZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHNldCB2YWx1ZXMgd29yayBhcyBleHBlY3RlZC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCBoYW5kbGVzIGFueSBzcGVjaWFsIGNhc2VzIGZvciBDNDUgUEhZcyBvciBzcGVjaWZpYyBDNDUgdmVyc2lvbnMuIEl0J3MgbGlrZWx5IGFsc28gbG9va2luZyBhdCBzdGFuZGFyZCByZWdpc3RlcnMsIHNvIEkgaGF2ZSB0byBiZSBhYmxlIHRvIGZvbGxvdyB0aGUgZmxvdyBhbmQgc2VlIGhvdyB0aGluZ3MgZ2V0IHNldCB1cCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MTE0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjY6MjYuNTQ5NjU4MTgyWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2NzIsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2NzI6XFx0aW50IGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuMTY3MzpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcXG4xNjc0OlxcdHtcXG4xNjc1OlxcdFxcdGludCByZXQ7XFxuMTY3NjpcXHRcXG4xNjc3OlxcdFxcdGlmIChkYXRhLVxcdTAwM2VlZWVfZW5hYmxlZCkge1xcbjE2Nzg6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqYWR2ID0gZGF0YS1cXHUwMDNlYWR2ZXJ0aXNlZDtcXG4xNjc5OlxcdFxcbjE2ODA6XFx0XFx0XFx0aWYgKCFsaW5rbW9kZV9lbXB0eShhZHYpKSB7XFxuMTY4MTpcXHRcXHRcXHRcXHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyh0bXApO1xcbjE2ODI6XFx0XFxuMTY4MzpcXHRcXHRcXHRcXHRpZiAobGlua21vZGVfYW5kbm90KHRtcCwgYWR2LCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZF9lZWUpKSB7XFxuMTY4NDpcXHRcXHRcXHRcXHRcXHRwaHlkZXZfd2FybihwaHlkZXYsIFxcXCJBdCBsZWFzdCBzb21lIEVFRSBsaW5rIG1vZGVzIGFyZSBub3Qgc3VwcG9ydGVkLlxcXFxuXFxcIik7XFxuMTY4NTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNjg2OlxcdFxcdFxcdFxcdH1cXG4xNjg3OlxcdFxcbjE2ODg6XFx0XFx0XFx0XFx0bGlua21vZGVfYW5kbm90KHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLCBhZHYsXFxuMTY4OTpcXHRcXHRcXHRcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWVlZV9kaXNhYmxlZF9tb2Rlcyk7XFxuMTY5MDpcXHRcXHRcXHR9IGVsc2UgaWYgKGxpbmttb2RlX2VtcHR5KHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKSkge1xcbjE2OTE6XFx0XFx0XFx0XFx0cGh5X2FkdmVydGlzZV9lZWVfYWxsKHBoeWRldik7XFxuMTY5MjpcXHRcXHRcXHR9XFxuMTY5MzpcXHRcXHR9XFxuMTY5NDpcXHRcXG4xNjk1OlxcdFxcdHJldCA9IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHBoeWRldik7XFxuMTY5NjpcXHRcXHRpZiAocmV0IFxcdTAwM2UgMCkge1xcbjE2OTc6XFx0XFx0XFx0cmV0ID0gcGh5X3Jlc3RhcnRfYW5lZyhwaHlkZXYpO1xcbjE2OTg6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTY5OTpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjE3MDA6XFx0XFxuMTcwMTpcXHRcXHRcXHQvKiBleHBsaWNpdGx5IHJldHVybiAxLCBvdGhlcndpc2UgKHJldCBcXHUwMDNlIDApIHZhbHVlIHdpbGwgYmVcXG4xNzAyOlxcdFxcdFxcdCAqIG92ZXJ3cml0dGVuIGJ5IHBoeV9yZXN0YXJ0X2FuZWcoKS5cXG4xNzAzOlxcdFxcdFxcdCAqL1xcbjE3MDQ6XFx0XFx0XFx0cmV0dXJuIDE7XFxuMTcwNTpcXHRcXHR9XFxuMTcwNjpcXHRcXG4xNzA3OlxcdFxcdHJldHVybiByZXQ7XFxuMTcwODpcXHR9XFxuMTcwOTpcXHRFWFBPUlRfU1lNQk9MKGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKTtcXG4xNzEwOlxcdFxcbjE3MTE6XFx0LyoqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjI2LjU0OTc4NDkyMloiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDkzNDg1MTk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbDogYGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnYCoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb2RlIGZsb3cgaGFzIHJlYWNoZWQgYSBjYWxsIHRvIGBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZ2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGluIGFuZCBkaXNzZWN0IHRoaXMgZnVuY3Rpb24uIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiwgSSdtIGFscmVhZHkgbWFraW5nIHNvbWUgZWR1Y2F0ZWQgZ3Vlc3NlcywgYnV0IGxldCdzIGNvbmZpcm0gdGhlbS4gVGhlIGBnZW5waHlfYCBwcmVmaXggc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyByZWxhdGVkIHRvIGdlbmVyaWMgUEhZIChwaHlzaWNhbCBsYXllcikgb3BlcmF0aW9ucy4gVGhlIFwiQzQ1XCIgcGFydCBwcm9iYWJseSBpbmRpY2F0ZXMgdGhpcyBkZWFscyB3aXRoIENsYXVzZSA0NSByZWdpc3RlcnMsIG1lYW5pbmcgdGhpcyB3aWxsIGJlIGFuIE1ESU8gYmFzZWQgZnVuY3Rpb24uIFwiQU5cIiBpcyBhIG5vIGJyYWluZXIsIG1lYW5pbmcgaXQncyBsaW5rZWQgdG8gYXV0by1uZWdvdGlhdGlvbiwgYW5kIFwiRUVFXCIgcG9pbnRzIHRvIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQuIExhc3RseSwgdGhlIGBhbmVnYCBzdWZmaXgsIHdlbGwuLi4gdGhhdCBsb29rcyBzZWxmLWV4cGxhbmF0b3J5IVxuXG5TbywgdGhlIGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgY29uZmlndXJlIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgYXV0by1uZWdvdGlhdGlvbiwgcHJvYmFibHkgdXNpbmcgdGhlIE1ESU8gaW50ZXJmYWNlLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uJ3MgZGVmaW5pdGlvbiBhbmQgaW1wbGVtZW50YXRpb24sIG1heWJlIGV2ZW4gdGhlIGZ1bmN0aW9uJ3MgdXNhZ2UsIHRvIGZ1bGx5IGdyYXNwIGl0cyByb2xlIHdpdGhpbiB0aGUgd2lkZXIgUEhZIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBUaGlzIHdpbGwgaG9wZWZ1bGx5IGNsYXJpZnkgdGhlIHNwZWNpZmljIHJlZ2lzdGVycyBiZWluZyBhY2Nlc3NlZCwgdGhlIG5lZ290aWF0aW9uIHByb2Nlc3MgbG9naWMsIGFuZCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBpdCBoYXMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLiBJIGV4cGVjdCB0byBzZWUgcmVnaXN0ZXIgd3JpdGVzIHJlbGF0ZWQgdG8gYWR2ZXJ0aXNpbmcgRUVFIGNhcGFiaWxpdGllcyBhbmQgbWF5YmUgcmVhZGluZyBiYWNrIHRoZSByZXN1bHRzIG9mIHRoZSBhdXRvLW5lZ290aWF0aW9uIHByb2Nlc3MuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IEVFRSBpcyBlbmFibGVkIGFuZCBjb25maWd1cmVkIG9uIHRoaXMgcGFydGljdWxhciBQSFkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTUzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNjo0MS40ODQ2NDAxMDRaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzU0MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9MTE0ND1pbnQgYmNtX2NvbmZpZ19scmVfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGNoYW5nZWQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0xMTQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjExNDg6XFx0aWYgKGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHBoeWRldikgXFx1MDAzZSAwKVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTExNDktXFx0XFx0Y2hhbmdlZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTI2OT1pbnQgZ2VucGh5X2M0NV9hbl9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0yNzYtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoyNzc6XFx0cmV0ID0gZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTI3OC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM9MTA0OD1FWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X3JlYWRfZWVlX2FiaWxpdGllcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNTAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxMDUxOiAqIGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnIC0gY29uZmlndXJlIEVFRSBhZHZlcnRpc2VtZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xMDUyLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA1My0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjEwNTQ6aW50IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xMDU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA3MS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxMDcyOkVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTE2NzI9aW50IGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2OTQtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjk1OlxcdHJldCA9IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjk2LVxcdGlmIChyZXQgXFx1MDAzZSAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTIzMDk9aW50IF9fZ2VucGh5X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgY2hhbmdlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjMxNS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjIzMTY6XFx0ZXJyID0gZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTIzMTctXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjQxLjUzMzAwMDgyM1oiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTUxNjQyNTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gYGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnYC5cblxuKipEaXZpbmcgaW50byBgZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWdgKipcblxuQWxyaWdodCwgSSBzZWUgdGhpcyBpcyBhIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gY29uZmlndXJpbmcgYW5kIGhhbmRsaW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgYW5kIEF1dG8tTmVnb3RpYXRpb24gKEFOKSB1c2luZyBhIEM0NSBQSFkgaW50ZXJmYWNlLiBNeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBpbnZvbHZlIG1hbmlwdWxhdGluZyBzcGVjaWZpYyByZWdpc3RlcnMgd2l0aGluIHRoZSBQSFkgdG8gZW5hYmxlLCBkaXNhYmxlLCBhbmQgYWRqdXN0IEVFRSBzZXR0aW5ncywgbGlrZWx5IGluIGNvbmp1bmN0aW9uIHdpdGggQU4gc3RhdGVzLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBsb2dpYyBmb3IgYWR2ZXJ0aXNlbWVudCBvZiBFRUUgY2FwYWJpbGl0aWVzIGR1cmluZyBBTiwgYXMgd2VsbCBhcyB0aGUgYWN0dWFsIHN3aXRjaGluZyBvZiB0aGUgUEhZIGludG8gYW5kIG91dCBvZiBFRUUgbW9kZXMgYmFzZWQgb24gdGhlIGxpbmsgcGFydG5lcidzIHJlc3BvbnNlcy4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGhhbmRsaW5nIG9mIGRpZmZlcmVudCBFRUUgZmxhdm9ycyAoaWYgYXBwbGljYWJsZSwgd2hpY2ggSSBzdXNwZWN0IGl0IGlzKSwgbGlrZSBMUEkgKExvdyBQb3dlciBJZGxlKSBhbmQgbWF5YmUgb3RoZXIgcG93ZXItc2F2aW5nIG1lY2hhbmlzbXMuIFRoZSBDNDUgaW50ZXJmYWNlIHN1Z2dlc3RzIHRoaXMgaXMgYSByZWxhdGl2ZWx5IG1vZGVybiBQSFksIGxpa2VseSB3aXRoIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGFuIGFuIG9sZGVyLCBzaW1wbGVyIGludGVyZmFjZS4gSSdsbCBiZSBsb29raW5nIGZvciByb2J1c3QgZXJyb3IgaGFuZGxpbmcsIGFzIEVFRSBjYW4gYmUgc2Vuc2l0aXZlIHRvIHRpbWluZyBhbmQgbWlzY29uZmlndXJhdGlvbi4gSSdtIGFsc28gaG9waW5nIGZvciBzb21lIGNsZWFyIHN0YXRlIG1hY2hpbmUgbG9naWMgd2l0aGluIHRoaXMgZnVuY3Rpb24sIG1ha2luZyBpdCBlYXNpZXIgdG8gZm9sbG93IHRoZSB0cmFuc2l0aW9ucyBiZXR3ZWVuIEFOIGFuZCBFRUUgc3RhdGVzLiBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcywgZXNwZWNpYWxseSBpZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gYSBtdWx0aS10aHJlYWRlZCBlbnZpcm9ubWVudC4gVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gc2VlIGhvdyB0aGlzIGltcGxlbWVudGF0aW9uIGVuc3VyZXMgb3B0aW1hbCBwb3dlciBzYXZpbmdzIHdoaWxlIG1haW50YWluaW5nIGEgcmVsaWFibGUgbmV0d29yayBjb25uZWN0aW9uLiBMZXQncyBzZWUgaG93IGl0J3MgZG9uZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzQyMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjUwLjY4NDY0NjQ2OVoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDU0LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMDU0OlxcdGludCBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjEwNTU6XFx0e1xcbjEwNTY6XFx0XFx0LyogV3JpdGluZyBNTUQgQU4gYWR2ZXJ0aXNlbWVudHMgd2hpbGUgYXV0b25lZyBpcyBkaXNhYmxlZCBoYXMgbm9cXG4xMDU3OlxcdFxcdCAqIGVmZmVjdCBvbiBsaW5rLXBhcnRuZXIgbmVnb3RpYXRpb24sIGJ1dCBvbiBzb21lIFBIWXMgKGUuZy4gdGhlXFxuMTA1ODpcXHRcXHQgKiBCcm9hZGNvbSBCQ001NDIxM1BFKSB0aGUgd3JpdGUgaXRzZWxmIGRpc3R1cmJzIHRoZSByZWNlaXZlXFxuMTA1OTpcXHRcXHQgKiBkYXRhcGF0aC4gU2tpcCBpdC5cXG4xMDYwOlxcdFxcdCAqL1xcbjEwNjE6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXFxuMTA2MjpcXHRcXHRcXHRyZXR1cm4gMDtcXG4xMDYzOlxcdFxcbjEwNjQ6XFx0XFx0aWYgKCFwaHlkZXYtXFx1MDAzZWVlZV9jZmcuZWVlX2VuYWJsZWQpIHtcXG4xMDY1OlxcdFxcdFxcdF9fRVRIVE9PTF9ERUNMQVJFX0xJTktfTU9ERV9NQVNLKGFkdikgPSB7fTtcXG4xMDY2OlxcdFxcbjEwNjc6XFx0XFx0XFx0cmV0dXJuIGdlbnBoeV9jNDVfd3JpdGVfZWVlX2FkdihwaHlkZXYsIGFkdik7XFxuMTA2ODpcXHRcXHR9XFxuMTA2OTpcXHRcXG4xMDcwOlxcdFxcdHJldHVybiBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XFxuMTA3MTpcXHR9XFxuMTA3MjpcXHRFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyk7XFxuMTA3MzpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjY6NTAuNjg0NzYxMjQ5WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1Mjk4MDA5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBFRUUgQWR2ZXJ0aXNlbWVudCBXcml0ZSBDYWxsKipcblxuT2theSwgSSBzZWUgdGhlIGNvZGUgaXMgY2FsbGluZyBgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2YC4gUmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIHRoYXQgZnVuY3Rpb24gY2FsbC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYGdlbnBoeWAgcHJlZml4LiBUaGlzIHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBnZW5lcmljIFBIWSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyB0aGUgQzQ1IGludGVyZmFjZS4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQuIEknbSBhc3N1bWluZyBpdCdzIGhhbmRsaW5nIHRoZSBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0IChFRUUpIGFkdmVydGlzZW1lbnQgcmVnaXN0ZXIgd3JpdGUgb3BlcmF0aW9uLiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCBgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2YCBkb2VzLiBXaGF0IHBhcmFtZXRlcnMgaXMgaXQgdGFraW5nPyBXaGF0IHJlZ2lzdGVyIGFkZHJlc3NlcyBpcyBpdCB3cml0aW5nIHRvLCBhbmQgd2hhdCBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdOKAmXMgY29ycmVjdGx5IGZvcm1pbmcgdGhlIEVFRSBhZHZlcnRpc2VtZW50IGZyYW1lLCBlbnN1cmluZyB0aGUgcHJvcGVyIGJpdCBmaWVsZHMgYXJlIHNldCBhY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkIGFuZCB0aGUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciB0aGlzIHNwZWNpZmljIFBIWS4gSXMgdGhlcmUgYW55IHJlZ2lzdGVyIG1hc2tpbmcgaW52b2x2ZWQ/IEkgbmVlZCB0byBjaGVjayBmb3IgcG90ZW50aWFsIGVycm9yIGhhbmRsaW5nIGFuZCBpZiBpdCdzIHJldHVybmluZyBhbnkgcmVsZXZhbnQgc3RhdHVzIGNvZGVzLiBGaW5hbGx5LCBJ4oCZbGwgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWxldmFudCBQSFkgZGF0YXNoZWV0IHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODE4NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjY6NTcuMjE0NTY1MzgyWiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc4NzU4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTc5MT1FWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X3JlYWRfbWRpeCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTc5My0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjc5NDogKiBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYgLSB3cml0ZSBhZHZlcnRpc2VkIEVFRSBsaW5rIG1vZGVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy03OTUtICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTc5Ny0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjc5ODpzdGF0aWMgaW50IGdlbnBoeV9jNDVfd3JpdGVfZWVlX2FkdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtNzk5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nICphZHYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTEwNTQ9aW50IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNjYtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxMDY3OlxcdFxcdHJldHVybiBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYocGh5ZGV2LCBhZHYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA2OC1cXHR9XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xMDY5LVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTA3MDpcXHRyZXR1cm4gZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2KHBoeWRldiwgcGh5ZGV2LVxcdTAwM2VhZHZlcnRpc2luZ19lZWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA3MS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjU3LjI2MTM1OTQ1MVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzgzMDU5NDczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGlzIGBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZgIGZ1bmN0aW9uLlxuXG4qKkFuYWx5emluZyBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgYSBmZXcga2V5IHF1ZXN0aW9uczogV2hhdCdzIHRoZSBjb250ZXh0PyBXaGF0J3MgdGhlIGxhcmdlciBzeXN0ZW0gdGhpcyBmdW5jdGlvbiBmaXRzIGludG8/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gaGF2ZSBhbnkgY2hhbmNlIG9mIGdyYXNwaW5nIGl0cyBpbm5lciB3b3JraW5ncyBlZmZlY3RpdmVseS4gSSdtIGFzc3VtaW5nLCBnaXZlbiB0aGUgbmFtZSwgaXQgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBnZW5lcmF0aW9uIG9mIFBIWSBjb250cm9sIHNpZ25hbHMsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgYWR2ZXJ0aXNlbWVudCBvdmVyIGEgQzQ1IGludGVyZmFjZSwgbGlrZWx5IHRvIGEgUEhZIGRldmljZS5cblxuTmV4dCwgSSdsbCBiZSBsb29raW5nIGZvciBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgUEhZIGZ1bmN0aW9ucy4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZnVuY3Rpb25zLCBsaWtlIHRob3NlIHJlbGF0ZWQgdG8gcmVnaXN0ZXIgYWNjZXNzIChwcm9iYWJseSB1c2luZyBhbiBNRElPIGludGVyZmFjZSB2aWEgdGhlIEM0NSBjbGF1c2UpLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHdyaXRlIGlzIHBhcnQgb2YgYSBsYXJnZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGEgZHluYW1pYyBjb25maWd1cmF0aW9uIHByb2NlZHVyZSwgb3IgcGVyaGFwcyBhIHJlc3BvbnNlIHRvIHNvbWUgZXh0ZXJuYWwgZXZlbnQgb3Igc3RhdHVzIGNoYW5nZS5cblxuSSdtIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2UgcmVnaXN0ZXIgYWRkcmVzcyBkZWZpbml0aW9ucywgYml0ZmllbGQgbWFuaXB1bGF0aW9ucywgYW5kIHBlcmhhcHMgc29tZSBlcnJvciBjaGVja2luZy4gVGhlIHdheSB0aGUgRUVFIGFkdmVydGlzZW1lbnQgaXMgc3RydWN0dXJlZCBpbiB0aGUgQzQ1IHNwYWNlIGlzIHNvbWV0aGluZyBJJ2xsIHdhbnQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIOKAkyBkb2VzIGl0IHVzZSBhIGRlZmluZWQgc2V0IG9mIHJlZ2lzdGVycywgb3IgYXJlIHdlIHdvcmtpbmcgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgY29uZmlndXJhdGlvbnM/IEknbSBob3BpbmcgaXQncyBzdHJhaWdodGZvcndhcmQgYnV0IEkndmUgc2VlbiBlbm91Z2ggdmVuZG9yIHF1aXJrcy5cblxuSeKAmWxsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGNvbmRpdGlvbnMgYW5kIGhvdyB0aGV5J3JlIGhhbmRsZWQuIElmIGl0IGlzIGVycm9yIGhhbmRsaW5nLCBhcmUgdGhlcmUgYW55IHJldHJ5IG1lY2hhbmlzbXMsIG9yIGRvZXMgaXQgc2ltcGx5IHJldHVybiBhbiBlcnJvciBjb2RlPyBBIHdlbGwtd3JpdHRlbiBQSFkgZHJpdmVyIHVzdWFsbHkgaW5jbHVkZXMgc29tZSByZXNpbGllbmNlLlxuXG5GaW5hbGx5LCBhIHF1aWNrIGdsYW5jZSBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBtaWdodCBiZSBuZWVkZWQgdG8gc2VlIGlmIGl0IG1ha2VzIGNhbGxzIHRvIGFueSBsb2dnaW5nIG9yIGRlYnVnIGZhY2lsaXRpZXMuIFRoaXMgY2FuIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgaW4gYSBkZWJ1Z2dpbmcgc2l0dWF0aW9uLiBSaWdodCBub3csIEkgd2lsbCBzdGFydCB0byBkaXNzZWN0IHRoZSBjb2RlIGFuZCBidWlsZCBhIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIHRoZSBzb2Z0d2FyZSBkcml2ZXIsIGFuZCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gSSdtIHJlYWR5IHRvIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODk0NiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjAxLjA5MTk4MTY4N1oiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzE3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3OTgsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3OTg6XFx0c3RhdGljIGludCBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4gNzk5OlxcdFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nICphZHYpXFxuIDgwMDpcXHR7XFxuIDgwMTpcXHRcXHRpbnQgdmFsLCBjaGFuZ2VkID0gMDtcXG4gODAyOlxcdFxcbiA4MDM6XFx0XFx0aWYgKGxpbmttb2RlX2ludGVyc2VjdHMocGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWRfZWVlLCBQSFlfRUVFX0NBUDFfRkVBVFVSRVMpKSB7XFxuIDgwNDpcXHRcXHRcXHR2YWwgPSBsaW5rbW9kZV90b19taWlfZWVlX2NhcDFfdChhZHYpO1xcbiA4MDU6XFx0XFxuIDgwNjpcXHRcXHRcXHQvKiBJRUVFIDgwMi4zLTIwMTggNDUuMi43LjEzIEVFRSBhZHZlcnRpc2VtZW50IDFcXG4gODA3OlxcdFxcdFxcdCAqIChSZWdpc3RlciA3LjYwKVxcbiA4MDg6XFx0XFx0XFx0ICovXFxuIDgwOTpcXHRcXHRcXHR2YWwgPSBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfQU4sXFxuIDgxMDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIE1ESU9fQU5fRUVFX0FEVixcXG4gODExOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTURJT19FRUVfMTAwVFggfCBNRElPX0VFRV8xMDAwVCB8XFxuIDgxMjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIE1ESU9fRUVFXzEwR1QgfCBNRElPX0VFRV8xMDAwS1ggfFxcbiA4MTM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBNRElPX0VFRV8xMEdLWDQgfCBNRElPX0VFRV8xMEdLUixcXG4gODE0OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdmFsKTtcXG4gODE1OlxcdFxcdFxcdGlmICh2YWwgXFx1MDAzYyAwKVxcbiA4MTY6XFx0XFx0XFx0XFx0cmV0dXJuIHZhbDtcXG4gODE3OlxcdFxcdFxcdGlmICh2YWwgXFx1MDAzZSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyODowMS4wOTIyNjAxNDdaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI2NzE2MjgyMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyB3ZW50IGxpa2UgdGhpczogdGhlIGNvZGUgcGF0aCBpbnZvbHZlcyBgcGh5X21vZGlmeV9tbWRfY2hhbmdlZGAsIHdoaWNoIGlzIGEgd3JhcHBlciBjYWxsaW5nIGJvdGggYHBoeV9yZWFkX21tZGAgYW5kIGBwaHlfd3JpdGVfbW1kYC4gVGhlIGBwaHlfd3JpdGVfbW1kYCBmdW5jdGlvbiB0aGVuIHVsdGltYXRlbHkgY2FsbHMgYHBoeWRldi1cdTAwM2VkcnYtXHUwMDNld3JpdGVfbW1kYC4gU28sIGxvZ2ljYWxseSwgYHJ0bGdlbl93cml0ZV9tbWRgIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbiB0aGF0J3MgYmVpbmcgaW52b2tlZCBzb21ld2hlcmUgZG93biB0aGUgbGluZSwgYXMgaXQgaXMgcmVsYXRlZCB0byB0aGlzIHBoeSBkcml2ZXIuXG5cbk5vdywgdGhlIHBhdGNoIGl0c2VsZi4gSSBzZWUgYSBjb25kaXRpb25hbCBibG9jazogV2hlbiBgZGV2bnVtYCBpcyBgTURJT19NTURfVkVORDJgLCB0aGUgcGF0Y2ggY2FsbHMgYHJ0bGdlbl93cml0ZV92ZW5kMmAgd2hpY2ggaXMgdGhlIGNvcnJlY3QgYmVoYXZpb3IuIE5vdywgbGV0J3MgbG9vayBhdCB0aGUgXCJlbHNlIGlmXCIgc3RhdGVtZW50LlxuXG5UaGUgY3J1Y2lhbCBjaGFuZ2UgaXMgaGVyZSwgd2l0aGluIHRoZSBgTURJT19NTURfQU5gIGFuZCBgTURJT19BTl9FRUVfQURWYCBjb25kaXRpb24uIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwYXNzaW5nIGByZWdudW1gICh3aGljaCBpcyBgTURJT19BTl9FRUVfQURWYCwgb3IgNjAgSUlSQykgYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgYW5kIGBSVExfTURJT19BTl9FRUVfQURWYCAoYSBjb25zdGFudCB2YWx1ZSkgYXMgdGhlIHRoaXJkIGFyZ3VtZW50IHRvIGBydGxnZW5fd3JpdGVfdmVuZDJgLlxuXG5Ib3dldmVyLCBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCBjbGVhcmx5IGV4cGVjdHMgYHJlZ251bWAgYW5kIGB2YWxgIGFzIGl0cyBzZWNvbmQgYW5kIHRoaXJkIGFyZ3VtZW50LiBUaGVyZWZvcmUsIHRoZSBvbGQgY29kZSB3YXMgbWlzdGFrZW5seSB3cml0aW5nIHRoZSBjb25zdGFudCBgUlRMX01ESU9fQU5fRUVFX0FEVmAgdG8gdGhlIHJlZ2lzdGVyIGFkZHJlc3MgYE1ESU9fQU5fRUVFX0FEVmAgKDYwKSwgd2hpY2ggZG9lc24ndCBzZWVtIHJpZ2h0LiBUaGUgcGF0Y2ggbm93IHN3YXBzIHRoZXNlIHR3byBhcmd1bWVudHMsIHBhc3NpbmcgYHZhbGAgYXMgdGhlIHNlY29uZCBhcmd1bWVudCBhbmQgYHZhbGAgYXMgdGhlIHRoaXJkIGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbi4gVGhpcyBpcyBtb3JlIGluIGxpbmUgd2l0aCB3aGF0IEknZCBleHBlY3QuIE5vdyBpdCdzIHdyaXRpbmcgYHZhbGAgKHRoZSB2YWx1ZSB3ZSB3YW50IHRvIHNldCkgdG8gYFJUTF9NRElPX0FOX0VFRV9BRFZgLiBUaGF0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgcmVnaXN0ZXIsIGxpa2VseSByZWxhdGVkIHRvIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgYWR2ZXJ0aXNlbWVudC4gTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIHZhbHVlIG9mIGBSVExfTURJT19BTl9FRUVfQURWYCB0byBjb25maXJtIG15IHN1c3BpY2lvbi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTg1NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjEzLjc2Mzg5MjUyN1oiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwNDI3OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUlRMX01ESU9fQU5fRUVFX0FEVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjQzLSNkZWZpbmVcXHRSVExfTURJT19QQ1NfRUVFX0FCTEVcXHRcXHRcXHQweGE1YzRcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNDQ6I2RlZmluZVxcdFJUTF9NRElPX0FOX0VFRV9BRFZcXHRcXHRcXHQweGE1ZDBcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNDUtI2RlZmluZVxcdFJUTF9NRElPX0FOX0VFRV9MUEFCTEVcXHRcXHRcXHQweGE1ZDJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI0OS0jZGVmaW5lXFx0UlRMX01ESU9fQU5fRUVFX0xQQUJMRTJcXHRcXHRcXHQweGE2ZDBcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNTA6I2RlZmluZVxcdFJUTF9NRElPX0FOX0VFRV9BRFYyXFx0XFx0XFx0MHhhNmQ0XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjUxLSNkZWZpbmVcXHRSVExfTURJT19QQ1NfRUVFX0FCTEUyXFx0XFx0XFx0MHhhNmVjXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzQ1PXN0YXRpYyBpbnQgcnRsZ2VuX3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzUzLVxcdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3NTQ6XFx0XFx0cmV0ID0gcnRsZ2VuX3JlYWRfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzU1LVxcdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfTFBBQkxFKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc2Mz1zdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NzAtXFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFxcdTAwMjZcXHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYpXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTc3MTpcXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NzItXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc3OD1zdGF0aWMgaW50IHJ0bDgyMnhfcmVhZF9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3ODctXFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFxcdTAwMjZcXHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYyKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3ODg6XFx0XFx0cmV0ID0gcnRsZ2VuX3JlYWRfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWMik7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc4OS1cXHRlbHNlIGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gXFx1MDAyNlxcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0xQQUJMRTIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzk1PXN0YXRpYyBpbnQgcnRsODIyeF93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE4MDMtXFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWMilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxODA0OlxcdFxcdHJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYyLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE4MDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjEzLjgxMTk0MTg3NloiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTAxOTc1ODc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGdW5jdGlvbmFsIENoYW5nZSBpbiB0aGUgUmVhbHRlayBQSFkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBSZWFsdGVrIFBIWSBkcml2ZXIgY2hhbmdlLiBUaGUgY3J1eCBvZiBpdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHdyaXRpbmcgYSBzcGVjaWZpYyB2YWx1ZSwgYDB4YTVkMGAsIHRvIGEgcmVnaXN0ZXIuIFByZXZpb3VzbHksIHRoZSBjb2RlIHdhcyBleHBsaWNpdGx5IHdyaXRpbmcgdGhpcyB2YWx1ZSB0byByZWdpc3RlciA2MCAoYE1ESU9fQU5fRUVFX0FEVmApLiBOb3csIGhvd2V2ZXIsIHRoZSBuZXcgY29kZSBpcyB3cml0aW5nIGB2YWxgIHRvIHJlZ2lzdGVyIGAweGE1ZDBgIGRpcmVjdGx5LiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBpdCdzIG5vIGxvbmdlciBhIGhhcmRjb2RlZCB2YWx1ZS5cblxuVGhpcyBjaGFuZ2UgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UuIEkgY2FuIGdldCB0byBpdCB0aHJvdWdoIHRoZSBgU0lPQ1NNSUlSRUdgIGlvY3RsIGlmIEknbSB1c2luZyBDNDUgTURJTyBhY2Nlc3MgdG8gd3JpdGUgdG8gYE1ESU9fTU1EX0FOYCBhbmQgYE1ESU9fQU5fRUVFX0FEVmAuIE9yLCBJIGNhbiByZWFjaCBpdCB0aHJvdWdoIGBFVEhUT09MX1NFRUVgLCB3aGljaCB0aGVuIGNhbGxzIGEgd2hvbGUgY2hhaW4gb2YgZnVuY3Rpb25zOiBgcGh5X2V0aHRvb2xfc2V0X2VlZWAgLVx1MDAzZSBgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWVgIC1cdTAwM2UgYGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnYCAtXHUwMDNlIGBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZgIC1cdTAwM2UgYHBoeV9tb2RpZnlfbW1kX2NoYW5nZWRgIC1cdTAwM2UgYHBoeV93cml0ZV9tbWRgIC1cdTAwM2UgYHJ0bGdlbl93cml0ZV9tbWRgLlxuXG5UaGUgYmlnIHF1ZXN0aW9uIG5vdyBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMhIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYSBkcml2ZXIsIGFuZCB0aGF0IGFsd2F5cyByYWlzZXMgYSBmbGFnLlxuXG5DYW4gSSB0cmlnZ2VyIHRoaXMgaW4gUUVNVT8gU3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIGBTSU9DU01JSVJFR2AgYW5kIGBFVEhUT09MX1NFRUVgIGFuZCBjYW4gaW5zdGFudGlhdGUgdmlydHVhbCBuZXR3b3JrIGRldmljZXMgd2l0aCBQSFlzISBJIGNvdWxkIHRyeSB1c2luZyBgdHVuYC9gdmV0aGAsIGB2aGNpYCwgb3IgZXZlbiBgbmV0ZGV2c2ltYCB0byBzZXQgaXQgdXAuIEhvbGQgb24uLi4gd2FpdCwgYG5ldGRldnNpbWAgZG9lc24ndCB1c2UgcmVhbHRlayBQSFlzLCB0aGF0J3MgcmlnaHQuIEhvd2V2ZXIsIHN5emthbGxlciAqY2FuKiBmdXp6IE1ESU8gYnVzZXMgZGlyZWN0bHkgYXMgbG9uZyBhcyBpdCBoYXMgYSB3YXkgdG8gcmVnaXN0ZXIgYSBQSFkuIEl0IGxvb2tzIGxpa2Ugc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIGBTSU9DU01JSVJFR2Agb24gKmFueSogbmV0ZGV2LiBJZiB0aGVyZSdzIGEgUEhZIGF0dGFjaGVkLCBpdCdsbCByZWFjaCB0aGUgUEhZIGRyaXZlciwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkgbmVlZC4gVG8gaGl0IGBydGxnZW5fd3JpdGVfbW1kYCBpbiBwYXJ0aWN1bGFyLCBJIGFic29sdXRlbHkgbmVlZCBhIFJlYWx0ZWsgUEhZIGF0dGFjaGVkLlxuXG5DYW4gSSBnZXQgYSBSZWFsdGVrIFBIWSBhdHRhY2hlZCB3aXRoIHN5emthbGxlcj8gSWYgSSB1c2UgYHZoY2lgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBvciBpZiBhIHZpcnR1YWwgZGV2aWNlIGFsbG93cyBhdHRhY2hpbmcgYXJiaXRyYXJ5IFBIWXMsIEkgc2hvdWxkIGJlIGFibGUgdG8uIEkgYWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX1JFQUxURUtfUEhZYCBpcyBlbmFibGVkLlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIGlmIGBDT05GSUdfUkVBTFRFS19QSFlgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQuIExvb2tzIGxpa2UgaXQgaXMgLSBpdCdzIHRoZSBtb2R1bGUgZm9yIFJlYWx0ZWsgUEhZcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcy4gTG9va2luZyBhZ2FpbiwgYENPTkZJR19QSFlMSUJgIGlzIHJlcXVpcmVkLCBidXQgdGhhdCdzIHVzdWFsbHkgZW5hYmxlZCBzbyBJIHNob3VsZCBiZSBnb29kLlxuXG5MZXQncyBjaGVjayBgRm9jdXNTeW1ib2xzYCB0byBiZSBzdXJlLiBJdCBsb29rcyBsaWtlIGBydGxnZW5fd3JpdGVfbW1kYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQsIHNvIHRoYXQncyB0aGUgZm9jdXMgc3ltYm9sLiBgcnRsODIyeF93cml0ZV9tbWRgIGNhbGxzIGBydGxnZW5fd3JpdGVfbW1kYCwgc28gYHJ0bGdlbl93cml0ZV9tbWRgIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC5cblxuSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGBydGxnZW5fd3JpdGVfbW1kYCBpbiBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgIGp1c3QgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE3NjksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MjQuODMxNzAzODk1WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzYzLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzYzOlxcdHN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxcbjE3NjQ6XFx0XFx0XFx0XFx0ICAgIHUxNiB2YWwpXFxuMTc2NTpcXHR7XFxuMTc2NjpcXHRcXHRpbnQgcmV0O1xcbjE3Njc6XFx0XFxuMTc2ODpcXHRcXHRpZiAoZGV2bnVtID09IE1ESU9fTU1EX1ZFTkQyKVxcbjE3Njk6XFx0XFx0XFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCB2YWwpO1xcbjE3NzA6XFx0XFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFxcdTAwMjZcXHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYpXFxuMTc3MTpcXHRcXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpO1xcbjE3NzI6XFx0XFx0ZWxzZVxcbjE3NzM6XFx0XFx0XFx0cmV0ID0gLUVPUE5PVFNVUFA7XFxuMTc3NDpcXHRcXG4xNzc1OlxcdFxcdHJldHVybiByZXQ7XFxuMTc3NjpcXHR9XFxuMTc3NzpcXHRcXG4xNzc4OlxcdHN0YXRpYyBpbnQgcnRsODIyeF9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtKVxcbjE3Nzk6XFx0e1xcbjE3ODA6XFx0XFx0aW50IHJldCA9IHJ0bGdlbl9yZWFkX21tZChwaHlkZXYsIGRldm51bSwgcmVnbnVtKTtcXG4xNzgxOlxcdFxcbjE3ODI6XFx0XFx0aWYgKHJldCAhPSAtRU9QTk9UU1VQUClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MjQuODMxOTQ5Njk1WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MjUzNzUyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgcnRsZ2VuX3dyaXRlX21tZGAgRnVuY3Rpb24gZm9yIEZ1enppbmcgYW5kIFN5bWJvbCBWaXNpYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcnRsZ2VuX3dyaXRlX21tZGAgZnVuY3Rpb24uIEl0J3MgbWFya2VkIGFzIGBzdGF0aWNgLCB3aGljaCBpbml0aWFsbHkgbWFrZXMgbWUgdGhpbmsgZnV6emluZyBtaWdodCBiZSB0cmlja3kuIEhvd2V2ZXIsIEkgcmVhbGl6ZSB0aGF0IHN5emthbGxlciAqY2FuKiBhY3R1YWxseSByZWFjaCBpdCB0aHJvdWdoIGBwaHlfd3JpdGVfbW1kYCwgd2hpY2ggaXMgYW4gZXhwb3J0ZWQgc3ltYm9sLiBUaGF0J3MgZ29vZCB0byBrbm93LlxuXG5Ob3csIGNvbnNpZGVyaW5nIGBGb2N1c1N5bWJvbHNgLCBJIGhhdmUgdG8gbWFrZSBzdXJlIGBydGxnZW5fd3JpdGVfbW1kYCBpcyBleHBsaWNpdGx5IHByb3ZpZGVkLCBlc3BlY2lhbGx5IGlmIGl0J3Mgbm90IGlubGluZWQuIEFuZCBJIHRoaW5rIHRoYXQncyB1bmxpa2VseTsgaXQncyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBpbiBgcmVhbHRla19kcnZzYDpcblxuYGBgY1xuXHRcdC53cml0ZV9tbWRcdD0gcnRsZ2VuX3dyaXRlX21tZCxcbmBgYFxuXG5HaXZlbiBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCB0aGVyZSdzIG5vIHdheSB0aGUgY29tcGlsZXIgY2FuIGlubGluZSBpdC4gVGhhdCBjb25maXJtcyBpdCwgYHJ0bGdlbl93cml0ZV9tbWRgICppcyogYSB2YWxpZCBzeW1ib2wgdGhhdCBzaG91bGQgYmUgdmlzaWJsZS5cblxuTGV0J3Mgbm90IHN0b3AgdGhlcmUsIHRob3VnaC4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBmYW1pbHkuIEFoYSwgYHJ0bGdlbl93cml0ZV92ZW5kMmAgaXMgY2FsbGVkLiBUaGF0IHNvdW5kcyBsaWtlIGFub3RoZXIgaW50ZXJlc3Rpbmcgb25lIHRvIGxvb2sgYXQgYW5kIHNlZSBpZiBpdCdzIGZ1enphYmxlIGFuZC9vciBpZiBpdCBuZWVkcyBzcGVjaWFsIGF0dGVudGlvbiBmb3Igc3ltYm9sIHZpc2liaWxpdHkgYXMgd2VsbC4gTGV0IG1lIGludmVzdGlnYXRlIGBydGxnZW5fd3JpdGVfdmVuZDJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzYyMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjMyLjQ1NzMyOTYyNloiLCJTZXEiOjYyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIxMTk3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsZ2VuX3dyaXRlX3ZlbmQyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzM0PXN0YXRpYyBpbnQgcnRsZ2VuX3JlYWRfdmVuZDIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3MzgtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTczOTpzdGF0aWMgaW50IHJ0bGdlbl93cml0ZV92ZW5kMihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc2Mz1zdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NjgtXFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9WRU5EMilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzY5OlxcdFxcdHJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIHJlZ251bSwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzcwLVxcdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3NzE6XFx0XFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEViwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzcyLVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3OTU9c3RhdGljIGludCBydGw4MjJ4X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwMy1cXHRpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFxcdTAwMjZcXHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYyKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE4MDQ6XFx0XFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEVjIsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MzIuNTA5NDU2NDE1WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTY1OTc4MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIHRoZSBSZWFsdGVrIFBIWSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCBpcyBhbHNvIGRlY2xhcmVkIHN0YXRpYywgbWFraW5nIGlubGluaW5nIGEgcmVhbCBwb3NzaWJpbGl0eS4gVGhhdCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBCZXR0ZXIgdG8gdGFyZ2V0IGBydGxnZW5fd3JpdGVfbW1kYCB0aGVuOyBpdCdzIGxlc3MgbGlrZWx5IHRvIGJlIG9wdGltaXplZCBhd2F5IGFuZCBtb3JlIGNsZWFybHkgcmVwcmVzZW50cyB0aGUgY29yZSBvZiB3aGF0IEknbSBsb29raW5nIGZvci5cblxuTm93LCBsZXQncyBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudC4gYENPTkZJR19SRUFMVEVLX1BIWWAgaXMgdGhlIGJpZyBvbmUsIG9mIGNvdXJzZS4gQnV0IGFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyPyBSaWdodCwgYENPTkZJR19QSFlMSUJgIGlzICpyZXF1aXJlZCogYnkgYENPTkZJR19SRUFMVEVLX1BIWWAsIHRoYXQgc2VlbXMgaW1wb3J0YW50LiBUaW1lIHRvIHJldmlzaXQgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBhZ2FpbiB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ3MTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6NDUuMDc1NDM5MzU4WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTY5ODYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUkVBTFRFS19QSFlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoyOmNvbmZpZyBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBQSFlzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZz04PWlmIFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTA6Y29uZmlnIFJFQUxURUtfUEhZX0hXTU9OXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJIV01PTiBzdXBwb3J0IGZvciBSZWFsdGVrIFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjQ1LjE1MTE0NDc3NloiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTc2MTkwNjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBWZXJpZmljYXRpb24gb2YgQ29udHJvbCBGbG93KipcblxuUmlnaHQsIHNvIHdlJ3JlIGZvY3VzaW5nIG9uIHRoaXMgYFJFQUxURUtfUEhZYCBkcml2ZXIgb3IgbW9kdWxlLCBzcGVjaWZpY2FsbHkuIEl0IGxvb2tzIGxpa2UgaXQncyB0aGUgb25seSBvbmUgaW4gdGhlIHJ1bm5pbmcuIE5vdywgYmVmb3JlIEkganVtcCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byB0cmFjZSB0aGlzIGNvbnRyb2wgZmxvdyBwcm9wZXJseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMuIEhhbmcgb24sIGlzIGBydGxnZW5fd3JpdGVfbW1kYCBhY3R1YWxseSBjYWxsZWQgZnJvbSBgcnRsODIyeF93cml0ZV9tbWRgPyBMZXQncyBjaGVjayBpdCwgcXVpY2tseS4gQWhhISBZZXMsIGdvb2QuIGBydGw4MjJ4X3dyaXRlX21tZGAgZG9lcyBpbmRlZWQgY2FsbCBgcnRsZ2VuX3dyaXRlX21tZGAuIE9rYXksIHRoYXQncyBjcnVjaWFsLiBOb3csIHNpbmNlIEkndmUgY29uZmlybWVkIHRoYXQgcmVsYXRpb25zaGlwLCBJJ20gZ29pbmcgdG8gdHVybiBteSBhdHRlbnRpb24gdG8gc2NydXRpbml6aW5nIGBydGw4MjJ4X3dyaXRlX21tZGAgaXRzZWxmLiBUaGF0IGZ1bmN0aW9uIGlzIHdoZXJlIHRoZSBhY3Rpb24gaXMgc3RhcnRpbmcuIEknbGwgbmVlZCB0byBzZWUgcHJlY2lzZWx5IHdoYXQncyBoYXBwZW5pbmcgdGhlcmUgdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBsb3dlciBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUyMDgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyODo1MC43MjczMzk5NThaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3OTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3OTU6XFx0c3RhdGljIGludCBydGw4MjJ4X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxcbjE3OTY6XFx0XFx0XFx0XFx0ICAgICB1MTYgdmFsKVxcbjE3OTc6XFx0e1xcbjE3OTg6XFx0XFx0aW50IHJldCA9IHJ0bGdlbl93cml0ZV9tbWQocGh5ZGV2LCBkZXZudW0sIHJlZ251bSwgdmFsKTtcXG4xNzk5OlxcdFxcbjE4MDA6XFx0XFx0aWYgKHJldCAhPSAtRU9QTk9UU1VQUClcXG4xODAxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTgwMjpcXHRcXG4xODAzOlxcdFxcdGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gXFx1MDAyNlxcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVjIpXFxuMTgwNDpcXHRcXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWMiwgdmFsKTtcXG4xODA1OlxcdFxcbjE4MDY6XFx0XFx0cmV0dXJuIHJldDtcXG4xODA3OlxcdH1cXG4xODA4OlxcdFxcbjE4MDk6XFx0c3RhdGljIGludCBydGw4MjJ4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTgxMDpcXHR7XFxuMTgxMTpcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUkVBTFRFS19QSFlfSFdNT04pIFxcdTAwMjZcXHUwMDI2XFxuMTgxMjpcXHRcXHQgICAgcGh5ZGV2LVxcdTAwM2VwaHlfaWQgIT0gUlRMX0dFTkVSSUNfUEhZSUQpXFxuMTgxMzpcXHRcXHRcXHRyZXR1cm4gcnRsODIyeF9od21vbl9pbml0KHBoeWRldik7XFxuMTgxNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6NTAuNzI3NTczMjU4WiIsIlNlcSI6NjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjQzNDMxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIFBIWSBEcml2ZXIgQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gem9vbSBpbiBvbiBob3cgdGhlc2UgUmVhbHRlayBQSFlzIGFyZSBiZWluZyBjb25maWd1cmVkLCBzbyBgcnRsODIyeF93cml0ZV9tbWRgIGxvb2tzIGxpa2UgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZC4gSXQncyBjYWxsaW5nIHRvIG1lIGFzIGEgcG90ZW50aWFsIGZvY3VzIHN5bWJvbC4gSXQncyBiZWVuIGJyb3VnaHQgdXAgbXVsdGlwbGUgdGltZXMgYXMgYSBwb3RlbnRpYWwgZW50cnkgcG9pbnQgZm9yIHRoaXMgdGFzay5cblxuTm93LCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJyb2FkZXIgcGljdHVyZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2l0aGluIGByZWFsdGVrX2RydnNgIHRvIHNlZSB0aGUgcmVsZXZhbnQgUEhZcy4gSSB3YW50IHRvIGlkZW50aWZ5IHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgZWl0aGVyIGBydGxnZW5fd3JpdGVfbW1kYCBvciwgbW9yZSBzcGVjaWZpY2FsbHksIGBydGw4MjJ4X3dyaXRlX21tZGAuIFRoZSBhaW0gaXMgdG8gbWFwIHRoZSBmdW5jdGlvbiB0byBhIG1vZHVsZS4gSSBhbSBob3BpbmcgdG8gZ2V0IG1vcmUgY29udGV4dCBhbmQgdXNlIGBydGw4MjJ4X3dyaXRlX21tZGAgYXMgYSBzdGFydGluZyBwb2ludC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgZm9yIHRyYWNpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcmVnaXN0ZXIgYWNjZXNzIHBhdHRlcm5zIGluIHRoZXNlIFJlYWx0ZWsgUEhZIGltcGxlbWVudGF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU5MTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjU1LjE5MTkyMDQ4NVoiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MTczMTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndyaXRlX21tZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zODg9c3RhdGljIGludCBydGw4MjYxeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzk5LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQwMDpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9BRERSX1JFRyxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00MDEtXFx0XFx0XFx0ICAgIFJUTF84MjYxWF9TVUJfUEhZX0lEX0FERFIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NjIwPXN0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYyOC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2Mjk6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lORVIsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjMwLVxcdFxcdFxcdFxcdCAgICBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYzMy1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYzNDpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5FUiwgMCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjM1LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc0NT1zdGF0aWMgaW50IHJ0bGdlbl9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc2Mi1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzYzOnN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NjQtXFx0XFx0XFx0ICAgIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzc4PXN0YXRpYyBpbnQgcnRsODIyeF9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5NC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzk1OnN0YXRpYyBpbnQgcnRsODIyeF93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzk2LVxcdFxcdFxcdCAgICAgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzk3LXtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzk4OlxcdGludCByZXQgPSBydGxnZW5fd3JpdGVfbW1kKHBoeWRldiwgZGV2bnVtLCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE4MjI9c3RhdGljIGludCBydGw4MjJ4Yl9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTg2MC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxODYxOnN0YXRpYyBpbnQgcnRsODIyeGJfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWcsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTg2Mi1cXHRcXHRcXHQgICAgICB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTk0MT1zdGF0aWMgaW50IHJ0bDgyMjZfcGF0Y2hfbWRpX3N3YXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBzd2FwX2VuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE5OTEtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTk5MjpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjZfVk5EMl9BRENDQUxfT0ZGU0VULFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE5OTMtXFx0XFx0XFx0XFx0ICAgIGFkY2NhbF9vZmZzZXRbMyAtIGldKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTIwMzk9c3RhdGljIGludCBydGw4MjJ4X3NldF9zZXJkZXNfb3B0aW9uX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBnZW4xKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA3NS1cXHRpZiAoIWdlbjEpIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMDc2OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgMHg3NWYzLCAwKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDc3LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA4Ny1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMDg4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgMHg2YTA0LCAweDA1MDMpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIwODktXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDkxLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIwOTI6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCAweDZmMTAsIDB4ZDQ1NSk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA5My1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIwOTUtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjA5NjpcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCAweDZmMTEsIDB4ODAyMCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA5Ny19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMTA5PXN0YXRpYyBpbnQgcnRsODIyeF9zZXJkZXNfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIxMTItXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjExMzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFJUTDgyMlhfVk5EMV9TRVJERVNfQUREUiwgcmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMTE0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjExNi1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMTE3OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgUlRMODIyWF9WTkQxX1NFUkRFU19EQVRBLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIxMTgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMTIwLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIxMjE6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBSVEw4MjJYX1ZORDFfU0VSREVTX0NNRCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMTIyLVxcdFxcdFxcdCAgICBSVEw4MjJYX1ZORDFfU0VSREVTX0NNRF9XUklURSB8XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMzY5PXN0YXRpYyBpbnQgcnRsODIyeGJfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjM3Ny1cXHQvKiBjbGVhciBIVyBMRUQgc2V0dXAgKi9cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMzc4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMzc5LVxcdFxcdFxcdCAgICBSVEw4MjJYX1ZORDJfTEVEKGluZGV4KSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yNDY5PXN0YXRpYyBpbnQgcnRsODIyeGJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjQ5NC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNDk1OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNDk2LVxcdFxcdFxcdCAgICBSVEw4MjJYX1ZORDJfTEVEKGluZGV4KSwgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTI1NDE9c3RhdGljIGludCBydGw4MjI0X3NyYW1fcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjU0NC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNTQ1OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNTQ2LVxcdFxcdFxcdCAgICBSVEw4MjJYX1ZORDJfQzIyX1JFRyhSVEw4MjI0X01JSV9TUkFNX0FERFIpLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MjY3Nj1zdGF0aWMgaW50IHJ0bDgyMjRfcGFja2FnZV9tb2RpZnlfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2OTEtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjY5MjpcXHRyZXQgPSBfX3BoeV9wYWNrYWdlX3dyaXRlX21tZChwaHlkZXYsIDAsIGRldmFkLCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjY5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMwMDk9c3RhdGljIGludCBydGw4MjIxYl9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzAxNy1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMDE4OlxcdFxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTkVSLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMwMTktXFx0XFx0XFx0XFx0ICAgIFJUTDgyMjFCX1ZORDJfSU5FUl9MSU5LX1NUQVRVUyk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzAyMC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMwMjE6XFx0XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMwMjItXFx0XFx0XFx0XFx0ICAgIFJUTDgyMjFCX1ZORDJfSU5FUiwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zMDg2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMDQtXFx0XFx0LnJlYWRfbW1kXFx0PSBnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzEwNTpcXHRcXHQud3JpdGVfbW1kXFx0PSBnZW5waHlfd3JpdGVfbW1kX3Vuc3VwcG9ydGVkLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMDYtXFx0XFx0LnN1c3BlbmRcXHQ9IGdlbnBoeV9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzExNC1cXHRcXHQucmVhZF9tbWRcXHQ9IFxcdTAwMjZnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzExNTpcXHRcXHQud3JpdGVfbW1kXFx0PSBcXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMTE2LVxcdFxcdC5yZWFkX3BhZ2VcXHQ9IHJ0bDgyMXhfcmVhZF9wYWdlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEyMy1cXHRcXHQucmVhZF9tbWRcXHQ9IFxcdTAwMjZnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzEyNDpcXHRcXHQud3JpdGVfbW1kXFx0PSBcXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMTI1LVxcdFxcdC5zdXNwZW5kXFx0PSBydGw4MjExYl9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEzMy1cXHRcXHQucmVhZF9tbWRcXHQ9IFxcdTAwMjZnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzEzNDpcXHRcXHQud3JpdGVfbW1kXFx0PSBcXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMTM1LVxcdFxcdC5yZWFkX3BhZ2VcXHQ9IHJ0bDgyMXhfcmVhZF9wYWdlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwMy1cXHRcXHQucmVhZF9tbWRcXHQ9IHJ0bGdlbl9yZWFkX21tZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMjA0OlxcdFxcdC53cml0ZV9tbWRcXHQ9IHJ0bGdlbl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwNS1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjE1LVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeGJfcmVhZF9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIxNjpcXHRcXHQud3JpdGVfbW1kXFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIxNy1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjMxLVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeGJfcmVhZF9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIzMjpcXHRcXHQud3JpdGVfbW1kXFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIzMy1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjQ2LVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeGJfcmVhZF9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzI0NzpcXHRcXHQud3JpdGVfbW1kXFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzI0OC1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjYyLVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeGJfcmVhZF9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzI2MzpcXHRcXHQud3JpdGVfbW1kXFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzI2NC1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjgxLVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeGJfcmVhZF9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzI4MjpcXHRcXHQud3JpdGVfbW1kXFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzI4My1cXHRcXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gcnRsODIyeGJfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzMwNC1cXHRcXHQucmVhZF9tbWRcXHQ9IHJ0bDgyMnhiX3JlYWRfbW1kLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzMDU6XFx0XFx0LndyaXRlX21tZFxcdD0gcnRsODIyeGJfd3JpdGVfbW1kLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMzMDYtXFx0XFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IHJ0bDgyMnhiX2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMzMzMtXFx0XFx0LnJlYWRfbW1kXFx0PSBydGw4MjJ4X3JlYWRfbW1kLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzMzQ6XFx0XFx0LndyaXRlX21tZFxcdD0gcnRsODIyeF93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzMzNS1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMzQ3LVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeF9yZWFkX21tZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzQ4OlxcdFxcdC53cml0ZV9tbWRcXHQ9IHJ0bDgyMnhfd3JpdGVfbW1kLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMzNDktXFx0fSwge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzQwMS1cXHRcXHQucmVhZF9tbWRcXHQ9IGdlbnBoeV9yZWFkX21tZF91bnN1cHBvcnRlZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozNDAyOlxcdFxcdC53cml0ZV9tbWRcXHQ9IGdlbnBoeV93cml0ZV9tbWRfdW5zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzQwMy1cXHR9LCB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjU1LjI5NzA5OTgwMVoiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Njc4MDI3NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyBgLndyaXRlX21tZGAgSW1wbGVtZW50YXRpb25zKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGAud3JpdGVfbW1kYCBmdW5jdGlvbnM6IGBydGxnZW5fd3JpdGVfbW1kYCwgYHJ0bDgyMnhfd3JpdGVfbW1kYCwgYW5kIGBydGw4MjJ4Yl93cml0ZV9tbWRgLiBJdCdzIHByZXR0eSBjbGVhciB0aGV5IGFsbCBwZXJmb3JtIGEgc2ltaWxhciwgaWYgbm90IGlkZW50aWNhbCwgZnVuY3Rpb24uIFN0YW5kYXJkIG5hbWluZyBjb252ZW50aW9ucywgbm90aGluZyB1bnVzdWFsIHNvIGZhci4gQnV0IHdhaXQgYSBtaW51dGUuLi4gSSBzZWVtIHRvIHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgYHJ0bDgyMnhiX3dyaXRlX21tZGAuIFdhc24ndCB0aGVyZSBhIGNhbGwgdG8gYHJ0bGdlbl93cml0ZV9tbWRgIHdpdGhpbiBpdD8gVGhhdCdzIGRlZmluaXRlbHkgd29ydGggY29uZmlybWluZy4gSXQncyBhIGtleSBiaXQgb2YgaW5mb3JtYXRpb24uIExldCdzIGRpZyBpbnRvIGBydGw4MjJ4Yl93cml0ZV9tbWRgIGFuZCBjbGFyaWZ5IHRoYXQgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA5MTgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyOTowMC45NzUxMzExMjJaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMwNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4NjEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE4NjE6XFx0c3RhdGljIGludCBydGw4MjJ4Yl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZyxcXG4xODYyOlxcdFxcdFxcdFxcdCAgICAgIHUxNiB2YWwpXFxuMTg2MzpcXHR7XFxuMTg2NDpcXHRcXHRpbnQgb2xkcGFnZSwgcmV0LCB3cml0ZV9yZXQ7XFxuMTg2NTpcXHRcXHR1MTYgcGFnZTtcXG4xODY2OlxcdFxcbjE4Njc6XFx0XFx0LyogVXNlIGRlZmF1bHQgbWV0aG9kIGZvciBhbGwgTU1EcyBleGNlcHQgTURJT19NTURfVkVORDIgb3IgaW4gY2FzZVxcbjE4Njg6XFx0XFx0ICogQ2xhdXNlLTQ1IGFjY2VzcyBpcyBhdmFpbGFibGVcXG4xODY5OlxcdFxcdCAqL1xcbjE4NzA6XFx0XFx0aWYgKGRldm51bSAhPSBNRElPX01NRF9WRU5EMiB8fCBwaHlkZXYtXFx1MDAzZWlzX2M0NSlcXG4xODcxOlxcdFxcdFxcdHJldHVybiBtbWRfcGh5X3dyaXRlKHBoeWRldi1cXHUwMDNlbWRpby5idXMsIHBoeWRldi1cXHUwMDNlbWRpby5hZGRyLFxcbjE4NzI6XFx0XFx0XFx0XFx0XFx0ICAgICBwaHlkZXYtXFx1MDAzZWlzX2M0NSwgZGV2bnVtLCByZWcsIHZhbCk7XFxuMTg3MzpcXHRcXG4xODc0OlxcdFxcdC8qIFNpbXBsaWZ5IGFjY2VzcyB0byBDMjItcmVnaXN0ZXJzIGFkZHJlc3NlZCBpbnNpZGUgTURJT19NTURfVkVORDIgKi9cXG4xODc1OlxcdFxcdGlmIChyZWcgXFx1MDAzZT0gUlRMODIyWF9WTkQyX0MyMl9SRUcoMCkgXFx1MDAyNlxcdTAwMjZcXG4xODc2OlxcdFxcdCAgICByZWcgXFx1MDAzYz0gUlRMODIyWF9WTkQyX0MyMl9SRUcoMzApKVxcbjE4Nzc6XFx0XFx0XFx0cmV0dXJuIF9fcGh5X3dyaXRlKHBoeWRldiwgUlRMODIyWF9WTkQyX1RPX0MyMl9SRUcocmVnKSwgdmFsKTtcXG4xODc4OlxcdFxcbjE4Nzk6XFx0XFx0LyogVXNlIHBhZ2VkIGFjY2VzcyBmb3IgTURJT19NTURfVkVORDIgb3ZlciBDbGF1c2UtMjIgKi9cXG4xODgwOlxcdFxcdHBhZ2UgPSBSVEw4MjJYX1ZORDJfVE9fUEFHRShyZWcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyOTowMC45NzUzNjQ0OTFaIiwiU2VxIjo3MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcwMDkzNTI2MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFJlYWx0ZWsgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc3VtcHRpb24gYWJvdXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBydGw4MjJ4Yl93cml0ZV9tbWRgIGFuZCBgcnRsZ2VuX3dyaXRlX21tZGAgd2FzIGluY29ycmVjdC4gV2UndmUgZXN0YWJsaXNoZWQgdGhhdCBgcnRsZ2VuX3dyaXRlX21tZGAgYW5kIGBydGw4MjJ4X3dyaXRlX21tZGAgYXJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyB0aGF0IHV0aWxpemUgYHJ0bGdlbl93cml0ZV92ZW5kMmAgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIGBNRElPX0FOX0VFRV9BRFZgIHJlZ2lzdGVyLlxuXG5MZXQncyB6b29tIGluIG9uIGBydGxnZW5fd3JpdGVfbW1kYC4gV2Uga25vdyB0aGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IHdhcyBwYXRjaGVkLiBMb29raW5nIGF0IHRoZSBjb2RlOlxuXG5gYGBjXG5zdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcblx0XHRcdCAgICB1MTYgdmFsKVxue1xuXHRpbnQgcmV0O1xuXG5cdGlmIChkZXZudW0gPT0gTURJT19NTURfVkVORDIpXG5cdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCB2YWwpO1xuXHRlbHNlIGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYpXG5cdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEViwgdmFsKTtcblx0ZWxzZVxuXHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuXG5cdHJldHVybiByZXQ7XG59XG5gYGBcblxuTXkgcmVhc29uaW5nIGlzOiBUaGUgY3J1eCBvZiB0aGUgcGF0Y2ggcmV2b2x2ZXMgYXJvdW5kIGNvcnJlY3RpbmcgYSBwb3RlbnRpYWwgc3dhcCBvZiBgcmVnbnVtYCBhbmQgYHZhbGAgd2hlbiBjYWxsaW5nIGBydGxnZW5fd3JpdGVfdmVuZDJgIHdpdGhpbiBgcnRsZ2VuX3dyaXRlX21tZGAuIFRoZSB2dWxuZXJhYmlsaXR5IGNvdWxkIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGBTSU9DU01JSVJFR2AgaW9jdGwgb3IsIHBvdGVudGlhbGx5LCB0aHJvdWdoIGBFVEhUT09MX1NFRUVgLCB3aGljaCwgaW4gdHVybiwgaW50ZXJhY3RzIHdpdGggYHJ0bGdlbl93cml0ZV9tbWRgIGFuZCBpdHMgcmVsYXRlZCBmdW5jdGlvbnMuIFRoaXMgaXMgc3BlY2lmaWNhbGx5IHJlbGV2YW50IHdoZW4gYSBSZWFsdGVrIFBIWSBpcyBjb25uZWN0ZWQuXG5cblRoZXJlZm9yZSwgdGhlIGtleSBlbGVtZW50cyB0byBoaWdobGlnaHQgYXJlOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IFRydWUqKiAoZHVlIHRvIHRoZSBidWcgYW5kIGFjY2Vzc2liaWxpdHkpXG4qICAgKipGb2N1c1N5bWJvbHM6KiogYHJ0bGdlbl93cml0ZV9tbWRgLCBhbmQgYHJ0bDgyMnhfd3JpdGVfbW1kYCAoYmVjYXVzZSB0aGV5IGFyZSB0aGUgb25lcyB1c2luZyB0aGUgcGF0Y2hlZCBmdW5jdGlvbilcbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYFJFQUxURUtfUEhZYCAoYmVjYXVzZSBpdCdzIHRoZSBzcGVjaWZpYyBjb25maWcgcmVxdWlyZWQpXG5cbk5vdywgYSBicmllZiBjaGVjayBvbiB0aGUgc3RhdGljIG5hdHVyZSBvZiBgcnRsZ2VuX3dyaXRlX21tZGAuIFllcywgaXQncyBkZWNsYXJlZCBgc3RhdGljYC4gSG93ZXZlciwgc2luY2UgaXQncyB1c2VkIHdpdGggYSBmdW5jdGlvbiBwb2ludGVyIChpLmUuLCB0aHJvdWdoIGlvY3RsIG9yIGV0aHRvb2wpLCBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGlzIG1lYW5zIHN5emthbGxlciAqY2FuKiB0YXJnZXQgaXQsIG1ha2luZyBpdCBhIHZpYWJsZSBmb2N1cyBzeW1ib2wuXG5cbkZpbmFsbHksIGNvbmZpcm1pbmcgdGhhdCBgUkVBTFRFS19QSFlgIGlzIGEgdHJpc3RhdGUgY29uZmlnIGlzIGNydWNpYWwuIFRoYXQgc2V0dGxlcyBpdC4gTWVudGlvbmluZyBgUEhZTElCYCBpc24ndCBhIHByb2JsZW0sIGJ1dCBgUkVBTFRFS19QSFlgIGlzIHRoZSB0YXJnZXQgY29uZmlnLlxuXG5JJ20gcmVhZHkgdG8gbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE2NjksIk91dHB1dFRva2VucyI6MTMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjk6MTcuOTg0NzE5ODEyWiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1NzU2MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRUFMVEVLX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bGdlbl93cml0ZV9tbWRcIixcbiAgICBcInJ0bDgyMnhfd3JpdGVfbW1kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYXJndW1lbnRzIHdlcmUgc3dhcHBlZCBpbiBhIGNhbGwgdG8gcnRsZ2VuX3dyaXRlX3ZlbmQyIGluc2lkZSBydGxnZW5fd3JpdGVfbW1kLiBUaGlzIGZ1bmN0aW9uIGlzIGEgLndyaXRlX21tZCBjYWxsYmFjayBmb3IgUmVhbHRlayBQSFkgZHJpdmVycyBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBTSU9DU01JSVJFRyBpb2N0bCBvciBFVEhUT09MX1NFRUUgd2hlbiBhIFJlYWx0ZWsgUEhZIGlzIGF0dGFjaGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJFQUxURUtfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRsZ2VuX3dyaXRlX21tZFwiLFxuICAgIFwicnRsODIyeF93cml0ZV9tbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhcmd1bWVudHMgd2VyZSBzd2FwcGVkIGluIGEgY2FsbCB0byBydGxnZW5fd3JpdGVfdmVuZDIgaW5zaWRlIHJ0bGdlbl93cml0ZV9tbWQuIFRoaXMgZnVuY3Rpb24gaXMgYSAud3JpdGVfbW1kIGNhbGxiYWNrIGZvciBSZWFsdGVrIFBIWSBkcml2ZXJzIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFNJT0NTTUlJUkVHIGlvY3RsIG9yIEVUSFRPT0xfU0VFRSB3aGVuIGEgUmVhbHRlayBQSFkgaXMgYXR0YWNoZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow24x98[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 15:44:17 +0000 UTC FinishedAt: 2026-08-06 16:29:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b0057c68df711bf6a62033c072ac61c4f9d3cbc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "REALTEK_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b0057c68df711bf6a62033c072ac61c4f9d3cbc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "REALTEK_PHY" ], "series_id": "c44c9fb9-8cce-4c69-ab9a-cfde5f53142b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtlgen_write_mmd", "rtl822x_write_mmd" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JFQUxURUtfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsZ2VuX3dyaXRlX21tZCYjMzQ7LAogICAgJiMzNDtydGw4MjJ4X3dyaXRlX21tZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhcmd1bWVudHMgd2VyZSBzd2FwcGVkIGluIGEgY2FsbCB0byBydGxnZW5fd3JpdGVfdmVuZDIgaW5zaWRlIHJ0bGdlbl93cml0ZV9tbWQuIFRoaXMgZnVuY3Rpb24gaXMgYSAud3JpdGVfbW1kIGNhbGxiYWNrIGZvciBSZWFsdGVrIFBIWSBkcml2ZXJzIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFNJT0NTTUlJUkVHIGlvY3RsIG9yIEVUSFRPT0xfU0VFRSB3aGVuIGEgUmVhbHRlayBQSFkgaXMgYXR0YWNoZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMWE4MDNjMGZkNmZkZmQxYzdmY2JmNmMxZmRhOTg2NzY1MWEyZWZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxNjoyMToxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5pbmRleCBhMGE3OTE5MjM4NGVlLi4xNzdiNjJhN2IyZDE2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtMTc2OCw3ICYjNDM7MTc2OCw3IEBAIHN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxuIFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9WRU5EMilcbiBcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCB2YWwpO1xuIFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxuLVx0XHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIFJUTF9NRElPX0FOX0VFRV9BRFYpO1xuJiM0MztcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEViwgdmFsKTtcbiBcdGVsc2VcbiBcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JFQUxURUtfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsZ2VuX3dyaXRlX21tZCYjMzQ7LAogICAgJiMzNDtydGw4MjJ4X3dyaXRlX21tZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhcmd1bWVudHMgd2VyZSBzd2FwcGVkIGluIGEgY2FsbCB0byBydGxnZW5fd3JpdGVfdmVuZDIgaW5zaWRlIHJ0bGdlbl93cml0ZV9tbWQuIFRoaXMgZnVuY3Rpb24gaXMgYSAud3JpdGVfbW1kIGNhbGxiYWNrIGZvciBSZWFsdGVrIFBIWSBkcml2ZXJzIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFNJT0NTTUlJUkVHIGlvY3RsIG9yIEVUSFRPT0xfU0VFRSB3aGVuIGEgUmVhbHRlayBQSFkgaXMgYXR0YWNoZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMWE4MDNjMGZkNmZkZmQxYzdmY2JmNmMxZmRhOTg2NzY1MWEyZWZjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAxNjoyMToxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKaW5kZXggYTBhNzkxOTIzODRlZS4uMTc3YjYyYTdiMmQxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKQEAgLTE3NjgsNyAmIzQzOzE3NjgsNyBAQCBzdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSwKIAlpZiAoZGV2bnVtID09IE1ESU9fTU1EX1ZFTkQyKQogCQlyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIHZhbCk7CiAJZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOICZhbXA7JmFtcDsgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVikKLQkJcmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCBSVExfTURJT19BTl9FRUVfQURWKTsKJiM0MzsJCXJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYsIHZhbCk7CiAJZWxzZQogCQlyZXQgPSAtRU9QTk9UU1VQUDsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlYWx0ZWsgUEhZIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYC4gSXQmIzM5O3MgYSBSZWFsdGVrIFBIWSBkcml2ZXIsIHdoaWNoIGlzIGEgY29tbW9uIGFyZWEgZm9yIHBvdGVudGlhbCBpc3N1ZXMuIFRoZSBkZXNjcmlwdGlvbiBpbmRpY2F0ZXMgYSBidWdmaXggaW4gYHJ0bGdlbl93cml0ZV9tbWRgLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBob3cgYHJ0bGdlbl93cml0ZV92ZW5kMmAgaXMgYmVpbmcgY2FsbGVkLiBSaWdodCwgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIHRoZSBhcmd1bWVudHMgZm9yIGBydGxnZW5fd3JpdGVfdmVuZDJgIHN3YXBwZWQuIEl0IGxvb2tzIGxpa2UgaXQgd2FzIHBhc3NpbmcgYHJlZ251bWAgYW5kIGB2YWxgIGluIHRoZSB3cm9uZyBvcmRlci4gVGhlIGZpeGVkIGNvZGUgc2VlbXMgdG8gY29ycmVjdCB0aGlzIHRvIGBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpYC4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIHRoaXMgYmUgdHJpZ2dlcmVkPyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgcmVhY2hhYmlsaXR5LiBTaW5jZSBpdCYjMzk7cyBhIFBIWSBkcml2ZXIsIGl0JiMzOTtzIHByZXR0eSBsaWtlbHkgdGhhdCB3ZSBjYW4gaGl0IHRoaXMgY29kZSBwYXRoIHNvbWVob3cuIFZpcnR1YWwgbmV0d29yayBkZXZpY2VzIHRoYXQgdXNlIFBIWXMgYXJlIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYW5kIEkmIzM5O2QgYmV0IHRoZSBNRElPIGJ1cyBpcyB0aGUga2V5IGhlcmUuIFdlIG1pZ2h0IGJlIGFibGUgdG8gaW5zdGFudGlhdGUgUEhZcyB1c2luZyB0aGUgTURJTyBidXMgdG8gdHJpZ2dlciB0aGlzLCBvciB2aWEgTURJTyBpb2N0bHMuCgpMZXQmIzM5O3Mgc2VlLi4uc3l6a2FsbGVyISBJdCYjMzk7cyBsaWtlbHkgdGhhdCBzeXprYWxsZXIgY2FuIGhhbmRsZSB0aGlzLCByaWdodD8gSXQgY2FuIGZ1enogTURJTyBidXNlcyBhbmQgUEhZcyB1c2luZyBgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG9yIGp1c3QgdGhyb3VnaCBkaXJlY3QgTURJTyBpb2N0bCBtYW5pcHVsYXRpb24uIFRoYXQgc2hvdWxkIGJlIGEgdmVyeSBlZmZlY3RpdmUgd2F5IHRvIGdldCB0byB0aGlzIGNvZGUuIE9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYHJ0bGdlbl93cml0ZV9tbWRgIGFuZCBzZWUgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGxnZW5fd3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc0NT1zdGF0aWMgaW50IHJ0bGdlbl9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NjItXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzYzOnN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc2NC1cdFx0XHQgICAgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzk1PXN0YXRpYyBpbnQgcnRsODIyeF93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzk3LXtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3OTg6XHRpbnQgcmV0ID0gcnRsZ2VuX3dyaXRlX21tZChwaHlkZXYsIGRldm51bSwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5OS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zMDg2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjAzLVx0XHQucmVhZF9tbWRcdD0gcnRsZ2VuX3JlYWRfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIwNDpcdFx0LndyaXRlX21tZFx0PSBydGxnZW5fd3JpdGVfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwNS1cdH0sIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjE3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLgoKKipJbnZlc3RpZ2F0aW5nIHJ0bGdlbl93cml0ZV9tbWQgaW4gUmVhbHRlayBQSFkgRHJpdmVycyoqCgpSaWdodCwgc28gYHJ0bGdlbl93cml0ZV9tbWRgIGlzIGJlaW5nIGVtcGxveWVkIGFzIHRoZSBgLndyaXRlX21tZGAgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYSBoYW5kZnVsIG9mIFBIWSBkcml2ZXJzIHJlc2lkaW5nIGluIHRoZSBgcmVhbHRla19kcnZzYCBkaXJlY3RvcnkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGFyZSBmb3IgdGhpcyBzcGVjaWZpYyBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIG92ZXJhbGwgY29udGV4dCB0byBlbnN1cmUgdGhpcyBpcyB1c2VkIGFzIGludGVuZGVkLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBhc3NvY2lhdGVkIGZpbGVzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWFsdGVrX21haW4ubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlOjI6cmVhbHRlay15XHRcdFx0JiM0Mzs9IHJlYWx0ZWtfbWFpbi5vXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZS0zLXJlYWx0ZWstJChDT05GSUdfUkVBTFRFS19QSFlfSFdNT04pICYjNDM7PSByZWFsdGVrX2h3bW9uLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczoKCioqSW52ZXN0aWdhdGluZyB0aGUgUmVhbHRlayBQSFkgRHJpdmVyIExvY2F0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBSZWFsdGVrIFBIWSBkcml2ZXJzIGFyZSBsb2NhdGVkIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBNeSBmaXJzdCBpbnN0aW5jdCwgYW5kIHRoZSBzdGFuZGFyZCBwcmFjdGljZSBmb3IgdGhpcyBraW5kIG9mIGludmVzdGlnYXRpb24sIGlzIHRvIGNoZWNrIHRoZSBgTWFrZWZpbGVgIHdpdGhpbiB0aGUgcmVsZXZhbnQgZHJpdmVyIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBuZXR3b3JrIFBIWSBkcml2ZXJzLiBHaXZlbiBteSBleHBlcmllbmNlLCBgZHJpdmVycy9uZXQvcGh5L2AgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuIEEgcXVpY2sgcGVlayBpbiBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCB3aWxsIHByb2JhYmx5IGdpdmUgbWUgdGhlIGFuc3dlciwgbGlzdGluZyB0aGUgc3BlY2lmaWMgb2JqZWN0IGZpbGVzIG9yIHNvdXJjZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggUmVhbHRlayBQSFkgc3VwcG9ydC4gVGhpcyBzaG91bGQgYmUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWFsdGVrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT05NT1vYmotJChDT05GSUdfUVNFTUlfUEhZKVx0XHQmIzQzOz0gcXNlbWkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk2Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcdCYjNDM7PSByZWFsdGVrL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk3LW9iai0kKENPTkZJR19SRU5FU0FTX1BIWSlcdCYjNDM7PSB1UEQ2MDYyMC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgzMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBSZWFsdGVrIFBIWSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyB3ZSBuZWVkIGBDT05GSUdfUkVBTFRFS19QSFlgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBiZWZvcmUgSSBqdXN0IGJsaW5kbHkgZW5hYmxlIGl0LCBsZXQmIzM5O3MgYmUgc21hcnQgYWJvdXQgdGhpcy4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiB3aGF0IGFyZSBpdHMgZGVwZW5kZW5jaWVzPyBUaGVyZSYjMzk7cyBhbHdheXMgYSB3ZWIgb2YgaW50ZXJjb25uZWN0ZWQgY29uZmlndXJhdGlvbnMgaW4gdGhlc2UgdGhpbmdzLCBhbmQgb3Zlcmxvb2tpbmcgYSBkZXBlbmRlbmN5IGNhbiBsZWFkIHRvIGhvdXJzIG9mIGRlYnVnZ2luZyBsYXRlciBvbi4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgYENPTkZJR19SRUFMVEVLX1BIWWAuIFdlIGRvbiYjMzk7dCB3YW50IHRvIGJyZWFrIGFueXRoaW5nIGVsc2UgaW4gdGhlIHByb2Nlc3MsIGFuZCB3ZSB3YW50IHRvIGVuc3VyZSBldmVyeXRoaW5nIG5lZWRlZCBpcyBlbmFibGVkIG9yIHNldCB1cCBjb3JyZWN0bHkgYmVmb3JlIHdlIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJFQUxURUtfUEhZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFBIWXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnPTg9aWYgUkVBTFRFS19QSFlcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctOS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTA6Y29uZmlnIFJFQUxURUtfUEhZX0hXTU9OXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtIV01PTiBzdXBwb3J0IGZvciBSZWFsdGVrIFBIWXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIyOQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBpZiBJJiMzOTttIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgUmVhbHRlayBQSFkgS2NvbmZpZyoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGlzIFJlYWx0ZWsgUEhZIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQga25vd2luZyBpdHMgZGVwZW5kZW5jaWVzIHdpbGwgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuIFRoaXMgZmlsZSB3aWxsIHJldmVhbCB3aGF0IG90aGVyIGNvbXBvbmVudHMgb3Igc2V0dGluZ3MgYXJlIHJlcXVpcmVkIG9yIGNhbiBpbXBhY3QgdGhpcyBzcGVjaWZpYyBQSFkgZHJpdmVyJiMzOTtzIGluY2x1c2lvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IG5lY2Vzc2FyeSBjb3JlIG5ldHdvcmsgZmVhdHVyZXMsIHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQsIG90aGVyIFJlYWx0ZWsgZGVwZW5kZW5jaWVzLCBvciBwZXJoYXBzIGV2ZW4gYnJvYWRlciBhcmNoaXRlY3R1cmFsIHJlcXVpcmVtZW50cy4gVGhlIEtjb25maWcgZmlsZSBpcyBteSBrZXkgdG8gdW5sb2NraW5nIHRoZSBjb25maWd1cmF0aW9uIHB1enpsZSBhbmQgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBlY29zeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBSRUFMVEVLX1BIWVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBQSFlzXCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIFJUTDgyMXgvUlRMODIyeCBhbmQgZmFzdCBldGhlcm5ldCBQSFlzXG4gICA3Olx0XG4gICA4Olx0aWYgUkVBTFRFS19QSFlcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgUkVBTFRFS19QSFlfSFdNT05cbiAgMTE6XHRcdGJvb2wgXCYjMzQ7SFdNT04gc3VwcG9ydCBmb3IgUmVhbHRlayBQSFlzXCYjMzQ7XG4gIDEyOlx0XHRkZXBlbmRzIG9uIEhXTU9OIFx1MDAyNlx1MDAyNiAhKFJFQUxURUtfUEhZPXkgXHUwMDI2XHUwMDI2IEhXTU9OPW0pXG4gIDEzOlx0XHRoZWxwXG4gIDE0Olx0XHQgIE9wdGlvbmFsIGh3bW9uIHN1cHBvcnQgZm9yIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3JcbiAgMTU6XHRcbiAgMTY6XHRlbmRpZiAjIFJFQUxURUtfUEhZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2OTIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBQSFkgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiBpc24mIzM5O3QgZGlyZWN0bHkgdGllZCB0byBhbnl0aGluZyAqb2J2aW91cyogaW4gdGhlIGNvZGUuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgaXQgcmVzaWRlcyB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBpcyBhIHByZXR0eSBzdHJvbmcgaGludC4gIFRoYXQgZGlyZWN0b3J5IHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggUEhZIChQaHlzaWNhbCBMYXllcikgZHJpdmVycywgc28gbGV0JiMzOTtzIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMuLi4gYW5kIHRoZXJlIGl0IGlzOiBgUEhZTElCYC4gSXQmIzM5O3MgYSBrZXkgZGVwZW5kZW5jeS4gTm93IEkgbmVlZCB0byBzZWUgd2hhdCBQSFlMSUIgZW5hYmxlcywgYW5kIGlmIHRoYXQgZ2l2ZXMgbW9yZSBjbGFyaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz02PWNvbmZpZyBQSFlMSU5LXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTptZW51Y29uZmlnIFBIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cdGRlZl9ib29sIE9GXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgUEhZTElCIGFuZCBNRElPIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHdlIGNhbiByZWFjaCBgUEhZTElCYCBmcm9tIHVzZXIgc3BhY2UuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3ZlIGdvdCBhIGNvdXBsZSBvZiBzb2xpZCBvcHRpb25zOiBuZXRsaW5rIG9yIGdvb2Qgb2xkLWZhc2hpb25lZCBpb2N0bHMsIGxpa2UgYFNJT0NTTUlJUkVHYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgaG93IHdlIGNhbiBpbnRlZ3JhdGUgdGhpcyBpbnRvIGEgZnV6emluZyBzZXR1cCB3aXRoIHN5emthbGxlci4KCkNhbiBzeXprYWxsZXIgZnV6eiBNRElPIGJ1c2VzIHVzaW5nIHZpcnR1YWwgZGV2aWNlcz8gV2UgY291bGQgdXNlIGB0dW5gLCBgdmV0aGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyIGFuZCBhdHRhY2ggUEhZcyB0aGF0IHdheS4gT3IsIHBlcmhhcHMsIHdlIGNhbiB0YXJnZXQgdGhlIGBtZGlvYCBzdWJzeXN0ZW0gZGlyZWN0bHkuIFdhaXQgYSBtaW51dGXigKZJIHJlY2FsbCBzZWVpbmcgTURJTyBhbmQgUEhZIGRlc2NyaXB0aW9ucyBpbiBzeXprYWxsZXIgYWxyZWFkeS4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiEgSXQgbWVhbnMgc29tZW9uZSYjMzk7cyBhbHJlYWR5IHB1dCBpbiBzb21lIGdyb3VuZHdvcmssIHdoaWNoIGlzIGZhbnRhc3RpYyBuZXdzLgoKQWxyaWdodCwgbGV0JiMzOTtzIGRyaWxsIGRvd24gYSBiaXQuIExldCYjMzk7cyBzZWUgaWYgd2UgY2FuIHJlYWNoIGBydGxnZW5fd3JpdGVfbW1kYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIGAud3JpdGVfbW1kYCBjYWxsYmFjay4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSBiYWNrIGFuZCBmaW5kIG91dCB3aGVyZSB0aGF0IGNhbGxiYWNrIGlzIGFjdHVhbGx5IHVzZWQuIFdoZXJlIGFyZSB0aGUgY2FsbHMgdG8gYC53cml0ZV9tbWRgIGhhcHBlbmluZz8gVGhhdCYjMzk7cyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCB0aGUgYXR0YWNrIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dyaXRlX21tZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0yNzg2PUVYUE9SVF9TWU1CT0woZ2VucGh5X3JlYWRfbW1kX2M0NSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3ODctXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjI3ODg6aW50IGdlbnBoeV93cml0ZV9tbWRfYzQ1KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3ODktXHRcdFx0IHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yNzk1LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mjc5NjpFWFBPUlRfU1lNQk9MKGdlbnBoeV93cml0ZV9tbWRfYzQ1KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjc5Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTI4MDY9RVhQT1JUX1NZTUJPTChnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yODA3LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoyODA4OmludCBnZW5waHlfd3JpdGVfbW1kX3Vuc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaGRldiwgaW50IGRldm51bSxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgwOS1cdFx0XHRcdCB1MTYgcmVnbnVtLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgxMi19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjI4MTM6RVhQT1JUX1NZTUJPTChnZW5waHlfd3JpdGVfbW1kX3Vuc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgxNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg3MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBUEkgQ2xhcmlmaWNhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gZ2V0IHRoaXMgc3RyYWlnaHQgaW4gbXkgaGVhZC4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgd3JpdGUgcGF0aCwgYW5kIEkmIzM5O3ZlIGJlZW4gbXVsbGluZyBvdmVyIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMuIFRoZW4gaXQgaGl0IG1lOiB0aGUgZnVuY3Rpb24gSSYjMzk7bSBhY3R1YWxseSBkZWFsaW5nIHdpdGggaGVyZSwgdGhlIGNvcmUgQVBJIGZvciB3cml0aW5nIHRvIHRoZSBtZW1vcnkgbWFwcGVkIGRldmljZSAoTU1EKSwgaXMgYHBoeV93cml0ZV9tbWRgLiBJdCYjMzk7cyB0aGF0IHNpbXBsZSwgcmVhbGx5LiBUaGF0JiMzOTtzIHRoZSBrZXkgZnVuY3Rpb24gdG8gdHJhY2UgYW5kIHVuZGVyc3RhbmQ7IGV2ZXJ5dGhpbmcgZWxzZSBpcyBsaWtlbHkgbGVhZGluZyB0byBvciBzdXBwb3J0aW5nIGl0cyBleGVjdXRpb24uIEdvb2QsIHRoYXQgY2xhcmlmaWVzIHRoaW5ncy4gTm93IEkgY2FuIGJ1aWxkIG9uIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV93cml0ZV9tbWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODI4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTI3NT1zdGF0aWMgaW50IGFkaW5fY29uZmlnX3JnbWlpX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTMxNi1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzE3Olx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzE4LVx0XHRcdCAgICAgQURJTjEzMDBfR0VfUkdNSUlfQ0ZHX1JFRywgcmVnKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTMyMT1zdGF0aWMgaW50IGFkaW5fY29uZmlnX3JtaWlfbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzQzLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozNDQ6XHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDUtXHRcdFx0ICAgICBBRElOMTMwMF9HRV9STUlJX0NGR19SRUcsIHJlZyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM9MTkyPXN0YXRpYyBpbnQgYWRpbl9zZXRfcG93ZXJkb3duX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xOTUtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxOTY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xOTctXHRcdFx0ICAgIEFESU5fQ1JTTV9TRlRfUERfQ05UUkwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jPTQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhZGluMTE0MF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmMtNTQtXHRcdC5yZWFkX21tZCA9IGdlbnBoeV9yZWFkX21tZF9jNDUsXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmM6NTU6XHRcdC53cml0ZV9tbWQgPSBnZW5waHlfd3JpdGVfbW1kX2M0NSxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy01Ni1cdFx0LmdldF9wbGNhX2NmZyA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM9MjcyPXN0YXRpYyBpbnQgYW44ODAxcl9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzAwLVx0XHRcdFx0ICAgICBMRURfQkxJTktfRFVSX01BU0spO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozMDE6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEVEX0JMSU5LX0RVUixcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzAyLVx0XHRcdFx0ICAgIGJsaW5rX2R1cik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zMDUtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjMwNjpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMRURfT05fRFVSLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zMDctXHRcdFx0XHQgICAgaHdfZGVsYXlfb24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM9OTAyPXN0YXRpYyBpbnQgYW44ODAxcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTExLVx0LyogRGlzYWJsZSBMb3cgUG93ZXIgTW9kZSAoTFBNKSAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5MTI6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFOODgwMV9SRUdfUEhZX0lOVEVSTkFMMCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTEzLVx0XHRcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfSU5URlVOQ19NQVNLLCAweDFlKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MTYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjkxNzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQU44ODAxX1JFR19QSFlfSU5URVJOQUwxLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MTgtXHRcdFx0ICAgIEZJRUxEX1BSRVAoQU44ODAxX1BIWV9JTlRGVU5DX01BU0ssIDB4MikpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTU3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NTg6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk1OS1cdFx0XHQgICAgQU44ODAxX1BIWV9UWF9QQUlSX0RMWV9TRUxfR0JFLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTY0LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NjU6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFOODgwMV9QSFlfUlhBRENfQ1RSTCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTY2LVx0XHRcdCAgICBBTjg4MDFfUEhZX1JYQURDX1NBTVBfUEhTRUxfQSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NzAtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjk3MTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQU44ODAxX1BIWV9SWEFEQ19SRVZfMCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTcyLVx0XHRcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfUlhBRENfUkVWX01BU0tfQSwgMSkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTc1LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NzY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFOODgwMV9QSFlfUlhBRENfUkVWXzEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk3Ny1cdFx0XHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX1JYQURDX1JFVl9NQVNLX0MsIDEpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz02MTA9c3RhdGljIGludCBhaXJfaHdfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MjgtXHRpZiAoY2hhbmdlZClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYyOTpcdFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYzMC1cdFx0XHRcdCAgICAgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTcwOD1zdGF0aWMgaW50IGFpcl9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzY0LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzY1Olx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzY2LVx0XHRcdCAgICAgYmxpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTc5Nz1zdGF0aWMgaW50IGFpcl9sZWRzX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IG51bSwgaW50IGR1ciwgaW50IG1vZGUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODAxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODAyOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9EVVJfQkxJTkssXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDMtXHRcdFx0ICAgIGR1cik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODA2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODA3Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9EVVJfT04sXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDgtXHRcdFx0ICAgIGR1ciBcdTAwM2VcdTAwM2UgMSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTI4MT1zdGF0aWMgaW50IGVuODgxMWhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMjk4LVx0ICovXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjk5Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDAtXHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8xX01PREUxKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzAyLVx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMwMzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA0LVx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfMl9NT0RFMSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwNi1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDc6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwOC1cdFx0XHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfTU9ERTEpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMTAtXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzExOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfNCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMTItXHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X01PREUxKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xNDUyPXN0YXRpYyBpbnQgZW44ODExaF9jbGVhcl9pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ1NS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0NTY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ1Ny1cdFx0XHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfRE9DTUQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjAtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDYxOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfNCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjItXHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X0lOVENMUik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM9OTA9c3RhdGljIGludCBhcXJfZndfbG9hZF9tZW1vcnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtOTUtXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzo5NjpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk3LVx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UxLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtOTgtXHRcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTFfQ1JDX1JFU0VUKTtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjk5Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTAwLVx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTAxLVx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UzX01TV19BRERSKGFkZHIpKTtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjEwMjpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTEwMy1cdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMTUtXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoxMTY6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTExNy1cdFx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U1X01TV19EQVRBKHdvcmQpKTtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjExODpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U2LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTE5LVx0XHRcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTZfTFNXX0RBVEEod29yZCkpO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTIwLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTIxOlx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTEsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMjItXHRcdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMV9FWEVDVVRFIHxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYz0xNDk9c3RhdGljIGludCBhcXJfZndfYm9vdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCB1OCAqZGF0YSwgc2l6ZV90IHNpemUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjYxLVx0Lyogc3RhbGwgdGhlIG1pY3JvY3Byb2Nlc3NvciAqL1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MjYyOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfQ09OVFJPTDIsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yNjMtXHRcdCAgICAgIFZFTkQxX0dMT0JBTF9DT05UUk9MMl9VUF9SVU5fU1RBTEwgfCBWRU5EMV9HTE9CQUxfQ09OVFJPTDJfVVBfUlVOX1NUQUxMX09WRCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjgzLVx0LyogUmVsZWFzZSB0aGUgbWljcm9wcm9jZXNzb3IuIFVQX1JFU0VUIG11c3QgYmUgaGVsZCBmb3IgMTAwIHVzZWMuICovXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoyODQ6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9DT05UUk9MMixcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI4NS1cdFx0ICAgICAgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTCB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjg5LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MjkwOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfQ09OVFJPTDIsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yOTEtXHRcdCAgICAgIFZFTkQxX0dMT0JBTF9DT05UUk9MMl9VUF9SVU5fU1RBTExfT1ZEKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYz01NT1zdGF0aWMgaW50IGFxcl9od21vbl9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHJlZywgbG9uZyB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYy02NC1cdC8qIHRlbXAgaXMgaW4gczE2IHJhbmdlIGFuZCB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbiBsb3dlciAxNiBiaXRzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9od21vbi5jOjY1Olx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgcmVnLCAodTE2KXRlbXApO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2h3bW9uLmMtNjYtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM9MjUzPXN0YXRpYyBpbnQgYXFyX2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNjQtXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjI2NTpcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9UWF9WRU5EX0lOVF9NQVNLMixcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY2LVx0XHRcdCAgICBlbiA/IE1ESU9fQU5fVFhfVkVORF9JTlRfTUFTSzJfTElOSyA6IDApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY5LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNzA6XHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9JTlRfU1REX01BU0ssXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI3MS1cdFx0XHQgICAgZW4gPyBWRU5EMV9HTE9CQUxfSU5UX1NURF9NQVNLX0FMTCA6IDApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjc0LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNzU6XHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9JTlRfVkVORF9NQVNLLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNzYtXHRcdFx0ICAgIGVuID8gVkVORDFfR0xPQkFMX0lOVF9WRU5EX01BU0tfR0xPQkFMMyB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYz0zNjk9c3RhdGljIGludCBhcXIxMDVfc2V0dXBfZm9yY2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDEtXHR9XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjQwMjpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9BRFZFUlRJU0UsIGFkdik7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwMy1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNC1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6NDA1Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOX1ZFTkRfUFJPViwgdmVuZCk7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNi1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNy1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6NDA4Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwsIGN0cmwxMCk7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwOS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz0yOTc9c3RhdGljIGludCBhZW9uX2Zpcm13YXJlX2Jvb3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgdTggKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMDctXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjMwODpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfRldfU1RBUlRfQUREUixcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzA5LVx0XHRcdCAgICBBRU9OX0JPT1RfQUREUik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMjktXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjMzMDpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMzEtXHRcdFx0XHQgICAgVkVORDFfR0xCX1JFR19NRElPX0lORElSRUNUX0xPQUQsIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMzUtXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjMzNjpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzM3LVx0XHRcdCAgICBWRU5EMV9HTEJfUkVHX0NQVV9SRVNFVF9BRERSX0xPX0JBU0VBRERSLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzQxLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzozNDI6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTM0My1cdFx0XHQgICAgVkVORDFfR0xCX1JFR19DUFVfUkVTRVRfQUREUl9ISV9CQVNFQUREUixcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jPTQwNT1zdGF0aWMgaW50IGFlb25faXBjX3NlbmRfY21kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy00MjItXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjQyMzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfSVBDX0NNRCwgY21kKTtcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDI0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jPTQ1NT1zdGF0aWMgaW50IGFlb25faXBjX3NlbmRfbXNnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy00NzEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkYXRhX2xlbiAvIHNpemVvZih1MTYpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6NDcyOlx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0lQQ19EQVRBKGkpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy00NzMtXHRcdFx0ICAgICAgZGF0YVtpXSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9MzcyPWludCBiY21fcGh5X3NldF9lZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzg1LVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Mzg2Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBCUkNNX0NMNDVWRU5fRUVFX0NPTlRST0wsICh1MzIpdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTM4Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy00MDQtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo0MDU6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIEJDTV9DTDQ1VkVOX0VFRV9BRFYsICh1MzIpdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTQwNi1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jPTYyOD1zdGF0aWMgaW50IGJjbTd4eHhfMjhubV9lcGh5X3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYy02NTctXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jOjY1ODpzdGF0aWMgaW50IGJjbTd4eHhfMjhubV9lcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYy02NTktXHRcdFx0XHQgICAgICAgaW50IGRldm51bSwgdTE2IHJlZ251bSwgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jPTgyMT1zdGF0aWMgaW50IGJjbTd4eHhfMjhubV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtODg2LVx0LnJlYWRfbW1kXHQ9IGJjbTd4eHhfMjhubV9lcGh5X3JlYWRfbW1kLFx0XHRcdFxcXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jOjg4NzpcdC53cml0ZV9tbWRcdD0gYmNtN3h4eF8yOG5tX2VwaHlfd3JpdGVfbW1kLFx0XHRcdFxcXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jLTg4OC19XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmM9OTk9c3RhdGljIGludCBiY204NDg5eF9sZWRfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTAzLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmM6MTA0Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1BNQVBNRCxcbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jLTEwNS1cdFx0XHQgICAgYmNtODQ4OXhfbGVkX3JlZ3NbaW5kZXhdLm1hc2tfbG93LCBsb3cpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jLTEwNy1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jOjEwODpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDktXHRcdFx0ICAgIGJjbTg0ODl4X2xlZF9yZWdzW2luZGV4XS5tYXNrX2V4dCwgZXh0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jPTM0PXN0YXRpYyBpbnQgYmNtODd4eF9vZl9yZWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtNjgtXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jOjY5Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgZGV2aWQsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtNzAtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYz0xNDA9c3RhdGljIGludCBiY204N3h4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTQtXHRcdHJlZyB8PSAxO1xuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYzoxNTU6XHRcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QQ1MsXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE1Ni1cdFx0XHRcdCAgICBCQ004N1hYX0xBU0lfQ09OVFJPTCwgcmVnKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE1OC1cdFx0cmVnIFx1MDAyNj0gfjE7XG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jOjE1OTpcdFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1BDUyxcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtMTYwLVx0XHRcdFx0ICAgIEJDTTg3WFhfTEFTSV9DT05UUk9MLCByZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM9MjE0PXN0YXRpYyBpbnQgZHA4MzgyMl9jb25maWdfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMjktXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyMzA6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0RBMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjMxLVx0XHRcdCAgICAgIChtYWNbMV0gXHUwMDNjXHUwMDNjIDgpIHwgbWFjWzBdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjMyOlx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIE1JSV9EUDgzODIyX1dPTF9EQTIsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTIzMy1cdFx0XHQgICAgICAobWFjWzNdIFx1MDAzY1x1MDAzYyA4KSB8IG1hY1syXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjIzNDpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfREEzLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMzUtXHRcdFx0ICAgICAgKG1hY1s1XSBcdTAwM2NcdTAwM2MgOCkgfCBtYWNbNF0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjQ0LVx0XHRpZiAod29sLVx1MDAzZXdvbG9wdHMgXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjQ1Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjQ2LVx0XHRcdFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AxLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNDctXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1sxXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzBdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjQ4Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjQ5LVx0XHRcdFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNTAtXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1szXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzJdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjUxOlx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjUyLVx0XHRcdFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjY0LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyNjU6XHRcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI2Ni1cdFx0XHRcdCAgICAgTUlJX0RQODM4MjJfV09MX0NGRywgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM9MTA0NT1zdGF0aWMgaW50IGRwODM4MjJfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0xMDUyLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoxMDUzOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfQ0ZHLCB2YWx1ZSB8XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTEwNTQtXHRcdCAgICAgIERQODM4MjJfV09MX0NMUl9JTkRJQ0FUSU9OKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTIxMT1zdGF0aWMgaW50IGRwODM4Njdfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjMxLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMzI6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQxLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzMtXHRcdFx0XHQgICAgICAobWFjWzFdIFx1MDAzY1x1MDAzYyA4IHwgbWFjWzBdKSk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzNDpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzNS1cdFx0XHRcdCAgICAgIChtYWNbM10gXHUwMDNjXHUwMDNjIDggfCBtYWNbMl0pKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM2Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjM3LVx0XHRcdFx0ICAgICAgKG1hY1s1XSBcdTAwM2NcdTAwM2MgOCB8IG1hY1s0XSkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ0LVx0XHRpZiAod29sLVx1MDAzZXdvbG9wdHMgXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQ1Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ2LVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbMV0gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1swXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0NzpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0OC1cdFx0XHRcdCAgICAgICh3b2wtXHUwMDNlc29wYXNzWzNdIFx1MDAzY1x1MDAzYyA4KSB8IHdvbC1cdTAwM2Vzb3Bhc3NbMl0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDk6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AzLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTAtXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1s1XSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzRdKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjcxOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZDRkcsIHZhbF9yeGNmZyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3Mi1cdHBoeV93cml0ZShwaHlkZXYsIE1JSV9EUDgzODY3X01JQ1IsIHZhbF9taWNyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTczNj1zdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgwOC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODA5Olx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JHTUlJQ1RMLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTAtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgxMTpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SR01JSURDVEwsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgxMi1cdFx0XHQgICAgICBkcDgzODY3LVx1MDAzZXJ4X2lkX2RlbGF5IHxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgxNi1cdFx0dmFsIFx1MDAyNj0gfkRQODM4NjdfUkdNSUlfRU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgxNzpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SR01JSUNUTCwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODE4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODYwLVx0XHRcdHZhbCBcdTAwMjY9IH5EUDgzODY3X1NHTUlJX1RZUEU7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjg2MTpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19TR01JSUNUTCwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODYyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9OTM1PXN0YXRpYyBpbnQgZHA4Mzg2N19waHlfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk1My1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5NTQ6XHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X0RTUF9GRkVfQ0ZHLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05NTUtXHRcdFx0ICAgIDB4MGU4MSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYz0yNTk9c3RhdGljIGludCBkcDgzODY5X3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI4Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6Mjg3Olx0XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI4OC1cdFx0XHRcdFx0ICAgIERQODM4NjlfUlhGUE1EMSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI5Mi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MjkzOlx0XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI5NC1cdFx0XHRcdFx0ICAgIERQODM4NjlfUlhGUE1EMixcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI5OC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6Mjk5Olx0XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMwMC1cdFx0XHRcdFx0ICAgIERQODM4NjlfUlhGUE1EMyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMxMC1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjMxMTpcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTItXHRcdFx0XHRcdCAgICBEUDgzODY5X1JYRlNPUDEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTYtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjMxNzpcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTgtXHRcdFx0XHRcdCAgICBEUDgzODY5X1JYRlNPUDIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMjEtXHRcdFx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozMjI6XHRcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzIzLVx0XHRcdFx0XHQgICAgRFA4Mzg2OV9SWEZTT1AzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzQ2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozNDc6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLCBEUDgzODY5X1JYRkNGRywgdmFsX3J4Y2ZnKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzQ4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jPTY5ND1zdGF0aWMgaW50IGRwODM4NjlfY29uZmlndXJlX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTcxOC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6NzE5Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUiwgRFA4Mzg2OV9PUF9NT0RFLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03MjAtXHRcdFx0ICAgIHBoeV9jdHJsX3ZhbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03NTMtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjc1NDpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzU1LVx0XHRcdFx0ICAgIERQODM4NjlfRlhfQ1RSTCwgRFA4Mzg2OV9GWF9DVFJMX0RFRkFVTFQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzY1LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo3NjY6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc2Ny1cdFx0XHRcdCAgICBEUDgzODY5X0ZYX0NUUkwsIERQODM4NjlfRlhfQ1RSTF9ERUZBVUxUKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc4Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6Nzg3Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03ODgtXHRcdFx0XHQgICAgRFA4Mzg2OV9GWF9DVFJMLCBEUDgzODY5X0ZYX0NUUkxfREVGQVVMVCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYz04MDQ9c3RhdGljIGludCBkcDgzODY5X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04MzQtXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo4MzU6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTgzNi1cdFx0XHRcdCAgICBEUDgzODY5X0FOQV9QTExfUFJPR19QSSwgMHgxMCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NDctXHRpZiAocGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjg0ODpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUiwgRFA4Mzg2OV9SR01JSURDVEwsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTg0OS1cdFx0XHRcdCAgICBkcDgzODY5LVx1MDAzZXJ4X2ludF9kZWxheSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NjctXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjg2ODpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUiwgRFA4Mzg2OV9SR01JSUNUTCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODY5LVx0XHRcdFx0ICAgIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jPTk3PXN0YXRpYyBpbnQgZHA4MzgxMV9zZXRfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExMi1cdFx0ICovXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTEzOlx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREExLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExNC1cdFx0XHQgICAgICAobWFjWzFdIFx1MDAzY1x1MDAzYyA4KSB8IG1hY1swXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTE1Olx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREEyLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExNi1cdFx0XHQgICAgICAobWFjWzNdIFx1MDAzY1x1MDAzYyA4KSB8IG1hY1syXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTE3Olx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREEzLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExOC1cdFx0XHQgICAgICAobWFjWzVdIFx1MDAzY1x1MDAzYyA4KSB8IG1hY1s0XSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEyNy1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTI4Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTI5LVx0XHRcdFx0ICAgICAgTUlJX0RQODM4MTFfUlhTT1AxLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEzMC1cdFx0XHRcdCAgICAgICh3b2wtXHUwMDNlc29wYXNzWzFdIFx1MDAzY1x1MDAzYyA4KSB8IHdvbC1cdTAwM2Vzb3Bhc3NbMF0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjEzMTpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEzMi1cdFx0XHRcdCAgICAgIE1JSV9EUDgzODExX1JYU09QMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzMtXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1szXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzJdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxMzQ6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzUtXHRcdFx0XHQgICAgICBNSUlfRFA4MzgxMV9SWFNPUDMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTE0Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxNDg6XHRcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTE0OS1cdFx0XHRcdCAgICAgTUlJX0RQODM4MTFfV09MX0NGRywgdmFsdWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYz01MzA9c3RhdGljIGludCBkcDgzdGQ1MTBfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNTM0LVx0aWYgKHBoeWRldi1cdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjUzNTpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTUzNi1cdFx0XHRcdCAgICBEUDgzVEQ1MTBFX0lOVEVSUlVQVF9SRUdfMSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNTQ2LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo1NDc6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01NDgtXHRcdFx0XHQgICAgRFA4M1RENTEwRV9JTlRFUlJVUFRfUkVHXzEsIDB4MCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jPTY4ND1zdGF0aWMgaW50IGRwODN0ZDUxMF9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTczOC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo3Mzk6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURDUxMEVfVERSX0NGRzIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzQwLVx0XHRcdCAgICBGSUVMRF9QUkVQKERQODNURDUxMEVfVERSX0VORF9UQVBfSU5ERVhfMSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzQ2LVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjc0NzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9URFJfRkFVTFRfQ0ZHMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NDgtXHRcdFx0ICAgIEZJRUxEX1BSRVAoRFA4M1RENTEwRV9URFJfRkxUX0xPQ19PRkZTRVRfMSxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzU3LVx0ICovXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzU4Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1VOS05fMDMwRSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NTktXHRcdFx0ICAgIERQODNURDUxMEVfMDMwRV9WQUwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NjItXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzYzOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1REUl9DRkczLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc2NC1cdFx0XHQgICAgRFA4M1RENTEwRV9URFJfVFhfRFVSQVRJT05fVVNfREVGKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM9MzI0PXN0YXRpYyBpbnQgZHA4M3RnNzIwX2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzQwLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM0MTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19URFJfQ0ZHMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNDItXHRcdFx0ICAgIDB4YTAwOCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0NS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzozNDY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVERSX0NGRzMsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzQ3LVx0XHRcdCAgICAweDA5MjgpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNTAtXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzUxOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX1REUl9DRkc0LFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1Mi1cdFx0XHQgICAgMHgwMDA0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzU1LVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM1NjpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19VTktOT1dOXzA0MDUsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzU3LVx0XHRcdCAgICAweDY0MDApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNjAtXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzYxOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX1VOS05PV05fMDgzRixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNjItXHRcdFx0ICAgIDB4MzAwMyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jPTU1OD1zdGF0aWMgaW50IGRwODN0ZzcyMF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy01NzUtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzo1NzY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfTFBTX0NGRzMsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtNTc3LVx0XHRcdCAgICBEUDgzVEc3MjBTX0xQU19DRkczX1BXUl9NT0RFXzApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM9MjQ1PXN0YXRpYyBpbnQgeHdheV9ncGh5X2luaXRfbGVkcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjU5LVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNjA6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRENILFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNjEtXHRcdCAgICAgIFhXQVlfTU1EX0xFRENIX05BQ1NfTk9ORSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNjMtXHRcdCAgICAgIFhXQVlfTU1EX0xFRENIX0ZCRl9GMTZIWik7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI2NDpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEQ0wsXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI2NS1cdFx0ICAgICAgWFdBWV9NTURfTEVEQ0hfQ0JMSU5LX05PTkUgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjc2LVx0XHRYV0FZX01NRF9MRUR4TF9CTElOS1NfTk9ORTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Mjc3Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQwSCwgbGVkeGgpO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNzg6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDBMLCBsZWR4bCk7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI3OTpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMUgsIGxlZHhoKTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjgwOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQxTCwgbGVkeGwpO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyODE6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDJILCBsZWR4aCk7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI4MjpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMkwsIGxlZHhsKTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjgzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM9MzkzPXN0YXRpYyBpbnQgeHdheV9ncGh5X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDEwLVx0aWYgKHZhbHVlID09IExFRF9PRkYpIHtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NDExOlx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRHhIKGluZGV4KSwgMCk7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTQxMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTQxNC1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NDE1Olx0XHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUR4TChpbmRleCksIDApO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTYtXHR9IGVsc2Uge1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLgoKKipUcmFjaW5nIHRoZSBNTUQgV3JpdGUgRnVuY3Rpb24gQ2FsbHMqKgoKSG1tLCBzbyBgcnRsZ2VuX3dyaXRlX21tZGAgaXMgZGVmaW5pdGVseSB0aGUgdGFyZ2V0IGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBiZWluZyBpbnZva2VkLiBSaWdodCwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHJ0bDgyMnhfd3JpdGVfbW1kYC4gQW5kIHRoYXQgZnVuY3Rpb24sIGBydGw4MjJ4X3dyaXRlX21tZGAsIGlzIHRoZSBgLndyaXRlX21tZGAgZnVuY3Rpb24gZm9yIHRoZSBgcmVhbHRla19kcnZzYCBzdHJ1Y3R1cmUuIFRoYXQgdGVsbHMgbWUgYSBsb3Qg4oCTIGl0JiMzOTtzIHBhcnQgb2YgdGhlIFJlYWx0ZWsgZHJpdmVyIGZhbWlseSwgbGlrZWx5IGludGVyYWN0aW5nIGRpcmVjdGx5IHdpdGggdGhlIGhhcmR3YXJlLgoKVGhlbiwgdGhlcmUmIzM5O3MgYHBoeV93cml0ZV9tbWRgLCBhbmQgdGhhdCYjMzk7cyBhbiBpbnRlcmVzdGluZyBvbmUgYmVjYXVzZSBpdCYjMzk7cyB0aGUgZ2VuZXJpYyBQSFkgYWJzdHJhY3Rpb24gbGF5ZXIuIEl0JiMzOTtzIHN1cHBvc2VkIHRvIGludm9rZSBpdHMgb3duIGAud3JpdGVfbW1kYCBmdW5jdGlvbiBpZiBvbmUgaXMgZGVmaW5lZC4gU28sIHRoZXJlIGlzIGEgZ29vZCBjaGFuY2UgdGhhdCBgcGh5X3dyaXRlX21tZGAgaXMgdGhlIG9uZSB0aGF0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIGNhbGxpbmcgYHJ0bDgyMnhfd3JpdGVfbW1kYCB3aGljaCB1bHRpbWF0ZWx5IGNhbGxzIGBydGxnZW5fd3JpdGVfbW1kYC4KClRvIGJlIGNlcnRhaW4sIGFuZCB0byBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGVjdXRpb24gcGF0aCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHBoeV93cml0ZV9tbWRgLiBJdCBpcyB0aGUgY3J1Y2lhbCBqdW5jdGlvbiBpbiB0aGlzIGNoYWluIG9mIGNhbGxzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBhc3N1bXB0aW9ucyBhYm91dCBob3cgYHBoeV93cml0ZV9tbWRgIGhhbmRsZXMgaXRzIGAud3JpdGVfbW1kYCBmdW5jdGlvbiBwb2ludGVyIGFyZSBjb3JyZWN0LiBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IHBoeV93cml0ZV9tbWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTAyNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipOYXZpZ2F0aW5nIHRoZSBQSFkgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIHVzYWdlIG9mIGBwaHlfd3JpdGVfbW1kYC4gSXQmIzM5O3MgbGlrZWx5IHdpdGhpbiB0aGUgYHBoeV9kZXZpY2UuY2AgZmlsZSwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBJJiMzOTtsbCBuZWVkIHRvIG9wZW4gdGhhdCB1cCBhbmQgZWl0aGVyIHNlYXJjaCBkaXJlY3RseSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgb3IgbWF5YmUgdHJhY2UgaXRzIGNhbGxzIGlmIGl0JiMzOTtzIG5vdCBhIGRpcmVjdCBpbXBsZW1lbnRhdGlvbiBidXQgcmF0aGVyIGEgd3JhcHBlciBvciBhYnN0cmFjdGlvbi4gVW5kZXJzdGFuZGluZyBob3cgYHBoeV93cml0ZV9tbWRgIHdvcmtzIGlzIGNydWNpYWw7IGl0IG1pZ2h0IGJlIHJlc3BvbnNpYmxlIGZvciBkaXJlY3QgYWNjZXNzIHRvIHRoZSBNYW5hZ2VtZW50IE1vZGUgRGV2aWNlIHJlZ2lzdGVycyB3aXRoaW4gdGhlIFBIWSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgd2l0aGluIHRoZSBicm9hZGVyIFBIWSBkcml2ZXIgc3RydWN0dXJlLiBJJiMzOTtsbCBsaWtlbHkgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgcmVnaXN0ZXIgYWRkcmVzc2VzLCBkYXRhIGZvcm1hdHRpbmcsIHBvdGVudGlhbCBlcnJvciBoYW5kbGluZywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBidXMg4oCTIGxpa2VseSBNRElPLCBidXQgY29uZmlybWF0aW9uIGlzIG5lZWRlZC4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgcGh5X3dyaXRlX21tZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI5MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipMb2NhdGluZyB0aGUgUEhZIFdyaXRlIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBkZWZpbml0aW9uIG9yIGRlY2xhcmF0aW9uIG9mIGBwaHlfd3JpdGVfbW1kYC4gQmFzZWQgb24gdGhlIGNvbnRleHQsIHRoYXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBhIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gd3JpdGluZyB0byBhIE1hbmFnZW1lbnQgTW9kZSBEZXZpY2UgKE1NRCkgd2l0aGluIGEgUEhZIChQaHlzaWNhbCBMYXllcikuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgd291bGQgYmUgd2l0aGluIHRoZSBuZXR3b3JrIGRldmljZSBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmUuIGBkcml2ZXJzL25ldC9waHlgIGlzIHRoZSBvYnZpb3VzIHRvcC1sZXZlbCBkaXJlY3RvcnkgdG8gYmVnaW4gbXkgc2VhcmNoLgoKTW9yZSBzcGVjaWZpY2FsbHksIGBwaHlfY29yZS5jYCBpcyB1c3VhbGx5IHRoZSByZXBvc2l0b3J5IGZvciB0aGUgY29yZSBQSFkgZHJpdmVyIGZ1bmN0aW9ucywgdGhlIG9uZXMgdGhhdCBhcmUgbGlrZWx5IHNoYXJlZCBhbW9uZyBkaWZmZXJlbnQgUEhZIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMuIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGFjdHVhbCBmdW5jdGlvbiBkZWZpbml0aW9uIHRoZXJlLiBBbHRlcm5hdGl2ZWx5LCBJIG1pZ2h0IGZpbmQgYSBkZWNsYXJhdGlvbiBvciBwcm90b3R5cGUgaW4gdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUsIHdoaWNoIGlzIHByb2JhYmx5IGBpbmNsdWRlL2xpbnV4L3BoeS5oYC4gVGhhdCBoZWFkZXIgd291bGQgZGVmaW5lIHRoZSBQSFkgQVBJIGFuZCBkYXRhIHN0cnVjdHVyZXMuIEl0JiMzOTtzIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIHRoZSBmdW5jdGlvbiBpcyBkZWNsYXJlZCB0aGVyZSBiZWZvcmUgSSBzdGFydCBzZWFyY2hpbmcgdGhlIHNvdXJjZSBmaWxlLiBJdCBpcyB0aGUgbG9naWNhbCBvcmRlciB0byBzdGFydCBteSBzZWFyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBwaHlfd3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz01MjM9RVhQT1JUX1NZTUJPTChfX3BoeV93cml0ZV9tbWQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTUzNC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jOjUzNTppbnQgcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2YWQsIHUzMiByZWdudW0sIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy01MzYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTcyNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gUEhZIENvcmUgQ29kZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGggdGhpcyBQSFkgbW9kdWxlLCBhbmQgdGhlIGZ1bmN0aW9uIGBwaHlfd3JpdGVfbW1kYCBzZWVtcyBsaWtlIGEga2V5IGFyZWEgdG8gZGlzc2VjdC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IE1NRCwgb3IgTW9kZS9SZWdpc3RlciBNYXAsIGlzIGEgY29tbW9uIHRlY2huaXF1ZSB3aXRoaW4gdGhlIFBIWSByZWFsbSwgd2hlcmUgeW91IHNlbGVjdCBhICYjMzQ7bW9kZSYjMzQ7IG9yIHJlZ2lzdGVyIGJhbmsgdXNpbmcgYW4gYWRkcmVzcyBhbmQgdGhlbiBpbnRlcmFjdCB3aXRoIHRoZSBzcGVjaWZpYyByZWdpc3RlcnMgd2l0aGluIHRoYXQgc2VsZWN0ZWQgYmFuay4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoYXQgdGhlIGBwaHlfd3JpdGVfbW1kYCBmdW5jdGlvbiBwcm9iYWJseSBoYW5kbGVzIHRoZSBsb3ctbGV2ZWwgd3JpdGVzIHRvIHRoaXMgTU1EIGludGVyZmFjZS4gSSYjMzk7bSBrZWVuIHRvIHNlZSBpZiBpdCYjMzk7cyBhYnN0cmFjdGVkIGZvciBtdWx0aXBsZSBQSFkgdHlwZXMgb3IgaW1wbGVtZW50ZWQgc3BlY2lmaWNhbGx5IGZvciBhIG5hcnJvdyByYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCBvcGVyYXRlcyBvbi4gSSYjMzk7bSBhbHNvIGludGVyZXN0ZWQgdG8gc2VlIHRoZSBlcnJvciBjaGVja2luZyBhbmQgaG93IHRoZSBmdW5jdGlvbiBoYW5kbGVzIHBvc3NpYmxlIEkyQyBvciBTUEkgd3JpdGUgZmFpbHVyZXMuIFdoYXQgYXNzdW1wdGlvbnMgZG9lcyBpdCBtYWtlIGFib3V0IHRoZSB1bmRlcmx5aW5nIGJ1cz8gRG9lcyBpdCBoYXZlIGFueSBkZWJ1ZyBvciBsb2dnaW5nIGNhcGFiaWxpdGllcyBJIGNhbiBsZXZlcmFnZT8gTXkgZ29hbCBpcyB0byBncmFzcCBpdHMgZnVuY3Rpb25hbGl0eS4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUzNTpcdGludCBwaHlfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCwgdTMyIHJlZ251bSwgdTE2IHZhbClcbiA1MzY6XHR7XG4gNTM3Olx0XHRpbnQgcmV0O1xuIDUzODpcdFxuIDUzOTpcdFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbiA1NDA6XHRcdHJldCA9IF9fcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldmFkLCByZWdudW0sIHZhbCk7XG4gNTQxOlx0XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG4gNTQyOlx0XG4gNTQzOlx0XHRyZXR1cm4gcmV0O1xuIDU0NDpcdH1cbiA1NDU6XHRFWFBPUlRfU1lNQk9MKHBoeV93cml0ZV9tbWQpO1xuIDU0NjpcdFxuIDU0NzpcdC8qKlxuIDU0ODpcdCAqIHBoeV9tb2RpZnlfY2hhbmdlZCAtIEZ1bmN0aW9uIGZvciBtb2RpZnlpbmcgYSBQSFkgcmVnaXN0ZXJcbiA1NDk6XHQgKiBAcGh5ZGV2OiB0aGUgcGh5X2RldmljZSBzdHJ1Y3RcbiA1NTA6XHQgKiBAcmVnbnVtOiByZWdpc3RlciBudW1iZXIgdG8gbW9kaWZ5XG4gNTUxOlx0ICogQG1hc2s6IGJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXJcbiA1NTI6XHQgKiBAc2V0OiBuZXcgdmFsdWUgb2YgYml0cyBzZXQgaW4gbWFzayB0byB3cml0ZSB0byBAcmVnbnVtXG4gNTUzOlx0ICpcbiA1NTQ6XHQgKiBOT1RFOiBNVVNUIE5PVCBiZSBjYWxsZWQgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNDMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZCwgZ2VhcmVkIHRvd2FyZCBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIGBfX3BoeV93cml0ZV9tbWRgKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIGBfX3BoeV93cml0ZV9tbWRgIGZ1bmN0aW9uLiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgdG8gcmFjZS4gVGhpcyBuYW1lIHN1Z2dlc3RzIGl0JiMzOTtzIGEgbG93LWxldmVsLCBpbnRlcm5hbCBmdW5jdGlvbiByZWxhdGVkIHRvIHdyaXRpbmcgdG8gc29tZXRoaW5nIHdpdGhpbiB0aGUgUEhZLCBwcm9iYWJseSBzb21lIHJlZ2lzdGVyIG9yIG1lbW9yeS1tYXBwZWQgZGF0YSBzcGFjZS4gVGhlIGBfX2AgcHJlZml4IGlzIGEgc3Ryb25nIGluZGljYXRvciBvZiBhbiBpbnRlcm5hbCBBUEksIGEgZnVuY3Rpb24gbm90IGludGVuZGVkIGZvciBkaXJlY3QgdXNlIGJ5IHRoZSBnZW5lcmFsIGRyaXZlciBjb2RlLiBUaGlzIHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBhIGNyaXRpY2FsIGNvbXBvbmVudCwgcG90ZW50aWFsbHkgaGFuZGxpbmcgdGhlIGFjdHVhbCBidXMgdHJhbnNhY3Rpb25zIG9yIHJlZ2lzdGVyIGFjY2VzcyBwYXR0ZXJucy4KCkkmIzM5O20gaW5zdGFudGx5IHdvbmRlcmluZyBhYm91dCB0aGUgY29udGV4dC4gV2hhdCBQSFkgaXMgdGhpcyByZWxhdGVkIHRvPyBJcyBpdCBhIHNwZWNpZmljIHR5cGUsIGxpa2UgRXRoZXJuZXQsIFBDSWUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgJiMzNDttbWQmIzM0OyBwYXJ0IGlzIGludHJpZ3VpbmcuIElzIGl0IHJlbGF0ZWQgdG8gdGhlICYjMzQ7TWVzc2FnZSBNb2RlIERldmljZSYjMzQ7IG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJJiMzOTtkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBoZWFkZXIgZmlsZXMgb3IgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gYmVpbmcgdXNlZC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSB1bmRlcmx5aW5nIGJ1cywgYmUgaXQgSTJDLCBTUEksIG9yIGEgY3VzdG9tIG9uZSwgdG8gZnVsbHkgZ3Jhc3AgaXRzIGZ1bmN0aW9uLgoKVGhlbiBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGVycm9yIHNjZW5hcmlvcy4gV2hhdCBraW5kIG9mIGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkPyBEb2VzIGl0IGNoZWNrIGZvciB3cml0ZSB0aW1lb3V0cyBvciBidXMgZXJyb3JzPyBJcyB0aGVyZSBhbnkgcmV0cnkgbG9naWM/IERvZXMgaXQgbG9nIGVycm9ycyBpbiBhIHVzZWZ1bCB3YXkgb3IganVzdCByZXR1cm4gYSBnZW5lcmljIGVycm9yIGNvZGU/IENvbnNpZGVyaW5nIHRoZSBjcml0aWNhbGl0eSBvZiB0aGVzZSB0eXBlcyBvZiByb3V0aW5lcywgcm9idXN0IGVycm9yIGhhbmRsaW5nIGlzIHBhcmFtb3VudC4gSWYgYSB3cml0ZSBmYWlscywgaXQgY2FuIGltcGFjdCBlbnRpcmUgc3lzdGVtIG9wZXJhdGlvbiwgdGhlcmVmb3JlIEkgc2hvdWxkIGJlIGNoZWNraW5nIGZvciB0aGUgZXJyb3ItaGFuZGxpbmcgbWV0aG9kIHVzZWQuCgpJIGFsc28gd29uZGVyIGFib3V0IGNvbmN1cnJlbmN5IGlzc3Vlcy4gSXMgdGhpcyBmdW5jdGlvbiByZS1lbnRyYW50PyBEb2VzIGl0IG5lZWQgYW55IGtpbmQgb2YgbXV0ZXggb3Igc2VtYXBob3JlIHRvIHByb3RlY3Qgc2hhcmVkIHJlc291cmNlcywgcGFydGljdWxhcmx5IGlmIGl0JiMzOTtzIG9wZXJhdGluZyBvbiBhIHNoYXJlZCBtZW1vcnkgbWFwPyBBbnkgbXVsdGl0aHJlYWRpbmcgaW4gdGhlIGRyaXZlciBjb250ZXh0IHdvdWxkIG5lZWQgdGhhdCBwcm90ZWN0aW9uIHRvIHJlbWFpbiBzdGFibGUuCgpNeSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gdHJhY2UgaXRzIGNhbGxzIGFuZCBzZWUgd2hlcmUgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLiBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgc2lnbmlmaWNhbnQgaW5zaWdodCBpbnRvIHRoZSBkYXRhIGJlaW5nIHdyaXR0ZW4sIHRoZSBwdXJwb3NlIG9mIHRoZSB3cml0ZSwgYW5kIHRoZSBvdmVyYWxsIGRyaXZlciBhcmNoaXRlY3R1cmUuIFVsdGltYXRlbHksIEkmIzM5O2Qgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBkYXRhIHBhdGggZm9yIHdyaXRpbmcuCgpGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtkIGJlIGxvb2tpbmcgZm9yOgoKKiAgICoqUmVnaXN0ZXIgb2Zmc2V0cyBhbmQgdGhlaXIgaW50ZXJwcmV0YXRpb25zKio6IEFyZSB0aGV5IGNsZWFybHkgZGVmaW5lZD8gQXJlIHRoZXJlIGFueSBjb21tZW50cyBleHBsYWluaW5nIHdoYXQgZWFjaCBiaXRmaWVsZCByZXByZXNlbnRzPwoqICAgKipEYXRhIHBhY2tpbmcqKjogSXMgdGhlIGRhdGEgYmVpbmcgcGFja2VkIG9yIHVucGFja2VkIGNvcnJlY3RseT8gV2hhdCYjMzk7cyB0aGUgYnl0ZSBvcmRlcj8KKiAgICoqQnVzIHRyYW5zYWN0aW9ucyoqOiBIb3cgYXJlIHRoZSBidXMgY3ljbGVzIGJlaW5nIG9yY2hlc3RyYXRlZD8gSXMgdGhlcmUgYW55IG9wdGltaXphdGlvbiBnb2luZyBvbj8KKiAgICoqUG90ZW50aWFsIGZvciBvcHRpbWl6YXRpb24qKjogSXMgdGhlcmUgYW55IG92ZXJoZWFkIHRoYXQgY291bGQgYmUgbWluaW1pemVkPyBJcyBpdCB1c2luZyB0aGUgYXBwcm9wcmlhdGUgYnVzIHdpZHRoLCBvciB0aGUgbWluaW11bSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIHBvc3NpYmxlPwoKRXNzZW50aWFsbHksIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgYF9fcGh5X3dyaXRlX21tZGAgZnVuY3Rpb24gdG8gYmUgYSBrZXkgYnVpbGRpbmcgYmxvY2sgaW4gYSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciwgYW5kIG15IGFuYWx5c2lzIHdvdWxkIGludm9sdmUgcXVpY2tseSBkaXNzZWN0aW5nIGl0cyByb2xlIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHdpdGhpbiB0aGF0IGxheWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgX19waHlfd3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9NTAwPUVYUE9SVF9TWU1CT0wocGh5X3JlYWRfbW1kKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy01MTEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzo1MTI6aW50IF9fcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2YWQsIHUzMiByZWdudW0sIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy01MTMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzE2OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgYF9fcGh5X3dyaXRlX21tZGAqKgoKQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBjb2RlIGFuZCBmb2N1cyBvbiBgX19waHlfd3JpdGVfbW1kYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBmdW5jdGlvbi4gSXQmIzM5O3MgY2xlYXJseSBhIGNvcmUgcGllY2UgcmVsYXRlZCB0byB3cml0aW5nIHRvIHRoZSBNTUQsIGxpa2VseSB3aXRoaW4gdGhlIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIG9mIHRoaXMgc3lzdGVtLiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gZ3Jhc3AgaXRzIHB1cnBvc2UsIGhvdyBpdCYjMzk7cyB1c2VkLCBhbmQgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gZm9yIGRlYnVnZ2luZyBvciBvcHRpbWl6YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBpdCYjMzk7cyB3cml0aW5nLCBob3cgaXQgZGV0ZXJtaW5lcyB0aGUgdmFsdWVzLCBhbmQgd2hlcmUgdGhpcyBkYXRhIGlzIGNvbWluZyBmcm9tLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTEyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MTI6XHRpbnQgX19waHlfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCwgdTMyIHJlZ251bSwgdTE2IHZhbClcbiA1MTM6XHR7XG4gNTE0Olx0XHRpZiAocmVnbnVtIFx1MDAzZSAodTE2KX4wIHx8IGRldmFkIFx1MDAzZSAzMilcbiA1MTU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTE2Olx0XG4gNTE3Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2V3cml0ZV9tbWQpXG4gNTE4Olx0XHRcdHJldHVybiBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXdyaXRlX21tZChwaHlkZXYsIGRldmFkLCByZWdudW0sIHZhbCk7XG4gNTE5Olx0XG4gNTIwOlx0XHRyZXR1cm4gbW1kX3BoeV93cml0ZShwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIsXG4gNTIxOlx0XHRcdFx0ICAgICBwaHlkZXYtXHUwMDNlaXNfYzQ1LCBkZXZhZCwgcmVnbnVtLCB2YWwpO1xuIDUyMjpcdH1cbiA1MjM6XHRFWFBPUlRfU1lNQk9MKF9fcGh5X3dyaXRlX21tZCk7XG4gNTI0Olx0XG4gNTI1Olx0LyoqXG4gNTI2Olx0ICogcGh5X3dyaXRlX21tZCAtIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciB3cml0aW5nIGEgcmVnaXN0ZXJcbiA1Mjc6XHQgKiBvbiBhbiBNTUQgb24gYSBnaXZlbiBQSFkuXG4gNTI4Olx0ICogQHBoeWRldjogVGhlIHBoeV9kZXZpY2Ugc3RydWN0XG4gNTI5Olx0ICogQGRldmFkOiBUaGUgTU1EIHRvIHJlYWQgZnJvbVxuIDUzMDpcdCAqIEByZWdudW06IFRoZSByZWdpc3RlciBvbiB0aGUgTU1EIHRvIHJlYWRcbiA1MzE6XHQgKiBAdmFsOiB2YWx1ZSB0byB3cml0ZSB0byBAcmVnbnVtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzM1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIFBIWSBXcml0ZSBNZWNoYW5pc20qKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRocm91Z2ggdGhpcyBjb2RlLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBSZWFsdGVrIFBIWSB3cml0ZSBmdW5jdGlvbmFsaXR5IHdvcmtzLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9wZXJhdGlvbiBpcyB0cmlnZ2VyZWQgYnkgYHBoeWRldi0mZ3Q7ZHJ2LSZndDt3cml0ZV9tbWRgLiBSaWdodCwgYW5kIGJhc2VkIG9uIHRoZSBjb250ZXh0LCB0aGF0JiMzOTtzIGJlaW5nIGhhbmRsZWQgYnkgYHJ0bGdlbl93cml0ZV9tbWRgLiBTbyB0aGF0JiMzOTtzIHRoZSBSZWFsdGVrLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNTUQgd3JpdGUuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBmb3IgbWUgaXMsIGNhbiB0aGlzIGJlIGFjY2Vzc2VkIGZyb20gdXNlcnNwYWNlPyBJcyB0aGVyZSBhIHBhdGg/CgpBaCwgeWVzLCB0aGUgYFNJT0NTTUlJUkVHYCBpb2N0bC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIHdheSB0byBpbnRlcmFjdCB3aXRoIHRoZSBNSUkvTURJTyBpbnRlcmZhY2UgZnJvbSB1c2Vyc3BhY2UuIFNvLCBpdCYjMzk7cyBkZWZpbml0ZWx5IGFjY2Vzc2libGUsIHdoaWNoIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQuIFRpbWUgdG8gZGl2ZSBpbnRvIGBwaHlfbWlpX2lvY3RsYCBhbmQgc2VlIGV4YWN0bHkgaG93IHRoYXQgaW9jdGwgY2FsbCBtYXBzIG9udG8gdGhpcyBNTUQgd3JpdGUgcGF0aC4gVW5kZXJzdGFuZGluZyB0aGUgYHBoeV9taWlfaW9jdGxgIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfbWlpX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LmM9Mjk4PUVYUE9SVF9TWU1CT0wocGh5X2V0aHRvb2xfa3NldHRpbmdzX2dldCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTMwMC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzozMDE6ICogcGh5X21paV9pb2N0bCAtIGdlbmVyaWMgUEhZIE1JSSBpb2N0bCBpbnRlcmZhY2VcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0zMDItICogQHBoeWRldjogdGhlIHBoeV9kZXZpY2Ugc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTMwOS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHkuYzozMTA6aW50IHBoeV9taWlfaW9jdGwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMzExLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtNDMwLX1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo0MzE6RVhQT1JUX1NZTUJPTChwaHlfbWlpX2lvY3RsKTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy00MzItXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTQzOT1pbnQgcGh5X2RvX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy00NDMtXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6NDQ0Olx0cmV0dXJuIHBoeV9taWlfaW9jdGwoZGV2LVx1MDAzZXBoeWRldiwgaWZyLCBjbWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTQ0NS19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTI0PWludCBwaHlsaW5rX21paV9pb2N0bChzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU1MS1cdFx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU1MjpcdFx0XHRyZXQgPSBwaHlfbWlpX2lvY3RsKHBsLVx1MDAzZXBoeWRldiwgaWZyLCBjbWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTUzLVx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDUyOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIENhbGwgdG8gYHBoeV9taWlfaW9jdGxgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgcGh5X21paV9pb2N0bGAgZnVuY3Rpb24gY2FsbC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgZ2VhcmVkIHRvd2FyZHMgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZSwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBtZWRpYXRpbmcgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTUlJKSBvciBSZWR1Y2VkIE1JSSAoUk1JSSkgYW5kIHRoZSB1cHBlci1sZXZlbCBuZXR3b3JrIGRyaXZlci4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlOiBXaGF0JiMzOTtzIHRoZSB0YXJnZXQgcGxhdGZvcm0/IFdoYXQmIzM5O3MgdGhlIGtlcm5lbCB2ZXJzaW9uPyBLbm93aW5nIHRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgYW55IHBvdGVudGlhbCBwbGF0Zm9ybS1zcGVjaWZpYyBxdWlya3MuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbiwgbG9va2luZyBmb3IgaXRzIGFyZ3VtZW50cy4gSXQmIzM5O3Mgc2FmZSB0byBhc3N1bWUgaXQmIzM5O3MgaGFuZGxpbmcgYGlvY3RsYCBjYWxscyByZWxhdGVkIHRvIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIG1hbmFnZW1lbnQsIHdoaWNoIGNvdWxkIGluY2x1ZGUgcmVhZGluZy93cml0aW5nIHJlZ2lzdGVycywgcmVzZXR0aW5nIHRoZSBQSFksIGF1dG9uZWdvdGlhdGlvbiBjb250cm9sLCBsaW5rIHN0YXR1cyByZXRyaWV2YWwsIGFuZCBzbyBvbi4KClRoZSBuZXh0IHRoaW5nIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGlzIHRoZSBkYXRhIHN0cnVjdHVyZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLCBwcm9iYWJseSBzb21lIHNvcnQgb2YgYG1paV9pb2N0bF9kYXRhYCBvciBzaW1pbGFyLiBJIGV4cGVjdCBpdCB0byBoYXZlIGEgYGNtZGAgZmllbGQsIHdoaWNoIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBJcyBpdCBhIHN0YW5kYXJkIHNldCBvZiBgaW9jdGxgIGNvbW1hbmRzIGRlZmluZWQgYnkgdGhlIGtlcm5lbCwgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBjdXN0b20gb25lcyBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYW5kIFBIWSBjaGlwPyBUaGUgc3BlY2lmaWMgYGNtZGAgdmFsdWUgd2lsbCBkcml2ZSBteSBzdWJzZXF1ZW50IGFuYWx5c2lzLgoKSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgZXJyb3IgaGFuZGxpbmcuIEFyZSB0aGVyZSBzdWZmaWNpZW50IGNoZWNrcyBmb3IgaW52YWxpZCBjb21tYW5kIHZhbHVlcywgb3V0LW9mLXJhbmdlIHJlZ2lzdGVyIGFjY2Vzc2VzLCBvciBwb3RlbnRpYWwgaGFyZHdhcmUgaXNzdWVzPyBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gY29uZmlybSBpZiB0aGUgZHJpdmVyIHByb3Blcmx5IGltcGxlbWVudHMgbG9ja2luZyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aGVuIG11bHRpcGxlIHRocmVhZHMgYWNjZXNzIHRoZSBQSFkgY29uY3VycmVudGx5LiBBbmQgSSB3aWxsIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZm9yIGRlYWRsb2Nrcy4KCkkgYWxzbyBleHBlY3QgdG8gc2VlIGEgY2FsbCB0byB0aGUgdW5kZXJseWluZyBQSFkgZHJpdmVyJiMzOTtzIHJlYWQvd3JpdGUgZnVuY3Rpb25zIChlLmcuLCBgcGh5X3JlYWRgLCBgcGh5X3dyaXRlYCkuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgaW50ZXJhY3Qgd2l0aCB0aGUgc3BlY2lmaWMgUEhZIGNoaXAuIEkgd2FudCB0byBzZWUgaWYgdGhlIGRyaXZlciBpcyBjb3JyZWN0bHkgaGFuZGxpbmcgYW55IFBIWS1zcGVjaWZpYyBpZGlvc3luY3Jhc2llcywgc3VjaCBhcyByZWdpc3RlciBvZmZzZXRzIG9yIGJpdGZpZWxkIGRlZmluaXRpb25zLiBJJiMzOTtsbCB3YW50IHRvIGNoZWNrIGlmIHRoZSBkcml2ZXIgc3VwcG9ydHMgYWxsIHRoZSBkZWZpbmVkIHN0YXRlcyBhbmQgbW9kZXMsIGxpa2UgYXV0b25lZ290aWF0aW9uLCBmb3JjZWQgc3BlZWQsIGFuZCBkdXBsZXggc2V0dGluZ3MuCgpGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgbGlrZSB1bmNoZWNrZWQgdXNlci1wcm92aWRlZCBpbnB1dCB0aGF0IGNvdWxkIGxlYWQgdG8gcmVnaXN0ZXIgY29ycnVwdGlvbiBvciBvdGhlciBleHBsb2l0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMxMDpcdGludCBwaHlfbWlpX2lvY3RsKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxuIDMxMTpcdHtcbiAzMTI6XHRcdHN0cnVjdCBtaWlfaW9jdGxfZGF0YSAqbWlpX2RhdGEgPSBpZl9taWkoaWZyKTtcbiAzMTM6XHRcdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnIGtlcm5lbF9jZmc7XG4gMzE0Olx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrIGV4dGFjayA9IHt9O1xuIDMxNTpcdFx0dTE2IHZhbCA9IG1paV9kYXRhLVx1MDAzZXZhbF9pbjtcbiAzMTY6XHRcdGJvb2wgY2hhbmdlX2F1dG9uZWcgPSBmYWxzZTtcbiAzMTc6XHRcdHN0cnVjdCBod3RzdGFtcF9jb25maWcgY2ZnO1xuIDMxODpcdFx0aW50IHBydGFkLCBkZXZhZDtcbiAzMTk6XHRcdGludCByZXQ7XG4gMzIwOlx0XG4gMzIxOlx0XHRzd2l0Y2ggKGNtZCkge1xuIDMyMjpcdFx0Y2FzZSBTSU9DR01JSVBIWTpcbiAzMjM6XHRcdFx0bWlpX2RhdGEtXHUwMDNlcGh5X2lkID0gcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcjtcbiAzMjQ6XHRcdFx0ZmFsbHRocm91Z2g7XG4gMzI1Olx0XG4gMzI2Olx0XHRjYXNlIFNJT0NHTUlJUkVHOlxuIDMyNzpcdFx0XHRpZiAobWRpb19waHlfaWRfaXNfYzQ1KG1paV9kYXRhLVx1MDAzZXBoeV9pZCkpIHtcbiAzMjg6XHRcdFx0XHRwcnRhZCA9IG1kaW9fcGh5X2lkX3BydGFkKG1paV9kYXRhLVx1MDAzZXBoeV9pZCk7XG4gMzI5Olx0XHRcdFx0ZGV2YWQgPSBtZGlvX3BoeV9pZF9kZXZhZChtaWlfZGF0YS1cdTAwM2VwaHlfaWQpO1xuIDMzMDpcdFx0XHRcdHJldCA9IG1kaW9idXNfYzQ1X3JlYWQocGh5ZGV2LVx1MDAzZW1kaW8uYnVzLCBwcnRhZCwgZGV2YWQsXG4gMzMxOlx0XHRcdFx0XHRcdCAgICAgICBtaWlfZGF0YS1cdTAwM2VyZWdfbnVtKTtcbiAzMzI6XHRcbiAzMzM6XHRcdFx0fSBlbHNlIHtcbiAzMzQ6XHRcdFx0XHRyZXQgPSBtZGlvYnVzX3JlYWQocGh5ZGV2LVx1MDAzZW1kaW8uYnVzLCBtaWlfZGF0YS1cdTAwM2VwaHlfaWQsXG4gMzM1Olx0XHRcdFx0XHRcdCAgIG1paV9kYXRhLVx1MDAzZXJlZ19udW0pO1xuIDMzNjpcdFx0XHR9XG4gMzM3Olx0XG4gMzM4Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMzM5Olx0XHRcdFx0cmV0dXJuIHJldDtcbiAzNDA6XHRcbiAzNDE6XHRcdFx0bWlpX2RhdGEtXHUwMDNldmFsX291dCA9IHJldDtcbiAzNDI6XHRcbiAzNDM6XHRcdFx0cmV0dXJuIDA7XG4gMzQ0Olx0XG4gMzQ1Olx0XHRjYXNlIFNJT0NTTUlJUkVHOlxuIDM0NjpcdFx0XHRpZiAobWRpb19waHlfaWRfaXNfYzQ1KG1paV9kYXRhLVx1MDAzZXBoeV9pZCkpIHtcbiAzNDc6XHRcdFx0XHRwcnRhZCA9IG1kaW9fcGh5X2lkX3BydGFkKG1paV9kYXRhLVx1MDAzZXBoeV9pZCk7XG4gMzQ4Olx0XHRcdFx0ZGV2YWQgPSBtZGlvX3BoeV9pZF9kZXZhZChtaWlfZGF0YS1cdTAwM2VwaHlfaWQpO1xuIDM0OTpcdFx0XHR9IGVsc2Uge1xuIDM1MDpcdFx0XHRcdHBydGFkID0gbWlpX2RhdGEtXHUwMDNlcGh5X2lkO1xuIDM1MTpcdFx0XHRcdGRldmFkID0gbWlpX2RhdGEtXHUwMDNlcmVnX251bTtcbiAzNTI6XHRcdFx0fVxuIDM1MzpcdFx0XHRpZiAocHJ0YWQgPT0gcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcikge1xuIDM1NDpcdFx0XHRcdHN3aXRjaCAoZGV2YWQpIHtcbiAzNTU6XHRcdFx0XHRjYXNlIE1JSV9CTUNSOlxuIDM1NjpcdFx0XHRcdFx0aWYgKCh2YWwgXHUwMDI2IChCTUNSX1JFU0VUIHwgQk1DUl9BTkVOQUJMRSkpID09IDApIHtcbiAzNTc6XHRcdFx0XHRcdFx0aWYgKHBoeWRldi1cdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRU5BQkxFKVxuIDM1ODpcdFx0XHRcdFx0XHRcdGNoYW5nZV9hdXRvbmVnID0gdHJ1ZTtcbiAzNTk6XHRcdFx0XHRcdFx0cGh5ZGV2LVx1MDAzZWF1dG9uZWcgPSBBVVRPTkVHX0RJU0FCTEU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTQyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgUEhZIE1JSSBJT0NUTCoqCgpBbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgbG93LWxldmVsIGRldGFpbHMgb2YgdGhpcyBkcml2ZXIuIFdoZW4gYFNJT0NTTUlJUkVHYCBnZXRzIGNhbGxlZCwgaXMgaXQgdXNpbmcgdGhlIG1vcmUgc3BlY2lmaWMgYG1kaW9idXNfYzQ1X3dyaXRlYCBmdW5jdGlvbiwgb3IgdGhlIGdlbmVyYWwgYG1kaW9idXNfd3JpdGVgPyBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhYm91dCBob3cgdGhpcyBNSUkgcmVnaXN0ZXIgd3JpdGUgaXMgYmVpbmcgaGFuZGxlZC4gVGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgZXNwZWNpYWxseSB3aXRoIFBIWSBpbnRlcmFjdGlvbi4gSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIHJlc3Qgb2YgYHBoeV9taWlfaW9jdGxgIGFuZCB2ZXJpZnkgdGhlIGV4YWN0IHBhdGggb2YgdGhlIHdyaXRlIG9wZXJhdGlvbi4gR290dGEgbWFrZSBzdXJlIGl0JiMzOTtzIHRoZSBleHBlY3RlZCBvbmUgZm9yIHRoZSBnaXZlbiBQSFkgdHlwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM2MDpcdFx0XHRcdFx0XHRpZiAodmFsIFx1MDAyNiBCTUNSX0ZVTExEUExYKVxuIDM2MTpcdFx0XHRcdFx0XHRcdHBoeWRldi1cdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcbiAzNjI6XHRcdFx0XHRcdFx0ZWxzZVxuIDM2MzpcdFx0XHRcdFx0XHRcdHBoeWRldi1cdTAwM2VkdXBsZXggPSBEVVBMRVhfSEFMRjtcbiAzNjQ6XHRcdFx0XHRcdFx0aWYgKHZhbCBcdTAwMjYgQk1DUl9TUEVFRDEwMDApXG4gMzY1Olx0XHRcdFx0XHRcdFx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDtcbiAzNjY6XHRcdFx0XHRcdFx0ZWxzZSBpZiAodmFsIFx1MDAyNiBCTUNSX1NQRUVEMTAwKVxuIDM2NzpcdFx0XHRcdFx0XHRcdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDtcbiAzNjg6XHRcdFx0XHRcdFx0ZWxzZSBwaHlkZXYtXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDtcbiAzNjk6XHRcdFx0XHRcdH0gZWxzZSB7XG4gMzcwOlx0XHRcdFx0XHRcdGlmIChwaHlkZXYtXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXG4gMzcxOlx0XHRcdFx0XHRcdFx0Y2hhbmdlX2F1dG9uZWcgPSB0cnVlO1xuIDM3MjpcdFx0XHRcdFx0XHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRU5BQkxFO1xuIDM3MzpcdFx0XHRcdFx0fVxuIDM3NDpcdFx0XHRcdFx0YnJlYWs7XG4gMzc1Olx0XHRcdFx0Y2FzZSBNSUlfQURWRVJUSVNFOlxuIDM3NjpcdFx0XHRcdFx0bWlpX2Fkdl9tb2RfbGlua21vZGVfYWR2X3QocGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nLFxuIDM3NzpcdFx0XHRcdFx0XHRcdFx0ICAgdmFsKTtcbiAzNzg6XHRcdFx0XHRcdGNoYW5nZV9hdXRvbmVnID0gdHJ1ZTtcbiAzNzk6XHRcdFx0XHRcdGJyZWFrO1xuIDM4MDpcdFx0XHRcdGNhc2UgTUlJX0NUUkwxMDAwOlxuIDM4MTpcdFx0XHRcdFx0bWlpX2N0cmwxMDAwX21vZF9saW5rbW9kZV9hZHZfdChwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmcsXG4gMzgyOlx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHZhbCk7XG4gMzgzOlx0XHRcdFx0XHRjaGFuZ2VfYXV0b25lZyA9IHRydWU7XG4gMzg0Olx0XHRcdFx0XHRicmVhaztcbiAzODU6XHRcdFx0XHRkZWZhdWx0OlxuIDM4NjpcdFx0XHRcdFx0LyogZG8gbm90aGluZyAqL1xuIDM4NzpcdFx0XHRcdFx0YnJlYWs7XG4gMzg4Olx0XHRcdFx0fVxuIDM4OTpcdFx0XHR9XG4gMzkwOlx0XG4gMzkxOlx0XHRcdGlmIChtZGlvX3BoeV9pZF9pc19jNDUobWlpX2RhdGEtXHUwMDNlcGh5X2lkKSlcbiAzOTI6XHRcdFx0XHRtZGlvYnVzX2M0NV93cml0ZShwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBydGFkLCBkZXZhZCxcbiAzOTM6XHRcdFx0XHRcdFx0ICBtaWlfZGF0YS1cdTAwM2VyZWdfbnVtLCB2YWwpO1xuIDM5NDpcdFx0XHRlbHNlXG4gMzk1Olx0XHRcdFx0bWRpb2J1c193cml0ZShwaHlkZXYtXHUwMDNlbWRpby5idXMsIHBydGFkLCBkZXZhZCwgdmFsKTtcbiAzOTY6XHRcbiAzOTc6XHRcdFx0aWYgKHBydGFkID09IHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgXHUwMDI2XHUwMDI2XG4gMzk4Olx0XHRcdCAgICBkZXZhZCA9PSBNSUlfQk1DUiBcdTAwMjZcdTAwMjZcbiAzOTk6XHRcdFx0ICAgIHZhbCBcdTAwMjYgQk1DUl9SRVNFVClcbiA0MDA6XHRcdFx0XHRyZXR1cm4gcGh5X2luaXRfaHcocGh5ZGV2KTtcbiA0MDE6XHRcbiA0MDI6XHRcdFx0aWYgKGNoYW5nZV9hdXRvbmVnKVxuIDQwMzpcdFx0XHRcdHJldHVybiBwaHlfc3RhcnRfYW5lZyhwaHlkZXYpO1xuIDQwNDpcdFxuIDQwNTpcdFx0XHRyZXR1cm4gMDtcbiA0MDY6XHRcbiA0MDc6XHRcdGNhc2UgU0lPQ1NIV1RTVEFNUDpcbiA0MDg6XHRcdFx0aWYgKHBoeWRldi1cdTAwM2VtaWlfdHMgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VtaWlfdHMtXHUwMDNlaHd0c3RhbXBfc2V0KSB7XG4gNDA5Olx0XHRcdFx0aWYgKGNvcHlfZnJvbV91c2VyKFx1MDAyNmNmZywgaWZyLVx1MDAzZWlmcl9kYXRhLCBzaXplb2YoY2ZnKSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTc1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIFBIWSBNTUQgV3JpdGUgRnVuY3Rpb24gQ2FsbHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBwaHlfbWlpX2lvY3RsYCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCAqZG9lc24mIzM5O3QqIGRpcmVjdGx5IGNhbGwgYHBoeV93cml0ZV9tbWRgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGl0IHdvdWxkLCBidXQgbm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhY3R1YWwgY2FsbCBjaGFpbi4gTm93LCBJIHNlZSB0aGF0IGBwaHlfd3JpdGVfbW1kYCBnZXRzIGNhbGxlZCBmcm9tIGBnZW5waHlfd3JpdGVfbW1kX2M0NWAsIHdhaXQgYSBtaW51dGUsIG5vIHRoYXQgaXMgYSBjYWxsYmFjayBmdW5jdGlvbi4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgbW9yZSBjYXJlZnVsbHkuCgpMZXQgbWUgc2VlLi4uIHdoZXJlICppcyogYHBoeV93cml0ZV9tbWRgIGFjdHVhbGx5IGdldHRpbmcgY2FsbGVkPyBIbW0sIGl0IGxvb2tzIGxpa2UgYHBoeV93cml0ZV9tbWRgIGdldHMgY2FsbGVkIGluIGBydGxnZW5fd3JpdGVfbW1kYD8gTm8sIHdhaXQgYSBtaW51dGUsIGBydGxnZW5fd3JpdGVfbW1kYCBpcyBqdXN0IHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgYC53cml0ZV9tbWRgLiBTbywgSSBuZWVkIHRvIGtub3cgd2hlcmUgYC53cml0ZV9tbWRgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQuCgpSaWdodCwgaGVyZSB3ZSBnby4uLiBsb29rcyBsaWtlIGAud3JpdGVfbW1kYCBpcyBjYWxsZWQgaW4gYF9fcGh5X3dyaXRlX21tZGAuIFRoYXQmIzM5O3MgdGhlIGtleS4gQW5kIGBfX3BoeV93cml0ZV9tbWRgIGlzICpkaXJlY3RseSogY2FsbGVkIGJ5IGBwaHlfd3JpdGVfbW1kYCBpdHNlbGYuIE9rYXksIHRoYXQmIzM5O3Mgbm90IHRvbyBzdXJwcmlzaW5nLgoKTm93LCB0aGUgaW1wb3J0YW50IHBhcnQuIGBwaHlfd3JpdGVfbW1kYCBpcyB0aGUgd29ya2hvcnNlLiBJIHNlZSBpdCBnZXRzIGNhbGxlZCBmcm9tIGEgYnVuY2ggb2YgcGxhY2VzIHdpdGhpbiB0aGUgdmFyaW91cyBQSFkgZHJpdmVyIGltcGxlbWVudGF0aW9ucyAtIGFzIGV4cGVjdGVkLCB0aGF0IG1ha2VzIHNlbnNlLiBBbmQsIEkgc2VlIGl0JiMzOTtzIGFsc28gY2FsbGVkIGJ5IHNvbWUgb2YgdGhlIG1vcmUgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBsaWtlIGBwaHlfaW5pdF9lZWVgIGFuZCBgcGh5X2V0aHRvb2xfc2V0X2VlZWAgYW5kIG90aGVyIFBIWSBjb25maWd1cmF0aW9uIHJvdXRpbmVzLiBTbywgaXRzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSwgYW5kIHVzZWQgYnJvYWRseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfd3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2MjQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBFdGhlcm5ldCBlbmVyZ3kgZWZmaWNpZW5jeSwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZS4gR2l2ZW4gd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aCwgbXkgZmlyc3QgaHVuY2ggaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBsb3ctbGV2ZWwgUEhZIHNldHRpbmdzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZXhhbWluaW5nIHRoZSBgcGh5X2V0aHRvb2xfc2V0X2VlZWAgZnVuY3Rpb24gKG9yIHNvbWV0aGluZyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBpZiB0aGUgc3lzdGVtIHV0aWxpemVzIGEgY3VzdG9tIG9yIHZlbmRvci1zcGVjaWZpYyBuYW1pbmcgY29udmVudGlvbikuIEl0JiMzOTtzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2Qgc3RhcnQuIEkgc3VzcGVjdCB0aGF0JiMzOTtzIHdoZXJlIEkgY2FuIGZpbmQgdGhlIGNvbnRyb2wgcG9pbnRzIHRvIGFkanVzdCBFRUUgY2FwYWJpbGl0aWVzLiBJZiB0aGF0IGRvZXNuJiMzOTt0IHlpZWxkIHJlc3VsdHMsIEkmIzM5O2QgdHJhY2UgYmFjayBmcm9tIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfd3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTgyOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz0yNzU9c3RhdGljIGludCBhZGluX2NvbmZpZ19yZ21paV9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zMTYtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjMxNzpcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTMxOC1cdFx0XHQgICAgIEFESU4xMzAwX0dFX1JHTUlJX0NGR19SRUcsIHJlZyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz0zMjE9c3RhdGljIGludCBhZGluX2NvbmZpZ19ybWlpX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTM0My1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzQ0Olx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzQ1LVx0XHRcdCAgICAgQURJTjEzMDBfR0VfUk1JSV9DRkdfUkVHLCByZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jPTE5Mj1zdGF0aWMgaW50IGFkaW5fc2V0X3Bvd2VyZG93bl9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW4pXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTk1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MTk2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTk3LVx0XHRcdCAgICBBRElOX0NSU01fU0ZUX1BEX0NOVFJMLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYz00Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYWRpbjExNDBfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTU0LVx0XHQucmVhZF9tbWQgPSBnZW5waHlfcmVhZF9tbWRfYzQ1LFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjU1Olx0XHQud3JpdGVfbW1kID0gZ2VucGh5X3dyaXRlX21tZF9jNDUsXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmMtNTYtXHRcdC5nZXRfcGxjYV9jZmcgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTI3Mj1zdGF0aWMgaW50IGFuODgwMXJfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMwMC1cdFx0XHRcdCAgICAgTEVEX0JMSU5LX0RVUl9NQVNLKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MzAxOlx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExFRF9CTElOS19EVVIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMwMi1cdFx0XHRcdCAgICBibGlua19kdXIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzA1LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozMDY6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEVEX09OX0RVUixcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzA3LVx0XHRcdFx0ICAgIGh3X2RlbGF5X29uKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTkwMj1zdGF0aWMgaW50IGFuODgwMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkxMS1cdC8qIERpc2FibGUgTG93IFBvd2VyIE1vZGUgKExQTSkgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTEyOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBTjg4MDFfUkVHX1BIWV9JTlRFUk5BTDAsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkxMy1cdFx0XHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX0lOVEZVTkNfTUFTSywgMHgxZSkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTE2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5MTc6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFOODgwMV9SRUdfUEhZX0lOVEVSTkFMMSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTE4LVx0XHRcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfSU5URlVOQ19NQVNLLCAweDIpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk1Ny1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTU4Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NTktXHRcdFx0ICAgIEFOODgwMV9QSFlfVFhfUEFJUl9ETFlfU0VMX0dCRSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk2NC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTY1Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBTjg4MDFfUEhZX1JYQURDX0NUUkwsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk2Ni1cdFx0XHQgICAgQU44ODAxX1BIWV9SWEFEQ19TQU1QX1BIU0VMX0EgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTcwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NzE6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFOODgwMV9QSFlfUlhBRENfUkVWXzAsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk3Mi1cdFx0XHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX1JYQURDX1JFVl9NQVNLX0EsIDEpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk3NS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTc2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBTjg4MDFfUEhZX1JYQURDX1JFVl8xLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NzctXHRcdFx0ICAgIEZJRUxEX1BSRVAoQU44ODAxX1BIWV9SWEFEQ19SRVZfTUFTS19DLCAxKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NjEwPXN0YXRpYyBpbnQgYWlyX2h3X2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjI4LVx0aWYgKGNoYW5nZWQpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2Mjk6XHRcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MzAtXHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JMSU5LKGluZGV4KSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz03MDg9c3RhdGljIGludCBhaXJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2NC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc2NTpcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0JMSU5LKGluZGV4KSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2Ni1cdFx0XHQgICAgIGJsaW5rKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz03OTc9c3RhdGljIGludCBhaXJfbGVkc19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBudW0sIGludCBkdXIsIGludCBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwMS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgwMjpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfRFVSX0JMSU5LLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODAzLVx0XHRcdCAgICBkdXIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwNi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgwNzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfRFVSX09OLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODA4LVx0XHRcdCAgICBkdXIgXHUwMDNlXHUwMDNlIDEpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEyODE9c3RhdGljIGludCBlbjg4MTFoX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI5OC1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI5OTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzAwLVx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfMV9NT0RFMSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwMi1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDM6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8yLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwNC1cdFx0XHQgICAgQUlSX1BIWV9NQ1VfQ01EXzJfTU9ERTEpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDYtXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzA3Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDgtXHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX01PREUxKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzEwLVx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMxMTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzEyLVx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfNF9NT0RFMSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTQ1Mj1zdGF0aWMgaW50IGVuODgxMWhfY2xlYXJfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NTUtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDU2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NTctXHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX0RPQ01EKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDYwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQ2MTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDYyLVx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfNF9JTlRDTFIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jPTkwPXN0YXRpYyBpbnQgYXFyX2Z3X2xvYWRfbWVtb3J5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk1LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6OTY6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy05Ny1cdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk4LVx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UxX0NSQ19SRVNFVCk7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzo5OTpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTEwMC1cdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMyxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTEwMS1cdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFM19NU1dfQUREUihhZGRyKSk7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoxMDI6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMDMtXHRcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTE1LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTE2Olx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTUsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMTctXHRcdFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNV9NU1dfREFUQSh3b3JkKSk7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoxMTg6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNixcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTExOS1cdFx0XHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U2X0xTV19EQVRBKHdvcmQpKTtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTEyMC1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjEyMTpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UxLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTIyLVx0XHRcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTFfRVhFQ1VURSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM9MTQ5PXN0YXRpYyBpbnQgYXFyX2Z3X2Jvb3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgdTggKmRhdGEsIHNpemVfdCBzaXplLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI2MS1cdC8qIHN0YWxsIHRoZSBtaWNyb2Nwcm9jZXNzb3IgKi9cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjI2MjpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX0NPTlRST0wyLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjYzLVx0XHQgICAgICBWRU5EMV9HTE9CQUxfQ09OVFJPTDJfVVBfUlVOX1NUQUxMIHwgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTF9PVkQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI4My1cdC8qIFJlbGVhc2UgdGhlIG1pY3JvcHJvY2Vzc29yLiBVUF9SRVNFVCBtdXN0IGJlIGhlbGQgZm9yIDEwMCB1c2VjLiAqL1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6Mjg0Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfQ09OVFJPTDIsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yODUtXHRcdCAgICAgIFZFTkQxX0dMT0JBTF9DT05UUk9MMl9VUF9SVU5fU1RBTEwgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI4OS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjI5MDpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX0NPTlRST0wyLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjkxLVx0XHQgICAgICBWRU5EMV9HTE9CQUxfQ09OVFJPTDJfVVBfUlVOX1NUQUxMX09WRCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2h3bW9uLmM9NTU9c3RhdGljIGludCBhcXJfaHdtb25fc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCByZWcsIGxvbmcgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2h3bW9uLmMtNjQtXHQvKiB0ZW1wIGlzIGluIHMxNiByYW5nZSBhbmQgd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4gbG93ZXIgMTYgYml0cyBvbmx5ICovXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYzo2NTpcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIHJlZywgKHUxNil0ZW1wKTtcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9od21vbi5jLTY2LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTI1Mz1zdGF0aWMgaW50IGFxcl9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY0LVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNjU6XHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fVFhfVkVORF9JTlRfTUFTSzIsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI2Ni1cdFx0XHQgICAgZW4gPyBNRElPX0FOX1RYX1ZFTkRfSU5UX01BU0syX0xJTksgOiAwKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI2OS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MjcwOlx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfSU5UX1NURF9NQVNLLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNzEtXHRcdFx0ICAgIGVuID8gVkVORDFfR0xPQkFMX0lOVF9TVERfTUFTS19BTEwgOiAwKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI3NC1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6Mjc1Olx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfSU5UX1ZFTkRfTUFTSyxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjc2LVx0XHRcdCAgICBlbiA/IFZFTkQxX0dMT0JBTF9JTlRfVkVORF9NQVNLX0dMT0JBTDMgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM9MzY5PXN0YXRpYyBpbnQgYXFyMTA1X3NldHVwX2ZvcmNlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtNDAxLVx0fVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzo0MDI6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fQURWRVJUSVNFLCBhZHYpO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDMtXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDQtXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjQwNTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9WRU5EX1BST1YsIHZlbmQpO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDYtXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDctXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjQwODpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl8xMEdCVF9DVFJMLCBjdHJsMTApO1xuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDktXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9Mjk3PXN0YXRpYyBpbnQgYWVvbl9maXJtd2FyZV9ib290KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IHU4ICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzA3LVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzozMDg6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0ZXX1NUQVJUX0FERFIsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMwOS1cdFx0XHQgICAgQUVPTl9CT09UX0FERFIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzI5LVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzozMzA6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzMxLVx0XHRcdFx0ICAgIFZFTkQxX0dMQl9SRUdfTURJT19JTkRJUkVDVF9MT0FELCB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzM1LVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzozMzY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMzNy1cdFx0XHQgICAgVkVORDFfR0xCX1JFR19DUFVfUkVTRVRfQUREUl9MT19CQVNFQUREUixcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTM0MS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MzQyOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zNDMtXHRcdFx0ICAgIFZFTkQxX0dMQl9SRUdfQ1BVX1JFU0VUX0FERFJfSElfQkFTRUFERFIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz00MDU9c3RhdGljIGludCBhZW9uX2lwY19zZW5kX2NtZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDIyLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzo0MjM6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0lQQ19DTUQsIGNtZCk7XG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTQyNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz00NTU9c3RhdGljIGludCBhZW9uX2lwY19zZW5kX21zZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDcxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGF0YV9sZW4gLyBzaXplb2YodTE2KTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjQ3MjpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9JUENfREFUQShpKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDczLVx0XHRcdCAgICAgIGRhdGFbaV0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTM3Mj1pbnQgYmNtX3BoeV9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTM4NS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjM4NjpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgQlJDTV9DTDQ1VkVOX0VFRV9DT05UUk9MLCAodTMyKXZhbCk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zODctXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNDA0LVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6NDA1Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBCQ01fQ0w0NVZFTl9FRUVfQURWLCAodTMyKXZhbCk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy00MDYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYz02Mjg9c3RhdGljIGludCBiY203eHh4XzI4bm1fZXBoeV9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtNjU3LVxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYzo2NTg6c3RhdGljIGludCBiY203eHh4XzI4bm1fZXBoeV93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtNjU5LVx0XHRcdFx0ICAgICAgIGludCBkZXZudW0sIHUxNiByZWdudW0sIHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYz04MjE9c3RhdGljIGludCBiY203eHh4XzI4bm1fcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jLTg4Ni1cdC5yZWFkX21tZFx0PSBiY203eHh4XzI4bm1fZXBoeV9yZWFkX21tZCxcdFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYzo4ODc6XHQud3JpdGVfbW1kXHQ9IGJjbTd4eHhfMjhubV9lcGh5X3dyaXRlX21tZCxcdFx0XHRcXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYy04ODgtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jPTk5PXN0YXRpYyBpbnQgYmNtODQ4OXhfbGVkX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jLTEwMy1cbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jOjEwNDpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDUtXHRcdFx0ICAgIGJjbTg0ODl4X2xlZF9yZWdzW2luZGV4XS5tYXNrX2xvdywgbG93KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDctXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYzoxMDg6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfUE1BUE1ELFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTA5LVx0XHRcdCAgICBiY204NDg5eF9sZWRfcmVnc1tpbmRleF0ubWFza19leHQsIGV4dCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYz0zND1zdGF0aWMgaW50IGJjbTg3eHhfb2ZfcmVnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTY4LVxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYzo2OTpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldmlkLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTcwLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM9MTQwPXN0YXRpYyBpbnQgYmNtODd4eF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtMTU0LVx0XHRyZWcgfD0gMTtcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM6MTU1Olx0XHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfUENTLFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTYtXHRcdFx0XHQgICAgQkNNODdYWF9MQVNJX0NPTlRST0wsIHJlZyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTgtXHRcdHJlZyBcdTAwMjY9IH4xO1xuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYzoxNTk6XHRcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QQ1MsXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE2MC1cdFx0XHRcdCAgICBCQ004N1hYX0xBU0lfQ09OVFJPTCwgcmVnKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jPTIxND1zdGF0aWMgaW50IGRwODM4MjJfY29uZmlnX3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjI5LVx0XHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjMwOlx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIE1JSV9EUDgzODIyX1dPTF9EQTEsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTIzMS1cdFx0XHQgICAgICAobWFjWzFdIFx1MDAzY1x1MDAzYyA4KSB8IG1hY1swXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjIzMjpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfREEyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMzMtXHRcdFx0ICAgICAgKG1hY1szXSBcdTAwM2NcdTAwM2MgOCkgfCBtYWNbMl0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyMzQ6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0RBMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjM1LVx0XHRcdCAgICAgIChtYWNbNV0gXHUwMDNjXHUwMDNjIDgpIHwgbWFjWzRdKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0NC1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI0NTpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0Ni1cdFx0XHRcdCAgICAgIE1JSV9EUDgzODIyX1JYU09QMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjQ3LVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbMV0gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1swXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI0ODpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0OS1cdFx0XHRcdCAgICAgIE1JSV9EUDgzODIyX1JYU09QMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjUwLVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbM10gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1syXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI1MTpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI1Mi1cdFx0XHRcdCAgICAgIE1JSV9EUDgzODIyX1JYU09QMyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI2NC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjY1Olx0XHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNjYtXHRcdFx0XHQgICAgIE1JSV9EUDgzODIyX1dPTF9DRkcsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jPTEwNDU9c3RhdGljIGludCBkcDgzODIyX3Jlc3VtZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMTA1Mi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MTA1MzpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0NGRywgdmFsdWUgfFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0xMDU0LVx0XHQgICAgICBEUDgzODIyX1dPTF9DTFJfSU5ESUNBVElPTik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0yMTE9c3RhdGljIGludCBkcDgzODY3X3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzMS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjMyOlx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjMzLVx0XHRcdFx0ICAgICAgKG1hY1sxXSBcdTAwM2NcdTAwM2MgOCB8IG1hY1swXSkpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMzQ6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzUtXHRcdFx0XHQgICAgICAobWFjWzNdIFx1MDAzY1x1MDAzYyA4IHwgbWFjWzJdKSk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzNjpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDMsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzNy1cdFx0XHRcdCAgICAgIChtYWNbNV0gXHUwMDNjXHUwMDNjIDggfCBtYWNbNF0pKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0NC1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0NTpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDEsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0Ni1cdFx0XHRcdCAgICAgICh3b2wtXHUwMDNlc29wYXNzWzFdIFx1MDAzY1x1MDAzYyA4KSB8IHdvbC1cdTAwM2Vzb3Bhc3NbMF0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDc6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNDgtXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1szXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzJdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQ5Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjUwLVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbNV0gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1s0XSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzAtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI3MTpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGQ0ZHLCB2YWxfcnhjZmcpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzItXHRwaHlfd3JpdGUocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSLCB2YWxfbWljcik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz03MzY9c3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MDgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgwOTpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SR01JSUNUTCwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODEwLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4MTE6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUkdNSUlEQ1RMLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTItXHRcdFx0ICAgICAgZHA4Mzg2Ny1cdTAwM2VyeF9pZF9kZWxheSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTYtXHRcdHZhbCBcdTAwMjY9IH5EUDgzODY3X1JHTUlJX0VOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4MTc6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUkdNSUlDVEwsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgxOC1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTg2MC1cdFx0XHR2YWwgXHUwMDI2PSB+RFA4Mzg2N19TR01JSV9UWVBFO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4NjE6XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfU0dNSUlDVEwsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTg2Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTkzNT1zdGF0aWMgaW50IGRwODM4NjdfcGh5X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05NTMtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6OTU0Olx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19EU1BfRkZFX0NGRyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTU1LVx0XHRcdCAgICAweDBlODEpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM9MjU5PXN0YXRpYyBpbnQgZHA4Mzg2OV9zZXRfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yODYtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjI4NzpcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yODgtXHRcdFx0XHRcdCAgICBEUDgzODY5X1JYRlBNRDEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTItXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjI5MzpcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTQtXHRcdFx0XHRcdCAgICBEUDgzODY5X1JYRlBNRDIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjI5OTpcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMDAtXHRcdFx0XHRcdCAgICBEUDgzODY5X1JYRlBNRDMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTAtXHRcdGlmICh3b2wtXHUwMDNld29sb3B0cyBcdTAwMjYgV0FLRV9NQUdJQ1NFQ1VSRSkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozMTE6XHRcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzEyLVx0XHRcdFx0XHQgICAgRFA4Mzg2OV9SWEZTT1AxLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzE2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozMTc6XHRcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzE4LVx0XHRcdFx0XHQgICAgRFA4Mzg2OV9SWEZTT1AyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzIxLVx0XHRcdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MzIyOlx0XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMyMy1cdFx0XHRcdFx0ICAgIERQODM4NjlfUlhGU09QMyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTM0Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MzQ3Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUiwgRFA4Mzg2OV9SWEZDRkcsIHZhbF9yeGNmZyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTM0OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYz02OTQ9c3RhdGljIGludCBkcDgzODY5X2NvbmZpZ3VyZV9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03MTgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjcxOTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfT1BfTU9ERSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzIwLVx0XHRcdCAgICBwaHlfY3RybF92YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzUzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo3NTQ6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc1NS1cdFx0XHRcdCAgICBEUDgzODY5X0ZYX0NUUkwsIERQODM4NjlfRlhfQ1RSTF9ERUZBVUxUKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc2NS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6NzY2Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03NjctXHRcdFx0XHQgICAgRFA4Mzg2OV9GWF9DVFJMLCBEUDgzODY5X0ZYX0NUUkxfREVGQVVMVCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03ODYtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjc4NzpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzg4LVx0XHRcdFx0ICAgIERQODM4NjlfRlhfQ1RSTCwgRFA4Mzg2OV9GWF9DVFJMX0RFRkFVTFQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM9ODA0PXN0YXRpYyBpbnQgZHA4Mzg2OV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODM0LVx0XHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6ODM1Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04MzYtXHRcdFx0XHQgICAgRFA4Mzg2OV9BTkFfUExMX1BST0dfUEksIDB4MTApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODQ3LVx0aWYgKHBoeV9pbnRlcmZhY2VfaXNfcmdtaWkocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo4NDg6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfUkdNSUlEQ1RMLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NDktXHRcdFx0XHQgICAgZHA4Mzg2OS1cdTAwM2VyeF9pbnRfZGVsYXkgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODY3LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo4Njg6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfUkdNSUlDVEwsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTg2OS1cdFx0XHRcdCAgICB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYz05Nz1zdGF0aWMgaW50IGRwODM4MTFfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTItXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExMzpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUiwgTUlJX0RQODM4MTFfV09MX0RBMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTQtXHRcdFx0ICAgICAgKG1hY1sxXSBcdTAwM2NcdTAwM2MgOCkgfCBtYWNbMF0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExNTpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUiwgTUlJX0RQODM4MTFfV09MX0RBMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTYtXHRcdFx0ICAgICAgKG1hY1szXSBcdTAwM2NcdTAwM2MgOCkgfCBtYWNbMl0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExNzpcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUiwgTUlJX0RQODM4MTFfV09MX0RBMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTgtXHRcdFx0ICAgICAgKG1hY1s1XSBcdTAwM2NcdTAwM2MgOCkgfCBtYWNbNF0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMjctXHRcdGlmICh3b2wtXHUwMDNld29sb3B0cyBcdTAwMjYgV0FLRV9NQUdJQ1NFQ1VSRSkge1xuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjEyODpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEyOS1cdFx0XHRcdCAgICAgIE1JSV9EUDgzODExX1JYU09QMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzAtXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1sxXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzBdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxMzE6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzItXHRcdFx0XHQgICAgICBNSUlfRFA4MzgxMV9SWFNPUDIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTMzLVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbM10gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1syXSk7XG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTM0Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTM1LVx0XHRcdFx0ICAgICAgTUlJX0RQODM4MTFfUlhTT1AzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xNDctXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTQ4Olx0XHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xNDktXHRcdFx0XHQgICAgIE1JSV9EUDgzODExX1dPTF9DRkcsIHZhbHVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM9NTMwPXN0YXRpYyBpbnQgZHA4M3RkNTEwX2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTUzNC1cdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJydXB0cyA9PSBQSFlfSU5URVJSVVBUX0VOQUJMRUQpIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo1MzU6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01MzYtXHRcdFx0XHQgICAgRFA4M1RENTEwRV9JTlRFUlJVUFRfUkVHXzEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTU0Ni1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NTQ3Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNTQ4LVx0XHRcdFx0ICAgIERQODNURDUxMEVfSU5URVJSVVBUX1JFR18xLCAweDApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYz02ODQ9c3RhdGljIGludCBkcDgzdGQ1MTBfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03MzgtXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzM5Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1REUl9DRkcyLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc0MC1cdFx0XHQgICAgRklFTERfUFJFUChEUDgzVEQ1MTBFX1REUl9FTkRfVEFQX0lOREVYXzEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc0Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo3NDc6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURDUxMEVfVERSX0ZBVUxUX0NGRzEsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzQ4LVx0XHRcdCAgICBGSUVMRF9QUkVQKERQODNURDUxMEVfVERSX0ZMVF9MT0NfT0ZGU0VUXzEsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc1Ny1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjc1ODpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9VTktOXzAzMEUsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzU5LVx0XHRcdCAgICBEUDgzVEQ1MTBFXzAzMEVfVkFMKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzYyLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjc2MzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9URFJfQ0ZHMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NjQtXHRcdFx0ICAgIERQODNURDUxMEVfVERSX1RYX0RVUkFUSU9OX1VTX0RFRik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jPTMyND1zdGF0aWMgaW50IGRwODN0ZzcyMF9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzozNDE6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVERSX0NGRzIsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzQyLVx0XHRcdCAgICAweGEwMDgpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNDUtXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzQ2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX1REUl9DRkczLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0Ny1cdFx0XHQgICAgMHgwOTI4KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzUwLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM1MTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19URFJfQ0ZHNCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNTItXHRcdFx0ICAgIDB4MDAwNCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1NS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzozNTY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVU5LTk9XTl8wNDA1LFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1Ny1cdFx0XHQgICAgMHg2NDAwKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzYwLVxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM2MTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19VTktOT1dOXzA4M0YsXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzYyLVx0XHRcdCAgICAweDMwMDMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYz01NTg9c3RhdGljIGludCBkcDgzdGc3MjBfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtNTc1LVx0ICovXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6NTc2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX0xQU19DRkczLFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTU3Ny1cdFx0XHQgICAgRFA4M1RHNzIwU19MUFNfQ0ZHM19QV1JfTU9ERV8wKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTI0NT1zdGF0aWMgaW50IHh3YXlfZ3BoeV9pbml0X2xlZHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI1OS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjYwOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRURDSCxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjYxLVx0XHQgICAgICBYV0FZX01NRF9MRURDSF9OQUNTX05PTkUgfFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjYzLVx0XHQgICAgICBYV0FZX01NRF9MRURDSF9GQkZfRjE2SFopO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNjQ6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRENMLFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNjUtXHRcdCAgICAgIFhXQVlfTU1EX0xFRENIX0NCTElOS19OT05FIHxcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI3Ni1cdFx0WFdBWV9NTURfTEVEeExfQkxJTktTX05PTkU7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI3NzpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMEgsIGxlZHhoKTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Mjc4Olx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQwTCwgbGVkeGwpO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNzk6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDFILCBsZWR4aCk7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI4MDpcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMUwsIGxlZHhsKTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjgxOlx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQySCwgbGVkeGgpO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyODI6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDJMLCBsZWR4bCk7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI4My1cbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTM5Mz1zdGF0aWMgaW50IHh3YXlfZ3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTQxMC1cdGlmICh2YWx1ZSA9PSBMRURfT0ZGKSB7XG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjQxMTpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUR4SChpbmRleCksIDApO1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTQtXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjQxNTpcdFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEeEwoaW5kZXgpLCAwKTtcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDE2LVx0fSBlbHNlIHtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzNjMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYHBoeV93cml0ZV9tbWRgIFVzYWdlKioKCk9rYXksIHNvIGBwaHlfd3JpdGVfbW1kYCBpcyBhIGZ1bmN0aW9uIHRoYXQmIzM5O3MgY2xlYXJseSBiZWluZyB1dGlsaXplZCBhY3Jvc3MgYSBzaWduaWZpY2FudCBwb3J0aW9uIG9mIHRoZSBQSFkgZHJpdmVyIGNvZGViYXNlLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBicm9hZGx5IHVzZWQgbWVyaXRzIGNhcmVmdWwgc2NydXRpbnkuIEJ1dCB3YWl0LCBkaWQgSSBqdXN0IHNlZSB0aGF0IGBwaHlfZXRodG9vbF9zZXRfZWVlYCBpcyBjYWxsaW5nIGBwaHlfd3JpdGVfbW1kYD8gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0IChFRUUpIGludGVyYWN0cyB3aXRoIHRoZSBNTUQgcmVnaXN0ZXIgd3JpdGVzLCBhcyB0aGlzIGludGVyYWN0aW9uIG1heSBiZSBpbXBvcnRhbnQgZm9yIGRlYnVnLiBMZXQmIzM5O3MgZGlnIGludG8gYHBoeV9ldGh0b29sX3NldF9lZWVgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9ldGh0b29sX3NldF9lZWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHkuYz0xOTUyPUVYUE9SVF9TWU1CT0wocGh5X2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5NTQtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTk1NTogKiBwaHlfZXRodG9vbF9zZXRfZWVlX25vbmVnIC0gQWRqdXN0cyBNQUMgTFBJIGNvbmZpZ3VyYXRpb24gd2l0aG91dCBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTU2LSAqXHRcdFx0ICAgICAgIHJlbmVnb3RpYXRpb25cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTk2Ny0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxOTY4OnN0YXRpYyB2b2lkIHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTY5LVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGVlZV9jb25maWcgKm9sZF9jZmcpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5ODktLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTk5MDogKiBwaHlfZXRodG9vbF9zZXRfZWVlIC0gc2V0IEVFRSBzdXBwb3J0ZWQgYW5kIHN0YXR1c1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5OTEtICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5OTUtICovXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTk5NjppbnQgcGh5X2V0aHRvb2xfc2V0X2VlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5OTcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDEwLVx0aWYgKHJldCA9PSAwKVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjIwMTE6XHRcdHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcocGh5ZGV2LCBcdTAwMjZvbGRfY2ZnKTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDEyLVx0ZWxzZSBpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDE4LX1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoyMDE5OkVYUE9SVF9TWU1CT0wocGh5X2V0aHRvb2xfc2V0X2VlZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMjAyMC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMzMjI9aW50IHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZWVlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzM0Mi1cdFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkX2xwaSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzNDM6XHRcdHJldCA9IHBoeV9ldGh0b29sX3NldF9lZWUocGwtXHUwMDNlcGh5ZGV2LCBlZWUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzQ0LVx0XHRpZiAocmV0ID09IDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMjc1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gcGh5X2V0aHRvb2xfc2V0X2VlZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBwaHlfZXRodG9vbF9zZXRfZWVlYCBpbiBgcGh5LmNgLiBTdHJhaWdodCBhd2F5LCBJJiMzOTttIGVudmlzaW9uaW5nIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJdCYjMzk7cyB0aGUgRUVFIChFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0KSBzZXR0aW5nIGZ1bmN0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIGhvdyB3ZSYjMzk7cmUgY29udHJvbGxpbmcgdGhlIHBvd2VyLXNhdmluZyBiZWhhdmlvciBvZiB0aGUgUEhZLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljIFBIWSByZWdpc3RlcnMgaW52b2x2ZWQgaW4gRUVFIG5lZ290aWF0aW9uIGFuZCBvcGVyYXRpb24uCgpJJiMzOTttIHByb2JhYmx5IGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGZ1bmN0aW9uJiMzOTtzIGNhbGwgZmxvdyB0byBzZWUgaG93IHRoZSBhcmd1bWVudHMgYXJlIGhhbmRsZWQgYW5kIGlmIHRoZXJlJiMzOTtzIGFueSBjcml0aWNhbCB2YWxpZGF0aW9uLiBJJiMzOTttIGtlZW4gdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBnZW5lcmljIFBIWSBkcml2ZXIgZnJhbWV3b3JrIGFuZCBhbnkgdmVuZG9yLXNwZWNpZmljIGV4dGVuc2lvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgaXQgc2V0cyB0aGUgQXV0by1NRElYIG1vZGUgYWxvbmdzaWRlIHRoZSBFRUUgY29uZmlndXJhdGlvbiwgc2luY2UgdGhlIGNvbWJpbmF0aW9uIG9mIHRob3NlIHR3byBzZXR0aW5ncyBpcyBwcmV0dHkgaW1wb3J0YW50LgoKSSBleHBlY3QgdG8gc2VlIHRoZSBmdW5jdGlvbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBNTUQgcmVnaXN0ZXJzLCBhcyB0aGF0JiMzOTtzIG9mdGVuIHdoZXJlIHRoZSBFRUUgc2V0dGluZ3MgbGl2ZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBob3cgaXQgaGFuZGxlcyB0aGUgcG90ZW50aWFsIGZvciByZXRyaWVzIG9yIGVycm9yIGhhbmRsaW5nIGR1cmluZyB0aGUgcmVnaXN0ZXIgd3JpdGVzLiBJJiMzOTttIGFsc28gY3VyaW91cyBpZiBpdCBkeW5hbWljYWxseSBhZGp1c3RzIGFueSBvdGhlciBzZXR0aW5ncyBiYXNlZCBvbiB0aGUgRUVFIGNvbmZpZ3VyYXRpb24sIGxpa2UgbGluayBzcGVlZCBvciBkdXBsZXguIEl0JiMzOTtzIGFsc28gd29ydGggbG9va2luZyBmb3IgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IFBIWSByZXZpc2lvbnMgb3IgdmVuZG9yLXNwZWNpZmljIEVFRSBmZWF0dXJlcy4gSSYjMzk7bGwgaGF2ZSB0byBzZWUgaWYgdGhlIGRyaXZlciBjb3JyZWN0bHkgaGFuZGxlcyBzaXR1YXRpb25zIHdoZXJlIHRoZSBQSFkgbWlnaHQgbm90IHN1cHBvcnQgRUVFLCBhbmQgYWxzbyBob3cgaXQgcmVwb3J0cyB0aGUgc2V0dGluZyBiYWNrIHRvIHRoZSB1c2VyIHNwYWNlLgoKQmFzaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlLCBmcm9tIHVzZXItc3BhY2UgcmVxdWVzdCB0byBQSFkgcmVnaXN0ZXIgd3JpdGVzLCBzbyBJIGNhbiBlbnN1cmUgaXQmIzM5O3MgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLCBhbmQgZWZmaWNpZW50bHkgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5OTYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTk5NjpcdGludCBwaHlfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXG4xOTk3Olx0e1xuMTk5ODpcdFx0c3RydWN0IGVlZV9jb25maWcgb2xkX2NmZztcbjE5OTk6XHRcdGludCByZXQ7XG4yMDAwOlx0XG4yMDAxOlx0XHRpZiAoIXBoeWRldi1cdTAwM2VkcnYpXG4yMDAyOlx0XHRcdHJldHVybiAtRUlPO1xuMjAwMzpcdFxuMjAwNDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbG9jayk7XG4yMDA1Olx0XG4yMDA2Olx0XHRvbGRfY2ZnID0gcGh5ZGV2LVx1MDAzZWVlZV9jZmc7XG4yMDA3Olx0XHRlZWVfdG9fZWVlY2ZnKFx1MDAyNnBoeWRldi1cdTAwM2VlZWVfY2ZnLCBkYXRhKTtcbjIwMDg6XHRcbjIwMDk6XHRcdHJldCA9IGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKHBoeWRldiwgZGF0YSk7XG4yMDEwOlx0XHRpZiAocmV0ID09IDApXG4yMDExOlx0XHRcdHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcocGh5ZGV2LCBcdTAwMjZvbGRfY2ZnKTtcbjIwMTI6XHRcdGVsc2UgaWYgKHJldCBcdTAwM2MgMClcbjIwMTM6XHRcdFx0cGh5ZGV2LVx1MDAzZWVlZV9jZmcgPSBvbGRfY2ZnO1xuMjAxNDpcdFxuMjAxNTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2Vsb2NrKTtcbjIwMTY6XHRcbjIwMTc6XHRcdHJldHVybiByZXQgXHUwMDNjIDAgPyByZXQgOiAwO1xuMjAxODpcdH1cbjIwMTk6XHRFWFBPUlRfU1lNQk9MKHBoeV9ldGh0b29sX3NldF9lZWUpO1xuMjAyMDpcdFxuMjAyMTpcdC8qKlxuMjAyMjpcdCAqIHBoeV9ldGh0b29sX3NldF93b2wgLSBDb25maWd1cmUgV2FrZSBPbiBMQU5cbjIwMjM6XHQgKlxuMjAyNDpcdCAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuMjAyNTpcdCAqIEB3b2w6IENvbmZpZ3VyYXRpb24gcmVxdWVzdGVkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTYxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZWAgRnVuY3Rpb24qKgoKT2theSwgc28gYGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlYCBoYXMgYmVlbiBpbnZva2VkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIEdpdmVuIHRoZSBuYW1lLCBJJiMzOTttIGJldHRpbmcgaXQgcmVsYXRlcyB0byBzZXR0aW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgcGFyYW1ldGVycywgYW5kIHRoZSAmIzM0O2dlbnBoeV9jNDUmIzM0OyBwcmVmaXggc3VnZ2VzdHMgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgZ2VuZXJpYyBQSFksIHNwZWNpZmljYWxseSBvbmUgdGhhdCYjMzk7cyBtYW5hZ2VkIHRocm91Z2ggdGhlIENsYXVzZSA0NSAob3IgTURJTykgaW50ZXJmYWNlLCBsaWtlbHkgdmlhIGEgc3RhbmRhcmRpemVkIHJlZ2lzdGVyIHNldC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lOgoKKiAgIFdoYXQgc3BlY2lmaWMgRUVFIHBhcmFtZXRlcnMgaXMgaXQgZGVzaWduZWQgdG8gbW9kaWZ5PyBJcyBpdCBjb250cm9sbGluZyB0aGUgYWR2ZXJ0aXNlZCBjYXBhYmlsaXRpZXMsIHRoZSBvcGVyYXRpb25hbCBzZXR0aW5ncywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/CiogICBIb3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlPyBEb2VzIGl0IGRpcmVjdGx5IHdyaXRlIHRvIHRoZSBQSFkgcmVnaXN0ZXJzLCBvciBkb2VzIGl0IHV0aWxpemUgc29tZSBhYnN0cmFjdGlvbiBsYXllciBvciBoZWxwZXIgZnVuY3Rpb25zPwoqICAgV2hhdCYjMzk7cyB0aGUgb3ZlcmFsbCBjb250ZXh0PyBJcyB0aGlzIGNhbGxlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uLCBsaW5rIGNvbmZpZ3VyYXRpb24sIG9yIGFzIGEgcmVzcG9uc2UgdG8gYW4gYGV0aHRvb2xgIGNvbW1hbmQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgY3J1Y2lhbC4KKiAgIEFyZSB0aGVyZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIFBIWSBtb2RlbCBvciBjYXBhYmlsaXRpZXM/IERvZXMgaXQgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBjZXJ0YWluIHJlZ2lzdGVycyBvciBmZWF0dXJlcz8gSSBuZWVkIHRvIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZm9yIGhhcmR3YXJlLXNwZWNpZmljIGhhbmRsaW5nLgoqICAgV2hhdCBlcnJvciBoYW5kbGluZyBpcyBwcmVzZW50PyBBcmUgdGhlcmUgY2hlY2tzIGZvciBpbnZhbGlkIGlucHV0IG9yIGNvbW11bmljYXRpb24gZmFpbHVyZXMgd2l0aCB0aGUgUEhZPwoKSSYjMzk7bGwgc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb24mIzM5O3MgZXhlY3V0aW9uIHBhdGggYW5kIGNhcmVmdWxseSBleGFtaW5lIHRoZSByZWdpc3RlciBhY2Nlc3Nlcy4gSSYjMzk7bGwgbmVlZCB0byBjb3JyZWxhdGUgdGhlc2Ugd2l0aCB0aGUgQ2xhdXNlIDQ1IHNwZWNpZmljYXRpb25zIHRvIGRldGVybWluZSB0aGUgZXhhY3QgaW1wYWN0IG9uIHRoZSBQSFkmIzM5O3MgRUVFIGJlaGF2aW9yLiBBbnkgdXNlIG9mIG1hc2tzIG9yIGJpdGZpZWxkcyB3aWxsIGJlIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QuIEkgd2FudCB0byBzZWUgaG93IGl0IGhhbmRsZXMgdGhpbmdzIGxpa2UgdGhlIExQSSAoTG93IFBvd2VyIElkbGUpIHRpbWVycyBhbmQgb3RoZXIgRUVFLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEJhc2ljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0JiMzOTtzIGRvaW5nIHRoZSByaWdodCB0aGluZywgaW4gdGhlIHJpZ2h0IHdheSwgYW5kIHVuZGVyIHRoZSByaWdodCBjb25kaXRpb25zLCB3aXRob3V0IHVuaW50ZW50aW9uYWxseSBicmVha2luZyBhbnl0aGluZyBlbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYz0xNjU3PUVYUE9SVF9TWU1CT0woZ2VucGh5X2M0NV9ldGh0b29sX2dldF9lZWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY1OS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTY2MDogKiBnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZSAtIHNldCBFRUUgc3VwcG9ydGVkIGFuZCBzdGF0dXNcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY2MS0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2NzEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE2NzI6aW50IGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2NzMtXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNzA4LX1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTcwOTpFWFBPUlRfU1lNQk9MKGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTcxMC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MTk5Nj1pbnQgcGh5X2V0aHRvb2xfc2V0X2VlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDA4LVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjIwMDk6XHRyZXQgPSBnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZShwaHlkZXYsIGRhdGEpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTIwMTAtXHRpZiAocmV0ID09IDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTE0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWVgIGZ1bmN0aW9uLgoKKipBbmFseXppbmcgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUqKgoKUmlnaHQsIHNvIHRoaXMgZnVuY3Rpb24gaXMgY2xlYXJseSBhYm91dCBzZXR0aW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgcGFyYW1ldGVycyBmb3IgYSBnZW5lcmljIFBIWSB0aGF0JiMzOTtzIHVzaW5nIHRoZSBDbGF1c2UgNDUgKEM0NSkgcmVnaXN0ZXIgaW50ZXJmYWNlLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgY29tbW9uIFBIWSwgd2hpY2ggbWVhbnMgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGEgYnJvYWRlciBkcml2ZXIsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuCgpGaXJzdCwgSSBuZWVkIHRvIHNlZSBpZiBpdCBoYW5kbGVzIHRoZSBjb25maWd1cmF0aW9uIG9mIEVFRSBiYXNlZCBvbiB3aGF0JiMzOTtzIHBhc3NlZCBpbiBmcm9tIGV0aHRvb2wuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgcmVxdWlyZWQgb24gdGhlIGhhcmR3YXJlIHNpZGUgYW5kIGhvdyB0aGUgZHJpdmVyIHRyYW5zbGF0ZXMgdGhlIHVzZXImIzM5O3MgaW50ZW50aW9uIChlbmFibGUsIGRpc2FibGUsIHNwZWNpZmljIHNldHRpbmdzKSBpbnRvIGFjdHVhbCByZWdpc3RlciB3cml0ZXMuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl0IHVzZXMgc29tZSBzb3J0IG9mIGhlbHBlciBmdW5jdGlvbnMgb3Igc3RydWN0dXJlcyB0byBhYnN0cmFjdCB0aGUgQzQ1IHJlZ2lzdGVyIGFjY2Vzcywgb3IgaWYgaXQgaGFzIHRvIGRpcmVjdGx5IG1hbmlwdWxhdGUgdGhlIHJlZ2lzdGVycy4gSSYjMzk7bGwgbmVlZCB0byBhc3Nlc3MgaG93IGl0IGRlYWxzIHdpdGggcG90ZW50aWFsIGVycm9ycywgYW5kIHdoYXQgdGhlIGZsb3cgaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIFBIWSBzZXR0aW5ncy4KCkdpdmVuIHRoYXQgaXQmIzM5O3MgYGdlbnBoeWAsIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgZmFpcmx5IGdlbmVyaWMsIGFuZCBJJiMzOTtkIGV4cGVjdCBpdCB0byBoYW5kbGUgdGhlIGJpdC1maWRkbGluZyBmb3IgdGhlIHJlbGV2YW50IEM0NSByZWdpc3RlcnMgY29ycmVjdGx5LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGRlYWxzIHdpdGggYWxsIHRoZSBjb3JuZXIgY2FzZXMgcHJvcGVybHksIGVzcGVjaWFsbHkgaWYgdGhlIGRldmljZSBoYXMgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIG9yIGxpbWl0YXRpb25zLiBJIGFsc28gd2FudCB0byBzZWUgaG93IHRoZSBzZXR0aW5ncyBhcmUgdmVyaWZpZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHNldCB2YWx1ZXMgd29yayBhcyBleHBlY3RlZC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCBoYW5kbGVzIGFueSBzcGVjaWFsIGNhc2VzIGZvciBDNDUgUEhZcyBvciBzcGVjaWZpYyBDNDUgdmVyc2lvbnMuIEl0JiMzOTtzIGxpa2VseSBhbHNvIGxvb2tpbmcgYXQgc3RhbmRhcmQgcmVnaXN0ZXJzLCBzbyBJIGhhdmUgdG8gYmUgYWJsZSB0byBmb2xsb3cgdGhlIGZsb3cgYW5kIHNlZSBob3cgdGhpbmdzIGdldCBzZXQgdXAgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjcyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2NzI6XHRpbnQgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbjE2NzM6XHRcdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcbjE2NzQ6XHR7XG4xNjc1Olx0XHRpbnQgcmV0O1xuMTY3NjpcdFxuMTY3NzpcdFx0aWYgKGRhdGEtXHUwMDNlZWVlX2VuYWJsZWQpIHtcbjE2Nzg6XHRcdFx0dW5zaWduZWQgbG9uZyAqYWR2ID0gZGF0YS1cdTAwM2VhZHZlcnRpc2VkO1xuMTY3OTpcdFxuMTY4MDpcdFx0XHRpZiAoIWxpbmttb2RlX2VtcHR5KGFkdikpIHtcbjE2ODE6XHRcdFx0XHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyh0bXApO1xuMTY4MjpcdFxuMTY4MzpcdFx0XHRcdGlmIChsaW5rbW9kZV9hbmRub3QodG1wLCBhZHYsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWRfZWVlKSkge1xuMTY4NDpcdFx0XHRcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcJiMzNDtBdCBsZWFzdCBzb21lIEVFRSBsaW5rIG1vZGVzIGFyZSBub3Qgc3VwcG9ydGVkLlxcblwmIzM0Oyk7XG4xNjg1Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE2ODY6XHRcdFx0XHR9XG4xNjg3Olx0XG4xNjg4Olx0XHRcdFx0bGlua21vZGVfYW5kbm90KHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZ19lZWUsIGFkdixcbjE2ODk6XHRcdFx0XHRcdFx0cGh5ZGV2LVx1MDAzZWVlZV9kaXNhYmxlZF9tb2Rlcyk7XG4xNjkwOlx0XHRcdH0gZWxzZSBpZiAobGlua21vZGVfZW1wdHkocGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nX2VlZSkpIHtcbjE2OTE6XHRcdFx0XHRwaHlfYWR2ZXJ0aXNlX2VlZV9hbGwocGh5ZGV2KTtcbjE2OTI6XHRcdFx0fVxuMTY5MzpcdFx0fVxuMTY5NDpcdFxuMTY5NTpcdFx0cmV0ID0gZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcocGh5ZGV2KTtcbjE2OTY6XHRcdGlmIChyZXQgXHUwMDNlIDApIHtcbjE2OTc6XHRcdFx0cmV0ID0gcGh5X3Jlc3RhcnRfYW5lZyhwaHlkZXYpO1xuMTY5ODpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTY5OTpcdFx0XHRcdHJldHVybiByZXQ7XG4xNzAwOlx0XG4xNzAxOlx0XHRcdC8qIGV4cGxpY2l0bHkgcmV0dXJuIDEsIG90aGVyd2lzZSAocmV0IFx1MDAzZSAwKSB2YWx1ZSB3aWxsIGJlXG4xNzAyOlx0XHRcdCAqIG92ZXJ3cml0dGVuIGJ5IHBoeV9yZXN0YXJ0X2FuZWcoKS5cbjE3MDM6XHRcdFx0ICovXG4xNzA0Olx0XHRcdHJldHVybiAxO1xuMTcwNTpcdFx0fVxuMTcwNjpcdFxuMTcwNzpcdFx0cmV0dXJuIHJldDtcbjE3MDg6XHR9XG4xNzA5Olx0RVhQT1JUX1NZTUJPTChnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZSk7XG4xNzEwOlx0XG4xNzExOlx0LyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MTUzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbDogYGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnYCoqCgpBbHJpZ2h0LCBzbyB0aGUgY29kZSBmbG93IGhhcyByZWFjaGVkIGEgY2FsbCB0byBgZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWdgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbiBhbmQgZGlzc2VjdCB0aGlzIGZ1bmN0aW9uLiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIEkmIzM5O20gYWxyZWFkeSBtYWtpbmcgc29tZSBlZHVjYXRlZCBndWVzc2VzLCBidXQgbGV0JiMzOTtzIGNvbmZpcm0gdGhlbS4gVGhlIGBnZW5waHlfYCBwcmVmaXggc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyByZWxhdGVkIHRvIGdlbmVyaWMgUEhZIChwaHlzaWNhbCBsYXllcikgb3BlcmF0aW9ucy4gVGhlICYjMzQ7QzQ1JiMzNDsgcGFydCBwcm9iYWJseSBpbmRpY2F0ZXMgdGhpcyBkZWFscyB3aXRoIENsYXVzZSA0NSByZWdpc3RlcnMsIG1lYW5pbmcgdGhpcyB3aWxsIGJlIGFuIE1ESU8gYmFzZWQgZnVuY3Rpb24uICYjMzQ7QU4mIzM0OyBpcyBhIG5vIGJyYWluZXIsIG1lYW5pbmcgaXQmIzM5O3MgbGlua2VkIHRvIGF1dG8tbmVnb3RpYXRpb24sIGFuZCAmIzM0O0VFRSYjMzQ7IHBvaW50cyB0byBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0LiBMYXN0bHksIHRoZSBgYW5lZ2Agc3VmZml4LCB3ZWxsLi4uIHRoYXQgbG9va3Mgc2VsZi1leHBsYW5hdG9yeSEKClNvLCB0aGUgaHlwb3RoZXNpcyBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCBjb25maWd1cmUgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCBhdXRvLW5lZ290aWF0aW9uLCBwcm9iYWJseSB1c2luZyB0aGUgTURJTyBpbnRlcmZhY2UuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbiBhbmQgaW1wbGVtZW50YXRpb24sIG1heWJlIGV2ZW4gdGhlIGZ1bmN0aW9uJiMzOTtzIHVzYWdlLCB0byBmdWxseSBncmFzcCBpdHMgcm9sZSB3aXRoaW4gdGhlIHdpZGVyIFBIWSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gVGhpcyB3aWxsIGhvcGVmdWxseSBjbGFyaWZ5IHRoZSBzcGVjaWZpYyByZWdpc3RlcnMgYmVpbmcgYWNjZXNzZWQsIHRoZSBuZWdvdGlhdGlvbiBwcm9jZXNzIGxvZ2ljLCBhbmQgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgaXQgaGFzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlci4gSSBleHBlY3QgdG8gc2VlIHJlZ2lzdGVyIHdyaXRlcyByZWxhdGVkIHRvIGFkdmVydGlzaW5nIEVFRSBjYXBhYmlsaXRpZXMgYW5kIG1heWJlIHJlYWRpbmcgYmFjayB0aGUgcmVzdWx0cyBvZiB0aGUgYXV0by1uZWdvdGlhdGlvbiBwcm9jZXNzLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyBFRUUgaXMgZW5hYmxlZCBhbmQgY29uZmlndXJlZCBvbiB0aGlzIHBhcnRpY3VsYXIgUEhZLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9MTE0ND1pbnQgYmNtX2NvbmZpZ19scmVfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGNoYW5nZWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMTE0Ny1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjExNDg6XHRpZiAoZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcocGh5ZGV2KSBcdTAwM2UgMClcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTExNDktXHRcdGNoYW5nZWQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM9MjY5PWludCBnZW5waHlfYzQ1X2FuX2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0yNzYtXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjI3NzpcdHJldCA9IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTI3OC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYz0xMDQ4PUVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNTAtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjEwNTE6ICogZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcgLSBjb25maWd1cmUgRUVFIGFkdmVydGlzZW1lbnRcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA1Mi0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA1My0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTA1NDppbnQgZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA1NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xMDcxLX1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTA3MjpFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNzMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYz0xNjcyPWludCBnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY5NC1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTY5NTpcdHJldCA9IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2OTYtXHRpZiAocmV0IFx1MDAzZSAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0yMzA5PWludCBfX2dlbnBoeV9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGNoYW5nZWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yMzE1LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoyMzE2Olx0ZXJyID0gZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjMxNy1cdGlmIChlcnIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NDIwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZ2AuCgoqKkRpdmluZyBpbnRvIGBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZ2AqKgoKQWxyaWdodCwgSSBzZWUgdGhpcyBpcyBhIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gY29uZmlndXJpbmcgYW5kIGhhbmRsaW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgYW5kIEF1dG8tTmVnb3RpYXRpb24gKEFOKSB1c2luZyBhIEM0NSBQSFkgaW50ZXJmYWNlLiBNeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBpbnZvbHZlIG1hbmlwdWxhdGluZyBzcGVjaWZpYyByZWdpc3RlcnMgd2l0aGluIHRoZSBQSFkgdG8gZW5hYmxlLCBkaXNhYmxlLCBhbmQgYWRqdXN0IEVFRSBzZXR0aW5ncywgbGlrZWx5IGluIGNvbmp1bmN0aW9uIHdpdGggQU4gc3RhdGVzLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgbG9naWMgZm9yIGFkdmVydGlzZW1lbnQgb2YgRUVFIGNhcGFiaWxpdGllcyBkdXJpbmcgQU4sIGFzIHdlbGwgYXMgdGhlIGFjdHVhbCBzd2l0Y2hpbmcgb2YgdGhlIFBIWSBpbnRvIGFuZCBvdXQgb2YgRUVFIG1vZGVzIGJhc2VkIG9uIHRoZSBsaW5rIHBhcnRuZXImIzM5O3MgcmVzcG9uc2VzLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGhhbmRsaW5nIG9mIGRpZmZlcmVudCBFRUUgZmxhdm9ycyAoaWYgYXBwbGljYWJsZSwgd2hpY2ggSSBzdXNwZWN0IGl0IGlzKSwgbGlrZSBMUEkgKExvdyBQb3dlciBJZGxlKSBhbmQgbWF5YmUgb3RoZXIgcG93ZXItc2F2aW5nIG1lY2hhbmlzbXMuIFRoZSBDNDUgaW50ZXJmYWNlIHN1Z2dlc3RzIHRoaXMgaXMgYSByZWxhdGl2ZWx5IG1vZGVybiBQSFksIGxpa2VseSB3aXRoIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGFuIGFuIG9sZGVyLCBzaW1wbGVyIGludGVyZmFjZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igcm9idXN0IGVycm9yIGhhbmRsaW5nLCBhcyBFRUUgY2FuIGJlIHNlbnNpdGl2ZSB0byB0aW1pbmcgYW5kIG1pc2NvbmZpZ3VyYXRpb24uIEkmIzM5O20gYWxzbyBob3BpbmcgZm9yIHNvbWUgY2xlYXIgc3RhdGUgbWFjaGluZSBsb2dpYyB3aXRoaW4gdGhpcyBmdW5jdGlvbiwgbWFraW5nIGl0IGVhc2llciB0byBmb2xsb3cgdGhlIHRyYW5zaXRpb25zIGJldHdlZW4gQU4gYW5kIEVFRSBzdGF0ZXMuIEkmIzM5O2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcywgZXNwZWNpYWxseSBpZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gYSBtdWx0aS10aHJlYWRlZCBlbnZpcm9ubWVudC4gVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gc2VlIGhvdyB0aGlzIGltcGxlbWVudGF0aW9uIGVuc3VyZXMgb3B0aW1hbCBwb3dlciBzYXZpbmdzIHdoaWxlIG1haW50YWluaW5nIGEgcmVsaWFibGUgbmV0d29yayBjb25uZWN0aW9uLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBkb25lLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwNTQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA1NDpcdGludCBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTA1NTpcdHtcbjEwNTY6XHRcdC8qIFdyaXRpbmcgTU1EIEFOIGFkdmVydGlzZW1lbnRzIHdoaWxlIGF1dG9uZWcgaXMgZGlzYWJsZWQgaGFzIG5vXG4xMDU3Olx0XHQgKiBlZmZlY3Qgb24gbGluay1wYXJ0bmVyIG5lZ290aWF0aW9uLCBidXQgb24gc29tZSBQSFlzIChlLmcuIHRoZVxuMTA1ODpcdFx0ICogQnJvYWRjb20gQkNNNTQyMTNQRSkgdGhlIHdyaXRlIGl0c2VsZiBkaXN0dXJicyB0aGUgcmVjZWl2ZVxuMTA1OTpcdFx0ICogZGF0YXBhdGguIFNraXAgaXQuXG4xMDYwOlx0XHQgKi9cbjEwNjE6XHRcdGlmIChwaHlkZXYtXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXG4xMDYyOlx0XHRcdHJldHVybiAwO1xuMTA2MzpcdFxuMTA2NDpcdFx0aWYgKCFwaHlkZXYtXHUwMDNlZWVlX2NmZy5lZWVfZW5hYmxlZCkge1xuMTA2NTpcdFx0XHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhhZHYpID0ge307XG4xMDY2Olx0XG4xMDY3Olx0XHRcdHJldHVybiBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYocGh5ZGV2LCBhZHYpO1xuMTA2ODpcdFx0fVxuMTA2OTpcdFxuMTA3MDpcdFx0cmV0dXJuIGdlbnBoeV9jNDVfd3JpdGVfZWVlX2FkdihwaHlkZXYsIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZ19lZWUpO1xuMTA3MTpcdH1cbjEwNzI6XHRFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyk7XG4xMDczOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MTg0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEVFRSBBZHZlcnRpc2VtZW50IFdyaXRlIENhbGwqKgoKT2theSwgSSBzZWUgdGhlIGNvZGUgaXMgY2FsbGluZyBgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2YC4gUmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiB0aGF0IGZ1bmN0aW9uIGNhbGwuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBnZW5waHlgIHByZWZpeC4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGdlbmVyaWMgUEhZIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHRoZSBDNDUgaW50ZXJmYWNlLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgaGFuZGxpbmcgdGhlIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgYWR2ZXJ0aXNlbWVudCByZWdpc3RlciB3cml0ZSBvcGVyYXRpb24uIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCBgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2YCBkb2VzLiBXaGF0IHBhcmFtZXRlcnMgaXMgaXQgdGFraW5nPyBXaGF0IHJlZ2lzdGVyIGFkZHJlc3NlcyBpcyBpdCB3cml0aW5nIHRvLCBhbmQgd2hhdCBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdOKAmXMgY29ycmVjdGx5IGZvcm1pbmcgdGhlIEVFRSBhZHZlcnRpc2VtZW50IGZyYW1lLCBlbnN1cmluZyB0aGUgcHJvcGVyIGJpdCBmaWVsZHMgYXJlIHNldCBhY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkIGFuZCB0aGUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciB0aGlzIHNwZWNpZmljIFBIWS4gSXMgdGhlcmUgYW55IHJlZ2lzdGVyIG1hc2tpbmcgaW52b2x2ZWQ/IEkgbmVlZCB0byBjaGVjayBmb3IgcG90ZW50aWFsIGVycm9yIGhhbmRsaW5nIGFuZCBpZiBpdCYjMzk7cyByZXR1cm5pbmcgYW55IHJlbGV2YW50IHN0YXR1cyBjb2Rlcy4gRmluYWxseSwgSeKAmWxsIG5lZWQgdG8gY3Jvc3MtcmVmZXJlbmNlIHRoaXMgd2l0aCB0aGUgcmVsZXZhbnQgUEhZIGRhdGFzaGVldCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2VucGh5X2M0NV93cml0ZV9lZWVfYWR2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTc5MT1FWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X3JlYWRfbWRpeCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy03OTMtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjc5NDogKiBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYgLSB3cml0ZSBhZHZlcnRpc2VkIEVFRSBsaW5rIG1vZGVzXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTc5NS0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTc5Ny0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6Nzk4OnN0YXRpYyBpbnQgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTc5OS1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nICphZHYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYz0xMDU0PWludCBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA2Ni1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTA2NzpcdFx0cmV0dXJuIGdlbnBoeV9jNDVfd3JpdGVfZWVlX2FkdihwaHlkZXYsIGFkdik7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNjgtXHR9XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNjktXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjEwNzA6XHRyZXR1cm4gZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2KHBoeWRldiwgcGh5ZGV2LVx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNzEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk0NgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQmIzM5O3MgZ29pbmcgdGhyb3VnaCBteSBtaW5kIGFzIEkgYXBwcm9hY2ggdGhpcyBgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2YCBmdW5jdGlvbi4KCioqQW5hbHl6aW5nIGdlbnBoeV9jNDVfd3JpdGVfZWVlX2FkdioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgYSBmZXcga2V5IHF1ZXN0aW9uczogV2hhdCYjMzk7cyB0aGUgY29udGV4dD8gV2hhdCYjMzk7cyB0aGUgbGFyZ2VyIHN5c3RlbSB0aGlzIGZ1bmN0aW9uIGZpdHMgaW50bz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0byBoYXZlIGFueSBjaGFuY2Ugb2YgZ3Jhc3BpbmcgaXRzIGlubmVyIHdvcmtpbmdzIGVmZmVjdGl2ZWx5LiBJJiMzOTttIGFzc3VtaW5nLCBnaXZlbiB0aGUgbmFtZSwgaXQgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBnZW5lcmF0aW9uIG9mIFBIWSBjb250cm9sIHNpZ25hbHMsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgYWR2ZXJ0aXNlbWVudCBvdmVyIGEgQzQ1IGludGVyZmFjZSwgbGlrZWx5IHRvIGEgUEhZIGRldmljZS4KCk5leHQsIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBQSFkgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZnVuY3Rpb25zLCBsaWtlIHRob3NlIHJlbGF0ZWQgdG8gcmVnaXN0ZXIgYWNjZXNzIChwcm9iYWJseSB1c2luZyBhbiBNRElPIGludGVyZmFjZSB2aWEgdGhlIEM0NSBjbGF1c2UpLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyB3cml0ZSBpcyBwYXJ0IG9mIGEgbGFyZ2VyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCBhIGR5bmFtaWMgY29uZmlndXJhdGlvbiBwcm9jZWR1cmUsIG9yIHBlcmhhcHMgYSByZXNwb25zZSB0byBzb21lIGV4dGVybmFsIGV2ZW50IG9yIHN0YXR1cyBjaGFuZ2UuCgpJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2UgcmVnaXN0ZXIgYWRkcmVzcyBkZWZpbml0aW9ucywgYml0ZmllbGQgbWFuaXB1bGF0aW9ucywgYW5kIHBlcmhhcHMgc29tZSBlcnJvciBjaGVja2luZy4gVGhlIHdheSB0aGUgRUVFIGFkdmVydGlzZW1lbnQgaXMgc3RydWN0dXJlZCBpbiB0aGUgQzQ1IHNwYWNlIGlzIHNvbWV0aGluZyBJJiMzOTtsbCB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCDigJMgZG9lcyBpdCB1c2UgYSBkZWZpbmVkIHNldCBvZiByZWdpc3RlcnMsIG9yIGFyZSB3ZSB3b3JraW5nIHdpdGggdmVuZG9yLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zPyBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgYnV0IEkmIzM5O3ZlIHNlZW4gZW5vdWdoIHZlbmRvciBxdWlya3MuCgpJ4oCZbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgZXJyb3IgY29uZGl0aW9ucyBhbmQgaG93IHRoZXkmIzM5O3JlIGhhbmRsZWQuIElmIGl0IGlzIGVycm9yIGhhbmRsaW5nLCBhcmUgdGhlcmUgYW55IHJldHJ5IG1lY2hhbmlzbXMsIG9yIGRvZXMgaXQgc2ltcGx5IHJldHVybiBhbiBlcnJvciBjb2RlPyBBIHdlbGwtd3JpdHRlbiBQSFkgZHJpdmVyIHVzdWFsbHkgaW5jbHVkZXMgc29tZSByZXNpbGllbmNlLgoKRmluYWxseSwgYSBxdWljayBnbGFuY2UgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgbWlnaHQgYmUgbmVlZGVkIHRvIHNlZSBpZiBpdCBtYWtlcyBjYWxscyB0byBhbnkgbG9nZ2luZyBvciBkZWJ1ZyBmYWNpbGl0aWVzLiBUaGlzIGNhbiBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kIGluIGEgZGVidWdnaW5nIHNpdHVhdGlvbi4gUmlnaHQgbm93LCBJIHdpbGwgc3RhcnQgdG8gZGlzc2VjdCB0aGUgY29kZSBhbmQgYnVpbGQgYSBtZW50YWwgbW9kZWwgb2YgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCB0aGUgc29mdHdhcmUgZHJpdmVyLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O20gcmVhZHkgdG8gZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc5OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzk4Olx0c3RhdGljIGludCBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiA3OTk6XHRcdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nICphZHYpXG4gODAwOlx0e1xuIDgwMTpcdFx0aW50IHZhbCwgY2hhbmdlZCA9IDA7XG4gODAyOlx0XG4gODAzOlx0XHRpZiAobGlua21vZGVfaW50ZXJzZWN0cyhwaHlkZXYtXHUwMDNlc3VwcG9ydGVkX2VlZSwgUEhZX0VFRV9DQVAxX0ZFQVRVUkVTKSkge1xuIDgwNDpcdFx0XHR2YWwgPSBsaW5rbW9kZV90b19taWlfZWVlX2NhcDFfdChhZHYpO1xuIDgwNTpcdFxuIDgwNjpcdFx0XHQvKiBJRUVFIDgwMi4zLTIwMTggNDUuMi43LjEzIEVFRSBhZHZlcnRpc2VtZW50IDFcbiA4MDc6XHRcdFx0ICogKFJlZ2lzdGVyIDcuNjApXG4gODA4Olx0XHRcdCAqL1xuIDgwOTpcdFx0XHR2YWwgPSBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfQU4sXG4gODEwOlx0XHRcdFx0XHRcdCAgICAgTURJT19BTl9FRUVfQURWLFxuIDgxMTpcdFx0XHRcdFx0XHQgICAgIE1ESU9fRUVFXzEwMFRYIHwgTURJT19FRUVfMTAwMFQgfFxuIDgxMjpcdFx0XHRcdFx0XHQgICAgIE1ESU9fRUVFXzEwR1QgfCBNRElPX0VFRV8xMDAwS1ggfFxuIDgxMzpcdFx0XHRcdFx0XHQgICAgIE1ESU9fRUVFXzEwR0tYNCB8IE1ESU9fRUVFXzEwR0tSLFxuIDgxNDpcdFx0XHRcdFx0XHQgICAgIHZhbCk7XG4gODE1Olx0XHRcdGlmICh2YWwgXHUwMDNjIDApXG4gODE2Olx0XHRcdFx0cmV0dXJuIHZhbDtcbiA4MTc6XHRcdFx0aWYgKHZhbCBcdTAwM2UgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk4NTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHdlbnQgbGlrZSB0aGlzOiB0aGUgY29kZSBwYXRoIGludm9sdmVzIGBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkYCwgd2hpY2ggaXMgYSB3cmFwcGVyIGNhbGxpbmcgYm90aCBgcGh5X3JlYWRfbW1kYCBhbmQgYHBoeV93cml0ZV9tbWRgLiBUaGUgYHBoeV93cml0ZV9tbWRgIGZ1bmN0aW9uIHRoZW4gdWx0aW1hdGVseSBjYWxscyBgcGh5ZGV2LSZndDtkcnYtJmd0O3dyaXRlX21tZGAuIFNvLCBsb2dpY2FsbHksIGBydGxnZW5fd3JpdGVfbW1kYCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb24gdGhhdCYjMzk7cyBiZWluZyBpbnZva2VkIHNvbWV3aGVyZSBkb3duIHRoZSBsaW5lLCBhcyBpdCBpcyByZWxhdGVkIHRvIHRoaXMgcGh5IGRyaXZlci4KCk5vdywgdGhlIHBhdGNoIGl0c2VsZi4gSSBzZWUgYSBjb25kaXRpb25hbCBibG9jazogV2hlbiBgZGV2bnVtYCBpcyBgTURJT19NTURfVkVORDJgLCB0aGUgcGF0Y2ggY2FsbHMgYHJ0bGdlbl93cml0ZV92ZW5kMmAgd2hpY2ggaXMgdGhlIGNvcnJlY3QgYmVoYXZpb3IuIE5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlICYjMzQ7ZWxzZSBpZiYjMzQ7IHN0YXRlbWVudC4KClRoZSBjcnVjaWFsIGNoYW5nZSBpcyBoZXJlLCB3aXRoaW4gdGhlIGBNRElPX01NRF9BTmAgYW5kIGBNRElPX0FOX0VFRV9BRFZgIGNvbmRpdGlvbi4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHBhc3NpbmcgYHJlZ251bWAgKHdoaWNoIGlzIGBNRElPX0FOX0VFRV9BRFZgLCBvciA2MCBJSVJDKSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LCBhbmQgYFJUTF9NRElPX0FOX0VFRV9BRFZgIChhIGNvbnN0YW50IHZhbHVlKSBhcyB0aGUgdGhpcmQgYXJndW1lbnQgdG8gYHJ0bGdlbl93cml0ZV92ZW5kMmAuCgpIb3dldmVyLCBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCBjbGVhcmx5IGV4cGVjdHMgYHJlZ251bWAgYW5kIGB2YWxgIGFzIGl0cyBzZWNvbmQgYW5kIHRoaXJkIGFyZ3VtZW50LiBUaGVyZWZvcmUsIHRoZSBvbGQgY29kZSB3YXMgbWlzdGFrZW5seSB3cml0aW5nIHRoZSBjb25zdGFudCBgUlRMX01ESU9fQU5fRUVFX0FEVmAgdG8gdGhlIHJlZ2lzdGVyIGFkZHJlc3MgYE1ESU9fQU5fRUVFX0FEVmAgKDYwKSwgd2hpY2ggZG9lc24mIzM5O3Qgc2VlbSByaWdodC4gVGhlIHBhdGNoIG5vdyBzd2FwcyB0aGVzZSB0d28gYXJndW1lbnRzLCBwYXNzaW5nIGB2YWxgIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgYW5kIGB2YWxgIGFzIHRoZSB0aGlyZCBhcmd1bWVudCB0byB0aGUgZnVuY3Rpb24uIFRoaXMgaXMgbW9yZSBpbiBsaW5lIHdpdGggd2hhdCBJJiMzOTtkIGV4cGVjdC4gTm93IGl0JiMzOTtzIHdyaXRpbmcgYHZhbGAgKHRoZSB2YWx1ZSB3ZSB3YW50IHRvIHNldCkgdG8gYFJUTF9NRElPX0FOX0VFRV9BRFZgLiBUaGF0JiMzOTtzIGEgdmVuZG9yLXNwZWNpZmljIHJlZ2lzdGVyLCBsaWtlbHkgcmVsYXRlZCB0byBFRUUgKEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQpIGFkdmVydGlzZW1lbnQuIE5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSB2YWx1ZSBvZiBgUlRMX01ESU9fQU5fRUVFX0FEVmAgdG8gY29uZmlybSBteSBzdXNwaWNpb24uLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMX01ESU9fQU5fRUVFX0FEViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNDMtI2RlZmluZVx0UlRMX01ESU9fUENTX0VFRV9BQkxFXHRcdFx0MHhhNWM0XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNDQ6I2RlZmluZVx0UlRMX01ESU9fQU5fRUVFX0FEVlx0XHRcdDB4YTVkMFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjQ1LSNkZWZpbmVcdFJUTF9NRElPX0FOX0VFRV9MUEFCTEVcdFx0XHQweGE1ZDJcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNDktI2RlZmluZVx0UlRMX01ESU9fQU5fRUVFX0xQQUJMRTJcdFx0XHQweGE2ZDBcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI1MDojZGVmaW5lXHRSVExfTURJT19BTl9FRUVfQURWMlx0XHRcdDB4YTZkNFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjUxLSNkZWZpbmVcdFJUTF9NRElPX1BDU19FRUVfQUJMRTJcdFx0XHQweGE2ZWNcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzQ1PXN0YXRpYyBpbnQgcnRsZ2VuX3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc1My1cdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcdTAwMjZcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3NTQ6XHRcdHJldCA9IHJ0bGdlbl9yZWFkX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEVik7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzU1LVx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfTFBBQkxFKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3NjM9c3RhdGljIGludCBydGxnZW5fd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc3MC1cdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcdTAwMjZcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3NzE6XHRcdHJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzcyLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3Nzg9c3RhdGljIGludCBydGw4MjJ4X3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc4Ny1cdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcdTAwMjZcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVjIpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzg4Olx0XHRyZXQgPSBydGxnZW5fcmVhZF92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYyKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3ODktXHRlbHNlIGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9MUEFCTEUyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3OTU9c3RhdGljIGludCBydGw4MjJ4X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE4MDMtXHRpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWMilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE4MDQ6XHRcdHJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYyLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE3NjkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRnVuY3Rpb25hbCBDaGFuZ2UgaW4gdGhlIFJlYWx0ZWsgUEhZIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBSZWFsdGVrIFBIWSBkcml2ZXIgY2hhbmdlLiBUaGUgY3J1eCBvZiBpdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHdyaXRpbmcgYSBzcGVjaWZpYyB2YWx1ZSwgYDB4YTVkMGAsIHRvIGEgcmVnaXN0ZXIuIFByZXZpb3VzbHksIHRoZSBjb2RlIHdhcyBleHBsaWNpdGx5IHdyaXRpbmcgdGhpcyB2YWx1ZSB0byByZWdpc3RlciA2MCAoYE1ESU9fQU5fRUVFX0FEVmApLiBOb3csIGhvd2V2ZXIsIHRoZSBuZXcgY29kZSBpcyB3cml0aW5nIGB2YWxgIHRvIHJlZ2lzdGVyIGAweGE1ZDBgIGRpcmVjdGx5LiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBpdCYjMzk7cyBubyBsb25nZXIgYSBoYXJkY29kZWQgdmFsdWUuCgpUaGlzIGNoYW5nZSBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZS4gSSBjYW4gZ2V0IHRvIGl0IHRocm91Z2ggdGhlIGBTSU9DU01JSVJFR2AgaW9jdGwgaWYgSSYjMzk7bSB1c2luZyBDNDUgTURJTyBhY2Nlc3MgdG8gd3JpdGUgdG8gYE1ESU9fTU1EX0FOYCBhbmQgYE1ESU9fQU5fRUVFX0FEVmAuIE9yLCBJIGNhbiByZWFjaCBpdCB0aHJvdWdoIGBFVEhUT09MX1NFRUVgLCB3aGljaCB0aGVuIGNhbGxzIGEgd2hvbGUgY2hhaW4gb2YgZnVuY3Rpb25zOiBgcGh5X2V0aHRvb2xfc2V0X2VlZWAgLSZndDsgYGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlYCAtJmd0OyBgZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWdgIC0mZ3Q7IGBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZgIC0mZ3Q7IGBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkYCAtJmd0OyBgcGh5X3dyaXRlX21tZGAgLSZndDsgYHJ0bGdlbl93cml0ZV9tbWRgLgoKVGhlIGJpZyBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8gQWJzb2x1dGVseSwgeWVzISBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIHRoYXQgYWx3YXlzIHJhaXNlcyBhIGZsYWcuCgpDYW4gSSB0cmlnZ2VyIHRoaXMgaW4gUUVNVT8gU3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIGBTSU9DU01JSVJFR2AgYW5kIGBFVEhUT09MX1NFRUVgIGFuZCBjYW4gaW5zdGFudGlhdGUgdmlydHVhbCBuZXR3b3JrIGRldmljZXMgd2l0aCBQSFlzISBJIGNvdWxkIHRyeSB1c2luZyBgdHVuYC9gdmV0aGAsIGB2aGNpYCwgb3IgZXZlbiBgbmV0ZGV2c2ltYCB0byBzZXQgaXQgdXAuIEhvbGQgb24uLi4gd2FpdCwgYG5ldGRldnNpbWAgZG9lc24mIzM5O3QgdXNlIHJlYWx0ZWsgUEhZcywgdGhhdCYjMzk7cyByaWdodC4gSG93ZXZlciwgc3l6a2FsbGVyICpjYW4qIGZ1enogTURJTyBidXNlcyBkaXJlY3RseSBhcyBsb25nIGFzIGl0IGhhcyBhIHdheSB0byByZWdpc3RlciBhIFBIWS4gSXQgbG9va3MgbGlrZSBzeXprYWxsZXIgY2FuIHRyaWdnZXIgYFNJT0NTTUlJUkVHYCBvbiAqYW55KiBuZXRkZXYuIElmIHRoZXJlJiMzOTtzIGEgUEhZIGF0dGFjaGVkLCBpdCYjMzk7bGwgcmVhY2ggdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWQuIFRvIGhpdCBgcnRsZ2VuX3dyaXRlX21tZGAgaW4gcGFydGljdWxhciwgSSBhYnNvbHV0ZWx5IG5lZWQgYSBSZWFsdGVrIFBIWSBhdHRhY2hlZC4KCkNhbiBJIGdldCBhIFJlYWx0ZWsgUEhZIGF0dGFjaGVkIHdpdGggc3l6a2FsbGVyPyBJZiBJIHVzZSBgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG9yIGlmIGEgdmlydHVhbCBkZXZpY2UgYWxsb3dzIGF0dGFjaGluZyBhcmJpdHJhcnkgUEhZcywgSSBzaG91bGQgYmUgYWJsZSB0by4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfUkVBTFRFS19QSFlgIGlzIGVuYWJsZWQuCgpSaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIGlmIGBDT05GSUdfUkVBTFRFS19QSFlgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQuIExvb2tzIGxpa2UgaXQgaXMgLSBpdCYjMzk7cyB0aGUgbW9kdWxlIGZvciBSZWFsdGVrIFBIWXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMuIExvb2tpbmcgYWdhaW4sIGBDT05GSUdfUEhZTElCYCBpcyByZXF1aXJlZCwgYnV0IHRoYXQmIzM5O3MgdXN1YWxseSBlbmFibGVkIHNvIEkgc2hvdWxkIGJlIGdvb2QuCgpMZXQmIzM5O3MgY2hlY2sgYEZvY3VzU3ltYm9sc2AgdG8gYmUgc3VyZS4gSXQgbG9va3MgbGlrZSBgcnRsZ2VuX3dyaXRlX21tZGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCwgc28gdGhhdCYjMzk7cyB0aGUgZm9jdXMgc3ltYm9sLiBgcnRsODIyeF93cml0ZV9tbWRgIGNhbGxzIGBydGxnZW5fd3JpdGVfbW1kYCwgc28gYHJ0bGdlbl93cml0ZV9tbWRgIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4KCkkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBgcnRsZ2VuX3dyaXRlX21tZGAgaW4gYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYCBqdXN0IHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzYzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3NjM6XHRzdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcbjE3NjQ6XHRcdFx0XHQgICAgdTE2IHZhbClcbjE3NjU6XHR7XG4xNzY2Olx0XHRpbnQgcmV0O1xuMTc2NzpcdFxuMTc2ODpcdFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9WRU5EMilcbjE3Njk6XHRcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCB2YWwpO1xuMTc3MDpcdFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxuMTc3MTpcdFx0XHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpO1xuMTc3MjpcdFx0ZWxzZVxuMTc3MzpcdFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbjE3NzQ6XHRcbjE3NzU6XHRcdHJldHVybiByZXQ7XG4xNzc2Olx0fVxuMTc3NzpcdFxuMTc3ODpcdHN0YXRpYyBpbnQgcnRsODIyeF9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtKVxuMTc3OTpcdHtcbjE3ODA6XHRcdGludCByZXQgPSBydGxnZW5fcmVhZF9tbWQocGh5ZGV2LCBkZXZudW0sIHJlZ251bSk7XG4xNzgxOlx0XG4xNzgyOlx0XHRpZiAocmV0ICE9IC1FT1BOT1RTVVBQKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzYyMAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBydGxnZW5fd3JpdGVfbW1kYCBGdW5jdGlvbiBmb3IgRnV6emluZyBhbmQgU3ltYm9sIFZpc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHJ0bGdlbl93cml0ZV9tbWRgIGZ1bmN0aW9uLiBJdCYjMzk7cyBtYXJrZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGluaXRpYWxseSBtYWtlcyBtZSB0aGluayBmdXp6aW5nIG1pZ2h0IGJlIHRyaWNreS4gSG93ZXZlciwgSSByZWFsaXplIHRoYXQgc3l6a2FsbGVyICpjYW4qIGFjdHVhbGx5IHJlYWNoIGl0IHRocm91Z2ggYHBoeV93cml0ZV9tbWRgLCB3aGljaCBpcyBhbiBleHBvcnRlZCBzeW1ib2wuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LgoKTm93LCBjb25zaWRlcmluZyBgRm9jdXNTeW1ib2xzYCwgSSBoYXZlIHRvIG1ha2Ugc3VyZSBgcnRsZ2VuX3dyaXRlX21tZGAgaXMgZXhwbGljaXRseSBwcm92aWRlZCwgZXNwZWNpYWxseSBpZiBpdCYjMzk7cyBub3QgaW5saW5lZC4gQW5kIEkgdGhpbmsgdGhhdCYjMzk7cyB1bmxpa2VseTsgaXQmIzM5O3MgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYHJlYWx0ZWtfZHJ2c2A6CgpgYGBjCgkJLndyaXRlX21tZAk9IHJ0bGdlbl93cml0ZV9tbWQsCmBgYAoKR2l2ZW4gaXQmIzM5O3MgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZXJlJiMzOTtzIG5vIHdheSB0aGUgY29tcGlsZXIgY2FuIGlubGluZSBpdC4gVGhhdCBjb25maXJtcyBpdCwgYHJ0bGdlbl93cml0ZV9tbWRgICppcyogYSB2YWxpZCBzeW1ib2wgdGhhdCBzaG91bGQgYmUgdmlzaWJsZS4KCkxldCYjMzk7cyBub3Qgc3RvcCB0aGVyZSwgdGhvdWdoLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIGZhbWlseS4gQWhhLCBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCBpcyBjYWxsZWQuIFRoYXQgc291bmRzIGxpa2UgYW5vdGhlciBpbnRlcmVzdGluZyBvbmUgdG8gbG9vayBhdCBhbmQgc2VlIGlmIGl0JiMzOTtzIGZ1enphYmxlIGFuZC9vciBpZiBpdCBuZWVkcyBzcGVjaWFsIGF0dGVudGlvbiBmb3Igc3ltYm9sIHZpc2liaWxpdHkgYXMgd2VsbC4gTGV0IG1lIGludmVzdGlnYXRlIGBydGxnZW5fd3JpdGVfdmVuZDJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGxnZW5fd3JpdGVfdmVuZDImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTczND1zdGF0aWMgaW50IHJ0bGdlbl9yZWFkX3ZlbmQyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTczOC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3Mzk6c3RhdGljIGludCBydGxnZW5fd3JpdGVfdmVuZDIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHJlZ251bSwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NDAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3NjM9c3RhdGljIGludCBydGxnZW5fd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc2OC1cdGlmIChkZXZudW0gPT0gTURJT19NTURfVkVORDIpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzY5Olx0XHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzcwLVx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTc3MTpcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEViwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NzItXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc5NT1zdGF0aWMgaW50IHJ0bDgyMnhfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwMy1cdGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYyKVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTgwNDpcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEVjIsIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xODA1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDcxNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiB0aGUgUmVhbHRlayBQSFkgRHJpdmVyKioKCk9rYXksIHNvIGBydGxnZW5fd3JpdGVfdmVuZDJgIGlzIGFsc28gZGVjbGFyZWQgc3RhdGljLCBtYWtpbmcgaW5saW5pbmcgYSByZWFsIHBvc3NpYmlsaXR5LiBUaGF0IHRocm93cyBhIHdyZW5jaCBpbiB0aGUgd29ya3MuIEJldHRlciB0byB0YXJnZXQgYHJ0bGdlbl93cml0ZV9tbWRgIHRoZW47IGl0JiMzOTtzIGxlc3MgbGlrZWx5IHRvIGJlIG9wdGltaXplZCBhd2F5IGFuZCBtb3JlIGNsZWFybHkgcmVwcmVzZW50cyB0aGUgY29yZSBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudC4gYENPTkZJR19SRUFMVEVLX1BIWWAgaXMgdGhlIGJpZyBvbmUsIG9mIGNvdXJzZS4gQnV0IGFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyPyBSaWdodCwgYENPTkZJR19QSFlMSUJgIGlzICpyZXF1aXJlZCogYnkgYENPTkZJR19SRUFMVEVLX1BIWWAsIHRoYXQgc2VlbXMgaW1wb3J0YW50LiBUaW1lIHRvIHJldmlzaXQgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBhZ2FpbiB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSRUFMVEVLX1BIWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoyOmNvbmZpZyBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBQSFlzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZz04PWlmIFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjEwOmNvbmZpZyBSRUFMVEVLX1BIWV9IV01PTlxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7SFdNT04gc3VwcG9ydCBmb3IgUmVhbHRlayBQSFlzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjA4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgVmVyaWZpY2F0aW9uIG9mIENvbnRyb2wgRmxvdyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGZvY3VzaW5nIG9uIHRoaXMgYFJFQUxURUtfUEhZYCBkcml2ZXIgb3IgbW9kdWxlLCBzcGVjaWZpY2FsbHkuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdGhlIG9ubHkgb25lIGluIHRoZSBydW5uaW5nLiBOb3csIGJlZm9yZSBJIGp1bXAgdG8gYW55IGNvbmNsdXNpb25zLCBJIG5lZWQgdG8gdHJhY2UgdGhpcyBjb250cm9sIGZsb3cgcHJvcGVybHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zLiBIYW5nIG9uLCBpcyBgcnRsZ2VuX3dyaXRlX21tZGAgYWN0dWFsbHkgY2FsbGVkIGZyb20gYHJ0bDgyMnhfd3JpdGVfbW1kYD8gTGV0JiMzOTtzIGNoZWNrIGl0LCBxdWlja2x5LiBBaGEhIFllcywgZ29vZC4gYHJ0bDgyMnhfd3JpdGVfbW1kYCBkb2VzIGluZGVlZCBjYWxsIGBydGxnZW5fd3JpdGVfbW1kYC4gT2theSwgdGhhdCYjMzk7cyBjcnVjaWFsLiBOb3csIHNpbmNlIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHJlbGF0aW9uc2hpcCwgSSYjMzk7bSBnb2luZyB0byB0dXJuIG15IGF0dGVudGlvbiB0byBzY3J1dGluaXppbmcgYHJ0bDgyMnhfd3JpdGVfbW1kYCBpdHNlbGYuIFRoYXQgZnVuY3Rpb24gaXMgd2hlcmUgdGhlIGFjdGlvbiBpcyBzdGFydGluZy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgcHJlY2lzZWx5IHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgbG93ZXIgbGV2ZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3OTU6XHRzdGF0aWMgaW50IHJ0bDgyMnhfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG4xNzk2Olx0XHRcdFx0ICAgICB1MTYgdmFsKVxuMTc5NzpcdHtcbjE3OTg6XHRcdGludCByZXQgPSBydGxnZW5fd3JpdGVfbW1kKHBoeWRldiwgZGV2bnVtLCByZWdudW0sIHZhbCk7XG4xNzk5Olx0XG4xODAwOlx0XHRpZiAocmV0ICE9IC1FT1BOT1RTVVBQKVxuMTgwMTpcdFx0XHRyZXR1cm4gcmV0O1xuMTgwMjpcdFxuMTgwMzpcdFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcdTAwMjZcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVjIpXG4xODA0Olx0XHRcdHJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYyLCB2YWwpO1xuMTgwNTpcdFxuMTgwNjpcdFx0cmV0dXJuIHJldDtcbjE4MDc6XHR9XG4xODA4Olx0XG4xODA5Olx0c3RhdGljIGludCBydGw4MjJ4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4xODEwOlx0e1xuMTgxMTpcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1JFQUxURUtfUEhZX0hXTU9OKSBcdTAwMjZcdTAwMjZcbjE4MTI6XHRcdCAgICBwaHlkZXYtXHUwMDNlcGh5X2lkICE9IFJUTF9HRU5FUklDX1BIWUlEKVxuMTgxMzpcdFx0XHRyZXR1cm4gcnRsODIyeF9od21vbl9pbml0KHBoeWRldik7XG4xODE0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1OTE1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gUEhZIERyaXZlciBBbmFseXNpcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gem9vbSBpbiBvbiBob3cgdGhlc2UgUmVhbHRlayBQSFlzIGFyZSBiZWluZyBjb25maWd1cmVkLCBzbyBgcnRsODIyeF93cml0ZV9tbWRgIGxvb2tzIGxpa2UgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZC4gSXQmIzM5O3MgY2FsbGluZyB0byBtZSBhcyBhIHBvdGVudGlhbCBmb2N1cyBzeW1ib2wuIEl0JiMzOTtzIGJlZW4gYnJvdWdodCB1cCBtdWx0aXBsZSB0aW1lcyBhcyBhIHBvdGVudGlhbCBlbnRyeSBwb2ludCBmb3IgdGhpcyB0YXNrLgoKTm93LCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJyb2FkZXIgcGljdHVyZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2l0aGluIGByZWFsdGVrX2RydnNgIHRvIHNlZSB0aGUgcmVsZXZhbnQgUEhZcy4gSSB3YW50IHRvIGlkZW50aWZ5IHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgZWl0aGVyIGBydGxnZW5fd3JpdGVfbW1kYCBvciwgbW9yZSBzcGVjaWZpY2FsbHksIGBydGw4MjJ4X3dyaXRlX21tZGAuIFRoZSBhaW0gaXMgdG8gbWFwIHRoZSBmdW5jdGlvbiB0byBhIG1vZHVsZS4gSSBhbSBob3BpbmcgdG8gZ2V0IG1vcmUgY29udGV4dCBhbmQgdXNlIGBydGw4MjJ4X3dyaXRlX21tZGAgYXMgYSBzdGFydGluZyBwb2ludC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgZm9yIHRyYWNpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcmVnaXN0ZXIgYWNjZXNzIHBhdHRlcm5zIGluIHRoZXNlIFJlYWx0ZWsgUEhZIGltcGxlbWVudGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d3JpdGVfbW1kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9Mzg4PXN0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zOTktXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo0MDA6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9BRERSX1JFRyxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQwMS1cdFx0XHQgICAgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NjIwPXN0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MjgtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2Mjk6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTkVSLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjMwLVx0XHRcdFx0ICAgIFJUTDgyNjFYX0lOVF9NQVNLX0RFRkFVTFQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYzMy1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2MzQ6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTkVSLCAwKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYzNS1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzQ1PXN0YXRpYyBpbnQgcnRsZ2VuX3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc2Mi1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3NjM6c3RhdGljIGludCBydGxnZW5fd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzY0LVx0XHRcdCAgICB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3Nzg9c3RhdGljIGludCBydGw4MjJ4X3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5NC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3OTU6c3RhdGljIGludCBydGw4MjJ4X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5Ni1cdFx0XHQgICAgIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzk3LXtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3OTg6XHRpbnQgcmV0ID0gcnRsZ2VuX3dyaXRlX21tZChwaHlkZXYsIGRldm51bSwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5OS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xODIyPXN0YXRpYyBpbnQgcnRsODIyeGJfcmVhZF9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZylcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xODYwLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTg2MTpzdGF0aWMgaW50IHJ0bDgyMnhiX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTg2Mi1cdFx0XHQgICAgICB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE5NDE9c3RhdGljIGludCBydGw4MjI2X3BhdGNoX21kaV9zd2FwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgc3dhcF9lbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTk5MS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE5OTI6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyNl9WTkQyX0FEQ0NBTF9PRkZTRVQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xOTkzLVx0XHRcdFx0ICAgIGFkY2NhbF9vZmZzZXRbMyAtIGldKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMDM5PXN0YXRpYyBpbnQgcnRsODIyeF9zZXRfc2VyZGVzX29wdGlvbl9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZ2VuMSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDc1LVx0aWYgKCFnZW4xKSB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMDc2Olx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIDB4NzVmMywgMCk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDc3LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIwODctXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMDg4Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCAweDZhMDQsIDB4MDUwMyk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDg5LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDkxLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjA5MjpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgMHg2ZjEwLCAweGQ0NTUpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA5My1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA5NS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIwOTY6XHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCAweDZmMTEsIDB4ODAyMCk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDk3LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMTA5PXN0YXRpYyBpbnQgcnRsODIyeF9zZXJkZXNfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMTEyLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjExMzpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgUlRMODIyWF9WTkQxX1NFUkRFU19BRERSLCByZWcpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjExNC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjExNi1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIxMTc6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFJUTDgyMlhfVk5EMV9TRVJERVNfREFUQSwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIxMTgtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIxMjAtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMTIxOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBSVEw4MjJYX1ZORDFfU0VSREVTX0NNRCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIxMjItXHRcdFx0ICAgIFJUTDgyMlhfVk5EMV9TRVJERVNfQ01EX1dSSVRFIHxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMzY5PXN0YXRpYyBpbnQgcnRsODIyeGJfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIzNzctXHQvKiBjbGVhciBIVyBMRUQgc2V0dXAgKi9cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIzNzg6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMzc5LVx0XHRcdCAgICBSVEw4MjJYX1ZORDJfTEVEKGluZGV4KSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MjQ2OT1zdGF0aWMgaW50IHJ0bDgyMnhiX2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNDk0LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjQ5NTpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI0OTYtXHRcdFx0ICAgIFJUTDgyMlhfVk5EMl9MRUQoaW5kZXgpLCB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTI1NDE9c3RhdGljIGludCBydGw4MjI0X3NyYW1fcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgcmVnKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI1NDQtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNTQ1Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjU0Ni1cdFx0XHQgICAgUlRMODIyWF9WTkQyX0MyMl9SRUcoUlRMODIyNF9NSUlfU1JBTV9BRERSKSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yNjc2PXN0YXRpYyBpbnQgcnRsODIyNF9wYWNrYWdlX21vZGlmeV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldmFkLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2OTEtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNjkyOlx0cmV0ID0gX19waHlfcGFja2FnZV93cml0ZV9tbWQocGh5ZGV2LCAwLCBkZXZhZCwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjY5My1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zMDA5PXN0YXRpYyBpbnQgcnRsODIyMWJfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMDE3LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzAxODpcdFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lORVIsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMDE5LVx0XHRcdFx0ICAgIFJUTDgyMjFCX1ZORDJfSU5FUl9MSU5LX1NUQVRVUyk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMDIwLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMwMjE6XHRcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMwMjItXHRcdFx0XHQgICAgUlRMODIyMUJfVk5EMl9JTkVSLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zMDg2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMTA0LVx0XHQucmVhZF9tbWRcdD0gZ2VucGh5X3JlYWRfbW1kX3Vuc3VwcG9ydGVkLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzEwNTpcdFx0LndyaXRlX21tZFx0PSBnZW5waHlfd3JpdGVfbW1kX3Vuc3VwcG9ydGVkLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEwNi1cdFx0LnN1c3BlbmRcdD0gZ2VucGh5X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzExNC1cdFx0LnJlYWRfbW1kXHQ9IFx1MDAyNmdlbnBoeV9yZWFkX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMxMTU6XHRcdC53cml0ZV9tbWRcdD0gXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMTYtXHRcdC5yZWFkX3BhZ2VcdD0gcnRsODIxeF9yZWFkX3BhZ2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEyMy1cdFx0LnJlYWRfbW1kXHQ9IFx1MDAyNmdlbnBoeV9yZWFkX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMxMjQ6XHRcdC53cml0ZV9tbWRcdD0gXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMjUtXHRcdC5zdXNwZW5kXHQ9IHJ0bDgyMTFiX3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEzMy1cdFx0LnJlYWRfbW1kXHQ9IFx1MDAyNmdlbnBoeV9yZWFkX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMxMzQ6XHRcdC53cml0ZV9tbWRcdD0gXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMzUtXHRcdC5yZWFkX3BhZ2VcdD0gcnRsODIxeF9yZWFkX3BhZ2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwMy1cdFx0LnJlYWRfbW1kXHQ9IHJ0bGdlbl9yZWFkX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMyMDQ6XHRcdC53cml0ZV9tbWRcdD0gcnRsZ2VuX3dyaXRlX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMyMDUtXHR9LCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIxNS1cdFx0LnJlYWRfbW1kXHQ9IHJ0bDgyMnhiX3JlYWRfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIxNjpcdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjE3LVx0fSwge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMyMzEtXHRcdC5yZWFkX21tZFx0PSBydGw4MjJ4Yl9yZWFkX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMyMzI6XHRcdC53cml0ZV9tbWRcdD0gcnRsODIyeGJfd3JpdGVfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIzMy1cdH0sIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjQ2LVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeGJfcmVhZF9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMjQ3Olx0XHQud3JpdGVfbW1kXHQ9IHJ0bDgyMnhiX3dyaXRlX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMyNDgtXHR9LCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzI2Mi1cdFx0LnJlYWRfbW1kXHQ9IHJ0bDgyMnhiX3JlYWRfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzI2MzpcdFx0LndyaXRlX21tZFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjY0LVx0fSwge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMyODEtXHRcdC5yZWFkX21tZFx0PSBydGw4MjJ4Yl9yZWFkX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMyODI6XHRcdC53cml0ZV9tbWRcdD0gcnRsODIyeGJfd3JpdGVfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzI4My1cdFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IHJ0bDgyMnhiX2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMzA0LVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeGJfcmVhZF9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzA1Olx0XHQud3JpdGVfbW1kXHQ9IHJ0bDgyMnhiX3dyaXRlX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMzMDYtXHRcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBydGw4MjJ4Yl9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzMzMy1cdFx0LnJlYWRfbW1kXHQ9IHJ0bDgyMnhfcmVhZF9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzM0Olx0XHQud3JpdGVfbW1kXHQ9IHJ0bDgyMnhfd3JpdGVfbW1kLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzMzNS1cdH0sIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMzQ3LVx0XHQucmVhZF9tbWRcdD0gcnRsODIyeF9yZWFkX21tZCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNDg6XHRcdC53cml0ZV9tbWRcdD0gcnRsODIyeF93cml0ZV9tbWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMzQ5LVx0fSwge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM0MDEtXHRcdC5yZWFkX21tZFx0PSBnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozNDAyOlx0XHQud3JpdGVfbW1kXHQ9IGdlbnBoeV93cml0ZV9tbWRfdW5zdXBwb3J0ZWQsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zNDAzLVx0fSwge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDkxOAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIGAud3JpdGVfbW1kYCBJbXBsZW1lbnRhdGlvbnMqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBgLndyaXRlX21tZGAgZnVuY3Rpb25zOiBgcnRsZ2VuX3dyaXRlX21tZGAsIGBydGw4MjJ4X3dyaXRlX21tZGAsIGFuZCBgcnRsODIyeGJfd3JpdGVfbW1kYC4gSXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoZXkgYWxsIHBlcmZvcm0gYSBzaW1pbGFyLCBpZiBub3QgaWRlbnRpY2FsLCBmdW5jdGlvbi4gU3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb25zLCBub3RoaW5nIHVudXN1YWwgc28gZmFyLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgcnRsODIyeGJfd3JpdGVfbW1kYC4gV2FzbiYjMzk7dCB0aGVyZSBhIGNhbGwgdG8gYHJ0bGdlbl93cml0ZV9tbWRgIHdpdGhpbiBpdD8gVGhhdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGNvbmZpcm1pbmcuIEl0JiMzOTtzIGEga2V5IGJpdCBvZiBpbmZvcm1hdGlvbi4gTGV0JiMzOTtzIGRpZyBpbnRvIGBydGw4MjJ4Yl93cml0ZV9tbWRgIGFuZCBjbGFyaWZ5IHRoYXQgZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4NjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTg2MTpcdHN0YXRpYyBpbnQgcnRsODIyeGJfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWcsXG4xODYyOlx0XHRcdFx0ICAgICAgdTE2IHZhbClcbjE4NjM6XHR7XG4xODY0Olx0XHRpbnQgb2xkcGFnZSwgcmV0LCB3cml0ZV9yZXQ7XG4xODY1Olx0XHR1MTYgcGFnZTtcbjE4NjY6XHRcbjE4Njc6XHRcdC8qIFVzZSBkZWZhdWx0IG1ldGhvZCBmb3IgYWxsIE1NRHMgZXhjZXB0IE1ESU9fTU1EX1ZFTkQyIG9yIGluIGNhc2VcbjE4Njg6XHRcdCAqIENsYXVzZS00NSBhY2Nlc3MgaXMgYXZhaWxhYmxlXG4xODY5Olx0XHQgKi9cbjE4NzA6XHRcdGlmIChkZXZudW0gIT0gTURJT19NTURfVkVORDIgfHwgcGh5ZGV2LVx1MDAzZWlzX2M0NSlcbjE4NzE6XHRcdFx0cmV0dXJuIG1tZF9waHlfd3JpdGUocGh5ZGV2LVx1MDAzZW1kaW8uYnVzLCBwaHlkZXYtXHUwMDNlbWRpby5hZGRyLFxuMTg3MjpcdFx0XHRcdFx0ICAgICBwaHlkZXYtXHUwMDNlaXNfYzQ1LCBkZXZudW0sIHJlZywgdmFsKTtcbjE4NzM6XHRcbjE4NzQ6XHRcdC8qIFNpbXBsaWZ5IGFjY2VzcyB0byBDMjItcmVnaXN0ZXJzIGFkZHJlc3NlZCBpbnNpZGUgTURJT19NTURfVkVORDIgKi9cbjE4NzU6XHRcdGlmIChyZWcgXHUwMDNlPSBSVEw4MjJYX1ZORDJfQzIyX1JFRygwKSBcdTAwMjZcdTAwMjZcbjE4NzY6XHRcdCAgICByZWcgXHUwMDNjPSBSVEw4MjJYX1ZORDJfQzIyX1JFRygzMCkpXG4xODc3Olx0XHRcdHJldHVybiBfX3BoeV93cml0ZShwaHlkZXYsIFJUTDgyMlhfVk5EMl9UT19DMjJfUkVHKHJlZyksIHZhbCk7XG4xODc4Olx0XG4xODc5Olx0XHQvKiBVc2UgcGFnZWQgYWNjZXNzIGZvciBNRElPX01NRF9WRU5EMiBvdmVyIENsYXVzZS0yMiAqL1xuMTg4MDpcdFx0cGFnZSA9IFJUTDgyMlhfVk5EMl9UT19QQUdFKHJlZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNjY5CgkJCQkJCQlvdXRwdXQ6IDEzMwoJCQkJCQkJdGhvdWdodHM6IDU2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUmVhbHRlayBQSFkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc3VtcHRpb24gYWJvdXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBydGw4MjJ4Yl93cml0ZV9tbWRgIGFuZCBgcnRsZ2VuX3dyaXRlX21tZGAgd2FzIGluY29ycmVjdC4gV2UmIzM5O3ZlIGVzdGFibGlzaGVkIHRoYXQgYHJ0bGdlbl93cml0ZV9tbWRgIGFuZCBgcnRsODIyeF93cml0ZV9tbWRgIGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdGhhdCB1dGlsaXplIGBydGxnZW5fd3JpdGVfdmVuZDJgIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBgTURJT19BTl9FRUVfQURWYCByZWdpc3Rlci4KCkxldCYjMzk7cyB6b29tIGluIG9uIGBydGxnZW5fd3JpdGVfbW1kYC4gV2Uga25vdyB0aGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IHdhcyBwYXRjaGVkLiBMb29raW5nIGF0IHRoZSBjb2RlOgoKYGBgYwpzdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSwKCQkJICAgIHUxNiB2YWwpCnsKCWludCByZXQ7CgoJaWYgKGRldm51bSA9PSBNRElPX01NRF9WRU5EMikKCQlyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIHZhbCk7CgllbHNlIGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gJmFtcDsmYW1wOyByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKQoJCXJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYsIHZhbCk7CgllbHNlCgkJcmV0ID0gLUVPUE5PVFNVUFA7CgoJcmV0dXJuIHJldDsKfQpgYGAKCk15IHJlYXNvbmluZyBpczogVGhlIGNydXggb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBjb3JyZWN0aW5nIGEgcG90ZW50aWFsIHN3YXAgb2YgYHJlZ251bWAgYW5kIGB2YWxgIHdoZW4gY2FsbGluZyBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCB3aXRoaW4gYHJ0bGdlbl93cml0ZV9tbWRgLiBUaGUgdnVsbmVyYWJpbGl0eSBjb3VsZCBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBgU0lPQ1NNSUlSRUdgIGlvY3RsIG9yLCBwb3RlbnRpYWxseSwgdGhyb3VnaCBgRVRIVE9PTF9TRUVFYCwgd2hpY2gsIGluIHR1cm4sIGludGVyYWN0cyB3aXRoIGBydGxnZW5fd3JpdGVfbW1kYCBhbmQgaXRzIHJlbGF0ZWQgZnVuY3Rpb25zLiBUaGlzIGlzIHNwZWNpZmljYWxseSByZWxldmFudCB3aGVuIGEgUmVhbHRlayBQSFkgaXMgY29ubmVjdGVkLgoKVGhlcmVmb3JlLCB0aGUga2V5IGVsZW1lbnRzIHRvIGhpZ2hsaWdodCBhcmU6CgoqICAgKipXb3J0aEZ1enppbmc6IFRydWUqKiAoZHVlIHRvIHRoZSBidWcgYW5kIGFjY2Vzc2liaWxpdHkpCiogICAqKkZvY3VzU3ltYm9sczoqKiBgcnRsZ2VuX3dyaXRlX21tZGAsIGFuZCBgcnRsODIyeF93cml0ZV9tbWRgIChiZWNhdXNlIHRoZXkgYXJlIHRoZSBvbmVzIHVzaW5nIHRoZSBwYXRjaGVkIGZ1bmN0aW9uKQoqICAgKipFbmFibGVDb25maWdzOioqIGBSRUFMVEVLX1BIWWAgKGJlY2F1c2UgaXQmIzM5O3MgdGhlIHNwZWNpZmljIGNvbmZpZyByZXF1aXJlZCkKCk5vdywgYSBicmllZiBjaGVjayBvbiB0aGUgc3RhdGljIG5hdHVyZSBvZiBgcnRsZ2VuX3dyaXRlX21tZGAuIFllcywgaXQmIzM5O3MgZGVjbGFyZWQgYHN0YXRpY2AuIEhvd2V2ZXIsIHNpbmNlIGl0JiMzOTtzIHVzZWQgd2l0aCBhIGZ1bmN0aW9uIHBvaW50ZXIgKGkuZS4sIHRocm91Z2ggaW9jdGwgb3IgZXRodG9vbCksIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBUaGlzIG1lYW5zIHN5emthbGxlciAqY2FuKiB0YXJnZXQgaXQsIG1ha2luZyBpdCBhIHZpYWJsZSBmb2N1cyBzeW1ib2wuCgpGaW5hbGx5LCBjb25maXJtaW5nIHRoYXQgYFJFQUxURUtfUEhZYCBpcyBhIHRyaXN0YXRlIGNvbmZpZyBpcyBjcnVjaWFsLiBUaGF0IHNldHRsZXMgaXQuIE1lbnRpb25pbmcgYFBIWUxJQmAgaXNuJiMzOTt0IGEgcHJvYmxlbSwgYnV0IGBSRUFMVEVLX1BIWWAgaXMgdGhlIHRhcmdldCBjb25maWcuCgpJJiMzOTttIHJlYWR5IHRvIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSRUFMVEVLX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bGdlbl93cml0ZV9tbWQmIzM0OywKICAgICYjMzQ7cnRsODIyeF93cml0ZV9tbWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYXJndW1lbnRzIHdlcmUgc3dhcHBlZCBpbiBhIGNhbGwgdG8gcnRsZ2VuX3dyaXRlX3ZlbmQyIGluc2lkZSBydGxnZW5fd3JpdGVfbW1kLiBUaGlzIGZ1bmN0aW9uIGlzIGEgLndyaXRlX21tZCBjYWxsYmFjayBmb3IgUmVhbHRlayBQSFkgZHJpdmVycyBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBTSU9DU01JSVJFRyBpb2N0bCBvciBFVEhUT09MX1NFRUUgd2hlbiBhIFJlYWx0ZWsgUEhZIGlzIGF0dGFjaGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSRUFMVEVLX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bGdlbl93cml0ZV9tbWQmIzM0OywKICAgICYjMzQ7cnRsODIyeF93cml0ZV9tbWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYXJndW1lbnRzIHdlcmUgc3dhcHBlZCBpbiBhIGNhbGwgdG8gcnRsZ2VuX3dyaXRlX3ZlbmQyIGluc2lkZSBydGxnZW5fd3JpdGVfbW1kLiBUaGlzIGZ1bmN0aW9uIGlzIGEgLndyaXRlX21tZCBjYWxsYmFjayBmb3IgUmVhbHRlayBQSFkgZHJpdmVycyBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBTSU9DU01JSVJFRyBpb2N0bCBvciBFVEhUT09MX1NFRUUgd2hlbiBhIFJlYWx0ZWsgUEhZIGlzIGF0dGFjaGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjE6MTguODM5Mzg4ODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkyNjExMDAzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUkVBTFRFS19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydGxnZW5fd3JpdGVfbW1kXCIsXG4gICAgXCJydGw4MjJ4X3dyaXRlX21tZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGFyZ3VtZW50cyB3ZXJlIHN3YXBwZWQgaW4gYSBjYWxsIHRvIHJ0bGdlbl93cml0ZV92ZW5kMiBpbnNpZGUgcnRsZ2VuX3dyaXRlX21tZC4gVGhpcyBmdW5jdGlvbiBpcyBhIC53cml0ZV9tbWQgY2FsbGJhY2sgZm9yIFJlYWx0ZWsgUEhZIGRyaXZlcnMgYW5kIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgU0lPQ1NNSUlSRUcgaW9jdGwgb3IgRVRIVE9PTF9TRUVFIHdoZW4gYSBSZWFsdGVrIFBIWSBpcyBhdHRhY2hlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjE6MTguODM5Mzk0ODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzY2NzU4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMxYTgwM2MwZmQ2ZmRmZDFjN2ZjYmY2YzFmZGE5ODY3NjUxYTJlZmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAxNjoyMToxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuaW5kZXggYTBhNzkxOTIzODRlZS4uMTc3YjYyYTdiMmQxNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuQEAgLTE3NjgsNyArMTc2OCw3IEBAIHN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxcbiBcXHRpZiAoZGV2bnVtID09IE1ESU9fTU1EX1ZFTkQyKVxcbiBcXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIHZhbCk7XFxuIFxcdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxcbi1cXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIFJUTF9NRElPX0FOX0VFRV9BRFYpO1xcbitcXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpO1xcbiBcXHRlbHNlXFxuIFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjE6MTkuMjc3ODkxMDk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDc4ODIyNTg3ODAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJFQUxURUtfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRsZ2VuX3dyaXRlX21tZFwiLFxuICAgIFwicnRsODIyeF93cml0ZV9tbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhcmd1bWVudHMgd2VyZSBzd2FwcGVkIGluIGEgY2FsbCB0byBydGxnZW5fd3JpdGVfdmVuZDIgaW5zaWRlIHJ0bGdlbl93cml0ZV9tbWQuIFRoaXMgZnVuY3Rpb24gaXMgYSAud3JpdGVfbW1kIGNhbGxiYWNrIGZvciBSZWFsdGVrIFBIWSBkcml2ZXJzIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFNJT0NTTUlJUkVHIGlvY3RsIG9yIEVUSFRPT0xfU0VFRSB3aGVuIGEgUmVhbHRlayBQSFkgaXMgYXR0YWNoZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMxYTgwM2MwZmQ2ZmRmZDFjN2ZjYmY2YzFmZGE5ODY3NjUxYTJlZmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDE2OjIxOjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuaW5kZXggYTBhNzkxOTIzODRlZS4uMTc3YjYyYTdiMmQxNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuQEAgLTE3NjgsNyArMTc2OCw3IEBAIHN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxuIFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9WRU5EMilcbiBcdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCB2YWwpO1xuIFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFx1MDAyNlx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxuLVx0XHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCByZWdudW0sIFJUTF9NRElPX0FOX0VFRV9BRFYpO1xuK1x0XHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpO1xuIFx0ZWxzZVxuIFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIxOjE5LjI3Nzg5MjM4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3OTkyOTE2MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBQSFkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgLiBJdCdzIGEgUmVhbHRlayBQSFkgZHJpdmVyLCB3aGljaCBpcyBhIGNvbW1vbiBhcmVhIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgZGVzY3JpcHRpb24gaW5kaWNhdGVzIGEgYnVnZml4IGluIGBydGxnZW5fd3JpdGVfbW1kYCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gaG93IGBydGxnZW5fd3JpdGVfdmVuZDJgIGlzIGJlaW5nIGNhbGxlZC4gUmlnaHQsIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCB0aGUgYXJndW1lbnRzIGZvciBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCBzd2FwcGVkLiBJdCBsb29rcyBsaWtlIGl0IHdhcyBwYXNzaW5nIGByZWdudW1gIGFuZCBgdmFsYCBpbiB0aGUgd3Jvbmcgb3JkZXIuIFRoZSBmaXhlZCBjb2RlIHNlZW1zIHRvIGNvcnJlY3QgdGhpcyB0byBgcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEViwgdmFsKWAuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIHRoaXMgYmUgdHJpZ2dlcmVkPyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgcmVhY2hhYmlsaXR5LiBTaW5jZSBpdCdzIGEgUEhZIGRyaXZlciwgaXQncyBwcmV0dHkgbGlrZWx5IHRoYXQgd2UgY2FuIGhpdCB0aGlzIGNvZGUgcGF0aCBzb21laG93LiBWaXJ0dWFsIG5ldHdvcmsgZGV2aWNlcyB0aGF0IHVzZSBQSFlzIGFyZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFuZCBJJ2QgYmV0IHRoZSBNRElPIGJ1cyBpcyB0aGUga2V5IGhlcmUuIFdlIG1pZ2h0IGJlIGFibGUgdG8gaW5zdGFudGlhdGUgUEhZcyB1c2luZyB0aGUgTURJTyBidXMgdG8gdHJpZ2dlciB0aGlzLCBvciB2aWEgTURJTyBpb2N0bHMuXG5cbkxldCdzIHNlZS4uLnN5emthbGxlciEgSXQncyBsaWtlbHkgdGhhdCBzeXprYWxsZXIgY2FuIGhhbmRsZSB0aGlzLCByaWdodD8gSXQgY2FuIGZ1enogTURJTyBidXNlcyBhbmQgUEhZcyB1c2luZyBgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG9yIGp1c3QgdGhyb3VnaCBkaXJlY3QgTURJTyBpb2N0bCBtYW5pcHVsYXRpb24uIFRoYXQgc2hvdWxkIGJlIGEgdmVyeSBlZmZlY3RpdmUgd2F5IHRvIGdldCB0byB0aGlzIGNvZGUuIE9rYXksIGxldCdzIGRpdmUgaW50byBgcnRsZ2VuX3dyaXRlX21tZGAgYW5kIHNlZSB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjE6MjUuMDc3MTg2MjEzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjIwNDk1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGxnZW5fd3JpdGVfbW1kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3NDU9c3RhdGljIGludCBydGxnZW5fcmVhZF9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NjItXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTc2MzpzdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzY0LVxcdFxcdFxcdCAgICB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc5NT1zdGF0aWMgaW50IHJ0bDgyMnhfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzk3LXtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzk4OlxcdGludCByZXQgPSBydGxnZW5fd3JpdGVfbW1kKHBoeWRldiwgZGV2bnVtLCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMwODY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwMy1cXHRcXHQucmVhZF9tbWRcXHQ9IHJ0bGdlbl9yZWFkX21tZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMjA0OlxcdFxcdC53cml0ZV9tbWRcXHQ9IHJ0bGdlbl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwNS1cXHR9LCB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIxOjI1LjMzOTM5NTkwNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MTk0NTUzODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC5cblxuKipJbnZlc3RpZ2F0aW5nIHJ0bGdlbl93cml0ZV9tbWQgaW4gUmVhbHRlayBQSFkgRHJpdmVycyoqXG5cblJpZ2h0LCBzbyBgcnRsZ2VuX3dyaXRlX21tZGAgaXMgYmVpbmcgZW1wbG95ZWQgYXMgdGhlIGAud3JpdGVfbW1kYCBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBhIGhhbmRmdWwgb2YgUEhZIGRyaXZlcnMgcmVzaWRpbmcgaW4gdGhlIGByZWFsdGVrX2RydnNgIGRpcmVjdG9yeS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIG5haWwgZG93biB3aGF0IHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBhcmUgZm9yIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdmVyYWxsIGNvbnRleHQgdG8gZW5zdXJlIHRoaXMgaXMgdXNlZCBhcyBpbnRlbmRlZC4gVGltZSB0byBkaWcgaW50byB0aGUgYXNzb2NpYXRlZCBmaWxlcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMTozMS43NTg4NTMzMjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0ODMyMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVhbHRla19tYWluLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlOjI6cmVhbHRlay15XFx0XFx0XFx0Kz0gcmVhbHRla19tYWluLm9cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZS0zLXJlYWx0ZWstJChDT05GSUdfUkVBTFRFS19QSFlfSFdNT04pICs9IHJlYWx0ZWtfaHdtb24ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMTozMS44MDczNDA4NDFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzg3NjQyMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBSZWFsdGVrIFBIWSBEcml2ZXIgTG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgUmVhbHRlayBQSFkgZHJpdmVycyBhcmUgbG9jYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIHRoaXMga2luZCBvZiBpbnZlc3RpZ2F0aW9uLCBpcyB0byBjaGVjayB0aGUgYE1ha2VmaWxlYCB3aXRoaW4gdGhlIHJlbGV2YW50IGRyaXZlciBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBuZXR3b3JrIFBIWSBkcml2ZXJzLiBHaXZlbiBteSBleHBlcmllbmNlLCBgZHJpdmVycy9uZXQvcGh5L2AgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuIEEgcXVpY2sgcGVlayBpbiBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCB3aWxsIHByb2JhYmx5IGdpdmUgbWUgdGhlIGFuc3dlciwgbGlzdGluZyB0aGUgc3BlY2lmaWMgb2JqZWN0IGZpbGVzIG9yIHNvdXJjZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggUmVhbHRlayBQSFkgc3VwcG9ydC4gVGhpcyBzaG91bGQgYmUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyNSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIxOjM2LjE5NDk4NTI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjE4Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlYWx0ZWtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT05NT1vYmotJChDT05GSUdfUVNFTUlfUEhZKVxcdFxcdCs9IHFzZW1pLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6OTY6b2JqLSQoQ09ORklHX1JFQUxURUtfUEhZKVxcdCs9IHJlYWx0ZWsvXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk3LW9iai0kKENPTkZJR19SRU5FU0FTX1BIWSlcXHQrPSB1UEQ2MDYyMC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIxOjM2LjI0MjIwODIwOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczMDgxNjk1MzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBSZWFsdGVrIFBIWSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHdlIG5lZWQgYENPTkZJR19SRUFMVEVLX1BIWWAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE5vdywgYmVmb3JlIEkganVzdCBibGluZGx5IGVuYWJsZSBpdCwgbGV0J3MgYmUgc21hcnQgYWJvdXQgdGhpcy4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiB3aGF0IGFyZSBpdHMgZGVwZW5kZW5jaWVzPyBUaGVyZSdzIGFsd2F5cyBhIHdlYiBvZiBpbnRlcmNvbm5lY3RlZCBjb25maWd1cmF0aW9ucyBpbiB0aGVzZSB0aGluZ3MsIGFuZCBvdmVybG9va2luZyBhIGRlcGVuZGVuY3kgY2FuIGxlYWQgdG8gaG91cnMgb2YgZGVidWdnaW5nIGxhdGVyIG9uLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGBDT05GSUdfUkVBTFRFS19QSFlgLiBXZSBkb24ndCB3YW50IHRvIGJyZWFrIGFueXRoaW5nIGVsc2UgaW4gdGhlIHByb2Nlc3MsIGFuZCB3ZSB3YW50IHRvIGVuc3VyZSBldmVyeXRoaW5nIG5lZWRlZCBpcyBlbmFibGVkIG9yIHNldCB1cCBjb3JyZWN0bHkgYmVmb3JlIHdlIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgzMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIyOjQ5LjMyMzkwNTczN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI2NjYyNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSRUFMVEVLX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFBIWXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnPTg9aWYgUkVBTFRFS19QSFlcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTktXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoxMDpjb25maWcgUkVBTFRFS19QSFlfSFdNT05cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIkhXTU9OIHN1cHBvcnQgZm9yIFJlYWx0ZWsgUEhZc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjI6NDkuNjUwNTc0NTU3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MDcwNTgzMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgaWYgSSdtIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBSZWFsdGVrIFBIWSBLY29uZmlnKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGlzIFJlYWx0ZWsgUEhZIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCBrbm93aW5nIGl0cyBkZXBlbmRlbmNpZXMgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZC4gVGhpcyBmaWxlIHdpbGwgcmV2ZWFsIHdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBzZXR0aW5ncyBhcmUgcmVxdWlyZWQgb3IgY2FuIGltcGFjdCB0aGlzIHNwZWNpZmljIFBIWSBkcml2ZXIncyBpbmNsdXNpb24uIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IG5lY2Vzc2FyeSBjb3JlIG5ldHdvcmsgZmVhdHVyZXMsIHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQsIG90aGVyIFJlYWx0ZWsgZGVwZW5kZW5jaWVzLCBvciBwZXJoYXBzIGV2ZW4gYnJvYWRlciBhcmNoaXRlY3R1cmFsIHJlcXVpcmVtZW50cy4gVGhlIEtjb25maWcgZmlsZSBpcyBteSBrZXkgdG8gdW5sb2NraW5nIHRoZSBjb25maWd1cmF0aW9uIHB1enpsZSBhbmQgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBlY29zeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMjksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMjo1My41NTc2MzQ4NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgUkVBTFRFS19QSFlcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFBIWXNcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgUEhZX1BBQ0tBR0VcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgQ3VycmVudGx5IHN1cHBvcnRzIFJUTDgyMXgvUlRMODIyeCBhbmQgZmFzdCBldGhlcm5ldCBQSFlzXFxuICAgNzpcXHRcXG4gICA4OlxcdGlmIFJFQUxURUtfUEhZXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBSRUFMVEVLX1BIWV9IV01PTlxcbiAgMTE6XFx0XFx0Ym9vbCBcXFwiSFdNT04gc3VwcG9ydCBmb3IgUmVhbHRlayBQSFlzXFxcIlxcbiAgMTI6XFx0XFx0ZGVwZW5kcyBvbiBIV01PTiBcXHUwMDI2XFx1MDAyNiAhKFJFQUxURUtfUEhZPXkgXFx1MDAyNlxcdTAwMjYgSFdNT049bSlcXG4gIDEzOlxcdFxcdGhlbHBcXG4gIDE0OlxcdFxcdCAgT3B0aW9uYWwgaHdtb24gc3VwcG9ydCBmb3IgdGhlIHRlbXBlcmF0dXJlIHNlbnNvclxcbiAgMTU6XFx0XFxuICAxNjpcXHRlbmRpZiAjIFJFQUxURUtfUEhZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIyOjUzLjU1NzY5Njk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzMzNzUwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgUEhZIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiBpc24ndCBkaXJlY3RseSB0aWVkIHRvIGFueXRoaW5nICpvYnZpb3VzKiBpbiB0aGUgY29kZS4gSG93ZXZlciwgdGhlIGZhY3QgdGhhdCBpdCByZXNpZGVzIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIGlzIGEgcHJldHR5IHN0cm9uZyBoaW50LiAgVGhhdCBkaXJlY3Rvcnkgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGRyaXZlcnMsIHNvIGxldCdzIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMuLi4gYW5kIHRoZXJlIGl0IGlzOiBgUEhZTElCYC4gSXQncyBhIGtleSBkZXBlbmRlbmN5LiBOb3cgSSBuZWVkIHRvIHNlZSB3aGF0IFBIWUxJQiBlbmFibGVzLCBhbmQgaWYgdGhhdCBnaXZlcyBtb3JlIGNsYXJpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2OTIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIyOjU2LjQ5MTA3NDIyMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2MTIxODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBIWUxJQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cXHRkZWZfYm9vbCBPRlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMjo1Ni41Mzg2OTI2OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjAxMzI5OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFBIWUxJQiBhbmQgTURJTyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgd2UgY2FuIHJlYWNoIGBQSFlMSUJgIGZyb20gdXNlciBzcGFjZS4gSXQgbG9va3MgbGlrZSB3ZSd2ZSBnb3QgYSBjb3VwbGUgb2Ygc29saWQgb3B0aW9uczogbmV0bGluayBvciBnb29kIG9sZC1mYXNoaW9uZWQgaW9jdGxzLCBsaWtlIGBTSU9DU01JSVJFR2AuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgaG93IHdlIGNhbiBpbnRlZ3JhdGUgdGhpcyBpbnRvIGEgZnV6emluZyBzZXR1cCB3aXRoIHN5emthbGxlci5cblxuQ2FuIHN5emthbGxlciBmdXp6IE1ESU8gYnVzZXMgdXNpbmcgdmlydHVhbCBkZXZpY2VzPyBXZSBjb3VsZCB1c2UgYHR1bmAsIGB2ZXRoYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIgYW5kIGF0dGFjaCBQSFlzIHRoYXQgd2F5LiBPciwgcGVyaGFwcywgd2UgY2FuIHRhcmdldCB0aGUgYG1kaW9gIHN1YnN5c3RlbSBkaXJlY3RseS4gV2FpdCBhIG1pbnV0ZeKApkkgcmVjYWxsIHNlZWluZyBNRElPIGFuZCBQSFkgZGVzY3JpcHRpb25zIGluIHN5emthbGxlciBhbHJlYWR5LiBUaGF0J3MgYSBnb29kIHNpZ24hIEl0IG1lYW5zIHNvbWVvbmUncyBhbHJlYWR5IHB1dCBpbiBzb21lIGdyb3VuZHdvcmssIHdoaWNoIGlzIGZhbnRhc3RpYyBuZXdzLlxuXG5BbHJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIGEgYml0LiBMZXQncyBzZWUgaWYgd2UgY2FuIHJlYWNoIGBydGxnZW5fd3JpdGVfbW1kYC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgYC53cml0ZV9tbWRgIGNhbGxiYWNrLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIGJhY2sgYW5kIGZpbmQgb3V0IHdoZXJlIHRoYXQgY2FsbGJhY2sgaXMgYWN0dWFsbHkgdXNlZC4gV2hlcmUgYXJlIHRoZSBjYWxscyB0byBgLndyaXRlX21tZGAgaGFwcGVuaW5nPyBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDMwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIzOjAzLjc0MDAyNTc1NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2Nzg0OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid3JpdGVfbW1kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0yNzg2PUVYUE9SVF9TWU1CT0woZ2VucGh5X3JlYWRfbW1kX2M0NSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yNzg3LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mjc4ODppbnQgZ2VucGh5X3dyaXRlX21tZF9jNDUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3ODktXFx0XFx0XFx0IHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3OTUtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mjc5NjpFWFBPUlRfU1lNQk9MKGdlbnBoeV93cml0ZV9tbWRfYzQ1KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3OTctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTI4MDY9RVhQT1JUX1NZTUJPTChnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgwNy1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjI4MDg6aW50IGdlbnBoeV93cml0ZV9tbWRfdW5zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoZGV2LCBpbnQgZGV2bnVtLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgwOS1cXHRcXHRcXHRcXHQgdTE2IHJlZ251bSwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjgxMi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoyODEzOkVYUE9SVF9TWU1CT0woZ2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yODE0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzowMy43ODU3MDgyNzNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc3MzkwMjAzNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBUEkgQ2xhcmlmaWNhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBnZXQgdGhpcyBzdHJhaWdodCBpbiBteSBoZWFkLiBJJ20gZm9jdXNpbmcgb24gdGhlIHdyaXRlIHBhdGgsIGFuZCBJJ3ZlIGJlZW4gbXVsbGluZyBvdmVyIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMuIFRoZW4gaXQgaGl0IG1lOiB0aGUgZnVuY3Rpb24gSSdtIGFjdHVhbGx5IGRlYWxpbmcgd2l0aCBoZXJlLCB0aGUgY29yZSBBUEkgZm9yIHdyaXRpbmcgdG8gdGhlIG1lbW9yeSBtYXBwZWQgZGV2aWNlIChNTUQpLCBpcyBgcGh5X3dyaXRlX21tZGAuIEl0J3MgdGhhdCBzaW1wbGUsIHJlYWxseS4gVGhhdCdzIHRoZSBrZXkgZnVuY3Rpb24gdG8gdHJhY2UgYW5kIHVuZGVyc3RhbmQ7IGV2ZXJ5dGhpbmcgZWxzZSBpcyBsaWtlbHkgbGVhZGluZyB0byBvciBzdXBwb3J0aW5nIGl0cyBleGVjdXRpb24uIEdvb2QsIHRoYXQgY2xhcmlmaWVzIHRoaW5ncy4gTm93IEkgY2FuIGJ1aWxkIG9uIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NzIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzoyMS41MjQ3MzI2OTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzU1MDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV93cml0ZV9tbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE4MjggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM9Mjc1PXN0YXRpYyBpbnQgYWRpbl9jb25maWdfcmdtaWlfbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zMTYtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozMTc6XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTMxOC1cXHRcXHRcXHQgICAgIEFESU4xMzAwX0dFX1JHTUlJX0NGR19SRUcsIHJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTMyMT1zdGF0aWMgaW50IGFkaW5fY29uZmlnX3JtaWlfbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDMtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozNDQ6XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTM0NS1cXHRcXHRcXHQgICAgIEFESU4xMzAwX0dFX1JNSUlfQ0ZHX1JFRywgcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jPTE5Mj1zdGF0aWMgaW50IGFkaW5fc2V0X3Bvd2VyZG93bl9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xOTUtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MTk2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xOTctXFx0XFx0XFx0ICAgIEFESU5fQ1JTTV9TRlRfUERfQ05UUkwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmM9NDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFkaW4xMTQwX2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTU0LVxcdFxcdC5yZWFkX21tZCA9IGdlbnBoeV9yZWFkX21tZF9jNDUsXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjU1OlxcdFxcdC53cml0ZV9tbWQgPSBnZW5waHlfd3JpdGVfbW1kX2M0NSxcXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmMtNTYtXFx0XFx0LmdldF9wbGNhX2NmZyA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz0yNzI9c3RhdGljIGludCBhbjg4MDFyX2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMwMC1cXHRcXHRcXHRcXHQgICAgIExFRF9CTElOS19EVVJfTUFTSyk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozMDE6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMRURfQkxJTktfRFVSLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzAyLVxcdFxcdFxcdFxcdCAgICBibGlua19kdXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zMDUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozMDY6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMRURfT05fRFVSLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzA3LVxcdFxcdFxcdFxcdCAgICBod19kZWxheV9vbik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTkwMj1zdGF0aWMgaW50IGFuODgwMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTExLVxcdC8qIERpc2FibGUgTG93IFBvd2VyIE1vZGUgKExQTSkgKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjkxMjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFOODgwMV9SRUdfUEhZX0lOVEVSTkFMMCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkxMy1cXHRcXHRcXHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX0lOVEZVTkNfTUFTSywgMHgxZSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MTYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5MTc6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBTjg4MDFfUkVHX1BIWV9JTlRFUk5BTDEsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MTgtXFx0XFx0XFx0ICAgIEZJRUxEX1BSRVAoQU44ODAxX1BIWV9JTlRGVU5DX01BU0ssIDB4MikpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NTctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NTg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTU5LVxcdFxcdFxcdCAgICBBTjg4MDFfUEhZX1RYX1BBSVJfRExZX1NFTF9HQkUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk2NC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjk2NTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFOODgwMV9QSFlfUlhBRENfQ1RSTCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk2Ni1cXHRcXHRcXHQgICAgQU44ODAxX1BIWV9SWEFEQ19TQU1QX1BIU0VMX0EgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NzAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NzE6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBTjg4MDFfUEhZX1JYQURDX1JFVl8wLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTcyLVxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfUlhBRENfUkVWX01BU0tfQSwgMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NzUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NzY6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBTjg4MDFfUEhZX1JYQURDX1JFVl8xLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTc3LVxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfUlhBRENfUkVWX01BU0tfQywgMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NjEwPXN0YXRpYyBpbnQgYWlyX2h3X2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MjgtXFx0aWYgKGNoYW5nZWQpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjI5OlxcdFxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjMwLVxcdFxcdFxcdFxcdCAgICAgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NzA4PXN0YXRpYyBpbnQgYWlyX2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2NC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NjU6XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2Ni1cXHRcXHRcXHQgICAgIGJsaW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTc5Nz1zdGF0aWMgaW50IGFpcl9sZWRzX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IG51bSwgaW50IGR1ciwgaW50IG1vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDEtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODAyOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfRFVSX0JMSU5LLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwMy1cXHRcXHRcXHQgICAgZHVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwNi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MDc6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9EVVJfT04sXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODA4LVxcdFxcdFxcdCAgICBkdXIgXFx1MDAzZVxcdTAwM2UgMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMjgxPXN0YXRpYyBpbnQgZW44ODExaF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI5OC1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjk5OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzEsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwMC1cXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzFfTU9ERTEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwMi1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDM6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA0LVxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfMl9NT0RFMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA2LVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMwNzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDgtXFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX01PREUxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMTAtXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzExOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMxMi1cXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzRfTU9ERTEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTQ1Mj1zdGF0aWMgaW50IGVuODgxMWhfY2xlYXJfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ1NS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDU2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzMsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ1Ny1cXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfRE9DTUQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ2MC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDYxOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ2Mi1cXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzRfSU5UQ0xSKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jPTkwPXN0YXRpYyBpbnQgYXFyX2Z3X2xvYWRfbWVtb3J5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtOTUtXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6OTY6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk3LVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTEsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtOTgtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMV9DUkNfUkVTRVQpO1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjk5OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMDAtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMDEtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFM19NU1dfQUREUihhZGRyKSk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTAyOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMDMtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTExNS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoxMTY6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U1LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTExNy1cXHRcXHRcXHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U1X01TV19EQVRBKHdvcmQpKTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoxMTg6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U2LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTExOS1cXHRcXHRcXHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0U2X0xTV19EQVRBKHdvcmQpKTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMjAtXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTIxOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMjItXFx0XFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFMV9FWEVDVVRFIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jPTE0OT1zdGF0aWMgaW50IGFxcl9md19ib290KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IHU4ICpkYXRhLCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI2MS1cXHQvKiBzdGFsbCB0aGUgbWljcm9jcHJvY2Vzc29yICovXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MjYyOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX0NPTlRST0wyLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI2My1cXHRcXHQgICAgICBWRU5EMV9HTE9CQUxfQ09OVFJPTDJfVVBfUlVOX1NUQUxMIHwgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTF9PVkQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjgzLVxcdC8qIFJlbGVhc2UgdGhlIG1pY3JvcHJvY2Vzc29yLiBVUF9SRVNFVCBtdXN0IGJlIGhlbGQgZm9yIDEwMCB1c2VjLiAqL1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjI4NDpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9DT05UUk9MMixcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yODUtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTCB8XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yODktXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MjkwOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX0NPTlRST0wyLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI5MS1cXHRcXHQgICAgICBWRU5EMV9HTE9CQUxfQ09OVFJPTDJfVVBfUlVOX1NUQUxMX09WRCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYz01NT1zdGF0aWMgaW50IGFxcl9od21vbl9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHJlZywgbG9uZyB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9od21vbi5jLTY0LVxcdC8qIHRlbXAgaXMgaW4gczE2IHJhbmdlIGFuZCB3ZSdyZSBpbnRlcmVzdGVkIGluIGxvd2VyIDE2IGJpdHMgb25seSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9od21vbi5jOjY1OlxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIHJlZywgKHUxNil0ZW1wKTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYy02Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTI1Mz1zdGF0aWMgaW50IGFxcl9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNjQtXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNjU6XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOX1RYX1ZFTkRfSU5UX01BU0syLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY2LVxcdFxcdFxcdCAgICBlbiA/IE1ESU9fQU5fVFhfVkVORF9JTlRfTUFTSzJfTElOSyA6IDApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNjktXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNzA6XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfSU5UX1NURF9NQVNLLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjcxLVxcdFxcdFxcdCAgICBlbiA/IFZFTkQxX0dMT0JBTF9JTlRfU1REX01BU0tfQUxMIDogMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI3NC1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjI3NTpcXHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9JTlRfVkVORF9NQVNLLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjc2LVxcdFxcdFxcdCAgICBlbiA/IFZFTkQxX0dMT0JBTF9JTlRfVkVORF9NQVNLX0dMT0JBTDMgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYz0zNjk9c3RhdGljIGludCBhcXIxMDVfc2V0dXBfZm9yY2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwMS1cXHR9XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzo0MDI6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOX0FEVkVSVElTRSwgYWR2KTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwMy1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNC1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6NDA1OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9WRU5EX1BST1YsIHZlbmQpO1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtNDA2LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtNDA3LVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzo0MDg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBNRElPX0FOXzEwR0JUX0NUUkwsIGN0cmwxMCk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDktXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jPTI5Nz1zdGF0aWMgaW50IGFlb25fZmlybXdhcmVfYm9vdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCB1OCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzA3LVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MzA4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfRldfU1RBUlRfQUREUixcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMwOS1cXHRcXHRcXHQgICAgQUVPTl9CT09UX0FERFIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMjktXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzozMzA6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzMxLVxcdFxcdFxcdFxcdCAgICBWRU5EMV9HTEJfUkVHX01ESU9fSU5ESVJFQ1RfTE9BRCwgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzM1LVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MzM2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMzNy1cXHRcXHRcXHQgICAgVkVORDFfR0xCX1JFR19DUFVfUkVTRVRfQUREUl9MT19CQVNFQUREUixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzQxLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MzQyOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTM0My1cXHRcXHRcXHQgICAgVkVORDFfR0xCX1JFR19DUFVfUkVTRVRfQUREUl9ISV9CQVNFQUREUixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9NDA1PXN0YXRpYyBpbnQgYWVvbl9pcGNfc2VuZF9jbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDIyLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6NDIzOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfSVBDX0NNRCwgY21kKTtcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTQyNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz00NTU9c3RhdGljIGludCBhZW9uX2lwY19zZW5kX21zZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy00NzEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRhdGFfbGVuIC8gc2l6ZW9mKHUxNik7IGkrKylcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjQ3MjpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0lQQ19EQVRBKGkpLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDczLVxcdFxcdFxcdCAgICAgIGRhdGFbaV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9MzcyPWludCBiY21fcGh5X3NldF9lZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0zODUtXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Mzg2OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgQlJDTV9DTDQ1VkVOX0VFRV9DT05UUk9MLCAodTMyKXZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzg3LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNDA0LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjQwNTpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIEJDTV9DTDQ1VkVOX0VFRV9BRFYsICh1MzIpdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy00MDYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jPTYyOD1zdGF0aWMgaW50IGJjbTd4eHhfMjhubV9lcGh5X3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jLTY1Ny1cXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jOjY1ODpzdGF0aWMgaW50IGJjbTd4eHhfMjhubV9lcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtNjU5LVxcdFxcdFxcdFxcdCAgICAgICBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLCB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYz04MjE9c3RhdGljIGludCBiY203eHh4XzI4bm1fcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtODg2LVxcdC5yZWFkX21tZFxcdD0gYmNtN3h4eF8yOG5tX2VwaHlfcmVhZF9tbWQsXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmM6ODg3OlxcdC53cml0ZV9tbWRcXHQ9IGJjbTd4eHhfMjhubV9lcGh5X3dyaXRlX21tZCxcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYy04ODgtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmM9OTk9c3RhdGljIGludCBiY204NDg5eF9sZWRfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDMtXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmM6MTA0OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTA1LVxcdFxcdFxcdCAgICBiY204NDg5eF9sZWRfcmVnc1tpbmRleF0ubWFza19sb3csIGxvdyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDctXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYzoxMDg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1BNQVBNRCxcXG5kcml2ZXJzL25ldC9waHkvYmNtODQ4ODEuYy0xMDktXFx0XFx0XFx0ICAgIGJjbTg0ODl4X2xlZF9yZWdzW2luZGV4XS5tYXNrX2V4dCwgZXh0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM9MzQ9c3RhdGljIGludCBiY204N3h4X29mX3JlZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTY4LVxcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM6Njk6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldmlkLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy03MC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM9MTQwPXN0YXRpYyBpbnQgYmNtODd4eF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTQtXFx0XFx0cmVnIHw9IDE7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYzoxNTU6XFx0XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1BDUyxcXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE1Ni1cXHRcXHRcXHRcXHQgICAgQkNNODdYWF9MQVNJX0NPTlRST0wsIHJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE1OC1cXHRcXHRyZWcgXFx1MDAyNj0gfjE7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYzoxNTk6XFx0XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1BDUyxcXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jLTE2MC1cXHRcXHRcXHRcXHQgICAgQkNNODdYWF9MQVNJX0NPTlRST0wsIHJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jPTIxND1zdGF0aWMgaW50IGRwODM4MjJfY29uZmlnX3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMjktXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyMzA6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfREExLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjMxLVxcdFxcdFxcdCAgICAgIChtYWNbMV0gXFx1MDAzY1xcdTAwM2MgOCkgfCBtYWNbMF0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjMyOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0RBMixcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTIzMy1cXHRcXHRcXHQgICAgICAobWFjWzNdIFxcdTAwM2NcXHUwMDNjIDgpIHwgbWFjWzJdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjIzNDpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIE1JSV9EUDgzODIyX1dPTF9EQTMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMzUtXFx0XFx0XFx0ICAgICAgKG1hY1s1XSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY1s0XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0NC1cXHRcXHRpZiAod29sLVxcdTAwM2V3b2xvcHRzIFxcdTAwMjYgV0FLRV9NQUdJQ1NFQ1VSRSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjQ1OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0Ni1cXHRcXHRcXHRcXHQgICAgICBNSUlfRFA4MzgyMl9SWFNPUDEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNDctXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMF0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjQ4OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI0OS1cXHRcXHRcXHRcXHQgICAgICBNSUlfRFA4MzgyMl9SWFNPUDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNTAtXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzNdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMl0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjUxOlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI1Mi1cXHRcXHRcXHRcXHQgICAgICBNSUlfRFA4MzgyMl9SWFNPUDMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI2NC1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI2NTpcXHRcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjY2LVxcdFxcdFxcdFxcdCAgICAgTUlJX0RQODM4MjJfV09MX0NGRywgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYz0xMDQ1PXN0YXRpYyBpbnQgZHA4MzgyMl9yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMTA1Mi1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjEwNTM6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfQ0ZHLCB2YWx1ZSB8XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0xMDU0LVxcdFxcdCAgICAgIERQODM4MjJfV09MX0NMUl9JTkRJQ0FUSU9OKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9MjExPXN0YXRpYyBpbnQgZHA4Mzg2N19zZXRfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzMS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzMjpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzMtXFx0XFx0XFx0XFx0ICAgICAgKG1hY1sxXSBcXHUwMDNjXFx1MDAzYyA4IHwgbWFjWzBdKSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMzQ6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjM1LVxcdFxcdFxcdFxcdCAgICAgIChtYWNbM10gXFx1MDAzY1xcdTAwM2MgOCB8IG1hY1syXSkpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM2OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMyxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzNy1cXHRcXHRcXHRcXHQgICAgICAobWFjWzVdIFxcdTAwM2NcXHUwMDNjIDggfCBtYWNbNF0pKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ0LVxcdFxcdGlmICh3b2wtXFx1MDAzZXdvbG9wdHMgXFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDU6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AxLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ2LVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1sxXSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzBdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0NzpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNDgtXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzNdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMl0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQ5OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMyxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI1MC1cXHRcXHRcXHRcXHQgICAgICAod29sLVxcdTAwM2Vzb3Bhc3NbNV0gXFx1MDAzY1xcdTAwM2MgOCkgfCB3b2wtXFx1MDAzZXNvcGFzc1s0XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI3MTpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRkNGRywgdmFsX3J4Y2ZnKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3Mi1cXHRwaHlfd3JpdGUocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSLCB2YWxfbWljcik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTczNj1zdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODA4LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODA5OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUkdNSUlDVEwsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4MTE6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SR01JSURDVEwsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTItXFx0XFx0XFx0ICAgICAgZHA4Mzg2Ny1cXHUwMDNlcnhfaWRfZGVsYXkgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTYtXFx0XFx0dmFsIFxcdTAwMjY9IH5EUDgzODY3X1JHTUlJX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODE3OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUkdNSUlDVEwsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MTgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04NjAtXFx0XFx0XFx0dmFsIFxcdTAwMjY9IH5EUDgzODY3X1NHTUlJX1RZUEU7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4NjE6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19TR01JSUNUTCwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTg2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9OTM1PXN0YXRpYyBpbnQgZHA4Mzg2N19waHlfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTUzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6OTU0OlxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfRFNQX0ZGRV9DRkcsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05NTUtXFx0XFx0XFx0ICAgIDB4MGU4MSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jPTI1OT1zdGF0aWMgaW50IGRwODM4Njlfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yODYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzoyODc6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI4OC1cXHRcXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9SWEZQTUQxLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTItXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzoyOTM6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTI5NC1cXHRcXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9SWEZQTUQyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzoyOTk6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMwMC1cXHRcXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9SWEZQTUQzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTAtXFx0XFx0aWYgKHdvbC1cXHUwMDNld29sb3B0cyBcXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjMxMTpcXHRcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzEyLVxcdFxcdFxcdFxcdFxcdCAgICBEUDgzODY5X1JYRlNPUDEsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMxNi1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjMxNzpcXHRcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzE4LVxcdFxcdFxcdFxcdFxcdCAgICBEUDgzODY5X1JYRlNPUDIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMyMS1cXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MzIyOlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMjMtXFx0XFx0XFx0XFx0XFx0ICAgIERQODM4NjlfUlhGU09QMyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzQ2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MzQ3OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfUlhGQ0ZHLCB2YWxfcnhjZmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzQ4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jPTY5ND1zdGF0aWMgaW50IGRwODM4NjlfY29uZmlndXJlX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzE4LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6NzE5OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfT1BfTU9ERSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTcyMC1cXHRcXHRcXHQgICAgcGh5X2N0cmxfdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzUzLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6NzU0OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03NTUtXFx0XFx0XFx0XFx0ICAgIERQODM4NjlfRlhfQ1RSTCwgRFA4Mzg2OV9GWF9DVFJMX0RFRkFVTFQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03NjUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo3NjY6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc2Ny1cXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9GWF9DVFJMLCBEUDgzODY5X0ZYX0NUUkxfREVGQVVMVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc4Ni1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjc4NzpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzg4LVxcdFxcdFxcdFxcdCAgICBEUDgzODY5X0ZYX0NUUkwsIERQODM4NjlfRlhfQ1RSTF9ERUZBVUxUKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM9ODA0PXN0YXRpYyBpbnQgZHA4Mzg2OV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04MzQtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo4MzU6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTgzNi1cXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9BTkFfUExMX1BST0dfUEksIDB4MTApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NDctXFx0aWYgKHBoeV9pbnRlcmZhY2VfaXNfcmdtaWkocGh5ZGV2KSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6ODQ4OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfUkdNSUlEQ1RMLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODQ5LVxcdFxcdFxcdFxcdCAgICBkcDgzODY5LVxcdTAwM2VyeF9pbnRfZGVsYXkgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NjctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo4Njg6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUiwgRFA4Mzg2OV9SR01JSUNUTCxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTg2OS1cXHRcXHRcXHRcXHQgICAgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYz05Nz1zdGF0aWMgaW50IGRwODM4MTFfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExMi1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTEzOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsIE1JSV9EUDgzODExX1dPTF9EQTEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExNC1cXHRcXHRcXHQgICAgICAobWFjWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgbWFjWzBdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTE1OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsIE1JSV9EUDgzODExX1dPTF9EQTIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExNi1cXHRcXHRcXHQgICAgICAobWFjWzNdIFxcdTAwM2NcXHUwMDNjIDgpIHwgbWFjWzJdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTE3OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsIE1JSV9EUDgzODExX1dPTF9EQTMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTExOC1cXHRcXHRcXHQgICAgICAobWFjWzVdIFxcdTAwM2NcXHUwMDNjIDgpIHwgbWFjWzRdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMjctXFx0XFx0aWYgKHdvbC1cXHUwMDNld29sb3B0cyBcXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTI4OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEyOS1cXHRcXHRcXHRcXHQgICAgICBNSUlfRFA4MzgxMV9SWFNPUDEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEzMC1cXHRcXHRcXHRcXHQgICAgICAod29sLVxcdTAwM2Vzb3Bhc3NbMV0gXFx1MDAzY1xcdTAwM2MgOCkgfCB3b2wtXFx1MDAzZXNvcGFzc1swXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjEzMTpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzItXFx0XFx0XFx0XFx0ICAgICAgTUlJX0RQODM4MTFfUlhTT1AyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzMtXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzNdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMl0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxMzQ6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTM1LVxcdFxcdFxcdFxcdCAgICAgIE1JSV9EUDgzODExX1JYU09QMyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xNDctXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjE0ODpcXHRcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTQ5LVxcdFxcdFxcdFxcdCAgICAgTUlJX0RQODM4MTFfV09MX0NGRywgdmFsdWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jPTUzMD1zdGF0aWMgaW50IGRwODN0ZDUxMF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTUzNC1cXHRpZiAocGh5ZGV2LVxcdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo1MzU6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01MzYtXFx0XFx0XFx0XFx0ICAgIERQODNURDUxMEVfSU5URVJSVVBUX1JFR18xLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTU0Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo1NDc6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01NDgtXFx0XFx0XFx0XFx0ICAgIERQODNURDUxMEVfSU5URVJSVVBUX1JFR18xLCAweDApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jPTY4ND1zdGF0aWMgaW50IGRwODN0ZDUxMF9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzM4LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo3Mzk6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1REUl9DRkcyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NDAtXFx0XFx0XFx0ICAgIEZJRUxEX1BSRVAoRFA4M1RENTEwRV9URFJfRU5EX1RBUF9JTkRFWF8xLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc0Ni1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzQ3OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9URFJfRkFVTFRfQ0ZHMSxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzQ4LVxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKERQODNURDUxMEVfVERSX0ZMVF9MT0NfT0ZGU0VUXzEsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzU3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo3NTg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1VOS05fMDMwRSxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzU5LVxcdFxcdFxcdCAgICBEUDgzVEQ1MTBFXzAzMEVfVkFMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NjItXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjc2MzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURDUxMEVfVERSX0NGRzMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc2NC1cXHRcXHRcXHQgICAgRFA4M1RENTEwRV9URFJfVFhfRFVSQVRJT05fVVNfREVGKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYz0zMjQ9c3RhdGljIGludCBkcDgzdGc3MjBfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzQxOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19URFJfQ0ZHMixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzQyLVxcdFxcdFxcdCAgICAweGEwMDgpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0NS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzQ2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19URFJfQ0ZHMyxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzQ3LVxcdFxcdFxcdCAgICAweDA5MjgpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzUxOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19URFJfQ0ZHNCxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzUyLVxcdFxcdFxcdCAgICAweDAwMDQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1NS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6MzU2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19VTktOT1dOXzA0MDUsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1Ny1cXHRcXHRcXHQgICAgMHg2NDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNjAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM2MTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVU5LTk9XTl8wODNGLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNjItXFx0XFx0XFx0ICAgIDB4MzAwMyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM9NTU4PXN0YXRpYyBpbnQgZHA4M3RnNzIwX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtNTc1LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzo1NzY6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX0xQU19DRkczLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy01NzctXFx0XFx0XFx0ICAgIERQODNURzcyMFNfTFBTX0NGRzNfUFdSX01PREVfMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTI0NT1zdGF0aWMgaW50IHh3YXlfZ3BoeV9pbml0X2xlZHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjU5LVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjYwOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEQ0gsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNjEtXFx0XFx0ICAgICAgWFdBWV9NTURfTEVEQ0hfTkFDU19OT05FIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjYzLVxcdFxcdCAgICAgIFhXQVlfTU1EX0xFRENIX0ZCRl9GMTZIWik7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNjQ6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRURDTCxcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI2NS1cXHRcXHQgICAgICBYV0FZX01NRF9MRURDSF9DQkxJTktfTk9ORSB8XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI3Ni1cXHRcXHRYV0FZX01NRF9MRUR4TF9CTElOS1NfTk9ORTtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI3NzpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDBILCBsZWR4aCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNzg6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQwTCwgbGVkeGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Mjc5OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMUgsIGxlZHhoKTtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI4MDpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDFMLCBsZWR4bCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyODE6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQySCwgbGVkeGgpO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjgyOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMkwsIGxlZHhsKTtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI4My1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM9MzkzPXN0YXRpYyBpbnQgeHdheV9ncGh5X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTAtXFx0aWYgKHZhbHVlID09IExFRF9PRkYpIHtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjQxMTpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRHhIKGluZGV4KSwgMCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDE0LVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6NDE1OlxcdFxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRHhMKGluZGV4KSwgMCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy00MTYtXFx0fSBlbHNlIHtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzoyMS41NzIwOTIyN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzE0NzM2ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKlRyYWNpbmcgdGhlIE1NRCBXcml0ZSBGdW5jdGlvbiBDYWxscyoqXG5cbkhtbSwgc28gYHJ0bGdlbl93cml0ZV9tbWRgIGlzIGRlZmluaXRlbHkgdGhlIHRhcmdldCBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBiZWluZyBpbnZva2VkLiBSaWdodCwgaXQncyBjYWxsZWQgZnJvbSBgcnRsODIyeF93cml0ZV9tbWRgLiBBbmQgdGhhdCBmdW5jdGlvbiwgYHJ0bDgyMnhfd3JpdGVfbW1kYCwgaXMgdGhlIGAud3JpdGVfbW1kYCBmdW5jdGlvbiBmb3IgdGhlIGByZWFsdGVrX2RydnNgIHN0cnVjdHVyZS4gVGhhdCB0ZWxscyBtZSBhIGxvdCDigJMgaXQncyBwYXJ0IG9mIHRoZSBSZWFsdGVrIGRyaXZlciBmYW1pbHksIGxpa2VseSBpbnRlcmFjdGluZyBkaXJlY3RseSB3aXRoIHRoZSBoYXJkd2FyZS5cblxuVGhlbiwgdGhlcmUncyBgcGh5X3dyaXRlX21tZGAsIGFuZCB0aGF0J3MgYW4gaW50ZXJlc3Rpbmcgb25lIGJlY2F1c2UgaXQncyB0aGUgZ2VuZXJpYyBQSFkgYWJzdHJhY3Rpb24gbGF5ZXIuIEl0J3Mgc3VwcG9zZWQgdG8gaW52b2tlIGl0cyBvd24gYC53cml0ZV9tbWRgIGZ1bmN0aW9uIGlmIG9uZSBpcyBkZWZpbmVkLiBTbywgdGhlcmUgaXMgYSBnb29kIGNoYW5jZSB0aGF0IGBwaHlfd3JpdGVfbW1kYCBpcyB0aGUgb25lIHRoYXQncyBzdXBwb3NlZCB0byBiZSBjYWxsaW5nIGBydGw4MjJ4X3dyaXRlX21tZGAgd2hpY2ggdWx0aW1hdGVseSBjYWxscyBgcnRsZ2VuX3dyaXRlX21tZGAuXG5cblRvIGJlIGNlcnRhaW4sIGFuZCB0byBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGVjdXRpb24gcGF0aCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHBoeV93cml0ZV9tbWRgLiBJdCBpcyB0aGUgY3J1Y2lhbCBqdW5jdGlvbiBpbiB0aGlzIGNoYWluIG9mIGNhbGxzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBhc3N1bXB0aW9ucyBhYm91dCBob3cgYHBoeV93cml0ZV9tbWRgIGhhbmRsZXMgaXRzIGAud3JpdGVfbW1kYCBmdW5jdGlvbiBwb2ludGVyIGFyZSBjb3JyZWN0LiBMZXQncyB2ZXJpZnkgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1ODgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzoyNS44ODY4MzE2ODFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjI3NTQ5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgcGh5X3dyaXRlX21tZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIzOjI1LjkzMTQ3ODYyOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk5ODUyMzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqTmF2aWdhdGluZyB0aGUgUEhZIERyaXZlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIHVzYWdlIG9mIGBwaHlfd3JpdGVfbW1kYC4gSXQncyBsaWtlbHkgd2l0aGluIHRoZSBgcGh5X2RldmljZS5jYCBmaWxlLCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gSSdsbCBuZWVkIHRvIG9wZW4gdGhhdCB1cCBhbmQgZWl0aGVyIHNlYXJjaCBkaXJlY3RseSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgb3IgbWF5YmUgdHJhY2UgaXRzIGNhbGxzIGlmIGl0J3Mgbm90IGEgZGlyZWN0IGltcGxlbWVudGF0aW9uIGJ1dCByYXRoZXIgYSB3cmFwcGVyIG9yIGFic3RyYWN0aW9uLiBVbmRlcnN0YW5kaW5nIGhvdyBgcGh5X3dyaXRlX21tZGAgd29ya3MgaXMgY3J1Y2lhbDsgaXQgbWlnaHQgYmUgcmVzcG9uc2libGUgZm9yIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIE1hbmFnZW1lbnQgTW9kZSBEZXZpY2UgcmVnaXN0ZXJzIHdpdGhpbiB0aGUgUEhZLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgUEhZIGRyaXZlciBzdHJ1Y3R1cmUuIEknbGwgbGlrZWx5IGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHJlZ2lzdGVyIGFkZHJlc3NlcywgZGF0YSBmb3JtYXR0aW5nLCBwb3RlbnRpYWwgZXJyb3IgaGFuZGxpbmcsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgYnVzIOKAkyBsaWtlbHkgTURJTywgYnV0IGNvbmZpcm1hdGlvbiBpcyBuZWVkZWQuIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwMjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzoyOS41MzEzMzM0NTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTAxMjI5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgcGh5X3dyaXRlX21tZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyMzoyOS41NzcyNDEyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTkyMTc4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipMb2NhdGluZyB0aGUgUEhZIFdyaXRlIEZ1bmN0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGZvciB0aGUgZGVmaW5pdGlvbiBvciBkZWNsYXJhdGlvbiBvZiBgcGh5X3dyaXRlX21tZGAuIEJhc2VkIG9uIHRoZSBjb250ZXh0LCB0aGF0J3MgYWxtb3N0IGNlcnRhaW5seSBhIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gd3JpdGluZyB0byBhIE1hbmFnZW1lbnQgTW9kZSBEZXZpY2UgKE1NRCkgd2l0aGluIGEgUEhZIChQaHlzaWNhbCBMYXllcikuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgd291bGQgYmUgd2l0aGluIHRoZSBuZXR3b3JrIGRldmljZSBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmUuIGBkcml2ZXJzL25ldC9waHlgIGlzIHRoZSBvYnZpb3VzIHRvcC1sZXZlbCBkaXJlY3RvcnkgdG8gYmVnaW4gbXkgc2VhcmNoLlxuXG5Nb3JlIHNwZWNpZmljYWxseSwgYHBoeV9jb3JlLmNgIGlzIHVzdWFsbHkgdGhlIHJlcG9zaXRvcnkgZm9yIHRoZSBjb3JlIFBIWSBkcml2ZXIgZnVuY3Rpb25zLCB0aGUgb25lcyB0aGF0IGFyZSBsaWtlbHkgc2hhcmVkIGFtb25nIGRpZmZlcmVudCBQSFkgZHJpdmVyIGltcGxlbWVudGF0aW9ucy4gSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBhY3R1YWwgZnVuY3Rpb24gZGVmaW5pdGlvbiB0aGVyZS4gQWx0ZXJuYXRpdmVseSwgSSBtaWdodCBmaW5kIGEgZGVjbGFyYXRpb24gb3IgcHJvdG90eXBlIGluIHRoZSBjb3JyZXNwb25kaW5nIGhlYWRlciBmaWxlLCB3aGljaCBpcyBwcm9iYWJseSBgaW5jbHVkZS9saW51eC9waHkuaGAuIFRoYXQgaGVhZGVyIHdvdWxkIGRlZmluZSB0aGUgUEhZIEFQSSBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBJdCdzIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIHRoZSBmdW5jdGlvbiBpcyBkZWNsYXJlZCB0aGVyZSBiZWZvcmUgSSBzdGFydCBzZWFyY2hpbmcgdGhlIHNvdXJjZSBmaWxlLiBJdCBpcyB0aGUgbG9naWNhbCBvcmRlciB0byBzdGFydCBteSBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjkxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjM6MzMuNTc2NDYxNDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTcwMTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBwaHlfd3JpdGVfbW1kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9NTIzPUVYUE9SVF9TWU1CT0woX19waHlfd3JpdGVfbW1kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTUzNC0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzo1MzU6aW50IHBoeV93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldmFkLCB1MzIgcmVnbnVtLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTUzNi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjIzOjMzLjYyMjQzNjc1OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE2NzEzMTQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBQSFkgQ29yZSBDb2RlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aCB0aGlzIFBIWSBtb2R1bGUsIGFuZCB0aGUgZnVuY3Rpb24gYHBoeV93cml0ZV9tbWRgIHNlZW1zIGxpa2UgYSBrZXkgYXJlYSB0byBkaXNzZWN0LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgTU1ELCBvciBNb2RlL1JlZ2lzdGVyIE1hcCwgaXMgYSBjb21tb24gdGVjaG5pcXVlIHdpdGhpbiB0aGUgUEhZIHJlYWxtLCB3aGVyZSB5b3Ugc2VsZWN0IGEgXCJtb2RlXCIgb3IgcmVnaXN0ZXIgYmFuayB1c2luZyBhbiBhZGRyZXNzIGFuZCB0aGVuIGludGVyYWN0IHdpdGggdGhlIHNwZWNpZmljIHJlZ2lzdGVycyB3aXRoaW4gdGhhdCBzZWxlY3RlZCBiYW5rLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGF0IHRoZSBgcGh5X3dyaXRlX21tZGAgZnVuY3Rpb24gcHJvYmFibHkgaGFuZGxlcyB0aGUgbG93LWxldmVsIHdyaXRlcyB0byB0aGlzIE1NRCBpbnRlcmZhY2UuIEknbSBrZWVuIHRvIHNlZSBpZiBpdCdzIGFic3RyYWN0ZWQgZm9yIG11bHRpcGxlIFBIWSB0eXBlcyBvciBpbXBsZW1lbnRlZCBzcGVjaWZpY2FsbHkgZm9yIGEgbmFycm93IHJhbmdlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IG9wZXJhdGVzIG9uLiBJJ20gYWxzbyBpbnRlcmVzdGVkIHRvIHNlZSB0aGUgZXJyb3IgY2hlY2tpbmcgYW5kIGhvdyB0aGUgZnVuY3Rpb24gaGFuZGxlcyBwb3NzaWJsZSBJMkMgb3IgU1BJIHdyaXRlIGZhaWx1cmVzLiBXaGF0IGFzc3VtcHRpb25zIGRvZXMgaXQgbWFrZSBhYm91dCB0aGUgdW5kZXJseWluZyBidXM/IERvZXMgaXQgaGF2ZSBhbnkgZGVidWcgb3IgbG9nZ2luZyBjYXBhYmlsaXRpZXMgSSBjYW4gbGV2ZXJhZ2U/IE15IGdvYWwgaXMgdG8gZ3Jhc3AgaXRzIGZ1bmN0aW9uYWxpdHkuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTcyNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI0OjI0Ljc4OTU3MTgzNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MzUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MzU6XFx0aW50IHBoeV93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldmFkLCB1MzIgcmVnbnVtLCB1MTYgdmFsKVxcbiA1MzY6XFx0e1xcbiA1Mzc6XFx0XFx0aW50IHJldDtcXG4gNTM4OlxcdFxcbiA1Mzk6XFx0XFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG4gNTQwOlxcdFxcdHJldCA9IF9fcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldmFkLCByZWdudW0sIHZhbCk7XFxuIDU0MTpcXHRcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuIDU0MjpcXHRcXG4gNTQzOlxcdFxcdHJldHVybiByZXQ7XFxuIDU0NDpcXHR9XFxuIDU0NTpcXHRFWFBPUlRfU1lNQk9MKHBoeV93cml0ZV9tbWQpO1xcbiA1NDY6XFx0XFxuIDU0NzpcXHQvKipcXG4gNTQ4OlxcdCAqIHBoeV9tb2RpZnlfY2hhbmdlZCAtIEZ1bmN0aW9uIGZvciBtb2RpZnlpbmcgYSBQSFkgcmVnaXN0ZXJcXG4gNTQ5OlxcdCAqIEBwaHlkZXY6IHRoZSBwaHlfZGV2aWNlIHN0cnVjdFxcbiA1NTA6XFx0ICogQHJlZ251bTogcmVnaXN0ZXIgbnVtYmVyIHRvIG1vZGlmeVxcbiA1NTE6XFx0ICogQG1hc2s6IGJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXJcXG4gNTUyOlxcdCAqIEBzZXQ6IG5ldyB2YWx1ZSBvZiBiaXRzIHNldCBpbiBtYXNrIHRvIHdyaXRlIHRvIEByZWdudW1cXG4gNTUzOlxcdCAqXFxuIDU1NDpcXHQgKiBOT1RFOiBNVVNUIE5PVCBiZSBjYWxsZWQgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjQ6MjQuNzg5NjU1MzA0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzg1MjUzMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIGdlYXJlZCB0b3dhcmQgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIGBfX3BoeV93cml0ZV9tbWRgKipcblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBgX19waHlfd3JpdGVfbW1kYCBmdW5jdGlvbi4gSW1tZWRpYXRlbHksIG15IG1pbmQgc3RhcnRzIHRvIHJhY2UuIFRoaXMgbmFtZSBzdWdnZXN0cyBpdCdzIGEgbG93LWxldmVsLCBpbnRlcm5hbCBmdW5jdGlvbiByZWxhdGVkIHRvIHdyaXRpbmcgdG8gc29tZXRoaW5nIHdpdGhpbiB0aGUgUEhZLCBwcm9iYWJseSBzb21lIHJlZ2lzdGVyIG9yIG1lbW9yeS1tYXBwZWQgZGF0YSBzcGFjZS4gVGhlIGBfX2AgcHJlZml4IGlzIGEgc3Ryb25nIGluZGljYXRvciBvZiBhbiBpbnRlcm5hbCBBUEksIGEgZnVuY3Rpb24gbm90IGludGVuZGVkIGZvciBkaXJlY3QgdXNlIGJ5IHRoZSBnZW5lcmFsIGRyaXZlciBjb2RlLiBUaGlzIHRlbGxzIG1lIGl0J3MgbGlrZWx5IGEgY3JpdGljYWwgY29tcG9uZW50LCBwb3RlbnRpYWxseSBoYW5kbGluZyB0aGUgYWN0dWFsIGJ1cyB0cmFuc2FjdGlvbnMgb3IgcmVnaXN0ZXIgYWNjZXNzIHBhdHRlcm5zLlxuXG5JJ20gaW5zdGFudGx5IHdvbmRlcmluZyBhYm91dCB0aGUgY29udGV4dC4gV2hhdCBQSFkgaXMgdGhpcyByZWxhdGVkIHRvPyBJcyBpdCBhIHNwZWNpZmljIHR5cGUsIGxpa2UgRXRoZXJuZXQsIFBDSWUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgXCJtbWRcIiBwYXJ0IGlzIGludHJpZ3VpbmcuIElzIGl0IHJlbGF0ZWQgdG8gdGhlIFwiTWVzc2FnZSBNb2RlIERldmljZVwiIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJJ2QgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGhlYWRlciBmaWxlcyBvciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBiZWluZyB1c2VkLiBJJ2xsIG5lZWQgdG8ga25vdyB0aGUgdW5kZXJseWluZyBidXMsIGJlIGl0IEkyQywgU1BJLCBvciBhIGN1c3RvbSBvbmUsIHRvIGZ1bGx5IGdyYXNwIGl0cyBmdW5jdGlvbi5cblxuVGhlbiBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgZXJyb3Igc2NlbmFyaW9zLiBXaGF0IGtpbmQgb2YgZXJyb3IgaGFuZGxpbmcgaXMgaW1wbGVtZW50ZWQ/IERvZXMgaXQgY2hlY2sgZm9yIHdyaXRlIHRpbWVvdXRzIG9yIGJ1cyBlcnJvcnM/IElzIHRoZXJlIGFueSByZXRyeSBsb2dpYz8gRG9lcyBpdCBsb2cgZXJyb3JzIGluIGEgdXNlZnVsIHdheSBvciBqdXN0IHJldHVybiBhIGdlbmVyaWMgZXJyb3IgY29kZT8gQ29uc2lkZXJpbmcgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZXNlIHR5cGVzIG9mIHJvdXRpbmVzLCByb2J1c3QgZXJyb3IgaGFuZGxpbmcgaXMgcGFyYW1vdW50LiBJZiBhIHdyaXRlIGZhaWxzLCBpdCBjYW4gaW1wYWN0IGVudGlyZSBzeXN0ZW0gb3BlcmF0aW9uLCB0aGVyZWZvcmUgSSBzaG91bGQgYmUgY2hlY2tpbmcgZm9yIHRoZSBlcnJvci1oYW5kbGluZyBtZXRob2QgdXNlZC5cblxuSSBhbHNvIHdvbmRlciBhYm91dCBjb25jdXJyZW5jeSBpc3N1ZXMuIElzIHRoaXMgZnVuY3Rpb24gcmUtZW50cmFudD8gRG9lcyBpdCBuZWVkIGFueSBraW5kIG9mIG11dGV4IG9yIHNlbWFwaG9yZSB0byBwcm90ZWN0IHNoYXJlZCByZXNvdXJjZXMsIHBhcnRpY3VsYXJseSBpZiBpdCdzIG9wZXJhdGluZyBvbiBhIHNoYXJlZCBtZW1vcnkgbWFwPyBBbnkgbXVsdGl0aHJlYWRpbmcgaW4gdGhlIGRyaXZlciBjb250ZXh0IHdvdWxkIG5lZWQgdGhhdCBwcm90ZWN0aW9uIHRvIHJlbWFpbiBzdGFibGUuXG5cbk15IG5leHQgc3RlcCB3b3VsZCBiZSB0byB0cmFjZSBpdHMgY2FsbHMgYW5kIHNlZSB3aGVyZSBhbmQgaG93IGl0J3MgdXNlZC4gS25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbnMgd2lsbCBnaXZlIG1lIHNpZ25pZmljYW50IGluc2lnaHQgaW50byB0aGUgZGF0YSBiZWluZyB3cml0dGVuLCB0aGUgcHVycG9zZSBvZiB0aGUgd3JpdGUsIGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBVbHRpbWF0ZWx5LCBJJ2Qgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBkYXRhIHBhdGggZm9yIHdyaXRpbmcuXG5cbkZpbmFsbHksIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBjb2RlIGl0c2VsZi4gSSdkIGJlIGxvb2tpbmcgZm9yOlxuXG4qICAgKipSZWdpc3RlciBvZmZzZXRzIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMqKjogQXJlIHRoZXkgY2xlYXJseSBkZWZpbmVkPyBBcmUgdGhlcmUgYW55IGNvbW1lbnRzIGV4cGxhaW5pbmcgd2hhdCBlYWNoIGJpdGZpZWxkIHJlcHJlc2VudHM/XG4qICAgKipEYXRhIHBhY2tpbmcqKjogSXMgdGhlIGRhdGEgYmVpbmcgcGFja2VkIG9yIHVucGFja2VkIGNvcnJlY3RseT8gV2hhdCdzIHRoZSBieXRlIG9yZGVyP1xuKiAgICoqQnVzIHRyYW5zYWN0aW9ucyoqOiBIb3cgYXJlIHRoZSBidXMgY3ljbGVzIGJlaW5nIG9yY2hlc3RyYXRlZD8gSXMgdGhlcmUgYW55IG9wdGltaXphdGlvbiBnb2luZyBvbj9cbiogICAqKlBvdGVudGlhbCBmb3Igb3B0aW1pemF0aW9uKio6IElzIHRoZXJlIGFueSBvdmVyaGVhZCB0aGF0IGNvdWxkIGJlIG1pbmltaXplZD8gSXMgaXQgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGJ1cyB3aWR0aCwgb3IgdGhlIG1pbmltdW0gbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBwb3NzaWJsZT9cblxuRXNzZW50aWFsbHksIEknbSBleHBlY3RpbmcgdGhpcyBgX19waHlfd3JpdGVfbW1kYCBmdW5jdGlvbiB0byBiZSBhIGtleSBidWlsZGluZyBibG9jayBpbiBhIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhbmQgbXkgYW5hbHlzaXMgd291bGQgaW52b2x2ZSBxdWlja2x5IGRpc3NlY3RpbmcgaXRzIHJvbGUgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgd2l0aGluIHRoYXQgbGF5ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzQzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNDozNi41NzQ5MTE0NTFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzQxMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBfX3BoeV93cml0ZV9tbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9NTAwPUVYUE9SVF9TWU1CT0wocGh5X3JlYWRfbW1kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTUxMS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzo1MTI6aW50IF9fcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2YWQsIHUzMiByZWdudW0sIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtNTEzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjQ6MzYuNjE5MjU5OTY5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMTQ2NzE1NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIGBfX3BoeV93cml0ZV9tbWRgKipcblxuQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBjb2RlIGFuZCBmb2N1cyBvbiBgX19waHlfd3JpdGVfbW1kYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBmdW5jdGlvbi4gSXQncyBjbGVhcmx5IGEgY29yZSBwaWVjZSByZWxhdGVkIHRvIHdyaXRpbmcgdG8gdGhlIE1NRCwgbGlrZWx5IHdpdGhpbiB0aGUgUEhZIChQaHlzaWNhbCBMYXllcikgb2YgdGhpcyBzeXN0ZW0uIEkgaW1tZWRpYXRlbHkgd2FudCB0byBncmFzcCBpdHMgcHVycG9zZSwgaG93IGl0J3MgdXNlZCwgYW5kIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuIGZvciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemF0aW9uLCBnaXZlbiBteSBleHBlcnRpc2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaXQncyB3cml0aW5nLCBob3cgaXQgZGV0ZXJtaW5lcyB0aGUgdmFsdWVzLCBhbmQgd2hlcmUgdGhpcyBkYXRhIGlzIGNvbWluZyBmcm9tLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE2OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI0OjQwLjgzMzkzNDA4M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MTIsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MTI6XFx0aW50IF9fcGh5X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2YWQsIHUzMiByZWdudW0sIHUxNiB2YWwpXFxuIDUxMzpcXHR7XFxuIDUxNDpcXHRcXHRpZiAocmVnbnVtIFxcdTAwM2UgKHUxNil+MCB8fCBkZXZhZCBcXHUwMDNlIDMyKVxcbiA1MTU6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDUxNjpcXHRcXG4gNTE3OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNld3JpdGVfbW1kKVxcbiA1MTg6XFx0XFx0XFx0cmV0dXJuIHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2V3cml0ZV9tbWQocGh5ZGV2LCBkZXZhZCwgcmVnbnVtLCB2YWwpO1xcbiA1MTk6XFx0XFxuIDUyMDpcXHRcXHRyZXR1cm4gbW1kX3BoeV93cml0ZShwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLCBwaHlkZXYtXFx1MDAzZW1kaW8uYWRkcixcXG4gNTIxOlxcdFxcdFxcdFxcdCAgICAgcGh5ZGV2LVxcdTAwM2Vpc19jNDUsIGRldmFkLCByZWdudW0sIHZhbCk7XFxuIDUyMjpcXHR9XFxuIDUyMzpcXHRFWFBPUlRfU1lNQk9MKF9fcGh5X3dyaXRlX21tZCk7XFxuIDUyNDpcXHRcXG4gNTI1OlxcdC8qKlxcbiA1MjY6XFx0ICogcGh5X3dyaXRlX21tZCAtIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciB3cml0aW5nIGEgcmVnaXN0ZXJcXG4gNTI3OlxcdCAqIG9uIGFuIE1NRCBvbiBhIGdpdmVuIFBIWS5cXG4gNTI4OlxcdCAqIEBwaHlkZXY6IFRoZSBwaHlfZGV2aWNlIHN0cnVjdFxcbiA1Mjk6XFx0ICogQGRldmFkOiBUaGUgTU1EIHRvIHJlYWQgZnJvbVxcbiA1MzA6XFx0ICogQHJlZ251bTogVGhlIHJlZ2lzdGVyIG9uIHRoZSBNTUQgdG8gcmVhZFxcbiA1MzE6XFx0ICogQHZhbDogdmFsdWUgdG8gd3JpdGUgdG8gQHJlZ251bVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNDo0MC44MzQwMjUzNDNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2ODQzMTUwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWx0ZWsgUEhZIFdyaXRlIE1lY2hhbmlzbSoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRocm91Z2ggdGhpcyBjb2RlLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBSZWFsdGVrIFBIWSB3cml0ZSBmdW5jdGlvbmFsaXR5IHdvcmtzLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9wZXJhdGlvbiBpcyB0cmlnZ2VyZWQgYnkgYHBoeWRldi1cdTAwM2VkcnYtXHUwMDNld3JpdGVfbW1kYC4gUmlnaHQsIGFuZCBiYXNlZCBvbiB0aGUgY29udGV4dCwgdGhhdCdzIGJlaW5nIGhhbmRsZWQgYnkgYHJ0bGdlbl93cml0ZV9tbWRgLiBTbyB0aGF0J3MgdGhlIFJlYWx0ZWstc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1NRCB3cml0ZS4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGZvciBtZSBpcywgY2FuIHRoaXMgYmUgYWNjZXNzZWQgZnJvbSB1c2Vyc3BhY2U/IElzIHRoZXJlIGEgcGF0aD9cblxuQWgsIHllcywgdGhlIGBTSU9DU01JSVJFR2AgaW9jdGwuIFJpZ2h0LCB0aGF0J3MgdGhlIHN0YW5kYXJkIHdheSB0byBpbnRlcmFjdCB3aXRoIHRoZSBNSUkvTURJTyBpbnRlcmZhY2UgZnJvbSB1c2Vyc3BhY2UuIFNvLCBpdCdzIGRlZmluaXRlbHkgYWNjZXNzaWJsZSwgd2hpY2ggaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZC4gVGltZSB0byBkaXZlIGludG8gYHBoeV9taWlfaW9jdGxgIGFuZCBzZWUgZXhhY3RseSBob3cgdGhhdCBpb2N0bCBjYWxsIG1hcHMgb250byB0aGlzIE1NRCB3cml0ZSBwYXRoLiBVbmRlcnN0YW5kaW5nIHRoZSBgcGh5X21paV9pb2N0bGAgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzM1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNDo0OC42MDI0NTkxN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEyMzYwMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X21paV9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHkuYz0yOTg9RVhQT1JUX1NZTUJPTChwaHlfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0zMDAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjMwMTogKiBwaHlfbWlpX2lvY3RsIC0gZ2VuZXJpYyBQSFkgTUlJIGlvY3RsIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0zMDItICogQHBoeWRldjogdGhlIHBoeV9kZXZpY2Ugc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMzA5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzozMTA6aW50IHBoeV9taWlfaW9jdGwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTMxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtNDMwLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6NDMxOkVYUE9SVF9TWU1CT0wocGh5X21paV9pb2N0bCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTQzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYz00Mzk9aW50IHBoeV9kb19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKmlmciwgaW50IGNtZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy00NDMtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjQ0NDpcXHRyZXR1cm4gcGh5X21paV9pb2N0bChkZXYtXFx1MDAzZXBoeWRldiwgaWZyLCBjbWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy00NDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTI0PWludCBwaHlsaW5rX21paV9pb2N0bChzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTUxLVxcdFxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTUyOlxcdFxcdFxcdHJldCA9IHBoeV9taWlfaW9jdGwocGwtXFx1MDAzZXBoeWRldiwgaWZyLCBjbWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU1My1cXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjQ6NDguNjUzNzAwMTY4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczMjg1ODA3MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIENhbGwgdG8gYHBoeV9taWlfaW9jdGxgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHBoeV9taWlfaW9jdGxgIGZ1bmN0aW9uIGNhbGwuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGdlYXJlZCB0b3dhcmRzIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQgd2l0aGluIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2suIEl0J3MgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZSwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBtZWRpYXRpbmcgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTUlJKSBvciBSZWR1Y2VkIE1JSSAoUk1JSSkgYW5kIHRoZSB1cHBlci1sZXZlbCBuZXR3b3JrIGRyaXZlci5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6IFdoYXQncyB0aGUgdGFyZ2V0IHBsYXRmb3JtPyBXaGF0J3MgdGhlIGtlcm5lbCB2ZXJzaW9uPyBLbm93aW5nIHRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgYW55IHBvdGVudGlhbCBwbGF0Zm9ybS1zcGVjaWZpYyBxdWlya3MuIEknbSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBmdW5jdGlvbidzIGRlZmluaXRpb24sIGxvb2tpbmcgZm9yIGl0cyBhcmd1bWVudHMuIEl0J3Mgc2FmZSB0byBhc3N1bWUgaXQncyBoYW5kbGluZyBgaW9jdGxgIGNhbGxzIHJlbGF0ZWQgdG8gUEhZIChQaHlzaWNhbCBMYXllcikgbWFuYWdlbWVudCwgd2hpY2ggY291bGQgaW5jbHVkZSByZWFkaW5nL3dyaXRpbmcgcmVnaXN0ZXJzLCByZXNldHRpbmcgdGhlIFBIWSwgYXV0b25lZ290aWF0aW9uIGNvbnRyb2wsIGxpbmsgc3RhdHVzIHJldHJpZXZhbCwgYW5kIHNvIG9uLlxuXG5UaGUgbmV4dCB0aGluZyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGlzIHRoZSBkYXRhIHN0cnVjdHVyZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLCBwcm9iYWJseSBzb21lIHNvcnQgb2YgYG1paV9pb2N0bF9kYXRhYCBvciBzaW1pbGFyLiBJIGV4cGVjdCBpdCB0byBoYXZlIGEgYGNtZGAgZmllbGQsIHdoaWNoIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBJcyBpdCBhIHN0YW5kYXJkIHNldCBvZiBgaW9jdGxgIGNvbW1hbmRzIGRlZmluZWQgYnkgdGhlIGtlcm5lbCwgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBjdXN0b20gb25lcyBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYW5kIFBIWSBjaGlwPyBUaGUgc3BlY2lmaWMgYGNtZGAgdmFsdWUgd2lsbCBkcml2ZSBteSBzdWJzZXF1ZW50IGFuYWx5c2lzLlxuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGhhbmRsaW5nLiBBcmUgdGhlcmUgc3VmZmljaWVudCBjaGVja3MgZm9yIGludmFsaWQgY29tbWFuZCB2YWx1ZXMsIG91dC1vZi1yYW5nZSByZWdpc3RlciBhY2Nlc3Nlcywgb3IgcG90ZW50aWFsIGhhcmR3YXJlIGlzc3Vlcz8gSSdtIGdvaW5nIHRvIHdhbnQgdG8gY29uZmlybSBpZiB0aGUgZHJpdmVyIHByb3Blcmx5IGltcGxlbWVudHMgbG9ja2luZyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aGVuIG11bHRpcGxlIHRocmVhZHMgYWNjZXNzIHRoZSBQSFkgY29uY3VycmVudGx5LiBBbmQgSSB3aWxsIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZm9yIGRlYWRsb2Nrcy5cblxuSSBhbHNvIGV4cGVjdCB0byBzZWUgYSBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIFBIWSBkcml2ZXIncyByZWFkL3dyaXRlIGZ1bmN0aW9ucyAoZS5nLiwgYHBoeV9yZWFkYCwgYHBoeV93cml0ZWApLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgaW50ZXJhY3Qgd2l0aCB0aGUgc3BlY2lmaWMgUEhZIGNoaXAuIEkgd2FudCB0byBzZWUgaWYgdGhlIGRyaXZlciBpcyBjb3JyZWN0bHkgaGFuZGxpbmcgYW55IFBIWS1zcGVjaWZpYyBpZGlvc3luY3Jhc2llcywgc3VjaCBhcyByZWdpc3RlciBvZmZzZXRzIG9yIGJpdGZpZWxkIGRlZmluaXRpb25zLiBJJ2xsIHdhbnQgdG8gY2hlY2sgaWYgdGhlIGRyaXZlciBzdXBwb3J0cyBhbGwgdGhlIGRlZmluZWQgc3RhdGVzIGFuZCBtb2RlcywgbGlrZSBhdXRvbmVnb3RpYXRpb24sIGZvcmNlZCBzcGVlZCwgYW5kIGR1cGxleCBzZXR0aW5ncy5cblxuRmluYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgbGlrZSB1bmNoZWNrZWQgdXNlci1wcm92aWRlZCBpbnB1dCB0aGF0IGNvdWxkIGxlYWQgdG8gcmVnaXN0ZXIgY29ycnVwdGlvbiBvciBvdGhlciBleHBsb2l0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ1MjgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNDo1NS45ODIyODMzOTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMTA6XFx0aW50IHBoeV9taWlfaW9jdGwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuIDMxMTpcXHR7XFxuIDMxMjpcXHRcXHRzdHJ1Y3QgbWlpX2lvY3RsX2RhdGEgKm1paV9kYXRhID0gaWZfbWlpKGlmcik7XFxuIDMxMzpcXHRcXHRzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyBrZXJuZWxfY2ZnO1xcbiAzMTQ6XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayBleHRhY2sgPSB7fTtcXG4gMzE1OlxcdFxcdHUxNiB2YWwgPSBtaWlfZGF0YS1cXHUwMDNldmFsX2luO1xcbiAzMTY6XFx0XFx0Ym9vbCBjaGFuZ2VfYXV0b25lZyA9IGZhbHNlO1xcbiAzMTc6XFx0XFx0c3RydWN0IGh3dHN0YW1wX2NvbmZpZyBjZmc7XFxuIDMxODpcXHRcXHRpbnQgcHJ0YWQsIGRldmFkO1xcbiAzMTk6XFx0XFx0aW50IHJldDtcXG4gMzIwOlxcdFxcbiAzMjE6XFx0XFx0c3dpdGNoIChjbWQpIHtcXG4gMzIyOlxcdFxcdGNhc2UgU0lPQ0dNSUlQSFk6XFxuIDMyMzpcXHRcXHRcXHRtaWlfZGF0YS1cXHUwMDNlcGh5X2lkID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHI7XFxuIDMyNDpcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG4gMzI1OlxcdFxcbiAzMjY6XFx0XFx0Y2FzZSBTSU9DR01JSVJFRzpcXG4gMzI3OlxcdFxcdFxcdGlmIChtZGlvX3BoeV9pZF9pc19jNDUobWlpX2RhdGEtXFx1MDAzZXBoeV9pZCkpIHtcXG4gMzI4OlxcdFxcdFxcdFxcdHBydGFkID0gbWRpb19waHlfaWRfcHJ0YWQobWlpX2RhdGEtXFx1MDAzZXBoeV9pZCk7XFxuIDMyOTpcXHRcXHRcXHRcXHRkZXZhZCA9IG1kaW9fcGh5X2lkX2RldmFkKG1paV9kYXRhLVxcdTAwM2VwaHlfaWQpO1xcbiAzMzA6XFx0XFx0XFx0XFx0cmV0ID0gbWRpb2J1c19jNDVfcmVhZChwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLCBwcnRhZCwgZGV2YWQsXFxuIDMzMTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgbWlpX2RhdGEtXFx1MDAzZXJlZ19udW0pO1xcbiAzMzI6XFx0XFxuIDMzMzpcXHRcXHRcXHR9IGVsc2Uge1xcbiAzMzQ6XFx0XFx0XFx0XFx0cmV0ID0gbWRpb2J1c19yZWFkKHBoeWRldi1cXHUwMDNlbWRpby5idXMsIG1paV9kYXRhLVxcdTAwM2VwaHlfaWQsXFxuIDMzNTpcXHRcXHRcXHRcXHRcXHRcXHQgICBtaWlfZGF0YS1cXHUwMDNlcmVnX251bSk7XFxuIDMzNjpcXHRcXHRcXHR9XFxuIDMzNzpcXHRcXG4gMzM4OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAzMzk6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMzQwOlxcdFxcbiAzNDE6XFx0XFx0XFx0bWlpX2RhdGEtXFx1MDAzZXZhbF9vdXQgPSByZXQ7XFxuIDM0MjpcXHRcXG4gMzQzOlxcdFxcdFxcdHJldHVybiAwO1xcbiAzNDQ6XFx0XFxuIDM0NTpcXHRcXHRjYXNlIFNJT0NTTUlJUkVHOlxcbiAzNDY6XFx0XFx0XFx0aWYgKG1kaW9fcGh5X2lkX2lzX2M0NShtaWlfZGF0YS1cXHUwMDNlcGh5X2lkKSkge1xcbiAzNDc6XFx0XFx0XFx0XFx0cHJ0YWQgPSBtZGlvX3BoeV9pZF9wcnRhZChtaWlfZGF0YS1cXHUwMDNlcGh5X2lkKTtcXG4gMzQ4OlxcdFxcdFxcdFxcdGRldmFkID0gbWRpb19waHlfaWRfZGV2YWQobWlpX2RhdGEtXFx1MDAzZXBoeV9pZCk7XFxuIDM0OTpcXHRcXHRcXHR9IGVsc2Uge1xcbiAzNTA6XFx0XFx0XFx0XFx0cHJ0YWQgPSBtaWlfZGF0YS1cXHUwMDNlcGh5X2lkO1xcbiAzNTE6XFx0XFx0XFx0XFx0ZGV2YWQgPSBtaWlfZGF0YS1cXHUwMDNlcmVnX251bTtcXG4gMzUyOlxcdFxcdFxcdH1cXG4gMzUzOlxcdFxcdFxcdGlmIChwcnRhZCA9PSBwaHlkZXYtXFx1MDAzZW1kaW8uYWRkcikge1xcbiAzNTQ6XFx0XFx0XFx0XFx0c3dpdGNoIChkZXZhZCkge1xcbiAzNTU6XFx0XFx0XFx0XFx0Y2FzZSBNSUlfQk1DUjpcXG4gMzU2OlxcdFxcdFxcdFxcdFxcdGlmICgodmFsIFxcdTAwMjYgKEJNQ1JfUkVTRVQgfCBCTUNSX0FORU5BQkxFKSkgPT0gMCkge1xcbiAzNTc6XFx0XFx0XFx0XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0VOQUJMRSlcXG4gMzU4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGNoYW5nZV9hdXRvbmVnID0gdHJ1ZTtcXG4gMzU5OlxcdFxcdFxcdFxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRElTQUJMRTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjQ6NTUuOTgyNDA3NDI5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDgxMDIyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgUEhZIE1JSSBJT0NUTCoqXG5cbkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBvZiB0aGlzIGRyaXZlci4gV2hlbiBgU0lPQ1NNSUlSRUdgIGdldHMgY2FsbGVkLCBpcyBpdCB1c2luZyB0aGUgbW9yZSBzcGVjaWZpYyBgbWRpb2J1c19jNDVfd3JpdGVgIGZ1bmN0aW9uLCBvciB0aGUgZ2VuZXJhbCBgbWRpb2J1c193cml0ZWA/IEkgbmVlZCB0byBiZSBwcmVjaXNlIGFib3V0IGhvdyB0aGlzIE1JSSByZWdpc3RlciB3cml0ZSBpcyBiZWluZyBoYW5kbGVkLiBUaGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBlc3BlY2lhbGx5IHdpdGggUEhZIGludGVyYWN0aW9uLiBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgcmVzdCBvZiBgcGh5X21paV9pb2N0bGAgYW5kIHZlcmlmeSB0aGUgZXhhY3QgcGF0aCBvZiB0aGUgd3JpdGUgb3BlcmF0aW9uLiBHb3R0YSBtYWtlIHN1cmUgaXQncyB0aGUgZXhwZWN0ZWQgb25lIGZvciB0aGUgZ2l2ZW4gUEhZIHR5cGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTQyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNDo1OS41OTA1MTIzODFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNjA6XFx0XFx0XFx0XFx0XFx0XFx0aWYgKHZhbCBcXHUwMDI2IEJNQ1JfRlVMTERQTFgpXFxuIDM2MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xcbiAzNjI6XFx0XFx0XFx0XFx0XFx0XFx0ZWxzZVxcbiAzNjM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VkdXBsZXggPSBEVVBMRVhfSEFMRjtcXG4gMzY0OlxcdFxcdFxcdFxcdFxcdFxcdGlmICh2YWwgXFx1MDAyNiBCTUNSX1NQRUVEMTAwMClcXG4gMzY1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHBoeWRldi1cXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDAwO1xcbiAzNjY6XFx0XFx0XFx0XFx0XFx0XFx0ZWxzZSBpZiAodmFsIFxcdTAwMjYgQk1DUl9TUEVFRDEwMClcXG4gMzY3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHBoeWRldi1cXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDA7XFxuIDM2ODpcXHRcXHRcXHRcXHRcXHRcXHRlbHNlIHBoeWRldi1cXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDtcXG4gMzY5OlxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuIDM3MDpcXHRcXHRcXHRcXHRcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSlcXG4gMzcxOlxcdFxcdFxcdFxcdFxcdFxcdFxcdGNoYW5nZV9hdXRvbmVnID0gdHJ1ZTtcXG4gMzcyOlxcdFxcdFxcdFxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXV0b25lZyA9IEFVVE9ORUdfRU5BQkxFO1xcbiAzNzM6XFx0XFx0XFx0XFx0XFx0fVxcbiAzNzQ6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDM3NTpcXHRcXHRcXHRcXHRjYXNlIE1JSV9BRFZFUlRJU0U6XFxuIDM3NjpcXHRcXHRcXHRcXHRcXHRtaWlfYWR2X21vZF9saW5rbW9kZV9hZHZfdChwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nLFxcbiAzNzc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgdmFsKTtcXG4gMzc4OlxcdFxcdFxcdFxcdFxcdGNoYW5nZV9hdXRvbmVnID0gdHJ1ZTtcXG4gMzc5OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiAzODA6XFx0XFx0XFx0XFx0Y2FzZSBNSUlfQ1RSTDEwMDA6XFxuIDM4MTpcXHRcXHRcXHRcXHRcXHRtaWlfY3RybDEwMDBfbW9kX2xpbmttb2RlX2Fkdl90KHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmcsXFxuIDM4MjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgIHZhbCk7XFxuIDM4MzpcXHRcXHRcXHRcXHRcXHRjaGFuZ2VfYXV0b25lZyA9IHRydWU7XFxuIDM4NDpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gMzg1OlxcdFxcdFxcdFxcdGRlZmF1bHQ6XFxuIDM4NjpcXHRcXHRcXHRcXHRcXHQvKiBkbyBub3RoaW5nICovXFxuIDM4NzpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gMzg4OlxcdFxcdFxcdFxcdH1cXG4gMzg5OlxcdFxcdFxcdH1cXG4gMzkwOlxcdFxcbiAzOTE6XFx0XFx0XFx0aWYgKG1kaW9fcGh5X2lkX2lzX2M0NShtaWlfZGF0YS1cXHUwMDNlcGh5X2lkKSlcXG4gMzkyOlxcdFxcdFxcdFxcdG1kaW9idXNfYzQ1X3dyaXRlKHBoeWRldi1cXHUwMDNlbWRpby5idXMsIHBydGFkLCBkZXZhZCxcXG4gMzkzOlxcdFxcdFxcdFxcdFxcdFxcdCAgbWlpX2RhdGEtXFx1MDAzZXJlZ19udW0sIHZhbCk7XFxuIDM5NDpcXHRcXHRcXHRlbHNlXFxuIDM5NTpcXHRcXHRcXHRcXHRtZGlvYnVzX3dyaXRlKHBoeWRldi1cXHUwMDNlbWRpby5idXMsIHBydGFkLCBkZXZhZCwgdmFsKTtcXG4gMzk2OlxcdFxcbiAzOTc6XFx0XFx0XFx0aWYgKHBydGFkID09IHBoeWRldi1cXHUwMDNlbWRpby5hZGRyIFxcdTAwMjZcXHUwMDI2XFxuIDM5ODpcXHRcXHRcXHQgICAgZGV2YWQgPT0gTUlJX0JNQ1IgXFx1MDAyNlxcdTAwMjZcXG4gMzk5OlxcdFxcdFxcdCAgICB2YWwgXFx1MDAyNiBCTUNSX1JFU0VUKVxcbiA0MDA6XFx0XFx0XFx0XFx0cmV0dXJuIHBoeV9pbml0X2h3KHBoeWRldik7XFxuIDQwMTpcXHRcXG4gNDAyOlxcdFxcdFxcdGlmIChjaGFuZ2VfYXV0b25lZylcXG4gNDAzOlxcdFxcdFxcdFxcdHJldHVybiBwaHlfc3RhcnRfYW5lZyhwaHlkZXYpO1xcbiA0MDQ6XFx0XFxuIDQwNTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDA2OlxcdFxcbiA0MDc6XFx0XFx0Y2FzZSBTSU9DU0hXVFNUQU1QOlxcbiA0MDg6XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlbWlpX3RzIFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlbWlpX3RzLVxcdTAwM2Vod3RzdGFtcF9zZXQpIHtcXG4gNDA5OlxcdFxcdFxcdFxcdGlmIChjb3B5X2Zyb21fdXNlcihcXHUwMDI2Y2ZnLCBpZnItXFx1MDAzZWlmcl9kYXRhLCBzaXplb2YoY2ZnKSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI0OjU5LjU5MDY3Mjc0MVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTIyOTAwMDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIFBIWSBNTUQgV3JpdGUgRnVuY3Rpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcGh5X21paV9pb2N0bGAgYW5kIEknbSBwcmV0dHkgc3VyZSBpdCAqZG9lc24ndCogZGlyZWN0bHkgY2FsbCBgcGh5X3dyaXRlX21tZGAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBpdCB3b3VsZCwgYnV0IG5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYWN0dWFsIGNhbGwgY2hhaW4uIE5vdywgSSBzZWUgdGhhdCBgcGh5X3dyaXRlX21tZGAgZ2V0cyBjYWxsZWQgZnJvbSBgZ2VucGh5X3dyaXRlX21tZF9jNDVgLCB3YWl0IGEgbWludXRlLCBubyB0aGF0IGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGlzIG1vcmUgY2FyZWZ1bGx5LlxuXG5MZXQgbWUgc2VlLi4uIHdoZXJlICppcyogYHBoeV93cml0ZV9tbWRgIGFjdHVhbGx5IGdldHRpbmcgY2FsbGVkPyBIbW0sIGl0IGxvb2tzIGxpa2UgYHBoeV93cml0ZV9tbWRgIGdldHMgY2FsbGVkIGluIGBydGxnZW5fd3JpdGVfbW1kYD8gTm8sIHdhaXQgYSBtaW51dGUsIGBydGxnZW5fd3JpdGVfbW1kYCBpcyBqdXN0IHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgYC53cml0ZV9tbWRgLiBTbywgSSBuZWVkIHRvIGtub3cgd2hlcmUgYC53cml0ZV9tbWRgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQuXG5cblJpZ2h0LCBoZXJlIHdlIGdvLi4uIGxvb2tzIGxpa2UgYC53cml0ZV9tbWRgIGlzIGNhbGxlZCBpbiBgX19waHlfd3JpdGVfbW1kYC4gVGhhdCdzIHRoZSBrZXkuIEFuZCBgX19waHlfd3JpdGVfbW1kYCBpcyAqZGlyZWN0bHkqIGNhbGxlZCBieSBgcGh5X3dyaXRlX21tZGAgaXRzZWxmLiBPa2F5LCB0aGF0J3Mgbm90IHRvbyBzdXJwcmlzaW5nLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcGFydC4gYHBoeV93cml0ZV9tbWRgIGlzIHRoZSB3b3JraG9yc2UuIEkgc2VlIGl0IGdldHMgY2FsbGVkIGZyb20gYSBidW5jaCBvZiBwbGFjZXMgd2l0aGluIHRoZSB2YXJpb3VzIFBIWSBkcml2ZXIgaW1wbGVtZW50YXRpb25zIC0gYXMgZXhwZWN0ZWQsIHRoYXQgbWFrZXMgc2Vuc2UuIEFuZCwgSSBzZWUgaXQncyBhbHNvIGNhbGxlZCBieSBzb21lIG9mIHRoZSBtb3JlIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgbGlrZSBgcGh5X2luaXRfZWVlYCBhbmQgYHBoeV9ldGh0b29sX3NldF9lZWVgIGFuZCBvdGhlciBQSFkgY29uZmlndXJhdGlvbiByb3V0aW5lcy4gU28sIGl0cyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUsIGFuZCB1c2VkIGJyb2FkbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTc1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MDYuNTEzNTc1NzA0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMzNDQ0OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X3dyaXRlX21tZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI1OjA2LjU1ODkxODY1MloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDg1NjAyNjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgRXRoZXJuZXQgZW5lcmd5IGVmZmljaWVuY3ksIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcmUuIEdpdmVuIHdoYXQgSSdtIGRlYWxpbmcgd2l0aCwgbXkgZmlyc3QgaHVuY2ggaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBsb3ctbGV2ZWwgUEhZIHNldHRpbmdzLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBleGFtaW5pbmcgdGhlIGBwaHlfZXRodG9vbF9zZXRfZWVlYCBmdW5jdGlvbiAob3Igc29tZXRoaW5nIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IGlmIHRoZSBzeXN0ZW0gdXRpbGl6ZXMgYSBjdXN0b20gb3IgdmVuZG9yLXNwZWNpZmljIG5hbWluZyBjb252ZW50aW9uKS4gSXQncyBhIHByZXR0eSBzdGFuZGFyZCBhcHByb2FjaCwgc28gdGhhdCdzIHdoZXJlIEknZCBzdGFydC4gSSBzdXNwZWN0IHRoYXQncyB3aGVyZSBJIGNhbiBmaW5kIHRoZSBjb250cm9sIHBvaW50cyB0byBhZGp1c3QgRUVFIGNhcGFiaWxpdGllcy4gSWYgdGhhdCBkb2Vzbid0IHlpZWxkIHJlc3VsdHMsIEknZCB0cmFjZSBiYWNrIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjI0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MTMuMDQ0NTI0OTc4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzU1NDYzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfd3JpdGVfbW1kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODI4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTI3NT1zdGF0aWMgaW50IGFkaW5fY29uZmlnX3JnbWlpX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzE2LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzE3OlxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zMTgtXFx0XFx0XFx0ICAgICBBRElOMTMwMF9HRV9SR01JSV9DRkdfUkVHLCByZWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz0zMjE9c3RhdGljIGludCBhZGluX2NvbmZpZ19ybWlpX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzQzLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzQ0OlxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDUtXFx0XFx0XFx0ICAgICBBRElOMTMwMF9HRV9STUlJX0NGR19SRUcsIHJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYz0xOTI9c3RhdGljIGludCBhZGluX3NldF9wb3dlcmRvd25fbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTk1LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjE5NjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTk3LVxcdFxcdFxcdCAgICBBRElOX0NSU01fU0ZUX1BEX0NOVFJMLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jPTQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhZGluMTE0MF9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy01NC1cXHRcXHQucmVhZF9tbWQgPSBnZW5waHlfcmVhZF9tbWRfYzQ1LFxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYzo1NTpcXHRcXHQud3JpdGVfbW1kID0gZ2VucGh5X3dyaXRlX21tZF9jNDUsXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTU2LVxcdFxcdC5nZXRfcGxjYV9jZmcgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM9MjcyPXN0YXRpYyBpbnQgYW44ODAxcl9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zMDAtXFx0XFx0XFx0XFx0ICAgICBMRURfQkxJTktfRFVSX01BU0spO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MzAxOlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEVEX0JMSU5LX0RVUixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMwMi1cXHRcXHRcXHRcXHQgICAgYmxpbmtfZHVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMzA1LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MzA2OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEVEX09OX0RVUixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMwNy1cXHRcXHRcXHRcXHQgICAgaHdfZGVsYXlfb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz05MDI9c3RhdGljIGludCBhbjg4MDFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkxMS1cXHQvKiBEaXNhYmxlIExvdyBQb3dlciBNb2RlIChMUE0pICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5MTI6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBTjg4MDFfUkVHX1BIWV9JTlRFUk5BTDAsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MTMtXFx0XFx0XFx0ICAgIEZJRUxEX1BSRVAoQU44ODAxX1BIWV9JTlRGVU5DX01BU0ssIDB4MWUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTE2LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTE3OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQU44ODAxX1JFR19QSFlfSU5URVJOQUwxLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTE4LVxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfSU5URlVOQ19NQVNLLCAweDIpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTU3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTU4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk1OS1cXHRcXHRcXHQgICAgQU44ODAxX1BIWV9UWF9QQUlSX0RMWV9TRUxfR0JFLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NjQtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NjU6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBTjg4MDFfUEhZX1JYQURDX0NUUkwsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NjYtXFx0XFx0XFx0ICAgIEFOODgwMV9QSFlfUlhBRENfU0FNUF9QSFNFTF9BIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTcwLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTcxOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQU44ODAxX1BIWV9SWEFEQ19SRVZfMCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk3Mi1cXHRcXHRcXHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX1JYQURDX1JFVl9NQVNLX0EsIDEpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTc1LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTc2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQU44ODAxX1BIWV9SWEFEQ19SRVZfMSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk3Ny1cXHRcXHRcXHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX1JYQURDX1JFVl9NQVNLX0MsIDEpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTYxMD1zdGF0aWMgaW50IGFpcl9od19sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjI4LVxcdGlmIChjaGFuZ2VkKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYyOTpcXHRcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYzMC1cXHRcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX0JMSU5LKGluZGV4KSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTcwOD1zdGF0aWMgaW50IGFpcl9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NjQtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzY1OlxcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0JMSU5LKGluZGV4KSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NjYtXFx0XFx0XFx0ICAgICBibGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz03OTc9c3RhdGljIGludCBhaXJfbGVkc19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBudW0sIGludCBkdXIsIGludCBtb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODAxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgwMjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0RVUl9CTElOSyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDMtXFx0XFx0XFx0ICAgIGR1cik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODA3OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfRFVSX09OLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwOC1cXHRcXHRcXHQgICAgZHVyIFxcdTAwM2VcXHUwMDNlIDEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTI4MT1zdGF0aWMgaW50IGVuODgxMWhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyOTgtXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI5OTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8xLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDAtXFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8xX01PREUxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDItXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzAzOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzIsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwNC1cXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzJfTU9ERTEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwNi1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDc6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA4LVxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfM19NT0RFMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzEwLVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMxMTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF80LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMTItXFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X01PREUxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTE0NTI9c3RhdGljIGludCBlbjg4MTFoX2NsZWFyX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NTUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQ1NjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NTctXFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX0RPQ01EKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQ2MTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF80LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjItXFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X0lOVENMUik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYz05MD1zdGF0aWMgaW50IGFxcl9md19sb2FkX21lbW9yeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk1LVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjk2OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy05Ny1cXHRcXHQgICAgICBWRU5EMV9HTE9CQUxfTUFJTEJPWF9JTlRFUkZBQ0UxLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTk4LVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTFfQ1JDX1JFU0VUKTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzo5OTpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTAwLVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTAxLVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTNfTVNXX0FERFIoYWRkcikpO1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjEwMjpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTAzLVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMTUtXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTE2OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMTctXFx0XFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNV9NU1dfREFUQSh3b3JkKSk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmM6MTE4OlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNixcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0xMTktXFx0XFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX01BSUxCT1hfSU5URVJGQUNFNl9MU1dfREFUQSh3b3JkKSk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTIwLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjEyMTpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTEsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMTIyLVxcdFxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9NQUlMQk9YX0lOVEVSRkFDRTFfRVhFQ1VURSB8XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYz0xNDk9c3RhdGljIGludCBhcXJfZndfYm9vdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCB1OCAqZGF0YSwgc2l6ZV90IHNpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yNjEtXFx0Lyogc3RhbGwgdGhlIG1pY3JvY3Byb2Nlc3NvciAqL1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjI2MjpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9DT05UUk9MMixcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yNjMtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTCB8IFZFTkQxX0dMT0JBTF9DT05UUk9MMl9VUF9SVU5fU1RBTExfT1ZEKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jLTI4My1cXHQvKiBSZWxlYXNlIHRoZSBtaWNyb3Byb2Nlc3Nvci4gVVBfUkVTRVQgbXVzdCBiZSBoZWxkIGZvciAxMDAgdXNlYy4gKi9cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYzoyODQ6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfQ09OVFJPTDIsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjg1LVxcdFxcdCAgICAgIFZFTkQxX0dMT0JBTF9DT05UUk9MMl9VUF9SVU5fU1RBTEwgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2Zpcm13YXJlLmMtMjg5LVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9maXJtd2FyZS5jOjI5MDpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0dMT0JBTF9DT05UUk9MMixcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfZmlybXdhcmUuYy0yOTEtXFx0XFx0ICAgICAgVkVORDFfR0xPQkFMX0NPTlRST0wyX1VQX1JVTl9TVEFMTF9PVkQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2h3bW9uLmM9NTU9c3RhdGljIGludCBhcXJfaHdtb25fc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCByZWcsIGxvbmcgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYy02NC1cXHQvKiB0ZW1wIGlzIGluIHMxNiByYW5nZSBhbmQgd2UncmUgaW50ZXJlc3RlZCBpbiBsb3dlciAxNiBiaXRzIG9ubHkgKi9cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfaHdtb24uYzo2NTpcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCByZWcsICh1MTYpdGVtcCk7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX2h3bW9uLmMtNjYtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYz0yNTM9c3RhdGljIGludCBhcXJfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY0LVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MjY1OlxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9UWF9WRU5EX0lOVF9NQVNLMixcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI2Ni1cXHRcXHRcXHQgICAgZW4gPyBNRElPX0FOX1RYX1ZFTkRfSU5UX01BU0syX0xJTksgOiAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMjY5LVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MjcwOlxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgVkVORDFfR0xPQkFMX0lOVF9TVERfTUFTSyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI3MS1cXHRcXHRcXHQgICAgZW4gPyBWRU5EMV9HTE9CQUxfSU5UX1NURF9NQVNLX0FMTCA6IDApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0yNzQtXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoyNzU6XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9HTE9CQUxfSU5UX1ZFTkRfTUFTSyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTI3Ni1cXHRcXHRcXHQgICAgZW4gPyBWRU5EMV9HTE9CQUxfSU5UX1ZFTkRfTUFTS19HTE9CQUwzIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM9MzY5PXN0YXRpYyBpbnQgYXFyMTA1X3NldHVwX2ZvcmNlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDEtXFx0fVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6NDAyOlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl9BRFZFUlRJU0UsIGFkdik7XFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDMtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy00MDQtXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjQwNTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIE1ESU9fQU5fVkVORF9QUk9WLCB2ZW5kKTtcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTQwNy1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6NDA4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9BTiwgTURJT19BTl8xMEdCVF9DVFJMLCBjdHJsMTApO1xcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtNDA5LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYz0yOTc9c3RhdGljIGludCBhZW9uX2Zpcm13YXJlX2Jvb3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgdTggKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMwNy1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjMwODpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0ZXX1NUQVJUX0FERFIsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMDktXFx0XFx0XFx0ICAgIEFFT05fQk9PVF9BRERSKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMzI5LVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MzMwOlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMzMS1cXHRcXHRcXHRcXHQgICAgVkVORDFfR0xCX1JFR19NRElPX0lORElSRUNUX0xPQUQsIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTMzNS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjMzNjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zMzctXFx0XFx0XFx0ICAgIFZFTkQxX0dMQl9SRUdfQ1BVX1JFU0VUX0FERFJfTE9fQkFTRUFERFIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTM0MS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjM0MjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0zNDMtXFx0XFx0XFx0ICAgIFZFTkQxX0dMQl9SRUdfQ1BVX1JFU0VUX0FERFJfSElfQkFTRUFERFIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jPTQwNT1zdGF0aWMgaW50IGFlb25faXBjX3NlbmRfY21kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTQyMi1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjQyMzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFZFTkQxX0lQQ19DTUQsIGNtZCk7XFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy00MjQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9NDU1PXN0YXRpYyBpbnQgYWVvbl9pcGNfc2VuZF9tc2coc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtNDcxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkYXRhX2xlbiAvIHNpemVvZih1MTYpOyBpKyspXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzo0NzI6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBWRU5EMV9JUENfREFUQShpKSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTQ3My1cXHRcXHRcXHQgICAgICBkYXRhW2ldKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTM3Mj1pbnQgYmNtX3BoeV9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtMzg1LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjM4NjpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfQU4sIEJSQ01fQ0w0NVZFTl9FRUVfQ09OVFJPTCwgKHUzMil2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTM4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTQwNC1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo0MDU6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX0FOLCBCQ01fQ0w0NVZFTl9FRUVfQURWLCAodTMyKXZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNDA2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYz02Mjg9c3RhdGljIGludCBiY203eHh4XzI4bm1fZXBoeV9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYy02NTctXFxuZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYzo2NTg6c3RhdGljIGludCBiY203eHh4XzI4bm1fZXBoeV93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jLTY1OS1cXHRcXHRcXHRcXHQgICAgICAgaW50IGRldm51bSwgdTE2IHJlZ251bSwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmM9ODIxPXN0YXRpYyBpbnQgYmNtN3h4eF8yOG5tX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jLTg4Ni1cXHQucmVhZF9tbWRcXHQ9IGJjbTd4eHhfMjhubV9lcGh5X3JlYWRfbW1kLFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jOjg4NzpcXHQud3JpdGVfbW1kXFx0PSBiY203eHh4XzI4bm1fZXBoeV93cml0ZV9tbWQsXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9iY203eHh4LmMtODg4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jPTk5PXN0YXRpYyBpbnQgYmNtODQ4OXhfbGVkX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTAzLVxcbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jOjEwNDpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfUE1BUE1ELFxcbmRyaXZlcnMvbmV0L3BoeS9iY204NDg4MS5jLTEwNS1cXHRcXHRcXHQgICAgYmNtODQ4OXhfbGVkX3JlZ3NbaW5kZXhdLm1hc2tfbG93LCBsb3cpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTA3LVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmM6MTA4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QTUFQTUQsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg0ODgxLmMtMTA5LVxcdFxcdFxcdCAgICBiY204NDg5eF9sZWRfcmVnc1tpbmRleF0ubWFza19leHQsIGV4dCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jPTM0PXN0YXRpYyBpbnQgYmNtODd4eF9vZl9yZWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy02OC1cXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jOjY5OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBkZXZpZCwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtNzAtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtODd4eC5jPTE0MD1zdGF0aWMgaW50IGJjbTg3eHhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmMtMTU0LVxcdFxcdHJlZyB8PSAxO1xcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM6MTU1OlxcdFxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QQ1MsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTYtXFx0XFx0XFx0XFx0ICAgIEJDTTg3WFhfTEFTSV9DT05UUk9MLCByZWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNTgtXFx0XFx0cmVnIFxcdTAwMjY9IH4xO1xcbmRyaXZlcnMvbmV0L3BoeS9iY204N3h4LmM6MTU5OlxcdFxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9QQ1MsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTg3eHguYy0xNjAtXFx0XFx0XFx0XFx0ICAgIEJDTTg3WFhfTEFTSV9DT05UUk9MLCByZWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYz0yMTQ9c3RhdGljIGludCBkcDgzODIyX2NvbmZpZ193b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjI5LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM6MjMwOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0RBMSxcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTIzMS1cXHRcXHRcXHQgICAgICAobWFjWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgbWFjWzBdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjIzMjpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIE1JSV9EUDgzODIyX1dPTF9EQTIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yMzMtXFx0XFx0XFx0ICAgICAgKG1hY1szXSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY1syXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyMzQ6XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfRFA4MzgyMl9XT0xfREEzLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjM1LVxcdFxcdFxcdCAgICAgIChtYWNbNV0gXFx1MDAzY1xcdTAwM2MgOCkgfCBtYWNbNF0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNDQtXFx0XFx0aWYgKHdvbC1cXHUwMDNld29sb3B0cyBcXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI0NTpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNDYtXFx0XFx0XFx0XFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AxLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjQ3LVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1sxXSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzBdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI0ODpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNDktXFx0XFx0XFx0XFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMjUwLVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1szXSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzJdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jOjI1MTpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNTItXFx0XFx0XFx0XFx0ICAgICAgTUlJX0RQODM4MjJfUlhTT1AzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy0yNjQtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoyNjU6XFx0XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTI2Ni1cXHRcXHRcXHRcXHQgICAgIE1JSV9EUDgzODIyX1dPTF9DRkcsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM9MTA0NT1zdGF0aWMgaW50IGRwODM4MjJfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTEwNTItXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzoxMDUzOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTUlJX0RQODM4MjJfV09MX0NGRywgdmFsdWUgfFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtMTA1NC1cXHRcXHQgICAgICBEUDgzODIyX1dPTF9DTFJfSU5ESUNBVElPTik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTIxMT1zdGF0aWMgaW50IGRwODM4Njdfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzEtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMzI6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQxLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjMzLVxcdFxcdFxcdFxcdCAgICAgIChtYWNbMV0gXFx1MDAzY1xcdTAwM2MgOCB8IG1hY1swXSkpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM0OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzNS1cXHRcXHRcXHRcXHQgICAgICAobWFjWzNdIFxcdTAwM2NcXHUwMDNjIDggfCBtYWNbMl0pKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzNjpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzctXFx0XFx0XFx0XFx0ICAgICAgKG1hY1s1XSBcXHUwMDNjXFx1MDAzYyA4IHwgbWFjWzRdKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0NC1cXHRcXHRpZiAod29sLVxcdTAwM2V3b2xvcHRzIFxcdTAwMjYgV0FLRV9NQUdJQ1NFQ1VSRSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQ1OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0Ni1cXHRcXHRcXHRcXHQgICAgICAod29sLVxcdTAwM2Vzb3Bhc3NbMV0gXFx1MDAzY1xcdTAwM2MgOCkgfCB3b2wtXFx1MDAzZXNvcGFzc1swXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDc6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ4LVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1szXSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzJdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0OTpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTAtXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzVdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbNF0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNzE6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZDRkcsIHZhbF9yeGNmZyk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzItXFx0cGh5X3dyaXRlKHBoeWRldiwgTUlJX0RQODM4NjdfTUlDUiwgdmFsX21pY3IpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz03MzY9c3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgwOC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgwOTpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JHTUlJQ1RMLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODEwLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODExOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUkdNSUlEQ1RMLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODEyLVxcdFxcdFxcdCAgICAgIGRwODM4NjctXFx1MDAzZXJ4X2lkX2RlbGF5IHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODE2LVxcdFxcdHZhbCBcXHUwMDI2PSB+RFA4Mzg2N19SR01JSV9FTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgxNzpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JHTUlJQ1RMLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODE4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODYwLVxcdFxcdFxcdHZhbCBcXHUwMDI2PSB+RFA4Mzg2N19TR01JSV9UWVBFO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODYxOlxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfU0dNSUlDVEwsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04NjItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTkzNT1zdGF0aWMgaW50IGRwODM4NjdfcGh5X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk1My1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjk1NDpcXHRlcnIgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X0RTUF9GRkVfQ0ZHLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTU1LVxcdFxcdFxcdCAgICAweDBlODEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYz0yNTk9c3RhdGljIGludCBkcDgzODY5X3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMjg2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6Mjg3OlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yODgtXFx0XFx0XFx0XFx0XFx0ICAgIERQODM4NjlfUlhGUE1EMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMjkyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6MjkzOlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0yOTQtXFx0XFx0XFx0XFx0XFx0ICAgIERQODM4NjlfUlhGUE1EMixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMjk4LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6Mjk5OlxcdFxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMDAtXFx0XFx0XFx0XFx0XFx0ICAgIERQODM4NjlfUlhGUE1EMyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzEwLVxcdFxcdGlmICh3b2wtXFx1MDAzZXdvbG9wdHMgXFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozMTE6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMxMi1cXHRcXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9SWEZTT1AxLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMTYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzozMTc6XFx0XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTMxOC1cXHRcXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9SWEZTT1AyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy0zMjEtXFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjMyMjpcXHRcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtMzIzLVxcdFxcdFxcdFxcdFxcdCAgICBEUDgzODY5X1JYRlNPUDMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTM0Ni1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjM0NzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLCBEUDgzODY5X1JYRkNGRywgdmFsX3J4Y2ZnKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTM0OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYz02OTQ9c3RhdGljIGludCBkcDgzODY5X2NvbmZpZ3VyZV9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTcxOC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjcxOTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLCBEUDgzODY5X09QX01PREUsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03MjAtXFx0XFx0XFx0ICAgIHBoeV9jdHJsX3ZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc1My1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjc1NDpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzU1LVxcdFxcdFxcdFxcdCAgICBEUDgzODY5X0ZYX0NUUkwsIERQODM4NjlfRlhfQ1RSTF9ERUZBVUxUKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNzY1LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6NzY2OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03NjctXFx0XFx0XFx0XFx0ICAgIERQODM4NjlfRlhfQ1RSTCwgRFA4Mzg2OV9GWF9DVFJMX0RFRkFVTFQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy03ODYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo3ODc6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjlfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTc4OC1cXHRcXHRcXHRcXHQgICAgRFA4Mzg2OV9GWF9DVFJMLCBEUDgzODY5X0ZYX0NUUkxfREVGQVVMVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jPTgwND1zdGF0aWMgaW50IGRwODM4NjlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODM0LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6ODM1OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04MzYtXFx0XFx0XFx0XFx0ICAgIERQODM4NjlfQU5BX1BMTF9QUk9HX1BJLCAweDEwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODQ3LVxcdGlmIChwaHlfaW50ZXJmYWNlX2lzX3JnbWlpKHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjg0ODpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2OV9ERVZBRERSLCBEUDgzODY5X1JHTUlJRENUTCxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTg0OS1cXHRcXHRcXHRcXHQgICAgZHA4Mzg2OS1cXHUwMDNlcnhfaW50X2RlbGF5IHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtODY3LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM6ODY4OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY5X0RFVkFERFIsIERQODM4NjlfUkdNSUlDVEwsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy04NjktXFx0XFx0XFx0XFx0ICAgIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM9OTc9c3RhdGljIGludCBkcDgzODExX3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTItXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExMzpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREExLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTQtXFx0XFx0XFx0ICAgICAgKG1hY1sxXSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY1swXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExNTpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREEyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTYtXFx0XFx0XFx0ICAgICAgKG1hY1szXSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY1syXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjExNzpcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLCBNSUlfRFA4MzgxMV9XT0xfREEzLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMTgtXFx0XFx0XFx0ICAgICAgKG1hY1s1XSBcXHUwMDNjXFx1MDAzYyA4KSB8IG1hY1s0XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTI3LVxcdFxcdGlmICh3b2wtXFx1MDAzZXdvbG9wdHMgXFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jOjEyODpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4MzgxMV9ERVZBRERSLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMjktXFx0XFx0XFx0XFx0ICAgICAgTUlJX0RQODM4MTFfUlhTT1AxLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYy0xMzAtXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMF0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxMzE6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4MTFfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTMyLVxcdFxcdFxcdFxcdCAgICAgIE1JSV9EUDgzODExX1JYU09QMixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTMzLVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1szXSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzJdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmM6MTM0OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTEzNS1cXHRcXHRcXHRcXHQgICAgICBNSUlfRFA4MzgxMV9SWFNPUDMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RjODExLmMtMTQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGM4MTEuYzoxNDg6XFx0XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODExX0RFVkFERFIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0YzgxMS5jLTE0OS1cXHRcXHRcXHRcXHQgICAgIE1JSV9EUDgzODExX1dPTF9DRkcsIHZhbHVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYz01MzA9c3RhdGljIGludCBkcDgzdGQ1MTBfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01MzQtXFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJydXB0cyA9PSBQSFlfSU5URVJSVVBUX0VOQUJMRUQpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NTM1OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNTM2LVxcdFxcdFxcdFxcdCAgICBEUDgzVEQ1MTBFX0lOVEVSUlVQVF9SRUdfMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy01NDYtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NTQ3OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNTQ4LVxcdFxcdFxcdFxcdCAgICBEUDgzVEQ1MTBFX0lOVEVSUlVQVF9SRUdfMSwgMHgwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYz02ODQ9c3RhdGljIGludCBkcDgzdGQ1MTBfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTczOC1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzM5OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9URFJfQ0ZHMixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzQwLVxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKERQODNURDUxMEVfVERSX0VORF9UQVBfSU5ERVhfMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NDYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jOjc0NzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURDUxMEVfVERSX0ZBVUxUX0NGRzEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc0OC1cXHRcXHRcXHQgICAgRklFTERfUFJFUChEUDgzVEQ1MTBFX1REUl9GTFRfTE9DX09GRlNFVF8xLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc1Ny1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmM6NzU4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RENTEwRV9VTktOXzAzMEUsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZDUxMC5jLTc1OS1cXHRcXHRcXHQgICAgRFA4M1RENTEwRV8wMzBFX1ZBTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RkNTEwLmMtNzYyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYzo3NjM6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEQ1MTBFX1REUl9DRkczLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGQ1MTAuYy03NjQtXFx0XFx0XFx0ICAgIERQODNURDUxMEVfVERSX1RYX0RVUkFUSU9OX1VTX0RFRik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM9MzI0PXN0YXRpYyBpbnQgZHA4M3RnNzIwX2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNDAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM0MTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVERSX0NGRzIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0Mi1cXHRcXHRcXHQgICAgMHhhMDA4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNDUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM0NjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVERSX0NGRzMsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM0Ny1cXHRcXHRcXHQgICAgMHgwOTI4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNTAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM1MTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVERSX0NGRzQsXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTM1Mi1cXHRcXHRcXHQgICAgMHgwMDA0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNTUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jOjM1NjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIERQODNURzcyMFNfVU5LTk9XTl8wNDA1LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYy0zNTctXFx0XFx0XFx0ICAgIDB4NjQwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzYwLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzdGc3MjAuYzozNjE6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBEUDgzVEc3MjBTX1VOS05PV05fMDgzRixcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtMzYyLVxcdFxcdFxcdCAgICAweDMwMDMpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jPTU1OD1zdGF0aWMgaW50IGRwODN0ZzcyMF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODN0ZzcyMC5jLTU3NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmM6NTc2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgRFA4M1RHNzIwU19MUFNfQ0ZHMyxcXG5kcml2ZXJzL25ldC9waHkvZHA4M3RnNzIwLmMtNTc3LVxcdFxcdFxcdCAgICBEUDgzVEc3MjBTX0xQU19DRkczX1BXUl9NT0RFXzApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYz0yNDU9c3RhdGljIGludCB4d2F5X2dwaHlfaW5pdF9sZWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI1OS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI2MDpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRENILFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjYxLVxcdFxcdCAgICAgIFhXQVlfTU1EX0xFRENIX05BQ1NfTk9ORSB8XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTI2My1cXHRcXHQgICAgICBYV0FZX01NRF9MRURDSF9GQkZfRjE2SFopO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjY0OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEQ0wsXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNjUtXFx0XFx0ICAgICAgWFdBWV9NTURfTEVEQ0hfQ0JMSU5LX05PTkUgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yNzYtXFx0XFx0WFdBWV9NTURfTEVEeExfQkxJTktTX05PTkU7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyNzc6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQwSCwgbGVkeGgpO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6Mjc4OlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMEwsIGxlZHhsKTtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI3OTpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDFILCBsZWR4aCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyODA6XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUQxTCwgbGVkeGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjgxOlxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgWFdBWV9NTURfTEVEMkgsIGxlZHhoKTtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjI4MjpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFhXQVlfTU1EX0xFRDJMLCBsZWR4bCk7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yODMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTM5Mz1zdGF0aWMgaW50IHh3YXlfZ3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDEwLVxcdGlmICh2YWx1ZSA9PSBMRURfT0ZGKSB7XFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzo0MTE6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUR4SChpbmRleCksIDApO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDEyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTQxNC1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjQxNTpcXHRcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBYV0FZX01NRF9MRUR4TChpbmRleCksIDApO1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtNDE2LVxcdH0gZWxzZSB7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MTMuMDkyMDgzOTY2WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzOTkwNTMxODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYHBoeV93cml0ZV9tbWRgIFVzYWdlKipcblxuT2theSwgc28gYHBoeV93cml0ZV9tbWRgIGlzIGEgZnVuY3Rpb24gdGhhdCdzIGNsZWFybHkgYmVpbmcgdXRpbGl6ZWQgYWNyb3NzIGEgc2lnbmlmaWNhbnQgcG9ydGlvbiBvZiB0aGUgUEhZIGRyaXZlciBjb2RlYmFzZS4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBicm9hZGx5IHVzZWQgbWVyaXRzIGNhcmVmdWwgc2NydXRpbnkuIEJ1dCB3YWl0LCBkaWQgSSBqdXN0IHNlZSB0aGF0IGBwaHlfZXRodG9vbF9zZXRfZWVlYCBpcyBjYWxsaW5nIGBwaHlfd3JpdGVfbW1kYD8gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgaW50ZXJhY3RzIHdpdGggdGhlIE1NRCByZWdpc3RlciB3cml0ZXMsIGFzIHRoaXMgaW50ZXJhY3Rpb24gbWF5IGJlIGltcG9ydGFudCBmb3IgZGVidWcuIExldCdzIGRpZyBpbnRvIGBwaHlfZXRodG9vbF9zZXRfZWVlYCBhbmQgc2VlIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMzYzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MjcuMDgyNjE3ODQ4WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzk0NjUzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZXRodG9vbF9zZXRfZWVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS5jPTE5NTI9RVhQT1JUX1NZTUJPTChwaHlfZXRodG9vbF9nZXRfZWVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTU0LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxOTU1OiAqIHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcgLSBBZGp1c3RzIE1BQyBMUEkgY29uZmlndXJhdGlvbiB3aXRob3V0IFBIWVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTU2LSAqXFx0XFx0XFx0ICAgICAgIHJlbmVnb3RpYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTY3LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxOTY4OnN0YXRpYyB2b2lkIHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTk2OS1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZWVlX2NvbmZpZyAqb2xkX2NmZylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTg5LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxOTkwOiAqIHBoeV9ldGh0b29sX3NldF9lZWUgLSBzZXQgRUVFIHN1cHBvcnRlZCBhbmQgc3RhdHVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE5OTEtICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTk5NS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTk5NjppbnQgcGh5X2V0aHRvb2xfc2V0X2VlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xOTk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDEwLVxcdGlmIChyZXQgPT0gMClcXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MjAxMTpcXHRcXHRwaHlfZXRodG9vbF9zZXRfZWVlX25vbmVnKHBoeWRldiwgXFx1MDAyNm9sZF9jZmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yMDEyLVxcdGVsc2UgaWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMjAxOC19XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjIwMTk6RVhQT1JUX1NZTUJPTChwaHlfZXRodG9vbF9zZXRfZWVlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMjAyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMj1pbnQgcGh5bGlua19ldGh0b29sX3NldF9lZWUoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplZWUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzNDItXFx0XFx0XFx0XFx0ICAgICBwbC1cXHUwMDNlc3VwcG9ydGVkX2xwaSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzQzOlxcdFxcdHJldCA9IHBoeV9ldGh0b29sX3NldF9lZWUocGwtXFx1MDAzZXBoeWRldiwgZWVlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzNDQtXFx0XFx0aWYgKHJldCA9PSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNToyNy4xMzA1NjkxMzZaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY1OTgwMzk4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gcGh5X2V0aHRvb2xfc2V0X2VlZSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgcGh5X2V0aHRvb2xfc2V0X2VlZWAgaW4gYHBoeS5jYC4gU3RyYWlnaHQgYXdheSwgSSdtIGVudmlzaW9uaW5nIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJdCdzIHRoZSBFRUUgKEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQpIHNldHRpbmcgZnVuY3Rpb24sIG1lYW5pbmcgaXQncyBob3cgd2UncmUgY29udHJvbGxpbmcgdGhlIHBvd2VyLXNhdmluZyBiZWhhdmlvciBvZiB0aGUgUEhZLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljIFBIWSByZWdpc3RlcnMgaW52b2x2ZWQgaW4gRUVFIG5lZ290aWF0aW9uIGFuZCBvcGVyYXRpb24uXG5cbkknbSBwcm9iYWJseSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBmdW5jdGlvbidzIGNhbGwgZmxvdyB0byBzZWUgaG93IHRoZSBhcmd1bWVudHMgYXJlIGhhbmRsZWQgYW5kIGlmIHRoZXJlJ3MgYW55IGNyaXRpY2FsIHZhbGlkYXRpb24uIEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgZ2VuZXJpYyBQSFkgZHJpdmVyIGZyYW1ld29yayBhbmQgYW55IHZlbmRvci1zcGVjaWZpYyBleHRlbnNpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheS4gSSdsbCBiZSBsb29raW5nIGZvciBob3cgaXQgc2V0cyB0aGUgQXV0by1NRElYIG1vZGUgYWxvbmdzaWRlIHRoZSBFRUUgY29uZmlndXJhdGlvbiwgc2luY2UgdGhlIGNvbWJpbmF0aW9uIG9mIHRob3NlIHR3byBzZXR0aW5ncyBpcyBwcmV0dHkgaW1wb3J0YW50LlxuXG5JIGV4cGVjdCB0byBzZWUgdGhlIGZ1bmN0aW9uIGludGVyYWN0aW5nIHdpdGggdGhlIE1NRCByZWdpc3RlcnMsIGFzIHRoYXQncyBvZnRlbiB3aGVyZSB0aGUgRUVFIHNldHRpbmdzIGxpdmUuIEknbGwgbmVlZCB0byBjaGVjayBob3cgaXQgaGFuZGxlcyB0aGUgcG90ZW50aWFsIGZvciByZXRyaWVzIG9yIGVycm9yIGhhbmRsaW5nIGR1cmluZyB0aGUgcmVnaXN0ZXIgd3JpdGVzLiBJJ20gYWxzbyBjdXJpb3VzIGlmIGl0IGR5bmFtaWNhbGx5IGFkanVzdHMgYW55IG90aGVyIHNldHRpbmdzIGJhc2VkIG9uIHRoZSBFRUUgY29uZmlndXJhdGlvbiwgbGlrZSBsaW5rIHNwZWVkIG9yIGR1cGxleC4gSXQncyBhbHNvIHdvcnRoIGxvb2tpbmcgZm9yIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBQSFkgcmV2aXNpb25zIG9yIHZlbmRvci1zcGVjaWZpYyBFRUUgZmVhdHVyZXMuIEknbGwgaGF2ZSB0byBzZWUgaWYgdGhlIGRyaXZlciBjb3JyZWN0bHkgaGFuZGxlcyBzaXR1YXRpb25zIHdoZXJlIHRoZSBQSFkgbWlnaHQgbm90IHN1cHBvcnQgRUVFLCBhbmQgYWxzbyBob3cgaXQgcmVwb3J0cyB0aGUgc2V0dGluZyBiYWNrIHRvIHRoZSB1c2VyIHNwYWNlLlxuXG5CYXNpY2FsbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHBpY3R1cmUsIGZyb20gdXNlci1zcGFjZSByZXF1ZXN0IHRvIFBIWSByZWdpc3RlciB3cml0ZXMsIHNvIEkgY2FuIGVuc3VyZSBpdCdzIGRvaW5nIHRoZSByaWdodCB0aGluZywgYW5kIGVmZmljaWVudGx5IHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMyNzUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNTozMi43OTAzNzYzOTdaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTk2LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTk2OlxcdGludCBwaHlfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXFxuMTk5NzpcXHR7XFxuMTk5ODpcXHRcXHRzdHJ1Y3QgZWVlX2NvbmZpZyBvbGRfY2ZnO1xcbjE5OTk6XFx0XFx0aW50IHJldDtcXG4yMDAwOlxcdFxcbjIwMDE6XFx0XFx0aWYgKCFwaHlkZXYtXFx1MDAzZWRydilcXG4yMDAyOlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjIwMDM6XFx0XFxuMjAwNDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHlkZXYtXFx1MDAzZWxvY2spO1xcbjIwMDU6XFx0XFxuMjAwNjpcXHRcXHRvbGRfY2ZnID0gcGh5ZGV2LVxcdTAwM2VlZWVfY2ZnO1xcbjIwMDc6XFx0XFx0ZWVlX3RvX2VlZWNmZyhcXHUwMDI2cGh5ZGV2LVxcdTAwM2VlZWVfY2ZnLCBkYXRhKTtcXG4yMDA4OlxcdFxcbjIwMDk6XFx0XFx0cmV0ID0gZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUocGh5ZGV2LCBkYXRhKTtcXG4yMDEwOlxcdFxcdGlmIChyZXQgPT0gMClcXG4yMDExOlxcdFxcdFxcdHBoeV9ldGh0b29sX3NldF9lZWVfbm9uZWcocGh5ZGV2LCBcXHUwMDI2b2xkX2NmZyk7XFxuMjAxMjpcXHRcXHRlbHNlIGlmIChyZXQgXFx1MDAzYyAwKVxcbjIwMTM6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VlZWVfY2ZnID0gb2xkX2NmZztcXG4yMDE0OlxcdFxcbjIwMTU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHlkZXYtXFx1MDAzZWxvY2spO1xcbjIwMTY6XFx0XFxuMjAxNzpcXHRcXHRyZXR1cm4gcmV0IFxcdTAwM2MgMCA/IHJldCA6IDA7XFxuMjAxODpcXHR9XFxuMjAxOTpcXHRFWFBPUlRfU1lNQk9MKHBoeV9ldGh0b29sX3NldF9lZWUpO1xcbjIwMjA6XFx0XFxuMjAyMTpcXHQvKipcXG4yMDIyOlxcdCAqIHBoeV9ldGh0b29sX3NldF93b2wgLSBDb25maWd1cmUgV2FrZSBPbiBMQU5cXG4yMDIzOlxcdCAqXFxuMjAyNDpcXHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4yMDI1OlxcdCAqIEB3b2w6IENvbmZpZ3VyYXRpb24gcmVxdWVzdGVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI1OjMyLjc5MDUyNzEzN1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEzNjk3MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZWAgaGFzIGJlZW4gaW52b2tlZC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgZGlnIGluIGFuZCB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLiBHaXZlbiB0aGUgbmFtZSwgSSdtIGJldHRpbmcgaXQgcmVsYXRlcyB0byBzZXR0aW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgcGFyYW1ldGVycywgYW5kIHRoZSBcImdlbnBoeV9jNDVcIiBwcmVmaXggc3VnZ2VzdHMgaXQncyBkZWFsaW5nIHdpdGggYSBnZW5lcmljIFBIWSwgc3BlY2lmaWNhbGx5IG9uZSB0aGF0J3MgbWFuYWdlZCB0aHJvdWdoIHRoZSBDbGF1c2UgNDUgKG9yIE1ESU8pIGludGVyZmFjZSwgbGlrZWx5IHZpYSBhIHN0YW5kYXJkaXplZCByZWdpc3RlciBzZXQuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZTpcblxuKiAgIFdoYXQgc3BlY2lmaWMgRUVFIHBhcmFtZXRlcnMgaXMgaXQgZGVzaWduZWQgdG8gbW9kaWZ5PyBJcyBpdCBjb250cm9sbGluZyB0aGUgYWR2ZXJ0aXNlZCBjYXBhYmlsaXRpZXMsIHRoZSBvcGVyYXRpb25hbCBzZXR0aW5ncywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/XG4qICAgSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZT8gRG9lcyBpdCBkaXJlY3RseSB3cml0ZSB0byB0aGUgUEhZIHJlZ2lzdGVycywgb3IgZG9lcyBpdCB1dGlsaXplIHNvbWUgYWJzdHJhY3Rpb24gbGF5ZXIgb3IgaGVscGVyIGZ1bmN0aW9ucz9cbiogICBXaGF0J3MgdGhlIG92ZXJhbGwgY29udGV4dD8gSXMgdGhpcyBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiwgbGluayBjb25maWd1cmF0aW9uLCBvciBhcyBhIHJlc3BvbnNlIHRvIGFuIGBldGh0b29sYCBjb21tYW5kPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIGNydWNpYWwuXG4qICAgQXJlIHRoZXJlIGFueSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgUEhZIG1vZGVsIG9yIGNhcGFiaWxpdGllcz8gRG9lcyBpdCBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIGNlcnRhaW4gcmVnaXN0ZXJzIG9yIGZlYXR1cmVzPyBJIG5lZWQgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCBmb3IgaGFyZHdhcmUtc3BlY2lmaWMgaGFuZGxpbmcuXG4qICAgV2hhdCBlcnJvciBoYW5kbGluZyBpcyBwcmVzZW50PyBBcmUgdGhlcmUgY2hlY2tzIGZvciBpbnZhbGlkIGlucHV0IG9yIGNvbW11bmljYXRpb24gZmFpbHVyZXMgd2l0aCB0aGUgUEhZP1xuXG5JJ2xsIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGZ1bmN0aW9uJ3MgZXhlY3V0aW9uIHBhdGggYW5kIGNhcmVmdWxseSBleGFtaW5lIHRoZSByZWdpc3RlciBhY2Nlc3Nlcy4gSSdsbCBuZWVkIHRvIGNvcnJlbGF0ZSB0aGVzZSB3aXRoIHRoZSBDbGF1c2UgNDUgc3BlY2lmaWNhdGlvbnMgdG8gZGV0ZXJtaW5lIHRoZSBleGFjdCBpbXBhY3Qgb24gdGhlIFBIWSdzIEVFRSBiZWhhdmlvci4gQW55IHVzZSBvZiBtYXNrcyBvciBiaXRmaWVsZHMgd2lsbCBiZSBvZiBwYXJ0aWN1bGFyIGludGVyZXN0LiBJIHdhbnQgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIHRoaW5ncyBsaWtlIHRoZSBMUEkgKExvdyBQb3dlciBJZGxlKSB0aW1lcnMgYW5kIG90aGVyIEVFRS1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBCYXNpY2FsbHksIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzIGRvaW5nIHRoZSByaWdodCB0aGluZywgaW4gdGhlIHJpZ2h0IHdheSwgYW5kIHVuZGVyIHRoZSByaWdodCBjb25kaXRpb25zLCB3aXRob3V0IHVuaW50ZW50aW9uYWxseSBicmVha2luZyBhbnl0aGluZyBlbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDE2MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MzguMTA0MjI3NTA5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjAzNzAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnZW5waHlfYzQ1X2V0aHRvb2xfc2V0X2VlZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM9MTY1Nz1FWFBPUlRfU1lNQk9MKGdlbnBoeV9jNDVfZXRodG9vbF9nZXRfZWVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY1OS0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE2NjA6ICogZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUgLSBzZXQgRUVFIHN1cHBvcnRlZCBhbmQgc3RhdHVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjYxLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjcxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTY3MjppbnQgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2NzMtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2tlZWUgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE3MDgtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTcwOTpFWFBPUlRfU1lNQk9MKGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE3MTAtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MTk5Nj1pbnQgcGh5X2V0aHRvb2xfc2V0X2VlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTIwMDgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjIwMDk6XFx0cmV0ID0gZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUocGh5ZGV2LCBkYXRhKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMjAxMC1cXHRpZiAocmV0ID09IDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI1OjM4LjE1MDI3MzY3OFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODM5OTM4MTYxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlYCBmdW5jdGlvbi5cblxuKipBbmFseXppbmcgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWUqKlxuXG5SaWdodCwgc28gdGhpcyBmdW5jdGlvbiBpcyBjbGVhcmx5IGFib3V0IHNldHRpbmcgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCAoRUVFKSBwYXJhbWV0ZXJzIGZvciBhIGdlbmVyaWMgUEhZIHRoYXQncyB1c2luZyB0aGUgQ2xhdXNlIDQ1IChDNDUpIHJlZ2lzdGVyIGludGVyZmFjZS4gV2UncmUgZGVhbGluZyB3aXRoIGEgY29tbW9uIFBIWSwgd2hpY2ggbWVhbnMgdGhlcmUncyBhIGdvb2QgY2hhbmNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYSBicm9hZGVyIGRyaXZlciwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgcGljdHVyZS5cblxuRmlyc3QsIEkgbmVlZCB0byBzZWUgaWYgaXQgaGFuZGxlcyB0aGUgY29uZmlndXJhdGlvbiBvZiBFRUUgYmFzZWQgb24gd2hhdCdzIHBhc3NlZCBpbiBmcm9tIGV0aHRvb2wuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyByZXF1aXJlZCBvbiB0aGUgaGFyZHdhcmUgc2lkZSBhbmQgaG93IHRoZSBkcml2ZXIgdHJhbnNsYXRlcyB0aGUgdXNlcidzIGludGVudGlvbiAoZW5hYmxlLCBkaXNhYmxlLCBzcGVjaWZpYyBzZXR0aW5ncykgaW50byBhY3R1YWwgcmVnaXN0ZXIgd3JpdGVzLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl0IHVzZXMgc29tZSBzb3J0IG9mIGhlbHBlciBmdW5jdGlvbnMgb3Igc3RydWN0dXJlcyB0byBhYnN0cmFjdCB0aGUgQzQ1IHJlZ2lzdGVyIGFjY2Vzcywgb3IgaWYgaXQgaGFzIHRvIGRpcmVjdGx5IG1hbmlwdWxhdGUgdGhlIHJlZ2lzdGVycy4gSSdsbCBuZWVkIHRvIGFzc2VzcyBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgd2hhdCB0aGUgZmxvdyBpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgUEhZIHNldHRpbmdzLlxuXG5HaXZlbiB0aGF0IGl0J3MgYGdlbnBoeWAsIEknbSBhc3N1bWluZyBpdCdzIGRlc2lnbmVkIHRvIGJlIGZhaXJseSBnZW5lcmljLCBhbmQgSSdkIGV4cGVjdCBpdCB0byBoYW5kbGUgdGhlIGJpdC1maWRkbGluZyBmb3IgdGhlIHJlbGV2YW50IEM0NSByZWdpc3RlcnMgY29ycmVjdGx5LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGRlYWxzIHdpdGggYWxsIHRoZSBjb3JuZXIgY2FzZXMgcHJvcGVybHksIGVzcGVjaWFsbHkgaWYgdGhlIGRldmljZSBoYXMgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIG9yIGxpbWl0YXRpb25zLiBJIGFsc28gd2FudCB0byBzZWUgaG93IHRoZSBzZXR0aW5ncyBhcmUgdmVyaWZpZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHNldCB2YWx1ZXMgd29yayBhcyBleHBlY3RlZC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCBoYW5kbGVzIGFueSBzcGVjaWFsIGNhc2VzIGZvciBDNDUgUEhZcyBvciBzcGVjaWZpYyBDNDUgdmVyc2lvbnMuIEl0J3MgbGlrZWx5IGFsc28gbG9va2luZyBhdCBzdGFuZGFyZCByZWdpc3RlcnMsIHNvIEkgaGF2ZSB0byBiZSBhYmxlIHRvIGZvbGxvdyB0aGUgZmxvdyBhbmQgc2VlIGhvdyB0aGluZ3MgZ2V0IHNldCB1cCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MTE0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjY6MjYuNTQ5NjU4MTgyWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2NzIsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2NzI6XFx0aW50IGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuMTY3MzpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfa2VlZSAqZGF0YSlcXG4xNjc0OlxcdHtcXG4xNjc1OlxcdFxcdGludCByZXQ7XFxuMTY3NjpcXHRcXG4xNjc3OlxcdFxcdGlmIChkYXRhLVxcdTAwM2VlZWVfZW5hYmxlZCkge1xcbjE2Nzg6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqYWR2ID0gZGF0YS1cXHUwMDNlYWR2ZXJ0aXNlZDtcXG4xNjc5OlxcdFxcbjE2ODA6XFx0XFx0XFx0aWYgKCFsaW5rbW9kZV9lbXB0eShhZHYpKSB7XFxuMTY4MTpcXHRcXHRcXHRcXHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyh0bXApO1xcbjE2ODI6XFx0XFxuMTY4MzpcXHRcXHRcXHRcXHRpZiAobGlua21vZGVfYW5kbm90KHRtcCwgYWR2LCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZF9lZWUpKSB7XFxuMTY4NDpcXHRcXHRcXHRcXHRcXHRwaHlkZXZfd2FybihwaHlkZXYsIFxcXCJBdCBsZWFzdCBzb21lIEVFRSBsaW5rIG1vZGVzIGFyZSBub3Qgc3VwcG9ydGVkLlxcXFxuXFxcIik7XFxuMTY4NTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNjg2OlxcdFxcdFxcdFxcdH1cXG4xNjg3OlxcdFxcbjE2ODg6XFx0XFx0XFx0XFx0bGlua21vZGVfYW5kbm90KHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLCBhZHYsXFxuMTY4OTpcXHRcXHRcXHRcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWVlZV9kaXNhYmxlZF9tb2Rlcyk7XFxuMTY5MDpcXHRcXHRcXHR9IGVsc2UgaWYgKGxpbmttb2RlX2VtcHR5KHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKSkge1xcbjE2OTE6XFx0XFx0XFx0XFx0cGh5X2FkdmVydGlzZV9lZWVfYWxsKHBoeWRldik7XFxuMTY5MjpcXHRcXHRcXHR9XFxuMTY5MzpcXHRcXHR9XFxuMTY5NDpcXHRcXG4xNjk1OlxcdFxcdHJldCA9IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHBoeWRldik7XFxuMTY5NjpcXHRcXHRpZiAocmV0IFxcdTAwM2UgMCkge1xcbjE2OTc6XFx0XFx0XFx0cmV0ID0gcGh5X3Jlc3RhcnRfYW5lZyhwaHlkZXYpO1xcbjE2OTg6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTY5OTpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjE3MDA6XFx0XFxuMTcwMTpcXHRcXHRcXHQvKiBleHBsaWNpdGx5IHJldHVybiAxLCBvdGhlcndpc2UgKHJldCBcXHUwMDNlIDApIHZhbHVlIHdpbGwgYmVcXG4xNzAyOlxcdFxcdFxcdCAqIG92ZXJ3cml0dGVuIGJ5IHBoeV9yZXN0YXJ0X2FuZWcoKS5cXG4xNzAzOlxcdFxcdFxcdCAqL1xcbjE3MDQ6XFx0XFx0XFx0cmV0dXJuIDE7XFxuMTcwNTpcXHRcXHR9XFxuMTcwNjpcXHRcXG4xNzA3OlxcdFxcdHJldHVybiByZXQ7XFxuMTcwODpcXHR9XFxuMTcwOTpcXHRFWFBPUlRfU1lNQk9MKGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKTtcXG4xNzEwOlxcdFxcbjE3MTE6XFx0LyoqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjI2LjU0OTc4NDkyMloiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDkzNDg1MTk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbDogYGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnYCoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb2RlIGZsb3cgaGFzIHJlYWNoZWQgYSBjYWxsIHRvIGBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZ2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGluIGFuZCBkaXNzZWN0IHRoaXMgZnVuY3Rpb24uIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiwgSSdtIGFscmVhZHkgbWFraW5nIHNvbWUgZWR1Y2F0ZWQgZ3Vlc3NlcywgYnV0IGxldCdzIGNvbmZpcm0gdGhlbS4gVGhlIGBnZW5waHlfYCBwcmVmaXggc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyByZWxhdGVkIHRvIGdlbmVyaWMgUEhZIChwaHlzaWNhbCBsYXllcikgb3BlcmF0aW9ucy4gVGhlIFwiQzQ1XCIgcGFydCBwcm9iYWJseSBpbmRpY2F0ZXMgdGhpcyBkZWFscyB3aXRoIENsYXVzZSA0NSByZWdpc3RlcnMsIG1lYW5pbmcgdGhpcyB3aWxsIGJlIGFuIE1ESU8gYmFzZWQgZnVuY3Rpb24uIFwiQU5cIiBpcyBhIG5vIGJyYWluZXIsIG1lYW5pbmcgaXQncyBsaW5rZWQgdG8gYXV0by1uZWdvdGlhdGlvbiwgYW5kIFwiRUVFXCIgcG9pbnRzIHRvIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQuIExhc3RseSwgdGhlIGBhbmVnYCBzdWZmaXgsIHdlbGwuLi4gdGhhdCBsb29rcyBzZWxmLWV4cGxhbmF0b3J5IVxuXG5TbywgdGhlIGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgY29uZmlndXJlIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgYXV0by1uZWdvdGlhdGlvbiwgcHJvYmFibHkgdXNpbmcgdGhlIE1ESU8gaW50ZXJmYWNlLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uJ3MgZGVmaW5pdGlvbiBhbmQgaW1wbGVtZW50YXRpb24sIG1heWJlIGV2ZW4gdGhlIGZ1bmN0aW9uJ3MgdXNhZ2UsIHRvIGZ1bGx5IGdyYXNwIGl0cyByb2xlIHdpdGhpbiB0aGUgd2lkZXIgUEhZIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBUaGlzIHdpbGwgaG9wZWZ1bGx5IGNsYXJpZnkgdGhlIHNwZWNpZmljIHJlZ2lzdGVycyBiZWluZyBhY2Nlc3NlZCwgdGhlIG5lZ290aWF0aW9uIHByb2Nlc3MgbG9naWMsIGFuZCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBpdCBoYXMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLiBJIGV4cGVjdCB0byBzZWUgcmVnaXN0ZXIgd3JpdGVzIHJlbGF0ZWQgdG8gYWR2ZXJ0aXNpbmcgRUVFIGNhcGFiaWxpdGllcyBhbmQgbWF5YmUgcmVhZGluZyBiYWNrIHRoZSByZXN1bHRzIG9mIHRoZSBhdXRvLW5lZ290aWF0aW9uIHByb2Nlc3MuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IEVFRSBpcyBlbmFibGVkIGFuZCBjb25maWd1cmVkIG9uIHRoaXMgcGFydGljdWxhciBQSFkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTUzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNjo0MS40ODQ2NDAxMDRaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzU0MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9MTE0ND1pbnQgYmNtX2NvbmZpZ19scmVfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGNoYW5nZWQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy0xMTQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjExNDg6XFx0aWYgKGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHBoeWRldikgXFx1MDAzZSAwKVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTExNDktXFx0XFx0Y2hhbmdlZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTI2OT1pbnQgZ2VucGh5X2M0NV9hbl9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0yNzYtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoyNzc6XFx0cmV0ID0gZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTI3OC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM9MTA0OD1FWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X3JlYWRfZWVlX2FiaWxpdGllcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNTAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxMDUxOiAqIGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnIC0gY29uZmlndXJlIEVFRSBhZHZlcnRpc2VtZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xMDUyLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA1My0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjEwNTQ6aW50IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xMDU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA3MS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxMDcyOkVYUE9SVF9TWU1CT0xfR1BMKGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTE2NzI9aW50IGdlbnBoeV9jNDVfZXRodG9vbF9zZXRfZWVlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2OTQtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjk1OlxcdHJldCA9IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjk2LVxcdGlmIChyZXQgXFx1MDAzZSAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTIzMDk9aW50IF9fZ2VucGh5X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgY2hhbmdlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjMxNS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjIzMTY6XFx0ZXJyID0gZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWcocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTIzMTctXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjQxLjUzMzAwMDgyM1oiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTUxNjQyNTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gYGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnYC5cblxuKipEaXZpbmcgaW50byBgZ2VucGh5X2M0NV9hbl9jb25maWdfZWVlX2FuZWdgKipcblxuQWxyaWdodCwgSSBzZWUgdGhpcyBpcyBhIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gY29uZmlndXJpbmcgYW5kIGhhbmRsaW5nIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgKEVFRSkgYW5kIEF1dG8tTmVnb3RpYXRpb24gKEFOKSB1c2luZyBhIEM0NSBQSFkgaW50ZXJmYWNlLiBNeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBpbnZvbHZlIG1hbmlwdWxhdGluZyBzcGVjaWZpYyByZWdpc3RlcnMgd2l0aGluIHRoZSBQSFkgdG8gZW5hYmxlLCBkaXNhYmxlLCBhbmQgYWRqdXN0IEVFRSBzZXR0aW5ncywgbGlrZWx5IGluIGNvbmp1bmN0aW9uIHdpdGggQU4gc3RhdGVzLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBsb2dpYyBmb3IgYWR2ZXJ0aXNlbWVudCBvZiBFRUUgY2FwYWJpbGl0aWVzIGR1cmluZyBBTiwgYXMgd2VsbCBhcyB0aGUgYWN0dWFsIHN3aXRjaGluZyBvZiB0aGUgUEhZIGludG8gYW5kIG91dCBvZiBFRUUgbW9kZXMgYmFzZWQgb24gdGhlIGxpbmsgcGFydG5lcidzIHJlc3BvbnNlcy4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGhhbmRsaW5nIG9mIGRpZmZlcmVudCBFRUUgZmxhdm9ycyAoaWYgYXBwbGljYWJsZSwgd2hpY2ggSSBzdXNwZWN0IGl0IGlzKSwgbGlrZSBMUEkgKExvdyBQb3dlciBJZGxlKSBhbmQgbWF5YmUgb3RoZXIgcG93ZXItc2F2aW5nIG1lY2hhbmlzbXMuIFRoZSBDNDUgaW50ZXJmYWNlIHN1Z2dlc3RzIHRoaXMgaXMgYSByZWxhdGl2ZWx5IG1vZGVybiBQSFksIGxpa2VseSB3aXRoIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGFuIGFuIG9sZGVyLCBzaW1wbGVyIGludGVyZmFjZS4gSSdsbCBiZSBsb29raW5nIGZvciByb2J1c3QgZXJyb3IgaGFuZGxpbmcsIGFzIEVFRSBjYW4gYmUgc2Vuc2l0aXZlIHRvIHRpbWluZyBhbmQgbWlzY29uZmlndXJhdGlvbi4gSSdtIGFsc28gaG9waW5nIGZvciBzb21lIGNsZWFyIHN0YXRlIG1hY2hpbmUgbG9naWMgd2l0aGluIHRoaXMgZnVuY3Rpb24sIG1ha2luZyBpdCBlYXNpZXIgdG8gZm9sbG93IHRoZSB0cmFuc2l0aW9ucyBiZXR3ZWVuIEFOIGFuZCBFRUUgc3RhdGVzLiBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcywgZXNwZWNpYWxseSBpZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gYSBtdWx0aS10aHJlYWRlZCBlbnZpcm9ubWVudC4gVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gc2VlIGhvdyB0aGlzIGltcGxlbWVudGF0aW9uIGVuc3VyZXMgb3B0aW1hbCBwb3dlciBzYXZpbmdzIHdoaWxlIG1haW50YWluaW5nIGEgcmVsaWFibGUgbmV0d29yayBjb25uZWN0aW9uLiBMZXQncyBzZWUgaG93IGl0J3MgZG9uZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzQyMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjUwLjY4NDY0NjQ2OVoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDU0LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMDU0OlxcdGludCBnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjEwNTU6XFx0e1xcbjEwNTY6XFx0XFx0LyogV3JpdGluZyBNTUQgQU4gYWR2ZXJ0aXNlbWVudHMgd2hpbGUgYXV0b25lZyBpcyBkaXNhYmxlZCBoYXMgbm9cXG4xMDU3OlxcdFxcdCAqIGVmZmVjdCBvbiBsaW5rLXBhcnRuZXIgbmVnb3RpYXRpb24sIGJ1dCBvbiBzb21lIFBIWXMgKGUuZy4gdGhlXFxuMTA1ODpcXHRcXHQgKiBCcm9hZGNvbSBCQ001NDIxM1BFKSB0aGUgd3JpdGUgaXRzZWxmIGRpc3R1cmJzIHRoZSByZWNlaXZlXFxuMTA1OTpcXHRcXHQgKiBkYXRhcGF0aC4gU2tpcCBpdC5cXG4xMDYwOlxcdFxcdCAqL1xcbjEwNjE6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXFxuMTA2MjpcXHRcXHRcXHRyZXR1cm4gMDtcXG4xMDYzOlxcdFxcbjEwNjQ6XFx0XFx0aWYgKCFwaHlkZXYtXFx1MDAzZWVlZV9jZmcuZWVlX2VuYWJsZWQpIHtcXG4xMDY1OlxcdFxcdFxcdF9fRVRIVE9PTF9ERUNMQVJFX0xJTktfTU9ERV9NQVNLKGFkdikgPSB7fTtcXG4xMDY2OlxcdFxcbjEwNjc6XFx0XFx0XFx0cmV0dXJuIGdlbnBoeV9jNDVfd3JpdGVfZWVlX2FkdihwaHlkZXYsIGFkdik7XFxuMTA2ODpcXHRcXHR9XFxuMTA2OTpcXHRcXG4xMDcwOlxcdFxcdHJldHVybiBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYocGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XFxuMTA3MTpcXHR9XFxuMTA3MjpcXHRFWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X2FuX2NvbmZpZ19lZWVfYW5lZyk7XFxuMTA3MzpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjY6NTAuNjg0NzYxMjQ5WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1Mjk4MDA5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBFRUUgQWR2ZXJ0aXNlbWVudCBXcml0ZSBDYWxsKipcblxuT2theSwgSSBzZWUgdGhlIGNvZGUgaXMgY2FsbGluZyBgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2YC4gUmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIHRoYXQgZnVuY3Rpb24gY2FsbC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYGdlbnBoeWAgcHJlZml4LiBUaGlzIHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBnZW5lcmljIFBIWSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyB0aGUgQzQ1IGludGVyZmFjZS4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQuIEknbSBhc3N1bWluZyBpdCdzIGhhbmRsaW5nIHRoZSBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0IChFRUUpIGFkdmVydGlzZW1lbnQgcmVnaXN0ZXIgd3JpdGUgb3BlcmF0aW9uLiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCBgZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2YCBkb2VzLiBXaGF0IHBhcmFtZXRlcnMgaXMgaXQgdGFraW5nPyBXaGF0IHJlZ2lzdGVyIGFkZHJlc3NlcyBpcyBpdCB3cml0aW5nIHRvLCBhbmQgd2hhdCBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdOKAmXMgY29ycmVjdGx5IGZvcm1pbmcgdGhlIEVFRSBhZHZlcnRpc2VtZW50IGZyYW1lLCBlbnN1cmluZyB0aGUgcHJvcGVyIGJpdCBmaWVsZHMgYXJlIHNldCBhY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkIGFuZCB0aGUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciB0aGlzIHNwZWNpZmljIFBIWS4gSXMgdGhlcmUgYW55IHJlZ2lzdGVyIG1hc2tpbmcgaW52b2x2ZWQ/IEkgbmVlZCB0byBjaGVjayBmb3IgcG90ZW50aWFsIGVycm9yIGhhbmRsaW5nIGFuZCBpZiBpdCdzIHJldHVybmluZyBhbnkgcmVsZXZhbnQgc3RhdHVzIGNvZGVzLiBGaW5hbGx5LCBJ4oCZbGwgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWxldmFudCBQSFkgZGF0YXNoZWV0IHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODE4NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjY6NTcuMjE0NTY1MzgyWiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc4NzU4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTc5MT1FWFBPUlRfU1lNQk9MX0dQTChnZW5waHlfYzQ1X3JlYWRfbWRpeCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTc5My0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjc5NDogKiBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYgLSB3cml0ZSBhZHZlcnRpc2VkIEVFRSBsaW5rIG1vZGVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy03OTUtICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTc5Ny0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjc5ODpzdGF0aWMgaW50IGdlbnBoeV9jNDVfd3JpdGVfZWVlX2FkdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtNzk5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nICphZHYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTEwNTQ9aW50IGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTEwNjYtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxMDY3OlxcdFxcdHJldHVybiBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYocGh5ZGV2LCBhZHYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA2OC1cXHR9XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xMDY5LVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTA3MDpcXHRyZXR1cm4gZ2VucGh5X2M0NV93cml0ZV9lZWVfYWR2KHBoeWRldiwgcGh5ZGV2LVxcdTAwM2VhZHZlcnRpc2luZ19lZWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTA3MS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjU3LjI2MTM1OTQ1MVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzgzMDU5NDczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGlzIGBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZgIGZ1bmN0aW9uLlxuXG4qKkFuYWx5emluZyBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgYSBmZXcga2V5IHF1ZXN0aW9uczogV2hhdCdzIHRoZSBjb250ZXh0PyBXaGF0J3MgdGhlIGxhcmdlciBzeXN0ZW0gdGhpcyBmdW5jdGlvbiBmaXRzIGludG8/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gaGF2ZSBhbnkgY2hhbmNlIG9mIGdyYXNwaW5nIGl0cyBpbm5lciB3b3JraW5ncyBlZmZlY3RpdmVseS4gSSdtIGFzc3VtaW5nLCBnaXZlbiB0aGUgbmFtZSwgaXQgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBnZW5lcmF0aW9uIG9mIFBIWSBjb250cm9sIHNpZ25hbHMsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgYWR2ZXJ0aXNlbWVudCBvdmVyIGEgQzQ1IGludGVyZmFjZSwgbGlrZWx5IHRvIGEgUEhZIGRldmljZS5cblxuTmV4dCwgSSdsbCBiZSBsb29raW5nIGZvciBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgUEhZIGZ1bmN0aW9ucy4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZnVuY3Rpb25zLCBsaWtlIHRob3NlIHJlbGF0ZWQgdG8gcmVnaXN0ZXIgYWNjZXNzIChwcm9iYWJseSB1c2luZyBhbiBNRElPIGludGVyZmFjZSB2aWEgdGhlIEM0NSBjbGF1c2UpLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHdyaXRlIGlzIHBhcnQgb2YgYSBsYXJnZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGEgZHluYW1pYyBjb25maWd1cmF0aW9uIHByb2NlZHVyZSwgb3IgcGVyaGFwcyBhIHJlc3BvbnNlIHRvIHNvbWUgZXh0ZXJuYWwgZXZlbnQgb3Igc3RhdHVzIGNoYW5nZS5cblxuSSdtIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2UgcmVnaXN0ZXIgYWRkcmVzcyBkZWZpbml0aW9ucywgYml0ZmllbGQgbWFuaXB1bGF0aW9ucywgYW5kIHBlcmhhcHMgc29tZSBlcnJvciBjaGVja2luZy4gVGhlIHdheSB0aGUgRUVFIGFkdmVydGlzZW1lbnQgaXMgc3RydWN0dXJlZCBpbiB0aGUgQzQ1IHNwYWNlIGlzIHNvbWV0aGluZyBJJ2xsIHdhbnQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIOKAkyBkb2VzIGl0IHVzZSBhIGRlZmluZWQgc2V0IG9mIHJlZ2lzdGVycywgb3IgYXJlIHdlIHdvcmtpbmcgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgY29uZmlndXJhdGlvbnM/IEknbSBob3BpbmcgaXQncyBzdHJhaWdodGZvcndhcmQgYnV0IEkndmUgc2VlbiBlbm91Z2ggdmVuZG9yIHF1aXJrcy5cblxuSeKAmWxsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGNvbmRpdGlvbnMgYW5kIGhvdyB0aGV5J3JlIGhhbmRsZWQuIElmIGl0IGlzIGVycm9yIGhhbmRsaW5nLCBhcmUgdGhlcmUgYW55IHJldHJ5IG1lY2hhbmlzbXMsIG9yIGRvZXMgaXQgc2ltcGx5IHJldHVybiBhbiBlcnJvciBjb2RlPyBBIHdlbGwtd3JpdHRlbiBQSFkgZHJpdmVyIHVzdWFsbHkgaW5jbHVkZXMgc29tZSByZXNpbGllbmNlLlxuXG5GaW5hbGx5LCBhIHF1aWNrIGdsYW5jZSBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBtaWdodCBiZSBuZWVkZWQgdG8gc2VlIGlmIGl0IG1ha2VzIGNhbGxzIHRvIGFueSBsb2dnaW5nIG9yIGRlYnVnIGZhY2lsaXRpZXMuIFRoaXMgY2FuIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgaW4gYSBkZWJ1Z2dpbmcgc2l0dWF0aW9uLiBSaWdodCBub3csIEkgd2lsbCBzdGFydCB0byBkaXNzZWN0IHRoZSBjb2RlIGFuZCBidWlsZCBhIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIHRoZSBzb2Z0d2FyZSBkcml2ZXIsIGFuZCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gSSdtIHJlYWR5IHRvIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODk0NiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjAxLjA5MTk4MTY4N1oiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzE3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3OTgsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3OTg6XFx0c3RhdGljIGludCBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4gNzk5OlxcdFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nICphZHYpXFxuIDgwMDpcXHR7XFxuIDgwMTpcXHRcXHRpbnQgdmFsLCBjaGFuZ2VkID0gMDtcXG4gODAyOlxcdFxcbiA4MDM6XFx0XFx0aWYgKGxpbmttb2RlX2ludGVyc2VjdHMocGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWRfZWVlLCBQSFlfRUVFX0NBUDFfRkVBVFVSRVMpKSB7XFxuIDgwNDpcXHRcXHRcXHR2YWwgPSBsaW5rbW9kZV90b19taWlfZWVlX2NhcDFfdChhZHYpO1xcbiA4MDU6XFx0XFxuIDgwNjpcXHRcXHRcXHQvKiBJRUVFIDgwMi4zLTIwMTggNDUuMi43LjEzIEVFRSBhZHZlcnRpc2VtZW50IDFcXG4gODA3OlxcdFxcdFxcdCAqIChSZWdpc3RlciA3LjYwKVxcbiA4MDg6XFx0XFx0XFx0ICovXFxuIDgwOTpcXHRcXHRcXHR2YWwgPSBwaHlfbW9kaWZ5X21tZF9jaGFuZ2VkKHBoeWRldiwgTURJT19NTURfQU4sXFxuIDgxMDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIE1ESU9fQU5fRUVFX0FEVixcXG4gODExOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTURJT19FRUVfMTAwVFggfCBNRElPX0VFRV8xMDAwVCB8XFxuIDgxMjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIE1ESU9fRUVFXzEwR1QgfCBNRElPX0VFRV8xMDAwS1ggfFxcbiA4MTM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBNRElPX0VFRV8xMEdLWDQgfCBNRElPX0VFRV8xMEdLUixcXG4gODE0OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdmFsKTtcXG4gODE1OlxcdFxcdFxcdGlmICh2YWwgXFx1MDAzYyAwKVxcbiA4MTY6XFx0XFx0XFx0XFx0cmV0dXJuIHZhbDtcXG4gODE3OlxcdFxcdFxcdGlmICh2YWwgXFx1MDAzZSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyODowMS4wOTIyNjAxNDdaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI2NzE2MjgyMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyB3ZW50IGxpa2UgdGhpczogdGhlIGNvZGUgcGF0aCBpbnZvbHZlcyBgcGh5X21vZGlmeV9tbWRfY2hhbmdlZGAsIHdoaWNoIGlzIGEgd3JhcHBlciBjYWxsaW5nIGJvdGggYHBoeV9yZWFkX21tZGAgYW5kIGBwaHlfd3JpdGVfbW1kYC4gVGhlIGBwaHlfd3JpdGVfbW1kYCBmdW5jdGlvbiB0aGVuIHVsdGltYXRlbHkgY2FsbHMgYHBoeWRldi1cdTAwM2VkcnYtXHUwMDNld3JpdGVfbW1kYC4gU28sIGxvZ2ljYWxseSwgYHJ0bGdlbl93cml0ZV9tbWRgIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbiB0aGF0J3MgYmVpbmcgaW52b2tlZCBzb21ld2hlcmUgZG93biB0aGUgbGluZSwgYXMgaXQgaXMgcmVsYXRlZCB0byB0aGlzIHBoeSBkcml2ZXIuXG5cbk5vdywgdGhlIHBhdGNoIGl0c2VsZi4gSSBzZWUgYSBjb25kaXRpb25hbCBibG9jazogV2hlbiBgZGV2bnVtYCBpcyBgTURJT19NTURfVkVORDJgLCB0aGUgcGF0Y2ggY2FsbHMgYHJ0bGdlbl93cml0ZV92ZW5kMmAgd2hpY2ggaXMgdGhlIGNvcnJlY3QgYmVoYXZpb3IuIE5vdywgbGV0J3MgbG9vayBhdCB0aGUgXCJlbHNlIGlmXCIgc3RhdGVtZW50LlxuXG5UaGUgY3J1Y2lhbCBjaGFuZ2UgaXMgaGVyZSwgd2l0aGluIHRoZSBgTURJT19NTURfQU5gIGFuZCBgTURJT19BTl9FRUVfQURWYCBjb25kaXRpb24uIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwYXNzaW5nIGByZWdudW1gICh3aGljaCBpcyBgTURJT19BTl9FRUVfQURWYCwgb3IgNjAgSUlSQykgYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgYW5kIGBSVExfTURJT19BTl9FRUVfQURWYCAoYSBjb25zdGFudCB2YWx1ZSkgYXMgdGhlIHRoaXJkIGFyZ3VtZW50IHRvIGBydGxnZW5fd3JpdGVfdmVuZDJgLlxuXG5Ib3dldmVyLCBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCBjbGVhcmx5IGV4cGVjdHMgYHJlZ251bWAgYW5kIGB2YWxgIGFzIGl0cyBzZWNvbmQgYW5kIHRoaXJkIGFyZ3VtZW50LiBUaGVyZWZvcmUsIHRoZSBvbGQgY29kZSB3YXMgbWlzdGFrZW5seSB3cml0aW5nIHRoZSBjb25zdGFudCBgUlRMX01ESU9fQU5fRUVFX0FEVmAgdG8gdGhlIHJlZ2lzdGVyIGFkZHJlc3MgYE1ESU9fQU5fRUVFX0FEVmAgKDYwKSwgd2hpY2ggZG9lc24ndCBzZWVtIHJpZ2h0LiBUaGUgcGF0Y2ggbm93IHN3YXBzIHRoZXNlIHR3byBhcmd1bWVudHMsIHBhc3NpbmcgYHZhbGAgYXMgdGhlIHNlY29uZCBhcmd1bWVudCBhbmQgYHZhbGAgYXMgdGhlIHRoaXJkIGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbi4gVGhpcyBpcyBtb3JlIGluIGxpbmUgd2l0aCB3aGF0IEknZCBleHBlY3QuIE5vdyBpdCdzIHdyaXRpbmcgYHZhbGAgKHRoZSB2YWx1ZSB3ZSB3YW50IHRvIHNldCkgdG8gYFJUTF9NRElPX0FOX0VFRV9BRFZgLiBUaGF0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgcmVnaXN0ZXIsIGxpa2VseSByZWxhdGVkIHRvIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgYWR2ZXJ0aXNlbWVudC4gTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIHZhbHVlIG9mIGBSVExfTURJT19BTl9FRUVfQURWYCB0byBjb25maXJtIG15IHN1c3BpY2lvbi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTg1NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjEzLjc2Mzg5MjUyN1oiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwNDI3OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUlRMX01ESU9fQU5fRUVFX0FEVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjQzLSNkZWZpbmVcXHRSVExfTURJT19QQ1NfRUVFX0FCTEVcXHRcXHRcXHQweGE1YzRcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNDQ6I2RlZmluZVxcdFJUTF9NRElPX0FOX0VFRV9BRFZcXHRcXHRcXHQweGE1ZDBcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNDUtI2RlZmluZVxcdFJUTF9NRElPX0FOX0VFRV9MUEFCTEVcXHRcXHRcXHQweGE1ZDJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI0OS0jZGVmaW5lXFx0UlRMX01ESU9fQU5fRUVFX0xQQUJMRTJcXHRcXHRcXHQweGE2ZDBcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNTA6I2RlZmluZVxcdFJUTF9NRElPX0FOX0VFRV9BRFYyXFx0XFx0XFx0MHhhNmQ0XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjUxLSNkZWZpbmVcXHRSVExfTURJT19QQ1NfRUVFX0FCTEUyXFx0XFx0XFx0MHhhNmVjXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzQ1PXN0YXRpYyBpbnQgcnRsZ2VuX3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWdudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzUzLVxcdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3NTQ6XFx0XFx0cmV0ID0gcnRsZ2VuX3JlYWRfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzU1LVxcdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfTFBBQkxFKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc2Mz1zdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NzAtXFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFxcdTAwMjZcXHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYpXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTc3MTpcXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NzItXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc3OD1zdGF0aWMgaW50IHJ0bDgyMnhfcmVhZF9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3ODctXFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFxcdTAwMjZcXHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYyKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3ODg6XFx0XFx0cmV0ID0gcnRsZ2VuX3JlYWRfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWMik7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc4OS1cXHRlbHNlIGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gXFx1MDAyNlxcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0xQQUJMRTIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzk1PXN0YXRpYyBpbnQgcnRsODIyeF93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE4MDMtXFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWMilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxODA0OlxcdFxcdHJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIFJUTF9NRElPX0FOX0VFRV9BRFYyLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE4MDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjEzLjgxMTk0MTg3NloiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTAxOTc1ODc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGdW5jdGlvbmFsIENoYW5nZSBpbiB0aGUgUmVhbHRlayBQSFkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBSZWFsdGVrIFBIWSBkcml2ZXIgY2hhbmdlLiBUaGUgY3J1eCBvZiBpdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHdyaXRpbmcgYSBzcGVjaWZpYyB2YWx1ZSwgYDB4YTVkMGAsIHRvIGEgcmVnaXN0ZXIuIFByZXZpb3VzbHksIHRoZSBjb2RlIHdhcyBleHBsaWNpdGx5IHdyaXRpbmcgdGhpcyB2YWx1ZSB0byByZWdpc3RlciA2MCAoYE1ESU9fQU5fRUVFX0FEVmApLiBOb3csIGhvd2V2ZXIsIHRoZSBuZXcgY29kZSBpcyB3cml0aW5nIGB2YWxgIHRvIHJlZ2lzdGVyIGAweGE1ZDBgIGRpcmVjdGx5LiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBpdCdzIG5vIGxvbmdlciBhIGhhcmRjb2RlZCB2YWx1ZS5cblxuVGhpcyBjaGFuZ2UgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UuIEkgY2FuIGdldCB0byBpdCB0aHJvdWdoIHRoZSBgU0lPQ1NNSUlSRUdgIGlvY3RsIGlmIEknbSB1c2luZyBDNDUgTURJTyBhY2Nlc3MgdG8gd3JpdGUgdG8gYE1ESU9fTU1EX0FOYCBhbmQgYE1ESU9fQU5fRUVFX0FEVmAuIE9yLCBJIGNhbiByZWFjaCBpdCB0aHJvdWdoIGBFVEhUT09MX1NFRUVgLCB3aGljaCB0aGVuIGNhbGxzIGEgd2hvbGUgY2hhaW4gb2YgZnVuY3Rpb25zOiBgcGh5X2V0aHRvb2xfc2V0X2VlZWAgLVx1MDAzZSBgZ2VucGh5X2M0NV9ldGh0b29sX3NldF9lZWVgIC1cdTAwM2UgYGdlbnBoeV9jNDVfYW5fY29uZmlnX2VlZV9hbmVnYCAtXHUwMDNlIGBnZW5waHlfYzQ1X3dyaXRlX2VlZV9hZHZgIC1cdTAwM2UgYHBoeV9tb2RpZnlfbW1kX2NoYW5nZWRgIC1cdTAwM2UgYHBoeV93cml0ZV9tbWRgIC1cdTAwM2UgYHJ0bGdlbl93cml0ZV9tbWRgLlxuXG5UaGUgYmlnIHF1ZXN0aW9uIG5vdyBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMhIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYSBkcml2ZXIsIGFuZCB0aGF0IGFsd2F5cyByYWlzZXMgYSBmbGFnLlxuXG5DYW4gSSB0cmlnZ2VyIHRoaXMgaW4gUUVNVT8gU3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIGBTSU9DU01JSVJFR2AgYW5kIGBFVEhUT09MX1NFRUVgIGFuZCBjYW4gaW5zdGFudGlhdGUgdmlydHVhbCBuZXR3b3JrIGRldmljZXMgd2l0aCBQSFlzISBJIGNvdWxkIHRyeSB1c2luZyBgdHVuYC9gdmV0aGAsIGB2aGNpYCwgb3IgZXZlbiBgbmV0ZGV2c2ltYCB0byBzZXQgaXQgdXAuIEhvbGQgb24uLi4gd2FpdCwgYG5ldGRldnNpbWAgZG9lc24ndCB1c2UgcmVhbHRlayBQSFlzLCB0aGF0J3MgcmlnaHQuIEhvd2V2ZXIsIHN5emthbGxlciAqY2FuKiBmdXp6IE1ESU8gYnVzZXMgZGlyZWN0bHkgYXMgbG9uZyBhcyBpdCBoYXMgYSB3YXkgdG8gcmVnaXN0ZXIgYSBQSFkuIEl0IGxvb2tzIGxpa2Ugc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIGBTSU9DU01JSVJFR2Agb24gKmFueSogbmV0ZGV2LiBJZiB0aGVyZSdzIGEgUEhZIGF0dGFjaGVkLCBpdCdsbCByZWFjaCB0aGUgUEhZIGRyaXZlciwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkgbmVlZC4gVG8gaGl0IGBydGxnZW5fd3JpdGVfbW1kYCBpbiBwYXJ0aWN1bGFyLCBJIGFic29sdXRlbHkgbmVlZCBhIFJlYWx0ZWsgUEhZIGF0dGFjaGVkLlxuXG5DYW4gSSBnZXQgYSBSZWFsdGVrIFBIWSBhdHRhY2hlZCB3aXRoIHN5emthbGxlcj8gSWYgSSB1c2UgYHZoY2lgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBvciBpZiBhIHZpcnR1YWwgZGV2aWNlIGFsbG93cyBhdHRhY2hpbmcgYXJiaXRyYXJ5IFBIWXMsIEkgc2hvdWxkIGJlIGFibGUgdG8uIEkgYWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX1JFQUxURUtfUEhZYCBpcyBlbmFibGVkLlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIGlmIGBDT05GSUdfUkVBTFRFS19QSFlgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQuIExvb2tzIGxpa2UgaXQgaXMgLSBpdCdzIHRoZSBtb2R1bGUgZm9yIFJlYWx0ZWsgUEhZcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcy4gTG9va2luZyBhZ2FpbiwgYENPTkZJR19QSFlMSUJgIGlzIHJlcXVpcmVkLCBidXQgdGhhdCdzIHVzdWFsbHkgZW5hYmxlZCBzbyBJIHNob3VsZCBiZSBnb29kLlxuXG5MZXQncyBjaGVjayBgRm9jdXNTeW1ib2xzYCB0byBiZSBzdXJlLiBJdCBsb29rcyBsaWtlIGBydGxnZW5fd3JpdGVfbW1kYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQsIHNvIHRoYXQncyB0aGUgZm9jdXMgc3ltYm9sLiBgcnRsODIyeF93cml0ZV9tbWRgIGNhbGxzIGBydGxnZW5fd3JpdGVfbW1kYCwgc28gYHJ0bGdlbl93cml0ZV9tbWRgIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC5cblxuSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGBydGxnZW5fd3JpdGVfbW1kYCBpbiBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgIGp1c3QgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE3NjksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MjQuODMxNzAzODk1WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzYzLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzYzOlxcdHN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxcbjE3NjQ6XFx0XFx0XFx0XFx0ICAgIHUxNiB2YWwpXFxuMTc2NTpcXHR7XFxuMTc2NjpcXHRcXHRpbnQgcmV0O1xcbjE3Njc6XFx0XFxuMTc2ODpcXHRcXHRpZiAoZGV2bnVtID09IE1ESU9fTU1EX1ZFTkQyKVxcbjE3Njk6XFx0XFx0XFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCB2YWwpO1xcbjE3NzA6XFx0XFx0ZWxzZSBpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFxcdTAwMjZcXHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYpXFxuMTc3MTpcXHRcXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWLCB2YWwpO1xcbjE3NzI6XFx0XFx0ZWxzZVxcbjE3NzM6XFx0XFx0XFx0cmV0ID0gLUVPUE5PVFNVUFA7XFxuMTc3NDpcXHRcXG4xNzc1OlxcdFxcdHJldHVybiByZXQ7XFxuMTc3NjpcXHR9XFxuMTc3NzpcXHRcXG4xNzc4OlxcdHN0YXRpYyBpbnQgcnRsODIyeF9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtKVxcbjE3Nzk6XFx0e1xcbjE3ODA6XFx0XFx0aW50IHJldCA9IHJ0bGdlbl9yZWFkX21tZChwaHlkZXYsIGRldm51bSwgcmVnbnVtKTtcXG4xNzgxOlxcdFxcbjE3ODI6XFx0XFx0aWYgKHJldCAhPSAtRU9QTk9UU1VQUClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MjQuODMxOTQ5Njk1WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MjUzNzUyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgcnRsZ2VuX3dyaXRlX21tZGAgRnVuY3Rpb24gZm9yIEZ1enppbmcgYW5kIFN5bWJvbCBWaXNpYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcnRsZ2VuX3dyaXRlX21tZGAgZnVuY3Rpb24uIEl0J3MgbWFya2VkIGFzIGBzdGF0aWNgLCB3aGljaCBpbml0aWFsbHkgbWFrZXMgbWUgdGhpbmsgZnV6emluZyBtaWdodCBiZSB0cmlja3kuIEhvd2V2ZXIsIEkgcmVhbGl6ZSB0aGF0IHN5emthbGxlciAqY2FuKiBhY3R1YWxseSByZWFjaCBpdCB0aHJvdWdoIGBwaHlfd3JpdGVfbW1kYCwgd2hpY2ggaXMgYW4gZXhwb3J0ZWQgc3ltYm9sLiBUaGF0J3MgZ29vZCB0byBrbm93LlxuXG5Ob3csIGNvbnNpZGVyaW5nIGBGb2N1c1N5bWJvbHNgLCBJIGhhdmUgdG8gbWFrZSBzdXJlIGBydGxnZW5fd3JpdGVfbW1kYCBpcyBleHBsaWNpdGx5IHByb3ZpZGVkLCBlc3BlY2lhbGx5IGlmIGl0J3Mgbm90IGlubGluZWQuIEFuZCBJIHRoaW5rIHRoYXQncyB1bmxpa2VseTsgaXQncyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBpbiBgcmVhbHRla19kcnZzYDpcblxuYGBgY1xuXHRcdC53cml0ZV9tbWRcdD0gcnRsZ2VuX3dyaXRlX21tZCxcbmBgYFxuXG5HaXZlbiBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCB0aGVyZSdzIG5vIHdheSB0aGUgY29tcGlsZXIgY2FuIGlubGluZSBpdC4gVGhhdCBjb25maXJtcyBpdCwgYHJ0bGdlbl93cml0ZV9tbWRgICppcyogYSB2YWxpZCBzeW1ib2wgdGhhdCBzaG91bGQgYmUgdmlzaWJsZS5cblxuTGV0J3Mgbm90IHN0b3AgdGhlcmUsIHRob3VnaC4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBmYW1pbHkuIEFoYSwgYHJ0bGdlbl93cml0ZV92ZW5kMmAgaXMgY2FsbGVkLiBUaGF0IHNvdW5kcyBsaWtlIGFub3RoZXIgaW50ZXJlc3Rpbmcgb25lIHRvIGxvb2sgYXQgYW5kIHNlZSBpZiBpdCdzIGZ1enphYmxlIGFuZC9vciBpZiBpdCBuZWVkcyBzcGVjaWFsIGF0dGVudGlvbiBmb3Igc3ltYm9sIHZpc2liaWxpdHkgYXMgd2VsbC4gTGV0IG1lIGludmVzdGlnYXRlIGBydGxnZW5fd3JpdGVfdmVuZDJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzYyMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjMyLjQ1NzMyOTYyNloiLCJTZXEiOjYyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIxMTk3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsZ2VuX3dyaXRlX3ZlbmQyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzM0PXN0YXRpYyBpbnQgcnRsZ2VuX3JlYWRfdmVuZDIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3MzgtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTczOTpzdGF0aWMgaW50IHJ0bGdlbl93cml0ZV92ZW5kMihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc2Mz1zdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NjgtXFx0aWYgKGRldm51bSA9PSBNRElPX01NRF9WRU5EMilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzY5OlxcdFxcdHJldCA9IHJ0bGdlbl93cml0ZV92ZW5kMihwaHlkZXYsIHJlZ251bSwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzcwLVxcdGVsc2UgaWYgKGRldm51bSA9PSBNRElPX01NRF9BTiBcXHUwMDI2XFx1MDAyNiByZWdudW0gPT0gTURJT19BTl9FRUVfQURWKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE3NzE6XFx0XFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEViwgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzcyLVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE3OTU9c3RhdGljIGludCBydGw4MjJ4X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwMy1cXHRpZiAoZGV2bnVtID09IE1ESU9fTU1EX0FOIFxcdTAwMjZcXHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYyKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjE4MDQ6XFx0XFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEVjIsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTgwNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MzIuNTA5NDU2NDE1WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTY1OTc4MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIHRoZSBSZWFsdGVrIFBIWSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgcnRsZ2VuX3dyaXRlX3ZlbmQyYCBpcyBhbHNvIGRlY2xhcmVkIHN0YXRpYywgbWFraW5nIGlubGluaW5nIGEgcmVhbCBwb3NzaWJpbGl0eS4gVGhhdCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBCZXR0ZXIgdG8gdGFyZ2V0IGBydGxnZW5fd3JpdGVfbW1kYCB0aGVuOyBpdCdzIGxlc3MgbGlrZWx5IHRvIGJlIG9wdGltaXplZCBhd2F5IGFuZCBtb3JlIGNsZWFybHkgcmVwcmVzZW50cyB0aGUgY29yZSBvZiB3aGF0IEknbSBsb29raW5nIGZvci5cblxuTm93LCBsZXQncyBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudC4gYENPTkZJR19SRUFMVEVLX1BIWWAgaXMgdGhlIGJpZyBvbmUsIG9mIGNvdXJzZS4gQnV0IGFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyPyBSaWdodCwgYENPTkZJR19QSFlMSUJgIGlzICpyZXF1aXJlZCogYnkgYENPTkZJR19SRUFMVEVLX1BIWWAsIHRoYXQgc2VlbXMgaW1wb3J0YW50LiBUaW1lIHRvIHJldmlzaXQgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBhZ2FpbiB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ3MTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6NDUuMDc1NDM5MzU4WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTY5ODYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUkVBTFRFS19QSFlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoyOmNvbmZpZyBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBQSFlzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZz04PWlmIFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTA6Y29uZmlnIFJFQUxURUtfUEhZX0hXTU9OXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJIV01PTiBzdXBwb3J0IGZvciBSZWFsdGVrIFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjQ1LjE1MTE0NDc3NloiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTc2MTkwNjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBWZXJpZmljYXRpb24gb2YgQ29udHJvbCBGbG93KipcblxuUmlnaHQsIHNvIHdlJ3JlIGZvY3VzaW5nIG9uIHRoaXMgYFJFQUxURUtfUEhZYCBkcml2ZXIgb3IgbW9kdWxlLCBzcGVjaWZpY2FsbHkuIEl0IGxvb2tzIGxpa2UgaXQncyB0aGUgb25seSBvbmUgaW4gdGhlIHJ1bm5pbmcuIE5vdywgYmVmb3JlIEkganVtcCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byB0cmFjZSB0aGlzIGNvbnRyb2wgZmxvdyBwcm9wZXJseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMuIEhhbmcgb24sIGlzIGBydGxnZW5fd3JpdGVfbW1kYCBhY3R1YWxseSBjYWxsZWQgZnJvbSBgcnRsODIyeF93cml0ZV9tbWRgPyBMZXQncyBjaGVjayBpdCwgcXVpY2tseS4gQWhhISBZZXMsIGdvb2QuIGBydGw4MjJ4X3dyaXRlX21tZGAgZG9lcyBpbmRlZWQgY2FsbCBgcnRsZ2VuX3dyaXRlX21tZGAuIE9rYXksIHRoYXQncyBjcnVjaWFsLiBOb3csIHNpbmNlIEkndmUgY29uZmlybWVkIHRoYXQgcmVsYXRpb25zaGlwLCBJJ20gZ29pbmcgdG8gdHVybiBteSBhdHRlbnRpb24gdG8gc2NydXRpbml6aW5nIGBydGw4MjJ4X3dyaXRlX21tZGAgaXRzZWxmLiBUaGF0IGZ1bmN0aW9uIGlzIHdoZXJlIHRoZSBhY3Rpb24gaXMgc3RhcnRpbmcuIEknbGwgbmVlZCB0byBzZWUgcHJlY2lzZWx5IHdoYXQncyBoYXBwZW5pbmcgdGhlcmUgdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBsb3dlciBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUyMDgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyODo1MC43MjczMzk5NThaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3OTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3OTU6XFx0c3RhdGljIGludCBydGw4MjJ4X3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxcbjE3OTY6XFx0XFx0XFx0XFx0ICAgICB1MTYgdmFsKVxcbjE3OTc6XFx0e1xcbjE3OTg6XFx0XFx0aW50IHJldCA9IHJ0bGdlbl93cml0ZV9tbWQocGh5ZGV2LCBkZXZudW0sIHJlZ251bSwgdmFsKTtcXG4xNzk5OlxcdFxcbjE4MDA6XFx0XFx0aWYgKHJldCAhPSAtRU9QTk9UU1VQUClcXG4xODAxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTgwMjpcXHRcXG4xODAzOlxcdFxcdGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gXFx1MDAyNlxcdTAwMjYgcmVnbnVtID09IE1ESU9fQU5fRUVFX0FEVjIpXFxuMTgwNDpcXHRcXHRcXHRyZXQgPSBydGxnZW5fd3JpdGVfdmVuZDIocGh5ZGV2LCBSVExfTURJT19BTl9FRUVfQURWMiwgdmFsKTtcXG4xODA1OlxcdFxcbjE4MDY6XFx0XFx0cmV0dXJuIHJldDtcXG4xODA3OlxcdH1cXG4xODA4OlxcdFxcbjE4MDk6XFx0c3RhdGljIGludCBydGw4MjJ4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTgxMDpcXHR7XFxuMTgxMTpcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUkVBTFRFS19QSFlfSFdNT04pIFxcdTAwMjZcXHUwMDI2XFxuMTgxMjpcXHRcXHQgICAgcGh5ZGV2LVxcdTAwM2VwaHlfaWQgIT0gUlRMX0dFTkVSSUNfUEhZSUQpXFxuMTgxMzpcXHRcXHRcXHRyZXR1cm4gcnRsODIyeF9od21vbl9pbml0KHBoeWRldik7XFxuMTgxNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6NTAuNzI3NTczMjU4WiIsIlNlcSI6NjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjQzNDMxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIFBIWSBEcml2ZXIgQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gem9vbSBpbiBvbiBob3cgdGhlc2UgUmVhbHRlayBQSFlzIGFyZSBiZWluZyBjb25maWd1cmVkLCBzbyBgcnRsODIyeF93cml0ZV9tbWRgIGxvb2tzIGxpa2UgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZC4gSXQncyBjYWxsaW5nIHRvIG1lIGFzIGEgcG90ZW50aWFsIGZvY3VzIHN5bWJvbC4gSXQncyBiZWVuIGJyb3VnaHQgdXAgbXVsdGlwbGUgdGltZXMgYXMgYSBwb3RlbnRpYWwgZW50cnkgcG9pbnQgZm9yIHRoaXMgdGFzay5cblxuTm93LCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJyb2FkZXIgcGljdHVyZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2l0aGluIGByZWFsdGVrX2RydnNgIHRvIHNlZSB0aGUgcmVsZXZhbnQgUEhZcy4gSSB3YW50IHRvIGlkZW50aWZ5IHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgZWl0aGVyIGBydGxnZW5fd3JpdGVfbW1kYCBvciwgbW9yZSBzcGVjaWZpY2FsbHksIGBydGw4MjJ4X3dyaXRlX21tZGAuIFRoZSBhaW0gaXMgdG8gbWFwIHRoZSBmdW5jdGlvbiB0byBhIG1vZHVsZS4gSSBhbSBob3BpbmcgdG8gZ2V0IG1vcmUgY29udGV4dCBhbmQgdXNlIGBydGw4MjJ4X3dyaXRlX21tZGAgYXMgYSBzdGFydGluZyBwb2ludC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgZm9yIHRyYWNpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcmVnaXN0ZXIgYWNjZXNzIHBhdHRlcm5zIGluIHRoZXNlIFJlYWx0ZWsgUEhZIGltcGxlbWVudGF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU5MTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjU1LjE5MTkyMDQ4NVoiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MTczMTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndyaXRlX21tZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zODg9c3RhdGljIGludCBydGw4MjYxeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzk5LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQwMDpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9BRERSX1JFRyxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00MDEtXFx0XFx0XFx0ICAgIFJUTF84MjYxWF9TVUJfUEhZX0lEX0FERFIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NjIwPXN0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYyOC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2Mjk6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjIxQl9WTkQyX0lORVIsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjMwLVxcdFxcdFxcdFxcdCAgICBSVEw4MjYxWF9JTlRfTUFTS19ERUZBVUxUKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYzMy1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYzNDpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjFCX1ZORDJfSU5FUiwgMCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjM1LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTc0NT1zdGF0aWMgaW50IHJ0bGdlbl9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc2Mi1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzYzOnN0YXRpYyBpbnQgcnRsZ2VuX3dyaXRlX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE3NjQtXFx0XFx0XFx0ICAgIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0xNzc4PXN0YXRpYyBpbnQgcnRsODIyeF9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5NC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzk1OnN0YXRpYyBpbnQgcnRsODIyeF93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzk2LVxcdFxcdFxcdCAgICAgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNzk3LXtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNzk4OlxcdGludCByZXQgPSBydGxnZW5fd3JpdGVfbW1kKHBoeWRldiwgZGV2bnVtLCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTc5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTE4MjI9c3RhdGljIGludCBydGw4MjJ4Yl9yZWFkX21tZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgZGV2bnVtLCB1MTYgcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTg2MC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxODYxOnN0YXRpYyBpbnQgcnRsODIyeGJfd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZudW0sIHUxNiByZWcsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTg2Mi1cXHRcXHRcXHQgICAgICB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTk0MT1zdGF0aWMgaW50IHJ0bDgyMjZfcGF0Y2hfbWRpX3N3YXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBzd2FwX2VuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE5OTEtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTk5MjpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyMjZfVk5EMl9BRENDQUxfT0ZGU0VULFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE5OTMtXFx0XFx0XFx0XFx0ICAgIGFkY2NhbF9vZmZzZXRbMyAtIGldKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTIwMzk9c3RhdGljIGludCBydGw4MjJ4X3NldF9zZXJkZXNfb3B0aW9uX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBnZW4xKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA3NS1cXHRpZiAoIWdlbjEpIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMDc2OlxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgMHg3NWYzLCAwKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDc3LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA4Ny1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMDg4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgMHg2YTA0LCAweDA1MDMpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIwODktXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMDkxLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIwOTI6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCAweDZmMTAsIDB4ZDQ1NSk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA5My1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIwOTUtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjA5NjpcXHRyZXR1cm4gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCAweDZmMTEsIDB4ODAyMCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjA5Ny19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMTA5PXN0YXRpYyBpbnQgcnRsODIyeF9zZXJkZXNfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIxMTItXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjExMzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIFJUTDgyMlhfVk5EMV9TRVJERVNfQUREUiwgcmVnKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMTE0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjExNi1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMTE3OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgUlRMODIyWF9WTkQxX1NFUkRFU19EQVRBLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIxMTgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMTIwLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIxMjE6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBSVEw4MjJYX1ZORDFfU0VSREVTX0NNRCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMTIyLVxcdFxcdFxcdCAgICBSVEw4MjJYX1ZORDFfU0VSREVTX0NNRF9XUklURSB8XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMzY5PXN0YXRpYyBpbnQgcnRsODIyeGJfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjM3Ny1cXHQvKiBjbGVhciBIVyBMRUQgc2V0dXAgKi9cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMzc4OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yMzc5LVxcdFxcdFxcdCAgICBSVEw4MjJYX1ZORDJfTEVEKGluZGV4KSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yNDY5PXN0YXRpYyBpbnQgcnRsODIyeGJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjQ5NC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNDk1OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNDk2LVxcdFxcdFxcdCAgICBSVEw4MjJYX1ZORDJfTEVEKGluZGV4KSwgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTI1NDE9c3RhdGljIGludCBydGw4MjI0X3NyYW1fcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjU0NC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNTQ1OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNTQ2LVxcdFxcdFxcdCAgICBSVEw4MjJYX1ZORDJfQzIyX1JFRyhSVEw4MjI0X01JSV9TUkFNX0FERFIpLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MjY3Nj1zdGF0aWMgaW50IHJ0bDgyMjRfcGFja2FnZV9tb2RpZnlfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2OTEtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjY5MjpcXHRyZXQgPSBfX3BoeV9wYWNrYWdlX3dyaXRlX21tZChwaHlkZXYsIDAsIGRldmFkLCByZWdudW0sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjY5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMwMDk9c3RhdGljIGludCBydGw4MjIxYl9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzAxNy1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMDE4OlxcdFxcdGVyciA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODIyMUJfVk5EMl9JTkVSLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMwMTktXFx0XFx0XFx0XFx0ICAgIFJUTDgyMjFCX1ZORDJfSU5FUl9MSU5LX1NUQVRVUyk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzAyMC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMwMjE6XFx0XFx0ZXJyID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMwMjItXFx0XFx0XFx0XFx0ICAgIFJUTDgyMjFCX1ZORDJfSU5FUiwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zMDg2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMDQtXFx0XFx0LnJlYWRfbW1kXFx0PSBnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzEwNTpcXHRcXHQud3JpdGVfbW1kXFx0PSBnZW5waHlfd3JpdGVfbW1kX3Vuc3VwcG9ydGVkLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMDYtXFx0XFx0LnN1c3BlbmRcXHQ9IGdlbnBoeV9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzExNC1cXHRcXHQucmVhZF9tbWRcXHQ9IFxcdTAwMjZnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzExNTpcXHRcXHQud3JpdGVfbW1kXFx0PSBcXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMTE2LVxcdFxcdC5yZWFkX3BhZ2VcXHQ9IHJ0bDgyMXhfcmVhZF9wYWdlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEyMy1cXHRcXHQucmVhZF9tbWRcXHQ9IFxcdTAwMjZnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzEyNDpcXHRcXHQud3JpdGVfbW1kXFx0PSBcXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMTI1LVxcdFxcdC5zdXNwZW5kXFx0PSBydGw4MjExYl9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEzMy1cXHRcXHQucmVhZF9tbWRcXHQ9IFxcdTAwMjZnZW5waHlfcmVhZF9tbWRfdW5zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzEzNDpcXHRcXHQud3JpdGVfbW1kXFx0PSBcXHUwMDI2Z2VucGh5X3dyaXRlX21tZF91bnN1cHBvcnRlZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMTM1LVxcdFxcdC5yZWFkX3BhZ2VcXHQ9IHJ0bDgyMXhfcmVhZF9wYWdlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwMy1cXHRcXHQucmVhZF9tbWRcXHQ9IHJ0bGdlbl9yZWFkX21tZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMjA0OlxcdFxcdC53cml0ZV9tbWRcXHQ9IHJ0bGdlbl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIwNS1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjE1LVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeGJfcmVhZF9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIxNjpcXHRcXHQud3JpdGVfbW1kXFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIxNy1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjMxLVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeGJfcmVhZF9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIzMjpcXHRcXHQud3JpdGVfbW1kXFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIzMy1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjQ2LVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeGJfcmVhZF9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzI0NzpcXHRcXHQud3JpdGVfbW1kXFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzI0OC1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjYyLVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeGJfcmVhZF9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzI2MzpcXHRcXHQud3JpdGVfbW1kXFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzI2NC1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjgxLVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeGJfcmVhZF9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzI4MjpcXHRcXHQud3JpdGVfbW1kXFx0PSBydGw4MjJ4Yl93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzI4My1cXHRcXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gcnRsODIyeGJfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzMwNC1cXHRcXHQucmVhZF9tbWRcXHQ9IHJ0bDgyMnhiX3JlYWRfbW1kLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzMDU6XFx0XFx0LndyaXRlX21tZFxcdD0gcnRsODIyeGJfd3JpdGVfbW1kLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMzMDYtXFx0XFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IHJ0bDgyMnhiX2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMzMzMtXFx0XFx0LnJlYWRfbW1kXFx0PSBydGw4MjJ4X3JlYWRfbW1kLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzMzQ6XFx0XFx0LndyaXRlX21tZFxcdD0gcnRsODIyeF93cml0ZV9tbWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzMzNS1cXHR9LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMzQ3LVxcdFxcdC5yZWFkX21tZFxcdD0gcnRsODIyeF9yZWFkX21tZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzQ4OlxcdFxcdC53cml0ZV9tbWRcXHQ9IHJ0bDgyMnhfd3JpdGVfbW1kLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMzNDktXFx0fSwge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzQwMS1cXHRcXHQucmVhZF9tbWRcXHQ9IGdlbnBoeV9yZWFkX21tZF91bnN1cHBvcnRlZCxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozNDAyOlxcdFxcdC53cml0ZV9tbWRcXHQ9IGdlbnBoeV93cml0ZV9tbWRfdW5zdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzQwMy1cXHR9LCB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjU1LjI5NzA5OTgwMVoiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Njc4MDI3NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyBgLndyaXRlX21tZGAgSW1wbGVtZW50YXRpb25zKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGAud3JpdGVfbW1kYCBmdW5jdGlvbnM6IGBydGxnZW5fd3JpdGVfbW1kYCwgYHJ0bDgyMnhfd3JpdGVfbW1kYCwgYW5kIGBydGw4MjJ4Yl93cml0ZV9tbWRgLiBJdCdzIHByZXR0eSBjbGVhciB0aGV5IGFsbCBwZXJmb3JtIGEgc2ltaWxhciwgaWYgbm90IGlkZW50aWNhbCwgZnVuY3Rpb24uIFN0YW5kYXJkIG5hbWluZyBjb252ZW50aW9ucywgbm90aGluZyB1bnVzdWFsIHNvIGZhci4gQnV0IHdhaXQgYSBtaW51dGUuLi4gSSBzZWVtIHRvIHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgYHJ0bDgyMnhiX3dyaXRlX21tZGAuIFdhc24ndCB0aGVyZSBhIGNhbGwgdG8gYHJ0bGdlbl93cml0ZV9tbWRgIHdpdGhpbiBpdD8gVGhhdCdzIGRlZmluaXRlbHkgd29ydGggY29uZmlybWluZy4gSXQncyBhIGtleSBiaXQgb2YgaW5mb3JtYXRpb24uIExldCdzIGRpZyBpbnRvIGBydGw4MjJ4Yl93cml0ZV9tbWRgIGFuZCBjbGFyaWZ5IHRoYXQgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA5MTgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyOTowMC45NzUxMzExMjJaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMwNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4NjEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE4NjE6XFx0c3RhdGljIGludCBydGw4MjJ4Yl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZyxcXG4xODYyOlxcdFxcdFxcdFxcdCAgICAgIHUxNiB2YWwpXFxuMTg2MzpcXHR7XFxuMTg2NDpcXHRcXHRpbnQgb2xkcGFnZSwgcmV0LCB3cml0ZV9yZXQ7XFxuMTg2NTpcXHRcXHR1MTYgcGFnZTtcXG4xODY2OlxcdFxcbjE4Njc6XFx0XFx0LyogVXNlIGRlZmF1bHQgbWV0aG9kIGZvciBhbGwgTU1EcyBleGNlcHQgTURJT19NTURfVkVORDIgb3IgaW4gY2FzZVxcbjE4Njg6XFx0XFx0ICogQ2xhdXNlLTQ1IGFjY2VzcyBpcyBhdmFpbGFibGVcXG4xODY5OlxcdFxcdCAqL1xcbjE4NzA6XFx0XFx0aWYgKGRldm51bSAhPSBNRElPX01NRF9WRU5EMiB8fCBwaHlkZXYtXFx1MDAzZWlzX2M0NSlcXG4xODcxOlxcdFxcdFxcdHJldHVybiBtbWRfcGh5X3dyaXRlKHBoeWRldi1cXHUwMDNlbWRpby5idXMsIHBoeWRldi1cXHUwMDNlbWRpby5hZGRyLFxcbjE4NzI6XFx0XFx0XFx0XFx0XFx0ICAgICBwaHlkZXYtXFx1MDAzZWlzX2M0NSwgZGV2bnVtLCByZWcsIHZhbCk7XFxuMTg3MzpcXHRcXG4xODc0OlxcdFxcdC8qIFNpbXBsaWZ5IGFjY2VzcyB0byBDMjItcmVnaXN0ZXJzIGFkZHJlc3NlZCBpbnNpZGUgTURJT19NTURfVkVORDIgKi9cXG4xODc1OlxcdFxcdGlmIChyZWcgXFx1MDAzZT0gUlRMODIyWF9WTkQyX0MyMl9SRUcoMCkgXFx1MDAyNlxcdTAwMjZcXG4xODc2OlxcdFxcdCAgICByZWcgXFx1MDAzYz0gUlRMODIyWF9WTkQyX0MyMl9SRUcoMzApKVxcbjE4Nzc6XFx0XFx0XFx0cmV0dXJuIF9fcGh5X3dyaXRlKHBoeWRldiwgUlRMODIyWF9WTkQyX1RPX0MyMl9SRUcocmVnKSwgdmFsKTtcXG4xODc4OlxcdFxcbjE4Nzk6XFx0XFx0LyogVXNlIHBhZ2VkIGFjY2VzcyBmb3IgTURJT19NTURfVkVORDIgb3ZlciBDbGF1c2UtMjIgKi9cXG4xODgwOlxcdFxcdHBhZ2UgPSBSVEw4MjJYX1ZORDJfVE9fUEFHRShyZWcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyOTowMC45NzUzNjQ0OTFaIiwiU2VxIjo3MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcwMDkzNTI2MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFJlYWx0ZWsgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc3VtcHRpb24gYWJvdXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBydGw4MjJ4Yl93cml0ZV9tbWRgIGFuZCBgcnRsZ2VuX3dyaXRlX21tZGAgd2FzIGluY29ycmVjdC4gV2UndmUgZXN0YWJsaXNoZWQgdGhhdCBgcnRsZ2VuX3dyaXRlX21tZGAgYW5kIGBydGw4MjJ4X3dyaXRlX21tZGAgYXJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyB0aGF0IHV0aWxpemUgYHJ0bGdlbl93cml0ZV92ZW5kMmAgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIGBNRElPX0FOX0VFRV9BRFZgIHJlZ2lzdGVyLlxuXG5MZXQncyB6b29tIGluIG9uIGBydGxnZW5fd3JpdGVfbW1kYC4gV2Uga25vdyB0aGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IHdhcyBwYXRjaGVkLiBMb29raW5nIGF0IHRoZSBjb2RlOlxuXG5gYGBjXG5zdGF0aWMgaW50IHJ0bGdlbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldm51bSwgdTE2IHJlZ251bSxcblx0XHRcdCAgICB1MTYgdmFsKVxue1xuXHRpbnQgcmV0O1xuXG5cdGlmIChkZXZudW0gPT0gTURJT19NTURfVkVORDIpXG5cdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgcmVnbnVtLCB2YWwpO1xuXHRlbHNlIGlmIChkZXZudW0gPT0gTURJT19NTURfQU4gXHUwMDI2XHUwMDI2IHJlZ251bSA9PSBNRElPX0FOX0VFRV9BRFYpXG5cdFx0cmV0ID0gcnRsZ2VuX3dyaXRlX3ZlbmQyKHBoeWRldiwgUlRMX01ESU9fQU5fRUVFX0FEViwgdmFsKTtcblx0ZWxzZVxuXHRcdHJldCA9IC1FT1BOT1RTVVBQO1xuXG5cdHJldHVybiByZXQ7XG59XG5gYGBcblxuTXkgcmVhc29uaW5nIGlzOiBUaGUgY3J1eCBvZiB0aGUgcGF0Y2ggcmV2b2x2ZXMgYXJvdW5kIGNvcnJlY3RpbmcgYSBwb3RlbnRpYWwgc3dhcCBvZiBgcmVnbnVtYCBhbmQgYHZhbGAgd2hlbiBjYWxsaW5nIGBydGxnZW5fd3JpdGVfdmVuZDJgIHdpdGhpbiBgcnRsZ2VuX3dyaXRlX21tZGAuIFRoZSB2dWxuZXJhYmlsaXR5IGNvdWxkIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGBTSU9DU01JSVJFR2AgaW9jdGwgb3IsIHBvdGVudGlhbGx5LCB0aHJvdWdoIGBFVEhUT09MX1NFRUVgLCB3aGljaCwgaW4gdHVybiwgaW50ZXJhY3RzIHdpdGggYHJ0bGdlbl93cml0ZV9tbWRgIGFuZCBpdHMgcmVsYXRlZCBmdW5jdGlvbnMuIFRoaXMgaXMgc3BlY2lmaWNhbGx5IHJlbGV2YW50IHdoZW4gYSBSZWFsdGVrIFBIWSBpcyBjb25uZWN0ZWQuXG5cblRoZXJlZm9yZSwgdGhlIGtleSBlbGVtZW50cyB0byBoaWdobGlnaHQgYXJlOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IFRydWUqKiAoZHVlIHRvIHRoZSBidWcgYW5kIGFjY2Vzc2liaWxpdHkpXG4qICAgKipGb2N1c1N5bWJvbHM6KiogYHJ0bGdlbl93cml0ZV9tbWRgLCBhbmQgYHJ0bDgyMnhfd3JpdGVfbW1kYCAoYmVjYXVzZSB0aGV5IGFyZSB0aGUgb25lcyB1c2luZyB0aGUgcGF0Y2hlZCBmdW5jdGlvbilcbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYFJFQUxURUtfUEhZYCAoYmVjYXVzZSBpdCdzIHRoZSBzcGVjaWZpYyBjb25maWcgcmVxdWlyZWQpXG5cbk5vdywgYSBicmllZiBjaGVjayBvbiB0aGUgc3RhdGljIG5hdHVyZSBvZiBgcnRsZ2VuX3dyaXRlX21tZGAuIFllcywgaXQncyBkZWNsYXJlZCBgc3RhdGljYC4gSG93ZXZlciwgc2luY2UgaXQncyB1c2VkIHdpdGggYSBmdW5jdGlvbiBwb2ludGVyIChpLmUuLCB0aHJvdWdoIGlvY3RsIG9yIGV0aHRvb2wpLCBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGlzIG1lYW5zIHN5emthbGxlciAqY2FuKiB0YXJnZXQgaXQsIG1ha2luZyBpdCBhIHZpYWJsZSBmb2N1cyBzeW1ib2wuXG5cbkZpbmFsbHksIGNvbmZpcm1pbmcgdGhhdCBgUkVBTFRFS19QSFlgIGlzIGEgdHJpc3RhdGUgY29uZmlnIGlzIGNydWNpYWwuIFRoYXQgc2V0dGxlcyBpdC4gTWVudGlvbmluZyBgUEhZTElCYCBpc24ndCBhIHByb2JsZW0sIGJ1dCBgUkVBTFRFS19QSFlgIGlzIHRoZSB0YXJnZXQgY29uZmlnLlxuXG5JJ20gcmVhZHkgdG8gbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE2NjksIk91dHB1dFRva2VucyI6MTMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjk6MTcuOTg0NzE5ODEyWiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1NzU2MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRUFMVEVLX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bGdlbl93cml0ZV9tbWRcIixcbiAgICBcInJ0bDgyMnhfd3JpdGVfbW1kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYXJndW1lbnRzIHdlcmUgc3dhcHBlZCBpbiBhIGNhbGwgdG8gcnRsZ2VuX3dyaXRlX3ZlbmQyIGluc2lkZSBydGxnZW5fd3JpdGVfbW1kLiBUaGlzIGZ1bmN0aW9uIGlzIGEgLndyaXRlX21tZCBjYWxsYmFjayBmb3IgUmVhbHRlayBQSFkgZHJpdmVycyBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBTSU9DU01JSVJFRyBpb2N0bCBvciBFVEhUT09MX1NFRUUgd2hlbiBhIFJlYWx0ZWsgUEhZIGlzIGF0dGFjaGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJFQUxURUtfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRsZ2VuX3dyaXRlX21tZFwiLFxuICAgIFwicnRsODIyeF93cml0ZV9tbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhcmd1bWVudHMgd2VyZSBzd2FwcGVkIGluIGEgY2FsbCB0byBydGxnZW5fd3JpdGVfdmVuZDIgaW5zaWRlIHJ0bGdlbl93cml0ZV9tbWQuIFRoaXMgZnVuY3Rpb24gaXMgYSAud3JpdGVfbW1kIGNhbGxiYWNrIGZvciBSZWFsdGVrIFBIWSBkcml2ZXJzIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFNJT0NTTUlJUkVHIGlvY3RsIG9yIEVUSFRPT0xfU0VFRSB3aGVuIGEgUmVhbHRlayBQSFkgaXMgYXR0YWNoZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow24x98[1] Phase: Succeeded StartedAt: 2026-08-06 16:29:29 +0000 UTC FinishedAt: 2026-08-06 16:29:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 16:29:29 +0000 UTC FinishedAt: 2026-08-06 16:29:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2] Phase: Running StartedAt: 2026-08-06 16:29:29 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-08-06 16:29:29 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-06 16:29:29 +0000 UTC FinishedAt: 2026-08-06 16:29:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-06 16:29:29 +0000 UTC FinishedAt: 2026-08-06 16:29:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow24x98/series-workflow24x98-convert-artifact-2195771424/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-06 16:29:39 +0000 UTC FinishedAt: 2026-08-06 16:48:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-06 16:29:39 +0000 UTC FinishedAt: 2026-08-06 16:48:37 +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:*935ec4c8-e83f-4582-8644-d4be240a3f09,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-workflow24x98/series-workflow24x98-convert-artifact-2195771424/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": "1eff2829-2b09-4753-a2ef-1cf6906dc3f3", "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-workflow24x98/series-workflow24x98-build-action-2589044454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-06 16:29:39 +0000 UTC FinishedAt: 2026-08-06 16:48:27 +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:*935ec4c8-e83f-4582-8644-d4be240a3f09,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-workflow24x98/series-workflow24x98-convert-artifact-2195771424/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": "1eff2829-2b09-4753-a2ef-1cf6906dc3f3", "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-workflow24x98/series-workflow24x98-build-action-2589044454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-06 16:48:37 +0000 UTC FinishedAt: 2026-08-06 16:48:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-06 16:48:37 +0000 UTC FinishedAt: 2026-08-06 16:48:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-06 16:48:37 +0000 UTC FinishedAt: 2026-08-06 16:48:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-06 16:48:37 +0000 UTC FinishedAt: 2026-08-06 16:48:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow24x98/series-workflow24x98-convert-artifact-317427783/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-06 16:48:47 +0000 UTC FinishedAt: 2026-08-06 16:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-06 16:48:47 +0000 UTC FinishedAt: 2026-08-06 16:50:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1eff2829-2b09-4753-a2ef-1cf6906dc3f3,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-workflow24x98/series-workflow24x98-build-action-2589044454/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-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-06 16:50:48 +0000 UTC FinishedAt: 2026-08-06 16:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-06 16:50:48 +0000 UTC FinishedAt: 2026-08-06 16:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-06 16:50:48 +0000 UTC FinishedAt: 2026-08-06 17:09:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-06 16:50:48 +0000 UTC FinishedAt: 2026-08-06 17:09:20 +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:*935ec4c8-e83f-4582-8644-d4be240a3f09,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-workflow24x98/series-workflow24x98-convert-artifact-317427783/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": "f01d1c60-b1a0-45b1-b8e8-face1f1f984a", "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-workflow24x98/series-workflow24x98-build-action-4089958347/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-06 16:50:48 +0000 UTC FinishedAt: 2026-08-06 17:09:10 +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:*935ec4c8-e83f-4582-8644-d4be240a3f09,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-workflow24x98/series-workflow24x98-convert-artifact-317427783/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": "f01d1c60-b1a0-45b1-b8e8-face1f1f984a", "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-workflow24x98/series-workflow24x98-build-action-4089958347/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-06 17:09:20 +0000 UTC FinishedAt: 2026-08-06 17:09:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-06 17:09:20 +0000 UTC FinishedAt: 2026-08-06 17:09:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Running StartedAt: 2026-08-06 17:09:20 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow24x98[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtlgen_write_mmd","rtl822x_write_mmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["REALTEK_PHY"],"series_id":"c44c9fb9-8cce-4c69-ab9a-cfde5f53142b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Running StartedAt: 2026-08-06 17:09:20 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f01d1c60-b1a0-45b1-b8e8-face1f1f984a,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-workflow24x98/series-workflow24x98-build-action-4089958347/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil