Name: series-workflowhgjgd Phase: Succeeded StartedAt: 2026-08-12 18:38:23 +0000 UTC FinishedAt: 2026-08-12 22:48:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[0] Phase: Succeeded StartedAt: 2026-08-12 18:38:23 +0000 UTC FinishedAt: 2026-08-12 19:06:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 18:38:23 +0000 UTC FinishedAt: 2026-08-12 19:06:49 +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": "ac155a26750a595703e7dadff84735456d75a479", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ETHTOOL_NETLINK", "MACVLAN", "BONDING" ], "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": "ac155a26750a595703e7dadff84735456d75a479", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ETHTOOL_NETLINK", "MACVLAN", "BONDING" ], "series_id": "33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ethnl_set_tsconfig" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VUSFRPT0xfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtNQUNWTEFOJiMzNDssCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldGhubF9zZXRfdHNjb25maWcmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBmb3IgYHJlcV90eF90eXBlYCBhbmQgYHJlcV9yeF9maWx0ZXJgIGluIGBldGhubF9zZXRfdHNjb25maWdgIHRvIGVuc3VyZSBleGFjdGx5IG9uZSBiaXQgaXMgc2V0IHVzaW5nIGBod2VpZ2h0MzIoeCkgIT0gMWAgaW5zdGVhZCBvZiBgZmZzKHgpICE9IGZscyh4KWAuIEl0IGFsc28gYWRkcyBuZXRsaW5rIGV4dGVuZGVkIGFja25vd2xlZGdtZW50IGVycm9yIHJlcG9ydGluZyAoYE5MX1NFVF9CQURfQVRUUmApIGZvciB0aGVzZSB2YWxpZGF0aW9uIGZhaWx1cmVzLlxuXG5UaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyB2YWxpZGF0aW9uIGFuZCBlcnJvciByZXBvcnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG8gbm90IGNvcHkgYW55IG5ldyBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIGxvZ2ljIGJ1Z3MsIHdoaWNoIGFyZSBub3QgdGhlIHRhcmdldCBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIHNldCBvcGVyYXRpb24gZm9yIFRTQ09ORklHIChldGhubF9zZXRfdHNjb25maWcpLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciBmb3IgcmVxX3R4X3R5cGUgPT0gMCBhbmQgcmVxX3J4X2ZpbHRlciA9PSAwLCB3aGljaCB3ZXJlIHByZXZpb3VzbHkgYWxsb3dlZCBhbmQgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLiBUbyByZWFjaCB0aGUgbW9kaWZpZWQgY29kZSwgYSBuZXQgZGV2aWNlIHN1cHBvcnRpbmcgbmRvX2h3dHN0YW1wX3NldCBpcyByZXF1aXJlZCwgc3VjaCBhcyBNQUNWTEFOIG9yIEJPTkRJTkcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNjk3YzAyMDRlOWVjOTNmNGUxYTE4YTMyODZkNDk4ZDI1MTE3N2YzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTk6MDI6NTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYyBiL25ldC9ldGh0b29sL3RzY29uZmlnLmNcbmluZGV4IDI0YjY0ODYyMDExZjAuLjZiZTNhYTVkNGJjMWUgMTAwNjQ0XG4tLS0gYS9uZXQvZXRodG9vbC90c2NvbmZpZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jXG5AQCAtMzU5LDggJiM0MzszNTksMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiBcbi1cdFx0LyogU2VsZWN0IG9ubHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXG4tXHRcdGlmIChmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSkpIHtcbiYjNDM7XHRcdC8qIFNlbGVjdCBleGFjdGx5IG9uZSB0eCB0eXBlIGF0IGEgdGltZSAqL1xuJiM0MztcdFx0aWYgKGh3ZWlnaHQzMihyZXFfdHhfdHlwZSkgIT0gMSkge1xuJiM0MztcdFx0XHROTF9TRVRfQkFEX0FUVFIoaW5mby1cdTAwM2VleHRhY2ssXG4mIzQzO1x0XHRcdFx0XHR0YltFVEhUT09MX0FfVFNDT05GSUdfVFhfVFlQRVNdKTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIFx0XHR9XG5AQCAtMzgwLDggJiM0MzszODIsMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiBcbi1cdFx0LyogU2VsZWN0IG9ubHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi9cbi1cdFx0aWYgKGZmcyhyZXFfcnhfZmlsdGVyKSAhPSBmbHMocmVxX3J4X2ZpbHRlcikpIHtcbiYjNDM7XHRcdC8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4mIzQzO1x0XHRpZiAoaHdlaWdodDMyKHJlcV9yeF9maWx0ZXIpICE9IDEpIHtcbiYjNDM7XHRcdFx0TkxfU0VUX0JBRF9BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxuJiM0MztcdFx0XHRcdFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VUSFRPT0xfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtNQUNWTEFOJiMzNDssCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldGhubF9zZXRfdHNjb25maWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIGV0aHRvb2wgbmV0bGluayBzZXQgb3BlcmF0aW9uIGZvciBUU0NPTkZJRyAoZXRobmxfc2V0X3RzY29uZmlnKS4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3IgZm9yIHJlcV90eF90eXBlID09IDAgYW5kIHJlcV9yeF9maWx0ZXIgPT0gMCwgd2hpY2ggd2VyZSBwcmV2aW91c2x5IGFsbG93ZWQgYW5kIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluay4gVG8gcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGUsIGEgbmV0IGRldmljZSBzdXBwb3J0aW5nIG5kb19od3RzdGFtcF9zZXQgaXMgcmVxdWlyZWQsIHN1Y2ggYXMgTUFDVkxBTiBvciBCT05ESU5HLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjY5N2MwMjA0ZTllYzkzZjRlMWExOGEzMjg2ZDQ5OGQyNTExNzdmMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE5OjAyOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYyBiL25ldC9ldGh0b29sL3RzY29uZmlnLmMKaW5kZXggMjRiNjQ4NjIwMTFmMC4uNmJlM2FhNWQ0YmMxZSAxMDA2NDQKLS0tIGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jCkBAIC0zNTksOCAmIzQzOzM1OSwxMCBAQCBzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZyhzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLAogCQlpZiAocmV0ICZsdDsgMCkKIAkJCWdvdG8gZXJyX2ZyZWVfaHdwcm92OwogCi0JCS8qIFNlbGVjdCBvbmx5IG9uZSB0eCB0eXBlIGF0IGEgdGltZSAqLwotCQlpZiAoZmZzKHJlcV90eF90eXBlKSAhPSBmbHMocmVxX3R4X3R5cGUpKSB7CiYjNDM7CQkvKiBTZWxlY3QgZXhhY3RseSBvbmUgdHggdHlwZSBhdCBhIHRpbWUgKi8KJiM0MzsJCWlmIChod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDEpIHsKJiM0MzsJCQlOTF9TRVRfQkFEX0FUVFIoaW5mby0mZ3Q7ZXh0YWNrLAomIzQzOwkJCQkJdGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSk7CiAJCQlyZXQgPSAtRUlOVkFMOwogCQkJZ290byBlcnJfZnJlZV9od3Byb3Y7CiAJCX0KQEAgLTM4MCw4ICYjNDM7MzgyLDEwIEBAIHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsCiAJCWlmIChyZXQgJmx0OyAwKQogCQkJZ290byBlcnJfZnJlZV9od3Byb3Y7CiAKLQkJLyogU2VsZWN0IG9ubHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi8KLQkJaWYgKGZmcyhyZXFfcnhfZmlsdGVyKSAhPSBmbHMocmVxX3J4X2ZpbHRlcikpIHsKJiM0MzsJCS8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovCiYjNDM7CQlpZiAoaHdlaWdodDMyKHJlcV9yeF9maWx0ZXIpICE9IDEpIHsKJiM0MzsJCQlOTF9TRVRfQkFEX0FUVFIoaW5mby0mZ3Q7ZXh0YWNrLAomIzQzOwkJCQkJdGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTsKIAkJCXJldCA9IC1FSU5WQUw7CiAJCQlnb3RvIGVycl9mcmVlX2h3cHJvdjsKIAkJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQ5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRXRodG9vbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9ldGh0b29sL3RzY29uZmlnLmNgLCBhbmQgaXQmIzM5O3MgbWFraW5nIGEgYml0IG9mIGEgY2hhbmdlIHRvIHRoZSBiaXQgbWFuaXB1bGF0aW9uIGxvZ2ljLiBUaGV5JiMzOTt2ZSByZXBsYWNlZCBgZmZzKHJlcV90eF90eXBlKSAhPSBmbHMocmVxX3R4X3R5cGUpYCB3aXRoIGBod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDFgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYnJlYWsgZG93biB3aGF0IHRoYXQgbWVhbnMuCgpOb3csIGBmZnMoeCkgIT0gZmxzKHgpYCDigJMgdGhhdCBlZmZlY3RpdmVseSBjaGVja3MgZm9yIGEgZmV3IGNvbmRpdGlvbnMuICBJdCYjMzk7cyB0cnVlIGlmIGB4YCBoYXMgbW9yZSB0aGFuIG9uZSBiaXQgc2V0IE9SIGlmIGB4YCBpcyB6ZXJvLiBSZW1lbWJlciwgYGZmcygwKWAgYW5kIGBmbHMoMClgIGJvdGggZXZhbHVhdGUgdG8gMCwgd2hpY2ggd291bGQgbWFrZSB0aGUgY29tcGFyaXNvbiBmYWxzZS4gU28sIHplcm8sIG9uZSwgb3IgbW9yZSB0aGFuIG9uZSBiaXQgc2V0IGFyZSBhbGwgaGFuZGxlZCBieSB0aGlzIGV4cHJlc3Npb24uCgpXYWl0IGEgc2Vjb25kLCBpZiBgeCA9PSAwYCwgdGhlIG5ldyBjaGVjaywgYGh3ZWlnaHQzMigwKSAhPSAxYCwgKmlzKiB0cnVlLiBTbywgdGhlIHplcm8gY2FzZSBpcyBub3cgZ29pbmcgdG8gcmV0dXJuIGFuIGVycm9yLCB3aGVyZWFzIGJlZm9yZSBpdCBkaWRuJiMzOTt0LiBUaGlzIGNoYW5nZSBtb2RpZmllcyB0aGUgYmVoYXZpb3IgZm9yIHplcm8gdmFsdWVzLCBzcGVjaWZpY2FsbHkgd2hlcmUgYHJlcV90eF90eXBlID09IDBgIG9yIGByZXFfcnhfZmlsdGVyID09IDBgLiBCZWZvcmUsIHRoZXkgd2VyZW4mIzM5O3QgY2F1Z2h0IGFzIGVycm9ycyBiZWNhdXNlIHRoZSBvbGQgY2hlY2sgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGV5IHdlcmUgemVyby4gVGhlIG5ldyBsb2dpYyBmbGFncyB0aGUgemVybyB2YWx1ZSBhbmQgcmV0dXJucyBgLUVJTlZBTGAuCgpFc3NlbnRpYWxseSwgdGhlIHplcm8gY2FzZSBpcyBiZWluZyBjYXVnaHQgYXMgYSBuZXcgZXJyb3IgY2FzZS4gIEl0IGxvb2tzIGxpa2UgdGhleSBhcmUgYWxzbyBhZGRpbmcgYE5MX1NFVF9CQURfQVRUUmAgZm9yIG5ldGxpbmsgZXh0YWNrLCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgcmVsYXRlZCB0byBzb21lIG5ldGxpbmsgY29tbXVuaWNhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgbmV0L2V0aHRvb2wvdHNjb25maWcuY2AgdG8gc2VlIHRoZSBleGFjdCBjb250ZXh0IGFuZCB1bmRlcnN0YW5kIHdoeSB0aGlzIGNoYW5nZSB3YXMgZGVlbWVkIG5lY2Vzc2FyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldGhubF9zZXRfdHNjb25maWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZXRodG9vbC90c2NvbmZpZy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL3RzY29uZmlnLmM9MTk5PXN0YXRpYyBpbnQgdHNjb25maWdfc2VuZF9yZXBseShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMjUwLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYzoyNTE6c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGUoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMjUyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYz0yNjM9dHNjb25maWdfc2V0X2h3cHJvdl9mcm9tX2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTMwMi1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6MzAzOnN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTMwNC1cdFx0XHQgICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmM9NDUxPWNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcyA9IHtcbi0tXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQ2MS1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6NDYyOlx0LnNldF92YWxpZGF0ZVx0XHQ9IGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZSxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6NDYzOlx0LnNldFx0XHRcdD0gZXRobmxfc2V0X3RzY29uZmlnLFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy00NjQtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzg1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGV0aG5sX3NldF90c2NvbmZpZ2AgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGV0aG5sX3NldF90c2NvbmZpZ2AgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhIG5ldGxpbmsgc2V0IG9wZXJhdGlvbiBmb3IgZXRodG9vbC4gU3RyYWlnaHRmb3J3YXJkLCBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlLiBIbW0sIGludGVyZXN0aW5n4oCmIGl0IHNlZW1zIHRoZSBjaGFuZ2UgYWZmZWN0cyB0aGUgdmFsaWRhdGlvbiBvZiBgcmVxX3R4X3R5cGVgIGFuZCBgcmVxX3J4X2ZpbHRlcmAuIFRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbW9kaWZ5aW5nIHRoZSBiZWhhdmlvciB3aGVuIHZhbHVlcyBhcmUgemVybyBhbmQgYWRkaW5nIGFuIGV4dGFjay4gT2theSwgbXkgZXhwZXJ0IGludHVpdGlvbiBpcyBwaW5naW5nIOKAkyBpcyB0aGlzIHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LCBpdCYjMzk7cyBhIG5ldGxpbmsgaGFuZGxlciByZWxhdGVkIHRvIGV0aHRvb2w7IGZ1enppbmcgaXQgd291bGQgYmUgYSB2YWx1YWJsZSB1c2Ugb2YgbXkgdGltZS4gUmlnaHQsIGZpcnN0IHRoaW5nIGlzIHRvIHRyYWNrIGRvd24gdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGV0aHRvb2wgbmV0bGluay4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFVEhUT09MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NTA3PWNvbmZpZyBGQUlMT1ZFUlxuLS1cbm5ldC9LY29uZmlnLTUxOS1cbm5ldC9LY29uZmlnOjUyMDpjb25maWcgRVRIVE9PTF9ORVRMSU5LXG5uZXQvS2NvbmZpZy01MjEtXHRib29sIFwmIzM0O05ldGxpbmsgaW50ZXJmYWNlIGZvciBldGh0b29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc3OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGV0aHRvb2wgQ29uZmlndXJhdGlvbiB3aXRoIE5ldGxpbmsqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgRVRIVE9PTF9ORVRMSU5LYCBoZXJlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaW52b2x2ZXMgbmV0bGluaywgd2hpY2ggaXMgdGhlIHByZWZlcnJlZCBpbnRlcmZhY2UgZm9yIG1vZGVybiBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgaGFuZGxlZCBpbiB0aGUga2VybmVsLiBNeSBuZXh0IHRob3VnaHQgaXMsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9mIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhhdCBwYXJ0aWN1bGFyIHNvdXJjZSBmaWxlIGlzIGluY2x1ZGVkIG9ubHkgd2hlbiBgRVRIVE9PTF9ORVRMSU5LYCBpcyBkZWZpbmVkLCBvciBpZiB0aGVyZSYjMzk7cyBzb21lIG90aGVyIGxvZ2ljIGF0IHBsYXkuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgd2lsbCBzaG93IG1lIHRoZSByZWxhdGlvbnNoaXBzIGluIHRoZSBjb25maWcgb2YgZXRodG9vbCB0aGF0IGFyZSBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0c2NvbmZpZy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvTWFrZWZpbGU9Nz1ldGh0b29sX25sLXlcdDo9IG5ldGxpbmsubyBiaXRzZXQubyBzdHJzZXQubyBsaW5raW5mby5vIGxpbmttb2Rlcy5vIHJzcy5vIFxcXG4tLVxubmV0L2V0aHRvb2wvTWFrZWZpbGUtMTEtXHRcdCAgIG1vZHVsZS5vIGNtaXNfZndfdXBkYXRlLm8gY21pc19jZGIubyBwc2UtcGQubyBwbGNhLm8gXFxcbm5ldC9ldGh0b29sL01ha2VmaWxlOjEyOlx0XHQgICBwaHkubyB0c2NvbmZpZy5vIG1zZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgRXRodG9vbCBOZXRsaW5rIENvbXBpbGF0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBgZXRodG9vbF9ubC15YCBpcyBidWlsdCBhbmQgaXQgc2VlbXMgaXQmIzM5O3MgcGFydCBvZiB0aGUgd2hvbGUgYGV0aHRvb2xgIHByb2Nlc3MsIHdoaWNoIG1ha2VzIHNlbnNlLiBUaGUga2V5IGlzIGBDT05GSUdfRVRIVE9PTF9ORVRMSU5LYCwgcmlnaHQ/IEl0IGxvb2tzIGxpa2UgYGV0aHRvb2xfbmwteWAgaXMgZ2V0dGluZyBidWlsdCBvbmx5IGlmIHRoYXQgY29uZmlnIG9wdGlvbiBpcyBlbmFibGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJIHJlbWVtYmVyIHRoYXQgdGhlIGBuZXQvZXRodG9vbC9NYWtlZmlsZWAgc2hvdWxkIGhhdmUgdGhlIGJ1aWxkIGxvZ2ljIGZvciBgZXRodG9vbF9ubC15YC4gSSYjMzk7bGwgb3BlbiB0aGF0IHVwIGFuZCBkb3VibGUtY2hlY2sgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIHRoZXJlLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGF0JiMzOTtzIHRoZSBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldGh0b29sX25sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvTWFrZWZpbGU9Mz1vYmoteVx0XHRcdFx0JiM0Mzs9IGlvY3RsLm8gY29tbW9uLm9cbm5ldC9ldGh0b29sL01ha2VmaWxlLTQtXG5uZXQvZXRodG9vbC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19FVEhUT09MX05FVExJTkspXHQmIzQzOz0gZXRodG9vbF9ubC5vXG5uZXQvZXRodG9vbC9NYWtlZmlsZS02LVxubmV0L2V0aHRvb2wvTWFrZWZpbGU6NzpldGh0b29sX25sLXlcdDo9IG5ldGxpbmsubyBiaXRzZXQubyBzdHJzZXQubyBsaW5raW5mby5vIGxpbmttb2Rlcy5vIHJzcy5vIFxcXG5uZXQvZXRodG9vbC9NYWtlZmlsZS04LVx0XHQgICBsaW5rc3RhdGUubyBkZWJ1Zy5vIHdvbC5vIGZlYXR1cmVzLm8gcHJpdmZsYWdzLm8gcmluZ3MubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTc2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyB0aGUgRVRIVE9PTCBOZXRsaW5rIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdfRVRIVE9PTF9ORVRMSU5LYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZS4gTXkgaW1tZWRpYXRlIGZvY3VzIHRoZW4gbmVlZHMgdG8gYmUgb24gYGV0aG5sX3NldF90c2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2Ygc2V0dGluZyB0aGUgY29uZmlndXJhdGlvbiBzaG91bGQgcmVzaWRlLCBhbmQgd2hlcmUgSSYjMzk7bGwgcHJvYmFibHkgZmluZCB0aGUgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb250cm9sIGZsb3cuIEJ1dCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhhdCwgaXTigJlzIGFsd2F5cyB3aXNlIHRvIGNoZWNrIGZvciBhc3NvY2lhdGVkIGZ1bmN0aW9ucyBpbiB0aGlzIGNvbnRleHQuIFRoZXJlIG1heSBiZSBoZWxwZXIgZnVuY3Rpb25zIG9yIGNvbXBsaW1lbnRhcnkgZnVuY3Rpb25zIHRoYXQgd2lsbCBlbmhhbmNlIHVuZGVyc3RhbmRpbmcuIEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgcGljdHVyZSBiZWZvcmUgZm9jdXNpbmcgb24gdGhlIHNwZWNpZmljIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V0aG5sX3NldF90c2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL3RzY29uZmlnLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvdHNjb25maWcuYz0xOTk9c3RhdGljIGludCB0c2NvbmZpZ19zZW5kX3JlcGx5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYy0yNTAtXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjI1MTpzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZShzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy0yNTItXHRcdFx0XHQgICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jPTI2Mz10c2NvbmZpZ19zZXRfaHdwcm92X2Zyb21fZGVzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMzAyLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYzozMDM6c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMzA0LVx0XHRcdCAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYz00NTE9Y29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzID0ge1xuLS1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDYxLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYzo0NjI6XHQuc2V0X3ZhbGlkYXRlXHRcdD0gZXRobmxfc2V0X3RzY29uZmlnX3ZhbGlkYXRlLFxubmV0L2V0aHRvb2wvdHNjb25maWcuYzo0NjM6XHQuc2V0XHRcdFx0PSBldGhubF9zZXRfdHNjb25maWcsXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQ2NC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTgxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGV0aG5sX3NldF90c2NvbmZpZ2AgRnVuY3Rpb24qKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIHNlZSB0aGF0IGBldGhubF9zZXRfdHNjb25maWdgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIHdvbmRlciBpZiBpdCYjMzk7cyBiZWluZyBpbmxpbmVkLiBJbiBteSBleHBlcmllbmNlLCBmdW5jdGlvbnMgdGhhdCBhcmUgcG9pbnRlZCB0byBpbiBzdHJ1Y3RzIGFyZSB0eXBpY2FsbHkgKm5vdCogaW5saW5lZC4gSG93ZXZlciwgdGhlIGBzdGF0aWNgIGtleXdvcmQgdGhyb3dzIGEgYml0IG9mIGEgY3VydmViYWxsLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBoaWdobGlnaHRzIHRoZSBpbXBvcnRhbmNlIG9mIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBiZWNhdXNlIHRob3NlIGdldCBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG9uJiMzOTt0IGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLgoKU28sIHNpbmNlIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYGV0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzYCwgaXQgc2hvdWxkbiYjMzk7dCBiZSBpbmxpbmVkLiBUaGF0IHNob3VsZCBtZWFuIGl0ICp3aWxsKiBoYXZlIGEgdW5pcXVlIHN5bWJvbCBhZGRyZXNzLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBtYWludGFpbmFiaWxpdHkgYW5kIGRlYnVnZ2luZywgcmlnaHQ/CgpCdXQsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHZlcmlmeSwgSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUmIzM5O3MgYSBub24tc3RhdGljIEFQSSBlbnRyeSBwb2ludCBpbnZvbHZlZC4gVGhlIGJlc3Qgd2F5IHRvIGJlIHN1cmUgaXMgdG8gY2hlY2sgYG5ldC9ldGh0b29sL25ldGxpbmsuY2AsIHdoaWNoIHNob3VsZCBzaG93IGhvdyBgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHNgIGlzIGFjdHVhbGx5IHVzZWQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB0cnVseSB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL25ldGxpbmsuYz0zODk9ZXRobmxfZGVmYXVsdF9yZXF1ZXN0c1tfX0VUSFRPT0xfTVNHX1VTRVJfQ05UXSA9IHtcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNDI5LVx0W0VUSFRPT0xfTVNHX01NX1NFVF1cdFx0PSBcdTAwMjZldGhubF9tbV9yZXF1ZXN0X29wcyxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo0MzA6XHRbRVRIVE9PTF9NU0dfVFNDT05GSUdfR0VUXVx0PSBcdTAwMjZldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcyxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo0MzE6XHRbRVRIVE9PTF9NU0dfVFNDT05GSUdfU0VUXVx0PSBcdTAwMjZldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcyxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy00MzItXHRbRVRIVE9PTF9NU0dfUEhZX0dFVF1cdFx0PSBcdTAwMjZldGhubF9waHlfcmVxdWVzdF9vcHMsXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5oPTQ3ND1leHRlcm4gY29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX3BoeV9yZXF1ZXN0X29wcztcbm5ldC9ldGh0b29sL25ldGxpbmsuaDo0NzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcztcbm5ldC9ldGh0b29sL25ldGxpbmsuaC00NzYtZXh0ZXJuIGNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9tc2VfcmVxdWVzdF9vcHM7XG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYz0zMDM9c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbi0tXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQ1MC1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6NDUxOmNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcyA9IHtcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDUyLVx0LnJlcXVlc3RfY21kXHRcdD0gRVRIVE9PTF9NU0dfVFNDT05GSUdfR0VULFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDg0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIEV0aHRvb2wgTmV0bGluayBJbnRlcmZhY2UqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIEV0aHRvb2wgbmV0bGluayBpbnRlcmZhY2UgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHNldCBjb21tYW5kcyB3b3JrLiBUaGUgaW5pdGlhbCBlbnRyeSBwb2ludCwgYXMgSSBzZWUgaXQsIHNlZW1zIHRvIGJlIGBldGhubF9kZWZhdWx0X3NldF9kb2l0YC4gRnJvbSB0aGVyZSwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgdGhpcyBmdW5jdGlvbiBldmVudHVhbGx5IGNhbGxzIGBvcHMtJmd0O3NldGAuIE5vdywgYG9wc2AgY2xlYXJseSByZXByZXNlbnRzIHRoZSBvcGVyYXRpb24tc3BlY2lmaWMgaGFuZGxlci4gVGltZSB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGZsb3cuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIGBuZXQvZXRodG9vbC9uZXRsaW5rLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGV0aG5sX2RlZmF1bHRfc2V0X2RvaXRgIHRvIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuIExldCYjMzk7cyBzZWUgaG93IHRoZXkmIzM5O3ZlIHN0cnVjdHVyZWQgdGhlIG5ldGxpbmsgaGFuZGxlciBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXRobmxfZGVmYXVsdF9zZXRfZG9pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZXRodG9vbC9uZXRsaW5rLmM9ODkwPXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kb25lKHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtODk5LVxubmV0L2V0aHRvb2wvbmV0bGluay5jOjkwMDpzdGF0aWMgaW50IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9ldGh0b29sL25ldGxpbmsuYy05MDEte1xuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYz0xMTYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgZXRodG9vbF9nZW5sX29wc1tdID0ge1xuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMTgyLVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMTgzOlx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTExODQtXHRcdC5wb2xpY3kgPSBldGhubF9saW5raW5mb19zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMTk4LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMTk5Olx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyMDAtXHRcdC5wb2xpY3kgPSBldGhubF9saW5rbW9kZXNfc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTIyMy1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTIyNDpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjI1LVx0XHQucG9saWN5ID0gZXRobmxfZGVidWdfc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTI0MC1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTI0MTpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjQyLVx0XHQucG9saWN5ID0gZXRobmxfd29sX3NldF9wb2xpY3ksXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyNzItXHRcdC5mbGFnc1x0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEyNzM6XHRcdC5kb2l0XHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTI3NC1cdFx0LnBvbGljeSA9IGV0aG5sX3ByaXZmbGFnc19zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjg4LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMjg5Olx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyOTAtXHRcdC5wb2xpY3kgPSBldGhubF9yaW5nc19zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMzA0LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMzA1Olx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMDYtXHRcdC5wb2xpY3kgPSBldGhubF9jaGFubmVsc19zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMzIwLVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMzIxOlx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMjItXHRcdC5wb2xpY3kgPSBldGhubF9jb2FsZXNjZV9zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMzM2LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMzM3Olx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMzgtXHRcdC5wb2xpY3kgPSBldGhubF9wYXVzZV9zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMzUyLVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMzUzOlx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzNTQtXHRcdC5wb2xpY3kgPSBldGhubF9lZWVfc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTM5OS1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTQwMDpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDAxLVx0XHQucG9saWN5ID0gZXRobmxfZmVjX3NldF9wb2xpY3ksXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE0NDMtXHRcdC5mbGFnc1x0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjE0NDQ6XHRcdC5kb2l0XHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTQ0NS1cdFx0LnBvbGljeSA9IGV0aG5sX21vZHVsZV9zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDU5LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNDYwOlx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE0NjEtXHRcdC5wb2xpY3kgPSBldGhubF9wc2Vfc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTQ4My1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTQ4NDpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDg1LVx0XHQucG9saWN5ID0gZXRobmxfcGxjYV9zZXRfY2ZnX3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTUwOC1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTUwOTpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTEwLVx0XHQucG9saWN5ID0gZXRobmxfbW1fc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTU0MC1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTU0MTpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTQyLVx0XHQucG9saWN5ID0gZXRobmxfdHNjb25maWdfc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTU0Ny1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTU0ODpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTQ5LVx0XHQucG9saWN5ID0gZXRobmxfcnNzX3NldF9wb2xpY3ksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxODYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEV0aHRvb2wgTmV0bGluayBTZXQgQ29tbWFuZHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBgZXRodG9vbGAgbmV0bGluayBjb21tYW5kcyBhcmUgaGFuZGxlZC4gYGV0aG5sX2RlZmF1bHRfc2V0X2RvaXRgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBhbGwgb2YgdGhlbSwgYnV0IGl0JiMzOTtzIG5vdCBhIGdlbmVyaWMgaG90IHBhdGguIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgc3BlY2lmaWMgaGFuZGxlciBmb3IgYEVUSFRPT0xfTVNHX1RTQ09ORklHX1NFVGAsIHdoaWNoIGlzIGBldGhubF9zZXRfdHNjb25maWdgLiBXYWl0LCB0aGUgcHJvbXB0IGlzIGFib3V0IHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBUaGUgcXVlc3Rpb24gaXMsIGlzIGBldGhubF9zZXRfdHNjb25maWdgIHN0YXRpYz8gSWYgaXQgd2VyZSwgaXQgKm1pZ2h0KiBiZSBpbmxpbmVkIGludG8gdGhlIGdlbmVyYWwgZW50cnkgcG9pbnQuIEJ1dCwgaG9sZCBvbiwgaXTigJlzIGFzc2lnbmVkIHRvIHRoZSBzdHJ1Y3QgbWVtYmVyIGBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcy5zZXQgPSBldGhubF9zZXRfdHNjb25maWdgLiBCZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLCBpdCAqY2FuJiMzOTt0KiBiZSBmdWxseSBpbmxpbmVkOyB0aGVyZSBoYXMgdG8gYmUgYSBzdGFuZGFsb25lIGZ1bmN0aW9uIGJvZHkuIFNvLCBpdCAqd2lsbCogaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBtZWFuaW5nIGl04oCZcyBhIGdvb2QgY2FuZGlkYXRlLiBMZXQgbWUgZG91YmxlIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueXRoaW5nIGVsc2UgaW52b2x2ZWQgaW4gdGhpcy4gQWgsIHllcywgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWAgaXMgKmFsc28qIGFzc2lnbmVkLCB0byBgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHMuc2V0X3ZhbGlkYXRlYC4gU28sICpib3RoKiBvZiB0aG9zZSBmdW5jdGlvbnMgYXJlIHZhbGlkIGNhbmRpZGF0ZXMsIHRoZW4uIExldCBtZSBqdXN0IG9wZW4gdXAgYG5ldC9ldGh0b29sL3RzY29uZmlnLmNgIGFuZCBoYXZlIGEgbG9vayBhdCBgZXRobmxfc2V0X3RzY29uZmlnYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL3RzY29uZmlnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMDM6XHRzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZyhzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxuIDMwNDpcdFx0XHRcdCAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gMzA1Olx0e1xuIDMwNjpcdFx0c3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgaHd0c3RfY29uZmlnID0gezB9O1xuIDMwNzpcdFx0Ym9vbCBod3Byb3ZfbW9kID0gZmFsc2UsIGNvbmZpZ19tb2QgPSBmYWxzZTtcbiAzMDg6XHRcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92ID0gTlVMTDtcbiAzMDk6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXFfYmFzZS1cdTAwM2VkZXY7XG4gMzEwOlx0XHRzdHJ1Y3QgbmxhdHRyICoqdGIgPSBpbmZvLVx1MDAzZWF0dHJzO1xuIDMxMTpcdFx0aW50IHJldDtcbiAzMTI6XHRcbiAzMTM6XHRcdGlmICghbmV0aWZfZGV2aWNlX3ByZXNlbnQoZGV2KSlcbiAzMTQ6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gMzE1Olx0XG4gMzE2Olx0XHRpZiAodGJbRVRIVE9PTF9BX1RTQ09ORklHX0hXVFNUQU1QX1BST1ZJREVSXSkge1xuIDMxNzpcdFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXJfZGVzYyBfX2h3cHJvdl9kZXNjID0gey5pbmRleCA9IC0xfTtcbiAzMTg6XHRcdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpfX2h3cHJvdjtcbiAzMTk6XHRcbiAzMjA6XHRcdFx0X19od3Byb3YgPSBuZXRkZXZfb3BzX2xvY2tfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdiwgZGV2KTtcbiAzMjE6XHRcdFx0aWYgKF9faHdwcm92KSB7XG4gMzIyOlx0XHRcdFx0X19od3Byb3ZfZGVzYy5pbmRleCA9IF9faHdwcm92LVx1MDAzZWRlc2MuaW5kZXg7XG4gMzIzOlx0XHRcdFx0X19od3Byb3ZfZGVzYy5xdWFsaWZpZXIgPSBfX2h3cHJvdi1cdTAwM2VkZXNjLnF1YWxpZmllcjtcbiAzMjQ6XHRcdFx0fVxuIDMyNTpcdFxuIDMyNjpcdFx0XHRyZXQgPSB0c19wYXJzZV9od3RzdF9wcm92aWRlcih0YltFVEhUT09MX0FfVFNDT05GSUdfSFdUU1RBTVBfUFJPVklERVJdLFxuIDMyNzpcdFx0XHRcdFx0XHQgICAgICBcdTAwMjZfX2h3cHJvdl9kZXNjLCBpbmZvLVx1MDAzZWV4dGFjayxcbiAzMjg6XHRcdFx0XHRcdFx0ICAgICAgXHUwMDI2aHdwcm92X21vZCk7XG4gMzI5Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMzMwOlx0XHRcdFx0cmV0dXJuIHJldDtcbiAzMzE6XHRcbiAzMzI6XHRcdFx0aWYgKGh3cHJvdl9tb2QpIHtcbiAzMzM6XHRcdFx0XHRod3Byb3YgPSB0c2NvbmZpZ19zZXRfaHdwcm92X2Zyb21fZGVzYyhkZXYsIGluZm8sXG4gMzM0Olx0XHRcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2X19od3Byb3ZfZGVzYyk7XG4gMzM1Olx0XHRcdFx0aWYgKElTX0VSUihod3Byb3YpKVxuIDMzNjpcdFx0XHRcdFx0cmV0dXJuIFBUUl9FUlIoaHdwcm92KTtcbiAzMzc6XHRcdFx0fVxuIDMzODpcdFx0fVxuIDMzOTpcdFxuIDM0MDpcdFx0LyogR2V0IGN1cnJlbnQgaHd0c3RhbXAgY29uZmlnIGlmIHdlIGFyZSBub3QgY2hhbmdpbmcgdGhlXG4gMzQxOlx0XHQgKiBod3RzdGFtcCBzb3VyY2UuIEl0IHdpbGwgYmUgemVyb2VkIGluIHRoZSBvdGhlciBjYXNlLlxuIDM0MjpcdFx0ICovXG4gMzQzOlx0XHRpZiAoIWh3cHJvdl9tb2QpIHtcbiAzNDQ6XHRcdFx0cmV0ID0gZGV2X2dldF9od3RzdGFtcF9waHlsaWIoZGV2LCBcdTAwMjZod3RzdF9jb25maWcpO1xuIDM0NTpcdFx0XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVPUE5PVFNVUFApXG4gMzQ2Olx0XHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gMzQ3Olx0XHR9XG4gMzQ4Olx0XG4gMzQ5Olx0XHQvKiBHZXQgdGhlIGh3dHN0YW1wIGNvbmZpZyBmcm9tIG5ldGxpbmsgKi9cbiAzNTA6XHRcdGlmICh0YltFVEhUT09MX0FfVFNDT05GSUdfVFhfVFlQRVNdKSB7XG4gMzUxOlx0XHRcdHUzMiByZXFfdHhfdHlwZTtcbiAzNTI6XHRcbiAzNTM6XHRcdFx0cmVxX3R4X3R5cGUgPSBCSVQoaHd0c3RfY29uZmlnLnR4X3R5cGUpO1xuIDM1NDpcdFx0XHRyZXQgPSBldGhubF91cGRhdGVfYml0c2V0MzIoXHUwMDI2cmVxX3R4X3R5cGUsXG4gMzU1Olx0XHRcdFx0XHRcdCAgICBfX0hXVFNUQU1QX1RYX0NOVCxcbiAzNTY6XHRcdFx0XHRcdFx0ICAgIHRiW0VUSFRPT0xfQV9UU0NPTkZJR19UWF9UWVBFU10sXG4gMzU3Olx0XHRcdFx0XHRcdCAgICB0c190eF90eXBlX25hbWVzLCBpbmZvLVx1MDAzZWV4dGFjayxcbiAzNTg6XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmNvbmZpZ19tb2QpO1xuIDM1OTpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDM2MDpcdFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIDM2MTpcdFxuIDM2MjpcdFx0XHQvKiBTZWxlY3QgZXhhY3RseSBvbmUgdHggdHlwZSBhdCBhIHRpbWUgKi9cbiAzNjM6XHRcdFx0aWYgKGh3ZWlnaHQzMihyZXFfdHhfdHlwZSkgIT0gMSkge1xuIDM2NDpcdFx0XHRcdE5MX1NFVF9CQURfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbiAzNjU6XHRcdFx0XHRcdFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSk7XG4gMzY2Olx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiAzNjc6XHRcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiAzNjg6XHRcdFx0fVxuIDM2OTpcdFxuIDM3MDpcdFx0XHRod3RzdF9jb25maWcudHhfdHlwZSA9IGZmcyhyZXFfdHhfdHlwZSkgLSAxO1xuIDM3MTpcdFx0fVxuIDM3MjpcdFxuIDM3MzpcdFx0aWYgKHRiW0VUSFRPT0xfQV9UU0NPTkZJR19SWF9GSUxURVJTXSkge1xuIDM3NDpcdFx0XHR1MzIgcmVxX3J4X2ZpbHRlcjtcbiAzNzU6XHRcbiAzNzY6XHRcdFx0cmVxX3J4X2ZpbHRlciA9IEJJVChod3RzdF9jb25maWcucnhfZmlsdGVyKTtcbiAzNzc6XHRcdFx0cmV0ID0gZXRobmxfdXBkYXRlX2JpdHNldDMyKFx1MDAyNnJlcV9yeF9maWx0ZXIsXG4gMzc4Olx0XHRcdFx0XHRcdCAgICBfX0hXVFNUQU1QX0ZJTFRFUl9DTlQsXG4gMzc5Olx0XHRcdFx0XHRcdCAgICB0YltFVEhUT09MX0FfVFNDT05GSUdfUlhfRklMVEVSU10sXG4gMzgwOlx0XHRcdFx0XHRcdCAgICB0c19yeF9maWx0ZXJfbmFtZXMsIGluZm8tXHUwMDNlZXh0YWNrLFxuIDM4MTpcdFx0XHRcdFx0XHQgICAgXHUwMDI2Y29uZmlnX21vZCk7XG4gMzgyOlx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMzgzOlx0XHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gMzg0Olx0XG4gMzg1Olx0XHRcdC8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4gMzg2Olx0XHRcdGlmIChod2VpZ2h0MzIocmVxX3J4X2ZpbHRlcikgIT0gMSkge1xuIDM4NzpcdFx0XHRcdE5MX1NFVF9CQURfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbiAzODg6XHRcdFx0XHRcdFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTtcbiAzODk6XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDM5MDpcdFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIDM5MTpcdFx0XHR9XG4gMzkyOlx0XG4gMzkzOlx0XHRcdGh3dHN0X2NvbmZpZy5yeF9maWx0ZXIgPSBmZnMocmVxX3J4X2ZpbHRlcikgLSAxO1xuIDM5NDpcdFx0fVxuIDM5NTpcdFxuIDM5NjpcdFx0aWYgKHRiW0VUSFRPT0xfQV9UU0NPTkZJR19IV1RTVEFNUF9GTEFHU10pIHtcbiAzOTc6XHRcdFx0cmV0ID0gZXRobmxfdXBkYXRlX2JpdHNldDMyKFx1MDAyNmh3dHN0X2NvbmZpZy5mbGFncyxcbiAzOTg6XHRcdFx0XHRcdFx0ICAgIF9fSFdUU1RBTVBfRkxBR19DTlQsXG4gMzk5Olx0XHRcdFx0XHRcdCAgICB0YltFVEhUT09MX0FfVFNDT05GSUdfSFdUU1RBTVBfRkxBR1NdLFxuIDQwMDpcdFx0XHRcdFx0XHQgICAgdHNfZmxhZ3NfbmFtZXMsIGluZm8tXHUwMDNlZXh0YWNrLFxuIDQwMTpcdFx0XHRcdFx0XHQgICAgXHUwMDI2Y29uZmlnX21vZCk7XG4gNDAyOlx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTI2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVjZW50IENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBldGhubF9zZXRfdHNjb25maWdgLiBJIG5lZWQgdG8gY29uZmlybSBpZiBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgd2VyZSB0b3VjaGVkLCBidXQgaXQgbG9va3MgbGlrZSBgZXRobmxfc2V0X3RzY29uZmlnYCBpcyB0aGUgc29sZSBwb2ludCBvZiBtb2RpZmljYXRpb24uIFRoZSBnb29kIG5ld3MgaXMsIGJhc2VkIG9uIHRoZSBjaGFuZ2UsIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBmdW5jdGlvbmFsLgoKVGhlIHByaW1hcnkgZ29hbCBvZiB0aGlzIGZpeCBpcyB0byBhZGRyZXNzIGEgYnVnIHRoYXQgYWxsb3dlZCBmb3IgaW52YWxpZCByZXF1ZXN0IHR5cGVzIChgcmVxX3R4X3R5cGUgPT0gMGAgb3IgYHJlcV9yeF9maWx0ZXIgPT0gMGApIHRvIGJlIGFjY2VwdGVkLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhlc2UgaW52YWxpZCB2YWx1ZXMgd291bGQgY2F1c2UgYGh3dHN0X2NvbmZpZy50eF90eXBlYCB0byBiZSBzZXQgdG8gLTEuIEFzIGFuIGV4cGVydCwgSSBpbnN0YW50bHkgc2VlIHRoZSB2dWxuZXJhYmlsaXR5IGhlcmUg4oCTIHRoaXMgaW50ZWdlciB1bmRlcmZsb3cgY291bGQgbGVhZCB0byBhbGwgc29ydHMgb2YgaXNzdWVzIGRvd25zdHJlYW0sIGluY2x1ZGluZywgd29yc3QgY2FzZSwgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzLCBwb3RlbnRpYWxseSBpbiBhIHByaXZpbGVnZWQgY29udGV4dC4gVGhlcmVmb3JlLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgcmlnb3JvdXMgZnV6emluZy4KCk5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIGlkZW50aWZ5aW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCByZWxhdGUgdG8gdGhpcyBmdW5jdGlvbmFsaXR5LiBXZSYjMzk7dmUgYWxyZWFkeSBzcG90dGVkIGBFVEhUT09MX05FVExJTktgLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnM/IEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYG5ldC9ldGh0b29sL0tjb25maWdgIG9yIHBvc3NpYmx5IGV2ZW4gdGhlIGJyb2FkZXIgYG5ldC9LY29uZmlnYCB0byBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBpbnRlcmFjdCB3aXRoIHRoaXMuIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uZmlndXJhdGlvbnMgaXMgdml0YWwgdG8gY29uc3RydWN0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFVEhUT09MX05FVExJTksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz01MDc9Y29uZmlnIEZBSUxPVkVSXG4tLVxubmV0L0tjb25maWctNTE5LVxubmV0L0tjb25maWc6NTIwOmNvbmZpZyBFVEhUT09MX05FVExJTktcbm5ldC9LY29uZmlnLTUyMS1cdGJvb2wgXCYjMzQ7TmV0bGluayBpbnRlcmZhY2UgZm9yIGV0aHRvb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExMzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgdGhpbmtpbmcgdGhyb3VnaCBpdCBzdGVwLWJ5LXN0ZXA6CgoqKkNoZWNraW5nIEVUSFRPT0xfTkVUTElOSyBEZXBlbmRlbmNpZXMgaW4gbmV0L0tjb25maWcqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBmaW5kIG91dCB3aGF0IGBFVEhUT09MX05FVExJTktgIGRlcGVuZHMgb24sIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uIGZpbGVzLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBpcyB0byBnbyBkaXJlY3RseSB0byBgbmV0L0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdXN1YWxseSBkZWZpbmVkLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgc2luY2UgaXQmIzM5O3MgcmVsYXRlZCB0byBldGh0b29sIChhIGNvbW1vbiB0b29sIGZvciBxdWVyeWluZyBhbmQgc2V0dGluZyBOSUMgcGFyYW1ldGVycykgYW5kIG5ldGxpbmsgKGEgbG93LWxldmVsIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBtZWNoYW5pc20gaW4gTGludXgpLCB0aGUgZGVwZW5kZW5jaWVzIHdvdWxkIGJlIGRlY2xhcmVkIG9yIGF0IGxlYXN0IHJlZmVyZW5jZWQgd2l0aGluIHRoYXQgZmlsZS4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGBFVEhUT09MX05FVExJTktgIGluIHRoYXQgYG5ldC9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHN0YXRlbWVudHMgcmVsYXRlZCB0byBvdGhlciBmZWF0dXJlcywgZHJpdmVyIHNlbGVjdGlvbnMsIG9yIGV2ZW4gZ2VuZXJhbCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBwcmVyZXF1aXNpdGVzLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSB3aGF0IG90aGVyIGZlYXR1cmVzLCBkcml2ZXJzLCBvciBnZW5lcmFsIGtlcm5lbCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZSB0aWVkIHRvIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUxNTpcdFx0ICBmYWlsb3ZlciBuZXRkZXYuIFRoaXMgZW5hYmxlcyBwYXJhdmlydHVhbCBkcml2ZXJzIHRvIHVzZSBhXG4gNTE2Olx0XHQgIFZGIGFzIGFuIGFjY2VsZXJhdGVkIGxvdyBsYXRlbmN5IGRhdGFwYXRoLiBJdCBhbHNvIGFsbG93cyBsaXZlXG4gNTE3Olx0XHQgIG1pZ3JhdGlvbiBvZiBWTXMgd2l0aCBkaXJlY3QgYXR0YWNoZWQgVkZzIGJ5IGZhaWxpbmcgb3ZlciB0byB0aGVcbiA1MTg6XHRcdCAgcGFyYXZpcnR1YWwgZGF0YXBhdGggd2hlbiB0aGUgVkYgaXMgdW5wbHVnZ2VkLlxuIDUxOTpcdFxuIDUyMDpcdGNvbmZpZyBFVEhUT09MX05FVExJTktcbiA1MjE6XHRcdGJvb2wgXCYjMzQ7TmV0bGluayBpbnRlcmZhY2UgZm9yIGV0aHRvb2xcJiMzNDtcbiA1MjI6XHRcdHNlbGVjdCBESU1MSUJcbiA1MjM6XHRcdGRlZmF1bHQgeVxuIDUyNDpcdFx0aGVscFxuIDUyNTpcdFx0ICBBbiBhbHRlcm5hdGl2ZSB1c2Vyc3BhY2UgaW50ZXJmYWNlIGZvciBldGh0b29sIGJhc2VkIG9uIGdlbmVyaWNcbiA1MjY6XHRcdCAgbmV0bGluay4gSXQgcHJvdmlkZXMgYmV0dGVyIGV4dGVuc2liaWxpdHkgYW5kIHNvbWUgbmV3IGZlYXR1cmVzLFxuIDUyNzpcdFx0ICBlLmcuIG5vdGlmaWNhdGlvbiBtZXNzYWdlcy5cbiA1Mjg6XHRcbiA1Mjk6XHRjb25maWcgTkVUREVWX0FERFJfTElTVF9URVNUXG4gNTMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtVbml0IHRlc3RzIGZvciBkZXZpY2UgYWRkcmVzcyBsaXN0XCYjMzQ7XG4gNTMxOlx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuIDUzMjpcdFx0ZGVwZW5kcyBvbiBLVU5JVFxuIDUzMzpcdFxuIDUzNDpcdGNvbmZpZyBORVRfVEVTVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTczMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBFVEhUT09MX05FVExJTksgZm9yIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBFVEhUT09MX05FVExJTktgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIOKAkyBpdCBoYXMgYSBgZGVmYXVsdCB5YCBzZXR0aW5nIGFuZCBubyBkZXBlbmRlbmNpZXMsIHdoaWNoIHN1Z2dlc3RzIGl0JiMzOTtzIHRoZSBwcmltYXJ5IHN3aXRjaCBmb3IgdGhlIGZ1bmN0aW9uYWxpdHkgd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4uIFRoZXJlZm9yZSwgYEVUSFRPT0xfTkVUTElOS2AgaXMgdGhlIG9ubHkgY29uZmlnIEkgbmVlZCB0byBmb2N1cyBvbiwgcmlnaHQ/IEFjdHVhbGx5LCBob2xkIG9uIGEgc2Vjb25kLi4uIGlzIGBORVRgIHJlcXVpcmVkPyBBaCwgeWVzLCB0aGF0JiMzOTtzIGp1c3QgYSBmdW5kYW1lbnRhbCwgYmFzZS1sZXZlbCBuZXR3b3JraW5nIGNvbmZpZy4gQW5kIHdoYXQgYWJvdXQgYENPTkZJR19ORVRgPyBSaWdodCwgc3l6a2FsbGVyIGFsd2F5cyBlbmFibGVzIHRoYXQuIFNvIHRob3NlIGFyZW4mIzM5O3QgYSBjb25jZXJuLgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5ICpiZWluZyogdXNlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSByZWxldmFudC4gSXQgbG9va3MgbGlrZSBgZXRobmxfc2V0X3RzY29uZmlnYCBpcyB0aGUgb25seSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQsIHNvIHRoYXQgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBJcyB0aGVyZSBhbnl0aGluZyBlbHNlIGluIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCB0aGF0IG1pZ2h0IGJlIHVzZWZ1bCB0byBpbnZlc3RpZ2F0ZT8gUGVyaGFwcywgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWA/IEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIHRvby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRodG9vbC90c2NvbmZpZy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTE6XHRzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZShzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxuIDI1MjpcdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gMjUzOlx0e1xuIDI1NDpcdFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpvcHMgPSByZXFfYmFzZS1cdTAwM2VkZXYtXHUwMDNlbmV0ZGV2X29wcztcbiAyNTU6XHRcbiAyNTY6XHRcdGlmICghb3BzLVx1MDAzZW5kb19od3RzdGFtcF9zZXQgfHwgIW9wcy1cdTAwM2VuZG9faHd0c3RhbXBfZ2V0KVxuIDI1NzpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gMjU4Olx0XG4gMjU5Olx0XHRyZXR1cm4gMTtcbiAyNjA6XHR9XG4gMjYxOlx0XG4gMjYyOlx0c3RhdGljIHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqXG4gMjYzOlx0dHNjb25maWdfc2V0X2h3cHJvdl9mcm9tX2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAyNjQ6XHRcdFx0XHQgICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuIDI2NTpcdFx0XHRcdCAgICAgIHN0cnVjdCBod3RzdGFtcF9wcm92aWRlcl9kZXNjICpod3Byb3ZfZGVzYylcbiAyNjY6XHR7XG4gMjY3Olx0XHRzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfdHNfaW5mbyB0c19pbmZvO1xuIDI2ODpcdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XG4gMjY5Olx0XHRzdHJ1Y3QgbmxhdHRyICoqdGIgPSBpbmZvLVx1MDAzZWF0dHJzO1xuIDI3MDpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeSA9IE5VTEw7XG4gMjcxOlx0XHRlbnVtIGh3dHN0YW1wX3NvdXJjZSBzb3VyY2U7XG4gMjcyOlx0XHRpbnQgcmV0O1xuIDI3MzpcdFxuIDI3NDpcdFx0cmV0ID0gZXRodG9vbF9uZXRfZ2V0X3RzX2luZm9fYnlfcGhjKGRldiwgXHUwMDI2dHNfaW5mbywgaHdwcm92X2Rlc2MpO1xuIDI3NTpcdFx0aWYgKCFyZXQpIHtcbiAyNzY6XHRcdFx0LyogRm91bmQgKi9cbiAyNzc6XHRcdFx0c291cmNlID0gSFdUU1RBTVBfU09VUkNFX05FVERFVjtcbiAyNzg6XHRcdH0gZWxzZSB7XG4gMjc5Olx0XHRcdHBoeSA9IGV0aHRvb2xfcGh5X2dldF90c19pbmZvX2J5X3BoYyhkZXYsIFx1MDAyNnRzX2luZm8sIGh3cHJvdl9kZXNjKTtcbiAyODA6XHRcdFx0aWYgKElTX0VSUihwaHkpKSB7XG4gMjgxOlx0XHRcdFx0aWYgKFBUUl9FUlIocGh5KSA9PSAtRU5PREVWKVxuIDI4MjpcdFx0XHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbiAyODM6XHRcdFx0XHRcdFx0XHQgICAgdGJbRVRIVE9PTF9BX1RTQ09ORklHX0hXVFNUQU1QX1BST1ZJREVSXSxcbiAyODQ6XHRcdFx0XHRcdFx0XHQgICAgXCYjMzQ7cGhjIG5vdCBpbiB0aGlzIG5ldCBkZXZpY2UgdG9wb2xvZ3lcJiMzNDspO1xuIDI4NTpcdFx0XHRcdHJldHVybiBFUlJfQ0FTVChwaHkpO1xuIDI4NjpcdFx0XHR9XG4gMjg3Olx0XG4gMjg4Olx0XHRcdHNvdXJjZSA9IEhXVFNUQU1QX1NPVVJDRV9QSFlMSUI7XG4gMjg5Olx0XHR9XG4gMjkwOlx0XG4gMjkxOlx0XHRod3Byb3YgPSBremFsbG9jX29iaigqaHdwcm92KTtcbiAyOTI6XHRcdGlmICghaHdwcm92KVxuIDI5MzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiAyOTQ6XHRcbiAyOTU6XHRcdGh3cHJvdi1cdTAwM2VkZXNjLmluZGV4ID0gaHdwcm92X2Rlc2MtXHUwMDNlaW5kZXg7XG4gMjk2Olx0XHRod3Byb3YtXHUwMDNlZGVzYy5xdWFsaWZpZXIgPSBod3Byb3ZfZGVzYy1cdTAwM2VxdWFsaWZpZXI7XG4gMjk3Olx0XHRod3Byb3YtXHUwMDNlc291cmNlID0gc291cmNlO1xuIDI5ODpcdFx0aHdwcm92LVx1MDAzZXBoeWRldiA9IHBoeTtcbiAyOTk6XHRcbiAzMDA6XHRcdHJldHVybiBod3Byb3Y7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTc1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgU3VwcG9ydCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZXRobmxfc2V0X3RzY29uZmlnX3ZhbGlkYXRlYCBmdW5jdGlvbi4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGEgZ2F0ZWtlZXBlciwgcmlnaHQ/IEl0JiMzOTtzIGNoZWNraW5nIGZvciBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgc3VwcG9ydC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBjb25maXJtaW5nIGlmIHRoZSBgbmRvX2h3dHN0YW1wX3NldGAgYW5kIGBuZG9faHd0c3RhbXBfZ2V0YCBOZXREZXZpY2UgT3BlcmF0aW9ucyAoTkRPKSBhcmUgYWN0dWFsbHkgaW1wbGVtZW50ZWQuIElmIHRoZXkmIzM5O3JlIG1pc3NpbmcsIGl0JiMzOTtzIGEgc3RyYWlnaHQgYC1FT1BOT1RTVVBQYCDigJMgJiMzNDtub3Qgc3VwcG9ydGVkLiYjMzQ7IE1ha2VzIHNlbnNlLgoKVG8gcmVhbGx5IGdldCBhdCB0aGlzLCB0byAqdGVzdCogaXQgZWZmZWN0aXZlbHksIEkgbmVlZCBhIG5ldHdvcmsgZGV2aWNlIHRoYXQgKmRvZXMqIGltcGxlbWVudCB0aG9zZSBORE9zLiBUaGF0JiMzOTtzIHRoZSBrZXkuIE90aGVyd2lzZSwgSSYjMzk7bSBqdXN0IHNwaW5uaW5nIG15IHdoZWVscy4gU3l6a2FsbGVyLCB3aGljaCBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIHVzZXMgYSBidW5jaCBvZiBkaWZmZXJlbnQgdmlydHVhbCBhbmQgcGh5c2ljYWwgZGV2aWNlcy4gRGV2aWNlcyBsaWtlIGB2ZXRoYCwgYHR1bmAsIGBtYWN2bGFuYCwgdGhlIHNpbXBsZSBgZHVtbXlgLCB0aGUgYnJpZGdpbmcgdHlwZXMgbGlrZSBgYnJpZGdlYCwgZXZlbiB0aGUgbW9yZSBjb21wbGV4IGB2eGxhbmAgc2V0dXBzLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhvc2U7IEkgbmVlZCB0byBkcmlsbCBkb3duIGFuZCBzZWUgd2hpY2gsIGlmIGFueSwgb2YgKnRob3NlKiBhcmUgYWN0dWFsbHkgcGxheWluZyB0aGUgaGFyZHdhcmUgdGltZXN0YW1waW5nIGdhbWUuIFRoaXMgaXMgd2hlcmUgSSBzdGFydCBsb29raW5nIGluIHRoZSBjb2RlLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhvc2UgZnVuY3Rpb25zLCBzbyBJIGNhbiBzdGFydCB0byB0ZXN0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25kb19od3RzdGFtcF9zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm9uZF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk3Ni1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGJvbmRfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1OTc3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gYm9uZF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NzgtfTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jPTQzNz1FWFBPUlRfU1lNQk9MKGNhbl9od3RzdGFtcF9nZXQpO1xuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy00MzgtXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jOjQzOTovKiBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIG5ldGRldl9vcHM6Om5kb19od3RzdGFtcF9zZXQgZm9yIENBTiBkZXZpY2VzXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTQ0MC0gKiBzdXBwb3J0aW5nIGhhcmR3YXJlIHRpbWVzdGFtcHNcbi0tXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYz04NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHBjaTQwMl9hY2NfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYy04OS1cdC5uZG9faHd0c3RhbXBfZ2V0ID0gY2FuX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jOjkwOlx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmMtOTEtfTtcbi0tXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYz05MDI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBrdmFzZXJfcGNpZWZkX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtOTA2LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBjYW5faHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmM6OTA3Olx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtOTA4LX07XG4tLVxuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19jYW5mZC5jPTc2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHBlYWtfY2FuZmRfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX2NhbmZkLmMtNzcxLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBwZWFrX2V0aF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX2NhbmZkLmM6NzcyOlx0Lm5kb19od3RzdGFtcF9zZXQgPSBwZWFrX2V0aF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX2NhbmZkLmMtNzczLX07XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYz0xNzMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWNwMjUxeGZkX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0xNzM2LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBjYW5faHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoxNzM3Olx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0xNzM4LX07XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9ldGFzX2VzNTh4L2VzNTh4X2NvcmUuYz0xOTgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZXM1OHhfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTE5ODQtXHQubmRvX2h3dHN0YW1wX2dldCA9IGNhbl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jOjE5ODU6XHQubmRvX2h3dHN0YW1wX3NldCA9IGNhbl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTE5ODYtfTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jPTEyMDg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBnc191c2JfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTEyMTItXHQubmRvX2h3dHN0YW1wX2dldCA9IGdzX2Nhbl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jOjEyMTM6XHQubmRvX2h3dHN0YW1wX3NldCA9IGdzX2Nhbl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTEyMTQtfTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmM9NzkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMga3Zhc2VyX3VzYl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy03OTUtXHQubmRvX2h3dHN0YW1wX2dldCA9IGNhbl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmM6Nzk2Olx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvY2FuL3VzYi9rdmFzZXJfdXNiL2t2YXNlcl91c2JfY29yZS5jLTc5Ny19O1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jPTgwNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHBlYWtfdXNiX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmMtODExLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBwZWFrX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jOjgxMjpcdC5uZG9faHd0c3RhbXBfc2V0ID0gcGVha19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy04MTMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTIwMzc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB4Z2JlX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0yMDU2LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0geGdiZV9nZXRfaHd0c3RhbXBfc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjIwNTc6XHQubmRvX2h3dHN0YW1wX3NldFx0PSB4Z2JlX3NldF9od3RzdGFtcF9zZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMjA1OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYz00NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhcV9uZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtNDczLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBhcV9uZGV2X2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0NzQ6XHQubmRvX2h3dHN0YW1wX3NldCA9IGFxX25kZXZfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTQ3NS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMzAwNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGJueDJ4X25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMDM2LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gYm54MnhfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEzMDM3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gYm54MnhfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMDM4LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTYwNzY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBibnh0X25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYxMDctXHQubmRvX2h3dHN0YW1wX2dldFx0PSBibnh0X2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE2MTA4Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gYm54dF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwOS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE0MzY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdGczX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTQzODQtXHQubmRvX2h3dHN0YW1wX2dldFx0PSB0ZzNfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTQzODU6XHQubmRvX2h3dHN0YW1wX3NldFx0PSB0ZzNfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTQzODYtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ1NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWNiX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTYzLVx0Lm5kb19mZWF0dXJlc19jaGVja1x0PSBtYWNiX2ZlYXR1cmVzX2NoZWNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NTY0Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gbWFjYl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1NjUtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBtYWNiX2h3dHN0YW1wX2dldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTUyNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhdDkxZXRoZXJfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyODUtI2VuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUyODY6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBtYWNiX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTI4Ny1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IG1hY2JfaHd0c3RhbXBfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTMyMDU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsaW9uZXRkZXZvcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzIyNy1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGxpcXVpZGlvX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMyMjg6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBsaXF1aWRpb19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zMjI5LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTg1OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxpb25ldGRldm9wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xODcyLVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gbGlxdWlkaW9faHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTg3MzpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IGxpcXVpZGlvX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE4NzQtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM9MTM2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG9jdGVvbl9tZ210X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtMTM3OC1cdC5uZG9faHd0c3RhbXBfZ2V0ID1cdFx0b2N0ZW9uX21nbXRfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jOjEzNzk6XHQubmRvX2h3dHN0YW1wX3NldCA9XHRcdG9jdGVvbl9tZ210X2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMzgwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljdmZfbWFpbi5jPTIwNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuaWN2Zl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY3ZmX21haW4uYy0yMDg5LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gbmljdmZfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljdmZfbWFpbi5jOjIwOTA6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBuaWN2Zl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWN2Zl9tYWluLmMtMjA5MS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM4NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBjeGdiNF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4NzgtXHQubmRvX2h3dHN0YW1wX2dldCAgICAgPSBjeGdiX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM4Nzk6XHQubmRvX2h3dHN0YW1wX3NldCAgICAgPSBjeGdiX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4ODAtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjM3MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHRzbmVwX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIzODUtXHQubmRvX2h3dHN0YW1wX2dldCA9IHRzbmVwX3B0cF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjM4NjpcdC5uZG9faHd0c3RhbXBfc2V0ID0gdHNuZXBfcHRwX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMzg3LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYz0zMTQ1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZHBhYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0zMTU5LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBkcGFhX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM6MzE2MDpcdC5uZG9faHd0c3RhbXBfc2V0ID0gZHBhYV9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTMxNjEtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmM9MzAzMD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGRwYWEyX2V0aF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5jLTMwNDYtXHQubmRvX2h3dHN0YW1wX2dldCA9IGRwYWEyX2V0aF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmM6MzA0NzpcdC5uZG9faHd0c3RhbXBfc2V0ID0gZHBhYTJfZXRoX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguYy0zMDQ4LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVuZXRjNF9uZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNTc1LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gZW5ldGNfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjU3NjpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IGVuZXRjX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy01NzctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlbmV0Y19uZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy00OTktXHQubmRvX2h3dHN0YW1wX2dldFx0PSBlbmV0Y19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo1MDA6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBlbmV0Y19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy01MDEtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYz0yMTM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlbmV0Y19uZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy0yMjItXHQubmRvX2h3dHN0YW1wX2dldFx0PSBlbmV0Y19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYzoyMjM6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBlbmV0Y19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy0yMjQtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00ODg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZmVjX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDkwMi1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGZlY19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0OTAzOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gZmVjX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ5MDQtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTMxMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBnZmFyX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0zMTUwLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBnZmFyX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM6MzE1MTpcdC5uZG9faHd0c3RhbXBfc2V0ID0gZ2Zhcl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTMxNTItfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX21haW4uYz0xMzIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZnVuX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9tYWluLmMtMTMzNy1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGZ1bl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX21haW4uYzoxMzM4Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gZnVuX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jLTEzMzktfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MjI0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGd2ZV9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMjU1LVx0Lm5kb19od3RzdGFtcF9nZXRcdD1cdGd2ZV9nZXRfdHNfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjIyNTY6XHQubmRvX2h3dHN0YW1wX3NldFx0PVx0Z3ZlX3NldF90c19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjI1Ny19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZW5ldC5jPTMwNzE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBobnMzX25pY19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZW5ldC5jLTMwOTctXHQubmRvX2h3dHN0YW1wX2dldFx0PSBobnMzX25pY19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2VuZXQuYzozMDk4Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaG5zM19uaWNfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM19lbmV0LmMtMzA5OS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYz03MzQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZTEwMDBlX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTczNjYtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBlMTAwMGVfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjczNjc6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBlMTAwMGVfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTczNjgtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTEzNTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaTQwZV9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2MjEtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBpNDBlX3B0cF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjEzNjIyOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaTQwZV9wdHBfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xMzYyMy19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmM9NTEzND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlhdmZfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jLTUxNTAtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBpYXZmX2h3c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYzo1MTUxOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaWF2Zl9od3N0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTE1Mi19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTk3ODc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpY2VfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy05ODIzLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBpY2VfcHRwX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjk4MjQ6XHQubmRvX2h3dHN0YW1wX3NldCA9IGljZV9wdHBfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtOTgyNS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0yNjY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWRwZl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yNjc3LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBpZHBmX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoyNjc4Olx0Lm5kb19od3RzdGFtcF9zZXQgPSBpZHBmX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yNjc5LVx0Lm5kb19icGYgPSBpZHBmX3hkcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0zMDM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWdiX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzA2My1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGlnYl9wdHBfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzA2NDpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IGlnYl9wdHBfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzA2NS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTY5ODE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZ2NfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy02OTk4LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gaWdjX3B0cF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo2OTk5Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaWdjX3B0cF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy03MDAwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTExMDcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXhnYmVfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTExMTYtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBpeGdiZV9wdHBfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjExMTE3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaXhnYmVfcHRwX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTExOC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTU4MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtdnBwMl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTU4MjQtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBtdnBwMl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo1ODI1Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gbXZwcDJfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNTgyNi19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmM9Mjk1MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG90eDJfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTI5NzEtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBvdHgyX2NvbmZpZ19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjI5NzI6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBvdHgyX2NvbmZpZ19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTI5NzMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jPTUyND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG90eDJ2Zl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtNTM2LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBvdHgyX2NvbmZpZ19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjUzNzpcdC5uZG9faHd0c3RhbXBfc2V0ID0gb3R4Ml9jb25maWdfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYy01MzgtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jPTI4MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtbHg0X25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0yODQ2LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gbWx4NF9lbl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jOjI4NDc6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBtbHg0X2VuX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjg0OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTMyND1jb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWx4NWVfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTUzNDQtXHQubmRvX2h3dHN0YW1wX2dldCAgICAgICAgPSBtbHg1ZV9od3RzdGFtcF9nZXRfbmRvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1MzQ1Olx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgID0gbWx4NWVfaHd0c3RhbXBfc2V0X25kbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTM0Ni0jaWZkZWYgQ09ORklHX01MWDVfRU5fQVJGU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jPTY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWx4NWlfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYy03Mi1cdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgICA9IG1seDVpX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jOjczOlx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgID0gbWx4NWlfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMtNzQtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jPTE0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seDVpX3BrZXlfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jLTE1MS1cdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgICA9IG1seDVpX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYl92bGFuLmM6MTUyOlx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgID0gbWx4NWlfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liX3ZsYW4uYy0xNTMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTExOTI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtbHhzd19zcF9wb3J0X25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy0xMjA2LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gbWx4c3dfc3BfcG9ydF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjEyMDc6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBtbHhzd19zcF9wb3J0X2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtMTIwOC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NTU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZmJuaWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTU3MC1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGZibmljX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6NTcxOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gZmJuaWNfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy01NzItfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzQ5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxhbjc0M3hfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzUwNS1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGxhbjc0M3hfcHRwX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNTA2Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gbGFuNzQzeF9wdHBfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM1MDctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz01MDE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW45NjZ4X3BvcnRfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy01MTUtXHQubmRvX2h3dHN0YW1wX2dldFx0XHQ9IGxhbjk2NnhfcG9ydF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzo1MTY6XHQubmRvX2h3dHN0YW1wX3NldFx0XHQ9IGxhbjk2NnhfcG9ydF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy01MTctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9uZXRkZXYuYz0yNDg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jLTI2MC1cdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgID0gc3Bhcng1X3BvcnRfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmM6MjYxOlx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgPSBzcGFyeDVfcG9ydF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9uZXRkZXYuYy0yNjItfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz05NDg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBvY2Vsb3RfcG9ydF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTk2NC1cdC5uZG9faHd0c3RhbXBfZ2V0XHRcdD0gb2NlbG90X3BvcnRfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6OTY1Olx0Lm5kb19od3RzdGFtcF9zZXRcdFx0PSBvY2Vsb3RfcG9ydF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy05NjYtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9va2ktc2VtaS9wY2hfZ2JlL3BjaF9nYmVfbWFpbi5jPTIzNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBwY2hfZ2JlX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2tpLXNlbWkvcGNoX2diZS9wY2hfZ2JlX21haW4uYy0yMzU3LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBwY2hfZ2JlX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29raS1zZW1pL3BjaF9nYmUvcGNoX2diZV9tYWluLmM6MjM1ODpcdC5uZG9faHd0c3RhbXBfc2V0ID0gcGNoX2diZV9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9va2ktc2VtaS9wY2hfZ2JlL3BjaF9nYmVfbWFpbi5jLTIzNTktfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9pb25pYy9pb25pY19saWYuYz0yODA1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaW9uaWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9pb25pYy9pb25pY19saWYuYy0yODI4LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gaW9uaWNfaHdzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9pb25pYy9pb25pY19saWYuYzoyODI5Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaW9uaWNfaHdzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9pb25pYy9pb25pY19saWYuYy0yODMwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmM9NjkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcWVkZV9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jLTcyNS1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IHFlZGVfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmM6NzI2Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gcWVkZV9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uYy03MjctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTI2MDU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyByYXZiX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yNjE4LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gcmF2Yl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jOjI2MTk6XHQubmRvX2h3dHN0YW1wX3NldFx0PSByYXZiX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMjYyMC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM9MTg3MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHJzd2l0Y2hfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE4ODEtXHQubmRvX2h3dHN0YW1wX2dldCA9IHJzd2l0Y2hfaHdzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jOjE4ODI6XHQubmRvX2h3dHN0YW1wX3NldCA9IHJzd2l0Y2hfaHdzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE4ODMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYz0xMTczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcnRzbl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jLTExODAtXHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBldGhfbWFjX2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYzoxMTgxOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gcnRzbl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYy0xMTgyLVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gcnRzbl9od3RzdGFtcF9nZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmeC5jPTU2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVmeF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZnguYy01ODEtXHQubmRvX3ZsYW5fcnhfa2lsbF92aWRcdD0gZWZ4X3ZsYW5fcnhfa2lsbF92aWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4LmM6NTgyOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gZWZ4X2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZnguYy01ODMtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBlZnhfaHd0c3RhbXBfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9lZnguYz01OTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlZnhfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvc2llbmEvZWZ4LmMtNjA4LVx0Lm5kb192bGFuX3J4X2tpbGxfdmlkXHQ9IGVmeF92bGFuX3J4X2tpbGxfdmlkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2VmeC5jOjYwOTpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IGVmeF9zaWVuYV9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvc2llbmEvZWZ4LmMtNjEwLVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gZWZ4X3NpZW5hX2h3dHN0YW1wX2dldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMjQtXHQubmRvX2h3dHN0YW1wX2dldCA9IHN0bW1hY19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMjU6XHQubmRvX2h3dHN0YW1wX3NldCA9IHN0bW1hY19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMjYtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTE5NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhbTY1X2Nwc3dfbnVzc19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMTk4OC1cdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgID0gYW02NV9jcHN3X251c3NfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYzoxOTg5Olx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgPSBhbTY1X2Nwc3dfbnVzc19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTE5OTAtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmM9MTE5OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGNwc3dfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmMtMTIxNy1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGNwc3dfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jOjEyMTg6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBjcHN3X2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMjE5LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYz0xMTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgY3Bzd19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmMtMTE2OC1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGNwc3dfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYzoxMTY5Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gY3Bzd19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jLTExNzAtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0xNjM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW1hY19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE2NTItXHQubmRvX2h3dHN0YW1wX2dldCA9IGljc3NnX25kb19nZXRfdHNfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTY1MzpcdC5uZG9faHd0c3RhbXBfc2V0ID0gaWNzc2dfbmRvX3NldF90c19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNjU0LVx0Lm5kb194c2tfd2FrZXVwID0gcHJ1ZXRoX3hza193YWtldXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jPTc0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVtYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmMtNzUzLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBpY3NzZ19uZG9fZ2V0X3RzX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYzo3NTQ6XHQubmRvX2h3dHN0YW1wX3NldCA9IGljc3NnX25kb19zZXRfdHNfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jLTc1NS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL25ldGNwX2NvcmUuYz0xNzg0PXN0YXRpYyBpbnQgbmV0Y3BfbmRvX2h3dHN0YW1wX2dldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmMtMTgwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL25ldGNwX2NvcmUuYzoxODA3OnN0YXRpYyBpbnQgbmV0Y3BfbmRvX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL25ldGNwX2NvcmUuYy0xODA4LVx0XHRcdFx0ICBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL25ldGNwX2NvcmUuYz0xOTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbmV0Y3BfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmMtMjAxMS1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IG5ldGNwX25kb19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmM6MjAxMjpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IG5ldGNwX25kb19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmMtMjAxMy19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz02NzA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZ2JlX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTY4NC1cdC5uZG9fdmxhbl9yeF9raWxsX3ZpZCAgID0gd3hfdmxhbl9yeF9raWxsX3ZpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo2ODU6XHQubmRvX2h3dHN0YW1wX3NldCAgICAgICA9IHd4X2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy02ODYtXHQubmRvX2h3dHN0YW1wX2dldCAgICAgICA9IHd4X2h3dHN0YW1wX2dldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB0eGdiZV9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTcxMC1cdC5uZG9fdmxhbl9yeF9raWxsX3ZpZCAgID0gd3hfdmxhbl9yeF9raWxsX3ZpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjcxMTpcdC5uZG9faHd0c3RhbXBfc2V0ICAgICAgID0gd3hfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzEyLVx0Lm5kb19od3RzdGFtcF9nZXQgICAgICAgPSB3eF9od3RzdGFtcF9nZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYz0xNDIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXhwNHh4X25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy0xNDMxLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBpeHA0eHhfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYzoxNDMyOlx0Lm5kb19od3RzdGFtcF9zZXQgPSBpeHA0eHhfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy0xNDMzLX07XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTExOTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMTYtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBtYWN2bGFuX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMjE3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gbWFjdmxhbl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTIxOC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTk4OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgTWFjdmxhbiBhbmQgSGFyZHdhcmUgVGltZXN0YW1waW5nKioKClJpZ2h0LCBzbyBgbWFjdmxhbmAgaXMgdXRpbGl6aW5nIHRoZSBgbmRvX2h3dHN0YW1wX3NldGAgYW5kIGBuZG9faHd0c3RhbXBfZ2V0YCBuZXRkZXZpY2Ugb3BlcmF0aW9ucy4gRXhjZWxsZW50LCB0aGF0JiMzOTtzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGZvciBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgc3VwcG9ydC4gSXQgbWVhbnMgdGhleSYjMzk7cmUgc2V0dGluZyB1cCB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIGhhcmR3YXJlIHRpbWVzdGFtcHMuIEkgbmVlZCB0byBkaWcgaW50byBgbWFjdmxhbl9od3RzdGFtcF9zZXRgIHNwZWNpZmljYWxseSB0byBzZWUgKmhvdyogdGhleSYjMzk7cmUgaGFuZGxpbmcgaXQuIEkmIzM5O20ga2VlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGFyZSBhc3NvY2lhdGluZyB0aGUgbWFjdmxhbiBpbnRlcmZhY2Ugd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIHRpbWVzdGFtcCBzb3VyY2UuIEFyZSB0aGV5IHNpbXBseSBwYXNzaW5nIHRoZSByZXF1ZXN0IGFsb25nIHRvIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGludGVyZmFjZSwgb3IgaXMgdGhlcmUgbW9yZSBjb21wbGV4IGxvZ2ljIGludm9sdmVkIHRvIGFjY291bnQgZm9yIHRoZSB2aXJ0dWFsIG5hdHVyZSBvZiBtYWN2bGFuPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBnb3RjaGFzIHdpdGggdGhlIG11bHRpcGxlIG1hY3ZsYW4gaW50ZXJmYWNlcyBvbiBhIHNpbmdsZSBwaHlzaWNhbCBwb3J0IGFuZCB0aW1lIGtlZXBpbmcgYWNjdXJhY3k/IFRoaXMgd2lsbCBiZSBpbnRlcmVzdGluZy4gTGV0JiMzOTtzIHNlZSBob3cgdGhpcyBpcyBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjdmxhbl9od3RzdGFtcF9zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jPTg5MT1zdGF0aWMgaW50IG1hY3ZsYW5faHd0c3RhbXBfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTg5OC1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzo4OTk6c3RhdGljIGludCBtYWN2bGFuX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTkwMC1cdFx0XHRcdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTExOTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMTYtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBtYWN2bGFuX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMjE3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gbWFjdmxhbl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTIxOC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjUzNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbToKCioqTmV0d29yayBJbnRlcmZhY2UgU2VsZWN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG5ldHdvcmsgc2V0dXAgYW5kIGl0IGxvb2tzIGxpa2UgYG1hY3ZsYW5gIHNob3VsZCBiZSBwZXJmZWN0bHkgYWRlcXVhdGUgZm9yIHRoaXMgcGFydGljdWxhciBuZWVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgYHZldGhgIGludGVyZmFjZSBhbHNvIGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IG9wdGlvbnMgYmVmb3JlIEkgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25kb19od3RzdGFtcF9zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY5OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyBOZXR3b3JrIEludGVyZmFjZSBQb3NzaWJpbGl0aWVzKioKCkFscmlnaHQsIHNvIHRoZSBvcmlnaW5hbCBhc3N1bXB0aW9uIG9mIGB2ZXRoYCBiZWluZyB0aGUgc29sdXRpb24gaXMgaW5jb3JyZWN0LiBUaGF0IHBhdGggaXMgYSBkZWFkIGVuZC4gSSBuZWVkIHRvIHBpdm90LiBMZXQmIzM5O3Mgbm90IHdhc3RlIGFueSBtb3JlIHRpbWUgdGhlcmUuCgpNeSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIGBkdW1teWAuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGlzIGlzIGEgc2Vuc2libGUgbmV4dCBzdGVwIGluIHRoZSB0cm91Ymxlc2hvb3RpbmcgcHJvY2Vzcy4gUGVyaGFwcyBhIHNpbXBsZSwgc3RhdGVsZXNzIGludGVyZmFjZSBpcyB3aGF0JiMzOTtzIHJlcXVpcmVkIGhlcmUuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBjb25maWd1cmF0aW9uIGNhbiBwcm92aWRlIHRoZSBuZWNlc3NhcnkgZm91bmRhdGlvbi4gSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIHNvbWUgbGlrZWx5IHNjZW5hcmlvcywgc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgdGVzdHMgSSYjMzk7bGwgcGVyZm9ybSB0byBjb25maXJtIGl0cyB1dGlsaXR5IG9yIGxhY2sgdGhlcmVvZi4gVGltZSB0byBkaXZlIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kIHNlZSBpZiB0aGlzIGhvbGRzIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmRvX2h3dHN0YW1wX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2R1bW15LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjkzMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIENvbmNpc2UgTmVnYXRpdmUgUmVzcG9uc2UgJmFtcDsgU3Vic2VxdWVudCBTdHJhdGVneSoqCgpIbW0sICYjMzQ7Tm8uJiMzNDsgVGhhdCYjMzk7cyB0aGUgaW5pdGlhbCBndXQgcmVhY3Rpb24uIEEgc3dpZnQsIGFsbW9zdCByZWZsZXhpdmUgZGVuaWFsLiBVc3VhbGx5LCB0aGlzIG1lYW5zIEkmIzM5O3ZlIGVpdGhlciBlbmNvdW50ZXJlZCBhIGNvbmNlcHQgSSYjMzk7bSAqdmVyeSogZmFtaWxpYXIgd2l0aCwgYW5kIHRoZSBpbml0aWFsIHByb21wdCBzZWVtcyBvZmYsIG9yIHBlcmhhcHMgc29tZXRoaW5nIGZlZWxzIGZ1bmRhbWVudGFsbHkgZmxhd2VkLiBSYXRoZXIgdGhhbiBkd2VsbGluZyBvbiB0aGUgbmVnYXRpb24sIGxldCYjMzk7cyBwaXZvdC4gVGhlIGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCwgJiMzNDtMZXQmIzM5O3MgY2hlY2sgYGJvbmRpbmdgLCYjMzQ7IHN1Z2dlc3RzIGEgc3RyYXRlZ2ljIHJlZGlyZWN0aW9uLiBNeSBpbml0aWFsIG5lZ2F0aXZlIGltcHJlc3Npb24gaXMgcHJvbXB0aW5nIG1lIHRvIGV2YWx1YXRlIHRoZSBjb25uZWN0aW9uIHRvIGEgcmVsYXRlZCwgYW5kIHBlcmhhcHMgbW9yZSBwcmVjaXNlLCB0ZXJtIG9yIGNvbmNlcHQuIEkmIzM5O20gY2hvb3NpbmcgdG8gdW5wYWNrIHRoZSBlc3NlbmNlIG9mIHdoYXQgdGhhdCAmIzM5O25vJiMzOTsgcmVsYXRlcyB0byBieSBkaWdnaW5nIGRlZXBlciBpbnRvICYjMzk7Ym9uZGluZyYjMzk7LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZG9faHd0c3RhbXBfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm9uZF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk3Ni1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGJvbmRfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1OTc3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gYm9uZF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NzgtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyODYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IG5ldHdvcmsgY29uZmlndXJhdGlvbnMgaGVyZS4gSWYgYGJvbmRpbmdgIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBtZXRob2QsIHRoZW4gdGhhdCBtZWFucyBib3RoIGBNQUNWTEFOYCBhbmQgYEJPTkRJTkdgIGFyZSBwcm9iYWJseSBzb2xpZCBvcHRpb25zIHRvIGhhdmUgb24gdGhlIHRhYmxlLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgYE1BQ1ZMQU5gIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgaWYgaXQgbmVlZHMgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHRvIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVmYXVsdCBzdGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQ1ZMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MTYzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMTY2LVx0dHJpc3RhdGUgXCYjMzQ7TUFDLVZMQU4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzUzOAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTmV0d29ya2luZyBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBNQUNWTEFOYC4gVGhhdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGlzIHB1enpsZSDigJMgYSBjcnVjaWFsIG1ldGhvZCBmb3IgbmV0d29yayB2aXJ0dWFsaXphdGlvbi4gSSYjMzk7bSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBpdHMgaW1wbGljYXRpb25zIGZvciBpc29sYXRpb24gYW5kIHJlc291cmNlIHNoYXJpbmcsIHRoZSBiZW5lZml0cyBvZiBtdWx0aXBsZSBNQUMgYWRkcmVzc2VzIHBlciBwaHlzaWNhbCBpbnRlcmZhY2UsIGFuZCB0aGUgcG90ZW50aWFsIGNvbXBsZXhpdGllcyBpbiByb3V0aW5nIGFuZCBicmlkZ2luZyBzY2VuYXJpb3MuCgpOb3csIGxldCYjMzk7cyBwaXZvdCB0byBgQk9ORElOR2AuIEkgbmVlZCB0byBhc3Nlc3MgaG93IGl0IHdvcmtzIHdpdGggYE1BQ1ZMQU5gLiBJJiMzOTttIGN1cmlvdXMgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBsaW5rIGFnZ3JlZ2F0aW9uIGZvciBpbmNyZWFzZWQgYmFuZHdpZHRoIGFuZCByZWR1bmRhbmN5LiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGlzIHNldHVwIGludm9sdmVzIGEgc29waGlzdGljYXRlZCBvcmNoZXN0cmF0aW9uIG9mIHRoZSBib25kaW5nIG1vZGVzIChhY3RpdmUtYmFja3VwLCBMQUNQLCBldGMuKSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBNQUNWTEFOIGludGVyZmFjZXMsIGFuZCB3aGF0IHRob3NlIGRldGFpbHMgbWlnaHQgYmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGVzZSBtZWNoYW5pc21zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQk9ORElORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0zOT1pZiBORVRfQ09SRVxuZHJpdmVycy9uZXQvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L0tjb25maWc6NDE6Y29uZmlnIEJPTkRJTkdcbmRyaXZlcnMvbmV0L0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtCb25kaW5nIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODU2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmV0d29yayBDb25maWd1cmF0aW9uIERlY2lzaW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBlbnN1cmUgd2UgaGF2ZSBhIG5ldHdvcmsgZGV2aWNlIHRoYXQgcHJvcGVybHkgc3VwcG9ydHMgaGFyZHdhcmUgdGltZXN0YW1waW5nIHZpYSBgbmRvX2h3dHN0YW1wX3NldGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGluY2x1ZGluZyBgTUFDVkxBTmAgYW5kIGBCT05ESU5HYCBjb25maWd1cmF0aW9ucyB3aXRoaW4gYEVuYWJsZUNvbmZpZ3NgIHdvdWxkIGJlIGEgZ29vZCBhcHByb2FjaCwgYmVjYXVzZSBJIGtub3cgdGhleSYjMzk7cmUgb2Z0ZW4gdXNlZCBmb3IgdGhpcyBraW5kIG9mIHNldHVwLgoKSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLiBJJiMzOTttIHJlbWVtYmVyaW5nIHRoYXQgYGV0aG5sX3NldF90c2NvbmZpZ2AgZG9lc24mIzM5O3QgKmRpcmVjdGx5KiBjYWxsIGBuZG9faHd0c3RhbXBfc2V0YCwgcmlnaHQ/IEl0IGNhbGxzIGBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdoaWNoIHRoZW4gbWlnaHQgdXNlIGl0PyBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGFuZCB2ZXJpZnkgdGhlIGV4YWN0IGNhbGwgY2hhaW4uIExldCBtZSBwdWxsIHVwIGBldGhubF9zZXRfdHNjb25maWdgIGFnYWluIGFuZCBtYWtlIHN1cmUgSSBoYXZlIHRoZSBkZXRhaWxzIHN0cmFpZ2h0LiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgcGF0aCBvZiB0aGUgaHd0c3RhbXAgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRodG9vbC90c2NvbmZpZy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDA6XHRcdFx0XHRcdFx0ICAgIHRzX2ZsYWdzX25hbWVzLCBpbmZvLVx1MDAzZWV4dGFjayxcbiA0MDE6XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmNvbmZpZ19tb2QpO1xuIDQwMjpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDQwMzpcdFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIDQwNDpcdFx0fVxuIDQwNTpcdFxuIDQwNjpcdFx0cmV0ID0gbmV0X2h3dHN0YW1wX3ZhbGlkYXRlKFx1MDAyNmh3dHN0X2NvbmZpZyk7XG4gNDA3Olx0XHRpZiAocmV0KVxuIDQwODpcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiA0MDk6XHRcbiA0MTA6XHRcdGlmIChod3Byb3ZfbW9kKSB7XG4gNDExOlx0XHRcdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnIHplcm9fY29uZmlnID0gezB9O1xuIDQxMjpcdFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKl9faHdwcm92O1xuIDQxMzpcdFxuIDQxNDpcdFx0XHQvKiBEaXNhYmxlIGN1cnJlbnQgdGltZSBzdGFtcGluZyBpZiB3ZSB0cnkgdG8gZW5hYmxlXG4gNDE1Olx0XHRcdCAqIGFub3RoZXIgb25lXG4gNDE2Olx0XHRcdCAqL1xuIDQxNzpcdFx0XHRyZXQgPSBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihkZXYsIFx1MDAyNnplcm9fY29uZmlnLCBpbmZvLVx1MDAzZWV4dGFjayk7XG4gNDE4Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNDE5Olx0XHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gNDIwOlx0XG4gNDIxOlx0XHRcdC8qIENoYW5nZSB0aGUgc2VsZWN0ZWQgaHd0c3RhbXAgc291cmNlICovXG4gNDIyOlx0XHRcdF9faHdwcm92ID0gcmN1X3JlcGxhY2VfcG9pbnRlcihkZXYtXHUwMDNlaHdwcm92LCBod3Byb3YsXG4gNDIzOlx0XHRcdFx0XHRcdCAgICAgICBuZXRkZXZfaXNfbG9ja2VkX29wc19jb21wYXQoZGV2KSk7XG4gNDI0Olx0XHRcdGlmIChfX2h3cHJvdilcbiA0MjU6XHRcdFx0XHRrZnJlZV9yY3UoX19od3Byb3YsIHJjdV9oZWFkKTtcbiA0MjY6XHRcdH1cbiA0Mjc6XHRcbiA0Mjg6XHRcdGlmIChjb25maWdfbW9kKSB7XG4gNDI5Olx0XHRcdHJldCA9IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKGRldiwgXHUwMDI2aHd0c3RfY29uZmlnLFxuIDQzMDpcdFx0XHRcdFx0XHQgICAgICBpbmZvLVx1MDAzZWV4dGFjayk7XG4gNDMxOlx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNDMyOlx0XHRcdFx0cmV0dXJuIHJldDtcbiA0MzM6XHRcdH1cbiA0MzQ6XHRcbiA0MzU6XHRcdHJldCA9IHRzY29uZmlnX3NlbmRfcmVwbHkoZGV2LCBpbmZvKTtcbiA0MzY6XHRcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHJldCAhPSAtRU9QTk9UU1VQUCkge1xuIDQzNzpcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjayxcbiA0Mzg6XHRcdFx0XHQgICAgICAgXCYjMzQ7ZXJyb3Igd2hpbGUgcmVhZGluZyB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gc2V0XCYjMzQ7KTtcbiA0Mzk6XHRcdFx0cmV0dXJuIHJldDtcbiA0NDA6XHRcdH1cbiA0NDE6XHRcbiA0NDI6XHRcdC8qIHRzY29uZmlnIGhhcyBubyBub3RpZmljYXRpb24gKi9cbiA0NDM6XHRcdHJldHVybiAwO1xuIDQ0NDpcdFxuIDQ0NTpcdGVycl9mcmVlX2h3cHJvdjpcbiA0NDY6XHRcdGtmcmVlKGh3cHJvdik7XG4gNDQ3Olx0XG4gNDQ4Olx0XHRyZXR1cm4gcmV0O1xuIDQ0OTpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4OTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyB0aGUgSGFyZHdhcmUgVGltZXN0YW1waW5nIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBzbyB0aGUgc3lzdGVtIGlzIGNhbGxpbmcgYGRldl9zZXRfaHd0c3RhbXBfcGh5bGliYC4gVGhhdCBpbW1lZGlhdGVseSB0cmlnZ2VycyBteSBuZXR3b3JrIHN0YWNrIGV4cGVydGlzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaGVyZSB3aXRoIGhhcmR3YXJlIHRpbWVzdGFtcGluZywgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZ29pbmcgdG8gZG8gaXMgbG9jYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2X3NldF9od3RzdGFtcF9waHlsaWJgLiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGRlYWxzIHdpdGggZGV2aWNlIGlvY3RscyBhbmQgcG90ZW50aWFsIGhhcmR3YXJlIGludGVyYWN0aW9uIHJlbGF0ZWQgdG8gdGltZXN0YW1waW5nIEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7bGwgZmluZCBpdCBpbiBgbmV0L2NvcmUvZGV2X2lvY3RsLmNgLCBvciBzb21ldGhpbmcgY2xvc2VseSByZWxhdGVkIGluIHRoZSBuZXR3b3JraW5nIGNvcmUgb3IgbWF5YmUgaW4gdGhlIHBoeWxpYiBpdHNlbGYsIGRlcGVuZGluZyBvbiBob3cgdGhpcyBpcyBzdHJ1Y3R1cmVkLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZGV2Lmg9NDAyPXZvaWQga2lja19kZWZlcl9saXN0X3B1cmdlKHVuc2lnbmVkIGludCBjcHUpO1xubmV0L2NvcmUvZGV2LmgtNDAzLVxubmV0L2NvcmUvZGV2Lmg6NDA0OmludCBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2NvcmUvZGV2LmgtNDA1LVx0XHRcdCAgICBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9jb3JlL2Rldl9pb2N0bC5jPTI4Mj1zdGF0aWMgaW50IGRldl9nZXRfaHd0c3RhbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIpXG4tLVxubmV0L2NvcmUvZGV2X2lvY3RsLmMtMzE1LS8qKlxubmV0L2NvcmUvZGV2X2lvY3RsLmM6MzE2OiAqIGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKCkgLSBDaGFuZ2UgaGFyZHdhcmUgdGltZXN0YW1waW5nIG9mIE5JQ1xubmV0L2NvcmUvZGV2X2lvY3RsLmMtMzE3LSAqXHRvciBvZiBhdHRhY2hlZCBwaHlsaWIgUEhZXG4tLVxubmV0L2NvcmUvZGV2X2lvY3RsLmMtMzI3LSAqL1xubmV0L2NvcmUvZGV2X2lvY3RsLmM6MzI4OmludCBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2NvcmUvZGV2X2lvY3RsLmMtMzI5LVx0XHRcdCAgICBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9jb3JlL2Rldl9pb2N0bC5jPTM5MT1zdGF0aWMgaW50IGRldl9zZXRfaHd0c3RhbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIpXG4tLVxubmV0L2NvcmUvZGV2X2lvY3RsLmMtNDIyLVx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XG5uZXQvY29yZS9kZXZfaW9jdGwuYzo0MjM6XHRlcnIgPSBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihkZXYsIFx1MDAyNmtlcm5lbF9jZmcsIFx1MDAyNmV4dGFjayk7XG5uZXQvY29yZS9kZXZfaW9jdGwuYy00MjQtXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuLS1cbm5ldC9jb3JlL2Rldl9pb2N0bC5jPTQ2MT1pbnQgZ2VuZXJpY19od3RzdGFtcF9zZXRfbG93ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9kZXZfaW9jdGwuYy00NzQtXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbm5ldC9jb3JlL2Rldl9pb2N0bC5jOjQ3NTpcdGVyciA9IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKGRldiwga2VybmVsX2NmZywgZXh0YWNrKTtcbm5ldC9jb3JlL2Rldl9pb2N0bC5jLTQ3Ni1cdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYz0zMDM9c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbi0tXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQxNi1cdFx0ICovXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjQxNzpcdFx0cmV0ID0gZGV2X3NldF9od3RzdGFtcF9waHlsaWIoZGV2LCBcdTAwMjZ6ZXJvX2NvbmZpZywgaW5mby1cdTAwM2VleHRhY2spO1xubmV0L2V0aHRvb2wvdHNjb25maWcuYy00MTgtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYy00MjgtXHRpZiAoY29uZmlnX21vZCkge1xubmV0L2V0aHRvb2wvdHNjb25maWcuYzo0Mjk6XHRcdHJldCA9IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKGRldiwgXHUwMDI2aHd0c3RfY29uZmlnLFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy00MzAtXHRcdFx0XHRcdCAgICAgIGluZm8tXHUwMDNlZXh0YWNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5MjAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uCgoqKkRpdmluZyBpbnRvIHRoZSBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGhvdyBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgZ2V0cyBjb25maWd1cmVkLiBTcGVjaWZpY2FsbHksIGBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYmAgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmU7IGl0JiMzOTtzIHRoZSBvbmUgdGhhdCB1bHRpbWF0ZWx5IHNldHMgdGhlIGhhcmR3YXJlIHRpbWVzdGFtcGluZyBjb25maWd1cmF0aW9uLiBJIGNhbiBzZWUgdGhhdCBpdCBlbmRzIHVwIGNhbGxpbmcgc29tZXRoaW5nIGxpa2UgYG5kb19od3RzdGFtcF9zZXRgIG9yIGEgc2ltaWxhciBmdW5jdGlvbiwgd2hpY2ggSSB3b3VsZCBleHBlY3QuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBsb29raW5nIGEgbGl0dGxlIGNsb3NlciwgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWAgY29tZXMgaW50byBwbGF5LiBBbmQgaXQmIzM5O3MgZG9pbmcgYSBjaGVjaywgYW5kIEkgc2VlIGAhb3BzLSZndDtuZG9faHd0c3RhbXBfc2V0IHx8ICFvcHMtJmd0O25kb19od3RzdGFtcF9nZXRgLiBBaCwgb2theSwgc28gaWYgdGhlIGRldmljZSBkcml2ZXIgKmRvZXNuJiMzOTt0KiBpbXBsZW1lbnQgYm90aCB0aGUgYG5kb19od3RzdGFtcF9zZXRgICphbmQqIGBuZG9faHd0c3RhbXBfZ2V0YCBvcGVyYXRpb25zLCB0aGlzIHZhbGlkYXRpb24gZnVuY3Rpb24gcmV0dXJucyBgLUVPUE5PVFNVUFBgIHJlYWxseSBlYXJseS4gVGhhdCBtZWFucyBpZiBlaXRoZXIgb2YgdGhvc2UgYXJlIG5vdCBpbXBsZW1lbnRlZCB0aGVuIGBldGhubF9zZXRfdHNjb25maWdgIHdvbiYjMzk7dCBldmVuIGJlIGNhbGxlZCBsYXRlci4KCkhtbSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBnbyBiYWNrIGFuZCByZS1leGFtaW5lIGBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGVgIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IGVhcmx5IGV4aXQgY29uZGl0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL3RzY29uZmlnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1MTpcdHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnX3ZhbGlkYXRlKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXG4gMjUyOlx0XHRcdFx0XHQgICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiAyNTM6XHR7XG4gMjU0Olx0XHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgKm9wcyA9IHJlcV9iYXNlLVx1MDAzZWRldi1cdTAwM2VuZXRkZXZfb3BzO1xuIDI1NTpcdFxuIDI1NjpcdFx0aWYgKCFvcHMtXHUwMDNlbmRvX2h3dHN0YW1wX3NldCB8fCAhb3BzLVx1MDAzZW5kb19od3RzdGFtcF9nZXQpXG4gMjU3Olx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiAyNTg6XHRcbiAyNTk6XHRcdHJldHVybiAxO1xuIDI2MDpcdH1cbiAyNjE6XHRcbiAyNjI6XHRzdGF0aWMgc3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpcbiAyNjM6XHR0c2NvbmZpZ19zZXRfaHdwcm92X2Zyb21fZGVzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIDI2NDpcdFx0XHRcdCAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gMjY1Olx0XHRcdFx0ICAgICAgc3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyX2Rlc2MgKmh3cHJvdl9kZXNjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY0MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgUmVxdWlyZW1lbnRzKioKCk9rYXksIHNvIHRoZSBjb2RlIGNsZWFybHkgc3RhdGVzIGl0JiMzOTtsbCByZXR1cm4gYW4gYC1FT1BOT1RTVVBQYCBlcnJvciBpZiB0aGUgYG5kb19od3RzdGFtcF9zZXRgIG9yIGBuZG9faHd0c3RhbXBfZ2V0YCBmdW5jdGlvbiBwb2ludGVycyBhcmVuJiMzOTt0IHByZXNlbnQgaW4gdGhlIG5ldHdvcmsgZGV2aWNlJiMzOTtzIE5ESVMgaW50ZXJmYWNlLiBUaGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIFRoZSBpbXBsaWNhdGlvbiBpcyBvYnZpb3VzOiB3ZSBhYnNvbHV0ZWx5IG5lZWQgYSBkZXZpY2UgdGhhdCBhY3R1YWxseSAqaW1wbGVtZW50cyogdGhvc2UgZnVuY3Rpb25zLgoKTm93LCB3aGljaCBkZXZpY2VzIGFyZSBsaWtlbHkgY2FuZGlkYXRlcyBmb3IgdGhpcz8gVGhpbmtpbmcgaXQgdGhyb3VnaCwgYE1BQ1ZMQU5gIGFuZCBgQk9ORElOR2AgaW1tZWRpYXRlbHkgc3ByaW5nIHRvIG1pbmQgYXMgcG9zc2liaWxpdGllcy4gVGhleSYjMzk7cmUgdmlydHVhbCBpbnRlcmZhY2VzLCBhbmQgdGhleSBvZnRlbiBpbnRlcmFjdCB3aXRoIGhhcmR3YXJlIGluIGludGVyZXN0aW5nIHdheXMuIFRoZXkmIzM5O3JlIHdvcnRoIGludmVzdGlnYXRpbmcgZnVydGhlci4KCkJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgY29kZSBmb3IgdGhvc2Ugc3BlY2lmaWMgZHJpdmVycywgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIE1BQ1ZMQU4gaGFzIGFueSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgaXQgaGFuZGxlcyBoYXJkd2FyZSB0aW1lc3RhbXBpbmcuIEJldHRlciB0byBoYXZlIGFsbCB0aGUgY29udGV4dCB1cGZyb250LCBiZWZvcmUgZ2V0dGluZyBib2dnZWQgZG93biBpbiB0aGUgZGV0YWlscy4gVGhpcyBpbml0aWFsIHN3ZWVwIHNob3VsZCBlbnN1cmUgSSBkb24mIzM5O3Qgb3Zlcmxvb2sgYW55IGNydWNpYWwgc3RlcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUNWTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTE2Mz1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cbmRyaXZlcnMvbmV0L0tjb25maWc6MTY1OmNvbmZpZyBNQUNWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Ni1cdHRyaXN0YXRlIFwmIzM0O01BQy1WTEFOIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwNTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbiBpcyBzdHJ1Y3R1cmVkLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgZmlsZSBpcyB1c3VhbGx5IHRoZSBwbGFjZSB0byBzdGFydC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFyb3VuZCBsaW5lIDE2NSBvciBzby4gVGhhdCBzaG91bGQgYmUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGRlZmluZWQgYW5kIGhvdyB0aGUgb3B0aW9ucyBhcmUgbmVzdGVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBjb3JlIGRyaXZlciBjb25maWd1cmF0aW9uIHNldHRpbmdzIHRoZXJlIOKAkyB0aGluZ3MgbGlrZSBpbnRlcmZhY2UgdHlwZXMsIHByb3RvY29sIHN1cHBvcnQsIGFuZCBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byB0cmFjZSBkZXBlbmRlbmNpZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB2YXJpb3VzIHNldHRpbmdzIG9uIHRoZSBidWlsZC4gSXQmIzM5O3MgYSBiaXQgbGlrZSBhcmNoYWVvbG9neSwgdHJhY2luZyB0aGUgbGF5ZXJzIG9mIGRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24gY2hvaWNlcyBlbWJlZGRlZCBpbiB0aGUgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MDpcdFx0ICAmIzM5O2lmYjEmIzM5OyBldGMuXG4gMTYxOlx0XHQgIExvb2sgYXQgdGhlIGlwcm91dGUyIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IGZvciB1c2FnZSBldGNcbiAxNjI6XHRcbiAxNjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXCYjMzQ7XG4gMTY0Olx0XG4gMTY1Olx0Y29uZmlnIE1BQ1ZMQU5cbiAxNjY6XHRcdHRyaXN0YXRlIFwmIzM0O01BQy1WTEFOIHN1cHBvcnRcJiMzNDtcbiAxNjc6XHRcdGhlbHBcbiAxNjg6XHRcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBtYXAgcGFja2V0cyB0b1xuIDE2OTpcdFx0ICBvciBmcm9tIHNwZWNpZmljIE1BQyBhZGRyZXNzZXMgdG8gYSBwYXJ0aWN1bGFyIGludGVyZmFjZS5cbiAxNzA6XHRcbiAxNzE6XHRcdCAgTWFjdmxhbiBkZXZpY2VzIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgXCYjMzQ7aXBcJiMzNDsgY29tbWFuZCBmcm9tIHRoZVxuIDE3MjpcdFx0ICBpcHJvdXRlMiBwYWNrYWdlIHN0YXJ0aW5nIHdpdGggdGhlIGlwcm91dGUyLTIuNi4yMyByZWxlYXNlOlxuIDE3MzpcdFxuIDE3NDpcdFx0ICBcJiMzNDtpcCBsaW5rIGFkZCBsaW5rIFx1MDAzY3JlYWwgZGV2XHUwMDNlIFsgYWRkcmVzcyBNQUMgXSBbIE5BTUUgXSB0eXBlIG1hY3ZsYW5cJiMzNDtcbiAxNzU6XHRcbiAxNzY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDE3NzpcdFx0ICB3aWxsIGJlIGNhbGxlZCBtYWN2bGFuLlxuIDE3ODpcdFxuIDE3OTpcdGNvbmZpZyBNQUNWVEFQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNTkzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogTmV0d29yayBWaXJ0dWFsaXphdGlvbiBPcHRpb25zKioKClJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBObyBleHRlcm5hbCBzb2Z0d2FyZSBkZXBlbmRlbmNpZXMg4oCTIHRoYXQmIzM5O3MgYSBrZXkgYWR2YW50YWdlLiBXaGVuIEkgc2VlIHRoYXQsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYE1BQ1ZMQU5gLiBJdCYjMzk7cyBhIGNsZWFuLCBlZmZpY2llbnQgd2F5IHRvIGdldCBtdWx0aXBsZSBuZXR3b3JrIGludGVyZmFjZXMgYXNzb2NpYXRlZCB3aXRoIGEgc2luZ2xlIHBoeXNpY2FsIE5JQyBvbiBhIGhvc3QuIFByZXR0eSBtdWNoIHRoZSBmaXJzdCB0aGluZyBJIHdvdWxkIGNvbnNpZGVyIGZvciB0aGlzIHNvcnQgb2YgdGFzay4KCkJ1dCBob2xkIG9uLCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSBgTUFDVkxBTmAgcGF0aCwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBhbmdsZXMuIFdoYXQgYWJvdXQgcmVkdW5kYW5jeSBhbmQgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnQgYXQgdGhlIHBoeXNpY2FsIGxheWVyPyBCb25kaW5nIGlzICphbHdheXMqIHdvcnRoIGV2YWx1YXRpbmcsIGVzcGVjaWFsbHkgaW4gYW4gZW52aXJvbm1lbnQgd2hlcmUgbmV0d29yayB1cHRpbWUgYW5kIGJhbmR3aWR0aCBhcmUgY3JpdGljYWwuIEkgbmVlZCB0byB3ZWlnaCB0aGUgYmVuZWZpdHMgb2YgYE1BQ1ZMQU5gJiMzOTtzIHNpbXBsaWNpdHkgYWdhaW5zdCB0aGUgcG90ZW50aWFsIHJlc2lsaWVuY2UgYW5kIGFnZ3JlZ2F0aW9uIGNhcGFiaWxpdGllcyB0aGF0IGEgYm9uZGluZyBzZXR1cCBjb3VsZCBvZmZlci4gV2hpY2ggaXMgdGhlIGJlc3QgZml0LCBoZXJlPyBJcyBpdCBhIHNpbmdsZSBpbnRlcmZhY2UsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXg/IEkgbmVlZCB0byBhc2sgYSBmZXcgbW9yZSBxdWVzdGlvbnMgdG8gZGVjaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFlvdSBjYW4gc2F5IE4gaGVyZSBpZiB5b3UgZG8gbm90IGludGVuZCB0byB1c2UgYW55IG9mIHRoZVxuICAzNzpcdFx0ICBuZXR3b3JraW5nIGNvcmUgZHJpdmVycyAoaS5lLiBWTEFOLCBicmlkZ2luZywgYm9uZGluZywgZXRjLilcbiAgMzg6XHRcbiAgMzk6XHRpZiBORVRfQ09SRVxuICA0MDpcdFxuICA0MTpcdGNvbmZpZyBCT05ESU5HXG4gIDQyOlx0XHR0cmlzdGF0ZSBcJiMzNDtCb25kaW5nIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4gIDQzOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgNDQ6XHRcdGRlcGVuZHMgb24gVExTIHx8IFRMU19ERVZJQ0U9blxuICA0NTpcdFx0aGVscFxuICA0NjpcdFx0ICBTYXkgJiMzOTtZJiMzOTsgb3IgJiMzOTtNJiMzOTsgaWYgeW91IHdpc2ggdG8gYmUgYWJsZSB0byAmIzM5O2JvbmQmIzM5OyBtdWx0aXBsZSBFdGhlcm5ldFxuICA0NzpcdFx0ICBDaGFubmVscyB0b2dldGhlci4gVGhpcyBpcyBjYWxsZWQgJiMzOTtFdGhlcmNoYW5uZWwmIzM5OyBieSBDaXNjbyxcbiAgNDg6XHRcdCAgJiMzOTtUcnVua2luZyYjMzk7IGJ5IFN1biwgODAyLjNhZCBieSB0aGUgSUVFRSwgYW5kICYjMzk7Qm9uZGluZyYjMzk7IGluIExpbnV4LlxuICA0OTpcdFxuICA1MDpcdFx0ICBUaGUgZHJpdmVyIHN1cHBvcnRzIG11bHRpcGxlIGJvbmRpbmcgbW9kZXMgdG8gYWxsb3cgZm9yIGJvdGggaGlnaFxuICA1MTpcdFx0ICBwZXJmb3JtYW5jZSBhbmQgaGlnaCBhdmFpbGFiaWxpdHkgb3BlcmF0aW9uLlxuICA1MjpcdFxuICA1MzpcdFx0ICBSZWZlciB0byBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9ib25kaW5nLnJzdFx1MDAzZSBmb3IgbW9yZVxuICA1NDpcdFx0ICBpbmZvcm1hdGlvbi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxNzAKCQkJCQkJCW91dHB1dDogMTYxCgkJCQkJCQl0aG91Z2h0czogNjY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IEEgUmVmaW5lZCBBcHByb2FjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZvciBhIGZ1enppbmcgcGxhbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgZm9jdXNlZCBvbiBpZGVudGlmeWluZyB0aGUga2V5IG1vZGlmaWNhdGlvbnMgYW5kIGhvdyB0byByZWFjaCB0aGVtLiBGaXJzdCwgYEJPTkRJTkdgIGlzIHNhZmUgYmVjYXVzZSBpdCYjMzk7cyBidWlsdCBvbiBgSU5FVGAsIHNvIGBNQUNWTEFOYCBhbmQgYEJPTkRJTkdgIGFyZSB2YWxpZCBjb25maWd1cmF0aW9ucyB0byBhZGQgdG8gb3VyIHRhcmdldHMuICBBZGRpbmcgYEVUSFRPT0xfTkVUTElOS2AgaXMgYWxzbyBhIG5vLWJyYWluZXIgc2luY2UgaXQmIzM5O3MgZGVmYXVsdCAmIzM5O3kmIzM5OyBhbmQgd2UmIzM5O2xsIG5lZWQgaXQuIEkmIzM5O2xsIG1ha2UgYSBub3RlIG9mIHRoaXMuCgpOb3csIGxldCYjMzk7cyBwaW5wb2ludCB0aGUgZnVuY3Rpb25zIG9mIGludGVyZXN0LiAgVGhlIGNvZGUgaGlnaGxpZ2h0cyBgZXRobmxfc2V0X3RzY29uZmlnYCBhcyB0aGUgY29yZSBmdW5jdGlvbiwgYWxvbmcgd2l0aCBhIHJlbGF0ZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiwgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWAuIEkgY29uZmlybWVkIHRoYXQgYGV0aG5sX3NldF90c2NvbmZpZ2AgKmlzKiBzdGF0aWMsIGJ1dCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBiZWNhdXNlIGl0JiMzOTtzIGFuIGVudHJ5IHBvaW50IGZvciBuZXRsaW5rLiBUaGUgcHJvbXB0IHN0cmVzc2VzIHByZWZlcnJpbmcgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYnV0IHRoaXMgb25lIGlzIHRoZSByaWdodCBjaG9pY2UsIHNpbmNlIGl0JiMzOTtzIG5vdCBhY3R1YWxseSBpbmxpbmVkLgoKVGhlIGNvZGUmIzM5O3Mgc3RydWN0dXJlIGFsc28gcmV2ZWFscyB0aGF0IGBldGhubF9zZXRfdHNjb25maWdgIGlzIGNhbGxlZCB2aWEgYSBmdW5jdGlvbiBwb2ludGVyIGZyb20gYGV0aG5sX2RlZmF1bHRfc2V0X2RvaXRgLCBtZWFuaW5nIGl0JiMzOTtzIHRoZSByaWdodCBmdW5jdGlvbiB0byBmb2N1cyBvbiBmb3IgZnV6emluZy4gTm8gb3RoZXIgZnVuY3Rpb25zIHNlZW0gdG8gYmUgYWZmZWN0ZWQsIHNvIHRoYXQgbmFycm93cyB0aGUgc2NvcGUuCgpSZXZpZXdpbmcgdGhlIHBhdGNoIGl0c2VsZiBpcyB0aGUgbW9zdCBjcnVjaWFsIHBhcnQuIFRoZSBjaGFuZ2UgaW4gdGhlIHZhbGlkYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSByZXBsYWNpbmcgYGZmcyhyZXFfdHhfdHlwZSkgIT0gZmxzKHJlcV90eF90eXBlKWAgd2l0aCBgaHdlaWdodDMyKHJlcV90eF90eXBlKSAhPSAxYCwgaXMgYSBjbGVhciBmdW5jdGlvbmFsIHNoaWZ0LiAgSXQgYWRkcmVzc2VzIGEgYnVnLCBwcmV2ZW50aW5nIGByZXFfdHhfdHlwZWAgZnJvbSBiZWluZyB6ZXJvLCB3aGljaCwgYmFzZWQgb24gdGhlIGNvbnRleHQsIGNvdWxkIGhhdmUgY2F1c2VkIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLiAgVGhpcyBpcyBhIGNyaXRpY2FsIGZsYXcgYW5kLCB0aGVyZWZvcmUsIGEgcHJpbWUgdGFyZ2V0LiBTaW5jZSB0aGUgY29kZSBpcyByZWFjaGVkIHZpYSBgRVRIVE9PTF9NU0dfVFNDT05GSUdfU0VUYCBvdmVyIG5ldGxpbmssIGl0JiMzOTtzIGVhc2lseSByZWFjaGFibGUsIG1ha2luZyBpdCBhIHZlcnkgZ29vZCBmdXp6IHRhcmdldC4KCkluIHN1bW1hcnksIHRoZSBwYXRjaCBwcmVzZW50cyBhIGNsZWFyIHRhcmdldC4KCkhlcmUmIzM5O3MgbXkgZGlzdGlsbGVkIGZ1enppbmcgc3RyYXRlZ3k6CgoqICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZQoqICAgKipGb2N1c1N5bWJvbHM6KiogXFsmIzM0O2V0aG5sXF9zZXRcX3RzY29uZmlnJiMzNDtdCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogXFsmIzM0O0VUSFRPT0xcX05FVExJTksmIzM0OywgJiMzNDtNQUNWTEFOJiMzNDssICYjMzQ7Qk9ORElORyYjMzQ7XQoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjcml0aWNhbCBidWcgZml4IGJ5IG1vZGlmeWluZyB0aGUgdmFsaWRhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIGV0aHRvb2wgbmV0bGluayBzZXQgb3BlcmF0aW9uIGZvciBUU0NPTkZJRyAoZXRobmxcX3NldFxfdHNjb25maWcpLiBJdCBwcmV2ZW50cyBhIGJ1ZyB3aGVyZSBgcmVxX3R4X3R5cGUgPT0gMGAgd2FzIGFsbG93ZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gVGhlIGZ1bmN0aW9uIGlzIGVhc2lseSByZWFjaGFibGUgdmlhIG5ldGxpbmsuIFRvIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlLCBhIG5ldCBkZXZpY2Ugc3VwcG9ydGluZyBgbmRvX2h3dHN0YW1wX3NldGAgaXMgcmVxdWlyZWQsIG1ha2luZyBgTUFDVkxBTmAgYW5kIGBCT05ESU5HYCBleGNlbGxlbnQgY2hvaWNlcyB0byBlbmFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFVEhUT09MX05FVExJTksmIzM0OywKICAgICYjMzQ7TUFDVkxBTiYjMzQ7LAogICAgJiMzNDtCT05ESU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXRobmxfc2V0X3RzY29uZmlnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBldGh0b29sIG5ldGxpbmsgc2V0IG9wZXJhdGlvbiBmb3IgVFNDT05GSUcgKGV0aG5sX3NldF90c2NvbmZpZykuIEl0IGNoYW5nZXMgdGhlIGJlaGF2aW9yIGZvciByZXFfdHhfdHlwZSA9PSAwIGFuZCByZXFfcnhfZmlsdGVyID09IDAsIHdoaWNoIHdlcmUgcHJldmlvdXNseSBhbGxvd2VkIGFuZCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsuIFRvIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlLCBhIG5ldCBkZXZpY2Ugc3VwcG9ydGluZyBuZG9faHd0c3RhbXBfc2V0IGlzIHJlcXVpcmVkLCBzdWNoIGFzIE1BQ1ZMQU4gb3IgQk9ORElORy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVRIVE9PTF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O01BQ1ZMQU4mIzM0OywKICAgICYjMzQ7Qk9ORElORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V0aG5sX3NldF90c2NvbmZpZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIHNldCBvcGVyYXRpb24gZm9yIFRTQ09ORklHIChldGhubF9zZXRfdHNjb25maWcpLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciBmb3IgcmVxX3R4X3R5cGUgPT0gMCBhbmQgcmVxX3J4X2ZpbHRlciA9PSAwLCB3aGljaCB3ZXJlIHByZXZpb3VzbHkgYWxsb3dlZCBhbmQgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLiBUbyByZWFjaCB0aGUgbW9kaWZpZWQgY29kZSwgYSBuZXQgZGV2aWNlIHN1cHBvcnRpbmcgbmRvX2h3dHN0YW1wX3NldCBpcyByZXF1aXJlZCwgc3VjaCBhcyBNQUNWTEFOIG9yIEJPTkRJTkcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gbG9naWMgZm9yIGByZXFfdHhfdHlwZWAgYW5kIGByZXFfcnhfZmlsdGVyYCBpbiBgZXRobmxfc2V0X3RzY29uZmlnYCB0byBlbnN1cmUgZXhhY3RseSBvbmUgYml0IGlzIHNldCB1c2luZyBgaHdlaWdodDMyKHgpICE9IDFgIGluc3RlYWQgb2YgYGZmcyh4KSAhPSBmbHMoeClgLiBJdCBhbHNvIGFkZHMgbmV0bGluayBleHRlbmRlZCBhY2tub3dsZWRnbWVudCBlcnJvciByZXBvcnRpbmcgKGBOTF9TRVRfQkFEX0FUVFJgKSBmb3IgdGhlc2UgdmFsaWRhdGlvbiBmYWlsdXJlcy5cblxuVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgdmFsaWRhdGlvbiBhbmQgZXJyb3IgcmVwb3J0aW5nLiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvIG5vdCBjb3B5IGFueSBuZXcgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSBsb2dpYyBidWdzLCB3aGljaCBhcmUgbm90IHRoZSB0YXJnZXQgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjY5N2MwMjA0ZTllYzkzZjRlMWExOGEzMjg2ZDQ5OGQyNTExNzdmMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE5OjAyOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYyBiL25ldC9ldGh0b29sL3RzY29uZmlnLmMKaW5kZXggMjRiNjQ4NjIwMTFmMC4uNmJlM2FhNWQ0YmMxZSAxMDA2NDQKLS0tIGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jCkBAIC0zNTksOCAmIzQzOzM1OSwxMCBAQCBzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZyhzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLAogCQlpZiAocmV0ICZsdDsgMCkKIAkJCWdvdG8gZXJyX2ZyZWVfaHdwcm92OwogCi0JCS8qIFNlbGVjdCBvbmx5IG9uZSB0eCB0eXBlIGF0IGEgdGltZSAqLwotCQlpZiAoZmZzKHJlcV90eF90eXBlKSAhPSBmbHMocmVxX3R4X3R5cGUpKSB7CiYjNDM7CQkvKiBTZWxlY3QgZXhhY3RseSBvbmUgdHggdHlwZSBhdCBhIHRpbWUgKi8KJiM0MzsJCWlmIChod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDEpIHsKJiM0MzsJCQlOTF9TRVRfQkFEX0FUVFIoaW5mby0mZ3Q7ZXh0YWNrLAomIzQzOwkJCQkJdGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSk7CiAJCQlyZXQgPSAtRUlOVkFMOwogCQkJZ290byBlcnJfZnJlZV9od3Byb3Y7CiAJCX0KQEAgLTM4MCw4ICYjNDM7MzgyLDEwIEBAIHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsCiAJCWlmIChyZXQgJmx0OyAwKQogCQkJZ290byBlcnJfZnJlZV9od3Byb3Y7CiAKLQkJLyogU2VsZWN0IG9ubHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi8KLQkJaWYgKGZmcyhyZXFfcnhfZmlsdGVyKSAhPSBmbHMocmVxX3J4X2ZpbHRlcikpIHsKJiM0MzsJCS8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovCiYjNDM7CQlpZiAoaHdlaWdodDMyKHJlcV9yeF9maWx0ZXIpICE9IDEpIHsKJiM0MzsJCQlOTF9TRVRfQkFEX0FUVFIoaW5mby0mZ3Q7ZXh0YWNrLAomIzQzOwkJCQkJdGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTsKIAkJCXJldCA9IC1FSU5WQUw7CiAJCQlnb3RvIGVycl9mcmVlX2h3cHJvdjsKIAkJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0NgoJCQkJCQkJb3V0cHV0OiAxODkKCQkJCQkJCXRob3VnaHRzOiA2MTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQ29uc2lkZXJhdGlvbnMgZm9yIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGluIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCBhbmQgaXMgdHdlYWtpbmcgdGhlIGxvZ2ljIGZvciBjaGVja2luZyBgcmVxX3R4X3R5cGVgIGFuZCBgcmVxX3J4X2ZpbHRlcmAuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gY29uc2lkZXIgbWVtb3J5IHNhZmV0eSwgb2YgY291cnNlLiBMZXQmIzM5O3Mgc2VlLi4uIGl0JiMzOTtzIGNoYW5naW5nIHRoZSBjb25kaXRpb24gZnJvbSBgZmZzKHJlcV90eF90eXBlKSAhPSBmbHMocmVxX3R4X3R5cGUpYCB0byBgaHdlaWdodDMyKHJlcV90eF90eXBlKSAhPSAxYC4gUmlnaHQsIHNvIHRoZSBvbGQgY29kZSAqYWxsb3dlZCogYHJlcV90eF90eXBlYCB0byBiZSB6ZXJvLCB3aGljaCBpcyB3ZWlyZCwgYW5kIG5vdyB0aGUgbmV3IGNvZGUgY29ycmVjdGx5IGRpc2FsbG93cyBpdC4gVGhlIGNvbW1lbnQgY29uZmlybXMgdGhpcyBpcyBhYm91dCBzZWxlY3RpbmcgKmV4YWN0bHkqIG9uZSBUWCB0eXBlIChhIGxvZ2ljIGJ1ZyBmaXghKS4KCk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGlmIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEJ1dCwgbG9va2luZyBjbG9zZXIsIGl0ICpqdXN0KiBtb2RpZmllcyBhIGNvbmRpdGlvbmFsIGNoZWNrIGFuZCBhZGRzIGBOTF9TRVRfQkFEX0FUVFJgIGNhbGxzLiAgYE5MX1NFVF9CQURfQVRUUmAsIG9rYXksIHRoYXQmIzM5O3MganVzdCBzZXR0aW5nIGEgZmllbGQgKGBleHRhY2stJmd0O2JhZF9hdHRyYCkgaW4gYW4gZXhpc3RpbmcgYHN0cnVjdCBuZXRsaW5rX2V4dF9hY2tgLCB3aGljaCBpcyBzdGFuZGFyZCBuZXRsaW5rIGVycm9yIHJlcG9ydGluZy4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCwgbm8gdXNlci1zcGFjZSBkYXRhIGNvcGllcyBiZXlvbmQgdGhlIGVycm9yIHJlcG9ydGluZy4gIFRoZXJlZm9yZSwgaXQmIzM5O3Mgbm90IGV4cG9zaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gYGV4dGFja2AgaXMgYSBwb2ludGVyIHRvIHRoZSBleGlzdGluZyBgc3RydWN0IG5ldGxpbmtfZXh0X2Fja2AgYW5kIHRoZSBgTkxfU0VUX0JBRF9BVFRSYCBtYWNybyBqdXN0IHNldHMgYSBmaWVsZC4gR29vZCwgbm8gS01TQU4gY29uY2VybnMgYmFzZWQgb24gbWVtb3J5IGluaXRpYWxpemF0aW9uIGlzc3Vlcy4KClNvLCBpbiBlc3NlbmNlLCB0aGlzIHBhdGNoIHN0cmVuZ3RoZW5zIHRoZSB2YWxpZGF0aW9uIG9mIHRoZSBzZWxlY3RlZCBUWC9SWCB0eXBlcywgZW5zdXJpbmcgZXhhY3RseSBvbmUgb3B0aW9uIGlzIGNob3NlbiwgYW5kIGFkZHMgYmV0dGVyIGVycm9yIHJlcG9ydGluZy4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBjb250cm9sIGZsb3csIHdpdGggbm8gbWVtb3J5IGFsbG9jYXRpb24gb3IgZGF0YSBleHBvc3VyZS4gIFRoZSBwYXRjaCAqZml4ZXMqIGEgbG9naWMgYnVnLiAgU2luY2UgaXTigJlzIGEgbG9naWMgYnVnIGZpeCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIG1lbW9yeSBpc3N1ZXMsIEtNU0FOIGlzIG5vdCBuZWNlc3NhcnkgaGVyZS4gSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgd2UgZG9u4oCZdCBuZWVkIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBmb3IgdGhpcyBjaGFuZ2UuIEkmIzM5O2xsIGRvY3VtZW50IG15IHJlYXNvbmluZyBjbGVhcmx5IGZvciByZXZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgcmVxX3R4X3R5cGVgIGFuZCBgcmVxX3J4X2ZpbHRlcmAgaW4gYGV0aG5sX3NldF90c2NvbmZpZ2AgdG8gZW5zdXJlIGV4YWN0bHkgb25lIGJpdCBpcyBzZXQgdXNpbmcgYGh3ZWlnaHQzMih4KSAhPSAxYCBpbnN0ZWFkIG9mIGBmZnMoeCkgIT0gZmxzKHgpYC4gSXQgYWxzbyBhZGRzIG5ldGxpbmsgZXh0ZW5kZWQgYWNrbm93bGVkZ21lbnQgZXJyb3IgcmVwb3J0aW5nIChgTkxfU0VUX0JBRF9BVFRSYCkgZm9yIHRoZXNlIHZhbGlkYXRpb24gZmFpbHVyZXMuXG5cblRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IHZhbGlkYXRpb24gYW5kIGVycm9yIHJlcG9ydGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgY29weSBhbnkgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgbG9naWMgYnVncywgd2hpY2ggYXJlIG5vdCB0aGUgdGFyZ2V0IG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBmb3IgYHJlcV90eF90eXBlYCBhbmQgYHJlcV9yeF9maWx0ZXJgIGluIGBldGhubF9zZXRfdHNjb25maWdgIHRvIGVuc3VyZSBleGFjdGx5IG9uZSBiaXQgaXMgc2V0IHVzaW5nIGBod2VpZ2h0MzIoeCkgIT0gMWAgaW5zdGVhZCBvZiBgZmZzKHgpICE9IGZscyh4KWAuIEl0IGFsc28gYWRkcyBuZXRsaW5rIGV4dGVuZGVkIGFja25vd2xlZGdtZW50IGVycm9yIHJlcG9ydGluZyAoYE5MX1NFVF9CQURfQVRUUmApIGZvciB0aGVzZSB2YWxpZGF0aW9uIGZhaWx1cmVzLlxuXG5UaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyB2YWxpZGF0aW9uIGFuZCBlcnJvciByZXBvcnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG8gbm90IGNvcHkgYW55IG5ldyBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIGxvZ2ljIGJ1Z3MsIHdoaWNoIGFyZSBub3QgdGhlIHRhcmdldCBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzowMC42MDgyNzg0NjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTc2MDA1NzQwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVRIVE9PTF9ORVRMSU5LXCIsXG4gICAgXCJNQUNWTEFOXCIsXG4gICAgXCJCT05ESU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXRobmxfc2V0X3RzY29uZmlnXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBmb3IgYHJlcV90eF90eXBlYCBhbmQgYHJlcV9yeF9maWx0ZXJgIGluIGBldGhubF9zZXRfdHNjb25maWdgIHRvIGVuc3VyZSBleGFjdGx5IG9uZSBiaXQgaXMgc2V0IHVzaW5nIGBod2VpZ2h0MzIoeCkgIT0gMWAgaW5zdGVhZCBvZiBgZmZzKHgpICE9IGZscyh4KWAuIEl0IGFsc28gYWRkcyBuZXRsaW5rIGV4dGVuZGVkIGFja25vd2xlZGdtZW50IGVycm9yIHJlcG9ydGluZyAoYE5MX1NFVF9CQURfQVRUUmApIGZvciB0aGVzZSB2YWxpZGF0aW9uIGZhaWx1cmVzLlxcblxcblRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IHZhbGlkYXRpb24gYW5kIGVycm9yIHJlcG9ydGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgY29weSBhbnkgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgbG9naWMgYnVncywgd2hpY2ggYXJlIG5vdCB0aGUgdGFyZ2V0IG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIGV0aHRvb2wgbmV0bGluayBzZXQgb3BlcmF0aW9uIGZvciBUU0NPTkZJRyAoZXRobmxfc2V0X3RzY29uZmlnKS4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3IgZm9yIHJlcV90eF90eXBlID09IDAgYW5kIHJlcV9yeF9maWx0ZXIgPT0gMCwgd2hpY2ggd2VyZSBwcmV2aW91c2x5IGFsbG93ZWQgYW5kIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluay4gVG8gcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGUsIGEgbmV0IGRldmljZSBzdXBwb3J0aW5nIG5kb19od3RzdGFtcF9zZXQgaXMgcmVxdWlyZWQsIHN1Y2ggYXMgTUFDVkxBTiBvciBCT05ESU5HLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzowMC42MDgyODM1OTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTk1NDkwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI2OTdjMDIwNGU5ZWM5M2Y0ZTFhMThhMzI4NmQ0OThkMjUxMTc3ZjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTk6MDI6NTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYyBiL25ldC9ldGh0b29sL3RzY29uZmlnLmNcXG5pbmRleCAyNGI2NDg2MjAxMWYwLi42YmUzYWE1ZDRiYzFlIDEwMDY0NFxcbi0tLSBhL25ldC9ldGh0b29sL3RzY29uZmlnLmNcXG4rKysgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jXFxuQEAgLTM1OSw4ICszNTksMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4gXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiBcXG4tXFx0XFx0LyogU2VsZWN0IG9ubHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXFxuLVxcdFxcdGlmIChmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSkpIHtcXG4rXFx0XFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXFxuK1xcdFxcdGlmIChod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDEpIHtcXG4rXFx0XFx0XFx0TkxfU0VUX0JBRF9BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG4rXFx0XFx0XFx0XFx0XFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSk7XFxuIFxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiBcXHRcXHR9XFxuQEAgLTM4MCw4ICszODIsMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4gXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiBcXG4tXFx0XFx0LyogU2VsZWN0IG9ubHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi9cXG4tXFx0XFx0aWYgKGZmcyhyZXFfcnhfZmlsdGVyKSAhPSBmbHMocmVxX3J4X2ZpbHRlcikpIHtcXG4rXFx0XFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi9cXG4rXFx0XFx0aWYgKGh3ZWlnaHQzMihyZXFfcnhfZmlsdGVyKSAhPSAxKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9CQURfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxuK1xcdFxcdFxcdFxcdFxcdHRiW0VUSFRPT0xfQV9UU0NPTkZJR19SWF9GSUxURVJTXSk7XFxuIFxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiBcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjAxLjA3MTE5NzkxNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwNDgyMjQxMjg4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFVEhUT09MX05FVExJTktcIixcbiAgICBcIk1BQ1ZMQU5cIixcbiAgICBcIkJPTkRJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJldGhubF9zZXRfdHNjb25maWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIHNldCBvcGVyYXRpb24gZm9yIFRTQ09ORklHIChldGhubF9zZXRfdHNjb25maWcpLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciBmb3IgcmVxX3R4X3R5cGUgPT0gMCBhbmQgcmVxX3J4X2ZpbHRlciA9PSAwLCB3aGljaCB3ZXJlIHByZXZpb3VzbHkgYWxsb3dlZCBhbmQgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLiBUbyByZWFjaCB0aGUgbW9kaWZpZWQgY29kZSwgYSBuZXQgZGV2aWNlIHN1cHBvcnRpbmcgbmRvX2h3dHN0YW1wX3NldCBpcyByZXF1aXJlZCwgc3VjaCBhcyBNQUNWTEFOIG9yIEJPTkRJTkcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI2OTdjMDIwNGU5ZWM5M2Y0ZTFhMThhMzI4NmQ0OThkMjUxMTc3ZjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxOTowMjo1OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL3RzY29uZmlnLmMgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jXG5pbmRleCAyNGI2NDg2MjAxMWYwLi42YmUzYWE1ZDRiYzFlIDEwMDY0NFxuLS0tIGEvbmV0L2V0aHRvb2wvdHNjb25maWcuY1xuKysrIGIvbmV0L2V0aHRvb2wvdHNjb25maWcuY1xuQEAgLTM1OSw4ICszNTksMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiBcbi1cdFx0LyogU2VsZWN0IG9ubHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXG4tXHRcdGlmIChmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSkpIHtcbitcdFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXG4rXHRcdGlmIChod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDEpIHtcbitcdFx0XHROTF9TRVRfQkFEX0FUVFIoaW5mby1cdTAwM2VleHRhY2ssXG4rXHRcdFx0XHRcdHRiW0VUSFRPT0xfQV9UU0NPTkZJR19UWF9UWVBFU10pO1xuIFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gXHRcdH1cbkBAIC0zODAsOCArMzgyLDEwIEBAIHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gXG4tXHRcdC8qIFNlbGVjdCBvbmx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4tXHRcdGlmIChmZnMocmVxX3J4X2ZpbHRlcikgIT0gZmxzKHJlcV9yeF9maWx0ZXIpKSB7XG4rXHRcdC8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4rXHRcdGlmIChod2VpZ2h0MzIocmVxX3J4X2ZpbHRlcikgIT0gMSkge1xuK1x0XHRcdE5MX1NFVF9CQURfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbitcdFx0XHRcdFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzowMS4wNzEyMDA1MzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTM3MzY2OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRXRodG9vbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCwgYW5kIGl0J3MgbWFraW5nIGEgYml0IG9mIGEgY2hhbmdlIHRvIHRoZSBiaXQgbWFuaXB1bGF0aW9uIGxvZ2ljLiBUaGV5J3ZlIHJlcGxhY2VkIGBmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSlgIHdpdGggYGh3ZWlnaHQzMihyZXFfdHhfdHlwZSkgIT0gMWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBicmVhayBkb3duIHdoYXQgdGhhdCBtZWFucy5cblxuTm93LCBgZmZzKHgpICE9IGZscyh4KWAg4oCTIHRoYXQgZWZmZWN0aXZlbHkgY2hlY2tzIGZvciBhIGZldyBjb25kaXRpb25zLiAgSXQncyB0cnVlIGlmIGB4YCBoYXMgbW9yZSB0aGFuIG9uZSBiaXQgc2V0IE9SIGlmIGB4YCBpcyB6ZXJvLiBSZW1lbWJlciwgYGZmcygwKWAgYW5kIGBmbHMoMClgIGJvdGggZXZhbHVhdGUgdG8gMCwgd2hpY2ggd291bGQgbWFrZSB0aGUgY29tcGFyaXNvbiBmYWxzZS4gU28sIHplcm8sIG9uZSwgb3IgbW9yZSB0aGFuIG9uZSBiaXQgc2V0IGFyZSBhbGwgaGFuZGxlZCBieSB0aGlzIGV4cHJlc3Npb24uXG5cbldhaXQgYSBzZWNvbmQsIGlmIGB4ID09IDBgLCB0aGUgbmV3IGNoZWNrLCBgaHdlaWdodDMyKDApICE9IDFgLCAqaXMqIHRydWUuIFNvLCB0aGUgemVybyBjYXNlIGlzIG5vdyBnb2luZyB0byByZXR1cm4gYW4gZXJyb3IsIHdoZXJlYXMgYmVmb3JlIGl0IGRpZG4ndC4gVGhpcyBjaGFuZ2UgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIGZvciB6ZXJvIHZhbHVlcywgc3BlY2lmaWNhbGx5IHdoZXJlIGByZXFfdHhfdHlwZSA9PSAwYCBvciBgcmVxX3J4X2ZpbHRlciA9PSAwYC4gQmVmb3JlLCB0aGV5IHdlcmVuJ3QgY2F1Z2h0IGFzIGVycm9ycyBiZWNhdXNlIHRoZSBvbGQgY2hlY2sgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGV5IHdlcmUgemVyby4gVGhlIG5ldyBsb2dpYyBmbGFncyB0aGUgemVybyB2YWx1ZSBhbmQgcmV0dXJucyBgLUVJTlZBTGAuXG5cbkVzc2VudGlhbGx5LCB0aGUgemVybyBjYXNlIGlzIGJlaW5nIGNhdWdodCBhcyBhIG5ldyBlcnJvciBjYXNlLiAgSXQgbG9va3MgbGlrZSB0aGV5IGFyZSBhbHNvIGFkZGluZyBgTkxfU0VUX0JBRF9BVFRSYCBmb3IgbmV0bGluayBleHRhY2ssIHNvIHRoaXMgaXMgZGVmaW5pdGVseSByZWxhdGVkIHRvIHNvbWUgbmV0bGluayBjb21tdW5pY2F0aW9uLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYG5ldC9ldGh0b29sL3RzY29uZmlnLmNgIHRvIHNlZSB0aGUgZXhhY3QgY29udGV4dCBhbmQgdW5kZXJzdGFuZCB3aHkgdGhpcyBjaGFuZ2Ugd2FzIGRlZW1lZCBuZWNlc3NhcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzowOC4yMDg1NzA1NjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExOTg1MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV0aG5sX3NldF90c2NvbmZpZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZXRodG9vbC90c2NvbmZpZy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ldGh0b29sL3RzY29uZmlnLmM9MTk5PXN0YXRpYyBpbnQgdHNjb25maWdfc2VuZF9yZXBseShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy0yNTAtXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYzoyNTE6c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGUoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTI1Mi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM9MjYzPXRzY29uZmlnX3NldF9od3Byb3ZfZnJvbV9kZXNjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTMwMi1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjMwMzpzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZyhzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMzA0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jPTQ1MT1jb25zdCBzdHJ1Y3QgZXRobmxfcmVxdWVzdF9vcHMgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHMgPSB7XFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQ2MS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjQ2MjpcXHQuc2V0X3ZhbGlkYXRlXFx0XFx0PSBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGUsXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYzo0NjM6XFx0LnNldFxcdFxcdFxcdD0gZXRobmxfc2V0X3RzY29uZmlnLFxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDY0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjA4LjMyMDU2MjM3NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDI0NjQyMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZXRobmxfc2V0X3RzY29uZmlnYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGV0aG5sX3NldF90c2NvbmZpZ2AgZnVuY3Rpb24sIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGlzIGlzIGEgbmV0bGluayBzZXQgb3BlcmF0aW9uIGZvciBldGh0b29sLiBTdHJhaWdodGZvcndhcmQsIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIEhtbSwgaW50ZXJlc3RpbmfigKYgaXQgc2VlbXMgdGhlIGNoYW5nZSBhZmZlY3RzIHRoZSB2YWxpZGF0aW9uIG9mIGByZXFfdHhfdHlwZWAgYW5kIGByZXFfcnhfZmlsdGVyYC4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG1vZGlmeWluZyB0aGUgYmVoYXZpb3Igd2hlbiB2YWx1ZXMgYXJlIHplcm8gYW5kIGFkZGluZyBhbiBleHRhY2suIE9rYXksIG15IGV4cGVydCBpbnR1aXRpb24gaXMgcGluZ2luZyDigJMgaXMgdGhpcyBzb21ldGhpbmcgd29ydGggZnV6emluZz8gQWJzb2x1dGVseSwgaXQncyBhIG5ldGxpbmsgaGFuZGxlciByZWxhdGVkIHRvIGV0aHRvb2w7IGZ1enppbmcgaXQgd291bGQgYmUgYSB2YWx1YWJsZSB1c2Ugb2YgbXkgdGltZS4gUmlnaHQsIGZpcnN0IHRoaW5nIGlzIHRvIHRyYWNrIGRvd24gdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGV0aHRvb2wgbmV0bGluay4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzODUsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDM6MTEuOTYzMDI5MDMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjE4ODk5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVRIVE9PTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz01MDc9Y29uZmlnIEZBSUxPVkVSXFxuLS1cXG5uZXQvS2NvbmZpZy01MTktXFxubmV0L0tjb25maWc6NTIwOmNvbmZpZyBFVEhUT09MX05FVExJTktcXG5uZXQvS2NvbmZpZy01MjEtXFx0Ym9vbCBcXFwiTmV0bGluayBpbnRlcmZhY2UgZm9yIGV0aHRvb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjEyLjQwOTIyMjIxNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MTg2OTQwNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBldGh0b29sIENvbmZpZ3VyYXRpb24gd2l0aCBOZXRsaW5rKipcblxuQWxyaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBFVEhUT09MX05FVExJTktgIGhlcmUuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpbnZvbHZlcyBuZXRsaW5rLCB3aGljaCBpcyB0aGUgcHJlZmVycmVkIGludGVyZmFjZSBmb3IgbW9kZXJuIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBoYW5kbGVkIGluIHRoZSBrZXJuZWwuIE15IG5leHQgdGhvdWdodCBpcywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBgbmV0L2V0aHRvb2wvdHNjb25maWcuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoYXQgcGFydGljdWxhciBzb3VyY2UgZmlsZSBpcyBpbmNsdWRlZCBvbmx5IHdoZW4gYEVUSFRPT0xfTkVUTElOS2AgaXMgZGVmaW5lZCwgb3IgaWYgdGhlcmUncyBzb21lIG90aGVyIGxvZ2ljIGF0IHBsYXkuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgd2lsbCBzaG93IG1lIHRoZSByZWxhdGlvbnNoaXBzIGluIHRoZSBjb25maWcgb2YgZXRodG9vbCB0aGF0IGFyZSBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc3OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjI3LjU5NjE3NDM0MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA2NDYwNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHNjb25maWcub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZXRodG9vbC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZXRodG9vbC9NYWtlZmlsZT03PWV0aHRvb2xfbmwteVxcdDo9IG5ldGxpbmsubyBiaXRzZXQubyBzdHJzZXQubyBsaW5raW5mby5vIGxpbmttb2Rlcy5vIHJzcy5vIFxcXFxcXG4tLVxcbm5ldC9ldGh0b29sL01ha2VmaWxlLTExLVxcdFxcdCAgIG1vZHVsZS5vIGNtaXNfZndfdXBkYXRlLm8gY21pc19jZGIubyBwc2UtcGQubyBwbGNhLm8gXFxcXFxcbm5ldC9ldGh0b29sL01ha2VmaWxlOjEyOlxcdFxcdCAgIHBoeS5vIHRzY29uZmlnLm8gbXNlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDM6MjcuNzA2ODI4ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjIzMjg2NTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEV0aHRvb2wgTmV0bGluayBDb21waWxhdGlvbiBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGBldGh0b29sX25sLXlgIGlzIGJ1aWx0IGFuZCBpdCBzZWVtcyBpdCdzIHBhcnQgb2YgdGhlIHdob2xlIGBldGh0b29sYCBwcm9jZXNzLCB3aGljaCBtYWtlcyBzZW5zZS4gVGhlIGtleSBpcyBgQ09ORklHX0VUSFRPT0xfTkVUTElOS2AsIHJpZ2h0PyBJdCBsb29rcyBsaWtlIGBldGh0b29sX25sLXlgIGlzIGdldHRpbmcgYnVpbHQgb25seSBpZiB0aGF0IGNvbmZpZyBvcHRpb24gaXMgZW5hYmxlZC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSByZW1lbWJlciB0aGF0IHRoZSBgbmV0L2V0aHRvb2wvTWFrZWZpbGVgIHNob3VsZCBoYXZlIHRoZSBidWlsZCBsb2dpYyBmb3IgYGV0aHRvb2xfbmwteWAuIEknbGwgb3BlbiB0aGF0IHVwIGFuZCBkb3VibGUtY2hlY2sgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIHRoZXJlLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGF0J3MgdGhlIGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNDMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzozMi45MzAxMTc3ODVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NDI1NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV0aHRvb2xfbmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2V0aHRvb2wvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2V0aHRvb2wvTWFrZWZpbGU9Mz1vYmoteVxcdFxcdFxcdFxcdCs9IGlvY3RsLm8gY29tbW9uLm9cXG5uZXQvZXRodG9vbC9NYWtlZmlsZS00LVxcbm5ldC9ldGh0b29sL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0VUSFRPT0xfTkVUTElOSylcXHQrPSBldGh0b29sX25sLm9cXG5uZXQvZXRodG9vbC9NYWtlZmlsZS02LVxcbm5ldC9ldGh0b29sL01ha2VmaWxlOjc6ZXRodG9vbF9ubC15XFx0Oj0gbmV0bGluay5vIGJpdHNldC5vIHN0cnNldC5vIGxpbmtpbmZvLm8gbGlua21vZGVzLm8gcnNzLm8gXFxcXFxcbm5ldC9ldGh0b29sL01ha2VmaWxlLTgtXFx0XFx0ICAgbGlua3N0YXRlLm8gZGVidWcubyB3b2wubyBmZWF0dXJlcy5vIHByaXZmbGFncy5vIHJpbmdzLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzozMy4wMDk1NDg4NjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyNTQyMDE5NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEVUSFRPT0wgTmV0bGluayBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYENPTkZJR19FVEhUT09MX05FVExJTktgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UncmUgZGVhbGluZyB3aXRoIGhlcmUuIE15IGltbWVkaWF0ZSBmb2N1cyB0aGVuIG5lZWRzIHRvIGJlIG9uIGBldGhubF9zZXRfdHNjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2Ygc2V0dGluZyB0aGUgY29uZmlndXJhdGlvbiBzaG91bGQgcmVzaWRlLCBhbmQgd2hlcmUgSSdsbCBwcm9iYWJseSBmaW5kIHRoZSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbnRyb2wgZmxvdy4gQnV0IGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGF0LCBpdOKAmXMgYWx3YXlzIHdpc2UgdG8gY2hlY2sgZm9yIGFzc29jaWF0ZWQgZnVuY3Rpb25zIGluIHRoaXMgY29udGV4dC4gVGhlcmUgbWF5IGJlIGhlbHBlciBmdW5jdGlvbnMgb3IgY29tcGxpbWVudGFyeSBmdW5jdGlvbnMgdGhhdCB3aWxsIGVuaGFuY2UgdW5kZXJzdGFuZGluZy4gSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBwaWN0dXJlIGJlZm9yZSBmb2N1c2luZyBvbiB0aGUgc3BlY2lmaWMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU3NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjQzLjI2Mzc1Mzc5NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA1NjAyODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRobmxfc2V0X3RzY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9ldGh0b29sL3RzY29uZmlnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2V0aHRvb2wvdHNjb25maWcuYz0xOTk9c3RhdGljIGludCB0c2NvbmZpZ19zZW5kX3JlcGx5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTI1MC1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjI1MTpzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZShzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMjUyLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYz0yNjM9dHNjb25maWdfc2V0X2h3cHJvdl9mcm9tX2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMzAyLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6MzAzOnN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy0zMDQtXFx0XFx0XFx0ICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM9NDUxPWNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcyA9IHtcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDYxLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6NDYyOlxcdC5zZXRfdmFsaWRhdGVcXHRcXHQ9IGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZSxcXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjQ2MzpcXHQuc2V0XFx0XFx0XFx0PSBldGhubF9zZXRfdHNjb25maWcsXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy00NjQtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDM6NDMuMzM0MzE3OTc5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NTI5NjY0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZXRobmxfc2V0X3RzY29uZmlnYCBGdW5jdGlvbioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBzZWUgdGhhdCBgZXRobmxfc2V0X3RzY29uZmlnYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byB3b25kZXIgaWYgaXQncyBiZWluZyBpbmxpbmVkLiBJbiBteSBleHBlcmllbmNlLCBmdW5jdGlvbnMgdGhhdCBhcmUgcG9pbnRlZCB0byBpbiBzdHJ1Y3RzIGFyZSB0eXBpY2FsbHkgKm5vdCogaW5saW5lZC4gSG93ZXZlciwgdGhlIGBzdGF0aWNgIGtleXdvcmQgdGhyb3dzIGEgYml0IG9mIGEgY3VydmViYWxsLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBoaWdobGlnaHRzIHRoZSBpbXBvcnRhbmNlIG9mIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBiZWNhdXNlIHRob3NlIGdldCBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG9uJ3QgaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMuXG5cblNvLCBzaW5jZSBpdCdzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYGV0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzYCwgaXQgc2hvdWxkbid0IGJlIGlubGluZWQuIFRoYXQgc2hvdWxkIG1lYW4gaXQgKndpbGwqIGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIFRoaXMgaXMgY3JpdGljYWwgZm9yIG1haW50YWluYWJpbGl0eSBhbmQgZGVidWdnaW5nLCByaWdodD9cblxuQnV0LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCB2ZXJpZnksIEkgbmVlZCB0byBrbm93IGlmIHRoZXJlJ3MgYSBub24tc3RhdGljIEFQSSBlbnRyeSBwb2ludCBpbnZvbHZlZC4gVGhlIGJlc3Qgd2F5IHRvIGJlIHN1cmUgaXMgdG8gY2hlY2sgYG5ldC9ldGh0b29sL25ldGxpbmsuY2AsIHdoaWNoIHNob3VsZCBzaG93IGhvdyBgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHNgIGlzIGFjdHVhbGx5IHVzZWQuIFRoYXQncyB0aGUga2V5IHRvIHRydWx5IHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZnVuY3Rpb24gaXMgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE4MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzo0OC43ODcyODcyMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMzMzUxNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2V0aHRvb2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ldGh0b29sL25ldGxpbmsuYz0zODk9ZXRobmxfZGVmYXVsdF9yZXF1ZXN0c1tfX0VUSFRPT0xfTVNHX1VTRVJfQ05UXSA9IHtcXG4tLVxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy00MjktXFx0W0VUSFRPT0xfTVNHX01NX1NFVF1cXHRcXHQ9IFxcdTAwMjZldGhubF9tbV9yZXF1ZXN0X29wcyxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6NDMwOlxcdFtFVEhUT09MX01TR19UU0NPTkZJR19HRVRdXFx0PSBcXHUwMDI2ZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHMsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjQzMTpcXHRbRVRIVE9PTF9NU0dfVFNDT05GSUdfU0VUXVxcdD0gXFx1MDAyNmV0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy00MzItXFx0W0VUSFRPT0xfTVNHX1BIWV9HRVRdXFx0XFx0PSBcXHUwMDI2ZXRobmxfcGh5X3JlcXVlc3Rfb3BzLFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5oPTQ3ND1leHRlcm4gY29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX3BoeV9yZXF1ZXN0X29wcztcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmg6NDc1OmV4dGVybiBjb25zdCBzdHJ1Y3QgZXRobmxfcmVxdWVzdF9vcHMgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHM7XFxubmV0L2V0aHRvb2wvbmV0bGluay5oLTQ3Ni1leHRlcm4gY29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX21zZV9yZXF1ZXN0X29wcztcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM9MzAzPXN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQ1MC1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjQ1MTpjb25zdCBzdHJ1Y3QgZXRobmxfcmVxdWVzdF9vcHMgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHMgPSB7XFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy00NTItXFx0LnJlcXVlc3RfY21kXFx0XFx0PSBFVEhUT09MX01TR19UU0NPTkZJR19HRVQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjQ4Ljg2MDYyNzg1MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTgzNDg4NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgRXRodG9vbCBOZXRsaW5rIEludGVyZmFjZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEV0aHRvb2wgbmV0bGluayBpbnRlcmZhY2UgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHNldCBjb21tYW5kcyB3b3JrLiBUaGUgaW5pdGlhbCBlbnRyeSBwb2ludCwgYXMgSSBzZWUgaXQsIHNlZW1zIHRvIGJlIGBldGhubF9kZWZhdWx0X3NldF9kb2l0YC4gRnJvbSB0aGVyZSwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIGZ1bmN0aW9uIGV2ZW50dWFsbHkgY2FsbHMgYG9wcy1cdTAwM2VzZXRgLiBOb3csIGBvcHNgIGNsZWFybHkgcmVwcmVzZW50cyB0aGUgb3BlcmF0aW9uLXNwZWNpZmljIGhhbmRsZXIuIFRpbWUgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBmaWd1cmUgb3V0IHRoZSBleGFjdCBmbG93LiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBuZXQvZXRodG9vbC9uZXRsaW5rLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGV0aG5sX2RlZmF1bHRfc2V0X2RvaXRgIHRvIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuIExldCdzIHNlZSBob3cgdGhleSd2ZSBzdHJ1Y3R1cmVkIHRoZSBuZXRsaW5rIGhhbmRsZXIgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwODQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzo1My4wNDQxMjEwNzVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNjA4MjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV0aG5sX2RlZmF1bHRfc2V0X2RvaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2V0aHRvb2wvbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ldGh0b29sL25ldGxpbmsuYz04OTA9c3RhdGljIGludCBldGhubF9kZWZhdWx0X2RvbmUoc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTg5OS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6OTAwOnN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy05MDEte1xcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jPTExNjE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX29wcyBldGh0b29sX2dlbmxfb3BzW10gPSB7XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTE4Mi1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjExODM6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTExODQtXFx0XFx0LnBvbGljeSA9IGV0aG5sX2xpbmtpbmZvX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTE5OC1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjExOTk6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyMDAtXFx0XFx0LnBvbGljeSA9IGV0aG5sX2xpbmttb2Rlc19zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyMjMtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMjI0OlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjI1LVxcdFxcdC5wb2xpY3kgPSBldGhubF9kZWJ1Z19zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyNDAtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMjQxOlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjQyLVxcdFxcdC5wb2xpY3kgPSBldGhubF93b2xfc2V0X3BvbGljeSxcXG4tLVxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjcyLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTI3MzpcXHRcXHQuZG9pdFxcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTI3NC1cXHRcXHQucG9saWN5ID0gZXRobmxfcHJpdmZsYWdzX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTI4OC1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEyODk6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyOTAtXFx0XFx0LnBvbGljeSA9IGV0aG5sX3JpbmdzX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTMwNC1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEzMDU6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMDYtXFx0XFx0LnBvbGljeSA9IGV0aG5sX2NoYW5uZWxzX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTMyMC1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEzMjE6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMjItXFx0XFx0LnBvbGljeSA9IGV0aG5sX2NvYWxlc2NlX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTMzNi1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEzMzc6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMzgtXFx0XFx0LnBvbGljeSA9IGV0aG5sX3BhdXNlX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTM1Mi1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEzNTM6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzNTQtXFx0XFx0LnBvbGljeSA9IGV0aG5sX2VlZV9zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzOTktXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNDAwOlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDAxLVxcdFxcdC5wb2xpY3kgPSBldGhubF9mZWNfc2V0X3BvbGljeSxcXG4tLVxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDQzLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTQ0NDpcXHRcXHQuZG9pdFxcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTQ0NS1cXHRcXHQucG9saWN5ID0gZXRobmxfbW9kdWxlX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTQ1OS1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjE0NjA6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE0NjEtXFx0XFx0LnBvbGljeSA9IGV0aG5sX3BzZV9zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE0ODMtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNDg0OlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDg1LVxcdFxcdC5wb2xpY3kgPSBldGhubF9wbGNhX3NldF9jZmdfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1MDgtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTA5OlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTEwLVxcdFxcdC5wb2xpY3kgPSBldGhubF9tbV9zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1NDAtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTQxOlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTQyLVxcdFxcdC5wb2xpY3kgPSBldGhubF90c2NvbmZpZ19zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1NDctXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTQ4OlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTQ5LVxcdFxcdC5wb2xpY3kgPSBldGhubF9yc3Nfc2V0X3BvbGljeSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDM6NTMuMTE0NzM0NzM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMzU4NTI1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEV0aHRvb2wgTmV0bGluayBTZXQgQ29tbWFuZHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgYGV0aHRvb2xgIG5ldGxpbmsgY29tbWFuZHMgYXJlIGhhbmRsZWQuIGBldGhubF9kZWZhdWx0X3NldF9kb2l0YCBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoZW0sIGJ1dCBpdCdzIG5vdCBhIGdlbmVyaWMgaG90IHBhdGguIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgc3BlY2lmaWMgaGFuZGxlciBmb3IgYEVUSFRPT0xfTVNHX1RTQ09ORklHX1NFVGAsIHdoaWNoIGlzIGBldGhubF9zZXRfdHNjb25maWdgLiBXYWl0LCB0aGUgcHJvbXB0IGlzIGFib3V0IHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBUaGUgcXVlc3Rpb24gaXMsIGlzIGBldGhubF9zZXRfdHNjb25maWdgIHN0YXRpYz8gSWYgaXQgd2VyZSwgaXQgKm1pZ2h0KiBiZSBpbmxpbmVkIGludG8gdGhlIGdlbmVyYWwgZW50cnkgcG9pbnQuIEJ1dCwgaG9sZCBvbiwgaXTigJlzIGFzc2lnbmVkIHRvIHRoZSBzdHJ1Y3QgbWVtYmVyIGBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcy5zZXQgPSBldGhubF9zZXRfdHNjb25maWdgLiBCZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLCBpdCAqY2FuJ3QqIGJlIGZ1bGx5IGlubGluZWQ7IHRoZXJlIGhhcyB0byBiZSBhIHN0YW5kYWxvbmUgZnVuY3Rpb24gYm9keS4gU28sIGl0ICp3aWxsKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MsIG1lYW5pbmcgaXTigJlzIGEgZ29vZCBjYW5kaWRhdGUuIExldCBtZSBkb3VibGUgY2hlY2sgaWYgdGhlcmUncyBhbnl0aGluZyBlbHNlIGludm9sdmVkIGluIHRoaXMuIEFoLCB5ZXMsIGBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGVgIGlzICphbHNvKiBhc3NpZ25lZCwgdG8gYGV0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzLnNldF92YWxpZGF0ZWAuIFNvLCAqYm90aCogb2YgdGhvc2UgZnVuY3Rpb25zIGFyZSB2YWxpZCBjYW5kaWRhdGVzLCB0aGVuLiBMZXQgbWUganVzdCBvcGVuIHVwIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCBhbmQgaGF2ZSBhIGxvb2sgYXQgYGV0aG5sX3NldF90c2NvbmZpZ2AgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE4NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzo1OS40NTA1OTAzMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2V0aHRvb2wvdHNjb25maWcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDMsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzAzOlxcdHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXFxuIDMwNDpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiAzMDU6XFx0e1xcbiAzMDY6XFx0XFx0c3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgaHd0c3RfY29uZmlnID0gezB9O1xcbiAzMDc6XFx0XFx0Ym9vbCBod3Byb3ZfbW9kID0gZmFsc2UsIGNvbmZpZ19tb2QgPSBmYWxzZTtcXG4gMzA4OlxcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92ID0gTlVMTDtcXG4gMzA5OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXFfYmFzZS1cXHUwMDNlZGV2O1xcbiAzMTA6XFx0XFx0c3RydWN0IG5sYXR0ciAqKnRiID0gaW5mby1cXHUwMDNlYXR0cnM7XFxuIDMxMTpcXHRcXHRpbnQgcmV0O1xcbiAzMTI6XFx0XFxuIDMxMzpcXHRcXHRpZiAoIW5ldGlmX2RldmljZV9wcmVzZW50KGRldikpXFxuIDMxNDpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMzE1OlxcdFxcbiAzMTY6XFx0XFx0aWYgKHRiW0VUSFRPT0xfQV9UU0NPTkZJR19IV1RTVEFNUF9QUk9WSURFUl0pIHtcXG4gMzE3OlxcdFxcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlcl9kZXNjIF9faHdwcm92X2Rlc2MgPSB7LmluZGV4ID0gLTF9O1xcbiAzMTg6XFx0XFx0XFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpfX2h3cHJvdjtcXG4gMzE5OlxcdFxcbiAzMjA6XFx0XFx0XFx0X19od3Byb3YgPSBuZXRkZXZfb3BzX2xvY2tfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2Vod3Byb3YsIGRldik7XFxuIDMyMTpcXHRcXHRcXHRpZiAoX19od3Byb3YpIHtcXG4gMzIyOlxcdFxcdFxcdFxcdF9faHdwcm92X2Rlc2MuaW5kZXggPSBfX2h3cHJvdi1cXHUwMDNlZGVzYy5pbmRleDtcXG4gMzIzOlxcdFxcdFxcdFxcdF9faHdwcm92X2Rlc2MucXVhbGlmaWVyID0gX19od3Byb3YtXFx1MDAzZWRlc2MucXVhbGlmaWVyO1xcbiAzMjQ6XFx0XFx0XFx0fVxcbiAzMjU6XFx0XFxuIDMyNjpcXHRcXHRcXHRyZXQgPSB0c19wYXJzZV9od3RzdF9wcm92aWRlcih0YltFVEhUT09MX0FfVFNDT05GSUdfSFdUU1RBTVBfUFJPVklERVJdLFxcbiAzMjc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNl9faHdwcm92X2Rlc2MsIGluZm8tXFx1MDAzZWV4dGFjayxcXG4gMzI4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZod3Byb3ZfbW9kKTtcXG4gMzI5OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAzMzA6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMzMxOlxcdFxcbiAzMzI6XFx0XFx0XFx0aWYgKGh3cHJvdl9tb2QpIHtcXG4gMzMzOlxcdFxcdFxcdFxcdGh3cHJvdiA9IHRzY29uZmlnX3NldF9od3Byb3ZfZnJvbV9kZXNjKGRldiwgaW5mbyxcXG4gMzM0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2X19od3Byb3ZfZGVzYyk7XFxuIDMzNTpcXHRcXHRcXHRcXHRpZiAoSVNfRVJSKGh3cHJvdikpXFxuIDMzNjpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihod3Byb3YpO1xcbiAzMzc6XFx0XFx0XFx0fVxcbiAzMzg6XFx0XFx0fVxcbiAzMzk6XFx0XFxuIDM0MDpcXHRcXHQvKiBHZXQgY3VycmVudCBod3RzdGFtcCBjb25maWcgaWYgd2UgYXJlIG5vdCBjaGFuZ2luZyB0aGVcXG4gMzQxOlxcdFxcdCAqIGh3dHN0YW1wIHNvdXJjZS4gSXQgd2lsbCBiZSB6ZXJvZWQgaW4gdGhlIG90aGVyIGNhc2UuXFxuIDM0MjpcXHRcXHQgKi9cXG4gMzQzOlxcdFxcdGlmICghaHdwcm92X21vZCkge1xcbiAzNDQ6XFx0XFx0XFx0cmV0ID0gZGV2X2dldF9od3RzdGFtcF9waHlsaWIoZGV2LCBcXHUwMDI2aHd0c3RfY29uZmlnKTtcXG4gMzQ1OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IHJldCAhPSAtRU9QTk9UU1VQUClcXG4gMzQ2OlxcdFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiAzNDc6XFx0XFx0fVxcbiAzNDg6XFx0XFxuIDM0OTpcXHRcXHQvKiBHZXQgdGhlIGh3dHN0YW1wIGNvbmZpZyBmcm9tIG5ldGxpbmsgKi9cXG4gMzUwOlxcdFxcdGlmICh0YltFVEhUT09MX0FfVFNDT05GSUdfVFhfVFlQRVNdKSB7XFxuIDM1MTpcXHRcXHRcXHR1MzIgcmVxX3R4X3R5cGU7XFxuIDM1MjpcXHRcXG4gMzUzOlxcdFxcdFxcdHJlcV90eF90eXBlID0gQklUKGh3dHN0X2NvbmZpZy50eF90eXBlKTtcXG4gMzU0OlxcdFxcdFxcdHJldCA9IGV0aG5sX3VwZGF0ZV9iaXRzZXQzMihcXHUwMDI2cmVxX3R4X3R5cGUsXFxuIDM1NTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgX19IV1RTVEFNUF9UWF9DTlQsXFxuIDM1NjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgdGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSxcXG4gMzU3OlxcdFxcdFxcdFxcdFxcdFxcdCAgICB0c190eF90eXBlX25hbWVzLCBpbmZvLVxcdTAwM2VleHRhY2ssXFxuIDM1ODpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmNvbmZpZ19tb2QpO1xcbiAzNTk6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDM2MDpcXHRcXHRcXHRcXHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcXG4gMzYxOlxcdFxcbiAzNjI6XFx0XFx0XFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXFxuIDM2MzpcXHRcXHRcXHRpZiAoaHdlaWdodDMyKHJlcV90eF90eXBlKSAhPSAxKSB7XFxuIDM2NDpcXHRcXHRcXHRcXHROTF9TRVRfQkFEX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbiAzNjU6XFx0XFx0XFx0XFx0XFx0XFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSk7XFxuIDM2NjpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiAzNjc6XFx0XFx0XFx0XFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XFxuIDM2ODpcXHRcXHRcXHR9XFxuIDM2OTpcXHRcXG4gMzcwOlxcdFxcdFxcdGh3dHN0X2NvbmZpZy50eF90eXBlID0gZmZzKHJlcV90eF90eXBlKSAtIDE7XFxuIDM3MTpcXHRcXHR9XFxuIDM3MjpcXHRcXG4gMzczOlxcdFxcdGlmICh0YltFVEhUT09MX0FfVFNDT05GSUdfUlhfRklMVEVSU10pIHtcXG4gMzc0OlxcdFxcdFxcdHUzMiByZXFfcnhfZmlsdGVyO1xcbiAzNzU6XFx0XFxuIDM3NjpcXHRcXHRcXHRyZXFfcnhfZmlsdGVyID0gQklUKGh3dHN0X2NvbmZpZy5yeF9maWx0ZXIpO1xcbiAzNzc6XFx0XFx0XFx0cmV0ID0gZXRobmxfdXBkYXRlX2JpdHNldDMyKFxcdTAwMjZyZXFfcnhfZmlsdGVyLFxcbiAzNzg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIF9fSFdUU1RBTVBfRklMVEVSX0NOVCxcXG4gMzc5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICB0YltFVEhUT09MX0FfVFNDT05GSUdfUlhfRklMVEVSU10sXFxuIDM4MDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgdHNfcnhfZmlsdGVyX25hbWVzLCBpbmZvLVxcdTAwM2VleHRhY2ssXFxuIDM4MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmNvbmZpZ19tb2QpO1xcbiAzODI6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDM4MzpcXHRcXHRcXHRcXHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcXG4gMzg0OlxcdFxcbiAzODU6XFx0XFx0XFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi9cXG4gMzg2OlxcdFxcdFxcdGlmIChod2VpZ2h0MzIocmVxX3J4X2ZpbHRlcikgIT0gMSkge1xcbiAzODc6XFx0XFx0XFx0XFx0TkxfU0VUX0JBRF9BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG4gMzg4OlxcdFxcdFxcdFxcdFxcdFxcdHRiW0VUSFRPT0xfQV9UU0NPTkZJR19SWF9GSUxURVJTXSk7XFxuIDM4OTpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiAzOTA6XFx0XFx0XFx0XFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XFxuIDM5MTpcXHRcXHRcXHR9XFxuIDM5MjpcXHRcXG4gMzkzOlxcdFxcdFxcdGh3dHN0X2NvbmZpZy5yeF9maWx0ZXIgPSBmZnMocmVxX3J4X2ZpbHRlcikgLSAxO1xcbiAzOTQ6XFx0XFx0fVxcbiAzOTU6XFx0XFxuIDM5NjpcXHRcXHRpZiAodGJbRVRIVE9PTF9BX1RTQ09ORklHX0hXVFNUQU1QX0ZMQUdTXSkge1xcbiAzOTc6XFx0XFx0XFx0cmV0ID0gZXRobmxfdXBkYXRlX2JpdHNldDMyKFxcdTAwMjZod3RzdF9jb25maWcuZmxhZ3MsXFxuIDM5ODpcXHRcXHRcXHRcXHRcXHRcXHQgICAgX19IV1RTVEFNUF9GTEFHX0NOVCxcXG4gMzk5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICB0YltFVEhUT09MX0FfVFNDT05GSUdfSFdUU1RBTVBfRkxBR1NdLFxcbiA0MDA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHRzX2ZsYWdzX25hbWVzLCBpbmZvLVxcdTAwM2VleHRhY2ssXFxuIDQwMTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmNvbmZpZ19tb2QpO1xcbiA0MDI6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjU5LjQ1MDc1NzI0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNTExODUyODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWNlbnQgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiBgZXRobmxfc2V0X3RzY29uZmlnYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHdlcmUgdG91Y2hlZCwgYnV0IGl0IGxvb2tzIGxpa2UgYGV0aG5sX3NldF90c2NvbmZpZ2AgaXMgdGhlIHNvbGUgcG9pbnQgb2YgbW9kaWZpY2F0aW9uLiBUaGUgZ29vZCBuZXdzIGlzLCBiYXNlZCBvbiB0aGUgY2hhbmdlLCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBmdW5jdGlvbmFsLlxuXG5UaGUgcHJpbWFyeSBnb2FsIG9mIHRoaXMgZml4IGlzIHRvIGFkZHJlc3MgYSBidWcgdGhhdCBhbGxvd2VkIGZvciBpbnZhbGlkIHJlcXVlc3QgdHlwZXMgKGByZXFfdHhfdHlwZSA9PSAwYCBvciBgcmVxX3J4X2ZpbHRlciA9PSAwYCkgdG8gYmUgYWNjZXB0ZWQuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSB0aGVzZSBpbnZhbGlkIHZhbHVlcyB3b3VsZCBjYXVzZSBgaHd0c3RfY29uZmlnLnR4X3R5cGVgIHRvIGJlIHNldCB0byAtMS4gQXMgYW4gZXhwZXJ0LCBJIGluc3RhbnRseSBzZWUgdGhlIHZ1bG5lcmFiaWxpdHkgaGVyZSDigJMgdGhpcyBpbnRlZ2VyIHVuZGVyZmxvdyBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBpc3N1ZXMgZG93bnN0cmVhbSwgaW5jbHVkaW5nLCB3b3JzdCBjYXNlLCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MsIHBvdGVudGlhbGx5IGluIGEgcHJpdmlsZWdlZCBjb250ZXh0LiBUaGVyZWZvcmUsIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyByaWdvcm91cyBmdXp6aW5nLlxuXG5Ob3csIEkgbmVlZCB0byBmb2N1cyBvbiBpZGVudGlmeWluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgcmVsYXRlIHRvIHRoaXMgZnVuY3Rpb25hbGl0eS4gV2UndmUgYWxyZWFkeSBzcG90dGVkIGBFVEhUT09MX05FVExJTktgLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnM/IEknbGwgbmVlZCB0byBkaWcgaW50byBgbmV0L2V0aHRvb2wvS2NvbmZpZ2Agb3IgcG9zc2libHkgZXZlbiB0aGUgYnJvYWRlciBgbmV0L0tjb25maWdgIHRvIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGludGVyYWN0IHdpdGggdGhpcy4gVW5kZXJzdGFuZGluZyB0aGVzZSBjb25maWd1cmF0aW9ucyBpcyB2aXRhbCB0byBjb25zdHJ1Y3RpbmcgZWZmZWN0aXZlIGZ1enppbmcgdGFyZ2V0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MjYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNDowNS43MDE5NDczMjlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDY3MTQzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVRIVE9PTF9ORVRMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTUwNz1jb25maWcgRkFJTE9WRVJcXG4tLVxcbm5ldC9LY29uZmlnLTUxOS1cXG5uZXQvS2NvbmZpZzo1MjA6Y29uZmlnIEVUSFRPT0xfTkVUTElOS1xcbm5ldC9LY29uZmlnLTUyMS1cXHRib29sIFxcXCJOZXRsaW5rIGludGVyZmFjZSBmb3IgZXRodG9vbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDQ6MDUuODIyNjIyODQ2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNTY2MTYzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIHRoaW5raW5nIHRocm91Z2ggaXQgc3RlcC1ieS1zdGVwOlxuXG4qKkNoZWNraW5nIEVUSFRPT0xfTkVUTElOSyBEZXBlbmRlbmNpZXMgaW4gbmV0L0tjb25maWcqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgb3V0IHdoYXQgYEVUSFRPT0xfTkVUTElOS2AgZGVwZW5kcyBvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBmaWxlcy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVydGlzZSwgaXMgdG8gZ28gZGlyZWN0bHkgdG8gYG5ldC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHVzdWFsbHkgZGVmaW5lZC4gSSdtIGFzc3VtaW5nIHRoYXQgc2luY2UgaXQncyByZWxhdGVkIHRvIGV0aHRvb2wgKGEgY29tbW9uIHRvb2wgZm9yIHF1ZXJ5aW5nIGFuZCBzZXR0aW5nIE5JQyBwYXJhbWV0ZXJzKSBhbmQgbmV0bGluayAoYSBsb3ctbGV2ZWwgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIG1lY2hhbmlzbSBpbiBMaW51eCksIHRoZSBkZXBlbmRlbmNpZXMgd291bGQgYmUgZGVjbGFyZWQgb3IgYXQgbGVhc3QgcmVmZXJlbmNlZCB3aXRoaW4gdGhhdCBmaWxlLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIGBFVEhUT09MX05FVExJTktgIGluIHRoYXQgYG5ldC9LY29uZmlnYCBmaWxlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgc3RhdGVtZW50cyByZWxhdGVkIHRvIG90aGVyIGZlYXR1cmVzLCBkcml2ZXIgc2VsZWN0aW9ucywgb3IgZXZlbiBnZW5lcmFsIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbGwgbmVlZCB0byBpZGVudGlmeSBhbnkgcHJlcmVxdWlzaXRlcy4gSSdsbCBuZWVkIHRvIHNlZSB3aGF0IG90aGVyIGZlYXR1cmVzLCBkcml2ZXJzLCBvciBnZW5lcmFsIGtlcm5lbCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZSB0aWVkIHRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTM1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDQ6MTEuMDc5MjQzNzA4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MTU6XFx0XFx0ICBmYWlsb3ZlciBuZXRkZXYuIFRoaXMgZW5hYmxlcyBwYXJhdmlydHVhbCBkcml2ZXJzIHRvIHVzZSBhXFxuIDUxNjpcXHRcXHQgIFZGIGFzIGFuIGFjY2VsZXJhdGVkIGxvdyBsYXRlbmN5IGRhdGFwYXRoLiBJdCBhbHNvIGFsbG93cyBsaXZlXFxuIDUxNzpcXHRcXHQgIG1pZ3JhdGlvbiBvZiBWTXMgd2l0aCBkaXJlY3QgYXR0YWNoZWQgVkZzIGJ5IGZhaWxpbmcgb3ZlciB0byB0aGVcXG4gNTE4OlxcdFxcdCAgcGFyYXZpcnR1YWwgZGF0YXBhdGggd2hlbiB0aGUgVkYgaXMgdW5wbHVnZ2VkLlxcbiA1MTk6XFx0XFxuIDUyMDpcXHRjb25maWcgRVRIVE9PTF9ORVRMSU5LXFxuIDUyMTpcXHRcXHRib29sIFxcXCJOZXRsaW5rIGludGVyZmFjZSBmb3IgZXRodG9vbFxcXCJcXG4gNTIyOlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gNTIzOlxcdFxcdGRlZmF1bHQgeVxcbiA1MjQ6XFx0XFx0aGVscFxcbiA1MjU6XFx0XFx0ICBBbiBhbHRlcm5hdGl2ZSB1c2Vyc3BhY2UgaW50ZXJmYWNlIGZvciBldGh0b29sIGJhc2VkIG9uIGdlbmVyaWNcXG4gNTI2OlxcdFxcdCAgbmV0bGluay4gSXQgcHJvdmlkZXMgYmV0dGVyIGV4dGVuc2liaWxpdHkgYW5kIHNvbWUgbmV3IGZlYXR1cmVzLFxcbiA1Mjc6XFx0XFx0ICBlLmcuIG5vdGlmaWNhdGlvbiBtZXNzYWdlcy5cXG4gNTI4OlxcdFxcbiA1Mjk6XFx0Y29uZmlnIE5FVERFVl9BRERSX0xJU1RfVEVTVFxcbiA1MzA6XFx0XFx0dHJpc3RhdGUgXFxcIlVuaXQgdGVzdHMgZm9yIGRldmljZSBhZGRyZXNzIGxpc3RcXFwiXFxuIDUzMTpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiA1MzI6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbiA1MzM6XFx0XFxuIDUzNDpcXHRjb25maWcgTkVUX1RFU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDQ6MTEuMDc5MzUxNzE4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3Mzk1NTg5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gRVRIVE9PTF9ORVRMSU5LIGZvciBOZXR3b3JrIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYEVUSFRPT0xfTkVUTElOS2AgY29uZmlndXJhdGlvbiBvcHRpb24uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGl0IGhhcyBhIGBkZWZhdWx0IHlgIHNldHRpbmcgYW5kIG5vIGRlcGVuZGVuY2llcywgd2hpY2ggc3VnZ2VzdHMgaXQncyB0aGUgcHJpbWFyeSBzd2l0Y2ggZm9yIHRoZSBmdW5jdGlvbmFsaXR5IHdlJ3JlIGludGVyZXN0ZWQgaW4uIFRoZXJlZm9yZSwgYEVUSFRPT0xfTkVUTElOS2AgaXMgdGhlIG9ubHkgY29uZmlnIEkgbmVlZCB0byBmb2N1cyBvbiwgcmlnaHQ/IEFjdHVhbGx5LCBob2xkIG9uIGEgc2Vjb25kLi4uIGlzIGBORVRgIHJlcXVpcmVkPyBBaCwgeWVzLCB0aGF0J3MganVzdCBhIGZ1bmRhbWVudGFsLCBiYXNlLWxldmVsIG5ldHdvcmtpbmcgY29uZmlnLiBBbmQgd2hhdCBhYm91dCBgQ09ORklHX05FVGA/IFJpZ2h0LCBzeXprYWxsZXIgYWx3YXlzIGVuYWJsZXMgdGhhdC4gU28gdGhvc2UgYXJlbid0IGEgY29uY2Vybi5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIHdoYXQncyBhY3R1YWxseSAqYmVpbmcqIHVzZWQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgcmVsZXZhbnQuIEl0IGxvb2tzIGxpa2UgYGV0aG5sX3NldF90c2NvbmZpZ2AgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQsIHNvIHRoYXQgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBJcyB0aGVyZSBhbnl0aGluZyBlbHNlIGluIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCB0aGF0IG1pZ2h0IGJlIHVzZWZ1bCB0byBpbnZlc3RpZ2F0ZT8gUGVyaGFwcywgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWA/IEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3MzEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNDoxNS44MTg5MTMzNzNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2V0aHRvb2wvdHNjb25maWcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNTE6XFx0c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGUoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4gMjUyOlxcdFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiAyNTM6XFx0e1xcbiAyNTQ6XFx0XFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpvcHMgPSByZXFfYmFzZS1cXHUwMDNlZGV2LVxcdTAwM2VuZXRkZXZfb3BzO1xcbiAyNTU6XFx0XFxuIDI1NjpcXHRcXHRpZiAoIW9wcy1cXHUwMDNlbmRvX2h3dHN0YW1wX3NldCB8fCAhb3BzLVxcdTAwM2VuZG9faHd0c3RhbXBfZ2V0KVxcbiAyNTc6XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiAyNTg6XFx0XFxuIDI1OTpcXHRcXHRyZXR1cm4gMTtcXG4gMjYwOlxcdH1cXG4gMjYxOlxcdFxcbiAyNjI6XFx0c3RhdGljIHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqXFxuIDI2MzpcXHR0c2NvbmZpZ19zZXRfaHdwcm92X2Zyb21fZGVzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiAyNjQ6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4gMjY1OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBod3RzdGFtcF9wcm92aWRlcl9kZXNjICpod3Byb3ZfZGVzYylcXG4gMjY2OlxcdHtcXG4gMjY3OlxcdFxcdHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvIHRzX2luZm87XFxuIDI2ODpcXHRcXHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcXG4gMjY5OlxcdFxcdHN0cnVjdCBubGF0dHIgKip0YiA9IGluZm8tXFx1MDAzZWF0dHJzO1xcbiAyNzA6XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeSA9IE5VTEw7XFxuIDI3MTpcXHRcXHRlbnVtIGh3dHN0YW1wX3NvdXJjZSBzb3VyY2U7XFxuIDI3MjpcXHRcXHRpbnQgcmV0O1xcbiAyNzM6XFx0XFxuIDI3NDpcXHRcXHRyZXQgPSBldGh0b29sX25ldF9nZXRfdHNfaW5mb19ieV9waGMoZGV2LCBcXHUwMDI2dHNfaW5mbywgaHdwcm92X2Rlc2MpO1xcbiAyNzU6XFx0XFx0aWYgKCFyZXQpIHtcXG4gMjc2OlxcdFxcdFxcdC8qIEZvdW5kICovXFxuIDI3NzpcXHRcXHRcXHRzb3VyY2UgPSBIV1RTVEFNUF9TT1VSQ0VfTkVUREVWO1xcbiAyNzg6XFx0XFx0fSBlbHNlIHtcXG4gMjc5OlxcdFxcdFxcdHBoeSA9IGV0aHRvb2xfcGh5X2dldF90c19pbmZvX2J5X3BoYyhkZXYsIFxcdTAwMjZ0c19pbmZvLCBod3Byb3ZfZGVzYyk7XFxuIDI4MDpcXHRcXHRcXHRpZiAoSVNfRVJSKHBoeSkpIHtcXG4gMjgxOlxcdFxcdFxcdFxcdGlmIChQVFJfRVJSKHBoeSkgPT0gLUVOT0RFVilcXG4gMjgyOlxcdFxcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbiAyODM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHRiW0VUSFRPT0xfQV9UU0NPTkZJR19IV1RTVEFNUF9QUk9WSURFUl0sXFxuIDI4NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFxcInBoYyBub3QgaW4gdGhpcyBuZXQgZGV2aWNlIHRvcG9sb2d5XFxcIik7XFxuIDI4NTpcXHRcXHRcXHRcXHRyZXR1cm4gRVJSX0NBU1QocGh5KTtcXG4gMjg2OlxcdFxcdFxcdH1cXG4gMjg3OlxcdFxcbiAyODg6XFx0XFx0XFx0c291cmNlID0gSFdUU1RBTVBfU09VUkNFX1BIWUxJQjtcXG4gMjg5OlxcdFxcdH1cXG4gMjkwOlxcdFxcbiAyOTE6XFx0XFx0aHdwcm92ID0ga3phbGxvY19vYmooKmh3cHJvdik7XFxuIDI5MjpcXHRcXHRpZiAoIWh3cHJvdilcXG4gMjkzOlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbiAyOTQ6XFx0XFxuIDI5NTpcXHRcXHRod3Byb3YtXFx1MDAzZWRlc2MuaW5kZXggPSBod3Byb3ZfZGVzYy1cXHUwMDNlaW5kZXg7XFxuIDI5NjpcXHRcXHRod3Byb3YtXFx1MDAzZWRlc2MucXVhbGlmaWVyID0gaHdwcm92X2Rlc2MtXFx1MDAzZXF1YWxpZmllcjtcXG4gMjk3OlxcdFxcdGh3cHJvdi1cXHUwMDNlc291cmNlID0gc291cmNlO1xcbiAyOTg6XFx0XFx0aHdwcm92LVxcdTAwM2VwaHlkZXYgPSBwaHk7XFxuIDI5OTpcXHRcXG4gMzAwOlxcdFxcdHJldHVybiBod3Byb3Y7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA0OjE1LjgxODk5MzQ5M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODczNjg4MTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgU3VwcG9ydCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWAgZnVuY3Rpb24uIEVzc2VudGlhbGx5LCBpdCdzIGEgZ2F0ZWtlZXBlciwgcmlnaHQ/IEl0J3MgY2hlY2tpbmcgZm9yIGhhcmR3YXJlIHRpbWVzdGFtcGluZyBzdXBwb3J0LiBTcGVjaWZpY2FsbHksIGl0J3MgY29uZmlybWluZyBpZiB0aGUgYG5kb19od3RzdGFtcF9zZXRgIGFuZCBgbmRvX2h3dHN0YW1wX2dldGAgTmV0RGV2aWNlIE9wZXJhdGlvbnMgKE5ETykgYXJlIGFjdHVhbGx5IGltcGxlbWVudGVkLiBJZiB0aGV5J3JlIG1pc3NpbmcsIGl0J3MgYSBzdHJhaWdodCBgLUVPUE5PVFNVUFBgIOKAkyBcIm5vdCBzdXBwb3J0ZWQuXCIgTWFrZXMgc2Vuc2UuXG5cblRvIHJlYWxseSBnZXQgYXQgdGhpcywgdG8gKnRlc3QqIGl0IGVmZmVjdGl2ZWx5LCBJIG5lZWQgYSBuZXR3b3JrIGRldmljZSB0aGF0ICpkb2VzKiBpbXBsZW1lbnQgdGhvc2UgTkRPcy4gVGhhdCdzIHRoZSBrZXkuIE90aGVyd2lzZSwgSSdtIGp1c3Qgc3Bpbm5pbmcgbXkgd2hlZWxzLiBTeXprYWxsZXIsIHdoaWNoIEknbSBmYW1pbGlhciB3aXRoLCB1c2VzIGEgYnVuY2ggb2YgZGlmZmVyZW50IHZpcnR1YWwgYW5kIHBoeXNpY2FsIGRldmljZXMuIERldmljZXMgbGlrZSBgdmV0aGAsIGB0dW5gLCBgbWFjdmxhbmAsIHRoZSBzaW1wbGUgYGR1bW15YCwgdGhlIGJyaWRnaW5nIHR5cGVzIGxpa2UgYGJyaWRnZWAsIGV2ZW4gdGhlIG1vcmUgY29tcGxleCBgdnhsYW5gIHNldHVwcy4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRob3NlOyBJIG5lZWQgdG8gZHJpbGwgZG93biBhbmQgc2VlIHdoaWNoLCBpZiBhbnksIG9mICp0aG9zZSogYXJlIGFjdHVhbGx5IHBsYXlpbmcgdGhlIGhhcmR3YXJlIHRpbWVzdGFtcGluZyBnYW1lLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQgbG9va2luZyBpbiB0aGUgY29kZS4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRob3NlIGZ1bmN0aW9ucywgc28gSSBjYW4gc3RhcnQgdG8gdGVzdCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk3NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA0OjIwLjY5MjY4NDQyNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI1MjM1MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5kb19od3RzdGFtcF9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTk0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGJvbmRfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk3Ni1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gYm9uZF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1OTc3OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBib25kX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NzgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM9NDM3PUVYUE9SVF9TWU1CT0woY2FuX2h3dHN0YW1wX2dldCk7XFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy00MzgtXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYzo0Mzk6LyogZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiBuZXRkZXZfb3BzOjpuZG9faHd0c3RhbXBfc2V0IGZvciBDQU4gZGV2aWNlc1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmMtNDQwLSAqIHN1cHBvcnRpbmcgaGFyZHdhcmUgdGltZXN0YW1wc1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM9ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBwY2k0MDJfYWNjX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYy04OS1cXHQubmRvX2h3dHN0YW1wX2dldCA9IGNhbl9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM6OTA6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jLTkxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYz05MDI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBrdmFzZXJfcGNpZWZkX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYy05MDYtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBjYW5faHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jOjkwNzpcXHQubmRvX2h3dHN0YW1wX3NldCA9IGNhbl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtOTA4LX07XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX2NhbmZkLmM9NzY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcGVha19jYW5mZF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19jYW5mZC5jLTc3MS1cXHQubmRvX2h3dHN0YW1wX2dldCA9IHBlYWtfZXRoX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX2NhbmZkLmM6NzcyOlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gcGVha19ldGhfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfY2FuZmQuYy03NzMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM9MTczMj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1jcDI1MXhmZF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0xNzM2LVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gY2FuX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jOjE3Mzc6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMTczOC19O1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9ldGFzX2VzNTh4L2VzNTh4X2NvcmUuYz0xOTgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZXM1OHhfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmMtMTk4NC1cXHQubmRvX2h3dHN0YW1wX2dldCA9IGNhbl9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9ldGFzX2VzNTh4L2VzNTh4X2NvcmUuYzoxOTg1OlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gY2FuX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTE5ODYtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmM9MTIwOD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGdzX3VzYl9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYy0xMjEyLVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gZ3NfY2FuX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jOjEyMTM6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBnc19jYW5faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMtMTIxNC19O1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9rdmFzZXJfdXNiL2t2YXNlcl91c2JfY29yZS5jPTc5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGt2YXNlcl91c2JfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy03OTUtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBjYW5faHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYzo3OTY6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy03OTctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jPTgwNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHBlYWtfdXNiX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy04MTEtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBwZWFrX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYzo4MTI6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBwZWFrX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy04MTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9MjAzNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHhnYmVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMjA1Ni1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0geGdiZV9nZXRfaHd0c3RhbXBfc2V0dGluZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoyMDU3OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSB4Z2JlX3NldF9od3RzdGFtcF9zZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTIwNTgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYz00NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhcV9uZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00NzMtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBhcV9uZGV2X2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmM6NDc0OlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gYXFfbmRldl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTQ3NS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEzMDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm54MnhfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzAzNi1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gYm54MnhfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMzAzNzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gYm54MnhfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzAzOC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTYwNzY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBibnh0X25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwNy1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gYm54dF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYxMDg6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGJueHRfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MTA5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNDM2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHRnM19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTQzODQtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IHRnM19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTQzODU6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IHRnM19od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTQzODYtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDU0OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hY2JfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDU2My1cXHQubmRvX2ZlYXR1cmVzX2NoZWNrXFx0PSBtYWNiX2ZlYXR1cmVzX2NoZWNrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDU2NDpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbWFjYl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTY1LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtYWNiX2h3dHN0YW1wX2dldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTI3ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGF0OTFldGhlcl9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mjg1LSNlbmRpZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTI4NjpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbWFjYl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mjg3LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtYWNiX2h3dHN0YW1wX2dldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTMyMDU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsaW9uZXRkZXZvcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zMjI3LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBsaXF1aWRpb19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzIyODpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbGlxdWlkaW9faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTMyMjktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE4NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsaW9uZXRkZXZvcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xODcyLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBsaXF1aWRpb19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTg3MzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbGlxdWlkaW9faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE4NzQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYz0xMzY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgb2N0ZW9uX21nbXRfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jLTEzNzgtXFx0Lm5kb19od3RzdGFtcF9nZXQgPVxcdFxcdG9jdGVvbl9tZ210X2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM6MTM3OTpcXHQubmRvX2h3dHN0YW1wX3NldCA9XFx0XFx0b2N0ZW9uX21nbXRfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMzgwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWN2Zl9tYWluLmM9MjA3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG5pY3ZmX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWN2Zl9tYWluLmMtMjA4OS1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gbmljdmZfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY3ZmX21haW4uYzoyMDkwOlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBuaWN2Zl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljdmZfbWFpbi5jLTIwOTEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM4NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBjeGdiNF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzg3OC1cXHQubmRvX2h3dHN0YW1wX2dldCAgICAgPSBjeGdiX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozODc5OlxcdC5uZG9faHd0c3RhbXBfc2V0ICAgICA9IGN4Z2JfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4ODAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yMzcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdHNuZXBfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMzg1LVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gdHNuZXBfcHRwX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjM4NjpcXHQubmRvX2h3dHN0YW1wX3NldCA9IHRzbmVwX3B0cF9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIzODctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM9MzE0NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGRwYWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0zMTU5LVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gZHBhYV9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzozMTYwOlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gZHBhYV9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0zMTYxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmM9MzAzMD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGRwYWEyX2V0aF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmMtMzA0Ni1cXHQubmRvX2h3dHN0YW1wX2dldCA9IGRwYWEyX2V0aF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5jOjMwNDc6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBkcGFhMl9ldGhfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguYy0zMDQ4LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9NTY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW5ldGM0X25kZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTU3NS1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gZW5ldGNfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo1NzY6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGVuZXRjX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNTc3LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlbmV0Y19uZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTQ5OS1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gZW5ldGNfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjUwMDpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gZW5ldGNfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTUwMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmM9MjEzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW5ldGNfbmRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy0yMjItXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IGVuZXRjX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYzoyMjM6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGVuZXRjX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy0yMjQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQ4ODc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBmZWNfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ5MDItXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IGZlY19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDkwMzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gZmVjX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00OTA0LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTMxMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBnZmFyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTMxNTAtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBnZmFyX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjMxNTE6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBnZmFyX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTMxNTItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jPTEzMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBmdW5fbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jLTEzMzctXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IGZ1bl9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9tYWluLmM6MTMzODpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gZnVuX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX21haW4uYy0xMzM5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MjI0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGd2ZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIyNTUtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9XFx0Z3ZlX2dldF90c19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjIyNTY6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9XFx0Z3ZlX3NldF90c19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIyNTctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZW5ldC5jPTMwNzE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBobnMzX25pY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM19lbmV0LmMtMzA5Ny1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gaG5zM19uaWNfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZW5ldC5jOjMwOTg6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGhuczNfbmljX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2VuZXQuYy0zMDk5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NzM0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGUxMDAwZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTczNjYtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IGUxMDAwZV9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjczNjc6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGUxMDAwZV9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTczNjgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MTM1ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpNDBlX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTEzNjIxLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBpNDBlX3B0cF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxMzYyMjpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gaTQwZV9wdHBfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2MjMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmM9NTEzND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlhdmZfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTE1MC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gaWF2Zl9od3N0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jOjUxNTE6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGlhdmZfaHdzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYy01MTUyLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz05Nzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWNlX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy05ODIzLVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gaWNlX3B0cF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6OTgyNDpcXHQubmRvX2h3dHN0YW1wX3NldCA9IGljZV9wdHBfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTk4MjUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0yNjY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWRwZl9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTI2NzctXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBpZHBmX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MjY3ODpcXHQubmRvX2h3dHN0YW1wX3NldCA9IGlkcGZfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yNjc5LVxcdC5uZG9fYnBmID0gaWRwZl94ZHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0zMDM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWdiX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zMDYzLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBpZ2JfcHRwX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozMDY0OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBpZ2JfcHRwX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zMDY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz02OTgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWdjX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy02OTk4LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBpZ2NfcHRwX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo2OTk5OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBpZ2NfcHRwX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy03MDAwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTEwNzE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpeGdiZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExMTE2LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBpeGdiZV9wdHBfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTExNzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gaXhnYmVfcHRwX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTExMTgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTU4MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtdnBwMl9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNTgyNC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gbXZwcDJfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jOjU4MjU6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IG12cHAyX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy01ODI2LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jPTI5NTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBvdHgyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTI5NzEtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IG90eDJfY29uZmlnX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjI5NzI6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IG90eDJfY29uZmlnX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTI5NzMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM9NTI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgb3R4MnZmX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTUzNi1cXHQubmRvX2h3dHN0YW1wX2dldCA9IG90eDJfY29uZmlnX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjUzNzpcXHQubmRvX2h3dHN0YW1wX3NldCA9IG90eDJfY29uZmlnX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTUzOC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0yODIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWx4NF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0yODQ2LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtbHg0X2VuX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jOjI4NDc6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IG1seDRfZW5faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjg0OC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01MzI0PWNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtbHg1ZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01MzQ0LVxcdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgICA9IG1seDVlX2h3dHN0YW1wX2dldF9uZG8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1MzQ1OlxcdC5uZG9faHd0c3RhbXBfc2V0ICAgICAgICA9IG1seDVlX2h3dHN0YW1wX3NldF9uZG8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01MzQ2LSNpZmRlZiBDT05GSUdfTUxYNV9FTl9BUkZTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYz02NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seDVpX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYy03Mi1cXHQubmRvX2h3dHN0YW1wX2dldCAgICAgICAgPSBtbHg1aV9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmM6NzM6XFx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgID0gbWx4NWlfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jLTc0LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jPTE0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seDVpX3BrZXlfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYl92bGFuLmMtMTUxLVxcdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgICA9IG1seDVpX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jOjE1MjpcXHQubmRvX2h3dHN0YW1wX3NldCAgICAgICAgPSBtbHg1aV9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liX3ZsYW4uYy0xNTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM9MTE5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seHN3X3NwX3BvcnRfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtMTIwNi1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gbWx4c3dfc3BfcG9ydF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzoxMjA3OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBtbHhzd19zcF9wb3J0X2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTEyMDgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NTU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZmJuaWNfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtNTcwLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBmYm5pY19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo1NzE6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGZibmljX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTU3Mi19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM0OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW43NDN4X25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzUwNS1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gbGFuNzQzeF9wdHBfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNTA2OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBsYW43NDN4X3B0cF9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM1MDctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTUwMT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxhbjk2NnhfcG9ydF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtNTE1LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0XFx0PSBsYW45NjZ4X3BvcnRfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjUxNjpcXHQubmRvX2h3dHN0YW1wX3NldFxcdFxcdD0gbGFuOTY2eF9wb3J0X2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy01MTctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jPTI0OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHNwYXJ4NV9wb3J0X25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9uZXRkZXYuYy0yNjAtXFx0Lm5kb19od3RzdGFtcF9nZXQgICAgICAgPSBzcGFyeDVfcG9ydF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmM6MjYxOlxcdC5uZG9faHd0c3RhbXBfc2V0ICAgICAgID0gc3Bhcng1X3BvcnRfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jLTI2Mi19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9OTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgb2NlbG90X3BvcnRfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTk2NC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdFxcdD0gb2NlbG90X3BvcnRfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjk2NTpcXHQubmRvX2h3dHN0YW1wX3NldFxcdFxcdD0gb2NlbG90X3BvcnRfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTk2Ni19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2tpLXNlbWkvcGNoX2diZS9wY2hfZ2JlX21haW4uYz0yMzQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcGNoX2diZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2tpLXNlbWkvcGNoX2diZS9wY2hfZ2JlX21haW4uYy0yMzU3LVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gcGNoX2diZV9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2tpLXNlbWkvcGNoX2diZS9wY2hfZ2JlX21haW4uYzoyMzU4OlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gcGNoX2diZV9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2tpLXNlbWkvcGNoX2diZS9wY2hfZ2JlX21haW4uYy0yMzU5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9pb25pYy9pb25pY19saWYuYz0yODA1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaW9uaWNfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL2lvbmljL2lvbmljX2xpZi5jLTI4MjgtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IGlvbmljX2h3c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL2lvbmljL2lvbmljX2xpZi5jOjI4Mjk6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGlvbmljX2h3c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL2lvbmljL2lvbmljX2xpZi5jLTI4MzAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jPTY5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHFlZGVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jLTcyNS1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gcWVkZV9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmM6NzI2OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBxZWRlX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uYy03MjctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmM9MjYwNT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHJhdmJfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMjYxOC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gcmF2Yl9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYzoyNjE5OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSByYXZiX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jLTI2MjAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM9MTg3MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHJzd2l0Y2hfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmMtMTg4MS1cXHQubmRvX2h3dHN0YW1wX2dldCA9IHJzd2l0Y2hfaHdzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yc3dpdGNoX21haW4uYzoxODgyOlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gcnN3aXRjaF9od3N0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE4ODMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jPTExNzM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBydHNuX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYy0xMTgwLVxcdC5uZG9fc2V0X21hY19hZGRyZXNzXFx0PSBldGhfbWFjX2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmM6MTE4MTpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gcnRzbl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMtMTE4Mi1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gcnRzbl9od3RzdGFtcF9nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4LmM9NTY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZWZ4X25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4LmMtNTgxLVxcdC5uZG9fdmxhbl9yeF9raWxsX3ZpZFxcdD0gZWZ4X3ZsYW5fcnhfa2lsbF92aWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmeC5jOjU4MjpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gZWZ4X2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4LmMtNTgzLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBlZnhfaHd0c3RhbXBfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2VmeC5jPTU5ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVmeF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2VmeC5jLTYwOC1cXHQubmRvX3ZsYW5fcnhfa2lsbF92aWRcXHQ9IGVmeF92bGFuX3J4X2tpbGxfdmlkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9lZnguYzo2MDk6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGVmeF9zaWVuYV9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2VmeC5jLTYxMC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gZWZ4X3NpZW5hX2h3dHN0YW1wX2dldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzI0LVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gc3RtbWFjX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMjU6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBzdG1tYWNfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMyNi19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0xOTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYW02NV9jcHN3X251c3NfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMTk4OC1cXHQubmRvX2h3dHN0YW1wX2dldCAgICAgICA9IGFtNjVfY3Bzd19udXNzX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjE5ODk6XFx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgPSBhbTY1X2Nwc3dfbnVzc19od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0xOTkwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmM9MTE5OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGNwc3dfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMjE3LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBjcHN3X2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmM6MTIxODpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gY3Bzd19od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jLTEyMTktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmM9MTE0OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGNwc3dfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmMtMTE2OC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gY3Bzd19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYzoxMTY5OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBjcHN3X2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jLTExNzAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTE2MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlbWFjX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNjUyLVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gaWNzc2dfbmRvX2dldF90c19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTY1MzpcXHQubmRvX2h3dHN0YW1wX3NldCA9IGljc3NnX25kb19zZXRfdHNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE2NTQtXFx0Lm5kb194c2tfd2FrZXVwID0gcHJ1ZXRoX3hza193YWtldXAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmM9NzQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jLTc1My1cXHQubmRvX2h3dHN0YW1wX2dldCA9IGljc3NnX25kb19nZXRfdHNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYzo3NTQ6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBpY3NzZ19uZG9fc2V0X3RzX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmMtNzU1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmM9MTc4ND1zdGF0aWMgaW50IG5ldGNwX25kb19od3RzdGFtcF9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmMtMTgwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmM6MTgwNzpzdGF0aWMgaW50IG5ldGNwX25kb19od3RzdGFtcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvbmV0Y3BfY29yZS5jLTE4MDgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvbmV0Y3BfY29yZS5jPTE5OTc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZXRjcF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvbmV0Y3BfY29yZS5jLTIwMTEtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IG5ldGNwX25kb19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvbmV0Y3BfY29yZS5jOjIwMTI6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IG5ldGNwX25kb19od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvbmV0Y3BfY29yZS5jLTIwMTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz02NzA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZ2JlX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNjg0LVxcdC5uZG9fdmxhbl9yeF9raWxsX3ZpZCAgID0gd3hfdmxhbl9yeF9raWxsX3ZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM6Njg1OlxcdC5uZG9faHd0c3RhbXBfc2V0ICAgICAgID0gd3hfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy02ODYtXFx0Lm5kb19od3RzdGFtcF9nZXQgICAgICAgPSB3eF9od3RzdGFtcF9nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB0eGdiZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzEwLVxcdC5uZG9fdmxhbl9yeF9raWxsX3ZpZCAgID0gd3hfdmxhbl9yeF9raWxsX3ZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo3MTE6XFx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgPSB3eF9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzEyLVxcdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgID0gd3hfaHd0c3RhbXBfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYz0xNDIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXhwNHh4X25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jLTE0MzEtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBpeHA0eHhfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmM6MTQzMjpcXHQubmRvX2h3dHN0YW1wX3NldCA9IGl4cDR4eF9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy0xNDMzLX07XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTE5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hY3ZsYW5fbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjE2LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtYWN2bGFuX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTIxNzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbWFjdmxhbl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMTgtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDQ6MjEuMzE3OTI0NDRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwMDY1NjY4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBNYWN2bGFuIGFuZCBIYXJkd2FyZSBUaW1lc3RhbXBpbmcqKlxuXG5SaWdodCwgc28gYG1hY3ZsYW5gIGlzIHV0aWxpemluZyB0aGUgYG5kb19od3RzdGFtcF9zZXRgIGFuZCBgbmRvX2h3dHN0YW1wX2dldGAgbmV0ZGV2aWNlIG9wZXJhdGlvbnMuIEV4Y2VsbGVudCwgdGhhdCdzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGZvciBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgc3VwcG9ydC4gSXQgbWVhbnMgdGhleSdyZSBzZXR0aW5nIHVwIHRoZSBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgZm9yIGdldHRpbmcgYW5kIHNldHRpbmcgaGFyZHdhcmUgdGltZXN0YW1wcy4gSSBuZWVkIHRvIGRpZyBpbnRvIGBtYWN2bGFuX2h3dHN0YW1wX3NldGAgc3BlY2lmaWNhbGx5IHRvIHNlZSAqaG93KiB0aGV5J3JlIGhhbmRsaW5nIGl0LiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGFyZSBhc3NvY2lhdGluZyB0aGUgbWFjdmxhbiBpbnRlcmZhY2Ugd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIHRpbWVzdGFtcCBzb3VyY2UuIEFyZSB0aGV5IHNpbXBseSBwYXNzaW5nIHRoZSByZXF1ZXN0IGFsb25nIHRvIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGludGVyZmFjZSwgb3IgaXMgdGhlcmUgbW9yZSBjb21wbGV4IGxvZ2ljIGludm9sdmVkIHRvIGFjY291bnQgZm9yIHRoZSB2aXJ0dWFsIG5hdHVyZSBvZiBtYWN2bGFuPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBnb3RjaGFzIHdpdGggdGhlIG11bHRpcGxlIG1hY3ZsYW4gaW50ZXJmYWNlcyBvbiBhIHNpbmdsZSBwaHlzaWNhbCBwb3J0IGFuZCB0aW1lIGtlZXBpbmcgYWNjdXJhY3k/IFRoaXMgd2lsbCBiZSBpbnRlcmVzdGluZy4gTGV0J3Mgc2VlIGhvdyB0aGlzIGlzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTk4OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA0OjI1LjQxODU4MzI2MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE4MzEzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjdmxhbl9od3RzdGFtcF9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz04OTE9c3RhdGljIGludCBtYWN2bGFuX2h3dHN0YW1wX2dldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTg5OC1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6ODk5OnN0YXRpYyBpbnQgbWFjdmxhbl9od3RzdGFtcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtOTAwLVxcdFxcdFxcdFxcdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTE5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hY3ZsYW5fbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjE2LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtYWN2bGFuX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTIxNzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbWFjdmxhbl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMTgtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDQ6MjUuNTEwNDIwMDIxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1ODUwMjkzNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9ibGVtOlxuXG4qKk5ldHdvcmsgSW50ZXJmYWNlIFNlbGVjdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgbmV0d29yayBzZXR1cCBhbmQgaXQgbG9va3MgbGlrZSBgbWFjdmxhbmAgc2hvdWxkIGJlIHBlcmZlY3RseSBhZGVxdWF0ZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIG5lZWQuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZSBgdmV0aGAgaW50ZXJmYWNlIGFsc28gaW1wbGVtZW50cyB0aGlzIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBvcHRpb25zIGJlZm9yZSBJIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1MzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNTozMS4zNjA3MTcwNjFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDgyNjEwMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmRvX2h3dHN0YW1wX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92ZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA1OjMxLjgyNTU1MjA0NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM0MTgzMzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgTmV0d29yayBJbnRlcmZhY2UgUG9zc2liaWxpdGllcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBvcmlnaW5hbCBhc3N1bXB0aW9uIG9mIGB2ZXRoYCBiZWluZyB0aGUgc29sdXRpb24gaXMgaW5jb3JyZWN0LiBUaGF0IHBhdGggaXMgYSBkZWFkIGVuZC4gSSBuZWVkIHRvIHBpdm90LiBMZXQncyBub3Qgd2FzdGUgYW55IG1vcmUgdGltZSB0aGVyZS5cblxuTXkgaW1tZWRpYXRlIG5leHQgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSBgZHVtbXlgLiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyBpcyBhIHNlbnNpYmxlIG5leHQgc3RlcCBpbiB0aGUgdHJvdWJsZXNob290aW5nIHByb2Nlc3MuIFBlcmhhcHMgYSBzaW1wbGUsIHN0YXRlbGVzcyBpbnRlcmZhY2UgaXMgd2hhdCdzIHJlcXVpcmVkIGhlcmUuIExldCdzIHNlZSBpZiB0aGlzIGNvbmZpZ3VyYXRpb24gY2FuIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBmb3VuZGF0aW9uLiBJJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBzb21lIGxpa2VseSBzY2VuYXJpb3MsIHNwZWNpZmljIHBhcmFtZXRlcnMgYW5kIHRlc3RzIEknbGwgcGVyZm9ybSB0byBjb25maXJtIGl0cyB1dGlsaXR5IG9yIGxhY2sgdGhlcmVvZi4gVGltZSB0byBkaXZlIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kIHNlZSBpZiB0aGlzIGhvbGRzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Njk4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDU6MzUuNDU5NzM5NTIyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTI4NTg5MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmRvX2h3dHN0YW1wX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kdW1teS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNTozNS41MjEwMzEwNjZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0OTk5OTc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEEgQ29uY2lzZSBOZWdhdGl2ZSBSZXNwb25zZSBcdTAwMjYgU3Vic2VxdWVudCBTdHJhdGVneSoqXG5cbkhtbSwgXCJOby5cIiBUaGF0J3MgdGhlIGluaXRpYWwgZ3V0IHJlYWN0aW9uLiBBIHN3aWZ0LCBhbG1vc3QgcmVmbGV4aXZlIGRlbmlhbC4gVXN1YWxseSwgdGhpcyBtZWFucyBJJ3ZlIGVpdGhlciBlbmNvdW50ZXJlZCBhIGNvbmNlcHQgSSdtICp2ZXJ5KiBmYW1pbGlhciB3aXRoLCBhbmQgdGhlIGluaXRpYWwgcHJvbXB0IHNlZW1zIG9mZiwgb3IgcGVyaGFwcyBzb21ldGhpbmcgZmVlbHMgZnVuZGFtZW50YWxseSBmbGF3ZWQuIFJhdGhlciB0aGFuIGR3ZWxsaW5nIG9uIHRoZSBuZWdhdGlvbiwgbGV0J3MgcGl2b3QuIFRoZSBpbW1lZGlhdGUgZm9sbG93LXVwIHRob3VnaHQsIFwiTGV0J3MgY2hlY2sgYGJvbmRpbmdgLFwiIHN1Z2dlc3RzIGEgc3RyYXRlZ2ljIHJlZGlyZWN0aW9uLiBNeSBpbml0aWFsIG5lZ2F0aXZlIGltcHJlc3Npb24gaXMgcHJvbXB0aW5nIG1lIHRvIGV2YWx1YXRlIHRoZSBjb25uZWN0aW9uIHRvIGEgcmVsYXRlZCwgYW5kIHBlcmhhcHMgbW9yZSBwcmVjaXNlLCB0ZXJtIG9yIGNvbmNlcHQuIEknbSBjaG9vc2luZyB0byB1bnBhY2sgdGhlIGVzc2VuY2Ugb2Ygd2hhdCB0aGF0ICdubycgcmVsYXRlcyB0byBieSBkaWdnaW5nIGRlZXBlciBpbnRvICdib25kaW5nJy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5MzAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNTozOC44NzEwMzQ0NTNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODU3NDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5kb19od3RzdGFtcF9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm9uZF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTc2LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBib25kX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjU5Nzc6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGJvbmRfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk3OC19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNTozOC45MjU4OTkwNzhaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4NDkyNjg1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zIGhlcmUuIElmIGBib25kaW5nYCBpcyB0aGUgaW1wbGVtZW50YXRpb24gbWV0aG9kLCB0aGVuIHRoYXQgbWVhbnMgYm90aCBgTUFDVkxBTmAgYW5kIGBCT05ESU5HYCBhcmUgcHJvYmFibHkgc29saWQgb3B0aW9ucyB0byBoYXZlIG9uIHRoZSB0YWJsZS4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBNQUNWTEFOYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGlmIGl0IG5lZWRzIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0byBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlZmF1bHQgc3RhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3Mjg2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDU6NDIuNjEwODMyMDRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzYzMjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUNWTEFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0xNjM9c291cmNlIFxcXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjQtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDU6NDIuNjkwNjAwNDIyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NzE2ODIyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTmV0d29ya2luZyBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgbmV0d29yayBjb25maWd1cmF0aW9ucyBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgTUFDVkxBTmAuIFRoYXQncyBhIGtleSBwaWVjZSBvZiB0aGlzIHB1enpsZSDigJMgYSBjcnVjaWFsIG1ldGhvZCBmb3IgbmV0d29yayB2aXJ0dWFsaXphdGlvbi4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBpbXBsaWNhdGlvbnMgZm9yIGlzb2xhdGlvbiBhbmQgcmVzb3VyY2Ugc2hhcmluZywgdGhlIGJlbmVmaXRzIG9mIG11bHRpcGxlIE1BQyBhZGRyZXNzZXMgcGVyIHBoeXNpY2FsIGludGVyZmFjZSwgYW5kIHRoZSBwb3RlbnRpYWwgY29tcGxleGl0aWVzIGluIHJvdXRpbmcgYW5kIGJyaWRnaW5nIHNjZW5hcmlvcy5cblxuTm93LCBsZXQncyBwaXZvdCB0byBgQk9ORElOR2AuIEkgbmVlZCB0byBhc3Nlc3MgaG93IGl0IHdvcmtzIHdpdGggYE1BQ1ZMQU5gLiBJJ20gY3VyaW91cyBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggbGluayBhZ2dyZWdhdGlvbiBmb3IgaW5jcmVhc2VkIGJhbmR3aWR0aCBhbmQgcmVkdW5kYW5jeS4gSSdtIHdvbmRlcmluZyBpZiB0aGlzIHNldHVwIGludm9sdmVzIGEgc29waGlzdGljYXRlZCBvcmNoZXN0cmF0aW9uIG9mIHRoZSBib25kaW5nIG1vZGVzIChhY3RpdmUtYmFja3VwLCBMQUNQLCBldGMuKSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBNQUNWTEFOIGludGVyZmFjZXMsIGFuZCB3aGF0IHRob3NlIGRldGFpbHMgbWlnaHQgYmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGVzZSBtZWNoYW5pc21zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzUzOCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA1OjQ4LjQ2MjI4ODAwMVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwMjY5MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJPTkRJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTM5PWlmIE5FVF9DT1JFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjQxOmNvbmZpZyBCT05ESU5HXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiQm9uZGluZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDU6NDguNTI0MzE5MTE1WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NzMyMzk3NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV0d29yayBDb25maWd1cmF0aW9uIERlY2lzaW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gZW5zdXJlIHdlIGhhdmUgYSBuZXR3b3JrIGRldmljZSB0aGF0IHByb3Blcmx5IHN1cHBvcnRzIGhhcmR3YXJlIHRpbWVzdGFtcGluZyB2aWEgYG5kb19od3RzdGFtcF9zZXRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpbmNsdWRpbmcgYE1BQ1ZMQU5gIGFuZCBgQk9ORElOR2AgY29uZmlndXJhdGlvbnMgd2l0aGluIGBFbmFibGVDb25maWdzYCB3b3VsZCBiZSBhIGdvb2QgYXBwcm9hY2gsIGJlY2F1c2UgSSBrbm93IHRoZXkncmUgb2Z0ZW4gdXNlZCBmb3IgdGhpcyBraW5kIG9mIHNldHVwLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guIEknbSByZW1lbWJlcmluZyB0aGF0IGBldGhubF9zZXRfdHNjb25maWdgIGRvZXNuJ3QgKmRpcmVjdGx5KiBjYWxsIGBuZG9faHd0c3RhbXBfc2V0YCwgcmlnaHQ/IEl0IGNhbGxzIGBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdoaWNoIHRoZW4gbWlnaHQgdXNlIGl0PyBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGFuZCB2ZXJpZnkgdGhlIGV4YWN0IGNhbGwgY2hhaW4uIExldCBtZSBwdWxsIHVwIGBldGhubF9zZXRfdHNjb25maWdgIGFnYWluIGFuZCBtYWtlIHN1cmUgSSBoYXZlIHRoZSBkZXRhaWxzIHN0cmFpZ2h0LiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBwYXRoIG9mIHRoZSBod3RzdGFtcCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg1NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA1OjUzLjA5NzU5MDM2N1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2V0aHRvb2wvdHNjb25maWcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MDA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHRzX2ZsYWdzX25hbWVzLCBpbmZvLVxcdTAwM2VleHRhY2ssXFxuIDQwMTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmNvbmZpZ19tb2QpO1xcbiA0MDI6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDQwMzpcXHRcXHRcXHRcXHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcXG4gNDA0OlxcdFxcdH1cXG4gNDA1OlxcdFxcbiA0MDY6XFx0XFx0cmV0ID0gbmV0X2h3dHN0YW1wX3ZhbGlkYXRlKFxcdTAwMjZod3RzdF9jb25maWcpO1xcbiA0MDc6XFx0XFx0aWYgKHJldClcXG4gNDA4OlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiA0MDk6XFx0XFxuIDQxMDpcXHRcXHRpZiAoaHdwcm92X21vZCkge1xcbiA0MTE6XFx0XFx0XFx0c3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgemVyb19jb25maWcgPSB7MH07XFxuIDQxMjpcXHRcXHRcXHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKl9faHdwcm92O1xcbiA0MTM6XFx0XFxuIDQxNDpcXHRcXHRcXHQvKiBEaXNhYmxlIGN1cnJlbnQgdGltZSBzdGFtcGluZyBpZiB3ZSB0cnkgdG8gZW5hYmxlXFxuIDQxNTpcXHRcXHRcXHQgKiBhbm90aGVyIG9uZVxcbiA0MTY6XFx0XFx0XFx0ICovXFxuIDQxNzpcXHRcXHRcXHRyZXQgPSBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihkZXYsIFxcdTAwMjZ6ZXJvX2NvbmZpZywgaW5mby1cXHUwMDNlZXh0YWNrKTtcXG4gNDE4OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA0MTk6XFx0XFx0XFx0XFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XFxuIDQyMDpcXHRcXG4gNDIxOlxcdFxcdFxcdC8qIENoYW5nZSB0aGUgc2VsZWN0ZWQgaHd0c3RhbXAgc291cmNlICovXFxuIDQyMjpcXHRcXHRcXHRfX2h3cHJvdiA9IHJjdV9yZXBsYWNlX3BvaW50ZXIoZGV2LVxcdTAwM2Vod3Byb3YsIGh3cHJvdixcXG4gNDIzOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBuZXRkZXZfaXNfbG9ja2VkX29wc19jb21wYXQoZGV2KSk7XFxuIDQyNDpcXHRcXHRcXHRpZiAoX19od3Byb3YpXFxuIDQyNTpcXHRcXHRcXHRcXHRrZnJlZV9yY3UoX19od3Byb3YsIHJjdV9oZWFkKTtcXG4gNDI2OlxcdFxcdH1cXG4gNDI3OlxcdFxcbiA0Mjg6XFx0XFx0aWYgKGNvbmZpZ19tb2QpIHtcXG4gNDI5OlxcdFxcdFxcdHJldCA9IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKGRldiwgXFx1MDAyNmh3dHN0X2NvbmZpZyxcXG4gNDMwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGluZm8tXFx1MDAzZWV4dGFjayk7XFxuIDQzMTpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gNDMyOlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDQzMzpcXHRcXHR9XFxuIDQzNDpcXHRcXG4gNDM1OlxcdFxcdHJldCA9IHRzY29uZmlnX3NlbmRfcmVwbHkoZGV2LCBpbmZvKTtcXG4gNDM2OlxcdFxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FT1BOT1RTVVBQKSB7XFxuIDQzNzpcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhpbmZvLVxcdTAwM2VleHRhY2ssXFxuIDQzODpcXHRcXHRcXHRcXHQgICAgICAgXFxcImVycm9yIHdoaWxlIHJlYWRpbmcgdGhlIG5ldyBjb25maWd1cmF0aW9uIHNldFxcXCIpO1xcbiA0Mzk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDQwOlxcdFxcdH1cXG4gNDQxOlxcdFxcbiA0NDI6XFx0XFx0LyogdHNjb25maWcgaGFzIG5vIG5vdGlmaWNhdGlvbiAqL1xcbiA0NDM6XFx0XFx0cmV0dXJuIDA7XFxuIDQ0NDpcXHRcXG4gNDQ1OlxcdGVycl9mcmVlX2h3cHJvdjpcXG4gNDQ2OlxcdFxcdGtmcmVlKGh3cHJvdik7XFxuIDQ0NzpcXHRcXG4gNDQ4OlxcdFxcdHJldHVybiByZXQ7XFxuIDQ0OTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA1OjUzLjA5NzgxNzA5N1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjUxODQ0OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyB0aGUgSGFyZHdhcmUgVGltZXN0YW1waW5nIEltcGxlbWVudGF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBzeXN0ZW0gaXMgY2FsbGluZyBgZGV2X3NldF9od3RzdGFtcF9waHlsaWJgLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIG15IG5ldHdvcmsgc3RhY2sgZXhwZXJ0aXNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGhlcmUgd2l0aCBoYXJkd2FyZSB0aW1lc3RhbXBpbmcsIHNvIHRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgbG9jYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2X3NldF9od3RzdGFtcF9waHlsaWJgLiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGRlYWxzIHdpdGggZGV2aWNlIGlvY3RscyBhbmQgcG90ZW50aWFsIGhhcmR3YXJlIGludGVyYWN0aW9uIHJlbGF0ZWQgdG8gdGltZXN0YW1waW5nIEknbSBwcmV0dHkgc3VyZSBJJ2xsIGZpbmQgaXQgaW4gYG5ldC9jb3JlL2Rldl9pb2N0bC5jYCwgb3Igc29tZXRoaW5nIGNsb3NlbHkgcmVsYXRlZCBpbiB0aGUgbmV0d29ya2luZyBjb3JlIG9yIG1heWJlIGluIHRoZSBwaHlsaWIgaXRzZWxmLCBkZXBlbmRpbmcgb24gaG93IHRoaXMgaXMgc3RydWN0dXJlZC4gTGV0J3Mgc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFuZCB3aGF0J3MgZ29pbmcgb24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODk2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNTo1Ni43NDk2NjYxNjNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTM5NzI0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldi5oPTQwMj12b2lkIGtpY2tfZGVmZXJfbGlzdF9wdXJnZSh1bnNpZ25lZCBpbnQgY3B1KTtcXG5uZXQvY29yZS9kZXYuaC00MDMtXFxubmV0L2NvcmUvZGV2Lmg6NDA0OmludCBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9jb3JlL2Rldi5oLTQwNS1cXHRcXHRcXHQgICAgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9jb3JlL2Rldl9pb2N0bC5jPTI4Mj1zdGF0aWMgaW50IGRldl9nZXRfaHd0c3RhbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIpXFxuLS1cXG5uZXQvY29yZS9kZXZfaW9jdGwuYy0zMTUtLyoqXFxubmV0L2NvcmUvZGV2X2lvY3RsLmM6MzE2OiAqIGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKCkgLSBDaGFuZ2UgaGFyZHdhcmUgdGltZXN0YW1waW5nIG9mIE5JQ1xcbm5ldC9jb3JlL2Rldl9pb2N0bC5jLTMxNy0gKlxcdG9yIG9mIGF0dGFjaGVkIHBoeWxpYiBQSFlcXG4tLVxcbm5ldC9jb3JlL2Rldl9pb2N0bC5jLTMyNy0gKi9cXG5uZXQvY29yZS9kZXZfaW9jdGwuYzozMjg6aW50IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2NvcmUvZGV2X2lvY3RsLmMtMzI5LVxcdFxcdFxcdCAgICBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY2ZnLFxcbi0tXFxubmV0L2NvcmUvZGV2X2lvY3RsLmM9MzkxPXN0YXRpYyBpbnQgZGV2X3NldF9od3RzdGFtcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKmlmcilcXG4tLVxcbm5ldC9jb3JlL2Rldl9pb2N0bC5jLTQyMi1cXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcXG5uZXQvY29yZS9kZXZfaW9jdGwuYzo0MjM6XFx0ZXJyID0gZGV2X3NldF9od3RzdGFtcF9waHlsaWIoZGV2LCBcXHUwMDI2a2VybmVsX2NmZywgXFx1MDAyNmV4dGFjayk7XFxubmV0L2NvcmUvZGV2X2lvY3RsLmMtNDI0LVxcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XFxuLS1cXG5uZXQvY29yZS9kZXZfaW9jdGwuYz00NjE9aW50IGdlbmVyaWNfaHd0c3RhbXBfc2V0X2xvd2VyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9kZXZfaW9jdGwuYy00NzQtXFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XFxubmV0L2NvcmUvZGV2X2lvY3RsLmM6NDc1OlxcdGVyciA9IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKGRldiwga2VybmVsX2NmZywgZXh0YWNrKTtcXG5uZXQvY29yZS9kZXZfaW9jdGwuYy00NzYtXFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM9MzAzPXN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQxNi1cXHRcXHQgKi9cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjQxNzpcXHRcXHRyZXQgPSBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihkZXYsIFxcdTAwMjZ6ZXJvX2NvbmZpZywgaW5mby1cXHUwMDNlZXh0YWNrKTtcXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQxOC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDI4LVxcdGlmIChjb25maWdfbW9kKSB7XFxubmV0L2V0aHRvb2wvdHNjb25maWcuYzo0Mjk6XFx0XFx0cmV0ID0gZGV2X3NldF9od3RzdGFtcF9waHlsaWIoZGV2LCBcXHUwMDI2aHd0c3RfY29uZmlnLFxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDMwLVxcdFxcdFxcdFxcdFxcdCAgICAgIGluZm8tXFx1MDAzZWV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA1OjU2Ljg3NTA3MTc3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDY1OTc3NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uXG5cbioqRGl2aW5nIGludG8gdGhlIEhhcmR3YXJlIFRpbWVzdGFtcGluZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIGhvdyBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgZ2V0cyBjb25maWd1cmVkLiBTcGVjaWZpY2FsbHksIGBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYmAgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmU7IGl0J3MgdGhlIG9uZSB0aGF0IHVsdGltYXRlbHkgc2V0cyB0aGUgaGFyZHdhcmUgdGltZXN0YW1waW5nIGNvbmZpZ3VyYXRpb24uIEkgY2FuIHNlZSB0aGF0IGl0IGVuZHMgdXAgY2FsbGluZyBzb21ldGhpbmcgbGlrZSBgbmRvX2h3dHN0YW1wX3NldGAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uLCB3aGljaCBJIHdvdWxkIGV4cGVjdC5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gbG9va2luZyBhIGxpdHRsZSBjbG9zZXIsIGBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGVgIGNvbWVzIGludG8gcGxheS4gQW5kIGl0J3MgZG9pbmcgYSBjaGVjaywgYW5kIEkgc2VlIGAhb3BzLVx1MDAzZW5kb19od3RzdGFtcF9zZXQgfHwgIW9wcy1cdTAwM2VuZG9faHd0c3RhbXBfZ2V0YC4gQWgsIG9rYXksIHNvIGlmIHRoZSBkZXZpY2UgZHJpdmVyICpkb2Vzbid0KiBpbXBsZW1lbnQgYm90aCB0aGUgYG5kb19od3RzdGFtcF9zZXRgICphbmQqIGBuZG9faHd0c3RhbXBfZ2V0YCBvcGVyYXRpb25zLCB0aGlzIHZhbGlkYXRpb24gZnVuY3Rpb24gcmV0dXJucyBgLUVPUE5PVFNVUFBgIHJlYWxseSBlYXJseS4gVGhhdCBtZWFucyBpZiBlaXRoZXIgb2YgdGhvc2UgYXJlIG5vdCBpbXBsZW1lbnRlZCB0aGVuIGBldGhubF9zZXRfdHNjb25maWdgIHdvbid0IGV2ZW4gYmUgY2FsbGVkIGxhdGVyLlxuXG5IbW0sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgZ28gYmFjayBhbmQgcmUtZXhhbWluZSBgZXRobmxfc2V0X3RzY29uZmlnX3ZhbGlkYXRlYCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IGVhcmx5IGV4aXQgY29uZGl0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTkyMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNjowMS44ODE2NzMzODdaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9ldGh0b29sL3RzY29uZmlnLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjUxLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUxOlxcdHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnX3ZhbGlkYXRlKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXFxuIDI1MjpcXHRcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gMjUzOlxcdHtcXG4gMjU0OlxcdFxcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyAqb3BzID0gcmVxX2Jhc2UtXFx1MDAzZWRldi1cXHUwMDNlbmV0ZGV2X29wcztcXG4gMjU1OlxcdFxcbiAyNTY6XFx0XFx0aWYgKCFvcHMtXFx1MDAzZW5kb19od3RzdGFtcF9zZXQgfHwgIW9wcy1cXHUwMDNlbmRvX2h3dHN0YW1wX2dldClcXG4gMjU3OlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gMjU4OlxcdFxcbiAyNTk6XFx0XFx0cmV0dXJuIDE7XFxuIDI2MDpcXHR9XFxuIDI2MTpcXHRcXG4gMjYyOlxcdHN0YXRpYyBzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKlxcbiAyNjM6XFx0dHNjb25maWdfc2V0X2h3cHJvdl9mcm9tX2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gMjY0OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuIDI2NTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXJfZGVzYyAqaHdwcm92X2Rlc2MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA2OjAxLjg4MTgwNTIxN1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk2OTM4MTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgUmVxdWlyZW1lbnRzKipcblxuT2theSwgc28gdGhlIGNvZGUgY2xlYXJseSBzdGF0ZXMgaXQnbGwgcmV0dXJuIGFuIGAtRU9QTk9UU1VQUGAgZXJyb3IgaWYgdGhlIGBuZG9faHd0c3RhbXBfc2V0YCBvciBgbmRvX2h3dHN0YW1wX2dldGAgZnVuY3Rpb24gcG9pbnRlcnMgYXJlbid0IHByZXNlbnQgaW4gdGhlIG5ldHdvcmsgZGV2aWNlJ3MgTkRJUyBpbnRlcmZhY2UuIFRoYXQncyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBUaGUgaW1wbGljYXRpb24gaXMgb2J2aW91czogd2UgYWJzb2x1dGVseSBuZWVkIGEgZGV2aWNlIHRoYXQgYWN0dWFsbHkgKmltcGxlbWVudHMqIHRob3NlIGZ1bmN0aW9ucy5cblxuTm93LCB3aGljaCBkZXZpY2VzIGFyZSBsaWtlbHkgY2FuZGlkYXRlcyBmb3IgdGhpcz8gVGhpbmtpbmcgaXQgdGhyb3VnaCwgYE1BQ1ZMQU5gIGFuZCBgQk9ORElOR2AgaW1tZWRpYXRlbHkgc3ByaW5nIHRvIG1pbmQgYXMgcG9zc2liaWxpdGllcy4gVGhleSdyZSB2aXJ0dWFsIGludGVyZmFjZXMsIGFuZCB0aGV5IG9mdGVuIGludGVyYWN0IHdpdGggaGFyZHdhcmUgaW4gaW50ZXJlc3Rpbmcgd2F5cy4gVGhleSdyZSB3b3J0aCBpbnZlc3RpZ2F0aW5nIGZ1cnRoZXIuXG5cbkJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgY29kZSBmb3IgdGhvc2Ugc3BlY2lmaWMgZHJpdmVycywgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgTUFDVkxBTiBoYXMgYW55IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGhvdyBpdCBoYW5kbGVzIGhhcmR3YXJlIHRpbWVzdGFtcGluZy4gQmV0dGVyIHRvIGhhdmUgYWxsIHRoZSBjb250ZXh0IHVwZnJvbnQsIGJlZm9yZSBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHRoZSBkZXRhaWxzLiBUaGlzIGluaXRpYWwgc3dlZXAgc2hvdWxkIGVuc3VyZSBJIGRvbid0IG92ZXJsb29rIGFueSBjcnVjaWFsIHN0ZXBzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDY0MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDY6MDYuMDc4NzQ3NDU5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzkwMDQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9MTYzPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTY1OmNvbmZpZyBNQUNWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjYtXFx0dHJpc3RhdGUgXFxcIk1BQy1WTEFOIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA2OjA2LjE1MjY1ODIxMVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM4NDIzMDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQuIExldCdzIHNlZS4uLiB0aGUgYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUgaXMgdXN1YWxseSB0aGUgcGxhY2UgdG8gc3RhcnQuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFyb3VuZCBsaW5lIDE2NSBvciBzby4gVGhhdCBzaG91bGQgYmUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHNlZSB3aGF0J3MgYmVpbmcgZGVmaW5lZCBhbmQgaG93IHRoZSBvcHRpb25zIGFyZSBuZXN0ZWQuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgY29yZSBkcml2ZXIgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0aGVyZSDigJMgdGhpbmdzIGxpa2UgaW50ZXJmYWNlIHR5cGVzLCBwcm90b2NvbCBzdXBwb3J0LCBhbmQgYW55IGhhcmR3YXJlLXNwZWNpZmljIGZlYXR1cmVzIHRoYXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEZyb20gdGhlcmUsIEknbGwgYmUgYWJsZSB0byB0cmFjZSBkZXBlbmRlbmNpZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB2YXJpb3VzIHNldHRpbmdzIG9uIHRoZSBidWlsZC4gSXQncyBhIGJpdCBsaWtlIGFyY2hhZW9sb2d5LCB0cmFjaW5nIHRoZSBsYXllcnMgb2YgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbiBjaG9pY2VzIGVtYmVkZGVkIGluIHRoZSBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMDUxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDY6MDkuODkxMDg0MjY5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2MDpcXHRcXHQgICdpZmIxJyBldGMuXFxuIDE2MTpcXHRcXHQgIExvb2sgYXQgdGhlIGlwcm91dGUyIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IGZvciB1c2FnZSBldGNcXG4gMTYyOlxcdFxcbiAxNjM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcXFwiXFxuIDE2NDpcXHRcXG4gMTY1OlxcdGNvbmZpZyBNQUNWTEFOXFxuIDE2NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gc3VwcG9ydFxcXCJcXG4gMTY3OlxcdFxcdGhlbHBcXG4gMTY4OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBtYXAgcGFja2V0cyB0b1xcbiAxNjk6XFx0XFx0ICBvciBmcm9tIHNwZWNpZmljIE1BQyBhZGRyZXNzZXMgdG8gYSBwYXJ0aWN1bGFyIGludGVyZmFjZS5cXG4gMTcwOlxcdFxcbiAxNzE6XFx0XFx0ICBNYWN2bGFuIGRldmljZXMgY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBcXFwiaXBcXFwiIGNvbW1hbmQgZnJvbSB0aGVcXG4gMTcyOlxcdFxcdCAgaXByb3V0ZTIgcGFja2FnZSBzdGFydGluZyB3aXRoIHRoZSBpcHJvdXRlMi0yLjYuMjMgcmVsZWFzZTpcXG4gMTczOlxcdFxcbiAxNzQ6XFx0XFx0ICBcXFwiaXAgbGluayBhZGQgbGluayBcXHUwMDNjcmVhbCBkZXZcXHUwMDNlIFsgYWRkcmVzcyBNQUMgXSBbIE5BTUUgXSB0eXBlIG1hY3ZsYW5cXFwiXFxuIDE3NTpcXHRcXG4gMTc2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAxNzc6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBtYWN2bGFuLlxcbiAxNzg6XFx0XFxuIDE3OTpcXHRjb25maWcgTUFDVlRBUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNjowOS44OTExOTgwMjlaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNTE5MTMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogTmV0d29yayBWaXJ0dWFsaXphdGlvbiBPcHRpb25zKipcblxuUmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTm8gZXh0ZXJuYWwgc29mdHdhcmUgZGVwZW5kZW5jaWVzIOKAkyB0aGF0J3MgYSBrZXkgYWR2YW50YWdlLiBXaGVuIEkgc2VlIHRoYXQsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYE1BQ1ZMQU5gLiBJdCdzIGEgY2xlYW4sIGVmZmljaWVudCB3YXkgdG8gZ2V0IG11bHRpcGxlIG5ldHdvcmsgaW50ZXJmYWNlcyBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUgcGh5c2ljYWwgTklDIG9uIGEgaG9zdC4gUHJldHR5IG11Y2ggdGhlIGZpcnN0IHRoaW5nIEkgd291bGQgY29uc2lkZXIgZm9yIHRoaXMgc29ydCBvZiB0YXNrLlxuXG5CdXQgaG9sZCBvbiwgYmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGUgYE1BQ1ZMQU5gIHBhdGgsIEkgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzLiBXaGF0IGFib3V0IHJlZHVuZGFuY3kgYW5kIHBlcmZvcm1hbmNlIGVuaGFuY2VtZW50IGF0IHRoZSBwaHlzaWNhbCBsYXllcj8gQm9uZGluZyBpcyAqYWx3YXlzKiB3b3J0aCBldmFsdWF0aW5nLCBlc3BlY2lhbGx5IGluIGFuIGVudmlyb25tZW50IHdoZXJlIG5ldHdvcmsgdXB0aW1lIGFuZCBiYW5kd2lkdGggYXJlIGNyaXRpY2FsLiBJIG5lZWQgdG8gd2VpZ2ggdGhlIGJlbmVmaXRzIG9mIGBNQUNWTEFOYCdzIHNpbXBsaWNpdHkgYWdhaW5zdCB0aGUgcG90ZW50aWFsIHJlc2lsaWVuY2UgYW5kIGFnZ3JlZ2F0aW9uIGNhcGFiaWxpdGllcyB0aGF0IGEgYm9uZGluZyBzZXR1cCBjb3VsZCBvZmZlci4gV2hpY2ggaXMgdGhlIGJlc3QgZml0LCBoZXJlPyBJcyBpdCBhIHNpbmdsZSBpbnRlcmZhY2UsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXg/IEkgbmVlZCB0byBhc2sgYSBmZXcgbW9yZSBxdWVzdGlvbnMgdG8gZGVjaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU5MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDY6MTMuODA2MzkxNTU3WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBZb3UgY2FuIHNheSBOIGhlcmUgaWYgeW91IGRvIG5vdCBpbnRlbmQgdG8gdXNlIGFueSBvZiB0aGVcXG4gIDM3OlxcdFxcdCAgbmV0d29ya2luZyBjb3JlIGRyaXZlcnMgKGkuZS4gVkxBTiwgYnJpZGdpbmcsIGJvbmRpbmcsIGV0Yy4pXFxuICAzODpcXHRcXG4gIDM5OlxcdGlmIE5FVF9DT1JFXFxuICA0MDpcXHRcXG4gIDQxOlxcdGNvbmZpZyBCT05ESU5HXFxuICA0MjpcXHRcXHR0cmlzdGF0ZSBcXFwiQm9uZGluZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG4gIDQzOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgNDQ6XFx0XFx0ZGVwZW5kcyBvbiBUTFMgfHwgVExTX0RFVklDRT1uXFxuICA0NTpcXHRcXHRoZWxwXFxuICA0NjpcXHRcXHQgIFNheSAnWScgb3IgJ00nIGlmIHlvdSB3aXNoIHRvIGJlIGFibGUgdG8gJ2JvbmQnIG11bHRpcGxlIEV0aGVybmV0XFxuICA0NzpcXHRcXHQgIENoYW5uZWxzIHRvZ2V0aGVyLiBUaGlzIGlzIGNhbGxlZCAnRXRoZXJjaGFubmVsJyBieSBDaXNjbyxcXG4gIDQ4OlxcdFxcdCAgJ1RydW5raW5nJyBieSBTdW4sIDgwMi4zYWQgYnkgdGhlIElFRUUsIGFuZCAnQm9uZGluZycgaW4gTGludXguXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgVGhlIGRyaXZlciBzdXBwb3J0cyBtdWx0aXBsZSBib25kaW5nIG1vZGVzIHRvIGFsbG93IGZvciBib3RoIGhpZ2hcXG4gIDUxOlxcdFxcdCAgcGVyZm9ybWFuY2UgYW5kIGhpZ2ggYXZhaWxhYmlsaXR5IG9wZXJhdGlvbi5cXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0ICBSZWZlciB0byBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy5yc3RcXHUwMDNlIGZvciBtb3JlXFxuICA1NDpcXHRcXHQgIGluZm9ybWF0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNjoxMy44MDY0ODYwNzdaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE5Mzk1MDQ0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogQSBSZWZpbmVkIEFwcHJvYWNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZvciBhIGZ1enppbmcgcGxhbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgZm9jdXNlZCBvbiBpZGVudGlmeWluZyB0aGUga2V5IG1vZGlmaWNhdGlvbnMgYW5kIGhvdyB0byByZWFjaCB0aGVtLiBGaXJzdCwgYEJPTkRJTkdgIGlzIHNhZmUgYmVjYXVzZSBpdCdzIGJ1aWx0IG9uIGBJTkVUYCwgc28gYE1BQ1ZMQU5gIGFuZCBgQk9ORElOR2AgYXJlIHZhbGlkIGNvbmZpZ3VyYXRpb25zIHRvIGFkZCB0byBvdXIgdGFyZ2V0cy4gIEFkZGluZyBgRVRIVE9PTF9ORVRMSU5LYCBpcyBhbHNvIGEgbm8tYnJhaW5lciBzaW5jZSBpdCdzIGRlZmF1bHQgJ3knIGFuZCB3ZSdsbCBuZWVkIGl0LiBJJ2xsIG1ha2UgYSBub3RlIG9mIHRoaXMuXG5cbk5vdywgbGV0J3MgcGlucG9pbnQgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdC4gIFRoZSBjb2RlIGhpZ2hsaWdodHMgYGV0aG5sX3NldF90c2NvbmZpZ2AgYXMgdGhlIGNvcmUgZnVuY3Rpb24sIGFsb25nIHdpdGggYSByZWxhdGVkIHZhbGlkYXRpb24gZnVuY3Rpb24sIGBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGVgLiBJIGNvbmZpcm1lZCB0aGF0IGBldGhubF9zZXRfdHNjb25maWdgICppcyogc3RhdGljLCBidXQgaXRzIGFkZHJlc3MgaXMgdGFrZW4gYmVjYXVzZSBpdCdzIGFuIGVudHJ5IHBvaW50IGZvciBuZXRsaW5rLiBUaGUgcHJvbXB0IHN0cmVzc2VzIHByZWZlcnJpbmcgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYnV0IHRoaXMgb25lIGlzIHRoZSByaWdodCBjaG9pY2UsIHNpbmNlIGl0J3Mgbm90IGFjdHVhbGx5IGlubGluZWQuXG5cblRoZSBjb2RlJ3Mgc3RydWN0dXJlIGFsc28gcmV2ZWFscyB0aGF0IGBldGhubF9zZXRfdHNjb25maWdgIGlzIGNhbGxlZCB2aWEgYSBmdW5jdGlvbiBwb2ludGVyIGZyb20gYGV0aG5sX2RlZmF1bHRfc2V0X2RvaXRgLCBtZWFuaW5nIGl0J3MgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBObyBvdGhlciBmdW5jdGlvbnMgc2VlbSB0byBiZSBhZmZlY3RlZCwgc28gdGhhdCBuYXJyb3dzIHRoZSBzY29wZS5cblxuUmV2aWV3aW5nIHRoZSBwYXRjaCBpdHNlbGYgaXMgdGhlIG1vc3QgY3J1Y2lhbCBwYXJ0LiBUaGUgY2hhbmdlIGluIHRoZSB2YWxpZGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVwbGFjaW5nIGBmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSlgIHdpdGggYGh3ZWlnaHQzMihyZXFfdHhfdHlwZSkgIT0gMWAsIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBzaGlmdC4gIEl0IGFkZHJlc3NlcyBhIGJ1ZywgcHJldmVudGluZyBgcmVxX3R4X3R5cGVgIGZyb20gYmVpbmcgemVybywgd2hpY2gsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBjb3VsZCBoYXZlIGNhdXNlZCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gIFRoaXMgaXMgYSBjcml0aWNhbCBmbGF3IGFuZCwgdGhlcmVmb3JlLCBhIHByaW1lIHRhcmdldC4gU2luY2UgdGhlIGNvZGUgaXMgcmVhY2hlZCB2aWEgYEVUSFRPT0xfTVNHX1RTQ09ORklHX1NFVGAgb3ZlciBuZXRsaW5rLCBpdCdzIGVhc2lseSByZWFjaGFibGUsIG1ha2luZyBpdCBhIHZlcnkgZ29vZCBmdXp6IHRhcmdldC5cblxuSW4gc3VtbWFyeSwgdGhlIHBhdGNoIHByZXNlbnRzIGEgY2xlYXIgdGFyZ2V0LlxuXG5IZXJlJ3MgbXkgZGlzdGlsbGVkIGZ1enppbmcgc3RyYXRlZ3k6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlXG4qICAgKipGb2N1c1N5bWJvbHM6KiogXFxbXCJldGhubFxcX3NldFxcX3RzY29uZmlnXCJdXG4qICAgKipFbmFibGVDb25maWdzOioqIFxcW1wiRVRIVE9PTFxcX05FVExJTktcIiwgXCJNQUNWTEFOXCIsIFwiQk9ORElOR1wiXVxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY3JpdGljYWwgYnVnIGZpeCBieSBtb2RpZnlpbmcgdGhlIHZhbGlkYXRpb24gbG9naWMgd2l0aGluIHRoZSBldGh0b29sIG5ldGxpbmsgc2V0IG9wZXJhdGlvbiBmb3IgVFNDT05GSUcgKGV0aG5sXFxfc2V0XFxfdHNjb25maWcpLiBJdCBwcmV2ZW50cyBhIGJ1ZyB3aGVyZSBgcmVxX3R4X3R5cGUgPT0gMGAgd2FzIGFsbG93ZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gVGhlIGZ1bmN0aW9uIGlzIGVhc2lseSByZWFjaGFibGUgdmlhIG5ldGxpbmsuIFRvIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlLCBhIG5ldCBkZXZpY2Ugc3VwcG9ydGluZyBgbmRvX2h3dHN0YW1wX3NldGAgaXMgcmVxdWlyZWQsIG1ha2luZyBgTUFDVkxBTmAgYW5kIGBCT05ESU5HYCBleGNlbGxlbnQgY2hvaWNlcyB0byBlbmFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTcwLCJPdXRwdXRUb2tlbnMiOjE2MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA2OjI1Ljc0NTk5NTA2N1oiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzYxMTI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVRIVE9PTF9ORVRMSU5LXCIsXG4gICAgXCJNQUNWTEFOXCIsXG4gICAgXCJCT05ESU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXRobmxfc2V0X3RzY29uZmlnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIGV0aHRvb2wgbmV0bGluayBzZXQgb3BlcmF0aW9uIGZvciBUU0NPTkZJRyAoZXRobmxfc2V0X3RzY29uZmlnKS4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3IgZm9yIHJlcV90eF90eXBlID09IDAgYW5kIHJlcV9yeF9maWx0ZXIgPT0gMCwgd2hpY2ggd2VyZSBwcmV2aW91c2x5IGFsbG93ZWQgYW5kIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluay4gVG8gcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGUsIGEgbmV0IGRldmljZSBzdXBwb3J0aW5nIG5kb19od3RzdGFtcF9zZXQgaXMgcmVxdWlyZWQsIHN1Y2ggYXMgTUFDVkxBTiBvciBCT05ESU5HLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVUSFRPT0xfTkVUTElOS1wiLFxuICAgIFwiTUFDVkxBTlwiLFxuICAgIFwiQk9ORElOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV0aG5sX3NldF90c2NvbmZpZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBldGh0b29sIG5ldGxpbmsgc2V0IG9wZXJhdGlvbiBmb3IgVFNDT05GSUcgKGV0aG5sX3NldF90c2NvbmZpZykuIEl0IGNoYW5nZXMgdGhlIGJlaGF2aW9yIGZvciByZXFfdHhfdHlwZSA9PSAwIGFuZCByZXFfcnhfZmlsdGVyID09IDAsIHdoaWNoIHdlcmUgcHJldmlvdXNseSBhbGxvd2VkIGFuZCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsuIFRvIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlLCBhIG5ldCBkZXZpY2Ugc3VwcG9ydGluZyBuZG9faHd0c3RhbXBfc2V0IGlzIHJlcXVpcmVkLCBzdWNoIGFzIE1BQ1ZMQU4gb3IgQk9ORElORy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDY6MjUuODkzNjE1NjgxWiIsIlNlcSI6NTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMxNTIyNzk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA2OjI1Ljg5NDQ1ODM4MVoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMjMxNDM4MTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gbG9naWMgZm9yIGByZXFfdHhfdHlwZWAgYW5kIGByZXFfcnhfZmlsdGVyYCBpbiBgZXRobmxfc2V0X3RzY29uZmlnYCB0byBlbnN1cmUgZXhhY3RseSBvbmUgYml0IGlzIHNldCB1c2luZyBgaHdlaWdodDMyKHgpICE9IDFgIGluc3RlYWQgb2YgYGZmcyh4KSAhPSBmbHMoeClgLiBJdCBhbHNvIGFkZHMgbmV0bGluayBleHRlbmRlZCBhY2tub3dsZWRnbWVudCBlcnJvciByZXBvcnRpbmcgKGBOTF9TRVRfQkFEX0FUVFJgKSBmb3IgdGhlc2UgdmFsaWRhdGlvbiBmYWlsdXJlcy5cXG5cXG5UaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyB2YWxpZGF0aW9uIGFuZCBlcnJvciByZXBvcnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG8gbm90IGNvcHkgYW55IG5ldyBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIGxvZ2ljIGJ1Z3MsIHdoaWNoIGFyZSBub3QgdGhlIHRhcmdldCBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI2OTdjMDIwNGU5ZWM5M2Y0ZTFhMThhMzI4NmQ0OThkMjUxMTc3ZjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxOTowMjo1OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL3RzY29uZmlnLmMgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jXG5pbmRleCAyNGI2NDg2MjAxMWYwLi42YmUzYWE1ZDRiYzFlIDEwMDY0NFxuLS0tIGEvbmV0L2V0aHRvb2wvdHNjb25maWcuY1xuKysrIGIvbmV0L2V0aHRvb2wvdHNjb25maWcuY1xuQEAgLTM1OSw4ICszNTksMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiBcbi1cdFx0LyogU2VsZWN0IG9ubHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXG4tXHRcdGlmIChmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSkpIHtcbitcdFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXG4rXHRcdGlmIChod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDEpIHtcbitcdFx0XHROTF9TRVRfQkFEX0FUVFIoaW5mby1cdTAwM2VleHRhY2ssXG4rXHRcdFx0XHRcdHRiW0VUSFRPT0xfQV9UU0NPTkZJR19UWF9UWVBFU10pO1xuIFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gXHRcdH1cbkBAIC0zODAsOCArMzgyLDEwIEBAIHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gXG4tXHRcdC8qIFNlbGVjdCBvbmx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4tXHRcdGlmIChmZnMocmVxX3J4X2ZpbHRlcikgIT0gZmxzKHJlcV9yeF9maWx0ZXIpKSB7XG4rXHRcdC8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4rXHRcdGlmIChod2VpZ2h0MzIocmVxX3J4X2ZpbHRlcikgIT0gMSkge1xuK1x0XHRcdE5MX1NFVF9CQURfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbitcdFx0XHRcdFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNjoyNS44OTQ0NjAyMzFaIiwiU2VxIjo1NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzMTQzNTk2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQ29uc2lkZXJhdGlvbnMgZm9yIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW4gYG5ldC9ldGh0b29sL3RzY29uZmlnLmNgIGFuZCBpcyB0d2Vha2luZyB0aGUgbG9naWMgZm9yIGNoZWNraW5nIGByZXFfdHhfdHlwZWAgYW5kIGByZXFfcnhfZmlsdGVyYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBjb25zaWRlciBtZW1vcnkgc2FmZXR5LCBvZiBjb3Vyc2UuIExldCdzIHNlZS4uLiBpdCdzIGNoYW5naW5nIHRoZSBjb25kaXRpb24gZnJvbSBgZmZzKHJlcV90eF90eXBlKSAhPSBmbHMocmVxX3R4X3R5cGUpYCB0byBgaHdlaWdodDMyKHJlcV90eF90eXBlKSAhPSAxYC4gUmlnaHQsIHNvIHRoZSBvbGQgY29kZSAqYWxsb3dlZCogYHJlcV90eF90eXBlYCB0byBiZSB6ZXJvLCB3aGljaCBpcyB3ZWlyZCwgYW5kIG5vdyB0aGUgbmV3IGNvZGUgY29ycmVjdGx5IGRpc2FsbG93cyBpdC4gVGhlIGNvbW1lbnQgY29uZmlybXMgdGhpcyBpcyBhYm91dCBzZWxlY3RpbmcgKmV4YWN0bHkqIG9uZSBUWCB0eXBlIChhIGxvZ2ljIGJ1ZyBmaXghKS5cblxuTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaWYgdGhpcyBpbnRyb2R1Y2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gQnV0LCBsb29raW5nIGNsb3NlciwgaXQgKmp1c3QqIG1vZGlmaWVzIGEgY29uZGl0aW9uYWwgY2hlY2sgYW5kIGFkZHMgYE5MX1NFVF9CQURfQVRUUmAgY2FsbHMuICBgTkxfU0VUX0JBRF9BVFRSYCwgb2theSwgdGhhdCdzIGp1c3Qgc2V0dGluZyBhIGZpZWxkIChgZXh0YWNrLVx1MDAzZWJhZF9hdHRyYCkgaW4gYW4gZXhpc3RpbmcgYHN0cnVjdCBuZXRsaW5rX2V4dF9hY2tgLCB3aGljaCBpcyBzdGFuZGFyZCBuZXRsaW5rIGVycm9yIHJlcG9ydGluZy4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCwgbm8gdXNlci1zcGFjZSBkYXRhIGNvcGllcyBiZXlvbmQgdGhlIGVycm9yIHJlcG9ydGluZy4gIFRoZXJlZm9yZSwgaXQncyBub3QgZXhwb3NpbmcgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBgZXh0YWNrYCBpcyBhIHBvaW50ZXIgdG8gdGhlIGV4aXN0aW5nIGBzdHJ1Y3QgbmV0bGlua19leHRfYWNrYCBhbmQgdGhlIGBOTF9TRVRfQkFEX0FUVFJgIG1hY3JvIGp1c3Qgc2V0cyBhIGZpZWxkLiBHb29kLCBubyBLTVNBTiBjb25jZXJucyBiYXNlZCBvbiBtZW1vcnkgaW5pdGlhbGl6YXRpb24gaXNzdWVzLlxuXG5TbywgaW4gZXNzZW5jZSwgdGhpcyBwYXRjaCBzdHJlbmd0aGVucyB0aGUgdmFsaWRhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgVFgvUlggdHlwZXMsIGVuc3VyaW5nIGV4YWN0bHkgb25lIG9wdGlvbiBpcyBjaG9zZW4sIGFuZCBhZGRzIGJldHRlciBlcnJvciByZXBvcnRpbmcuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgY29udHJvbCBmbG93LCB3aXRoIG5vIG1lbW9yeSBhbGxvY2F0aW9uIG9yIGRhdGEgZXhwb3N1cmUuICBUaGUgcGF0Y2ggKmZpeGVzKiBhIGxvZ2ljIGJ1Zy4gIFNpbmNlIGl04oCZcyBhIGxvZ2ljIGJ1ZyBmaXggYW5kIGRvZXNuJ3QgaW50cm9kdWNlIG1lbW9yeSBpc3N1ZXMsIEtNU0FOIGlzIG5vdCBuZWNlc3NhcnkgaGVyZS4gSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgd2UgZG9u4oCZdCBuZWVkIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBmb3IgdGhpcyBjaGFuZ2UuIEknbGwgZG9jdW1lbnQgbXkgcmVhc29uaW5nIGNsZWFybHkgZm9yIHJldmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0NiwiT3V0cHV0VG9rZW5zIjoxODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNjozOC4yMDg4MjMwNjFaIiwiU2VxIjo1NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgcmVxX3R4X3R5cGVgIGFuZCBgcmVxX3J4X2ZpbHRlcmAgaW4gYGV0aG5sX3NldF90c2NvbmZpZ2AgdG8gZW5zdXJlIGV4YWN0bHkgb25lIGJpdCBpcyBzZXQgdXNpbmcgYGh3ZWlnaHQzMih4KSAhPSAxYCBpbnN0ZWFkIG9mIGBmZnMoeCkgIT0gZmxzKHgpYC4gSXQgYWxzbyBhZGRzIG5ldGxpbmsgZXh0ZW5kZWQgYWNrbm93bGVkZ21lbnQgZXJyb3IgcmVwb3J0aW5nIChgTkxfU0VUX0JBRF9BVFRSYCkgZm9yIHRoZXNlIHZhbGlkYXRpb24gZmFpbHVyZXMuXFxuXFxuVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgdmFsaWRhdGlvbiBhbmQgZXJyb3IgcmVwb3J0aW5nLiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvIG5vdCBjb3B5IGFueSBuZXcgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSBsb2dpYyBidWdzLCB3aGljaCBhcmUgbm90IHRoZSB0YXJnZXQgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBmb3IgYHJlcV90eF90eXBlYCBhbmQgYHJlcV9yeF9maWx0ZXJgIGluIGBldGhubF9zZXRfdHNjb25maWdgIHRvIGVuc3VyZSBleGFjdGx5IG9uZSBiaXQgaXMgc2V0IHVzaW5nIGBod2VpZ2h0MzIoeCkgIT0gMWAgaW5zdGVhZCBvZiBgZmZzKHgpICE9IGZscyh4KWAuIEl0IGFsc28gYWRkcyBuZXRsaW5rIGV4dGVuZGVkIGFja25vd2xlZGdtZW50IGVycm9yIHJlcG9ydGluZyAoYE5MX1NFVF9CQURfQVRUUmApIGZvciB0aGVzZSB2YWxpZGF0aW9uIGZhaWx1cmVzLlxcblxcblRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IHZhbGlkYXRpb24gYW5kIGVycm9yIHJlcG9ydGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgY29weSBhbnkgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgbG9naWMgYnVncywgd2hpY2ggYXJlIG5vdCB0aGUgdGFyZ2V0IG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhgjgd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 18:38:23 +0000 UTC FinishedAt: 2026-08-12 19:06:40 +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": "ac155a26750a595703e7dadff84735456d75a479", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ETHTOOL_NETLINK", "MACVLAN", "BONDING" ], "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": "ac155a26750a595703e7dadff84735456d75a479", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ETHTOOL_NETLINK", "MACVLAN", "BONDING" ], "series_id": "33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ethnl_set_tsconfig" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VUSFRPT0xfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtNQUNWTEFOJiMzNDssCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldGhubF9zZXRfdHNjb25maWcmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBmb3IgYHJlcV90eF90eXBlYCBhbmQgYHJlcV9yeF9maWx0ZXJgIGluIGBldGhubF9zZXRfdHNjb25maWdgIHRvIGVuc3VyZSBleGFjdGx5IG9uZSBiaXQgaXMgc2V0IHVzaW5nIGBod2VpZ2h0MzIoeCkgIT0gMWAgaW5zdGVhZCBvZiBgZmZzKHgpICE9IGZscyh4KWAuIEl0IGFsc28gYWRkcyBuZXRsaW5rIGV4dGVuZGVkIGFja25vd2xlZGdtZW50IGVycm9yIHJlcG9ydGluZyAoYE5MX1NFVF9CQURfQVRUUmApIGZvciB0aGVzZSB2YWxpZGF0aW9uIGZhaWx1cmVzLlxuXG5UaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyB2YWxpZGF0aW9uIGFuZCBlcnJvciByZXBvcnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG8gbm90IGNvcHkgYW55IG5ldyBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIGxvZ2ljIGJ1Z3MsIHdoaWNoIGFyZSBub3QgdGhlIHRhcmdldCBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIHNldCBvcGVyYXRpb24gZm9yIFRTQ09ORklHIChldGhubF9zZXRfdHNjb25maWcpLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciBmb3IgcmVxX3R4X3R5cGUgPT0gMCBhbmQgcmVxX3J4X2ZpbHRlciA9PSAwLCB3aGljaCB3ZXJlIHByZXZpb3VzbHkgYWxsb3dlZCBhbmQgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLiBUbyByZWFjaCB0aGUgbW9kaWZpZWQgY29kZSwgYSBuZXQgZGV2aWNlIHN1cHBvcnRpbmcgbmRvX2h3dHN0YW1wX3NldCBpcyByZXF1aXJlZCwgc3VjaCBhcyBNQUNWTEFOIG9yIEJPTkRJTkcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNjk3YzAyMDRlOWVjOTNmNGUxYTE4YTMyODZkNDk4ZDI1MTE3N2YzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTk6MDI6NTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYyBiL25ldC9ldGh0b29sL3RzY29uZmlnLmNcbmluZGV4IDI0YjY0ODYyMDExZjAuLjZiZTNhYTVkNGJjMWUgMTAwNjQ0XG4tLS0gYS9uZXQvZXRodG9vbC90c2NvbmZpZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jXG5AQCAtMzU5LDggJiM0MzszNTksMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiBcbi1cdFx0LyogU2VsZWN0IG9ubHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXG4tXHRcdGlmIChmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSkpIHtcbiYjNDM7XHRcdC8qIFNlbGVjdCBleGFjdGx5IG9uZSB0eCB0eXBlIGF0IGEgdGltZSAqL1xuJiM0MztcdFx0aWYgKGh3ZWlnaHQzMihyZXFfdHhfdHlwZSkgIT0gMSkge1xuJiM0MztcdFx0XHROTF9TRVRfQkFEX0FUVFIoaW5mby1cdTAwM2VleHRhY2ssXG4mIzQzO1x0XHRcdFx0XHR0YltFVEhUT09MX0FfVFNDT05GSUdfVFhfVFlQRVNdKTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIFx0XHR9XG5AQCAtMzgwLDggJiM0MzszODIsMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiBcbi1cdFx0LyogU2VsZWN0IG9ubHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi9cbi1cdFx0aWYgKGZmcyhyZXFfcnhfZmlsdGVyKSAhPSBmbHMocmVxX3J4X2ZpbHRlcikpIHtcbiYjNDM7XHRcdC8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4mIzQzO1x0XHRpZiAoaHdlaWdodDMyKHJlcV9yeF9maWx0ZXIpICE9IDEpIHtcbiYjNDM7XHRcdFx0TkxfU0VUX0JBRF9BVFRSKGluZm8tXHUwMDNlZXh0YWNrLFxuJiM0MztcdFx0XHRcdFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VUSFRPT0xfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtNQUNWTEFOJiMzNDssCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldGhubF9zZXRfdHNjb25maWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIGV0aHRvb2wgbmV0bGluayBzZXQgb3BlcmF0aW9uIGZvciBUU0NPTkZJRyAoZXRobmxfc2V0X3RzY29uZmlnKS4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3IgZm9yIHJlcV90eF90eXBlID09IDAgYW5kIHJlcV9yeF9maWx0ZXIgPT0gMCwgd2hpY2ggd2VyZSBwcmV2aW91c2x5IGFsbG93ZWQgYW5kIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluay4gVG8gcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGUsIGEgbmV0IGRldmljZSBzdXBwb3J0aW5nIG5kb19od3RzdGFtcF9zZXQgaXMgcmVxdWlyZWQsIHN1Y2ggYXMgTUFDVkxBTiBvciBCT05ESU5HLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjY5N2MwMjA0ZTllYzkzZjRlMWExOGEzMjg2ZDQ5OGQyNTExNzdmMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE5OjAyOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYyBiL25ldC9ldGh0b29sL3RzY29uZmlnLmMKaW5kZXggMjRiNjQ4NjIwMTFmMC4uNmJlM2FhNWQ0YmMxZSAxMDA2NDQKLS0tIGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jCkBAIC0zNTksOCAmIzQzOzM1OSwxMCBAQCBzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZyhzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLAogCQlpZiAocmV0ICZsdDsgMCkKIAkJCWdvdG8gZXJyX2ZyZWVfaHdwcm92OwogCi0JCS8qIFNlbGVjdCBvbmx5IG9uZSB0eCB0eXBlIGF0IGEgdGltZSAqLwotCQlpZiAoZmZzKHJlcV90eF90eXBlKSAhPSBmbHMocmVxX3R4X3R5cGUpKSB7CiYjNDM7CQkvKiBTZWxlY3QgZXhhY3RseSBvbmUgdHggdHlwZSBhdCBhIHRpbWUgKi8KJiM0MzsJCWlmIChod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDEpIHsKJiM0MzsJCQlOTF9TRVRfQkFEX0FUVFIoaW5mby0mZ3Q7ZXh0YWNrLAomIzQzOwkJCQkJdGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSk7CiAJCQlyZXQgPSAtRUlOVkFMOwogCQkJZ290byBlcnJfZnJlZV9od3Byb3Y7CiAJCX0KQEAgLTM4MCw4ICYjNDM7MzgyLDEwIEBAIHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsCiAJCWlmIChyZXQgJmx0OyAwKQogCQkJZ290byBlcnJfZnJlZV9od3Byb3Y7CiAKLQkJLyogU2VsZWN0IG9ubHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi8KLQkJaWYgKGZmcyhyZXFfcnhfZmlsdGVyKSAhPSBmbHMocmVxX3J4X2ZpbHRlcikpIHsKJiM0MzsJCS8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovCiYjNDM7CQlpZiAoaHdlaWdodDMyKHJlcV9yeF9maWx0ZXIpICE9IDEpIHsKJiM0MzsJCQlOTF9TRVRfQkFEX0FUVFIoaW5mby0mZ3Q7ZXh0YWNrLAomIzQzOwkJCQkJdGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTsKIAkJCXJldCA9IC1FSU5WQUw7CiAJCQlnb3RvIGVycl9mcmVlX2h3cHJvdjsKIAkJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQ5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRXRodG9vbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9ldGh0b29sL3RzY29uZmlnLmNgLCBhbmQgaXQmIzM5O3MgbWFraW5nIGEgYml0IG9mIGEgY2hhbmdlIHRvIHRoZSBiaXQgbWFuaXB1bGF0aW9uIGxvZ2ljLiBUaGV5JiMzOTt2ZSByZXBsYWNlZCBgZmZzKHJlcV90eF90eXBlKSAhPSBmbHMocmVxX3R4X3R5cGUpYCB3aXRoIGBod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDFgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYnJlYWsgZG93biB3aGF0IHRoYXQgbWVhbnMuCgpOb3csIGBmZnMoeCkgIT0gZmxzKHgpYCDigJMgdGhhdCBlZmZlY3RpdmVseSBjaGVja3MgZm9yIGEgZmV3IGNvbmRpdGlvbnMuICBJdCYjMzk7cyB0cnVlIGlmIGB4YCBoYXMgbW9yZSB0aGFuIG9uZSBiaXQgc2V0IE9SIGlmIGB4YCBpcyB6ZXJvLiBSZW1lbWJlciwgYGZmcygwKWAgYW5kIGBmbHMoMClgIGJvdGggZXZhbHVhdGUgdG8gMCwgd2hpY2ggd291bGQgbWFrZSB0aGUgY29tcGFyaXNvbiBmYWxzZS4gU28sIHplcm8sIG9uZSwgb3IgbW9yZSB0aGFuIG9uZSBiaXQgc2V0IGFyZSBhbGwgaGFuZGxlZCBieSB0aGlzIGV4cHJlc3Npb24uCgpXYWl0IGEgc2Vjb25kLCBpZiBgeCA9PSAwYCwgdGhlIG5ldyBjaGVjaywgYGh3ZWlnaHQzMigwKSAhPSAxYCwgKmlzKiB0cnVlLiBTbywgdGhlIHplcm8gY2FzZSBpcyBub3cgZ29pbmcgdG8gcmV0dXJuIGFuIGVycm9yLCB3aGVyZWFzIGJlZm9yZSBpdCBkaWRuJiMzOTt0LiBUaGlzIGNoYW5nZSBtb2RpZmllcyB0aGUgYmVoYXZpb3IgZm9yIHplcm8gdmFsdWVzLCBzcGVjaWZpY2FsbHkgd2hlcmUgYHJlcV90eF90eXBlID09IDBgIG9yIGByZXFfcnhfZmlsdGVyID09IDBgLiBCZWZvcmUsIHRoZXkgd2VyZW4mIzM5O3QgY2F1Z2h0IGFzIGVycm9ycyBiZWNhdXNlIHRoZSBvbGQgY2hlY2sgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGV5IHdlcmUgemVyby4gVGhlIG5ldyBsb2dpYyBmbGFncyB0aGUgemVybyB2YWx1ZSBhbmQgcmV0dXJucyBgLUVJTlZBTGAuCgpFc3NlbnRpYWxseSwgdGhlIHplcm8gY2FzZSBpcyBiZWluZyBjYXVnaHQgYXMgYSBuZXcgZXJyb3IgY2FzZS4gIEl0IGxvb2tzIGxpa2UgdGhleSBhcmUgYWxzbyBhZGRpbmcgYE5MX1NFVF9CQURfQVRUUmAgZm9yIG5ldGxpbmsgZXh0YWNrLCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgcmVsYXRlZCB0byBzb21lIG5ldGxpbmsgY29tbXVuaWNhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgbmV0L2V0aHRvb2wvdHNjb25maWcuY2AgdG8gc2VlIHRoZSBleGFjdCBjb250ZXh0IGFuZCB1bmRlcnN0YW5kIHdoeSB0aGlzIGNoYW5nZSB3YXMgZGVlbWVkIG5lY2Vzc2FyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldGhubF9zZXRfdHNjb25maWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZXRodG9vbC90c2NvbmZpZy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL3RzY29uZmlnLmM9MTk5PXN0YXRpYyBpbnQgdHNjb25maWdfc2VuZF9yZXBseShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMjUwLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYzoyNTE6c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGUoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMjUyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYz0yNjM9dHNjb25maWdfc2V0X2h3cHJvdl9mcm9tX2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTMwMi1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6MzAzOnN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTMwNC1cdFx0XHQgICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmM9NDUxPWNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcyA9IHtcbi0tXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQ2MS1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6NDYyOlx0LnNldF92YWxpZGF0ZVx0XHQ9IGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZSxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6NDYzOlx0LnNldFx0XHRcdD0gZXRobmxfc2V0X3RzY29uZmlnLFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy00NjQtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzg1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGV0aG5sX3NldF90c2NvbmZpZ2AgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGV0aG5sX3NldF90c2NvbmZpZ2AgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhIG5ldGxpbmsgc2V0IG9wZXJhdGlvbiBmb3IgZXRodG9vbC4gU3RyYWlnaHRmb3J3YXJkLCBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlLiBIbW0sIGludGVyZXN0aW5n4oCmIGl0IHNlZW1zIHRoZSBjaGFuZ2UgYWZmZWN0cyB0aGUgdmFsaWRhdGlvbiBvZiBgcmVxX3R4X3R5cGVgIGFuZCBgcmVxX3J4X2ZpbHRlcmAuIFRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbW9kaWZ5aW5nIHRoZSBiZWhhdmlvciB3aGVuIHZhbHVlcyBhcmUgemVybyBhbmQgYWRkaW5nIGFuIGV4dGFjay4gT2theSwgbXkgZXhwZXJ0IGludHVpdGlvbiBpcyBwaW5naW5nIOKAkyBpcyB0aGlzIHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LCBpdCYjMzk7cyBhIG5ldGxpbmsgaGFuZGxlciByZWxhdGVkIHRvIGV0aHRvb2w7IGZ1enppbmcgaXQgd291bGQgYmUgYSB2YWx1YWJsZSB1c2Ugb2YgbXkgdGltZS4gUmlnaHQsIGZpcnN0IHRoaW5nIGlzIHRvIHRyYWNrIGRvd24gdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGV0aHRvb2wgbmV0bGluay4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFVEhUT09MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NTA3PWNvbmZpZyBGQUlMT1ZFUlxuLS1cbm5ldC9LY29uZmlnLTUxOS1cbm5ldC9LY29uZmlnOjUyMDpjb25maWcgRVRIVE9PTF9ORVRMSU5LXG5uZXQvS2NvbmZpZy01MjEtXHRib29sIFwmIzM0O05ldGxpbmsgaW50ZXJmYWNlIGZvciBldGh0b29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc3OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGV0aHRvb2wgQ29uZmlndXJhdGlvbiB3aXRoIE5ldGxpbmsqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgRVRIVE9PTF9ORVRMSU5LYCBoZXJlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaW52b2x2ZXMgbmV0bGluaywgd2hpY2ggaXMgdGhlIHByZWZlcnJlZCBpbnRlcmZhY2UgZm9yIG1vZGVybiBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgaGFuZGxlZCBpbiB0aGUga2VybmVsLiBNeSBuZXh0IHRob3VnaHQgaXMsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9mIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhhdCBwYXJ0aWN1bGFyIHNvdXJjZSBmaWxlIGlzIGluY2x1ZGVkIG9ubHkgd2hlbiBgRVRIVE9PTF9ORVRMSU5LYCBpcyBkZWZpbmVkLCBvciBpZiB0aGVyZSYjMzk7cyBzb21lIG90aGVyIGxvZ2ljIGF0IHBsYXkuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgd2lsbCBzaG93IG1lIHRoZSByZWxhdGlvbnNoaXBzIGluIHRoZSBjb25maWcgb2YgZXRodG9vbCB0aGF0IGFyZSBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0c2NvbmZpZy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvTWFrZWZpbGU9Nz1ldGh0b29sX25sLXlcdDo9IG5ldGxpbmsubyBiaXRzZXQubyBzdHJzZXQubyBsaW5raW5mby5vIGxpbmttb2Rlcy5vIHJzcy5vIFxcXG4tLVxubmV0L2V0aHRvb2wvTWFrZWZpbGUtMTEtXHRcdCAgIG1vZHVsZS5vIGNtaXNfZndfdXBkYXRlLm8gY21pc19jZGIubyBwc2UtcGQubyBwbGNhLm8gXFxcbm5ldC9ldGh0b29sL01ha2VmaWxlOjEyOlx0XHQgICBwaHkubyB0c2NvbmZpZy5vIG1zZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgRXRodG9vbCBOZXRsaW5rIENvbXBpbGF0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBgZXRodG9vbF9ubC15YCBpcyBidWlsdCBhbmQgaXQgc2VlbXMgaXQmIzM5O3MgcGFydCBvZiB0aGUgd2hvbGUgYGV0aHRvb2xgIHByb2Nlc3MsIHdoaWNoIG1ha2VzIHNlbnNlLiBUaGUga2V5IGlzIGBDT05GSUdfRVRIVE9PTF9ORVRMSU5LYCwgcmlnaHQ/IEl0IGxvb2tzIGxpa2UgYGV0aHRvb2xfbmwteWAgaXMgZ2V0dGluZyBidWlsdCBvbmx5IGlmIHRoYXQgY29uZmlnIG9wdGlvbiBpcyBlbmFibGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJIHJlbWVtYmVyIHRoYXQgdGhlIGBuZXQvZXRodG9vbC9NYWtlZmlsZWAgc2hvdWxkIGhhdmUgdGhlIGJ1aWxkIGxvZ2ljIGZvciBgZXRodG9vbF9ubC15YC4gSSYjMzk7bGwgb3BlbiB0aGF0IHVwIGFuZCBkb3VibGUtY2hlY2sgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIHRoZXJlLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGF0JiMzOTtzIHRoZSBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldGh0b29sX25sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvTWFrZWZpbGU9Mz1vYmoteVx0XHRcdFx0JiM0Mzs9IGlvY3RsLm8gY29tbW9uLm9cbm5ldC9ldGh0b29sL01ha2VmaWxlLTQtXG5uZXQvZXRodG9vbC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19FVEhUT09MX05FVExJTkspXHQmIzQzOz0gZXRodG9vbF9ubC5vXG5uZXQvZXRodG9vbC9NYWtlZmlsZS02LVxubmV0L2V0aHRvb2wvTWFrZWZpbGU6NzpldGh0b29sX25sLXlcdDo9IG5ldGxpbmsubyBiaXRzZXQubyBzdHJzZXQubyBsaW5raW5mby5vIGxpbmttb2Rlcy5vIHJzcy5vIFxcXG5uZXQvZXRodG9vbC9NYWtlZmlsZS04LVx0XHQgICBsaW5rc3RhdGUubyBkZWJ1Zy5vIHdvbC5vIGZlYXR1cmVzLm8gcHJpdmZsYWdzLm8gcmluZ3MubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTc2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyB0aGUgRVRIVE9PTCBOZXRsaW5rIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdfRVRIVE9PTF9ORVRMSU5LYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZS4gTXkgaW1tZWRpYXRlIGZvY3VzIHRoZW4gbmVlZHMgdG8gYmUgb24gYGV0aG5sX3NldF90c2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2Ygc2V0dGluZyB0aGUgY29uZmlndXJhdGlvbiBzaG91bGQgcmVzaWRlLCBhbmQgd2hlcmUgSSYjMzk7bGwgcHJvYmFibHkgZmluZCB0aGUgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb250cm9sIGZsb3cuIEJ1dCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhhdCwgaXTigJlzIGFsd2F5cyB3aXNlIHRvIGNoZWNrIGZvciBhc3NvY2lhdGVkIGZ1bmN0aW9ucyBpbiB0aGlzIGNvbnRleHQuIFRoZXJlIG1heSBiZSBoZWxwZXIgZnVuY3Rpb25zIG9yIGNvbXBsaW1lbnRhcnkgZnVuY3Rpb25zIHRoYXQgd2lsbCBlbmhhbmNlIHVuZGVyc3RhbmRpbmcuIEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgcGljdHVyZSBiZWZvcmUgZm9jdXNpbmcgb24gdGhlIHNwZWNpZmljIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V0aG5sX3NldF90c2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL3RzY29uZmlnLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvdHNjb25maWcuYz0xOTk9c3RhdGljIGludCB0c2NvbmZpZ19zZW5kX3JlcGx5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYy0yNTAtXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjI1MTpzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZShzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy0yNTItXHRcdFx0XHQgICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jPTI2Mz10c2NvbmZpZ19zZXRfaHdwcm92X2Zyb21fZGVzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMzAyLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYzozMDM6c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMzA0LVx0XHRcdCAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYz00NTE9Y29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzID0ge1xuLS1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDYxLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYzo0NjI6XHQuc2V0X3ZhbGlkYXRlXHRcdD0gZXRobmxfc2V0X3RzY29uZmlnX3ZhbGlkYXRlLFxubmV0L2V0aHRvb2wvdHNjb25maWcuYzo0NjM6XHQuc2V0XHRcdFx0PSBldGhubF9zZXRfdHNjb25maWcsXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQ2NC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTgxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGV0aG5sX3NldF90c2NvbmZpZ2AgRnVuY3Rpb24qKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIHNlZSB0aGF0IGBldGhubF9zZXRfdHNjb25maWdgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIHdvbmRlciBpZiBpdCYjMzk7cyBiZWluZyBpbmxpbmVkLiBJbiBteSBleHBlcmllbmNlLCBmdW5jdGlvbnMgdGhhdCBhcmUgcG9pbnRlZCB0byBpbiBzdHJ1Y3RzIGFyZSB0eXBpY2FsbHkgKm5vdCogaW5saW5lZC4gSG93ZXZlciwgdGhlIGBzdGF0aWNgIGtleXdvcmQgdGhyb3dzIGEgYml0IG9mIGEgY3VydmViYWxsLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBoaWdobGlnaHRzIHRoZSBpbXBvcnRhbmNlIG9mIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBiZWNhdXNlIHRob3NlIGdldCBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG9uJiMzOTt0IGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLgoKU28sIHNpbmNlIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYGV0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzYCwgaXQgc2hvdWxkbiYjMzk7dCBiZSBpbmxpbmVkLiBUaGF0IHNob3VsZCBtZWFuIGl0ICp3aWxsKiBoYXZlIGEgdW5pcXVlIHN5bWJvbCBhZGRyZXNzLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBtYWludGFpbmFiaWxpdHkgYW5kIGRlYnVnZ2luZywgcmlnaHQ/CgpCdXQsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHZlcmlmeSwgSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUmIzM5O3MgYSBub24tc3RhdGljIEFQSSBlbnRyeSBwb2ludCBpbnZvbHZlZC4gVGhlIGJlc3Qgd2F5IHRvIGJlIHN1cmUgaXMgdG8gY2hlY2sgYG5ldC9ldGh0b29sL25ldGxpbmsuY2AsIHdoaWNoIHNob3VsZCBzaG93IGhvdyBgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHNgIGlzIGFjdHVhbGx5IHVzZWQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB0cnVseSB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL25ldGxpbmsuYz0zODk9ZXRobmxfZGVmYXVsdF9yZXF1ZXN0c1tfX0VUSFRPT0xfTVNHX1VTRVJfQ05UXSA9IHtcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNDI5LVx0W0VUSFRPT0xfTVNHX01NX1NFVF1cdFx0PSBcdTAwMjZldGhubF9tbV9yZXF1ZXN0X29wcyxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo0MzA6XHRbRVRIVE9PTF9NU0dfVFNDT05GSUdfR0VUXVx0PSBcdTAwMjZldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcyxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo0MzE6XHRbRVRIVE9PTF9NU0dfVFNDT05GSUdfU0VUXVx0PSBcdTAwMjZldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcyxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy00MzItXHRbRVRIVE9PTF9NU0dfUEhZX0dFVF1cdFx0PSBcdTAwMjZldGhubF9waHlfcmVxdWVzdF9vcHMsXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5oPTQ3ND1leHRlcm4gY29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX3BoeV9yZXF1ZXN0X29wcztcbm5ldC9ldGh0b29sL25ldGxpbmsuaDo0NzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcztcbm5ldC9ldGh0b29sL25ldGxpbmsuaC00NzYtZXh0ZXJuIGNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF9tc2VfcmVxdWVzdF9vcHM7XG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYz0zMDM9c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbi0tXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQ1MC1cbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6NDUxOmNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcyA9IHtcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDUyLVx0LnJlcXVlc3RfY21kXHRcdD0gRVRIVE9PTF9NU0dfVFNDT05GSUdfR0VULFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDg0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIEV0aHRvb2wgTmV0bGluayBJbnRlcmZhY2UqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIEV0aHRvb2wgbmV0bGluayBpbnRlcmZhY2UgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHNldCBjb21tYW5kcyB3b3JrLiBUaGUgaW5pdGlhbCBlbnRyeSBwb2ludCwgYXMgSSBzZWUgaXQsIHNlZW1zIHRvIGJlIGBldGhubF9kZWZhdWx0X3NldF9kb2l0YC4gRnJvbSB0aGVyZSwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgdGhpcyBmdW5jdGlvbiBldmVudHVhbGx5IGNhbGxzIGBvcHMtJmd0O3NldGAuIE5vdywgYG9wc2AgY2xlYXJseSByZXByZXNlbnRzIHRoZSBvcGVyYXRpb24tc3BlY2lmaWMgaGFuZGxlci4gVGltZSB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGZsb3cuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIGBuZXQvZXRodG9vbC9uZXRsaW5rLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGV0aG5sX2RlZmF1bHRfc2V0X2RvaXRgIHRvIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuIExldCYjMzk7cyBzZWUgaG93IHRoZXkmIzM5O3ZlIHN0cnVjdHVyZWQgdGhlIG5ldGxpbmsgaGFuZGxlciBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXRobmxfZGVmYXVsdF9zZXRfZG9pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZXRodG9vbC9uZXRsaW5rLmM9ODkwPXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kb25lKHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtODk5LVxubmV0L2V0aHRvb2wvbmV0bGluay5jOjkwMDpzdGF0aWMgaW50IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9ldGh0b29sL25ldGxpbmsuYy05MDEte1xuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYz0xMTYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgZXRodG9vbF9nZW5sX29wc1tdID0ge1xuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMTgyLVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMTgzOlx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTExODQtXHRcdC5wb2xpY3kgPSBldGhubF9saW5raW5mb19zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMTk4LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMTk5Olx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyMDAtXHRcdC5wb2xpY3kgPSBldGhubF9saW5rbW9kZXNfc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTIyMy1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTIyNDpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjI1LVx0XHQucG9saWN5ID0gZXRobmxfZGVidWdfc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTI0MC1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTI0MTpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjQyLVx0XHQucG9saWN5ID0gZXRobmxfd29sX3NldF9wb2xpY3ksXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyNzItXHRcdC5mbGFnc1x0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEyNzM6XHRcdC5kb2l0XHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTI3NC1cdFx0LnBvbGljeSA9IGV0aG5sX3ByaXZmbGFnc19zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjg4LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMjg5Olx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyOTAtXHRcdC5wb2xpY3kgPSBldGhubF9yaW5nc19zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMzA0LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMzA1Olx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMDYtXHRcdC5wb2xpY3kgPSBldGhubF9jaGFubmVsc19zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMzIwLVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMzIxOlx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMjItXHRcdC5wb2xpY3kgPSBldGhubF9jb2FsZXNjZV9zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMzM2LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMzM3Olx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMzgtXHRcdC5wb2xpY3kgPSBldGhubF9wYXVzZV9zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMzUyLVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMzUzOlx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzNTQtXHRcdC5wb2xpY3kgPSBldGhubF9lZWVfc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTM5OS1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTQwMDpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDAxLVx0XHQucG9saWN5ID0gZXRobmxfZmVjX3NldF9wb2xpY3ksXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE0NDMtXHRcdC5mbGFnc1x0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjE0NDQ6XHRcdC5kb2l0XHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTQ0NS1cdFx0LnBvbGljeSA9IGV0aG5sX21vZHVsZV9zZXRfcG9saWN5LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDU5LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNDYwOlx0XHQuZG9pdFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE0NjEtXHRcdC5wb2xpY3kgPSBldGhubF9wc2Vfc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTQ4My1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTQ4NDpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDg1LVx0XHQucG9saWN5ID0gZXRobmxfcGxjYV9zZXRfY2ZnX3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTUwOC1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTUwOTpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTEwLVx0XHQucG9saWN5ID0gZXRobmxfbW1fc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTU0MC1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTU0MTpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTQyLVx0XHQucG9saWN5ID0gZXRobmxfdHNjb25maWdfc2V0X3BvbGljeSxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTU0Ny1cdFx0LmZsYWdzXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTU0ODpcdFx0LmRvaXRcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTQ5LVx0XHQucG9saWN5ID0gZXRobmxfcnNzX3NldF9wb2xpY3ksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxODYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEV0aHRvb2wgTmV0bGluayBTZXQgQ29tbWFuZHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBgZXRodG9vbGAgbmV0bGluayBjb21tYW5kcyBhcmUgaGFuZGxlZC4gYGV0aG5sX2RlZmF1bHRfc2V0X2RvaXRgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBhbGwgb2YgdGhlbSwgYnV0IGl0JiMzOTtzIG5vdCBhIGdlbmVyaWMgaG90IHBhdGguIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgc3BlY2lmaWMgaGFuZGxlciBmb3IgYEVUSFRPT0xfTVNHX1RTQ09ORklHX1NFVGAsIHdoaWNoIGlzIGBldGhubF9zZXRfdHNjb25maWdgLiBXYWl0LCB0aGUgcHJvbXB0IGlzIGFib3V0IHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBUaGUgcXVlc3Rpb24gaXMsIGlzIGBldGhubF9zZXRfdHNjb25maWdgIHN0YXRpYz8gSWYgaXQgd2VyZSwgaXQgKm1pZ2h0KiBiZSBpbmxpbmVkIGludG8gdGhlIGdlbmVyYWwgZW50cnkgcG9pbnQuIEJ1dCwgaG9sZCBvbiwgaXTigJlzIGFzc2lnbmVkIHRvIHRoZSBzdHJ1Y3QgbWVtYmVyIGBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcy5zZXQgPSBldGhubF9zZXRfdHNjb25maWdgLiBCZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLCBpdCAqY2FuJiMzOTt0KiBiZSBmdWxseSBpbmxpbmVkOyB0aGVyZSBoYXMgdG8gYmUgYSBzdGFuZGFsb25lIGZ1bmN0aW9uIGJvZHkuIFNvLCBpdCAqd2lsbCogaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBtZWFuaW5nIGl04oCZcyBhIGdvb2QgY2FuZGlkYXRlLiBMZXQgbWUgZG91YmxlIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueXRoaW5nIGVsc2UgaW52b2x2ZWQgaW4gdGhpcy4gQWgsIHllcywgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWAgaXMgKmFsc28qIGFzc2lnbmVkLCB0byBgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHMuc2V0X3ZhbGlkYXRlYC4gU28sICpib3RoKiBvZiB0aG9zZSBmdW5jdGlvbnMgYXJlIHZhbGlkIGNhbmRpZGF0ZXMsIHRoZW4uIExldCBtZSBqdXN0IG9wZW4gdXAgYG5ldC9ldGh0b29sL3RzY29uZmlnLmNgIGFuZCBoYXZlIGEgbG9vayBhdCBgZXRobmxfc2V0X3RzY29uZmlnYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL3RzY29uZmlnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMDM6XHRzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZyhzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxuIDMwNDpcdFx0XHRcdCAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gMzA1Olx0e1xuIDMwNjpcdFx0c3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgaHd0c3RfY29uZmlnID0gezB9O1xuIDMwNzpcdFx0Ym9vbCBod3Byb3ZfbW9kID0gZmFsc2UsIGNvbmZpZ19tb2QgPSBmYWxzZTtcbiAzMDg6XHRcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92ID0gTlVMTDtcbiAzMDk6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXFfYmFzZS1cdTAwM2VkZXY7XG4gMzEwOlx0XHRzdHJ1Y3QgbmxhdHRyICoqdGIgPSBpbmZvLVx1MDAzZWF0dHJzO1xuIDMxMTpcdFx0aW50IHJldDtcbiAzMTI6XHRcbiAzMTM6XHRcdGlmICghbmV0aWZfZGV2aWNlX3ByZXNlbnQoZGV2KSlcbiAzMTQ6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gMzE1Olx0XG4gMzE2Olx0XHRpZiAodGJbRVRIVE9PTF9BX1RTQ09ORklHX0hXVFNUQU1QX1BST1ZJREVSXSkge1xuIDMxNzpcdFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXJfZGVzYyBfX2h3cHJvdl9kZXNjID0gey5pbmRleCA9IC0xfTtcbiAzMTg6XHRcdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpfX2h3cHJvdjtcbiAzMTk6XHRcbiAzMjA6XHRcdFx0X19od3Byb3YgPSBuZXRkZXZfb3BzX2xvY2tfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdiwgZGV2KTtcbiAzMjE6XHRcdFx0aWYgKF9faHdwcm92KSB7XG4gMzIyOlx0XHRcdFx0X19od3Byb3ZfZGVzYy5pbmRleCA9IF9faHdwcm92LVx1MDAzZWRlc2MuaW5kZXg7XG4gMzIzOlx0XHRcdFx0X19od3Byb3ZfZGVzYy5xdWFsaWZpZXIgPSBfX2h3cHJvdi1cdTAwM2VkZXNjLnF1YWxpZmllcjtcbiAzMjQ6XHRcdFx0fVxuIDMyNTpcdFxuIDMyNjpcdFx0XHRyZXQgPSB0c19wYXJzZV9od3RzdF9wcm92aWRlcih0YltFVEhUT09MX0FfVFNDT05GSUdfSFdUU1RBTVBfUFJPVklERVJdLFxuIDMyNzpcdFx0XHRcdFx0XHQgICAgICBcdTAwMjZfX2h3cHJvdl9kZXNjLCBpbmZvLVx1MDAzZWV4dGFjayxcbiAzMjg6XHRcdFx0XHRcdFx0ICAgICAgXHUwMDI2aHdwcm92X21vZCk7XG4gMzI5Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMzMwOlx0XHRcdFx0cmV0dXJuIHJldDtcbiAzMzE6XHRcbiAzMzI6XHRcdFx0aWYgKGh3cHJvdl9tb2QpIHtcbiAzMzM6XHRcdFx0XHRod3Byb3YgPSB0c2NvbmZpZ19zZXRfaHdwcm92X2Zyb21fZGVzYyhkZXYsIGluZm8sXG4gMzM0Olx0XHRcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2X19od3Byb3ZfZGVzYyk7XG4gMzM1Olx0XHRcdFx0aWYgKElTX0VSUihod3Byb3YpKVxuIDMzNjpcdFx0XHRcdFx0cmV0dXJuIFBUUl9FUlIoaHdwcm92KTtcbiAzMzc6XHRcdFx0fVxuIDMzODpcdFx0fVxuIDMzOTpcdFxuIDM0MDpcdFx0LyogR2V0IGN1cnJlbnQgaHd0c3RhbXAgY29uZmlnIGlmIHdlIGFyZSBub3QgY2hhbmdpbmcgdGhlXG4gMzQxOlx0XHQgKiBod3RzdGFtcCBzb3VyY2UuIEl0IHdpbGwgYmUgemVyb2VkIGluIHRoZSBvdGhlciBjYXNlLlxuIDM0MjpcdFx0ICovXG4gMzQzOlx0XHRpZiAoIWh3cHJvdl9tb2QpIHtcbiAzNDQ6XHRcdFx0cmV0ID0gZGV2X2dldF9od3RzdGFtcF9waHlsaWIoZGV2LCBcdTAwMjZod3RzdF9jb25maWcpO1xuIDM0NTpcdFx0XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVPUE5PVFNVUFApXG4gMzQ2Olx0XHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gMzQ3Olx0XHR9XG4gMzQ4Olx0XG4gMzQ5Olx0XHQvKiBHZXQgdGhlIGh3dHN0YW1wIGNvbmZpZyBmcm9tIG5ldGxpbmsgKi9cbiAzNTA6XHRcdGlmICh0YltFVEhUT09MX0FfVFNDT05GSUdfVFhfVFlQRVNdKSB7XG4gMzUxOlx0XHRcdHUzMiByZXFfdHhfdHlwZTtcbiAzNTI6XHRcbiAzNTM6XHRcdFx0cmVxX3R4X3R5cGUgPSBCSVQoaHd0c3RfY29uZmlnLnR4X3R5cGUpO1xuIDM1NDpcdFx0XHRyZXQgPSBldGhubF91cGRhdGVfYml0c2V0MzIoXHUwMDI2cmVxX3R4X3R5cGUsXG4gMzU1Olx0XHRcdFx0XHRcdCAgICBfX0hXVFNUQU1QX1RYX0NOVCxcbiAzNTY6XHRcdFx0XHRcdFx0ICAgIHRiW0VUSFRPT0xfQV9UU0NPTkZJR19UWF9UWVBFU10sXG4gMzU3Olx0XHRcdFx0XHRcdCAgICB0c190eF90eXBlX25hbWVzLCBpbmZvLVx1MDAzZWV4dGFjayxcbiAzNTg6XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmNvbmZpZ19tb2QpO1xuIDM1OTpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDM2MDpcdFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIDM2MTpcdFxuIDM2MjpcdFx0XHQvKiBTZWxlY3QgZXhhY3RseSBvbmUgdHggdHlwZSBhdCBhIHRpbWUgKi9cbiAzNjM6XHRcdFx0aWYgKGh3ZWlnaHQzMihyZXFfdHhfdHlwZSkgIT0gMSkge1xuIDM2NDpcdFx0XHRcdE5MX1NFVF9CQURfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbiAzNjU6XHRcdFx0XHRcdFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSk7XG4gMzY2Olx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiAzNjc6XHRcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiAzNjg6XHRcdFx0fVxuIDM2OTpcdFxuIDM3MDpcdFx0XHRod3RzdF9jb25maWcudHhfdHlwZSA9IGZmcyhyZXFfdHhfdHlwZSkgLSAxO1xuIDM3MTpcdFx0fVxuIDM3MjpcdFxuIDM3MzpcdFx0aWYgKHRiW0VUSFRPT0xfQV9UU0NPTkZJR19SWF9GSUxURVJTXSkge1xuIDM3NDpcdFx0XHR1MzIgcmVxX3J4X2ZpbHRlcjtcbiAzNzU6XHRcbiAzNzY6XHRcdFx0cmVxX3J4X2ZpbHRlciA9IEJJVChod3RzdF9jb25maWcucnhfZmlsdGVyKTtcbiAzNzc6XHRcdFx0cmV0ID0gZXRobmxfdXBkYXRlX2JpdHNldDMyKFx1MDAyNnJlcV9yeF9maWx0ZXIsXG4gMzc4Olx0XHRcdFx0XHRcdCAgICBfX0hXVFNUQU1QX0ZJTFRFUl9DTlQsXG4gMzc5Olx0XHRcdFx0XHRcdCAgICB0YltFVEhUT09MX0FfVFNDT05GSUdfUlhfRklMVEVSU10sXG4gMzgwOlx0XHRcdFx0XHRcdCAgICB0c19yeF9maWx0ZXJfbmFtZXMsIGluZm8tXHUwMDNlZXh0YWNrLFxuIDM4MTpcdFx0XHRcdFx0XHQgICAgXHUwMDI2Y29uZmlnX21vZCk7XG4gMzgyOlx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMzgzOlx0XHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gMzg0Olx0XG4gMzg1Olx0XHRcdC8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4gMzg2Olx0XHRcdGlmIChod2VpZ2h0MzIocmVxX3J4X2ZpbHRlcikgIT0gMSkge1xuIDM4NzpcdFx0XHRcdE5MX1NFVF9CQURfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbiAzODg6XHRcdFx0XHRcdFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTtcbiAzODk6XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDM5MDpcdFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIDM5MTpcdFx0XHR9XG4gMzkyOlx0XG4gMzkzOlx0XHRcdGh3dHN0X2NvbmZpZy5yeF9maWx0ZXIgPSBmZnMocmVxX3J4X2ZpbHRlcikgLSAxO1xuIDM5NDpcdFx0fVxuIDM5NTpcdFxuIDM5NjpcdFx0aWYgKHRiW0VUSFRPT0xfQV9UU0NPTkZJR19IV1RTVEFNUF9GTEFHU10pIHtcbiAzOTc6XHRcdFx0cmV0ID0gZXRobmxfdXBkYXRlX2JpdHNldDMyKFx1MDAyNmh3dHN0X2NvbmZpZy5mbGFncyxcbiAzOTg6XHRcdFx0XHRcdFx0ICAgIF9fSFdUU1RBTVBfRkxBR19DTlQsXG4gMzk5Olx0XHRcdFx0XHRcdCAgICB0YltFVEhUT09MX0FfVFNDT05GSUdfSFdUU1RBTVBfRkxBR1NdLFxuIDQwMDpcdFx0XHRcdFx0XHQgICAgdHNfZmxhZ3NfbmFtZXMsIGluZm8tXHUwMDNlZXh0YWNrLFxuIDQwMTpcdFx0XHRcdFx0XHQgICAgXHUwMDI2Y29uZmlnX21vZCk7XG4gNDAyOlx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTI2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVjZW50IENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBldGhubF9zZXRfdHNjb25maWdgLiBJIG5lZWQgdG8gY29uZmlybSBpZiBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgd2VyZSB0b3VjaGVkLCBidXQgaXQgbG9va3MgbGlrZSBgZXRobmxfc2V0X3RzY29uZmlnYCBpcyB0aGUgc29sZSBwb2ludCBvZiBtb2RpZmljYXRpb24uIFRoZSBnb29kIG5ld3MgaXMsIGJhc2VkIG9uIHRoZSBjaGFuZ2UsIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBmdW5jdGlvbmFsLgoKVGhlIHByaW1hcnkgZ29hbCBvZiB0aGlzIGZpeCBpcyB0byBhZGRyZXNzIGEgYnVnIHRoYXQgYWxsb3dlZCBmb3IgaW52YWxpZCByZXF1ZXN0IHR5cGVzIChgcmVxX3R4X3R5cGUgPT0gMGAgb3IgYHJlcV9yeF9maWx0ZXIgPT0gMGApIHRvIGJlIGFjY2VwdGVkLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhlc2UgaW52YWxpZCB2YWx1ZXMgd291bGQgY2F1c2UgYGh3dHN0X2NvbmZpZy50eF90eXBlYCB0byBiZSBzZXQgdG8gLTEuIEFzIGFuIGV4cGVydCwgSSBpbnN0YW50bHkgc2VlIHRoZSB2dWxuZXJhYmlsaXR5IGhlcmUg4oCTIHRoaXMgaW50ZWdlciB1bmRlcmZsb3cgY291bGQgbGVhZCB0byBhbGwgc29ydHMgb2YgaXNzdWVzIGRvd25zdHJlYW0sIGluY2x1ZGluZywgd29yc3QgY2FzZSwgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzLCBwb3RlbnRpYWxseSBpbiBhIHByaXZpbGVnZWQgY29udGV4dC4gVGhlcmVmb3JlLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgcmlnb3JvdXMgZnV6emluZy4KCk5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIGlkZW50aWZ5aW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCByZWxhdGUgdG8gdGhpcyBmdW5jdGlvbmFsaXR5LiBXZSYjMzk7dmUgYWxyZWFkeSBzcG90dGVkIGBFVEhUT09MX05FVExJTktgLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnM/IEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYG5ldC9ldGh0b29sL0tjb25maWdgIG9yIHBvc3NpYmx5IGV2ZW4gdGhlIGJyb2FkZXIgYG5ldC9LY29uZmlnYCB0byBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBpbnRlcmFjdCB3aXRoIHRoaXMuIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uZmlndXJhdGlvbnMgaXMgdml0YWwgdG8gY29uc3RydWN0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFVEhUT09MX05FVExJTksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz01MDc9Y29uZmlnIEZBSUxPVkVSXG4tLVxubmV0L0tjb25maWctNTE5LVxubmV0L0tjb25maWc6NTIwOmNvbmZpZyBFVEhUT09MX05FVExJTktcbm5ldC9LY29uZmlnLTUyMS1cdGJvb2wgXCYjMzQ7TmV0bGluayBpbnRlcmZhY2UgZm9yIGV0aHRvb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExMzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgdGhpbmtpbmcgdGhyb3VnaCBpdCBzdGVwLWJ5LXN0ZXA6CgoqKkNoZWNraW5nIEVUSFRPT0xfTkVUTElOSyBEZXBlbmRlbmNpZXMgaW4gbmV0L0tjb25maWcqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBmaW5kIG91dCB3aGF0IGBFVEhUT09MX05FVExJTktgIGRlcGVuZHMgb24sIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uIGZpbGVzLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBpcyB0byBnbyBkaXJlY3RseSB0byBgbmV0L0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdXN1YWxseSBkZWZpbmVkLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgc2luY2UgaXQmIzM5O3MgcmVsYXRlZCB0byBldGh0b29sIChhIGNvbW1vbiB0b29sIGZvciBxdWVyeWluZyBhbmQgc2V0dGluZyBOSUMgcGFyYW1ldGVycykgYW5kIG5ldGxpbmsgKGEgbG93LWxldmVsIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBtZWNoYW5pc20gaW4gTGludXgpLCB0aGUgZGVwZW5kZW5jaWVzIHdvdWxkIGJlIGRlY2xhcmVkIG9yIGF0IGxlYXN0IHJlZmVyZW5jZWQgd2l0aGluIHRoYXQgZmlsZS4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGBFVEhUT09MX05FVExJTktgIGluIHRoYXQgYG5ldC9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHN0YXRlbWVudHMgcmVsYXRlZCB0byBvdGhlciBmZWF0dXJlcywgZHJpdmVyIHNlbGVjdGlvbnMsIG9yIGV2ZW4gZ2VuZXJhbCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBwcmVyZXF1aXNpdGVzLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSB3aGF0IG90aGVyIGZlYXR1cmVzLCBkcml2ZXJzLCBvciBnZW5lcmFsIGtlcm5lbCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZSB0aWVkIHRvIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUxNTpcdFx0ICBmYWlsb3ZlciBuZXRkZXYuIFRoaXMgZW5hYmxlcyBwYXJhdmlydHVhbCBkcml2ZXJzIHRvIHVzZSBhXG4gNTE2Olx0XHQgIFZGIGFzIGFuIGFjY2VsZXJhdGVkIGxvdyBsYXRlbmN5IGRhdGFwYXRoLiBJdCBhbHNvIGFsbG93cyBsaXZlXG4gNTE3Olx0XHQgIG1pZ3JhdGlvbiBvZiBWTXMgd2l0aCBkaXJlY3QgYXR0YWNoZWQgVkZzIGJ5IGZhaWxpbmcgb3ZlciB0byB0aGVcbiA1MTg6XHRcdCAgcGFyYXZpcnR1YWwgZGF0YXBhdGggd2hlbiB0aGUgVkYgaXMgdW5wbHVnZ2VkLlxuIDUxOTpcdFxuIDUyMDpcdGNvbmZpZyBFVEhUT09MX05FVExJTktcbiA1MjE6XHRcdGJvb2wgXCYjMzQ7TmV0bGluayBpbnRlcmZhY2UgZm9yIGV0aHRvb2xcJiMzNDtcbiA1MjI6XHRcdHNlbGVjdCBESU1MSUJcbiA1MjM6XHRcdGRlZmF1bHQgeVxuIDUyNDpcdFx0aGVscFxuIDUyNTpcdFx0ICBBbiBhbHRlcm5hdGl2ZSB1c2Vyc3BhY2UgaW50ZXJmYWNlIGZvciBldGh0b29sIGJhc2VkIG9uIGdlbmVyaWNcbiA1MjY6XHRcdCAgbmV0bGluay4gSXQgcHJvdmlkZXMgYmV0dGVyIGV4dGVuc2liaWxpdHkgYW5kIHNvbWUgbmV3IGZlYXR1cmVzLFxuIDUyNzpcdFx0ICBlLmcuIG5vdGlmaWNhdGlvbiBtZXNzYWdlcy5cbiA1Mjg6XHRcbiA1Mjk6XHRjb25maWcgTkVUREVWX0FERFJfTElTVF9URVNUXG4gNTMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtVbml0IHRlc3RzIGZvciBkZXZpY2UgYWRkcmVzcyBsaXN0XCYjMzQ7XG4gNTMxOlx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuIDUzMjpcdFx0ZGVwZW5kcyBvbiBLVU5JVFxuIDUzMzpcdFxuIDUzNDpcdGNvbmZpZyBORVRfVEVTVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTczMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBFVEhUT09MX05FVExJTksgZm9yIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBFVEhUT09MX05FVExJTktgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIOKAkyBpdCBoYXMgYSBgZGVmYXVsdCB5YCBzZXR0aW5nIGFuZCBubyBkZXBlbmRlbmNpZXMsIHdoaWNoIHN1Z2dlc3RzIGl0JiMzOTtzIHRoZSBwcmltYXJ5IHN3aXRjaCBmb3IgdGhlIGZ1bmN0aW9uYWxpdHkgd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4uIFRoZXJlZm9yZSwgYEVUSFRPT0xfTkVUTElOS2AgaXMgdGhlIG9ubHkgY29uZmlnIEkgbmVlZCB0byBmb2N1cyBvbiwgcmlnaHQ/IEFjdHVhbGx5LCBob2xkIG9uIGEgc2Vjb25kLi4uIGlzIGBORVRgIHJlcXVpcmVkPyBBaCwgeWVzLCB0aGF0JiMzOTtzIGp1c3QgYSBmdW5kYW1lbnRhbCwgYmFzZS1sZXZlbCBuZXR3b3JraW5nIGNvbmZpZy4gQW5kIHdoYXQgYWJvdXQgYENPTkZJR19ORVRgPyBSaWdodCwgc3l6a2FsbGVyIGFsd2F5cyBlbmFibGVzIHRoYXQuIFNvIHRob3NlIGFyZW4mIzM5O3QgYSBjb25jZXJuLgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5ICpiZWluZyogdXNlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSByZWxldmFudC4gSXQgbG9va3MgbGlrZSBgZXRobmxfc2V0X3RzY29uZmlnYCBpcyB0aGUgb25seSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQsIHNvIHRoYXQgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBJcyB0aGVyZSBhbnl0aGluZyBlbHNlIGluIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCB0aGF0IG1pZ2h0IGJlIHVzZWZ1bCB0byBpbnZlc3RpZ2F0ZT8gUGVyaGFwcywgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWA/IEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIHRvby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRodG9vbC90c2NvbmZpZy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTE6XHRzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZShzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxuIDI1MjpcdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gMjUzOlx0e1xuIDI1NDpcdFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpvcHMgPSByZXFfYmFzZS1cdTAwM2VkZXYtXHUwMDNlbmV0ZGV2X29wcztcbiAyNTU6XHRcbiAyNTY6XHRcdGlmICghb3BzLVx1MDAzZW5kb19od3RzdGFtcF9zZXQgfHwgIW9wcy1cdTAwM2VuZG9faHd0c3RhbXBfZ2V0KVxuIDI1NzpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gMjU4Olx0XG4gMjU5Olx0XHRyZXR1cm4gMTtcbiAyNjA6XHR9XG4gMjYxOlx0XG4gMjYyOlx0c3RhdGljIHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqXG4gMjYzOlx0dHNjb25maWdfc2V0X2h3cHJvdl9mcm9tX2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAyNjQ6XHRcdFx0XHQgICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuIDI2NTpcdFx0XHRcdCAgICAgIHN0cnVjdCBod3RzdGFtcF9wcm92aWRlcl9kZXNjICpod3Byb3ZfZGVzYylcbiAyNjY6XHR7XG4gMjY3Olx0XHRzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfdHNfaW5mbyB0c19pbmZvO1xuIDI2ODpcdFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XG4gMjY5Olx0XHRzdHJ1Y3QgbmxhdHRyICoqdGIgPSBpbmZvLVx1MDAzZWF0dHJzO1xuIDI3MDpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeSA9IE5VTEw7XG4gMjcxOlx0XHRlbnVtIGh3dHN0YW1wX3NvdXJjZSBzb3VyY2U7XG4gMjcyOlx0XHRpbnQgcmV0O1xuIDI3MzpcdFxuIDI3NDpcdFx0cmV0ID0gZXRodG9vbF9uZXRfZ2V0X3RzX2luZm9fYnlfcGhjKGRldiwgXHUwMDI2dHNfaW5mbywgaHdwcm92X2Rlc2MpO1xuIDI3NTpcdFx0aWYgKCFyZXQpIHtcbiAyNzY6XHRcdFx0LyogRm91bmQgKi9cbiAyNzc6XHRcdFx0c291cmNlID0gSFdUU1RBTVBfU09VUkNFX05FVERFVjtcbiAyNzg6XHRcdH0gZWxzZSB7XG4gMjc5Olx0XHRcdHBoeSA9IGV0aHRvb2xfcGh5X2dldF90c19pbmZvX2J5X3BoYyhkZXYsIFx1MDAyNnRzX2luZm8sIGh3cHJvdl9kZXNjKTtcbiAyODA6XHRcdFx0aWYgKElTX0VSUihwaHkpKSB7XG4gMjgxOlx0XHRcdFx0aWYgKFBUUl9FUlIocGh5KSA9PSAtRU5PREVWKVxuIDI4MjpcdFx0XHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbiAyODM6XHRcdFx0XHRcdFx0XHQgICAgdGJbRVRIVE9PTF9BX1RTQ09ORklHX0hXVFNUQU1QX1BST1ZJREVSXSxcbiAyODQ6XHRcdFx0XHRcdFx0XHQgICAgXCYjMzQ7cGhjIG5vdCBpbiB0aGlzIG5ldCBkZXZpY2UgdG9wb2xvZ3lcJiMzNDspO1xuIDI4NTpcdFx0XHRcdHJldHVybiBFUlJfQ0FTVChwaHkpO1xuIDI4NjpcdFx0XHR9XG4gMjg3Olx0XG4gMjg4Olx0XHRcdHNvdXJjZSA9IEhXVFNUQU1QX1NPVVJDRV9QSFlMSUI7XG4gMjg5Olx0XHR9XG4gMjkwOlx0XG4gMjkxOlx0XHRod3Byb3YgPSBremFsbG9jX29iaigqaHdwcm92KTtcbiAyOTI6XHRcdGlmICghaHdwcm92KVxuIDI5MzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiAyOTQ6XHRcbiAyOTU6XHRcdGh3cHJvdi1cdTAwM2VkZXNjLmluZGV4ID0gaHdwcm92X2Rlc2MtXHUwMDNlaW5kZXg7XG4gMjk2Olx0XHRod3Byb3YtXHUwMDNlZGVzYy5xdWFsaWZpZXIgPSBod3Byb3ZfZGVzYy1cdTAwM2VxdWFsaWZpZXI7XG4gMjk3Olx0XHRod3Byb3YtXHUwMDNlc291cmNlID0gc291cmNlO1xuIDI5ODpcdFx0aHdwcm92LVx1MDAzZXBoeWRldiA9IHBoeTtcbiAyOTk6XHRcbiAzMDA6XHRcdHJldHVybiBod3Byb3Y7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTc1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgU3VwcG9ydCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZXRobmxfc2V0X3RzY29uZmlnX3ZhbGlkYXRlYCBmdW5jdGlvbi4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGEgZ2F0ZWtlZXBlciwgcmlnaHQ/IEl0JiMzOTtzIGNoZWNraW5nIGZvciBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgc3VwcG9ydC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBjb25maXJtaW5nIGlmIHRoZSBgbmRvX2h3dHN0YW1wX3NldGAgYW5kIGBuZG9faHd0c3RhbXBfZ2V0YCBOZXREZXZpY2UgT3BlcmF0aW9ucyAoTkRPKSBhcmUgYWN0dWFsbHkgaW1wbGVtZW50ZWQuIElmIHRoZXkmIzM5O3JlIG1pc3NpbmcsIGl0JiMzOTtzIGEgc3RyYWlnaHQgYC1FT1BOT1RTVVBQYCDigJMgJiMzNDtub3Qgc3VwcG9ydGVkLiYjMzQ7IE1ha2VzIHNlbnNlLgoKVG8gcmVhbGx5IGdldCBhdCB0aGlzLCB0byAqdGVzdCogaXQgZWZmZWN0aXZlbHksIEkgbmVlZCBhIG5ldHdvcmsgZGV2aWNlIHRoYXQgKmRvZXMqIGltcGxlbWVudCB0aG9zZSBORE9zLiBUaGF0JiMzOTtzIHRoZSBrZXkuIE90aGVyd2lzZSwgSSYjMzk7bSBqdXN0IHNwaW5uaW5nIG15IHdoZWVscy4gU3l6a2FsbGVyLCB3aGljaCBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIHVzZXMgYSBidW5jaCBvZiBkaWZmZXJlbnQgdmlydHVhbCBhbmQgcGh5c2ljYWwgZGV2aWNlcy4gRGV2aWNlcyBsaWtlIGB2ZXRoYCwgYHR1bmAsIGBtYWN2bGFuYCwgdGhlIHNpbXBsZSBgZHVtbXlgLCB0aGUgYnJpZGdpbmcgdHlwZXMgbGlrZSBgYnJpZGdlYCwgZXZlbiB0aGUgbW9yZSBjb21wbGV4IGB2eGxhbmAgc2V0dXBzLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhvc2U7IEkgbmVlZCB0byBkcmlsbCBkb3duIGFuZCBzZWUgd2hpY2gsIGlmIGFueSwgb2YgKnRob3NlKiBhcmUgYWN0dWFsbHkgcGxheWluZyB0aGUgaGFyZHdhcmUgdGltZXN0YW1waW5nIGdhbWUuIFRoaXMgaXMgd2hlcmUgSSBzdGFydCBsb29raW5nIGluIHRoZSBjb2RlLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhvc2UgZnVuY3Rpb25zLCBzbyBJIGNhbiBzdGFydCB0byB0ZXN0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25kb19od3RzdGFtcF9zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm9uZF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk3Ni1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGJvbmRfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1OTc3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gYm9uZF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NzgtfTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jPTQzNz1FWFBPUlRfU1lNQk9MKGNhbl9od3RzdGFtcF9nZXQpO1xuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy00MzgtXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jOjQzOTovKiBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIG5ldGRldl9vcHM6Om5kb19od3RzdGFtcF9zZXQgZm9yIENBTiBkZXZpY2VzXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTQ0MC0gKiBzdXBwb3J0aW5nIGhhcmR3YXJlIHRpbWVzdGFtcHNcbi0tXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYz04NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHBjaTQwMl9hY2NfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYy04OS1cdC5uZG9faHd0c3RhbXBfZ2V0ID0gY2FuX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jOjkwOlx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmMtOTEtfTtcbi0tXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYz05MDI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBrdmFzZXJfcGNpZWZkX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtOTA2LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBjYW5faHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmM6OTA3Olx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtOTA4LX07XG4tLVxuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19jYW5mZC5jPTc2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHBlYWtfY2FuZmRfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX2NhbmZkLmMtNzcxLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBwZWFrX2V0aF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX2NhbmZkLmM6NzcyOlx0Lm5kb19od3RzdGFtcF9zZXQgPSBwZWFrX2V0aF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX2NhbmZkLmMtNzczLX07XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYz0xNzMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWNwMjUxeGZkX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0xNzM2LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBjYW5faHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoxNzM3Olx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0xNzM4LX07XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9ldGFzX2VzNTh4L2VzNTh4X2NvcmUuYz0xOTgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZXM1OHhfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTE5ODQtXHQubmRvX2h3dHN0YW1wX2dldCA9IGNhbl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jOjE5ODU6XHQubmRvX2h3dHN0YW1wX3NldCA9IGNhbl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTE5ODYtfTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jPTEyMDg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBnc191c2JfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTEyMTItXHQubmRvX2h3dHN0YW1wX2dldCA9IGdzX2Nhbl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jOjEyMTM6XHQubmRvX2h3dHN0YW1wX3NldCA9IGdzX2Nhbl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTEyMTQtfTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmM9NzkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMga3Zhc2VyX3VzYl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy03OTUtXHQubmRvX2h3dHN0YW1wX2dldCA9IGNhbl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmM6Nzk2Olx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvY2FuL3VzYi9rdmFzZXJfdXNiL2t2YXNlcl91c2JfY29yZS5jLTc5Ny19O1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jPTgwNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHBlYWtfdXNiX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmMtODExLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBwZWFrX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jOjgxMjpcdC5uZG9faHd0c3RhbXBfc2V0ID0gcGVha19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy04MTMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTIwMzc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB4Z2JlX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0yMDU2LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0geGdiZV9nZXRfaHd0c3RhbXBfc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjIwNTc6XHQubmRvX2h3dHN0YW1wX3NldFx0PSB4Z2JlX3NldF9od3RzdGFtcF9zZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMjA1OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYz00NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhcV9uZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtNDczLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBhcV9uZGV2X2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0NzQ6XHQubmRvX2h3dHN0YW1wX3NldCA9IGFxX25kZXZfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTQ3NS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMzAwNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGJueDJ4X25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMDM2LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gYm54MnhfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEzMDM3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gYm54MnhfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMDM4LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTYwNzY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBibnh0X25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTYxMDctXHQubmRvX2h3dHN0YW1wX2dldFx0PSBibnh0X2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE2MTA4Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gYm54dF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwOS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE0MzY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdGczX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTQzODQtXHQubmRvX2h3dHN0YW1wX2dldFx0PSB0ZzNfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTQzODU6XHQubmRvX2h3dHN0YW1wX3NldFx0PSB0ZzNfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTQzODYtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ1NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWNiX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTYzLVx0Lm5kb19mZWF0dXJlc19jaGVja1x0PSBtYWNiX2ZlYXR1cmVzX2NoZWNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NTY0Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gbWFjYl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1NjUtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBtYWNiX2h3dHN0YW1wX2dldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTUyNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhdDkxZXRoZXJfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyODUtI2VuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUyODY6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBtYWNiX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTI4Ny1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IG1hY2JfaHd0c3RhbXBfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTMyMDU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsaW9uZXRkZXZvcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzIyNy1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGxpcXVpZGlvX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMyMjg6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBsaXF1aWRpb19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zMjI5LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTg1OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxpb25ldGRldm9wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xODcyLVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gbGlxdWlkaW9faHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTg3MzpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IGxpcXVpZGlvX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE4NzQtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM9MTM2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG9jdGVvbl9tZ210X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtMTM3OC1cdC5uZG9faHd0c3RhbXBfZ2V0ID1cdFx0b2N0ZW9uX21nbXRfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jOjEzNzk6XHQubmRvX2h3dHN0YW1wX3NldCA9XHRcdG9jdGVvbl9tZ210X2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMzgwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljdmZfbWFpbi5jPTIwNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuaWN2Zl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY3ZmX21haW4uYy0yMDg5LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gbmljdmZfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljdmZfbWFpbi5jOjIwOTA6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBuaWN2Zl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWN2Zl9tYWluLmMtMjA5MS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM4NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBjeGdiNF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4NzgtXHQubmRvX2h3dHN0YW1wX2dldCAgICAgPSBjeGdiX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jOjM4Nzk6XHQubmRvX2h3dHN0YW1wX3NldCAgICAgPSBjeGdiX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4ODAtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjM3MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHRzbmVwX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIzODUtXHQubmRvX2h3dHN0YW1wX2dldCA9IHRzbmVwX3B0cF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjM4NjpcdC5uZG9faHd0c3RhbXBfc2V0ID0gdHNuZXBfcHRwX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMzg3LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYz0zMTQ1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZHBhYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0zMTU5LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBkcGFhX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM6MzE2MDpcdC5uZG9faHd0c3RhbXBfc2V0ID0gZHBhYV9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTMxNjEtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmM9MzAzMD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGRwYWEyX2V0aF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5jLTMwNDYtXHQubmRvX2h3dHN0YW1wX2dldCA9IGRwYWEyX2V0aF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmM6MzA0NzpcdC5uZG9faHd0c3RhbXBfc2V0ID0gZHBhYTJfZXRoX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguYy0zMDQ4LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVuZXRjNF9uZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNTc1LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gZW5ldGNfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjU3NjpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IGVuZXRjX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy01NzctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlbmV0Y19uZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy00OTktXHQubmRvX2h3dHN0YW1wX2dldFx0PSBlbmV0Y19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo1MDA6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBlbmV0Y19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy01MDEtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYz0yMTM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlbmV0Y19uZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy0yMjItXHQubmRvX2h3dHN0YW1wX2dldFx0PSBlbmV0Y19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYzoyMjM6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBlbmV0Y19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy0yMjQtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz00ODg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZmVjX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDkwMi1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGZlY19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo0OTAzOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gZmVjX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ5MDQtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTMxMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBnZmFyX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0zMTUwLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBnZmFyX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM6MzE1MTpcdC5uZG9faHd0c3RhbXBfc2V0ID0gZ2Zhcl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTMxNTItfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX21haW4uYz0xMzIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZnVuX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9tYWluLmMtMTMzNy1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGZ1bl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX21haW4uYzoxMzM4Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gZnVuX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jLTEzMzktfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MjI0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGd2ZV9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMjU1LVx0Lm5kb19od3RzdGFtcF9nZXRcdD1cdGd2ZV9nZXRfdHNfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjIyNTY6XHQubmRvX2h3dHN0YW1wX3NldFx0PVx0Z3ZlX3NldF90c19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjI1Ny19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZW5ldC5jPTMwNzE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBobnMzX25pY19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZW5ldC5jLTMwOTctXHQubmRvX2h3dHN0YW1wX2dldFx0PSBobnMzX25pY19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2VuZXQuYzozMDk4Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaG5zM19uaWNfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM19lbmV0LmMtMzA5OS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYz03MzQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZTEwMDBlX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTczNjYtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBlMTAwMGVfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjczNjc6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBlMTAwMGVfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTczNjgtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTEzNTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaTQwZV9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2MjEtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBpNDBlX3B0cF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjEzNjIyOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaTQwZV9wdHBfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYy0xMzYyMy19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmM9NTEzND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlhdmZfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jLTUxNTAtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBpYXZmX2h3c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYzo1MTUxOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaWF2Zl9od3N0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTE1Mi19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTk3ODc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpY2VfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy05ODIzLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBpY2VfcHRwX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjk4MjQ6XHQubmRvX2h3dHN0YW1wX3NldCA9IGljZV9wdHBfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtOTgyNS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0yNjY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWRwZl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yNjc3LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBpZHBmX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYzoyNjc4Olx0Lm5kb19od3RzdGFtcF9zZXQgPSBpZHBmX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yNjc5LVx0Lm5kb19icGYgPSBpZHBmX3hkcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0zMDM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWdiX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzA2My1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGlnYl9wdHBfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzA2NDpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IGlnYl9wdHBfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzA2NS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTY5ODE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZ2NfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy02OTk4LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gaWdjX3B0cF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo2OTk5Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaWdjX3B0cF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy03MDAwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTExMDcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXhnYmVfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTExMTYtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBpeGdiZV9wdHBfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjExMTE3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaXhnYmVfcHRwX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTExOC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTU4MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtdnBwMl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTU4MjQtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBtdnBwMl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo1ODI1Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gbXZwcDJfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNTgyNi19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmM9Mjk1MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG90eDJfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTI5NzEtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBvdHgyX2NvbmZpZ19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjI5NzI6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBvdHgyX2NvbmZpZ19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTI5NzMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jPTUyND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG90eDJ2Zl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtNTM2LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBvdHgyX2NvbmZpZ19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjUzNzpcdC5uZG9faHd0c3RhbXBfc2V0ID0gb3R4Ml9jb25maWdfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYy01MzgtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jPTI4MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtbHg0X25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0yODQ2LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gbWx4NF9lbl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jOjI4NDc6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBtbHg0X2VuX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjg0OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTMyND1jb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWx4NWVfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTUzNDQtXHQubmRvX2h3dHN0YW1wX2dldCAgICAgICAgPSBtbHg1ZV9od3RzdGFtcF9nZXRfbmRvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1MzQ1Olx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgID0gbWx4NWVfaHd0c3RhbXBfc2V0X25kbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTM0Ni0jaWZkZWYgQ09ORklHX01MWDVfRU5fQVJGU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jPTY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWx4NWlfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYy03Mi1cdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgICA9IG1seDVpX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jOjczOlx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgID0gbWx4NWlfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMtNzQtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jPTE0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seDVpX3BrZXlfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jLTE1MS1cdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgICA9IG1seDVpX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYl92bGFuLmM6MTUyOlx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgID0gbWx4NWlfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liX3ZsYW4uYy0xNTMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jPTExOTI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtbHhzd19zcF9wb3J0X25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy0xMjA2LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gbWx4c3dfc3BfcG9ydF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjEyMDc6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBtbHhzd19zcF9wb3J0X2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtMTIwOC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NTU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZmJuaWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTU3MC1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGZibmljX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6NTcxOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gZmJuaWNfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy01NzItfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzQ5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxhbjc0M3hfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzUwNS1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGxhbjc0M3hfcHRwX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNTA2Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gbGFuNzQzeF9wdHBfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM1MDctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz01MDE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW45NjZ4X3BvcnRfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy01MTUtXHQubmRvX2h3dHN0YW1wX2dldFx0XHQ9IGxhbjk2NnhfcG9ydF9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzo1MTY6XHQubmRvX2h3dHN0YW1wX3NldFx0XHQ9IGxhbjk2NnhfcG9ydF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy01MTctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9uZXRkZXYuYz0yNDg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jLTI2MC1cdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgID0gc3Bhcng1X3BvcnRfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmM6MjYxOlx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgPSBzcGFyeDVfcG9ydF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9uZXRkZXYuYy0yNjItfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz05NDg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBvY2Vsb3RfcG9ydF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTk2NC1cdC5uZG9faHd0c3RhbXBfZ2V0XHRcdD0gb2NlbG90X3BvcnRfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6OTY1Olx0Lm5kb19od3RzdGFtcF9zZXRcdFx0PSBvY2Vsb3RfcG9ydF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy05NjYtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9va2ktc2VtaS9wY2hfZ2JlL3BjaF9nYmVfbWFpbi5jPTIzNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBwY2hfZ2JlX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2tpLXNlbWkvcGNoX2diZS9wY2hfZ2JlX21haW4uYy0yMzU3LVx0Lm5kb19od3RzdGFtcF9nZXQgPSBwY2hfZ2JlX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29raS1zZW1pL3BjaF9nYmUvcGNoX2diZV9tYWluLmM6MjM1ODpcdC5uZG9faHd0c3RhbXBfc2V0ID0gcGNoX2diZV9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9va2ktc2VtaS9wY2hfZ2JlL3BjaF9nYmVfbWFpbi5jLTIzNTktfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9pb25pYy9pb25pY19saWYuYz0yODA1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaW9uaWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9pb25pYy9pb25pY19saWYuYy0yODI4LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gaW9uaWNfaHdzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9pb25pYy9pb25pY19saWYuYzoyODI5Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gaW9uaWNfaHdzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9pb25pYy9pb25pY19saWYuYy0yODMwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmM9NjkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcWVkZV9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jLTcyNS1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IHFlZGVfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmM6NzI2Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gcWVkZV9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uYy03MjctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTI2MDU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyByYXZiX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yNjE4LVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gcmF2Yl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jOjI2MTk6XHQubmRvX2h3dHN0YW1wX3NldFx0PSByYXZiX2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMjYyMC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM9MTg3MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHJzd2l0Y2hfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE4ODEtXHQubmRvX2h3dHN0YW1wX2dldCA9IHJzd2l0Y2hfaHdzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jOjE4ODI6XHQubmRvX2h3dHN0YW1wX3NldCA9IHJzd2l0Y2hfaHdzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE4ODMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYz0xMTczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcnRzbl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jLTExODAtXHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBldGhfbWFjX2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYzoxMTgxOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gcnRzbl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYy0xMTgyLVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gcnRzbl9od3RzdGFtcF9nZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmeC5jPTU2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVmeF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZnguYy01ODEtXHQubmRvX3ZsYW5fcnhfa2lsbF92aWRcdD0gZWZ4X3ZsYW5fcnhfa2lsbF92aWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4LmM6NTgyOlx0Lm5kb19od3RzdGFtcF9zZXRcdD0gZWZ4X2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZnguYy01ODMtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBlZnhfaHd0c3RhbXBfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9lZnguYz01OTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlZnhfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvc2llbmEvZWZ4LmMtNjA4LVx0Lm5kb192bGFuX3J4X2tpbGxfdmlkXHQ9IGVmeF92bGFuX3J4X2tpbGxfdmlkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2VmeC5jOjYwOTpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IGVmeF9zaWVuYV9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvc2llbmEvZWZ4LmMtNjEwLVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gZWZ4X3NpZW5hX2h3dHN0YW1wX2dldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMjQtXHQubmRvX2h3dHN0YW1wX2dldCA9IHN0bW1hY19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMjU6XHQubmRvX2h3dHN0YW1wX3NldCA9IHN0bW1hY19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMjYtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTE5NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhbTY1X2Nwc3dfbnVzc19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMTk4OC1cdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgID0gYW02NV9jcHN3X251c3NfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYzoxOTg5Olx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgPSBhbTY1X2Nwc3dfbnVzc19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTE5OTAtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmM9MTE5OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGNwc3dfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmMtMTIxNy1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGNwc3dfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jOjEyMTg6XHQubmRvX2h3dHN0YW1wX3NldFx0PSBjcHN3X2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMjE5LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYz0xMTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgY3Bzd19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmMtMTE2OC1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGNwc3dfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYzoxMTY5Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gY3Bzd19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jLTExNzAtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0xNjM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW1hY19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE2NTItXHQubmRvX2h3dHN0YW1wX2dldCA9IGljc3NnX25kb19nZXRfdHNfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTY1MzpcdC5uZG9faHd0c3RhbXBfc2V0ID0gaWNzc2dfbmRvX3NldF90c19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNjU0LVx0Lm5kb194c2tfd2FrZXVwID0gcHJ1ZXRoX3hza193YWtldXAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jPTc0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVtYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmMtNzUzLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBpY3NzZ19uZG9fZ2V0X3RzX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYzo3NTQ6XHQubmRvX2h3dHN0YW1wX3NldCA9IGljc3NnX25kb19zZXRfdHNfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jLTc1NS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL25ldGNwX2NvcmUuYz0xNzg0PXN0YXRpYyBpbnQgbmV0Y3BfbmRvX2h3dHN0YW1wX2dldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmMtMTgwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL25ldGNwX2NvcmUuYzoxODA3OnN0YXRpYyBpbnQgbmV0Y3BfbmRvX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL25ldGNwX2NvcmUuYy0xODA4LVx0XHRcdFx0ICBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL25ldGNwX2NvcmUuYz0xOTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbmV0Y3BfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmMtMjAxMS1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IG5ldGNwX25kb19od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmM6MjAxMjpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IG5ldGNwX25kb19od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmMtMjAxMy19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz02NzA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZ2JlX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTY4NC1cdC5uZG9fdmxhbl9yeF9raWxsX3ZpZCAgID0gd3hfdmxhbl9yeF9raWxsX3ZpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo2ODU6XHQubmRvX2h3dHN0YW1wX3NldCAgICAgICA9IHd4X2h3dHN0YW1wX3NldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy02ODYtXHQubmRvX2h3dHN0YW1wX2dldCAgICAgICA9IHd4X2h3dHN0YW1wX2dldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB0eGdiZV9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTcxMC1cdC5uZG9fdmxhbl9yeF9raWxsX3ZpZCAgID0gd3hfdmxhbl9yeF9raWxsX3ZpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjcxMTpcdC5uZG9faHd0c3RhbXBfc2V0ICAgICAgID0gd3hfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzEyLVx0Lm5kb19od3RzdGFtcF9nZXQgICAgICAgPSB3eF9od3RzdGFtcF9nZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYz0xNDIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXhwNHh4X25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy0xNDMxLVx0Lm5kb19od3RzdGFtcF9nZXQgPSBpeHA0eHhfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYzoxNDMyOlx0Lm5kb19od3RzdGFtcF9zZXQgPSBpeHA0eHhfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy0xNDMzLX07XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTExOTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMTYtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBtYWN2bGFuX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMjE3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gbWFjdmxhbl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTIxOC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTk4OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgTWFjdmxhbiBhbmQgSGFyZHdhcmUgVGltZXN0YW1waW5nKioKClJpZ2h0LCBzbyBgbWFjdmxhbmAgaXMgdXRpbGl6aW5nIHRoZSBgbmRvX2h3dHN0YW1wX3NldGAgYW5kIGBuZG9faHd0c3RhbXBfZ2V0YCBuZXRkZXZpY2Ugb3BlcmF0aW9ucy4gRXhjZWxsZW50LCB0aGF0JiMzOTtzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGZvciBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgc3VwcG9ydC4gSXQgbWVhbnMgdGhleSYjMzk7cmUgc2V0dGluZyB1cCB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIGhhcmR3YXJlIHRpbWVzdGFtcHMuIEkgbmVlZCB0byBkaWcgaW50byBgbWFjdmxhbl9od3RzdGFtcF9zZXRgIHNwZWNpZmljYWxseSB0byBzZWUgKmhvdyogdGhleSYjMzk7cmUgaGFuZGxpbmcgaXQuIEkmIzM5O20ga2VlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGFyZSBhc3NvY2lhdGluZyB0aGUgbWFjdmxhbiBpbnRlcmZhY2Ugd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIHRpbWVzdGFtcCBzb3VyY2UuIEFyZSB0aGV5IHNpbXBseSBwYXNzaW5nIHRoZSByZXF1ZXN0IGFsb25nIHRvIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGludGVyZmFjZSwgb3IgaXMgdGhlcmUgbW9yZSBjb21wbGV4IGxvZ2ljIGludm9sdmVkIHRvIGFjY291bnQgZm9yIHRoZSB2aXJ0dWFsIG5hdHVyZSBvZiBtYWN2bGFuPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBnb3RjaGFzIHdpdGggdGhlIG11bHRpcGxlIG1hY3ZsYW4gaW50ZXJmYWNlcyBvbiBhIHNpbmdsZSBwaHlzaWNhbCBwb3J0IGFuZCB0aW1lIGtlZXBpbmcgYWNjdXJhY3k/IFRoaXMgd2lsbCBiZSBpbnRlcmVzdGluZy4gTGV0JiMzOTtzIHNlZSBob3cgdGhpcyBpcyBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjdmxhbl9od3RzdGFtcF9zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jPTg5MT1zdGF0aWMgaW50IG1hY3ZsYW5faHd0c3RhbXBfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTg5OC1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzo4OTk6c3RhdGljIGludCBtYWN2bGFuX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTkwMC1cdFx0XHRcdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTExOTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMTYtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBtYWN2bGFuX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMjE3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gbWFjdmxhbl9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTIxOC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjUzNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbToKCioqTmV0d29yayBJbnRlcmZhY2UgU2VsZWN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG5ldHdvcmsgc2V0dXAgYW5kIGl0IGxvb2tzIGxpa2UgYG1hY3ZsYW5gIHNob3VsZCBiZSBwZXJmZWN0bHkgYWRlcXVhdGUgZm9yIHRoaXMgcGFydGljdWxhciBuZWVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgYHZldGhgIGludGVyZmFjZSBhbHNvIGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IG9wdGlvbnMgYmVmb3JlIEkgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25kb19od3RzdGFtcF9zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY5OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyBOZXR3b3JrIEludGVyZmFjZSBQb3NzaWJpbGl0aWVzKioKCkFscmlnaHQsIHNvIHRoZSBvcmlnaW5hbCBhc3N1bXB0aW9uIG9mIGB2ZXRoYCBiZWluZyB0aGUgc29sdXRpb24gaXMgaW5jb3JyZWN0LiBUaGF0IHBhdGggaXMgYSBkZWFkIGVuZC4gSSBuZWVkIHRvIHBpdm90LiBMZXQmIzM5O3Mgbm90IHdhc3RlIGFueSBtb3JlIHRpbWUgdGhlcmUuCgpNeSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIGBkdW1teWAuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGlzIGlzIGEgc2Vuc2libGUgbmV4dCBzdGVwIGluIHRoZSB0cm91Ymxlc2hvb3RpbmcgcHJvY2Vzcy4gUGVyaGFwcyBhIHNpbXBsZSwgc3RhdGVsZXNzIGludGVyZmFjZSBpcyB3aGF0JiMzOTtzIHJlcXVpcmVkIGhlcmUuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBjb25maWd1cmF0aW9uIGNhbiBwcm92aWRlIHRoZSBuZWNlc3NhcnkgZm91bmRhdGlvbi4gSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIHNvbWUgbGlrZWx5IHNjZW5hcmlvcywgc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgdGVzdHMgSSYjMzk7bGwgcGVyZm9ybSB0byBjb25maXJtIGl0cyB1dGlsaXR5IG9yIGxhY2sgdGhlcmVvZi4gVGltZSB0byBkaXZlIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kIHNlZSBpZiB0aGlzIGhvbGRzIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmRvX2h3dHN0YW1wX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2R1bW15LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjkzMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIENvbmNpc2UgTmVnYXRpdmUgUmVzcG9uc2UgJmFtcDsgU3Vic2VxdWVudCBTdHJhdGVneSoqCgpIbW0sICYjMzQ7Tm8uJiMzNDsgVGhhdCYjMzk7cyB0aGUgaW5pdGlhbCBndXQgcmVhY3Rpb24uIEEgc3dpZnQsIGFsbW9zdCByZWZsZXhpdmUgZGVuaWFsLiBVc3VhbGx5LCB0aGlzIG1lYW5zIEkmIzM5O3ZlIGVpdGhlciBlbmNvdW50ZXJlZCBhIGNvbmNlcHQgSSYjMzk7bSAqdmVyeSogZmFtaWxpYXIgd2l0aCwgYW5kIHRoZSBpbml0aWFsIHByb21wdCBzZWVtcyBvZmYsIG9yIHBlcmhhcHMgc29tZXRoaW5nIGZlZWxzIGZ1bmRhbWVudGFsbHkgZmxhd2VkLiBSYXRoZXIgdGhhbiBkd2VsbGluZyBvbiB0aGUgbmVnYXRpb24sIGxldCYjMzk7cyBwaXZvdC4gVGhlIGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCwgJiMzNDtMZXQmIzM5O3MgY2hlY2sgYGJvbmRpbmdgLCYjMzQ7IHN1Z2dlc3RzIGEgc3RyYXRlZ2ljIHJlZGlyZWN0aW9uLiBNeSBpbml0aWFsIG5lZ2F0aXZlIGltcHJlc3Npb24gaXMgcHJvbXB0aW5nIG1lIHRvIGV2YWx1YXRlIHRoZSBjb25uZWN0aW9uIHRvIGEgcmVsYXRlZCwgYW5kIHBlcmhhcHMgbW9yZSBwcmVjaXNlLCB0ZXJtIG9yIGNvbmNlcHQuIEkmIzM5O20gY2hvb3NpbmcgdG8gdW5wYWNrIHRoZSBlc3NlbmNlIG9mIHdoYXQgdGhhdCAmIzM5O25vJiMzOTsgcmVsYXRlcyB0byBieSBkaWdnaW5nIGRlZXBlciBpbnRvICYjMzk7Ym9uZGluZyYjMzk7LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZG9faHd0c3RhbXBfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm9uZF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk3Ni1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGJvbmRfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1OTc3Olx0Lm5kb19od3RzdGFtcF9zZXRcdD0gYm9uZF9od3RzdGFtcF9zZXQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NzgtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyODYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IG5ldHdvcmsgY29uZmlndXJhdGlvbnMgaGVyZS4gSWYgYGJvbmRpbmdgIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBtZXRob2QsIHRoZW4gdGhhdCBtZWFucyBib3RoIGBNQUNWTEFOYCBhbmQgYEJPTkRJTkdgIGFyZSBwcm9iYWJseSBzb2xpZCBvcHRpb25zIHRvIGhhdmUgb24gdGhlIHRhYmxlLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgYE1BQ1ZMQU5gIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgaWYgaXQgbmVlZHMgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHRvIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVmYXVsdCBzdGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQ1ZMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MTYzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMTY2LVx0dHJpc3RhdGUgXCYjMzQ7TUFDLVZMQU4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzUzOAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTmV0d29ya2luZyBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBNQUNWTEFOYC4gVGhhdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGlzIHB1enpsZSDigJMgYSBjcnVjaWFsIG1ldGhvZCBmb3IgbmV0d29yayB2aXJ0dWFsaXphdGlvbi4gSSYjMzk7bSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBpdHMgaW1wbGljYXRpb25zIGZvciBpc29sYXRpb24gYW5kIHJlc291cmNlIHNoYXJpbmcsIHRoZSBiZW5lZml0cyBvZiBtdWx0aXBsZSBNQUMgYWRkcmVzc2VzIHBlciBwaHlzaWNhbCBpbnRlcmZhY2UsIGFuZCB0aGUgcG90ZW50aWFsIGNvbXBsZXhpdGllcyBpbiByb3V0aW5nIGFuZCBicmlkZ2luZyBzY2VuYXJpb3MuCgpOb3csIGxldCYjMzk7cyBwaXZvdCB0byBgQk9ORElOR2AuIEkgbmVlZCB0byBhc3Nlc3MgaG93IGl0IHdvcmtzIHdpdGggYE1BQ1ZMQU5gLiBJJiMzOTttIGN1cmlvdXMgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBsaW5rIGFnZ3JlZ2F0aW9uIGZvciBpbmNyZWFzZWQgYmFuZHdpZHRoIGFuZCByZWR1bmRhbmN5LiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGlzIHNldHVwIGludm9sdmVzIGEgc29waGlzdGljYXRlZCBvcmNoZXN0cmF0aW9uIG9mIHRoZSBib25kaW5nIG1vZGVzIChhY3RpdmUtYmFja3VwLCBMQUNQLCBldGMuKSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBNQUNWTEFOIGludGVyZmFjZXMsIGFuZCB3aGF0IHRob3NlIGRldGFpbHMgbWlnaHQgYmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGVzZSBtZWNoYW5pc21zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQk9ORElORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0zOT1pZiBORVRfQ09SRVxuZHJpdmVycy9uZXQvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L0tjb25maWc6NDE6Y29uZmlnIEJPTkRJTkdcbmRyaXZlcnMvbmV0L0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtCb25kaW5nIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODU2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmV0d29yayBDb25maWd1cmF0aW9uIERlY2lzaW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBlbnN1cmUgd2UgaGF2ZSBhIG5ldHdvcmsgZGV2aWNlIHRoYXQgcHJvcGVybHkgc3VwcG9ydHMgaGFyZHdhcmUgdGltZXN0YW1waW5nIHZpYSBgbmRvX2h3dHN0YW1wX3NldGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGluY2x1ZGluZyBgTUFDVkxBTmAgYW5kIGBCT05ESU5HYCBjb25maWd1cmF0aW9ucyB3aXRoaW4gYEVuYWJsZUNvbmZpZ3NgIHdvdWxkIGJlIGEgZ29vZCBhcHByb2FjaCwgYmVjYXVzZSBJIGtub3cgdGhleSYjMzk7cmUgb2Z0ZW4gdXNlZCBmb3IgdGhpcyBraW5kIG9mIHNldHVwLgoKSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLiBJJiMzOTttIHJlbWVtYmVyaW5nIHRoYXQgYGV0aG5sX3NldF90c2NvbmZpZ2AgZG9lc24mIzM5O3QgKmRpcmVjdGx5KiBjYWxsIGBuZG9faHd0c3RhbXBfc2V0YCwgcmlnaHQ/IEl0IGNhbGxzIGBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdoaWNoIHRoZW4gbWlnaHQgdXNlIGl0PyBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGFuZCB2ZXJpZnkgdGhlIGV4YWN0IGNhbGwgY2hhaW4uIExldCBtZSBwdWxsIHVwIGBldGhubF9zZXRfdHNjb25maWdgIGFnYWluIGFuZCBtYWtlIHN1cmUgSSBoYXZlIHRoZSBkZXRhaWxzIHN0cmFpZ2h0LiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgcGF0aCBvZiB0aGUgaHd0c3RhbXAgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRodG9vbC90c2NvbmZpZy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDA6XHRcdFx0XHRcdFx0ICAgIHRzX2ZsYWdzX25hbWVzLCBpbmZvLVx1MDAzZWV4dGFjayxcbiA0MDE6XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmNvbmZpZ19tb2QpO1xuIDQwMjpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDQwMzpcdFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIDQwNDpcdFx0fVxuIDQwNTpcdFxuIDQwNjpcdFx0cmV0ID0gbmV0X2h3dHN0YW1wX3ZhbGlkYXRlKFx1MDAyNmh3dHN0X2NvbmZpZyk7XG4gNDA3Olx0XHRpZiAocmV0KVxuIDQwODpcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiA0MDk6XHRcbiA0MTA6XHRcdGlmIChod3Byb3ZfbW9kKSB7XG4gNDExOlx0XHRcdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnIHplcm9fY29uZmlnID0gezB9O1xuIDQxMjpcdFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKl9faHdwcm92O1xuIDQxMzpcdFxuIDQxNDpcdFx0XHQvKiBEaXNhYmxlIGN1cnJlbnQgdGltZSBzdGFtcGluZyBpZiB3ZSB0cnkgdG8gZW5hYmxlXG4gNDE1Olx0XHRcdCAqIGFub3RoZXIgb25lXG4gNDE2Olx0XHRcdCAqL1xuIDQxNzpcdFx0XHRyZXQgPSBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihkZXYsIFx1MDAyNnplcm9fY29uZmlnLCBpbmZvLVx1MDAzZWV4dGFjayk7XG4gNDE4Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNDE5Olx0XHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gNDIwOlx0XG4gNDIxOlx0XHRcdC8qIENoYW5nZSB0aGUgc2VsZWN0ZWQgaHd0c3RhbXAgc291cmNlICovXG4gNDIyOlx0XHRcdF9faHdwcm92ID0gcmN1X3JlcGxhY2VfcG9pbnRlcihkZXYtXHUwMDNlaHdwcm92LCBod3Byb3YsXG4gNDIzOlx0XHRcdFx0XHRcdCAgICAgICBuZXRkZXZfaXNfbG9ja2VkX29wc19jb21wYXQoZGV2KSk7XG4gNDI0Olx0XHRcdGlmIChfX2h3cHJvdilcbiA0MjU6XHRcdFx0XHRrZnJlZV9yY3UoX19od3Byb3YsIHJjdV9oZWFkKTtcbiA0MjY6XHRcdH1cbiA0Mjc6XHRcbiA0Mjg6XHRcdGlmIChjb25maWdfbW9kKSB7XG4gNDI5Olx0XHRcdHJldCA9IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKGRldiwgXHUwMDI2aHd0c3RfY29uZmlnLFxuIDQzMDpcdFx0XHRcdFx0XHQgICAgICBpbmZvLVx1MDAzZWV4dGFjayk7XG4gNDMxOlx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNDMyOlx0XHRcdFx0cmV0dXJuIHJldDtcbiA0MzM6XHRcdH1cbiA0MzQ6XHRcbiA0MzU6XHRcdHJldCA9IHRzY29uZmlnX3NlbmRfcmVwbHkoZGV2LCBpbmZvKTtcbiA0MzY6XHRcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHJldCAhPSAtRU9QTk9UU1VQUCkge1xuIDQzNzpcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjayxcbiA0Mzg6XHRcdFx0XHQgICAgICAgXCYjMzQ7ZXJyb3Igd2hpbGUgcmVhZGluZyB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gc2V0XCYjMzQ7KTtcbiA0Mzk6XHRcdFx0cmV0dXJuIHJldDtcbiA0NDA6XHRcdH1cbiA0NDE6XHRcbiA0NDI6XHRcdC8qIHRzY29uZmlnIGhhcyBubyBub3RpZmljYXRpb24gKi9cbiA0NDM6XHRcdHJldHVybiAwO1xuIDQ0NDpcdFxuIDQ0NTpcdGVycl9mcmVlX2h3cHJvdjpcbiA0NDY6XHRcdGtmcmVlKGh3cHJvdik7XG4gNDQ3Olx0XG4gNDQ4Olx0XHRyZXR1cm4gcmV0O1xuIDQ0OTpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4OTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyB0aGUgSGFyZHdhcmUgVGltZXN0YW1waW5nIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBzbyB0aGUgc3lzdGVtIGlzIGNhbGxpbmcgYGRldl9zZXRfaHd0c3RhbXBfcGh5bGliYC4gVGhhdCBpbW1lZGlhdGVseSB0cmlnZ2VycyBteSBuZXR3b3JrIHN0YWNrIGV4cGVydGlzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaGVyZSB3aXRoIGhhcmR3YXJlIHRpbWVzdGFtcGluZywgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZ29pbmcgdG8gZG8gaXMgbG9jYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2X3NldF9od3RzdGFtcF9waHlsaWJgLiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGRlYWxzIHdpdGggZGV2aWNlIGlvY3RscyBhbmQgcG90ZW50aWFsIGhhcmR3YXJlIGludGVyYWN0aW9uIHJlbGF0ZWQgdG8gdGltZXN0YW1waW5nIEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7bGwgZmluZCBpdCBpbiBgbmV0L2NvcmUvZGV2X2lvY3RsLmNgLCBvciBzb21ldGhpbmcgY2xvc2VseSByZWxhdGVkIGluIHRoZSBuZXR3b3JraW5nIGNvcmUgb3IgbWF5YmUgaW4gdGhlIHBoeWxpYiBpdHNlbGYsIGRlcGVuZGluZyBvbiBob3cgdGhpcyBpcyBzdHJ1Y3R1cmVkLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZGV2Lmg9NDAyPXZvaWQga2lja19kZWZlcl9saXN0X3B1cmdlKHVuc2lnbmVkIGludCBjcHUpO1xubmV0L2NvcmUvZGV2LmgtNDAzLVxubmV0L2NvcmUvZGV2Lmg6NDA0OmludCBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2NvcmUvZGV2LmgtNDA1LVx0XHRcdCAgICBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9jb3JlL2Rldl9pb2N0bC5jPTI4Mj1zdGF0aWMgaW50IGRldl9nZXRfaHd0c3RhbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIpXG4tLVxubmV0L2NvcmUvZGV2X2lvY3RsLmMtMzE1LS8qKlxubmV0L2NvcmUvZGV2X2lvY3RsLmM6MzE2OiAqIGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKCkgLSBDaGFuZ2UgaGFyZHdhcmUgdGltZXN0YW1waW5nIG9mIE5JQ1xubmV0L2NvcmUvZGV2X2lvY3RsLmMtMzE3LSAqXHRvciBvZiBhdHRhY2hlZCBwaHlsaWIgUEhZXG4tLVxubmV0L2NvcmUvZGV2X2lvY3RsLmMtMzI3LSAqL1xubmV0L2NvcmUvZGV2X2lvY3RsLmM6MzI4OmludCBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2NvcmUvZGV2X2lvY3RsLmMtMzI5LVx0XHRcdCAgICBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9jb3JlL2Rldl9pb2N0bC5jPTM5MT1zdGF0aWMgaW50IGRldl9zZXRfaHd0c3RhbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIpXG4tLVxubmV0L2NvcmUvZGV2X2lvY3RsLmMtNDIyLVx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XG5uZXQvY29yZS9kZXZfaW9jdGwuYzo0MjM6XHRlcnIgPSBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihkZXYsIFx1MDAyNmtlcm5lbF9jZmcsIFx1MDAyNmV4dGFjayk7XG5uZXQvY29yZS9kZXZfaW9jdGwuYy00MjQtXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuLS1cbm5ldC9jb3JlL2Rldl9pb2N0bC5jPTQ2MT1pbnQgZ2VuZXJpY19od3RzdGFtcF9zZXRfbG93ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9kZXZfaW9jdGwuYy00NzQtXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbm5ldC9jb3JlL2Rldl9pb2N0bC5jOjQ3NTpcdGVyciA9IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKGRldiwga2VybmVsX2NmZywgZXh0YWNrKTtcbm5ldC9jb3JlL2Rldl9pb2N0bC5jLTQ3Ni1cdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYz0zMDM9c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbi0tXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQxNi1cdFx0ICovXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjQxNzpcdFx0cmV0ID0gZGV2X3NldF9od3RzdGFtcF9waHlsaWIoZGV2LCBcdTAwMjZ6ZXJvX2NvbmZpZywgaW5mby1cdTAwM2VleHRhY2spO1xubmV0L2V0aHRvb2wvdHNjb25maWcuYy00MTgtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxubmV0L2V0aHRvb2wvdHNjb25maWcuYy00MjgtXHRpZiAoY29uZmlnX21vZCkge1xubmV0L2V0aHRvb2wvdHNjb25maWcuYzo0Mjk6XHRcdHJldCA9IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKGRldiwgXHUwMDI2aHd0c3RfY29uZmlnLFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy00MzAtXHRcdFx0XHRcdCAgICAgIGluZm8tXHUwMDNlZXh0YWNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5MjAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uCgoqKkRpdmluZyBpbnRvIHRoZSBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGhvdyBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgZ2V0cyBjb25maWd1cmVkLiBTcGVjaWZpY2FsbHksIGBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYmAgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmU7IGl0JiMzOTtzIHRoZSBvbmUgdGhhdCB1bHRpbWF0ZWx5IHNldHMgdGhlIGhhcmR3YXJlIHRpbWVzdGFtcGluZyBjb25maWd1cmF0aW9uLiBJIGNhbiBzZWUgdGhhdCBpdCBlbmRzIHVwIGNhbGxpbmcgc29tZXRoaW5nIGxpa2UgYG5kb19od3RzdGFtcF9zZXRgIG9yIGEgc2ltaWxhciBmdW5jdGlvbiwgd2hpY2ggSSB3b3VsZCBleHBlY3QuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBsb29raW5nIGEgbGl0dGxlIGNsb3NlciwgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWAgY29tZXMgaW50byBwbGF5LiBBbmQgaXQmIzM5O3MgZG9pbmcgYSBjaGVjaywgYW5kIEkgc2VlIGAhb3BzLSZndDtuZG9faHd0c3RhbXBfc2V0IHx8ICFvcHMtJmd0O25kb19od3RzdGFtcF9nZXRgLiBBaCwgb2theSwgc28gaWYgdGhlIGRldmljZSBkcml2ZXIgKmRvZXNuJiMzOTt0KiBpbXBsZW1lbnQgYm90aCB0aGUgYG5kb19od3RzdGFtcF9zZXRgICphbmQqIGBuZG9faHd0c3RhbXBfZ2V0YCBvcGVyYXRpb25zLCB0aGlzIHZhbGlkYXRpb24gZnVuY3Rpb24gcmV0dXJucyBgLUVPUE5PVFNVUFBgIHJlYWxseSBlYXJseS4gVGhhdCBtZWFucyBpZiBlaXRoZXIgb2YgdGhvc2UgYXJlIG5vdCBpbXBsZW1lbnRlZCB0aGVuIGBldGhubF9zZXRfdHNjb25maWdgIHdvbiYjMzk7dCBldmVuIGJlIGNhbGxlZCBsYXRlci4KCkhtbSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBnbyBiYWNrIGFuZCByZS1leGFtaW5lIGBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGVgIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IGVhcmx5IGV4aXQgY29uZGl0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9ldGh0b29sL3RzY29uZmlnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1MTpcdHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnX3ZhbGlkYXRlKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXG4gMjUyOlx0XHRcdFx0XHQgICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiAyNTM6XHR7XG4gMjU0Olx0XHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgKm9wcyA9IHJlcV9iYXNlLVx1MDAzZWRldi1cdTAwM2VuZXRkZXZfb3BzO1xuIDI1NTpcdFxuIDI1NjpcdFx0aWYgKCFvcHMtXHUwMDNlbmRvX2h3dHN0YW1wX3NldCB8fCAhb3BzLVx1MDAzZW5kb19od3RzdGFtcF9nZXQpXG4gMjU3Olx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiAyNTg6XHRcbiAyNTk6XHRcdHJldHVybiAxO1xuIDI2MDpcdH1cbiAyNjE6XHRcbiAyNjI6XHRzdGF0aWMgc3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpcbiAyNjM6XHR0c2NvbmZpZ19zZXRfaHdwcm92X2Zyb21fZGVzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIDI2NDpcdFx0XHRcdCAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gMjY1Olx0XHRcdFx0ICAgICAgc3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyX2Rlc2MgKmh3cHJvdl9kZXNjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY0MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgUmVxdWlyZW1lbnRzKioKCk9rYXksIHNvIHRoZSBjb2RlIGNsZWFybHkgc3RhdGVzIGl0JiMzOTtsbCByZXR1cm4gYW4gYC1FT1BOT1RTVVBQYCBlcnJvciBpZiB0aGUgYG5kb19od3RzdGFtcF9zZXRgIG9yIGBuZG9faHd0c3RhbXBfZ2V0YCBmdW5jdGlvbiBwb2ludGVycyBhcmVuJiMzOTt0IHByZXNlbnQgaW4gdGhlIG5ldHdvcmsgZGV2aWNlJiMzOTtzIE5ESVMgaW50ZXJmYWNlLiBUaGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIFRoZSBpbXBsaWNhdGlvbiBpcyBvYnZpb3VzOiB3ZSBhYnNvbHV0ZWx5IG5lZWQgYSBkZXZpY2UgdGhhdCBhY3R1YWxseSAqaW1wbGVtZW50cyogdGhvc2UgZnVuY3Rpb25zLgoKTm93LCB3aGljaCBkZXZpY2VzIGFyZSBsaWtlbHkgY2FuZGlkYXRlcyBmb3IgdGhpcz8gVGhpbmtpbmcgaXQgdGhyb3VnaCwgYE1BQ1ZMQU5gIGFuZCBgQk9ORElOR2AgaW1tZWRpYXRlbHkgc3ByaW5nIHRvIG1pbmQgYXMgcG9zc2liaWxpdGllcy4gVGhleSYjMzk7cmUgdmlydHVhbCBpbnRlcmZhY2VzLCBhbmQgdGhleSBvZnRlbiBpbnRlcmFjdCB3aXRoIGhhcmR3YXJlIGluIGludGVyZXN0aW5nIHdheXMuIFRoZXkmIzM5O3JlIHdvcnRoIGludmVzdGlnYXRpbmcgZnVydGhlci4KCkJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgY29kZSBmb3IgdGhvc2Ugc3BlY2lmaWMgZHJpdmVycywgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIE1BQ1ZMQU4gaGFzIGFueSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgaXQgaGFuZGxlcyBoYXJkd2FyZSB0aW1lc3RhbXBpbmcuIEJldHRlciB0byBoYXZlIGFsbCB0aGUgY29udGV4dCB1cGZyb250LCBiZWZvcmUgZ2V0dGluZyBib2dnZWQgZG93biBpbiB0aGUgZGV0YWlscy4gVGhpcyBpbml0aWFsIHN3ZWVwIHNob3VsZCBlbnN1cmUgSSBkb24mIzM5O3Qgb3Zlcmxvb2sgYW55IGNydWNpYWwgc3RlcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUNWTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTE2Mz1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cbmRyaXZlcnMvbmV0L0tjb25maWc6MTY1OmNvbmZpZyBNQUNWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Ni1cdHRyaXN0YXRlIFwmIzM0O01BQy1WTEFOIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwNTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbiBpcyBzdHJ1Y3R1cmVkLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgZmlsZSBpcyB1c3VhbGx5IHRoZSBwbGFjZSB0byBzdGFydC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFyb3VuZCBsaW5lIDE2NSBvciBzby4gVGhhdCBzaG91bGQgYmUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGRlZmluZWQgYW5kIGhvdyB0aGUgb3B0aW9ucyBhcmUgbmVzdGVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBjb3JlIGRyaXZlciBjb25maWd1cmF0aW9uIHNldHRpbmdzIHRoZXJlIOKAkyB0aGluZ3MgbGlrZSBpbnRlcmZhY2UgdHlwZXMsIHByb3RvY29sIHN1cHBvcnQsIGFuZCBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byB0cmFjZSBkZXBlbmRlbmNpZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB2YXJpb3VzIHNldHRpbmdzIG9uIHRoZSBidWlsZC4gSXQmIzM5O3MgYSBiaXQgbGlrZSBhcmNoYWVvbG9neSwgdHJhY2luZyB0aGUgbGF5ZXJzIG9mIGRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24gY2hvaWNlcyBlbWJlZGRlZCBpbiB0aGUgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MDpcdFx0ICAmIzM5O2lmYjEmIzM5OyBldGMuXG4gMTYxOlx0XHQgIExvb2sgYXQgdGhlIGlwcm91dGUyIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IGZvciB1c2FnZSBldGNcbiAxNjI6XHRcbiAxNjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXCYjMzQ7XG4gMTY0Olx0XG4gMTY1Olx0Y29uZmlnIE1BQ1ZMQU5cbiAxNjY6XHRcdHRyaXN0YXRlIFwmIzM0O01BQy1WTEFOIHN1cHBvcnRcJiMzNDtcbiAxNjc6XHRcdGhlbHBcbiAxNjg6XHRcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBtYXAgcGFja2V0cyB0b1xuIDE2OTpcdFx0ICBvciBmcm9tIHNwZWNpZmljIE1BQyBhZGRyZXNzZXMgdG8gYSBwYXJ0aWN1bGFyIGludGVyZmFjZS5cbiAxNzA6XHRcbiAxNzE6XHRcdCAgTWFjdmxhbiBkZXZpY2VzIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgXCYjMzQ7aXBcJiMzNDsgY29tbWFuZCBmcm9tIHRoZVxuIDE3MjpcdFx0ICBpcHJvdXRlMiBwYWNrYWdlIHN0YXJ0aW5nIHdpdGggdGhlIGlwcm91dGUyLTIuNi4yMyByZWxlYXNlOlxuIDE3MzpcdFxuIDE3NDpcdFx0ICBcJiMzNDtpcCBsaW5rIGFkZCBsaW5rIFx1MDAzY3JlYWwgZGV2XHUwMDNlIFsgYWRkcmVzcyBNQUMgXSBbIE5BTUUgXSB0eXBlIG1hY3ZsYW5cJiMzNDtcbiAxNzU6XHRcbiAxNzY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDE3NzpcdFx0ICB3aWxsIGJlIGNhbGxlZCBtYWN2bGFuLlxuIDE3ODpcdFxuIDE3OTpcdGNvbmZpZyBNQUNWVEFQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNTkzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogTmV0d29yayBWaXJ0dWFsaXphdGlvbiBPcHRpb25zKioKClJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBObyBleHRlcm5hbCBzb2Z0d2FyZSBkZXBlbmRlbmNpZXMg4oCTIHRoYXQmIzM5O3MgYSBrZXkgYWR2YW50YWdlLiBXaGVuIEkgc2VlIHRoYXQsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYE1BQ1ZMQU5gLiBJdCYjMzk7cyBhIGNsZWFuLCBlZmZpY2llbnQgd2F5IHRvIGdldCBtdWx0aXBsZSBuZXR3b3JrIGludGVyZmFjZXMgYXNzb2NpYXRlZCB3aXRoIGEgc2luZ2xlIHBoeXNpY2FsIE5JQyBvbiBhIGhvc3QuIFByZXR0eSBtdWNoIHRoZSBmaXJzdCB0aGluZyBJIHdvdWxkIGNvbnNpZGVyIGZvciB0aGlzIHNvcnQgb2YgdGFzay4KCkJ1dCBob2xkIG9uLCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSBgTUFDVkxBTmAgcGF0aCwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBhbmdsZXMuIFdoYXQgYWJvdXQgcmVkdW5kYW5jeSBhbmQgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnQgYXQgdGhlIHBoeXNpY2FsIGxheWVyPyBCb25kaW5nIGlzICphbHdheXMqIHdvcnRoIGV2YWx1YXRpbmcsIGVzcGVjaWFsbHkgaW4gYW4gZW52aXJvbm1lbnQgd2hlcmUgbmV0d29yayB1cHRpbWUgYW5kIGJhbmR3aWR0aCBhcmUgY3JpdGljYWwuIEkgbmVlZCB0byB3ZWlnaCB0aGUgYmVuZWZpdHMgb2YgYE1BQ1ZMQU5gJiMzOTtzIHNpbXBsaWNpdHkgYWdhaW5zdCB0aGUgcG90ZW50aWFsIHJlc2lsaWVuY2UgYW5kIGFnZ3JlZ2F0aW9uIGNhcGFiaWxpdGllcyB0aGF0IGEgYm9uZGluZyBzZXR1cCBjb3VsZCBvZmZlci4gV2hpY2ggaXMgdGhlIGJlc3QgZml0LCBoZXJlPyBJcyBpdCBhIHNpbmdsZSBpbnRlcmZhY2UsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXg/IEkgbmVlZCB0byBhc2sgYSBmZXcgbW9yZSBxdWVzdGlvbnMgdG8gZGVjaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFlvdSBjYW4gc2F5IE4gaGVyZSBpZiB5b3UgZG8gbm90IGludGVuZCB0byB1c2UgYW55IG9mIHRoZVxuICAzNzpcdFx0ICBuZXR3b3JraW5nIGNvcmUgZHJpdmVycyAoaS5lLiBWTEFOLCBicmlkZ2luZywgYm9uZGluZywgZXRjLilcbiAgMzg6XHRcbiAgMzk6XHRpZiBORVRfQ09SRVxuICA0MDpcdFxuICA0MTpcdGNvbmZpZyBCT05ESU5HXG4gIDQyOlx0XHR0cmlzdGF0ZSBcJiMzNDtCb25kaW5nIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4gIDQzOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgNDQ6XHRcdGRlcGVuZHMgb24gVExTIHx8IFRMU19ERVZJQ0U9blxuICA0NTpcdFx0aGVscFxuICA0NjpcdFx0ICBTYXkgJiMzOTtZJiMzOTsgb3IgJiMzOTtNJiMzOTsgaWYgeW91IHdpc2ggdG8gYmUgYWJsZSB0byAmIzM5O2JvbmQmIzM5OyBtdWx0aXBsZSBFdGhlcm5ldFxuICA0NzpcdFx0ICBDaGFubmVscyB0b2dldGhlci4gVGhpcyBpcyBjYWxsZWQgJiMzOTtFdGhlcmNoYW5uZWwmIzM5OyBieSBDaXNjbyxcbiAgNDg6XHRcdCAgJiMzOTtUcnVua2luZyYjMzk7IGJ5IFN1biwgODAyLjNhZCBieSB0aGUgSUVFRSwgYW5kICYjMzk7Qm9uZGluZyYjMzk7IGluIExpbnV4LlxuICA0OTpcdFxuICA1MDpcdFx0ICBUaGUgZHJpdmVyIHN1cHBvcnRzIG11bHRpcGxlIGJvbmRpbmcgbW9kZXMgdG8gYWxsb3cgZm9yIGJvdGggaGlnaFxuICA1MTpcdFx0ICBwZXJmb3JtYW5jZSBhbmQgaGlnaCBhdmFpbGFiaWxpdHkgb3BlcmF0aW9uLlxuICA1MjpcdFxuICA1MzpcdFx0ICBSZWZlciB0byBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9ib25kaW5nLnJzdFx1MDAzZSBmb3IgbW9yZVxuICA1NDpcdFx0ICBpbmZvcm1hdGlvbi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxNzAKCQkJCQkJCW91dHB1dDogMTYxCgkJCQkJCQl0aG91Z2h0czogNjY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IEEgUmVmaW5lZCBBcHByb2FjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZvciBhIGZ1enppbmcgcGxhbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgZm9jdXNlZCBvbiBpZGVudGlmeWluZyB0aGUga2V5IG1vZGlmaWNhdGlvbnMgYW5kIGhvdyB0byByZWFjaCB0aGVtLiBGaXJzdCwgYEJPTkRJTkdgIGlzIHNhZmUgYmVjYXVzZSBpdCYjMzk7cyBidWlsdCBvbiBgSU5FVGAsIHNvIGBNQUNWTEFOYCBhbmQgYEJPTkRJTkdgIGFyZSB2YWxpZCBjb25maWd1cmF0aW9ucyB0byBhZGQgdG8gb3VyIHRhcmdldHMuICBBZGRpbmcgYEVUSFRPT0xfTkVUTElOS2AgaXMgYWxzbyBhIG5vLWJyYWluZXIgc2luY2UgaXQmIzM5O3MgZGVmYXVsdCAmIzM5O3kmIzM5OyBhbmQgd2UmIzM5O2xsIG5lZWQgaXQuIEkmIzM5O2xsIG1ha2UgYSBub3RlIG9mIHRoaXMuCgpOb3csIGxldCYjMzk7cyBwaW5wb2ludCB0aGUgZnVuY3Rpb25zIG9mIGludGVyZXN0LiAgVGhlIGNvZGUgaGlnaGxpZ2h0cyBgZXRobmxfc2V0X3RzY29uZmlnYCBhcyB0aGUgY29yZSBmdW5jdGlvbiwgYWxvbmcgd2l0aCBhIHJlbGF0ZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiwgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWAuIEkgY29uZmlybWVkIHRoYXQgYGV0aG5sX3NldF90c2NvbmZpZ2AgKmlzKiBzdGF0aWMsIGJ1dCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBiZWNhdXNlIGl0JiMzOTtzIGFuIGVudHJ5IHBvaW50IGZvciBuZXRsaW5rLiBUaGUgcHJvbXB0IHN0cmVzc2VzIHByZWZlcnJpbmcgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYnV0IHRoaXMgb25lIGlzIHRoZSByaWdodCBjaG9pY2UsIHNpbmNlIGl0JiMzOTtzIG5vdCBhY3R1YWxseSBpbmxpbmVkLgoKVGhlIGNvZGUmIzM5O3Mgc3RydWN0dXJlIGFsc28gcmV2ZWFscyB0aGF0IGBldGhubF9zZXRfdHNjb25maWdgIGlzIGNhbGxlZCB2aWEgYSBmdW5jdGlvbiBwb2ludGVyIGZyb20gYGV0aG5sX2RlZmF1bHRfc2V0X2RvaXRgLCBtZWFuaW5nIGl0JiMzOTtzIHRoZSByaWdodCBmdW5jdGlvbiB0byBmb2N1cyBvbiBmb3IgZnV6emluZy4gTm8gb3RoZXIgZnVuY3Rpb25zIHNlZW0gdG8gYmUgYWZmZWN0ZWQsIHNvIHRoYXQgbmFycm93cyB0aGUgc2NvcGUuCgpSZXZpZXdpbmcgdGhlIHBhdGNoIGl0c2VsZiBpcyB0aGUgbW9zdCBjcnVjaWFsIHBhcnQuIFRoZSBjaGFuZ2UgaW4gdGhlIHZhbGlkYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSByZXBsYWNpbmcgYGZmcyhyZXFfdHhfdHlwZSkgIT0gZmxzKHJlcV90eF90eXBlKWAgd2l0aCBgaHdlaWdodDMyKHJlcV90eF90eXBlKSAhPSAxYCwgaXMgYSBjbGVhciBmdW5jdGlvbmFsIHNoaWZ0LiAgSXQgYWRkcmVzc2VzIGEgYnVnLCBwcmV2ZW50aW5nIGByZXFfdHhfdHlwZWAgZnJvbSBiZWluZyB6ZXJvLCB3aGljaCwgYmFzZWQgb24gdGhlIGNvbnRleHQsIGNvdWxkIGhhdmUgY2F1c2VkIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLiAgVGhpcyBpcyBhIGNyaXRpY2FsIGZsYXcgYW5kLCB0aGVyZWZvcmUsIGEgcHJpbWUgdGFyZ2V0LiBTaW5jZSB0aGUgY29kZSBpcyByZWFjaGVkIHZpYSBgRVRIVE9PTF9NU0dfVFNDT05GSUdfU0VUYCBvdmVyIG5ldGxpbmssIGl0JiMzOTtzIGVhc2lseSByZWFjaGFibGUsIG1ha2luZyBpdCBhIHZlcnkgZ29vZCBmdXp6IHRhcmdldC4KCkluIHN1bW1hcnksIHRoZSBwYXRjaCBwcmVzZW50cyBhIGNsZWFyIHRhcmdldC4KCkhlcmUmIzM5O3MgbXkgZGlzdGlsbGVkIGZ1enppbmcgc3RyYXRlZ3k6CgoqICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZQoqICAgKipGb2N1c1N5bWJvbHM6KiogXFsmIzM0O2V0aG5sXF9zZXRcX3RzY29uZmlnJiMzNDtdCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogXFsmIzM0O0VUSFRPT0xcX05FVExJTksmIzM0OywgJiMzNDtNQUNWTEFOJiMzNDssICYjMzQ7Qk9ORElORyYjMzQ7XQoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjcml0aWNhbCBidWcgZml4IGJ5IG1vZGlmeWluZyB0aGUgdmFsaWRhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIGV0aHRvb2wgbmV0bGluayBzZXQgb3BlcmF0aW9uIGZvciBUU0NPTkZJRyAoZXRobmxcX3NldFxfdHNjb25maWcpLiBJdCBwcmV2ZW50cyBhIGJ1ZyB3aGVyZSBgcmVxX3R4X3R5cGUgPT0gMGAgd2FzIGFsbG93ZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gVGhlIGZ1bmN0aW9uIGlzIGVhc2lseSByZWFjaGFibGUgdmlhIG5ldGxpbmsuIFRvIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlLCBhIG5ldCBkZXZpY2Ugc3VwcG9ydGluZyBgbmRvX2h3dHN0YW1wX3NldGAgaXMgcmVxdWlyZWQsIG1ha2luZyBgTUFDVkxBTmAgYW5kIGBCT05ESU5HYCBleGNlbGxlbnQgY2hvaWNlcyB0byBlbmFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFVEhUT09MX05FVExJTksmIzM0OywKICAgICYjMzQ7TUFDVkxBTiYjMzQ7LAogICAgJiMzNDtCT05ESU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXRobmxfc2V0X3RzY29uZmlnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBldGh0b29sIG5ldGxpbmsgc2V0IG9wZXJhdGlvbiBmb3IgVFNDT05GSUcgKGV0aG5sX3NldF90c2NvbmZpZykuIEl0IGNoYW5nZXMgdGhlIGJlaGF2aW9yIGZvciByZXFfdHhfdHlwZSA9PSAwIGFuZCByZXFfcnhfZmlsdGVyID09IDAsIHdoaWNoIHdlcmUgcHJldmlvdXNseSBhbGxvd2VkIGFuZCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsuIFRvIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlLCBhIG5ldCBkZXZpY2Ugc3VwcG9ydGluZyBuZG9faHd0c3RhbXBfc2V0IGlzIHJlcXVpcmVkLCBzdWNoIGFzIE1BQ1ZMQU4gb3IgQk9ORElORy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVRIVE9PTF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O01BQ1ZMQU4mIzM0OywKICAgICYjMzQ7Qk9ORElORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V0aG5sX3NldF90c2NvbmZpZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIHNldCBvcGVyYXRpb24gZm9yIFRTQ09ORklHIChldGhubF9zZXRfdHNjb25maWcpLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciBmb3IgcmVxX3R4X3R5cGUgPT0gMCBhbmQgcmVxX3J4X2ZpbHRlciA9PSAwLCB3aGljaCB3ZXJlIHByZXZpb3VzbHkgYWxsb3dlZCBhbmQgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLiBUbyByZWFjaCB0aGUgbW9kaWZpZWQgY29kZSwgYSBuZXQgZGV2aWNlIHN1cHBvcnRpbmcgbmRvX2h3dHN0YW1wX3NldCBpcyByZXF1aXJlZCwgc3VjaCBhcyBNQUNWTEFOIG9yIEJPTkRJTkcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gbG9naWMgZm9yIGByZXFfdHhfdHlwZWAgYW5kIGByZXFfcnhfZmlsdGVyYCBpbiBgZXRobmxfc2V0X3RzY29uZmlnYCB0byBlbnN1cmUgZXhhY3RseSBvbmUgYml0IGlzIHNldCB1c2luZyBgaHdlaWdodDMyKHgpICE9IDFgIGluc3RlYWQgb2YgYGZmcyh4KSAhPSBmbHMoeClgLiBJdCBhbHNvIGFkZHMgbmV0bGluayBleHRlbmRlZCBhY2tub3dsZWRnbWVudCBlcnJvciByZXBvcnRpbmcgKGBOTF9TRVRfQkFEX0FUVFJgKSBmb3IgdGhlc2UgdmFsaWRhdGlvbiBmYWlsdXJlcy5cblxuVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgdmFsaWRhdGlvbiBhbmQgZXJyb3IgcmVwb3J0aW5nLiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvIG5vdCBjb3B5IGFueSBuZXcgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSBsb2dpYyBidWdzLCB3aGljaCBhcmUgbm90IHRoZSB0YXJnZXQgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjY5N2MwMjA0ZTllYzkzZjRlMWExOGEzMjg2ZDQ5OGQyNTExNzdmMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE5OjAyOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYyBiL25ldC9ldGh0b29sL3RzY29uZmlnLmMKaW5kZXggMjRiNjQ4NjIwMTFmMC4uNmJlM2FhNWQ0YmMxZSAxMDA2NDQKLS0tIGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jCkBAIC0zNTksOCAmIzQzOzM1OSwxMCBAQCBzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZyhzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLAogCQlpZiAocmV0ICZsdDsgMCkKIAkJCWdvdG8gZXJyX2ZyZWVfaHdwcm92OwogCi0JCS8qIFNlbGVjdCBvbmx5IG9uZSB0eCB0eXBlIGF0IGEgdGltZSAqLwotCQlpZiAoZmZzKHJlcV90eF90eXBlKSAhPSBmbHMocmVxX3R4X3R5cGUpKSB7CiYjNDM7CQkvKiBTZWxlY3QgZXhhY3RseSBvbmUgdHggdHlwZSBhdCBhIHRpbWUgKi8KJiM0MzsJCWlmIChod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDEpIHsKJiM0MzsJCQlOTF9TRVRfQkFEX0FUVFIoaW5mby0mZ3Q7ZXh0YWNrLAomIzQzOwkJCQkJdGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSk7CiAJCQlyZXQgPSAtRUlOVkFMOwogCQkJZ290byBlcnJfZnJlZV9od3Byb3Y7CiAJCX0KQEAgLTM4MCw4ICYjNDM7MzgyLDEwIEBAIHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsCiAJCWlmIChyZXQgJmx0OyAwKQogCQkJZ290byBlcnJfZnJlZV9od3Byb3Y7CiAKLQkJLyogU2VsZWN0IG9ubHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi8KLQkJaWYgKGZmcyhyZXFfcnhfZmlsdGVyKSAhPSBmbHMocmVxX3J4X2ZpbHRlcikpIHsKJiM0MzsJCS8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovCiYjNDM7CQlpZiAoaHdlaWdodDMyKHJlcV9yeF9maWx0ZXIpICE9IDEpIHsKJiM0MzsJCQlOTF9TRVRfQkFEX0FUVFIoaW5mby0mZ3Q7ZXh0YWNrLAomIzQzOwkJCQkJdGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTsKIAkJCXJldCA9IC1FSU5WQUw7CiAJCQlnb3RvIGVycl9mcmVlX2h3cHJvdjsKIAkJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0NgoJCQkJCQkJb3V0cHV0OiAxODkKCQkJCQkJCXRob3VnaHRzOiA2MTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQ29uc2lkZXJhdGlvbnMgZm9yIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGluIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCBhbmQgaXMgdHdlYWtpbmcgdGhlIGxvZ2ljIGZvciBjaGVja2luZyBgcmVxX3R4X3R5cGVgIGFuZCBgcmVxX3J4X2ZpbHRlcmAuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gY29uc2lkZXIgbWVtb3J5IHNhZmV0eSwgb2YgY291cnNlLiBMZXQmIzM5O3Mgc2VlLi4uIGl0JiMzOTtzIGNoYW5naW5nIHRoZSBjb25kaXRpb24gZnJvbSBgZmZzKHJlcV90eF90eXBlKSAhPSBmbHMocmVxX3R4X3R5cGUpYCB0byBgaHdlaWdodDMyKHJlcV90eF90eXBlKSAhPSAxYC4gUmlnaHQsIHNvIHRoZSBvbGQgY29kZSAqYWxsb3dlZCogYHJlcV90eF90eXBlYCB0byBiZSB6ZXJvLCB3aGljaCBpcyB3ZWlyZCwgYW5kIG5vdyB0aGUgbmV3IGNvZGUgY29ycmVjdGx5IGRpc2FsbG93cyBpdC4gVGhlIGNvbW1lbnQgY29uZmlybXMgdGhpcyBpcyBhYm91dCBzZWxlY3RpbmcgKmV4YWN0bHkqIG9uZSBUWCB0eXBlIChhIGxvZ2ljIGJ1ZyBmaXghKS4KCk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGlmIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEJ1dCwgbG9va2luZyBjbG9zZXIsIGl0ICpqdXN0KiBtb2RpZmllcyBhIGNvbmRpdGlvbmFsIGNoZWNrIGFuZCBhZGRzIGBOTF9TRVRfQkFEX0FUVFJgIGNhbGxzLiAgYE5MX1NFVF9CQURfQVRUUmAsIG9rYXksIHRoYXQmIzM5O3MganVzdCBzZXR0aW5nIGEgZmllbGQgKGBleHRhY2stJmd0O2JhZF9hdHRyYCkgaW4gYW4gZXhpc3RpbmcgYHN0cnVjdCBuZXRsaW5rX2V4dF9hY2tgLCB3aGljaCBpcyBzdGFuZGFyZCBuZXRsaW5rIGVycm9yIHJlcG9ydGluZy4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCwgbm8gdXNlci1zcGFjZSBkYXRhIGNvcGllcyBiZXlvbmQgdGhlIGVycm9yIHJlcG9ydGluZy4gIFRoZXJlZm9yZSwgaXQmIzM5O3Mgbm90IGV4cG9zaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gYGV4dGFja2AgaXMgYSBwb2ludGVyIHRvIHRoZSBleGlzdGluZyBgc3RydWN0IG5ldGxpbmtfZXh0X2Fja2AgYW5kIHRoZSBgTkxfU0VUX0JBRF9BVFRSYCBtYWNybyBqdXN0IHNldHMgYSBmaWVsZC4gR29vZCwgbm8gS01TQU4gY29uY2VybnMgYmFzZWQgb24gbWVtb3J5IGluaXRpYWxpemF0aW9uIGlzc3Vlcy4KClNvLCBpbiBlc3NlbmNlLCB0aGlzIHBhdGNoIHN0cmVuZ3RoZW5zIHRoZSB2YWxpZGF0aW9uIG9mIHRoZSBzZWxlY3RlZCBUWC9SWCB0eXBlcywgZW5zdXJpbmcgZXhhY3RseSBvbmUgb3B0aW9uIGlzIGNob3NlbiwgYW5kIGFkZHMgYmV0dGVyIGVycm9yIHJlcG9ydGluZy4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBjb250cm9sIGZsb3csIHdpdGggbm8gbWVtb3J5IGFsbG9jYXRpb24gb3IgZGF0YSBleHBvc3VyZS4gIFRoZSBwYXRjaCAqZml4ZXMqIGEgbG9naWMgYnVnLiAgU2luY2UgaXTigJlzIGEgbG9naWMgYnVnIGZpeCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIG1lbW9yeSBpc3N1ZXMsIEtNU0FOIGlzIG5vdCBuZWNlc3NhcnkgaGVyZS4gSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgd2UgZG9u4oCZdCBuZWVkIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBmb3IgdGhpcyBjaGFuZ2UuIEkmIzM5O2xsIGRvY3VtZW50IG15IHJlYXNvbmluZyBjbGVhcmx5IGZvciByZXZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgcmVxX3R4X3R5cGVgIGFuZCBgcmVxX3J4X2ZpbHRlcmAgaW4gYGV0aG5sX3NldF90c2NvbmZpZ2AgdG8gZW5zdXJlIGV4YWN0bHkgb25lIGJpdCBpcyBzZXQgdXNpbmcgYGh3ZWlnaHQzMih4KSAhPSAxYCBpbnN0ZWFkIG9mIGBmZnMoeCkgIT0gZmxzKHgpYC4gSXQgYWxzbyBhZGRzIG5ldGxpbmsgZXh0ZW5kZWQgYWNrbm93bGVkZ21lbnQgZXJyb3IgcmVwb3J0aW5nIChgTkxfU0VUX0JBRF9BVFRSYCkgZm9yIHRoZXNlIHZhbGlkYXRpb24gZmFpbHVyZXMuXG5cblRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IHZhbGlkYXRpb24gYW5kIGVycm9yIHJlcG9ydGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgY29weSBhbnkgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgbG9naWMgYnVncywgd2hpY2ggYXJlIG5vdCB0aGUgdGFyZ2V0IG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBmb3IgYHJlcV90eF90eXBlYCBhbmQgYHJlcV9yeF9maWx0ZXJgIGluIGBldGhubF9zZXRfdHNjb25maWdgIHRvIGVuc3VyZSBleGFjdGx5IG9uZSBiaXQgaXMgc2V0IHVzaW5nIGBod2VpZ2h0MzIoeCkgIT0gMWAgaW5zdGVhZCBvZiBgZmZzKHgpICE9IGZscyh4KWAuIEl0IGFsc28gYWRkcyBuZXRsaW5rIGV4dGVuZGVkIGFja25vd2xlZGdtZW50IGVycm9yIHJlcG9ydGluZyAoYE5MX1NFVF9CQURfQVRUUmApIGZvciB0aGVzZSB2YWxpZGF0aW9uIGZhaWx1cmVzLlxuXG5UaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyB2YWxpZGF0aW9uIGFuZCBlcnJvciByZXBvcnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG8gbm90IGNvcHkgYW55IG5ldyBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIGxvZ2ljIGJ1Z3MsIHdoaWNoIGFyZSBub3QgdGhlIHRhcmdldCBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzowMC42MDgyNzg0NjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTc2MDA1NzQwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVRIVE9PTF9ORVRMSU5LXCIsXG4gICAgXCJNQUNWTEFOXCIsXG4gICAgXCJCT05ESU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXRobmxfc2V0X3RzY29uZmlnXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBmb3IgYHJlcV90eF90eXBlYCBhbmQgYHJlcV9yeF9maWx0ZXJgIGluIGBldGhubF9zZXRfdHNjb25maWdgIHRvIGVuc3VyZSBleGFjdGx5IG9uZSBiaXQgaXMgc2V0IHVzaW5nIGBod2VpZ2h0MzIoeCkgIT0gMWAgaW5zdGVhZCBvZiBgZmZzKHgpICE9IGZscyh4KWAuIEl0IGFsc28gYWRkcyBuZXRsaW5rIGV4dGVuZGVkIGFja25vd2xlZGdtZW50IGVycm9yIHJlcG9ydGluZyAoYE5MX1NFVF9CQURfQVRUUmApIGZvciB0aGVzZSB2YWxpZGF0aW9uIGZhaWx1cmVzLlxcblxcblRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IHZhbGlkYXRpb24gYW5kIGVycm9yIHJlcG9ydGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgY29weSBhbnkgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgbG9naWMgYnVncywgd2hpY2ggYXJlIG5vdCB0aGUgdGFyZ2V0IG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIGV0aHRvb2wgbmV0bGluayBzZXQgb3BlcmF0aW9uIGZvciBUU0NPTkZJRyAoZXRobmxfc2V0X3RzY29uZmlnKS4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3IgZm9yIHJlcV90eF90eXBlID09IDAgYW5kIHJlcV9yeF9maWx0ZXIgPT0gMCwgd2hpY2ggd2VyZSBwcmV2aW91c2x5IGFsbG93ZWQgYW5kIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluay4gVG8gcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGUsIGEgbmV0IGRldmljZSBzdXBwb3J0aW5nIG5kb19od3RzdGFtcF9zZXQgaXMgcmVxdWlyZWQsIHN1Y2ggYXMgTUFDVkxBTiBvciBCT05ESU5HLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzowMC42MDgyODM1OTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTk1NDkwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI2OTdjMDIwNGU5ZWM5M2Y0ZTFhMThhMzI4NmQ0OThkMjUxMTc3ZjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTk6MDI6NTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvdHNjb25maWcuYyBiL25ldC9ldGh0b29sL3RzY29uZmlnLmNcXG5pbmRleCAyNGI2NDg2MjAxMWYwLi42YmUzYWE1ZDRiYzFlIDEwMDY0NFxcbi0tLSBhL25ldC9ldGh0b29sL3RzY29uZmlnLmNcXG4rKysgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jXFxuQEAgLTM1OSw4ICszNTksMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4gXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiBcXG4tXFx0XFx0LyogU2VsZWN0IG9ubHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXFxuLVxcdFxcdGlmIChmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSkpIHtcXG4rXFx0XFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXFxuK1xcdFxcdGlmIChod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDEpIHtcXG4rXFx0XFx0XFx0TkxfU0VUX0JBRF9BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG4rXFx0XFx0XFx0XFx0XFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSk7XFxuIFxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiBcXHRcXHR9XFxuQEAgLTM4MCw4ICszODIsMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4gXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiBcXG4tXFx0XFx0LyogU2VsZWN0IG9ubHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi9cXG4tXFx0XFx0aWYgKGZmcyhyZXFfcnhfZmlsdGVyKSAhPSBmbHMocmVxX3J4X2ZpbHRlcikpIHtcXG4rXFx0XFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi9cXG4rXFx0XFx0aWYgKGh3ZWlnaHQzMihyZXFfcnhfZmlsdGVyKSAhPSAxKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9CQURfQVRUUihpbmZvLVxcdTAwM2VleHRhY2ssXFxuK1xcdFxcdFxcdFxcdFxcdHRiW0VUSFRPT0xfQV9UU0NPTkZJR19SWF9GSUxURVJTXSk7XFxuIFxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiBcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjAxLjA3MTE5NzkxNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwNDgyMjQxMjg4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFVEhUT09MX05FVExJTktcIixcbiAgICBcIk1BQ1ZMQU5cIixcbiAgICBcIkJPTkRJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJldGhubF9zZXRfdHNjb25maWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgZXRodG9vbCBuZXRsaW5rIHNldCBvcGVyYXRpb24gZm9yIFRTQ09ORklHIChldGhubF9zZXRfdHNjb25maWcpLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciBmb3IgcmVxX3R4X3R5cGUgPT0gMCBhbmQgcmVxX3J4X2ZpbHRlciA9PSAwLCB3aGljaCB3ZXJlIHByZXZpb3VzbHkgYWxsb3dlZCBhbmQgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLiBUbyByZWFjaCB0aGUgbW9kaWZpZWQgY29kZSwgYSBuZXQgZGV2aWNlIHN1cHBvcnRpbmcgbmRvX2h3dHN0YW1wX3NldCBpcyByZXF1aXJlZCwgc3VjaCBhcyBNQUNWTEFOIG9yIEJPTkRJTkcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI2OTdjMDIwNGU5ZWM5M2Y0ZTFhMThhMzI4NmQ0OThkMjUxMTc3ZjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxOTowMjo1OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL3RzY29uZmlnLmMgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jXG5pbmRleCAyNGI2NDg2MjAxMWYwLi42YmUzYWE1ZDRiYzFlIDEwMDY0NFxuLS0tIGEvbmV0L2V0aHRvb2wvdHNjb25maWcuY1xuKysrIGIvbmV0L2V0aHRvb2wvdHNjb25maWcuY1xuQEAgLTM1OSw4ICszNTksMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiBcbi1cdFx0LyogU2VsZWN0IG9ubHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXG4tXHRcdGlmIChmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSkpIHtcbitcdFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXG4rXHRcdGlmIChod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDEpIHtcbitcdFx0XHROTF9TRVRfQkFEX0FUVFIoaW5mby1cdTAwM2VleHRhY2ssXG4rXHRcdFx0XHRcdHRiW0VUSFRPT0xfQV9UU0NPTkZJR19UWF9UWVBFU10pO1xuIFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gXHRcdH1cbkBAIC0zODAsOCArMzgyLDEwIEBAIHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gXG4tXHRcdC8qIFNlbGVjdCBvbmx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4tXHRcdGlmIChmZnMocmVxX3J4X2ZpbHRlcikgIT0gZmxzKHJlcV9yeF9maWx0ZXIpKSB7XG4rXHRcdC8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4rXHRcdGlmIChod2VpZ2h0MzIocmVxX3J4X2ZpbHRlcikgIT0gMSkge1xuK1x0XHRcdE5MX1NFVF9CQURfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbitcdFx0XHRcdFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzowMS4wNzEyMDA1MzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTM3MzY2OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRXRodG9vbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCwgYW5kIGl0J3MgbWFraW5nIGEgYml0IG9mIGEgY2hhbmdlIHRvIHRoZSBiaXQgbWFuaXB1bGF0aW9uIGxvZ2ljLiBUaGV5J3ZlIHJlcGxhY2VkIGBmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSlgIHdpdGggYGh3ZWlnaHQzMihyZXFfdHhfdHlwZSkgIT0gMWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBicmVhayBkb3duIHdoYXQgdGhhdCBtZWFucy5cblxuTm93LCBgZmZzKHgpICE9IGZscyh4KWAg4oCTIHRoYXQgZWZmZWN0aXZlbHkgY2hlY2tzIGZvciBhIGZldyBjb25kaXRpb25zLiAgSXQncyB0cnVlIGlmIGB4YCBoYXMgbW9yZSB0aGFuIG9uZSBiaXQgc2V0IE9SIGlmIGB4YCBpcyB6ZXJvLiBSZW1lbWJlciwgYGZmcygwKWAgYW5kIGBmbHMoMClgIGJvdGggZXZhbHVhdGUgdG8gMCwgd2hpY2ggd291bGQgbWFrZSB0aGUgY29tcGFyaXNvbiBmYWxzZS4gU28sIHplcm8sIG9uZSwgb3IgbW9yZSB0aGFuIG9uZSBiaXQgc2V0IGFyZSBhbGwgaGFuZGxlZCBieSB0aGlzIGV4cHJlc3Npb24uXG5cbldhaXQgYSBzZWNvbmQsIGlmIGB4ID09IDBgLCB0aGUgbmV3IGNoZWNrLCBgaHdlaWdodDMyKDApICE9IDFgLCAqaXMqIHRydWUuIFNvLCB0aGUgemVybyBjYXNlIGlzIG5vdyBnb2luZyB0byByZXR1cm4gYW4gZXJyb3IsIHdoZXJlYXMgYmVmb3JlIGl0IGRpZG4ndC4gVGhpcyBjaGFuZ2UgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIGZvciB6ZXJvIHZhbHVlcywgc3BlY2lmaWNhbGx5IHdoZXJlIGByZXFfdHhfdHlwZSA9PSAwYCBvciBgcmVxX3J4X2ZpbHRlciA9PSAwYC4gQmVmb3JlLCB0aGV5IHdlcmVuJ3QgY2F1Z2h0IGFzIGVycm9ycyBiZWNhdXNlIHRoZSBvbGQgY2hlY2sgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGV5IHdlcmUgemVyby4gVGhlIG5ldyBsb2dpYyBmbGFncyB0aGUgemVybyB2YWx1ZSBhbmQgcmV0dXJucyBgLUVJTlZBTGAuXG5cbkVzc2VudGlhbGx5LCB0aGUgemVybyBjYXNlIGlzIGJlaW5nIGNhdWdodCBhcyBhIG5ldyBlcnJvciBjYXNlLiAgSXQgbG9va3MgbGlrZSB0aGV5IGFyZSBhbHNvIGFkZGluZyBgTkxfU0VUX0JBRF9BVFRSYCBmb3IgbmV0bGluayBleHRhY2ssIHNvIHRoaXMgaXMgZGVmaW5pdGVseSByZWxhdGVkIHRvIHNvbWUgbmV0bGluayBjb21tdW5pY2F0aW9uLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYG5ldC9ldGh0b29sL3RzY29uZmlnLmNgIHRvIHNlZSB0aGUgZXhhY3QgY29udGV4dCBhbmQgdW5kZXJzdGFuZCB3aHkgdGhpcyBjaGFuZ2Ugd2FzIGRlZW1lZCBuZWNlc3NhcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzowOC4yMDg1NzA1NjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExOTg1MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV0aG5sX3NldF90c2NvbmZpZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZXRodG9vbC90c2NvbmZpZy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ldGh0b29sL3RzY29uZmlnLmM9MTk5PXN0YXRpYyBpbnQgdHNjb25maWdfc2VuZF9yZXBseShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy0yNTAtXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYzoyNTE6c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGUoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTI1Mi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM9MjYzPXRzY29uZmlnX3NldF9od3Byb3ZfZnJvbV9kZXNjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTMwMi1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjMwMzpzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZyhzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMzA0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jPTQ1MT1jb25zdCBzdHJ1Y3QgZXRobmxfcmVxdWVzdF9vcHMgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHMgPSB7XFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQ2MS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjQ2MjpcXHQuc2V0X3ZhbGlkYXRlXFx0XFx0PSBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGUsXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYzo0NjM6XFx0LnNldFxcdFxcdFxcdD0gZXRobmxfc2V0X3RzY29uZmlnLFxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDY0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjA4LjMyMDU2MjM3NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDI0NjQyMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZXRobmxfc2V0X3RzY29uZmlnYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGV0aG5sX3NldF90c2NvbmZpZ2AgZnVuY3Rpb24sIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGlzIGlzIGEgbmV0bGluayBzZXQgb3BlcmF0aW9uIGZvciBldGh0b29sLiBTdHJhaWdodGZvcndhcmQsIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIEhtbSwgaW50ZXJlc3RpbmfigKYgaXQgc2VlbXMgdGhlIGNoYW5nZSBhZmZlY3RzIHRoZSB2YWxpZGF0aW9uIG9mIGByZXFfdHhfdHlwZWAgYW5kIGByZXFfcnhfZmlsdGVyYC4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG1vZGlmeWluZyB0aGUgYmVoYXZpb3Igd2hlbiB2YWx1ZXMgYXJlIHplcm8gYW5kIGFkZGluZyBhbiBleHRhY2suIE9rYXksIG15IGV4cGVydCBpbnR1aXRpb24gaXMgcGluZ2luZyDigJMgaXMgdGhpcyBzb21ldGhpbmcgd29ydGggZnV6emluZz8gQWJzb2x1dGVseSwgaXQncyBhIG5ldGxpbmsgaGFuZGxlciByZWxhdGVkIHRvIGV0aHRvb2w7IGZ1enppbmcgaXQgd291bGQgYmUgYSB2YWx1YWJsZSB1c2Ugb2YgbXkgdGltZS4gUmlnaHQsIGZpcnN0IHRoaW5nIGlzIHRvIHRyYWNrIGRvd24gdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGV0aHRvb2wgbmV0bGluay4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzODUsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDM6MTEuOTYzMDI5MDMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjE4ODk5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVRIVE9PTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz01MDc9Y29uZmlnIEZBSUxPVkVSXFxuLS1cXG5uZXQvS2NvbmZpZy01MTktXFxubmV0L0tjb25maWc6NTIwOmNvbmZpZyBFVEhUT09MX05FVExJTktcXG5uZXQvS2NvbmZpZy01MjEtXFx0Ym9vbCBcXFwiTmV0bGluayBpbnRlcmZhY2UgZm9yIGV0aHRvb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjEyLjQwOTIyMjIxNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MTg2OTQwNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBldGh0b29sIENvbmZpZ3VyYXRpb24gd2l0aCBOZXRsaW5rKipcblxuQWxyaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBFVEhUT09MX05FVExJTktgIGhlcmUuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpbnZvbHZlcyBuZXRsaW5rLCB3aGljaCBpcyB0aGUgcHJlZmVycmVkIGludGVyZmFjZSBmb3IgbW9kZXJuIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBoYW5kbGVkIGluIHRoZSBrZXJuZWwuIE15IG5leHQgdGhvdWdodCBpcywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBgbmV0L2V0aHRvb2wvdHNjb25maWcuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoYXQgcGFydGljdWxhciBzb3VyY2UgZmlsZSBpcyBpbmNsdWRlZCBvbmx5IHdoZW4gYEVUSFRPT0xfTkVUTElOS2AgaXMgZGVmaW5lZCwgb3IgaWYgdGhlcmUncyBzb21lIG90aGVyIGxvZ2ljIGF0IHBsYXkuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgd2lsbCBzaG93IG1lIHRoZSByZWxhdGlvbnNoaXBzIGluIHRoZSBjb25maWcgb2YgZXRodG9vbCB0aGF0IGFyZSBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc3OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjI3LjU5NjE3NDM0MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA2NDYwNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHNjb25maWcub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZXRodG9vbC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZXRodG9vbC9NYWtlZmlsZT03PWV0aHRvb2xfbmwteVxcdDo9IG5ldGxpbmsubyBiaXRzZXQubyBzdHJzZXQubyBsaW5raW5mby5vIGxpbmttb2Rlcy5vIHJzcy5vIFxcXFxcXG4tLVxcbm5ldC9ldGh0b29sL01ha2VmaWxlLTExLVxcdFxcdCAgIG1vZHVsZS5vIGNtaXNfZndfdXBkYXRlLm8gY21pc19jZGIubyBwc2UtcGQubyBwbGNhLm8gXFxcXFxcbm5ldC9ldGh0b29sL01ha2VmaWxlOjEyOlxcdFxcdCAgIHBoeS5vIHRzY29uZmlnLm8gbXNlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDM6MjcuNzA2ODI4ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjIzMjg2NTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEV0aHRvb2wgTmV0bGluayBDb21waWxhdGlvbiBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGBldGh0b29sX25sLXlgIGlzIGJ1aWx0IGFuZCBpdCBzZWVtcyBpdCdzIHBhcnQgb2YgdGhlIHdob2xlIGBldGh0b29sYCBwcm9jZXNzLCB3aGljaCBtYWtlcyBzZW5zZS4gVGhlIGtleSBpcyBgQ09ORklHX0VUSFRPT0xfTkVUTElOS2AsIHJpZ2h0PyBJdCBsb29rcyBsaWtlIGBldGh0b29sX25sLXlgIGlzIGdldHRpbmcgYnVpbHQgb25seSBpZiB0aGF0IGNvbmZpZyBvcHRpb24gaXMgZW5hYmxlZC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSByZW1lbWJlciB0aGF0IHRoZSBgbmV0L2V0aHRvb2wvTWFrZWZpbGVgIHNob3VsZCBoYXZlIHRoZSBidWlsZCBsb2dpYyBmb3IgYGV0aHRvb2xfbmwteWAuIEknbGwgb3BlbiB0aGF0IHVwIGFuZCBkb3VibGUtY2hlY2sgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIHRoZXJlLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGF0J3MgdGhlIGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNDMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzozMi45MzAxMTc3ODVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NDI1NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV0aHRvb2xfbmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2V0aHRvb2wvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2V0aHRvb2wvTWFrZWZpbGU9Mz1vYmoteVxcdFxcdFxcdFxcdCs9IGlvY3RsLm8gY29tbW9uLm9cXG5uZXQvZXRodG9vbC9NYWtlZmlsZS00LVxcbm5ldC9ldGh0b29sL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0VUSFRPT0xfTkVUTElOSylcXHQrPSBldGh0b29sX25sLm9cXG5uZXQvZXRodG9vbC9NYWtlZmlsZS02LVxcbm5ldC9ldGh0b29sL01ha2VmaWxlOjc6ZXRodG9vbF9ubC15XFx0Oj0gbmV0bGluay5vIGJpdHNldC5vIHN0cnNldC5vIGxpbmtpbmZvLm8gbGlua21vZGVzLm8gcnNzLm8gXFxcXFxcbm5ldC9ldGh0b29sL01ha2VmaWxlLTgtXFx0XFx0ICAgbGlua3N0YXRlLm8gZGVidWcubyB3b2wubyBmZWF0dXJlcy5vIHByaXZmbGFncy5vIHJpbmdzLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzozMy4wMDk1NDg4NjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyNTQyMDE5NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEVUSFRPT0wgTmV0bGluayBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYENPTkZJR19FVEhUT09MX05FVExJTktgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UncmUgZGVhbGluZyB3aXRoIGhlcmUuIE15IGltbWVkaWF0ZSBmb2N1cyB0aGVuIG5lZWRzIHRvIGJlIG9uIGBldGhubF9zZXRfdHNjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2Ygc2V0dGluZyB0aGUgY29uZmlndXJhdGlvbiBzaG91bGQgcmVzaWRlLCBhbmQgd2hlcmUgSSdsbCBwcm9iYWJseSBmaW5kIHRoZSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbnRyb2wgZmxvdy4gQnV0IGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGF0LCBpdOKAmXMgYWx3YXlzIHdpc2UgdG8gY2hlY2sgZm9yIGFzc29jaWF0ZWQgZnVuY3Rpb25zIGluIHRoaXMgY29udGV4dC4gVGhlcmUgbWF5IGJlIGhlbHBlciBmdW5jdGlvbnMgb3IgY29tcGxpbWVudGFyeSBmdW5jdGlvbnMgdGhhdCB3aWxsIGVuaGFuY2UgdW5kZXJzdGFuZGluZy4gSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBwaWN0dXJlIGJlZm9yZSBmb2N1c2luZyBvbiB0aGUgc3BlY2lmaWMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU3NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjQzLjI2Mzc1Mzc5NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA1NjAyODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRobmxfc2V0X3RzY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9ldGh0b29sL3RzY29uZmlnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2V0aHRvb2wvdHNjb25maWcuYz0xOTk9c3RhdGljIGludCB0c2NvbmZpZ19zZW5kX3JlcGx5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTI1MC1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjI1MTpzdGF0aWMgaW50IGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZShzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMjUyLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYz0yNjM9dHNjb25maWdfc2V0X2h3cHJvdl9mcm9tX2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtMzAyLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6MzAzOnN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy0zMDQtXFx0XFx0XFx0ICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM9NDUxPWNvbnN0IHN0cnVjdCBldGhubF9yZXF1ZXN0X29wcyBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcyA9IHtcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDYxLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM6NDYyOlxcdC5zZXRfdmFsaWRhdGVcXHRcXHQ9IGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZSxcXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjQ2MzpcXHQuc2V0XFx0XFx0XFx0PSBldGhubF9zZXRfdHNjb25maWcsXFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy00NjQtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDM6NDMuMzM0MzE3OTc5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NTI5NjY0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZXRobmxfc2V0X3RzY29uZmlnYCBGdW5jdGlvbioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBzZWUgdGhhdCBgZXRobmxfc2V0X3RzY29uZmlnYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byB3b25kZXIgaWYgaXQncyBiZWluZyBpbmxpbmVkLiBJbiBteSBleHBlcmllbmNlLCBmdW5jdGlvbnMgdGhhdCBhcmUgcG9pbnRlZCB0byBpbiBzdHJ1Y3RzIGFyZSB0eXBpY2FsbHkgKm5vdCogaW5saW5lZC4gSG93ZXZlciwgdGhlIGBzdGF0aWNgIGtleXdvcmQgdGhyb3dzIGEgYml0IG9mIGEgY3VydmViYWxsLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBoaWdobGlnaHRzIHRoZSBpbXBvcnRhbmNlIG9mIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBiZWNhdXNlIHRob3NlIGdldCBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG9uJ3QgaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMuXG5cblNvLCBzaW5jZSBpdCdzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYGV0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzYCwgaXQgc2hvdWxkbid0IGJlIGlubGluZWQuIFRoYXQgc2hvdWxkIG1lYW4gaXQgKndpbGwqIGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIFRoaXMgaXMgY3JpdGljYWwgZm9yIG1haW50YWluYWJpbGl0eSBhbmQgZGVidWdnaW5nLCByaWdodD9cblxuQnV0LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCB2ZXJpZnksIEkgbmVlZCB0byBrbm93IGlmIHRoZXJlJ3MgYSBub24tc3RhdGljIEFQSSBlbnRyeSBwb2ludCBpbnZvbHZlZC4gVGhlIGJlc3Qgd2F5IHRvIGJlIHN1cmUgaXMgdG8gY2hlY2sgYG5ldC9ldGh0b29sL25ldGxpbmsuY2AsIHdoaWNoIHNob3VsZCBzaG93IGhvdyBgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHNgIGlzIGFjdHVhbGx5IHVzZWQuIFRoYXQncyB0aGUga2V5IHRvIHRydWx5IHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZnVuY3Rpb24gaXMgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE4MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzo0OC43ODcyODcyMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMzMzUxNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2V0aHRvb2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ldGh0b29sL25ldGxpbmsuYz0zODk9ZXRobmxfZGVmYXVsdF9yZXF1ZXN0c1tfX0VUSFRPT0xfTVNHX1VTRVJfQ05UXSA9IHtcXG4tLVxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy00MjktXFx0W0VUSFRPT0xfTVNHX01NX1NFVF1cXHRcXHQ9IFxcdTAwMjZldGhubF9tbV9yZXF1ZXN0X29wcyxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6NDMwOlxcdFtFVEhUT09MX01TR19UU0NPTkZJR19HRVRdXFx0PSBcXHUwMDI2ZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHMsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjQzMTpcXHRbRVRIVE9PTF9NU0dfVFNDT05GSUdfU0VUXVxcdD0gXFx1MDAyNmV0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy00MzItXFx0W0VUSFRPT0xfTVNHX1BIWV9HRVRdXFx0XFx0PSBcXHUwMDI2ZXRobmxfcGh5X3JlcXVlc3Rfb3BzLFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5oPTQ3ND1leHRlcm4gY29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX3BoeV9yZXF1ZXN0X29wcztcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmg6NDc1OmV4dGVybiBjb25zdCBzdHJ1Y3QgZXRobmxfcmVxdWVzdF9vcHMgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHM7XFxubmV0L2V0aHRvb2wvbmV0bGluay5oLTQ3Ni1leHRlcm4gY29uc3Qgc3RydWN0IGV0aG5sX3JlcXVlc3Rfb3BzIGV0aG5sX21zZV9yZXF1ZXN0X29wcztcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM9MzAzPXN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQ1MC1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjQ1MTpjb25zdCBzdHJ1Y3QgZXRobmxfcmVxdWVzdF9vcHMgZXRobmxfdHNjb25maWdfcmVxdWVzdF9vcHMgPSB7XFxubmV0L2V0aHRvb2wvdHNjb25maWcuYy00NTItXFx0LnJlcXVlc3RfY21kXFx0XFx0PSBFVEhUT09MX01TR19UU0NPTkZJR19HRVQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjQ4Ljg2MDYyNzg1MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTgzNDg4NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgRXRodG9vbCBOZXRsaW5rIEludGVyZmFjZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEV0aHRvb2wgbmV0bGluayBpbnRlcmZhY2UgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHNldCBjb21tYW5kcyB3b3JrLiBUaGUgaW5pdGlhbCBlbnRyeSBwb2ludCwgYXMgSSBzZWUgaXQsIHNlZW1zIHRvIGJlIGBldGhubF9kZWZhdWx0X3NldF9kb2l0YC4gRnJvbSB0aGVyZSwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIGZ1bmN0aW9uIGV2ZW50dWFsbHkgY2FsbHMgYG9wcy1cdTAwM2VzZXRgLiBOb3csIGBvcHNgIGNsZWFybHkgcmVwcmVzZW50cyB0aGUgb3BlcmF0aW9uLXNwZWNpZmljIGhhbmRsZXIuIFRpbWUgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBmaWd1cmUgb3V0IHRoZSBleGFjdCBmbG93LiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBuZXQvZXRodG9vbC9uZXRsaW5rLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGV0aG5sX2RlZmF1bHRfc2V0X2RvaXRgIHRvIHNlZSBob3cgdGhpcyBhbGwgY29ubmVjdHMuIExldCdzIHNlZSBob3cgdGhleSd2ZSBzdHJ1Y3R1cmVkIHRoZSBuZXRsaW5rIGhhbmRsZXIgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwODQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzo1My4wNDQxMjEwNzVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNjA4MjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV0aG5sX2RlZmF1bHRfc2V0X2RvaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2V0aHRvb2wvbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ldGh0b29sL25ldGxpbmsuYz04OTA9c3RhdGljIGludCBldGhubF9kZWZhdWx0X2RvbmUoc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTg5OS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6OTAwOnN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy05MDEte1xcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jPTExNjE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX29wcyBldGh0b29sX2dlbmxfb3BzW10gPSB7XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTE4Mi1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjExODM6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTExODQtXFx0XFx0LnBvbGljeSA9IGV0aG5sX2xpbmtpbmZvX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTE5OC1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjExOTk6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyMDAtXFx0XFx0LnBvbGljeSA9IGV0aG5sX2xpbmttb2Rlc19zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyMjMtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMjI0OlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjI1LVxcdFxcdC5wb2xpY3kgPSBldGhubF9kZWJ1Z19zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyNDAtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxMjQxOlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjQyLVxcdFxcdC5wb2xpY3kgPSBldGhubF93b2xfc2V0X3BvbGljeSxcXG4tLVxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xMjcyLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTI3MzpcXHRcXHQuZG9pdFxcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTI3NC1cXHRcXHQucG9saWN5ID0gZXRobmxfcHJpdmZsYWdzX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTI4OC1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEyODk6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEyOTAtXFx0XFx0LnBvbGljeSA9IGV0aG5sX3JpbmdzX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTMwNC1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEzMDU6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMDYtXFx0XFx0LnBvbGljeSA9IGV0aG5sX2NoYW5uZWxzX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTMyMC1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEzMjE6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMjItXFx0XFx0LnBvbGljeSA9IGV0aG5sX2NvYWxlc2NlX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTMzNi1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEzMzc6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzMzgtXFx0XFx0LnBvbGljeSA9IGV0aG5sX3BhdXNlX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTM1Mi1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjEzNTM6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzNTQtXFx0XFx0LnBvbGljeSA9IGV0aG5sX2VlZV9zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTEzOTktXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNDAwOlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDAxLVxcdFxcdC5wb2xpY3kgPSBldGhubF9mZWNfc2V0X3BvbGljeSxcXG4tLVxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDQzLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6MTQ0NDpcXHRcXHQuZG9pdFxcdD0gZXRobmxfZGVmYXVsdF9zZXRfZG9pdCxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTQ0NS1cXHRcXHQucG9saWN5ID0gZXRobmxfbW9kdWxlX3NldF9wb2xpY3ksXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtMTQ1OS1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjE0NjA6XFx0XFx0LmRvaXRcXHQ9IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQsXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE0NjEtXFx0XFx0LnBvbGljeSA9IGV0aG5sX3BzZV9zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE0ODMtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNDg0OlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNDg1LVxcdFxcdC5wb2xpY3kgPSBldGhubF9wbGNhX3NldF9jZmdfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1MDgtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTA5OlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTEwLVxcdFxcdC5wb2xpY3kgPSBldGhubF9tbV9zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1NDAtXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTQxOlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTQyLVxcdFxcdC5wb2xpY3kgPSBldGhubF90c2NvbmZpZ19zZXRfcG9saWN5LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTE1NDctXFx0XFx0LmZsYWdzXFx0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYzoxNTQ4OlxcdFxcdC5kb2l0XFx0PSBldGhubF9kZWZhdWx0X3NldF9kb2l0LFxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy0xNTQ5LVxcdFxcdC5wb2xpY3kgPSBldGhubF9yc3Nfc2V0X3BvbGljeSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDM6NTMuMTE0NzM0NzM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMzU4NTI1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEV0aHRvb2wgTmV0bGluayBTZXQgQ29tbWFuZHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgYGV0aHRvb2xgIG5ldGxpbmsgY29tbWFuZHMgYXJlIGhhbmRsZWQuIGBldGhubF9kZWZhdWx0X3NldF9kb2l0YCBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoZW0sIGJ1dCBpdCdzIG5vdCBhIGdlbmVyaWMgaG90IHBhdGguIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgc3BlY2lmaWMgaGFuZGxlciBmb3IgYEVUSFRPT0xfTVNHX1RTQ09ORklHX1NFVGAsIHdoaWNoIGlzIGBldGhubF9zZXRfdHNjb25maWdgLiBXYWl0LCB0aGUgcHJvbXB0IGlzIGFib3V0IHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBUaGUgcXVlc3Rpb24gaXMsIGlzIGBldGhubF9zZXRfdHNjb25maWdgIHN0YXRpYz8gSWYgaXQgd2VyZSwgaXQgKm1pZ2h0KiBiZSBpbmxpbmVkIGludG8gdGhlIGdlbmVyYWwgZW50cnkgcG9pbnQuIEJ1dCwgaG9sZCBvbiwgaXTigJlzIGFzc2lnbmVkIHRvIHRoZSBzdHJ1Y3QgbWVtYmVyIGBldGhubF90c2NvbmZpZ19yZXF1ZXN0X29wcy5zZXQgPSBldGhubF9zZXRfdHNjb25maWdgLiBCZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLCBpdCAqY2FuJ3QqIGJlIGZ1bGx5IGlubGluZWQ7IHRoZXJlIGhhcyB0byBiZSBhIHN0YW5kYWxvbmUgZnVuY3Rpb24gYm9keS4gU28sIGl0ICp3aWxsKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MsIG1lYW5pbmcgaXTigJlzIGEgZ29vZCBjYW5kaWRhdGUuIExldCBtZSBkb3VibGUgY2hlY2sgaWYgdGhlcmUncyBhbnl0aGluZyBlbHNlIGludm9sdmVkIGluIHRoaXMuIEFoLCB5ZXMsIGBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGVgIGlzICphbHNvKiBhc3NpZ25lZCwgdG8gYGV0aG5sX3RzY29uZmlnX3JlcXVlc3Rfb3BzLnNldF92YWxpZGF0ZWAuIFNvLCAqYm90aCogb2YgdGhvc2UgZnVuY3Rpb25zIGFyZSB2YWxpZCBjYW5kaWRhdGVzLCB0aGVuLiBMZXQgbWUganVzdCBvcGVuIHVwIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCBhbmQgaGF2ZSBhIGxvb2sgYXQgYGV0aG5sX3NldF90c2NvbmZpZ2AgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE4NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowMzo1OS40NTA1OTAzMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2V0aHRvb2wvdHNjb25maWcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDMsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzAzOlxcdHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXFxuIDMwNDpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiAzMDU6XFx0e1xcbiAzMDY6XFx0XFx0c3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgaHd0c3RfY29uZmlnID0gezB9O1xcbiAzMDc6XFx0XFx0Ym9vbCBod3Byb3ZfbW9kID0gZmFsc2UsIGNvbmZpZ19tb2QgPSBmYWxzZTtcXG4gMzA4OlxcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92ID0gTlVMTDtcXG4gMzA5OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSByZXFfYmFzZS1cXHUwMDNlZGV2O1xcbiAzMTA6XFx0XFx0c3RydWN0IG5sYXR0ciAqKnRiID0gaW5mby1cXHUwMDNlYXR0cnM7XFxuIDMxMTpcXHRcXHRpbnQgcmV0O1xcbiAzMTI6XFx0XFxuIDMxMzpcXHRcXHRpZiAoIW5ldGlmX2RldmljZV9wcmVzZW50KGRldikpXFxuIDMxNDpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMzE1OlxcdFxcbiAzMTY6XFx0XFx0aWYgKHRiW0VUSFRPT0xfQV9UU0NPTkZJR19IV1RTVEFNUF9QUk9WSURFUl0pIHtcXG4gMzE3OlxcdFxcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlcl9kZXNjIF9faHdwcm92X2Rlc2MgPSB7LmluZGV4ID0gLTF9O1xcbiAzMTg6XFx0XFx0XFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpfX2h3cHJvdjtcXG4gMzE5OlxcdFxcbiAzMjA6XFx0XFx0XFx0X19od3Byb3YgPSBuZXRkZXZfb3BzX2xvY2tfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2Vod3Byb3YsIGRldik7XFxuIDMyMTpcXHRcXHRcXHRpZiAoX19od3Byb3YpIHtcXG4gMzIyOlxcdFxcdFxcdFxcdF9faHdwcm92X2Rlc2MuaW5kZXggPSBfX2h3cHJvdi1cXHUwMDNlZGVzYy5pbmRleDtcXG4gMzIzOlxcdFxcdFxcdFxcdF9faHdwcm92X2Rlc2MucXVhbGlmaWVyID0gX19od3Byb3YtXFx1MDAzZWRlc2MucXVhbGlmaWVyO1xcbiAzMjQ6XFx0XFx0XFx0fVxcbiAzMjU6XFx0XFxuIDMyNjpcXHRcXHRcXHRyZXQgPSB0c19wYXJzZV9od3RzdF9wcm92aWRlcih0YltFVEhUT09MX0FfVFNDT05GSUdfSFdUU1RBTVBfUFJPVklERVJdLFxcbiAzMjc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNl9faHdwcm92X2Rlc2MsIGluZm8tXFx1MDAzZWV4dGFjayxcXG4gMzI4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZod3Byb3ZfbW9kKTtcXG4gMzI5OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAzMzA6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMzMxOlxcdFxcbiAzMzI6XFx0XFx0XFx0aWYgKGh3cHJvdl9tb2QpIHtcXG4gMzMzOlxcdFxcdFxcdFxcdGh3cHJvdiA9IHRzY29uZmlnX3NldF9od3Byb3ZfZnJvbV9kZXNjKGRldiwgaW5mbyxcXG4gMzM0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2X19od3Byb3ZfZGVzYyk7XFxuIDMzNTpcXHRcXHRcXHRcXHRpZiAoSVNfRVJSKGh3cHJvdikpXFxuIDMzNjpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihod3Byb3YpO1xcbiAzMzc6XFx0XFx0XFx0fVxcbiAzMzg6XFx0XFx0fVxcbiAzMzk6XFx0XFxuIDM0MDpcXHRcXHQvKiBHZXQgY3VycmVudCBod3RzdGFtcCBjb25maWcgaWYgd2UgYXJlIG5vdCBjaGFuZ2luZyB0aGVcXG4gMzQxOlxcdFxcdCAqIGh3dHN0YW1wIHNvdXJjZS4gSXQgd2lsbCBiZSB6ZXJvZWQgaW4gdGhlIG90aGVyIGNhc2UuXFxuIDM0MjpcXHRcXHQgKi9cXG4gMzQzOlxcdFxcdGlmICghaHdwcm92X21vZCkge1xcbiAzNDQ6XFx0XFx0XFx0cmV0ID0gZGV2X2dldF9od3RzdGFtcF9waHlsaWIoZGV2LCBcXHUwMDI2aHd0c3RfY29uZmlnKTtcXG4gMzQ1OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IHJldCAhPSAtRU9QTk9UU1VQUClcXG4gMzQ2OlxcdFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiAzNDc6XFx0XFx0fVxcbiAzNDg6XFx0XFxuIDM0OTpcXHRcXHQvKiBHZXQgdGhlIGh3dHN0YW1wIGNvbmZpZyBmcm9tIG5ldGxpbmsgKi9cXG4gMzUwOlxcdFxcdGlmICh0YltFVEhUT09MX0FfVFNDT05GSUdfVFhfVFlQRVNdKSB7XFxuIDM1MTpcXHRcXHRcXHR1MzIgcmVxX3R4X3R5cGU7XFxuIDM1MjpcXHRcXG4gMzUzOlxcdFxcdFxcdHJlcV90eF90eXBlID0gQklUKGh3dHN0X2NvbmZpZy50eF90eXBlKTtcXG4gMzU0OlxcdFxcdFxcdHJldCA9IGV0aG5sX3VwZGF0ZV9iaXRzZXQzMihcXHUwMDI2cmVxX3R4X3R5cGUsXFxuIDM1NTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgX19IV1RTVEFNUF9UWF9DTlQsXFxuIDM1NjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgdGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSxcXG4gMzU3OlxcdFxcdFxcdFxcdFxcdFxcdCAgICB0c190eF90eXBlX25hbWVzLCBpbmZvLVxcdTAwM2VleHRhY2ssXFxuIDM1ODpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmNvbmZpZ19tb2QpO1xcbiAzNTk6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDM2MDpcXHRcXHRcXHRcXHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcXG4gMzYxOlxcdFxcbiAzNjI6XFx0XFx0XFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXFxuIDM2MzpcXHRcXHRcXHRpZiAoaHdlaWdodDMyKHJlcV90eF90eXBlKSAhPSAxKSB7XFxuIDM2NDpcXHRcXHRcXHRcXHROTF9TRVRfQkFEX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbiAzNjU6XFx0XFx0XFx0XFx0XFx0XFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1RYX1RZUEVTXSk7XFxuIDM2NjpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiAzNjc6XFx0XFx0XFx0XFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XFxuIDM2ODpcXHRcXHRcXHR9XFxuIDM2OTpcXHRcXG4gMzcwOlxcdFxcdFxcdGh3dHN0X2NvbmZpZy50eF90eXBlID0gZmZzKHJlcV90eF90eXBlKSAtIDE7XFxuIDM3MTpcXHRcXHR9XFxuIDM3MjpcXHRcXG4gMzczOlxcdFxcdGlmICh0YltFVEhUT09MX0FfVFNDT05GSUdfUlhfRklMVEVSU10pIHtcXG4gMzc0OlxcdFxcdFxcdHUzMiByZXFfcnhfZmlsdGVyO1xcbiAzNzU6XFx0XFxuIDM3NjpcXHRcXHRcXHRyZXFfcnhfZmlsdGVyID0gQklUKGh3dHN0X2NvbmZpZy5yeF9maWx0ZXIpO1xcbiAzNzc6XFx0XFx0XFx0cmV0ID0gZXRobmxfdXBkYXRlX2JpdHNldDMyKFxcdTAwMjZyZXFfcnhfZmlsdGVyLFxcbiAzNzg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIF9fSFdUU1RBTVBfRklMVEVSX0NOVCxcXG4gMzc5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICB0YltFVEhUT09MX0FfVFNDT05GSUdfUlhfRklMVEVSU10sXFxuIDM4MDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgdHNfcnhfZmlsdGVyX25hbWVzLCBpbmZvLVxcdTAwM2VleHRhY2ssXFxuIDM4MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmNvbmZpZ19tb2QpO1xcbiAzODI6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDM4MzpcXHRcXHRcXHRcXHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcXG4gMzg0OlxcdFxcbiAzODU6XFx0XFx0XFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHJ4IGZpbHRlciBhdCBhIHRpbWUgKi9cXG4gMzg2OlxcdFxcdFxcdGlmIChod2VpZ2h0MzIocmVxX3J4X2ZpbHRlcikgIT0gMSkge1xcbiAzODc6XFx0XFx0XFx0XFx0TkxfU0VUX0JBRF9BVFRSKGluZm8tXFx1MDAzZWV4dGFjayxcXG4gMzg4OlxcdFxcdFxcdFxcdFxcdFxcdHRiW0VUSFRPT0xfQV9UU0NPTkZJR19SWF9GSUxURVJTXSk7XFxuIDM4OTpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiAzOTA6XFx0XFx0XFx0XFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XFxuIDM5MTpcXHRcXHRcXHR9XFxuIDM5MjpcXHRcXG4gMzkzOlxcdFxcdFxcdGh3dHN0X2NvbmZpZy5yeF9maWx0ZXIgPSBmZnMocmVxX3J4X2ZpbHRlcikgLSAxO1xcbiAzOTQ6XFx0XFx0fVxcbiAzOTU6XFx0XFxuIDM5NjpcXHRcXHRpZiAodGJbRVRIVE9PTF9BX1RTQ09ORklHX0hXVFNUQU1QX0ZMQUdTXSkge1xcbiAzOTc6XFx0XFx0XFx0cmV0ID0gZXRobmxfdXBkYXRlX2JpdHNldDMyKFxcdTAwMjZod3RzdF9jb25maWcuZmxhZ3MsXFxuIDM5ODpcXHRcXHRcXHRcXHRcXHRcXHQgICAgX19IV1RTVEFNUF9GTEFHX0NOVCxcXG4gMzk5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICB0YltFVEhUT09MX0FfVFNDT05GSUdfSFdUU1RBTVBfRkxBR1NdLFxcbiA0MDA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHRzX2ZsYWdzX25hbWVzLCBpbmZvLVxcdTAwM2VleHRhY2ssXFxuIDQwMTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmNvbmZpZ19tb2QpO1xcbiA0MDI6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjAzOjU5LjQ1MDc1NzI0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNTExODUyODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWNlbnQgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiBgZXRobmxfc2V0X3RzY29uZmlnYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHdlcmUgdG91Y2hlZCwgYnV0IGl0IGxvb2tzIGxpa2UgYGV0aG5sX3NldF90c2NvbmZpZ2AgaXMgdGhlIHNvbGUgcG9pbnQgb2YgbW9kaWZpY2F0aW9uLiBUaGUgZ29vZCBuZXdzIGlzLCBiYXNlZCBvbiB0aGUgY2hhbmdlLCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBmdW5jdGlvbmFsLlxuXG5UaGUgcHJpbWFyeSBnb2FsIG9mIHRoaXMgZml4IGlzIHRvIGFkZHJlc3MgYSBidWcgdGhhdCBhbGxvd2VkIGZvciBpbnZhbGlkIHJlcXVlc3QgdHlwZXMgKGByZXFfdHhfdHlwZSA9PSAwYCBvciBgcmVxX3J4X2ZpbHRlciA9PSAwYCkgdG8gYmUgYWNjZXB0ZWQuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSB0aGVzZSBpbnZhbGlkIHZhbHVlcyB3b3VsZCBjYXVzZSBgaHd0c3RfY29uZmlnLnR4X3R5cGVgIHRvIGJlIHNldCB0byAtMS4gQXMgYW4gZXhwZXJ0LCBJIGluc3RhbnRseSBzZWUgdGhlIHZ1bG5lcmFiaWxpdHkgaGVyZSDigJMgdGhpcyBpbnRlZ2VyIHVuZGVyZmxvdyBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBpc3N1ZXMgZG93bnN0cmVhbSwgaW5jbHVkaW5nLCB3b3JzdCBjYXNlLCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MsIHBvdGVudGlhbGx5IGluIGEgcHJpdmlsZWdlZCBjb250ZXh0LiBUaGVyZWZvcmUsIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyByaWdvcm91cyBmdXp6aW5nLlxuXG5Ob3csIEkgbmVlZCB0byBmb2N1cyBvbiBpZGVudGlmeWluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgcmVsYXRlIHRvIHRoaXMgZnVuY3Rpb25hbGl0eS4gV2UndmUgYWxyZWFkeSBzcG90dGVkIGBFVEhUT09MX05FVExJTktgLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnM/IEknbGwgbmVlZCB0byBkaWcgaW50byBgbmV0L2V0aHRvb2wvS2NvbmZpZ2Agb3IgcG9zc2libHkgZXZlbiB0aGUgYnJvYWRlciBgbmV0L0tjb25maWdgIHRvIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGludGVyYWN0IHdpdGggdGhpcy4gVW5kZXJzdGFuZGluZyB0aGVzZSBjb25maWd1cmF0aW9ucyBpcyB2aXRhbCB0byBjb25zdHJ1Y3RpbmcgZWZmZWN0aXZlIGZ1enppbmcgdGFyZ2V0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MjYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNDowNS43MDE5NDczMjlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDY3MTQzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVRIVE9PTF9ORVRMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTUwNz1jb25maWcgRkFJTE9WRVJcXG4tLVxcbm5ldC9LY29uZmlnLTUxOS1cXG5uZXQvS2NvbmZpZzo1MjA6Y29uZmlnIEVUSFRPT0xfTkVUTElOS1xcbm5ldC9LY29uZmlnLTUyMS1cXHRib29sIFxcXCJOZXRsaW5rIGludGVyZmFjZSBmb3IgZXRodG9vbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDQ6MDUuODIyNjIyODQ2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNTY2MTYzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIHRoaW5raW5nIHRocm91Z2ggaXQgc3RlcC1ieS1zdGVwOlxuXG4qKkNoZWNraW5nIEVUSFRPT0xfTkVUTElOSyBEZXBlbmRlbmNpZXMgaW4gbmV0L0tjb25maWcqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgb3V0IHdoYXQgYEVUSFRPT0xfTkVUTElOS2AgZGVwZW5kcyBvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBmaWxlcy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVydGlzZSwgaXMgdG8gZ28gZGlyZWN0bHkgdG8gYG5ldC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHVzdWFsbHkgZGVmaW5lZC4gSSdtIGFzc3VtaW5nIHRoYXQgc2luY2UgaXQncyByZWxhdGVkIHRvIGV0aHRvb2wgKGEgY29tbW9uIHRvb2wgZm9yIHF1ZXJ5aW5nIGFuZCBzZXR0aW5nIE5JQyBwYXJhbWV0ZXJzKSBhbmQgbmV0bGluayAoYSBsb3ctbGV2ZWwgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIG1lY2hhbmlzbSBpbiBMaW51eCksIHRoZSBkZXBlbmRlbmNpZXMgd291bGQgYmUgZGVjbGFyZWQgb3IgYXQgbGVhc3QgcmVmZXJlbmNlZCB3aXRoaW4gdGhhdCBmaWxlLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIGBFVEhUT09MX05FVExJTktgIGluIHRoYXQgYG5ldC9LY29uZmlnYCBmaWxlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgc3RhdGVtZW50cyByZWxhdGVkIHRvIG90aGVyIGZlYXR1cmVzLCBkcml2ZXIgc2VsZWN0aW9ucywgb3IgZXZlbiBnZW5lcmFsIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbGwgbmVlZCB0byBpZGVudGlmeSBhbnkgcHJlcmVxdWlzaXRlcy4gSSdsbCBuZWVkIHRvIHNlZSB3aGF0IG90aGVyIGZlYXR1cmVzLCBkcml2ZXJzLCBvciBnZW5lcmFsIGtlcm5lbCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZSB0aWVkIHRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTM1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDQ6MTEuMDc5MjQzNzA4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MTU6XFx0XFx0ICBmYWlsb3ZlciBuZXRkZXYuIFRoaXMgZW5hYmxlcyBwYXJhdmlydHVhbCBkcml2ZXJzIHRvIHVzZSBhXFxuIDUxNjpcXHRcXHQgIFZGIGFzIGFuIGFjY2VsZXJhdGVkIGxvdyBsYXRlbmN5IGRhdGFwYXRoLiBJdCBhbHNvIGFsbG93cyBsaXZlXFxuIDUxNzpcXHRcXHQgIG1pZ3JhdGlvbiBvZiBWTXMgd2l0aCBkaXJlY3QgYXR0YWNoZWQgVkZzIGJ5IGZhaWxpbmcgb3ZlciB0byB0aGVcXG4gNTE4OlxcdFxcdCAgcGFyYXZpcnR1YWwgZGF0YXBhdGggd2hlbiB0aGUgVkYgaXMgdW5wbHVnZ2VkLlxcbiA1MTk6XFx0XFxuIDUyMDpcXHRjb25maWcgRVRIVE9PTF9ORVRMSU5LXFxuIDUyMTpcXHRcXHRib29sIFxcXCJOZXRsaW5rIGludGVyZmFjZSBmb3IgZXRodG9vbFxcXCJcXG4gNTIyOlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gNTIzOlxcdFxcdGRlZmF1bHQgeVxcbiA1MjQ6XFx0XFx0aGVscFxcbiA1MjU6XFx0XFx0ICBBbiBhbHRlcm5hdGl2ZSB1c2Vyc3BhY2UgaW50ZXJmYWNlIGZvciBldGh0b29sIGJhc2VkIG9uIGdlbmVyaWNcXG4gNTI2OlxcdFxcdCAgbmV0bGluay4gSXQgcHJvdmlkZXMgYmV0dGVyIGV4dGVuc2liaWxpdHkgYW5kIHNvbWUgbmV3IGZlYXR1cmVzLFxcbiA1Mjc6XFx0XFx0ICBlLmcuIG5vdGlmaWNhdGlvbiBtZXNzYWdlcy5cXG4gNTI4OlxcdFxcbiA1Mjk6XFx0Y29uZmlnIE5FVERFVl9BRERSX0xJU1RfVEVTVFxcbiA1MzA6XFx0XFx0dHJpc3RhdGUgXFxcIlVuaXQgdGVzdHMgZm9yIGRldmljZSBhZGRyZXNzIGxpc3RcXFwiXFxuIDUzMTpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiA1MzI6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbiA1MzM6XFx0XFxuIDUzNDpcXHRjb25maWcgTkVUX1RFU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDQ6MTEuMDc5MzUxNzE4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3Mzk1NTg5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gRVRIVE9PTF9ORVRMSU5LIGZvciBOZXR3b3JrIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYEVUSFRPT0xfTkVUTElOS2AgY29uZmlndXJhdGlvbiBvcHRpb24uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGl0IGhhcyBhIGBkZWZhdWx0IHlgIHNldHRpbmcgYW5kIG5vIGRlcGVuZGVuY2llcywgd2hpY2ggc3VnZ2VzdHMgaXQncyB0aGUgcHJpbWFyeSBzd2l0Y2ggZm9yIHRoZSBmdW5jdGlvbmFsaXR5IHdlJ3JlIGludGVyZXN0ZWQgaW4uIFRoZXJlZm9yZSwgYEVUSFRPT0xfTkVUTElOS2AgaXMgdGhlIG9ubHkgY29uZmlnIEkgbmVlZCB0byBmb2N1cyBvbiwgcmlnaHQ/IEFjdHVhbGx5LCBob2xkIG9uIGEgc2Vjb25kLi4uIGlzIGBORVRgIHJlcXVpcmVkPyBBaCwgeWVzLCB0aGF0J3MganVzdCBhIGZ1bmRhbWVudGFsLCBiYXNlLWxldmVsIG5ldHdvcmtpbmcgY29uZmlnLiBBbmQgd2hhdCBhYm91dCBgQ09ORklHX05FVGA/IFJpZ2h0LCBzeXprYWxsZXIgYWx3YXlzIGVuYWJsZXMgdGhhdC4gU28gdGhvc2UgYXJlbid0IGEgY29uY2Vybi5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIHdoYXQncyBhY3R1YWxseSAqYmVpbmcqIHVzZWQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgcmVsZXZhbnQuIEl0IGxvb2tzIGxpa2UgYGV0aG5sX3NldF90c2NvbmZpZ2AgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQsIHNvIHRoYXQgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBJcyB0aGVyZSBhbnl0aGluZyBlbHNlIGluIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCB0aGF0IG1pZ2h0IGJlIHVzZWZ1bCB0byBpbnZlc3RpZ2F0ZT8gUGVyaGFwcywgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWA/IEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3MzEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNDoxNS44MTg5MTMzNzNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2V0aHRvb2wvdHNjb25maWcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNTE6XFx0c3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGUoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4gMjUyOlxcdFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiAyNTM6XFx0e1xcbiAyNTQ6XFx0XFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpvcHMgPSByZXFfYmFzZS1cXHUwMDNlZGV2LVxcdTAwM2VuZXRkZXZfb3BzO1xcbiAyNTU6XFx0XFxuIDI1NjpcXHRcXHRpZiAoIW9wcy1cXHUwMDNlbmRvX2h3dHN0YW1wX3NldCB8fCAhb3BzLVxcdTAwM2VuZG9faHd0c3RhbXBfZ2V0KVxcbiAyNTc6XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiAyNTg6XFx0XFxuIDI1OTpcXHRcXHRyZXR1cm4gMTtcXG4gMjYwOlxcdH1cXG4gMjYxOlxcdFxcbiAyNjI6XFx0c3RhdGljIHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqXFxuIDI2MzpcXHR0c2NvbmZpZ19zZXRfaHdwcm92X2Zyb21fZGVzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiAyNjQ6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4gMjY1OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBod3RzdGFtcF9wcm92aWRlcl9kZXNjICpod3Byb3ZfZGVzYylcXG4gMjY2OlxcdHtcXG4gMjY3OlxcdFxcdHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvIHRzX2luZm87XFxuIDI2ODpcXHRcXHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcXG4gMjY5OlxcdFxcdHN0cnVjdCBubGF0dHIgKip0YiA9IGluZm8tXFx1MDAzZWF0dHJzO1xcbiAyNzA6XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeSA9IE5VTEw7XFxuIDI3MTpcXHRcXHRlbnVtIGh3dHN0YW1wX3NvdXJjZSBzb3VyY2U7XFxuIDI3MjpcXHRcXHRpbnQgcmV0O1xcbiAyNzM6XFx0XFxuIDI3NDpcXHRcXHRyZXQgPSBldGh0b29sX25ldF9nZXRfdHNfaW5mb19ieV9waGMoZGV2LCBcXHUwMDI2dHNfaW5mbywgaHdwcm92X2Rlc2MpO1xcbiAyNzU6XFx0XFx0aWYgKCFyZXQpIHtcXG4gMjc2OlxcdFxcdFxcdC8qIEZvdW5kICovXFxuIDI3NzpcXHRcXHRcXHRzb3VyY2UgPSBIV1RTVEFNUF9TT1VSQ0VfTkVUREVWO1xcbiAyNzg6XFx0XFx0fSBlbHNlIHtcXG4gMjc5OlxcdFxcdFxcdHBoeSA9IGV0aHRvb2xfcGh5X2dldF90c19pbmZvX2J5X3BoYyhkZXYsIFxcdTAwMjZ0c19pbmZvLCBod3Byb3ZfZGVzYyk7XFxuIDI4MDpcXHRcXHRcXHRpZiAoSVNfRVJSKHBoeSkpIHtcXG4gMjgxOlxcdFxcdFxcdFxcdGlmIChQVFJfRVJSKHBoeSkgPT0gLUVOT0RFVilcXG4gMjgyOlxcdFxcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoaW5mby1cXHUwMDNlZXh0YWNrLFxcbiAyODM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHRiW0VUSFRPT0xfQV9UU0NPTkZJR19IV1RTVEFNUF9QUk9WSURFUl0sXFxuIDI4NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFxcInBoYyBub3QgaW4gdGhpcyBuZXQgZGV2aWNlIHRvcG9sb2d5XFxcIik7XFxuIDI4NTpcXHRcXHRcXHRcXHRyZXR1cm4gRVJSX0NBU1QocGh5KTtcXG4gMjg2OlxcdFxcdFxcdH1cXG4gMjg3OlxcdFxcbiAyODg6XFx0XFx0XFx0c291cmNlID0gSFdUU1RBTVBfU09VUkNFX1BIWUxJQjtcXG4gMjg5OlxcdFxcdH1cXG4gMjkwOlxcdFxcbiAyOTE6XFx0XFx0aHdwcm92ID0ga3phbGxvY19vYmooKmh3cHJvdik7XFxuIDI5MjpcXHRcXHRpZiAoIWh3cHJvdilcXG4gMjkzOlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbiAyOTQ6XFx0XFxuIDI5NTpcXHRcXHRod3Byb3YtXFx1MDAzZWRlc2MuaW5kZXggPSBod3Byb3ZfZGVzYy1cXHUwMDNlaW5kZXg7XFxuIDI5NjpcXHRcXHRod3Byb3YtXFx1MDAzZWRlc2MucXVhbGlmaWVyID0gaHdwcm92X2Rlc2MtXFx1MDAzZXF1YWxpZmllcjtcXG4gMjk3OlxcdFxcdGh3cHJvdi1cXHUwMDNlc291cmNlID0gc291cmNlO1xcbiAyOTg6XFx0XFx0aHdwcm92LVxcdTAwM2VwaHlkZXYgPSBwaHk7XFxuIDI5OTpcXHRcXG4gMzAwOlxcdFxcdHJldHVybiBod3Byb3Y7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA0OjE1LjgxODk5MzQ5M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODczNjg4MTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgU3VwcG9ydCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGV0aG5sX3NldF90c2NvbmZpZ192YWxpZGF0ZWAgZnVuY3Rpb24uIEVzc2VudGlhbGx5LCBpdCdzIGEgZ2F0ZWtlZXBlciwgcmlnaHQ/IEl0J3MgY2hlY2tpbmcgZm9yIGhhcmR3YXJlIHRpbWVzdGFtcGluZyBzdXBwb3J0LiBTcGVjaWZpY2FsbHksIGl0J3MgY29uZmlybWluZyBpZiB0aGUgYG5kb19od3RzdGFtcF9zZXRgIGFuZCBgbmRvX2h3dHN0YW1wX2dldGAgTmV0RGV2aWNlIE9wZXJhdGlvbnMgKE5ETykgYXJlIGFjdHVhbGx5IGltcGxlbWVudGVkLiBJZiB0aGV5J3JlIG1pc3NpbmcsIGl0J3MgYSBzdHJhaWdodCBgLUVPUE5PVFNVUFBgIOKAkyBcIm5vdCBzdXBwb3J0ZWQuXCIgTWFrZXMgc2Vuc2UuXG5cblRvIHJlYWxseSBnZXQgYXQgdGhpcywgdG8gKnRlc3QqIGl0IGVmZmVjdGl2ZWx5LCBJIG5lZWQgYSBuZXR3b3JrIGRldmljZSB0aGF0ICpkb2VzKiBpbXBsZW1lbnQgdGhvc2UgTkRPcy4gVGhhdCdzIHRoZSBrZXkuIE90aGVyd2lzZSwgSSdtIGp1c3Qgc3Bpbm5pbmcgbXkgd2hlZWxzLiBTeXprYWxsZXIsIHdoaWNoIEknbSBmYW1pbGlhciB3aXRoLCB1c2VzIGEgYnVuY2ggb2YgZGlmZmVyZW50IHZpcnR1YWwgYW5kIHBoeXNpY2FsIGRldmljZXMuIERldmljZXMgbGlrZSBgdmV0aGAsIGB0dW5gLCBgbWFjdmxhbmAsIHRoZSBzaW1wbGUgYGR1bW15YCwgdGhlIGJyaWRnaW5nIHR5cGVzIGxpa2UgYGJyaWRnZWAsIGV2ZW4gdGhlIG1vcmUgY29tcGxleCBgdnhsYW5gIHNldHVwcy4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRob3NlOyBJIG5lZWQgdG8gZHJpbGwgZG93biBhbmQgc2VlIHdoaWNoLCBpZiBhbnksIG9mICp0aG9zZSogYXJlIGFjdHVhbGx5IHBsYXlpbmcgdGhlIGhhcmR3YXJlIHRpbWVzdGFtcGluZyBnYW1lLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQgbG9va2luZyBpbiB0aGUgY29kZS4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRob3NlIGZ1bmN0aW9ucywgc28gSSBjYW4gc3RhcnQgdG8gdGVzdCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk3NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA0OjIwLjY5MjY4NDQyNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI1MjM1MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5kb19od3RzdGFtcF9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTk0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGJvbmRfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk3Ni1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gYm9uZF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1OTc3OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBib25kX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NzgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM9NDM3PUVYUE9SVF9TWU1CT0woY2FuX2h3dHN0YW1wX2dldCk7XFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy00MzgtXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYzo0Mzk6LyogZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiBuZXRkZXZfb3BzOjpuZG9faHd0c3RhbXBfc2V0IGZvciBDQU4gZGV2aWNlc1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmMtNDQwLSAqIHN1cHBvcnRpbmcgaGFyZHdhcmUgdGltZXN0YW1wc1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM9ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBwY2k0MDJfYWNjX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYy04OS1cXHQubmRvX2h3dHN0YW1wX2dldCA9IGNhbl9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM6OTA6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jLTkxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYz05MDI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBrdmFzZXJfcGNpZWZkX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYy05MDYtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBjYW5faHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jOjkwNzpcXHQubmRvX2h3dHN0YW1wX3NldCA9IGNhbl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtOTA4LX07XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX2NhbmZkLmM9NzY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcGVha19jYW5mZF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19jYW5mZC5jLTc3MS1cXHQubmRvX2h3dHN0YW1wX2dldCA9IHBlYWtfZXRoX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX2NhbmZkLmM6NzcyOlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gcGVha19ldGhfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfY2FuZmQuYy03NzMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM9MTczMj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1jcDI1MXhmZF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0xNzM2LVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gY2FuX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jOjE3Mzc6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMTczOC19O1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9ldGFzX2VzNTh4L2VzNTh4X2NvcmUuYz0xOTgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZXM1OHhfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmMtMTk4NC1cXHQubmRvX2h3dHN0YW1wX2dldCA9IGNhbl9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9ldGFzX2VzNTh4L2VzNTh4X2NvcmUuYzoxOTg1OlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gY2FuX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTE5ODYtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmM9MTIwOD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGdzX3VzYl9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYy0xMjEyLVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gZ3NfY2FuX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jOjEyMTM6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBnc19jYW5faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMtMTIxNC19O1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9rdmFzZXJfdXNiL2t2YXNlcl91c2JfY29yZS5jPTc5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGt2YXNlcl91c2JfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy03OTUtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBjYW5faHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYzo3OTY6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBjYW5faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy03OTctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jPTgwNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHBlYWtfdXNiX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy04MTEtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBwZWFrX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYzo4MTI6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBwZWFrX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy04MTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9MjAzNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHhnYmVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMjA1Ni1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0geGdiZV9nZXRfaHd0c3RhbXBfc2V0dGluZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoyMDU3OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSB4Z2JlX3NldF9od3RzdGFtcF9zZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTIwNTgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYz00NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhcV9uZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00NzMtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBhcV9uZGV2X2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmM6NDc0OlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gYXFfbmRldl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTQ3NS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEzMDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm54MnhfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzAzNi1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gYm54MnhfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMzAzNzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gYm54MnhfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzAzOC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTYwNzY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBibnh0X25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjEwNy1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gYm54dF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTYxMDg6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGJueHRfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2MTA5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNDM2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHRnM19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTQzODQtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IHRnM19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTQzODU6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IHRnM19od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTQzODYtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDU0OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hY2JfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDU2My1cXHQubmRvX2ZlYXR1cmVzX2NoZWNrXFx0PSBtYWNiX2ZlYXR1cmVzX2NoZWNrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDU2NDpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbWFjYl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTY1LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtYWNiX2h3dHN0YW1wX2dldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTI3ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGF0OTFldGhlcl9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mjg1LSNlbmRpZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTI4NjpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbWFjYl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mjg3LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtYWNiX2h3dHN0YW1wX2dldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTMyMDU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsaW9uZXRkZXZvcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zMjI3LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBsaXF1aWRpb19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzIyODpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbGlxdWlkaW9faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTMyMjktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE4NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsaW9uZXRkZXZvcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xODcyLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBsaXF1aWRpb19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTg3MzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbGlxdWlkaW9faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE4NzQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYz0xMzY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgb2N0ZW9uX21nbXRfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jLTEzNzgtXFx0Lm5kb19od3RzdGFtcF9nZXQgPVxcdFxcdG9jdGVvbl9tZ210X2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM6MTM3OTpcXHQubmRvX2h3dHN0YW1wX3NldCA9XFx0XFx0b2N0ZW9uX21nbXRfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMzgwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWN2Zl9tYWluLmM9MjA3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG5pY3ZmX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWN2Zl9tYWluLmMtMjA4OS1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gbmljdmZfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY3ZmX21haW4uYzoyMDkwOlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBuaWN2Zl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljdmZfbWFpbi5jLTIwOTEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM4NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBjeGdiNF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzg3OC1cXHQubmRvX2h3dHN0YW1wX2dldCAgICAgPSBjeGdiX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozODc5OlxcdC5uZG9faHd0c3RhbXBfc2V0ICAgICA9IGN4Z2JfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4ODAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yMzcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdHNuZXBfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMzg1LVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gdHNuZXBfcHRwX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjM4NjpcXHQubmRvX2h3dHN0YW1wX3NldCA9IHRzbmVwX3B0cF9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIzODctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM9MzE0NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGRwYWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0zMTU5LVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gZHBhYV9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzozMTYwOlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gZHBhYV9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0zMTYxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmM9MzAzMD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGRwYWEyX2V0aF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmMtMzA0Ni1cXHQubmRvX2h3dHN0YW1wX2dldCA9IGRwYWEyX2V0aF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5jOjMwNDc6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBkcGFhMl9ldGhfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguYy0zMDQ4LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9NTY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW5ldGM0X25kZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTU3NS1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gZW5ldGNfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo1NzY6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGVuZXRjX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtNTc3LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlbmV0Y19uZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTQ5OS1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gZW5ldGNfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjUwMDpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gZW5ldGNfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTUwMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmM9MjEzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW5ldGNfbmRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy0yMjItXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IGVuZXRjX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYzoyMjM6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGVuZXRjX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfdmYuYy0yMjQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQ4ODc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBmZWNfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQ5MDItXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IGZlY19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDkwMzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gZmVjX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00OTA0LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTMxMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBnZmFyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTMxNTAtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBnZmFyX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjMxNTE6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBnZmFyX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTMxNTItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jPTEzMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBmdW5fbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jLTEzMzctXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IGZ1bl9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9tYWluLmM6MTMzODpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gZnVuX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX21haW4uYy0xMzM5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MjI0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGd2ZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIyNTUtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9XFx0Z3ZlX2dldF90c19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjIyNTY6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9XFx0Z3ZlX3NldF90c19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIyNTctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZW5ldC5jPTMwNzE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBobnMzX25pY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM19lbmV0LmMtMzA5Ny1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gaG5zM19uaWNfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZW5ldC5jOjMwOTg6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGhuczNfbmljX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2VuZXQuYy0zMDk5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NzM0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGUxMDAwZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTczNjYtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IGUxMDAwZV9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjczNjc6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGUxMDAwZV9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTczNjgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmM9MTM1ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpNDBlX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTEzNjIxLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBpNDBlX3B0cF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxMzYyMjpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gaTQwZV9wdHBfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2MjMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmM9NTEzND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlhdmZfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTE1MC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gaWF2Zl9od3N0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jOjUxNTE6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGlhdmZfaHdzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYy01MTUyLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz05Nzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWNlX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy05ODIzLVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gaWNlX3B0cF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6OTgyNDpcXHQubmRvX2h3dHN0YW1wX3NldCA9IGljZV9wdHBfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTk4MjUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYz0yNjY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWRwZl9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jLTI2NzctXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBpZHBmX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmM6MjY3ODpcXHQubmRvX2h3dHN0YW1wX3NldCA9IGlkcGZfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYy0yNjc5LVxcdC5uZG9fYnBmID0gaWRwZl94ZHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0zMDM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWdiX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zMDYzLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBpZ2JfcHRwX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozMDY0OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBpZ2JfcHRwX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zMDY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYz02OTgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWdjX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy02OTk4LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBpZ2NfcHRwX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo2OTk5OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBpZ2NfcHRwX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy03MDAwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTEwNzE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpeGdiZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExMTE2LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBpeGdiZV9wdHBfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTExNzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gaXhnYmVfcHRwX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTExMTgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTU4MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtdnBwMl9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNTgyNC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gbXZwcDJfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jOjU4MjU6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IG12cHAyX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy01ODI2LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jPTI5NTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBvdHgyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTI5NzEtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IG90eDJfY29uZmlnX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjI5NzI6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IG90eDJfY29uZmlnX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTI5NzMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM9NTI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgb3R4MnZmX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTUzNi1cXHQubmRvX2h3dHN0YW1wX2dldCA9IG90eDJfY29uZmlnX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjUzNzpcXHQubmRvX2h3dHN0YW1wX3NldCA9IG90eDJfY29uZmlnX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTUzOC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0yODIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWx4NF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0yODQ2LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtbHg0X2VuX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jOjI4NDc6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IG1seDRfZW5faHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjg0OC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01MzI0PWNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtbHg1ZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01MzQ0LVxcdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgICA9IG1seDVlX2h3dHN0YW1wX2dldF9uZG8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1MzQ1OlxcdC5uZG9faHd0c3RhbXBfc2V0ICAgICAgICA9IG1seDVlX2h3dHN0YW1wX3NldF9uZG8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01MzQ2LSNpZmRlZiBDT05GSUdfTUxYNV9FTl9BUkZTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYz02NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seDVpX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYy03Mi1cXHQubmRvX2h3dHN0YW1wX2dldCAgICAgICAgPSBtbHg1aV9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmM6NzM6XFx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgID0gbWx4NWlfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jLTc0LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jPTE0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seDVpX3BrZXlfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYl92bGFuLmMtMTUxLVxcdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgICA9IG1seDVpX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jOjE1MjpcXHQubmRvX2h3dHN0YW1wX3NldCAgICAgICAgPSBtbHg1aV9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liX3ZsYW4uYy0xNTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM9MTE5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seHN3X3NwX3BvcnRfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtMTIwNi1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gbWx4c3dfc3BfcG9ydF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzoxMjA3OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBtbHhzd19zcF9wb3J0X2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTEyMDgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NTU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZmJuaWNfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtNTcwLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBmYm5pY19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo1NzE6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGZibmljX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTU3Mi19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM0OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW43NDN4X25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzUwNS1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gbGFuNzQzeF9wdHBfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNTA2OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBsYW43NDN4X3B0cF9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM1MDctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTUwMT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxhbjk2NnhfcG9ydF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtNTE1LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0XFx0PSBsYW45NjZ4X3BvcnRfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjUxNjpcXHQubmRvX2h3dHN0YW1wX3NldFxcdFxcdD0gbGFuOTY2eF9wb3J0X2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy01MTctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jPTI0OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHNwYXJ4NV9wb3J0X25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9uZXRkZXYuYy0yNjAtXFx0Lm5kb19od3RzdGFtcF9nZXQgICAgICAgPSBzcGFyeDVfcG9ydF9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmM6MjYxOlxcdC5uZG9faHd0c3RhbXBfc2V0ICAgICAgID0gc3Bhcng1X3BvcnRfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jLTI2Mi19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9OTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgb2NlbG90X3BvcnRfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTk2NC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdFxcdD0gb2NlbG90X3BvcnRfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjk2NTpcXHQubmRvX2h3dHN0YW1wX3NldFxcdFxcdD0gb2NlbG90X3BvcnRfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTk2Ni19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2tpLXNlbWkvcGNoX2diZS9wY2hfZ2JlX21haW4uYz0yMzQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgcGNoX2diZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2tpLXNlbWkvcGNoX2diZS9wY2hfZ2JlX21haW4uYy0yMzU3LVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gcGNoX2diZV9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2tpLXNlbWkvcGNoX2diZS9wY2hfZ2JlX21haW4uYzoyMzU4OlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gcGNoX2diZV9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2tpLXNlbWkvcGNoX2diZS9wY2hfZ2JlX21haW4uYy0yMzU5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9pb25pYy9pb25pY19saWYuYz0yODA1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaW9uaWNfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL2lvbmljL2lvbmljX2xpZi5jLTI4MjgtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IGlvbmljX2h3c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL2lvbmljL2lvbmljX2xpZi5jOjI4Mjk6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGlvbmljX2h3c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL2lvbmljL2lvbmljX2xpZi5jLTI4MzAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jPTY5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHFlZGVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jLTcyNS1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gcWVkZV9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmM6NzI2OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBxZWRlX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uYy03MjctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmM9MjYwNT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHJhdmJfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMjYxOC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gcmF2Yl9od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYzoyNjE5OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSByYXZiX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jLTI2MjAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM9MTg3MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHJzd2l0Y2hfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmMtMTg4MS1cXHQubmRvX2h3dHN0YW1wX2dldCA9IHJzd2l0Y2hfaHdzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yc3dpdGNoX21haW4uYzoxODgyOlxcdC5uZG9faHd0c3RhbXBfc2V0ID0gcnN3aXRjaF9od3N0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE4ODMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jPTExNzM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBydHNuX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYy0xMTgwLVxcdC5uZG9fc2V0X21hY19hZGRyZXNzXFx0PSBldGhfbWFjX2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmM6MTE4MTpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gcnRzbl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMtMTE4Mi1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gcnRzbl9od3RzdGFtcF9nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4LmM9NTY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZWZ4X25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4LmMtNTgxLVxcdC5uZG9fdmxhbl9yeF9raWxsX3ZpZFxcdD0gZWZ4X3ZsYW5fcnhfa2lsbF92aWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmeC5jOjU4MjpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gZWZ4X2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4LmMtNTgzLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBlZnhfaHd0c3RhbXBfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2VmeC5jPTU5ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVmeF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2VmeC5jLTYwOC1cXHQubmRvX3ZsYW5fcnhfa2lsbF92aWRcXHQ9IGVmeF92bGFuX3J4X2tpbGxfdmlkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9zaWVuYS9lZnguYzo2MDk6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGVmeF9zaWVuYV9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL3NpZW5hL2VmeC5jLTYxMC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gZWZ4X3NpZW5hX2h3dHN0YW1wX2dldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzI0LVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gc3RtbWFjX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMjU6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBzdG1tYWNfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMyNi19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0xOTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYW02NV9jcHN3X251c3NfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMTk4OC1cXHQubmRvX2h3dHN0YW1wX2dldCAgICAgICA9IGFtNjVfY3Bzd19udXNzX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjE5ODk6XFx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgPSBhbTY1X2Nwc3dfbnVzc19od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0xOTkwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmM9MTE5OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGNwc3dfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMjE3LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBjcHN3X2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmM6MTIxODpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gY3Bzd19od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jLTEyMTktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmM9MTE0OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGNwc3dfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmMtMTE2OC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gY3Bzd19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYzoxMTY5OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBjcHN3X2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jLTExNzAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTE2MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlbWFjX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNjUyLVxcdC5uZG9faHd0c3RhbXBfZ2V0ID0gaWNzc2dfbmRvX2dldF90c19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTY1MzpcXHQubmRvX2h3dHN0YW1wX3NldCA9IGljc3NnX25kb19zZXRfdHNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE2NTQtXFx0Lm5kb194c2tfd2FrZXVwID0gcHJ1ZXRoX3hza193YWtldXAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmM9NzQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jLTc1My1cXHQubmRvX2h3dHN0YW1wX2dldCA9IGljc3NnX25kb19nZXRfdHNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYzo3NTQ6XFx0Lm5kb19od3RzdGFtcF9zZXQgPSBpY3NzZ19uZG9fc2V0X3RzX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmMtNzU1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmM9MTc4ND1zdGF0aWMgaW50IG5ldGNwX25kb19od3RzdGFtcF9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmMtMTgwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9uZXRjcF9jb3JlLmM6MTgwNzpzdGF0aWMgaW50IG5ldGNwX25kb19od3RzdGFtcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvbmV0Y3BfY29yZS5jLTE4MDgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvbmV0Y3BfY29yZS5jPTE5OTc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZXRjcF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvbmV0Y3BfY29yZS5jLTIwMTEtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IG5ldGNwX25kb19od3RzdGFtcF9nZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvbmV0Y3BfY29yZS5jOjIwMTI6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IG5ldGNwX25kb19od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvbmV0Y3BfY29yZS5jLTIwMTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz02NzA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZ2JlX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNjg0LVxcdC5uZG9fdmxhbl9yeF9raWxsX3ZpZCAgID0gd3hfdmxhbl9yeF9raWxsX3ZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM6Njg1OlxcdC5uZG9faHd0c3RhbXBfc2V0ICAgICAgID0gd3hfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy02ODYtXFx0Lm5kb19od3RzdGFtcF9nZXQgICAgICAgPSB3eF9od3RzdGFtcF9nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB0eGdiZV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzEwLVxcdC5uZG9fdmxhbl9yeF9raWxsX3ZpZCAgID0gd3hfdmxhbl9yeF9raWxsX3ZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo3MTE6XFx0Lm5kb19od3RzdGFtcF9zZXQgICAgICAgPSB3eF9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzEyLVxcdC5uZG9faHd0c3RhbXBfZ2V0ICAgICAgID0gd3hfaHd0c3RhbXBfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYz0xNDIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXhwNHh4X25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jLTE0MzEtXFx0Lm5kb19od3RzdGFtcF9nZXQgPSBpeHA0eHhfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmM6MTQzMjpcXHQubmRvX2h3dHN0YW1wX3NldCA9IGl4cDR4eF9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy0xNDMzLX07XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTE5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hY3ZsYW5fbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjE2LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtYWN2bGFuX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTIxNzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbWFjdmxhbl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMTgtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDQ6MjEuMzE3OTI0NDRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwMDY1NjY4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBNYWN2bGFuIGFuZCBIYXJkd2FyZSBUaW1lc3RhbXBpbmcqKlxuXG5SaWdodCwgc28gYG1hY3ZsYW5gIGlzIHV0aWxpemluZyB0aGUgYG5kb19od3RzdGFtcF9zZXRgIGFuZCBgbmRvX2h3dHN0YW1wX2dldGAgbmV0ZGV2aWNlIG9wZXJhdGlvbnMuIEV4Y2VsbGVudCwgdGhhdCdzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGZvciBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgc3VwcG9ydC4gSXQgbWVhbnMgdGhleSdyZSBzZXR0aW5nIHVwIHRoZSBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgZm9yIGdldHRpbmcgYW5kIHNldHRpbmcgaGFyZHdhcmUgdGltZXN0YW1wcy4gSSBuZWVkIHRvIGRpZyBpbnRvIGBtYWN2bGFuX2h3dHN0YW1wX3NldGAgc3BlY2lmaWNhbGx5IHRvIHNlZSAqaG93KiB0aGV5J3JlIGhhbmRsaW5nIGl0LiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGFyZSBhc3NvY2lhdGluZyB0aGUgbWFjdmxhbiBpbnRlcmZhY2Ugd2l0aCBhIHBoeXNpY2FsIGhhcmR3YXJlIHRpbWVzdGFtcCBzb3VyY2UuIEFyZSB0aGV5IHNpbXBseSBwYXNzaW5nIHRoZSByZXF1ZXN0IGFsb25nIHRvIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGludGVyZmFjZSwgb3IgaXMgdGhlcmUgbW9yZSBjb21wbGV4IGxvZ2ljIGludm9sdmVkIHRvIGFjY291bnQgZm9yIHRoZSB2aXJ0dWFsIG5hdHVyZSBvZiBtYWN2bGFuPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBnb3RjaGFzIHdpdGggdGhlIG11bHRpcGxlIG1hY3ZsYW4gaW50ZXJmYWNlcyBvbiBhIHNpbmdsZSBwaHlzaWNhbCBwb3J0IGFuZCB0aW1lIGtlZXBpbmcgYWNjdXJhY3k/IFRoaXMgd2lsbCBiZSBpbnRlcmVzdGluZy4gTGV0J3Mgc2VlIGhvdyB0aGlzIGlzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTk4OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA0OjI1LjQxODU4MzI2MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE4MzEzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjdmxhbl9od3RzdGFtcF9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz04OTE9c3RhdGljIGludCBtYWN2bGFuX2h3dHN0YW1wX2dldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTg5OC1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6ODk5OnN0YXRpYyBpbnQgbWFjdmxhbl9od3RzdGFtcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtOTAwLVxcdFxcdFxcdFxcdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTE5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hY3ZsYW5fbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjE2LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtYWN2bGFuX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTIxNzpcXHQubmRvX2h3dHN0YW1wX3NldFxcdD0gbWFjdmxhbl9od3RzdGFtcF9zZXQsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMTgtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDQ6MjUuNTEwNDIwMDIxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1ODUwMjkzNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9ibGVtOlxuXG4qKk5ldHdvcmsgSW50ZXJmYWNlIFNlbGVjdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgbmV0d29yayBzZXR1cCBhbmQgaXQgbG9va3MgbGlrZSBgbWFjdmxhbmAgc2hvdWxkIGJlIHBlcmZlY3RseSBhZGVxdWF0ZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIG5lZWQuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZSBgdmV0aGAgaW50ZXJmYWNlIGFsc28gaW1wbGVtZW50cyB0aGlzIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBvcHRpb25zIGJlZm9yZSBJIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1MzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNTozMS4zNjA3MTcwNjFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDgyNjEwMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmRvX2h3dHN0YW1wX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92ZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA1OjMxLjgyNTU1MjA0NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM0MTgzMzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgTmV0d29yayBJbnRlcmZhY2UgUG9zc2liaWxpdGllcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBvcmlnaW5hbCBhc3N1bXB0aW9uIG9mIGB2ZXRoYCBiZWluZyB0aGUgc29sdXRpb24gaXMgaW5jb3JyZWN0LiBUaGF0IHBhdGggaXMgYSBkZWFkIGVuZC4gSSBuZWVkIHRvIHBpdm90LiBMZXQncyBub3Qgd2FzdGUgYW55IG1vcmUgdGltZSB0aGVyZS5cblxuTXkgaW1tZWRpYXRlIG5leHQgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSBgZHVtbXlgLiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyBpcyBhIHNlbnNpYmxlIG5leHQgc3RlcCBpbiB0aGUgdHJvdWJsZXNob290aW5nIHByb2Nlc3MuIFBlcmhhcHMgYSBzaW1wbGUsIHN0YXRlbGVzcyBpbnRlcmZhY2UgaXMgd2hhdCdzIHJlcXVpcmVkIGhlcmUuIExldCdzIHNlZSBpZiB0aGlzIGNvbmZpZ3VyYXRpb24gY2FuIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBmb3VuZGF0aW9uLiBJJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBzb21lIGxpa2VseSBzY2VuYXJpb3MsIHNwZWNpZmljIHBhcmFtZXRlcnMgYW5kIHRlc3RzIEknbGwgcGVyZm9ybSB0byBjb25maXJtIGl0cyB1dGlsaXR5IG9yIGxhY2sgdGhlcmVvZi4gVGltZSB0byBkaXZlIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kIHNlZSBpZiB0aGlzIGhvbGRzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Njk4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDU6MzUuNDU5NzM5NTIyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTI4NTg5MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmRvX2h3dHN0YW1wX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kdW1teS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNTozNS41MjEwMzEwNjZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0OTk5OTc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEEgQ29uY2lzZSBOZWdhdGl2ZSBSZXNwb25zZSBcdTAwMjYgU3Vic2VxdWVudCBTdHJhdGVneSoqXG5cbkhtbSwgXCJOby5cIiBUaGF0J3MgdGhlIGluaXRpYWwgZ3V0IHJlYWN0aW9uLiBBIHN3aWZ0LCBhbG1vc3QgcmVmbGV4aXZlIGRlbmlhbC4gVXN1YWxseSwgdGhpcyBtZWFucyBJJ3ZlIGVpdGhlciBlbmNvdW50ZXJlZCBhIGNvbmNlcHQgSSdtICp2ZXJ5KiBmYW1pbGlhciB3aXRoLCBhbmQgdGhlIGluaXRpYWwgcHJvbXB0IHNlZW1zIG9mZiwgb3IgcGVyaGFwcyBzb21ldGhpbmcgZmVlbHMgZnVuZGFtZW50YWxseSBmbGF3ZWQuIFJhdGhlciB0aGFuIGR3ZWxsaW5nIG9uIHRoZSBuZWdhdGlvbiwgbGV0J3MgcGl2b3QuIFRoZSBpbW1lZGlhdGUgZm9sbG93LXVwIHRob3VnaHQsIFwiTGV0J3MgY2hlY2sgYGJvbmRpbmdgLFwiIHN1Z2dlc3RzIGEgc3RyYXRlZ2ljIHJlZGlyZWN0aW9uLiBNeSBpbml0aWFsIG5lZ2F0aXZlIGltcHJlc3Npb24gaXMgcHJvbXB0aW5nIG1lIHRvIGV2YWx1YXRlIHRoZSBjb25uZWN0aW9uIHRvIGEgcmVsYXRlZCwgYW5kIHBlcmhhcHMgbW9yZSBwcmVjaXNlLCB0ZXJtIG9yIGNvbmNlcHQuIEknbSBjaG9vc2luZyB0byB1bnBhY2sgdGhlIGVzc2VuY2Ugb2Ygd2hhdCB0aGF0ICdubycgcmVsYXRlcyB0byBieSBkaWdnaW5nIGRlZXBlciBpbnRvICdib25kaW5nJy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5MzAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNTozOC44NzEwMzQ0NTNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODU3NDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5kb19od3RzdGFtcF9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm9uZF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTc2LVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBib25kX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjU5Nzc6XFx0Lm5kb19od3RzdGFtcF9zZXRcXHQ9IGJvbmRfaHd0c3RhbXBfc2V0LFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk3OC19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNTozOC45MjU4OTkwNzhaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4NDkyNjg1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zIGhlcmUuIElmIGBib25kaW5nYCBpcyB0aGUgaW1wbGVtZW50YXRpb24gbWV0aG9kLCB0aGVuIHRoYXQgbWVhbnMgYm90aCBgTUFDVkxBTmAgYW5kIGBCT05ESU5HYCBhcmUgcHJvYmFibHkgc29saWQgb3B0aW9ucyB0byBoYXZlIG9uIHRoZSB0YWJsZS4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBNQUNWTEFOYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGlmIGl0IG5lZWRzIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0byBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlZmF1bHQgc3RhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3Mjg2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDU6NDIuNjEwODMyMDRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzYzMjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUNWTEFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0xNjM9c291cmNlIFxcXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjQtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDU6NDIuNjkwNjAwNDIyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NzE2ODIyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTmV0d29ya2luZyBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgbmV0d29yayBjb25maWd1cmF0aW9ucyBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgTUFDVkxBTmAuIFRoYXQncyBhIGtleSBwaWVjZSBvZiB0aGlzIHB1enpsZSDigJMgYSBjcnVjaWFsIG1ldGhvZCBmb3IgbmV0d29yayB2aXJ0dWFsaXphdGlvbi4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBpbXBsaWNhdGlvbnMgZm9yIGlzb2xhdGlvbiBhbmQgcmVzb3VyY2Ugc2hhcmluZywgdGhlIGJlbmVmaXRzIG9mIG11bHRpcGxlIE1BQyBhZGRyZXNzZXMgcGVyIHBoeXNpY2FsIGludGVyZmFjZSwgYW5kIHRoZSBwb3RlbnRpYWwgY29tcGxleGl0aWVzIGluIHJvdXRpbmcgYW5kIGJyaWRnaW5nIHNjZW5hcmlvcy5cblxuTm93LCBsZXQncyBwaXZvdCB0byBgQk9ORElOR2AuIEkgbmVlZCB0byBhc3Nlc3MgaG93IGl0IHdvcmtzIHdpdGggYE1BQ1ZMQU5gLiBJJ20gY3VyaW91cyBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggbGluayBhZ2dyZWdhdGlvbiBmb3IgaW5jcmVhc2VkIGJhbmR3aWR0aCBhbmQgcmVkdW5kYW5jeS4gSSdtIHdvbmRlcmluZyBpZiB0aGlzIHNldHVwIGludm9sdmVzIGEgc29waGlzdGljYXRlZCBvcmNoZXN0cmF0aW9uIG9mIHRoZSBib25kaW5nIG1vZGVzIChhY3RpdmUtYmFja3VwLCBMQUNQLCBldGMuKSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBNQUNWTEFOIGludGVyZmFjZXMsIGFuZCB3aGF0IHRob3NlIGRldGFpbHMgbWlnaHQgYmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGVzZSBtZWNoYW5pc21zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzUzOCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA1OjQ4LjQ2MjI4ODAwMVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwMjY5MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJPTkRJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTM5PWlmIE5FVF9DT1JFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjQxOmNvbmZpZyBCT05ESU5HXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiQm9uZGluZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDU6NDguNTI0MzE5MTE1WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NzMyMzk3NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV0d29yayBDb25maWd1cmF0aW9uIERlY2lzaW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gZW5zdXJlIHdlIGhhdmUgYSBuZXR3b3JrIGRldmljZSB0aGF0IHByb3Blcmx5IHN1cHBvcnRzIGhhcmR3YXJlIHRpbWVzdGFtcGluZyB2aWEgYG5kb19od3RzdGFtcF9zZXRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpbmNsdWRpbmcgYE1BQ1ZMQU5gIGFuZCBgQk9ORElOR2AgY29uZmlndXJhdGlvbnMgd2l0aGluIGBFbmFibGVDb25maWdzYCB3b3VsZCBiZSBhIGdvb2QgYXBwcm9hY2gsIGJlY2F1c2UgSSBrbm93IHRoZXkncmUgb2Z0ZW4gdXNlZCBmb3IgdGhpcyBraW5kIG9mIHNldHVwLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guIEknbSByZW1lbWJlcmluZyB0aGF0IGBldGhubF9zZXRfdHNjb25maWdgIGRvZXNuJ3QgKmRpcmVjdGx5KiBjYWxsIGBuZG9faHd0c3RhbXBfc2V0YCwgcmlnaHQ/IEl0IGNhbGxzIGBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdoaWNoIHRoZW4gbWlnaHQgdXNlIGl0PyBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGFuZCB2ZXJpZnkgdGhlIGV4YWN0IGNhbGwgY2hhaW4uIExldCBtZSBwdWxsIHVwIGBldGhubF9zZXRfdHNjb25maWdgIGFnYWluIGFuZCBtYWtlIHN1cmUgSSBoYXZlIHRoZSBkZXRhaWxzIHN0cmFpZ2h0LiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBwYXRoIG9mIHRoZSBod3RzdGFtcCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg1NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA1OjUzLjA5NzU5MDM2N1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2V0aHRvb2wvdHNjb25maWcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MDA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHRzX2ZsYWdzX25hbWVzLCBpbmZvLVxcdTAwM2VleHRhY2ssXFxuIDQwMTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmNvbmZpZ19tb2QpO1xcbiA0MDI6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDQwMzpcXHRcXHRcXHRcXHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcXG4gNDA0OlxcdFxcdH1cXG4gNDA1OlxcdFxcbiA0MDY6XFx0XFx0cmV0ID0gbmV0X2h3dHN0YW1wX3ZhbGlkYXRlKFxcdTAwMjZod3RzdF9jb25maWcpO1xcbiA0MDc6XFx0XFx0aWYgKHJldClcXG4gNDA4OlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xcbiA0MDk6XFx0XFxuIDQxMDpcXHRcXHRpZiAoaHdwcm92X21vZCkge1xcbiA0MTE6XFx0XFx0XFx0c3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgemVyb19jb25maWcgPSB7MH07XFxuIDQxMjpcXHRcXHRcXHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKl9faHdwcm92O1xcbiA0MTM6XFx0XFxuIDQxNDpcXHRcXHRcXHQvKiBEaXNhYmxlIGN1cnJlbnQgdGltZSBzdGFtcGluZyBpZiB3ZSB0cnkgdG8gZW5hYmxlXFxuIDQxNTpcXHRcXHRcXHQgKiBhbm90aGVyIG9uZVxcbiA0MTY6XFx0XFx0XFx0ICovXFxuIDQxNzpcXHRcXHRcXHRyZXQgPSBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihkZXYsIFxcdTAwMjZ6ZXJvX2NvbmZpZywgaW5mby1cXHUwMDNlZXh0YWNrKTtcXG4gNDE4OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA0MTk6XFx0XFx0XFx0XFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XFxuIDQyMDpcXHRcXG4gNDIxOlxcdFxcdFxcdC8qIENoYW5nZSB0aGUgc2VsZWN0ZWQgaHd0c3RhbXAgc291cmNlICovXFxuIDQyMjpcXHRcXHRcXHRfX2h3cHJvdiA9IHJjdV9yZXBsYWNlX3BvaW50ZXIoZGV2LVxcdTAwM2Vod3Byb3YsIGh3cHJvdixcXG4gNDIzOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBuZXRkZXZfaXNfbG9ja2VkX29wc19jb21wYXQoZGV2KSk7XFxuIDQyNDpcXHRcXHRcXHRpZiAoX19od3Byb3YpXFxuIDQyNTpcXHRcXHRcXHRcXHRrZnJlZV9yY3UoX19od3Byb3YsIHJjdV9oZWFkKTtcXG4gNDI2OlxcdFxcdH1cXG4gNDI3OlxcdFxcbiA0Mjg6XFx0XFx0aWYgKGNvbmZpZ19tb2QpIHtcXG4gNDI5OlxcdFxcdFxcdHJldCA9IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKGRldiwgXFx1MDAyNmh3dHN0X2NvbmZpZyxcXG4gNDMwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGluZm8tXFx1MDAzZWV4dGFjayk7XFxuIDQzMTpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gNDMyOlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDQzMzpcXHRcXHR9XFxuIDQzNDpcXHRcXG4gNDM1OlxcdFxcdHJldCA9IHRzY29uZmlnX3NlbmRfcmVwbHkoZGV2LCBpbmZvKTtcXG4gNDM2OlxcdFxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FT1BOT1RTVVBQKSB7XFxuIDQzNzpcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhpbmZvLVxcdTAwM2VleHRhY2ssXFxuIDQzODpcXHRcXHRcXHRcXHQgICAgICAgXFxcImVycm9yIHdoaWxlIHJlYWRpbmcgdGhlIG5ldyBjb25maWd1cmF0aW9uIHNldFxcXCIpO1xcbiA0Mzk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDQwOlxcdFxcdH1cXG4gNDQxOlxcdFxcbiA0NDI6XFx0XFx0LyogdHNjb25maWcgaGFzIG5vIG5vdGlmaWNhdGlvbiAqL1xcbiA0NDM6XFx0XFx0cmV0dXJuIDA7XFxuIDQ0NDpcXHRcXG4gNDQ1OlxcdGVycl9mcmVlX2h3cHJvdjpcXG4gNDQ2OlxcdFxcdGtmcmVlKGh3cHJvdik7XFxuIDQ0NzpcXHRcXG4gNDQ4OlxcdFxcdHJldHVybiByZXQ7XFxuIDQ0OTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA1OjUzLjA5NzgxNzA5N1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjUxODQ0OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyB0aGUgSGFyZHdhcmUgVGltZXN0YW1waW5nIEltcGxlbWVudGF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBzeXN0ZW0gaXMgY2FsbGluZyBgZGV2X3NldF9od3RzdGFtcF9waHlsaWJgLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIG15IG5ldHdvcmsgc3RhY2sgZXhwZXJ0aXNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGhlcmUgd2l0aCBoYXJkd2FyZSB0aW1lc3RhbXBpbmcsIHNvIHRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgbG9jYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2X3NldF9od3RzdGFtcF9waHlsaWJgLiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGRlYWxzIHdpdGggZGV2aWNlIGlvY3RscyBhbmQgcG90ZW50aWFsIGhhcmR3YXJlIGludGVyYWN0aW9uIHJlbGF0ZWQgdG8gdGltZXN0YW1waW5nIEknbSBwcmV0dHkgc3VyZSBJJ2xsIGZpbmQgaXQgaW4gYG5ldC9jb3JlL2Rldl9pb2N0bC5jYCwgb3Igc29tZXRoaW5nIGNsb3NlbHkgcmVsYXRlZCBpbiB0aGUgbmV0d29ya2luZyBjb3JlIG9yIG1heWJlIGluIHRoZSBwaHlsaWIgaXRzZWxmLCBkZXBlbmRpbmcgb24gaG93IHRoaXMgaXMgc3RydWN0dXJlZC4gTGV0J3Mgc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFuZCB3aGF0J3MgZ29pbmcgb24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODk2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNTo1Ni43NDk2NjYxNjNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTM5NzI0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldi5oPTQwMj12b2lkIGtpY2tfZGVmZXJfbGlzdF9wdXJnZSh1bnNpZ25lZCBpbnQgY3B1KTtcXG5uZXQvY29yZS9kZXYuaC00MDMtXFxubmV0L2NvcmUvZGV2Lmg6NDA0OmludCBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9jb3JlL2Rldi5oLTQwNS1cXHRcXHRcXHQgICAgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9jb3JlL2Rldl9pb2N0bC5jPTI4Mj1zdGF0aWMgaW50IGRldl9nZXRfaHd0c3RhbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIpXFxuLS1cXG5uZXQvY29yZS9kZXZfaW9jdGwuYy0zMTUtLyoqXFxubmV0L2NvcmUvZGV2X2lvY3RsLmM6MzE2OiAqIGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKCkgLSBDaGFuZ2UgaGFyZHdhcmUgdGltZXN0YW1waW5nIG9mIE5JQ1xcbm5ldC9jb3JlL2Rldl9pb2N0bC5jLTMxNy0gKlxcdG9yIG9mIGF0dGFjaGVkIHBoeWxpYiBQSFlcXG4tLVxcbm5ldC9jb3JlL2Rldl9pb2N0bC5jLTMyNy0gKi9cXG5uZXQvY29yZS9kZXZfaW9jdGwuYzozMjg6aW50IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2NvcmUvZGV2X2lvY3RsLmMtMzI5LVxcdFxcdFxcdCAgICBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY2ZnLFxcbi0tXFxubmV0L2NvcmUvZGV2X2lvY3RsLmM9MzkxPXN0YXRpYyBpbnQgZGV2X3NldF9od3RzdGFtcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKmlmcilcXG4tLVxcbm5ldC9jb3JlL2Rldl9pb2N0bC5jLTQyMi1cXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcXG5uZXQvY29yZS9kZXZfaW9jdGwuYzo0MjM6XFx0ZXJyID0gZGV2X3NldF9od3RzdGFtcF9waHlsaWIoZGV2LCBcXHUwMDI2a2VybmVsX2NmZywgXFx1MDAyNmV4dGFjayk7XFxubmV0L2NvcmUvZGV2X2lvY3RsLmMtNDI0LVxcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XFxuLS1cXG5uZXQvY29yZS9kZXZfaW9jdGwuYz00NjE9aW50IGdlbmVyaWNfaHd0c3RhbXBfc2V0X2xvd2VyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9kZXZfaW9jdGwuYy00NzQtXFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XFxubmV0L2NvcmUvZGV2X2lvY3RsLmM6NDc1OlxcdGVyciA9IGRldl9zZXRfaHd0c3RhbXBfcGh5bGliKGRldiwga2VybmVsX2NmZywgZXh0YWNrKTtcXG5uZXQvY29yZS9kZXZfaW9jdGwuYy00NzYtXFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmM9MzAzPXN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXFxuLS1cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQxNi1cXHRcXHQgKi9cXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jOjQxNzpcXHRcXHRyZXQgPSBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYihkZXYsIFxcdTAwMjZ6ZXJvX2NvbmZpZywgaW5mby1cXHUwMDNlZXh0YWNrKTtcXG5uZXQvZXRodG9vbC90c2NvbmZpZy5jLTQxOC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDI4LVxcdGlmIChjb25maWdfbW9kKSB7XFxubmV0L2V0aHRvb2wvdHNjb25maWcuYzo0Mjk6XFx0XFx0cmV0ID0gZGV2X3NldF9od3RzdGFtcF9waHlsaWIoZGV2LCBcXHUwMDI2aHd0c3RfY29uZmlnLFxcbm5ldC9ldGh0b29sL3RzY29uZmlnLmMtNDMwLVxcdFxcdFxcdFxcdFxcdCAgICAgIGluZm8tXFx1MDAzZWV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA1OjU2Ljg3NTA3MTc3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDY1OTc3NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uXG5cbioqRGl2aW5nIGludG8gdGhlIEhhcmR3YXJlIFRpbWVzdGFtcGluZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIGhvdyBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgZ2V0cyBjb25maWd1cmVkLiBTcGVjaWZpY2FsbHksIGBkZXZfc2V0X2h3dHN0YW1wX3BoeWxpYmAgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmU7IGl0J3MgdGhlIG9uZSB0aGF0IHVsdGltYXRlbHkgc2V0cyB0aGUgaGFyZHdhcmUgdGltZXN0YW1waW5nIGNvbmZpZ3VyYXRpb24uIEkgY2FuIHNlZSB0aGF0IGl0IGVuZHMgdXAgY2FsbGluZyBzb21ldGhpbmcgbGlrZSBgbmRvX2h3dHN0YW1wX3NldGAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uLCB3aGljaCBJIHdvdWxkIGV4cGVjdC5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gbG9va2luZyBhIGxpdHRsZSBjbG9zZXIsIGBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGVgIGNvbWVzIGludG8gcGxheS4gQW5kIGl0J3MgZG9pbmcgYSBjaGVjaywgYW5kIEkgc2VlIGAhb3BzLVx1MDAzZW5kb19od3RzdGFtcF9zZXQgfHwgIW9wcy1cdTAwM2VuZG9faHd0c3RhbXBfZ2V0YC4gQWgsIG9rYXksIHNvIGlmIHRoZSBkZXZpY2UgZHJpdmVyICpkb2Vzbid0KiBpbXBsZW1lbnQgYm90aCB0aGUgYG5kb19od3RzdGFtcF9zZXRgICphbmQqIGBuZG9faHd0c3RhbXBfZ2V0YCBvcGVyYXRpb25zLCB0aGlzIHZhbGlkYXRpb24gZnVuY3Rpb24gcmV0dXJucyBgLUVPUE5PVFNVUFBgIHJlYWxseSBlYXJseS4gVGhhdCBtZWFucyBpZiBlaXRoZXIgb2YgdGhvc2UgYXJlIG5vdCBpbXBsZW1lbnRlZCB0aGVuIGBldGhubF9zZXRfdHNjb25maWdgIHdvbid0IGV2ZW4gYmUgY2FsbGVkIGxhdGVyLlxuXG5IbW0sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgZ28gYmFjayBhbmQgcmUtZXhhbWluZSBgZXRobmxfc2V0X3RzY29uZmlnX3ZhbGlkYXRlYCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IGVhcmx5IGV4aXQgY29uZGl0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTkyMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNjowMS44ODE2NzMzODdaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9ldGh0b29sL3RzY29uZmlnLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjUxLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUxOlxcdHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnX3ZhbGlkYXRlKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXFxuIDI1MjpcXHRcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gMjUzOlxcdHtcXG4gMjU0OlxcdFxcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyAqb3BzID0gcmVxX2Jhc2UtXFx1MDAzZWRldi1cXHUwMDNlbmV0ZGV2X29wcztcXG4gMjU1OlxcdFxcbiAyNTY6XFx0XFx0aWYgKCFvcHMtXFx1MDAzZW5kb19od3RzdGFtcF9zZXQgfHwgIW9wcy1cXHUwMDNlbmRvX2h3dHN0YW1wX2dldClcXG4gMjU3OlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gMjU4OlxcdFxcbiAyNTk6XFx0XFx0cmV0dXJuIDE7XFxuIDI2MDpcXHR9XFxuIDI2MTpcXHRcXG4gMjYyOlxcdHN0YXRpYyBzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKlxcbiAyNjM6XFx0dHNjb25maWdfc2V0X2h3cHJvdl9mcm9tX2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gMjY0OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuIDI2NTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXJfZGVzYyAqaHdwcm92X2Rlc2MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA2OjAxLjg4MTgwNTIxN1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk2OTM4MTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgUmVxdWlyZW1lbnRzKipcblxuT2theSwgc28gdGhlIGNvZGUgY2xlYXJseSBzdGF0ZXMgaXQnbGwgcmV0dXJuIGFuIGAtRU9QTk9UU1VQUGAgZXJyb3IgaWYgdGhlIGBuZG9faHd0c3RhbXBfc2V0YCBvciBgbmRvX2h3dHN0YW1wX2dldGAgZnVuY3Rpb24gcG9pbnRlcnMgYXJlbid0IHByZXNlbnQgaW4gdGhlIG5ldHdvcmsgZGV2aWNlJ3MgTkRJUyBpbnRlcmZhY2UuIFRoYXQncyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBUaGUgaW1wbGljYXRpb24gaXMgb2J2aW91czogd2UgYWJzb2x1dGVseSBuZWVkIGEgZGV2aWNlIHRoYXQgYWN0dWFsbHkgKmltcGxlbWVudHMqIHRob3NlIGZ1bmN0aW9ucy5cblxuTm93LCB3aGljaCBkZXZpY2VzIGFyZSBsaWtlbHkgY2FuZGlkYXRlcyBmb3IgdGhpcz8gVGhpbmtpbmcgaXQgdGhyb3VnaCwgYE1BQ1ZMQU5gIGFuZCBgQk9ORElOR2AgaW1tZWRpYXRlbHkgc3ByaW5nIHRvIG1pbmQgYXMgcG9zc2liaWxpdGllcy4gVGhleSdyZSB2aXJ0dWFsIGludGVyZmFjZXMsIGFuZCB0aGV5IG9mdGVuIGludGVyYWN0IHdpdGggaGFyZHdhcmUgaW4gaW50ZXJlc3Rpbmcgd2F5cy4gVGhleSdyZSB3b3J0aCBpbnZlc3RpZ2F0aW5nIGZ1cnRoZXIuXG5cbkJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgY29kZSBmb3IgdGhvc2Ugc3BlY2lmaWMgZHJpdmVycywgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgTUFDVkxBTiBoYXMgYW55IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGhvdyBpdCBoYW5kbGVzIGhhcmR3YXJlIHRpbWVzdGFtcGluZy4gQmV0dGVyIHRvIGhhdmUgYWxsIHRoZSBjb250ZXh0IHVwZnJvbnQsIGJlZm9yZSBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHRoZSBkZXRhaWxzLiBUaGlzIGluaXRpYWwgc3dlZXAgc2hvdWxkIGVuc3VyZSBJIGRvbid0IG92ZXJsb29rIGFueSBjcnVjaWFsIHN0ZXBzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDY0MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDY6MDYuMDc4NzQ3NDU5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzkwMDQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9MTYzPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTY1OmNvbmZpZyBNQUNWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjYtXFx0dHJpc3RhdGUgXFxcIk1BQy1WTEFOIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA2OjA2LjE1MjY1ODIxMVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM4NDIzMDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQuIExldCdzIHNlZS4uLiB0aGUgYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUgaXMgdXN1YWxseSB0aGUgcGxhY2UgdG8gc3RhcnQuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFyb3VuZCBsaW5lIDE2NSBvciBzby4gVGhhdCBzaG91bGQgYmUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHNlZSB3aGF0J3MgYmVpbmcgZGVmaW5lZCBhbmQgaG93IHRoZSBvcHRpb25zIGFyZSBuZXN0ZWQuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgY29yZSBkcml2ZXIgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0aGVyZSDigJMgdGhpbmdzIGxpa2UgaW50ZXJmYWNlIHR5cGVzLCBwcm90b2NvbCBzdXBwb3J0LCBhbmQgYW55IGhhcmR3YXJlLXNwZWNpZmljIGZlYXR1cmVzIHRoYXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEZyb20gdGhlcmUsIEknbGwgYmUgYWJsZSB0byB0cmFjZSBkZXBlbmRlbmNpZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB2YXJpb3VzIHNldHRpbmdzIG9uIHRoZSBidWlsZC4gSXQncyBhIGJpdCBsaWtlIGFyY2hhZW9sb2d5LCB0cmFjaW5nIHRoZSBsYXllcnMgb2YgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbiBjaG9pY2VzIGVtYmVkZGVkIGluIHRoZSBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMDUxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDY6MDkuODkxMDg0MjY5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2MDpcXHRcXHQgICdpZmIxJyBldGMuXFxuIDE2MTpcXHRcXHQgIExvb2sgYXQgdGhlIGlwcm91dGUyIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IGZvciB1c2FnZSBldGNcXG4gMTYyOlxcdFxcbiAxNjM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcXFwiXFxuIDE2NDpcXHRcXG4gMTY1OlxcdGNvbmZpZyBNQUNWTEFOXFxuIDE2NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gc3VwcG9ydFxcXCJcXG4gMTY3OlxcdFxcdGhlbHBcXG4gMTY4OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBtYXAgcGFja2V0cyB0b1xcbiAxNjk6XFx0XFx0ICBvciBmcm9tIHNwZWNpZmljIE1BQyBhZGRyZXNzZXMgdG8gYSBwYXJ0aWN1bGFyIGludGVyZmFjZS5cXG4gMTcwOlxcdFxcbiAxNzE6XFx0XFx0ICBNYWN2bGFuIGRldmljZXMgY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBcXFwiaXBcXFwiIGNvbW1hbmQgZnJvbSB0aGVcXG4gMTcyOlxcdFxcdCAgaXByb3V0ZTIgcGFja2FnZSBzdGFydGluZyB3aXRoIHRoZSBpcHJvdXRlMi0yLjYuMjMgcmVsZWFzZTpcXG4gMTczOlxcdFxcbiAxNzQ6XFx0XFx0ICBcXFwiaXAgbGluayBhZGQgbGluayBcXHUwMDNjcmVhbCBkZXZcXHUwMDNlIFsgYWRkcmVzcyBNQUMgXSBbIE5BTUUgXSB0eXBlIG1hY3ZsYW5cXFwiXFxuIDE3NTpcXHRcXG4gMTc2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAxNzc6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBtYWN2bGFuLlxcbiAxNzg6XFx0XFxuIDE3OTpcXHRjb25maWcgTUFDVlRBUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNjowOS44OTExOTgwMjlaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNTE5MTMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogTmV0d29yayBWaXJ0dWFsaXphdGlvbiBPcHRpb25zKipcblxuUmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTm8gZXh0ZXJuYWwgc29mdHdhcmUgZGVwZW5kZW5jaWVzIOKAkyB0aGF0J3MgYSBrZXkgYWR2YW50YWdlLiBXaGVuIEkgc2VlIHRoYXQsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYE1BQ1ZMQU5gLiBJdCdzIGEgY2xlYW4sIGVmZmljaWVudCB3YXkgdG8gZ2V0IG11bHRpcGxlIG5ldHdvcmsgaW50ZXJmYWNlcyBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUgcGh5c2ljYWwgTklDIG9uIGEgaG9zdC4gUHJldHR5IG11Y2ggdGhlIGZpcnN0IHRoaW5nIEkgd291bGQgY29uc2lkZXIgZm9yIHRoaXMgc29ydCBvZiB0YXNrLlxuXG5CdXQgaG9sZCBvbiwgYmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGUgYE1BQ1ZMQU5gIHBhdGgsIEkgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzLiBXaGF0IGFib3V0IHJlZHVuZGFuY3kgYW5kIHBlcmZvcm1hbmNlIGVuaGFuY2VtZW50IGF0IHRoZSBwaHlzaWNhbCBsYXllcj8gQm9uZGluZyBpcyAqYWx3YXlzKiB3b3J0aCBldmFsdWF0aW5nLCBlc3BlY2lhbGx5IGluIGFuIGVudmlyb25tZW50IHdoZXJlIG5ldHdvcmsgdXB0aW1lIGFuZCBiYW5kd2lkdGggYXJlIGNyaXRpY2FsLiBJIG5lZWQgdG8gd2VpZ2ggdGhlIGJlbmVmaXRzIG9mIGBNQUNWTEFOYCdzIHNpbXBsaWNpdHkgYWdhaW5zdCB0aGUgcG90ZW50aWFsIHJlc2lsaWVuY2UgYW5kIGFnZ3JlZ2F0aW9uIGNhcGFiaWxpdGllcyB0aGF0IGEgYm9uZGluZyBzZXR1cCBjb3VsZCBvZmZlci4gV2hpY2ggaXMgdGhlIGJlc3QgZml0LCBoZXJlPyBJcyBpdCBhIHNpbmdsZSBpbnRlcmZhY2UsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXg/IEkgbmVlZCB0byBhc2sgYSBmZXcgbW9yZSBxdWVzdGlvbnMgdG8gZGVjaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU5MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDY6MTMuODA2MzkxNTU3WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBZb3UgY2FuIHNheSBOIGhlcmUgaWYgeW91IGRvIG5vdCBpbnRlbmQgdG8gdXNlIGFueSBvZiB0aGVcXG4gIDM3OlxcdFxcdCAgbmV0d29ya2luZyBjb3JlIGRyaXZlcnMgKGkuZS4gVkxBTiwgYnJpZGdpbmcsIGJvbmRpbmcsIGV0Yy4pXFxuICAzODpcXHRcXG4gIDM5OlxcdGlmIE5FVF9DT1JFXFxuICA0MDpcXHRcXG4gIDQxOlxcdGNvbmZpZyBCT05ESU5HXFxuICA0MjpcXHRcXHR0cmlzdGF0ZSBcXFwiQm9uZGluZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG4gIDQzOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgNDQ6XFx0XFx0ZGVwZW5kcyBvbiBUTFMgfHwgVExTX0RFVklDRT1uXFxuICA0NTpcXHRcXHRoZWxwXFxuICA0NjpcXHRcXHQgIFNheSAnWScgb3IgJ00nIGlmIHlvdSB3aXNoIHRvIGJlIGFibGUgdG8gJ2JvbmQnIG11bHRpcGxlIEV0aGVybmV0XFxuICA0NzpcXHRcXHQgIENoYW5uZWxzIHRvZ2V0aGVyLiBUaGlzIGlzIGNhbGxlZCAnRXRoZXJjaGFubmVsJyBieSBDaXNjbyxcXG4gIDQ4OlxcdFxcdCAgJ1RydW5raW5nJyBieSBTdW4sIDgwMi4zYWQgYnkgdGhlIElFRUUsIGFuZCAnQm9uZGluZycgaW4gTGludXguXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgVGhlIGRyaXZlciBzdXBwb3J0cyBtdWx0aXBsZSBib25kaW5nIG1vZGVzIHRvIGFsbG93IGZvciBib3RoIGhpZ2hcXG4gIDUxOlxcdFxcdCAgcGVyZm9ybWFuY2UgYW5kIGhpZ2ggYXZhaWxhYmlsaXR5IG9wZXJhdGlvbi5cXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0ICBSZWZlciB0byBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy5yc3RcXHUwMDNlIGZvciBtb3JlXFxuICA1NDpcXHRcXHQgIGluZm9ybWF0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNjoxMy44MDY0ODYwNzdaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE5Mzk1MDQ0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogQSBSZWZpbmVkIEFwcHJvYWNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZvciBhIGZ1enppbmcgcGxhbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgZm9jdXNlZCBvbiBpZGVudGlmeWluZyB0aGUga2V5IG1vZGlmaWNhdGlvbnMgYW5kIGhvdyB0byByZWFjaCB0aGVtLiBGaXJzdCwgYEJPTkRJTkdgIGlzIHNhZmUgYmVjYXVzZSBpdCdzIGJ1aWx0IG9uIGBJTkVUYCwgc28gYE1BQ1ZMQU5gIGFuZCBgQk9ORElOR2AgYXJlIHZhbGlkIGNvbmZpZ3VyYXRpb25zIHRvIGFkZCB0byBvdXIgdGFyZ2V0cy4gIEFkZGluZyBgRVRIVE9PTF9ORVRMSU5LYCBpcyBhbHNvIGEgbm8tYnJhaW5lciBzaW5jZSBpdCdzIGRlZmF1bHQgJ3knIGFuZCB3ZSdsbCBuZWVkIGl0LiBJJ2xsIG1ha2UgYSBub3RlIG9mIHRoaXMuXG5cbk5vdywgbGV0J3MgcGlucG9pbnQgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdC4gIFRoZSBjb2RlIGhpZ2hsaWdodHMgYGV0aG5sX3NldF90c2NvbmZpZ2AgYXMgdGhlIGNvcmUgZnVuY3Rpb24sIGFsb25nIHdpdGggYSByZWxhdGVkIHZhbGlkYXRpb24gZnVuY3Rpb24sIGBldGhubF9zZXRfdHNjb25maWdfdmFsaWRhdGVgLiBJIGNvbmZpcm1lZCB0aGF0IGBldGhubF9zZXRfdHNjb25maWdgICppcyogc3RhdGljLCBidXQgaXRzIGFkZHJlc3MgaXMgdGFrZW4gYmVjYXVzZSBpdCdzIGFuIGVudHJ5IHBvaW50IGZvciBuZXRsaW5rLiBUaGUgcHJvbXB0IHN0cmVzc2VzIHByZWZlcnJpbmcgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYnV0IHRoaXMgb25lIGlzIHRoZSByaWdodCBjaG9pY2UsIHNpbmNlIGl0J3Mgbm90IGFjdHVhbGx5IGlubGluZWQuXG5cblRoZSBjb2RlJ3Mgc3RydWN0dXJlIGFsc28gcmV2ZWFscyB0aGF0IGBldGhubF9zZXRfdHNjb25maWdgIGlzIGNhbGxlZCB2aWEgYSBmdW5jdGlvbiBwb2ludGVyIGZyb20gYGV0aG5sX2RlZmF1bHRfc2V0X2RvaXRgLCBtZWFuaW5nIGl0J3MgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBObyBvdGhlciBmdW5jdGlvbnMgc2VlbSB0byBiZSBhZmZlY3RlZCwgc28gdGhhdCBuYXJyb3dzIHRoZSBzY29wZS5cblxuUmV2aWV3aW5nIHRoZSBwYXRjaCBpdHNlbGYgaXMgdGhlIG1vc3QgY3J1Y2lhbCBwYXJ0LiBUaGUgY2hhbmdlIGluIHRoZSB2YWxpZGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVwbGFjaW5nIGBmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSlgIHdpdGggYGh3ZWlnaHQzMihyZXFfdHhfdHlwZSkgIT0gMWAsIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBzaGlmdC4gIEl0IGFkZHJlc3NlcyBhIGJ1ZywgcHJldmVudGluZyBgcmVxX3R4X3R5cGVgIGZyb20gYmVpbmcgemVybywgd2hpY2gsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBjb3VsZCBoYXZlIGNhdXNlZCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gIFRoaXMgaXMgYSBjcml0aWNhbCBmbGF3IGFuZCwgdGhlcmVmb3JlLCBhIHByaW1lIHRhcmdldC4gU2luY2UgdGhlIGNvZGUgaXMgcmVhY2hlZCB2aWEgYEVUSFRPT0xfTVNHX1RTQ09ORklHX1NFVGAgb3ZlciBuZXRsaW5rLCBpdCdzIGVhc2lseSByZWFjaGFibGUsIG1ha2luZyBpdCBhIHZlcnkgZ29vZCBmdXp6IHRhcmdldC5cblxuSW4gc3VtbWFyeSwgdGhlIHBhdGNoIHByZXNlbnRzIGEgY2xlYXIgdGFyZ2V0LlxuXG5IZXJlJ3MgbXkgZGlzdGlsbGVkIGZ1enppbmcgc3RyYXRlZ3k6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlXG4qICAgKipGb2N1c1N5bWJvbHM6KiogXFxbXCJldGhubFxcX3NldFxcX3RzY29uZmlnXCJdXG4qICAgKipFbmFibGVDb25maWdzOioqIFxcW1wiRVRIVE9PTFxcX05FVExJTktcIiwgXCJNQUNWTEFOXCIsIFwiQk9ORElOR1wiXVxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY3JpdGljYWwgYnVnIGZpeCBieSBtb2RpZnlpbmcgdGhlIHZhbGlkYXRpb24gbG9naWMgd2l0aGluIHRoZSBldGh0b29sIG5ldGxpbmsgc2V0IG9wZXJhdGlvbiBmb3IgVFNDT05GSUcgKGV0aG5sXFxfc2V0XFxfdHNjb25maWcpLiBJdCBwcmV2ZW50cyBhIGJ1ZyB3aGVyZSBgcmVxX3R4X3R5cGUgPT0gMGAgd2FzIGFsbG93ZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gVGhlIGZ1bmN0aW9uIGlzIGVhc2lseSByZWFjaGFibGUgdmlhIG5ldGxpbmsuIFRvIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlLCBhIG5ldCBkZXZpY2Ugc3VwcG9ydGluZyBgbmRvX2h3dHN0YW1wX3NldGAgaXMgcmVxdWlyZWQsIG1ha2luZyBgTUFDVkxBTmAgYW5kIGBCT05ESU5HYCBleGNlbGxlbnQgY2hvaWNlcyB0byBlbmFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTcwLCJPdXRwdXRUb2tlbnMiOjE2MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA2OjI1Ljc0NTk5NTA2N1oiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzYxMTI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVRIVE9PTF9ORVRMSU5LXCIsXG4gICAgXCJNQUNWTEFOXCIsXG4gICAgXCJCT05ESU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXRobmxfc2V0X3RzY29uZmlnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIGV0aHRvb2wgbmV0bGluayBzZXQgb3BlcmF0aW9uIGZvciBUU0NPTkZJRyAoZXRobmxfc2V0X3RzY29uZmlnKS4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3IgZm9yIHJlcV90eF90eXBlID09IDAgYW5kIHJlcV9yeF9maWx0ZXIgPT0gMCwgd2hpY2ggd2VyZSBwcmV2aW91c2x5IGFsbG93ZWQgYW5kIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluay4gVG8gcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGUsIGEgbmV0IGRldmljZSBzdXBwb3J0aW5nIG5kb19od3RzdGFtcF9zZXQgaXMgcmVxdWlyZWQsIHN1Y2ggYXMgTUFDVkxBTiBvciBCT05ESU5HLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVUSFRPT0xfTkVUTElOS1wiLFxuICAgIFwiTUFDVkxBTlwiLFxuICAgIFwiQk9ORElOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV0aG5sX3NldF90c2NvbmZpZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBldGh0b29sIG5ldGxpbmsgc2V0IG9wZXJhdGlvbiBmb3IgVFNDT05GSUcgKGV0aG5sX3NldF90c2NvbmZpZykuIEl0IGNoYW5nZXMgdGhlIGJlaGF2aW9yIGZvciByZXFfdHhfdHlwZSA9PSAwIGFuZCByZXFfcnhfZmlsdGVyID09IDAsIHdoaWNoIHdlcmUgcHJldmlvdXNseSBhbGxvd2VkIGFuZCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsuIFRvIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlLCBhIG5ldCBkZXZpY2Ugc3VwcG9ydGluZyBuZG9faHd0c3RhbXBfc2V0IGlzIHJlcXVpcmVkLCBzdWNoIGFzIE1BQ1ZMQU4gb3IgQk9ORElORy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6MDY6MjUuODkzNjE1NjgxWiIsIlNlcSI6NTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMxNTIyNzk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjA2OjI1Ljg5NDQ1ODM4MVoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMjMxNDM4MTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gbG9naWMgZm9yIGByZXFfdHhfdHlwZWAgYW5kIGByZXFfcnhfZmlsdGVyYCBpbiBgZXRobmxfc2V0X3RzY29uZmlnYCB0byBlbnN1cmUgZXhhY3RseSBvbmUgYml0IGlzIHNldCB1c2luZyBgaHdlaWdodDMyKHgpICE9IDFgIGluc3RlYWQgb2YgYGZmcyh4KSAhPSBmbHMoeClgLiBJdCBhbHNvIGFkZHMgbmV0bGluayBleHRlbmRlZCBhY2tub3dsZWRnbWVudCBlcnJvciByZXBvcnRpbmcgKGBOTF9TRVRfQkFEX0FUVFJgKSBmb3IgdGhlc2UgdmFsaWRhdGlvbiBmYWlsdXJlcy5cXG5cXG5UaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyB2YWxpZGF0aW9uIGFuZCBlcnJvciByZXBvcnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG8gbm90IGNvcHkgYW55IG5ldyBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIGxvZ2ljIGJ1Z3MsIHdoaWNoIGFyZSBub3QgdGhlIHRhcmdldCBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI2OTdjMDIwNGU5ZWM5M2Y0ZTFhMThhMzI4NmQ0OThkMjUxMTc3ZjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxOTowMjo1OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL3RzY29uZmlnLmMgYi9uZXQvZXRodG9vbC90c2NvbmZpZy5jXG5pbmRleCAyNGI2NDg2MjAxMWYwLi42YmUzYWE1ZDRiYzFlIDEwMDY0NFxuLS0tIGEvbmV0L2V0aHRvb2wvdHNjb25maWcuY1xuKysrIGIvbmV0L2V0aHRvb2wvdHNjb25maWcuY1xuQEAgLTM1OSw4ICszNTksMTAgQEAgc3RhdGljIGludCBldGhubF9zZXRfdHNjb25maWcoc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRnb3RvIGVycl9mcmVlX2h3cHJvdjtcbiBcbi1cdFx0LyogU2VsZWN0IG9ubHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXG4tXHRcdGlmIChmZnMocmVxX3R4X3R5cGUpICE9IGZscyhyZXFfdHhfdHlwZSkpIHtcbitcdFx0LyogU2VsZWN0IGV4YWN0bHkgb25lIHR4IHR5cGUgYXQgYSB0aW1lICovXG4rXHRcdGlmIChod2VpZ2h0MzIocmVxX3R4X3R5cGUpICE9IDEpIHtcbitcdFx0XHROTF9TRVRfQkFEX0FUVFIoaW5mby1cdTAwM2VleHRhY2ssXG4rXHRcdFx0XHRcdHRiW0VUSFRPT0xfQV9UU0NPTkZJR19UWF9UWVBFU10pO1xuIFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gXHRcdH1cbkBAIC0zODAsOCArMzgyLDEwIEBAIHN0YXRpYyBpbnQgZXRobmxfc2V0X3RzY29uZmlnKHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2Jhc2UsXG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0Z290byBlcnJfZnJlZV9od3Byb3Y7XG4gXG4tXHRcdC8qIFNlbGVjdCBvbmx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4tXHRcdGlmIChmZnMocmVxX3J4X2ZpbHRlcikgIT0gZmxzKHJlcV9yeF9maWx0ZXIpKSB7XG4rXHRcdC8qIFNlbGVjdCBleGFjdGx5IG9uZSByeCBmaWx0ZXIgYXQgYSB0aW1lICovXG4rXHRcdGlmIChod2VpZ2h0MzIocmVxX3J4X2ZpbHRlcikgIT0gMSkge1xuK1x0XHRcdE5MX1NFVF9CQURfQVRUUihpbmZvLVx1MDAzZWV4dGFjayxcbitcdFx0XHRcdFx0dGJbRVRIVE9PTF9BX1RTQ09ORklHX1JYX0ZJTFRFUlNdKTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gZXJyX2ZyZWVfaHdwcm92O1xuIFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNjoyNS44OTQ0NjAyMzFaIiwiU2VxIjo1NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzMTQzNTk2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQ29uc2lkZXJhdGlvbnMgZm9yIGBuZXQvZXRodG9vbC90c2NvbmZpZy5jYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW4gYG5ldC9ldGh0b29sL3RzY29uZmlnLmNgIGFuZCBpcyB0d2Vha2luZyB0aGUgbG9naWMgZm9yIGNoZWNraW5nIGByZXFfdHhfdHlwZWAgYW5kIGByZXFfcnhfZmlsdGVyYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBjb25zaWRlciBtZW1vcnkgc2FmZXR5LCBvZiBjb3Vyc2UuIExldCdzIHNlZS4uLiBpdCdzIGNoYW5naW5nIHRoZSBjb25kaXRpb24gZnJvbSBgZmZzKHJlcV90eF90eXBlKSAhPSBmbHMocmVxX3R4X3R5cGUpYCB0byBgaHdlaWdodDMyKHJlcV90eF90eXBlKSAhPSAxYC4gUmlnaHQsIHNvIHRoZSBvbGQgY29kZSAqYWxsb3dlZCogYHJlcV90eF90eXBlYCB0byBiZSB6ZXJvLCB3aGljaCBpcyB3ZWlyZCwgYW5kIG5vdyB0aGUgbmV3IGNvZGUgY29ycmVjdGx5IGRpc2FsbG93cyBpdC4gVGhlIGNvbW1lbnQgY29uZmlybXMgdGhpcyBpcyBhYm91dCBzZWxlY3RpbmcgKmV4YWN0bHkqIG9uZSBUWCB0eXBlIChhIGxvZ2ljIGJ1ZyBmaXghKS5cblxuTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaWYgdGhpcyBpbnRyb2R1Y2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gQnV0LCBsb29raW5nIGNsb3NlciwgaXQgKmp1c3QqIG1vZGlmaWVzIGEgY29uZGl0aW9uYWwgY2hlY2sgYW5kIGFkZHMgYE5MX1NFVF9CQURfQVRUUmAgY2FsbHMuICBgTkxfU0VUX0JBRF9BVFRSYCwgb2theSwgdGhhdCdzIGp1c3Qgc2V0dGluZyBhIGZpZWxkIChgZXh0YWNrLVx1MDAzZWJhZF9hdHRyYCkgaW4gYW4gZXhpc3RpbmcgYHN0cnVjdCBuZXRsaW5rX2V4dF9hY2tgLCB3aGljaCBpcyBzdGFuZGFyZCBuZXRsaW5rIGVycm9yIHJlcG9ydGluZy4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCwgbm8gdXNlci1zcGFjZSBkYXRhIGNvcGllcyBiZXlvbmQgdGhlIGVycm9yIHJlcG9ydGluZy4gIFRoZXJlZm9yZSwgaXQncyBub3QgZXhwb3NpbmcgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBgZXh0YWNrYCBpcyBhIHBvaW50ZXIgdG8gdGhlIGV4aXN0aW5nIGBzdHJ1Y3QgbmV0bGlua19leHRfYWNrYCBhbmQgdGhlIGBOTF9TRVRfQkFEX0FUVFJgIG1hY3JvIGp1c3Qgc2V0cyBhIGZpZWxkLiBHb29kLCBubyBLTVNBTiBjb25jZXJucyBiYXNlZCBvbiBtZW1vcnkgaW5pdGlhbGl6YXRpb24gaXNzdWVzLlxuXG5TbywgaW4gZXNzZW5jZSwgdGhpcyBwYXRjaCBzdHJlbmd0aGVucyB0aGUgdmFsaWRhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgVFgvUlggdHlwZXMsIGVuc3VyaW5nIGV4YWN0bHkgb25lIG9wdGlvbiBpcyBjaG9zZW4sIGFuZCBhZGRzIGJldHRlciBlcnJvciByZXBvcnRpbmcuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgY29udHJvbCBmbG93LCB3aXRoIG5vIG1lbW9yeSBhbGxvY2F0aW9uIG9yIGRhdGEgZXhwb3N1cmUuICBUaGUgcGF0Y2ggKmZpeGVzKiBhIGxvZ2ljIGJ1Zy4gIFNpbmNlIGl04oCZcyBhIGxvZ2ljIGJ1ZyBmaXggYW5kIGRvZXNuJ3QgaW50cm9kdWNlIG1lbW9yeSBpc3N1ZXMsIEtNU0FOIGlzIG5vdCBuZWNlc3NhcnkgaGVyZS4gSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgd2UgZG9u4oCZdCBuZWVkIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBmb3IgdGhpcyBjaGFuZ2UuIEknbGwgZG9jdW1lbnQgbXkgcmVhc29uaW5nIGNsZWFybHkgZm9yIHJldmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0NiwiT3V0cHV0VG9rZW5zIjoxODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTowNjozOC4yMDg4MjMwNjFaIiwiU2VxIjo1NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgcmVxX3R4X3R5cGVgIGFuZCBgcmVxX3J4X2ZpbHRlcmAgaW4gYGV0aG5sX3NldF90c2NvbmZpZ2AgdG8gZW5zdXJlIGV4YWN0bHkgb25lIGJpdCBpcyBzZXQgdXNpbmcgYGh3ZWlnaHQzMih4KSAhPSAxYCBpbnN0ZWFkIG9mIGBmZnMoeCkgIT0gZmxzKHgpYC4gSXQgYWxzbyBhZGRzIG5ldGxpbmsgZXh0ZW5kZWQgYWNrbm93bGVkZ21lbnQgZXJyb3IgcmVwb3J0aW5nIChgTkxfU0VUX0JBRF9BVFRSYCkgZm9yIHRoZXNlIHZhbGlkYXRpb24gZmFpbHVyZXMuXFxuXFxuVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgdmFsaWRhdGlvbiBhbmQgZXJyb3IgcmVwb3J0aW5nLiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvIG5vdCBjb3B5IGFueSBuZXcgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSBsb2dpYyBidWdzLCB3aGljaCBhcmUgbm90IHRoZSB0YXJnZXQgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmFsaWRhdGlvbiBsb2dpYyBmb3IgYHJlcV90eF90eXBlYCBhbmQgYHJlcV9yeF9maWx0ZXJgIGluIGBldGhubF9zZXRfdHNjb25maWdgIHRvIGVuc3VyZSBleGFjdGx5IG9uZSBiaXQgaXMgc2V0IHVzaW5nIGBod2VpZ2h0MzIoeCkgIT0gMWAgaW5zdGVhZCBvZiBgZmZzKHgpICE9IGZscyh4KWAuIEl0IGFsc28gYWRkcyBuZXRsaW5rIGV4dGVuZGVkIGFja25vd2xlZGdtZW50IGVycm9yIHJlcG9ydGluZyAoYE5MX1NFVF9CQURfQVRUUmApIGZvciB0aGVzZSB2YWxpZGF0aW9uIGZhaWx1cmVzLlxcblxcblRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IHZhbGlkYXRpb24gYW5kIGVycm9yIHJlcG9ydGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgY29weSBhbnkgbmV3IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgbG9naWMgYnVncywgd2hpY2ggYXJlIG5vdCB0aGUgdGFyZ2V0IG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhgjgd[1] Phase: Succeeded StartedAt: 2026-08-12 19:06:49 +0000 UTC FinishedAt: 2026-08-12 19:06:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 19:06:49 +0000 UTC FinishedAt: 2026-08-12 19:06:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2] Phase: Succeeded StartedAt: 2026-08-12 19:06:49 +0000 UTC FinishedAt: 2026-08-12 22:48:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-12 19:06:49 +0000 UTC FinishedAt: 2026-08-12 22:48:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:06:49 +0000 UTC FinishedAt: 2026-08-12 19:07:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:06:49 +0000 UTC FinishedAt: 2026-08-12 19:06:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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-workflowhgjgd/series-workflowhgjgd-convert-artifact-2068679233/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:07:00 +0000 UTC FinishedAt: 2026-08-12 19:24:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:07:00 +0000 UTC FinishedAt: 2026-08-12 19:24:09 +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:*f8d5754a-d039-4868-92ac-67d43139a5a4,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-workflowhgjgd/series-workflowhgjgd-convert-artifact-2068679233/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": "5fe1f2d9-c7ca-419e-b9bb-9503eb61ec75", "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-workflowhgjgd/series-workflowhgjgd-build-action-895135855/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:07:00 +0000 UTC FinishedAt: 2026-08-12 19:23:59 +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:*f8d5754a-d039-4868-92ac-67d43139a5a4,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-workflowhgjgd/series-workflowhgjgd-convert-artifact-2068679233/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": "5fe1f2d9-c7ca-419e-b9bb-9503eb61ec75", "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-workflowhgjgd/series-workflowhgjgd-build-action-895135855/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:24:09 +0000 UTC FinishedAt: 2026-08-12 19:24:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:24:09 +0000 UTC FinishedAt: 2026-08-12 19:24:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:24:09 +0000 UTC FinishedAt: 2026-08-12 19:24:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:24:09 +0000 UTC FinishedAt: 2026-08-12 19:24:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-workflowhgjgd/series-workflowhgjgd-convert-artifact-1350313492/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:24:20 +0000 UTC FinishedAt: 2026-08-12 19:26:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:24:20 +0000 UTC FinishedAt: 2026-08-12 19:26:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5fe1f2d9-c7ca-419e-b9bb-9503eb61ec75,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-workflowhgjgd/series-workflowhgjgd-build-action-895135855/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-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:26:25 +0000 UTC FinishedAt: 2026-08-12 19:26:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:26:25 +0000 UTC FinishedAt: 2026-08-12 19:26:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:26:25 +0000 UTC FinishedAt: 2026-08-12 19:43:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:26:25 +0000 UTC FinishedAt: 2026-08-12 19:43:42 +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:*f8d5754a-d039-4868-92ac-67d43139a5a4,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-workflowhgjgd/series-workflowhgjgd-convert-artifact-1350313492/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": "88000413-83af-4b01-b136-ee622019c07d", "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-workflowhgjgd/series-workflowhgjgd-build-action-3317993184/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:26:25 +0000 UTC FinishedAt: 2026-08-12 19:43:32 +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:*f8d5754a-d039-4868-92ac-67d43139a5a4,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-workflowhgjgd/series-workflowhgjgd-convert-artifact-1350313492/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": "88000413-83af-4b01-b136-ee622019c07d", "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-workflowhgjgd/series-workflowhgjgd-build-action-3317993184/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:43:42 +0000 UTC FinishedAt: 2026-08-12 19:43:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","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-12 19:43:42 +0000 UTC FinishedAt: 2026-08-12 19:43:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-12 19:43:42 +0000 UTC FinishedAt: 2026-08-12 19:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-12 19:43:42 +0000 UTC FinishedAt: 2026-08-12 19:45:37 +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:*88000413-83af-4b01-b136-ee622019c07d,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-workflowhgjgd/series-workflowhgjgd-build-action-3317993184/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-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-12 19:45:47 +0000 UTC FinishedAt: 2026-08-12 22:48:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-12 19:45:47 +0000 UTC FinishedAt: 2026-08-12 22:48:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_set_tsconfig"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*5fe1f2d9-c7ca-419e-b9bb-9503eb61ec75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*88000413-83af-4b01-b136-ee622019c07d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhgjgd/series-workflowhgjgd-build-action-895135855/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhgjgd/series-workflowhgjgd-build-action-3317993184/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-12 19:45:47 +0000 UTC FinishedAt: 2026-08-12 19:45:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-12 19:45:47 +0000 UTC FinishedAt: 2026-08-12 19:45:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethnl_set_tsconfig"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhgjgd/series-workflowhgjgd-convert-artifact-2889058365/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-12 19:45:47 +0000 UTC FinishedAt: 2026-08-12 19:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-12 19:45:47 +0000 UTC FinishedAt: 2026-08-12 19:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-12 19:45:47 +0000 UTC FinishedAt: 2026-08-12 19:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-12 19:45:57 +0000 UTC FinishedAt: 2026-08-12 22:48:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgjgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"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":["ethnl_set_tsconfig"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac155a26750a595703e7dadff84735456d75a479","config_name":"upstream-apparmor-kasan.config","enable_configs":["ETHTOOL_NETLINK","MACVLAN","BONDING"],"series_id":"33f1ec91-aa3a-4365-b6a3-b8b7f52e8ce0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-12 19:45:57 +0000 UTC FinishedAt: 2026-08-12 22:48:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5fe1f2d9-c7ca-419e-b9bb-9503eb61ec75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*88000413-83af-4b01-b136-ee622019c07d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhgjgd/series-workflowhgjgd-build-action-895135855/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhgjgd/series-workflowhgjgd-build-action-3317993184/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhgjgd/series-workflowhgjgd-convert-artifact-2889058365/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}