Name: series-workflowhx56v Phase: Succeeded StartedAt: 2026-07-09 22:25:41 +0000 UTC FinishedAt: 2026-07-10 03:29:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[0] Phase: Succeeded StartedAt: 2026-07-09 22:25:41 +0000 UTC FinishedAt: 2026-07-09 22:50:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 22:25:41 +0000 UTC FinishedAt: 2026-07-09 22:50:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE" ], "series_id": "a98c55bb-d7dc-4de6-a612-fdcc343ca93a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "erspan_tunnel_init", "erspan_xmit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vyc3Bhbl90dW5uZWxfaW5pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXRzIHRoZSBgbGx0eGAgZmxhZyBvbiBFUlNQQU4gdHVubmVsIGRldmljZXMgdG8gc2tpcCB0aGUgVFggbG9jaywgcHJldmVudGluZyBBQkJBIGRlYWRsb2NrcyB3aGVuIHRoZSB0cmFuc21pdCBwYXRoIHJlLWVudGVycyB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEVSU1BBTiB0dW5uZWxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmM1NTdlYmM2ODFmYmNjYjliNWVkMTAxYzE3MTNlODk3ZDFjZDVjMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMjI6NDk6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZ3JlLmMgYi9uZXQvaXB2NC9pcF9ncmUuY1xuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjlmYmZmMTZjZGExZDI4IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX2dyZS5jXG5AQCAtMTM2Myw2ICYjNDM7MTM2Myw4IEBAIHN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4gXHRkZXYtXHUwMDNlcHJpdl9mbGFnc1x0XHR8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcbiYjNDM7XHQvKiBTa2lwIFRYIGxvY2s6IHhtaXQgcmUtZW50ZXJzIHN0YWNrLCByaXNraW5nIEFCQkEgd2l0aCB1bmRlcmxheSAqL1xuJiM0MztcdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiBcdG5ldGlmX2tlZXBfZHN0KGRldik7XG4gXG4gXHRyZXR1cm4gaXBfdHVubmVsX2luaXQoZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfSVBHUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlcnNwYW5fdHVubmVsX2luaXQmIzM0OywKICAgICYjMzQ7ZXJzcGFuX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2V0cyB0aGUgYGxsdHhgIGZsYWcgb24gRVJTUEFOIHR1bm5lbCBkZXZpY2VzIHRvIHNraXAgdGhlIFRYIGxvY2ssIHByZXZlbnRpbmcgQUJCQSBkZWFkbG9ja3Mgd2hlbiB0aGUgdHJhbnNtaXQgcGF0aCByZS1lbnRlcnMgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmM1NTdlYmM2ODFmYmNjYjliNWVkMTAxYzE3MTNlODk3ZDFjZDVjMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDkgMjI6NDk6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jCmluZGV4IDNlZmRmYjRmZmEyMTEyLi45ZmJmZjE2Y2RhMWQyOCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfZ3JlLmMKQEAgLTEzNjMsNiAmIzQzOzEzNjMsOCBAQCBzdGF0aWMgaW50IGVyc3Bhbl90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRldi0mZ3Q7ZmVhdHVyZXMJCXw9IEdSRV9GRUFUVVJFUzsKIAlkZXYtJmd0O2h3X2ZlYXR1cmVzCXw9IEdSRV9GRUFUVVJFUzsKIAlkZXYtJmd0O3ByaXZfZmxhZ3MJCXw9IElGRl9MSVZFX0FERFJfQ0hBTkdFOwomIzQzOwkvKiBTa2lwIFRYIGxvY2s6IHhtaXQgcmUtZW50ZXJzIHN0YWNrLCByaXNraW5nIEFCQkEgd2l0aCB1bmRlcmxheSAqLwomIzQzOwlkZXYtJmd0O2xsdHggPSB0cnVlOwogCW5ldGlmX2tlZXBfZHN0KGRldik7CiAKIAlyZXR1cm4gaXBfdHVubmVsX2luaXQoZGV2KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRVJTUEFOIFR1bm5lbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L2lwdjQvaXBfZ3JlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogYSBgZGV2LSZndDtsbHR4ID0gdHJ1ZTtgIGlzIGJlaW5nIGFkZGVkIHdpdGhpbiBgZXJzcGFuX3R1bm5lbF9pbml0YC4gRXNzZW50aWFsbHksIHRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0aGF0IHRvZ2dsZXMgdGhlIGBsbHR4YCBmbGFnIG9uIHRoZSBuZXR3b3JrIGRldmljZS4gVGhlIGltcGxpY2F0aW9uIGlzIGNsZWFyLCBpdCYjMzk7cyBieXBhc3NpbmcgdGhlIFRYIGxvY2sgZm9yIHRoZXNlIHR1bm5lbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIGRldGVybWluZSBpZiB0aGlzIGludHJvZHVjZXMgYSBwb3RlbnRpYWwgcmFjZS4KCkl0JiMzOTtzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgdGhpcyBpcyByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBzZXR1cHMsIHNwZWNpZmljYWxseSBFUlNQQU4gdHVubmVscywgd2hpY2ggaXMgd2hlcmUgaXQmIzM5O3MgYmVpbmcgcHJvcG9zZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBjb25kaXRpb25zIGluIHdoaWNoIHRoaXMgaXMgdXNlZCBjYW4gbGVhZCB0byBjb250ZW50aW9uIG9yIGNvcnJ1cHRpb24gaW4gc3BlY2lmaWMgZGVwbG95bWVudCBzY2VuYXJpb3MuIE5vdywgdG8gYXNzZXNzIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZSBhbmQgd2hhdCBpdCB0cnVseSBlbmFibGVzLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbiBhY3R1YWxseSBlbmFibGVzIEVSU1BBTi4gS25vd2luZyB0aGF0IHdpbGwgZ2l2ZSBtZSBjb250ZXh0IGFyb3VuZCB0aGUgdXNlIGNhc2UuIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvbmZpZyBvcHRpb25zIHNoZWQgc29tZSBsaWdodCBvbiB0aGlzLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgdHggcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcnNwYW5fdHVubmVsX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9ncmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9ncmUuYz0xMzM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTEzNDktXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzUwOnN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzUxLXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZXJzcGFuX25ldGRldl9vcHMgPSB7XG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc0Olx0Lm5kb19pbml0XHRcdD0gZXJzcGFuX3R1bm5lbF9pbml0LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM3NS1cdC5uZG9fdW5pbml0XHRcdD0gaXBfdHVubmVsX3VuaW5pdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIElQIEdSRSBNb2R1bGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGVuYWJsZSB0aGUgR2VuZXJpYyBSb3V0aW5nIEVuY2Fwc3VsYXRpb24gKEdSRSkgSVAgbW9kdWxlIOKAkyB0aGF0JiMzOTtzIGBuZXQvaXB2NC9pcF9ncmUuY2AuIFdoZXJlIGRvIEkgZXZlbiBzdGFydD8gVXN1YWxseSwgd2hlbiBJJiMzOTttIHRyYWNraW5nIHRoaXMgZG93biwgSSYjMzk7bGwgZ28gcmlnaHQgdG8gdGhlIEtjb25maWcgZmlsZXMuIEkga25vdyB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGlzIGhpZXJhcmNoaWNhbCwgc28gSSYjMzk7bGwgcHJvYmFibHkgaGF2ZSB0byB0cmFjZSB0aHJvdWdoIGEgZmV3IGRpZmZlcmVudCBLY29uZmlnIGZpbGVzIHRvIGZpbmQgdGhlIHJlbGV2YW50IG9wdGlvbi4gSSYjMzk7bSBndWVzc2luZyBpdOKAmXMgbGlrZWx5IHVuZGVyIGBuZXQvaXB2NGAgb3IgbWF5YmUgZXZlbiBzb21ldGhpbmcgbW9yZSBnZW5lcmFsIGluIHRoZSBuZXR3b3JraW5nIHNlY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgZGVwZW5kZW5jaWVzIHRvbyDigJMgYXJlIHRoZXJlIGFueSBvdGhlciBvcHRpb25zIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgYmVmb3JlIHRoaXMgb25lIGJlY29tZXMgYXZhaWxhYmxlPyBUaGlzIGlzIGEgcHJldHR5IGNvbW1vbiBzY2VuYXJpbywgc28gSSYjMzk7bSBleHBlY3RpbmcgYSByZWFzb25hYmx5IGRpcmVjdCBkZXBlbmRlbmN5IHBhdGguIEkmIzM5O20gYWxzbyBnb2luZyB0byBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBwb3RlbnRpYWxseSByZWxldmFudCBtb2R1bGUgYWxpYXNlcyBvciBidWlsZCBmbGFncyB0aGF0IGNvdWxkIGltcGFjdCB3aGV0aGVyIHRoaXMgcGFydGljdWxhciBzb3VyY2UgZmlsZSBnZXRzIGNvbXBpbGVkLiBJJiMzOTtsbCBoYXZlIHRvIHNlZSB3aGV0aGVyIHRoZXJlIGlzIGEgYG9iai1gIGRpcmVjdGl2ZSBvciBzaW1pbGFyIHRvIGluZGljYXRlIHdoZXRoZXIgaXQgaXMgYnVpbHQgaW4sIGFzIGEgbW9kdWxlLCBvciBub3QgYXQgYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX2dyZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Mjk9b2JqLSQoQ09ORklHX05FVF9JUEdSRV9ERU1VWCkgJiM0Mzs9IGdyZS5vXG5uZXQvaXB2NC9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfTkVUX0lQR1JFKSAmIzQzOz0gaXBfZ3JlLm9cbm5ldC9pcHY0L01ha2VmaWxlLTMxLXVkcF90dW5uZWwteSA6PSB1ZHBfdHVubmVsX2NvcmUubyB1ZHBfdHVubmVsX25pYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipJbnZlc3RpZ2F0aW5nIEdSRSBUdW5uZWwgQ29uZmlndXJhdGlvbnMgYW5kIEVSU1BBTioqCgpPa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIEkmIzM5O20gbG9va2luZyBhdCwgZnJvbSB0aGUgbG9va3Mgb2YgaXQsIGhhcyBgTkVUX0lQR1JFYCBlbmFibGVkLiBUaGF0IGdpdmVzIHVzIGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgd2hhdCBJIHJlYWxseSBuZWVkIHRvIGFzY2VydGFpbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgYW55IHNwZWNpZmljIEVSU1BBTiBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgd2l0aGluIHRoaXMgcGFydGljdWxhciBzZXR1cC4gSSYjMzk7dmUgd29ya2VkIHdpdGggR1JFIHR1bm5lbHMgZXh0ZW5zaXZlbHksIHNvIEkga25vdyBFUlNQQU4gY2FuIHNvbWV0aW1lcyBiZSBpbXBsZW1lbnRlZCBhcyBhIHZhcmlhbnQuIFRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBhcHByb2FjaCBhdCB0aGlzIHBvaW50IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSByZWxldmFudCBtb2R1bGVzLCBlc3BlY2lhbGx5IGxvb2tpbmcgYXQgYG5ldC9pcHY0L2lwX2dyZS5jYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGZ1bmRhbWVudGFsIEdSRSBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkLCBzbyB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIGFueSBFUlNQQU4gc3BlY2lmaWMgYWRkaXRpb25zIG9yIG1vZGlmaWNhdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Vyc3BhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jLTQ2LSNpbmNsdWRlIFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFx1MDAzZVxubmV0L2lwdjQvaXBfZ3JlLmM6NDc6I2luY2x1ZGUgXHUwMDNjbmV0L2Vyc3Bhbi5oXHUwMDNlXG5uZXQvaXB2NC9pcF9ncmUuYy00OC1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTM9c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbm5ldC9pcHY0L2lwX2dyZS5jOjExNDpzdGF0aWMgdm9pZCBlcnNwYW5fYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC9pcF9ncmUuYy0xMTUtXHRcdFx0XHR1MzIgaWQsIHUzMiBpbmRleCxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTk9c3RhdGljIHVuc2lnbmVkIGludCBncmVfdGFwX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xubmV0L2lwdjQvaXBfZ3JlLmM6MTIwOnN0YXRpYyB1bnNpZ25lZCBpbnQgZXJzcGFuX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xubmV0L2lwdjQvaXBfZ3JlLmMtMTIxLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTIyPXN0YXRpYyBpbnQgaXBncmVfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE0OS1cdFx0IHRwaS1cdTAwM2Vwcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSlcbm5ldC9pcHY0L2lwX2dyZS5jOjE1MDpcdFx0aXRuID0gbmV0X2dlbmVyaWMobmV0LCBlcnNwYW5fbmV0X2lkKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MS1cdGVsc2Vcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0yMTk9c3RhdGljIHZvaWQgZ3JlX2VycihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbylcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNTctXG5uZXQvaXB2NC9pcF9ncmUuYzoyNTg6c3RhdGljIGJvb2wgaXNfZXJzcGFuX3R5cGUxKGludCBncmVfaGRyX2xlbilcbm5ldC9pcHY0L2lwX2dyZS5jLTI1OS17XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMjY2LVxubmV0L2lwdjQvaXBfZ3JlLmM6MjY3OnN0YXRpYyBpbnQgZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdG5sX3B0a19pbmZvICp0cGksXG5uZXQvaXB2NC9pcF9ncmUuYy0yNjgtXHRcdCAgICAgIGludCBncmVfaGRyX2xlbilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzEtXHRzdHJ1Y3QgbWV0YWRhdGFfZHN0ICp0dW5fZHN0ID0gTlVMTDtcbm5ldC9pcHY0L2lwX2dyZS5jOjI3MjpcdHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKmVyc2hkcjtcbm5ldC9pcHY0L2lwX2dyZS5jLTI3My1cdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzYtXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDtcbm5ldC9pcHY0L2lwX2dyZS5jOjI3NzpcdHN0cnVjdCBlcnNwYW5fbWQyICptZDI7XG5uZXQvaXB2NC9pcF9ncmUuYy0yNzgtXHRpbnQgdmVyO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTI4Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjI4MzpcdGl0biA9IG5ldF9nZW5lcmljKG5ldCwgZXJzcGFuX25ldF9pZCk7XG5uZXQvaXB2NC9pcF9ncmUuYy0yODQtXHRpcGggPSBpcF9oZHIoc2tiKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjI4NTpcdGlmIChpc19lcnNwYW5fdHlwZTEoZ3JlX2hkcl9sZW4pKSB7XG5uZXQvaXB2NC9pcF9ncmUuYy0yODYtXHRcdHZlciA9IDA7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMjk0LVxubmV0L2lwdjQvaXBfZ3JlLmM6Mjk1Olx0XHRlcnNoZHIgPSAoc3RydWN0IGVyc3Bhbl9iYXNlX2hkciAqKShza2ItXHUwMDNlZGF0YSAmIzQzOyBncmVfaGRyX2xlbik7XG5uZXQvaXB2NC9pcF9ncmUuYy0yOTYtXHRcdHZlciA9IGVyc2hkci1cdTAwM2V2ZXI7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzAzLVx0aWYgKHR1bm5lbCkge1xubmV0L2lwdjQvaXBfZ3JlLmM6MzA0Olx0XHRpZiAoaXNfZXJzcGFuX3R5cGUxKGdyZV9oZHJfbGVuKSlcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNS1cdFx0XHRsZW4gPSBncmVfaGRyX2xlbjtcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNi1cdFx0ZWxzZVxubmV0L2lwdjQvaXBfZ3JlLmM6MzA3Olx0XHRcdGxlbiA9IGdyZV9oZHJfbGVuICYjNDM7IGVyc3Bhbl9oZHJfbGVuKHZlcik7XG5uZXQvaXB2NC9pcF9ncmUuYy0zMDgtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzE4LVx0XHRpZiAodHVubmVsLVx1MDAzZWNvbGxlY3RfbWQpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjMxOTpcdFx0XHRzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICpwa3RfbWQsICptZDtcbm5ldC9pcHY0L2lwX2dyZS5jLTMyMC1cdFx0XHRzdHJ1Y3QgaXBfdHVubmVsX2luZm8gKmluZm87XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzQyLVx0XHRcdCAgICAgc2tiX25ldHdvcmtfaGVhZGVyX2xlbihza2IpO1xubmV0L2lwdjQvaXBfZ3JlLmM6MzQzOlx0XHRcdHBrdF9tZCA9IChzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICopKGdoICYjNDM7IGdyZV9oZHJfbGVuICYjNDM7XG5uZXQvaXB2NC9pcF9ncmUuYy0zNDQtXHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKCplcnNoZHIpKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz00NDA9c3RhdGljIGludCBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNDU5LVx0XHQgICAgIHRwaS5wcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSkpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjQ2MDpcdFx0aWYgKGVyc3Bhbl9yY3Yoc2tiLCBcdTAwMjZ0cGksIGhkcl9sZW4pID09IFBBQ0tFVF9SQ1ZEKVxubmV0L2lwdjQvaXBfZ3JlLmMtNDYxLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTQ5OT1zdGF0aWMgdm9pZCBncmVfZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTU0Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjU0MzpzdGF0aWMgdm9pZCBlcnNwYW5fZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvaXBfZ3JlLmMtNTQ0LXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy01NDgtXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2tleSAqa2V5O1xubmV0L2lwdjQvaXBfZ3JlLmM6NTQ5Olx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqbWQ7XG5uZXQvaXB2NC9pcF9ncmUuYy01NTAtXHRib29sIHRydW5jYXRlID0gZmFsc2U7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNTY5LVx0dmVyc2lvbiA9IG1kLVx1MDAzZXZlcnNpb247XG5uZXQvaXB2NC9pcF9ncmUuYzo1NzA6XHR0dW5uZWxfaGxlbiA9IDggJiM0MzsgZXJzcGFuX2hkcl9sZW4odmVyc2lvbik7XG5uZXQvaXB2NC9pcF9ncmUuYy01NzEtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNjAwLVx0aWYgKHZlcnNpb24gPT0gMSkge1xubmV0L2lwdjQvaXBfZ3JlLmM6NjAxOlx0XHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsX2lkX3RvX2tleTMyKGtleS1cdTAwM2V0dW5faWQpKSxcbm5ldC9pcHY0L2lwX2dyZS5jLTYwMi1cdFx0XHRcdCAgICBudG9obChtZC1cdTAwM2V1LmluZGV4KSwgdHJ1bmNhdGUsIHRydWUpO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTYwNC1cdH0gZWxzZSBpZiAodmVyc2lvbiA9PSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYzo2MDU6XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLFxubmV0L2lwdjQvaXBfZ3JlLmMtNjA2LVx0XHRcdFx0ICAgICAgIG50b2hsKHR1bm5lbF9pZF90b19rZXkzMihrZXktXHUwMDNldHVuX2lkKSksXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9NjUyPXN0YXRpYyBuZXRkZXZfdHhfdCBpcGdyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNzAzLVxubmV0L2lwdjQvaXBfZ3JlLmM6NzA0OnN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjQvaXBfZ3JlLmMtNzA1LVx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTcxNC1cdGlmICh0dW5uZWwtXHUwMDNlY29sbGVjdF9tZCkge1xubmV0L2lwdjQvaXBfZ3JlLmM6NzE1Olx0XHRlcnNwYW5fZmJfeG1pdChza2IsIGRldik7XG5uZXQvaXB2NC9pcF9ncmUuYy03MTYtXHRcdHJldHVybiBORVRERVZfVFhfT0s7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNzMxLVx0LyogUHVzaCBFUlNQQU4gaGVhZGVyICovXG5uZXQvaXB2NC9pcF9ncmUuYzo3MzI6XHRpZiAodHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIgPT0gMCkge1xubmV0L2lwdjQvaXBfZ3JlLmMtNzMzLVx0XHRwcm90byA9IGh0b25zKEVUSF9QX0VSU1BBTik7XG5uZXQvaXB2NC9pcF9ncmUuYy03MzQtXHRcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9TRVFfQklULCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG5uZXQvaXB2NC9pcF9ncmUuYzo3MzU6XHR9IGVsc2UgaWYgKHR1bm5lbC1cdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjczNjpcdFx0ZXJzcGFuX2J1aWxkX2hlYWRlcihza2IsIG50b2hsKHR1bm5lbC1cdTAwM2VwYXJtcy5vX2tleSksXG5uZXQvaXB2NC9pcF9ncmUuYy03MzctXHRcdFx0XHQgICAgdHVubmVsLVx1MDAzZWluZGV4LFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTczOS1cdFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xubmV0L2lwdjQvaXBfZ3JlLmM6NzQwOlx0fSBlbHNlIGlmICh0dW5uZWwtXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYzo3NDE6XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLCBudG9obCh0dW5uZWwtXHUwMDNlcGFybXMub19rZXkpLFxubmV0L2lwdjQvaXBfZ3JlLmMtNzQyLVx0XHRcdFx0ICAgICAgIHR1bm5lbC1cdTAwM2VkaXIsIHR1bm5lbC1cdTAwM2Vod2lkLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTgxNz1zdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy04NTAtXG5uZXQvaXB2NC9pcF9ncmUuYzo4NTE6XHRcdGlmIChzdHJjbXAoZGV2LVx1MDAzZXJ0bmxfbGlua19vcHMtXHUwMDNla2luZCwgXCYjMzQ7ZXJzcGFuXCYjMzQ7KSlcbm5ldC9pcHY0L2lwX2dyZS5jLTg1Mi1cdFx0XHRpcGdyZV9saW5rX3VwZGF0ZShkZXYsIHRydWUpO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTExMTc9c3RhdGljIGludCBpcGdyZV90YXBfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTExNDEtXG5uZXQvaXB2NC9pcF9ncmUuYzoxMTQyOnN0YXRpYyBpbnQgZXJzcGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbm5ldC9pcHY0L2lwX2dyZS5jLTExNDMtXHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTExODI9c3RhdGljIGludCBpcGdyZV9uZXRsaW5rX3Bhcm1zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTI1MC1cbm5ldC9pcHY0L2lwX2dyZS5jOjEyNTE6c3RhdGljIGludCBlcnNwYW5fbmV0bGlua19wYXJtcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI1Mi1cdFx0XHRcdHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjY2LVx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX1ZFUl0pIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNjc6XHRcdHQtXHUwMDNlZXJzcGFuX3ZlciA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xMjY4LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTI2OTpcdFx0aWYgKHQtXHUwMDNlZXJzcGFuX3ZlciBcdTAwM2UgMilcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzAtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjEyNzM6XHRpZiAodC1cdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzQtXHRcdGlmIChkYXRhW0lGTEFfR1JFX0VSU1BBTl9JTkRFWF0pIHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjc4LVx0XHR9XG5uZXQvaXB2NC9pcF9ncmUuYzoxMjc5Olx0fSBlbHNlIGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgPT0gMikge1xubmV0L2lwdjQvaXBfZ3JlLmMtMTI4MC1cdFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0RJUl0pIHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTEzNDktXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzUwOnN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzUxLXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzUzLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTM1NDpcdGlmICh0dW5uZWwtXHUwMDNlZXJzcGFuX3ZlciA9PSAwKVxubmV0L2lwdjQvaXBfZ3JlLmMtMTM1NS1cdFx0dHVubmVsLVx1MDAzZXR1bl9obGVuID0gNDsgLyogNC1ieXRlIEdSRSBoZHIuICovXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTM2MC1cdHR1bm5lbC1cdTAwM2VobGVuID0gdHVubmVsLVx1MDAzZXR1bl9obGVuICYjNDM7IHR1bm5lbC1cdTAwM2VlbmNhcF9obGVuICYjNDM7XG5uZXQvaXB2NC9pcF9ncmUuYzoxMzYxOlx0XHQgICAgICAgZXJzcGFuX2hkcl9sZW4odHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTM2Mi1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzcyLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTM3MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVyc3Bhbl9uZXRkZXZfb3BzID0ge1xubmV0L2lwdjQvaXBfZ3JlLmM6MTM3NDpcdC5uZG9faW5pdFx0XHQ9IGVyc3Bhbl90dW5uZWxfaW5pdCxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNzUtXHQubmRvX3VuaW5pdFx0XHQ9IGlwX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc2Olx0Lm5kb19zdGFydF94bWl0XHRcdD0gZXJzcGFuX3htaXQsXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc3LVx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gZXRoX21hY19hZGRyLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE0MTE9c3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzMS1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0MzI6c3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzMy1cdFx0XHQgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ0NS1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0NDY6XHRlcnIgPSBlcnNwYW5fbmV0bGlua19wYXJtcyhkZXYsIGRhdGEsIHRiLCBcdTAwMjZwLCBcdTAwMjZmd21hcmspO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTQ0Ny1cdGlmIChlcnIpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTQ1Mz1zdGF0aWMgaW50IGlwZ3JlX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg0LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ4NTpzdGF0aWMgaW50IGVyc3Bhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg2LVx0XHRcdCAgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE1MDAtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNTAxOlx0ZXJyID0gZXJzcGFuX25ldGxpbmtfcGFybXMoZGV2LCBkYXRhLCB0YiwgXHUwMDI2cCwgXHUwMDI2ZndtYXJrKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MDItXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE1NjM9c3RhdGljIGludCBpcGdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjEwLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTYxMTpzdGF0aWMgaW50IGVyc3Bhbl9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MTIte1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE2MTQtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjE1Olx0aWYgKHQtXHUwMDNlZXJzcGFuX3ZlciBcdTAwM2M9IDIpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTY6XHRcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcdTAwMjZcdTAwMjYgIXQtXHUwMDNlY29sbGVjdF9tZClcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MTctXHRcdFx0X19zZXRfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTYxOC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTk6XHRcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9HUkVfRVJTUEFOX1ZFUiwgdC1cdTAwM2VlcnNwYW5fdmVyKSlcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MjAtXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNjIxLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTYyMjpcdFx0aWYgKHQtXHUwMDNlZXJzcGFuX3ZlciA9PSAxKSB7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNjIzLVx0XHRcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfR1JFX0VSU1BBTl9JTkRFWCwgdC1cdTAwM2VpbmRleCkpXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjI0LVx0XHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNjI1Olx0XHR9IGVsc2UgaWYgKHQtXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNjI2LVx0XHRcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9HUkVfRVJTUEFOX0RJUiwgdC1cdTAwM2VkaXIpKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE2MzgtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjM5OnN0YXRpYyB2b2lkIGVyc3Bhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0MC17XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0NC1cdGRldi1cdTAwM2VtYXhfbXR1ID0gMDtcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NDU6XHRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmVyc3Bhbl9uZXRkZXZfb3BzO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTY0Ni1cdGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNj0gfklGRl9UWF9TS0JfU0hBUklORztcbm5ldC9pcHY0L2lwX2dyZS5jLTE2NDctXHRkZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NDg6XHRpcF90dW5uZWxfc2V0dXAoZGV2LCBlcnNwYW5fbmV0X2lkKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NDk6XHR0LVx1MDAzZWVyc3Bhbl92ZXIgPSAxO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTY1MC19XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTY5MT1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXBncmVfdGFwX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE3MDUtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzA2OnN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBlcnNwYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MDc6XHQua2luZFx0XHQ9IFwmIzM0O2Vyc3BhblwmIzM0Oyxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MDgtXHQubWF4dHlwZVx0PSBJRkxBX0dSRV9NQVgsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTcxMC1cdC5wcml2X3NpemVcdD0gc2l6ZW9mKHN0cnVjdCBpcF90dW5uZWwpLFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxMTpcdC5zZXR1cFx0XHQ9IGVyc3Bhbl9zZXR1cCxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTI6XHQudmFsaWRhdGVcdD0gZXJzcGFuX3ZhbGlkYXRlLFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxMzpcdC5uZXdsaW5rXHQ9IGVyc3Bhbl9uZXdsaW5rLFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxNDpcdC5jaGFuZ2VsaW5rXHQ9IGVyc3Bhbl9jaGFuZ2VsaW5rLFxubmV0L2lwdjQvaXBfZ3JlLmMtMTcxNS1cdC5kZWxsaW5rXHQ9IGlwX3R1bm5lbF9kZWxsaW5rLFxubmV0L2lwdjQvaXBfZ3JlLmMtMTcxNi1cdC5nZXRfc2l6ZVx0PSBpcGdyZV9nZXRfc2l6ZSxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTc6XHQuZmlsbF9pbmZvXHQ9IGVyc3Bhbl9maWxsX2luZm8sXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzE4LVx0LmdldF9saW5rX25ldFx0PSBpcF90dW5uZWxfZ2V0X2xpbmtfbmV0LFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE3Nzk9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcGdyZV90YXBfbmV0X29wcyA9IHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzg1LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTc4NjpzdGF0aWMgaW50IF9fbmV0X2luaXQgZXJzcGFuX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC9pcHY0L2lwX2dyZS5jLTE3ODcte1xubmV0L2lwdjQvaXBfZ3JlLmM6MTc4ODpcdHJldHVybiBpcF90dW5uZWxfaW5pdF9uZXQobmV0LCBlcnNwYW5fbmV0X2lkLFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc4OTpcdFx0XHRcdCAgXHUwMDI2ZXJzcGFuX2xpbmtfb3BzLCBcJiMzNDtlcnNwYW4wXCYjMzQ7KTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTAtfVxubmV0L2lwdjQvaXBfZ3JlLmMtMTc5MS1cbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTI6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBlcnNwYW5fZXhpdF9ydG5sKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTMtXHRcdFx0XHRcdHN0cnVjdCBsaXN0X2hlYWQgKmRldl90b19raWxsKVxubmV0L2lwdjQvaXBfZ3JlLmMtMTc5NC17XG5uZXQvaXB2NC9pcF9ncmUuYzoxNzk1Olx0aXBfdHVubmVsX2RlbGV0ZV9uZXQobmV0LCBlcnNwYW5fbmV0X2lkLCBcdTAwMjZlcnNwYW5fbGlua19vcHMsIGRldl90b19raWxsKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTYtfVxubmV0L2lwdjQvaXBfZ3JlLmMtMTc5Ny1cbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTg6c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBlcnNwYW5fbmV0X29wcyA9IHtcbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTk6XHQuaW5pdCA9IGVyc3Bhbl9pbml0X25ldCxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MDA6XHQuZXhpdF9ydG5sID0gZXJzcGFuX2V4aXRfcnRubCxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MDE6XHQuaWQgICA9IFx1MDAyNmVyc3Bhbl9uZXRfaWQsXG5uZXQvaXB2NC9pcF9ncmUuYy0xODAyLVx0LnNpemUgPSBzaXplb2Yoc3RydWN0IGlwX3R1bm5lbF9uZXQpLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE4MDU9c3RhdGljIGludCBfX2luaXQgaXBncmVfaW5pdCh2b2lkKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE4MTgtXG5uZXQvaXB2NC9pcF9ncmUuYzoxODE5Olx0ZXJyID0gcmVnaXN0ZXJfcGVybmV0X2RldmljZShcdTAwMjZlcnNwYW5fbmV0X29wcyk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xODIwLVx0aWYgKGVyciBcdTAwM2MgMClcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MjE6XHRcdGdvdG8gcG5ldF9lcnNwYW5fZmFpbGVkO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTgyMi1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xODM2LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTgzNzpcdGVyciA9IHJ0bmxfbGlua19yZWdpc3RlcihcdTAwMjZlcnNwYW5fbGlua19vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTgzOC1cdGlmIChlcnIgXHUwMDNjIDApXG5uZXQvaXB2NC9pcF9ncmUuYzoxODM5Olx0XHRnb3RvIGVyc3Bhbl9saW5rX2ZhaWxlZDtcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDAtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjE4NDM6ZXJzcGFuX2xpbmtfZmFpbGVkOlxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0NC1cdHJ0bmxfbGlua191bnJlZ2lzdGVyKFx1MDAyNmlwZ3JlX3RhcF9vcHMpO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDktYWRkX3Byb3RvX2ZhaWxlZDpcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NTA6XHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXHUwMDI2ZXJzcGFuX25ldF9vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmM6MTg1MTpwbmV0X2Vyc3Bhbl9mYWlsZWQ6XG5uZXQvaXB2NC9pcF9ncmUuYy0xODUyLVx0dW5yZWdpc3Rlcl9wZXJuZXRfZGV2aWNlKFx1MDAyNmlwZ3JlX3RhcF9uZXRfb3BzKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xODU4PXN0YXRpYyB2b2lkIF9fZXhpdCBpcGdyZV9maW5pKHZvaWQpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2MS1cdHJ0bmxfbGlua191bnJlZ2lzdGVyKFx1MDAyNmlwZ3JlX2xpbmtfb3BzKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NjI6XHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZlcnNwYW5fbGlua19vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTg2My1cdGdyZV9kZWxfcHJvdG9jb2woXHUwMDI2aXBncmVfcHJvdG9jb2wsIEdSRVBST1RPX0NJU0NPKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xODY1LVx0dW5yZWdpc3Rlcl9wZXJuZXRfZGV2aWNlKFx1MDAyNmlwZ3JlX25ldF9vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmM6MTg2NjpcdHVucmVnaXN0ZXJfcGVybmV0X2RldmljZShcdTAwMjZlcnNwYW5fbmV0X29wcyk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xODY3LX1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xODc0PU1PRFVMRV9BTElBU19SVE5MX0xJTksoXCYjMzQ7Z3JldGFwXCYjMzQ7KTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NzU6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcJiMzNDtlcnNwYW5cJiMzNDspO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTg3Ni1NT0RVTEVfQUxJQVNfTkVUREVWKFwmIzM0O2dyZTBcJiMzNDspO1xubmV0L2lwdjQvaXBfZ3JlLmM9MTg3Nz1NT0RVTEVfQUxJQVNfTkVUREVWKFwmIzM0O2dyZXRhcDBcJiMzNDspO1xubmV0L2lwdjQvaXBfZ3JlLmM6MTg3ODpNT0RVTEVfQUxJQVNfTkVUREVWKFwmIzM0O2Vyc3BhbjBcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NTAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFUlNQQU4gVHVubmVsIEluaXRpYWxpemF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBORVRfSVBHUkVgLiBUaGUga2V5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBpcyBgZXJzcGFuX3R1bm5lbF9pbml0YC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggYnlwYXNzZXMgdGhlIFRYIGxvY2sgYnkgc2V0dGluZyBgZGV2LSZndDtsbHR4ID0gdHJ1ZTtgIHdpdGhpbiBgZXJzcGFuX3R1bm5lbF9pbml0YC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLgoKVGhlIHByaW1hcnkgZm9jdXMgaGFzIHRvIGJlIG9uIGBlcnNwYW5fdHVubmVsX2luaXRgLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNvbnNpZGVyIGBlcnNwYW5feG1pdGAgb3IgYGVyc3Bhbl9mYl94bWl0YCwgc2luY2UgaXQmIzM5O3MgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXQgbG9jayBiZWluZyBieXBhc3NlZC4gTGV0IG1lIGNsYXJpZnksIGBlcnNwYW5fdHVubmVsX2luaXRgIGlzIGNhbGxlZCB3aGVuIGFuIEVSU1BBTiB0dW5uZWwgaXMgY3JlYXRlZC4gSSBzaG91bGQgc2NhbiBmb3Igc2ltaWxhciBmdW5jdGlvbnMuCgpZZXMsIGBlcnNwYW5feG1pdGAgaXMgdGhlIHRyYW5zbWl0IGZ1bmN0aW9uLCBzbyB0aGF0IGlzIGltcG9ydGFudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYGVyc3Bhbl90dW5uZWxfaW5pdGAgYW5kIGBlcnNwYW5feG1pdGAgYWZ0ZXIgdGhpcyBtb2RpZmljYXRpb24uIExldCYjMzk7cyBtYWtlIGBlcnNwYW5fdHVubmVsX2luaXRgIGFuZCBgZXJzcGFuX3htaXRgIHRoZSBrZXkgZm9jdXMgc3ltYm9scy4gSnVzdCBpbiBjYXNlLCBJIHNob3VsZCBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIGlzIGluZGVlZCBgTkVUX0lQR1JFYCwgSSYjMzk7bGwgZG91YmxlIGNoZWNrLgoKQWxyaWdodCwgYSBxdWljayByZXZpZXcgcmV2ZWFscyBgQ09ORklHX05FVF9JUEdSRWAgaXMgdGhlIGNvcmUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZGVwZW5kZW5jaWVzIHRvIG90aGVyIHNldHRpbmdzLCBsaWtlIGBDT05GSUdfTkVUX0lQR1JFX0JST0FEQ0FTVGAuIEFoLCBubywgYE5FVF9JUEdSRWAgYWxvbmUgaXMgc3VmZmljaWVudCBoZXJlLiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCByZXZpZXcgYG5ldC9pcHY0L0tjb25maWdgIHRvIGNvbmZpcm0gdGhlIGNvbnRleHQgb2YgYE5FVF9JUEdSRWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfSVBHUkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTc5LVxubmV0L2lwdjQvS2NvbmZpZzoxODA6Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIGRlbXVsdGlwbGV4ZXJcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTE4Nj1jb25maWcgTkVUX0lQX1RVTk5FTFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTkxLVxubmV0L2lwdjQvS2NvbmZpZzoxOTI6Y29uZmlnIE5FVF9JUEdSRVxubmV0L2lwdjQvS2NvbmZpZy0xOTMtXHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIHR1bm5lbHMgb3ZlciBJUFwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMjA2LVxubmV0L2lwdjQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9JUEdSRV9CUk9BRENBU1Rcbm5ldC9pcHY0L0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtJUDogYnJvYWRjYXN0IEdSRSBvdmVyIElQXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTEyCgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBFUlNQQU4gVHVubmVsOiBBIFRhcmdldGVkIEFwcHJvYWNoKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBORVRfSVBHUkVgIGhlcmUg4oCTIHRoYXQmIzM5O3Mgb3VyIGNvbmZpZ3VyYXRpb24gc2NvcGUuIFRoZSBwYXRjaCBpdHNlbGYgc2VlbXMgZnVuY3Rpb25hbCwgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHRoZSBsb2NrIG1vZGlmaWNhdGlvbnMsIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgc3ltYm9scyBmb3IgYW5hbHlzaXMuIExldCYjMzk7cyBmb2N1cyBvbiBgZXJzcGFuX3R1bm5lbF9pbml0YCBhbmQgYGVyc3Bhbl94bWl0YC4KCk15IHJlYXNvbmluZyBpcyB0aGlzOiB0aGUgcGF0Y2ggc3RyYXRlZ2ljYWxseSBzZXRzIHRoZSBgbGx0eGAgZmxhZyBvbiBFUlNQQU4gdHVubmVsIGRldmljZXMuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCYjMzk7cyBieXBhc3NpbmcgdGhlIFRYIGxvY2ssIGEgY2xlYXIgYXR0ZW1wdCB0byBkb2RnZSB0aG9zZSBuYXN0eSBBQkJBIGRlYWRsb2NrcyB0aGF0IGNhbiBhcmlzZSB3aGVuIHRoZSB0cmFuc21pdCBwYXRoIHJlLWVudGVycyB0aGUgbmV0d29yayBzdGFjay4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0aW5nIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy4gVGhpcyBzY3JlYW1zICYjMzQ7Y29uY3VycmVuY3kgaXNzdWVzJiMzNDsgYW5kICYjMzQ7cG90ZW50aWFsIGZvciBzdWJ0bGUgcmFjZSBjb25kaXRpb25zJiMzNDsg4oCTIHByZWNpc2VseSB0aGUga2luZCBvZiB0aGluZyBmdXp6aW5nIGlzIGRlc2lnbmVkIHRvIGV4cG9zZS4KClRpbWUgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGFuZCBnZXQgdGhvc2UgcmVzdWx0cyByb2xsaW5nLiBMZXQmIzM5O3MgY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vyc3Bhbl90dW5uZWxfaW5pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXRzIHRoZSBgbGx0eGAgZmxhZyBvbiBFUlNQQU4gdHVubmVsIGRldmljZXMgdG8gc2tpcCB0aGUgVFggbG9jaywgcHJldmVudGluZyBBQkJBIGRlYWRsb2NrcyB3aGVuIHRoZSB0cmFuc21pdCBwYXRoIHJlLWVudGVycyB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEVSU1BBTiB0dW5uZWxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfSVBHUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlcnNwYW5fdHVubmVsX2luaXQmIzM0OywKICAgICYjMzQ7ZXJzcGFuX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2V0cyB0aGUgYGxsdHhgIGZsYWcgb24gRVJTUEFOIHR1bm5lbCBkZXZpY2VzIHRvIHNraXAgdGhlIFRYIGxvY2ssIHByZXZlbnRpbmcgQUJCQSBkZWFkbG9ja3Mgd2hlbiB0aGUgdHJhbnNtaXQgcGF0aCByZS1lbnRlcnMgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ5OjQxLjQxMTg2MTg1MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjUyMjE0MTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVyc3Bhbl90dW5uZWxfaW5pdFwiLFxuICAgIFwiZXJzcGFuX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXRzIHRoZSBgbGx0eGAgZmxhZyBvbiBFUlNQQU4gdHVubmVsIGRldmljZXMgdG8gc2tpcCB0aGUgVFggbG9jaywgcHJldmVudGluZyBBQkJBIGRlYWRsb2NrcyB3aGVuIHRoZSB0cmFuc21pdCBwYXRoIHJlLWVudGVycyB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEVSU1BBTiB0dW5uZWxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0OTo0MS40MTE4Njc0MDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2ODI0MDkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZjNTU3ZWJjNjgxZmJjY2I5YjVlZDEwMWMxNzEzZTg5N2QxY2Q1YzJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgOSAyMjo0OTo0MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXFxuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjlmYmZmMTZjZGExZDI4IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5AQCAtMTM2Myw2ICsxMzYzLDggQEAgc3RhdGljIGludCBlcnNwYW5fdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0ZGV2LVxcdTAwM2VmZWF0dXJlc1xcdFxcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFx0ZGV2LVxcdTAwM2Vod19mZWF0dXJlc1xcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFx0ZGV2LVxcdTAwM2Vwcml2X2ZsYWdzXFx0XFx0fD0gSUZGX0xJVkVfQUREUl9DSEFOR0U7XFxuK1xcdC8qIFNraXAgVFggbG9jazogeG1pdCByZS1lbnRlcnMgc3RhY2ssIHJpc2tpbmcgQUJCQSB3aXRoIHVuZGVybGF5ICovXFxuK1xcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuIFxcdG5ldGlmX2tlZXBfZHN0KGRldik7XFxuIFxcbiBcXHRyZXR1cm4gaXBfdHVubmVsX2luaXQoZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDk6NDEuNzgwODgyNDQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTg4MzE4MzI0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlcnNwYW5fdHVubmVsX2luaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2V0cyB0aGUgYGxsdHhgIGZsYWcgb24gRVJTUEFOIHR1bm5lbCBkZXZpY2VzIHRvIHNraXAgdGhlIFRYIGxvY2ssIHByZXZlbnRpbmcgQUJCQSBkZWFkbG9ja3Mgd2hlbiB0aGUgdHJhbnNtaXQgcGF0aCByZS1lbnRlcnMgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2YzU1N2ViYzY4MWZiY2NiOWI1ZWQxMDFjMTcxM2U4OTdkMWNkNWMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAyMjo0OTo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbmluZGV4IDNlZmRmYjRmZmEyMTEyLi45ZmJmZjE2Y2RhMWQyOCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXG4rKysgYi9uZXQvaXB2NC9pcF9ncmUuY1xuQEAgLTEzNjMsNiArMTM2Myw4IEBAIHN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4gXHRkZXYtXHUwMDNlcHJpdl9mbGFnc1x0XHR8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcbitcdC8qIFNraXAgVFggbG9jazogeG1pdCByZS1lbnRlcnMgc3RhY2ssIHJpc2tpbmcgQUJCQSB3aXRoIHVuZGVybGF5ICovXG4rXHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4gXHRuZXRpZl9rZWVwX2RzdChkZXYpO1xuIFxuIFx0cmV0dXJuIGlwX3R1bm5lbF9pbml0KGRldik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0OTo0MS43ODA4ODQwNjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk2MjAyODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRVJTUEFOIFR1bm5lbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY0L2lwX2dyZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGEgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtgIGlzIGJlaW5nIGFkZGVkIHdpdGhpbiBgZXJzcGFuX3R1bm5lbF9pbml0YC4gRXNzZW50aWFsbHksIHRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0aGF0IHRvZ2dsZXMgdGhlIGBsbHR4YCBmbGFnIG9uIHRoZSBuZXR3b3JrIGRldmljZS4gVGhlIGltcGxpY2F0aW9uIGlzIGNsZWFyLCBpdCdzIGJ5cGFzc2luZyB0aGUgVFggbG9jayBmb3IgdGhlc2UgdHVubmVscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhbmQgZGV0ZXJtaW5lIGlmIHRoaXMgaW50cm9kdWNlcyBhIHBvdGVudGlhbCByYWNlLlxuXG5JdCdzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgdGhpcyBpcyByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBzZXR1cHMsIHNwZWNpZmljYWxseSBFUlNQQU4gdHVubmVscywgd2hpY2ggaXMgd2hlcmUgaXQncyBiZWluZyBwcm9wb3NlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGNvbmRpdGlvbnMgaW4gd2hpY2ggdGhpcyBpcyB1c2VkIGNhbiBsZWFkIHRvIGNvbnRlbnRpb24gb3IgY29ycnVwdGlvbiBpbiBzcGVjaWZpYyBkZXBsb3ltZW50IHNjZW5hcmlvcy4gTm93LCB0byBhc3Nlc3MgdGhlIHNjb3BlIG9mIHRoaXMgY2hhbmdlIGFuZCB3aGF0IGl0IHRydWx5IGVuYWJsZXMsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFjdHVhbGx5IGVuYWJsZXMgRVJTUEFOLiBLbm93aW5nIHRoYXQgd2lsbCBnaXZlIG1lIGNvbnRleHQgYXJvdW5kIHRoZSB1c2UgY2FzZS4gTGV0J3Mgc2VlIGlmIHRoZSBjb25maWcgb3B0aW9ucyBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcy4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgdHggcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDk6NDUuNzc3MDg5MTE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMzQ0MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVyc3Bhbl90dW5uZWxfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9pcF9ncmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pcF9ncmUuYz0xMzM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM0OS1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzUwOnN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM1MS17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZXJzcGFuX25ldGRldl9vcHMgPSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTM3NDpcXHQubmRvX2luaXRcXHRcXHQ9IGVyc3Bhbl90dW5uZWxfaW5pdCxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc1LVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpcF90dW5uZWxfdW5pbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0OTo0NS44NDA0Mzc3NzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTcxMTc1NDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgSVAgR1JFIE1vZHVsZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBlbmFibGUgdGhlIEdlbmVyaWMgUm91dGluZyBFbmNhcHN1bGF0aW9uIChHUkUpIElQIG1vZHVsZSDigJMgdGhhdCdzIGBuZXQvaXB2NC9pcF9ncmUuY2AuIFdoZXJlIGRvIEkgZXZlbiBzdGFydD8gVXN1YWxseSwgd2hlbiBJJ20gdHJhY2tpbmcgdGhpcyBkb3duLCBJJ2xsIGdvIHJpZ2h0IHRvIHRoZSBLY29uZmlnIGZpbGVzLiBJIGtub3cgdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGlzIGhpZXJhcmNoaWNhbCwgc28gSSdsbCBwcm9iYWJseSBoYXZlIHRvIHRyYWNlIHRocm91Z2ggYSBmZXcgZGlmZmVyZW50IEtjb25maWcgZmlsZXMgdG8gZmluZCB0aGUgcmVsZXZhbnQgb3B0aW9uLiBJJ20gZ3Vlc3NpbmcgaXTigJlzIGxpa2VseSB1bmRlciBgbmV0L2lwdjRgIG9yIG1heWJlIGV2ZW4gc29tZXRoaW5nIG1vcmUgZ2VuZXJhbCBpbiB0aGUgbmV0d29ya2luZyBzZWN0aW9uLiBJJ2xsIG5lZWQgdG8gbG9vayBmb3IgZGVwZW5kZW5jaWVzIHRvbyDigJMgYXJlIHRoZXJlIGFueSBvdGhlciBvcHRpb25zIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgYmVmb3JlIHRoaXMgb25lIGJlY29tZXMgYXZhaWxhYmxlPyBUaGlzIGlzIGEgcHJldHR5IGNvbW1vbiBzY2VuYXJpbywgc28gSSdtIGV4cGVjdGluZyBhIHJlYXNvbmFibHkgZGlyZWN0IGRlcGVuZGVuY3kgcGF0aC4gSSdtIGFsc28gZ29pbmcgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgcG90ZW50aWFsbHkgcmVsZXZhbnQgbW9kdWxlIGFsaWFzZXMgb3IgYnVpbGQgZmxhZ3MgdGhhdCBjb3VsZCBpbXBhY3Qgd2hldGhlciB0aGlzIHBhcnRpY3VsYXIgc291cmNlIGZpbGUgZ2V0cyBjb21waWxlZC4gSSdsbCBoYXZlIHRvIHNlZSB3aGV0aGVyIHRoZXJlIGlzIGEgYG9iai1gIGRpcmVjdGl2ZSBvciBzaW1pbGFyIHRvIGluZGljYXRlIHdoZXRoZXIgaXQgaXMgYnVpbHQgaW4sIGFzIGEgbW9kdWxlLCBvciBub3QgYXQgYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDk6NDkuMDExNjIxODEzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDEwNTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX2dyZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTI5PW9iai0kKENPTkZJR19ORVRfSVBHUkVfREVNVVgpICs9IGdyZS5vXFxubmV0L2lwdjQvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgKz0gaXBfZ3JlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0zMS11ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0OTo0OS4wNjg2MzY1ODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI3MTU5NzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIEdSRSBUdW5uZWwgQ29uZmlndXJhdGlvbnMgYW5kIEVSU1BBTioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSdtIGxvb2tpbmcgYXQsIGZyb20gdGhlIGxvb2tzIG9mIGl0LCBoYXMgYE5FVF9JUEdSRWAgZW5hYmxlZC4gVGhhdCBnaXZlcyB1cyBhIHByZXR0eSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHdoYXQgSSByZWFsbHkgbmVlZCB0byBhc2NlcnRhaW4gaXMgd2hldGhlciBvciBub3QgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBFUlNQQU4gY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgc2V0dXAuIEkndmUgd29ya2VkIHdpdGggR1JFIHR1bm5lbHMgZXh0ZW5zaXZlbHksIHNvIEkga25vdyBFUlNQQU4gY2FuIHNvbWV0aW1lcyBiZSBpbXBsZW1lbnRlZCBhcyBhIHZhcmlhbnQuIFRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBhcHByb2FjaCBhdCB0aGlzIHBvaW50IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0uIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHJlbGV2YW50IG1vZHVsZXMsIGVzcGVjaWFsbHkgbG9va2luZyBhdCBgbmV0L2lwdjQvaXBfZ3JlLmNgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBmdW5kYW1lbnRhbCBHUkUgZnVuY3Rpb25hbGl0eSBpcyBpbXBsZW1lbnRlZCwgc28gdGhhdCdzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIGFueSBFUlNQQU4gc3BlY2lmaWMgYWRkaXRpb25zIG9yIG1vZGlmaWNhdGlvbnMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgzOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ5OjUzLjg5NTc5ODk5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjkxODc4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlcnNwYW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaXBfZ3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfZ3JlLmMtNDYtI2luY2x1ZGUgXFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFxcdTAwM2VcXG5uZXQvaXB2NC9pcF9ncmUuYzo0NzojaW5jbHVkZSBcXHUwMDNjbmV0L2Vyc3Bhbi5oXFx1MDAzZVxcbm5ldC9pcHY0L2lwX2dyZS5jLTQ4LVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTEzPXN0YXRpYyBpbnQgaXBncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTE0OnN0YXRpYyB2b2lkIGVyc3Bhbl9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMTUtXFx0XFx0XFx0XFx0dTMyIGlkLCB1MzIgaW5kZXgsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTk9c3RhdGljIHVuc2lnbmVkIGludCBncmVfdGFwX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xcbm5ldC9pcHY0L2lwX2dyZS5jOjEyMDpzdGF0aWMgdW5zaWduZWQgaW50IGVyc3Bhbl9uZXRfaWQgX19yZWFkX21vc3RseTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjEtXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTIyPXN0YXRpYyBpbnQgaXBncmVfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ5LVxcdFxcdCB0cGktXFx1MDAzZXByb3RvID09IGh0b25zKEVUSF9QX0VSU1BBTjIpKVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE1MDpcXHRcXHRpdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGVyc3Bhbl9uZXRfaWQpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MS1cXHRlbHNlXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0yMTk9c3RhdGljIHZvaWQgZ3JlX2VycihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbylcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTI1Ny1cXG5uZXQvaXB2NC9pcF9ncmUuYzoyNTg6c3RhdGljIGJvb2wgaXNfZXJzcGFuX3R5cGUxKGludCBncmVfaGRyX2xlbilcXG5uZXQvaXB2NC9pcF9ncmUuYy0yNTkte1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjY2LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjI2NzpzdGF0aWMgaW50IGVyc3Bhbl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRubF9wdGtfaW5mbyAqdHBpLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTI2OC1cXHRcXHQgICAgICBpbnQgZ3JlX2hkcl9sZW4pXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzEtXFx0c3RydWN0IG1ldGFkYXRhX2RzdCAqdHVuX2RzdCA9IE5VTEw7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MjcyOlxcdHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKmVyc2hkcjtcXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzMtXFx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1MoZmxhZ3MpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjc2LVxcdGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjI3NzpcXHRzdHJ1Y3QgZXJzcGFuX21kMiAqbWQyO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTI3OC1cXHRpbnQgdmVyO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjgyLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjI4MzpcXHRpdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGVyc3Bhbl9uZXRfaWQpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTI4NC1cXHRpcGggPSBpcF9oZHIoc2tiKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoyODU6XFx0aWYgKGlzX2Vyc3Bhbl90eXBlMShncmVfaGRyX2xlbikpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYy0yODYtXFx0XFx0dmVyID0gMDtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTI5NC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoyOTU6XFx0XFx0ZXJzaGRyID0gKHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKikoc2tiLVxcdTAwM2VkYXRhICsgZ3JlX2hkcl9sZW4pO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTI5Ni1cXHRcXHR2ZXIgPSBlcnNoZHItXFx1MDAzZXZlcjtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTMwMy1cXHRpZiAodHVubmVsKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MzA0OlxcdFxcdGlmIChpc19lcnNwYW5fdHlwZTEoZ3JlX2hkcl9sZW4pKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNS1cXHRcXHRcXHRsZW4gPSBncmVfaGRyX2xlbjtcXG5uZXQvaXB2NC9pcF9ncmUuYy0zMDYtXFx0XFx0ZWxzZVxcbm5ldC9pcHY0L2lwX2dyZS5jOjMwNzpcXHRcXHRcXHRsZW4gPSBncmVfaGRyX2xlbiArIGVyc3Bhbl9oZHJfbGVuKHZlcik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMzA4LVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMzE4LVxcdFxcdGlmICh0dW5uZWwtXFx1MDAzZWNvbGxlY3RfbWQpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzozMTk6XFx0XFx0XFx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqcGt0X21kLCAqbWQ7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMzIwLVxcdFxcdFxcdHN0cnVjdCBpcF90dW5uZWxfaW5mbyAqaW5mbztcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTM0Mi1cXHRcXHRcXHQgICAgIHNrYl9uZXR3b3JrX2hlYWRlcl9sZW4oc2tiKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzozNDM6XFx0XFx0XFx0cGt0X21kID0gKHN0cnVjdCBlcnNwYW5fbWV0YWRhdGEgKikoZ2ggKyBncmVfaGRyX2xlbiArXFxubmV0L2lwdjQvaXBfZ3JlLmMtMzQ0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzaXplb2YoKmVyc2hkcikpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9NDQwPXN0YXRpYyBpbnQgZ3JlX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNDU5LVxcdFxcdCAgICAgdHBpLnByb3RvID09IGh0b25zKEVUSF9QX0VSU1BBTjIpKSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjQ2MDpcXHRcXHRpZiAoZXJzcGFuX3Jjdihza2IsIFxcdTAwMjZ0cGksIGhkcl9sZW4pID09IFBBQ0tFVF9SQ1ZEKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTQ2MS1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTQ5OT1zdGF0aWMgdm9pZCBncmVfZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNTQyLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjU0MzpzdGF0aWMgdm9pZCBlcnNwYW5fZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L2lwX2dyZS5jLTU0NC17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy01NDgtXFx0Y29uc3Qgc3RydWN0IGlwX3R1bm5lbF9rZXkgKmtleTtcXG5uZXQvaXB2NC9pcF9ncmUuYzo1NDk6XFx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqbWQ7XFxubmV0L2lwdjQvaXBfZ3JlLmMtNTUwLVxcdGJvb2wgdHJ1bmNhdGUgPSBmYWxzZTtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTU2OS1cXHR2ZXJzaW9uID0gbWQtXFx1MDAzZXZlcnNpb247XFxubmV0L2lwdjQvaXBfZ3JlLmM6NTcwOlxcdHR1bm5lbF9obGVuID0gOCArIGVyc3Bhbl9oZHJfbGVuKHZlcnNpb24pO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTU3MS1cXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTYwMC1cXHRpZiAodmVyc2lvbiA9PSAxKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6NjAxOlxcdFxcdGVyc3Bhbl9idWlsZF9oZWFkZXIoc2tiLCBudG9obCh0dW5uZWxfaWRfdG9fa2V5MzIoa2V5LVxcdTAwM2V0dW5faWQpKSxcXG5uZXQvaXB2NC9pcF9ncmUuYy02MDItXFx0XFx0XFx0XFx0ICAgIG50b2hsKG1kLVxcdTAwM2V1LmluZGV4KSwgdHJ1bmNhdGUsIHRydWUpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNjA0LVxcdH0gZWxzZSBpZiAodmVyc2lvbiA9PSAyKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6NjA1OlxcdFxcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTYwNi1cXHRcXHRcXHRcXHQgICAgICAgbnRvaGwodHVubmVsX2lkX3RvX2tleTMyKGtleS1cXHUwMDNldHVuX2lkKSksXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz02NTI9c3RhdGljIG5ldGRldl90eF90IGlwZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTcwMy1cXG5uZXQvaXB2NC9pcF9ncmUuYzo3MDQ6c3RhdGljIG5ldGRldl90eF90IGVyc3Bhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzA1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzE0LVxcdGlmICh0dW5uZWwtXFx1MDAzZWNvbGxlY3RfbWQpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzo3MTU6XFx0XFx0ZXJzcGFuX2ZiX3htaXQoc2tiLCBkZXYpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTcxNi1cXHRcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzMxLVxcdC8qIFB1c2ggRVJTUEFOIGhlYWRlciAqL1xcbm5ldC9pcHY0L2lwX2dyZS5jOjczMjpcXHRpZiAodHVubmVsLVxcdTAwM2VlcnNwYW5fdmVyID09IDApIHtcXG5uZXQvaXB2NC9pcF9ncmUuYy03MzMtXFx0XFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTczNC1cXHRcXHRfX2NsZWFyX2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzo3MzU6XFx0fSBlbHNlIGlmICh0dW5uZWwtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjczNjpcXHRcXHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsLVxcdTAwM2VwYXJtcy5vX2tleSksXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzM3LVxcdFxcdFxcdFxcdCAgICB0dW5uZWwtXFx1MDAzZWluZGV4LFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzM5LVxcdFxcdHByb3RvID0gaHRvbnMoRVRIX1BfRVJTUEFOKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzo3NDA6XFx0fSBlbHNlIGlmICh0dW5uZWwtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMikge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjc0MTpcXHRcXHRlcnNwYW5fYnVpbGRfaGVhZGVyX3YyKHNrYiwgbnRvaGwodHVubmVsLVxcdTAwM2VwYXJtcy5vX2tleSksXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzQyLVxcdFxcdFxcdFxcdCAgICAgICB0dW5uZWwtXFx1MDAzZWRpciwgdHVubmVsLVxcdTAwM2Vod2lkLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9ODE3PXN0YXRpYyBpbnQgaXBncmVfdHVubmVsX2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtODUwLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjg1MTpcXHRcXHRpZiAoc3RyY21wKGRldi1cXHUwMDNlcnRubF9saW5rX29wcy1cXHUwMDNla2luZCwgXFxcImVyc3BhblxcXCIpKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTg1Mi1cXHRcXHRcXHRpcGdyZV9saW5rX3VwZGF0ZShkZXYsIHRydWUpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTExNz1zdGF0aWMgaW50IGlwZ3JlX3RhcF92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMTQxLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjExNDI6c3RhdGljIGludCBlcnNwYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTExNDMtXFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTE4Mj1zdGF0aWMgaW50IGlwZ3JlX25ldGxpbmtfcGFybXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNTAtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTI1MTpzdGF0aWMgaW50IGVyc3Bhbl9uZXRsaW5rX3Bhcm1zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI1Mi1cXHRcXHRcXHRcXHRzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjY2LVxcdGlmIChkYXRhW0lGTEFfR1JFX0VSU1BBTl9WRVJdKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTI2NzpcXHRcXHR0LVxcdTAwM2VlcnNwYW5fdmVyID0gbmxhX2dldF91OChkYXRhW0lGTEFfR1JFX0VSU1BBTl9WRVJdKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjY4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNjk6XFx0XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgXFx1MDAzZSAyKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzAtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjcyLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNzM6XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzQtXFx0XFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0lOREVYXSkge1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3OC1cXHRcXHR9XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTI3OTpcXHR9IGVsc2UgaWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMikge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTEyODAtXFx0XFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0RJUl0pIHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTEzMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBncmVfdGFwX25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzQ5LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNTA6c3RhdGljIGludCBlcnNwYW5fdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzUxLXtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNTMtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTM1NDpcXHRpZiAodHVubmVsLVxcdTAwM2VlcnNwYW5fdmVyID09IDApXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM1NS1cXHRcXHR0dW5uZWwtXFx1MDAzZXR1bl9obGVuID0gNDsgLyogNC1ieXRlIEdSRSBoZHIuICovXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzYwLVxcdHR1bm5lbC1cXHUwMDNlaGxlbiA9IHR1bm5lbC1cXHUwMDNldHVuX2hsZW4gKyB0dW5uZWwtXFx1MDAzZWVuY2FwX2hsZW4gK1xcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNjE6XFx0XFx0ICAgICAgIGVyc3Bhbl9oZHJfbGVuKHR1bm5lbC1cXHUwMDNlZXJzcGFuX3Zlcik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM2Mi1cXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNzItXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTM3MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVyc3Bhbl9uZXRkZXZfb3BzID0ge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNzQ6XFx0Lm5kb19pbml0XFx0XFx0PSBlcnNwYW5fdHVubmVsX2luaXQsXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM3NS1cXHQubmRvX3VuaW5pdFxcdFxcdD0gaXBfdHVubmVsX3VuaW5pdCxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc2OlxcdC5uZG9fc3RhcnRfeG1pdFxcdFxcdD0gZXJzcGFuX3htaXQsXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM3Ny1cXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gZXRoX21hY19hZGRyLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTQxMT1zdGF0aWMgaW50IGlwZ3JlX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0MzEtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTQzMjpzdGF0aWMgaW50IGVyc3Bhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzMy1cXHRcXHRcXHQgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDQ1LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE0NDY6XFx0ZXJyID0gZXJzcGFuX25ldGxpbmtfcGFybXMoZGV2LCBkYXRhLCB0YiwgXFx1MDAyNnAsIFxcdTAwMjZmd21hcmspO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE0NDctXFx0aWYgKGVycilcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTE0NTM9c3RhdGljIGludCBpcGdyZV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg0LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE0ODU6c3RhdGljIGludCBlcnNwYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0ODYtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNTAwLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE1MDE6XFx0ZXJyID0gZXJzcGFuX25ldGxpbmtfcGFybXMoZGV2LCBkYXRhLCB0YiwgXFx1MDAyNnAsIFxcdTAwMjZmd21hcmspO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MDItXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNTYzPXN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjEwLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTE6c3RhdGljIGludCBlcnNwYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYxMi17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjE0LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTU6XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgXFx1MDAzYz0gMikge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTY6XFx0XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcXHUwMDI2XFx1MDAyNiAhdC1cXHUwMDNlY29sbGVjdF9tZClcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjE3LVxcdFxcdFxcdF9fc2V0X2JpdChJUF9UVU5ORUxfS0VZX0JJVCwgdC1cXHUwMDNlcGFybXMub19mbGFncyk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYxOC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjE5OlxcdFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9HUkVfRVJTUEFOX1ZFUiwgdC1cXHUwMDNlZXJzcGFuX3ZlcikpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyMC1cXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjIxLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MjI6XFx0XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MjMtXFx0XFx0XFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9HUkVfRVJTUEFOX0lOREVYLCB0LVxcdTAwM2VpbmRleCkpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNC1cXHRcXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjI1OlxcdFxcdH0gZWxzZSBpZiAodC1cXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNi1cXHRcXHRcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9ESVIsIHQtXFx1MDAzZWRpcikpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjM4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2Mzk6c3RhdGljIHZvaWQgZXJzcGFuX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0MC17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjQ0LVxcdGRldi1cXHUwMDNlbWF4X210dSA9IDA7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTY0NTpcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2ZXJzcGFuX25ldGRldl9vcHM7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0Ni1cXHRkZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNj0gfklGRl9UWF9TS0JfU0hBUklORztcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjQ3LVxcdGRldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjQ4OlxcdGlwX3R1bm5lbF9zZXR1cChkZXYsIGVyc3Bhbl9uZXRfaWQpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NDk6XFx0dC1cXHUwMDNlZXJzcGFuX3ZlciA9IDE7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY1MC19XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNjkxPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcGdyZV90YXBfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzA1LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MDY6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGVyc3Bhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MDc6XFx0LmtpbmRcXHRcXHQ9IFxcXCJlcnNwYW5cXFwiLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MDgtXFx0Lm1heHR5cGVcXHQ9IElGTEFfR1JFX01BWCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTAtXFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBpcF90dW5uZWwpLFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTE6XFx0LnNldHVwXFx0XFx0PSBlcnNwYW5fc2V0dXAsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxMjpcXHQudmFsaWRhdGVcXHQ9IGVyc3Bhbl92YWxpZGF0ZSxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzEzOlxcdC5uZXdsaW5rXFx0PSBlcnNwYW5fbmV3bGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzE0OlxcdC5jaGFuZ2VsaW5rXFx0PSBlcnNwYW5fY2hhbmdlbGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzE1LVxcdC5kZWxsaW5rXFx0PSBpcF90dW5uZWxfZGVsbGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzE2LVxcdC5nZXRfc2l6ZVxcdD0gaXBncmVfZ2V0X3NpemUsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxNzpcXHQuZmlsbF9pbmZvXFx0PSBlcnNwYW5fZmlsbF9pbmZvLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTgtXFx0LmdldF9saW5rX25ldFxcdD0gaXBfdHVubmVsX2dldF9saW5rX25ldCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTE3Nzk9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcGdyZV90YXBfbmV0X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3ODUtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc4NjpzdGF0aWMgaW50IF9fbmV0X2luaXQgZXJzcGFuX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzg3LXtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzg4OlxcdHJldHVybiBpcF90dW5uZWxfaW5pdF9uZXQobmV0LCBlcnNwYW5fbmV0X2lkLFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3ODk6XFx0XFx0XFx0XFx0ICBcXHUwMDI2ZXJzcGFuX2xpbmtfb3BzLCBcXFwiZXJzcGFuMFxcXCIpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTAtfVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTEtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc5MjpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGVyc3Bhbl9leGl0X3J0bmwoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTMtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqZGV2X3RvX2tpbGwpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTc5NC17XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc5NTpcXHRpcF90dW5uZWxfZGVsZXRlX25ldChuZXQsIGVyc3Bhbl9uZXRfaWQsIFxcdTAwMjZlcnNwYW5fbGlua19vcHMsIGRldl90b19raWxsKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzk2LX1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzk3LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTg6c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBlcnNwYW5fbmV0X29wcyA9IHtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzk5OlxcdC5pbml0ID0gZXJzcGFuX2luaXRfbmV0LFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MDA6XFx0LmV4aXRfcnRubCA9IGVyc3Bhbl9leGl0X3J0bmwsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTgwMTpcXHQuaWQgICA9IFxcdTAwMjZlcnNwYW5fbmV0X2lkLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE4MDItXFx0LnNpemUgPSBzaXplb2Yoc3RydWN0IGlwX3R1bm5lbF9uZXQpLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTgwNT1zdGF0aWMgaW50IF9faW5pdCBpcGdyZV9pbml0KHZvaWQpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xODE4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MTk6XFx0ZXJyID0gcmVnaXN0ZXJfcGVybmV0X2RldmljZShcXHUwMDI2ZXJzcGFuX25ldF9vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE4MjAtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTgyMTpcXHRcXHRnb3RvIHBuZXRfZXJzcGFuX2ZhaWxlZDtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODIyLVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTgzNi1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxODM3OlxcdGVyciA9IHJ0bmxfbGlua19yZWdpc3RlcihcXHUwMDI2ZXJzcGFuX2xpbmtfb3BzKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODM4LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4Mzk6XFx0XFx0Z290byBlcnNwYW5fbGlua19mYWlsZWQ7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0MC1cXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDItXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg0MzplcnNwYW5fbGlua19mYWlsZWQ6XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0NC1cXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcXHUwMDI2aXBncmVfdGFwX29wcyk7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xODQ5LWFkZF9wcm90b19mYWlsZWQ6XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg1MDpcXHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXFx1MDAyNmVyc3Bhbl9uZXRfb3BzKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxODUxOnBuZXRfZXJzcGFuX2ZhaWxlZDpcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODUyLVxcdHVucmVnaXN0ZXJfcGVybmV0X2RldmljZShcXHUwMDI2aXBncmVfdGFwX25ldF9vcHMpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTg1OD1zdGF0aWMgdm9pZCBfX2V4aXQgaXBncmVfZmluaSh2b2lkKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2MS1cXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcXHUwMDI2aXBncmVfbGlua19vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NjI6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNmVyc3Bhbl9saW5rX29wcyk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2My1cXHRncmVfZGVsX3Byb3RvY29sKFxcdTAwMjZpcGdyZV9wcm90b2NvbCwgR1JFUFJPVE9fQ0lTQ08pO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2NS1cXHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXFx1MDAyNmlwZ3JlX25ldF9vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NjY6XFx0dW5yZWdpc3Rlcl9wZXJuZXRfZGV2aWNlKFxcdTAwMjZlcnNwYW5fbmV0X29wcyk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2Ny19XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xODc0PU1PRFVMRV9BTElBU19SVE5MX0xJTksoXFxcImdyZXRhcFxcXCIpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NzU6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcXFwiZXJzcGFuXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg3Ni1NT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJncmUwXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmM9MTg3Nz1NT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJncmV0YXAwXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg3ODpNT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJlcnNwYW4wXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ5OjUzLjk1ODcyNjQ1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMzg3NjkxMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFUlNQQU4gVHVubmVsIEluaXRpYWxpemF0aW9uIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGhlcmUgaXMgYE5FVF9JUEdSRWAuIFRoZSBrZXkgZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQgaXMgYGVyc3Bhbl90dW5uZWxfaW5pdGAuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGJ5cGFzc2VzIHRoZSBUWCBsb2NrIGJ5IHNldHRpbmcgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtgIHdpdGhpbiBgZXJzcGFuX3R1bm5lbF9pbml0YC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuXG5cblRoZSBwcmltYXJ5IGZvY3VzIGhhcyB0byBiZSBvbiBgZXJzcGFuX3R1bm5lbF9pbml0YC4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBjb25zaWRlciBgZXJzcGFuX3htaXRgIG9yIGBlcnNwYW5fZmJfeG1pdGAsIHNpbmNlIGl0J3MgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXQgbG9jayBiZWluZyBieXBhc3NlZC4gTGV0IG1lIGNsYXJpZnksIGBlcnNwYW5fdHVubmVsX2luaXRgIGlzIGNhbGxlZCB3aGVuIGFuIEVSU1BBTiB0dW5uZWwgaXMgY3JlYXRlZC4gSSBzaG91bGQgc2NhbiBmb3Igc2ltaWxhciBmdW5jdGlvbnMuXG5cblllcywgYGVyc3Bhbl94bWl0YCBpcyB0aGUgdHJhbnNtaXQgZnVuY3Rpb24sIHNvIHRoYXQgaXMgaW1wb3J0YW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgZXJzcGFuX3R1bm5lbF9pbml0YCBhbmQgYGVyc3Bhbl94bWl0YCBhZnRlciB0aGlzIG1vZGlmaWNhdGlvbi4gTGV0J3MgbWFrZSBgZXJzcGFuX3R1bm5lbF9pbml0YCBhbmQgYGVyc3Bhbl94bWl0YCB0aGUga2V5IGZvY3VzIHN5bWJvbHMuIEp1c3QgaW4gY2FzZSwgSSBzaG91bGQgY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBpcyBpbmRlZWQgYE5FVF9JUEdSRWAsIEknbGwgZG91YmxlIGNoZWNrLlxuXG5BbHJpZ2h0LCBhIHF1aWNrIHJldmlldyByZXZlYWxzIGBDT05GSUdfTkVUX0lQR1JFYCBpcyB0aGUgY29yZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBkZXBlbmRlbmNpZXMgdG8gb3RoZXIgc2V0dGluZ3MsIGxpa2UgYENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUYC4gQWgsIG5vLCBgTkVUX0lQR1JFYCBhbG9uZSBpcyBzdWZmaWNpZW50IGhlcmUuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHJldmlldyBgbmV0L2lwdjQvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGUgY29udGV4dCBvZiBgTkVUX0lQR1JFYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY1MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0OTo1OS4xOTc0OTc5NjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTgyOTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTkxLVxcbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcXG5uZXQvaXB2NC9LY29uZmlnLTE5My1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cXG5uZXQvaXB2NC9LY29uZmlnOjIwNzpjb25maWcgTkVUX0lQR1JFX0JST0FEQ0FTVFxcbm5ldC9pcHY0L0tjb25maWctMjA4LVxcdGJvb2wgXFxcIklQOiBicm9hZGNhc3QgR1JFIG92ZXIgSVBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ5OjU5LjI2MTY4NzU0NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzIwMjYwOTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEVSU1BBTiBUdW5uZWw6IEEgVGFyZ2V0ZWQgQXBwcm9hY2gqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBORVRfSVBHUkVgIGhlcmUg4oCTIHRoYXQncyBvdXIgY29uZmlndXJhdGlvbiBzY29wZS4gVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyBmdW5jdGlvbmFsLCBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBzcGVjaWZpY2FsbHkgdGhlIGxvY2sgbW9kaWZpY2F0aW9ucywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBzeW1ib2xzIGZvciBhbmFseXNpcy4gTGV0J3MgZm9jdXMgb24gYGVyc3Bhbl90dW5uZWxfaW5pdGAgYW5kIGBlcnNwYW5feG1pdGAuXG5cbk15IHJlYXNvbmluZyBpcyB0aGlzOiB0aGUgcGF0Y2ggc3RyYXRlZ2ljYWxseSBzZXRzIHRoZSBgbGx0eGAgZmxhZyBvbiBFUlNQQU4gdHVubmVsIGRldmljZXMuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCdzIGJ5cGFzc2luZyB0aGUgVFggbG9jaywgYSBjbGVhciBhdHRlbXB0IHRvIGRvZGdlIHRob3NlIG5hc3R5IEFCQkEgZGVhZGxvY2tzIHRoYXQgY2FuIGFyaXNlIHdoZW4gdGhlIHRyYW5zbWl0IHBhdGggcmUtZW50ZXJzIHRoZSBuZXR3b3JrIHN0YWNrLiBJdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkaXJlY3RseSBpbXBhY3RpbmcgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEVSU1BBTiB0dW5uZWxzLiBUaGlzIHNjcmVhbXMgXCJjb25jdXJyZW5jeSBpc3N1ZXNcIiBhbmQgXCJwb3RlbnRpYWwgZm9yIHN1YnRsZSByYWNlIGNvbmRpdGlvbnNcIiDigJMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHRoaW5nIGZ1enppbmcgaXMgZGVzaWduZWQgdG8gZXhwb3NlLlxuXG5UaW1lIHRvIHNldCB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudCBhbmQgZ2V0IHRob3NlIHJlc3VsdHMgcm9sbGluZy4gTGV0J3MgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MTIsIk91dHB1dFRva2VucyI6MTA2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjUwOjAzLjU4MTk1MDg2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMTEwNTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlcnNwYW5fdHVubmVsX2luaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2V0cyB0aGUgYGxsdHhgIGZsYWcgb24gRVJTUEFOIHR1bm5lbCBkZXZpY2VzIHRvIHNraXAgdGhlIFRYIGxvY2ssIHByZXZlbnRpbmcgQUJCQSBkZWFkbG9ja3Mgd2hlbiB0aGUgdHJhbnNtaXQgcGF0aCByZS1lbnRlcnMgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlcnNwYW5fdHVubmVsX2luaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2V0cyB0aGUgYGxsdHhgIGZsYWcgb24gRVJTUEFOIHR1bm5lbCBkZXZpY2VzIHRvIHNraXAgdGhlIFRYIGxvY2ssIHByZXZlbnRpbmcgQUJCQSBkZWFkbG9ja3Mgd2hlbiB0aGUgdHJhbnNtaXQgcGF0aCByZS1lbnRlcnMgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowhx56v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 22:25:41 +0000 UTC FinishedAt: 2026-07-09 22:50:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE" ], "series_id": "a98c55bb-d7dc-4de6-a612-fdcc343ca93a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "erspan_tunnel_init", "erspan_xmit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vyc3Bhbl90dW5uZWxfaW5pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXRzIHRoZSBgbGx0eGAgZmxhZyBvbiBFUlNQQU4gdHVubmVsIGRldmljZXMgdG8gc2tpcCB0aGUgVFggbG9jaywgcHJldmVudGluZyBBQkJBIGRlYWRsb2NrcyB3aGVuIHRoZSB0cmFuc21pdCBwYXRoIHJlLWVudGVycyB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEVSU1BBTiB0dW5uZWxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmM1NTdlYmM2ODFmYmNjYjliNWVkMTAxYzE3MTNlODk3ZDFjZDVjMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMjI6NDk6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZ3JlLmMgYi9uZXQvaXB2NC9pcF9ncmUuY1xuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjlmYmZmMTZjZGExZDI4IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX2dyZS5jXG5AQCAtMTM2Myw2ICYjNDM7MTM2Myw4IEBAIHN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4gXHRkZXYtXHUwMDNlcHJpdl9mbGFnc1x0XHR8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcbiYjNDM7XHQvKiBTa2lwIFRYIGxvY2s6IHhtaXQgcmUtZW50ZXJzIHN0YWNrLCByaXNraW5nIEFCQkEgd2l0aCB1bmRlcmxheSAqL1xuJiM0MztcdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiBcdG5ldGlmX2tlZXBfZHN0KGRldik7XG4gXG4gXHRyZXR1cm4gaXBfdHVubmVsX2luaXQoZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfSVBHUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlcnNwYW5fdHVubmVsX2luaXQmIzM0OywKICAgICYjMzQ7ZXJzcGFuX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2V0cyB0aGUgYGxsdHhgIGZsYWcgb24gRVJTUEFOIHR1bm5lbCBkZXZpY2VzIHRvIHNraXAgdGhlIFRYIGxvY2ssIHByZXZlbnRpbmcgQUJCQSBkZWFkbG9ja3Mgd2hlbiB0aGUgdHJhbnNtaXQgcGF0aCByZS1lbnRlcnMgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmM1NTdlYmM2ODFmYmNjYjliNWVkMTAxYzE3MTNlODk3ZDFjZDVjMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDkgMjI6NDk6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jCmluZGV4IDNlZmRmYjRmZmEyMTEyLi45ZmJmZjE2Y2RhMWQyOCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfZ3JlLmMKQEAgLTEzNjMsNiAmIzQzOzEzNjMsOCBAQCBzdGF0aWMgaW50IGVyc3Bhbl90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRldi0mZ3Q7ZmVhdHVyZXMJCXw9IEdSRV9GRUFUVVJFUzsKIAlkZXYtJmd0O2h3X2ZlYXR1cmVzCXw9IEdSRV9GRUFUVVJFUzsKIAlkZXYtJmd0O3ByaXZfZmxhZ3MJCXw9IElGRl9MSVZFX0FERFJfQ0hBTkdFOwomIzQzOwkvKiBTa2lwIFRYIGxvY2s6IHhtaXQgcmUtZW50ZXJzIHN0YWNrLCByaXNraW5nIEFCQkEgd2l0aCB1bmRlcmxheSAqLwomIzQzOwlkZXYtJmd0O2xsdHggPSB0cnVlOwogCW5ldGlmX2tlZXBfZHN0KGRldik7CiAKIAlyZXR1cm4gaXBfdHVubmVsX2luaXQoZGV2KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRVJTUEFOIFR1bm5lbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L2lwdjQvaXBfZ3JlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogYSBgZGV2LSZndDtsbHR4ID0gdHJ1ZTtgIGlzIGJlaW5nIGFkZGVkIHdpdGhpbiBgZXJzcGFuX3R1bm5lbF9pbml0YC4gRXNzZW50aWFsbHksIHRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0aGF0IHRvZ2dsZXMgdGhlIGBsbHR4YCBmbGFnIG9uIHRoZSBuZXR3b3JrIGRldmljZS4gVGhlIGltcGxpY2F0aW9uIGlzIGNsZWFyLCBpdCYjMzk7cyBieXBhc3NpbmcgdGhlIFRYIGxvY2sgZm9yIHRoZXNlIHR1bm5lbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIGRldGVybWluZSBpZiB0aGlzIGludHJvZHVjZXMgYSBwb3RlbnRpYWwgcmFjZS4KCkl0JiMzOTtzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgdGhpcyBpcyByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBzZXR1cHMsIHNwZWNpZmljYWxseSBFUlNQQU4gdHVubmVscywgd2hpY2ggaXMgd2hlcmUgaXQmIzM5O3MgYmVpbmcgcHJvcG9zZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBjb25kaXRpb25zIGluIHdoaWNoIHRoaXMgaXMgdXNlZCBjYW4gbGVhZCB0byBjb250ZW50aW9uIG9yIGNvcnJ1cHRpb24gaW4gc3BlY2lmaWMgZGVwbG95bWVudCBzY2VuYXJpb3MuIE5vdywgdG8gYXNzZXNzIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZSBhbmQgd2hhdCBpdCB0cnVseSBlbmFibGVzLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbiBhY3R1YWxseSBlbmFibGVzIEVSU1BBTi4gS25vd2luZyB0aGF0IHdpbGwgZ2l2ZSBtZSBjb250ZXh0IGFyb3VuZCB0aGUgdXNlIGNhc2UuIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvbmZpZyBvcHRpb25zIHNoZWQgc29tZSBsaWdodCBvbiB0aGlzLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgdHggcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcnNwYW5fdHVubmVsX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9ncmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9ncmUuYz0xMzM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTEzNDktXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzUwOnN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzUxLXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZXJzcGFuX25ldGRldl9vcHMgPSB7XG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc0Olx0Lm5kb19pbml0XHRcdD0gZXJzcGFuX3R1bm5lbF9pbml0LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM3NS1cdC5uZG9fdW5pbml0XHRcdD0gaXBfdHVubmVsX3VuaW5pdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIElQIEdSRSBNb2R1bGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGVuYWJsZSB0aGUgR2VuZXJpYyBSb3V0aW5nIEVuY2Fwc3VsYXRpb24gKEdSRSkgSVAgbW9kdWxlIOKAkyB0aGF0JiMzOTtzIGBuZXQvaXB2NC9pcF9ncmUuY2AuIFdoZXJlIGRvIEkgZXZlbiBzdGFydD8gVXN1YWxseSwgd2hlbiBJJiMzOTttIHRyYWNraW5nIHRoaXMgZG93biwgSSYjMzk7bGwgZ28gcmlnaHQgdG8gdGhlIEtjb25maWcgZmlsZXMuIEkga25vdyB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGlzIGhpZXJhcmNoaWNhbCwgc28gSSYjMzk7bGwgcHJvYmFibHkgaGF2ZSB0byB0cmFjZSB0aHJvdWdoIGEgZmV3IGRpZmZlcmVudCBLY29uZmlnIGZpbGVzIHRvIGZpbmQgdGhlIHJlbGV2YW50IG9wdGlvbi4gSSYjMzk7bSBndWVzc2luZyBpdOKAmXMgbGlrZWx5IHVuZGVyIGBuZXQvaXB2NGAgb3IgbWF5YmUgZXZlbiBzb21ldGhpbmcgbW9yZSBnZW5lcmFsIGluIHRoZSBuZXR3b3JraW5nIHNlY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgZGVwZW5kZW5jaWVzIHRvbyDigJMgYXJlIHRoZXJlIGFueSBvdGhlciBvcHRpb25zIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgYmVmb3JlIHRoaXMgb25lIGJlY29tZXMgYXZhaWxhYmxlPyBUaGlzIGlzIGEgcHJldHR5IGNvbW1vbiBzY2VuYXJpbywgc28gSSYjMzk7bSBleHBlY3RpbmcgYSByZWFzb25hYmx5IGRpcmVjdCBkZXBlbmRlbmN5IHBhdGguIEkmIzM5O20gYWxzbyBnb2luZyB0byBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBwb3RlbnRpYWxseSByZWxldmFudCBtb2R1bGUgYWxpYXNlcyBvciBidWlsZCBmbGFncyB0aGF0IGNvdWxkIGltcGFjdCB3aGV0aGVyIHRoaXMgcGFydGljdWxhciBzb3VyY2UgZmlsZSBnZXRzIGNvbXBpbGVkLiBJJiMzOTtsbCBoYXZlIHRvIHNlZSB3aGV0aGVyIHRoZXJlIGlzIGEgYG9iai1gIGRpcmVjdGl2ZSBvciBzaW1pbGFyIHRvIGluZGljYXRlIHdoZXRoZXIgaXQgaXMgYnVpbHQgaW4sIGFzIGEgbW9kdWxlLCBvciBub3QgYXQgYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX2dyZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Mjk9b2JqLSQoQ09ORklHX05FVF9JUEdSRV9ERU1VWCkgJiM0Mzs9IGdyZS5vXG5uZXQvaXB2NC9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfTkVUX0lQR1JFKSAmIzQzOz0gaXBfZ3JlLm9cbm5ldC9pcHY0L01ha2VmaWxlLTMxLXVkcF90dW5uZWwteSA6PSB1ZHBfdHVubmVsX2NvcmUubyB1ZHBfdHVubmVsX25pYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipJbnZlc3RpZ2F0aW5nIEdSRSBUdW5uZWwgQ29uZmlndXJhdGlvbnMgYW5kIEVSU1BBTioqCgpPa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIEkmIzM5O20gbG9va2luZyBhdCwgZnJvbSB0aGUgbG9va3Mgb2YgaXQsIGhhcyBgTkVUX0lQR1JFYCBlbmFibGVkLiBUaGF0IGdpdmVzIHVzIGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgd2hhdCBJIHJlYWxseSBuZWVkIHRvIGFzY2VydGFpbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgYW55IHNwZWNpZmljIEVSU1BBTiBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgd2l0aGluIHRoaXMgcGFydGljdWxhciBzZXR1cC4gSSYjMzk7dmUgd29ya2VkIHdpdGggR1JFIHR1bm5lbHMgZXh0ZW5zaXZlbHksIHNvIEkga25vdyBFUlNQQU4gY2FuIHNvbWV0aW1lcyBiZSBpbXBsZW1lbnRlZCBhcyBhIHZhcmlhbnQuIFRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBhcHByb2FjaCBhdCB0aGlzIHBvaW50IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSByZWxldmFudCBtb2R1bGVzLCBlc3BlY2lhbGx5IGxvb2tpbmcgYXQgYG5ldC9pcHY0L2lwX2dyZS5jYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGZ1bmRhbWVudGFsIEdSRSBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkLCBzbyB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIGFueSBFUlNQQU4gc3BlY2lmaWMgYWRkaXRpb25zIG9yIG1vZGlmaWNhdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Vyc3BhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jLTQ2LSNpbmNsdWRlIFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFx1MDAzZVxubmV0L2lwdjQvaXBfZ3JlLmM6NDc6I2luY2x1ZGUgXHUwMDNjbmV0L2Vyc3Bhbi5oXHUwMDNlXG5uZXQvaXB2NC9pcF9ncmUuYy00OC1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTM9c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbm5ldC9pcHY0L2lwX2dyZS5jOjExNDpzdGF0aWMgdm9pZCBlcnNwYW5fYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC9pcF9ncmUuYy0xMTUtXHRcdFx0XHR1MzIgaWQsIHUzMiBpbmRleCxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTk9c3RhdGljIHVuc2lnbmVkIGludCBncmVfdGFwX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xubmV0L2lwdjQvaXBfZ3JlLmM6MTIwOnN0YXRpYyB1bnNpZ25lZCBpbnQgZXJzcGFuX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xubmV0L2lwdjQvaXBfZ3JlLmMtMTIxLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTIyPXN0YXRpYyBpbnQgaXBncmVfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE0OS1cdFx0IHRwaS1cdTAwM2Vwcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSlcbm5ldC9pcHY0L2lwX2dyZS5jOjE1MDpcdFx0aXRuID0gbmV0X2dlbmVyaWMobmV0LCBlcnNwYW5fbmV0X2lkKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MS1cdGVsc2Vcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0yMTk9c3RhdGljIHZvaWQgZ3JlX2VycihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbylcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNTctXG5uZXQvaXB2NC9pcF9ncmUuYzoyNTg6c3RhdGljIGJvb2wgaXNfZXJzcGFuX3R5cGUxKGludCBncmVfaGRyX2xlbilcbm5ldC9pcHY0L2lwX2dyZS5jLTI1OS17XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMjY2LVxubmV0L2lwdjQvaXBfZ3JlLmM6MjY3OnN0YXRpYyBpbnQgZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdG5sX3B0a19pbmZvICp0cGksXG5uZXQvaXB2NC9pcF9ncmUuYy0yNjgtXHRcdCAgICAgIGludCBncmVfaGRyX2xlbilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzEtXHRzdHJ1Y3QgbWV0YWRhdGFfZHN0ICp0dW5fZHN0ID0gTlVMTDtcbm5ldC9pcHY0L2lwX2dyZS5jOjI3MjpcdHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKmVyc2hkcjtcbm5ldC9pcHY0L2lwX2dyZS5jLTI3My1cdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzYtXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDtcbm5ldC9pcHY0L2lwX2dyZS5jOjI3NzpcdHN0cnVjdCBlcnNwYW5fbWQyICptZDI7XG5uZXQvaXB2NC9pcF9ncmUuYy0yNzgtXHRpbnQgdmVyO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTI4Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjI4MzpcdGl0biA9IG5ldF9nZW5lcmljKG5ldCwgZXJzcGFuX25ldF9pZCk7XG5uZXQvaXB2NC9pcF9ncmUuYy0yODQtXHRpcGggPSBpcF9oZHIoc2tiKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjI4NTpcdGlmIChpc19lcnNwYW5fdHlwZTEoZ3JlX2hkcl9sZW4pKSB7XG5uZXQvaXB2NC9pcF9ncmUuYy0yODYtXHRcdHZlciA9IDA7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMjk0LVxubmV0L2lwdjQvaXBfZ3JlLmM6Mjk1Olx0XHRlcnNoZHIgPSAoc3RydWN0IGVyc3Bhbl9iYXNlX2hkciAqKShza2ItXHUwMDNlZGF0YSAmIzQzOyBncmVfaGRyX2xlbik7XG5uZXQvaXB2NC9pcF9ncmUuYy0yOTYtXHRcdHZlciA9IGVyc2hkci1cdTAwM2V2ZXI7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzAzLVx0aWYgKHR1bm5lbCkge1xubmV0L2lwdjQvaXBfZ3JlLmM6MzA0Olx0XHRpZiAoaXNfZXJzcGFuX3R5cGUxKGdyZV9oZHJfbGVuKSlcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNS1cdFx0XHRsZW4gPSBncmVfaGRyX2xlbjtcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNi1cdFx0ZWxzZVxubmV0L2lwdjQvaXBfZ3JlLmM6MzA3Olx0XHRcdGxlbiA9IGdyZV9oZHJfbGVuICYjNDM7IGVyc3Bhbl9oZHJfbGVuKHZlcik7XG5uZXQvaXB2NC9pcF9ncmUuYy0zMDgtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzE4LVx0XHRpZiAodHVubmVsLVx1MDAzZWNvbGxlY3RfbWQpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjMxOTpcdFx0XHRzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICpwa3RfbWQsICptZDtcbm5ldC9pcHY0L2lwX2dyZS5jLTMyMC1cdFx0XHRzdHJ1Y3QgaXBfdHVubmVsX2luZm8gKmluZm87XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzQyLVx0XHRcdCAgICAgc2tiX25ldHdvcmtfaGVhZGVyX2xlbihza2IpO1xubmV0L2lwdjQvaXBfZ3JlLmM6MzQzOlx0XHRcdHBrdF9tZCA9IChzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICopKGdoICYjNDM7IGdyZV9oZHJfbGVuICYjNDM7XG5uZXQvaXB2NC9pcF9ncmUuYy0zNDQtXHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKCplcnNoZHIpKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz00NDA9c3RhdGljIGludCBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNDU5LVx0XHQgICAgIHRwaS5wcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSkpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjQ2MDpcdFx0aWYgKGVyc3Bhbl9yY3Yoc2tiLCBcdTAwMjZ0cGksIGhkcl9sZW4pID09IFBBQ0tFVF9SQ1ZEKVxubmV0L2lwdjQvaXBfZ3JlLmMtNDYxLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTQ5OT1zdGF0aWMgdm9pZCBncmVfZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTU0Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjU0MzpzdGF0aWMgdm9pZCBlcnNwYW5fZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvaXBfZ3JlLmMtNTQ0LXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy01NDgtXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2tleSAqa2V5O1xubmV0L2lwdjQvaXBfZ3JlLmM6NTQ5Olx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqbWQ7XG5uZXQvaXB2NC9pcF9ncmUuYy01NTAtXHRib29sIHRydW5jYXRlID0gZmFsc2U7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNTY5LVx0dmVyc2lvbiA9IG1kLVx1MDAzZXZlcnNpb247XG5uZXQvaXB2NC9pcF9ncmUuYzo1NzA6XHR0dW5uZWxfaGxlbiA9IDggJiM0MzsgZXJzcGFuX2hkcl9sZW4odmVyc2lvbik7XG5uZXQvaXB2NC9pcF9ncmUuYy01NzEtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNjAwLVx0aWYgKHZlcnNpb24gPT0gMSkge1xubmV0L2lwdjQvaXBfZ3JlLmM6NjAxOlx0XHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsX2lkX3RvX2tleTMyKGtleS1cdTAwM2V0dW5faWQpKSxcbm5ldC9pcHY0L2lwX2dyZS5jLTYwMi1cdFx0XHRcdCAgICBudG9obChtZC1cdTAwM2V1LmluZGV4KSwgdHJ1bmNhdGUsIHRydWUpO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTYwNC1cdH0gZWxzZSBpZiAodmVyc2lvbiA9PSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYzo2MDU6XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLFxubmV0L2lwdjQvaXBfZ3JlLmMtNjA2LVx0XHRcdFx0ICAgICAgIG50b2hsKHR1bm5lbF9pZF90b19rZXkzMihrZXktXHUwMDNldHVuX2lkKSksXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9NjUyPXN0YXRpYyBuZXRkZXZfdHhfdCBpcGdyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNzAzLVxubmV0L2lwdjQvaXBfZ3JlLmM6NzA0OnN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjQvaXBfZ3JlLmMtNzA1LVx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTcxNC1cdGlmICh0dW5uZWwtXHUwMDNlY29sbGVjdF9tZCkge1xubmV0L2lwdjQvaXBfZ3JlLmM6NzE1Olx0XHRlcnNwYW5fZmJfeG1pdChza2IsIGRldik7XG5uZXQvaXB2NC9pcF9ncmUuYy03MTYtXHRcdHJldHVybiBORVRERVZfVFhfT0s7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNzMxLVx0LyogUHVzaCBFUlNQQU4gaGVhZGVyICovXG5uZXQvaXB2NC9pcF9ncmUuYzo3MzI6XHRpZiAodHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIgPT0gMCkge1xubmV0L2lwdjQvaXBfZ3JlLmMtNzMzLVx0XHRwcm90byA9IGh0b25zKEVUSF9QX0VSU1BBTik7XG5uZXQvaXB2NC9pcF9ncmUuYy03MzQtXHRcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9TRVFfQklULCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG5uZXQvaXB2NC9pcF9ncmUuYzo3MzU6XHR9IGVsc2UgaWYgKHR1bm5lbC1cdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjczNjpcdFx0ZXJzcGFuX2J1aWxkX2hlYWRlcihza2IsIG50b2hsKHR1bm5lbC1cdTAwM2VwYXJtcy5vX2tleSksXG5uZXQvaXB2NC9pcF9ncmUuYy03MzctXHRcdFx0XHQgICAgdHVubmVsLVx1MDAzZWluZGV4LFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTczOS1cdFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xubmV0L2lwdjQvaXBfZ3JlLmM6NzQwOlx0fSBlbHNlIGlmICh0dW5uZWwtXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYzo3NDE6XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLCBudG9obCh0dW5uZWwtXHUwMDNlcGFybXMub19rZXkpLFxubmV0L2lwdjQvaXBfZ3JlLmMtNzQyLVx0XHRcdFx0ICAgICAgIHR1bm5lbC1cdTAwM2VkaXIsIHR1bm5lbC1cdTAwM2Vod2lkLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTgxNz1zdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy04NTAtXG5uZXQvaXB2NC9pcF9ncmUuYzo4NTE6XHRcdGlmIChzdHJjbXAoZGV2LVx1MDAzZXJ0bmxfbGlua19vcHMtXHUwMDNla2luZCwgXCYjMzQ7ZXJzcGFuXCYjMzQ7KSlcbm5ldC9pcHY0L2lwX2dyZS5jLTg1Mi1cdFx0XHRpcGdyZV9saW5rX3VwZGF0ZShkZXYsIHRydWUpO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTExMTc9c3RhdGljIGludCBpcGdyZV90YXBfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTExNDEtXG5uZXQvaXB2NC9pcF9ncmUuYzoxMTQyOnN0YXRpYyBpbnQgZXJzcGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbm5ldC9pcHY0L2lwX2dyZS5jLTExNDMtXHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTExODI9c3RhdGljIGludCBpcGdyZV9uZXRsaW5rX3Bhcm1zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTI1MC1cbm5ldC9pcHY0L2lwX2dyZS5jOjEyNTE6c3RhdGljIGludCBlcnNwYW5fbmV0bGlua19wYXJtcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI1Mi1cdFx0XHRcdHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjY2LVx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX1ZFUl0pIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNjc6XHRcdHQtXHUwMDNlZXJzcGFuX3ZlciA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xMjY4LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTI2OTpcdFx0aWYgKHQtXHUwMDNlZXJzcGFuX3ZlciBcdTAwM2UgMilcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzAtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjEyNzM6XHRpZiAodC1cdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzQtXHRcdGlmIChkYXRhW0lGTEFfR1JFX0VSU1BBTl9JTkRFWF0pIHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjc4LVx0XHR9XG5uZXQvaXB2NC9pcF9ncmUuYzoxMjc5Olx0fSBlbHNlIGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgPT0gMikge1xubmV0L2lwdjQvaXBfZ3JlLmMtMTI4MC1cdFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0RJUl0pIHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTEzNDktXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzUwOnN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzUxLXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzUzLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTM1NDpcdGlmICh0dW5uZWwtXHUwMDNlZXJzcGFuX3ZlciA9PSAwKVxubmV0L2lwdjQvaXBfZ3JlLmMtMTM1NS1cdFx0dHVubmVsLVx1MDAzZXR1bl9obGVuID0gNDsgLyogNC1ieXRlIEdSRSBoZHIuICovXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTM2MC1cdHR1bm5lbC1cdTAwM2VobGVuID0gdHVubmVsLVx1MDAzZXR1bl9obGVuICYjNDM7IHR1bm5lbC1cdTAwM2VlbmNhcF9obGVuICYjNDM7XG5uZXQvaXB2NC9pcF9ncmUuYzoxMzYxOlx0XHQgICAgICAgZXJzcGFuX2hkcl9sZW4odHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTM2Mi1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzcyLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTM3MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVyc3Bhbl9uZXRkZXZfb3BzID0ge1xubmV0L2lwdjQvaXBfZ3JlLmM6MTM3NDpcdC5uZG9faW5pdFx0XHQ9IGVyc3Bhbl90dW5uZWxfaW5pdCxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNzUtXHQubmRvX3VuaW5pdFx0XHQ9IGlwX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc2Olx0Lm5kb19zdGFydF94bWl0XHRcdD0gZXJzcGFuX3htaXQsXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc3LVx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gZXRoX21hY19hZGRyLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE0MTE9c3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzMS1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0MzI6c3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzMy1cdFx0XHQgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ0NS1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0NDY6XHRlcnIgPSBlcnNwYW5fbmV0bGlua19wYXJtcyhkZXYsIGRhdGEsIHRiLCBcdTAwMjZwLCBcdTAwMjZmd21hcmspO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTQ0Ny1cdGlmIChlcnIpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTQ1Mz1zdGF0aWMgaW50IGlwZ3JlX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg0LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ4NTpzdGF0aWMgaW50IGVyc3Bhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg2LVx0XHRcdCAgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE1MDAtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNTAxOlx0ZXJyID0gZXJzcGFuX25ldGxpbmtfcGFybXMoZGV2LCBkYXRhLCB0YiwgXHUwMDI2cCwgXHUwMDI2ZndtYXJrKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MDItXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE1NjM9c3RhdGljIGludCBpcGdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjEwLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTYxMTpzdGF0aWMgaW50IGVyc3Bhbl9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MTIte1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE2MTQtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjE1Olx0aWYgKHQtXHUwMDNlZXJzcGFuX3ZlciBcdTAwM2M9IDIpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTY6XHRcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcdTAwMjZcdTAwMjYgIXQtXHUwMDNlY29sbGVjdF9tZClcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MTctXHRcdFx0X19zZXRfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTYxOC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTk6XHRcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9HUkVfRVJTUEFOX1ZFUiwgdC1cdTAwM2VlcnNwYW5fdmVyKSlcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MjAtXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNjIxLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTYyMjpcdFx0aWYgKHQtXHUwMDNlZXJzcGFuX3ZlciA9PSAxKSB7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNjIzLVx0XHRcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfR1JFX0VSU1BBTl9JTkRFWCwgdC1cdTAwM2VpbmRleCkpXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjI0LVx0XHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNjI1Olx0XHR9IGVsc2UgaWYgKHQtXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNjI2LVx0XHRcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9HUkVfRVJTUEFOX0RJUiwgdC1cdTAwM2VkaXIpKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE2MzgtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjM5OnN0YXRpYyB2b2lkIGVyc3Bhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0MC17XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0NC1cdGRldi1cdTAwM2VtYXhfbXR1ID0gMDtcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NDU6XHRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmVyc3Bhbl9uZXRkZXZfb3BzO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTY0Ni1cdGRldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNj0gfklGRl9UWF9TS0JfU0hBUklORztcbm5ldC9pcHY0L2lwX2dyZS5jLTE2NDctXHRkZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NDg6XHRpcF90dW5uZWxfc2V0dXAoZGV2LCBlcnNwYW5fbmV0X2lkKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NDk6XHR0LVx1MDAzZWVyc3Bhbl92ZXIgPSAxO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTY1MC19XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTY5MT1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXBncmVfdGFwX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE3MDUtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzA2OnN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBlcnNwYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MDc6XHQua2luZFx0XHQ9IFwmIzM0O2Vyc3BhblwmIzM0Oyxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MDgtXHQubWF4dHlwZVx0PSBJRkxBX0dSRV9NQVgsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTcxMC1cdC5wcml2X3NpemVcdD0gc2l6ZW9mKHN0cnVjdCBpcF90dW5uZWwpLFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxMTpcdC5zZXR1cFx0XHQ9IGVyc3Bhbl9zZXR1cCxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTI6XHQudmFsaWRhdGVcdD0gZXJzcGFuX3ZhbGlkYXRlLFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxMzpcdC5uZXdsaW5rXHQ9IGVyc3Bhbl9uZXdsaW5rLFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxNDpcdC5jaGFuZ2VsaW5rXHQ9IGVyc3Bhbl9jaGFuZ2VsaW5rLFxubmV0L2lwdjQvaXBfZ3JlLmMtMTcxNS1cdC5kZWxsaW5rXHQ9IGlwX3R1bm5lbF9kZWxsaW5rLFxubmV0L2lwdjQvaXBfZ3JlLmMtMTcxNi1cdC5nZXRfc2l6ZVx0PSBpcGdyZV9nZXRfc2l6ZSxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTc6XHQuZmlsbF9pbmZvXHQ9IGVyc3Bhbl9maWxsX2luZm8sXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzE4LVx0LmdldF9saW5rX25ldFx0PSBpcF90dW5uZWxfZ2V0X2xpbmtfbmV0LFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE3Nzk9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcGdyZV90YXBfbmV0X29wcyA9IHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzg1LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTc4NjpzdGF0aWMgaW50IF9fbmV0X2luaXQgZXJzcGFuX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC9pcHY0L2lwX2dyZS5jLTE3ODcte1xubmV0L2lwdjQvaXBfZ3JlLmM6MTc4ODpcdHJldHVybiBpcF90dW5uZWxfaW5pdF9uZXQobmV0LCBlcnNwYW5fbmV0X2lkLFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc4OTpcdFx0XHRcdCAgXHUwMDI2ZXJzcGFuX2xpbmtfb3BzLCBcJiMzNDtlcnNwYW4wXCYjMzQ7KTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTAtfVxubmV0L2lwdjQvaXBfZ3JlLmMtMTc5MS1cbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTI6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBlcnNwYW5fZXhpdF9ydG5sKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTMtXHRcdFx0XHRcdHN0cnVjdCBsaXN0X2hlYWQgKmRldl90b19raWxsKVxubmV0L2lwdjQvaXBfZ3JlLmMtMTc5NC17XG5uZXQvaXB2NC9pcF9ncmUuYzoxNzk1Olx0aXBfdHVubmVsX2RlbGV0ZV9uZXQobmV0LCBlcnNwYW5fbmV0X2lkLCBcdTAwMjZlcnNwYW5fbGlua19vcHMsIGRldl90b19raWxsKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTYtfVxubmV0L2lwdjQvaXBfZ3JlLmMtMTc5Ny1cbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTg6c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBlcnNwYW5fbmV0X29wcyA9IHtcbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTk6XHQuaW5pdCA9IGVyc3Bhbl9pbml0X25ldCxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MDA6XHQuZXhpdF9ydG5sID0gZXJzcGFuX2V4aXRfcnRubCxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MDE6XHQuaWQgICA9IFx1MDAyNmVyc3Bhbl9uZXRfaWQsXG5uZXQvaXB2NC9pcF9ncmUuYy0xODAyLVx0LnNpemUgPSBzaXplb2Yoc3RydWN0IGlwX3R1bm5lbF9uZXQpLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE4MDU9c3RhdGljIGludCBfX2luaXQgaXBncmVfaW5pdCh2b2lkKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE4MTgtXG5uZXQvaXB2NC9pcF9ncmUuYzoxODE5Olx0ZXJyID0gcmVnaXN0ZXJfcGVybmV0X2RldmljZShcdTAwMjZlcnNwYW5fbmV0X29wcyk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xODIwLVx0aWYgKGVyciBcdTAwM2MgMClcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MjE6XHRcdGdvdG8gcG5ldF9lcnNwYW5fZmFpbGVkO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTgyMi1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xODM2LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTgzNzpcdGVyciA9IHJ0bmxfbGlua19yZWdpc3RlcihcdTAwMjZlcnNwYW5fbGlua19vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTgzOC1cdGlmIChlcnIgXHUwMDNjIDApXG5uZXQvaXB2NC9pcF9ncmUuYzoxODM5Olx0XHRnb3RvIGVyc3Bhbl9saW5rX2ZhaWxlZDtcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDAtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjE4NDM6ZXJzcGFuX2xpbmtfZmFpbGVkOlxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0NC1cdHJ0bmxfbGlua191bnJlZ2lzdGVyKFx1MDAyNmlwZ3JlX3RhcF9vcHMpO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDktYWRkX3Byb3RvX2ZhaWxlZDpcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NTA6XHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXHUwMDI2ZXJzcGFuX25ldF9vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmM6MTg1MTpwbmV0X2Vyc3Bhbl9mYWlsZWQ6XG5uZXQvaXB2NC9pcF9ncmUuYy0xODUyLVx0dW5yZWdpc3Rlcl9wZXJuZXRfZGV2aWNlKFx1MDAyNmlwZ3JlX3RhcF9uZXRfb3BzKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xODU4PXN0YXRpYyB2b2lkIF9fZXhpdCBpcGdyZV9maW5pKHZvaWQpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2MS1cdHJ0bmxfbGlua191bnJlZ2lzdGVyKFx1MDAyNmlwZ3JlX2xpbmtfb3BzKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NjI6XHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZlcnNwYW5fbGlua19vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTg2My1cdGdyZV9kZWxfcHJvdG9jb2woXHUwMDI2aXBncmVfcHJvdG9jb2wsIEdSRVBST1RPX0NJU0NPKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xODY1LVx0dW5yZWdpc3Rlcl9wZXJuZXRfZGV2aWNlKFx1MDAyNmlwZ3JlX25ldF9vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmM6MTg2NjpcdHVucmVnaXN0ZXJfcGVybmV0X2RldmljZShcdTAwMjZlcnNwYW5fbmV0X29wcyk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xODY3LX1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xODc0PU1PRFVMRV9BTElBU19SVE5MX0xJTksoXCYjMzQ7Z3JldGFwXCYjMzQ7KTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NzU6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcJiMzNDtlcnNwYW5cJiMzNDspO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTg3Ni1NT0RVTEVfQUxJQVNfTkVUREVWKFwmIzM0O2dyZTBcJiMzNDspO1xubmV0L2lwdjQvaXBfZ3JlLmM9MTg3Nz1NT0RVTEVfQUxJQVNfTkVUREVWKFwmIzM0O2dyZXRhcDBcJiMzNDspO1xubmV0L2lwdjQvaXBfZ3JlLmM6MTg3ODpNT0RVTEVfQUxJQVNfTkVUREVWKFwmIzM0O2Vyc3BhbjBcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NTAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFUlNQQU4gVHVubmVsIEluaXRpYWxpemF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBORVRfSVBHUkVgLiBUaGUga2V5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBpcyBgZXJzcGFuX3R1bm5lbF9pbml0YC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggYnlwYXNzZXMgdGhlIFRYIGxvY2sgYnkgc2V0dGluZyBgZGV2LSZndDtsbHR4ID0gdHJ1ZTtgIHdpdGhpbiBgZXJzcGFuX3R1bm5lbF9pbml0YC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLgoKVGhlIHByaW1hcnkgZm9jdXMgaGFzIHRvIGJlIG9uIGBlcnNwYW5fdHVubmVsX2luaXRgLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNvbnNpZGVyIGBlcnNwYW5feG1pdGAgb3IgYGVyc3Bhbl9mYl94bWl0YCwgc2luY2UgaXQmIzM5O3MgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXQgbG9jayBiZWluZyBieXBhc3NlZC4gTGV0IG1lIGNsYXJpZnksIGBlcnNwYW5fdHVubmVsX2luaXRgIGlzIGNhbGxlZCB3aGVuIGFuIEVSU1BBTiB0dW5uZWwgaXMgY3JlYXRlZC4gSSBzaG91bGQgc2NhbiBmb3Igc2ltaWxhciBmdW5jdGlvbnMuCgpZZXMsIGBlcnNwYW5feG1pdGAgaXMgdGhlIHRyYW5zbWl0IGZ1bmN0aW9uLCBzbyB0aGF0IGlzIGltcG9ydGFudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYGVyc3Bhbl90dW5uZWxfaW5pdGAgYW5kIGBlcnNwYW5feG1pdGAgYWZ0ZXIgdGhpcyBtb2RpZmljYXRpb24uIExldCYjMzk7cyBtYWtlIGBlcnNwYW5fdHVubmVsX2luaXRgIGFuZCBgZXJzcGFuX3htaXRgIHRoZSBrZXkgZm9jdXMgc3ltYm9scy4gSnVzdCBpbiBjYXNlLCBJIHNob3VsZCBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIGlzIGluZGVlZCBgTkVUX0lQR1JFYCwgSSYjMzk7bGwgZG91YmxlIGNoZWNrLgoKQWxyaWdodCwgYSBxdWljayByZXZpZXcgcmV2ZWFscyBgQ09ORklHX05FVF9JUEdSRWAgaXMgdGhlIGNvcmUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZGVwZW5kZW5jaWVzIHRvIG90aGVyIHNldHRpbmdzLCBsaWtlIGBDT05GSUdfTkVUX0lQR1JFX0JST0FEQ0FTVGAuIEFoLCBubywgYE5FVF9JUEdSRWAgYWxvbmUgaXMgc3VmZmljaWVudCBoZXJlLiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCByZXZpZXcgYG5ldC9pcHY0L0tjb25maWdgIHRvIGNvbmZpcm0gdGhlIGNvbnRleHQgb2YgYE5FVF9JUEdSRWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfSVBHUkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTc5LVxubmV0L2lwdjQvS2NvbmZpZzoxODA6Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIGRlbXVsdGlwbGV4ZXJcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTE4Nj1jb25maWcgTkVUX0lQX1RVTk5FTFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTkxLVxubmV0L2lwdjQvS2NvbmZpZzoxOTI6Y29uZmlnIE5FVF9JUEdSRVxubmV0L2lwdjQvS2NvbmZpZy0xOTMtXHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIHR1bm5lbHMgb3ZlciBJUFwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMjA2LVxubmV0L2lwdjQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9JUEdSRV9CUk9BRENBU1Rcbm5ldC9pcHY0L0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtJUDogYnJvYWRjYXN0IEdSRSBvdmVyIElQXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTEyCgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBFUlNQQU4gVHVubmVsOiBBIFRhcmdldGVkIEFwcHJvYWNoKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBORVRfSVBHUkVgIGhlcmUg4oCTIHRoYXQmIzM5O3Mgb3VyIGNvbmZpZ3VyYXRpb24gc2NvcGUuIFRoZSBwYXRjaCBpdHNlbGYgc2VlbXMgZnVuY3Rpb25hbCwgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHRoZSBsb2NrIG1vZGlmaWNhdGlvbnMsIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgc3ltYm9scyBmb3IgYW5hbHlzaXMuIExldCYjMzk7cyBmb2N1cyBvbiBgZXJzcGFuX3R1bm5lbF9pbml0YCBhbmQgYGVyc3Bhbl94bWl0YC4KCk15IHJlYXNvbmluZyBpcyB0aGlzOiB0aGUgcGF0Y2ggc3RyYXRlZ2ljYWxseSBzZXRzIHRoZSBgbGx0eGAgZmxhZyBvbiBFUlNQQU4gdHVubmVsIGRldmljZXMuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCYjMzk7cyBieXBhc3NpbmcgdGhlIFRYIGxvY2ssIGEgY2xlYXIgYXR0ZW1wdCB0byBkb2RnZSB0aG9zZSBuYXN0eSBBQkJBIGRlYWRsb2NrcyB0aGF0IGNhbiBhcmlzZSB3aGVuIHRoZSB0cmFuc21pdCBwYXRoIHJlLWVudGVycyB0aGUgbmV0d29yayBzdGFjay4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0aW5nIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy4gVGhpcyBzY3JlYW1zICYjMzQ7Y29uY3VycmVuY3kgaXNzdWVzJiMzNDsgYW5kICYjMzQ7cG90ZW50aWFsIGZvciBzdWJ0bGUgcmFjZSBjb25kaXRpb25zJiMzNDsg4oCTIHByZWNpc2VseSB0aGUga2luZCBvZiB0aGluZyBmdXp6aW5nIGlzIGRlc2lnbmVkIHRvIGV4cG9zZS4KClRpbWUgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGFuZCBnZXQgdGhvc2UgcmVzdWx0cyByb2xsaW5nLiBMZXQmIzM5O3MgY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vyc3Bhbl90dW5uZWxfaW5pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXRzIHRoZSBgbGx0eGAgZmxhZyBvbiBFUlNQQU4gdHVubmVsIGRldmljZXMgdG8gc2tpcCB0aGUgVFggbG9jaywgcHJldmVudGluZyBBQkJBIGRlYWRsb2NrcyB3aGVuIHRoZSB0cmFuc21pdCBwYXRoIHJlLWVudGVycyB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEVSU1BBTiB0dW5uZWxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfSVBHUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlcnNwYW5fdHVubmVsX2luaXQmIzM0OywKICAgICYjMzQ7ZXJzcGFuX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2V0cyB0aGUgYGxsdHhgIGZsYWcgb24gRVJTUEFOIHR1bm5lbCBkZXZpY2VzIHRvIHNraXAgdGhlIFRYIGxvY2ssIHByZXZlbnRpbmcgQUJCQSBkZWFkbG9ja3Mgd2hlbiB0aGUgdHJhbnNtaXQgcGF0aCByZS1lbnRlcnMgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ5OjQxLjQxMTg2MTg1MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjUyMjE0MTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVyc3Bhbl90dW5uZWxfaW5pdFwiLFxuICAgIFwiZXJzcGFuX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXRzIHRoZSBgbGx0eGAgZmxhZyBvbiBFUlNQQU4gdHVubmVsIGRldmljZXMgdG8gc2tpcCB0aGUgVFggbG9jaywgcHJldmVudGluZyBBQkJBIGRlYWRsb2NrcyB3aGVuIHRoZSB0cmFuc21pdCBwYXRoIHJlLWVudGVycyB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEVSU1BBTiB0dW5uZWxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0OTo0MS40MTE4Njc0MDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2ODI0MDkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZjNTU3ZWJjNjgxZmJjY2I5YjVlZDEwMWMxNzEzZTg5N2QxY2Q1YzJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgOSAyMjo0OTo0MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXFxuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjlmYmZmMTZjZGExZDI4IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5AQCAtMTM2Myw2ICsxMzYzLDggQEAgc3RhdGljIGludCBlcnNwYW5fdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0ZGV2LVxcdTAwM2VmZWF0dXJlc1xcdFxcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFx0ZGV2LVxcdTAwM2Vod19mZWF0dXJlc1xcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFx0ZGV2LVxcdTAwM2Vwcml2X2ZsYWdzXFx0XFx0fD0gSUZGX0xJVkVfQUREUl9DSEFOR0U7XFxuK1xcdC8qIFNraXAgVFggbG9jazogeG1pdCByZS1lbnRlcnMgc3RhY2ssIHJpc2tpbmcgQUJCQSB3aXRoIHVuZGVybGF5ICovXFxuK1xcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuIFxcdG5ldGlmX2tlZXBfZHN0KGRldik7XFxuIFxcbiBcXHRyZXR1cm4gaXBfdHVubmVsX2luaXQoZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDk6NDEuNzgwODgyNDQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTg4MzE4MzI0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlcnNwYW5fdHVubmVsX2luaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2V0cyB0aGUgYGxsdHhgIGZsYWcgb24gRVJTUEFOIHR1bm5lbCBkZXZpY2VzIHRvIHNraXAgdGhlIFRYIGxvY2ssIHByZXZlbnRpbmcgQUJCQSBkZWFkbG9ja3Mgd2hlbiB0aGUgdHJhbnNtaXQgcGF0aCByZS1lbnRlcnMgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2YzU1N2ViYzY4MWZiY2NiOWI1ZWQxMDFjMTcxM2U4OTdkMWNkNWMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAyMjo0OTo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbmluZGV4IDNlZmRmYjRmZmEyMTEyLi45ZmJmZjE2Y2RhMWQyOCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXG4rKysgYi9uZXQvaXB2NC9pcF9ncmUuY1xuQEAgLTEzNjMsNiArMTM2Myw4IEBAIHN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4gXHRkZXYtXHUwMDNlcHJpdl9mbGFnc1x0XHR8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcbitcdC8qIFNraXAgVFggbG9jazogeG1pdCByZS1lbnRlcnMgc3RhY2ssIHJpc2tpbmcgQUJCQSB3aXRoIHVuZGVybGF5ICovXG4rXHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4gXHRuZXRpZl9rZWVwX2RzdChkZXYpO1xuIFxuIFx0cmV0dXJuIGlwX3R1bm5lbF9pbml0KGRldik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0OTo0MS43ODA4ODQwNjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk2MjAyODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRVJTUEFOIFR1bm5lbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY0L2lwX2dyZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGEgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtgIGlzIGJlaW5nIGFkZGVkIHdpdGhpbiBgZXJzcGFuX3R1bm5lbF9pbml0YC4gRXNzZW50aWFsbHksIHRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0aGF0IHRvZ2dsZXMgdGhlIGBsbHR4YCBmbGFnIG9uIHRoZSBuZXR3b3JrIGRldmljZS4gVGhlIGltcGxpY2F0aW9uIGlzIGNsZWFyLCBpdCdzIGJ5cGFzc2luZyB0aGUgVFggbG9jayBmb3IgdGhlc2UgdHVubmVscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhbmQgZGV0ZXJtaW5lIGlmIHRoaXMgaW50cm9kdWNlcyBhIHBvdGVudGlhbCByYWNlLlxuXG5JdCdzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgdGhpcyBpcyByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBzZXR1cHMsIHNwZWNpZmljYWxseSBFUlNQQU4gdHVubmVscywgd2hpY2ggaXMgd2hlcmUgaXQncyBiZWluZyBwcm9wb3NlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGNvbmRpdGlvbnMgaW4gd2hpY2ggdGhpcyBpcyB1c2VkIGNhbiBsZWFkIHRvIGNvbnRlbnRpb24gb3IgY29ycnVwdGlvbiBpbiBzcGVjaWZpYyBkZXBsb3ltZW50IHNjZW5hcmlvcy4gTm93LCB0byBhc3Nlc3MgdGhlIHNjb3BlIG9mIHRoaXMgY2hhbmdlIGFuZCB3aGF0IGl0IHRydWx5IGVuYWJsZXMsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFjdHVhbGx5IGVuYWJsZXMgRVJTUEFOLiBLbm93aW5nIHRoYXQgd2lsbCBnaXZlIG1lIGNvbnRleHQgYXJvdW5kIHRoZSB1c2UgY2FzZS4gTGV0J3Mgc2VlIGlmIHRoZSBjb25maWcgb3B0aW9ucyBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcy4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgdHggcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDk6NDUuNzc3MDg5MTE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMzQ0MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVyc3Bhbl90dW5uZWxfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9pcF9ncmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pcF9ncmUuYz0xMzM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM0OS1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzUwOnN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM1MS17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZXJzcGFuX25ldGRldl9vcHMgPSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTM3NDpcXHQubmRvX2luaXRcXHRcXHQ9IGVyc3Bhbl90dW5uZWxfaW5pdCxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc1LVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpcF90dW5uZWxfdW5pbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0OTo0NS44NDA0Mzc3NzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTcxMTc1NDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgSVAgR1JFIE1vZHVsZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBlbmFibGUgdGhlIEdlbmVyaWMgUm91dGluZyBFbmNhcHN1bGF0aW9uIChHUkUpIElQIG1vZHVsZSDigJMgdGhhdCdzIGBuZXQvaXB2NC9pcF9ncmUuY2AuIFdoZXJlIGRvIEkgZXZlbiBzdGFydD8gVXN1YWxseSwgd2hlbiBJJ20gdHJhY2tpbmcgdGhpcyBkb3duLCBJJ2xsIGdvIHJpZ2h0IHRvIHRoZSBLY29uZmlnIGZpbGVzLiBJIGtub3cgdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGlzIGhpZXJhcmNoaWNhbCwgc28gSSdsbCBwcm9iYWJseSBoYXZlIHRvIHRyYWNlIHRocm91Z2ggYSBmZXcgZGlmZmVyZW50IEtjb25maWcgZmlsZXMgdG8gZmluZCB0aGUgcmVsZXZhbnQgb3B0aW9uLiBJJ20gZ3Vlc3NpbmcgaXTigJlzIGxpa2VseSB1bmRlciBgbmV0L2lwdjRgIG9yIG1heWJlIGV2ZW4gc29tZXRoaW5nIG1vcmUgZ2VuZXJhbCBpbiB0aGUgbmV0d29ya2luZyBzZWN0aW9uLiBJJ2xsIG5lZWQgdG8gbG9vayBmb3IgZGVwZW5kZW5jaWVzIHRvbyDigJMgYXJlIHRoZXJlIGFueSBvdGhlciBvcHRpb25zIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgYmVmb3JlIHRoaXMgb25lIGJlY29tZXMgYXZhaWxhYmxlPyBUaGlzIGlzIGEgcHJldHR5IGNvbW1vbiBzY2VuYXJpbywgc28gSSdtIGV4cGVjdGluZyBhIHJlYXNvbmFibHkgZGlyZWN0IGRlcGVuZGVuY3kgcGF0aC4gSSdtIGFsc28gZ29pbmcgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgcG90ZW50aWFsbHkgcmVsZXZhbnQgbW9kdWxlIGFsaWFzZXMgb3IgYnVpbGQgZmxhZ3MgdGhhdCBjb3VsZCBpbXBhY3Qgd2hldGhlciB0aGlzIHBhcnRpY3VsYXIgc291cmNlIGZpbGUgZ2V0cyBjb21waWxlZC4gSSdsbCBoYXZlIHRvIHNlZSB3aGV0aGVyIHRoZXJlIGlzIGEgYG9iai1gIGRpcmVjdGl2ZSBvciBzaW1pbGFyIHRvIGluZGljYXRlIHdoZXRoZXIgaXQgaXMgYnVpbHQgaW4sIGFzIGEgbW9kdWxlLCBvciBub3QgYXQgYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDk6NDkuMDExNjIxODEzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDEwNTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX2dyZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTI5PW9iai0kKENPTkZJR19ORVRfSVBHUkVfREVNVVgpICs9IGdyZS5vXFxubmV0L2lwdjQvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgKz0gaXBfZ3JlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0zMS11ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0OTo0OS4wNjg2MzY1ODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI3MTU5NzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIEdSRSBUdW5uZWwgQ29uZmlndXJhdGlvbnMgYW5kIEVSU1BBTioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSdtIGxvb2tpbmcgYXQsIGZyb20gdGhlIGxvb2tzIG9mIGl0LCBoYXMgYE5FVF9JUEdSRWAgZW5hYmxlZC4gVGhhdCBnaXZlcyB1cyBhIHByZXR0eSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHdoYXQgSSByZWFsbHkgbmVlZCB0byBhc2NlcnRhaW4gaXMgd2hldGhlciBvciBub3QgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBFUlNQQU4gY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgc2V0dXAuIEkndmUgd29ya2VkIHdpdGggR1JFIHR1bm5lbHMgZXh0ZW5zaXZlbHksIHNvIEkga25vdyBFUlNQQU4gY2FuIHNvbWV0aW1lcyBiZSBpbXBsZW1lbnRlZCBhcyBhIHZhcmlhbnQuIFRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBhcHByb2FjaCBhdCB0aGlzIHBvaW50IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0uIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHJlbGV2YW50IG1vZHVsZXMsIGVzcGVjaWFsbHkgbG9va2luZyBhdCBgbmV0L2lwdjQvaXBfZ3JlLmNgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBmdW5kYW1lbnRhbCBHUkUgZnVuY3Rpb25hbGl0eSBpcyBpbXBsZW1lbnRlZCwgc28gdGhhdCdzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIGFueSBFUlNQQU4gc3BlY2lmaWMgYWRkaXRpb25zIG9yIG1vZGlmaWNhdGlvbnMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgzOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ5OjUzLjg5NTc5ODk5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjkxODc4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlcnNwYW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaXBfZ3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfZ3JlLmMtNDYtI2luY2x1ZGUgXFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFxcdTAwM2VcXG5uZXQvaXB2NC9pcF9ncmUuYzo0NzojaW5jbHVkZSBcXHUwMDNjbmV0L2Vyc3Bhbi5oXFx1MDAzZVxcbm5ldC9pcHY0L2lwX2dyZS5jLTQ4LVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTEzPXN0YXRpYyBpbnQgaXBncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTE0OnN0YXRpYyB2b2lkIGVyc3Bhbl9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMTUtXFx0XFx0XFx0XFx0dTMyIGlkLCB1MzIgaW5kZXgsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTk9c3RhdGljIHVuc2lnbmVkIGludCBncmVfdGFwX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xcbm5ldC9pcHY0L2lwX2dyZS5jOjEyMDpzdGF0aWMgdW5zaWduZWQgaW50IGVyc3Bhbl9uZXRfaWQgX19yZWFkX21vc3RseTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjEtXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTIyPXN0YXRpYyBpbnQgaXBncmVfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ5LVxcdFxcdCB0cGktXFx1MDAzZXByb3RvID09IGh0b25zKEVUSF9QX0VSU1BBTjIpKVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE1MDpcXHRcXHRpdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGVyc3Bhbl9uZXRfaWQpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MS1cXHRlbHNlXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0yMTk9c3RhdGljIHZvaWQgZ3JlX2VycihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbylcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTI1Ny1cXG5uZXQvaXB2NC9pcF9ncmUuYzoyNTg6c3RhdGljIGJvb2wgaXNfZXJzcGFuX3R5cGUxKGludCBncmVfaGRyX2xlbilcXG5uZXQvaXB2NC9pcF9ncmUuYy0yNTkte1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjY2LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjI2NzpzdGF0aWMgaW50IGVyc3Bhbl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRubF9wdGtfaW5mbyAqdHBpLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTI2OC1cXHRcXHQgICAgICBpbnQgZ3JlX2hkcl9sZW4pXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzEtXFx0c3RydWN0IG1ldGFkYXRhX2RzdCAqdHVuX2RzdCA9IE5VTEw7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MjcyOlxcdHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKmVyc2hkcjtcXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzMtXFx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1MoZmxhZ3MpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjc2LVxcdGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjI3NzpcXHRzdHJ1Y3QgZXJzcGFuX21kMiAqbWQyO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTI3OC1cXHRpbnQgdmVyO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjgyLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjI4MzpcXHRpdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGVyc3Bhbl9uZXRfaWQpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTI4NC1cXHRpcGggPSBpcF9oZHIoc2tiKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoyODU6XFx0aWYgKGlzX2Vyc3Bhbl90eXBlMShncmVfaGRyX2xlbikpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYy0yODYtXFx0XFx0dmVyID0gMDtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTI5NC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoyOTU6XFx0XFx0ZXJzaGRyID0gKHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKikoc2tiLVxcdTAwM2VkYXRhICsgZ3JlX2hkcl9sZW4pO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTI5Ni1cXHRcXHR2ZXIgPSBlcnNoZHItXFx1MDAzZXZlcjtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTMwMy1cXHRpZiAodHVubmVsKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MzA0OlxcdFxcdGlmIChpc19lcnNwYW5fdHlwZTEoZ3JlX2hkcl9sZW4pKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNS1cXHRcXHRcXHRsZW4gPSBncmVfaGRyX2xlbjtcXG5uZXQvaXB2NC9pcF9ncmUuYy0zMDYtXFx0XFx0ZWxzZVxcbm5ldC9pcHY0L2lwX2dyZS5jOjMwNzpcXHRcXHRcXHRsZW4gPSBncmVfaGRyX2xlbiArIGVyc3Bhbl9oZHJfbGVuKHZlcik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMzA4LVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMzE4LVxcdFxcdGlmICh0dW5uZWwtXFx1MDAzZWNvbGxlY3RfbWQpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzozMTk6XFx0XFx0XFx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqcGt0X21kLCAqbWQ7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMzIwLVxcdFxcdFxcdHN0cnVjdCBpcF90dW5uZWxfaW5mbyAqaW5mbztcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTM0Mi1cXHRcXHRcXHQgICAgIHNrYl9uZXR3b3JrX2hlYWRlcl9sZW4oc2tiKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzozNDM6XFx0XFx0XFx0cGt0X21kID0gKHN0cnVjdCBlcnNwYW5fbWV0YWRhdGEgKikoZ2ggKyBncmVfaGRyX2xlbiArXFxubmV0L2lwdjQvaXBfZ3JlLmMtMzQ0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzaXplb2YoKmVyc2hkcikpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9NDQwPXN0YXRpYyBpbnQgZ3JlX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNDU5LVxcdFxcdCAgICAgdHBpLnByb3RvID09IGh0b25zKEVUSF9QX0VSU1BBTjIpKSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjQ2MDpcXHRcXHRpZiAoZXJzcGFuX3Jjdihza2IsIFxcdTAwMjZ0cGksIGhkcl9sZW4pID09IFBBQ0tFVF9SQ1ZEKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTQ2MS1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTQ5OT1zdGF0aWMgdm9pZCBncmVfZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNTQyLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjU0MzpzdGF0aWMgdm9pZCBlcnNwYW5fZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L2lwX2dyZS5jLTU0NC17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy01NDgtXFx0Y29uc3Qgc3RydWN0IGlwX3R1bm5lbF9rZXkgKmtleTtcXG5uZXQvaXB2NC9pcF9ncmUuYzo1NDk6XFx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqbWQ7XFxubmV0L2lwdjQvaXBfZ3JlLmMtNTUwLVxcdGJvb2wgdHJ1bmNhdGUgPSBmYWxzZTtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTU2OS1cXHR2ZXJzaW9uID0gbWQtXFx1MDAzZXZlcnNpb247XFxubmV0L2lwdjQvaXBfZ3JlLmM6NTcwOlxcdHR1bm5lbF9obGVuID0gOCArIGVyc3Bhbl9oZHJfbGVuKHZlcnNpb24pO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTU3MS1cXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTYwMC1cXHRpZiAodmVyc2lvbiA9PSAxKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6NjAxOlxcdFxcdGVyc3Bhbl9idWlsZF9oZWFkZXIoc2tiLCBudG9obCh0dW5uZWxfaWRfdG9fa2V5MzIoa2V5LVxcdTAwM2V0dW5faWQpKSxcXG5uZXQvaXB2NC9pcF9ncmUuYy02MDItXFx0XFx0XFx0XFx0ICAgIG50b2hsKG1kLVxcdTAwM2V1LmluZGV4KSwgdHJ1bmNhdGUsIHRydWUpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNjA0LVxcdH0gZWxzZSBpZiAodmVyc2lvbiA9PSAyKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6NjA1OlxcdFxcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTYwNi1cXHRcXHRcXHRcXHQgICAgICAgbnRvaGwodHVubmVsX2lkX3RvX2tleTMyKGtleS1cXHUwMDNldHVuX2lkKSksXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz02NTI9c3RhdGljIG5ldGRldl90eF90IGlwZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTcwMy1cXG5uZXQvaXB2NC9pcF9ncmUuYzo3MDQ6c3RhdGljIG5ldGRldl90eF90IGVyc3Bhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzA1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzE0LVxcdGlmICh0dW5uZWwtXFx1MDAzZWNvbGxlY3RfbWQpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzo3MTU6XFx0XFx0ZXJzcGFuX2ZiX3htaXQoc2tiLCBkZXYpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTcxNi1cXHRcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzMxLVxcdC8qIFB1c2ggRVJTUEFOIGhlYWRlciAqL1xcbm5ldC9pcHY0L2lwX2dyZS5jOjczMjpcXHRpZiAodHVubmVsLVxcdTAwM2VlcnNwYW5fdmVyID09IDApIHtcXG5uZXQvaXB2NC9pcF9ncmUuYy03MzMtXFx0XFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTczNC1cXHRcXHRfX2NsZWFyX2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzo3MzU6XFx0fSBlbHNlIGlmICh0dW5uZWwtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjczNjpcXHRcXHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsLVxcdTAwM2VwYXJtcy5vX2tleSksXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzM3LVxcdFxcdFxcdFxcdCAgICB0dW5uZWwtXFx1MDAzZWluZGV4LFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzM5LVxcdFxcdHByb3RvID0gaHRvbnMoRVRIX1BfRVJTUEFOKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzo3NDA6XFx0fSBlbHNlIGlmICh0dW5uZWwtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMikge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjc0MTpcXHRcXHRlcnNwYW5fYnVpbGRfaGVhZGVyX3YyKHNrYiwgbnRvaGwodHVubmVsLVxcdTAwM2VwYXJtcy5vX2tleSksXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzQyLVxcdFxcdFxcdFxcdCAgICAgICB0dW5uZWwtXFx1MDAzZWRpciwgdHVubmVsLVxcdTAwM2Vod2lkLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9ODE3PXN0YXRpYyBpbnQgaXBncmVfdHVubmVsX2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtODUwLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjg1MTpcXHRcXHRpZiAoc3RyY21wKGRldi1cXHUwMDNlcnRubF9saW5rX29wcy1cXHUwMDNla2luZCwgXFxcImVyc3BhblxcXCIpKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTg1Mi1cXHRcXHRcXHRpcGdyZV9saW5rX3VwZGF0ZShkZXYsIHRydWUpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTExNz1zdGF0aWMgaW50IGlwZ3JlX3RhcF92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMTQxLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjExNDI6c3RhdGljIGludCBlcnNwYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTExNDMtXFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTE4Mj1zdGF0aWMgaW50IGlwZ3JlX25ldGxpbmtfcGFybXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNTAtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTI1MTpzdGF0aWMgaW50IGVyc3Bhbl9uZXRsaW5rX3Bhcm1zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI1Mi1cXHRcXHRcXHRcXHRzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjY2LVxcdGlmIChkYXRhW0lGTEFfR1JFX0VSU1BBTl9WRVJdKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTI2NzpcXHRcXHR0LVxcdTAwM2VlcnNwYW5fdmVyID0gbmxhX2dldF91OChkYXRhW0lGTEFfR1JFX0VSU1BBTl9WRVJdKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjY4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNjk6XFx0XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgXFx1MDAzZSAyKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzAtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjcyLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNzM6XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzQtXFx0XFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0lOREVYXSkge1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3OC1cXHRcXHR9XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTI3OTpcXHR9IGVsc2UgaWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMikge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTEyODAtXFx0XFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0RJUl0pIHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTEzMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBncmVfdGFwX25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzQ5LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNTA6c3RhdGljIGludCBlcnNwYW5fdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzUxLXtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNTMtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTM1NDpcXHRpZiAodHVubmVsLVxcdTAwM2VlcnNwYW5fdmVyID09IDApXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM1NS1cXHRcXHR0dW5uZWwtXFx1MDAzZXR1bl9obGVuID0gNDsgLyogNC1ieXRlIEdSRSBoZHIuICovXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzYwLVxcdHR1bm5lbC1cXHUwMDNlaGxlbiA9IHR1bm5lbC1cXHUwMDNldHVuX2hsZW4gKyB0dW5uZWwtXFx1MDAzZWVuY2FwX2hsZW4gK1xcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNjE6XFx0XFx0ICAgICAgIGVyc3Bhbl9oZHJfbGVuKHR1bm5lbC1cXHUwMDNlZXJzcGFuX3Zlcik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM2Mi1cXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNzItXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTM3MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVyc3Bhbl9uZXRkZXZfb3BzID0ge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNzQ6XFx0Lm5kb19pbml0XFx0XFx0PSBlcnNwYW5fdHVubmVsX2luaXQsXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM3NS1cXHQubmRvX3VuaW5pdFxcdFxcdD0gaXBfdHVubmVsX3VuaW5pdCxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc2OlxcdC5uZG9fc3RhcnRfeG1pdFxcdFxcdD0gZXJzcGFuX3htaXQsXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM3Ny1cXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gZXRoX21hY19hZGRyLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTQxMT1zdGF0aWMgaW50IGlwZ3JlX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0MzEtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTQzMjpzdGF0aWMgaW50IGVyc3Bhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzMy1cXHRcXHRcXHQgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDQ1LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE0NDY6XFx0ZXJyID0gZXJzcGFuX25ldGxpbmtfcGFybXMoZGV2LCBkYXRhLCB0YiwgXFx1MDAyNnAsIFxcdTAwMjZmd21hcmspO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE0NDctXFx0aWYgKGVycilcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTE0NTM9c3RhdGljIGludCBpcGdyZV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg0LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE0ODU6c3RhdGljIGludCBlcnNwYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0ODYtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNTAwLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE1MDE6XFx0ZXJyID0gZXJzcGFuX25ldGxpbmtfcGFybXMoZGV2LCBkYXRhLCB0YiwgXFx1MDAyNnAsIFxcdTAwMjZmd21hcmspO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MDItXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNTYzPXN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjEwLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTE6c3RhdGljIGludCBlcnNwYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYxMi17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjE0LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTU6XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgXFx1MDAzYz0gMikge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTY6XFx0XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcXHUwMDI2XFx1MDAyNiAhdC1cXHUwMDNlY29sbGVjdF9tZClcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjE3LVxcdFxcdFxcdF9fc2V0X2JpdChJUF9UVU5ORUxfS0VZX0JJVCwgdC1cXHUwMDNlcGFybXMub19mbGFncyk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYxOC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjE5OlxcdFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9HUkVfRVJTUEFOX1ZFUiwgdC1cXHUwMDNlZXJzcGFuX3ZlcikpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyMC1cXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjIxLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MjI6XFx0XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MjMtXFx0XFx0XFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9HUkVfRVJTUEFOX0lOREVYLCB0LVxcdTAwM2VpbmRleCkpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNC1cXHRcXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjI1OlxcdFxcdH0gZWxzZSBpZiAodC1cXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNi1cXHRcXHRcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9ESVIsIHQtXFx1MDAzZWRpcikpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjM4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2Mzk6c3RhdGljIHZvaWQgZXJzcGFuX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0MC17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjQ0LVxcdGRldi1cXHUwMDNlbWF4X210dSA9IDA7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTY0NTpcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2ZXJzcGFuX25ldGRldl9vcHM7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0Ni1cXHRkZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNj0gfklGRl9UWF9TS0JfU0hBUklORztcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjQ3LVxcdGRldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjQ4OlxcdGlwX3R1bm5lbF9zZXR1cChkZXYsIGVyc3Bhbl9uZXRfaWQpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NDk6XFx0dC1cXHUwMDNlZXJzcGFuX3ZlciA9IDE7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY1MC19XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNjkxPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcGdyZV90YXBfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzA1LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MDY6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGVyc3Bhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MDc6XFx0LmtpbmRcXHRcXHQ9IFxcXCJlcnNwYW5cXFwiLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MDgtXFx0Lm1heHR5cGVcXHQ9IElGTEFfR1JFX01BWCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTAtXFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBpcF90dW5uZWwpLFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTE6XFx0LnNldHVwXFx0XFx0PSBlcnNwYW5fc2V0dXAsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxMjpcXHQudmFsaWRhdGVcXHQ9IGVyc3Bhbl92YWxpZGF0ZSxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzEzOlxcdC5uZXdsaW5rXFx0PSBlcnNwYW5fbmV3bGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzE0OlxcdC5jaGFuZ2VsaW5rXFx0PSBlcnNwYW5fY2hhbmdlbGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzE1LVxcdC5kZWxsaW5rXFx0PSBpcF90dW5uZWxfZGVsbGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzE2LVxcdC5nZXRfc2l6ZVxcdD0gaXBncmVfZ2V0X3NpemUsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxNzpcXHQuZmlsbF9pbmZvXFx0PSBlcnNwYW5fZmlsbF9pbmZvLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTgtXFx0LmdldF9saW5rX25ldFxcdD0gaXBfdHVubmVsX2dldF9saW5rX25ldCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTE3Nzk9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcGdyZV90YXBfbmV0X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3ODUtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc4NjpzdGF0aWMgaW50IF9fbmV0X2luaXQgZXJzcGFuX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzg3LXtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzg4OlxcdHJldHVybiBpcF90dW5uZWxfaW5pdF9uZXQobmV0LCBlcnNwYW5fbmV0X2lkLFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3ODk6XFx0XFx0XFx0XFx0ICBcXHUwMDI2ZXJzcGFuX2xpbmtfb3BzLCBcXFwiZXJzcGFuMFxcXCIpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTAtfVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTEtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc5MjpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGVyc3Bhbl9leGl0X3J0bmwoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTMtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqZGV2X3RvX2tpbGwpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTc5NC17XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc5NTpcXHRpcF90dW5uZWxfZGVsZXRlX25ldChuZXQsIGVyc3Bhbl9uZXRfaWQsIFxcdTAwMjZlcnNwYW5fbGlua19vcHMsIGRldl90b19raWxsKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzk2LX1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzk3LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTg6c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBlcnNwYW5fbmV0X29wcyA9IHtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzk5OlxcdC5pbml0ID0gZXJzcGFuX2luaXRfbmV0LFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MDA6XFx0LmV4aXRfcnRubCA9IGVyc3Bhbl9leGl0X3J0bmwsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTgwMTpcXHQuaWQgICA9IFxcdTAwMjZlcnNwYW5fbmV0X2lkLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE4MDItXFx0LnNpemUgPSBzaXplb2Yoc3RydWN0IGlwX3R1bm5lbF9uZXQpLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTgwNT1zdGF0aWMgaW50IF9faW5pdCBpcGdyZV9pbml0KHZvaWQpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xODE4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MTk6XFx0ZXJyID0gcmVnaXN0ZXJfcGVybmV0X2RldmljZShcXHUwMDI2ZXJzcGFuX25ldF9vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE4MjAtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTgyMTpcXHRcXHRnb3RvIHBuZXRfZXJzcGFuX2ZhaWxlZDtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODIyLVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTgzNi1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxODM3OlxcdGVyciA9IHJ0bmxfbGlua19yZWdpc3RlcihcXHUwMDI2ZXJzcGFuX2xpbmtfb3BzKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODM4LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4Mzk6XFx0XFx0Z290byBlcnNwYW5fbGlua19mYWlsZWQ7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0MC1cXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDItXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg0MzplcnNwYW5fbGlua19mYWlsZWQ6XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0NC1cXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcXHUwMDI2aXBncmVfdGFwX29wcyk7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xODQ5LWFkZF9wcm90b19mYWlsZWQ6XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg1MDpcXHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXFx1MDAyNmVyc3Bhbl9uZXRfb3BzKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxODUxOnBuZXRfZXJzcGFuX2ZhaWxlZDpcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODUyLVxcdHVucmVnaXN0ZXJfcGVybmV0X2RldmljZShcXHUwMDI2aXBncmVfdGFwX25ldF9vcHMpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTg1OD1zdGF0aWMgdm9pZCBfX2V4aXQgaXBncmVfZmluaSh2b2lkKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2MS1cXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcXHUwMDI2aXBncmVfbGlua19vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NjI6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNmVyc3Bhbl9saW5rX29wcyk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2My1cXHRncmVfZGVsX3Byb3RvY29sKFxcdTAwMjZpcGdyZV9wcm90b2NvbCwgR1JFUFJPVE9fQ0lTQ08pO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2NS1cXHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXFx1MDAyNmlwZ3JlX25ldF9vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NjY6XFx0dW5yZWdpc3Rlcl9wZXJuZXRfZGV2aWNlKFxcdTAwMjZlcnNwYW5fbmV0X29wcyk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2Ny19XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xODc0PU1PRFVMRV9BTElBU19SVE5MX0xJTksoXFxcImdyZXRhcFxcXCIpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NzU6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcXFwiZXJzcGFuXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg3Ni1NT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJncmUwXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmM9MTg3Nz1NT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJncmV0YXAwXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg3ODpNT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJlcnNwYW4wXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ5OjUzLjk1ODcyNjQ1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMzg3NjkxMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFUlNQQU4gVHVubmVsIEluaXRpYWxpemF0aW9uIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGhlcmUgaXMgYE5FVF9JUEdSRWAuIFRoZSBrZXkgZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQgaXMgYGVyc3Bhbl90dW5uZWxfaW5pdGAuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGJ5cGFzc2VzIHRoZSBUWCBsb2NrIGJ5IHNldHRpbmcgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtgIHdpdGhpbiBgZXJzcGFuX3R1bm5lbF9pbml0YC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuXG5cblRoZSBwcmltYXJ5IGZvY3VzIGhhcyB0byBiZSBvbiBgZXJzcGFuX3R1bm5lbF9pbml0YC4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBjb25zaWRlciBgZXJzcGFuX3htaXRgIG9yIGBlcnNwYW5fZmJfeG1pdGAsIHNpbmNlIGl0J3MgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXQgbG9jayBiZWluZyBieXBhc3NlZC4gTGV0IG1lIGNsYXJpZnksIGBlcnNwYW5fdHVubmVsX2luaXRgIGlzIGNhbGxlZCB3aGVuIGFuIEVSU1BBTiB0dW5uZWwgaXMgY3JlYXRlZC4gSSBzaG91bGQgc2NhbiBmb3Igc2ltaWxhciBmdW5jdGlvbnMuXG5cblllcywgYGVyc3Bhbl94bWl0YCBpcyB0aGUgdHJhbnNtaXQgZnVuY3Rpb24sIHNvIHRoYXQgaXMgaW1wb3J0YW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgZXJzcGFuX3R1bm5lbF9pbml0YCBhbmQgYGVyc3Bhbl94bWl0YCBhZnRlciB0aGlzIG1vZGlmaWNhdGlvbi4gTGV0J3MgbWFrZSBgZXJzcGFuX3R1bm5lbF9pbml0YCBhbmQgYGVyc3Bhbl94bWl0YCB0aGUga2V5IGZvY3VzIHN5bWJvbHMuIEp1c3QgaW4gY2FzZSwgSSBzaG91bGQgY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBpcyBpbmRlZWQgYE5FVF9JUEdSRWAsIEknbGwgZG91YmxlIGNoZWNrLlxuXG5BbHJpZ2h0LCBhIHF1aWNrIHJldmlldyByZXZlYWxzIGBDT05GSUdfTkVUX0lQR1JFYCBpcyB0aGUgY29yZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBkZXBlbmRlbmNpZXMgdG8gb3RoZXIgc2V0dGluZ3MsIGxpa2UgYENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUYC4gQWgsIG5vLCBgTkVUX0lQR1JFYCBhbG9uZSBpcyBzdWZmaWNpZW50IGhlcmUuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHJldmlldyBgbmV0L2lwdjQvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGUgY29udGV4dCBvZiBgTkVUX0lQR1JFYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY1MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0OTo1OS4xOTc0OTc5NjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTgyOTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTkxLVxcbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcXG5uZXQvaXB2NC9LY29uZmlnLTE5My1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cXG5uZXQvaXB2NC9LY29uZmlnOjIwNzpjb25maWcgTkVUX0lQR1JFX0JST0FEQ0FTVFxcbm5ldC9pcHY0L0tjb25maWctMjA4LVxcdGJvb2wgXFxcIklQOiBicm9hZGNhc3QgR1JFIG92ZXIgSVBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ5OjU5LjI2MTY4NzU0NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzIwMjYwOTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEVSU1BBTiBUdW5uZWw6IEEgVGFyZ2V0ZWQgQXBwcm9hY2gqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBORVRfSVBHUkVgIGhlcmUg4oCTIHRoYXQncyBvdXIgY29uZmlndXJhdGlvbiBzY29wZS4gVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyBmdW5jdGlvbmFsLCBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBzcGVjaWZpY2FsbHkgdGhlIGxvY2sgbW9kaWZpY2F0aW9ucywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBzeW1ib2xzIGZvciBhbmFseXNpcy4gTGV0J3MgZm9jdXMgb24gYGVyc3Bhbl90dW5uZWxfaW5pdGAgYW5kIGBlcnNwYW5feG1pdGAuXG5cbk15IHJlYXNvbmluZyBpcyB0aGlzOiB0aGUgcGF0Y2ggc3RyYXRlZ2ljYWxseSBzZXRzIHRoZSBgbGx0eGAgZmxhZyBvbiBFUlNQQU4gdHVubmVsIGRldmljZXMuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCdzIGJ5cGFzc2luZyB0aGUgVFggbG9jaywgYSBjbGVhciBhdHRlbXB0IHRvIGRvZGdlIHRob3NlIG5hc3R5IEFCQkEgZGVhZGxvY2tzIHRoYXQgY2FuIGFyaXNlIHdoZW4gdGhlIHRyYW5zbWl0IHBhdGggcmUtZW50ZXJzIHRoZSBuZXR3b3JrIHN0YWNrLiBJdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkaXJlY3RseSBpbXBhY3RpbmcgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEVSU1BBTiB0dW5uZWxzLiBUaGlzIHNjcmVhbXMgXCJjb25jdXJyZW5jeSBpc3N1ZXNcIiBhbmQgXCJwb3RlbnRpYWwgZm9yIHN1YnRsZSByYWNlIGNvbmRpdGlvbnNcIiDigJMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHRoaW5nIGZ1enppbmcgaXMgZGVzaWduZWQgdG8gZXhwb3NlLlxuXG5UaW1lIHRvIHNldCB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudCBhbmQgZ2V0IHRob3NlIHJlc3VsdHMgcm9sbGluZy4gTGV0J3MgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MTIsIk91dHB1dFRva2VucyI6MTA2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjUwOjAzLjU4MTk1MDg2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMTEwNTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlcnNwYW5fdHVubmVsX2luaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2V0cyB0aGUgYGxsdHhgIGZsYWcgb24gRVJTUEFOIHR1bm5lbCBkZXZpY2VzIHRvIHNraXAgdGhlIFRYIGxvY2ssIHByZXZlbnRpbmcgQUJCQSBkZWFkbG9ja3Mgd2hlbiB0aGUgdHJhbnNtaXQgcGF0aCByZS1lbnRlcnMgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlcnNwYW5fdHVubmVsX2luaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2V0cyB0aGUgYGxsdHhgIGZsYWcgb24gRVJTUEFOIHR1bm5lbCBkZXZpY2VzIHRvIHNraXAgdGhlIFRYIGxvY2ssIHByZXZlbnRpbmcgQUJCQSBkZWFkbG9ja3Mgd2hlbiB0aGUgdHJhbnNtaXQgcGF0aCByZS1lbnRlcnMgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBFUlNQQU4gdHVubmVscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowhx56v[1] Phase: Succeeded StartedAt: 2026-07-09 22:50:15 +0000 UTC FinishedAt: 2026-07-09 22:50:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 22:50:15 +0000 UTC FinishedAt: 2026-07-09 22:50:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2] Phase: Succeeded StartedAt: 2026-07-09 22:50:15 +0000 UTC FinishedAt: 2026-07-10 03:29:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-09 22:50:15 +0000 UTC FinishedAt: 2026-07-10 03:29:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-09 22:50:15 +0000 UTC FinishedAt: 2026-07-09 22:50:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-09 22:50:15 +0000 UTC FinishedAt: 2026-07-09 22:50:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhx56v/series-workflowhx56v-convert-artifact-2878624692/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-09 22:50:25 +0000 UTC FinishedAt: 2026-07-09 23:27:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-09 22:50:25 +0000 UTC FinishedAt: 2026-07-09 23:27: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:*4e453888-fba5-43ed-bda5-7e533ea844f6,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-workflowhx56v/series-workflowhx56v-convert-artifact-2878624692/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": "b11a34cc-dcd5-449b-966e-4bc7189d760b", "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-workflowhx56v/series-workflowhx56v-build-action-133695922/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-09 22:50:25 +0000 UTC FinishedAt: 2026-07-09 23:27: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:*4e453888-fba5-43ed-bda5-7e533ea844f6,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-workflowhx56v/series-workflowhx56v-convert-artifact-2878624692/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": "b11a34cc-dcd5-449b-966e-4bc7189d760b", "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-workflowhx56v/series-workflowhx56v-build-action-133695922/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-09 23:27:15 +0000 UTC FinishedAt: 2026-07-09 23:27:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-09 23:27:15 +0000 UTC FinishedAt: 2026-07-09 23:27:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-09 23:27:15 +0000 UTC FinishedAt: 2026-07-09 23:27:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-09 23:27:15 +0000 UTC FinishedAt: 2026-07-09 23:27:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhx56v/series-workflowhx56v-convert-artifact-1789340787/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-09 23:27:36 +0000 UTC FinishedAt: 2026-07-09 23:29:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-09 23:27:36 +0000 UTC FinishedAt: 2026-07-09 23:29:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b11a34cc-dcd5-449b-966e-4bc7189d760b,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-workflowhx56v/series-workflowhx56v-build-action-133695922/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-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-09 23:29:58 +0000 UTC FinishedAt: 2026-07-09 23:29:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-09 23:29:58 +0000 UTC FinishedAt: 2026-07-09 23:29:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-09 23:29:58 +0000 UTC FinishedAt: 2026-07-10 00:20:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-09 23:29:58 +0000 UTC FinishedAt: 2026-07-10 00:20:39 +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:*4e453888-fba5-43ed-bda5-7e533ea844f6,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-workflowhx56v/series-workflowhx56v-convert-artifact-1789340787/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": "24f75224-f28e-4233-bd17-2853d451e54e", "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-workflowhx56v/series-workflowhx56v-build-action-3486376999/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-09 23:29:58 +0000 UTC FinishedAt: 2026-07-10 00:20:18 +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:*4e453888-fba5-43ed-bda5-7e533ea844f6,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-workflowhx56v/series-workflowhx56v-convert-artifact-1789340787/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": "24f75224-f28e-4233-bd17-2853d451e54e", "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-workflowhx56v/series-workflowhx56v-build-action-3486376999/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-10 00:20:39 +0000 UTC FinishedAt: 2026-07-10 00:20:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-10 00:20:39 +0000 UTC FinishedAt: 2026-07-10 00:20:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-10 00:20:39 +0000 UTC FinishedAt: 2026-07-10 00:22:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-10 00:20:39 +0000 UTC FinishedAt: 2026-07-10 00:22:27 +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:*24f75224-f28e-4233-bd17-2853d451e54e,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-workflowhx56v/series-workflowhx56v-build-action-3486376999/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-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-10 00:22:37 +0000 UTC FinishedAt: 2026-07-10 03:29:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-10 00:22:37 +0000 UTC FinishedAt: 2026-07-10 03:29:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"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:*b11a34cc-dcd5-449b-966e-4bc7189d760b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*24f75224-f28e-4233-bd17-2853d451e54e,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-workflowhx56v/series-workflowhx56v-build-action-133695922/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-workflowhx56v/series-workflowhx56v-build-action-3486376999/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-10 00:22:37 +0000 UTC FinishedAt: 2026-07-10 00:22:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-10 00:22:37 +0000 UTC FinishedAt: 2026-07-10 00:22:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"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-workflowhx56v/series-workflowhx56v-convert-artifact-3669327980/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-10 00:22:37 +0000 UTC FinishedAt: 2026-07-10 00:22:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-10 00:22:37 +0000 UTC FinishedAt: 2026-07-10 00:22:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-10 00:22:37 +0000 UTC FinishedAt: 2026-07-10 00:22:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-10 00:22:59 +0000 UTC FinishedAt: 2026-07-10 03:29:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhx56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["erspan_tunnel_init","erspan_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"a98c55bb-d7dc-4de6-a612-fdcc343ca93a","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-10 00:22:59 +0000 UTC FinishedAt: 2026-07-10 03:29:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b11a34cc-dcd5-449b-966e-4bc7189d760b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*24f75224-f28e-4233-bd17-2853d451e54e,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-workflowhx56v/series-workflowhx56v-build-action-133695922/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-workflowhx56v/series-workflowhx56v-build-action-3486376999/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-workflowhx56v/series-workflowhx56v-convert-artifact-3669327980/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,}