Name: series-workflowxbww2 Phase: Succeeded StartedAt: 2026-08-28 17:39:39 +0000 UTC FinishedAt: 2026-08-28 21:44:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[0] Phase: Succeeded StartedAt: 2026-08-28 17:39:39 +0000 UTC FinishedAt: 2026-08-28 18:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[0].run-triage Phase: Succeeded StartedAt: 2026-08-28 17:39:39 +0000 UTC FinishedAt: 2026-08-28 18:05:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3205699d79f262412c1be7fc1c04066610d3cd52", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPVLAN", "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3205699d79f262412c1be7fc1c04066610d3cd52", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPVLAN", "INET" ], "series_id": "f9c32189-de73-4b0e-aa85-2fca401cd0dc" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "ipvlan_device_event", "__ipvlan_link_delete", "ipvlan_link_new" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVkxBTiYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2bGFuX2RldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX2lwdmxhbl9saW5rX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDtpcHZsYW5fbGlua19uZXcmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKSBvdXRzaWRlIG9mIHRoZSBwb3J0LVx1MDAzZXBub2Rlc19sb2NrIGNyaXRpY2FsIHNlY3Rpb24gaW4gaXB2bGFuX2RldmljZV9ldmVudCgpIHRvIHByZXZlbnQgY2FsbGluZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB3aGlsZSBob2xkaW5nIHRoZSBtdXRleC5cblxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFkanVzdG1lbnQgYWltZWQgYXQgcHJldmVudGluZyBkZWFkbG9ja3MgLyBsb2NrZGVwIHdhcm5pbmdzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCB1c2VyLXNwYWNlIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMuIEFueSBwb3RlbnRpYWwgY29uY3VycmVuY3kgb3IgbGlmZWN5Y2xlIGlzc3VlcyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDYyMDJiM2JkYjI1MmZhZGZmOGQ3N2M1NDRkMzlkYzYxYjlkMjc1ZDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyOCAxODowMDozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5pbmRleCBlZTQ2YTU1ZjczZDE0Li4yZDQzNDA2MjdjYTY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5AQCAtODQ2LDcgJiM0Mzs4NDYsNiBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG4gXHRcdFx0XHRfX2lwdmxhbl9saW5rX2RlbGV0ZShuZXQsIGlwdmxhbi1cdTAwM2VkZXYsIFx1MDAyNmxzdF9raWxsKTtcbiBcdFx0fVxuIFxuLVx0XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRjYXNlIE5FVERFVl9GRUFUX0NIQU5HRTpcbkBAIC04OTUsNiAmIzQzOzg5NCw5IEBAIHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbiBcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKTtcbiBcbiYjNDM7XHQvKiBBdm9pZCBpbnZva2luZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB1bmRlciBwbm9kZXNfbG9jay4gKi9cbiYjNDM7XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKTtcbiYjNDM7XG4gXHRpcHZsYW5fcG9ydF9wdXQocG9ydCk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVkxBTiYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2bGFuX2RldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX2lwdmxhbl9saW5rX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDtpcHZsYW5fbGlua19uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyMDJiM2JkYjI1MmZhZGZmOGQ3N2M1NDRkMzlkYzYxYjlkMjc1ZDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAyOCAxODowMDozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jIGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKaW5kZXggZWU0NmE1NWY3M2QxNC4uMmQ0MzQwNjI3Y2E2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKQEAgLTg0Niw3ICYjNDM7ODQ2LDYgQEAgc3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLAogCQkJCV9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLSZndDtkZXYsICZhbXA7bHN0X2tpbGwpOwogCQl9CiAKLQkJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgmYW1wO2xzdF9raWxsKTsKIAkJYnJlYWs7CiAJfQogCWNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOgpAQCAtODk1LDYgJiM0Mzs4OTQsOSBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsCiAKIAltdXRleF91bmxvY2soJmFtcDtwb3J0LSZndDtwbm9kZXNfbG9jayk7CiAKJiM0MzsJLyogQXZvaWQgaW52b2tpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgdW5kZXIgcG5vZGVzX2xvY2suICovCiYjNDM7CXVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmFtcDtsc3Rfa2lsbCk7CiYjNDM7CiAJaXB2bGFuX3BvcnRfcHV0KHBvcnQpOwogCiAJcmV0dXJuIHJldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2OAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29kZSBNb2RpZmljYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0JiMzOTtzIGNoYW5nZWQuIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IGluc3BlY3QgdGhlIGRpZmY7IHRoYXQgc2hvdWxkIHByb3ZpZGUgYSBjbGVhciBwaWN0dXJlLiBUaGUgcGF0Y2ggdG91Y2hlcyBgaXB2bGFuX21haW4uY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvaXB2bGFuYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGZ1bmN0aW9uLgoKVG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZSwgSSYjMzk7bGwgdXNlIGByZWFkLWZpbGVgIHRvIHplcm8gaW4gb24gbGluZXMgODQ2LTkwMCBvZiBgaXB2bGFuX21haW4uY2AuIFRoaXMgcmVnaW9uIGlzIGxpa2VseSB3aGVyZSB0aGUgbW9kaWZpY2F0aW9uIGlzIGhhcHBlbmluZyBvciBpbnRlcmFjdGluZyB3aXRoLiBVbmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgYmUgY3JpdGljYWwgaW4gZ3Jhc3BpbmcgdGhlIGludGVudCBhbmQgcG90ZW50aWFsIGltcGFjdCBvZiB0aGUgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVlbiBjaGFuZ2VkLCB3aHkgaXQgd2FzIGNoYW5nZWQsIGFuZCB3aGF0IGl0IGVmZmVjdHMgaW4gdGhlIGxhcmdlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA5MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODIwOlx0XHRcdHN0cnVjdCBuZXQgKm9sZG5ldCwgKm5ld25ldCA9IGRldl9uZXQoZGV2KTtcbiA4MjE6XHRcbiA4MjI6XHRcdFx0b2xkbmV0ID0gcmVhZF9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCk7XG4gODIzOlx0XHRcdGlmIChuZXRfZXEobmV3bmV0LCBvbGRuZXQpKVxuIDgyNDpcdFx0XHRcdGJyZWFrO1xuIDgyNTpcdFxuIDgyNjpcdFx0XHR3cml0ZV9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCwgbmV3bmV0KTtcbiA4Mjc6XHRcbiA4Mjg6XHRcdFx0aWYgKHBvcnQtXHUwMDNlbW9kZSA9PSBJUFZMQU5fTU9ERV9MM1MpXG4gODI5Olx0XHRcdFx0aXB2bGFuX21pZ3JhdGVfbDNzX2hvb2sob2xkbmV0LCBuZXduZXQpO1xuIDgzMDpcdFx0XHRicmVhaztcbiA4MzE6XHRcdH1cbiA4MzI6XHRcdGNhc2UgTkVUREVWX1VOUkVHSVNURVI6IHtcbiA4MzM6XHRcdFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChkZXYpO1xuIDgzNDpcdFxuIDgzNTpcdFx0XHRpZiAoZGV2LVx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfVU5SRUdJU1RFUklORylcbiA4MzY6XHRcdFx0XHRicmVhaztcbiA4Mzc6XHRcbiA4Mzg6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGlwdmxhbiwgbmV4dCwgXHUwMDI2cG9ydC1cdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xuIDgzOTpcdFx0XHRcdGlwdmxhbi1cdTAwM2VkeWluZyA9IHRydWU7XG4gODQwOlx0XG4gODQxOlx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVlRBUClcbiA4NDI6XHRcdFx0XHRpZiAoaXB2bGFuLVx1MDAzZWRldi1cdTAwM2VydG5sX2xpbmtfb3BzICE9IFx1MDAyNmlwdmxhbl9saW5rX29wcylcbiA4NDM6XHRcdFx0XHRcdF9faXB2dGFwX2RlbGxpbmtfcHRyKG5ldCwgaXB2bGFuLVx1MDAzZWRldiwgXHUwMDI2bHN0X2tpbGwpO1xuIDg0NDpcdFx0XHRcdGVsc2VcbiA4NDU6XHQjZW5kaWZcbiA4NDY6XHRcdFx0XHRcdF9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLVx1MDAzZWRldiwgXHUwMDI2bHN0X2tpbGwpO1xuIDg0NzpcdFx0XHR9XG4gODQ4Olx0XG4gODQ5Olx0XHRcdGJyZWFrO1xuIDg1MDpcdFx0fVxuIDg1MTpcdFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XG4gODUyOlx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcdTAwMjZwb3J0LVx1MDAzZWlwdmxhbnMsIHBub2RlKSB7XG4gODUzOlx0XHRcdFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGlwdmxhbi1cdTAwM2VkZXYsIGRldik7XG4gODU0Olx0XHRcdFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhpcHZsYW4tXHUwMDNlZGV2KTtcbiA4NTU6XHRcdFx0fVxuIDg1NjpcdFx0XHRicmVhaztcbiA4NTc6XHRcbiA4NTg6XHRcdGNhc2UgTkVUREVWX0NIQU5HRU1UVTpcbiA4NTk6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpXG4gODYwOlx0XHRcdFx0aXB2bGFuX2FkanVzdF9tdHUoaXB2bGFuLCBkZXYpO1xuIDg2MTpcdFx0XHRicmVhaztcbiA4NjI6XHRcbiA4NjM6XHRcdGNhc2UgTkVUREVWX1BSRV9DSEFOR0VBRERSOlxuIDg2NDpcdFx0XHRwcmVjaGFkZHJfaW5mbyA9IHB0cjtcbiA4NjU6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcbiA4NjY6XHRcdFx0XHRlcnIgPSBuZXRpZl9wcmVfY2hhbmdlYWRkcl9ub3RpZnkoaXB2bGFuLVx1MDAzZWRldixcbiA4Njc6XHRcdFx0XHRcdFx0XHRcdCAgcHJlY2hhZGRyX2luZm8tXHUwMDNlZGV2X2FkZHIsXG4gODY4Olx0XHRcdFx0XHRcdFx0XHQgIGV4dGFjayk7XG4gODY5Olx0XHRcdFx0aWYgKGVycikge1xuIDg3MDpcdFx0XHRcdFx0cmV0ID0gbm90aWZpZXJfZnJvbV9lcnJubyhlcnIpO1xuIDg3MTpcdFx0XHRcdFx0YnJlYWs7XG4gODcyOlx0XHRcdFx0fVxuIDg3MzpcdFx0XHR9XG4gODc0Olx0XHRcdGJyZWFrO1xuIDg3NTpcdFxuIDg3NjpcdFx0Y2FzZSBORVRERVZfQ0hBTkdFQUREUjpcbiA4Nzc6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcbiA4Nzg6XHRcdFx0XHRldGhfaHdfYWRkcl9zZXQoaXB2bGFuLVx1MDAzZWRldiwgZGV2LVx1MDAzZWRldl9hZGRyKTtcbiA4Nzk6XHRcdFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGlwdmxhbi1cdTAwM2VkZXYpO1xuIDg4MDpcdFx0XHR9XG4gODgxOlx0XHRcdGJyZWFrO1xuIDg4MjpcdFxuIDg4MzpcdFx0Y2FzZSBORVRERVZfUFJFX1RZUEVfQ0hBTkdFOlxuIDg4NDpcdFx0XHQvKiBGb3JiaWQgdW5kZXJseWluZyBkZXZpY2UgdG8gY2hhbmdlIGl0cyB0eXBlLiAqL1xuIDg4NTpcdFx0XHRyZXQgPSBOT1RJRllfQkFEO1xuIDg4NjpcdFx0XHRicmVhaztcbiA4ODc6XHRcbiA4ODg6XHRcdGNhc2UgTkVUREVWX05PVElGWV9QRUVSUzpcbiA4ODk6XHRcdGNhc2UgTkVUREVWX0JPTkRJTkdfRkFJTE9WRVI6XG4gODkwOlx0XHRjYXNlIE5FVERFVl9SRVNFTkRfSUdNUDpcbiA4OTE6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpXG4gODkyOlx0XHRcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKGV2ZW50LCBpcHZsYW4tXHUwMDNlZGV2KTtcbiA4OTM6XHRcdH1cbiA4OTQ6XHRcbiA4OTU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKTtcbiA4OTY6XHRcbiA4OTc6XHRcdC8qIEF2b2lkIGludm9raW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHVuZGVyIHBub2Rlc19sb2NrLiAqL1xuIDg5ODpcdFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcdTAwMjZsc3Rfa2lsbCk7XG4gODk5Olx0XG4gOTAwOlx0XHRpcHZsYW5fcG9ydF9wdXQocG9ydCk7XG4gOTAxOlx0XG4gOTAyOlx0XHRyZXR1cm4gcmV0O1xuIDkwMzpcdH1cbiA5MDQ6XHRcbiA5MDU6XHQvKiB0aGUgY2FsbGVyIG11c3QgaGVsZCB0aGUgYWRkcnMgbG9jayAqL1xuIDkwNjpcdHN0YXRpYyBpbnQgaXB2bGFuX2FkZF9hZGRyKHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCB2b2lkICppYWRkciwgYm9vbCBpc192NilcbiA5MDc6XHR7XG4gOTA4Olx0XHRzdHJ1Y3QgaXB2bF9hZGRyICphZGRyO1xuIDkwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MjMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIElQdmxhbiBEZXZpY2UgRXZlbnQgYW5kIEtpbGwgU2lnbmFsKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgdGhpcyBgaXB2bGFuX2RldmljZV9ldmVudGAgYW5kIGhvdyBpdCYjMzk7cyBsaW5rZWQgdG8gYGxzdF9raWxsYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHRyYWNlIHRoZSBvcmlnaW4uIEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSBgaXB2bGFuX2RldmljZV9ldmVudGAgaXMgZmlyc3QgZGVjbGFyZWQgb3IgaW5pdGlhbGl6ZWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGRlZmluaW5nIG1vbWVudCwgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGVuLCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgYGxzdF9raWxsYCB2YXJpYWJsZSBpcyBoYW5kbGVkOyB3YXMgaXQgZGVmaW5lZCBzdGF0aWNhbGx5LCBwYXNzZWQgZnJvbSBlbHNld2hlcmUsIG9yIGR5bmFtaWNhbGx5IGFsbG9jYXRlZD8gSeKAmW0gaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGl04oCZcyBhIHN0YW5kYXJkIHNpZ25hbCwgYW4gaW50ZXJuYWwgdmFyaWFibGUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5LiBUaGUgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCBhIGNsZWFyIGNvbnRyb2wgZmxvdzogaG93IGRvZXMgdGhpcyBldmVudCB0cmlnZ2VyLCBhbmQgaG93IGRvZXMgYGxzdF9raWxsYCBjb21lIGludG8gcGxheSBpbiB0aGF0IHByb2Nlc3M/IFRoaXMgc2hvdWxkIGNsYXJpZnkgdGhlIG92ZXJhbGwgbWVjaGFuaXNtIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc4MDpcdFx0b3BzLVx1MDAzZXBvbGljeVx0PSBpcHZsYW5fbmxfcG9saWN5O1xuIDc4MTpcdFx0b3BzLVx1MDAzZXZhbGlkYXRlXHQ9IGlwdmxhbl9ubF92YWxpZGF0ZTtcbiA3ODI6XHRcdG9wcy1cdTAwM2VmaWxsX2luZm9cdD0gaXB2bGFuX25sX2ZpbGxpbmZvO1xuIDc4MzpcdFx0b3BzLVx1MDAzZWNoYW5nZWxpbmsgPSBpcHZsYW5fbmxfY2hhbmdlbGluaztcbiA3ODQ6XHRcdG9wcy1cdTAwM2VtYXh0eXBlXHQ9IElGTEFfSVBWTEFOX01BWDtcbiA3ODU6XHRcdHJldHVybiBydG5sX2xpbmtfcmVnaXN0ZXIob3BzKTtcbiA3ODY6XHR9XG4gNzg3Olx0RVhQT1JUX1NZTUJPTF9HUEwoaXB2bGFuX2xpbmtfcmVnaXN0ZXIpO1xuIDc4ODpcdFxuIDc4OTpcdHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbiA3OTA6XHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuIDc5MTpcdHtcbiA3OTI6XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayA9IG5ldGRldl9ub3RpZmllcl9pbmZvX3RvX2V4dGFjayhwdHIpO1xuIDc5MzpcdFx0c3RydWN0IG5ldGRldl9ub3RpZmllcl9wcmVfY2hhbmdlYWRkcl9pbmZvICpwcmVjaGFkZHJfaW5mbztcbiA3OTQ6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19kZXYocHRyKTtcbiA3OTU6XHRcdHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCAqbmV4dDtcbiA3OTY6XHRcdGludCBlcnIsIHJldCA9IE5PVElGWV9ET05FO1xuIDc5NzpcdFx0c3RydWN0IGlwdmxfcG9ydCAqcG9ydDtcbiA3OTg6XHRcdExJU1RfSEVBRChsc3Rfa2lsbCk7XG4gNzk5Olx0XG4gODAwOlx0XHRpZiAoZXZlbnQgPT0gTkVUREVWX1BSRUNIQU5HRVVQUEVSIHx8XG4gODAxOlx0XHQgICAgZXZlbnQgPT0gTkVUREVWX0NIQU5HRVVQUEVSKVxuIDgwMjpcdFx0XHRyZXR1cm4gcmV0O1xuIDgwMzpcdFxuIDgwNDpcdFx0cG9ydCA9IGlwdmxhbl9wb3J0X2dldChkZXYpO1xuIDgwNTpcdFx0aWYgKCFwb3J0KVxuIDgwNjpcdFx0XHRyZXR1cm4gcmV0O1xuIDgwNzpcdFxuIDgwODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKTtcbiA4MDk6XHRcbiA4MTA6XHRcdHN3aXRjaCAoZXZlbnQpIHtcbiA4MTE6XHRcdGNhc2UgTkVUREVWX1VQOlxuIDgxMjpcdFx0Y2FzZSBORVRERVZfRE9XTjpcbiA4MTM6XHRcdGNhc2UgTkVUREVWX0NIQU5HRTpcbiA4MTQ6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpXG4gODE1Olx0XHRcdFx0bmV0aWZfc3RhY2tlZF90cmFuc2Zlcl9vcGVyc3RhdGUoaXB2bGFuLVx1MDAzZXBoeV9kZXYsXG4gODE2Olx0XHRcdFx0XHRcdFx0XHQgaXB2bGFuLVx1MDAzZWRldik7XG4gODE3Olx0XHRcdGJyZWFrO1xuIDgxODpcdFxuIDgxOTpcdFx0Y2FzZSBORVRERVZfUkVHSVNURVI6IHtcbiA4MjA6XHRcdFx0c3RydWN0IG5ldCAqb2xkbmV0LCAqbmV3bmV0ID0gZGV2X25ldChkZXYpO1xuIDgyMTpcdFxuIDgyMjpcdFx0XHRvbGRuZXQgPSByZWFkX3BuZXQoXHUwMDI2cG9ydC1cdTAwM2VwbmV0KTtcbiA4MjM6XHRcdFx0aWYgKG5ldF9lcShuZXduZXQsIG9sZG5ldCkpXG4gODI0Olx0XHRcdFx0YnJlYWs7XG4gODI1Olx0XG4gODI2Olx0XHRcdHdyaXRlX3BuZXQoXHUwMDI2cG9ydC1cdTAwM2VwbmV0LCBuZXduZXQpO1xuIDgyNzpcdFxuIDgyODpcdFx0XHRpZiAocG9ydC1cdTAwM2Vtb2RlID09IElQVkxBTl9NT0RFX0wzUylcbiA4Mjk6XHRcdFx0XHRpcHZsYW5fbWlncmF0ZV9sM3NfaG9vayhvbGRuZXQsIG5ld25ldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg5MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJUFZMQU4gRGV2aWNlIEV2ZW50IEhhbmRsaW5nIC0gQSBTYWZldHkgSW1wcm92ZW1lbnQqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBmdW5jdGlvbiwgSSBzZWUgdGhlIGBsc3Rfa2lsbGAgbGlzdCBpcyBpbml0aWFsaXplZCByaWdodCBhd2F5LiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLCBub3RoaW5nIHVudXN1YWwgdGhlcmUuIFRoZSBpbnRlcmVzdGluZyBwYXJ0IGlzIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGggYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlgLiBJIHJlbWVtYmVyIHRoaXMgZnVuY3Rpb24uCgpQcmV2aW91c2x5LCB3aGVuIGEgbmV0IGRldmljZSB3YXMgYmVpbmcgdW5yZWdpc3RlcmVkIChORVRERVZfVU5SRUdJU1RFUiBjYXNlKSwgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmFtcDtsc3Rfa2lsbClgIHdhcyBjYWxsZWQgKmluc2lkZSogYSBgbXV0ZXhfbG9jaygmYW1wO3BvcnQtJmd0O3Bub2Rlc19sb2NrKWAgYmxvY2suIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWU7IG5lc3Rpbmcgbm90aWZpZXIgY2FsbHMgdW5kZXIgYSBsb2NrIGxpa2UgdGhhdCBjYW4gYmUgYSByZWNpcGUgZm9yIHRyb3VibGUg4oCTIGxvY2tkZXAgd2FybmluZ3Mgb3IgZXZlbiBkZWFkbG9ja3MuIFRoZSBjaGFuZ2UgYXBwZWFycyB0byBoYXZlIG1vdmVkIHRoZSB1bnJlZ2lzdGVyIGNhbGwgdG8gKmFmdGVyKiB0aGUgYG11dGV4X3VubG9jaygmYW1wO3BvcnQtJmd0O3Bub2Rlc19sb2NrKWAuIFNtYXJ0IG1vdmUhIFRoaXMgYXZvaWRzIHRoZSBuZXN0ZWQgbm90aWZpZXIgY2FsbHMsIHdoaWNoIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoIHRvIHByZXZlbnQgdGhvc2UgY29uY3VycmVuY3kgcHJvYmxlbXMuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSBJUFZMQU4mIzM5O3MgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgc2V0dGluZ3MuIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgZm9yIHRoZSBJUFZMQU4gbW9kdWxlIGFuZCBjb25maXJtIHRoYXQgdGhlIGNvbmRpdGlvbnMgZm9yIElQVkxBTiBhcmUgcHJvcGVybHkgY29uZmlndXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBWTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MTc5PWNvbmZpZyBNQUNWVEFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0xOTItXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5Mzpjb25maWcgSVBWTEFOX0wzU1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xOTQtXHRkZXBlbmRzIG9uIE5FVEZJTFRFUlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMTk4LVxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTk6Y29uZmlnIElQVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMDAtXHR0cmlzdGF0ZSBcJiMzNDtJUC1WTEFOIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDY0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5ldHdvcmsgZHJpdmVycyBhcmUgY29uZmlndXJlZCBpbiB0aGlzIGtlcm5lbC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L0tjb25maWdgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGxpbmVzIGFyb3VuZCAxOTAgdG8gMjIwLiBUaGF0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHNwb3QgdG8gZmluZCBzb21lIG9mIHRoZSBjb3JlLCB0b3AtbGV2ZWwgc2V0dGluZ3Mgb3IgbWF5YmUgYW4gaW1wb3J0YW50IGdyb3VwaW5nIG9mIHJlbGF0ZWQgb3B0aW9ucy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gYnJvYWQgbmV0d29ya2luZyBmZWF0dXJlcyBvciBwZXJoYXBzIGEga2V5IGRyaXZlciBmYW1pbHkuIFRoaXMgd2lsbCBwcm9iYWJseSBwcm92aWRlIHRoZSBjb250ZXh0IEkgbmVlZCB0byB6b29tIGludG8gYSBzcGVjaWZpYyBhcmVhIGxhdGVyLiBLbm93aW5nIHRoZSBicm9hZGVyIHN0cnVjdHVyZSB3aWxsIHNhdmUgbWUgYSB0b24gb2YgdGltZSwgSSBob3BlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdGhlcmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDE5MTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBtYWN2dGFwLlxuIDE5MjpcdFxuIDE5MzpcdGNvbmZpZyBJUFZMQU5fTDNTXG4gMTk0Olx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUlxuIDE5NTpcdFx0ZGVwZW5kcyBvbiBJUFZMQU5cbiAxOTY6XHRcdGRlZl9ib29sIHlcbiAxOTc6XHRcdHNlbGVjdCBORVRfTDNfTUFTVEVSX0RFVlxuIDE5ODpcdFxuIDE5OTpcdGNvbmZpZyBJUFZMQU5cbiAyMDA6XHRcdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuIDIwMTpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMjAyOlx0XHRoZWxwXG4gMjAzOlx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdmlydHVhbCBkZXZpY2VzIG9mZiBvZiBhIG1haW4gaW50ZXJmYWNlXG4gMjA0Olx0XHQgIGFuZCBwYWNrZXRzIHdpbGwgYmUgZGVsaXZlcmVkIGJhc2VkIG9uIHRoZSBkZXN0IEwzIChJUHY2L0lQdjQgYWRkcilcbiAyMDU6XHRcdCAgb24gcGFja2V0cy4gQWxsIGludGVyZmFjZXMgKGluY2x1ZGluZyB0aGUgbWFpbiBpbnRlcmZhY2UpIHNoYXJlIEwyXG4gMjA2Olx0XHQgIG1ha2luZyBpdCB0cmFuc3BhcmVudCB0byB0aGUgY29ubmVjdGVkIEwyIHN3aXRjaC5cbiAyMDc6XHRcbiAyMDg6XHRcdCAgSXB2bGFuIGRldmljZXMgY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBcJiMzNDtpcFwmIzM0OyBjb21tYW5kIGZyb20gdGhlXG4gMjA5Olx0XHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMy4xOSByZWxlYXNlOlxuIDIxMDpcdFxuIDIxMTpcdFx0ICBcJiMzNDtpcCBsaW5rIGFkZCBsaW5rIFx1MDAzY21haW4tZGV2XHUwMDNlIFsgTkFNRSBdIHR5cGUgaXB2bGFuXCYjMzQ7XG4gMjEyOlx0XG4gMjEzOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyMTQ6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaXB2bGFuLlxuIDIxNTpcdFxuIDIxNjpcdGNvbmZpZyBJUFZUQVBcbiAyMTc6XHRcdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gYmFzZWQgdGFwIGRyaXZlclwmIzM0O1xuIDIxODpcdFx0ZGVwZW5kcyBvbiBJUFZMQU5cbiAyMTk6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDIyMDpcdFx0c2VsZWN0IFRBUFxuIDIyMTpcdFx0aGVscFxuIDIyMjpcdFx0ICBUaGlzIGFkZHMgYSBzcGVjaWFsaXplZCB0YXAgY2hhcmFjdGVyIGRldmljZSBkcml2ZXIgdGhhdCBpcyBiYXNlZFxuIDIyMzpcdFx0ICBvbiB0aGUgSVAtVkxBTiBuZXR3b3JrIGludGVyZmFjZSwgY2FsbGVkIGlwdnRhcC4gQW4gaXB2dGFwIGRldmljZVxuIDIyNDpcdFx0ICBjYW4gYmUgYWRkZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGEgaXB2bGFuIGRldmljZSwgdXNpbmcgJiMzOTt0eXBlXG4gMjI1Olx0XHQgIGlwdnRhcCYjMzk7LCBhbmQgdGhlbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSB0YXAgdXNlciBzcGFjZSBpbnRlcmZhY2UuXG4gMjI2Olx0XG4gMjI3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyMjg6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaXB2dGFwLlxuIDIyOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzAxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgSVB2bGFuIE1ha2VmaWxlKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgSVB2bGFuIGRyaXZlciBpcyBidWlsdCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGVgLiBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyB3ZWxsLXN0cnVjdHVyZWQsIGFzIGdvb2QgTWFrZWZpbGUgb3JnYW5pemF0aW9uIGlzIGNydWNpYWwgZm9yIGEgY2xlYW4gYW5kIG1haW50YWluYWJsZSBidWlsZCBwcm9jZXNzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSB1c3VhbCBzdXNwZWN0czogb2JqZWN0IGZpbGUgbGlzdHMsIGRlcGVuZGVuY2llcywgaW5jbHVzaW9uIG9mIG90aGVyIG1ha2VmaWxlcyBvciBjb25maWd1cmF0aW9uIGZyYWdtZW50cywgYW5kIHRoZSBvdmVyYWxsIGJ1aWxkIHN0cmF0ZWd5IGZvciB0aGUgSVB2bGFuIG1vZHVsZS4gVGhpcyBNYWtlZmlsZSBpcyBnb2luZyB0byBiZSB0aGUgY2VudHJhbCBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgYnVpbGQgcHJvY2VzcyBvZiB0aGUgSVB2bGFuIGRyaXZlci4gTXkgZ29hbCBpcyB0byBncmFzcCBob3cgaXQgaW50ZWdyYXRlcyBpbnRvIHRoZSBsYXJnZXIga2VybmVsIGJ1aWxkIGFuZCBhbnkgcGVjdWxpYXIgYnVpbGQtdGltZSBjb25maWd1cmF0aW9ucyBvciBmbGFncyBpdCBtaWdodCBsZXZlcmFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgdGhlIEV0aGVybmV0IElwdmxhbiBkcml2ZXJcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0lQVkxBTikgJiM0Mzs9IGlwdmxhbi5vXG4gICA3Olx0b2JqLSQoQ09ORklHX0lQVlRBUCkgJiM0Mzs9IGlwdnRhcC5vXG4gICA4Olx0XG4gICA5Olx0aXB2bGFuLW9ianMtJChDT05GSUdfSVBWTEFOX0wzUykgJiM0Mzs9IGlwdmxhbl9sM3Mub1xuICAxMDpcdGlwdmxhbi1vYmpzIDo9IGlwdmxhbl9jb3JlLm8gaXB2bGFuX21haW4ubyAkKGlwdmxhbi1vYmpzLXkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2OTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYElQVkxBTmAgQ29uZmlndXJhdGlvbiBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gTG9va3MgbGlrZSBgSVBWTEFOYCBhbmQgYElORVRgIGFyZSBlc3NlbnRpYWwsIGFuZCBwb3NzaWJseSBgSVBWVEFQYCBvciBgSVBWTEFOX0wzU2AgZGVwZW5kaW5nIG9uIHRoZSB1c2UgY2FzZS4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIGRvZXMgdGhpcyBhcHBseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRT8gR29vZCBuZXdzLCBpdCYjMzk7cyBhIHNvZnR3YXJlIG5ldGRldmljZSBkcml2ZXIsIHNvIHllYWgsIGl0JiMzOTtzIGRlZmluaXRlbHkgYXBwbGljYWJsZS4gSSBjYW4gY3JlYXRlIGl0IHVzaW5nIHJ0bmwgb3IgbmV0bGluayBtZXNzYWdlcyDigJMgdGhhdCYjMzk7cyBhIGtleSBhZHZhbnRhZ2UgZm9yIGZ1enppbmcuCgpOb3csIGlzIHRoaXMgYWN0dWFsbHkgKndvcnRoKiBmdXp6aW5nPyBBYnNvbHV0ZWx5ISBUaGUgY29yZSBvZiB0aGlzIGlzIHRoZSB3YXkgaXQgaGFuZGxlcyBsb2NraW5nIGFuZCB0aGUgdW5yZWdpc3RyYXRpb24gZmxvdyBkdXJpbmcgZGV2aWNlIGV2ZW50cywgc3BlY2lmaWNhbGx5IGBORVRERVZfVU5SRUdJU1RFUmAgYW5kIGRldmljZSB0ZWFyZG93biwgZm9yIGlwdmxhbiBkZXZpY2VzLiBJdCYjMzk7cyBtb3ZpbmcgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlgIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24gb2YgYG11dGV4X3VubG9jaygmYW1wO3BvcnQtJmd0O3Bub2Rlc19sb2NrKWAuIFRoYXQmIzM5O3MgYSBodWdlIGZsYWcgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgZGlyZWN0bHkgaW1wYWN0aW5nIGxvY2tpbmcgaW52YXJpYW50cyBhbmQgY29uY3VycmVuY3kgaW4gdGhlIG5ldHdvcmsgc3RhY2sgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgYW5kIHdlIGtub3cgdGhpcyBpcyBhIGhpZ2hseSBzZW5zaXRpdmUgYXJlYS4gUmFjZSBjb25kaXRpb25zLCBVc2UtQWZ0ZXItRnJlZSwgYW5kIGRlYWRsb2NrcyBhcmUgYWxsIHZlcnkgbGlrZWx5IGhlcmUuCgpOZXh0IHN0ZXA6IGxldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBhbmQgZGV0ZXJtaW5lIHdoaWNoIGZ1bmN0aW9ucyB3aWxsIGJlIHRoZSBmb2N1cyBvZiB0aGUgZnV6emluZyBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgRm9jdXNTeW1ib2xzYCAtIHNwZWNpZmljYWxseSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBvciBub3RhYmxlIGZ1bmN0aW9ucyBpbiBgaXB2bGFuX21haW4uY2AuIEkgbmVlZCB0byBzZWFyY2ggdGhlIGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY2AgZmlsZSBmb3IgYWxsIHRoZSByZWxldmFudCBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX10uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwdmxhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU2OCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvaXB2bGFuL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGU6NjpvYmotJChDT05GSUdfSVBWTEFOKSAmIzQzOz0gaXB2bGFuLm9cbmRyaXZlcnMvbmV0L2lwdmxhbi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19JUFZUQVApICYjNDM7PSBpcHZ0YXAub1xuZHJpdmVycy9uZXQvaXB2bGFuL01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGU6OTppcHZsYW4tb2Jqcy0kKENPTkZJR19JUFZMQU5fTDNTKSAmIzQzOz0gaXB2bGFuX2wzcy5vXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGU6MTA6aXB2bGFuLW9ianMgOj0gaXB2bGFuX2NvcmUubyBpcHZsYW5fbWFpbi5vICQoaXB2bGFuLW9ianMteSlcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg9MTA2PXN0cnVjdCBpcHZsX3NrYl9jYiB7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTExMC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMTE6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXB2bF9wb3J0ICppcHZsYW5fcG9ydF9nZXRfcmN1KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTExMi17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTExNS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMTY6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXB2bF9wb3J0ICppcHZsYW5fcG9ydF9nZXRfcmN1X2JoKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTExNy17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEyMC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMjE6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXB2bF9wb3J0ICppcHZsYW5fcG9ydF9nZXRfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMjIte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMjUtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTI2OnN0YXRpYyBpbmxpbmUgYm9vbCBpcHZsYW5faXNfcHJpdmF0ZShjb25zdCBzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEyNy17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEzMC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMzE6c3RhdGljIGlubGluZSB2b2lkIGlwdmxhbl9tYXJrX3ByaXZhdGUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMzIte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMzUtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTM2OnN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fY2xlYXJfcHJpdmF0ZShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEzNy17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE0MC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNDE6c3RhdGljIGlubGluZSBib29sIGlwdmxhbl9pc192ZXBhKGNvbnN0IHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTQyLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTQ1LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE0NjpzdGF0aWMgaW5saW5lIHZvaWQgaXB2bGFuX21hcmtfdmVwYShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE0Ny17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE1MC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNTE6c3RhdGljIGlubGluZSB2b2lkIGlwdmxhbl9jbGVhcl92ZXBhKHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTU1LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE1Njp2b2lkIGlwdmxhbl9pbml0X3NlY3JldCh2b2lkKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNTc6dW5zaWduZWQgaW50IGlwdmxhbl9tYWNfaGFzaChjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNTg6cnhfaGFuZGxlcl9yZXN1bHRfdCBpcHZsYW5faGFuZGxlX2ZyYW1lKHN0cnVjdCBza19idWZmICoqcHNrYik7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTU5OnZvaWQgaXB2bGFuX3Byb2Nlc3NfbXVsdGljYXN0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTYwOmludCBpcHZsYW5fcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNjE6dm9pZCBpcHZsYW5faHRfYWRkcl9hZGQoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpcHZsX2FkZHIgKmFkZHIpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2MjpzdHJ1Y3QgaXB2bF9hZGRyICppcHZsYW5fZmluZF9hZGRyKGNvbnN0IHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE2My1cdFx0XHRcdCAgIGNvbnN0IHZvaWQgKmlhZGRyLCBib29sIGlzX3Y2KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNjQ6Ym9vbCBpcHZsYW5fYWRkcl9idXN5KHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQsIHZvaWQgKmlhZGRyLCBib29sIGlzX3Y2KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNjU6dm9pZCBpcHZsYW5faHRfYWRkcl9kZWwoc3RydWN0IGlwdmxfYWRkciAqYWRkcik7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTY2OnN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9hZGRyX2xvb2t1cChzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCB2b2lkICpseXIzaCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNjctXHRcdFx0XHQgICAgIGludCBhZGRyX3R5cGUsIGJvb2wgdXNlX2Rlc3QpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2ODp2b2lkICppcHZsYW5fZ2V0X0wzX2hkcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnR5cGUpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2OTp2b2lkIGlwdmxhbl9jb3VudF9yeChjb25zdCBzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNzAtXHRcdCAgICAgdW5zaWduZWQgaW50IGxlbiwgYm9vbCBzdWNjZXNzLCBib29sIG1jYXN0KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNzE6aW50IGlwdmxhbl9saW5rX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE3Mi1cdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTczOnZvaWQgX19pcHZsYW5fbGlua19kZWxldGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE3NC1cdFx0XHQgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3NTp2b2lkIGlwdmxhbl9saW5rX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3NjppbnQgaXB2bGFuX2xpbmtfcmVnaXN0ZXIoc3RydWN0IHJ0bmxfbGlua19vcHMgKm9wcyk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTc3LSNpZmRlZiBDT05GSUdfSVBWTEFOX0wzU1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3ODppbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNzk6dm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTgwOnZvaWQgaXB2bGFuX21pZ3JhdGVfbDNzX2hvb2soc3RydWN0IG5ldCAqb2xkbmV0LCBzdHJ1Y3QgbmV0ICpuZXduZXQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE4MTppbnQgaXB2bGFuX2wzc19pbml0KHZvaWQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE4Mjp2b2lkIGlwdmxhbl9sM3NfY2xlYW51cCh2b2lkKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xODMtI2Vsc2VcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxODQ6c3RhdGljIGlubGluZSBpbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE4NS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE4OC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxODk6c3RhdGljIGlubGluZSB2b2lkIGlwdmxhbl9sM3NfdW5yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE5MC17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE5Mi1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxOTM6c3RhdGljIGlubGluZSB2b2lkIGlwdmxhbl9taWdyYXRlX2wzc19ob29rKHN0cnVjdCBuZXQgKm9sZG5ldCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xOTQtXHRcdFx0XHRcdCAgIHN0cnVjdCBuZXQgKm5ld25ldClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTk3LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE5ODpzdGF0aWMgaW5saW5lIGludCBpcHZsYW5fbDNzX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xOTkte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0yMDItXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MjAzOnN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fbDNzX2NsZWFudXAodm9pZClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0yMDQte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0yMDctXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MjA4OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19pcHZsYW5fcG9ydChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTIwOS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTIxMy0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWVEFQKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjIxNDpleHRlcm4gdm9pZCAoKl9faXB2dGFwX2RlbGxpbmtfcHRyKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMjE1LVx0XHRcdFx0ICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jPTEwPXN0YXRpYyB1MzIgaXB2bGFuX2poYXNoX3NlY3JldCBfX3JlYWRfbW9zdGx5O1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTEtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMjp2b2lkIGlwdmxhbl9pbml0X3NlY3JldCh2b2lkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTMte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTE2LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MTc6dm9pZCBpcHZsYW5fY291bnRfcngoY29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xOC1cdFx0XHQgICAgdW5zaWduZWQgaW50IGxlbiwgYm9vbCBzdWNjZXNzLCBib29sIG1jYXN0KVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTMzLX1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjM0OkVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9jb3VudF9yeCk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zNS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTM2LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6Mzc6c3RhdGljIHU4IGlwdmxhbl9nZXRfdjZfaGFzaChjb25zdCB2b2lkICppYWRkcilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTM4LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy00NC0jZWxzZVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NDU6c3RhdGljIHU4IGlwdmxhbl9nZXRfdjZfaGFzaChjb25zdCB2b2lkICppYWRkcilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTQ2LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjUxOnN0YXRpYyB1OCBpcHZsYW5fZ2V0X3Y0X2hhc2goX19iZTMyIGFkZHIpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01Mi17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTYtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo1NzpzdGF0aWMgYm9vbCBhZGRyX2VxdWFsKGJvb2wgaXNfdjYsIHN0cnVjdCBpcHZsX2FkZHIgKmFkZHIsIGNvbnN0IHZvaWQgKmlhZGRyKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTgte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc0LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NzU6c3RhdGljIHN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9odF9hZGRyX2xvb2t1cDYoY29uc3Qgc3RydWN0IGlwdmxfcG9ydCAqcG9ydCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc2LVx0XHRcdFx0XHRcdGNvbnN0IHZvaWQgKmlhZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTg4LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6ODk6c3RhdGljIHN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9odF9hZGRyX2xvb2t1cDQoY29uc3Qgc3RydWN0IGlwdmxfcG9ydCAqcG9ydCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTkwLVx0XHRcdFx0XHRcdF9fYmUzMiBhZGRyNClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMDEtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMDI6dm9pZCBpcHZsYW5faHRfYWRkcl9hZGQoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpcHZsX2FkZHIgKmFkZHIpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMDMte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTExMy1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjExNDp2b2lkIGlwdmxhbl9odF9hZGRyX2RlbChzdHJ1Y3QgaXB2bF9hZGRyICphZGRyKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTE1LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMTgtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMTk6c3RydWN0IGlwdmxfYWRkciAqaXB2bGFuX2ZpbmRfYWRkcihjb25zdCBzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTEyMC1cdFx0XHRcdCAgIGNvbnN0IHZvaWQgKmlhZGRyLCBib29sIGlzX3Y2KVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTEzMi1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjEzMzpib29sIGlwdmxhbl9hZGRyX2J1c3koc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTE0OC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjE0OTp2b2lkICppcHZsYW5fZ2V0X0wzX2hkcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnR5cGUpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xNTAte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTIyOS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjIzMDp1bnNpZ25lZCBpbnQgaXB2bGFuX21hY19oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0yMzEte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTIzNy1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjIzODp2b2lkIGlwdmxhbl9wcm9jZXNzX211bHRpY2FzdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0yMzkte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTMxMS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjMxMjpzdGF0aWMgdm9pZCBpcHZsYW5fc2tiX2Nyb3NzaW5nX25zKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zMTMte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTMyMy1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjMyNDpzdGF0aWMgaW50IGlwdmxhbl9yY3ZfZnJhbWUoc3RydWN0IGlwdmxfYWRkciAqYWRkciwgc3RydWN0IHNrX2J1ZmYgKipwc2tiLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMzI1LVx0XHRcdCAgICBib29sIGxvY2FsKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTM2NS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjM2NjpzdHJ1Y3QgaXB2bF9hZGRyICppcHZsYW5fYWRkcl9sb29rdXAoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgdm9pZCAqbHlyM2gsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zNjctXHRcdFx0XHQgICAgIGludCBhZGRyX3R5cGUsIGJvb2wgdXNlX2Rlc3QpXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNDI3LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NDI4OnN0YXRpYyBub2lubGluZV9mb3Jfc3RhY2sgaW50IGlwdmxhbl9wcm9jZXNzX3Y0X291dGJvdW5kKHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy00Mjkte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jPTQ3Nj1zdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIGludFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NDc3Omlwdmxhbl9yb3V0ZV92Nl9vdXRib3VuZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNDc4LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MDEtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo1MDI6c3RhdGljIGludCBpcHZsYW5fcHJvY2Vzc192Nl9vdXRib3VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTAzLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MjktI2Vsc2VcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjUzMDpzdGF0aWMgaW50IGlwdmxhbl9wcm9jZXNzX3Y2X291dGJvdW5kKHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MzEte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTUzNS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjUzNjpzdGF0aWMgaW50IGlwdmxhbl9wcm9jZXNzX291dGJvdW5kKHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01Mzcte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTU3NC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjU3NTpzdGF0aWMgdm9pZCBpcHZsYW5fbXVsdGljYXN0X2VucXVldWUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTU3Ni1cdFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCB0eF9wa3QpXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjAyLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NjAzOnN0YXRpYyBpbnQgaXB2bGFuX3htaXRfbW9kZV9sMyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjA0LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy02MjktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo2MzA6c3RhdGljIGludCBpcHZsYW5feG1pdF9tb2RlX2wyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy02MzEte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTY3NC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjY3NTppbnQgaXB2bGFuX3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTY3Ni17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNzAyLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NzAzOnN0YXRpYyBib29sIGlwdmxhbl9leHRlcm5hbF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNzA0LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03MjItXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3MjM6c3RhdGljIHJ4X2hhbmRsZXJfcmVzdWx0X3QgaXB2bGFuX2hhbmRsZV9tb2RlX2wzKHN0cnVjdCBza19idWZmICoqcHNrYixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTcyNC1cdFx0XHRcdFx0XHQgc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03NDMtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3NDQ6c3RhdGljIHJ4X2hhbmRsZXJfcmVzdWx0X3QgaXB2bGFuX2hhbmRsZV9tb2RlX2wyKHN0cnVjdCBza19idWZmICoqcHNrYixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc0NS1cdFx0XHRcdFx0XHQgc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03ODAtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3ODE6cnhfaGFuZGxlcl9yZXN1bHRfdCBpcHZsYW5faGFuZGxlX2ZyYW1lKHN0cnVjdCBza19idWZmICoqcHNrYilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc4Mi17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0xMT1zdHJ1Y3QgaXB2bGFuX25ldG5zIHtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE0LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoxNTpzdGF0aWMgc3RydWN0IGlwdmxfYWRkciAqaXB2bGFuX3NrYl90b19hZGRyKHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE2LVx0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTM4LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzozOTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlwdmxhbl9sM19yY3Yoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtNDAtXHRcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiBwcm90bylcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jPTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbDNtZGV2X29wcyBpcHZsX2wzbWRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy05NC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6OTU6c3RhdGljIHVuc2lnbmVkIGludCBpcHZsYW5fbmZfaW5wdXQodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtOTYtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM9MTE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZfaG9va19vcHMgaXB2bF9uZm9wc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTMzLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoxMzQ6c3RhdGljIGludCBpcHZsYW5fcmVnaXN0ZXJfbmZfaG9vayhzdHJ1Y3QgbmV0ICpuZXQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTEzNS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xNTAtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjE1MTpzdGF0aWMgdm9pZCBpcHZsYW5fdW5yZWdpc3Rlcl9uZl9ob29rKHN0cnVjdCBuZXQgKm5ldClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE2My1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MTY0OnZvaWQgaXB2bGFuX21pZ3JhdGVfbDNzX2hvb2soc3RydWN0IG5ldCAqb2xkbmV0LCBzdHJ1Y3QgbmV0ICpuZXduZXQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE2NS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xNzctXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjE3ODpzdGF0aWMgdm9pZCBpcHZsYW5fbnNfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE3OS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0xODk9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcHZsYW5fbmV0X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE5NC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MTk1OmludCBpcHZsYW5fbDNzX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTk2LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE5OS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjAwOnZvaWQgaXB2bGFuX2wzc19jbGVhbnVwKHZvaWQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIwMS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMDQtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjIwNTppbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMDYte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjIwLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoyMjE6dm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjIyLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWVEFQKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTE6dm9pZCAoKl9faXB2dGFwX2RlbGxpbmtfcHRyKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMi1cdFx0XHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTM6RVhQT1JUX1NZTUJPTChfX2lwdnRhcF9kZWxsaW5rX3B0cik7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xNC0jZW5kaWZcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE1LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTY6c3RhdGljIGludCBpcHZsYW5fc2V0X3BvcnRfbW9kZShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCB1MTYgbnZhbCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE3LVx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTczLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzQ6c3RhdGljIGludCBpcHZsYW5fcG9ydF9jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc1LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMTA6c3RhdGljIHZvaWQgaXB2bGFuX3BvcnRfZGVzdHJveShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTExLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMjktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMzA6c3RhdGljIHZvaWQgaXB2bGFuX3BvcnRfcHV0KHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMzEte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEzNS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEzNjpzdGF0aWMgc3RydWN0IGlwdmxfcG9ydCAqaXB2bGFuX3BvcnRfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMzcte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE2OC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjE2OTpzdGF0aWMgaW50IGlwdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xNzAte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTIxNS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjIxNjpzdGF0aWMgdm9pZCBpcHZsYW5fdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yMTcte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTIzMy1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjIzNDpzdGF0aWMgaW50IGlwdmxhbl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yMzUte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI1My1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjI1NDpzdGF0aWMgaW50IGlwdmxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yNTUte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI3MC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjI3MTpzdGF0aWMgbmV0ZGV2X3R4X3QgaXB2bGFuX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI3Mi1cdFx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yOTMtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoyOTQ6c3RhdGljIG5ldGRldl9mZWF0dXJlc190IGlwdmxhbl9maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI5NS1cdFx0XHRcdFx0ICAgICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zMDgtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozMDk6c3RhdGljIHZvaWQgaXB2bGFuX2NoYW5nZV9yeF9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgY2hhbmdlKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzEwLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zMTctXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozMTg6c3RhdGljIHZvaWQgaXB2bGFuX3NldF9tdWx0aWNhc3RfbWFjX2ZpbHRlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzE5LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zNDQtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozNDU6c3RhdGljIHZvaWQgaXB2bGFuX2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zNDYtXHRcdFx0ICAgICAgIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqcylcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zODUtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozODY6c3RhdGljIGludCBpcHZsYW5fdmxhbl9yeF9hZGRfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTM4Ny17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzkzLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Mzk0OnN0YXRpYyBpbnQgaXB2bGFuX3ZsYW5fcnhfa2lsbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgX19iZTE2IHByb3RvLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzk1LVx0XHRcdFx0ICAgdTE2IHZpZClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00MDMtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0MDQ6c3RhdGljIGludCBpcHZsYW5fZ2V0X2lmbGluayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDA1LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz00MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcHZsYW5fbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00MjUtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0MjY6c3RhdGljIGludCBpcHZsYW5faGFyZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQyNy1cdFx0XHQgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlLCBjb25zdCB2b2lkICpkYWRkcixcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz00NDE9c3RhdGljIGNvbnN0IHN0cnVjdCBoZWFkZXJfb3BzIGlwdmxhbl9oZWFkZXJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ0OC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjQ0OTpzdGF0aWMgdm9pZCBpcHZsYW5fYWRqdXN0X210dShzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ1MC17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDUzLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDU0OnN0YXRpYyBib29sIG5ldGlmX2lzX2lwdmxhbihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDU1LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00NTktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0NjA6c3RhdGljIGludCBpcHZsYW5fZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ2MS1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ2Ny1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjQ2ODpzdGF0aWMgdm9pZCBpcHZsYW5fZXRodG9vbF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDY5LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmRydmluZm8pXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDc0LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDc1OnN0YXRpYyB1MzIgaXB2bGFuX2V0aHRvb2xfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00NzYte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ4MS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjQ4MjpzdGF0aWMgdm9pZCBpcHZsYW5fZXRodG9vbF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHZhbHVlKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDgzLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz00ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpcHZsYW5fZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDk2LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDk3OnN0YXRpYyBpbnQgaXB2bGFuX25sX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ5OC1cdFx0XHRcdHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01MzItXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo1MzM6c3RhdGljIHNpemVfdCBpcHZsYW5fbmxfZ2V0c2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTM0LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01NDAtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo1NDE6c3RhdGljIGludCBpcHZsYW5fbmxfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTQyLVx0XHRcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01NjctXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo1Njg6c3RhdGljIGludCBpcHZsYW5fbmxfZmlsbGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTU2OS1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTU4OS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjU5MDppbnQgaXB2bGFuX2xpbmtfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01OTEtXHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzA2LX1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjcwNzpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19uZXcpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzA4LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzA5OnZvaWQgX19pcHZsYW5fbGlua19kZWxldGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzEwLVx0XHRcdCAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MjctfVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzI4OkVYUE9SVF9TWU1CT0woX19pcHZsYW5fbGlua19kZWxldGUpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzI5LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzMwOnN0YXRpYyB2b2lkIGlwdmxhbl9saW5rX2RlbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzMxLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MzktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3NDA6dm9pZCBpcHZsYW5fbGlua19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzQxLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NTEtfVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzUyOkVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9saW5rX3NldHVwKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc1My1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTc1ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaXB2bGFuX25sX3BvbGljeVtJRkxBX0lQVkxBTl9NQVggJiM0MzsgMV0gPVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc1OS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjc2MDpzdGF0aWMgc3RydWN0IG5ldCAqaXB2bGFuX2dldF9saW5rX25ldChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzYxLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz03Njc9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwdmxhbl9saW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NzYtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3Nzc6aW50IGlwdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03Nzgte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc4Ni19XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3ODc6RVhQT1JUX1NZTUJPTF9HUEwoaXB2bGFuX2xpbmtfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzg4LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Nzg5OnN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc5MC1cdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTkwNS0vKiB0aGUgY2FsbGVyIG11c3QgaGVsZCB0aGUgYWRkcnMgbG9jayAqL1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6OTA2OnN0YXRpYyBpbnQgaXB2bGFuX2FkZF9hZGRyKHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCB2b2lkICppYWRkciwgYm9vbCBpc192NilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTkwNy17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtOTM3LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6OTM4OnN0YXRpYyB2b2lkIGlwdmxhbl9kZWxfYWRkcihzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05Mzkte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk1NC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjk1NTpzdGF0aWMgYm9vbCBpcHZsYW5faXNfdmFsaWRfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05NTYte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk2OC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjk2OTpzdGF0aWMgaW50IGlwdmxhbl9hZGRfYWRkcjYoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpbjZfYWRkciAqaXA2X2FkZHIpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05NzAte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk4My1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjk4NDpzdGF0aWMgdm9pZCBpcHZsYW5fZGVsX2FkZHI2KHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCBzdHJ1Y3QgaW42X2FkZHIgKmlwNl9hZGRyKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtOTg1LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05ODgtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo5ODk6c3RhdGljIGludCBpcHZsYW5fYWRkcjZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05OTAtXHRcdFx0ICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwMTItXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMDEzOnN0YXRpYyBpbnQgaXB2bGFuX2FkZHI2X3ZhbGlkYXRvcl9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwMTQtXHRcdFx0XHRcdHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDM5LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTA0MDpzdGF0aWMgaW50IGlwdmxhbl9hZGRfYWRkcjQoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpbl9hZGRyICppcDRfYWRkcilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNDEte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNTQtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMDU1OnN0YXRpYyB2b2lkIGlwdmxhbl9kZWxfYWRkcjQoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpbl9hZGRyICppcDRfYWRkcilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNTYte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNTktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMDYwOnN0YXRpYyBpbnQgaXB2bGFuX2FkZHI0X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA2MS1cdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA4Ni1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwODc6c3RhdGljIGludCBpcHZsYW5fYWRkcjRfdmFsaWRhdG9yX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA4OC1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTExMzA9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBpcHZsYW5fYWRkcjZfdnRvcl9ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExMzQtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMTM1OnN0YXRpYyBpbnQgX19pbml0IGlwdmxhbl9pbml0X21vZHVsZSh2b2lkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTEzNi17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTE3Mi1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjExNzM6c3RhdGljIHZvaWQgX19leGl0IGlwdmxhbl9jbGVhbnVwX21vZHVsZSh2b2lkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTE3NC17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTE4Ny1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI1NQoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAzODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVkxBTiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgc3ltYm9scyBpbnZvbHZlZC4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgLCB3aGljaCBpcyB0aGUgbW9kaWZpZWQgZnVuY3Rpb24sIGFuZCB0aGUgYG5ldGRldmAgbm90aWZpZXIgY2FsbGJhY2suIFRoZW4gdGhlcmUmIzM5O3MgYF9faXB2bGFuX2xpbmtfZGVsZXRlYCBhbmQgYGlwdmxhbl9saW5rX25ld2AuCgpGaXJzdCwgSSBjb25maXJtZWQgdGhhdCBgaXB2bGFuX2RldmljZV9ldmVudGAgaXMgaW5kZWVkIHN0YXRpYywgYmVpbmcgdGhlIG5vdGlmaWVyIGNhbGxiYWNrIHJlZ2lzdGVyZWQgd2l0aCBgcmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyYC4gTmV4dCwgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYGlwdmxhbl9saW5rX3JlZ2lzdGVyYCwgYGlwdmxhbl9saW5rX25ld2AsIGBfX2lwdmxhbl9saW5rX2RlbGV0ZWAsIGFuZCBgaXB2bGFuX2xpbmtfc2V0dXBgIGFyZSBub24tc3RhdGljIGFuZCBleHBvcnRlZCBzeW1ib2xzLiBUaGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGZ1bmN0aW9uIGhhcyBhIHN5bWJvbCBpZiBga2FsbHN5bXNgIGlzIHVzZWQuIEkmIzM5O2xsIG1ha2UgYSBtZW50YWwgbm90ZSB0byBjaGVjayBmb3Igb3RoZXIgZXhwb3J0ZWQgc3ltYm9scyBpbiB0aGUgYGlwdmxhbmAgbW9kdWxlLCBidXQgSSYjMzk7dmUgYWxyZWFkeSBpZGVudGlmaWVkIHRoZSBrZXkgcGxheWVyczogYGlwdmxhbl9kZXZpY2VfZXZlbnRgLCBgX19pcHZsYW5fbGlua19kZWxldGVgLCBhbmQgYGlwdmxhbl9saW5rX25ld2AuCgpOb3csIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llczogYENPTkZJR19JUFZMQU5gIGRlcGVuZHMgb24gYENPTkZJR19JTkVUYCwgYW5kIGJ5IGV4dGVuc2lvbiB0aGUgdW5kZXJseWluZyBuZXQgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb25zLiBTbywgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGRlZmluaXRlbHkgYElQVkxBTmAgYW5kIGBJTkVUYC4KCkZpbmFsbHksIHRoZSBjb250ZXh0IG9mIHRoZSBwYXRjaCBpdHNlbGYuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGhhbmRsZXIgZHVyaW5nIG5ldGRldmljZSB1bnJlZ2lzdHJhdGlvbiAoYE5FVERFVl9VTlJFR0lTVEVSYCkuIFRoZSBwcmltYXJ5IGNoYW5nZSBpcyBtb3ZpbmcgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlgIG91dHNpZGUgdGhlIGBwbm9kZXNfbG9ja2AgbXV0ZXguIFRoaXMgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gY29yZSBkcml2ZXIgdGVhcmRvd24gYW5kIGNvbmN1cnJlbmN5IGxvZ2ljLCBlc3BlY2lhbGx5IHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBkdWUgdG8gdGhlIHVzZSBvZiBJUFZMQU4gbmV0bGluayBpbnRlcmZhY2VzLgoKVGhlIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcsIGFuZCBJIGNhbiBjb25maXJtIHRoYXQgYnkgdGhlIHByZXNlbmNlIG9mIHJhY2UgY29uZGl0aW9ucyB0aGF0IGFyZSBpbnRyb2R1Y2VkIGJ5IHVucmVnaXN0ZXJpbmcgZGV2aWNlcyBmcm9tIGRpZmZlcmVudCB0aHJlYWRzIGFuZCB0aGUgbW9kaWZpZWQgY29uY3VycmVuY3kgbG9naWMgaW4gYSBjcnVjaWFsIHBhcnQgb2YgdGhlIGRyaXZlci4KCldpdGggdGhhdCwgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVkxBTiYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2bGFuX2RldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX2lwdmxhbl9saW5rX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDtpcHZsYW5fbGlua19uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWTEFOJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHZsYW5fZGV2aWNlX2V2ZW50JiMzNDssCiAgICAmIzM0O19faXB2bGFuX2xpbmtfZGVsZXRlJiMzNDssCiAgICAmIzM0O2lwdmxhbl9saW5rX25ldyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSVBWTEFOIGRldmljZSBldmVudCBub3RpZmljYXRpb24gaGFuZGxlciAoaXB2bGFuX2RldmljZV9ldmVudCkgZHVyaW5nIE5FVERFVl9VTlJFR0lTVEVSIGJ5IG1vdmluZyB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KCkgb3V0c2lkZSBvZiB0aGUgcG9ydCBwbm9kZXNfbG9jayBjcml0aWNhbCBzZWN0aW9uIHRvIHByZXZlbnQgbmVzdGVkIG5vdGlmaWVyIGludm9jYXRpb25zIHVuZGVyIHRoZSBsb2NrLiBUaGlzIGFmZmVjdHMgY29uY3VycmVuY3ksIGxvY2tpbmcsIGFuZCBkZXZpY2UgdGVhcmRvd24gbG9naWMgaW4gdGhlIHZpcnR1YWwgSVBWTEFOIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBzdGFuZGFyZCBuZXRsaW5rIGNvbW1hbmRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcdTAwMjZsc3Rfa2lsbCkgb3V0c2lkZSBvZiB0aGUgcG9ydC1cdTAwM2Vwbm9kZXNfbG9jayBjcml0aWNhbCBzZWN0aW9uIGluIGlwdmxhbl9kZXZpY2VfZXZlbnQoKSB0byBwcmV2ZW50IGNhbGxpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgd2hpbGUgaG9sZGluZyB0aGUgbXV0ZXguXG5cblRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhZGp1c3RtZW50IGFpbWVkIGF0IHByZXZlbnRpbmcgZGVhZGxvY2tzIC8gbG9ja2RlcCB3YXJuaW5ncy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgdXNlci1zcGFjZSBjb3BpZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLiBBbnkgcG90ZW50aWFsIGNvbmN1cnJlbmN5IG9yIGxpZmVjeWNsZSBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyMDJiM2JkYjI1MmZhZGZmOGQ3N2M1NDRkMzlkYzYxYjlkMjc1ZDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAyOCAxODowMDozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jIGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKaW5kZXggZWU0NmE1NWY3M2QxNC4uMmQ0MzQwNjI3Y2E2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKQEAgLTg0Niw3ICYjNDM7ODQ2LDYgQEAgc3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLAogCQkJCV9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLSZndDtkZXYsICZhbXA7bHN0X2tpbGwpOwogCQl9CiAKLQkJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgmYW1wO2xzdF9raWxsKTsKIAkJYnJlYWs7CiAJfQogCWNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOgpAQCAtODk1LDYgJiM0Mzs4OTQsOSBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsCiAKIAltdXRleF91bmxvY2soJmFtcDtwb3J0LSZndDtwbm9kZXNfbG9jayk7CiAKJiM0MzsJLyogQXZvaWQgaW52b2tpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgdW5kZXIgcG5vZGVzX2xvY2suICovCiYjNDM7CXVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmFtcDtsc3Rfa2lsbCk7CiYjNDM7CiAJaXB2bGFuX3BvcnRfcHV0KHBvcnQpOwogCiAJcmV0dXJuIHJldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgUGF0Y2gqKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBUaGUgdGFzayBpcyB0byBhbmFseXplIGEgcGF0Y2gsIHdoaWNoIG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2UgaXRzZWxmLCBidXQgZXZlbiBtb3JlIGltcG9ydGFudGx5LCB0aGUgY29udGV4dCBzdXJyb3VuZGluZyBpdC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGFsd2F5cyBzdGFydCBieSBnb2luZyBiYWNrIHRvIHRoZSBzb3VyY2UgY29kZSB0byBjb25maXJtIG15IGh5cG90aGVzZXMuCgpGaXJzdCwgSSYjMzk7bSBnb2luZyB0byBwdWxsIHVwIGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY2AsIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiB0aGUgcmVnaW9uIGFyb3VuZCBsaW5lcyA4NDYtOTAwLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZyBpbiB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBvZiBjb2RlLiBVc2luZyBgcmVhZC1maWxlYCB3aWxsIGFsbG93IG1lIHRvIHByZWNpc2VseSBleGFtaW5lIHRoYXQgc2VjdGlvbiwgdW5kZXJzdGFuZGluZyB3aGF0IHRoZSBjb3JlIGZ1bmN0aW9uIGlzIGRvaW5nLCBhbmQgdGhlIHZhcmlhYmxlIG1hbmlwdWxhdGlvbnMuCgpUaGlzIHByZWxpbWluYXJ5IHJldmlldyBpcyBlc3NlbnRpYWwgdG8gZ3JvdW5kIG15IHVuZGVyc3RhbmRpbmcgYW5kIGVzdGFibGlzaCBhIGJhc2VsaW5lIGJlZm9yZSBleGFtaW5pbmcgdGhlIHBhdGNoIG1vcmUgY2xvc2VseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA5MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODIwOlx0XHRcdHN0cnVjdCBuZXQgKm9sZG5ldCwgKm5ld25ldCA9IGRldl9uZXQoZGV2KTtcbiA4MjE6XHRcbiA4MjI6XHRcdFx0b2xkbmV0ID0gcmVhZF9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCk7XG4gODIzOlx0XHRcdGlmIChuZXRfZXEobmV3bmV0LCBvbGRuZXQpKVxuIDgyNDpcdFx0XHRcdGJyZWFrO1xuIDgyNTpcdFxuIDgyNjpcdFx0XHR3cml0ZV9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCwgbmV3bmV0KTtcbiA4Mjc6XHRcbiA4Mjg6XHRcdFx0aWYgKHBvcnQtXHUwMDNlbW9kZSA9PSBJUFZMQU5fTU9ERV9MM1MpXG4gODI5Olx0XHRcdFx0aXB2bGFuX21pZ3JhdGVfbDNzX2hvb2sob2xkbmV0LCBuZXduZXQpO1xuIDgzMDpcdFx0XHRicmVhaztcbiA4MzE6XHRcdH1cbiA4MzI6XHRcdGNhc2UgTkVUREVWX1VOUkVHSVNURVI6IHtcbiA4MzM6XHRcdFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChkZXYpO1xuIDgzNDpcdFxuIDgzNTpcdFx0XHRpZiAoZGV2LVx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfVU5SRUdJU1RFUklORylcbiA4MzY6XHRcdFx0XHRicmVhaztcbiA4Mzc6XHRcbiA4Mzg6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGlwdmxhbiwgbmV4dCwgXHUwMDI2cG9ydC1cdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xuIDgzOTpcdFx0XHRcdGlwdmxhbi1cdTAwM2VkeWluZyA9IHRydWU7XG4gODQwOlx0XG4gODQxOlx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVlRBUClcbiA4NDI6XHRcdFx0XHRpZiAoaXB2bGFuLVx1MDAzZWRldi1cdTAwM2VydG5sX2xpbmtfb3BzICE9IFx1MDAyNmlwdmxhbl9saW5rX29wcylcbiA4NDM6XHRcdFx0XHRcdF9faXB2dGFwX2RlbGxpbmtfcHRyKG5ldCwgaXB2bGFuLVx1MDAzZWRldiwgXHUwMDI2bHN0X2tpbGwpO1xuIDg0NDpcdFx0XHRcdGVsc2VcbiA4NDU6XHQjZW5kaWZcbiA4NDY6XHRcdFx0XHRcdF9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLVx1MDAzZWRldiwgXHUwMDI2bHN0X2tpbGwpO1xuIDg0NzpcdFx0XHR9XG4gODQ4Olx0XG4gODQ5Olx0XHRcdGJyZWFrO1xuIDg1MDpcdFx0fVxuIDg1MTpcdFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XG4gODUyOlx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcdTAwMjZwb3J0LVx1MDAzZWlwdmxhbnMsIHBub2RlKSB7XG4gODUzOlx0XHRcdFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGlwdmxhbi1cdTAwM2VkZXYsIGRldik7XG4gODU0Olx0XHRcdFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhpcHZsYW4tXHUwMDNlZGV2KTtcbiA4NTU6XHRcdFx0fVxuIDg1NjpcdFx0XHRicmVhaztcbiA4NTc6XHRcbiA4NTg6XHRcdGNhc2UgTkVUREVWX0NIQU5HRU1UVTpcbiA4NTk6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpXG4gODYwOlx0XHRcdFx0aXB2bGFuX2FkanVzdF9tdHUoaXB2bGFuLCBkZXYpO1xuIDg2MTpcdFx0XHRicmVhaztcbiA4NjI6XHRcbiA4NjM6XHRcdGNhc2UgTkVUREVWX1BSRV9DSEFOR0VBRERSOlxuIDg2NDpcdFx0XHRwcmVjaGFkZHJfaW5mbyA9IHB0cjtcbiA4NjU6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcbiA4NjY6XHRcdFx0XHRlcnIgPSBuZXRpZl9wcmVfY2hhbmdlYWRkcl9ub3RpZnkoaXB2bGFuLVx1MDAzZWRldixcbiA4Njc6XHRcdFx0XHRcdFx0XHRcdCAgcHJlY2hhZGRyX2luZm8tXHUwMDNlZGV2X2FkZHIsXG4gODY4Olx0XHRcdFx0XHRcdFx0XHQgIGV4dGFjayk7XG4gODY5Olx0XHRcdFx0aWYgKGVycikge1xuIDg3MDpcdFx0XHRcdFx0cmV0ID0gbm90aWZpZXJfZnJvbV9lcnJubyhlcnIpO1xuIDg3MTpcdFx0XHRcdFx0YnJlYWs7XG4gODcyOlx0XHRcdFx0fVxuIDg3MzpcdFx0XHR9XG4gODc0Olx0XHRcdGJyZWFrO1xuIDg3NTpcdFxuIDg3NjpcdFx0Y2FzZSBORVRERVZfQ0hBTkdFQUREUjpcbiA4Nzc6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcbiA4Nzg6XHRcdFx0XHRldGhfaHdfYWRkcl9zZXQoaXB2bGFuLVx1MDAzZWRldiwgZGV2LVx1MDAzZWRldl9hZGRyKTtcbiA4Nzk6XHRcdFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGlwdmxhbi1cdTAwM2VkZXYpO1xuIDg4MDpcdFx0XHR9XG4gODgxOlx0XHRcdGJyZWFrO1xuIDg4MjpcdFxuIDg4MzpcdFx0Y2FzZSBORVRERVZfUFJFX1RZUEVfQ0hBTkdFOlxuIDg4NDpcdFx0XHQvKiBGb3JiaWQgdW5kZXJseWluZyBkZXZpY2UgdG8gY2hhbmdlIGl0cyB0eXBlLiAqL1xuIDg4NTpcdFx0XHRyZXQgPSBOT1RJRllfQkFEO1xuIDg4NjpcdFx0XHRicmVhaztcbiA4ODc6XHRcbiA4ODg6XHRcdGNhc2UgTkVUREVWX05PVElGWV9QRUVSUzpcbiA4ODk6XHRcdGNhc2UgTkVUREVWX0JPTkRJTkdfRkFJTE9WRVI6XG4gODkwOlx0XHRjYXNlIE5FVERFVl9SRVNFTkRfSUdNUDpcbiA4OTE6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpXG4gODkyOlx0XHRcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKGV2ZW50LCBpcHZsYW4tXHUwMDNlZGV2KTtcbiA4OTM6XHRcdH1cbiA4OTQ6XHRcbiA4OTU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKTtcbiA4OTY6XHRcbiA4OTc6XHRcdC8qIEF2b2lkIGludm9raW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHVuZGVyIHBub2Rlc19sb2NrLiAqL1xuIDg5ODpcdFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcdTAwMjZsc3Rfa2lsbCk7XG4gODk5Olx0XG4gOTAwOlx0XHRpcHZsYW5fcG9ydF9wdXQocG9ydCk7XG4gOTAxOlx0XG4gOTAyOlx0XHRyZXR1cm4gcmV0O1xuIDkwMzpcdH1cbiA5MDQ6XHRcbiA5MDU6XHQvKiB0aGUgY2FsbGVyIG11c3QgaGVsZCB0aGUgYWRkcnMgbG9jayAqL1xuIDkwNjpcdHN0YXRpYyBpbnQgaXB2bGFuX2FkZF9hZGRyKHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCB2b2lkICppYWRkciwgYm9vbCBpc192NilcbiA5MDc6XHR7XG4gOTA4Olx0XHRzdHJ1Y3QgaXB2bF9hZGRyICphZGRyO1xuIDkwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzg3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcsIHdoZXJlIGRvIHdlIGtpY2sgb2ZmIGFuZCB3aGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCBoZXJlPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBgaXB2bGFuX2RldmljZV9ldmVudGAgZnVuY3Rpb24gY29tZXMgaW50byBwbGF5LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGluZ3MgYXJlIHNldCB1cCBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgaXRzIGV4ZWN1dGlvbiBmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBicm9hZGVyIHN5c3RlbSwgYW5kIGhvdyBpdCBpcyBjYWxsZWQgYXMgYSBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzkwOlx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcbiA3OTE6XHR7XG4gNzkyOlx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2sgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19leHRhY2socHRyKTtcbiA3OTM6XHRcdHN0cnVjdCBuZXRkZXZfbm90aWZpZXJfcHJlX2NoYW5nZWFkZHJfaW5mbyAqcHJlY2hhZGRyX2luZm87XG4gNzk0Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XG4gNzk1Olx0XHRzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgKm5leHQ7XG4gNzk2Olx0XHRpbnQgZXJyLCByZXQgPSBOT1RJRllfRE9ORTtcbiA3OTc6XHRcdHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQ7XG4gNzk4Olx0XHRMSVNUX0hFQUQobHN0X2tpbGwpO1xuIDc5OTpcdFxuIDgwMDpcdFx0aWYgKGV2ZW50ID09IE5FVERFVl9QUkVDSEFOR0VVUFBFUiB8fFxuIDgwMTpcdFx0ICAgIGV2ZW50ID09IE5FVERFVl9DSEFOR0VVUFBFUilcbiA4MDI6XHRcdFx0cmV0dXJuIHJldDtcbiA4MDM6XHRcbiA4MDQ6XHRcdHBvcnQgPSBpcHZsYW5fcG9ydF9nZXQoZGV2KTtcbiA4MDU6XHRcdGlmICghcG9ydClcbiA4MDY6XHRcdFx0cmV0dXJuIHJldDtcbiA4MDc6XHRcbiA4MDg6XHRcdG11dGV4X2xvY2soXHUwMDI2cG9ydC1cdTAwM2Vwbm9kZXNfbG9jayk7XG4gODA5Olx0XG4gODEwOlx0XHRzd2l0Y2ggKGV2ZW50KSB7XG4gODExOlx0XHRjYXNlIE5FVERFVl9VUDpcbiA4MTI6XHRcdGNhc2UgTkVUREVWX0RPV046XG4gODEzOlx0XHRjYXNlIE5FVERFVl9DSEFOR0U6XG4gODE0Olx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcdTAwMjZwb3J0LVx1MDAzZWlwdmxhbnMsIHBub2RlKVxuIDgxNTpcdFx0XHRcdG5ldGlmX3N0YWNrZWRfdHJhbnNmZXJfb3BlcnN0YXRlKGlwdmxhbi1cdTAwM2VwaHlfZGV2LFxuIDgxNjpcdFx0XHRcdFx0XHRcdFx0IGlwdmxhbi1cdTAwM2VkZXYpO1xuIDgxNzpcdFx0XHRicmVhaztcbiA4MTg6XHRcbiA4MTk6XHRcdGNhc2UgTkVUREVWX1JFR0lTVEVSOiB7XG4gODIwOlx0XHRcdHN0cnVjdCBuZXQgKm9sZG5ldCwgKm5ld25ldCA9IGRldl9uZXQoZGV2KTtcbiA4MjE6XHRcbiA4MjI6XHRcdFx0b2xkbmV0ID0gcmVhZF9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCk7XG4gODIzOlx0XHRcdGlmIChuZXRfZXEobmV3bmV0LCBvbGRuZXQpKVxuIDgyNDpcdFx0XHRcdGJyZWFrO1xuIDgyNTpcdFxuIDgyNjpcdFx0XHR3cml0ZV9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCwgbmV3bmV0KTtcbiA4Mjc6XHRcbiA4Mjg6XHRcdFx0aWYgKHBvcnQtXHUwMDNlbW9kZSA9PSBJUFZMQU5fTU9ERV9MM1MpXG4gODI5Olx0XHRcdFx0aXB2bGFuX21pZ3JhdGVfbDNzX2hvb2sob2xkbmV0LCBuZXduZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTk1CgkJCQkJCQlvdXRwdXQ6IDE0NQoJCQkJCQkJdGhvdWdodHM6IDUzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQdmxhbiBQYXRjaCBmb3IgU2FmZXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBjb25jdXJyZW5jeSBmaXggd2l0aGluIHRoZSBgaXB2bGFuX2RldmljZV9ldmVudCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGNhbGwgdG8gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmFtcDtsc3Rfa2lsbClgIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24gcHJvdGVjdGVkIGJ5IGBwb3J0LSZndDtwbm9kZXNfbG9ja2AuIFRoZSByYXRpb25hbGU/IFRvIHByZXZlbnQgbmVzdGVkIG5ldGRldmljZSBub3RpZmllciBpbnZvY2F0aW9ucyB3aGlsZSBob2xkaW5nIHRoYXQgbG9jaywgd2hpY2ggY291bGQgbGVhZCB0byBkZWFkbG9ja3Mg4oCTIGEgY2xhc3NpYyByZWNpcGUgZm9yIHRyb3VibGUuCgpGcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgc3BlY2lhbGlzdCwgdGhlIGNvZGUgaXMgdmVyeSBlYXN5IHRvIHJlYWQuIGBMSVNUX0hFQUQobHN0X2tpbGwpO2AgaXMgaW5pdGlhbGl6ZWQgb24gbGluZSA3OTgsIGFuZCB0aGUgcGF0Y2ggc2ltcGx5IHNoaWZ0cyB0aGUgbG9jYXRpb24gb2YgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmFtcDtsc3Rfa2lsbCk7YC4gSW1wb3J0YW50bHksIGlmIGBsc3Rfa2lsbGAgcmVtYWlucyBlbXB0eSBmb3IgZXZlbnRzIG90aGVyIHRoYW4gYE5FVERFVl9VTlJFR0lTVEVSYCwgb3IgaWYgbm8gZGV2aWNlcyBhcmUgYWRkZWQsIHRoaXMgb3BlcmF0aW9uIGJlY29tZXMgYSBuby1vcCBkdWUgdG8gYGxpc3RfZW1wdHkoJmFtcDtsc3Rfa2lsbClgLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogZG9lcyB0aGlzIGludHJvZHVjZSBhbnkgbWVtb3J5IHNhZmV0eSBjb25jZXJucz8gTm8uCgoqICAgRG9lcyBpdCBpbnZvbHZlIGFueSB1c2VyLWtlcm5lbCBkYXRhIGNvcHlpbmc/IE5vLgoqICAgRG9lcyBpdCB0b3VjaCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vOyB0aGUgYGxzdF9raWxsYCBsaXN0IGlzIHByb3Blcmx5IGluaXRpYWxpemVkLgoqICAgRG9lcyBpdCBpbnRyb2R1Y2UgbmV3IGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uCiogICBEb2VzIGl0IG1vZGlmeSBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9uIG9yIGluaXRpYWxpemUgdW5pbml0aWFsaXplZCBmaWVsZHM/IE5vLgoqICAgRG9lcyBpdCB0b3VjaCBhbnkgYm91bmRzIGNoZWNrcyBvciBsZW5ndGggY2FsY3VsYXRpb25zPyBOby4KClRoZSBwYXRjaCAqZXhwbGljaXRseSogYWRkcmVzc2VzIGxvY2tpbmcgYW5kIGRlYWRsb2NrIGNvbmNlcm5zLiBNeSBleHBlcnQgb3BpbmlvbiBpcyB0aGF0IHRoaXMgaXMgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGEgY29uY3VycmVuY3kgZml4LCBkZXNpZ25lZCB0byBhdm9pZCBsb2NrIGludmVyc2lvbiBvciBkZWFkbG9jayBpc3N1ZXMsIGFzIGNvbmZpcm1lZCBieSBpbnNwZWN0aW5nIHRoZSBjb2RlLCBhbmQgaG93IHRoZSBjaGFuZ2VzIGZpdCBpbi4KClRoZSBsb2NraW5nIGlzc3VlcyBhcmUgbWFuYWdlZCBieSBMT0NLREVQLCBhbmQgbGlmZWN5Y2xlL21lbW9yeSBzYWZldHkgYXNwZWN0cyBhcmUgbWFuYWdlZCBieSBLQVNBTi4gVGhpcyBjaGFuZ2UgaXMgZW50aXJlbHkgZm9jdXNlZCBvbiBzeW5jaHJvbml6YXRpb24gYW5kIGRvZXNuJiMzOTt0IHRvdWNoIG1lbW9yeSBzYWZldHkgaW4gYW55IHdheS4KClNvLCB0byBzdW1tYXJpemUgc3VjY2luY3RseTogVGhpcyBwYXRjaCBpcyBhIGxvY2tpbmcvY29uY3VycmVuY3kgcmVmYWN0b3IgdG8gYXZvaWQgbG9jayByZWN1cnNpb24sIGFuZCB0aHVzIGlzIGEgY2FzZSB3aGVyZSBgTmVlZHNLTVNBTmAgaXMgZmFsc2UsIGFzIEtBU0FOIGlzIGZvciBsaWZlY3ljbGUgcHJvYmxlbXMsIHdoaWxlIExPQ0tERVAgaXMgZm9yIGxvY2sgcHJvYmxlbXMsIHdoaWNoIGlzIHRoZSBjcnV4IG9mIHRoZSBjdXJyZW50IHBhdGNoLiBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGlzIGlzIHRoZSBjb25jbHVzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKSBvdXRzaWRlIG9mIHRoZSBwb3J0LVx1MDAzZXBub2Rlc19sb2NrIGNyaXRpY2FsIHNlY3Rpb24gaW4gaXB2bGFuX2RldmljZV9ldmVudCgpIHRvIHByZXZlbnQgY2FsbGluZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB3aGlsZSBob2xkaW5nIHRoZSBtdXRleC5cblxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFkanVzdG1lbnQgYWltZWQgYXQgcHJldmVudGluZyBkZWFkbG9ja3MgLyBsb2NrZGVwIHdhcm5pbmdzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCB1c2VyLXNwYWNlIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMuIEFueSBwb3RlbnRpYWwgY29uY3VycmVuY3kgb3IgbGlmZWN5Y2xlIGlzc3VlcyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXHUwMDI2bHN0X2tpbGwpIG91dHNpZGUgb2YgdGhlIHBvcnQtXHUwMDNlcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiBpbiBpcHZsYW5fZGV2aWNlX2V2ZW50KCkgdG8gcHJldmVudCBjYWxsaW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHdoaWxlIGhvbGRpbmcgdGhlIG11dGV4LlxuXG5UaGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gYWRqdXN0bWVudCBhaW1lZCBhdCBwcmV2ZW50aW5nIGRlYWRsb2NrcyAvIGxvY2tkZXAgd2FybmluZ3MuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIHVzZXItc3BhY2UgY29waWVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocy4gQW55IHBvdGVudGlhbCBjb25jdXJyZW5jeSBvciBsaWZlY3ljbGUgaXNzdWVzIGFyZSBjb3ZlcmVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMDozMi4yODAyOTM3NTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODQwODIwNDA1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWTEFOXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXB2bGFuX2RldmljZV9ldmVudFwiLFxuICAgIFwiX19pcHZsYW5fbGlua19kZWxldGVcIixcbiAgICBcImlwdmxhbl9saW5rX25ld1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcXHUwMDI2bHN0X2tpbGwpIG91dHNpZGUgb2YgdGhlIHBvcnQtXFx1MDAzZXBub2Rlc19sb2NrIGNyaXRpY2FsIHNlY3Rpb24gaW4gaXB2bGFuX2RldmljZV9ldmVudCgpIHRvIHByZXZlbnQgY2FsbGluZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB3aGlsZSBob2xkaW5nIHRoZSBtdXRleC5cXG5cXG5UaGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gYWRqdXN0bWVudCBhaW1lZCBhdCBwcmV2ZW50aW5nIGRlYWRsb2NrcyAvIGxvY2tkZXAgd2FybmluZ3MuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIHVzZXItc3BhY2UgY29waWVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocy4gQW55IHBvdGVudGlhbCBjb25jdXJyZW5jeSBvciBsaWZlY3ljbGUgaXNzdWVzIGFyZSBjb3ZlcmVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUFZMQU4gZGV2aWNlIGV2ZW50IG5vdGlmaWNhdGlvbiBoYW5kbGVyIChpcHZsYW5fZGV2aWNlX2V2ZW50KSBkdXJpbmcgTkVUREVWX1VOUkVHSVNURVIgYnkgbW92aW5nIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoKSBvdXRzaWRlIG9mIHRoZSBwb3J0IHBub2Rlc19sb2NrIGNyaXRpY2FsIHNlY3Rpb24gdG8gcHJldmVudCBuZXN0ZWQgbm90aWZpZXIgaW52b2NhdGlvbnMgdW5kZXIgdGhlIGxvY2suIFRoaXMgYWZmZWN0cyBjb25jdXJyZW5jeSwgbG9ja2luZywgYW5kIGRldmljZSB0ZWFyZG93biBsb2dpYyBpbiB0aGUgdmlydHVhbCBJUFZMQU4gZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIG5ldGxpbmsgY29tbWFuZHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAwOjMyLjI4MDI5OTkxNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0OTA4Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjIwMmIzYmRiMjUyZmFkZmY4ZDc3YzU0NGQzOWRjNjFiOWQyNzVkNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyOCAxODowMDozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXFxuaW5kZXggZWU0NmE1NWY3M2QxNC4uMmQ0MzQwNjI3Y2E2NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXFxuQEAgLTg0Niw3ICs4NDYsNiBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuIFxcdFxcdFxcdFxcdF9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLVxcdTAwM2VkZXYsIFxcdTAwMjZsc3Rfa2lsbCk7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXFx1MDAyNmxzdF9raWxsKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XFxuQEAgLTg5NSw2ICs4OTQsOSBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuIFxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnBvcnQtXFx1MDAzZXBub2Rlc19sb2NrKTtcXG4gXFxuK1xcdC8qIEF2b2lkIGludm9raW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHVuZGVyIHBub2Rlc19sb2NrLiAqL1xcbitcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFxcdTAwMjZsc3Rfa2lsbCk7XFxuK1xcbiBcXHRpcHZsYW5fcG9ydF9wdXQocG9ydCk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMDozMi43NjYxNjU0ODlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE0OTQxNDY1NDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFZMQU5cIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHZsYW5fZGV2aWNlX2V2ZW50XCIsXG4gICAgXCJfX2lwdmxhbl9saW5rX2RlbGV0ZVwiLFxuICAgIFwiaXB2bGFuX2xpbmtfbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjIwMmIzYmRiMjUyZmFkZmY4ZDc3YzU0NGQzOWRjNjFiOWQyNzVkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDI4IDE4OjAwOjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMgYi9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xuaW5kZXggZWU0NmE1NWY3M2QxNC4uMmQ0MzQwNjI3Y2E2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xuQEAgLTg0Niw3ICs4NDYsNiBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG4gXHRcdFx0XHRfX2lwdmxhbl9saW5rX2RlbGV0ZShuZXQsIGlwdmxhbi1cdTAwM2VkZXYsIFx1MDAyNmxzdF9raWxsKTtcbiBcdFx0fVxuIFxuLVx0XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRjYXNlIE5FVERFVl9GRUFUX0NIQU5HRTpcbkBAIC04OTUsNiArODk0LDkgQEAgc3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuIFxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBvcnQtXHUwMDNlcG5vZGVzX2xvY2spO1xuIFxuK1x0LyogQXZvaWQgaW52b2tpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgdW5kZXIgcG5vZGVzX2xvY2suICovXG4rXHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKTtcbitcbiBcdGlwdmxhbl9wb3J0X3B1dChwb3J0KTtcbiBcbiBcdHJldHVybiByZXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMDozMi43NjYxNjc5NjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MDQ0NjI3Mjk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvZGUgTW9kaWZpY2F0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQncyBjaGFuZ2VkLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGluc3BlY3QgdGhlIGRpZmY7IHRoYXQgc2hvdWxkIHByb3ZpZGUgYSBjbGVhciBwaWN0dXJlLiBUaGUgcGF0Y2ggdG91Y2hlcyBgaXB2bGFuX21haW4uY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvaXB2bGFuYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGZ1bmN0aW9uLlxuXG5UbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLCBJJ2xsIHVzZSBgcmVhZC1maWxlYCB0byB6ZXJvIGluIG9uIGxpbmVzIDg0Ni05MDAgb2YgYGlwdmxhbl9tYWluLmNgLiBUaGlzIHJlZ2lvbiBpcyBsaWtlbHkgd2hlcmUgdGhlIG1vZGlmaWNhdGlvbiBpcyBoYXBwZW5pbmcgb3IgaW50ZXJhY3Rpbmcgd2l0aC4gVW5kZXJzdGFuZGluZyB0aGUgc3Vycm91bmRpbmcgY29kZSB3aWxsIGJlIGNyaXRpY2FsIGluIGdyYXNwaW5nIHRoZSBpbnRlbnQgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhlIHBhdGNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVlbiBjaGFuZ2VkLCB3aHkgaXQgd2FzIGNoYW5nZWQsIGFuZCB3aGF0IGl0IGVmZmVjdHMgaW4gdGhlIGxhcmdlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAxOjIzLjIxMjQ0NjM1M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MjAsXG4gIFwiTGluZUNvdW50XCI6IDkwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4MjA6XFx0XFx0XFx0c3RydWN0IG5ldCAqb2xkbmV0LCAqbmV3bmV0ID0gZGV2X25ldChkZXYpO1xcbiA4MjE6XFx0XFxuIDgyMjpcXHRcXHRcXHRvbGRuZXQgPSByZWFkX3BuZXQoXFx1MDAyNnBvcnQtXFx1MDAzZXBuZXQpO1xcbiA4MjM6XFx0XFx0XFx0aWYgKG5ldF9lcShuZXduZXQsIG9sZG5ldCkpXFxuIDgyNDpcXHRcXHRcXHRcXHRicmVhaztcXG4gODI1OlxcdFxcbiA4MjY6XFx0XFx0XFx0d3JpdGVfcG5ldChcXHUwMDI2cG9ydC1cXHUwMDNlcG5ldCwgbmV3bmV0KTtcXG4gODI3OlxcdFxcbiA4Mjg6XFx0XFx0XFx0aWYgKHBvcnQtXFx1MDAzZW1vZGUgPT0gSVBWTEFOX01PREVfTDNTKVxcbiA4Mjk6XFx0XFx0XFx0XFx0aXB2bGFuX21pZ3JhdGVfbDNzX2hvb2sob2xkbmV0LCBuZXduZXQpO1xcbiA4MzA6XFx0XFx0XFx0YnJlYWs7XFxuIDgzMTpcXHRcXHR9XFxuIDgzMjpcXHRcXHRjYXNlIE5FVERFVl9VTlJFR0lTVEVSOiB7XFxuIDgzMzpcXHRcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KGRldik7XFxuIDgzNDpcXHRcXG4gODM1OlxcdFxcdFxcdGlmIChkZXYtXFx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfVU5SRUdJU1RFUklORylcXG4gODM2OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA4Mzc6XFx0XFxuIDgzODpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXB2bGFuLCBuZXh0LCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcXG4gODM5OlxcdFxcdFxcdFxcdGlwdmxhbi1cXHUwMDNlZHlpbmcgPSB0cnVlO1xcbiA4NDA6XFx0XFxuIDg0MTpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWVEFQKVxcbiA4NDI6XFx0XFx0XFx0XFx0aWYgKGlwdmxhbi1cXHUwMDNlZGV2LVxcdTAwM2VydG5sX2xpbmtfb3BzICE9IFxcdTAwMjZpcHZsYW5fbGlua19vcHMpXFxuIDg0MzpcXHRcXHRcXHRcXHRcXHRfX2lwdnRhcF9kZWxsaW5rX3B0cihuZXQsIGlwdmxhbi1cXHUwMDNlZGV2LCBcXHUwMDI2bHN0X2tpbGwpO1xcbiA4NDQ6XFx0XFx0XFx0XFx0ZWxzZVxcbiA4NDU6XFx0I2VuZGlmXFxuIDg0NjpcXHRcXHRcXHRcXHRcXHRfX2lwdmxhbl9saW5rX2RlbGV0ZShuZXQsIGlwdmxhbi1cXHUwMDNlZGV2LCBcXHUwMDI2bHN0X2tpbGwpO1xcbiA4NDc6XFx0XFx0XFx0fVxcbiA4NDg6XFx0XFxuIDg0OTpcXHRcXHRcXHRicmVhaztcXG4gODUwOlxcdFxcdH1cXG4gODUxOlxcdFxcdGNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOlxcbiA4NTI6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFxcdTAwMjZwb3J0LVxcdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xcbiA4NTM6XFx0XFx0XFx0XFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGlwdmxhbi1cXHUwMDNlZGV2LCBkZXYpO1xcbiA4NTQ6XFx0XFx0XFx0XFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhpcHZsYW4tXFx1MDAzZWRldik7XFxuIDg1NTpcXHRcXHRcXHR9XFxuIDg1NjpcXHRcXHRcXHRicmVhaztcXG4gODU3OlxcdFxcbiA4NTg6XFx0XFx0Y2FzZSBORVRERVZfQ0hBTkdFTVRVOlxcbiA4NTk6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFxcdTAwMjZwb3J0LVxcdTAwM2VpcHZsYW5zLCBwbm9kZSlcXG4gODYwOlxcdFxcdFxcdFxcdGlwdmxhbl9hZGp1c3RfbXR1KGlwdmxhbiwgZGV2KTtcXG4gODYxOlxcdFxcdFxcdGJyZWFrO1xcbiA4NjI6XFx0XFxuIDg2MzpcXHRcXHRjYXNlIE5FVERFVl9QUkVfQ0hBTkdFQUREUjpcXG4gODY0OlxcdFxcdFxcdHByZWNoYWRkcl9pbmZvID0gcHRyO1xcbiA4NjU6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFxcdTAwMjZwb3J0LVxcdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xcbiA4NjY6XFx0XFx0XFx0XFx0ZXJyID0gbmV0aWZfcHJlX2NoYW5nZWFkZHJfbm90aWZ5KGlwdmxhbi1cXHUwMDNlZGV2LFxcbiA4Njc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBwcmVjaGFkZHJfaW5mby1cXHUwMDNlZGV2X2FkZHIsXFxuIDg2ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGV4dGFjayk7XFxuIDg2OTpcXHRcXHRcXHRcXHRpZiAoZXJyKSB7XFxuIDg3MDpcXHRcXHRcXHRcXHRcXHRyZXQgPSBub3RpZmllcl9mcm9tX2Vycm5vKGVycik7XFxuIDg3MTpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gODcyOlxcdFxcdFxcdFxcdH1cXG4gODczOlxcdFxcdFxcdH1cXG4gODc0OlxcdFxcdFxcdGJyZWFrO1xcbiA4NzU6XFx0XFxuIDg3NjpcXHRcXHRjYXNlIE5FVERFVl9DSEFOR0VBRERSOlxcbiA4Nzc6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFxcdTAwMjZwb3J0LVxcdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xcbiA4Nzg6XFx0XFx0XFx0XFx0ZXRoX2h3X2FkZHJfc2V0KGlwdmxhbi1cXHUwMDNlZGV2LCBkZXYtXFx1MDAzZWRldl9hZGRyKTtcXG4gODc5OlxcdFxcdFxcdFxcdGNhbGxfbmV0ZGV2aWNlX25vdGlmaWVycyhORVRERVZfQ0hBTkdFQUREUiwgaXB2bGFuLVxcdTAwM2VkZXYpO1xcbiA4ODA6XFx0XFx0XFx0fVxcbiA4ODE6XFx0XFx0XFx0YnJlYWs7XFxuIDg4MjpcXHRcXG4gODgzOlxcdFxcdGNhc2UgTkVUREVWX1BSRV9UWVBFX0NIQU5HRTpcXG4gODg0OlxcdFxcdFxcdC8qIEZvcmJpZCB1bmRlcmx5aW5nIGRldmljZSB0byBjaGFuZ2UgaXRzIHR5cGUuICovXFxuIDg4NTpcXHRcXHRcXHRyZXQgPSBOT1RJRllfQkFEO1xcbiA4ODY6XFx0XFx0XFx0YnJlYWs7XFxuIDg4NzpcXHRcXG4gODg4OlxcdFxcdGNhc2UgTkVUREVWX05PVElGWV9QRUVSUzpcXG4gODg5OlxcdFxcdGNhc2UgTkVUREVWX0JPTkRJTkdfRkFJTE9WRVI6XFxuIDg5MDpcXHRcXHRjYXNlIE5FVERFVl9SRVNFTkRfSUdNUDpcXG4gODkxOlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpXFxuIDg5MjpcXHRcXHRcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoZXZlbnQsIGlwdmxhbi1cXHUwMDNlZGV2KTtcXG4gODkzOlxcdFxcdH1cXG4gODk0OlxcdFxcbiA4OTU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwb3J0LVxcdTAwM2Vwbm9kZXNfbG9jayk7XFxuIDg5NjpcXHRcXG4gODk3OlxcdFxcdC8qIEF2b2lkIGludm9raW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHVuZGVyIHBub2Rlc19sb2NrLiAqL1xcbiA4OTg6XFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcXHUwMDI2bHN0X2tpbGwpO1xcbiA4OTk6XFx0XFxuIDkwMDpcXHRcXHRpcHZsYW5fcG9ydF9wdXQocG9ydCk7XFxuIDkwMTpcXHRcXG4gOTAyOlxcdFxcdHJldHVybiByZXQ7XFxuIDkwMzpcXHR9XFxuIDkwNDpcXHRcXG4gOTA1OlxcdC8qIHRoZSBjYWxsZXIgbXVzdCBoZWxkIHRoZSBhZGRycyBsb2NrICovXFxuIDkwNjpcXHRzdGF0aWMgaW50IGlwdmxhbl9hZGRfYWRkcihzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpXFxuIDkwNzpcXHR7XFxuIDkwODpcXHRcXHRzdHJ1Y3QgaXB2bF9hZGRyICphZGRyO1xcbiA5MDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAxOjIzLjIxMjYwMDQzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzMDAwMDQwNjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgdGhlIElQdmxhbiBEZXZpY2UgRXZlbnQgYW5kIEtpbGwgU2lnbmFsKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxpZmVjeWNsZSBvZiB0aGlzIGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBhbmQgaG93IGl0J3MgbGlua2VkIHRvIGBsc3Rfa2lsbGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCB0cmFjZSB0aGUgb3JpZ2luLiBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGlzIGZpcnN0IGRlY2xhcmVkIG9yIGluaXRpYWxpemVkLiBJJ20gbG9va2luZyBmb3IgdGhlIGRlZmluaW5nIG1vbWVudCwgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGVuLCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgYGxzdF9raWxsYCB2YXJpYWJsZSBpcyBoYW5kbGVkOyB3YXMgaXQgZGVmaW5lZCBzdGF0aWNhbGx5LCBwYXNzZWQgZnJvbSBlbHNld2hlcmUsIG9yIGR5bmFtaWNhbGx5IGFsbG9jYXRlZD8gSeKAmW0gaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGl04oCZcyBhIHN0YW5kYXJkIHNpZ25hbCwgYW4gaW50ZXJuYWwgdmFyaWFibGUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5LiBUaGUgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCBhIGNsZWFyIGNvbnRyb2wgZmxvdzogaG93IGRvZXMgdGhpcyBldmVudCB0cmlnZ2VyLCBhbmQgaG93IGRvZXMgYGxzdF9raWxsYCBjb21lIGludG8gcGxheSBpbiB0aGF0IHByb2Nlc3M/IFRoaXMgc2hvdWxkIGNsYXJpZnkgdGhlIG92ZXJhbGwgbWVjaGFuaXNtIGludm9sdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODIzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMTozNi4yMTI2NDM3MDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzgwOlxcdFxcdG9wcy1cXHUwMDNlcG9saWN5XFx0PSBpcHZsYW5fbmxfcG9saWN5O1xcbiA3ODE6XFx0XFx0b3BzLVxcdTAwM2V2YWxpZGF0ZVxcdD0gaXB2bGFuX25sX3ZhbGlkYXRlO1xcbiA3ODI6XFx0XFx0b3BzLVxcdTAwM2VmaWxsX2luZm9cXHQ9IGlwdmxhbl9ubF9maWxsaW5mbztcXG4gNzgzOlxcdFxcdG9wcy1cXHUwMDNlY2hhbmdlbGluayA9IGlwdmxhbl9ubF9jaGFuZ2VsaW5rO1xcbiA3ODQ6XFx0XFx0b3BzLVxcdTAwM2VtYXh0eXBlXFx0PSBJRkxBX0lQVkxBTl9NQVg7XFxuIDc4NTpcXHRcXHRyZXR1cm4gcnRubF9saW5rX3JlZ2lzdGVyKG9wcyk7XFxuIDc4NjpcXHR9XFxuIDc4NzpcXHRFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19yZWdpc3Rlcik7XFxuIDc4ODpcXHRcXG4gNzg5OlxcdHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG4gNzkwOlxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuIDc5MTpcXHR7XFxuIDc5MjpcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2sgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19leHRhY2socHRyKTtcXG4gNzkzOlxcdFxcdHN0cnVjdCBuZXRkZXZfbm90aWZpZXJfcHJlX2NoYW5nZWFkZHJfaW5mbyAqcHJlY2hhZGRyX2luZm87XFxuIDc5NDpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XFxuIDc5NTpcXHRcXHRzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgKm5leHQ7XFxuIDc5NjpcXHRcXHRpbnQgZXJyLCByZXQgPSBOT1RJRllfRE9ORTtcXG4gNzk3OlxcdFxcdHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQ7XFxuIDc5ODpcXHRcXHRMSVNUX0hFQUQobHN0X2tpbGwpO1xcbiA3OTk6XFx0XFxuIDgwMDpcXHRcXHRpZiAoZXZlbnQgPT0gTkVUREVWX1BSRUNIQU5HRVVQUEVSIHx8XFxuIDgwMTpcXHRcXHQgICAgZXZlbnQgPT0gTkVUREVWX0NIQU5HRVVQUEVSKVxcbiA4MDI6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODAzOlxcdFxcbiA4MDQ6XFx0XFx0cG9ydCA9IGlwdmxhbl9wb3J0X2dldChkZXYpO1xcbiA4MDU6XFx0XFx0aWYgKCFwb3J0KVxcbiA4MDY6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODA3OlxcdFxcbiA4MDg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cG9ydC1cXHUwMDNlcG5vZGVzX2xvY2spO1xcbiA4MDk6XFx0XFxuIDgxMDpcXHRcXHRzd2l0Y2ggKGV2ZW50KSB7XFxuIDgxMTpcXHRcXHRjYXNlIE5FVERFVl9VUDpcXG4gODEyOlxcdFxcdGNhc2UgTkVUREVWX0RPV046XFxuIDgxMzpcXHRcXHRjYXNlIE5FVERFVl9DSEFOR0U6XFxuIDgxNDpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGlwdmxhbiwgXFx1MDAyNnBvcnQtXFx1MDAzZWlwdmxhbnMsIHBub2RlKVxcbiA4MTU6XFx0XFx0XFx0XFx0bmV0aWZfc3RhY2tlZF90cmFuc2Zlcl9vcGVyc3RhdGUoaXB2bGFuLVxcdTAwM2VwaHlfZGV2LFxcbiA4MTY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IGlwdmxhbi1cXHUwMDNlZGV2KTtcXG4gODE3OlxcdFxcdFxcdGJyZWFrO1xcbiA4MTg6XFx0XFxuIDgxOTpcXHRcXHRjYXNlIE5FVERFVl9SRUdJU1RFUjoge1xcbiA4MjA6XFx0XFx0XFx0c3RydWN0IG5ldCAqb2xkbmV0LCAqbmV3bmV0ID0gZGV2X25ldChkZXYpO1xcbiA4MjE6XFx0XFxuIDgyMjpcXHRcXHRcXHRvbGRuZXQgPSByZWFkX3BuZXQoXFx1MDAyNnBvcnQtXFx1MDAzZXBuZXQpO1xcbiA4MjM6XFx0XFx0XFx0aWYgKG5ldF9lcShuZXduZXQsIG9sZG5ldCkpXFxuIDgyNDpcXHRcXHRcXHRcXHRicmVhaztcXG4gODI1OlxcdFxcbiA4MjY6XFx0XFx0XFx0d3JpdGVfcG5ldChcXHUwMDI2cG9ydC1cXHUwMDNlcG5ldCwgbmV3bmV0KTtcXG4gODI3OlxcdFxcbiA4Mjg6XFx0XFx0XFx0aWYgKHBvcnQtXFx1MDAzZW1vZGUgPT0gSVBWTEFOX01PREVfTDNTKVxcbiA4Mjk6XFx0XFx0XFx0XFx0aXB2bGFuX21pZ3JhdGVfbDNzX2hvb2sob2xkbmV0LCBuZXduZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMTozNi4yMTI3OTE1MDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjMxNzE2MzUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJUFZMQU4gRGV2aWNlIEV2ZW50IEhhbmRsaW5nIC0gQSBTYWZldHkgSW1wcm92ZW1lbnQqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGZ1bmN0aW9uLCBJIHNlZSB0aGUgYGxzdF9raWxsYCBsaXN0IGlzIGluaXRpYWxpemVkIHJpZ2h0IGF3YXkuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgbm90aGluZyB1bnVzdWFsIHRoZXJlLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyBob3cgaXQncyB1c2VkIHdpdGggYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlgLiBJIHJlbWVtYmVyIHRoaXMgZnVuY3Rpb24uXG5cblByZXZpb3VzbHksIHdoZW4gYSBuZXQgZGV2aWNlIHdhcyBiZWluZyB1bnJlZ2lzdGVyZWQgKE5FVERFVl9VTlJFR0lTVEVSIGNhc2UpLCBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcdTAwMjZsc3Rfa2lsbClgIHdhcyBjYWxsZWQgKmluc2lkZSogYSBgbXV0ZXhfbG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKWAgYmxvY2suIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWU7IG5lc3Rpbmcgbm90aWZpZXIgY2FsbHMgdW5kZXIgYSBsb2NrIGxpa2UgdGhhdCBjYW4gYmUgYSByZWNpcGUgZm9yIHRyb3VibGUg4oCTIGxvY2tkZXAgd2FybmluZ3Mgb3IgZXZlbiBkZWFkbG9ja3MuIFRoZSBjaGFuZ2UgYXBwZWFycyB0byBoYXZlIG1vdmVkIHRoZSB1bnJlZ2lzdGVyIGNhbGwgdG8gKmFmdGVyKiB0aGUgYG11dGV4X3VubG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKWAuIFNtYXJ0IG1vdmUhIFRoaXMgYXZvaWRzIHRoZSBuZXN0ZWQgbm90aWZpZXIgY2FsbHMsIHdoaWNoIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoIHRvIHByZXZlbnQgdGhvc2UgY29uY3VycmVuY3kgcHJvYmxlbXMuXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IElQVkxBTidzIGNvbmZpZ3VyYXRpb24uIEkgc2hvdWxkIGNoZWNrIHRoZSBLY29uZmlnIHNldHRpbmdzLiBJJ2xsIG5lZWQgdG8gbG9jYXRlIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgZm9yIHRoZSBJUFZMQU4gbW9kdWxlIGFuZCBjb25maXJtIHRoYXQgdGhlIGNvbmRpdGlvbnMgZm9yIElQVkxBTiBhcmUgcHJvcGVybHkgY29uZmlndXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAyOjAyLjUyOTk1NzgxNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjU2NjI3MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0xNzk9Y29uZmlnIE1BQ1ZUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTkyLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTkzOmNvbmZpZyBJUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xOTQtXFx0ZGVwZW5kcyBvbiBORVRGSUxURVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk4LVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk5OmNvbmZpZyBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMjowMi43OTU2MjQ4MTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzY0OTkyNDQ3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBuZXR3b3JrIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgaW4gdGhpcyBrZXJuZWwuIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L0tjb25maWdgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGxpbmVzIGFyb3VuZCAxOTAgdG8gMjIwLiBUaGF0J3MgdXN1YWxseSBhIGdvb2Qgc3BvdCB0byBmaW5kIHNvbWUgb2YgdGhlIGNvcmUsIHRvcC1sZXZlbCBzZXR0aW5ncyBvciBtYXliZSBhbiBpbXBvcnRhbnQgZ3JvdXBpbmcgb2YgcmVsYXRlZCBvcHRpb25zLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGJyb2FkIG5ldHdvcmtpbmcgZmVhdHVyZXMgb3IgcGVyaGFwcyBhIGtleSBkcml2ZXIgZmFtaWx5LiBUaGlzIHdpbGwgcHJvYmFibHkgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gem9vbSBpbnRvIGEgc3BlY2lmaWMgYXJlYSBsYXRlci4gS25vd2luZyB0aGUgYnJvYWRlciBzdHJ1Y3R1cmUgd2lsbCBzYXZlIG1lIGEgdG9uIG9mIHRpbWUsIEkgaG9wZS4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDY0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDI6MjAuNDQ1NTUyODUzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTkxOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbWFjdnRhcC5cXG4gMTkyOlxcdFxcbiAxOTM6XFx0Y29uZmlnIElQVkxBTl9MM1NcXG4gMTk0OlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSXFxuIDE5NTpcXHRcXHRkZXBlbmRzIG9uIElQVkxBTlxcbiAxOTY6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAxOTc6XFx0XFx0c2VsZWN0IE5FVF9MM19NQVNURVJfREVWXFxuIDE5ODpcXHRcXG4gMTk5OlxcdGNvbmZpZyBJUFZMQU5cXG4gMjAwOlxcdFxcdHRyaXN0YXRlIFxcXCJJUC1WTEFOIHN1cHBvcnRcXFwiXFxuIDIwMTpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gMjAyOlxcdFxcdGhlbHBcXG4gMjAzOlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2aXJ0dWFsIGRldmljZXMgb2ZmIG9mIGEgbWFpbiBpbnRlcmZhY2VcXG4gMjA0OlxcdFxcdCAgYW5kIHBhY2tldHMgd2lsbCBiZSBkZWxpdmVyZWQgYmFzZWQgb24gdGhlIGRlc3QgTDMgKElQdjYvSVB2NCBhZGRyKVxcbiAyMDU6XFx0XFx0ICBvbiBwYWNrZXRzLiBBbGwgaW50ZXJmYWNlcyAoaW5jbHVkaW5nIHRoZSBtYWluIGludGVyZmFjZSkgc2hhcmUgTDJcXG4gMjA2OlxcdFxcdCAgbWFraW5nIGl0IHRyYW5zcGFyZW50IHRvIHRoZSBjb25uZWN0ZWQgTDIgc3dpdGNoLlxcbiAyMDc6XFx0XFxuIDIwODpcXHRcXHQgIElwdmxhbiBkZXZpY2VzIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgXFxcImlwXFxcIiBjb21tYW5kIGZyb20gdGhlXFxuIDIwOTpcXHRcXHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMy4xOSByZWxlYXNlOlxcbiAyMTA6XFx0XFxuIDIxMTpcXHRcXHQgIFxcXCJpcCBsaW5rIGFkZCBsaW5rIFxcdTAwM2NtYWluLWRldlxcdTAwM2UgWyBOQU1FIF0gdHlwZSBpcHZsYW5cXFwiXFxuIDIxMjpcXHRcXG4gMjEzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyMTQ6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBpcHZsYW4uXFxuIDIxNTpcXHRcXG4gMjE2OlxcdGNvbmZpZyBJUFZUQVBcXG4gMjE3OlxcdFxcdHRyaXN0YXRlIFxcXCJJUC1WTEFOIGJhc2VkIHRhcCBkcml2ZXJcXFwiXFxuIDIxODpcXHRcXHRkZXBlbmRzIG9uIElQVkxBTlxcbiAyMTk6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDIyMDpcXHRcXHRzZWxlY3QgVEFQXFxuIDIyMTpcXHRcXHRoZWxwXFxuIDIyMjpcXHRcXHQgIFRoaXMgYWRkcyBhIHNwZWNpYWxpemVkIHRhcCBjaGFyYWN0ZXIgZGV2aWNlIGRyaXZlciB0aGF0IGlzIGJhc2VkXFxuIDIyMzpcXHRcXHQgIG9uIHRoZSBJUC1WTEFOIG5ldHdvcmsgaW50ZXJmYWNlLCBjYWxsZWQgaXB2dGFwLiBBbiBpcHZ0YXAgZGV2aWNlXFxuIDIyNDpcXHRcXHQgIGNhbiBiZSBhZGRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgYSBpcHZsYW4gZGV2aWNlLCB1c2luZyAndHlwZVxcbiAyMjU6XFx0XFx0ICBpcHZ0YXAnLCBhbmQgdGhlbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSB0YXAgdXNlciBzcGFjZSBpbnRlcmZhY2UuXFxuIDIyNjpcXHRcXG4gMjI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyMjg6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBpcHZ0YXAuXFxuIDIyOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDI6MjAuNDQ1Njc4NTMzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NDQ0ODgyNTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBJUHZsYW4gTWFrZWZpbGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIElQdmxhbiBkcml2ZXIgaXMgYnVpbHQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvaXB2bGFuL01ha2VmaWxlYC4gSSdtIGhvcGluZyBpdCdzIHdlbGwtc3RydWN0dXJlZCwgYXMgZ29vZCBNYWtlZmlsZSBvcmdhbml6YXRpb24gaXMgY3J1Y2lhbCBmb3IgYSBjbGVhbiBhbmQgbWFpbnRhaW5hYmxlIGJ1aWxkIHByb2Nlc3MuIEknbSBsb29raW5nIGZvciB0aGUgdXN1YWwgc3VzcGVjdHM6IG9iamVjdCBmaWxlIGxpc3RzLCBkZXBlbmRlbmNpZXMsIGluY2x1c2lvbiBvZiBvdGhlciBtYWtlZmlsZXMgb3IgY29uZmlndXJhdGlvbiBmcmFnbWVudHMsIGFuZCB0aGUgb3ZlcmFsbCBidWlsZCBzdHJhdGVneSBmb3IgdGhlIElQdmxhbiBtb2R1bGUuIFRoaXMgTWFrZWZpbGUgaXMgZ29pbmcgdG8gYmUgdGhlIGNlbnRyYWwgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgbG93LWxldmVsIGJ1aWxkIHByb2Nlc3Mgb2YgdGhlIElQdmxhbiBkcml2ZXIuIE15IGdvYWwgaXMgdG8gZ3Jhc3AgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgbGFyZ2VyIGtlcm5lbCBidWlsZCBhbmQgYW55IHBlY3VsaWFyIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbnMgb3IgZmxhZ3MgaXQgbWlnaHQgbGV2ZXJhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMDEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAyOjM2Ljg5MDU2NDQ1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBFdGhlcm5ldCBJcHZsYW4gZHJpdmVyXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19JUFZMQU4pICs9IGlwdmxhbi5vXFxuICAgNzpcXHRvYmotJChDT05GSUdfSVBWVEFQKSArPSBpcHZ0YXAub1xcbiAgIDg6XFx0XFxuICAgOTpcXHRpcHZsYW4tb2Jqcy0kKENPTkZJR19JUFZMQU5fTDNTKSArPSBpcHZsYW5fbDNzLm9cXG4gIDEwOlxcdGlwdmxhbi1vYmpzIDo9IGlwdmxhbl9jb3JlLm8gaXB2bGFuX21haW4ubyAkKGlwdmxhbi1vYmpzLXkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAyOjM2Ljg5MDYyNDA2OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDk0Njg4MzMzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgSVBWTEFOYCBDb25maWd1cmF0aW9uIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gTG9va3MgbGlrZSBgSVBWTEFOYCBhbmQgYElORVRgIGFyZSBlc3NlbnRpYWwsIGFuZCBwb3NzaWJseSBgSVBWVEFQYCBvciBgSVBWTEFOX0wzU2AgZGVwZW5kaW5nIG9uIHRoZSB1c2UgY2FzZS4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIGRvZXMgdGhpcyBhcHBseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRT8gR29vZCBuZXdzLCBpdCdzIGEgc29mdHdhcmUgbmV0ZGV2aWNlIGRyaXZlciwgc28geWVhaCwgaXQncyBkZWZpbml0ZWx5IGFwcGxpY2FibGUuIEkgY2FuIGNyZWF0ZSBpdCB1c2luZyBydG5sIG9yIG5ldGxpbmsgbWVzc2FnZXMg4oCTIHRoYXQncyBhIGtleSBhZHZhbnRhZ2UgZm9yIGZ1enppbmcuXG5cbk5vdywgaXMgdGhpcyBhY3R1YWxseSAqd29ydGgqIGZ1enppbmc/IEFic29sdXRlbHkhIFRoZSBjb3JlIG9mIHRoaXMgaXMgdGhlIHdheSBpdCBoYW5kbGVzIGxvY2tpbmcgYW5kIHRoZSB1bnJlZ2lzdHJhdGlvbiBmbG93IGR1cmluZyBkZXZpY2UgZXZlbnRzLCBzcGVjaWZpY2FsbHkgYE5FVERFVl9VTlJFR0lTVEVSYCBhbmQgZGV2aWNlIHRlYXJkb3duLCBmb3IgaXB2bGFuIGRldmljZXMuIEl0J3MgbW92aW5nIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55YCBvdXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uIG9mIGBtdXRleF91bmxvY2soXHUwMDI2cG9ydC1cdTAwM2Vwbm9kZXNfbG9jaylgLiBUaGF0J3MgYSBodWdlIGZsYWcgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgZGlyZWN0bHkgaW1wYWN0aW5nIGxvY2tpbmcgaW52YXJpYW50cyBhbmQgY29uY3VycmVuY3kgaW4gdGhlIG5ldHdvcmsgc3RhY2sgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgYW5kIHdlIGtub3cgdGhpcyBpcyBhIGhpZ2hseSBzZW5zaXRpdmUgYXJlYS4gUmFjZSBjb25kaXRpb25zLCBVc2UtQWZ0ZXItRnJlZSwgYW5kIGRlYWRsb2NrcyBhcmUgYWxsIHZlcnkgbGlrZWx5IGhlcmUuXG5cbk5leHQgc3RlcDogbGV0J3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIGRldGVybWluZSB3aGljaCBmdW5jdGlvbnMgd2lsbCBiZSB0aGUgZm9jdXMgb2YgdGhlIGZ1enppbmcgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgRm9jdXNTeW1ib2xzYCAtIHNwZWNpZmljYWxseSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBvciBub3RhYmxlIGZ1bmN0aW9ucyBpbiBgaXB2bGFuX21haW4uY2AuIEkgbmVlZCB0byBzZWFyY2ggdGhlIGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY2AgZmlsZSBmb3IgYWxsIHRoZSByZWxldmFudCBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2OTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMjo0Ny44Mzc1MTAzOTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwOTc4NzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX10uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2lwdmxhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NjggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2lwdmxhbi9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19JUFZMQU4pICs9IGlwdmxhbi5vXFxuZHJpdmVycy9uZXQvaXB2bGFuL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0lQVlRBUCkgKz0gaXB2dGFwLm9cXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGUtOC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGU6OTppcHZsYW4tb2Jqcy0kKENPTkZJR19JUFZMQU5fTDNTKSArPSBpcHZsYW5fbDNzLm9cXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGU6MTA6aXB2bGFuLW9ianMgOj0gaXB2bGFuX2NvcmUubyBpcHZsYW5fbWFpbi5vICQoaXB2bGFuLW9ianMteSlcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaD0xMDY9c3RydWN0IGlwdmxfc2tiX2NiIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMTAtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjExMTpzdGF0aWMgaW5saW5lIHN0cnVjdCBpcHZsX3BvcnQgKmlwdmxhbl9wb3J0X2dldF9yY3UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTExMi17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTE1LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMTY6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXB2bF9wb3J0ICppcHZsYW5fcG9ydF9nZXRfcmN1X2JoKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEyMC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTIxOnN0YXRpYyBpbmxpbmUgc3RydWN0IGlwdmxfcG9ydCAqaXB2bGFuX3BvcnRfZ2V0X3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTI1LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMjY6c3RhdGljIGlubGluZSBib29sIGlwdmxhbl9pc19wcml2YXRlKGNvbnN0IHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEyNy17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTMwLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMzE6c3RhdGljIGlubGluZSB2b2lkIGlwdmxhbl9tYXJrX3ByaXZhdGUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMzUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjEzNjpzdGF0aWMgaW5saW5lIHZvaWQgaXB2bGFuX2NsZWFyX3ByaXZhdGUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNDAtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE0MTpzdGF0aWMgaW5saW5lIGJvb2wgaXB2bGFuX2lzX3ZlcGEoY29uc3Qgc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNDUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE0NjpzdGF0aWMgaW5saW5lIHZvaWQgaXB2bGFuX21hcmtfdmVwYShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE1MC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTUxOnN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fY2xlYXJfdmVwYShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE1NS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTU2OnZvaWQgaXB2bGFuX2luaXRfc2VjcmV0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNTc6dW5zaWduZWQgaW50IGlwdmxhbl9tYWNfaGFzaChjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTU4OnJ4X2hhbmRsZXJfcmVzdWx0X3QgaXB2bGFuX2hhbmRsZV9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNTk6dm9pZCBpcHZsYW5fcHJvY2Vzc19tdWx0aWNhc3Qoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTYwOmludCBpcHZsYW5fcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTYxOnZvaWQgaXB2bGFuX2h0X2FkZHJfYWRkKHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCBzdHJ1Y3QgaXB2bF9hZGRyICphZGRyKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTYyOnN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9maW5kX2FkZHIoY29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE2My1cXHRcXHRcXHRcXHQgICBjb25zdCB2b2lkICppYWRkciwgYm9vbCBpc192Nik7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2NDpib29sIGlwdmxhbl9hZGRyX2J1c3koc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNjU6dm9pZCBpcHZsYW5faHRfYWRkcl9kZWwoc3RydWN0IGlwdmxfYWRkciAqYWRkcik7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2NjpzdHJ1Y3QgaXB2bF9hZGRyICppcHZsYW5fYWRkcl9sb29rdXAoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgdm9pZCAqbHlyM2gsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE2Ny1cXHRcXHRcXHRcXHQgICAgIGludCBhZGRyX3R5cGUsIGJvb2wgdXNlX2Rlc3QpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNjg6dm9pZCAqaXB2bGFuX2dldF9MM19oZHIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICp0eXBlKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTY5OnZvaWQgaXB2bGFuX2NvdW50X3J4KGNvbnN0IHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNzAtXFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbGVuLCBib29sIHN1Y2Nlc3MsIGJvb2wgbWNhc3QpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNzE6aW50IGlwdmxhbl9saW5rX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNzItXFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3Mzp2b2lkIF9faXB2bGFuX2xpbmtfZGVsZXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTc0LVxcdFxcdFxcdCAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3NTp2b2lkIGlwdmxhbl9saW5rX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNzY6aW50IGlwdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNzctI2lmZGVmIENPTkZJR19JUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3ODppbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTc5OnZvaWQgaXB2bGFuX2wzc191bnJlZ2lzdGVyKHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxODA6dm9pZCBpcHZsYW5fbWlncmF0ZV9sM3NfaG9vayhzdHJ1Y3QgbmV0ICpvbGRuZXQsIHN0cnVjdCBuZXQgKm5ld25ldCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE4MTppbnQgaXB2bGFuX2wzc19pbml0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxODI6dm9pZCBpcHZsYW5fbDNzX2NsZWFudXAodm9pZCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE4My0jZWxzZVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxODQ6c3RhdGljIGlubGluZSBpbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xODUte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE4OC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTg5OnN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xOTItXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE5MzpzdGF0aWMgaW5saW5lIHZvaWQgaXB2bGFuX21pZ3JhdGVfbDNzX2hvb2soc3RydWN0IG5ldCAqb2xkbmV0LFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xOTQtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldCAqbmV3bmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE5Ny1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTk4OnN0YXRpYyBpbmxpbmUgaW50IGlwdmxhbl9sM3NfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xOTkte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTIwMi1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MjAzOnN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fbDNzX2NsZWFudXAodm9pZClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0yMDctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjIwODpzdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfaXB2bGFuX3BvcnQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMjA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0yMTMtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVlRBUClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MjE0OmV4dGVybiB2b2lkICgqX19pcHZ0YXBfZGVsbGlua19wdHIpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMjE1LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jPTEwPXN0YXRpYyB1MzIgaXB2bGFuX2poYXNoX3NlY3JldCBfX3JlYWRfbW9zdGx5O1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTExLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjEyOnZvaWQgaXB2bGFuX2luaXRfc2VjcmV0KHZvaWQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MTc6dm9pZCBpcHZsYW5fY291bnRfcngoY29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTgtXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBsZW4sIGJvb2wgc3VjY2VzcywgYm9vbCBtY2FzdClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTMzLX1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzozNDpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fY291bnRfcngpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTM1LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTM2LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjM3OnN0YXRpYyB1OCBpcHZsYW5fZ2V0X3Y2X2hhc2goY29uc3Qgdm9pZCAqaWFkZHIpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNDQtI2Vsc2VcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo0NTpzdGF0aWMgdTggaXB2bGFuX2dldF92Nl9oYXNoKGNvbnN0IHZvaWQgKmlhZGRyKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTUwLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjUxOnN0YXRpYyB1OCBpcHZsYW5fZ2V0X3Y0X2hhc2goX19iZTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NTc6c3RhdGljIGJvb2wgYWRkcl9lcXVhbChib29sIGlzX3Y2LCBzdHJ1Y3QgaXB2bF9hZGRyICphZGRyLCBjb25zdCB2b2lkICppYWRkcilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01OC17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03NC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3NTpzdGF0aWMgc3RydWN0IGlwdmxfYWRkciAqaXB2bGFuX2h0X2FkZHJfbG9va3VwNihjb25zdCBzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc2LVxcdFxcdFxcdFxcdFxcdFxcdGNvbnN0IHZvaWQgKmlhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtODgtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6ODk6c3RhdGljIHN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9odF9hZGRyX2xvb2t1cDQoY29uc3Qgc3RydWN0IGlwdmxfcG9ydCAqcG9ydCxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy05MC1cXHRcXHRcXHRcXHRcXHRcXHRfX2JlMzIgYWRkcjQpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMDEtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MTAyOnZvaWQgaXB2bGFuX2h0X2FkZHJfYWRkKHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCBzdHJ1Y3QgaXB2bF9hZGRyICphZGRyKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTEwMy17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMTMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MTE0OnZvaWQgaXB2bGFuX2h0X2FkZHJfZGVsKHN0cnVjdCBpcHZsX2FkZHIgKmFkZHIpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTExOC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMTk6c3RydWN0IGlwdmxfYWRkciAqaXB2bGFuX2ZpbmRfYWRkcihjb25zdCBzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMjAtXFx0XFx0XFx0XFx0ICAgY29uc3Qgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMzItXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MTMzOmJvb2wgaXB2bGFuX2FkZHJfYnVzeShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCB2b2lkICppYWRkciwgYm9vbCBpc192NilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjE0OTp2b2lkICppcHZsYW5fZ2V0X0wzX2hkcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnR5cGUpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTIyOS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoyMzA6dW5zaWduZWQgaW50IGlwdmxhbl9tYWNfaGFzaChjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTIzMS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0yMzctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MjM4OnZvaWQgaXB2bGFuX3Byb2Nlc3NfbXVsdGljYXN0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0yMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMzExLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjMxMjpzdGF0aWMgdm9pZCBpcHZsYW5fc2tiX2Nyb3NzaW5nX25zKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMzEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTMyMy1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzozMjQ6c3RhdGljIGludCBpcHZsYW5fcmN2X2ZyYW1lKHN0cnVjdCBpcHZsX2FkZHIgKmFkZHIsIHN0cnVjdCBza19idWZmICoqcHNrYixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zMjUtXFx0XFx0XFx0ICAgIGJvb2wgbG9jYWwpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zNjUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MzY2OnN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9hZGRyX2xvb2t1cChzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCB2b2lkICpseXIzaCxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zNjctXFx0XFx0XFx0XFx0ICAgICBpbnQgYWRkcl90eXBlLCBib29sIHVzZV9kZXN0KVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNDI3LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjQyODpzdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIGludCBpcHZsYW5fcHJvY2Vzc192NF9vdXRib3VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTQyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYz00NzY9c3RhdGljIG5vaW5saW5lX2Zvcl9zdGFjayBpbnRcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo0Nzc6aXB2bGFuX3JvdXRlX3Y2X291dGJvdW5kKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNDc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTUwMS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo1MDI6c3RhdGljIGludCBpcHZsYW5fcHJvY2Vzc192Nl9vdXRib3VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTUwMy17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MjktI2Vsc2VcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo1MzA6c3RhdGljIGludCBpcHZsYW5fcHJvY2Vzc192Nl9vdXRib3VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTUzMS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MzUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NTM2OnN0YXRpYyBpbnQgaXB2bGFuX3Byb2Nlc3Nfb3V0Ym91bmQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01Mzcte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTc0LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjU3NTpzdGF0aWMgdm9pZCBpcHZsYW5fbXVsdGljYXN0X2VucXVldWUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01NzYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sIHR4X3BrdClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTYwMi1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo2MDM6c3RhdGljIGludCBpcHZsYW5feG1pdF9tb2RlX2wzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTYyOS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo2MzA6c3RhdGljIGludCBpcHZsYW5feG1pdF9tb2RlX2wyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTY3NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo2NzU6aW50IGlwdmxhbl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTcwMi1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3MDM6c3RhdGljIGJvb2wgaXB2bGFuX2V4dGVybmFsX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNzA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTcyMi1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3MjM6c3RhdGljIHJ4X2hhbmRsZXJfcmVzdWx0X3QgaXB2bGFuX2hhbmRsZV9tb2RlX2wzKHN0cnVjdCBza19idWZmICoqcHNrYixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03MjQtXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03NDMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NzQ0OnN0YXRpYyByeF9oYW5kbGVyX3Jlc3VsdF90IGlwdmxhbl9oYW5kbGVfbW9kZV9sMihzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNzQ1LVxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNzgwLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjc4MTpyeF9oYW5kbGVyX3Jlc3VsdF90IGlwdmxhbl9oYW5kbGVfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKipwc2tiKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jPTExPXN0cnVjdCBpcHZsYW5fbmV0bnMge1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xNC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjE1OnN0YXRpYyBzdHJ1Y3QgaXB2bF9hZGRyICppcHZsYW5fc2tiX3RvX2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE2LVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0zOC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjM5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaXB2bGFuX2wzX3JjdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtNDAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcHJvdG8pXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jPTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbDNtZGV2X29wcyBpcHZsX2wzbWRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTk0LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6OTU6c3RhdGljIHVuc2lnbmVkIGludCBpcHZsYW5fbmZfaW5wdXQodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTk2LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jPTExNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwdmxfbmZvcHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MTM0OnN0YXRpYyBpbnQgaXB2bGFuX3JlZ2lzdGVyX25mX2hvb2soc3RydWN0IG5ldCAqbmV0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTUwLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MTUxOnN0YXRpYyB2b2lkIGlwdmxhbl91bnJlZ2lzdGVyX25mX2hvb2soc3RydWN0IG5ldCAqbmV0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTYzLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MTY0OnZvaWQgaXB2bGFuX21pZ3JhdGVfbDNzX2hvb2soc3RydWN0IG5ldCAqb2xkbmV0LCBzdHJ1Y3QgbmV0ICpuZXduZXQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xNzctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoxNzg6c3RhdGljIHZvaWQgaXB2bGFuX25zX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM9MTg5PXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgaXB2bGFuX25ldF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE5NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjE5NTppbnQgaXB2bGFuX2wzc19pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xOTYte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xOTktXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoyMDA6dm9pZCBpcHZsYW5fbDNzX2NsZWFudXAodm9pZClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIwNC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjIwNTppbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjIwLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjIxOnZvaWQgaXB2bGFuX2wzc191bnJlZ2lzdGVyKHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVlRBUClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMTp2b2lkICgqX19pcHZ0YXBfZGVsbGlua19wdHIpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMi1cXHRcXHRcXHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEzOkVYUE9SVF9TWU1CT0woX19pcHZ0YXBfZGVsbGlua19wdHIpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE0LSNlbmRpZlxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE1LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjE2OnN0YXRpYyBpbnQgaXB2bGFuX3NldF9wb3J0X21vZGUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgdTE2IG52YWwsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTctXFx0XFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzQ6c3RhdGljIGludCBpcHZsYW5fcG9ydF9jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDktXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTEwOnN0YXRpYyB2b2lkIGlwdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTI5LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEzMDpzdGF0aWMgdm9pZCBpcHZsYW5fcG9ydF9wdXQoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTM1LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEzNjpzdGF0aWMgc3RydWN0IGlwdmxfcG9ydCAqaXB2bGFuX3BvcnRfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE2OC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxNjk6c3RhdGljIGludCBpcHZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE3MC17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yMTUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MjE2OnN0YXRpYyB2b2lkIGlwdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMjMzLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjIzNDpzdGF0aWMgaW50IGlwdmxhbl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMjM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI1My1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoyNTQ6c3RhdGljIGludCBpcHZsYW5fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yNzAtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MjcxOnN0YXRpYyBuZXRkZXZfdHhfdCBpcHZsYW5fc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI3Mi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yOTMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Mjk0OnN0YXRpYyBuZXRkZXZfZmVhdHVyZXNfdCBpcHZsYW5fZml4X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMjk1LVxcdFxcdFxcdFxcdFxcdCAgICAgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zMDgtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MzA5OnN0YXRpYyB2b2lkIGlwdmxhbl9jaGFuZ2VfcnhfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGNoYW5nZSlcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzE3LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjMxODpzdGF0aWMgdm9pZCBpcHZsYW5fc2V0X211bHRpY2FzdF9tYWNfZmlsdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTM0NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozNDU6c3RhdGljIHZvaWQgaXB2bGFuX2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzQ2LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnMpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zODUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Mzg2OnN0YXRpYyBpbnQgaXB2bGFuX3ZsYW5fcnhfYWRkX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX2JlMTYgcHJvdG8sIHUxNiB2aWQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTM5My1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozOTQ6c3RhdGljIGludCBpcHZsYW5fdmxhbl9yeF9raWxsX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX2JlMTYgcHJvdG8sXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzk1LVxcdFxcdFxcdFxcdCAgIHUxNiB2aWQpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00MDMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDA0OnN0YXRpYyBpbnQgaXB2bGFuX2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9NDExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXB2bGFuX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00MjUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDI2OnN0YXRpYyBpbnQgaXB2bGFuX2hhcmRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDI3LVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUsIGNvbnN0IHZvaWQgKmRhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9NDQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGVhZGVyX29wcyBpcHZsYW5faGVhZGVyX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ0OC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0NDk6c3RhdGljIHZvaWQgaXB2bGFuX2FkanVzdF9tdHUoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ1My1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0NTQ6c3RhdGljIGJvb2wgbmV0aWZfaXNfaXB2bGFuKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ1OS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0NjA6c3RhdGljIGludCBpcHZsYW5fZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00NjEtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDY3LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjQ2ODpzdGF0aWMgdm9pZCBpcHZsYW5fZXRodG9vbF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ2OS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ3NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0NzU6c3RhdGljIHUzMiBpcHZsYW5fZXRodG9vbF9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00NzYte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDgxLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjQ4MjpzdGF0aWMgdm9pZCBpcHZsYW5fZXRodG9vbF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz00ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpcHZsYW5fZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00OTYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDk3OnN0YXRpYyBpbnQgaXB2bGFuX25sX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00OTgtXFx0XFx0XFx0XFx0c3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTMyLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjUzMzpzdGF0aWMgc2l6ZV90IGlwdmxhbl9ubF9nZXRzaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTU0MC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo1NDE6c3RhdGljIGludCBpcHZsYW5fbmxfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTU0Mi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01NjctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NTY4OnN0YXRpYyBpbnQgaXB2bGFuX25sX2ZpbGxpbmZvKHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTY5LVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01ODktXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NTkwOmludCBpcHZsYW5fbGlua19uZXcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01OTEtXFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTcwNi19XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzA3OkVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9saW5rX25ldyk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzA4LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjcwOTp2b2lkIF9faXB2bGFuX2xpbmtfZGVsZXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MTAtXFx0XFx0XFx0ICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzI3LX1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3Mjg6RVhQT1JUX1NZTUJPTChfX2lwdmxhbl9saW5rX2RlbGV0ZSk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzI5LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjczMDpzdGF0aWMgdm9pZCBpcHZsYW5fbGlua19kZWxldGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzM5LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjc0MDp2b2lkIGlwdmxhbl9saW5rX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc1MS19XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzUyOkVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9saW5rX3NldHVwKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NTMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9NzU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBpcHZsYW5fbmxfcG9saWN5W0lGTEFfSVBWTEFOX01BWCArIDFdID1cXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc1OS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3NjA6c3RhdGljIHN0cnVjdCBuZXQgKmlwdmxhbl9nZXRfbGlua19uZXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NjEte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9NzY3PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcHZsYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NzYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Nzc3OmludCBpcHZsYW5fbGlua19yZWdpc3RlcihzdHJ1Y3QgcnRubF9saW5rX29wcyAqb3BzKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03ODYtfVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjc4NzpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzg4LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjc4OTpzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzkwLVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05MDUtLyogdGhlIGNhbGxlciBtdXN0IGhlbGQgdGhlIGFkZHJzIGxvY2sgKi9cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo5MDY6c3RhdGljIGludCBpcHZsYW5fYWRkX2FkZHIoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHZvaWQgKmlhZGRyLCBib29sIGlzX3Y2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTkwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05MzctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6OTM4OnN0YXRpYyB2b2lkIGlwdmxhbl9kZWxfYWRkcihzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtOTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk1NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo5NTU6c3RhdGljIGJvb2wgaXB2bGFuX2lzX3ZhbGlkX2Rldihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05NjgtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6OTY5OnN0YXRpYyBpbnQgaXB2bGFuX2FkZF9hZGRyNihzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgc3RydWN0IGluNl9hZGRyICppcDZfYWRkcilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtOTgzLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjk4NDpzdGF0aWMgdm9pZCBpcHZsYW5fZGVsX2FkZHI2KHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCBzdHJ1Y3QgaW42X2FkZHIgKmlwNl9hZGRyKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05ODgtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6OTg5OnN0YXRpYyBpbnQgaXB2bGFuX2FkZHI2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk5MC1cXHRcXHRcXHQgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDEyLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwMTM6c3RhdGljIGludCBpcHZsYW5fYWRkcjZfdmFsaWRhdG9yX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwMTQtXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTAzOS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMDQwOnN0YXRpYyBpbnQgaXB2bGFuX2FkZF9hZGRyNChzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgc3RydWN0IGluX2FkZHIgKmlwNF9hZGRyKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNDEte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA1NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMDU1OnN0YXRpYyB2b2lkIGlwdmxhbl9kZWxfYWRkcjQoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpbl9hZGRyICppcDRfYWRkcilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNTktXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTA2MDpzdGF0aWMgaW50IGlwdmxhbl9hZGRyNF9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDYxLVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwODYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTA4NzpzdGF0aWMgaW50IGlwdmxhbl9hZGRyNF92YWxpZGF0b3JfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA4OC1cXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz0xMTMwPXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgaXB2bGFuX2FkZHI2X3Z0b3Jfbm90aWZpZXJfYmxvY2sgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExMzQtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTEzNTpzdGF0aWMgaW50IF9faW5pdCBpcHZsYW5faW5pdF9tb2R1bGUodm9pZClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMTM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExNzItXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTE3MzpzdGF0aWMgdm9pZCBfX2V4aXQgaXB2bGFuX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTE3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMTg3LVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMjo0Ny44OTg0OTM3MDhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQxNTcxNzI2NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVkxBTiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIHN5bWJvbHMgaW52b2x2ZWQuIFdlJ3JlIGxvb2tpbmcgYXQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgLCB3aGljaCBpcyB0aGUgbW9kaWZpZWQgZnVuY3Rpb24sIGFuZCB0aGUgYG5ldGRldmAgbm90aWZpZXIgY2FsbGJhY2suIFRoZW4gdGhlcmUncyBgX19pcHZsYW5fbGlua19kZWxldGVgIGFuZCBgaXB2bGFuX2xpbmtfbmV3YC5cblxuRmlyc3QsIEkgY29uZmlybWVkIHRoYXQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGlzIGluZGVlZCBzdGF0aWMsIGJlaW5nIHRoZSBub3RpZmllciBjYWxsYmFjayByZWdpc3RlcmVkIHdpdGggYHJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcmAuIE5leHQsIEkndmUgY29uZmlybWVkIHRoYXQgYGlwdmxhbl9saW5rX3JlZ2lzdGVyYCwgYGlwdmxhbl9saW5rX25ld2AsIGBfX2lwdmxhbl9saW5rX2RlbGV0ZWAsIGFuZCBgaXB2bGFuX2xpbmtfc2V0dXBgIGFyZSBub24tc3RhdGljIGFuZCBleHBvcnRlZCBzeW1ib2xzLiBUaGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGZ1bmN0aW9uIGhhcyBhIHN5bWJvbCBpZiBga2FsbHN5bXNgIGlzIHVzZWQuIEknbGwgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIGZvciBvdGhlciBleHBvcnRlZCBzeW1ib2xzIGluIHRoZSBgaXB2bGFuYCBtb2R1bGUsIGJ1dCBJJ3ZlIGFscmVhZHkgaWRlbnRpZmllZCB0aGUga2V5IHBsYXllcnM6IGBpcHZsYW5fZGV2aWNlX2V2ZW50YCwgYF9faXB2bGFuX2xpbmtfZGVsZXRlYCwgYW5kIGBpcHZsYW5fbGlua19uZXdgLlxuXG5Ob3csIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llczogYENPTkZJR19JUFZMQU5gIGRlcGVuZHMgb24gYENPTkZJR19JTkVUYCwgYW5kIGJ5IGV4dGVuc2lvbiB0aGUgdW5kZXJseWluZyBuZXQgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb25zLiBTbywgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGRlZmluaXRlbHkgYElQVkxBTmAgYW5kIGBJTkVUYC5cblxuRmluYWxseSwgdGhlIGNvbnRleHQgb2YgdGhlIHBhdGNoIGl0c2VsZi4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgaXB2bGFuX2RldmljZV9ldmVudGAgaGFuZGxlciBkdXJpbmcgbmV0ZGV2aWNlIHVucmVnaXN0cmF0aW9uIChgTkVUREVWX1VOUkVHSVNURVJgKS4gVGhlIHByaW1hcnkgY2hhbmdlIGlzIG1vdmluZyBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueWAgb3V0c2lkZSB0aGUgYHBub2Rlc19sb2NrYCBtdXRleC4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSBpbiBjb3JlIGRyaXZlciB0ZWFyZG93biBhbmQgY29uY3VycmVuY3kgbG9naWMsIGVzcGVjaWFsbHkgcmVsZXZhbnQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGR1ZSB0byB0aGUgdXNlIG9mIElQVkxBTiBuZXRsaW5rIGludGVyZmFjZXMuXG5cblRoZSBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgSSBjYW4gY29uZmlybSB0aGF0IGJ5IHRoZSBwcmVzZW5jZSBvZiByYWNlIGNvbmRpdGlvbnMgdGhhdCBhcmUgaW50cm9kdWNlZCBieSB1bnJlZ2lzdGVyaW5nIGRldmljZXMgZnJvbSBkaWZmZXJlbnQgdGhyZWFkcyBhbmQgdGhlIG1vZGlmaWVkIGNvbmN1cnJlbmN5IGxvZ2ljIGluIGEgY3J1Y2lhbCBwYXJ0IG9mIHRoZSBkcml2ZXIuXG5cbldpdGggdGhhdCwgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI1NSwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDM6MDIuMDU1NjcwNTQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MTQ2MzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFZMQU5cIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHZsYW5fZGV2aWNlX2V2ZW50XCIsXG4gICAgXCJfX2lwdmxhbl9saW5rX2RlbGV0ZVwiLFxuICAgIFwiaXB2bGFuX2xpbmtfbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFZMQU5cIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHZsYW5fZGV2aWNlX2V2ZW50XCIsXG4gICAgXCJfX2lwdmxhbl9saW5rX2RlbGV0ZVwiLFxuICAgIFwiaXB2bGFuX2xpbmtfbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDM6MDIuMTgwODIzN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0MTgxNDk2MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDM6MDIuMTgxMzYyMzdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMzQxODA5NTI1OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXFx1MDAyNmxzdF9raWxsKSBvdXRzaWRlIG9mIHRoZSBwb3J0LVxcdTAwM2Vwbm9kZXNfbG9jayBjcml0aWNhbCBzZWN0aW9uIGluIGlwdmxhbl9kZXZpY2VfZXZlbnQoKSB0byBwcmV2ZW50IGNhbGxpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgd2hpbGUgaG9sZGluZyB0aGUgbXV0ZXguXFxuXFxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFkanVzdG1lbnQgYWltZWQgYXQgcHJldmVudGluZyBkZWFkbG9ja3MgLyBsb2NrZGVwIHdhcm5pbmdzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCB1c2VyLXNwYWNlIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMuIEFueSBwb3RlbnRpYWwgY29uY3VycmVuY3kgb3IgbGlmZWN5Y2xlIGlzc3VlcyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MjAyYjNiZGIyNTJmYWRmZjhkNzdjNTQ0ZDM5ZGM2MWI5ZDI3NWQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjggMTg6MDA6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5pbmRleCBlZTQ2YTU1ZjczZDE0Li4yZDQzNDA2MjdjYTY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5AQCAtODQ2LDcgKzg0Niw2IEBAIHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbiBcdFx0XHRcdF9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLVx1MDAzZWRldiwgXHUwMDI2bHN0X2tpbGwpO1xuIFx0XHR9XG4gXG4tXHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXHUwMDI2bHN0X2tpbGwpO1xuIFx0XHRicmVhaztcbiBcdH1cbiBcdGNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOlxuQEAgLTg5NSw2ICs4OTQsOSBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG4gXG4gXHRtdXRleF91bmxvY2soXHUwMDI2cG9ydC1cdTAwM2Vwbm9kZXNfbG9jayk7XG4gXG4rXHQvKiBBdm9pZCBpbnZva2luZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB1bmRlciBwbm9kZXNfbG9jay4gKi9cbitcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXHUwMDI2bHN0X2tpbGwpO1xuK1xuIFx0aXB2bGFuX3BvcnRfcHV0KHBvcnQpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAzOjAyLjE4MTM2MzM4WiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE0MDgwMTM5MTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgUGF0Y2gqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIFRoZSB0YXNrIGlzIHRvIGFuYWx5emUgYSBwYXRjaCwgd2hpY2ggbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZSBpdHNlbGYsIGJ1dCBldmVuIG1vcmUgaW1wb3J0YW50bHksIHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIGl0LiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWx3YXlzIHN0YXJ0IGJ5IGdvaW5nIGJhY2sgdG8gdGhlIHNvdXJjZSBjb2RlIHRvIGNvbmZpcm0gbXkgaHlwb3RoZXNlcy5cblxuRmlyc3QsIEknbSBnb2luZyB0byBwdWxsIHVwIGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY2AsIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiB0aGUgcmVnaW9uIGFyb3VuZCBsaW5lcyA4NDYtOTAwLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nIGluIHRoYXQgcGFydGljdWxhciBzZWN0aW9uIG9mIGNvZGUuIFVzaW5nIGByZWFkLWZpbGVgIHdpbGwgYWxsb3cgbWUgdG8gcHJlY2lzZWx5IGV4YW1pbmUgdGhhdCBzZWN0aW9uLCB1bmRlcnN0YW5kaW5nIHdoYXQgdGhlIGNvcmUgZnVuY3Rpb24gaXMgZG9pbmcsIGFuZCB0aGUgdmFyaWFibGUgbWFuaXB1bGF0aW9ucy5cblxuVGhpcyBwcmVsaW1pbmFyeSByZXZpZXcgaXMgZXNzZW50aWFsIHRvIGdyb3VuZCBteSB1bmRlcnN0YW5kaW5nIGFuZCBlc3RhYmxpc2ggYSBiYXNlbGluZSBiZWZvcmUgZXhhbWluaW5nIHRoZSBwYXRjaCBtb3JlIGNsb3NlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAzOjE2LjI2MTUwNjI3NloiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODIwLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODIwOlxcdFxcdFxcdHN0cnVjdCBuZXQgKm9sZG5ldCwgKm5ld25ldCA9IGRldl9uZXQoZGV2KTtcXG4gODIxOlxcdFxcbiA4MjI6XFx0XFx0XFx0b2xkbmV0ID0gcmVhZF9wbmV0KFxcdTAwMjZwb3J0LVxcdTAwM2VwbmV0KTtcXG4gODIzOlxcdFxcdFxcdGlmIChuZXRfZXEobmV3bmV0LCBvbGRuZXQpKVxcbiA4MjQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDgyNTpcXHRcXG4gODI2OlxcdFxcdFxcdHdyaXRlX3BuZXQoXFx1MDAyNnBvcnQtXFx1MDAzZXBuZXQsIG5ld25ldCk7XFxuIDgyNzpcXHRcXG4gODI4OlxcdFxcdFxcdGlmIChwb3J0LVxcdTAwM2Vtb2RlID09IElQVkxBTl9NT0RFX0wzUylcXG4gODI5OlxcdFxcdFxcdFxcdGlwdmxhbl9taWdyYXRlX2wzc19ob29rKG9sZG5ldCwgbmV3bmV0KTtcXG4gODMwOlxcdFxcdFxcdGJyZWFrO1xcbiA4MzE6XFx0XFx0fVxcbiA4MzI6XFx0XFx0Y2FzZSBORVRERVZfVU5SRUdJU1RFUjoge1xcbiA4MzM6XFx0XFx0XFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChkZXYpO1xcbiA4MzQ6XFx0XFxuIDgzNTpcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1VOUkVHSVNURVJJTkcpXFxuIDgzNjpcXHRcXHRcXHRcXHRicmVhaztcXG4gODM3OlxcdFxcbiA4Mzg6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGlwdmxhbiwgbmV4dCwgXFx1MDAyNnBvcnQtXFx1MDAzZWlwdmxhbnMsIHBub2RlKSB7XFxuIDgzOTpcXHRcXHRcXHRcXHRpcHZsYW4tXFx1MDAzZWR5aW5nID0gdHJ1ZTtcXG4gODQwOlxcdFxcbiA4NDE6XFx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVlRBUClcXG4gODQyOlxcdFxcdFxcdFxcdGlmIChpcHZsYW4tXFx1MDAzZWRldi1cXHUwMDNlcnRubF9saW5rX29wcyAhPSBcXHUwMDI2aXB2bGFuX2xpbmtfb3BzKVxcbiA4NDM6XFx0XFx0XFx0XFx0XFx0X19pcHZ0YXBfZGVsbGlua19wdHIobmV0LCBpcHZsYW4tXFx1MDAzZWRldiwgXFx1MDAyNmxzdF9raWxsKTtcXG4gODQ0OlxcdFxcdFxcdFxcdGVsc2VcXG4gODQ1OlxcdCNlbmRpZlxcbiA4NDY6XFx0XFx0XFx0XFx0XFx0X19pcHZsYW5fbGlua19kZWxldGUobmV0LCBpcHZsYW4tXFx1MDAzZWRldiwgXFx1MDAyNmxzdF9raWxsKTtcXG4gODQ3OlxcdFxcdFxcdH1cXG4gODQ4OlxcdFxcbiA4NDk6XFx0XFx0XFx0YnJlYWs7XFxuIDg1MDpcXHRcXHR9XFxuIDg1MTpcXHRcXHRjYXNlIE5FVERFVl9GRUFUX0NIQU5HRTpcXG4gODUyOlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcXG4gODUzOlxcdFxcdFxcdFxcdG5ldGlmX2luaGVyaXRfdHNvX21heChpcHZsYW4tXFx1MDAzZWRldiwgZGV2KTtcXG4gODU0OlxcdFxcdFxcdFxcdG5ldGRldl91cGRhdGVfZmVhdHVyZXMoaXB2bGFuLVxcdTAwM2VkZXYpO1xcbiA4NTU6XFx0XFx0XFx0fVxcbiA4NTY6XFx0XFx0XFx0YnJlYWs7XFxuIDg1NzpcXHRcXG4gODU4OlxcdFxcdGNhc2UgTkVUREVWX0NIQU5HRU1UVTpcXG4gODU5OlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpXFxuIDg2MDpcXHRcXHRcXHRcXHRpcHZsYW5fYWRqdXN0X210dShpcHZsYW4sIGRldik7XFxuIDg2MTpcXHRcXHRcXHRicmVhaztcXG4gODYyOlxcdFxcbiA4NjM6XFx0XFx0Y2FzZSBORVRERVZfUFJFX0NIQU5HRUFERFI6XFxuIDg2NDpcXHRcXHRcXHRwcmVjaGFkZHJfaW5mbyA9IHB0cjtcXG4gODY1OlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcXG4gODY2OlxcdFxcdFxcdFxcdGVyciA9IG5ldGlmX3ByZV9jaGFuZ2VhZGRyX25vdGlmeShpcHZsYW4tXFx1MDAzZWRldixcXG4gODY3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgcHJlY2hhZGRyX2luZm8tXFx1MDAzZWRldl9hZGRyLFxcbiA4Njg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBleHRhY2spO1xcbiA4Njk6XFx0XFx0XFx0XFx0aWYgKGVycikge1xcbiA4NzA6XFx0XFx0XFx0XFx0XFx0cmV0ID0gbm90aWZpZXJfZnJvbV9lcnJubyhlcnIpO1xcbiA4NzE6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDg3MjpcXHRcXHRcXHRcXHR9XFxuIDg3MzpcXHRcXHRcXHR9XFxuIDg3NDpcXHRcXHRcXHRicmVhaztcXG4gODc1OlxcdFxcbiA4NzY6XFx0XFx0Y2FzZSBORVRERVZfQ0hBTkdFQUREUjpcXG4gODc3OlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcXG4gODc4OlxcdFxcdFxcdFxcdGV0aF9od19hZGRyX3NldChpcHZsYW4tXFx1MDAzZWRldiwgZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuIDg3OTpcXHRcXHRcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGlwdmxhbi1cXHUwMDNlZGV2KTtcXG4gODgwOlxcdFxcdFxcdH1cXG4gODgxOlxcdFxcdFxcdGJyZWFrO1xcbiA4ODI6XFx0XFxuIDg4MzpcXHRcXHRjYXNlIE5FVERFVl9QUkVfVFlQRV9DSEFOR0U6XFxuIDg4NDpcXHRcXHRcXHQvKiBGb3JiaWQgdW5kZXJseWluZyBkZXZpY2UgdG8gY2hhbmdlIGl0cyB0eXBlLiAqL1xcbiA4ODU6XFx0XFx0XFx0cmV0ID0gTk9USUZZX0JBRDtcXG4gODg2OlxcdFxcdFxcdGJyZWFrO1xcbiA4ODc6XFx0XFxuIDg4ODpcXHRcXHRjYXNlIE5FVERFVl9OT1RJRllfUEVFUlM6XFxuIDg4OTpcXHRcXHRjYXNlIE5FVERFVl9CT05ESU5HX0ZBSUxPVkVSOlxcbiA4OTA6XFx0XFx0Y2FzZSBORVRERVZfUkVTRU5EX0lHTVA6XFxuIDg5MTpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGlwdmxhbiwgXFx1MDAyNnBvcnQtXFx1MDAzZWlwdmxhbnMsIHBub2RlKVxcbiA4OTI6XFx0XFx0XFx0XFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKGV2ZW50LCBpcHZsYW4tXFx1MDAzZWRldik7XFxuIDg5MzpcXHRcXHR9XFxuIDg5NDpcXHRcXG4gODk1OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cG9ydC1cXHUwMDNlcG5vZGVzX2xvY2spO1xcbiA4OTY6XFx0XFxuIDg5NzpcXHRcXHQvKiBBdm9pZCBpbnZva2luZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB1bmRlciBwbm9kZXNfbG9jay4gKi9cXG4gODk4OlxcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXFx1MDAyNmxzdF9raWxsKTtcXG4gODk5OlxcdFxcbiA5MDA6XFx0XFx0aXB2bGFuX3BvcnRfcHV0KHBvcnQpO1xcbiA5MDE6XFx0XFxuIDkwMjpcXHRcXHRyZXR1cm4gcmV0O1xcbiA5MDM6XFx0fVxcbiA5MDQ6XFx0XFxuIDkwNTpcXHQvKiB0aGUgY2FsbGVyIG11c3QgaGVsZCB0aGUgYWRkcnMgbG9jayAqL1xcbiA5MDY6XFx0c3RhdGljIGludCBpcHZsYW5fYWRkX2FkZHIoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHZvaWQgKmlhZGRyLCBib29sIGlzX3Y2KVxcbiA5MDc6XFx0e1xcbiA5MDg6XFx0XFx0c3RydWN0IGlwdmxfYWRkciAqYWRkcjtcXG4gOTA5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMzoxNi4yNjE3NTQxMjdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0NzY4Mjk4NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nLCB3aGVyZSBkbyB3ZSBraWNrIG9mZiBhbmQgd2hhdCdzIHRoZSBlbnRyeSBwb2ludCBoZXJlPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBgaXB2bGFuX2RldmljZV9ldmVudGAgZnVuY3Rpb24gY29tZXMgaW50byBwbGF5LiBMZXQncyBzZWUgaG93IHRoaW5ncyBhcmUgc2V0IHVwIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiBpdHMgZXhlY3V0aW9uIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgc3lzdGVtLCBhbmQgaG93IGl0IGlzIGNhbGxlZCBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzg3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMzozOC43Mzg1OTI2NjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc5MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc5MDpcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbiA3OTE6XFx0e1xcbiA3OTI6XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZXh0YWNrKHB0cik7XFxuIDc5MzpcXHRcXHRzdHJ1Y3QgbmV0ZGV2X25vdGlmaWVyX3ByZV9jaGFuZ2VhZGRyX2luZm8gKnByZWNoYWRkcl9pbmZvO1xcbiA3OTQ6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IG5ldGRldl9ub3RpZmllcl9pbmZvX3RvX2RldihwdHIpO1xcbiA3OTU6XFx0XFx0c3RydWN0IGlwdmxfZGV2ICppcHZsYW4sICpuZXh0O1xcbiA3OTY6XFx0XFx0aW50IGVyciwgcmV0ID0gTk9USUZZX0RPTkU7XFxuIDc5NzpcXHRcXHRzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0O1xcbiA3OTg6XFx0XFx0TElTVF9IRUFEKGxzdF9raWxsKTtcXG4gNzk5OlxcdFxcbiA4MDA6XFx0XFx0aWYgKGV2ZW50ID09IE5FVERFVl9QUkVDSEFOR0VVUFBFUiB8fFxcbiA4MDE6XFx0XFx0ICAgIGV2ZW50ID09IE5FVERFVl9DSEFOR0VVUFBFUilcXG4gODAyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDgwMzpcXHRcXG4gODA0OlxcdFxcdHBvcnQgPSBpcHZsYW5fcG9ydF9nZXQoZGV2KTtcXG4gODA1OlxcdFxcdGlmICghcG9ydClcXG4gODA2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDgwNzpcXHRcXG4gODA4OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBvcnQtXFx1MDAzZXBub2Rlc19sb2NrKTtcXG4gODA5OlxcdFxcbiA4MTA6XFx0XFx0c3dpdGNoIChldmVudCkge1xcbiA4MTE6XFx0XFx0Y2FzZSBORVRERVZfVVA6XFxuIDgxMjpcXHRcXHRjYXNlIE5FVERFVl9ET1dOOlxcbiA4MTM6XFx0XFx0Y2FzZSBORVRERVZfQ0hBTkdFOlxcbiA4MTQ6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFxcdTAwMjZwb3J0LVxcdTAwM2VpcHZsYW5zLCBwbm9kZSlcXG4gODE1OlxcdFxcdFxcdFxcdG5ldGlmX3N0YWNrZWRfdHJhbnNmZXJfb3BlcnN0YXRlKGlwdmxhbi1cXHUwMDNlcGh5X2RldixcXG4gODE2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBpcHZsYW4tXFx1MDAzZWRldik7XFxuIDgxNzpcXHRcXHRcXHRicmVhaztcXG4gODE4OlxcdFxcbiA4MTk6XFx0XFx0Y2FzZSBORVRERVZfUkVHSVNURVI6IHtcXG4gODIwOlxcdFxcdFxcdHN0cnVjdCBuZXQgKm9sZG5ldCwgKm5ld25ldCA9IGRldl9uZXQoZGV2KTtcXG4gODIxOlxcdFxcbiA4MjI6XFx0XFx0XFx0b2xkbmV0ID0gcmVhZF9wbmV0KFxcdTAwMjZwb3J0LVxcdTAwM2VwbmV0KTtcXG4gODIzOlxcdFxcdFxcdGlmIChuZXRfZXEobmV3bmV0LCBvbGRuZXQpKVxcbiA4MjQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDgyNTpcXHRcXG4gODI2OlxcdFxcdFxcdHdyaXRlX3BuZXQoXFx1MDAyNnBvcnQtXFx1MDAzZXBuZXQsIG5ld25ldCk7XFxuIDgyNzpcXHRcXG4gODI4OlxcdFxcdFxcdGlmIChwb3J0LVxcdTAwM2Vtb2RlID09IElQVkxBTl9NT0RFX0wzUylcXG4gODI5OlxcdFxcdFxcdFxcdGlwdmxhbl9taWdyYXRlX2wzc19ob29rKG9sZG5ldCwgbmV3bmV0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDM6MzguNzM4NzYxMjA3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3NjIzNTIzOTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVB2bGFuIFBhdGNoIGZvciBTYWZldHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBjb25jdXJyZW5jeSBmaXggd2l0aGluIHRoZSBgaXB2bGFuX2RldmljZV9ldmVudCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGNhbGwgdG8gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXHUwMDI2bHN0X2tpbGwpYCBvdXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uIHByb3RlY3RlZCBieSBgcG9ydC1cdTAwM2Vwbm9kZXNfbG9ja2AuIFRoZSByYXRpb25hbGU/IFRvIHByZXZlbnQgbmVzdGVkIG5ldGRldmljZSBub3RpZmllciBpbnZvY2F0aW9ucyB3aGlsZSBob2xkaW5nIHRoYXQgbG9jaywgd2hpY2ggY291bGQgbGVhZCB0byBkZWFkbG9ja3Mg4oCTIGEgY2xhc3NpYyByZWNpcGUgZm9yIHRyb3VibGUuXG5cbkZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBzcGVjaWFsaXN0LCB0aGUgY29kZSBpcyB2ZXJ5IGVhc3kgdG8gcmVhZC4gYExJU1RfSEVBRChsc3Rfa2lsbCk7YCBpcyBpbml0aWFsaXplZCBvbiBsaW5lIDc5OCwgYW5kIHRoZSBwYXRjaCBzaW1wbHkgc2hpZnRzIHRoZSBsb2NhdGlvbiBvZiBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcdTAwMjZsc3Rfa2lsbCk7YC4gSW1wb3J0YW50bHksIGlmIGBsc3Rfa2lsbGAgcmVtYWlucyBlbXB0eSBmb3IgZXZlbnRzIG90aGVyIHRoYW4gYE5FVERFVl9VTlJFR0lTVEVSYCwgb3IgaWYgbm8gZGV2aWNlcyBhcmUgYWRkZWQsIHRoaXMgb3BlcmF0aW9uIGJlY29tZXMgYSBuby1vcCBkdWUgdG8gYGxpc3RfZW1wdHkoXHUwMDI2bHN0X2tpbGwpYC5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogZG9lcyB0aGlzIGludHJvZHVjZSBhbnkgbWVtb3J5IHNhZmV0eSBjb25jZXJucz8gTm8uXG5cbiogICBEb2VzIGl0IGludm9sdmUgYW55IHVzZXIta2VybmVsIGRhdGEgY29weWluZz8gTm8uXG4qICAgRG9lcyBpdCB0b3VjaCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vOyB0aGUgYGxzdF9raWxsYCBsaXN0IGlzIHByb3Blcmx5IGluaXRpYWxpemVkLlxuKiAgIERvZXMgaXQgaW50cm9kdWNlIG5ldyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vLlxuKiAgIERvZXMgaXQgbW9kaWZ5IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb24gb3IgaW5pdGlhbGl6ZSB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm8uXG4qICAgRG9lcyBpdCB0b3VjaCBhbnkgYm91bmRzIGNoZWNrcyBvciBsZW5ndGggY2FsY3VsYXRpb25zPyBOby5cblxuVGhlIHBhdGNoICpleHBsaWNpdGx5KiBhZGRyZXNzZXMgbG9ja2luZyBhbmQgZGVhZGxvY2sgY29uY2VybnMuIE15IGV4cGVydCBvcGluaW9uIGlzIHRoYXQgdGhpcyBpcyBhIHRleHRib29rIGV4YW1wbGUgb2YgYSBjb25jdXJyZW5jeSBmaXgsIGRlc2lnbmVkIHRvIGF2b2lkIGxvY2sgaW52ZXJzaW9uIG9yIGRlYWRsb2NrIGlzc3VlcywgYXMgY29uZmlybWVkIGJ5IGluc3BlY3RpbmcgdGhlIGNvZGUsIGFuZCBob3cgdGhlIGNoYW5nZXMgZml0IGluLlxuXG5UaGUgbG9ja2luZyBpc3N1ZXMgYXJlIG1hbmFnZWQgYnkgTE9DS0RFUCwgYW5kIGxpZmVjeWNsZS9tZW1vcnkgc2FmZXR5IGFzcGVjdHMgYXJlIG1hbmFnZWQgYnkgS0FTQU4uIFRoaXMgY2hhbmdlIGlzIGVudGlyZWx5IGZvY3VzZWQgb24gc3luY2hyb25pemF0aW9uIGFuZCBkb2Vzbid0IHRvdWNoIG1lbW9yeSBzYWZldHkgaW4gYW55IHdheS5cblxuU28sIHRvIHN1bW1hcml6ZSBzdWNjaW5jdGx5OiBUaGlzIHBhdGNoIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSByZWZhY3RvciB0byBhdm9pZCBsb2NrIHJlY3Vyc2lvbiwgYW5kIHRodXMgaXMgYSBjYXNlIHdoZXJlIGBOZWVkc0tNU0FOYCBpcyBmYWxzZSwgYXMgS0FTQU4gaXMgZm9yIGxpZmVjeWNsZSBwcm9ibGVtcywgd2hpbGUgTE9DS0RFUCBpcyBmb3IgbG9jayBwcm9ibGVtcywgd2hpY2ggaXMgdGhlIGNydXggb2YgdGhlIGN1cnJlbnQgcGF0Y2guIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhpcyBpcyB0aGUgY29uY2x1c2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU5NSwiT3V0cHV0VG9rZW5zIjoxNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowNToxNi4zNjIyODg2NDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXFx1MDAyNmxzdF9raWxsKSBvdXRzaWRlIG9mIHRoZSBwb3J0LVxcdTAwM2Vwbm9kZXNfbG9jayBjcml0aWNhbCBzZWN0aW9uIGluIGlwdmxhbl9kZXZpY2VfZXZlbnQoKSB0byBwcmV2ZW50IGNhbGxpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgd2hpbGUgaG9sZGluZyB0aGUgbXV0ZXguXFxuXFxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFkanVzdG1lbnQgYWltZWQgYXQgcHJldmVudGluZyBkZWFkbG9ja3MgLyBsb2NrZGVwIHdhcm5pbmdzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCB1c2VyLXNwYWNlIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMuIEFueSBwb3RlbnRpYWwgY29uY3VycmVuY3kgb3IgbGlmZWN5Y2xlIGlzc3VlcyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb3ZlcyB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFxcdTAwMjZsc3Rfa2lsbCkgb3V0c2lkZSBvZiB0aGUgcG9ydC1cXHUwMDNlcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiBpbiBpcHZsYW5fZGV2aWNlX2V2ZW50KCkgdG8gcHJldmVudCBjYWxsaW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHdoaWxlIGhvbGRpbmcgdGhlIG11dGV4LlxcblxcblRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhZGp1c3RtZW50IGFpbWVkIGF0IHByZXZlbnRpbmcgZGVhZGxvY2tzIC8gbG9ja2RlcCB3YXJuaW5ncy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgdXNlci1zcGFjZSBjb3BpZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLiBBbnkgcG90ZW50aWFsIGNvbmN1cnJlbmN5IG9yIGxpZmVjeWNsZSBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowxbww2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-28 17:39:39 +0000 UTC FinishedAt: 2026-08-28 18:05:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3205699d79f262412c1be7fc1c04066610d3cd52", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPVLAN", "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3205699d79f262412c1be7fc1c04066610d3cd52", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPVLAN", "INET" ], "series_id": "f9c32189-de73-4b0e-aa85-2fca401cd0dc" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "ipvlan_device_event", "__ipvlan_link_delete", "ipvlan_link_new" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVkxBTiYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2bGFuX2RldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX2lwdmxhbl9saW5rX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDtpcHZsYW5fbGlua19uZXcmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKSBvdXRzaWRlIG9mIHRoZSBwb3J0LVx1MDAzZXBub2Rlc19sb2NrIGNyaXRpY2FsIHNlY3Rpb24gaW4gaXB2bGFuX2RldmljZV9ldmVudCgpIHRvIHByZXZlbnQgY2FsbGluZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB3aGlsZSBob2xkaW5nIHRoZSBtdXRleC5cblxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFkanVzdG1lbnQgYWltZWQgYXQgcHJldmVudGluZyBkZWFkbG9ja3MgLyBsb2NrZGVwIHdhcm5pbmdzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCB1c2VyLXNwYWNlIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMuIEFueSBwb3RlbnRpYWwgY29uY3VycmVuY3kgb3IgbGlmZWN5Y2xlIGlzc3VlcyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDYyMDJiM2JkYjI1MmZhZGZmOGQ3N2M1NDRkMzlkYzYxYjlkMjc1ZDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyOCAxODowMDozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5pbmRleCBlZTQ2YTU1ZjczZDE0Li4yZDQzNDA2MjdjYTY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5AQCAtODQ2LDcgJiM0Mzs4NDYsNiBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG4gXHRcdFx0XHRfX2lwdmxhbl9saW5rX2RlbGV0ZShuZXQsIGlwdmxhbi1cdTAwM2VkZXYsIFx1MDAyNmxzdF9raWxsKTtcbiBcdFx0fVxuIFxuLVx0XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRjYXNlIE5FVERFVl9GRUFUX0NIQU5HRTpcbkBAIC04OTUsNiAmIzQzOzg5NCw5IEBAIHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbiBcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKTtcbiBcbiYjNDM7XHQvKiBBdm9pZCBpbnZva2luZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB1bmRlciBwbm9kZXNfbG9jay4gKi9cbiYjNDM7XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKTtcbiYjNDM7XG4gXHRpcHZsYW5fcG9ydF9wdXQocG9ydCk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVkxBTiYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2bGFuX2RldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX2lwdmxhbl9saW5rX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDtpcHZsYW5fbGlua19uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyMDJiM2JkYjI1MmZhZGZmOGQ3N2M1NDRkMzlkYzYxYjlkMjc1ZDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAyOCAxODowMDozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jIGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKaW5kZXggZWU0NmE1NWY3M2QxNC4uMmQ0MzQwNjI3Y2E2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKQEAgLTg0Niw3ICYjNDM7ODQ2LDYgQEAgc3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLAogCQkJCV9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLSZndDtkZXYsICZhbXA7bHN0X2tpbGwpOwogCQl9CiAKLQkJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgmYW1wO2xzdF9raWxsKTsKIAkJYnJlYWs7CiAJfQogCWNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOgpAQCAtODk1LDYgJiM0Mzs4OTQsOSBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsCiAKIAltdXRleF91bmxvY2soJmFtcDtwb3J0LSZndDtwbm9kZXNfbG9jayk7CiAKJiM0MzsJLyogQXZvaWQgaW52b2tpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgdW5kZXIgcG5vZGVzX2xvY2suICovCiYjNDM7CXVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmFtcDtsc3Rfa2lsbCk7CiYjNDM7CiAJaXB2bGFuX3BvcnRfcHV0KHBvcnQpOwogCiAJcmV0dXJuIHJldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2OAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29kZSBNb2RpZmljYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0JiMzOTtzIGNoYW5nZWQuIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IGluc3BlY3QgdGhlIGRpZmY7IHRoYXQgc2hvdWxkIHByb3ZpZGUgYSBjbGVhciBwaWN0dXJlLiBUaGUgcGF0Y2ggdG91Y2hlcyBgaXB2bGFuX21haW4uY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvaXB2bGFuYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGZ1bmN0aW9uLgoKVG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZSwgSSYjMzk7bGwgdXNlIGByZWFkLWZpbGVgIHRvIHplcm8gaW4gb24gbGluZXMgODQ2LTkwMCBvZiBgaXB2bGFuX21haW4uY2AuIFRoaXMgcmVnaW9uIGlzIGxpa2VseSB3aGVyZSB0aGUgbW9kaWZpY2F0aW9uIGlzIGhhcHBlbmluZyBvciBpbnRlcmFjdGluZyB3aXRoLiBVbmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgYmUgY3JpdGljYWwgaW4gZ3Jhc3BpbmcgdGhlIGludGVudCBhbmQgcG90ZW50aWFsIGltcGFjdCBvZiB0aGUgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVlbiBjaGFuZ2VkLCB3aHkgaXQgd2FzIGNoYW5nZWQsIGFuZCB3aGF0IGl0IGVmZmVjdHMgaW4gdGhlIGxhcmdlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA5MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODIwOlx0XHRcdHN0cnVjdCBuZXQgKm9sZG5ldCwgKm5ld25ldCA9IGRldl9uZXQoZGV2KTtcbiA4MjE6XHRcbiA4MjI6XHRcdFx0b2xkbmV0ID0gcmVhZF9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCk7XG4gODIzOlx0XHRcdGlmIChuZXRfZXEobmV3bmV0LCBvbGRuZXQpKVxuIDgyNDpcdFx0XHRcdGJyZWFrO1xuIDgyNTpcdFxuIDgyNjpcdFx0XHR3cml0ZV9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCwgbmV3bmV0KTtcbiA4Mjc6XHRcbiA4Mjg6XHRcdFx0aWYgKHBvcnQtXHUwMDNlbW9kZSA9PSBJUFZMQU5fTU9ERV9MM1MpXG4gODI5Olx0XHRcdFx0aXB2bGFuX21pZ3JhdGVfbDNzX2hvb2sob2xkbmV0LCBuZXduZXQpO1xuIDgzMDpcdFx0XHRicmVhaztcbiA4MzE6XHRcdH1cbiA4MzI6XHRcdGNhc2UgTkVUREVWX1VOUkVHSVNURVI6IHtcbiA4MzM6XHRcdFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChkZXYpO1xuIDgzNDpcdFxuIDgzNTpcdFx0XHRpZiAoZGV2LVx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfVU5SRUdJU1RFUklORylcbiA4MzY6XHRcdFx0XHRicmVhaztcbiA4Mzc6XHRcbiA4Mzg6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGlwdmxhbiwgbmV4dCwgXHUwMDI2cG9ydC1cdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xuIDgzOTpcdFx0XHRcdGlwdmxhbi1cdTAwM2VkeWluZyA9IHRydWU7XG4gODQwOlx0XG4gODQxOlx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVlRBUClcbiA4NDI6XHRcdFx0XHRpZiAoaXB2bGFuLVx1MDAzZWRldi1cdTAwM2VydG5sX2xpbmtfb3BzICE9IFx1MDAyNmlwdmxhbl9saW5rX29wcylcbiA4NDM6XHRcdFx0XHRcdF9faXB2dGFwX2RlbGxpbmtfcHRyKG5ldCwgaXB2bGFuLVx1MDAzZWRldiwgXHUwMDI2bHN0X2tpbGwpO1xuIDg0NDpcdFx0XHRcdGVsc2VcbiA4NDU6XHQjZW5kaWZcbiA4NDY6XHRcdFx0XHRcdF9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLVx1MDAzZWRldiwgXHUwMDI2bHN0X2tpbGwpO1xuIDg0NzpcdFx0XHR9XG4gODQ4Olx0XG4gODQ5Olx0XHRcdGJyZWFrO1xuIDg1MDpcdFx0fVxuIDg1MTpcdFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XG4gODUyOlx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcdTAwMjZwb3J0LVx1MDAzZWlwdmxhbnMsIHBub2RlKSB7XG4gODUzOlx0XHRcdFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGlwdmxhbi1cdTAwM2VkZXYsIGRldik7XG4gODU0Olx0XHRcdFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhpcHZsYW4tXHUwMDNlZGV2KTtcbiA4NTU6XHRcdFx0fVxuIDg1NjpcdFx0XHRicmVhaztcbiA4NTc6XHRcbiA4NTg6XHRcdGNhc2UgTkVUREVWX0NIQU5HRU1UVTpcbiA4NTk6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpXG4gODYwOlx0XHRcdFx0aXB2bGFuX2FkanVzdF9tdHUoaXB2bGFuLCBkZXYpO1xuIDg2MTpcdFx0XHRicmVhaztcbiA4NjI6XHRcbiA4NjM6XHRcdGNhc2UgTkVUREVWX1BSRV9DSEFOR0VBRERSOlxuIDg2NDpcdFx0XHRwcmVjaGFkZHJfaW5mbyA9IHB0cjtcbiA4NjU6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcbiA4NjY6XHRcdFx0XHRlcnIgPSBuZXRpZl9wcmVfY2hhbmdlYWRkcl9ub3RpZnkoaXB2bGFuLVx1MDAzZWRldixcbiA4Njc6XHRcdFx0XHRcdFx0XHRcdCAgcHJlY2hhZGRyX2luZm8tXHUwMDNlZGV2X2FkZHIsXG4gODY4Olx0XHRcdFx0XHRcdFx0XHQgIGV4dGFjayk7XG4gODY5Olx0XHRcdFx0aWYgKGVycikge1xuIDg3MDpcdFx0XHRcdFx0cmV0ID0gbm90aWZpZXJfZnJvbV9lcnJubyhlcnIpO1xuIDg3MTpcdFx0XHRcdFx0YnJlYWs7XG4gODcyOlx0XHRcdFx0fVxuIDg3MzpcdFx0XHR9XG4gODc0Olx0XHRcdGJyZWFrO1xuIDg3NTpcdFxuIDg3NjpcdFx0Y2FzZSBORVRERVZfQ0hBTkdFQUREUjpcbiA4Nzc6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcbiA4Nzg6XHRcdFx0XHRldGhfaHdfYWRkcl9zZXQoaXB2bGFuLVx1MDAzZWRldiwgZGV2LVx1MDAzZWRldl9hZGRyKTtcbiA4Nzk6XHRcdFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGlwdmxhbi1cdTAwM2VkZXYpO1xuIDg4MDpcdFx0XHR9XG4gODgxOlx0XHRcdGJyZWFrO1xuIDg4MjpcdFxuIDg4MzpcdFx0Y2FzZSBORVRERVZfUFJFX1RZUEVfQ0hBTkdFOlxuIDg4NDpcdFx0XHQvKiBGb3JiaWQgdW5kZXJseWluZyBkZXZpY2UgdG8gY2hhbmdlIGl0cyB0eXBlLiAqL1xuIDg4NTpcdFx0XHRyZXQgPSBOT1RJRllfQkFEO1xuIDg4NjpcdFx0XHRicmVhaztcbiA4ODc6XHRcbiA4ODg6XHRcdGNhc2UgTkVUREVWX05PVElGWV9QRUVSUzpcbiA4ODk6XHRcdGNhc2UgTkVUREVWX0JPTkRJTkdfRkFJTE9WRVI6XG4gODkwOlx0XHRjYXNlIE5FVERFVl9SRVNFTkRfSUdNUDpcbiA4OTE6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpXG4gODkyOlx0XHRcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKGV2ZW50LCBpcHZsYW4tXHUwMDNlZGV2KTtcbiA4OTM6XHRcdH1cbiA4OTQ6XHRcbiA4OTU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKTtcbiA4OTY6XHRcbiA4OTc6XHRcdC8qIEF2b2lkIGludm9raW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHVuZGVyIHBub2Rlc19sb2NrLiAqL1xuIDg5ODpcdFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcdTAwMjZsc3Rfa2lsbCk7XG4gODk5Olx0XG4gOTAwOlx0XHRpcHZsYW5fcG9ydF9wdXQocG9ydCk7XG4gOTAxOlx0XG4gOTAyOlx0XHRyZXR1cm4gcmV0O1xuIDkwMzpcdH1cbiA5MDQ6XHRcbiA5MDU6XHQvKiB0aGUgY2FsbGVyIG11c3QgaGVsZCB0aGUgYWRkcnMgbG9jayAqL1xuIDkwNjpcdHN0YXRpYyBpbnQgaXB2bGFuX2FkZF9hZGRyKHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCB2b2lkICppYWRkciwgYm9vbCBpc192NilcbiA5MDc6XHR7XG4gOTA4Olx0XHRzdHJ1Y3QgaXB2bF9hZGRyICphZGRyO1xuIDkwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MjMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIElQdmxhbiBEZXZpY2UgRXZlbnQgYW5kIEtpbGwgU2lnbmFsKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgdGhpcyBgaXB2bGFuX2RldmljZV9ldmVudGAgYW5kIGhvdyBpdCYjMzk7cyBsaW5rZWQgdG8gYGxzdF9raWxsYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHRyYWNlIHRoZSBvcmlnaW4uIEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSBgaXB2bGFuX2RldmljZV9ldmVudGAgaXMgZmlyc3QgZGVjbGFyZWQgb3IgaW5pdGlhbGl6ZWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGRlZmluaW5nIG1vbWVudCwgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGVuLCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgYGxzdF9raWxsYCB2YXJpYWJsZSBpcyBoYW5kbGVkOyB3YXMgaXQgZGVmaW5lZCBzdGF0aWNhbGx5LCBwYXNzZWQgZnJvbSBlbHNld2hlcmUsIG9yIGR5bmFtaWNhbGx5IGFsbG9jYXRlZD8gSeKAmW0gaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGl04oCZcyBhIHN0YW5kYXJkIHNpZ25hbCwgYW4gaW50ZXJuYWwgdmFyaWFibGUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5LiBUaGUgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCBhIGNsZWFyIGNvbnRyb2wgZmxvdzogaG93IGRvZXMgdGhpcyBldmVudCB0cmlnZ2VyLCBhbmQgaG93IGRvZXMgYGxzdF9raWxsYCBjb21lIGludG8gcGxheSBpbiB0aGF0IHByb2Nlc3M/IFRoaXMgc2hvdWxkIGNsYXJpZnkgdGhlIG92ZXJhbGwgbWVjaGFuaXNtIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc4MDpcdFx0b3BzLVx1MDAzZXBvbGljeVx0PSBpcHZsYW5fbmxfcG9saWN5O1xuIDc4MTpcdFx0b3BzLVx1MDAzZXZhbGlkYXRlXHQ9IGlwdmxhbl9ubF92YWxpZGF0ZTtcbiA3ODI6XHRcdG9wcy1cdTAwM2VmaWxsX2luZm9cdD0gaXB2bGFuX25sX2ZpbGxpbmZvO1xuIDc4MzpcdFx0b3BzLVx1MDAzZWNoYW5nZWxpbmsgPSBpcHZsYW5fbmxfY2hhbmdlbGluaztcbiA3ODQ6XHRcdG9wcy1cdTAwM2VtYXh0eXBlXHQ9IElGTEFfSVBWTEFOX01BWDtcbiA3ODU6XHRcdHJldHVybiBydG5sX2xpbmtfcmVnaXN0ZXIob3BzKTtcbiA3ODY6XHR9XG4gNzg3Olx0RVhQT1JUX1NZTUJPTF9HUEwoaXB2bGFuX2xpbmtfcmVnaXN0ZXIpO1xuIDc4ODpcdFxuIDc4OTpcdHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbiA3OTA6XHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuIDc5MTpcdHtcbiA3OTI6XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayA9IG5ldGRldl9ub3RpZmllcl9pbmZvX3RvX2V4dGFjayhwdHIpO1xuIDc5MzpcdFx0c3RydWN0IG5ldGRldl9ub3RpZmllcl9wcmVfY2hhbmdlYWRkcl9pbmZvICpwcmVjaGFkZHJfaW5mbztcbiA3OTQ6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19kZXYocHRyKTtcbiA3OTU6XHRcdHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCAqbmV4dDtcbiA3OTY6XHRcdGludCBlcnIsIHJldCA9IE5PVElGWV9ET05FO1xuIDc5NzpcdFx0c3RydWN0IGlwdmxfcG9ydCAqcG9ydDtcbiA3OTg6XHRcdExJU1RfSEVBRChsc3Rfa2lsbCk7XG4gNzk5Olx0XG4gODAwOlx0XHRpZiAoZXZlbnQgPT0gTkVUREVWX1BSRUNIQU5HRVVQUEVSIHx8XG4gODAxOlx0XHQgICAgZXZlbnQgPT0gTkVUREVWX0NIQU5HRVVQUEVSKVxuIDgwMjpcdFx0XHRyZXR1cm4gcmV0O1xuIDgwMzpcdFxuIDgwNDpcdFx0cG9ydCA9IGlwdmxhbl9wb3J0X2dldChkZXYpO1xuIDgwNTpcdFx0aWYgKCFwb3J0KVxuIDgwNjpcdFx0XHRyZXR1cm4gcmV0O1xuIDgwNzpcdFxuIDgwODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKTtcbiA4MDk6XHRcbiA4MTA6XHRcdHN3aXRjaCAoZXZlbnQpIHtcbiA4MTE6XHRcdGNhc2UgTkVUREVWX1VQOlxuIDgxMjpcdFx0Y2FzZSBORVRERVZfRE9XTjpcbiA4MTM6XHRcdGNhc2UgTkVUREVWX0NIQU5HRTpcbiA4MTQ6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpXG4gODE1Olx0XHRcdFx0bmV0aWZfc3RhY2tlZF90cmFuc2Zlcl9vcGVyc3RhdGUoaXB2bGFuLVx1MDAzZXBoeV9kZXYsXG4gODE2Olx0XHRcdFx0XHRcdFx0XHQgaXB2bGFuLVx1MDAzZWRldik7XG4gODE3Olx0XHRcdGJyZWFrO1xuIDgxODpcdFxuIDgxOTpcdFx0Y2FzZSBORVRERVZfUkVHSVNURVI6IHtcbiA4MjA6XHRcdFx0c3RydWN0IG5ldCAqb2xkbmV0LCAqbmV3bmV0ID0gZGV2X25ldChkZXYpO1xuIDgyMTpcdFxuIDgyMjpcdFx0XHRvbGRuZXQgPSByZWFkX3BuZXQoXHUwMDI2cG9ydC1cdTAwM2VwbmV0KTtcbiA4MjM6XHRcdFx0aWYgKG5ldF9lcShuZXduZXQsIG9sZG5ldCkpXG4gODI0Olx0XHRcdFx0YnJlYWs7XG4gODI1Olx0XG4gODI2Olx0XHRcdHdyaXRlX3BuZXQoXHUwMDI2cG9ydC1cdTAwM2VwbmV0LCBuZXduZXQpO1xuIDgyNzpcdFxuIDgyODpcdFx0XHRpZiAocG9ydC1cdTAwM2Vtb2RlID09IElQVkxBTl9NT0RFX0wzUylcbiA4Mjk6XHRcdFx0XHRpcHZsYW5fbWlncmF0ZV9sM3NfaG9vayhvbGRuZXQsIG5ld25ldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg5MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJUFZMQU4gRGV2aWNlIEV2ZW50IEhhbmRsaW5nIC0gQSBTYWZldHkgSW1wcm92ZW1lbnQqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBmdW5jdGlvbiwgSSBzZWUgdGhlIGBsc3Rfa2lsbGAgbGlzdCBpcyBpbml0aWFsaXplZCByaWdodCBhd2F5LiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLCBub3RoaW5nIHVudXN1YWwgdGhlcmUuIFRoZSBpbnRlcmVzdGluZyBwYXJ0IGlzIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGggYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlgLiBJIHJlbWVtYmVyIHRoaXMgZnVuY3Rpb24uCgpQcmV2aW91c2x5LCB3aGVuIGEgbmV0IGRldmljZSB3YXMgYmVpbmcgdW5yZWdpc3RlcmVkIChORVRERVZfVU5SRUdJU1RFUiBjYXNlKSwgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmFtcDtsc3Rfa2lsbClgIHdhcyBjYWxsZWQgKmluc2lkZSogYSBgbXV0ZXhfbG9jaygmYW1wO3BvcnQtJmd0O3Bub2Rlc19sb2NrKWAgYmxvY2suIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWU7IG5lc3Rpbmcgbm90aWZpZXIgY2FsbHMgdW5kZXIgYSBsb2NrIGxpa2UgdGhhdCBjYW4gYmUgYSByZWNpcGUgZm9yIHRyb3VibGUg4oCTIGxvY2tkZXAgd2FybmluZ3Mgb3IgZXZlbiBkZWFkbG9ja3MuIFRoZSBjaGFuZ2UgYXBwZWFycyB0byBoYXZlIG1vdmVkIHRoZSB1bnJlZ2lzdGVyIGNhbGwgdG8gKmFmdGVyKiB0aGUgYG11dGV4X3VubG9jaygmYW1wO3BvcnQtJmd0O3Bub2Rlc19sb2NrKWAuIFNtYXJ0IG1vdmUhIFRoaXMgYXZvaWRzIHRoZSBuZXN0ZWQgbm90aWZpZXIgY2FsbHMsIHdoaWNoIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoIHRvIHByZXZlbnQgdGhvc2UgY29uY3VycmVuY3kgcHJvYmxlbXMuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSBJUFZMQU4mIzM5O3MgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgc2V0dGluZ3MuIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgZm9yIHRoZSBJUFZMQU4gbW9kdWxlIGFuZCBjb25maXJtIHRoYXQgdGhlIGNvbmRpdGlvbnMgZm9yIElQVkxBTiBhcmUgcHJvcGVybHkgY29uZmlndXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBWTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MTc5PWNvbmZpZyBNQUNWVEFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0xOTItXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5Mzpjb25maWcgSVBWTEFOX0wzU1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xOTQtXHRkZXBlbmRzIG9uIE5FVEZJTFRFUlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMTk4LVxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTk6Y29uZmlnIElQVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMDAtXHR0cmlzdGF0ZSBcJiMzNDtJUC1WTEFOIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDY0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5ldHdvcmsgZHJpdmVycyBhcmUgY29uZmlndXJlZCBpbiB0aGlzIGtlcm5lbC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L0tjb25maWdgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGxpbmVzIGFyb3VuZCAxOTAgdG8gMjIwLiBUaGF0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHNwb3QgdG8gZmluZCBzb21lIG9mIHRoZSBjb3JlLCB0b3AtbGV2ZWwgc2V0dGluZ3Mgb3IgbWF5YmUgYW4gaW1wb3J0YW50IGdyb3VwaW5nIG9mIHJlbGF0ZWQgb3B0aW9ucy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gYnJvYWQgbmV0d29ya2luZyBmZWF0dXJlcyBvciBwZXJoYXBzIGEga2V5IGRyaXZlciBmYW1pbHkuIFRoaXMgd2lsbCBwcm9iYWJseSBwcm92aWRlIHRoZSBjb250ZXh0IEkgbmVlZCB0byB6b29tIGludG8gYSBzcGVjaWZpYyBhcmVhIGxhdGVyLiBLbm93aW5nIHRoZSBicm9hZGVyIHN0cnVjdHVyZSB3aWxsIHNhdmUgbWUgYSB0b24gb2YgdGltZSwgSSBob3BlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdGhlcmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDE5MTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBtYWN2dGFwLlxuIDE5MjpcdFxuIDE5MzpcdGNvbmZpZyBJUFZMQU5fTDNTXG4gMTk0Olx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUlxuIDE5NTpcdFx0ZGVwZW5kcyBvbiBJUFZMQU5cbiAxOTY6XHRcdGRlZl9ib29sIHlcbiAxOTc6XHRcdHNlbGVjdCBORVRfTDNfTUFTVEVSX0RFVlxuIDE5ODpcdFxuIDE5OTpcdGNvbmZpZyBJUFZMQU5cbiAyMDA6XHRcdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuIDIwMTpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMjAyOlx0XHRoZWxwXG4gMjAzOlx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdmlydHVhbCBkZXZpY2VzIG9mZiBvZiBhIG1haW4gaW50ZXJmYWNlXG4gMjA0Olx0XHQgIGFuZCBwYWNrZXRzIHdpbGwgYmUgZGVsaXZlcmVkIGJhc2VkIG9uIHRoZSBkZXN0IEwzIChJUHY2L0lQdjQgYWRkcilcbiAyMDU6XHRcdCAgb24gcGFja2V0cy4gQWxsIGludGVyZmFjZXMgKGluY2x1ZGluZyB0aGUgbWFpbiBpbnRlcmZhY2UpIHNoYXJlIEwyXG4gMjA2Olx0XHQgIG1ha2luZyBpdCB0cmFuc3BhcmVudCB0byB0aGUgY29ubmVjdGVkIEwyIHN3aXRjaC5cbiAyMDc6XHRcbiAyMDg6XHRcdCAgSXB2bGFuIGRldmljZXMgY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBcJiMzNDtpcFwmIzM0OyBjb21tYW5kIGZyb20gdGhlXG4gMjA5Olx0XHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMy4xOSByZWxlYXNlOlxuIDIxMDpcdFxuIDIxMTpcdFx0ICBcJiMzNDtpcCBsaW5rIGFkZCBsaW5rIFx1MDAzY21haW4tZGV2XHUwMDNlIFsgTkFNRSBdIHR5cGUgaXB2bGFuXCYjMzQ7XG4gMjEyOlx0XG4gMjEzOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyMTQ6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaXB2bGFuLlxuIDIxNTpcdFxuIDIxNjpcdGNvbmZpZyBJUFZUQVBcbiAyMTc6XHRcdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gYmFzZWQgdGFwIGRyaXZlclwmIzM0O1xuIDIxODpcdFx0ZGVwZW5kcyBvbiBJUFZMQU5cbiAyMTk6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDIyMDpcdFx0c2VsZWN0IFRBUFxuIDIyMTpcdFx0aGVscFxuIDIyMjpcdFx0ICBUaGlzIGFkZHMgYSBzcGVjaWFsaXplZCB0YXAgY2hhcmFjdGVyIGRldmljZSBkcml2ZXIgdGhhdCBpcyBiYXNlZFxuIDIyMzpcdFx0ICBvbiB0aGUgSVAtVkxBTiBuZXR3b3JrIGludGVyZmFjZSwgY2FsbGVkIGlwdnRhcC4gQW4gaXB2dGFwIGRldmljZVxuIDIyNDpcdFx0ICBjYW4gYmUgYWRkZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGEgaXB2bGFuIGRldmljZSwgdXNpbmcgJiMzOTt0eXBlXG4gMjI1Olx0XHQgIGlwdnRhcCYjMzk7LCBhbmQgdGhlbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSB0YXAgdXNlciBzcGFjZSBpbnRlcmZhY2UuXG4gMjI2Olx0XG4gMjI3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyMjg6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaXB2dGFwLlxuIDIyOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzAxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgSVB2bGFuIE1ha2VmaWxlKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgSVB2bGFuIGRyaXZlciBpcyBidWlsdCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGVgLiBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyB3ZWxsLXN0cnVjdHVyZWQsIGFzIGdvb2QgTWFrZWZpbGUgb3JnYW5pemF0aW9uIGlzIGNydWNpYWwgZm9yIGEgY2xlYW4gYW5kIG1haW50YWluYWJsZSBidWlsZCBwcm9jZXNzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSB1c3VhbCBzdXNwZWN0czogb2JqZWN0IGZpbGUgbGlzdHMsIGRlcGVuZGVuY2llcywgaW5jbHVzaW9uIG9mIG90aGVyIG1ha2VmaWxlcyBvciBjb25maWd1cmF0aW9uIGZyYWdtZW50cywgYW5kIHRoZSBvdmVyYWxsIGJ1aWxkIHN0cmF0ZWd5IGZvciB0aGUgSVB2bGFuIG1vZHVsZS4gVGhpcyBNYWtlZmlsZSBpcyBnb2luZyB0byBiZSB0aGUgY2VudHJhbCBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgYnVpbGQgcHJvY2VzcyBvZiB0aGUgSVB2bGFuIGRyaXZlci4gTXkgZ29hbCBpcyB0byBncmFzcCBob3cgaXQgaW50ZWdyYXRlcyBpbnRvIHRoZSBsYXJnZXIga2VybmVsIGJ1aWxkIGFuZCBhbnkgcGVjdWxpYXIgYnVpbGQtdGltZSBjb25maWd1cmF0aW9ucyBvciBmbGFncyBpdCBtaWdodCBsZXZlcmFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgdGhlIEV0aGVybmV0IElwdmxhbiBkcml2ZXJcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0lQVkxBTikgJiM0Mzs9IGlwdmxhbi5vXG4gICA3Olx0b2JqLSQoQ09ORklHX0lQVlRBUCkgJiM0Mzs9IGlwdnRhcC5vXG4gICA4Olx0XG4gICA5Olx0aXB2bGFuLW9ianMtJChDT05GSUdfSVBWTEFOX0wzUykgJiM0Mzs9IGlwdmxhbl9sM3Mub1xuICAxMDpcdGlwdmxhbi1vYmpzIDo9IGlwdmxhbl9jb3JlLm8gaXB2bGFuX21haW4ubyAkKGlwdmxhbi1vYmpzLXkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2OTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYElQVkxBTmAgQ29uZmlndXJhdGlvbiBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gTG9va3MgbGlrZSBgSVBWTEFOYCBhbmQgYElORVRgIGFyZSBlc3NlbnRpYWwsIGFuZCBwb3NzaWJseSBgSVBWVEFQYCBvciBgSVBWTEFOX0wzU2AgZGVwZW5kaW5nIG9uIHRoZSB1c2UgY2FzZS4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIGRvZXMgdGhpcyBhcHBseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRT8gR29vZCBuZXdzLCBpdCYjMzk7cyBhIHNvZnR3YXJlIG5ldGRldmljZSBkcml2ZXIsIHNvIHllYWgsIGl0JiMzOTtzIGRlZmluaXRlbHkgYXBwbGljYWJsZS4gSSBjYW4gY3JlYXRlIGl0IHVzaW5nIHJ0bmwgb3IgbmV0bGluayBtZXNzYWdlcyDigJMgdGhhdCYjMzk7cyBhIGtleSBhZHZhbnRhZ2UgZm9yIGZ1enppbmcuCgpOb3csIGlzIHRoaXMgYWN0dWFsbHkgKndvcnRoKiBmdXp6aW5nPyBBYnNvbHV0ZWx5ISBUaGUgY29yZSBvZiB0aGlzIGlzIHRoZSB3YXkgaXQgaGFuZGxlcyBsb2NraW5nIGFuZCB0aGUgdW5yZWdpc3RyYXRpb24gZmxvdyBkdXJpbmcgZGV2aWNlIGV2ZW50cywgc3BlY2lmaWNhbGx5IGBORVRERVZfVU5SRUdJU1RFUmAgYW5kIGRldmljZSB0ZWFyZG93biwgZm9yIGlwdmxhbiBkZXZpY2VzLiBJdCYjMzk7cyBtb3ZpbmcgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlgIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24gb2YgYG11dGV4X3VubG9jaygmYW1wO3BvcnQtJmd0O3Bub2Rlc19sb2NrKWAuIFRoYXQmIzM5O3MgYSBodWdlIGZsYWcgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgZGlyZWN0bHkgaW1wYWN0aW5nIGxvY2tpbmcgaW52YXJpYW50cyBhbmQgY29uY3VycmVuY3kgaW4gdGhlIG5ldHdvcmsgc3RhY2sgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgYW5kIHdlIGtub3cgdGhpcyBpcyBhIGhpZ2hseSBzZW5zaXRpdmUgYXJlYS4gUmFjZSBjb25kaXRpb25zLCBVc2UtQWZ0ZXItRnJlZSwgYW5kIGRlYWRsb2NrcyBhcmUgYWxsIHZlcnkgbGlrZWx5IGhlcmUuCgpOZXh0IHN0ZXA6IGxldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBhbmQgZGV0ZXJtaW5lIHdoaWNoIGZ1bmN0aW9ucyB3aWxsIGJlIHRoZSBmb2N1cyBvZiB0aGUgZnV6emluZyBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgRm9jdXNTeW1ib2xzYCAtIHNwZWNpZmljYWxseSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBvciBub3RhYmxlIGZ1bmN0aW9ucyBpbiBgaXB2bGFuX21haW4uY2AuIEkgbmVlZCB0byBzZWFyY2ggdGhlIGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY2AgZmlsZSBmb3IgYWxsIHRoZSByZWxldmFudCBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX10uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwdmxhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU2OCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvaXB2bGFuL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGU6NjpvYmotJChDT05GSUdfSVBWTEFOKSAmIzQzOz0gaXB2bGFuLm9cbmRyaXZlcnMvbmV0L2lwdmxhbi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19JUFZUQVApICYjNDM7PSBpcHZ0YXAub1xuZHJpdmVycy9uZXQvaXB2bGFuL01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGU6OTppcHZsYW4tb2Jqcy0kKENPTkZJR19JUFZMQU5fTDNTKSAmIzQzOz0gaXB2bGFuX2wzcy5vXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGU6MTA6aXB2bGFuLW9ianMgOj0gaXB2bGFuX2NvcmUubyBpcHZsYW5fbWFpbi5vICQoaXB2bGFuLW9ianMteSlcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg9MTA2PXN0cnVjdCBpcHZsX3NrYl9jYiB7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTExMC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMTE6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXB2bF9wb3J0ICppcHZsYW5fcG9ydF9nZXRfcmN1KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTExMi17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTExNS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMTY6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXB2bF9wb3J0ICppcHZsYW5fcG9ydF9nZXRfcmN1X2JoKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTExNy17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEyMC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMjE6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXB2bF9wb3J0ICppcHZsYW5fcG9ydF9nZXRfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMjIte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMjUtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTI2OnN0YXRpYyBpbmxpbmUgYm9vbCBpcHZsYW5faXNfcHJpdmF0ZShjb25zdCBzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEyNy17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEzMC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMzE6c3RhdGljIGlubGluZSB2b2lkIGlwdmxhbl9tYXJrX3ByaXZhdGUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMzIte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMzUtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTM2OnN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fY2xlYXJfcHJpdmF0ZShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEzNy17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE0MC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNDE6c3RhdGljIGlubGluZSBib29sIGlwdmxhbl9pc192ZXBhKGNvbnN0IHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTQyLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTQ1LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE0NjpzdGF0aWMgaW5saW5lIHZvaWQgaXB2bGFuX21hcmtfdmVwYShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE0Ny17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE1MC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNTE6c3RhdGljIGlubGluZSB2b2lkIGlwdmxhbl9jbGVhcl92ZXBhKHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTU1LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE1Njp2b2lkIGlwdmxhbl9pbml0X3NlY3JldCh2b2lkKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNTc6dW5zaWduZWQgaW50IGlwdmxhbl9tYWNfaGFzaChjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNTg6cnhfaGFuZGxlcl9yZXN1bHRfdCBpcHZsYW5faGFuZGxlX2ZyYW1lKHN0cnVjdCBza19idWZmICoqcHNrYik7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTU5OnZvaWQgaXB2bGFuX3Byb2Nlc3NfbXVsdGljYXN0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTYwOmludCBpcHZsYW5fcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNjE6dm9pZCBpcHZsYW5faHRfYWRkcl9hZGQoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpcHZsX2FkZHIgKmFkZHIpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2MjpzdHJ1Y3QgaXB2bF9hZGRyICppcHZsYW5fZmluZF9hZGRyKGNvbnN0IHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE2My1cdFx0XHRcdCAgIGNvbnN0IHZvaWQgKmlhZGRyLCBib29sIGlzX3Y2KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNjQ6Ym9vbCBpcHZsYW5fYWRkcl9idXN5KHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQsIHZvaWQgKmlhZGRyLCBib29sIGlzX3Y2KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNjU6dm9pZCBpcHZsYW5faHRfYWRkcl9kZWwoc3RydWN0IGlwdmxfYWRkciAqYWRkcik7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTY2OnN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9hZGRyX2xvb2t1cChzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCB2b2lkICpseXIzaCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNjctXHRcdFx0XHQgICAgIGludCBhZGRyX3R5cGUsIGJvb2wgdXNlX2Rlc3QpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2ODp2b2lkICppcHZsYW5fZ2V0X0wzX2hkcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnR5cGUpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2OTp2b2lkIGlwdmxhbl9jb3VudF9yeChjb25zdCBzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNzAtXHRcdCAgICAgdW5zaWduZWQgaW50IGxlbiwgYm9vbCBzdWNjZXNzLCBib29sIG1jYXN0KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNzE6aW50IGlwdmxhbl9saW5rX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE3Mi1cdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTczOnZvaWQgX19pcHZsYW5fbGlua19kZWxldGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE3NC1cdFx0XHQgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3NTp2b2lkIGlwdmxhbl9saW5rX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3NjppbnQgaXB2bGFuX2xpbmtfcmVnaXN0ZXIoc3RydWN0IHJ0bmxfbGlua19vcHMgKm9wcyk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTc3LSNpZmRlZiBDT05GSUdfSVBWTEFOX0wzU1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3ODppbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNzk6dm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTgwOnZvaWQgaXB2bGFuX21pZ3JhdGVfbDNzX2hvb2soc3RydWN0IG5ldCAqb2xkbmV0LCBzdHJ1Y3QgbmV0ICpuZXduZXQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE4MTppbnQgaXB2bGFuX2wzc19pbml0KHZvaWQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE4Mjp2b2lkIGlwdmxhbl9sM3NfY2xlYW51cCh2b2lkKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xODMtI2Vsc2VcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxODQ6c3RhdGljIGlubGluZSBpbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE4NS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE4OC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxODk6c3RhdGljIGlubGluZSB2b2lkIGlwdmxhbl9sM3NfdW5yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE5MC17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE5Mi1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxOTM6c3RhdGljIGlubGluZSB2b2lkIGlwdmxhbl9taWdyYXRlX2wzc19ob29rKHN0cnVjdCBuZXQgKm9sZG5ldCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xOTQtXHRcdFx0XHRcdCAgIHN0cnVjdCBuZXQgKm5ld25ldClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTk3LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE5ODpzdGF0aWMgaW5saW5lIGludCBpcHZsYW5fbDNzX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xOTkte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0yMDItXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MjAzOnN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fbDNzX2NsZWFudXAodm9pZClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0yMDQte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0yMDctXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MjA4OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXRpZl9pc19pcHZsYW5fcG9ydChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTIwOS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTIxMy0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWVEFQKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjIxNDpleHRlcm4gdm9pZCAoKl9faXB2dGFwX2RlbGxpbmtfcHRyKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMjE1LVx0XHRcdFx0ICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jPTEwPXN0YXRpYyB1MzIgaXB2bGFuX2poYXNoX3NlY3JldCBfX3JlYWRfbW9zdGx5O1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTEtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMjp2b2lkIGlwdmxhbl9pbml0X3NlY3JldCh2b2lkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTMte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTE2LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MTc6dm9pZCBpcHZsYW5fY291bnRfcngoY29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xOC1cdFx0XHQgICAgdW5zaWduZWQgaW50IGxlbiwgYm9vbCBzdWNjZXNzLCBib29sIG1jYXN0KVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTMzLX1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjM0OkVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9jb3VudF9yeCk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zNS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTM2LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6Mzc6c3RhdGljIHU4IGlwdmxhbl9nZXRfdjZfaGFzaChjb25zdCB2b2lkICppYWRkcilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTM4LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy00NC0jZWxzZVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NDU6c3RhdGljIHU4IGlwdmxhbl9nZXRfdjZfaGFzaChjb25zdCB2b2lkICppYWRkcilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTQ2LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjUxOnN0YXRpYyB1OCBpcHZsYW5fZ2V0X3Y0X2hhc2goX19iZTMyIGFkZHIpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01Mi17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTYtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo1NzpzdGF0aWMgYm9vbCBhZGRyX2VxdWFsKGJvb2wgaXNfdjYsIHN0cnVjdCBpcHZsX2FkZHIgKmFkZHIsIGNvbnN0IHZvaWQgKmlhZGRyKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTgte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc0LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NzU6c3RhdGljIHN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9odF9hZGRyX2xvb2t1cDYoY29uc3Qgc3RydWN0IGlwdmxfcG9ydCAqcG9ydCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc2LVx0XHRcdFx0XHRcdGNvbnN0IHZvaWQgKmlhZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTg4LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6ODk6c3RhdGljIHN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9odF9hZGRyX2xvb2t1cDQoY29uc3Qgc3RydWN0IGlwdmxfcG9ydCAqcG9ydCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTkwLVx0XHRcdFx0XHRcdF9fYmUzMiBhZGRyNClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMDEtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMDI6dm9pZCBpcHZsYW5faHRfYWRkcl9hZGQoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpcHZsX2FkZHIgKmFkZHIpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMDMte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTExMy1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjExNDp2b2lkIGlwdmxhbl9odF9hZGRyX2RlbChzdHJ1Y3QgaXB2bF9hZGRyICphZGRyKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTE1LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMTgtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMTk6c3RydWN0IGlwdmxfYWRkciAqaXB2bGFuX2ZpbmRfYWRkcihjb25zdCBzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTEyMC1cdFx0XHRcdCAgIGNvbnN0IHZvaWQgKmlhZGRyLCBib29sIGlzX3Y2KVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTEzMi1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjEzMzpib29sIGlwdmxhbl9hZGRyX2J1c3koc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTE0OC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjE0OTp2b2lkICppcHZsYW5fZ2V0X0wzX2hkcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnR5cGUpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xNTAte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTIyOS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjIzMDp1bnNpZ25lZCBpbnQgaXB2bGFuX21hY19oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0yMzEte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTIzNy1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjIzODp2b2lkIGlwdmxhbl9wcm9jZXNzX211bHRpY2FzdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0yMzkte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTMxMS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjMxMjpzdGF0aWMgdm9pZCBpcHZsYW5fc2tiX2Nyb3NzaW5nX25zKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zMTMte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTMyMy1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjMyNDpzdGF0aWMgaW50IGlwdmxhbl9yY3ZfZnJhbWUoc3RydWN0IGlwdmxfYWRkciAqYWRkciwgc3RydWN0IHNrX2J1ZmYgKipwc2tiLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMzI1LVx0XHRcdCAgICBib29sIGxvY2FsKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTM2NS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjM2NjpzdHJ1Y3QgaXB2bF9hZGRyICppcHZsYW5fYWRkcl9sb29rdXAoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgdm9pZCAqbHlyM2gsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zNjctXHRcdFx0XHQgICAgIGludCBhZGRyX3R5cGUsIGJvb2wgdXNlX2Rlc3QpXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNDI3LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NDI4OnN0YXRpYyBub2lubGluZV9mb3Jfc3RhY2sgaW50IGlwdmxhbl9wcm9jZXNzX3Y0X291dGJvdW5kKHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy00Mjkte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jPTQ3Nj1zdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIGludFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NDc3Omlwdmxhbl9yb3V0ZV92Nl9vdXRib3VuZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNDc4LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MDEtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo1MDI6c3RhdGljIGludCBpcHZsYW5fcHJvY2Vzc192Nl9vdXRib3VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTAzLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MjktI2Vsc2VcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjUzMDpzdGF0aWMgaW50IGlwdmxhbl9wcm9jZXNzX3Y2X291dGJvdW5kKHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MzEte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTUzNS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjUzNjpzdGF0aWMgaW50IGlwdmxhbl9wcm9jZXNzX291dGJvdW5kKHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01Mzcte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTU3NC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjU3NTpzdGF0aWMgdm9pZCBpcHZsYW5fbXVsdGljYXN0X2VucXVldWUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTU3Ni1cdFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCB0eF9wa3QpXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjAyLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NjAzOnN0YXRpYyBpbnQgaXB2bGFuX3htaXRfbW9kZV9sMyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjA0LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy02MjktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo2MzA6c3RhdGljIGludCBpcHZsYW5feG1pdF9tb2RlX2wyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy02MzEte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTY3NC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjY3NTppbnQgaXB2bGFuX3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTY3Ni17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNzAyLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NzAzOnN0YXRpYyBib29sIGlwdmxhbl9leHRlcm5hbF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNzA0LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03MjItXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3MjM6c3RhdGljIHJ4X2hhbmRsZXJfcmVzdWx0X3QgaXB2bGFuX2hhbmRsZV9tb2RlX2wzKHN0cnVjdCBza19idWZmICoqcHNrYixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTcyNC1cdFx0XHRcdFx0XHQgc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03NDMtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3NDQ6c3RhdGljIHJ4X2hhbmRsZXJfcmVzdWx0X3QgaXB2bGFuX2hhbmRsZV9tb2RlX2wyKHN0cnVjdCBza19idWZmICoqcHNrYixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc0NS1cdFx0XHRcdFx0XHQgc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03ODAtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3ODE6cnhfaGFuZGxlcl9yZXN1bHRfdCBpcHZsYW5faGFuZGxlX2ZyYW1lKHN0cnVjdCBza19idWZmICoqcHNrYilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc4Mi17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0xMT1zdHJ1Y3QgaXB2bGFuX25ldG5zIHtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE0LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoxNTpzdGF0aWMgc3RydWN0IGlwdmxfYWRkciAqaXB2bGFuX3NrYl90b19hZGRyKHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE2LVx0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTM4LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzozOTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlwdmxhbl9sM19yY3Yoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtNDAtXHRcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiBwcm90bylcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jPTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbDNtZGV2X29wcyBpcHZsX2wzbWRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy05NC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6OTU6c3RhdGljIHVuc2lnbmVkIGludCBpcHZsYW5fbmZfaW5wdXQodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtOTYtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM9MTE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZfaG9va19vcHMgaXB2bF9uZm9wc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTMzLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoxMzQ6c3RhdGljIGludCBpcHZsYW5fcmVnaXN0ZXJfbmZfaG9vayhzdHJ1Y3QgbmV0ICpuZXQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTEzNS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xNTAtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjE1MTpzdGF0aWMgdm9pZCBpcHZsYW5fdW5yZWdpc3Rlcl9uZl9ob29rKHN0cnVjdCBuZXQgKm5ldClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE2My1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MTY0OnZvaWQgaXB2bGFuX21pZ3JhdGVfbDNzX2hvb2soc3RydWN0IG5ldCAqb2xkbmV0LCBzdHJ1Y3QgbmV0ICpuZXduZXQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE2NS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xNzctXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjE3ODpzdGF0aWMgdm9pZCBpcHZsYW5fbnNfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE3OS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYz0xODk9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcHZsYW5fbmV0X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE5NC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MTk1OmludCBpcHZsYW5fbDNzX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTk2LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE5OS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjAwOnZvaWQgaXB2bGFuX2wzc19jbGVhbnVwKHZvaWQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIwMS17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMDQtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjIwNTppbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMDYte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjIwLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoyMjE6dm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjIyLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWVEFQKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTE6dm9pZCAoKl9faXB2dGFwX2RlbGxpbmtfcHRyKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMi1cdFx0XHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTM6RVhQT1JUX1NZTUJPTChfX2lwdnRhcF9kZWxsaW5rX3B0cik7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xNC0jZW5kaWZcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE1LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTY6c3RhdGljIGludCBpcHZsYW5fc2V0X3BvcnRfbW9kZShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCB1MTYgbnZhbCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE3LVx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTczLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzQ6c3RhdGljIGludCBpcHZsYW5fcG9ydF9jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc1LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMTA6c3RhdGljIHZvaWQgaXB2bGFuX3BvcnRfZGVzdHJveShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTExLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMjktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMzA6c3RhdGljIHZvaWQgaXB2bGFuX3BvcnRfcHV0KHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMzEte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEzNS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEzNjpzdGF0aWMgc3RydWN0IGlwdmxfcG9ydCAqaXB2bGFuX3BvcnRfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMzcte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE2OC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjE2OTpzdGF0aWMgaW50IGlwdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xNzAte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTIxNS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjIxNjpzdGF0aWMgdm9pZCBpcHZsYW5fdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yMTcte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTIzMy1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjIzNDpzdGF0aWMgaW50IGlwdmxhbl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yMzUte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI1My1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjI1NDpzdGF0aWMgaW50IGlwdmxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yNTUte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI3MC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjI3MTpzdGF0aWMgbmV0ZGV2X3R4X3QgaXB2bGFuX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI3Mi1cdFx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yOTMtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoyOTQ6c3RhdGljIG5ldGRldl9mZWF0dXJlc190IGlwdmxhbl9maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI5NS1cdFx0XHRcdFx0ICAgICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zMDgtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozMDk6c3RhdGljIHZvaWQgaXB2bGFuX2NoYW5nZV9yeF9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgY2hhbmdlKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzEwLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zMTctXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozMTg6c3RhdGljIHZvaWQgaXB2bGFuX3NldF9tdWx0aWNhc3RfbWFjX2ZpbHRlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzE5LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zNDQtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozNDU6c3RhdGljIHZvaWQgaXB2bGFuX2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zNDYtXHRcdFx0ICAgICAgIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqcylcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zODUtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozODY6c3RhdGljIGludCBpcHZsYW5fdmxhbl9yeF9hZGRfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZClcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTM4Ny17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzkzLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Mzk0OnN0YXRpYyBpbnQgaXB2bGFuX3ZsYW5fcnhfa2lsbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgX19iZTE2IHByb3RvLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzk1LVx0XHRcdFx0ICAgdTE2IHZpZClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00MDMtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0MDQ6c3RhdGljIGludCBpcHZsYW5fZ2V0X2lmbGluayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDA1LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz00MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcHZsYW5fbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00MjUtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0MjY6c3RhdGljIGludCBpcHZsYW5faGFyZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQyNy1cdFx0XHQgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlLCBjb25zdCB2b2lkICpkYWRkcixcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz00NDE9c3RhdGljIGNvbnN0IHN0cnVjdCBoZWFkZXJfb3BzIGlwdmxhbl9oZWFkZXJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ0OC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjQ0OTpzdGF0aWMgdm9pZCBpcHZsYW5fYWRqdXN0X210dShzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ1MC17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDUzLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDU0OnN0YXRpYyBib29sIG5ldGlmX2lzX2lwdmxhbihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDU1LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00NTktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0NjA6c3RhdGljIGludCBpcHZsYW5fZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ2MS1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ2Ny1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjQ2ODpzdGF0aWMgdm9pZCBpcHZsYW5fZXRodG9vbF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDY5LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmRydmluZm8pXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDc0LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDc1OnN0YXRpYyB1MzIgaXB2bGFuX2V0aHRvb2xfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00NzYte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ4MS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjQ4MjpzdGF0aWMgdm9pZCBpcHZsYW5fZXRodG9vbF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHZhbHVlKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDgzLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz00ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpcHZsYW5fZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDk2LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDk3OnN0YXRpYyBpbnQgaXB2bGFuX25sX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ5OC1cdFx0XHRcdHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01MzItXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo1MzM6c3RhdGljIHNpemVfdCBpcHZsYW5fbmxfZ2V0c2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTM0LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01NDAtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo1NDE6c3RhdGljIGludCBpcHZsYW5fbmxfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTQyLVx0XHRcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01NjctXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo1Njg6c3RhdGljIGludCBpcHZsYW5fbmxfZmlsbGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTU2OS1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTU4OS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjU5MDppbnQgaXB2bGFuX2xpbmtfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01OTEtXHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzA2LX1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjcwNzpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19uZXcpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzA4LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzA5OnZvaWQgX19pcHZsYW5fbGlua19kZWxldGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzEwLVx0XHRcdCAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MjctfVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzI4OkVYUE9SVF9TWU1CT0woX19pcHZsYW5fbGlua19kZWxldGUpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzI5LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzMwOnN0YXRpYyB2b2lkIGlwdmxhbl9saW5rX2RlbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzMxLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MzktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3NDA6dm9pZCBpcHZsYW5fbGlua19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzQxLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NTEtfVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzUyOkVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9saW5rX3NldHVwKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc1My1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTc1ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaXB2bGFuX25sX3BvbGljeVtJRkxBX0lQVkxBTl9NQVggJiM0MzsgMV0gPVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc1OS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjc2MDpzdGF0aWMgc3RydWN0IG5ldCAqaXB2bGFuX2dldF9saW5rX25ldChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzYxLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz03Njc9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwdmxhbl9saW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NzYtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3Nzc6aW50IGlwdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03Nzgte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc4Ni19XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3ODc6RVhQT1JUX1NZTUJPTF9HUEwoaXB2bGFuX2xpbmtfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzg4LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Nzg5OnN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc5MC1cdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTkwNS0vKiB0aGUgY2FsbGVyIG11c3QgaGVsZCB0aGUgYWRkcnMgbG9jayAqL1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6OTA2OnN0YXRpYyBpbnQgaXB2bGFuX2FkZF9hZGRyKHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCB2b2lkICppYWRkciwgYm9vbCBpc192NilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTkwNy17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtOTM3LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6OTM4OnN0YXRpYyB2b2lkIGlwdmxhbl9kZWxfYWRkcihzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05Mzkte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk1NC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjk1NTpzdGF0aWMgYm9vbCBpcHZsYW5faXNfdmFsaWRfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05NTYte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk2OC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjk2OTpzdGF0aWMgaW50IGlwdmxhbl9hZGRfYWRkcjYoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpbjZfYWRkciAqaXA2X2FkZHIpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05NzAte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk4My1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjk4NDpzdGF0aWMgdm9pZCBpcHZsYW5fZGVsX2FkZHI2KHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCBzdHJ1Y3QgaW42X2FkZHIgKmlwNl9hZGRyKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtOTg1LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05ODgtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo5ODk6c3RhdGljIGludCBpcHZsYW5fYWRkcjZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05OTAtXHRcdFx0ICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwMTItXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMDEzOnN0YXRpYyBpbnQgaXB2bGFuX2FkZHI2X3ZhbGlkYXRvcl9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwMTQtXHRcdFx0XHRcdHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDM5LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTA0MDpzdGF0aWMgaW50IGlwdmxhbl9hZGRfYWRkcjQoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpbl9hZGRyICppcDRfYWRkcilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNDEte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNTQtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMDU1OnN0YXRpYyB2b2lkIGlwdmxhbl9kZWxfYWRkcjQoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpbl9hZGRyICppcDRfYWRkcilcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNTYte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNTktXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMDYwOnN0YXRpYyBpbnQgaXB2bGFuX2FkZHI0X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA2MS1cdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA4Ni1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwODc6c3RhdGljIGludCBpcHZsYW5fYWRkcjRfdmFsaWRhdG9yX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA4OC1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTExMzA9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBpcHZsYW5fYWRkcjZfdnRvcl9ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExMzQtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMTM1OnN0YXRpYyBpbnQgX19pbml0IGlwdmxhbl9pbml0X21vZHVsZSh2b2lkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTEzNi17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTE3Mi1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjExNzM6c3RhdGljIHZvaWQgX19leGl0IGlwdmxhbl9jbGVhbnVwX21vZHVsZSh2b2lkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTE3NC17XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTE4Ny1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI1NQoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAzODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVkxBTiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgc3ltYm9scyBpbnZvbHZlZC4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgLCB3aGljaCBpcyB0aGUgbW9kaWZpZWQgZnVuY3Rpb24sIGFuZCB0aGUgYG5ldGRldmAgbm90aWZpZXIgY2FsbGJhY2suIFRoZW4gdGhlcmUmIzM5O3MgYF9faXB2bGFuX2xpbmtfZGVsZXRlYCBhbmQgYGlwdmxhbl9saW5rX25ld2AuCgpGaXJzdCwgSSBjb25maXJtZWQgdGhhdCBgaXB2bGFuX2RldmljZV9ldmVudGAgaXMgaW5kZWVkIHN0YXRpYywgYmVpbmcgdGhlIG5vdGlmaWVyIGNhbGxiYWNrIHJlZ2lzdGVyZWQgd2l0aCBgcmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyYC4gTmV4dCwgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYGlwdmxhbl9saW5rX3JlZ2lzdGVyYCwgYGlwdmxhbl9saW5rX25ld2AsIGBfX2lwdmxhbl9saW5rX2RlbGV0ZWAsIGFuZCBgaXB2bGFuX2xpbmtfc2V0dXBgIGFyZSBub24tc3RhdGljIGFuZCBleHBvcnRlZCBzeW1ib2xzLiBUaGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGZ1bmN0aW9uIGhhcyBhIHN5bWJvbCBpZiBga2FsbHN5bXNgIGlzIHVzZWQuIEkmIzM5O2xsIG1ha2UgYSBtZW50YWwgbm90ZSB0byBjaGVjayBmb3Igb3RoZXIgZXhwb3J0ZWQgc3ltYm9scyBpbiB0aGUgYGlwdmxhbmAgbW9kdWxlLCBidXQgSSYjMzk7dmUgYWxyZWFkeSBpZGVudGlmaWVkIHRoZSBrZXkgcGxheWVyczogYGlwdmxhbl9kZXZpY2VfZXZlbnRgLCBgX19pcHZsYW5fbGlua19kZWxldGVgLCBhbmQgYGlwdmxhbl9saW5rX25ld2AuCgpOb3csIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llczogYENPTkZJR19JUFZMQU5gIGRlcGVuZHMgb24gYENPTkZJR19JTkVUYCwgYW5kIGJ5IGV4dGVuc2lvbiB0aGUgdW5kZXJseWluZyBuZXQgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb25zLiBTbywgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGRlZmluaXRlbHkgYElQVkxBTmAgYW5kIGBJTkVUYC4KCkZpbmFsbHksIHRoZSBjb250ZXh0IG9mIHRoZSBwYXRjaCBpdHNlbGYuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGhhbmRsZXIgZHVyaW5nIG5ldGRldmljZSB1bnJlZ2lzdHJhdGlvbiAoYE5FVERFVl9VTlJFR0lTVEVSYCkuIFRoZSBwcmltYXJ5IGNoYW5nZSBpcyBtb3ZpbmcgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlgIG91dHNpZGUgdGhlIGBwbm9kZXNfbG9ja2AgbXV0ZXguIFRoaXMgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gY29yZSBkcml2ZXIgdGVhcmRvd24gYW5kIGNvbmN1cnJlbmN5IGxvZ2ljLCBlc3BlY2lhbGx5IHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBkdWUgdG8gdGhlIHVzZSBvZiBJUFZMQU4gbmV0bGluayBpbnRlcmZhY2VzLgoKVGhlIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcsIGFuZCBJIGNhbiBjb25maXJtIHRoYXQgYnkgdGhlIHByZXNlbmNlIG9mIHJhY2UgY29uZGl0aW9ucyB0aGF0IGFyZSBpbnRyb2R1Y2VkIGJ5IHVucmVnaXN0ZXJpbmcgZGV2aWNlcyBmcm9tIGRpZmZlcmVudCB0aHJlYWRzIGFuZCB0aGUgbW9kaWZpZWQgY29uY3VycmVuY3kgbG9naWMgaW4gYSBjcnVjaWFsIHBhcnQgb2YgdGhlIGRyaXZlci4KCldpdGggdGhhdCwgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVkxBTiYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2bGFuX2RldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDtfX2lwdmxhbl9saW5rX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDtpcHZsYW5fbGlua19uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWTEFOJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHZsYW5fZGV2aWNlX2V2ZW50JiMzNDssCiAgICAmIzM0O19faXB2bGFuX2xpbmtfZGVsZXRlJiMzNDssCiAgICAmIzM0O2lwdmxhbl9saW5rX25ldyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSVBWTEFOIGRldmljZSBldmVudCBub3RpZmljYXRpb24gaGFuZGxlciAoaXB2bGFuX2RldmljZV9ldmVudCkgZHVyaW5nIE5FVERFVl9VTlJFR0lTVEVSIGJ5IG1vdmluZyB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KCkgb3V0c2lkZSBvZiB0aGUgcG9ydCBwbm9kZXNfbG9jayBjcml0aWNhbCBzZWN0aW9uIHRvIHByZXZlbnQgbmVzdGVkIG5vdGlmaWVyIGludm9jYXRpb25zIHVuZGVyIHRoZSBsb2NrLiBUaGlzIGFmZmVjdHMgY29uY3VycmVuY3ksIGxvY2tpbmcsIGFuZCBkZXZpY2UgdGVhcmRvd24gbG9naWMgaW4gdGhlIHZpcnR1YWwgSVBWTEFOIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBzdGFuZGFyZCBuZXRsaW5rIGNvbW1hbmRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcdTAwMjZsc3Rfa2lsbCkgb3V0c2lkZSBvZiB0aGUgcG9ydC1cdTAwM2Vwbm9kZXNfbG9jayBjcml0aWNhbCBzZWN0aW9uIGluIGlwdmxhbl9kZXZpY2VfZXZlbnQoKSB0byBwcmV2ZW50IGNhbGxpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgd2hpbGUgaG9sZGluZyB0aGUgbXV0ZXguXG5cblRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhZGp1c3RtZW50IGFpbWVkIGF0IHByZXZlbnRpbmcgZGVhZGxvY2tzIC8gbG9ja2RlcCB3YXJuaW5ncy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgdXNlci1zcGFjZSBjb3BpZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLiBBbnkgcG90ZW50aWFsIGNvbmN1cnJlbmN5IG9yIGxpZmVjeWNsZSBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyMDJiM2JkYjI1MmZhZGZmOGQ3N2M1NDRkMzlkYzYxYjlkMjc1ZDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAyOCAxODowMDozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jIGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKaW5kZXggZWU0NmE1NWY3M2QxNC4uMmQ0MzQwNjI3Y2E2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKQEAgLTg0Niw3ICYjNDM7ODQ2LDYgQEAgc3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLAogCQkJCV9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLSZndDtkZXYsICZhbXA7bHN0X2tpbGwpOwogCQl9CiAKLQkJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgmYW1wO2xzdF9raWxsKTsKIAkJYnJlYWs7CiAJfQogCWNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOgpAQCAtODk1LDYgJiM0Mzs4OTQsOSBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsCiAKIAltdXRleF91bmxvY2soJmFtcDtwb3J0LSZndDtwbm9kZXNfbG9jayk7CiAKJiM0MzsJLyogQXZvaWQgaW52b2tpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgdW5kZXIgcG5vZGVzX2xvY2suICovCiYjNDM7CXVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmFtcDtsc3Rfa2lsbCk7CiYjNDM7CiAJaXB2bGFuX3BvcnRfcHV0KHBvcnQpOwogCiAJcmV0dXJuIHJldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE4OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgUGF0Y2gqKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBUaGUgdGFzayBpcyB0byBhbmFseXplIGEgcGF0Y2gsIHdoaWNoIG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2UgaXRzZWxmLCBidXQgZXZlbiBtb3JlIGltcG9ydGFudGx5LCB0aGUgY29udGV4dCBzdXJyb3VuZGluZyBpdC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGFsd2F5cyBzdGFydCBieSBnb2luZyBiYWNrIHRvIHRoZSBzb3VyY2UgY29kZSB0byBjb25maXJtIG15IGh5cG90aGVzZXMuCgpGaXJzdCwgSSYjMzk7bSBnb2luZyB0byBwdWxsIHVwIGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY2AsIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiB0aGUgcmVnaW9uIGFyb3VuZCBsaW5lcyA4NDYtOTAwLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZyBpbiB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBvZiBjb2RlLiBVc2luZyBgcmVhZC1maWxlYCB3aWxsIGFsbG93IG1lIHRvIHByZWNpc2VseSBleGFtaW5lIHRoYXQgc2VjdGlvbiwgdW5kZXJzdGFuZGluZyB3aGF0IHRoZSBjb3JlIGZ1bmN0aW9uIGlzIGRvaW5nLCBhbmQgdGhlIHZhcmlhYmxlIG1hbmlwdWxhdGlvbnMuCgpUaGlzIHByZWxpbWluYXJ5IHJldmlldyBpcyBlc3NlbnRpYWwgdG8gZ3JvdW5kIG15IHVuZGVyc3RhbmRpbmcgYW5kIGVzdGFibGlzaCBhIGJhc2VsaW5lIGJlZm9yZSBleGFtaW5pbmcgdGhlIHBhdGNoIG1vcmUgY2xvc2VseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA5MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODIwOlx0XHRcdHN0cnVjdCBuZXQgKm9sZG5ldCwgKm5ld25ldCA9IGRldl9uZXQoZGV2KTtcbiA4MjE6XHRcbiA4MjI6XHRcdFx0b2xkbmV0ID0gcmVhZF9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCk7XG4gODIzOlx0XHRcdGlmIChuZXRfZXEobmV3bmV0LCBvbGRuZXQpKVxuIDgyNDpcdFx0XHRcdGJyZWFrO1xuIDgyNTpcdFxuIDgyNjpcdFx0XHR3cml0ZV9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCwgbmV3bmV0KTtcbiA4Mjc6XHRcbiA4Mjg6XHRcdFx0aWYgKHBvcnQtXHUwMDNlbW9kZSA9PSBJUFZMQU5fTU9ERV9MM1MpXG4gODI5Olx0XHRcdFx0aXB2bGFuX21pZ3JhdGVfbDNzX2hvb2sob2xkbmV0LCBuZXduZXQpO1xuIDgzMDpcdFx0XHRicmVhaztcbiA4MzE6XHRcdH1cbiA4MzI6XHRcdGNhc2UgTkVUREVWX1VOUkVHSVNURVI6IHtcbiA4MzM6XHRcdFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChkZXYpO1xuIDgzNDpcdFxuIDgzNTpcdFx0XHRpZiAoZGV2LVx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfVU5SRUdJU1RFUklORylcbiA4MzY6XHRcdFx0XHRicmVhaztcbiA4Mzc6XHRcbiA4Mzg6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGlwdmxhbiwgbmV4dCwgXHUwMDI2cG9ydC1cdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xuIDgzOTpcdFx0XHRcdGlwdmxhbi1cdTAwM2VkeWluZyA9IHRydWU7XG4gODQwOlx0XG4gODQxOlx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVlRBUClcbiA4NDI6XHRcdFx0XHRpZiAoaXB2bGFuLVx1MDAzZWRldi1cdTAwM2VydG5sX2xpbmtfb3BzICE9IFx1MDAyNmlwdmxhbl9saW5rX29wcylcbiA4NDM6XHRcdFx0XHRcdF9faXB2dGFwX2RlbGxpbmtfcHRyKG5ldCwgaXB2bGFuLVx1MDAzZWRldiwgXHUwMDI2bHN0X2tpbGwpO1xuIDg0NDpcdFx0XHRcdGVsc2VcbiA4NDU6XHQjZW5kaWZcbiA4NDY6XHRcdFx0XHRcdF9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLVx1MDAzZWRldiwgXHUwMDI2bHN0X2tpbGwpO1xuIDg0NzpcdFx0XHR9XG4gODQ4Olx0XG4gODQ5Olx0XHRcdGJyZWFrO1xuIDg1MDpcdFx0fVxuIDg1MTpcdFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XG4gODUyOlx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcdTAwMjZwb3J0LVx1MDAzZWlwdmxhbnMsIHBub2RlKSB7XG4gODUzOlx0XHRcdFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGlwdmxhbi1cdTAwM2VkZXYsIGRldik7XG4gODU0Olx0XHRcdFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhpcHZsYW4tXHUwMDNlZGV2KTtcbiA4NTU6XHRcdFx0fVxuIDg1NjpcdFx0XHRicmVhaztcbiA4NTc6XHRcbiA4NTg6XHRcdGNhc2UgTkVUREVWX0NIQU5HRU1UVTpcbiA4NTk6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpXG4gODYwOlx0XHRcdFx0aXB2bGFuX2FkanVzdF9tdHUoaXB2bGFuLCBkZXYpO1xuIDg2MTpcdFx0XHRicmVhaztcbiA4NjI6XHRcbiA4NjM6XHRcdGNhc2UgTkVUREVWX1BSRV9DSEFOR0VBRERSOlxuIDg2NDpcdFx0XHRwcmVjaGFkZHJfaW5mbyA9IHB0cjtcbiA4NjU6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcbiA4NjY6XHRcdFx0XHRlcnIgPSBuZXRpZl9wcmVfY2hhbmdlYWRkcl9ub3RpZnkoaXB2bGFuLVx1MDAzZWRldixcbiA4Njc6XHRcdFx0XHRcdFx0XHRcdCAgcHJlY2hhZGRyX2luZm8tXHUwMDNlZGV2X2FkZHIsXG4gODY4Olx0XHRcdFx0XHRcdFx0XHQgIGV4dGFjayk7XG4gODY5Olx0XHRcdFx0aWYgKGVycikge1xuIDg3MDpcdFx0XHRcdFx0cmV0ID0gbm90aWZpZXJfZnJvbV9lcnJubyhlcnIpO1xuIDg3MTpcdFx0XHRcdFx0YnJlYWs7XG4gODcyOlx0XHRcdFx0fVxuIDg3MzpcdFx0XHR9XG4gODc0Olx0XHRcdGJyZWFrO1xuIDg3NTpcdFxuIDg3NjpcdFx0Y2FzZSBORVRERVZfQ0hBTkdFQUREUjpcbiA4Nzc6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcbiA4Nzg6XHRcdFx0XHRldGhfaHdfYWRkcl9zZXQoaXB2bGFuLVx1MDAzZWRldiwgZGV2LVx1MDAzZWRldl9hZGRyKTtcbiA4Nzk6XHRcdFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGlwdmxhbi1cdTAwM2VkZXYpO1xuIDg4MDpcdFx0XHR9XG4gODgxOlx0XHRcdGJyZWFrO1xuIDg4MjpcdFxuIDg4MzpcdFx0Y2FzZSBORVRERVZfUFJFX1RZUEVfQ0hBTkdFOlxuIDg4NDpcdFx0XHQvKiBGb3JiaWQgdW5kZXJseWluZyBkZXZpY2UgdG8gY2hhbmdlIGl0cyB0eXBlLiAqL1xuIDg4NTpcdFx0XHRyZXQgPSBOT1RJRllfQkFEO1xuIDg4NjpcdFx0XHRicmVhaztcbiA4ODc6XHRcbiA4ODg6XHRcdGNhc2UgTkVUREVWX05PVElGWV9QRUVSUzpcbiA4ODk6XHRcdGNhc2UgTkVUREVWX0JPTkRJTkdfRkFJTE9WRVI6XG4gODkwOlx0XHRjYXNlIE5FVERFVl9SRVNFTkRfSUdNUDpcbiA4OTE6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFx1MDAyNnBvcnQtXHUwMDNlaXB2bGFucywgcG5vZGUpXG4gODkyOlx0XHRcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKGV2ZW50LCBpcHZsYW4tXHUwMDNlZGV2KTtcbiA4OTM6XHRcdH1cbiA4OTQ6XHRcbiA4OTU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKTtcbiA4OTY6XHRcbiA4OTc6XHRcdC8qIEF2b2lkIGludm9raW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHVuZGVyIHBub2Rlc19sb2NrLiAqL1xuIDg5ODpcdFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcdTAwMjZsc3Rfa2lsbCk7XG4gODk5Olx0XG4gOTAwOlx0XHRpcHZsYW5fcG9ydF9wdXQocG9ydCk7XG4gOTAxOlx0XG4gOTAyOlx0XHRyZXR1cm4gcmV0O1xuIDkwMzpcdH1cbiA5MDQ6XHRcbiA5MDU6XHQvKiB0aGUgY2FsbGVyIG11c3QgaGVsZCB0aGUgYWRkcnMgbG9jayAqL1xuIDkwNjpcdHN0YXRpYyBpbnQgaXB2bGFuX2FkZF9hZGRyKHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCB2b2lkICppYWRkciwgYm9vbCBpc192NilcbiA5MDc6XHR7XG4gOTA4Olx0XHRzdHJ1Y3QgaXB2bF9hZGRyICphZGRyO1xuIDkwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzg3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcsIHdoZXJlIGRvIHdlIGtpY2sgb2ZmIGFuZCB3aGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCBoZXJlPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBgaXB2bGFuX2RldmljZV9ldmVudGAgZnVuY3Rpb24gY29tZXMgaW50byBwbGF5LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGluZ3MgYXJlIHNldCB1cCBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgaXRzIGV4ZWN1dGlvbiBmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBicm9hZGVyIHN5c3RlbSwgYW5kIGhvdyBpdCBpcyBjYWxsZWQgYXMgYSBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzkwOlx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcbiA3OTE6XHR7XG4gNzkyOlx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2sgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19leHRhY2socHRyKTtcbiA3OTM6XHRcdHN0cnVjdCBuZXRkZXZfbm90aWZpZXJfcHJlX2NoYW5nZWFkZHJfaW5mbyAqcHJlY2hhZGRyX2luZm87XG4gNzk0Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XG4gNzk1Olx0XHRzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgKm5leHQ7XG4gNzk2Olx0XHRpbnQgZXJyLCByZXQgPSBOT1RJRllfRE9ORTtcbiA3OTc6XHRcdHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQ7XG4gNzk4Olx0XHRMSVNUX0hFQUQobHN0X2tpbGwpO1xuIDc5OTpcdFxuIDgwMDpcdFx0aWYgKGV2ZW50ID09IE5FVERFVl9QUkVDSEFOR0VVUFBFUiB8fFxuIDgwMTpcdFx0ICAgIGV2ZW50ID09IE5FVERFVl9DSEFOR0VVUFBFUilcbiA4MDI6XHRcdFx0cmV0dXJuIHJldDtcbiA4MDM6XHRcbiA4MDQ6XHRcdHBvcnQgPSBpcHZsYW5fcG9ydF9nZXQoZGV2KTtcbiA4MDU6XHRcdGlmICghcG9ydClcbiA4MDY6XHRcdFx0cmV0dXJuIHJldDtcbiA4MDc6XHRcbiA4MDg6XHRcdG11dGV4X2xvY2soXHUwMDI2cG9ydC1cdTAwM2Vwbm9kZXNfbG9jayk7XG4gODA5Olx0XG4gODEwOlx0XHRzd2l0Y2ggKGV2ZW50KSB7XG4gODExOlx0XHRjYXNlIE5FVERFVl9VUDpcbiA4MTI6XHRcdGNhc2UgTkVUREVWX0RPV046XG4gODEzOlx0XHRjYXNlIE5FVERFVl9DSEFOR0U6XG4gODE0Olx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcdTAwMjZwb3J0LVx1MDAzZWlwdmxhbnMsIHBub2RlKVxuIDgxNTpcdFx0XHRcdG5ldGlmX3N0YWNrZWRfdHJhbnNmZXJfb3BlcnN0YXRlKGlwdmxhbi1cdTAwM2VwaHlfZGV2LFxuIDgxNjpcdFx0XHRcdFx0XHRcdFx0IGlwdmxhbi1cdTAwM2VkZXYpO1xuIDgxNzpcdFx0XHRicmVhaztcbiA4MTg6XHRcbiA4MTk6XHRcdGNhc2UgTkVUREVWX1JFR0lTVEVSOiB7XG4gODIwOlx0XHRcdHN0cnVjdCBuZXQgKm9sZG5ldCwgKm5ld25ldCA9IGRldl9uZXQoZGV2KTtcbiA4MjE6XHRcbiA4MjI6XHRcdFx0b2xkbmV0ID0gcmVhZF9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCk7XG4gODIzOlx0XHRcdGlmIChuZXRfZXEobmV3bmV0LCBvbGRuZXQpKVxuIDgyNDpcdFx0XHRcdGJyZWFrO1xuIDgyNTpcdFxuIDgyNjpcdFx0XHR3cml0ZV9wbmV0KFx1MDAyNnBvcnQtXHUwMDNlcG5ldCwgbmV3bmV0KTtcbiA4Mjc6XHRcbiA4Mjg6XHRcdFx0aWYgKHBvcnQtXHUwMDNlbW9kZSA9PSBJUFZMQU5fTU9ERV9MM1MpXG4gODI5Olx0XHRcdFx0aXB2bGFuX21pZ3JhdGVfbDNzX2hvb2sob2xkbmV0LCBuZXduZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTk1CgkJCQkJCQlvdXRwdXQ6IDE0NQoJCQkJCQkJdGhvdWdodHM6IDUzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQdmxhbiBQYXRjaCBmb3IgU2FmZXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBjb25jdXJyZW5jeSBmaXggd2l0aGluIHRoZSBgaXB2bGFuX2RldmljZV9ldmVudCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGNhbGwgdG8gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmFtcDtsc3Rfa2lsbClgIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24gcHJvdGVjdGVkIGJ5IGBwb3J0LSZndDtwbm9kZXNfbG9ja2AuIFRoZSByYXRpb25hbGU/IFRvIHByZXZlbnQgbmVzdGVkIG5ldGRldmljZSBub3RpZmllciBpbnZvY2F0aW9ucyB3aGlsZSBob2xkaW5nIHRoYXQgbG9jaywgd2hpY2ggY291bGQgbGVhZCB0byBkZWFkbG9ja3Mg4oCTIGEgY2xhc3NpYyByZWNpcGUgZm9yIHRyb3VibGUuCgpGcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgc3BlY2lhbGlzdCwgdGhlIGNvZGUgaXMgdmVyeSBlYXN5IHRvIHJlYWQuIGBMSVNUX0hFQUQobHN0X2tpbGwpO2AgaXMgaW5pdGlhbGl6ZWQgb24gbGluZSA3OTgsIGFuZCB0aGUgcGF0Y2ggc2ltcGx5IHNoaWZ0cyB0aGUgbG9jYXRpb24gb2YgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmFtcDtsc3Rfa2lsbCk7YC4gSW1wb3J0YW50bHksIGlmIGBsc3Rfa2lsbGAgcmVtYWlucyBlbXB0eSBmb3IgZXZlbnRzIG90aGVyIHRoYW4gYE5FVERFVl9VTlJFR0lTVEVSYCwgb3IgaWYgbm8gZGV2aWNlcyBhcmUgYWRkZWQsIHRoaXMgb3BlcmF0aW9uIGJlY29tZXMgYSBuby1vcCBkdWUgdG8gYGxpc3RfZW1wdHkoJmFtcDtsc3Rfa2lsbClgLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogZG9lcyB0aGlzIGludHJvZHVjZSBhbnkgbWVtb3J5IHNhZmV0eSBjb25jZXJucz8gTm8uCgoqICAgRG9lcyBpdCBpbnZvbHZlIGFueSB1c2VyLWtlcm5lbCBkYXRhIGNvcHlpbmc/IE5vLgoqICAgRG9lcyBpdCB0b3VjaCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vOyB0aGUgYGxzdF9raWxsYCBsaXN0IGlzIHByb3Blcmx5IGluaXRpYWxpemVkLgoqICAgRG9lcyBpdCBpbnRyb2R1Y2UgbmV3IGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uCiogICBEb2VzIGl0IG1vZGlmeSBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9uIG9yIGluaXRpYWxpemUgdW5pbml0aWFsaXplZCBmaWVsZHM/IE5vLgoqICAgRG9lcyBpdCB0b3VjaCBhbnkgYm91bmRzIGNoZWNrcyBvciBsZW5ndGggY2FsY3VsYXRpb25zPyBOby4KClRoZSBwYXRjaCAqZXhwbGljaXRseSogYWRkcmVzc2VzIGxvY2tpbmcgYW5kIGRlYWRsb2NrIGNvbmNlcm5zLiBNeSBleHBlcnQgb3BpbmlvbiBpcyB0aGF0IHRoaXMgaXMgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGEgY29uY3VycmVuY3kgZml4LCBkZXNpZ25lZCB0byBhdm9pZCBsb2NrIGludmVyc2lvbiBvciBkZWFkbG9jayBpc3N1ZXMsIGFzIGNvbmZpcm1lZCBieSBpbnNwZWN0aW5nIHRoZSBjb2RlLCBhbmQgaG93IHRoZSBjaGFuZ2VzIGZpdCBpbi4KClRoZSBsb2NraW5nIGlzc3VlcyBhcmUgbWFuYWdlZCBieSBMT0NLREVQLCBhbmQgbGlmZWN5Y2xlL21lbW9yeSBzYWZldHkgYXNwZWN0cyBhcmUgbWFuYWdlZCBieSBLQVNBTi4gVGhpcyBjaGFuZ2UgaXMgZW50aXJlbHkgZm9jdXNlZCBvbiBzeW5jaHJvbml6YXRpb24gYW5kIGRvZXNuJiMzOTt0IHRvdWNoIG1lbW9yeSBzYWZldHkgaW4gYW55IHdheS4KClNvLCB0byBzdW1tYXJpemUgc3VjY2luY3RseTogVGhpcyBwYXRjaCBpcyBhIGxvY2tpbmcvY29uY3VycmVuY3kgcmVmYWN0b3IgdG8gYXZvaWQgbG9jayByZWN1cnNpb24sIGFuZCB0aHVzIGlzIGEgY2FzZSB3aGVyZSBgTmVlZHNLTVNBTmAgaXMgZmFsc2UsIGFzIEtBU0FOIGlzIGZvciBsaWZlY3ljbGUgcHJvYmxlbXMsIHdoaWxlIExPQ0tERVAgaXMgZm9yIGxvY2sgcHJvYmxlbXMsIHdoaWNoIGlzIHRoZSBjcnV4IG9mIHRoZSBjdXJyZW50IHBhdGNoLiBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGlzIGlzIHRoZSBjb25jbHVzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKSBvdXRzaWRlIG9mIHRoZSBwb3J0LVx1MDAzZXBub2Rlc19sb2NrIGNyaXRpY2FsIHNlY3Rpb24gaW4gaXB2bGFuX2RldmljZV9ldmVudCgpIHRvIHByZXZlbnQgY2FsbGluZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB3aGlsZSBob2xkaW5nIHRoZSBtdXRleC5cblxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFkanVzdG1lbnQgYWltZWQgYXQgcHJldmVudGluZyBkZWFkbG9ja3MgLyBsb2NrZGVwIHdhcm5pbmdzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCB1c2VyLXNwYWNlIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMuIEFueSBwb3RlbnRpYWwgY29uY3VycmVuY3kgb3IgbGlmZWN5Y2xlIGlzc3VlcyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXHUwMDI2bHN0X2tpbGwpIG91dHNpZGUgb2YgdGhlIHBvcnQtXHUwMDNlcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiBpbiBpcHZsYW5fZGV2aWNlX2V2ZW50KCkgdG8gcHJldmVudCBjYWxsaW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHdoaWxlIGhvbGRpbmcgdGhlIG11dGV4LlxuXG5UaGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gYWRqdXN0bWVudCBhaW1lZCBhdCBwcmV2ZW50aW5nIGRlYWRsb2NrcyAvIGxvY2tkZXAgd2FybmluZ3MuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIHVzZXItc3BhY2UgY29waWVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocy4gQW55IHBvdGVudGlhbCBjb25jdXJyZW5jeSBvciBsaWZlY3ljbGUgaXNzdWVzIGFyZSBjb3ZlcmVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMDozMi4yODAyOTM3NTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODQwODIwNDA1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWTEFOXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXB2bGFuX2RldmljZV9ldmVudFwiLFxuICAgIFwiX19pcHZsYW5fbGlua19kZWxldGVcIixcbiAgICBcImlwdmxhbl9saW5rX25ld1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcXHUwMDI2bHN0X2tpbGwpIG91dHNpZGUgb2YgdGhlIHBvcnQtXFx1MDAzZXBub2Rlc19sb2NrIGNyaXRpY2FsIHNlY3Rpb24gaW4gaXB2bGFuX2RldmljZV9ldmVudCgpIHRvIHByZXZlbnQgY2FsbGluZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB3aGlsZSBob2xkaW5nIHRoZSBtdXRleC5cXG5cXG5UaGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gYWRqdXN0bWVudCBhaW1lZCBhdCBwcmV2ZW50aW5nIGRlYWRsb2NrcyAvIGxvY2tkZXAgd2FybmluZ3MuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIHVzZXItc3BhY2UgY29waWVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocy4gQW55IHBvdGVudGlhbCBjb25jdXJyZW5jeSBvciBsaWZlY3ljbGUgaXNzdWVzIGFyZSBjb3ZlcmVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUFZMQU4gZGV2aWNlIGV2ZW50IG5vdGlmaWNhdGlvbiBoYW5kbGVyIChpcHZsYW5fZGV2aWNlX2V2ZW50KSBkdXJpbmcgTkVUREVWX1VOUkVHSVNURVIgYnkgbW92aW5nIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoKSBvdXRzaWRlIG9mIHRoZSBwb3J0IHBub2Rlc19sb2NrIGNyaXRpY2FsIHNlY3Rpb24gdG8gcHJldmVudCBuZXN0ZWQgbm90aWZpZXIgaW52b2NhdGlvbnMgdW5kZXIgdGhlIGxvY2suIFRoaXMgYWZmZWN0cyBjb25jdXJyZW5jeSwgbG9ja2luZywgYW5kIGRldmljZSB0ZWFyZG93biBsb2dpYyBpbiB0aGUgdmlydHVhbCBJUFZMQU4gZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIG5ldGxpbmsgY29tbWFuZHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAwOjMyLjI4MDI5OTkxNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0OTA4Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjIwMmIzYmRiMjUyZmFkZmY4ZDc3YzU0NGQzOWRjNjFiOWQyNzVkNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyOCAxODowMDozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXFxuaW5kZXggZWU0NmE1NWY3M2QxNC4uMmQ0MzQwNjI3Y2E2NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXFxuQEAgLTg0Niw3ICs4NDYsNiBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuIFxcdFxcdFxcdFxcdF9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLVxcdTAwM2VkZXYsIFxcdTAwMjZsc3Rfa2lsbCk7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXFx1MDAyNmxzdF9raWxsKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XFxuQEAgLTg5NSw2ICs4OTQsOSBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuIFxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnBvcnQtXFx1MDAzZXBub2Rlc19sb2NrKTtcXG4gXFxuK1xcdC8qIEF2b2lkIGludm9raW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHVuZGVyIHBub2Rlc19sb2NrLiAqL1xcbitcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFxcdTAwMjZsc3Rfa2lsbCk7XFxuK1xcbiBcXHRpcHZsYW5fcG9ydF9wdXQocG9ydCk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMDozMi43NjYxNjU0ODlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE0OTQxNDY1NDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFZMQU5cIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHZsYW5fZGV2aWNlX2V2ZW50XCIsXG4gICAgXCJfX2lwdmxhbl9saW5rX2RlbGV0ZVwiLFxuICAgIFwiaXB2bGFuX2xpbmtfbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjIwMmIzYmRiMjUyZmFkZmY4ZDc3YzU0NGQzOWRjNjFiOWQyNzVkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDI4IDE4OjAwOjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMgYi9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xuaW5kZXggZWU0NmE1NWY3M2QxNC4uMmQ0MzQwNjI3Y2E2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xuQEAgLTg0Niw3ICs4NDYsNiBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG4gXHRcdFx0XHRfX2lwdmxhbl9saW5rX2RlbGV0ZShuZXQsIGlwdmxhbi1cdTAwM2VkZXYsIFx1MDAyNmxzdF9raWxsKTtcbiBcdFx0fVxuIFxuLVx0XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRjYXNlIE5FVERFVl9GRUFUX0NIQU5HRTpcbkBAIC04OTUsNiArODk0LDkgQEAgc3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuIFxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBvcnQtXHUwMDNlcG5vZGVzX2xvY2spO1xuIFxuK1x0LyogQXZvaWQgaW52b2tpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgdW5kZXIgcG5vZGVzX2xvY2suICovXG4rXHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxzdF9raWxsKTtcbitcbiBcdGlwdmxhbl9wb3J0X3B1dChwb3J0KTtcbiBcbiBcdHJldHVybiByZXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMDozMi43NjYxNjc5NjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MDQ0NjI3Mjk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvZGUgTW9kaWZpY2F0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQncyBjaGFuZ2VkLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGluc3BlY3QgdGhlIGRpZmY7IHRoYXQgc2hvdWxkIHByb3ZpZGUgYSBjbGVhciBwaWN0dXJlLiBUaGUgcGF0Y2ggdG91Y2hlcyBgaXB2bGFuX21haW4uY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvaXB2bGFuYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGZ1bmN0aW9uLlxuXG5UbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLCBJJ2xsIHVzZSBgcmVhZC1maWxlYCB0byB6ZXJvIGluIG9uIGxpbmVzIDg0Ni05MDAgb2YgYGlwdmxhbl9tYWluLmNgLiBUaGlzIHJlZ2lvbiBpcyBsaWtlbHkgd2hlcmUgdGhlIG1vZGlmaWNhdGlvbiBpcyBoYXBwZW5pbmcgb3IgaW50ZXJhY3Rpbmcgd2l0aC4gVW5kZXJzdGFuZGluZyB0aGUgc3Vycm91bmRpbmcgY29kZSB3aWxsIGJlIGNyaXRpY2FsIGluIGdyYXNwaW5nIHRoZSBpbnRlbnQgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhlIHBhdGNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVlbiBjaGFuZ2VkLCB3aHkgaXQgd2FzIGNoYW5nZWQsIGFuZCB3aGF0IGl0IGVmZmVjdHMgaW4gdGhlIGxhcmdlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAxOjIzLjIxMjQ0NjM1M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MjAsXG4gIFwiTGluZUNvdW50XCI6IDkwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4MjA6XFx0XFx0XFx0c3RydWN0IG5ldCAqb2xkbmV0LCAqbmV3bmV0ID0gZGV2X25ldChkZXYpO1xcbiA4MjE6XFx0XFxuIDgyMjpcXHRcXHRcXHRvbGRuZXQgPSByZWFkX3BuZXQoXFx1MDAyNnBvcnQtXFx1MDAzZXBuZXQpO1xcbiA4MjM6XFx0XFx0XFx0aWYgKG5ldF9lcShuZXduZXQsIG9sZG5ldCkpXFxuIDgyNDpcXHRcXHRcXHRcXHRicmVhaztcXG4gODI1OlxcdFxcbiA4MjY6XFx0XFx0XFx0d3JpdGVfcG5ldChcXHUwMDI2cG9ydC1cXHUwMDNlcG5ldCwgbmV3bmV0KTtcXG4gODI3OlxcdFxcbiA4Mjg6XFx0XFx0XFx0aWYgKHBvcnQtXFx1MDAzZW1vZGUgPT0gSVBWTEFOX01PREVfTDNTKVxcbiA4Mjk6XFx0XFx0XFx0XFx0aXB2bGFuX21pZ3JhdGVfbDNzX2hvb2sob2xkbmV0LCBuZXduZXQpO1xcbiA4MzA6XFx0XFx0XFx0YnJlYWs7XFxuIDgzMTpcXHRcXHR9XFxuIDgzMjpcXHRcXHRjYXNlIE5FVERFVl9VTlJFR0lTVEVSOiB7XFxuIDgzMzpcXHRcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KGRldik7XFxuIDgzNDpcXHRcXG4gODM1OlxcdFxcdFxcdGlmIChkZXYtXFx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfVU5SRUdJU1RFUklORylcXG4gODM2OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA4Mzc6XFx0XFxuIDgzODpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXB2bGFuLCBuZXh0LCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcXG4gODM5OlxcdFxcdFxcdFxcdGlwdmxhbi1cXHUwMDNlZHlpbmcgPSB0cnVlO1xcbiA4NDA6XFx0XFxuIDg0MTpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWVEFQKVxcbiA4NDI6XFx0XFx0XFx0XFx0aWYgKGlwdmxhbi1cXHUwMDNlZGV2LVxcdTAwM2VydG5sX2xpbmtfb3BzICE9IFxcdTAwMjZpcHZsYW5fbGlua19vcHMpXFxuIDg0MzpcXHRcXHRcXHRcXHRcXHRfX2lwdnRhcF9kZWxsaW5rX3B0cihuZXQsIGlwdmxhbi1cXHUwMDNlZGV2LCBcXHUwMDI2bHN0X2tpbGwpO1xcbiA4NDQ6XFx0XFx0XFx0XFx0ZWxzZVxcbiA4NDU6XFx0I2VuZGlmXFxuIDg0NjpcXHRcXHRcXHRcXHRcXHRfX2lwdmxhbl9saW5rX2RlbGV0ZShuZXQsIGlwdmxhbi1cXHUwMDNlZGV2LCBcXHUwMDI2bHN0X2tpbGwpO1xcbiA4NDc6XFx0XFx0XFx0fVxcbiA4NDg6XFx0XFxuIDg0OTpcXHRcXHRcXHRicmVhaztcXG4gODUwOlxcdFxcdH1cXG4gODUxOlxcdFxcdGNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOlxcbiA4NTI6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFxcdTAwMjZwb3J0LVxcdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xcbiA4NTM6XFx0XFx0XFx0XFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGlwdmxhbi1cXHUwMDNlZGV2LCBkZXYpO1xcbiA4NTQ6XFx0XFx0XFx0XFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhpcHZsYW4tXFx1MDAzZWRldik7XFxuIDg1NTpcXHRcXHRcXHR9XFxuIDg1NjpcXHRcXHRcXHRicmVhaztcXG4gODU3OlxcdFxcbiA4NTg6XFx0XFx0Y2FzZSBORVRERVZfQ0hBTkdFTVRVOlxcbiA4NTk6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFxcdTAwMjZwb3J0LVxcdTAwM2VpcHZsYW5zLCBwbm9kZSlcXG4gODYwOlxcdFxcdFxcdFxcdGlwdmxhbl9hZGp1c3RfbXR1KGlwdmxhbiwgZGV2KTtcXG4gODYxOlxcdFxcdFxcdGJyZWFrO1xcbiA4NjI6XFx0XFxuIDg2MzpcXHRcXHRjYXNlIE5FVERFVl9QUkVfQ0hBTkdFQUREUjpcXG4gODY0OlxcdFxcdFxcdHByZWNoYWRkcl9pbmZvID0gcHRyO1xcbiA4NjU6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFxcdTAwMjZwb3J0LVxcdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xcbiA4NjY6XFx0XFx0XFx0XFx0ZXJyID0gbmV0aWZfcHJlX2NoYW5nZWFkZHJfbm90aWZ5KGlwdmxhbi1cXHUwMDNlZGV2LFxcbiA4Njc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBwcmVjaGFkZHJfaW5mby1cXHUwMDNlZGV2X2FkZHIsXFxuIDg2ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGV4dGFjayk7XFxuIDg2OTpcXHRcXHRcXHRcXHRpZiAoZXJyKSB7XFxuIDg3MDpcXHRcXHRcXHRcXHRcXHRyZXQgPSBub3RpZmllcl9mcm9tX2Vycm5vKGVycik7XFxuIDg3MTpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gODcyOlxcdFxcdFxcdFxcdH1cXG4gODczOlxcdFxcdFxcdH1cXG4gODc0OlxcdFxcdFxcdGJyZWFrO1xcbiA4NzU6XFx0XFxuIDg3NjpcXHRcXHRjYXNlIE5FVERFVl9DSEFOR0VBRERSOlxcbiA4Nzc6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFxcdTAwMjZwb3J0LVxcdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xcbiA4Nzg6XFx0XFx0XFx0XFx0ZXRoX2h3X2FkZHJfc2V0KGlwdmxhbi1cXHUwMDNlZGV2LCBkZXYtXFx1MDAzZWRldl9hZGRyKTtcXG4gODc5OlxcdFxcdFxcdFxcdGNhbGxfbmV0ZGV2aWNlX25vdGlmaWVycyhORVRERVZfQ0hBTkdFQUREUiwgaXB2bGFuLVxcdTAwM2VkZXYpO1xcbiA4ODA6XFx0XFx0XFx0fVxcbiA4ODE6XFx0XFx0XFx0YnJlYWs7XFxuIDg4MjpcXHRcXG4gODgzOlxcdFxcdGNhc2UgTkVUREVWX1BSRV9UWVBFX0NIQU5HRTpcXG4gODg0OlxcdFxcdFxcdC8qIEZvcmJpZCB1bmRlcmx5aW5nIGRldmljZSB0byBjaGFuZ2UgaXRzIHR5cGUuICovXFxuIDg4NTpcXHRcXHRcXHRyZXQgPSBOT1RJRllfQkFEO1xcbiA4ODY6XFx0XFx0XFx0YnJlYWs7XFxuIDg4NzpcXHRcXG4gODg4OlxcdFxcdGNhc2UgTkVUREVWX05PVElGWV9QRUVSUzpcXG4gODg5OlxcdFxcdGNhc2UgTkVUREVWX0JPTkRJTkdfRkFJTE9WRVI6XFxuIDg5MDpcXHRcXHRjYXNlIE5FVERFVl9SRVNFTkRfSUdNUDpcXG4gODkxOlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpXFxuIDg5MjpcXHRcXHRcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoZXZlbnQsIGlwdmxhbi1cXHUwMDNlZGV2KTtcXG4gODkzOlxcdFxcdH1cXG4gODk0OlxcdFxcbiA4OTU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwb3J0LVxcdTAwM2Vwbm9kZXNfbG9jayk7XFxuIDg5NjpcXHRcXG4gODk3OlxcdFxcdC8qIEF2b2lkIGludm9raW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHVuZGVyIHBub2Rlc19sb2NrLiAqL1xcbiA4OTg6XFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcXHUwMDI2bHN0X2tpbGwpO1xcbiA4OTk6XFx0XFxuIDkwMDpcXHRcXHRpcHZsYW5fcG9ydF9wdXQocG9ydCk7XFxuIDkwMTpcXHRcXG4gOTAyOlxcdFxcdHJldHVybiByZXQ7XFxuIDkwMzpcXHR9XFxuIDkwNDpcXHRcXG4gOTA1OlxcdC8qIHRoZSBjYWxsZXIgbXVzdCBoZWxkIHRoZSBhZGRycyBsb2NrICovXFxuIDkwNjpcXHRzdGF0aWMgaW50IGlwdmxhbl9hZGRfYWRkcihzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpXFxuIDkwNzpcXHR7XFxuIDkwODpcXHRcXHRzdHJ1Y3QgaXB2bF9hZGRyICphZGRyO1xcbiA5MDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAxOjIzLjIxMjYwMDQzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzMDAwMDQwNjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgdGhlIElQdmxhbiBEZXZpY2UgRXZlbnQgYW5kIEtpbGwgU2lnbmFsKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxpZmVjeWNsZSBvZiB0aGlzIGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBhbmQgaG93IGl0J3MgbGlua2VkIHRvIGBsc3Rfa2lsbGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCB0cmFjZSB0aGUgb3JpZ2luLiBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGlzIGZpcnN0IGRlY2xhcmVkIG9yIGluaXRpYWxpemVkLiBJJ20gbG9va2luZyBmb3IgdGhlIGRlZmluaW5nIG1vbWVudCwgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGVuLCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgYGxzdF9raWxsYCB2YXJpYWJsZSBpcyBoYW5kbGVkOyB3YXMgaXQgZGVmaW5lZCBzdGF0aWNhbGx5LCBwYXNzZWQgZnJvbSBlbHNld2hlcmUsIG9yIGR5bmFtaWNhbGx5IGFsbG9jYXRlZD8gSeKAmW0gaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGl04oCZcyBhIHN0YW5kYXJkIHNpZ25hbCwgYW4gaW50ZXJuYWwgdmFyaWFibGUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5LiBUaGUgZ29hbCBoZXJlIGlzIHRvIGVzdGFibGlzaCBhIGNsZWFyIGNvbnRyb2wgZmxvdzogaG93IGRvZXMgdGhpcyBldmVudCB0cmlnZ2VyLCBhbmQgaG93IGRvZXMgYGxzdF9raWxsYCBjb21lIGludG8gcGxheSBpbiB0aGF0IHByb2Nlc3M/IFRoaXMgc2hvdWxkIGNsYXJpZnkgdGhlIG92ZXJhbGwgbWVjaGFuaXNtIGludm9sdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODIzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMTozNi4yMTI2NDM3MDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzgwOlxcdFxcdG9wcy1cXHUwMDNlcG9saWN5XFx0PSBpcHZsYW5fbmxfcG9saWN5O1xcbiA3ODE6XFx0XFx0b3BzLVxcdTAwM2V2YWxpZGF0ZVxcdD0gaXB2bGFuX25sX3ZhbGlkYXRlO1xcbiA3ODI6XFx0XFx0b3BzLVxcdTAwM2VmaWxsX2luZm9cXHQ9IGlwdmxhbl9ubF9maWxsaW5mbztcXG4gNzgzOlxcdFxcdG9wcy1cXHUwMDNlY2hhbmdlbGluayA9IGlwdmxhbl9ubF9jaGFuZ2VsaW5rO1xcbiA3ODQ6XFx0XFx0b3BzLVxcdTAwM2VtYXh0eXBlXFx0PSBJRkxBX0lQVkxBTl9NQVg7XFxuIDc4NTpcXHRcXHRyZXR1cm4gcnRubF9saW5rX3JlZ2lzdGVyKG9wcyk7XFxuIDc4NjpcXHR9XFxuIDc4NzpcXHRFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19yZWdpc3Rlcik7XFxuIDc4ODpcXHRcXG4gNzg5OlxcdHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG4gNzkwOlxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuIDc5MTpcXHR7XFxuIDc5MjpcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2sgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19leHRhY2socHRyKTtcXG4gNzkzOlxcdFxcdHN0cnVjdCBuZXRkZXZfbm90aWZpZXJfcHJlX2NoYW5nZWFkZHJfaW5mbyAqcHJlY2hhZGRyX2luZm87XFxuIDc5NDpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XFxuIDc5NTpcXHRcXHRzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgKm5leHQ7XFxuIDc5NjpcXHRcXHRpbnQgZXJyLCByZXQgPSBOT1RJRllfRE9ORTtcXG4gNzk3OlxcdFxcdHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQ7XFxuIDc5ODpcXHRcXHRMSVNUX0hFQUQobHN0X2tpbGwpO1xcbiA3OTk6XFx0XFxuIDgwMDpcXHRcXHRpZiAoZXZlbnQgPT0gTkVUREVWX1BSRUNIQU5HRVVQUEVSIHx8XFxuIDgwMTpcXHRcXHQgICAgZXZlbnQgPT0gTkVUREVWX0NIQU5HRVVQUEVSKVxcbiA4MDI6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODAzOlxcdFxcbiA4MDQ6XFx0XFx0cG9ydCA9IGlwdmxhbl9wb3J0X2dldChkZXYpO1xcbiA4MDU6XFx0XFx0aWYgKCFwb3J0KVxcbiA4MDY6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODA3OlxcdFxcbiA4MDg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cG9ydC1cXHUwMDNlcG5vZGVzX2xvY2spO1xcbiA4MDk6XFx0XFxuIDgxMDpcXHRcXHRzd2l0Y2ggKGV2ZW50KSB7XFxuIDgxMTpcXHRcXHRjYXNlIE5FVERFVl9VUDpcXG4gODEyOlxcdFxcdGNhc2UgTkVUREVWX0RPV046XFxuIDgxMzpcXHRcXHRjYXNlIE5FVERFVl9DSEFOR0U6XFxuIDgxNDpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGlwdmxhbiwgXFx1MDAyNnBvcnQtXFx1MDAzZWlwdmxhbnMsIHBub2RlKVxcbiA4MTU6XFx0XFx0XFx0XFx0bmV0aWZfc3RhY2tlZF90cmFuc2Zlcl9vcGVyc3RhdGUoaXB2bGFuLVxcdTAwM2VwaHlfZGV2LFxcbiA4MTY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IGlwdmxhbi1cXHUwMDNlZGV2KTtcXG4gODE3OlxcdFxcdFxcdGJyZWFrO1xcbiA4MTg6XFx0XFxuIDgxOTpcXHRcXHRjYXNlIE5FVERFVl9SRUdJU1RFUjoge1xcbiA4MjA6XFx0XFx0XFx0c3RydWN0IG5ldCAqb2xkbmV0LCAqbmV3bmV0ID0gZGV2X25ldChkZXYpO1xcbiA4MjE6XFx0XFxuIDgyMjpcXHRcXHRcXHRvbGRuZXQgPSByZWFkX3BuZXQoXFx1MDAyNnBvcnQtXFx1MDAzZXBuZXQpO1xcbiA4MjM6XFx0XFx0XFx0aWYgKG5ldF9lcShuZXduZXQsIG9sZG5ldCkpXFxuIDgyNDpcXHRcXHRcXHRcXHRicmVhaztcXG4gODI1OlxcdFxcbiA4MjY6XFx0XFx0XFx0d3JpdGVfcG5ldChcXHUwMDI2cG9ydC1cXHUwMDNlcG5ldCwgbmV3bmV0KTtcXG4gODI3OlxcdFxcbiA4Mjg6XFx0XFx0XFx0aWYgKHBvcnQtXFx1MDAzZW1vZGUgPT0gSVBWTEFOX01PREVfTDNTKVxcbiA4Mjk6XFx0XFx0XFx0XFx0aXB2bGFuX21pZ3JhdGVfbDNzX2hvb2sob2xkbmV0LCBuZXduZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMTozNi4yMTI3OTE1MDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjMxNzE2MzUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJUFZMQU4gRGV2aWNlIEV2ZW50IEhhbmRsaW5nIC0gQSBTYWZldHkgSW1wcm92ZW1lbnQqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGZ1bmN0aW9uLCBJIHNlZSB0aGUgYGxzdF9raWxsYCBsaXN0IGlzIGluaXRpYWxpemVkIHJpZ2h0IGF3YXkuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgbm90aGluZyB1bnVzdWFsIHRoZXJlLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyBob3cgaXQncyB1c2VkIHdpdGggYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlgLiBJIHJlbWVtYmVyIHRoaXMgZnVuY3Rpb24uXG5cblByZXZpb3VzbHksIHdoZW4gYSBuZXQgZGV2aWNlIHdhcyBiZWluZyB1bnJlZ2lzdGVyZWQgKE5FVERFVl9VTlJFR0lTVEVSIGNhc2UpLCBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcdTAwMjZsc3Rfa2lsbClgIHdhcyBjYWxsZWQgKmluc2lkZSogYSBgbXV0ZXhfbG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKWAgYmxvY2suIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWU7IG5lc3Rpbmcgbm90aWZpZXIgY2FsbHMgdW5kZXIgYSBsb2NrIGxpa2UgdGhhdCBjYW4gYmUgYSByZWNpcGUgZm9yIHRyb3VibGUg4oCTIGxvY2tkZXAgd2FybmluZ3Mgb3IgZXZlbiBkZWFkbG9ja3MuIFRoZSBjaGFuZ2UgYXBwZWFycyB0byBoYXZlIG1vdmVkIHRoZSB1bnJlZ2lzdGVyIGNhbGwgdG8gKmFmdGVyKiB0aGUgYG11dGV4X3VubG9jayhcdTAwMjZwb3J0LVx1MDAzZXBub2Rlc19sb2NrKWAuIFNtYXJ0IG1vdmUhIFRoaXMgYXZvaWRzIHRoZSBuZXN0ZWQgbm90aWZpZXIgY2FsbHMsIHdoaWNoIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoIHRvIHByZXZlbnQgdGhvc2UgY29uY3VycmVuY3kgcHJvYmxlbXMuXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IElQVkxBTidzIGNvbmZpZ3VyYXRpb24uIEkgc2hvdWxkIGNoZWNrIHRoZSBLY29uZmlnIHNldHRpbmdzLiBJJ2xsIG5lZWQgdG8gbG9jYXRlIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgZm9yIHRoZSBJUFZMQU4gbW9kdWxlIGFuZCBjb25maXJtIHRoYXQgdGhlIGNvbmRpdGlvbnMgZm9yIElQVkxBTiBhcmUgcHJvcGVybHkgY29uZmlndXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAyOjAyLjUyOTk1NzgxNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjU2NjI3MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0xNzk9Y29uZmlnIE1BQ1ZUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTkyLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTkzOmNvbmZpZyBJUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xOTQtXFx0ZGVwZW5kcyBvbiBORVRGSUxURVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk4LVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk5OmNvbmZpZyBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMjowMi43OTU2MjQ4MTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzY0OTkyNDQ3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBuZXR3b3JrIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgaW4gdGhpcyBrZXJuZWwuIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L0tjb25maWdgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGxpbmVzIGFyb3VuZCAxOTAgdG8gMjIwLiBUaGF0J3MgdXN1YWxseSBhIGdvb2Qgc3BvdCB0byBmaW5kIHNvbWUgb2YgdGhlIGNvcmUsIHRvcC1sZXZlbCBzZXR0aW5ncyBvciBtYXliZSBhbiBpbXBvcnRhbnQgZ3JvdXBpbmcgb2YgcmVsYXRlZCBvcHRpb25zLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGJyb2FkIG5ldHdvcmtpbmcgZmVhdHVyZXMgb3IgcGVyaGFwcyBhIGtleSBkcml2ZXIgZmFtaWx5LiBUaGlzIHdpbGwgcHJvYmFibHkgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gem9vbSBpbnRvIGEgc3BlY2lmaWMgYXJlYSBsYXRlci4gS25vd2luZyB0aGUgYnJvYWRlciBzdHJ1Y3R1cmUgd2lsbCBzYXZlIG1lIGEgdG9uIG9mIHRpbWUsIEkgaG9wZS4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDY0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDI6MjAuNDQ1NTUyODUzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTkxOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbWFjdnRhcC5cXG4gMTkyOlxcdFxcbiAxOTM6XFx0Y29uZmlnIElQVkxBTl9MM1NcXG4gMTk0OlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSXFxuIDE5NTpcXHRcXHRkZXBlbmRzIG9uIElQVkxBTlxcbiAxOTY6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAxOTc6XFx0XFx0c2VsZWN0IE5FVF9MM19NQVNURVJfREVWXFxuIDE5ODpcXHRcXG4gMTk5OlxcdGNvbmZpZyBJUFZMQU5cXG4gMjAwOlxcdFxcdHRyaXN0YXRlIFxcXCJJUC1WTEFOIHN1cHBvcnRcXFwiXFxuIDIwMTpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gMjAyOlxcdFxcdGhlbHBcXG4gMjAzOlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2aXJ0dWFsIGRldmljZXMgb2ZmIG9mIGEgbWFpbiBpbnRlcmZhY2VcXG4gMjA0OlxcdFxcdCAgYW5kIHBhY2tldHMgd2lsbCBiZSBkZWxpdmVyZWQgYmFzZWQgb24gdGhlIGRlc3QgTDMgKElQdjYvSVB2NCBhZGRyKVxcbiAyMDU6XFx0XFx0ICBvbiBwYWNrZXRzLiBBbGwgaW50ZXJmYWNlcyAoaW5jbHVkaW5nIHRoZSBtYWluIGludGVyZmFjZSkgc2hhcmUgTDJcXG4gMjA2OlxcdFxcdCAgbWFraW5nIGl0IHRyYW5zcGFyZW50IHRvIHRoZSBjb25uZWN0ZWQgTDIgc3dpdGNoLlxcbiAyMDc6XFx0XFxuIDIwODpcXHRcXHQgIElwdmxhbiBkZXZpY2VzIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgXFxcImlwXFxcIiBjb21tYW5kIGZyb20gdGhlXFxuIDIwOTpcXHRcXHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMy4xOSByZWxlYXNlOlxcbiAyMTA6XFx0XFxuIDIxMTpcXHRcXHQgIFxcXCJpcCBsaW5rIGFkZCBsaW5rIFxcdTAwM2NtYWluLWRldlxcdTAwM2UgWyBOQU1FIF0gdHlwZSBpcHZsYW5cXFwiXFxuIDIxMjpcXHRcXG4gMjEzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyMTQ6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBpcHZsYW4uXFxuIDIxNTpcXHRcXG4gMjE2OlxcdGNvbmZpZyBJUFZUQVBcXG4gMjE3OlxcdFxcdHRyaXN0YXRlIFxcXCJJUC1WTEFOIGJhc2VkIHRhcCBkcml2ZXJcXFwiXFxuIDIxODpcXHRcXHRkZXBlbmRzIG9uIElQVkxBTlxcbiAyMTk6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDIyMDpcXHRcXHRzZWxlY3QgVEFQXFxuIDIyMTpcXHRcXHRoZWxwXFxuIDIyMjpcXHRcXHQgIFRoaXMgYWRkcyBhIHNwZWNpYWxpemVkIHRhcCBjaGFyYWN0ZXIgZGV2aWNlIGRyaXZlciB0aGF0IGlzIGJhc2VkXFxuIDIyMzpcXHRcXHQgIG9uIHRoZSBJUC1WTEFOIG5ldHdvcmsgaW50ZXJmYWNlLCBjYWxsZWQgaXB2dGFwLiBBbiBpcHZ0YXAgZGV2aWNlXFxuIDIyNDpcXHRcXHQgIGNhbiBiZSBhZGRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgYSBpcHZsYW4gZGV2aWNlLCB1c2luZyAndHlwZVxcbiAyMjU6XFx0XFx0ICBpcHZ0YXAnLCBhbmQgdGhlbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSB0YXAgdXNlciBzcGFjZSBpbnRlcmZhY2UuXFxuIDIyNjpcXHRcXG4gMjI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyMjg6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBpcHZ0YXAuXFxuIDIyOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDI6MjAuNDQ1Njc4NTMzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NDQ0ODgyNTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBJUHZsYW4gTWFrZWZpbGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIElQdmxhbiBkcml2ZXIgaXMgYnVpbHQgd2l0aGluIHRoZSBrZXJuZWwuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvaXB2bGFuL01ha2VmaWxlYC4gSSdtIGhvcGluZyBpdCdzIHdlbGwtc3RydWN0dXJlZCwgYXMgZ29vZCBNYWtlZmlsZSBvcmdhbml6YXRpb24gaXMgY3J1Y2lhbCBmb3IgYSBjbGVhbiBhbmQgbWFpbnRhaW5hYmxlIGJ1aWxkIHByb2Nlc3MuIEknbSBsb29raW5nIGZvciB0aGUgdXN1YWwgc3VzcGVjdHM6IG9iamVjdCBmaWxlIGxpc3RzLCBkZXBlbmRlbmNpZXMsIGluY2x1c2lvbiBvZiBvdGhlciBtYWtlZmlsZXMgb3IgY29uZmlndXJhdGlvbiBmcmFnbWVudHMsIGFuZCB0aGUgb3ZlcmFsbCBidWlsZCBzdHJhdGVneSBmb3IgdGhlIElQdmxhbiBtb2R1bGUuIFRoaXMgTWFrZWZpbGUgaXMgZ29pbmcgdG8gYmUgdGhlIGNlbnRyYWwgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgbG93LWxldmVsIGJ1aWxkIHByb2Nlc3Mgb2YgdGhlIElQdmxhbiBkcml2ZXIuIE15IGdvYWwgaXMgdG8gZ3Jhc3AgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgbGFyZ2VyIGtlcm5lbCBidWlsZCBhbmQgYW55IHBlY3VsaWFyIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbnMgb3IgZmxhZ3MgaXQgbWlnaHQgbGV2ZXJhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMDEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAyOjM2Ljg5MDU2NDQ1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBFdGhlcm5ldCBJcHZsYW4gZHJpdmVyXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19JUFZMQU4pICs9IGlwdmxhbi5vXFxuICAgNzpcXHRvYmotJChDT05GSUdfSVBWVEFQKSArPSBpcHZ0YXAub1xcbiAgIDg6XFx0XFxuICAgOTpcXHRpcHZsYW4tb2Jqcy0kKENPTkZJR19JUFZMQU5fTDNTKSArPSBpcHZsYW5fbDNzLm9cXG4gIDEwOlxcdGlwdmxhbi1vYmpzIDo9IGlwdmxhbl9jb3JlLm8gaXB2bGFuX21haW4ubyAkKGlwdmxhbi1vYmpzLXkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAyOjM2Ljg5MDYyNDA2OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDk0Njg4MzMzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgSVBWTEFOYCBDb25maWd1cmF0aW9uIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gTG9va3MgbGlrZSBgSVBWTEFOYCBhbmQgYElORVRgIGFyZSBlc3NlbnRpYWwsIGFuZCBwb3NzaWJseSBgSVBWVEFQYCBvciBgSVBWTEFOX0wzU2AgZGVwZW5kaW5nIG9uIHRoZSB1c2UgY2FzZS4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIGRvZXMgdGhpcyBhcHBseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRT8gR29vZCBuZXdzLCBpdCdzIGEgc29mdHdhcmUgbmV0ZGV2aWNlIGRyaXZlciwgc28geWVhaCwgaXQncyBkZWZpbml0ZWx5IGFwcGxpY2FibGUuIEkgY2FuIGNyZWF0ZSBpdCB1c2luZyBydG5sIG9yIG5ldGxpbmsgbWVzc2FnZXMg4oCTIHRoYXQncyBhIGtleSBhZHZhbnRhZ2UgZm9yIGZ1enppbmcuXG5cbk5vdywgaXMgdGhpcyBhY3R1YWxseSAqd29ydGgqIGZ1enppbmc/IEFic29sdXRlbHkhIFRoZSBjb3JlIG9mIHRoaXMgaXMgdGhlIHdheSBpdCBoYW5kbGVzIGxvY2tpbmcgYW5kIHRoZSB1bnJlZ2lzdHJhdGlvbiBmbG93IGR1cmluZyBkZXZpY2UgZXZlbnRzLCBzcGVjaWZpY2FsbHkgYE5FVERFVl9VTlJFR0lTVEVSYCBhbmQgZGV2aWNlIHRlYXJkb3duLCBmb3IgaXB2bGFuIGRldmljZXMuIEl0J3MgbW92aW5nIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55YCBvdXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uIG9mIGBtdXRleF91bmxvY2soXHUwMDI2cG9ydC1cdTAwM2Vwbm9kZXNfbG9jaylgLiBUaGF0J3MgYSBodWdlIGZsYWcgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgZGlyZWN0bHkgaW1wYWN0aW5nIGxvY2tpbmcgaW52YXJpYW50cyBhbmQgY29uY3VycmVuY3kgaW4gdGhlIG5ldHdvcmsgc3RhY2sgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgYW5kIHdlIGtub3cgdGhpcyBpcyBhIGhpZ2hseSBzZW5zaXRpdmUgYXJlYS4gUmFjZSBjb25kaXRpb25zLCBVc2UtQWZ0ZXItRnJlZSwgYW5kIGRlYWRsb2NrcyBhcmUgYWxsIHZlcnkgbGlrZWx5IGhlcmUuXG5cbk5leHQgc3RlcDogbGV0J3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIGRldGVybWluZSB3aGljaCBmdW5jdGlvbnMgd2lsbCBiZSB0aGUgZm9jdXMgb2YgdGhlIGZ1enppbmcgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgRm9jdXNTeW1ib2xzYCAtIHNwZWNpZmljYWxseSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBvciBub3RhYmxlIGZ1bmN0aW9ucyBpbiBgaXB2bGFuX21haW4uY2AuIEkgbmVlZCB0byBzZWFyY2ggdGhlIGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY2AgZmlsZSBmb3IgYWxsIHRoZSByZWxldmFudCBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2OTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMjo0Ny44Mzc1MTAzOTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwOTc4NzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX10uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2lwdmxhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NjggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2lwdmxhbi9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19JUFZMQU4pICs9IGlwdmxhbi5vXFxuZHJpdmVycy9uZXQvaXB2bGFuL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0lQVlRBUCkgKz0gaXB2dGFwLm9cXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGUtOC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGU6OTppcHZsYW4tb2Jqcy0kKENPTkZJR19JUFZMQU5fTDNTKSArPSBpcHZsYW5fbDNzLm9cXG5kcml2ZXJzL25ldC9pcHZsYW4vTWFrZWZpbGU6MTA6aXB2bGFuLW9ianMgOj0gaXB2bGFuX2NvcmUubyBpcHZsYW5fbWFpbi5vICQoaXB2bGFuLW9ianMteSlcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaD0xMDY9c3RydWN0IGlwdmxfc2tiX2NiIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMTAtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjExMTpzdGF0aWMgaW5saW5lIHN0cnVjdCBpcHZsX3BvcnQgKmlwdmxhbl9wb3J0X2dldF9yY3UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTExMi17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTE1LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMTY6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXB2bF9wb3J0ICppcHZsYW5fcG9ydF9nZXRfcmN1X2JoKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEyMC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTIxOnN0YXRpYyBpbmxpbmUgc3RydWN0IGlwdmxfcG9ydCAqaXB2bGFuX3BvcnRfZ2V0X3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTI1LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMjY6c3RhdGljIGlubGluZSBib29sIGlwdmxhbl9pc19wcml2YXRlKGNvbnN0IHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTEyNy17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTMwLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxMzE6c3RhdGljIGlubGluZSB2b2lkIGlwdmxhbl9tYXJrX3ByaXZhdGUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xMzUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjEzNjpzdGF0aWMgaW5saW5lIHZvaWQgaXB2bGFuX2NsZWFyX3ByaXZhdGUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNDAtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE0MTpzdGF0aWMgaW5saW5lIGJvb2wgaXB2bGFuX2lzX3ZlcGEoY29uc3Qgc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNDUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE0NjpzdGF0aWMgaW5saW5lIHZvaWQgaXB2bGFuX21hcmtfdmVwYShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE1MC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTUxOnN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fY2xlYXJfdmVwYShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE1NS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTU2OnZvaWQgaXB2bGFuX2luaXRfc2VjcmV0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNTc6dW5zaWduZWQgaW50IGlwdmxhbl9tYWNfaGFzaChjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTU4OnJ4X2hhbmRsZXJfcmVzdWx0X3QgaXB2bGFuX2hhbmRsZV9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNTk6dm9pZCBpcHZsYW5fcHJvY2Vzc19tdWx0aWNhc3Qoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTYwOmludCBpcHZsYW5fcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTYxOnZvaWQgaXB2bGFuX2h0X2FkZHJfYWRkKHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCBzdHJ1Y3QgaXB2bF9hZGRyICphZGRyKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTYyOnN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9maW5kX2FkZHIoY29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE2My1cXHRcXHRcXHRcXHQgICBjb25zdCB2b2lkICppYWRkciwgYm9vbCBpc192Nik7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2NDpib29sIGlwdmxhbl9hZGRyX2J1c3koc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNjU6dm9pZCBpcHZsYW5faHRfYWRkcl9kZWwoc3RydWN0IGlwdmxfYWRkciAqYWRkcik7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2NjpzdHJ1Y3QgaXB2bF9hZGRyICppcHZsYW5fYWRkcl9sb29rdXAoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgdm9pZCAqbHlyM2gsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE2Ny1cXHRcXHRcXHRcXHQgICAgIGludCBhZGRyX3R5cGUsIGJvb2wgdXNlX2Rlc3QpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNjg6dm9pZCAqaXB2bGFuX2dldF9MM19oZHIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICp0eXBlKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTY5OnZvaWQgaXB2bGFuX2NvdW50X3J4KGNvbnN0IHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNzAtXFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbGVuLCBib29sIHN1Y2Nlc3MsIGJvb2wgbWNhc3QpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNzE6aW50IGlwdmxhbl9saW5rX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNzItXFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3Mzp2b2lkIF9faXB2bGFuX2xpbmtfZGVsZXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTc0LVxcdFxcdFxcdCAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3NTp2b2lkIGlwdmxhbl9saW5rX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNzY6aW50IGlwdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNzctI2lmZGVmIENPTkZJR19JUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3ODppbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTc5OnZvaWQgaXB2bGFuX2wzc191bnJlZ2lzdGVyKHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxODA6dm9pZCBpcHZsYW5fbWlncmF0ZV9sM3NfaG9vayhzdHJ1Y3QgbmV0ICpvbGRuZXQsIHN0cnVjdCBuZXQgKm5ld25ldCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE4MTppbnQgaXB2bGFuX2wzc19pbml0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxODI6dm9pZCBpcHZsYW5fbDNzX2NsZWFudXAodm9pZCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE4My0jZWxzZVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxODQ6c3RhdGljIGlubGluZSBpbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xODUte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE4OC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTg5OnN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fbDNzX3VucmVnaXN0ZXIoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xOTItXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE5MzpzdGF0aWMgaW5saW5lIHZvaWQgaXB2bGFuX21pZ3JhdGVfbDNzX2hvb2soc3RydWN0IG5ldCAqb2xkbmV0LFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xOTQtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldCAqbmV3bmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE5Ny1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTk4OnN0YXRpYyBpbmxpbmUgaW50IGlwdmxhbl9sM3NfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xOTkte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTIwMi1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MjAzOnN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fbDNzX2NsZWFudXAodm9pZClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0yMDctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjIwODpzdGF0aWMgaW5saW5lIGJvb2wgbmV0aWZfaXNfaXB2bGFuX3BvcnQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMjA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0yMTMtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVlRBUClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MjE0OmV4dGVybiB2b2lkICgqX19pcHZ0YXBfZGVsbGlua19wdHIpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMjE1LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jPTEwPXN0YXRpYyB1MzIgaXB2bGFuX2poYXNoX3NlY3JldCBfX3JlYWRfbW9zdGx5O1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTExLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjEyOnZvaWQgaXB2bGFuX2luaXRfc2VjcmV0KHZvaWQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MTc6dm9pZCBpcHZsYW5fY291bnRfcngoY29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTgtXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBsZW4sIGJvb2wgc3VjY2VzcywgYm9vbCBtY2FzdClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTMzLX1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzozNDpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fY291bnRfcngpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTM1LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTM2LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjM3OnN0YXRpYyB1OCBpcHZsYW5fZ2V0X3Y2X2hhc2goY29uc3Qgdm9pZCAqaWFkZHIpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNDQtI2Vsc2VcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo0NTpzdGF0aWMgdTggaXB2bGFuX2dldF92Nl9oYXNoKGNvbnN0IHZvaWQgKmlhZGRyKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTUwLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjUxOnN0YXRpYyB1OCBpcHZsYW5fZ2V0X3Y0X2hhc2goX19iZTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NTc6c3RhdGljIGJvb2wgYWRkcl9lcXVhbChib29sIGlzX3Y2LCBzdHJ1Y3QgaXB2bF9hZGRyICphZGRyLCBjb25zdCB2b2lkICppYWRkcilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01OC17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03NC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3NTpzdGF0aWMgc3RydWN0IGlwdmxfYWRkciAqaXB2bGFuX2h0X2FkZHJfbG9va3VwNihjb25zdCBzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc2LVxcdFxcdFxcdFxcdFxcdFxcdGNvbnN0IHZvaWQgKmlhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtODgtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6ODk6c3RhdGljIHN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9odF9hZGRyX2xvb2t1cDQoY29uc3Qgc3RydWN0IGlwdmxfcG9ydCAqcG9ydCxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy05MC1cXHRcXHRcXHRcXHRcXHRcXHRfX2JlMzIgYWRkcjQpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMDEtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MTAyOnZvaWQgaXB2bGFuX2h0X2FkZHJfYWRkKHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCBzdHJ1Y3QgaXB2bF9hZGRyICphZGRyKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTEwMy17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMTMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MTE0OnZvaWQgaXB2bGFuX2h0X2FkZHJfZGVsKHN0cnVjdCBpcHZsX2FkZHIgKmFkZHIpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTExOC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMTk6c3RydWN0IGlwdmxfYWRkciAqaXB2bGFuX2ZpbmRfYWRkcihjb25zdCBzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMjAtXFx0XFx0XFx0XFx0ICAgY29uc3Qgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMzItXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MTMzOmJvb2wgaXB2bGFuX2FkZHJfYnVzeShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCB2b2lkICppYWRkciwgYm9vbCBpc192NilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjE0OTp2b2lkICppcHZsYW5fZ2V0X0wzX2hkcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnR5cGUpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTIyOS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoyMzA6dW5zaWduZWQgaW50IGlwdmxhbl9tYWNfaGFzaChjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTIzMS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0yMzctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MjM4OnZvaWQgaXB2bGFuX3Byb2Nlc3NfbXVsdGljYXN0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0yMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMzExLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjMxMjpzdGF0aWMgdm9pZCBpcHZsYW5fc2tiX2Nyb3NzaW5nX25zKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMzEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTMyMy1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzozMjQ6c3RhdGljIGludCBpcHZsYW5fcmN2X2ZyYW1lKHN0cnVjdCBpcHZsX2FkZHIgKmFkZHIsIHN0cnVjdCBza19idWZmICoqcHNrYixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zMjUtXFx0XFx0XFx0ICAgIGJvb2wgbG9jYWwpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zNjUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6MzY2OnN0cnVjdCBpcHZsX2FkZHIgKmlwdmxhbl9hZGRyX2xvb2t1cChzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0LCB2b2lkICpseXIzaCxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0zNjctXFx0XFx0XFx0XFx0ICAgICBpbnQgYWRkcl90eXBlLCBib29sIHVzZV9kZXN0KVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNDI3LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjQyODpzdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIGludCBpcHZsYW5fcHJvY2Vzc192NF9vdXRib3VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTQyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYz00NzY9c3RhdGljIG5vaW5saW5lX2Zvcl9zdGFjayBpbnRcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo0Nzc6aXB2bGFuX3JvdXRlX3Y2X291dGJvdW5kKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNDc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTUwMS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo1MDI6c3RhdGljIGludCBpcHZsYW5fcHJvY2Vzc192Nl9vdXRib3VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTUwMy17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MjktI2Vsc2VcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo1MzA6c3RhdGljIGludCBpcHZsYW5fcHJvY2Vzc192Nl9vdXRib3VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTUzMS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01MzUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NTM2OnN0YXRpYyBpbnQgaXB2bGFuX3Byb2Nlc3Nfb3V0Ym91bmQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01Mzcte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNTc0LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjU3NTpzdGF0aWMgdm9pZCBpcHZsYW5fbXVsdGljYXN0X2VucXVldWUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy01NzYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sIHR4X3BrdClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTYwMi1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo2MDM6c3RhdGljIGludCBpcHZsYW5feG1pdF9tb2RlX2wzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTYyOS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo2MzA6c3RhdGljIGludCBpcHZsYW5feG1pdF9tb2RlX2wyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTY3NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo2NzU6aW50IGlwdmxhbl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTcwMi1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3MDM6c3RhdGljIGJvb2wgaXB2bGFuX2V4dGVybmFsX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNzA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTcyMi1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo3MjM6c3RhdGljIHJ4X2hhbmRsZXJfcmVzdWx0X3QgaXB2bGFuX2hhbmRsZV9tb2RlX2wzKHN0cnVjdCBza19idWZmICoqcHNrYixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03MjQtXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy03NDMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmM6NzQ0OnN0YXRpYyByeF9oYW5kbGVyX3Jlc3VsdF90IGlwdmxhbl9oYW5kbGVfbW9kZV9sMihzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNzQ1LVxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNzgwLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjc4MTpyeF9oYW5kbGVyX3Jlc3VsdF90IGlwdmxhbl9oYW5kbGVfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKipwc2tiKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTc4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jPTExPXN0cnVjdCBpcHZsYW5fbmV0bnMge1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xNC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjE1OnN0YXRpYyBzdHJ1Y3QgaXB2bF9hZGRyICppcHZsYW5fc2tiX3RvX2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE2LVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0zOC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjM5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaXB2bGFuX2wzX3JjdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtNDAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcHJvdG8pXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jPTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbDNtZGV2X29wcyBpcHZsX2wzbWRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTk0LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6OTU6c3RhdGljIHVuc2lnbmVkIGludCBpcHZsYW5fbmZfaW5wdXQodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTk2LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jPTExNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwdmxfbmZvcHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MTM0OnN0YXRpYyBpbnQgaXB2bGFuX3JlZ2lzdGVyX25mX2hvb2soc3RydWN0IG5ldCAqbmV0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTUwLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MTUxOnN0YXRpYyB2b2lkIGlwdmxhbl91bnJlZ2lzdGVyX25mX2hvb2soc3RydWN0IG5ldCAqbmV0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTYzLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MTY0OnZvaWQgaXB2bGFuX21pZ3JhdGVfbDNzX2hvb2soc3RydWN0IG5ldCAqb2xkbmV0LCBzdHJ1Y3QgbmV0ICpuZXduZXQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xNzctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoxNzg6c3RhdGljIHZvaWQgaXB2bGFuX25zX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM9MTg5PXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgaXB2bGFuX25ldF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTE5NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjE5NTppbnQgaXB2bGFuX2wzc19pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xOTYte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0xOTktXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYzoyMDA6dm9pZCBpcHZsYW5fbDNzX2NsZWFudXAodm9pZClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jLTIwNC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2wzcy5jOjIwNTppbnQgaXB2bGFuX2wzc19yZWdpc3RlcihzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmMtMjIwLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbDNzLmM6MjIxOnZvaWQgaXB2bGFuX2wzc191bnJlZ2lzdGVyKHN0cnVjdCBpcHZsX3BvcnQgKnBvcnQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9sM3MuYy0yMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVlRBUClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMTp2b2lkICgqX19pcHZ0YXBfZGVsbGlua19wdHIpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMi1cXHRcXHRcXHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEzOkVYUE9SVF9TWU1CT0woX19pcHZ0YXBfZGVsbGlua19wdHIpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE0LSNlbmRpZlxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE1LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjE2OnN0YXRpYyBpbnQgaXB2bGFuX3NldF9wb3J0X21vZGUoc3RydWN0IGlwdmxfcG9ydCAqcG9ydCwgdTE2IG52YWwsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTctXFx0XFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzQ6c3RhdGljIGludCBpcHZsYW5fcG9ydF9jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDktXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTEwOnN0YXRpYyB2b2lkIGlwdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTI5LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEzMDpzdGF0aWMgdm9pZCBpcHZsYW5fcG9ydF9wdXQoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTM1LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEzNjpzdGF0aWMgc3RydWN0IGlwdmxfcG9ydCAqaXB2bGFuX3BvcnRfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE2OC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxNjk6c3RhdGljIGludCBpcHZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTE3MC17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yMTUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MjE2OnN0YXRpYyB2b2lkIGlwdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMjMzLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjIzNDpzdGF0aWMgaW50IGlwdmxhbl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMjM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI1My1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoyNTQ6c3RhdGljIGludCBpcHZsYW5fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yNzAtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MjcxOnN0YXRpYyBuZXRkZXZfdHhfdCBpcHZsYW5fc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTI3Mi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0yOTMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Mjk0OnN0YXRpYyBuZXRkZXZfZmVhdHVyZXNfdCBpcHZsYW5fZml4X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMjk1LVxcdFxcdFxcdFxcdFxcdCAgICAgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zMDgtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MzA5OnN0YXRpYyB2b2lkIGlwdmxhbl9jaGFuZ2VfcnhfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGNoYW5nZSlcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzE3LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjMxODpzdGF0aWMgdm9pZCBpcHZsYW5fc2V0X211bHRpY2FzdF9tYWNfZmlsdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTM0NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozNDU6c3RhdGljIHZvaWQgaXB2bGFuX2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzQ2LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnMpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zODUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Mzg2OnN0YXRpYyBpbnQgaXB2bGFuX3ZsYW5fcnhfYWRkX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX2JlMTYgcHJvdG8sIHUxNiB2aWQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTM5My1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozOTQ6c3RhdGljIGludCBpcHZsYW5fdmxhbl9yeF9raWxsX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBfX2JlMTYgcHJvdG8sXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzk1LVxcdFxcdFxcdFxcdCAgIHUxNiB2aWQpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00MDMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDA0OnN0YXRpYyBpbnQgaXB2bGFuX2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9NDExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXB2bGFuX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00MjUtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDI2OnN0YXRpYyBpbnQgaXB2bGFuX2hhcmRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDI3LVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUsIGNvbnN0IHZvaWQgKmRhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9NDQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGVhZGVyX29wcyBpcHZsYW5faGVhZGVyX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ0OC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0NDk6c3RhdGljIHZvaWQgaXB2bGFuX2FkanVzdF9tdHUoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ1My1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0NTQ6c3RhdGljIGJvb2wgbmV0aWZfaXNfaXB2bGFuKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ1OS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0NjA6c3RhdGljIGludCBpcHZsYW5fZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00NjEtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDY3LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjQ2ODpzdGF0aWMgdm9pZCBpcHZsYW5fZXRodG9vbF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ2OS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqZHJ2aW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ3NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo0NzU6c3RhdGljIHUzMiBpcHZsYW5fZXRodG9vbF9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00NzYte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNDgxLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjQ4MjpzdGF0aWMgdm9pZCBpcHZsYW5fZXRodG9vbF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz00ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpcHZsYW5fZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00OTYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NDk3OnN0YXRpYyBpbnQgaXB2bGFuX25sX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy00OTgtXFx0XFx0XFx0XFx0c3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTMyLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjUzMzpzdGF0aWMgc2l6ZV90IGlwdmxhbl9ubF9nZXRzaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTU0MC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo1NDE6c3RhdGljIGludCBpcHZsYW5fbmxfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTU0Mi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01NjctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NTY4OnN0YXRpYyBpbnQgaXB2bGFuX25sX2ZpbGxpbmZvKHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTY5LVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01ODktXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NTkwOmludCBpcHZsYW5fbGlua19uZXcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01OTEtXFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTcwNi19XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzA3OkVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9saW5rX25ldyk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzA4LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjcwOTp2b2lkIF9faXB2bGFuX2xpbmtfZGVsZXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MTAtXFx0XFx0XFx0ICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzI3LX1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3Mjg6RVhQT1JUX1NZTUJPTChfX2lwdmxhbl9saW5rX2RlbGV0ZSk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzI5LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjczMDpzdGF0aWMgdm9pZCBpcHZsYW5fbGlua19kZWxldGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzM5LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjc0MDp2b2lkIGlwdmxhbl9saW5rX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc1MS19XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzUyOkVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9saW5rX3NldHVwKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NTMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9NzU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBpcHZsYW5fbmxfcG9saWN5W0lGTEFfSVBWTEFOX01BWCArIDFdID1cXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc1OS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3NjA6c3RhdGljIHN0cnVjdCBuZXQgKmlwdmxhbl9nZXRfbGlua19uZXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NjEte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9NzY3PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcHZsYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03NzYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Nzc3OmludCBpcHZsYW5fbGlua19yZWdpc3RlcihzdHJ1Y3QgcnRubF9saW5rX29wcyAqb3BzKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTc3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03ODYtfVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjc4NzpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzg4LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjc4OTpzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzkwLVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05MDUtLyogdGhlIGNhbGxlciBtdXN0IGhlbGQgdGhlIGFkZHJzIGxvY2sgKi9cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo5MDY6c3RhdGljIGludCBpcHZsYW5fYWRkX2FkZHIoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHZvaWQgKmlhZGRyLCBib29sIGlzX3Y2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTkwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05MzctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6OTM4OnN0YXRpYyB2b2lkIGlwdmxhbl9kZWxfYWRkcihzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgdm9pZCAqaWFkZHIsIGJvb2wgaXNfdjYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtOTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk1NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo5NTU6c3RhdGljIGJvb2wgaXB2bGFuX2lzX3ZhbGlkX2Rldihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05NjgtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6OTY5OnN0YXRpYyBpbnQgaXB2bGFuX2FkZF9hZGRyNihzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgc3RydWN0IGluNl9hZGRyICppcDZfYWRkcilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtOTgzLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjk4NDpzdGF0aWMgdm9pZCBpcHZsYW5fZGVsX2FkZHI2KHN0cnVjdCBpcHZsX2RldiAqaXB2bGFuLCBzdHJ1Y3QgaW42X2FkZHIgKmlwNl9hZGRyKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy05ODgtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6OTg5OnN0YXRpYyBpbnQgaXB2bGFuX2FkZHI2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTk5MC1cXHRcXHRcXHQgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDEyLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwMTM6c3RhdGljIGludCBpcHZsYW5fYWRkcjZfdmFsaWRhdG9yX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwMTQtXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTAzOS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMDQwOnN0YXRpYyBpbnQgaXB2bGFuX2FkZF9hZGRyNChzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiwgc3RydWN0IGluX2FkZHIgKmlwNF9hZGRyKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNDEte1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA1NC1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMDU1OnN0YXRpYyB2b2lkIGlwdmxhbl9kZWxfYWRkcjQoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHN0cnVjdCBpbl9hZGRyICppcDRfYWRkcilcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwNTktXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTA2MDpzdGF0aWMgaW50IGlwdmxhbl9hZGRyNF9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDYxLVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwODYtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTA4NzpzdGF0aWMgaW50IGlwdmxhbl9hZGRyNF92YWxpZGF0b3JfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA4OC1cXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz0xMTMwPXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgaXB2bGFuX2FkZHI2X3Z0b3Jfbm90aWZpZXJfYmxvY2sgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExMzQtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTEzNTpzdGF0aWMgaW50IF9faW5pdCBpcHZsYW5faW5pdF9tb2R1bGUodm9pZClcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMTM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExNzItXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTE3MzpzdGF0aWMgdm9pZCBfX2V4aXQgaXB2bGFuX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTE3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMTg3LVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMjo0Ny44OTg0OTM3MDhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQxNTcxNzI2NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVkxBTiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIHN5bWJvbHMgaW52b2x2ZWQuIFdlJ3JlIGxvb2tpbmcgYXQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgLCB3aGljaCBpcyB0aGUgbW9kaWZpZWQgZnVuY3Rpb24sIGFuZCB0aGUgYG5ldGRldmAgbm90aWZpZXIgY2FsbGJhY2suIFRoZW4gdGhlcmUncyBgX19pcHZsYW5fbGlua19kZWxldGVgIGFuZCBgaXB2bGFuX2xpbmtfbmV3YC5cblxuRmlyc3QsIEkgY29uZmlybWVkIHRoYXQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGlzIGluZGVlZCBzdGF0aWMsIGJlaW5nIHRoZSBub3RpZmllciBjYWxsYmFjayByZWdpc3RlcmVkIHdpdGggYHJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcmAuIE5leHQsIEkndmUgY29uZmlybWVkIHRoYXQgYGlwdmxhbl9saW5rX3JlZ2lzdGVyYCwgYGlwdmxhbl9saW5rX25ld2AsIGBfX2lwdmxhbl9saW5rX2RlbGV0ZWAsIGFuZCBgaXB2bGFuX2xpbmtfc2V0dXBgIGFyZSBub24tc3RhdGljIGFuZCBleHBvcnRlZCBzeW1ib2xzLiBUaGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGZ1bmN0aW9uIGhhcyBhIHN5bWJvbCBpZiBga2FsbHN5bXNgIGlzIHVzZWQuIEknbGwgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIGZvciBvdGhlciBleHBvcnRlZCBzeW1ib2xzIGluIHRoZSBgaXB2bGFuYCBtb2R1bGUsIGJ1dCBJJ3ZlIGFscmVhZHkgaWRlbnRpZmllZCB0aGUga2V5IHBsYXllcnM6IGBpcHZsYW5fZGV2aWNlX2V2ZW50YCwgYF9faXB2bGFuX2xpbmtfZGVsZXRlYCwgYW5kIGBpcHZsYW5fbGlua19uZXdgLlxuXG5Ob3csIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llczogYENPTkZJR19JUFZMQU5gIGRlcGVuZHMgb24gYENPTkZJR19JTkVUYCwgYW5kIGJ5IGV4dGVuc2lvbiB0aGUgdW5kZXJseWluZyBuZXQgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb25zLiBTbywgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGRlZmluaXRlbHkgYElQVkxBTmAgYW5kIGBJTkVUYC5cblxuRmluYWxseSwgdGhlIGNvbnRleHQgb2YgdGhlIHBhdGNoIGl0c2VsZi4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgaXB2bGFuX2RldmljZV9ldmVudGAgaGFuZGxlciBkdXJpbmcgbmV0ZGV2aWNlIHVucmVnaXN0cmF0aW9uIChgTkVUREVWX1VOUkVHSVNURVJgKS4gVGhlIHByaW1hcnkgY2hhbmdlIGlzIG1vdmluZyBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueWAgb3V0c2lkZSB0aGUgYHBub2Rlc19sb2NrYCBtdXRleC4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSBpbiBjb3JlIGRyaXZlciB0ZWFyZG93biBhbmQgY29uY3VycmVuY3kgbG9naWMsIGVzcGVjaWFsbHkgcmVsZXZhbnQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGR1ZSB0byB0aGUgdXNlIG9mIElQVkxBTiBuZXRsaW5rIGludGVyZmFjZXMuXG5cblRoZSBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgSSBjYW4gY29uZmlybSB0aGF0IGJ5IHRoZSBwcmVzZW5jZSBvZiByYWNlIGNvbmRpdGlvbnMgdGhhdCBhcmUgaW50cm9kdWNlZCBieSB1bnJlZ2lzdGVyaW5nIGRldmljZXMgZnJvbSBkaWZmZXJlbnQgdGhyZWFkcyBhbmQgdGhlIG1vZGlmaWVkIGNvbmN1cnJlbmN5IGxvZ2ljIGluIGEgY3J1Y2lhbCBwYXJ0IG9mIHRoZSBkcml2ZXIuXG5cbldpdGggdGhhdCwgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI1NSwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDM6MDIuMDU1NjcwNTQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MTQ2MzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFZMQU5cIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHZsYW5fZGV2aWNlX2V2ZW50XCIsXG4gICAgXCJfX2lwdmxhbl9saW5rX2RlbGV0ZVwiLFxuICAgIFwiaXB2bGFuX2xpbmtfbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFZMQU5cIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHZsYW5fZGV2aWNlX2V2ZW50XCIsXG4gICAgXCJfX2lwdmxhbl9saW5rX2RlbGV0ZVwiLFxuICAgIFwiaXB2bGFuX2xpbmtfbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQVkxBTiBkZXZpY2UgZXZlbnQgbm90aWZpY2F0aW9uIGhhbmRsZXIgKGlwdmxhbl9kZXZpY2VfZXZlbnQpIGR1cmluZyBORVRERVZfVU5SRUdJU1RFUiBieSBtb3ZpbmcgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgpIG91dHNpZGUgb2YgdGhlIHBvcnQgcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiB0byBwcmV2ZW50IG5lc3RlZCBub3RpZmllciBpbnZvY2F0aW9ucyB1bmRlciB0aGUgbG9jay4gVGhpcyBhZmZlY3RzIGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGluIHRoZSB2aXJ0dWFsIElQVkxBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgbmV0bGluayBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDM6MDIuMTgwODIzN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0MTgxNDk2MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDM6MDIuMTgxMzYyMzdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMzQxODA5NTI1OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXFx1MDAyNmxzdF9raWxsKSBvdXRzaWRlIG9mIHRoZSBwb3J0LVxcdTAwM2Vwbm9kZXNfbG9jayBjcml0aWNhbCBzZWN0aW9uIGluIGlwdmxhbl9kZXZpY2VfZXZlbnQoKSB0byBwcmV2ZW50IGNhbGxpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgd2hpbGUgaG9sZGluZyB0aGUgbXV0ZXguXFxuXFxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFkanVzdG1lbnQgYWltZWQgYXQgcHJldmVudGluZyBkZWFkbG9ja3MgLyBsb2NrZGVwIHdhcm5pbmdzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCB1c2VyLXNwYWNlIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMuIEFueSBwb3RlbnRpYWwgY29uY3VycmVuY3kgb3IgbGlmZWN5Y2xlIGlzc3VlcyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MjAyYjNiZGIyNTJmYWRmZjhkNzdjNTQ0ZDM5ZGM2MWI5ZDI3NWQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjggMTg6MDA6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5pbmRleCBlZTQ2YTU1ZjczZDE0Li4yZDQzNDA2MjdjYTY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5AQCAtODQ2LDcgKzg0Niw2IEBAIHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbiBcdFx0XHRcdF9faXB2bGFuX2xpbmtfZGVsZXRlKG5ldCwgaXB2bGFuLVx1MDAzZWRldiwgXHUwMDI2bHN0X2tpbGwpO1xuIFx0XHR9XG4gXG4tXHRcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXHUwMDI2bHN0X2tpbGwpO1xuIFx0XHRicmVhaztcbiBcdH1cbiBcdGNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOlxuQEAgLTg5NSw2ICs4OTQsOSBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXG4gXG4gXHRtdXRleF91bmxvY2soXHUwMDI2cG9ydC1cdTAwM2Vwbm9kZXNfbG9jayk7XG4gXG4rXHQvKiBBdm9pZCBpbnZva2luZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB1bmRlciBwbm9kZXNfbG9jay4gKi9cbitcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXHUwMDI2bHN0X2tpbGwpO1xuK1xuIFx0aXB2bGFuX3BvcnRfcHV0KHBvcnQpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAzOjAyLjE4MTM2MzM4WiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE0MDgwMTM5MTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgUGF0Y2gqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIFRoZSB0YXNrIGlzIHRvIGFuYWx5emUgYSBwYXRjaCwgd2hpY2ggbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZSBpdHNlbGYsIGJ1dCBldmVuIG1vcmUgaW1wb3J0YW50bHksIHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIGl0LiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWx3YXlzIHN0YXJ0IGJ5IGdvaW5nIGJhY2sgdG8gdGhlIHNvdXJjZSBjb2RlIHRvIGNvbmZpcm0gbXkgaHlwb3RoZXNlcy5cblxuRmlyc3QsIEknbSBnb2luZyB0byBwdWxsIHVwIGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY2AsIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiB0aGUgcmVnaW9uIGFyb3VuZCBsaW5lcyA4NDYtOTAwLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nIGluIHRoYXQgcGFydGljdWxhciBzZWN0aW9uIG9mIGNvZGUuIFVzaW5nIGByZWFkLWZpbGVgIHdpbGwgYWxsb3cgbWUgdG8gcHJlY2lzZWx5IGV4YW1pbmUgdGhhdCBzZWN0aW9uLCB1bmRlcnN0YW5kaW5nIHdoYXQgdGhlIGNvcmUgZnVuY3Rpb24gaXMgZG9pbmcsIGFuZCB0aGUgdmFyaWFibGUgbWFuaXB1bGF0aW9ucy5cblxuVGhpcyBwcmVsaW1pbmFyeSByZXZpZXcgaXMgZXNzZW50aWFsIHRvIGdyb3VuZCBteSB1bmRlcnN0YW5kaW5nIGFuZCBlc3RhYmxpc2ggYSBiYXNlbGluZSBiZWZvcmUgZXhhbWluaW5nIHRoZSBwYXRjaCBtb3JlIGNsb3NlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE4OjAzOjE2LjI2MTUwNjI3NloiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODIwLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODIwOlxcdFxcdFxcdHN0cnVjdCBuZXQgKm9sZG5ldCwgKm5ld25ldCA9IGRldl9uZXQoZGV2KTtcXG4gODIxOlxcdFxcbiA4MjI6XFx0XFx0XFx0b2xkbmV0ID0gcmVhZF9wbmV0KFxcdTAwMjZwb3J0LVxcdTAwM2VwbmV0KTtcXG4gODIzOlxcdFxcdFxcdGlmIChuZXRfZXEobmV3bmV0LCBvbGRuZXQpKVxcbiA4MjQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDgyNTpcXHRcXG4gODI2OlxcdFxcdFxcdHdyaXRlX3BuZXQoXFx1MDAyNnBvcnQtXFx1MDAzZXBuZXQsIG5ld25ldCk7XFxuIDgyNzpcXHRcXG4gODI4OlxcdFxcdFxcdGlmIChwb3J0LVxcdTAwM2Vtb2RlID09IElQVkxBTl9NT0RFX0wzUylcXG4gODI5OlxcdFxcdFxcdFxcdGlwdmxhbl9taWdyYXRlX2wzc19ob29rKG9sZG5ldCwgbmV3bmV0KTtcXG4gODMwOlxcdFxcdFxcdGJyZWFrO1xcbiA4MzE6XFx0XFx0fVxcbiA4MzI6XFx0XFx0Y2FzZSBORVRERVZfVU5SRUdJU1RFUjoge1xcbiA4MzM6XFx0XFx0XFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChkZXYpO1xcbiA4MzQ6XFx0XFxuIDgzNTpcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1VOUkVHSVNURVJJTkcpXFxuIDgzNjpcXHRcXHRcXHRcXHRicmVhaztcXG4gODM3OlxcdFxcbiA4Mzg6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGlwdmxhbiwgbmV4dCwgXFx1MDAyNnBvcnQtXFx1MDAzZWlwdmxhbnMsIHBub2RlKSB7XFxuIDgzOTpcXHRcXHRcXHRcXHRpcHZsYW4tXFx1MDAzZWR5aW5nID0gdHJ1ZTtcXG4gODQwOlxcdFxcbiA4NDE6XFx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVlRBUClcXG4gODQyOlxcdFxcdFxcdFxcdGlmIChpcHZsYW4tXFx1MDAzZWRldi1cXHUwMDNlcnRubF9saW5rX29wcyAhPSBcXHUwMDI2aXB2bGFuX2xpbmtfb3BzKVxcbiA4NDM6XFx0XFx0XFx0XFx0XFx0X19pcHZ0YXBfZGVsbGlua19wdHIobmV0LCBpcHZsYW4tXFx1MDAzZWRldiwgXFx1MDAyNmxzdF9raWxsKTtcXG4gODQ0OlxcdFxcdFxcdFxcdGVsc2VcXG4gODQ1OlxcdCNlbmRpZlxcbiA4NDY6XFx0XFx0XFx0XFx0XFx0X19pcHZsYW5fbGlua19kZWxldGUobmV0LCBpcHZsYW4tXFx1MDAzZWRldiwgXFx1MDAyNmxzdF9raWxsKTtcXG4gODQ3OlxcdFxcdFxcdH1cXG4gODQ4OlxcdFxcbiA4NDk6XFx0XFx0XFx0YnJlYWs7XFxuIDg1MDpcXHRcXHR9XFxuIDg1MTpcXHRcXHRjYXNlIE5FVERFVl9GRUFUX0NIQU5HRTpcXG4gODUyOlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcXG4gODUzOlxcdFxcdFxcdFxcdG5ldGlmX2luaGVyaXRfdHNvX21heChpcHZsYW4tXFx1MDAzZWRldiwgZGV2KTtcXG4gODU0OlxcdFxcdFxcdFxcdG5ldGRldl91cGRhdGVfZmVhdHVyZXMoaXB2bGFuLVxcdTAwM2VkZXYpO1xcbiA4NTU6XFx0XFx0XFx0fVxcbiA4NTY6XFx0XFx0XFx0YnJlYWs7XFxuIDg1NzpcXHRcXG4gODU4OlxcdFxcdGNhc2UgTkVUREVWX0NIQU5HRU1UVTpcXG4gODU5OlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpXFxuIDg2MDpcXHRcXHRcXHRcXHRpcHZsYW5fYWRqdXN0X210dShpcHZsYW4sIGRldik7XFxuIDg2MTpcXHRcXHRcXHRicmVhaztcXG4gODYyOlxcdFxcbiA4NjM6XFx0XFx0Y2FzZSBORVRERVZfUFJFX0NIQU5HRUFERFI6XFxuIDg2NDpcXHRcXHRcXHRwcmVjaGFkZHJfaW5mbyA9IHB0cjtcXG4gODY1OlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcXG4gODY2OlxcdFxcdFxcdFxcdGVyciA9IG5ldGlmX3ByZV9jaGFuZ2VhZGRyX25vdGlmeShpcHZsYW4tXFx1MDAzZWRldixcXG4gODY3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgcHJlY2hhZGRyX2luZm8tXFx1MDAzZWRldl9hZGRyLFxcbiA4Njg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBleHRhY2spO1xcbiA4Njk6XFx0XFx0XFx0XFx0aWYgKGVycikge1xcbiA4NzA6XFx0XFx0XFx0XFx0XFx0cmV0ID0gbm90aWZpZXJfZnJvbV9lcnJubyhlcnIpO1xcbiA4NzE6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDg3MjpcXHRcXHRcXHRcXHR9XFxuIDg3MzpcXHRcXHRcXHR9XFxuIDg3NDpcXHRcXHRcXHRicmVhaztcXG4gODc1OlxcdFxcbiA4NzY6XFx0XFx0Y2FzZSBORVRERVZfQ0hBTkdFQUREUjpcXG4gODc3OlxcdFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcXG4gODc4OlxcdFxcdFxcdFxcdGV0aF9od19hZGRyX3NldChpcHZsYW4tXFx1MDAzZWRldiwgZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuIDg3OTpcXHRcXHRcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGlwdmxhbi1cXHUwMDNlZGV2KTtcXG4gODgwOlxcdFxcdFxcdH1cXG4gODgxOlxcdFxcdFxcdGJyZWFrO1xcbiA4ODI6XFx0XFxuIDg4MzpcXHRcXHRjYXNlIE5FVERFVl9QUkVfVFlQRV9DSEFOR0U6XFxuIDg4NDpcXHRcXHRcXHQvKiBGb3JiaWQgdW5kZXJseWluZyBkZXZpY2UgdG8gY2hhbmdlIGl0cyB0eXBlLiAqL1xcbiA4ODU6XFx0XFx0XFx0cmV0ID0gTk9USUZZX0JBRDtcXG4gODg2OlxcdFxcdFxcdGJyZWFrO1xcbiA4ODc6XFx0XFxuIDg4ODpcXHRcXHRjYXNlIE5FVERFVl9OT1RJRllfUEVFUlM6XFxuIDg4OTpcXHRcXHRjYXNlIE5FVERFVl9CT05ESU5HX0ZBSUxPVkVSOlxcbiA4OTA6XFx0XFx0Y2FzZSBORVRERVZfUkVTRU5EX0lHTVA6XFxuIDg5MTpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGlwdmxhbiwgXFx1MDAyNnBvcnQtXFx1MDAzZWlwdmxhbnMsIHBub2RlKVxcbiA4OTI6XFx0XFx0XFx0XFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKGV2ZW50LCBpcHZsYW4tXFx1MDAzZWRldik7XFxuIDg5MzpcXHRcXHR9XFxuIDg5NDpcXHRcXG4gODk1OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cG9ydC1cXHUwMDNlcG5vZGVzX2xvY2spO1xcbiA4OTY6XFx0XFxuIDg5NzpcXHRcXHQvKiBBdm9pZCBpbnZva2luZyBuZXN0ZWQgbmV0ZGV2aWNlIG5vdGlmaWVycyB1bmRlciBwbm9kZXNfbG9jay4gKi9cXG4gODk4OlxcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXFx1MDAyNmxzdF9raWxsKTtcXG4gODk5OlxcdFxcbiA5MDA6XFx0XFx0aXB2bGFuX3BvcnRfcHV0KHBvcnQpO1xcbiA5MDE6XFx0XFxuIDkwMjpcXHRcXHRyZXR1cm4gcmV0O1xcbiA5MDM6XFx0fVxcbiA5MDQ6XFx0XFxuIDkwNTpcXHQvKiB0aGUgY2FsbGVyIG11c3QgaGVsZCB0aGUgYWRkcnMgbG9jayAqL1xcbiA5MDY6XFx0c3RhdGljIGludCBpcHZsYW5fYWRkX2FkZHIoc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sIHZvaWQgKmlhZGRyLCBib29sIGlzX3Y2KVxcbiA5MDc6XFx0e1xcbiA5MDg6XFx0XFx0c3RydWN0IGlwdmxfYWRkciAqYWRkcjtcXG4gOTA5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMzoxNi4yNjE3NTQxMjdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0NzY4Mjk4NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nLCB3aGVyZSBkbyB3ZSBraWNrIG9mZiBhbmQgd2hhdCdzIHRoZSBlbnRyeSBwb2ludCBoZXJlPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBgaXB2bGFuX2RldmljZV9ldmVudGAgZnVuY3Rpb24gY29tZXMgaW50byBwbGF5LiBMZXQncyBzZWUgaG93IHRoaW5ncyBhcmUgc2V0IHVwIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiBpdHMgZXhlY3V0aW9uIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgc3lzdGVtLCBhbmQgaG93IGl0IGlzIGNhbGxlZCBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzg3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowMzozOC43Mzg1OTI2NjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc5MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc5MDpcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbiA3OTE6XFx0e1xcbiA3OTI6XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZXh0YWNrKHB0cik7XFxuIDc5MzpcXHRcXHRzdHJ1Y3QgbmV0ZGV2X25vdGlmaWVyX3ByZV9jaGFuZ2VhZGRyX2luZm8gKnByZWNoYWRkcl9pbmZvO1xcbiA3OTQ6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IG5ldGRldl9ub3RpZmllcl9pbmZvX3RvX2RldihwdHIpO1xcbiA3OTU6XFx0XFx0c3RydWN0IGlwdmxfZGV2ICppcHZsYW4sICpuZXh0O1xcbiA3OTY6XFx0XFx0aW50IGVyciwgcmV0ID0gTk9USUZZX0RPTkU7XFxuIDc5NzpcXHRcXHRzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0O1xcbiA3OTg6XFx0XFx0TElTVF9IRUFEKGxzdF9raWxsKTtcXG4gNzk5OlxcdFxcbiA4MDA6XFx0XFx0aWYgKGV2ZW50ID09IE5FVERFVl9QUkVDSEFOR0VVUFBFUiB8fFxcbiA4MDE6XFx0XFx0ICAgIGV2ZW50ID09IE5FVERFVl9DSEFOR0VVUFBFUilcXG4gODAyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDgwMzpcXHRcXG4gODA0OlxcdFxcdHBvcnQgPSBpcHZsYW5fcG9ydF9nZXQoZGV2KTtcXG4gODA1OlxcdFxcdGlmICghcG9ydClcXG4gODA2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDgwNzpcXHRcXG4gODA4OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBvcnQtXFx1MDAzZXBub2Rlc19sb2NrKTtcXG4gODA5OlxcdFxcbiA4MTA6XFx0XFx0c3dpdGNoIChldmVudCkge1xcbiA4MTE6XFx0XFx0Y2FzZSBORVRERVZfVVA6XFxuIDgxMjpcXHRcXHRjYXNlIE5FVERFVl9ET1dOOlxcbiA4MTM6XFx0XFx0Y2FzZSBORVRERVZfQ0hBTkdFOlxcbiA4MTQ6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpcHZsYW4sIFxcdTAwMjZwb3J0LVxcdTAwM2VpcHZsYW5zLCBwbm9kZSlcXG4gODE1OlxcdFxcdFxcdFxcdG5ldGlmX3N0YWNrZWRfdHJhbnNmZXJfb3BlcnN0YXRlKGlwdmxhbi1cXHUwMDNlcGh5X2RldixcXG4gODE2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBpcHZsYW4tXFx1MDAzZWRldik7XFxuIDgxNzpcXHRcXHRcXHRicmVhaztcXG4gODE4OlxcdFxcbiA4MTk6XFx0XFx0Y2FzZSBORVRERVZfUkVHSVNURVI6IHtcXG4gODIwOlxcdFxcdFxcdHN0cnVjdCBuZXQgKm9sZG5ldCwgKm5ld25ldCA9IGRldl9uZXQoZGV2KTtcXG4gODIxOlxcdFxcbiA4MjI6XFx0XFx0XFx0b2xkbmV0ID0gcmVhZF9wbmV0KFxcdTAwMjZwb3J0LVxcdTAwM2VwbmV0KTtcXG4gODIzOlxcdFxcdFxcdGlmIChuZXRfZXEobmV3bmV0LCBvbGRuZXQpKVxcbiA4MjQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDgyNTpcXHRcXG4gODI2OlxcdFxcdFxcdHdyaXRlX3BuZXQoXFx1MDAyNnBvcnQtXFx1MDAzZXBuZXQsIG5ld25ldCk7XFxuIDgyNzpcXHRcXG4gODI4OlxcdFxcdFxcdGlmIChwb3J0LVxcdTAwM2Vtb2RlID09IElQVkxBTl9NT0RFX0wzUylcXG4gODI5OlxcdFxcdFxcdFxcdGlwdmxhbl9taWdyYXRlX2wzc19ob29rKG9sZG5ldCwgbmV3bmV0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTg6MDM6MzguNzM4NzYxMjA3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3NjIzNTIzOTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVB2bGFuIFBhdGNoIGZvciBTYWZldHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBjb25jdXJyZW5jeSBmaXggd2l0aGluIHRoZSBgaXB2bGFuX2RldmljZV9ldmVudCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGNhbGwgdG8gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXHUwMDI2bHN0X2tpbGwpYCBvdXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uIHByb3RlY3RlZCBieSBgcG9ydC1cdTAwM2Vwbm9kZXNfbG9ja2AuIFRoZSByYXRpb25hbGU/IFRvIHByZXZlbnQgbmVzdGVkIG5ldGRldmljZSBub3RpZmllciBpbnZvY2F0aW9ucyB3aGlsZSBob2xkaW5nIHRoYXQgbG9jaywgd2hpY2ggY291bGQgbGVhZCB0byBkZWFkbG9ja3Mg4oCTIGEgY2xhc3NpYyByZWNpcGUgZm9yIHRyb3VibGUuXG5cbkZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBzcGVjaWFsaXN0LCB0aGUgY29kZSBpcyB2ZXJ5IGVhc3kgdG8gcmVhZC4gYExJU1RfSEVBRChsc3Rfa2lsbCk7YCBpcyBpbml0aWFsaXplZCBvbiBsaW5lIDc5OCwgYW5kIHRoZSBwYXRjaCBzaW1wbHkgc2hpZnRzIHRoZSBsb2NhdGlvbiBvZiBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShcdTAwMjZsc3Rfa2lsbCk7YC4gSW1wb3J0YW50bHksIGlmIGBsc3Rfa2lsbGAgcmVtYWlucyBlbXB0eSBmb3IgZXZlbnRzIG90aGVyIHRoYW4gYE5FVERFVl9VTlJFR0lTVEVSYCwgb3IgaWYgbm8gZGV2aWNlcyBhcmUgYWRkZWQsIHRoaXMgb3BlcmF0aW9uIGJlY29tZXMgYSBuby1vcCBkdWUgdG8gYGxpc3RfZW1wdHkoXHUwMDI2bHN0X2tpbGwpYC5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogZG9lcyB0aGlzIGludHJvZHVjZSBhbnkgbWVtb3J5IHNhZmV0eSBjb25jZXJucz8gTm8uXG5cbiogICBEb2VzIGl0IGludm9sdmUgYW55IHVzZXIta2VybmVsIGRhdGEgY29weWluZz8gTm8uXG4qICAgRG9lcyBpdCB0b3VjaCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vOyB0aGUgYGxzdF9raWxsYCBsaXN0IGlzIHByb3Blcmx5IGluaXRpYWxpemVkLlxuKiAgIERvZXMgaXQgaW50cm9kdWNlIG5ldyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vLlxuKiAgIERvZXMgaXQgbW9kaWZ5IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb24gb3IgaW5pdGlhbGl6ZSB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm8uXG4qICAgRG9lcyBpdCB0b3VjaCBhbnkgYm91bmRzIGNoZWNrcyBvciBsZW5ndGggY2FsY3VsYXRpb25zPyBOby5cblxuVGhlIHBhdGNoICpleHBsaWNpdGx5KiBhZGRyZXNzZXMgbG9ja2luZyBhbmQgZGVhZGxvY2sgY29uY2VybnMuIE15IGV4cGVydCBvcGluaW9uIGlzIHRoYXQgdGhpcyBpcyBhIHRleHRib29rIGV4YW1wbGUgb2YgYSBjb25jdXJyZW5jeSBmaXgsIGRlc2lnbmVkIHRvIGF2b2lkIGxvY2sgaW52ZXJzaW9uIG9yIGRlYWRsb2NrIGlzc3VlcywgYXMgY29uZmlybWVkIGJ5IGluc3BlY3RpbmcgdGhlIGNvZGUsIGFuZCBob3cgdGhlIGNoYW5nZXMgZml0IGluLlxuXG5UaGUgbG9ja2luZyBpc3N1ZXMgYXJlIG1hbmFnZWQgYnkgTE9DS0RFUCwgYW5kIGxpZmVjeWNsZS9tZW1vcnkgc2FmZXR5IGFzcGVjdHMgYXJlIG1hbmFnZWQgYnkgS0FTQU4uIFRoaXMgY2hhbmdlIGlzIGVudGlyZWx5IGZvY3VzZWQgb24gc3luY2hyb25pemF0aW9uIGFuZCBkb2Vzbid0IHRvdWNoIG1lbW9yeSBzYWZldHkgaW4gYW55IHdheS5cblxuU28sIHRvIHN1bW1hcml6ZSBzdWNjaW5jdGx5OiBUaGlzIHBhdGNoIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSByZWZhY3RvciB0byBhdm9pZCBsb2NrIHJlY3Vyc2lvbiwgYW5kIHRodXMgaXMgYSBjYXNlIHdoZXJlIGBOZWVkc0tNU0FOYCBpcyBmYWxzZSwgYXMgS0FTQU4gaXMgZm9yIGxpZmVjeWNsZSBwcm9ibGVtcywgd2hpbGUgTE9DS0RFUCBpcyBmb3IgbG9jayBwcm9ibGVtcywgd2hpY2ggaXMgdGhlIGNydXggb2YgdGhlIGN1cnJlbnQgcGF0Y2guIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhpcyBpcyB0aGUgY29uY2x1c2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU5NSwiT3V0cHV0VG9rZW5zIjoxNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxODowNToxNi4zNjIyODg2NDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXFx1MDAyNmxzdF9raWxsKSBvdXRzaWRlIG9mIHRoZSBwb3J0LVxcdTAwM2Vwbm9kZXNfbG9jayBjcml0aWNhbCBzZWN0aW9uIGluIGlwdmxhbl9kZXZpY2VfZXZlbnQoKSB0byBwcmV2ZW50IGNhbGxpbmcgbmVzdGVkIG5ldGRldmljZSBub3RpZmllcnMgd2hpbGUgaG9sZGluZyB0aGUgbXV0ZXguXFxuXFxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGFkanVzdG1lbnQgYWltZWQgYXQgcHJldmVudGluZyBkZWFkbG9ja3MgLyBsb2NrZGVwIHdhcm5pbmdzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCB1c2VyLXNwYWNlIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMuIEFueSBwb3RlbnRpYWwgY29uY3VycmVuY3kgb3IgbGlmZWN5Y2xlIGlzc3VlcyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb3ZlcyB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFxcdTAwMjZsc3Rfa2lsbCkgb3V0c2lkZSBvZiB0aGUgcG9ydC1cXHUwMDNlcG5vZGVzX2xvY2sgY3JpdGljYWwgc2VjdGlvbiBpbiBpcHZsYW5fZGV2aWNlX2V2ZW50KCkgdG8gcHJldmVudCBjYWxsaW5nIG5lc3RlZCBuZXRkZXZpY2Ugbm90aWZpZXJzIHdoaWxlIGhvbGRpbmcgdGhlIG11dGV4LlxcblxcblRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBhZGp1c3RtZW50IGFpbWVkIGF0IHByZXZlbnRpbmcgZGVhZGxvY2tzIC8gbG9ja2RlcCB3YXJuaW5ncy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgdXNlci1zcGFjZSBjb3BpZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLiBBbnkgcG90ZW50aWFsIGNvbmN1cnJlbmN5IG9yIGxpZmVjeWNsZSBpc3N1ZXMgYXJlIGNvdmVyZWQgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowxbww2[1] Phase: Succeeded StartedAt: 2026-08-28 18:05:28 +0000 UTC FinishedAt: 2026-08-28 18:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-28 18:05:28 +0000 UTC FinishedAt: 2026-08-28 18:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2] Phase: Succeeded StartedAt: 2026-08-28 18:05:28 +0000 UTC FinishedAt: 2026-08-28 21:44:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-28 18:05:28 +0000 UTC FinishedAt: 2026-08-28 21:44:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-28 18:05:28 +0000 UTC FinishedAt: 2026-08-28 18:05:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-28 18:05:28 +0000 UTC FinishedAt: 2026-08-28 18:05:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxbww2/series-workflowxbww2-convert-artifact-3246347375/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-28 18:05:38 +0000 UTC FinishedAt: 2026-08-28 18:22:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-28 18:05:38 +0000 UTC FinishedAt: 2026-08-28 18:22:15 +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:*80c618cb-a3dd-4623-a0a8-c146e8aeb8be,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-workflowxbww2/series-workflowxbww2-convert-artifact-3246347375/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": "154e998c-3f6b-4dc2-936d-b9c69dd61b97", "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-workflowxbww2/series-workflowxbww2-build-action-964563253/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-28 18:05:38 +0000 UTC FinishedAt: 2026-08-28 18:22:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*80c618cb-a3dd-4623-a0a8-c146e8aeb8be,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-workflowxbww2/series-workflowxbww2-convert-artifact-3246347375/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": "154e998c-3f6b-4dc2-936d-b9c69dd61b97", "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-workflowxbww2/series-workflowxbww2-build-action-964563253/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-28 18:22:15 +0000 UTC FinishedAt: 2026-08-28 18:22:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-28 18:22:15 +0000 UTC FinishedAt: 2026-08-28 18:22:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-28 18:22:15 +0000 UTC FinishedAt: 2026-08-28 18:22:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-28 18:22:15 +0000 UTC FinishedAt: 2026-08-28 18:22:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxbww2/series-workflowxbww2-convert-artifact-710380222/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-28 18:22:25 +0000 UTC FinishedAt: 2026-08-28 18:24:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-28 18:22:25 +0000 UTC FinishedAt: 2026-08-28 18:24:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*154e998c-3f6b-4dc2-936d-b9c69dd61b97,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-workflowxbww2/series-workflowxbww2-build-action-964563253/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-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-28 18:24:22 +0000 UTC FinishedAt: 2026-08-28 18:24:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-28 18:24:22 +0000 UTC FinishedAt: 2026-08-28 18:24:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-28 18:24:22 +0000 UTC FinishedAt: 2026-08-28 18:40:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-28 18:24:22 +0000 UTC FinishedAt: 2026-08-28 18:40:14 +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:*80c618cb-a3dd-4623-a0a8-c146e8aeb8be,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-workflowxbww2/series-workflowxbww2-convert-artifact-710380222/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": "ba0c532f-6f66-4687-9d8a-7d47cd0c2d26", "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-workflowxbww2/series-workflowxbww2-build-action-2763146258/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-28 18:24:22 +0000 UTC FinishedAt: 2026-08-28 18:40:04 +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:*80c618cb-a3dd-4623-a0a8-c146e8aeb8be,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-workflowxbww2/series-workflowxbww2-convert-artifact-710380222/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": "ba0c532f-6f66-4687-9d8a-7d47cd0c2d26", "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-workflowxbww2/series-workflowxbww2-build-action-2763146258/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-28 18:40:14 +0000 UTC FinishedAt: 2026-08-28 18:40:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-28 18:40:14 +0000 UTC FinishedAt: 2026-08-28 18:40:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-28 18:40:14 +0000 UTC FinishedAt: 2026-08-28 18:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-28 18:40:14 +0000 UTC FinishedAt: 2026-08-28 18:42:12 +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:*ba0c532f-6f66-4687-9d8a-7d47cd0c2d26,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-workflowxbww2/series-workflowxbww2-build-action-2763146258/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-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-28 18:42:22 +0000 UTC FinishedAt: 2026-08-28 21:44:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-28 18:42:22 +0000 UTC FinishedAt: 2026-08-28 21:44:35 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"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:*154e998c-3f6b-4dc2-936d-b9c69dd61b97,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ba0c532f-6f66-4687-9d8a-7d47cd0c2d26,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-workflowxbww2/series-workflowxbww2-build-action-964563253/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-workflowxbww2/series-workflowxbww2-build-action-2763146258/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-28 18:42:22 +0000 UTC FinishedAt: 2026-08-28 18:42:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-28 18:42:22 +0000 UTC FinishedAt: 2026-08-28 18:42:27 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"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-workflowxbww2/series-workflowxbww2-convert-artifact-713385667/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-28 18:42:22 +0000 UTC FinishedAt: 2026-08-28 18:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-28 18:42:22 +0000 UTC FinishedAt: 2026-08-28 18:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-28 18:42:22 +0000 UTC FinishedAt: 2026-08-28 18:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-28 18:42:32 +0000 UTC FinishedAt: 2026-08-28 21:44:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbww2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["ipvlan_device_event","__ipvlan_link_delete","ipvlan_link_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3205699d79f262412c1be7fc1c04066610d3cd52","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN","INET"],"series_id":"f9c32189-de73-4b0e-aa85-2fca401cd0dc","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-28 18:42:32 +0000 UTC FinishedAt: 2026-08-28 21:44:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*154e998c-3f6b-4dc2-936d-b9c69dd61b97,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ba0c532f-6f66-4687-9d8a-7d47cd0c2d26,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-workflowxbww2/series-workflowxbww2-build-action-964563253/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-workflowxbww2/series-workflowxbww2-build-action-2763146258/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-workflowxbww2/series-workflowxbww2-convert-artifact-713385667/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,}