Name: series-workflow5hwq2 Phase: Succeeded StartedAt: 2026-06-29 23:44:39 +0000 UTC FinishedAt: 2026-06-30 03:46:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[0] Phase: Succeeded StartedAt: 2026-06-29 23:44:39 +0000 UTC FinishedAt: 2026-06-29 23:54:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 23:44:39 +0000 UTC FinishedAt: 2026-06-29 23:54:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "88cefc306c43b58d9bb65c9e96e284306710d961", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "88cefc306c43b58d9bb65c9e96e284306710d961", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM" ], "series_id": "6be3d642-d22b-4881-8aee-c19ddf8eae28" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "dmirror_allocate_chunk", "dmirror_fops_unlocked_ioctl", "dmirror_migrate_to_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayYjMzQ7LAogICAgJiMzNDtkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGwmIzM0OywKICAgICYjMzQ7ZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSE1NIHRlc3QgbW9kdWxlJiMzOTtzIGRldmljZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYy4gRnV6emluZyB0aGUgdGVzdCBtb2R1bGUmIzM5O3MgaW9jdGwgaW50ZXJmYWNlIGNhbiBoZWxwIHVuY292ZXIgYnVncyBpbiB0aGUgSE1NIHN1YnN5c3RlbSBhbmQgdGhlIHRlc3QgbW9kdWxlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU2NjgxOTVmZThlOWE3MmY5YTNiMzRjYmI4ZDhmZGRlNjMyYWQ0MjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAyMzo1MzozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9saWIvdGVzdF9obW0uYyBiL2xpYi90ZXN0X2htbS5jXG5pbmRleCA5YzU5ZDFjZWI1YjU3ZC4uYzRhZGJmOThmYWM3OTAgMTAwNjQ0XG4tLS0gYS9saWIvdGVzdF9obW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RfaG1tLmNcbkBAIC01ODEsNyAmIzQzOzU4MSw3IEBAIHN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXG4gXHRcdGRldm1lbS1cdTAwM2VwYWdlbWFwLnR5cGUgPSBNRU1PUllfREVWSUNFX1BSSVZBVEU7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBITU1fRE1JUlJPUl9NRU1PUllfREVWSUNFX0NPSEVSRU5UOlxuLVx0XHRkZXZtZW0tXHUwMDNlcGFnZW1hcC5yYW5nZS5zdGFydCA9IChNSU5PUihtZGV2aWNlLVx1MDAzZWNkZXZpY2UuZGV2KSAtIDIpID9cbiYjNDM7XHRcdGRldm1lbS1cdTAwM2VwYWdlbWFwLnJhbmdlLnN0YXJ0ID0gKE1JTk9SKG1kZXZpY2UtXHUwMDNlZGV2aWNlLmRldnQpIC0gMikgP1xuIFx0XHRcdFx0XHRcdFx0c3BtX2FkZHJfZGV2MCA6XG4gXHRcdFx0XHRcdFx0XHRzcG1fYWRkcl9kZXYxO1xuIFx0XHRkZXZtZW0tXHUwMDNlcGFnZW1hcC5yYW5nZS5lbmQgPSBkZXZtZW0tXHUwMDNlcGFnZW1hcC5yYW5nZS5zdGFydCAmIzQzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayYjMzQ7LAogICAgJiMzNDtkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGwmIzM0OywKICAgICYjMzQ7ZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSE1NIHRlc3QgbW9kdWxlJiMzOTtzIGRldmljZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYy4gRnV6emluZyB0aGUgdGVzdCBtb2R1bGUmIzM5O3MgaW9jdGwgaW50ZXJmYWNlIGNhbiBoZWxwIHVuY292ZXIgYnVncyBpbiB0aGUgSE1NIHN1YnN5c3RlbSBhbmQgdGhlIHRlc3QgbW9kdWxlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTY2ODE5NWZlOGU5YTcyZjlhM2IzNGNiYjhkOGZkZGU2MzJhZDQyNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDI5IDIzOjUzOjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RfaG1tLmMgYi9saWIvdGVzdF9obW0uYwppbmRleCA5YzU5ZDFjZWI1YjU3ZC4uYzRhZGJmOThmYWM3OTAgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0X2htbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0X2htbS5jCkBAIC01ODEsNyAmIzQzOzU4MSw3IEBAIHN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsCiAJCWRldm1lbS0mZ3Q7cGFnZW1hcC50eXBlID0gTUVNT1JZX0RFVklDRV9QUklWQVRFOwogCQlicmVhazsKIAljYXNlIEhNTV9ETUlSUk9SX01FTU9SWV9ERVZJQ0VfQ09IRVJFTlQ6Ci0JCWRldm1lbS0mZ3Q7cGFnZW1hcC5yYW5nZS5zdGFydCA9IChNSU5PUihtZGV2aWNlLSZndDtjZGV2aWNlLmRldikgLSAyKSA/CiYjNDM7CQlkZXZtZW0tJmd0O3BhZ2VtYXAucmFuZ2Uuc3RhcnQgPSAoTUlOT1IobWRldmljZS0mZ3Q7ZGV2aWNlLmRldnQpIC0gMikgPwogCQkJCQkJCXNwbV9hZGRyX2RldjAgOgogCQkJCQkJCXNwbV9hZGRyX2RldjE7CiAJCWRldm1lbS0mZ3Q7cGFnZW1hcC5yYW5nZS5lbmQgPSBkZXZtZW0tJmd0O3BhZ2VtYXAucmFuZ2Uuc3RhcnQgJiM0MzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byBgbGliL3Rlc3RfaG1tLmNgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc2VlbXMgdG8gYmUgY2hhbmdpbmcgaG93IGRldmljZSBtaW5vciBudW1iZXJzIGFyZSBhY2Nlc3NlZCBpbiBgbGliL3Rlc3RfaG1tLmNgLiBJdCYjMzk7cyBzd2l0Y2hpbmcgZnJvbSBgTUlOT1IobWRldmljZS0mZ3Q7Y2RldmljZS5kZXYpYCB0byBgTUlOT1IobWRldmljZS0mZ3Q7ZGV2aWNlLmRldnQpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1doeSB0aGUgY2hhbmdlPyYjMzQ7LiBMZXQmIzM5O3MgZmlndXJlIG91dCB3aGF0IGBtZGV2aWNlYCByZXByZXNlbnRzIGluIHRoaXMgY29udGV4dC4gQW5kIG1vcmUgaW1wb3J0YW50bHksIHdoYXQgZXhhY3RseSBpcyBgZGV2aWNlLmRldnRgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkIGhlcmUuCgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSBpdHNlbGYuIExldCYjMzk7cyBzZWUgaWYgSSBjYW4gdW5kZXJzdGFuZCBgbWRldmljZWAgYW5kIGBkZXZpY2UuZGV2dGAgY29udGV4dHVhbGx5IHdpdGhpbiB0aGUgZmlsZS4gSSB3aWxsIHVzZSBgZ3JlcHBlcmAgdG8gc2VlIHdoZXJlIGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCBpcyBpbiB0aGF0IGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bmN0aW9uIHdoZXJlIHRoaXMgY2hhbmdlIGlzIG9jY3VycmluZy4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGFkanVzdG1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jPTUxNz1zdGF0aWMgaW50IGRtaXJyb3Jfd3JpdGUoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsIHN0cnVjdCBobW1fZG1pcnJvcl9jbWQgKmNtZClcbi0tXG5saWIvdGVzdF9obW0uYy01NTctXG5saWIvdGVzdF9obW0uYzo1NTg6c3RhdGljIGludCBkbWlycm9yX2FsbG9jYXRlX2NodW5rKHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSxcbmxpYi90ZXN0X2htbS5jLTU1OS1cdFx0XHRcdCAgc3RydWN0IHBhZ2UgKipwcGFnZSwgYm9vbCBpc19sYXJnZSlcbi0tXG5saWIvdGVzdF9obW0uYz02OTA9c3RhdGljIHN0cnVjdCBwYWdlICpkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxuLS1cbmxpYi90ZXN0X2htbS5jLTcyMi1cdFx0c3Bpbl91bmxvY2soXHUwMDI2bWRldmljZS1cdTAwM2Vsb2NrKTtcbmxpYi90ZXN0X2htbS5jOjcyMzpcdFx0aWYgKGRtaXJyb3JfYWxsb2NhdGVfY2h1bmsobWRldmljZSwgXHUwMDI2ZHBhZ2UsIGlzX2xhcmdlKSlcbmxpYi90ZXN0X2htbS5jLTcyNC1cdFx0XHRnb3RvIGVycm9yO1xuLS1cbmxpYi90ZXN0X2htbS5jPTE3Nzk9c3RhdGljIGludCBkbWlycm9yX2RldmljZV9pbml0KHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSwgaW50IGlkKVxuLS1cbmxpYi90ZXN0X2htbS5jLTE3OTktXHQvKiBCdWlsZCBhIGxpc3Qgb2YgZnJlZSBaT05FX0RFVklDRSBzdHJ1Y3QgcGFnZXMgKi9cbmxpYi90ZXN0X2htbS5jOjE4MDA6XHRyZXQgPSBkbWlycm9yX2FsbG9jYXRlX2NodW5rKG1kZXZpY2UsIE5VTEwsIGZhbHNlKTtcbmxpYi90ZXN0X2htbS5jLTE4MDEtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTUKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2UqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIHNpdHRpbmcgaW4gYGxpYi90ZXN0X2htbS5jYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dCBvZiB0aGlzIGZpbGUg4oCTIHdoYXQgY29uZmlnIG9wdGlvbnMgYWN0dWFsbHkgYnJpbmcgdGhpcyBjb2RlIGludG8gdGhlIGJ1aWxkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBiYWNrIHRocm91Z2ggdGhlIGNvbmZpZyBzeXN0ZW0gdG8gc2VlIHdoYXQgZmxhZ3Mgb3Igc2V0dGluZ3MgdHJpZ2dlciB0aGUgaW5jbHVzaW9uIG9mIGB0ZXN0X2htbS5jYC4gVGhpcyBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGludGVuZGVkIHVzZSBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZXN0X2htbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvTWFrZWZpbGU9MTAyPW9iai0kKENPTkZJR19URVNUX0xPQ0tVUCkgJiM0Mzs9IHRlc3RfbG9ja3VwLm9cbmxpYi9NYWtlZmlsZToxMDM6b2JqLSQoQ09ORklHX1RFU1RfSE1NKSAmIzQzOz0gdGVzdF9obW0ub1xubGliL01ha2VmaWxlLTEwNC1vYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSAmIzQzOz0gdGVzdF9mcmVlX3BhZ2VzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODUyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBkbWlycm9yIE1vZHVsZSoqCgpPa2F5LCBzbyB0aGUgY2hhbmdlIGlzIHJlbGF0ZWQgdG8gYENPTkZJR19URVNUX0hNTWAuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IGFuZCB3aGV0aGVyIHRoaXMgY2hhbmdlIGFmZmVjdHMgaXRzIHJlYWNoLiBMZXQmIzM5O3Mgc2VlLi4uIGl0IGxvb2tzIGxpa2UgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgIGlzIGNhbGxlZCBmcm9tIGBkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlYCBhbmQgYGRtaXJyb3JfZGV2aWNlX2luaXRgLiBOb3csIGBkbWlycm9yX2RldmljZV9pbml0YC4uLiB0aGF0JiMzOTtzIHByb2JhYmx5IGNhbGxlZCBlYXJseSBvbiwgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbiBvciB3aGVuIHRoZSBkZXZpY2UgaXMgY3JlYXRlZCwgeWVhaCwgdGhhdCYjMzk7cyB3aGF0IEkgd291bGQgYXNzdW1lIGluIHRoaXMgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZSB3aXRoaW4gYGRtaXJyb3JfZGV2aWNlX2luaXRgIHNwZWNpZmljYWxseS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG1pcnJvcl9kZXZpY2VfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jPTE3NzI9c3RhdGljIHZvaWQgZG1pcnJvcl9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxubGliL3Rlc3RfaG1tLmMtMTc3OC1cbmxpYi90ZXN0X2htbS5jOjE3Nzk6c3RhdGljIGludCBkbWlycm9yX2RldmljZV9pbml0KHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSwgaW50IGlkKVxubGliL3Rlc3RfaG1tLmMtMTc4MC17XG4tLVxubGliL3Rlc3RfaG1tLmM9MTgyMT1zdGF0aWMgaW50IF9faW5pdCBobW1fZG1pcnJvcl9pbml0KHZvaWQpXG4tLVxubGliL3Rlc3RfaG1tLmMtMTg0My1cdGZvciAoaWQgPSAwOyBpZCBcdTAwM2MgbmRldmljZXM7IGlkJiM0MzsmIzQzOykge1xubGliL3Rlc3RfaG1tLmM6MTg0NDpcdFx0cmV0ID0gZG1pcnJvcl9kZXZpY2VfaW5pdChkbWlycm9yX2RldmljZXMgJiM0MzsgaWQsIGlkKTtcbmxpYi90ZXN0X2htbS5jLTE4NDUtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM2NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGRtaXJyb3IgTW9kdWxlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBgZG1pcnJvcl9kZXZpY2VfaW5pdGAgZnVuY3Rpb24gaXMgaW5pdGlhbGl6ZWQgYXMgcGFydCBvZiB0aGUgYGhtbV9kbWlycm9yX2luaXRgIG1vZHVsZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIFRoZSByZWNlbnQgcGF0Y2ggdG91Y2hlcyBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AsIHdoaWNoIGZlZWxzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIElzIHRoZXJlIGFueSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHRoYXQgc3RhbmRzIG91dCBhcyBhIGhpZ2gtdmFsdWUgZnV6emluZyB0YXJnZXQgd2l0aGluIHRoaXMgY29kZT8gSG1tLCBsZXQmIzM5O3Mgc2VlLiBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AgaXMgY2FsbGVkIGJ5IGBkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlYC4gQW5kIGlzIHRoYXQgZnVuY3Rpb24gY2FsbGVkIGJ5IGBkbWlycm9yX2RvX2ZhdWx0YCBvciBhIHNpbWlsYXIgZmF1bHQtaGFuZGxpbmcgcGF0aD8gTXkgZm9jdXMgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBJJiMzOTtsbCBjaGVjayBgZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZWAgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmMtNDEtICogRm9yIGRldmljZV9wcml2YXRlIHBhZ2VzLCBkcGFnZSBpcyBqdXN0IGEgZHVtbXkgc3RydWN0IHBhZ2VcbmxpYi90ZXN0X2htbS5jOjQyOiAqIHJlcHJlc2VudGluZyBhIHBpZWNlIG9mIGRldmljZSBtZW1vcnkuIGRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2VcbmxpYi90ZXN0X2htbS5jLTQzLSAqIGFsbG9jYXRlcyBhIHJlYWwgc3lzdGVtIG1lbW9yeSBwYWdlIGFzIGJhY2tpbmcgc3RvcmFnZSB0byBmYWtlIGFcbi0tXG5saWIvdGVzdF9obW0uYz01NTg9c3RhdGljIGludCBkbWlycm9yX2FsbG9jYXRlX2NodW5rKHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSxcbi0tXG5saWIvdGVzdF9obW0uYy02ODktXG5saWIvdGVzdF9obW0uYzo2OTA6c3RhdGljIHN0cnVjdCBwYWdlICpkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxubGliL3Rlc3RfaG1tLmMtNjkxLVx0XHRcdFx0XHQgICAgICBib29sIGlzX2xhcmdlKVxuLS1cbmxpYi90ZXN0X2htbS5jPTczOT1zdGF0aWMgdm9pZCBkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHkoc3RydWN0IG1pZ3JhdGVfdm1hICphcmdzLFxuLS1cbmxpYi90ZXN0X2htbS5jLTc3MC1cdFx0fSBlbHNlXG5saWIvdGVzdF9obW0uYzo3NzE6XHRcdFx0ZHBhZ2UgPSBkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlKGRtaXJyb3IsIGlzX2xhcmdlKTtcbmxpYi90ZXN0X2htbS5jLTc3Mi1cbi0tXG5saWIvdGVzdF9obW0uYy03ODktXHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnIgXHUwMDI2XHUwMDI2IGFkZHIgXHUwMDNjIGFyZ3MtXHUwMDNlZW5kOyBpJiM0MzsmIzQzOykge1xubGliL3Rlc3RfaG1tLmM6NzkwOlx0XHRcdFx0ZHBhZ2UgPSBkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlKGRtaXJyb3IsIGZhbHNlKTtcbmxpYi90ZXN0X2htbS5jLTc5MS1cdFx0XHRcdHJwYWdlID0gQkFDS0lOR19QQUdFKGRwYWdlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEYXRhIE1pZ3JhdGlvbiBGdW5jdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHlgLiAgVGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGFuZCBjb3B5aW5nIGRhdGEgZHVyaW5nIGEgbWlycm9yIG1pZ3JhdGlvbiwgY2xlYXJseSBhIGNyaXRpY2FsIHBpZWNlLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBjaGFpbi4gS25vd2luZyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgd2lsbCBwcm92aWRlIHZpdGFsIGNvbnRleHQuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50IGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB3aHkgdGhpcyByb3V0aW5lIGlzIGNhbGxlZC4gSSBuZWVkIHRvIGtub3cgdGhlIG9yaWdpbi4gTGV0JiMzOTtzIHNlZSB3aGVyZSBgZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5YCBpcyBhY3R1YWxseSAqY2FsbGVkKiBmcm9tLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmM9NjkwPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy03MzgtXG5saWIvdGVzdF9obW0uYzo3Mzk6c3RhdGljIHZvaWQgZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5KHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyxcbmxpYi90ZXN0X2htbS5jLTc0MC1cdFx0XHRcdFx0ICAgc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IpXG4tLVxubGliL3Rlc3RfaG1tLmM9MTE4OT1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG4tLVxubGliL3Rlc3RfaG1tLmMtMTI0Ny1cdFx0cHJfZGVidWcoXCYjMzQ7TWlncmF0aW5nIGZyb20gc3lzIG1lbSB0byBkZXZpY2UgbWVtXFxuXCYjMzQ7KTtcbmxpYi90ZXN0X2htbS5jOjEyNDg6XHRcdGRtaXJyb3JfbWlncmF0ZV9hbGxvY19hbmRfY29weShcdTAwMjZhcmdzLCBkbWlycm9yKTtcbmxpYi90ZXN0X2htbS5jLTEyNDktXHRcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNmFyZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVHJhY2luZyB0aGUgT3JpZ2luIG9mIGBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlYCoqCgpPa2F5LCBzbyB0aGUgcHJvbXB0IGRpcmVjdHMgbWUgdG8gZmlndXJlIG91dCB3aGVyZSBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAgaXMgYmVpbmcgY2FsbGVkIGZyb20uIFRoYXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIG9yIGNvZGUgYW5hbHlzaXMgdGFzay4gTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBzY2VuYXJpb3MgYW5kIGFwcHJvYWNoZXMuCgpGaXJzdCwgSSBuZWVkIHRvIGtub3cgd2hlcmUgSSBjYW4gZmluZCB0aGUgY29kZS4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBkZWZpbmVkPyBJcyBpdCBpbiBhIHdlbGwta25vd24gbGlicmFyeSwgYSBwcm9qZWN0LXNwZWNpZmljIG1vZHVsZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEtub3dpbmcgdGhhdCBjb250ZXh0IHdpbGwgZ3VpZGUgbXkgYXBwcm9hY2guIElzIHRoaXMgYSBsb2NhbCBjb2RlYmFzZT8gSWYgc28sIGlzIHRoZXJlIGEgcHJvamVjdCYjMzk7cyBJREU/CgpOZXh0LCBJJiMzOTtsbCBjb25zaWRlciBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHByYWN0aWNhbGx5LiBJZiBJIGhhdmUgYWNjZXNzIHRvIHRoZSBjb2RlLCBJJiMzOTtkIHByb2JhYmx5IHVzZSBhIGNvbWJpbmF0aW9uIG9mIGdyZXAgb3IgYGZpbmRgIHdpdGggYGdyZXBgLCBvciBteSBJREUmIzM5O3Mgc2VhcmNoIGZ1bmN0aW9uIHRvIHBlcmZvcm0gYSBjb2RlIHNlYXJjaCBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUuIEkmIzM5O2QgbG9vayBmb3IgaXRzIGRlZmluaXRpb24gYW5kIHRoZW4gdHJhY2UgYWxsIG9mIGl0cyB1c2FnZXMuIElmIGl0JiMzOTtzIGEgcGFydGljdWxhcmx5IGxhcmdlIGNvZGViYXNlLCBJIG1pZ2h0IGVtcGxveSBzb21lIHNvcGhpc3RpY2F0ZWQgc291cmNlIGNvZGUgbmF2aWdhdGlvbiB0b29scyBpZiB0aGV5IGV4aXN0LCBvciBldmVuIGNvbnNpZGVyIGJ1aWxkaW5nIGEgY2FsbCBncmFwaC4KCkkmIzM5O20gYXNzdW1pbmcgdGhpcyBpcyBhIGZ1bmN0aW9uIGNhbGwsIGFzIHRoZSBwcm9tcHQgc3BlY2lmaWVzIGEgZnVuY3Rpb24uIEJ1dCBJIG5lZWQgdG8gYmUgcHJlcGFyZWQgaW4gY2FzZSBpdCYjMzk7cyBhIG1hY3JvIG9yIHNvbWV0aGluZyBlbHNlLiBJJiMzOTtkIHRoZW4gaGF2ZSB0byB1bmRlcnN0YW5kIGhvdyB0byB0cmFjZSB0aGUgZXhwYW5zaW9uIG9mIG1hY3JvcyBkZXBlbmRpbmcgb24gdGhlIGxhbmd1YWdlIEkmIzM5O20gd29ya2luZyB3aXRoLgoKRXNzZW50aWFsbHksIEkgbmVlZCB0byBmaW5kIHRoZSBzcGVjaWZpYyBzb3VyY2UgY29kZSBsb2NhdGlvbihzKSB3aGVyZSBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAgaXMgaW52b2tlZC4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIHByb3ZpZGUgdGhlIGNvbnRleHQgSSYjMzk7bSBhZnRlci4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoZSBjYWxsLCB0aGUgZGF0YSBiZWluZyBwYXNzZWQsIGFuZCB0aGUgb3ZlcmFsbCBleGVjdXRpb24gcGF0aC4gVW5kZXJzdGFuZGluZyB0aGUgcGF0aCBpcyBpbXBvcnRhbnQsIHNpbmNlIEkgbWlnaHQgYmUgbG9va2luZyBmb3IgcmFjZSBjb25kaXRpb25zIG9yIGRhdGEgYW5vbWFsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmM9MTEyMD1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW0oc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG4tLVxubGliL3Rlc3RfaG1tLmMtMTE4OC1cbmxpYi90ZXN0X2htbS5jOjExODk6c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxubGliL3Rlc3RfaG1tLmMtMTE5MC1cdFx0XHRcdHN0cnVjdCBobW1fZG1pcnJvcl9jbWQgKmNtZClcbi0tXG5saWIvdGVzdF9obW0uYz0xNTEzPXN0YXRpYyBsb25nIGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5saWIvdGVzdF9obW0uYy0xNTQ2LVx0Y2FzZSBITU1fRE1JUlJPUl9NSUdSQVRFX1RPX0RFVjpcbmxpYi90ZXN0X2htbS5jOjE1NDc6XHRcdHJldCA9IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2UoZG1pcnJvciwgXHUwMDI2Y21kKTtcbmxpYi90ZXN0X2htbS5jLTE1NDgtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjAxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBCdWcgRml4IGluIGEgVGVzdCBNb2R1bGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIHByb2JsZW0gbGllcyBpbiB0aGUgaW5jb3JyZWN0IHVzZSBvZiBgTUlOT1IobWRldmljZS0mZ3Q7Y2RldmljZS5kZXYpYCBpbnN0ZWFkIG9mIGBNSU5PUihtZGV2aWNlLSZndDtkZXZpY2UuZGV2dClgLiBJdCYjMzk7cyBnZXR0aW5nIGNhbGxlZCB2aWEgYGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bGAsIHdoaWNoIG1lYW5zIHRoaXMgaXMgYmVpbmcgdHJpZ2dlcmVkIHRocm91Z2ggYSBjaGFyYWN0ZXIgZGV2aWNlIGV4cG9zZWQgYnkgdGhlIGB0ZXN0X2htbWAgbW9kdWxlLgoKU2luY2UgdGhpcyBpcyB3aXRoaW4gYSB0ZXN0IG1vZHVsZSwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgaWYgZnV6emluZyBpcyB3YXJyYW50ZWQuIENvbnNpZGVyaW5nIHRoaXMgYHRlc3RfaG1tYCBtb2R1bGUgYWN0aXZlbHkgZXhlcmNpc2VzIHRoZSBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpIHN1YnN5c3RlbSwgdGhlIGFuc3dlciBpcyBhIGRlZmluaXRpdmUgeWVzLiBCdWdzIGZvdW5kIGhlcmUgY291bGQgcG9pbnQgdG8gY3JpdGljYWwgZmxhd3Mgd2l0aGluIEhNTSBpdHNlbGYsIG5vdCBqdXN0IHRoZSB0ZXN0IGNvZGUuIFRoZXJlZm9yZSwgZW5hYmxpbmcgYFRFU1RfSE1NYCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgaW52ZXN0aWdhdGlvbi4KCkdpdmVuIHRoZSBjb2RlIGluIHF1ZXN0aW9uLCBJIHNob3VsZCBmb2N1cyBteSBhbmFseXNpcyBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYCwgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBhbmQgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgVEVTVF9ITU1gIGlzIHRoZSBvbmx5IGNvbmZpZyB0aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBURVNUX0hNTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTMzMTg9Y29uZmlnIFRFU1RfTUVNSU5JVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTMzMjUtXG5saWIvS2NvbmZpZy5kZWJ1ZzozMzI2OmNvbmZpZyBURVNUX0hNTVxubGliL0tjb25maWcuZGVidWctMzMyNy1cdHRyaXN0YXRlIFwmIzM0O1Rlc3QgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Nzk3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgRGVwZW5kZW5jeSBDaGVjayoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIHN1cnJvdW5kaW5nIGBURVNUX0hNTWAuIEJlZm9yZSBJIGNhbiBldmVuIHRoaW5rIGFib3V0IG1vZGlmeWluZywgZGVidWdnaW5nLCBvciBpbnRlZ3JhdGluZyBpdCwgSSBuZWVkIGEgcm9jay1zb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBkZXBlbmRlbmNpZXMuIFRoaXMgbWVhbnMgbm90IGp1c3QgdGhlIGltbWVkaWF0ZSBpbXBvcnRzIG9yIGV4dGVybmFsIGxpYnJhcmllcywgYnV0IGFsc28gdGhlIHZlcnNpb25zLCBwb3RlbnRpYWwgY29uZmxpY3RzLCBhbmQsIGZyYW5rbHksIHRoZSBoaWRkZW4gYXNzdW1wdGlvbnMgYmFrZWQgaW50byB0aG9zZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGRlcGVuZGVuY2llcywgdGhlIHNjb3BlIHRoZXkgYXBwbHkgdG8sIGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuIFRoZSBkb2N1bWVudGF0aW9uIG1heSBiZSB1c2VmdWwsIGJ1dCBleHBlcmllbmNlIHRlbGxzIG1lIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTttIHRoaW5raW5nIG9mIGNoZWNraW5nIHBhY2thZ2UgbWFuYWdlcnMsIGV4YW1pbmluZyBidWlsZCBzY3JpcHRzLCBhbmQgbWF5YmUgZXZlbiBncmVwcGluZyB0aGUgY29kZWJhc2UgZm9yIHN1YnRsZSBpbnRlcmFjdGlvbnMuIEl0JiMzOTtzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1ZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzMjYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzMyNjpcdGNvbmZpZyBURVNUX0hNTVxuMzMyNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXCYjMzQ7XG4zMzI4Olx0XHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG4zMzI5Olx0XHRkZXBlbmRzIG9uIERFVklDRV9QUklWQVRFXG4zMzMwOlx0XHRzZWxlY3QgSE1NX01JUlJPUlxuMzMzMTpcdFx0c2VsZWN0IE1NVV9OT1RJRklFUlxuMzMzMjpcdFx0aGVscFxuMzMzMzpcdFx0ICBUaGlzIGlzIGEgcHNldWRvIGRldmljZSBkcml2ZXIgc29sZWx5IGZvciB0ZXN0aW5nIEhNTS5cbjMzMzQ6XHRcdCAgU2F5IE0gaGVyZSBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUgSE1NIHRlc3QgbW9kdWxlLlxuMzMzNTpcdFx0ICBEb2luZyBzbyB3aWxsIGFsbG93IHlvdSB0byBydW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdC92bS9obW0tdGVzdHMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIEtleSBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzIGxhYmVsZWQgYFRFU1RfSE1NYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYCwgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBhbmQgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgZml0IHRvZ2V0aGVyLCB3aGljaCBvbmUgaXMgY2F1c2luZyB0aGUgcHJvYmxlbS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhlIGZpcnN0IG9uZSwgYGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bGAuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIG5hbWUgaXRzZWxmIGlzIGNvcnJlY3QsIHRoYXQgaXQmIzM5O3Mgd2hhdCBJIHRoaW5rIGl0IGlzLiBJJiMzOTtsbCBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0cyBmdW5jdGlvbiBhbmQgcHVycG9zZSBhcmUgd2hhdCYjMzk7cyBkb2N1bWVudGVkIGFuZCBleHBlY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmM9MTQ4MT1zdGF0aWMgdm9pZCBkbWlycm9yX2RldmljZV9yZW1vdmVfY2h1bmtzKHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSlcbi0tXG5saWIvdGVzdF9obW0uYy0xNTEyLVxubGliL3Rlc3RfaG1tLmM6MTUxMzpzdGF0aWMgbG9uZyBkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG5saWIvdGVzdF9obW0uYy0xNTE0LVx0XHRcdFx0XHR1bnNpZ25lZCBpbnQgY29tbWFuZCxcbi0tXG5saWIvdGVzdF9obW0uYz0xNjExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRtaXJyb3JfZm9wcyA9IHtcbi0tXG5saWIvdGVzdF9obW0uYy0xNjE0LVx0Lm1tYXBcdFx0PSBkbWlycm9yX2ZvcHNfbW1hcCxcbmxpYi90ZXN0X2htbS5jOjE2MTU6XHQudW5sb2NrZWRfaW9jdGwgPSBkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGwsXG5saWIvdGVzdF9obW0uYy0xNjE2LVx0Lmxsc2Vla1x0XHQ9IGRlZmF1bHRfbGxzZWVrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njk3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW50ZXJuYWwgVmVyaWZpY2F0aW9uIG9mIEZ1bmN0aW9uIE5hbWUqKgoKUmlnaHQsIHRoYXQgc2VlbXMgdG8gYmUgdGhlIGNhc2UuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBmdXJ0aGVyIGFuYWx5c2lzIG9yIGRlYnVnZ2luZywgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgZnVuY3Rpb24gbmFtZSwgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgLCBhY2N1cmF0ZWx5IHJlZmxlY3RzIGl0cyBpbnRlbmRlZCBwdXJwb3NlLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGVuc3VyZSB0aGF0IG5hbWluZyBjb252ZW50aW9ucyBhbGlnbiB3aXRoIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkuIEEgZGlzY3JlcGFuY3kgaGVyZSBjb3VsZCBwb2ludCB0byBhIG1pc2ludGVycHJldGF0aW9uIG9mIHRoZSBjb2RlJiMzOTtzIHJvbGUgb3IsIHdvcnNlLCBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgZXJyb3JzIGRvd24gdGhlIGxpbmUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgbmFtZSBpcyBub3QganVzdCBhIGNvbnZlbmllbnQgcGxhY2Vob2xkZXIgYnV0IGEgcHJlY2lzZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoaXMgZnVuY3Rpb24gKmFjdHVhbGx5KiBkb2VzLiBUaW1lIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyBhbmQgYXZvaWQgYSBmdXR1cmUgcmFiYml0IGhvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtaXJyb3JfYWxsb2NhdGVfY2h1bmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYz01MTc9c3RhdGljIGludCBkbWlycm9yX3dyaXRlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLCBzdHJ1Y3QgaG1tX2RtaXJyb3JfY21kICpjbWQpXG4tLVxubGliL3Rlc3RfaG1tLmMtNTU3LVxubGliL3Rlc3RfaG1tLmM6NTU4OnN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXG5saWIvdGVzdF9obW0uYy01NTktXHRcdFx0XHQgIHN0cnVjdCBwYWdlICoqcHBhZ2UsIGJvb2wgaXNfbGFyZ2UpXG4tLVxubGliL3Rlc3RfaG1tLmM9NjkwPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy03MjItXHRcdHNwaW5fdW5sb2NrKFx1MDAyNm1kZXZpY2UtXHUwMDNlbG9jayk7XG5saWIvdGVzdF9obW0uYzo3MjM6XHRcdGlmIChkbWlycm9yX2FsbG9jYXRlX2NodW5rKG1kZXZpY2UsIFx1MDAyNmRwYWdlLCBpc19sYXJnZSkpXG5saWIvdGVzdF9obW0uYy03MjQtXHRcdFx0Z290byBlcnJvcjtcbi0tXG5saWIvdGVzdF9obW0uYz0xNzc5PXN0YXRpYyBpbnQgZG1pcnJvcl9kZXZpY2VfaW5pdChzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsIGludCBpZClcbi0tXG5saWIvdGVzdF9obW0uYy0xNzk5LVx0LyogQnVpbGQgYSBsaXN0IG9mIGZyZWUgWk9ORV9ERVZJQ0Ugc3RydWN0IHBhZ2VzICovXG5saWIvdGVzdF9obW0uYzoxODAwOlx0cmV0ID0gZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhtZGV2aWNlLCBOVUxMLCBmYWxzZSk7XG5saWIvdGVzdF9obW0uYy0xODAxLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI2MAoJCQkJCQkJb3V0cHV0OiAxMTMKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgUGF0Y2gqKgoKT2theSwgeWVzLCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIuIEl0IGFkZHJlc3NlcyBhIHNwZWNpZmljIGJ1ZyBpbiB0aGUgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgIGZ1bmN0aW9uLCBhIGNyaXRpY2FsIGVsZW1lbnQgb2YgdGhlIGRldmljZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgdGVzdCBtb2R1bGUuIFRoZSByb290IGNhdXNlIGlzIGEgbWlub3IgZXJyb3Ig4oCTIHVzaW5nIHRoZSBpbmNvcnJlY3QgZGV2aWNlIG51bWJlciBtYWNybyDigJMgYnV0IGl0IGNvdWxkIGxlYWQgdG8gc2lnbmlmaWNhbnQgcHJvYmxlbXMuIFNwZWNpZmljYWxseSwgdGhleSB3ZXJlIHVzaW5nIGBNSU5PUihtZGV2aWNlLSZndDtjZGV2aWNlLmRldilgIHdoZW4gdGhleSBzaG91bGQgaGF2ZSBiZWVuIHVzaW5nIGBNSU5PUihtZGV2aWNlLSZndDtkZXZpY2UuZGV2dClgLiBUaGlzIGlzIGNsZWFybHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBjb3JyZWN0aW9uIG9mIHVuZGVybHlpbmcgY29kZSBsb2dpYy4KClRoZXJlZm9yZSwgc2luY2UgdGhpcyBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiB0aGUgSE1NIHRlc3QgbW9kdWxlLCBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gVGhpcyBpcyBhIGNsZWFyIGluZGljYXRpb24gdGhhdCB3ZSBuZWVkIHRvIHRocm93IHNvbWUgZnV6emluZyBhdCBpdC4gSXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIHVuY292ZXJpbmcgc3VidGxlIG1lbW9yeS1yZWxhdGVkIGZsYXdzIHRoYXQgbWlnaHQgYmUgbWlzc2VkIGR1cmluZyBzdGFuZGFyZCB0ZXN0aW5nLgoKQmFzZWQgb24gdGhlIG5hdHVyZSBvZiB0aGUgZml4LCBJIHdpbGwgZW5hYmxlIHRoZSBgVEVTVF9ITU1gIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGR1cmluZyBmdXp6aW5nLCBvYnZpb3VzbHkuIFRoZSBmdXp6aW5nIHNob3VsZCBiZSBmb2N1c2VkIG9uIHRocmVlIGtleSBzeW1ib2xzOiBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AsIHNpbmNlIGl0JiMzOTtzIHRoZSBwb2ludCBvZiB0aGUgZml4LCBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYCB3aGljaCBpcyB0aGUgZW50cnkgcG9pbnQsIGFuZCBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAsIGluIGNhc2UgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGFsbG9jYXRpb24gYW5kIGJ1Zy4gVGhpcyB3aWxsIGhlbHAgdXMgdG8gdGhvcm91Z2hseSBldmFsdWF0ZSB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIGFuZCB1bmNvdmVyIGFueSByZW1haW5pbmcgdnVsbmVyYWJpbGl0aWVzIGluIGJvdGggdGhlIEhNTSBzdWJzeXN0ZW0gYW5kIHRoZSB0ZXN0IG1vZHVsZSBpdHNlbGYuIFRoaXMgaXMgYW4gaW1wb3J0YW50IHN0ZXAgdG8gZW5zdXJlIHRoZSBpbnRlZ3JpdHkgYW5kIHJvYnVzdG5lc3Mgb2YgdGhlIEhNTSBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayYjMzQ7LAogICAgJiMzNDtkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGwmIzM0OywKICAgICYjMzQ7ZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSE1NIHRlc3QgbW9kdWxlJiMzOTtzIGRldmljZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYy4gRnV6emluZyB0aGUgdGVzdCBtb2R1bGUmIzM5O3MgaW9jdGwgaW50ZXJmYWNlIGNhbiBoZWxwIHVuY292ZXIgYnVncyBpbiB0aGUgSE1NIHN1YnN5c3RlbSBhbmQgdGhlIHRlc3QgbW9kdWxlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VEVTVF9ITU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkbWlycm9yX2FsbG9jYXRlX2NodW5rJiMzNDssCiAgICAmIzM0O2RtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBITU0gdGVzdCBtb2R1bGUmIzM5O3MgZGV2aWNlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljLiBGdXp6aW5nIHRoZSB0ZXN0IG1vZHVsZSYjMzk7cyBpb2N0bCBpbnRlcmZhY2UgY2FuIGhlbHAgdW5jb3ZlciBidWdzIGluIHRoZSBITU0gc3Vic3lzdGVtIGFuZCB0aGUgdGVzdCBtb2R1bGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6MzcuMTA3NTU5MzY5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg5ODMwODY1NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkbWlycm9yX2FsbG9jYXRlX2NodW5rXCIsXG4gICAgXCJkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGxcIixcbiAgICBcImRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSE1NIHRlc3QgbW9kdWxlJ3MgZGV2aWNlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljLiBGdXp6aW5nIHRoZSB0ZXN0IG1vZHVsZSdzIGlvY3RsIGludGVyZmFjZSBjYW4gaGVscCB1bmNvdmVyIGJ1Z3MgaW4gdGhlIEhNTSBzdWJzeXN0ZW0gYW5kIHRoZSB0ZXN0IG1vZHVsZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjM3LjEwNzU2MzQ4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc2MDA2NjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTY2ODE5NWZlOGU5YTcyZjlhM2IzNGNiYjhkOGZkZGU2MzJhZDQyNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyOSAyMzo1MzozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9saWIvdGVzdF9obW0uYyBiL2xpYi90ZXN0X2htbS5jXFxuaW5kZXggOWM1OWQxY2ViNWI1N2QuLmM0YWRiZjk4ZmFjNzkwIDEwMDY0NFxcbi0tLSBhL2xpYi90ZXN0X2htbS5jXFxuKysrIGIvbGliL3Rlc3RfaG1tLmNcXG5AQCAtNTgxLDcgKzU4MSw3IEBAIHN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXFxuIFxcdFxcdGRldm1lbS1cXHUwMDNlcGFnZW1hcC50eXBlID0gTUVNT1JZX0RFVklDRV9QUklWQVRFO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBITU1fRE1JUlJPUl9NRU1PUllfREVWSUNFX0NPSEVSRU5UOlxcbi1cXHRcXHRkZXZtZW0tXFx1MDAzZXBhZ2VtYXAucmFuZ2Uuc3RhcnQgPSAoTUlOT1IobWRldmljZS1cXHUwMDNlY2RldmljZS5kZXYpIC0gMikgP1xcbitcXHRcXHRkZXZtZW0tXFx1MDAzZXBhZ2VtYXAucmFuZ2Uuc3RhcnQgPSAoTUlOT1IobWRldmljZS1cXHUwMDNlZGV2aWNlLmRldnQpIC0gMikgP1xcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRzcG1fYWRkcl9kZXYwIDpcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0c3BtX2FkZHJfZGV2MTtcXG4gXFx0XFx0ZGV2bWVtLVxcdTAwM2VwYWdlbWFwLnJhbmdlLmVuZCA9IGRldm1lbS1cXHUwMDNlcGFnZW1hcC5yYW5nZS5zdGFydCArXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjM3LjQ4NDEwNjU5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2MDY1MzIxMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkbWlycm9yX2FsbG9jYXRlX2NodW5rXCIsXG4gICAgXCJkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGxcIixcbiAgICBcImRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSE1NIHRlc3QgbW9kdWxlJ3MgZGV2aWNlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljLiBGdXp6aW5nIHRoZSB0ZXN0IG1vZHVsZSdzIGlvY3RsIGludGVyZmFjZSBjYW4gaGVscCB1bmNvdmVyIGJ1Z3MgaW4gdGhlIEhNTSBzdWJzeXN0ZW0gYW5kIHRoZSB0ZXN0IG1vZHVsZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTY2ODE5NWZlOGU5YTcyZjlhM2IzNGNiYjhkOGZkZGU2MzJhZDQyNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDIzOjUzOjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RfaG1tLmMgYi9saWIvdGVzdF9obW0uY1xuaW5kZXggOWM1OWQxY2ViNWI1N2QuLmM0YWRiZjk4ZmFjNzkwIDEwMDY0NFxuLS0tIGEvbGliL3Rlc3RfaG1tLmNcbisrKyBiL2xpYi90ZXN0X2htbS5jXG5AQCAtNTgxLDcgKzU4MSw3IEBAIHN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXG4gXHRcdGRldm1lbS1cdTAwM2VwYWdlbWFwLnR5cGUgPSBNRU1PUllfREVWSUNFX1BSSVZBVEU7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBITU1fRE1JUlJPUl9NRU1PUllfREVWSUNFX0NPSEVSRU5UOlxuLVx0XHRkZXZtZW0tXHUwMDNlcGFnZW1hcC5yYW5nZS5zdGFydCA9IChNSU5PUihtZGV2aWNlLVx1MDAzZWNkZXZpY2UuZGV2KSAtIDIpID9cbitcdFx0ZGV2bWVtLVx1MDAzZXBhZ2VtYXAucmFuZ2Uuc3RhcnQgPSAoTUlOT1IobWRldmljZS1cdTAwM2VkZXZpY2UuZGV2dCkgLSAyKSA/XG4gXHRcdFx0XHRcdFx0XHRzcG1fYWRkcl9kZXYwIDpcbiBcdFx0XHRcdFx0XHRcdHNwbV9hZGRyX2RldjE7XG4gXHRcdGRldm1lbS1cdTAwM2VwYWdlbWFwLnJhbmdlLmVuZCA9IGRldm1lbS1cdTAwM2VwYWdlbWFwLnJhbmdlLnN0YXJ0ICtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjM3LjQ4NDEwODAwMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjMwMTkwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gYGxpYi90ZXN0X2htbS5jYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBzZWVtcyB0byBiZSBjaGFuZ2luZyBob3cgZGV2aWNlIG1pbm9yIG51bWJlcnMgYXJlIGFjY2Vzc2VkIGluIGBsaWIvdGVzdF9obW0uY2AuIEl0J3Mgc3dpdGNoaW5nIGZyb20gYE1JTk9SKG1kZXZpY2UtXHUwMDNlY2RldmljZS5kZXYpYCB0byBgTUlOT1IobWRldmljZS1cdTAwM2VkZXZpY2UuZGV2dClgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2h5IHRoZSBjaGFuZ2U/XCIuIExldCdzIGZpZ3VyZSBvdXQgd2hhdCBgbWRldmljZWAgcmVwcmVzZW50cyBpbiB0aGlzIGNvbnRleHQuIEFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGF0IGV4YWN0bHkgaXMgYGRldmljZS5kZXZ0YD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCBoZXJlLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hhdCdzIGdvaW5nIG9uLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLiBMZXQncyBzZWUgaWYgSSBjYW4gdW5kZXJzdGFuZCBgbWRldmljZWAgYW5kIGBkZXZpY2UuZGV2dGAgY29udGV4dHVhbGx5IHdpdGhpbiB0aGUgZmlsZS4gSSB3aWxsIHVzZSBgZ3JlcHBlcmAgdG8gc2VlIHdoZXJlIGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCBpcyBpbiB0aGF0IGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bmN0aW9uIHdoZXJlIHRoaXMgY2hhbmdlIGlzIG9jY3VycmluZy4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGFkanVzdG1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4ODQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1Mzo0MC45NDcxMjg1NDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzODQzNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1pcnJvcl9hbGxvY2F0ZV9jaHVua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvdGVzdF9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvdGVzdF9obW0uYz01MTc9c3RhdGljIGludCBkbWlycm9yX3dyaXRlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLCBzdHJ1Y3QgaG1tX2RtaXJyb3JfY21kICpjbWQpXFxuLS1cXG5saWIvdGVzdF9obW0uYy01NTctXFxubGliL3Rlc3RfaG1tLmM6NTU4OnN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXFxubGliL3Rlc3RfaG1tLmMtNTU5LVxcdFxcdFxcdFxcdCAgc3RydWN0IHBhZ2UgKipwcGFnZSwgYm9vbCBpc19sYXJnZSlcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTY5MD1zdGF0aWMgc3RydWN0IHBhZ2UgKmRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy03MjItXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNm1kZXZpY2UtXFx1MDAzZWxvY2spO1xcbmxpYi90ZXN0X2htbS5jOjcyMzpcXHRcXHRpZiAoZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhtZGV2aWNlLCBcXHUwMDI2ZHBhZ2UsIGlzX2xhcmdlKSlcXG5saWIvdGVzdF9obW0uYy03MjQtXFx0XFx0XFx0Z290byBlcnJvcjtcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTE3Nzk9c3RhdGljIGludCBkbWlycm9yX2RldmljZV9pbml0KHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSwgaW50IGlkKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTc5OS1cXHQvKiBCdWlsZCBhIGxpc3Qgb2YgZnJlZSBaT05FX0RFVklDRSBzdHJ1Y3QgcGFnZXMgKi9cXG5saWIvdGVzdF9obW0uYzoxODAwOlxcdHJldCA9IGRtaXJyb3JfYWxsb2NhdGVfY2h1bmsobWRldmljZSwgTlVMTCwgZmFsc2UpO1xcbmxpYi90ZXN0X2htbS5jLTE4MDEtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NDEuMDAwNTE3NjE2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU2NzUyNjE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIHNpdHRpbmcgaW4gYGxpYi90ZXN0X2htbS5jYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dCBvZiB0aGlzIGZpbGUg4oCTIHdoYXQgY29uZmlnIG9wdGlvbnMgYWN0dWFsbHkgYnJpbmcgdGhpcyBjb2RlIGludG8gdGhlIGJ1aWxkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gSSdsbCBuZWVkIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY29uZmlnIHN5c3RlbSB0byBzZWUgd2hhdCBmbGFncyBvciBzZXR0aW5ncyB0cmlnZ2VyIHRoZSBpbmNsdXNpb24gb2YgYHRlc3RfaG1tLmNgLiBUaGlzIGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW50ZW5kZWQgdXNlIG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTk1LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NDMuNTY4MDQ1NDQyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzQ0NjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRlc3RfaG1tXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImxpYi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvTWFrZWZpbGU9MTAyPW9iai0kKENPTkZJR19URVNUX0xPQ0tVUCkgKz0gdGVzdF9sb2NrdXAub1xcbmxpYi9NYWtlZmlsZToxMDM6b2JqLSQoQ09ORklHX1RFU1RfSE1NKSArPSB0ZXN0X2htbS5vXFxubGliL01ha2VmaWxlLTEwNC1vYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSArPSB0ZXN0X2ZyZWVfcGFnZXMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1Mzo0My42MTk3OTQwMTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTgzODAyNDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgZG1pcnJvciBNb2R1bGUqKlxuXG5Pa2F5LCBzbyB0aGUgY2hhbmdlIGlzIHJlbGF0ZWQgdG8gYENPTkZJR19URVNUX0hNTWAuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IGFuZCB3aGV0aGVyIHRoaXMgY2hhbmdlIGFmZmVjdHMgaXRzIHJlYWNoLiBMZXQncyBzZWUuLi4gaXQgbG9va3MgbGlrZSBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AgaXMgY2FsbGVkIGZyb20gYGRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2VgIGFuZCBgZG1pcnJvcl9kZXZpY2VfaW5pdGAuIE5vdywgYGRtaXJyb3JfZGV2aWNlX2luaXRgLi4uIHRoYXQncyBwcm9iYWJseSBjYWxsZWQgZWFybHkgb24sIGR1cmluZyBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3Igd2hlbiB0aGUgZGV2aWNlIGlzIGNyZWF0ZWQsIHllYWgsIHRoYXQncyB3aGF0IEkgd291bGQgYXNzdW1lIGluIHRoaXMgY29udGV4dC4gSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlIHdpdGhpbiBgZG1pcnJvcl9kZXZpY2VfaW5pdGAgc3BlY2lmaWNhbGx5LiBMZXQncyBzdGFydCBieSBjaGVja2luZyB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODUyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NDYuODAzNTk3ODk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMjIyNzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRtaXJyb3JfZGV2aWNlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL3Rlc3RfaG1tLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL3Rlc3RfaG1tLmM9MTc3Mj1zdGF0aWMgdm9pZCBkbWlycm9yX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE3NzgtXFxubGliL3Rlc3RfaG1tLmM6MTc3OTpzdGF0aWMgaW50IGRtaXJyb3JfZGV2aWNlX2luaXQoc3RydWN0IGRtaXJyb3JfZGV2aWNlICptZGV2aWNlLCBpbnQgaWQpXFxubGliL3Rlc3RfaG1tLmMtMTc4MC17XFxuLS1cXG5saWIvdGVzdF9obW0uYz0xODIxPXN0YXRpYyBpbnQgX19pbml0IGhtbV9kbWlycm9yX2luaXQodm9pZClcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE4NDMtXFx0Zm9yIChpZCA9IDA7IGlkIFxcdTAwM2MgbmRldmljZXM7IGlkKyspIHtcXG5saWIvdGVzdF9obW0uYzoxODQ0OlxcdFxcdHJldCA9IGRtaXJyb3JfZGV2aWNlX2luaXQoZG1pcnJvcl9kZXZpY2VzICsgaWQsIGlkKTtcXG5saWIvdGVzdF9obW0uYy0xODQ1LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjQ2Ljg1NjgyNDA5OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTIwMzEwMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBkbWlycm9yIE1vZHVsZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgZG1pcnJvcl9kZXZpY2VfaW5pdGAgZnVuY3Rpb24gaXMgaW5pdGlhbGl6ZWQgYXMgcGFydCBvZiB0aGUgYGhtbV9kbWlycm9yX2luaXRgIG1vZHVsZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIFRoZSByZWNlbnQgcGF0Y2ggdG91Y2hlcyBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AsIHdoaWNoIGZlZWxzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIElzIHRoZXJlIGFueSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHRoYXQgc3RhbmRzIG91dCBhcyBhIGhpZ2gtdmFsdWUgZnV6emluZyB0YXJnZXQgd2l0aGluIHRoaXMgY29kZT8gSG1tLCBsZXQncyBzZWUuIGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCBpcyBjYWxsZWQgYnkgYGRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2VgLiBBbmQgaXMgdGhhdCBmdW5jdGlvbiBjYWxsZWQgYnkgYGRtaXJyb3JfZG9fZmF1bHRgIG9yIGEgc2ltaWxhciBmYXVsdC1oYW5kbGluZyBwYXRoPyBNeSBmb2N1cyBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEknbGwgY2hlY2sgYGRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2VgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1Mzo0OS45Njg4NTc2ODFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDEwNDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL3Rlc3RfaG1tLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL3Rlc3RfaG1tLmMtNDEtICogRm9yIGRldmljZV9wcml2YXRlIHBhZ2VzLCBkcGFnZSBpcyBqdXN0IGEgZHVtbXkgc3RydWN0IHBhZ2VcXG5saWIvdGVzdF9obW0uYzo0MjogKiByZXByZXNlbnRpbmcgYSBwaWVjZSBvZiBkZXZpY2UgbWVtb3J5LiBkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlXFxubGliL3Rlc3RfaG1tLmMtNDMtICogYWxsb2NhdGVzIGEgcmVhbCBzeXN0ZW0gbWVtb3J5IHBhZ2UgYXMgYmFja2luZyBzdG9yYWdlIHRvIGZha2UgYVxcbi0tXFxubGliL3Rlc3RfaG1tLmM9NTU4PXN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXFxuLS1cXG5saWIvdGVzdF9obW0uYy02ODktXFxubGliL3Rlc3RfaG1tLmM6NjkwOnN0YXRpYyBzdHJ1Y3QgcGFnZSAqZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG5saWIvdGVzdF9obW0uYy02OTEtXFx0XFx0XFx0XFx0XFx0ICAgICAgYm9vbCBpc19sYXJnZSlcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTczOT1zdGF0aWMgdm9pZCBkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHkoc3RydWN0IG1pZ3JhdGVfdm1hICphcmdzLFxcbi0tXFxubGliL3Rlc3RfaG1tLmMtNzcwLVxcdFxcdH0gZWxzZVxcbmxpYi90ZXN0X2htbS5jOjc3MTpcXHRcXHRcXHRkcGFnZSA9IGRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2UoZG1pcnJvciwgaXNfbGFyZ2UpO1xcbmxpYi90ZXN0X2htbS5jLTc3Mi1cXG4tLVxcbmxpYi90ZXN0X2htbS5jLTc4OS1cXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnIgXFx1MDAyNlxcdTAwMjYgYWRkciBcXHUwMDNjIGFyZ3MtXFx1MDAzZWVuZDsgaSsrKSB7XFxubGliL3Rlc3RfaG1tLmM6NzkwOlxcdFxcdFxcdFxcdGRwYWdlID0gZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZShkbWlycm9yLCBmYWxzZSk7XFxubGliL3Rlc3RfaG1tLmMtNzkxLVxcdFxcdFxcdFxcdHJwYWdlID0gQkFDS0lOR19QQUdFKGRwYWdlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NTAuMDIyMjc4NDM2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NDczMDc5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERhdGEgTWlncmF0aW9uIEZ1bmN0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHlgLiAgVGhhdCdzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWxsb2NhdGluZyBtZW1vcnkgYW5kIGNvcHlpbmcgZGF0YSBkdXJpbmcgYSBtaXJyb3IgbWlncmF0aW9uLCBjbGVhcmx5IGEgY3JpdGljYWwgcGllY2UuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIGl0cyBjYWxsIGNoYWluLiBLbm93aW5nIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCB3aWxsIHByb3ZpZGUgdml0YWwgY29udGV4dC4gS25vd2luZyB0aGUgZW50cnkgcG9pbnQgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoeSB0aGlzIHJvdXRpbmUgaXMgY2FsbGVkLiBJIG5lZWQgdG8ga25vdyB0aGUgb3JpZ2luLiBMZXQncyBzZWUgd2hlcmUgYGRtaXJyb3JfbWlncmF0ZV9hbGxvY19hbmRfY29weWAgaXMgYWN0dWFsbHkgKmNhbGxlZCogZnJvbS4gVGhhdCdzIHRoZSBsb2dpY2FsIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA2MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjUyLjg2OTU4ODUwNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQxNzk4NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImxpYi90ZXN0X2htbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi90ZXN0X2htbS5jPTY5MD1zdGF0aWMgc3RydWN0IHBhZ2UgKmRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy03MzgtXFxubGliL3Rlc3RfaG1tLmM6NzM5OnN0YXRpYyB2b2lkIGRtaXJyb3JfbWlncmF0ZV9hbGxvY19hbmRfY29weShzdHJ1Y3QgbWlncmF0ZV92bWEgKmFyZ3MsXFxubGliL3Rlc3RfaG1tLmMtNzQwLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkbWlycm9yICpkbWlycm9yKVxcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTE4OT1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMjQ3LVxcdFxcdHByX2RlYnVnKFxcXCJNaWdyYXRpbmcgZnJvbSBzeXMgbWVtIHRvIGRldmljZSBtZW1cXFxcblxcXCIpO1xcbmxpYi90ZXN0X2htbS5jOjEyNDg6XFx0XFx0ZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5KFxcdTAwMjZhcmdzLCBkbWlycm9yKTtcXG5saWIvdGVzdF9obW0uYy0xMjQ5LVxcdFxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZhcmdzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NTIuOTIzNzcyOTY5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDA4ODE5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKlRyYWNpbmcgdGhlIE9yaWdpbiBvZiBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGRpcmVjdHMgbWUgdG8gZmlndXJlIG91dCB3aGVyZSBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAgaXMgYmVpbmcgY2FsbGVkIGZyb20uIFRoYXQncyBhIHByZXR0eSBzdGFuZGFyZCBkZWJ1Z2dpbmcgb3IgY29kZSBhbmFseXNpcyB0YXNrLiBNeSBtaW5kIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIHNjZW5hcmlvcyBhbmQgYXBwcm9hY2hlcy5cblxuRmlyc3QsIEkgbmVlZCB0byBrbm93IHdoZXJlIEkgY2FuIGZpbmQgdGhlIGNvZGUuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gZGVmaW5lZD8gSXMgaXQgaW4gYSB3ZWxsLWtub3duIGxpYnJhcnksIGEgcHJvamVjdC1zcGVjaWZpYyBtb2R1bGUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoYXQgY29udGV4dCB3aWxsIGd1aWRlIG15IGFwcHJvYWNoLiBJcyB0aGlzIGEgbG9jYWwgY29kZWJhc2U/IElmIHNvLCBpcyB0aGVyZSBhIHByb2plY3QncyBJREU/XG5cbk5leHQsIEknbGwgY29uc2lkZXIgaG93IEknZCBhcHByb2FjaCB0aGlzIHByYWN0aWNhbGx5LiBJZiBJIGhhdmUgYWNjZXNzIHRvIHRoZSBjb2RlLCBJJ2QgcHJvYmFibHkgdXNlIGEgY29tYmluYXRpb24gb2YgZ3JlcCBvciBgZmluZGAgd2l0aCBgZ3JlcGAsIG9yIG15IElERSdzIHNlYXJjaCBmdW5jdGlvbiB0byBwZXJmb3JtIGEgY29kZSBzZWFyY2ggZm9yIHRoZSBmdW5jdGlvbiBuYW1lLiBJJ2QgbG9vayBmb3IgaXRzIGRlZmluaXRpb24gYW5kIHRoZW4gdHJhY2UgYWxsIG9mIGl0cyB1c2FnZXMuIElmIGl0J3MgYSBwYXJ0aWN1bGFybHkgbGFyZ2UgY29kZWJhc2UsIEkgbWlnaHQgZW1wbG95IHNvbWUgc29waGlzdGljYXRlZCBzb3VyY2UgY29kZSBuYXZpZ2F0aW9uIHRvb2xzIGlmIHRoZXkgZXhpc3QsIG9yIGV2ZW4gY29uc2lkZXIgYnVpbGRpbmcgYSBjYWxsIGdyYXBoLlxuXG5JJ20gYXNzdW1pbmcgdGhpcyBpcyBhIGZ1bmN0aW9uIGNhbGwsIGFzIHRoZSBwcm9tcHQgc3BlY2lmaWVzIGEgZnVuY3Rpb24uIEJ1dCBJIG5lZWQgdG8gYmUgcHJlcGFyZWQgaW4gY2FzZSBpdCdzIGEgbWFjcm8gb3Igc29tZXRoaW5nIGVsc2UuIEknZCB0aGVuIGhhdmUgdG8gdW5kZXJzdGFuZCBob3cgdG8gdHJhY2UgdGhlIGV4cGFuc2lvbiBvZiBtYWNyb3MgZGVwZW5kaW5nIG9uIHRoZSBsYW5ndWFnZSBJJ20gd29ya2luZyB3aXRoLlxuXG5Fc3NlbnRpYWxseSwgSSBuZWVkIHRvIGZpbmQgdGhlIHNwZWNpZmljIHNvdXJjZSBjb2RlIGxvY2F0aW9uKHMpIHdoZXJlIGBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlYCBpcyBpbnZva2VkLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgcHJvdmlkZSB0aGUgY29udGV4dCBJJ20gYWZ0ZXIuIEZyb20gdGhlcmUsIEkgY2FuIGFuYWx5emUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGUgY2FsbCwgdGhlIGRhdGEgYmVpbmcgcGFzc2VkLCBhbmQgdGhlIG92ZXJhbGwgZXhlY3V0aW9uIHBhdGguIFVuZGVyc3RhbmRpbmcgdGhlIHBhdGggaXMgaW1wb3J0YW50LCBzaW5jZSBJIG1pZ2h0IGJlIGxvb2tpbmcgZm9yIHJhY2UgY29uZGl0aW9ucyBvciBkYXRhIGFub21hbGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUyNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjU2Ljg2NDY1NjY4OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM0ODI2MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvdGVzdF9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTExODgtXFxubGliL3Rlc3RfaG1tLmM6MTE4OTpzdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxubGliL3Rlc3RfaG1tLmMtMTE5MC1cXHRcXHRcXHRcXHRzdHJ1Y3QgaG1tX2RtaXJyb3JfY21kICpjbWQpXFxuLS1cXG5saWIvdGVzdF9obW0uYz0xNTEzPXN0YXRpYyBsb25nIGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE1NDYtXFx0Y2FzZSBITU1fRE1JUlJPUl9NSUdSQVRFX1RPX0RFVjpcXG5saWIvdGVzdF9obW0uYzoxNTQ3OlxcdFxcdHJldCA9IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2UoZG1pcnJvciwgXFx1MDAyNmNtZCk7XFxubGliL3Rlc3RfaG1tLmMtMTU0OC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NTYuOTE4MTQzODA0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTg1MDI4MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIEJ1ZyBGaXggaW4gYSBUZXN0IE1vZHVsZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgaXQncyBhZGRyZXNzaW5nIGEgYnVnIHdpdGhpbiBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgcHJvYmxlbSBsaWVzIGluIHRoZSBpbmNvcnJlY3QgdXNlIG9mIGBNSU5PUihtZGV2aWNlLVx1MDAzZWNkZXZpY2UuZGV2KWAgaW5zdGVhZCBvZiBgTUlOT1IobWRldmljZS1cdTAwM2VkZXZpY2UuZGV2dClgLiBJdCdzIGdldHRpbmcgY2FsbGVkIHZpYSBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYCwgd2hpY2ggbWVhbnMgdGhpcyBpcyBiZWluZyB0cmlnZ2VyZWQgdGhyb3VnaCBhIGNoYXJhY3RlciBkZXZpY2UgZXhwb3NlZCBieSB0aGUgYHRlc3RfaG1tYCBtb2R1bGUuXG5cblNpbmNlIHRoaXMgaXMgd2l0aGluIGEgdGVzdCBtb2R1bGUsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gYXNzZXNzIGlmIGZ1enppbmcgaXMgd2FycmFudGVkLiBDb25zaWRlcmluZyB0aGlzIGB0ZXN0X2htbWAgbW9kdWxlIGFjdGl2ZWx5IGV4ZXJjaXNlcyB0aGUgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KSBzdWJzeXN0ZW0sIHRoZSBhbnN3ZXIgaXMgYSBkZWZpbml0aXZlIHllcy4gQnVncyBmb3VuZCBoZXJlIGNvdWxkIHBvaW50IHRvIGNyaXRpY2FsIGZsYXdzIHdpdGhpbiBITU0gaXRzZWxmLCBub3QganVzdCB0aGUgdGVzdCBjb2RlLiBUaGVyZWZvcmUsIGVuYWJsaW5nIGBURVNUX0hNTWAgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGludmVzdGlnYXRpb24uXG5cbkdpdmVuIHRoZSBjb2RlIGluIHF1ZXN0aW9uLCBJIHNob3VsZCBmb2N1cyBteSBhbmFseXNpcyBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYCwgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBhbmQgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBURVNUX0hNTWAgaXMgdGhlIG9ubHkgY29uZmlnIHRoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIwMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1NDowMS4zMzY2NDgzOTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMTQ3NzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBURVNUX0hNTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Z1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0zMzE4PWNvbmZpZyBURVNUX01FTUlOSVRcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTMzMjUtXFxubGliL0tjb25maWcuZGVidWc6MzMyNjpjb25maWcgVEVTVF9ITU1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzI3LVxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjU0OjAxLjM4OTc5OTMyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjA2NzA0MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgc3Vycm91bmRpbmcgYFRFU1RfSE1NYC4gQmVmb3JlIEkgY2FuIGV2ZW4gdGhpbmsgYWJvdXQgbW9kaWZ5aW5nLCBkZWJ1Z2dpbmcsIG9yIGludGVncmF0aW5nIGl0LCBJIG5lZWQgYSByb2NrLXNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyBtZWFucyBub3QganVzdCB0aGUgaW1tZWRpYXRlIGltcG9ydHMgb3IgZXh0ZXJuYWwgbGlicmFyaWVzLCBidXQgYWxzbyB0aGUgdmVyc2lvbnMsIHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCwgZnJhbmtseSwgdGhlIGhpZGRlbiBhc3N1bXB0aW9ucyBiYWtlZCBpbnRvIHRob3NlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHZlcmlmeSBpdHMgZGVwZW5kZW5jaWVzLCB0aGUgc2NvcGUgdGhleSBhcHBseSB0bywgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRob3NlIGRlcGVuZGVuY2llcy4gVGhlIGRvY3VtZW50YXRpb24gbWF5IGJlIHVzZWZ1bCwgYnV0IGV4cGVyaWVuY2UgdGVsbHMgbWUgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbSB0aGlua2luZyBvZiBjaGVja2luZyBwYWNrYWdlIG1hbmFnZXJzLCBleGFtaW5pbmcgYnVpbGQgc2NyaXB0cywgYW5kIG1heWJlIGV2ZW4gZ3JlcHBpbmcgdGhlIGNvZGViYXNlIGZvciBzdWJ0bGUgaW50ZXJhY3Rpb25zLiBJdCdzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc5NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjU0OjA0LjUxMDQ3MTg3MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibGliL0tjb25maWcuZGVidWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzMyNixcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzMyNjpcXHRjb25maWcgVEVTVF9ITU1cXG4zMzI3OlxcdFxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuMzMyODpcXHRcXHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxuMzMyOTpcXHRcXHRkZXBlbmRzIG9uIERFVklDRV9QUklWQVRFXFxuMzMzMDpcXHRcXHRzZWxlY3QgSE1NX01JUlJPUlxcbjMzMzE6XFx0XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbjMzMzI6XFx0XFx0aGVscFxcbjMzMzM6XFx0XFx0ICBUaGlzIGlzIGEgcHNldWRvIGRldmljZSBkcml2ZXIgc29sZWx5IGZvciB0ZXN0aW5nIEhNTS5cXG4zMzM0OlxcdFxcdCAgU2F5IE0gaGVyZSBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUgSE1NIHRlc3QgbW9kdWxlLlxcbjMzMzU6XFx0XFx0ICBEb2luZyBzbyB3aWxsIGFsbG93IHlvdSB0byBydW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdC92bS9obW0tdGVzdHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjU0OjA0LjUxMDYyMjc1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjIzNjMyMjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBhbmQgS2V5IFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzIGxhYmVsZWQgYFRFU1RfSE1NYC4gUmlnaHQsIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZXNlIHN5bWJvbHM6IGBkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGxgLCBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAsIGFuZCBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBmaXQgdG9nZXRoZXIsIHdoaWNoIG9uZSBpcyBjYXVzaW5nIHRoZSBwcm9ibGVtLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgZmlyc3Qgb25lLCBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgbmFtZSBpdHNlbGYgaXMgY29ycmVjdCwgdGhhdCBpdCdzIHdoYXQgSSB0aGluayBpdCBpcy4gSSdsbCBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0cyBmdW5jdGlvbiBhbmQgcHVycG9zZSBhcmUgd2hhdCdzIGRvY3VtZW50ZWQgYW5kIGV4cGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjAzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1NDowNy43MzQyNTcwOTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzE0Nzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvdGVzdF9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvdGVzdF9obW0uYz0xNDgxPXN0YXRpYyB2b2lkIGRtaXJyb3JfZGV2aWNlX3JlbW92ZV9jaHVua3Moc3RydWN0IGRtaXJyb3JfZGV2aWNlICptZGV2aWNlKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTUxMi1cXG5saWIvdGVzdF9obW0uYzoxNTEzOnN0YXRpYyBsb25nIGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG5saWIvdGVzdF9obW0uYy0xNTE0LVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBjb21tYW5kLFxcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTYxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkbWlycm9yX2ZvcHMgPSB7XFxuLS1cXG5saWIvdGVzdF9obW0uYy0xNjE0LVxcdC5tbWFwXFx0XFx0PSBkbWlycm9yX2ZvcHNfbW1hcCxcXG5saWIvdGVzdF9obW0uYzoxNjE1OlxcdC51bmxvY2tlZF9pb2N0bCA9IGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bCxcXG5saWIvdGVzdF9obW0uYy0xNjE2LVxcdC5sbHNlZWtcXHRcXHQ9IGRlZmF1bHRfbGxzZWVrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1NDowNy43ODg5NzY5NTlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMTA4NzQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW50ZXJuYWwgVmVyaWZpY2F0aW9uIG9mIEZ1bmN0aW9uIE5hbWUqKlxuXG5SaWdodCwgdGhhdCBzZWVtcyB0byBiZSB0aGUgY2FzZS4gTm93LCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgZGVidWdnaW5nLCBsZXQncyBqdXN0IHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGZ1bmN0aW9uIG5hbWUsIGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCwgYWNjdXJhdGVseSByZWZsZWN0cyBpdHMgaW50ZW5kZWQgcHVycG9zZS4gSXQncyBjcnVjaWFsIHRvIGVuc3VyZSB0aGF0IG5hbWluZyBjb252ZW50aW9ucyBhbGlnbiB3aXRoIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkuIEEgZGlzY3JlcGFuY3kgaGVyZSBjb3VsZCBwb2ludCB0byBhIG1pc2ludGVycHJldGF0aW9uIG9mIHRoZSBjb2RlJ3Mgcm9sZSBvciwgd29yc2UsIGEgcG90ZW50aWFsIHNvdXJjZSBvZiBlcnJvcnMgZG93biB0aGUgbGluZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIG5hbWUgaXMgbm90IGp1c3QgYSBjb252ZW5pZW50IHBsYWNlaG9sZGVyIGJ1dCBhIHByZWNpc2UgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIGZ1bmN0aW9uICphY3R1YWxseSogZG9lcy4gVGltZSB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbnMgYW5kIGF2b2lkIGEgZnV0dXJlIHJhYmJpdCBob2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njk3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTQ6MTAuOTEwMDY2OTcxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDU2NTg5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkbWlycm9yX2FsbG9jYXRlX2NodW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImxpYi90ZXN0X2htbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi90ZXN0X2htbS5jPTUxNz1zdGF0aWMgaW50IGRtaXJyb3Jfd3JpdGUoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsIHN0cnVjdCBobW1fZG1pcnJvcl9jbWQgKmNtZClcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTU1Ny1cXG5saWIvdGVzdF9obW0uYzo1NTg6c3RhdGljIGludCBkbWlycm9yX2FsbG9jYXRlX2NodW5rKHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSxcXG5saWIvdGVzdF9obW0uYy01NTktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcGFnZSAqKnBwYWdlLCBib29sIGlzX2xhcmdlKVxcbi0tXFxubGliL3Rlc3RfaG1tLmM9NjkwPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTcyMi1cXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bWRldmljZS1cXHUwMDNlbG9jayk7XFxubGliL3Rlc3RfaG1tLmM6NzIzOlxcdFxcdGlmIChkbWlycm9yX2FsbG9jYXRlX2NodW5rKG1kZXZpY2UsIFxcdTAwMjZkcGFnZSwgaXNfbGFyZ2UpKVxcbmxpYi90ZXN0X2htbS5jLTcyNC1cXHRcXHRcXHRnb3RvIGVycm9yO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTc3OT1zdGF0aWMgaW50IGRtaXJyb3JfZGV2aWNlX2luaXQoc3RydWN0IGRtaXJyb3JfZGV2aWNlICptZGV2aWNlLCBpbnQgaWQpXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xNzk5LVxcdC8qIEJ1aWxkIGEgbGlzdCBvZiBmcmVlIFpPTkVfREVWSUNFIHN0cnVjdCBwYWdlcyAqL1xcbmxpYi90ZXN0X2htbS5jOjE4MDA6XFx0cmV0ID0gZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhtZGV2aWNlLCBOVUxMLCBmYWxzZSk7XFxubGliL3Rlc3RfaG1tLmMtMTgwMS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1NDoxMC45NjQ2Mzc1MjZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1MDIwNzEwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHllcywgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGNvbnNpZGVyLiBJdCBhZGRyZXNzZXMgYSBzcGVjaWZpYyBidWcgaW4gdGhlIGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCBmdW5jdGlvbiwgYSBjcml0aWNhbCBlbGVtZW50IG9mIHRoZSBkZXZpY2UgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMgd2l0aGluIHRoZSBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpIHRlc3QgbW9kdWxlLiBUaGUgcm9vdCBjYXVzZSBpcyBhIG1pbm9yIGVycm9yIOKAkyB1c2luZyB0aGUgaW5jb3JyZWN0IGRldmljZSBudW1iZXIgbWFjcm8g4oCTIGJ1dCBpdCBjb3VsZCBsZWFkIHRvIHNpZ25pZmljYW50IHByb2JsZW1zLiBTcGVjaWZpY2FsbHksIHRoZXkgd2VyZSB1c2luZyBgTUlOT1IobWRldmljZS1cdTAwM2VjZGV2aWNlLmRldilgIHdoZW4gdGhleSBzaG91bGQgaGF2ZSBiZWVuIHVzaW5nIGBNSU5PUihtZGV2aWNlLVx1MDAzZWRldmljZS5kZXZ0KWAuIFRoaXMgaXMgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNvcnJlY3Rpb24gb2YgdW5kZXJseWluZyBjb2RlIGxvZ2ljLlxuXG5UaGVyZWZvcmUsIHNpbmNlIHRoaXMgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBtZW1vcnkgYWxsb2NhdGlvbiB3aXRoaW4gdGhlIEhNTSB0ZXN0IG1vZHVsZSwgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgd2UgbmVlZCB0byB0aHJvdyBzb21lIGZ1enppbmcgYXQgaXQuIEl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIHVuY292ZXJpbmcgc3VidGxlIG1lbW9yeS1yZWxhdGVkIGZsYXdzIHRoYXQgbWlnaHQgYmUgbWlzc2VkIGR1cmluZyBzdGFuZGFyZCB0ZXN0aW5nLlxuXG5CYXNlZCBvbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgsIEkgd2lsbCBlbmFibGUgdGhlIGBURVNUX0hNTWAgY29uZmlndXJhdGlvbiBvcHRpb24gZHVyaW5nIGZ1enppbmcsIG9idmlvdXNseS4gVGhlIGZ1enppbmcgc2hvdWxkIGJlIGZvY3VzZWQgb24gdGhyZWUga2V5IHN5bWJvbHM6IGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCwgc2luY2UgaXQncyB0aGUgcG9pbnQgb2YgdGhlIGZpeCwgYGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bGAgd2hpY2ggaXMgdGhlIGVudHJ5IHBvaW50LCBhbmQgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBpbiBjYXNlIGl0IGludGVyYWN0cyB3aXRoIHRoZSBhbGxvY2F0aW9uIGFuZCBidWcuIFRoaXMgd2lsbCBoZWxwIHVzIHRvIHRob3JvdWdobHkgZXZhbHVhdGUgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBhbmQgdW5jb3ZlciBhbnkgcmVtYWluaW5nIHZ1bG5lcmFiaWxpdGllcyBpbiBib3RoIHRoZSBITU0gc3Vic3lzdGVtIGFuZCB0aGUgdGVzdCBtb2R1bGUgaXRzZWxmLiBUaGlzIGlzIGFuIGltcG9ydGFudCBzdGVwIHRvIGVuc3VyZSB0aGUgaW50ZWdyaXR5IGFuZCByb2J1c3RuZXNzIG9mIHRoZSBITU0gaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNjAsIk91dHB1dFRva2VucyI6MTEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjU0OjE2LjAxNDg0NjUzOFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1Nzg5ODAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJURVNUX0hNTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRtaXJyb3JfYWxsb2NhdGVfY2h1bmtcIixcbiAgICBcImRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bFwiLFxuICAgIFwiZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBITU0gdGVzdCBtb2R1bGUncyBkZXZpY2UgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMuIEZ1enppbmcgdGhlIHRlc3QgbW9kdWxlJ3MgaW9jdGwgaW50ZXJmYWNlIGNhbiBoZWxwIHVuY292ZXIgYnVncyBpbiB0aGUgSE1NIHN1YnN5c3RlbSBhbmQgdGhlIHRlc3QgbW9kdWxlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJURVNUX0hNTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRtaXJyb3JfYWxsb2NhdGVfY2h1bmtcIixcbiAgICBcImRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bFwiLFxuICAgIFwiZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBITU0gdGVzdCBtb2R1bGUncyBkZXZpY2UgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMuIEZ1enppbmcgdGhlIHRlc3QgbW9kdWxlJ3MgaW9jdGwgaW50ZXJmYWNlIGNhbiBoZWxwIHVuY292ZXIgYnVncyBpbiB0aGUgSE1NIHN1YnN5c3RlbSBhbmQgdGhlIHRlc3QgbW9kdWxlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5hwq2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 23:44:39 +0000 UTC FinishedAt: 2026-06-29 23:54:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "88cefc306c43b58d9bb65c9e96e284306710d961", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "88cefc306c43b58d9bb65c9e96e284306710d961", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM" ], "series_id": "6be3d642-d22b-4881-8aee-c19ddf8eae28" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "dmirror_allocate_chunk", "dmirror_fops_unlocked_ioctl", "dmirror_migrate_to_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayYjMzQ7LAogICAgJiMzNDtkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGwmIzM0OywKICAgICYjMzQ7ZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSE1NIHRlc3QgbW9kdWxlJiMzOTtzIGRldmljZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYy4gRnV6emluZyB0aGUgdGVzdCBtb2R1bGUmIzM5O3MgaW9jdGwgaW50ZXJmYWNlIGNhbiBoZWxwIHVuY292ZXIgYnVncyBpbiB0aGUgSE1NIHN1YnN5c3RlbSBhbmQgdGhlIHRlc3QgbW9kdWxlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU2NjgxOTVmZThlOWE3MmY5YTNiMzRjYmI4ZDhmZGRlNjMyYWQ0MjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAyMzo1MzozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9saWIvdGVzdF9obW0uYyBiL2xpYi90ZXN0X2htbS5jXG5pbmRleCA5YzU5ZDFjZWI1YjU3ZC4uYzRhZGJmOThmYWM3OTAgMTAwNjQ0XG4tLS0gYS9saWIvdGVzdF9obW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RfaG1tLmNcbkBAIC01ODEsNyAmIzQzOzU4MSw3IEBAIHN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXG4gXHRcdGRldm1lbS1cdTAwM2VwYWdlbWFwLnR5cGUgPSBNRU1PUllfREVWSUNFX1BSSVZBVEU7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBITU1fRE1JUlJPUl9NRU1PUllfREVWSUNFX0NPSEVSRU5UOlxuLVx0XHRkZXZtZW0tXHUwMDNlcGFnZW1hcC5yYW5nZS5zdGFydCA9IChNSU5PUihtZGV2aWNlLVx1MDAzZWNkZXZpY2UuZGV2KSAtIDIpID9cbiYjNDM7XHRcdGRldm1lbS1cdTAwM2VwYWdlbWFwLnJhbmdlLnN0YXJ0ID0gKE1JTk9SKG1kZXZpY2UtXHUwMDNlZGV2aWNlLmRldnQpIC0gMikgP1xuIFx0XHRcdFx0XHRcdFx0c3BtX2FkZHJfZGV2MCA6XG4gXHRcdFx0XHRcdFx0XHRzcG1fYWRkcl9kZXYxO1xuIFx0XHRkZXZtZW0tXHUwMDNlcGFnZW1hcC5yYW5nZS5lbmQgPSBkZXZtZW0tXHUwMDNlcGFnZW1hcC5yYW5nZS5zdGFydCAmIzQzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayYjMzQ7LAogICAgJiMzNDtkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGwmIzM0OywKICAgICYjMzQ7ZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSE1NIHRlc3QgbW9kdWxlJiMzOTtzIGRldmljZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYy4gRnV6emluZyB0aGUgdGVzdCBtb2R1bGUmIzM5O3MgaW9jdGwgaW50ZXJmYWNlIGNhbiBoZWxwIHVuY292ZXIgYnVncyBpbiB0aGUgSE1NIHN1YnN5c3RlbSBhbmQgdGhlIHRlc3QgbW9kdWxlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTY2ODE5NWZlOGU5YTcyZjlhM2IzNGNiYjhkOGZkZGU2MzJhZDQyNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDI5IDIzOjUzOjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RfaG1tLmMgYi9saWIvdGVzdF9obW0uYwppbmRleCA5YzU5ZDFjZWI1YjU3ZC4uYzRhZGJmOThmYWM3OTAgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0X2htbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0X2htbS5jCkBAIC01ODEsNyAmIzQzOzU4MSw3IEBAIHN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsCiAJCWRldm1lbS0mZ3Q7cGFnZW1hcC50eXBlID0gTUVNT1JZX0RFVklDRV9QUklWQVRFOwogCQlicmVhazsKIAljYXNlIEhNTV9ETUlSUk9SX01FTU9SWV9ERVZJQ0VfQ09IRVJFTlQ6Ci0JCWRldm1lbS0mZ3Q7cGFnZW1hcC5yYW5nZS5zdGFydCA9IChNSU5PUihtZGV2aWNlLSZndDtjZGV2aWNlLmRldikgLSAyKSA/CiYjNDM7CQlkZXZtZW0tJmd0O3BhZ2VtYXAucmFuZ2Uuc3RhcnQgPSAoTUlOT1IobWRldmljZS0mZ3Q7ZGV2aWNlLmRldnQpIC0gMikgPwogCQkJCQkJCXNwbV9hZGRyX2RldjAgOgogCQkJCQkJCXNwbV9hZGRyX2RldjE7CiAJCWRldm1lbS0mZ3Q7cGFnZW1hcC5yYW5nZS5lbmQgPSBkZXZtZW0tJmd0O3BhZ2VtYXAucmFuZ2Uuc3RhcnQgJiM0MzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byBgbGliL3Rlc3RfaG1tLmNgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc2VlbXMgdG8gYmUgY2hhbmdpbmcgaG93IGRldmljZSBtaW5vciBudW1iZXJzIGFyZSBhY2Nlc3NlZCBpbiBgbGliL3Rlc3RfaG1tLmNgLiBJdCYjMzk7cyBzd2l0Y2hpbmcgZnJvbSBgTUlOT1IobWRldmljZS0mZ3Q7Y2RldmljZS5kZXYpYCB0byBgTUlOT1IobWRldmljZS0mZ3Q7ZGV2aWNlLmRldnQpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1doeSB0aGUgY2hhbmdlPyYjMzQ7LiBMZXQmIzM5O3MgZmlndXJlIG91dCB3aGF0IGBtZGV2aWNlYCByZXByZXNlbnRzIGluIHRoaXMgY29udGV4dC4gQW5kIG1vcmUgaW1wb3J0YW50bHksIHdoYXQgZXhhY3RseSBpcyBgZGV2aWNlLmRldnRgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkIGhlcmUuCgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSBpdHNlbGYuIExldCYjMzk7cyBzZWUgaWYgSSBjYW4gdW5kZXJzdGFuZCBgbWRldmljZWAgYW5kIGBkZXZpY2UuZGV2dGAgY29udGV4dHVhbGx5IHdpdGhpbiB0aGUgZmlsZS4gSSB3aWxsIHVzZSBgZ3JlcHBlcmAgdG8gc2VlIHdoZXJlIGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCBpcyBpbiB0aGF0IGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bmN0aW9uIHdoZXJlIHRoaXMgY2hhbmdlIGlzIG9jY3VycmluZy4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGFkanVzdG1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jPTUxNz1zdGF0aWMgaW50IGRtaXJyb3Jfd3JpdGUoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsIHN0cnVjdCBobW1fZG1pcnJvcl9jbWQgKmNtZClcbi0tXG5saWIvdGVzdF9obW0uYy01NTctXG5saWIvdGVzdF9obW0uYzo1NTg6c3RhdGljIGludCBkbWlycm9yX2FsbG9jYXRlX2NodW5rKHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSxcbmxpYi90ZXN0X2htbS5jLTU1OS1cdFx0XHRcdCAgc3RydWN0IHBhZ2UgKipwcGFnZSwgYm9vbCBpc19sYXJnZSlcbi0tXG5saWIvdGVzdF9obW0uYz02OTA9c3RhdGljIHN0cnVjdCBwYWdlICpkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxuLS1cbmxpYi90ZXN0X2htbS5jLTcyMi1cdFx0c3Bpbl91bmxvY2soXHUwMDI2bWRldmljZS1cdTAwM2Vsb2NrKTtcbmxpYi90ZXN0X2htbS5jOjcyMzpcdFx0aWYgKGRtaXJyb3JfYWxsb2NhdGVfY2h1bmsobWRldmljZSwgXHUwMDI2ZHBhZ2UsIGlzX2xhcmdlKSlcbmxpYi90ZXN0X2htbS5jLTcyNC1cdFx0XHRnb3RvIGVycm9yO1xuLS1cbmxpYi90ZXN0X2htbS5jPTE3Nzk9c3RhdGljIGludCBkbWlycm9yX2RldmljZV9pbml0KHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSwgaW50IGlkKVxuLS1cbmxpYi90ZXN0X2htbS5jLTE3OTktXHQvKiBCdWlsZCBhIGxpc3Qgb2YgZnJlZSBaT05FX0RFVklDRSBzdHJ1Y3QgcGFnZXMgKi9cbmxpYi90ZXN0X2htbS5jOjE4MDA6XHRyZXQgPSBkbWlycm9yX2FsbG9jYXRlX2NodW5rKG1kZXZpY2UsIE5VTEwsIGZhbHNlKTtcbmxpYi90ZXN0X2htbS5jLTE4MDEtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTUKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2UqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIHNpdHRpbmcgaW4gYGxpYi90ZXN0X2htbS5jYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dCBvZiB0aGlzIGZpbGUg4oCTIHdoYXQgY29uZmlnIG9wdGlvbnMgYWN0dWFsbHkgYnJpbmcgdGhpcyBjb2RlIGludG8gdGhlIGJ1aWxkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBiYWNrIHRocm91Z2ggdGhlIGNvbmZpZyBzeXN0ZW0gdG8gc2VlIHdoYXQgZmxhZ3Mgb3Igc2V0dGluZ3MgdHJpZ2dlciB0aGUgaW5jbHVzaW9uIG9mIGB0ZXN0X2htbS5jYC4gVGhpcyBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGludGVuZGVkIHVzZSBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZXN0X2htbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvTWFrZWZpbGU9MTAyPW9iai0kKENPTkZJR19URVNUX0xPQ0tVUCkgJiM0Mzs9IHRlc3RfbG9ja3VwLm9cbmxpYi9NYWtlZmlsZToxMDM6b2JqLSQoQ09ORklHX1RFU1RfSE1NKSAmIzQzOz0gdGVzdF9obW0ub1xubGliL01ha2VmaWxlLTEwNC1vYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSAmIzQzOz0gdGVzdF9mcmVlX3BhZ2VzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODUyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBkbWlycm9yIE1vZHVsZSoqCgpPa2F5LCBzbyB0aGUgY2hhbmdlIGlzIHJlbGF0ZWQgdG8gYENPTkZJR19URVNUX0hNTWAuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IGFuZCB3aGV0aGVyIHRoaXMgY2hhbmdlIGFmZmVjdHMgaXRzIHJlYWNoLiBMZXQmIzM5O3Mgc2VlLi4uIGl0IGxvb2tzIGxpa2UgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgIGlzIGNhbGxlZCBmcm9tIGBkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlYCBhbmQgYGRtaXJyb3JfZGV2aWNlX2luaXRgLiBOb3csIGBkbWlycm9yX2RldmljZV9pbml0YC4uLiB0aGF0JiMzOTtzIHByb2JhYmx5IGNhbGxlZCBlYXJseSBvbiwgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbiBvciB3aGVuIHRoZSBkZXZpY2UgaXMgY3JlYXRlZCwgeWVhaCwgdGhhdCYjMzk7cyB3aGF0IEkgd291bGQgYXNzdW1lIGluIHRoaXMgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZSB3aXRoaW4gYGRtaXJyb3JfZGV2aWNlX2luaXRgIHNwZWNpZmljYWxseS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG1pcnJvcl9kZXZpY2VfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jPTE3NzI9c3RhdGljIHZvaWQgZG1pcnJvcl9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxubGliL3Rlc3RfaG1tLmMtMTc3OC1cbmxpYi90ZXN0X2htbS5jOjE3Nzk6c3RhdGljIGludCBkbWlycm9yX2RldmljZV9pbml0KHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSwgaW50IGlkKVxubGliL3Rlc3RfaG1tLmMtMTc4MC17XG4tLVxubGliL3Rlc3RfaG1tLmM9MTgyMT1zdGF0aWMgaW50IF9faW5pdCBobW1fZG1pcnJvcl9pbml0KHZvaWQpXG4tLVxubGliL3Rlc3RfaG1tLmMtMTg0My1cdGZvciAoaWQgPSAwOyBpZCBcdTAwM2MgbmRldmljZXM7IGlkJiM0MzsmIzQzOykge1xubGliL3Rlc3RfaG1tLmM6MTg0NDpcdFx0cmV0ID0gZG1pcnJvcl9kZXZpY2VfaW5pdChkbWlycm9yX2RldmljZXMgJiM0MzsgaWQsIGlkKTtcbmxpYi90ZXN0X2htbS5jLTE4NDUtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM2NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGRtaXJyb3IgTW9kdWxlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBgZG1pcnJvcl9kZXZpY2VfaW5pdGAgZnVuY3Rpb24gaXMgaW5pdGlhbGl6ZWQgYXMgcGFydCBvZiB0aGUgYGhtbV9kbWlycm9yX2luaXRgIG1vZHVsZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIFRoZSByZWNlbnQgcGF0Y2ggdG91Y2hlcyBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AsIHdoaWNoIGZlZWxzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIElzIHRoZXJlIGFueSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHRoYXQgc3RhbmRzIG91dCBhcyBhIGhpZ2gtdmFsdWUgZnV6emluZyB0YXJnZXQgd2l0aGluIHRoaXMgY29kZT8gSG1tLCBsZXQmIzM5O3Mgc2VlLiBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AgaXMgY2FsbGVkIGJ5IGBkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlYC4gQW5kIGlzIHRoYXQgZnVuY3Rpb24gY2FsbGVkIGJ5IGBkbWlycm9yX2RvX2ZhdWx0YCBvciBhIHNpbWlsYXIgZmF1bHQtaGFuZGxpbmcgcGF0aD8gTXkgZm9jdXMgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBJJiMzOTtsbCBjaGVjayBgZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZWAgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmMtNDEtICogRm9yIGRldmljZV9wcml2YXRlIHBhZ2VzLCBkcGFnZSBpcyBqdXN0IGEgZHVtbXkgc3RydWN0IHBhZ2VcbmxpYi90ZXN0X2htbS5jOjQyOiAqIHJlcHJlc2VudGluZyBhIHBpZWNlIG9mIGRldmljZSBtZW1vcnkuIGRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2VcbmxpYi90ZXN0X2htbS5jLTQzLSAqIGFsbG9jYXRlcyBhIHJlYWwgc3lzdGVtIG1lbW9yeSBwYWdlIGFzIGJhY2tpbmcgc3RvcmFnZSB0byBmYWtlIGFcbi0tXG5saWIvdGVzdF9obW0uYz01NTg9c3RhdGljIGludCBkbWlycm9yX2FsbG9jYXRlX2NodW5rKHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSxcbi0tXG5saWIvdGVzdF9obW0uYy02ODktXG5saWIvdGVzdF9obW0uYzo2OTA6c3RhdGljIHN0cnVjdCBwYWdlICpkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxubGliL3Rlc3RfaG1tLmMtNjkxLVx0XHRcdFx0XHQgICAgICBib29sIGlzX2xhcmdlKVxuLS1cbmxpYi90ZXN0X2htbS5jPTczOT1zdGF0aWMgdm9pZCBkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHkoc3RydWN0IG1pZ3JhdGVfdm1hICphcmdzLFxuLS1cbmxpYi90ZXN0X2htbS5jLTc3MC1cdFx0fSBlbHNlXG5saWIvdGVzdF9obW0uYzo3NzE6XHRcdFx0ZHBhZ2UgPSBkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlKGRtaXJyb3IsIGlzX2xhcmdlKTtcbmxpYi90ZXN0X2htbS5jLTc3Mi1cbi0tXG5saWIvdGVzdF9obW0uYy03ODktXHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnIgXHUwMDI2XHUwMDI2IGFkZHIgXHUwMDNjIGFyZ3MtXHUwMDNlZW5kOyBpJiM0MzsmIzQzOykge1xubGliL3Rlc3RfaG1tLmM6NzkwOlx0XHRcdFx0ZHBhZ2UgPSBkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlKGRtaXJyb3IsIGZhbHNlKTtcbmxpYi90ZXN0X2htbS5jLTc5MS1cdFx0XHRcdHJwYWdlID0gQkFDS0lOR19QQUdFKGRwYWdlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEYXRhIE1pZ3JhdGlvbiBGdW5jdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHlgLiAgVGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGFuZCBjb3B5aW5nIGRhdGEgZHVyaW5nIGEgbWlycm9yIG1pZ3JhdGlvbiwgY2xlYXJseSBhIGNyaXRpY2FsIHBpZWNlLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBjaGFpbi4gS25vd2luZyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgd2lsbCBwcm92aWRlIHZpdGFsIGNvbnRleHQuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50IGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB3aHkgdGhpcyByb3V0aW5lIGlzIGNhbGxlZC4gSSBuZWVkIHRvIGtub3cgdGhlIG9yaWdpbi4gTGV0JiMzOTtzIHNlZSB3aGVyZSBgZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5YCBpcyBhY3R1YWxseSAqY2FsbGVkKiBmcm9tLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmM9NjkwPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy03MzgtXG5saWIvdGVzdF9obW0uYzo3Mzk6c3RhdGljIHZvaWQgZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5KHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyxcbmxpYi90ZXN0X2htbS5jLTc0MC1cdFx0XHRcdFx0ICAgc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IpXG4tLVxubGliL3Rlc3RfaG1tLmM9MTE4OT1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG4tLVxubGliL3Rlc3RfaG1tLmMtMTI0Ny1cdFx0cHJfZGVidWcoXCYjMzQ7TWlncmF0aW5nIGZyb20gc3lzIG1lbSB0byBkZXZpY2UgbWVtXFxuXCYjMzQ7KTtcbmxpYi90ZXN0X2htbS5jOjEyNDg6XHRcdGRtaXJyb3JfbWlncmF0ZV9hbGxvY19hbmRfY29weShcdTAwMjZhcmdzLCBkbWlycm9yKTtcbmxpYi90ZXN0X2htbS5jLTEyNDktXHRcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNmFyZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVHJhY2luZyB0aGUgT3JpZ2luIG9mIGBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlYCoqCgpPa2F5LCBzbyB0aGUgcHJvbXB0IGRpcmVjdHMgbWUgdG8gZmlndXJlIG91dCB3aGVyZSBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAgaXMgYmVpbmcgY2FsbGVkIGZyb20uIFRoYXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIG9yIGNvZGUgYW5hbHlzaXMgdGFzay4gTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBzY2VuYXJpb3MgYW5kIGFwcHJvYWNoZXMuCgpGaXJzdCwgSSBuZWVkIHRvIGtub3cgd2hlcmUgSSBjYW4gZmluZCB0aGUgY29kZS4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBkZWZpbmVkPyBJcyBpdCBpbiBhIHdlbGwta25vd24gbGlicmFyeSwgYSBwcm9qZWN0LXNwZWNpZmljIG1vZHVsZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEtub3dpbmcgdGhhdCBjb250ZXh0IHdpbGwgZ3VpZGUgbXkgYXBwcm9hY2guIElzIHRoaXMgYSBsb2NhbCBjb2RlYmFzZT8gSWYgc28sIGlzIHRoZXJlIGEgcHJvamVjdCYjMzk7cyBJREU/CgpOZXh0LCBJJiMzOTtsbCBjb25zaWRlciBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHByYWN0aWNhbGx5LiBJZiBJIGhhdmUgYWNjZXNzIHRvIHRoZSBjb2RlLCBJJiMzOTtkIHByb2JhYmx5IHVzZSBhIGNvbWJpbmF0aW9uIG9mIGdyZXAgb3IgYGZpbmRgIHdpdGggYGdyZXBgLCBvciBteSBJREUmIzM5O3Mgc2VhcmNoIGZ1bmN0aW9uIHRvIHBlcmZvcm0gYSBjb2RlIHNlYXJjaCBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUuIEkmIzM5O2QgbG9vayBmb3IgaXRzIGRlZmluaXRpb24gYW5kIHRoZW4gdHJhY2UgYWxsIG9mIGl0cyB1c2FnZXMuIElmIGl0JiMzOTtzIGEgcGFydGljdWxhcmx5IGxhcmdlIGNvZGViYXNlLCBJIG1pZ2h0IGVtcGxveSBzb21lIHNvcGhpc3RpY2F0ZWQgc291cmNlIGNvZGUgbmF2aWdhdGlvbiB0b29scyBpZiB0aGV5IGV4aXN0LCBvciBldmVuIGNvbnNpZGVyIGJ1aWxkaW5nIGEgY2FsbCBncmFwaC4KCkkmIzM5O20gYXNzdW1pbmcgdGhpcyBpcyBhIGZ1bmN0aW9uIGNhbGwsIGFzIHRoZSBwcm9tcHQgc3BlY2lmaWVzIGEgZnVuY3Rpb24uIEJ1dCBJIG5lZWQgdG8gYmUgcHJlcGFyZWQgaW4gY2FzZSBpdCYjMzk7cyBhIG1hY3JvIG9yIHNvbWV0aGluZyBlbHNlLiBJJiMzOTtkIHRoZW4gaGF2ZSB0byB1bmRlcnN0YW5kIGhvdyB0byB0cmFjZSB0aGUgZXhwYW5zaW9uIG9mIG1hY3JvcyBkZXBlbmRpbmcgb24gdGhlIGxhbmd1YWdlIEkmIzM5O20gd29ya2luZyB3aXRoLgoKRXNzZW50aWFsbHksIEkgbmVlZCB0byBmaW5kIHRoZSBzcGVjaWZpYyBzb3VyY2UgY29kZSBsb2NhdGlvbihzKSB3aGVyZSBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAgaXMgaW52b2tlZC4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIHByb3ZpZGUgdGhlIGNvbnRleHQgSSYjMzk7bSBhZnRlci4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoZSBjYWxsLCB0aGUgZGF0YSBiZWluZyBwYXNzZWQsIGFuZCB0aGUgb3ZlcmFsbCBleGVjdXRpb24gcGF0aC4gVW5kZXJzdGFuZGluZyB0aGUgcGF0aCBpcyBpbXBvcnRhbnQsIHNpbmNlIEkgbWlnaHQgYmUgbG9va2luZyBmb3IgcmFjZSBjb25kaXRpb25zIG9yIGRhdGEgYW5vbWFsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmM9MTEyMD1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW0oc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG4tLVxubGliL3Rlc3RfaG1tLmMtMTE4OC1cbmxpYi90ZXN0X2htbS5jOjExODk6c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxubGliL3Rlc3RfaG1tLmMtMTE5MC1cdFx0XHRcdHN0cnVjdCBobW1fZG1pcnJvcl9jbWQgKmNtZClcbi0tXG5saWIvdGVzdF9obW0uYz0xNTEzPXN0YXRpYyBsb25nIGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5saWIvdGVzdF9obW0uYy0xNTQ2LVx0Y2FzZSBITU1fRE1JUlJPUl9NSUdSQVRFX1RPX0RFVjpcbmxpYi90ZXN0X2htbS5jOjE1NDc6XHRcdHJldCA9IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2UoZG1pcnJvciwgXHUwMDI2Y21kKTtcbmxpYi90ZXN0X2htbS5jLTE1NDgtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjAxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBCdWcgRml4IGluIGEgVGVzdCBNb2R1bGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIHByb2JsZW0gbGllcyBpbiB0aGUgaW5jb3JyZWN0IHVzZSBvZiBgTUlOT1IobWRldmljZS0mZ3Q7Y2RldmljZS5kZXYpYCBpbnN0ZWFkIG9mIGBNSU5PUihtZGV2aWNlLSZndDtkZXZpY2UuZGV2dClgLiBJdCYjMzk7cyBnZXR0aW5nIGNhbGxlZCB2aWEgYGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bGAsIHdoaWNoIG1lYW5zIHRoaXMgaXMgYmVpbmcgdHJpZ2dlcmVkIHRocm91Z2ggYSBjaGFyYWN0ZXIgZGV2aWNlIGV4cG9zZWQgYnkgdGhlIGB0ZXN0X2htbWAgbW9kdWxlLgoKU2luY2UgdGhpcyBpcyB3aXRoaW4gYSB0ZXN0IG1vZHVsZSwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgaWYgZnV6emluZyBpcyB3YXJyYW50ZWQuIENvbnNpZGVyaW5nIHRoaXMgYHRlc3RfaG1tYCBtb2R1bGUgYWN0aXZlbHkgZXhlcmNpc2VzIHRoZSBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpIHN1YnN5c3RlbSwgdGhlIGFuc3dlciBpcyBhIGRlZmluaXRpdmUgeWVzLiBCdWdzIGZvdW5kIGhlcmUgY291bGQgcG9pbnQgdG8gY3JpdGljYWwgZmxhd3Mgd2l0aGluIEhNTSBpdHNlbGYsIG5vdCBqdXN0IHRoZSB0ZXN0IGNvZGUuIFRoZXJlZm9yZSwgZW5hYmxpbmcgYFRFU1RfSE1NYCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgaW52ZXN0aWdhdGlvbi4KCkdpdmVuIHRoZSBjb2RlIGluIHF1ZXN0aW9uLCBJIHNob3VsZCBmb2N1cyBteSBhbmFseXNpcyBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYCwgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBhbmQgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgVEVTVF9ITU1gIGlzIHRoZSBvbmx5IGNvbmZpZyB0aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBURVNUX0hNTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTMzMTg9Y29uZmlnIFRFU1RfTUVNSU5JVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTMzMjUtXG5saWIvS2NvbmZpZy5kZWJ1ZzozMzI2OmNvbmZpZyBURVNUX0hNTVxubGliL0tjb25maWcuZGVidWctMzMyNy1cdHRyaXN0YXRlIFwmIzM0O1Rlc3QgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Nzk3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgRGVwZW5kZW5jeSBDaGVjayoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIHN1cnJvdW5kaW5nIGBURVNUX0hNTWAuIEJlZm9yZSBJIGNhbiBldmVuIHRoaW5rIGFib3V0IG1vZGlmeWluZywgZGVidWdnaW5nLCBvciBpbnRlZ3JhdGluZyBpdCwgSSBuZWVkIGEgcm9jay1zb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBkZXBlbmRlbmNpZXMuIFRoaXMgbWVhbnMgbm90IGp1c3QgdGhlIGltbWVkaWF0ZSBpbXBvcnRzIG9yIGV4dGVybmFsIGxpYnJhcmllcywgYnV0IGFsc28gdGhlIHZlcnNpb25zLCBwb3RlbnRpYWwgY29uZmxpY3RzLCBhbmQsIGZyYW5rbHksIHRoZSBoaWRkZW4gYXNzdW1wdGlvbnMgYmFrZWQgaW50byB0aG9zZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGRlcGVuZGVuY2llcywgdGhlIHNjb3BlIHRoZXkgYXBwbHkgdG8sIGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuIFRoZSBkb2N1bWVudGF0aW9uIG1heSBiZSB1c2VmdWwsIGJ1dCBleHBlcmllbmNlIHRlbGxzIG1lIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTttIHRoaW5raW5nIG9mIGNoZWNraW5nIHBhY2thZ2UgbWFuYWdlcnMsIGV4YW1pbmluZyBidWlsZCBzY3JpcHRzLCBhbmQgbWF5YmUgZXZlbiBncmVwcGluZyB0aGUgY29kZWJhc2UgZm9yIHN1YnRsZSBpbnRlcmFjdGlvbnMuIEl0JiMzOTtzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1ZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzMjYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzMyNjpcdGNvbmZpZyBURVNUX0hNTVxuMzMyNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXCYjMzQ7XG4zMzI4Olx0XHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG4zMzI5Olx0XHRkZXBlbmRzIG9uIERFVklDRV9QUklWQVRFXG4zMzMwOlx0XHRzZWxlY3QgSE1NX01JUlJPUlxuMzMzMTpcdFx0c2VsZWN0IE1NVV9OT1RJRklFUlxuMzMzMjpcdFx0aGVscFxuMzMzMzpcdFx0ICBUaGlzIGlzIGEgcHNldWRvIGRldmljZSBkcml2ZXIgc29sZWx5IGZvciB0ZXN0aW5nIEhNTS5cbjMzMzQ6XHRcdCAgU2F5IE0gaGVyZSBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUgSE1NIHRlc3QgbW9kdWxlLlxuMzMzNTpcdFx0ICBEb2luZyBzbyB3aWxsIGFsbG93IHlvdSB0byBydW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdC92bS9obW0tdGVzdHMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIEtleSBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzIGxhYmVsZWQgYFRFU1RfSE1NYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYCwgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBhbmQgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgZml0IHRvZ2V0aGVyLCB3aGljaCBvbmUgaXMgY2F1c2luZyB0aGUgcHJvYmxlbS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhlIGZpcnN0IG9uZSwgYGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bGAuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIG5hbWUgaXRzZWxmIGlzIGNvcnJlY3QsIHRoYXQgaXQmIzM5O3Mgd2hhdCBJIHRoaW5rIGl0IGlzLiBJJiMzOTtsbCBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0cyBmdW5jdGlvbiBhbmQgcHVycG9zZSBhcmUgd2hhdCYjMzk7cyBkb2N1bWVudGVkIGFuZCBleHBlY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3Rlc3RfaG1tLmM9MTQ4MT1zdGF0aWMgdm9pZCBkbWlycm9yX2RldmljZV9yZW1vdmVfY2h1bmtzKHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSlcbi0tXG5saWIvdGVzdF9obW0uYy0xNTEyLVxubGliL3Rlc3RfaG1tLmM6MTUxMzpzdGF0aWMgbG9uZyBkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG5saWIvdGVzdF9obW0uYy0xNTE0LVx0XHRcdFx0XHR1bnNpZ25lZCBpbnQgY29tbWFuZCxcbi0tXG5saWIvdGVzdF9obW0uYz0xNjExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRtaXJyb3JfZm9wcyA9IHtcbi0tXG5saWIvdGVzdF9obW0uYy0xNjE0LVx0Lm1tYXBcdFx0PSBkbWlycm9yX2ZvcHNfbW1hcCxcbmxpYi90ZXN0X2htbS5jOjE2MTU6XHQudW5sb2NrZWRfaW9jdGwgPSBkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGwsXG5saWIvdGVzdF9obW0uYy0xNjE2LVx0Lmxsc2Vla1x0XHQ9IGRlZmF1bHRfbGxzZWVrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njk3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW50ZXJuYWwgVmVyaWZpY2F0aW9uIG9mIEZ1bmN0aW9uIE5hbWUqKgoKUmlnaHQsIHRoYXQgc2VlbXMgdG8gYmUgdGhlIGNhc2UuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBmdXJ0aGVyIGFuYWx5c2lzIG9yIGRlYnVnZ2luZywgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgZnVuY3Rpb24gbmFtZSwgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgLCBhY2N1cmF0ZWx5IHJlZmxlY3RzIGl0cyBpbnRlbmRlZCBwdXJwb3NlLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGVuc3VyZSB0aGF0IG5hbWluZyBjb252ZW50aW9ucyBhbGlnbiB3aXRoIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkuIEEgZGlzY3JlcGFuY3kgaGVyZSBjb3VsZCBwb2ludCB0byBhIG1pc2ludGVycHJldGF0aW9uIG9mIHRoZSBjb2RlJiMzOTtzIHJvbGUgb3IsIHdvcnNlLCBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgZXJyb3JzIGRvd24gdGhlIGxpbmUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgbmFtZSBpcyBub3QganVzdCBhIGNvbnZlbmllbnQgcGxhY2Vob2xkZXIgYnV0IGEgcHJlY2lzZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoaXMgZnVuY3Rpb24gKmFjdHVhbGx5KiBkb2VzLiBUaW1lIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyBhbmQgYXZvaWQgYSBmdXR1cmUgcmFiYml0IGhvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtaXJyb3JfYWxsb2NhdGVfY2h1bmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYz01MTc9c3RhdGljIGludCBkbWlycm9yX3dyaXRlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLCBzdHJ1Y3QgaG1tX2RtaXJyb3JfY21kICpjbWQpXG4tLVxubGliL3Rlc3RfaG1tLmMtNTU3LVxubGliL3Rlc3RfaG1tLmM6NTU4OnN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXG5saWIvdGVzdF9obW0uYy01NTktXHRcdFx0XHQgIHN0cnVjdCBwYWdlICoqcHBhZ2UsIGJvb2wgaXNfbGFyZ2UpXG4tLVxubGliL3Rlc3RfaG1tLmM9NjkwPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy03MjItXHRcdHNwaW5fdW5sb2NrKFx1MDAyNm1kZXZpY2UtXHUwMDNlbG9jayk7XG5saWIvdGVzdF9obW0uYzo3MjM6XHRcdGlmIChkbWlycm9yX2FsbG9jYXRlX2NodW5rKG1kZXZpY2UsIFx1MDAyNmRwYWdlLCBpc19sYXJnZSkpXG5saWIvdGVzdF9obW0uYy03MjQtXHRcdFx0Z290byBlcnJvcjtcbi0tXG5saWIvdGVzdF9obW0uYz0xNzc5PXN0YXRpYyBpbnQgZG1pcnJvcl9kZXZpY2VfaW5pdChzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsIGludCBpZClcbi0tXG5saWIvdGVzdF9obW0uYy0xNzk5LVx0LyogQnVpbGQgYSBsaXN0IG9mIGZyZWUgWk9ORV9ERVZJQ0Ugc3RydWN0IHBhZ2VzICovXG5saWIvdGVzdF9obW0uYzoxODAwOlx0cmV0ID0gZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhtZGV2aWNlLCBOVUxMLCBmYWxzZSk7XG5saWIvdGVzdF9obW0uYy0xODAxLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI2MAoJCQkJCQkJb3V0cHV0OiAxMTMKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgUGF0Y2gqKgoKT2theSwgeWVzLCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIuIEl0IGFkZHJlc3NlcyBhIHNwZWNpZmljIGJ1ZyBpbiB0aGUgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgIGZ1bmN0aW9uLCBhIGNyaXRpY2FsIGVsZW1lbnQgb2YgdGhlIGRldmljZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgdGVzdCBtb2R1bGUuIFRoZSByb290IGNhdXNlIGlzIGEgbWlub3IgZXJyb3Ig4oCTIHVzaW5nIHRoZSBpbmNvcnJlY3QgZGV2aWNlIG51bWJlciBtYWNybyDigJMgYnV0IGl0IGNvdWxkIGxlYWQgdG8gc2lnbmlmaWNhbnQgcHJvYmxlbXMuIFNwZWNpZmljYWxseSwgdGhleSB3ZXJlIHVzaW5nIGBNSU5PUihtZGV2aWNlLSZndDtjZGV2aWNlLmRldilgIHdoZW4gdGhleSBzaG91bGQgaGF2ZSBiZWVuIHVzaW5nIGBNSU5PUihtZGV2aWNlLSZndDtkZXZpY2UuZGV2dClgLiBUaGlzIGlzIGNsZWFybHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBjb3JyZWN0aW9uIG9mIHVuZGVybHlpbmcgY29kZSBsb2dpYy4KClRoZXJlZm9yZSwgc2luY2UgdGhpcyBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiB0aGUgSE1NIHRlc3QgbW9kdWxlLCBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gVGhpcyBpcyBhIGNsZWFyIGluZGljYXRpb24gdGhhdCB3ZSBuZWVkIHRvIHRocm93IHNvbWUgZnV6emluZyBhdCBpdC4gSXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIHVuY292ZXJpbmcgc3VidGxlIG1lbW9yeS1yZWxhdGVkIGZsYXdzIHRoYXQgbWlnaHQgYmUgbWlzc2VkIGR1cmluZyBzdGFuZGFyZCB0ZXN0aW5nLgoKQmFzZWQgb24gdGhlIG5hdHVyZSBvZiB0aGUgZml4LCBJIHdpbGwgZW5hYmxlIHRoZSBgVEVTVF9ITU1gIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGR1cmluZyBmdXp6aW5nLCBvYnZpb3VzbHkuIFRoZSBmdXp6aW5nIHNob3VsZCBiZSBmb2N1c2VkIG9uIHRocmVlIGtleSBzeW1ib2xzOiBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AsIHNpbmNlIGl0JiMzOTtzIHRoZSBwb2ludCBvZiB0aGUgZml4LCBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYCB3aGljaCBpcyB0aGUgZW50cnkgcG9pbnQsIGFuZCBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAsIGluIGNhc2UgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGFsbG9jYXRpb24gYW5kIGJ1Zy4gVGhpcyB3aWxsIGhlbHAgdXMgdG8gdGhvcm91Z2hseSBldmFsdWF0ZSB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIGFuZCB1bmNvdmVyIGFueSByZW1haW5pbmcgdnVsbmVyYWJpbGl0aWVzIGluIGJvdGggdGhlIEhNTSBzdWJzeXN0ZW0gYW5kIHRoZSB0ZXN0IG1vZHVsZSBpdHNlbGYuIFRoaXMgaXMgYW4gaW1wb3J0YW50IHN0ZXAgdG8gZW5zdXJlIHRoZSBpbnRlZ3JpdHkgYW5kIHJvYnVzdG5lc3Mgb2YgdGhlIEhNTSBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayYjMzQ7LAogICAgJiMzNDtkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGwmIzM0OywKICAgICYjMzQ7ZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSE1NIHRlc3QgbW9kdWxlJiMzOTtzIGRldmljZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYy4gRnV6emluZyB0aGUgdGVzdCBtb2R1bGUmIzM5O3MgaW9jdGwgaW50ZXJmYWNlIGNhbiBoZWxwIHVuY292ZXIgYnVncyBpbiB0aGUgSE1NIHN1YnN5c3RlbSBhbmQgdGhlIHRlc3QgbW9kdWxlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VEVTVF9ITU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkbWlycm9yX2FsbG9jYXRlX2NodW5rJiMzNDssCiAgICAmIzM0O2RtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBITU0gdGVzdCBtb2R1bGUmIzM5O3MgZGV2aWNlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljLiBGdXp6aW5nIHRoZSB0ZXN0IG1vZHVsZSYjMzk7cyBpb2N0bCBpbnRlcmZhY2UgY2FuIGhlbHAgdW5jb3ZlciBidWdzIGluIHRoZSBITU0gc3Vic3lzdGVtIGFuZCB0aGUgdGVzdCBtb2R1bGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6MzcuMTA3NTU5MzY5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg5ODMwODY1NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkbWlycm9yX2FsbG9jYXRlX2NodW5rXCIsXG4gICAgXCJkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGxcIixcbiAgICBcImRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSE1NIHRlc3QgbW9kdWxlJ3MgZGV2aWNlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljLiBGdXp6aW5nIHRoZSB0ZXN0IG1vZHVsZSdzIGlvY3RsIGludGVyZmFjZSBjYW4gaGVscCB1bmNvdmVyIGJ1Z3MgaW4gdGhlIEhNTSBzdWJzeXN0ZW0gYW5kIHRoZSB0ZXN0IG1vZHVsZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjM3LjEwNzU2MzQ4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc2MDA2NjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTY2ODE5NWZlOGU5YTcyZjlhM2IzNGNiYjhkOGZkZGU2MzJhZDQyNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyOSAyMzo1MzozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9saWIvdGVzdF9obW0uYyBiL2xpYi90ZXN0X2htbS5jXFxuaW5kZXggOWM1OWQxY2ViNWI1N2QuLmM0YWRiZjk4ZmFjNzkwIDEwMDY0NFxcbi0tLSBhL2xpYi90ZXN0X2htbS5jXFxuKysrIGIvbGliL3Rlc3RfaG1tLmNcXG5AQCAtNTgxLDcgKzU4MSw3IEBAIHN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXFxuIFxcdFxcdGRldm1lbS1cXHUwMDNlcGFnZW1hcC50eXBlID0gTUVNT1JZX0RFVklDRV9QUklWQVRFO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBITU1fRE1JUlJPUl9NRU1PUllfREVWSUNFX0NPSEVSRU5UOlxcbi1cXHRcXHRkZXZtZW0tXFx1MDAzZXBhZ2VtYXAucmFuZ2Uuc3RhcnQgPSAoTUlOT1IobWRldmljZS1cXHUwMDNlY2RldmljZS5kZXYpIC0gMikgP1xcbitcXHRcXHRkZXZtZW0tXFx1MDAzZXBhZ2VtYXAucmFuZ2Uuc3RhcnQgPSAoTUlOT1IobWRldmljZS1cXHUwMDNlZGV2aWNlLmRldnQpIC0gMikgP1xcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRzcG1fYWRkcl9kZXYwIDpcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0c3BtX2FkZHJfZGV2MTtcXG4gXFx0XFx0ZGV2bWVtLVxcdTAwM2VwYWdlbWFwLnJhbmdlLmVuZCA9IGRldm1lbS1cXHUwMDNlcGFnZW1hcC5yYW5nZS5zdGFydCArXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjM3LjQ4NDEwNjU5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2MDY1MzIxMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkbWlycm9yX2FsbG9jYXRlX2NodW5rXCIsXG4gICAgXCJkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGxcIixcbiAgICBcImRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSE1NIHRlc3QgbW9kdWxlJ3MgZGV2aWNlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljLiBGdXp6aW5nIHRoZSB0ZXN0IG1vZHVsZSdzIGlvY3RsIGludGVyZmFjZSBjYW4gaGVscCB1bmNvdmVyIGJ1Z3MgaW4gdGhlIEhNTSBzdWJzeXN0ZW0gYW5kIHRoZSB0ZXN0IG1vZHVsZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTY2ODE5NWZlOGU5YTcyZjlhM2IzNGNiYjhkOGZkZGU2MzJhZDQyNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDIzOjUzOjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RfaG1tLmMgYi9saWIvdGVzdF9obW0uY1xuaW5kZXggOWM1OWQxY2ViNWI1N2QuLmM0YWRiZjk4ZmFjNzkwIDEwMDY0NFxuLS0tIGEvbGliL3Rlc3RfaG1tLmNcbisrKyBiL2xpYi90ZXN0X2htbS5jXG5AQCAtNTgxLDcgKzU4MSw3IEBAIHN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXG4gXHRcdGRldm1lbS1cdTAwM2VwYWdlbWFwLnR5cGUgPSBNRU1PUllfREVWSUNFX1BSSVZBVEU7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBITU1fRE1JUlJPUl9NRU1PUllfREVWSUNFX0NPSEVSRU5UOlxuLVx0XHRkZXZtZW0tXHUwMDNlcGFnZW1hcC5yYW5nZS5zdGFydCA9IChNSU5PUihtZGV2aWNlLVx1MDAzZWNkZXZpY2UuZGV2KSAtIDIpID9cbitcdFx0ZGV2bWVtLVx1MDAzZXBhZ2VtYXAucmFuZ2Uuc3RhcnQgPSAoTUlOT1IobWRldmljZS1cdTAwM2VkZXZpY2UuZGV2dCkgLSAyKSA/XG4gXHRcdFx0XHRcdFx0XHRzcG1fYWRkcl9kZXYwIDpcbiBcdFx0XHRcdFx0XHRcdHNwbV9hZGRyX2RldjE7XG4gXHRcdGRldm1lbS1cdTAwM2VwYWdlbWFwLnJhbmdlLmVuZCA9IGRldm1lbS1cdTAwM2VwYWdlbWFwLnJhbmdlLnN0YXJ0ICtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjM3LjQ4NDEwODAwMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjMwMTkwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gYGxpYi90ZXN0X2htbS5jYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBzZWVtcyB0byBiZSBjaGFuZ2luZyBob3cgZGV2aWNlIG1pbm9yIG51bWJlcnMgYXJlIGFjY2Vzc2VkIGluIGBsaWIvdGVzdF9obW0uY2AuIEl0J3Mgc3dpdGNoaW5nIGZyb20gYE1JTk9SKG1kZXZpY2UtXHUwMDNlY2RldmljZS5kZXYpYCB0byBgTUlOT1IobWRldmljZS1cdTAwM2VkZXZpY2UuZGV2dClgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2h5IHRoZSBjaGFuZ2U/XCIuIExldCdzIGZpZ3VyZSBvdXQgd2hhdCBgbWRldmljZWAgcmVwcmVzZW50cyBpbiB0aGlzIGNvbnRleHQuIEFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGF0IGV4YWN0bHkgaXMgYGRldmljZS5kZXZ0YD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCBoZXJlLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hhdCdzIGdvaW5nIG9uLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLiBMZXQncyBzZWUgaWYgSSBjYW4gdW5kZXJzdGFuZCBgbWRldmljZWAgYW5kIGBkZXZpY2UuZGV2dGAgY29udGV4dHVhbGx5IHdpdGhpbiB0aGUgZmlsZS4gSSB3aWxsIHVzZSBgZ3JlcHBlcmAgdG8gc2VlIHdoZXJlIGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCBpcyBpbiB0aGF0IGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bmN0aW9uIHdoZXJlIHRoaXMgY2hhbmdlIGlzIG9jY3VycmluZy4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGFkanVzdG1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4ODQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1Mzo0MC45NDcxMjg1NDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzODQzNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1pcnJvcl9hbGxvY2F0ZV9jaHVua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvdGVzdF9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvdGVzdF9obW0uYz01MTc9c3RhdGljIGludCBkbWlycm9yX3dyaXRlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLCBzdHJ1Y3QgaG1tX2RtaXJyb3JfY21kICpjbWQpXFxuLS1cXG5saWIvdGVzdF9obW0uYy01NTctXFxubGliL3Rlc3RfaG1tLmM6NTU4OnN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXFxubGliL3Rlc3RfaG1tLmMtNTU5LVxcdFxcdFxcdFxcdCAgc3RydWN0IHBhZ2UgKipwcGFnZSwgYm9vbCBpc19sYXJnZSlcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTY5MD1zdGF0aWMgc3RydWN0IHBhZ2UgKmRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy03MjItXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNm1kZXZpY2UtXFx1MDAzZWxvY2spO1xcbmxpYi90ZXN0X2htbS5jOjcyMzpcXHRcXHRpZiAoZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhtZGV2aWNlLCBcXHUwMDI2ZHBhZ2UsIGlzX2xhcmdlKSlcXG5saWIvdGVzdF9obW0uYy03MjQtXFx0XFx0XFx0Z290byBlcnJvcjtcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTE3Nzk9c3RhdGljIGludCBkbWlycm9yX2RldmljZV9pbml0KHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSwgaW50IGlkKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTc5OS1cXHQvKiBCdWlsZCBhIGxpc3Qgb2YgZnJlZSBaT05FX0RFVklDRSBzdHJ1Y3QgcGFnZXMgKi9cXG5saWIvdGVzdF9obW0uYzoxODAwOlxcdHJldCA9IGRtaXJyb3JfYWxsb2NhdGVfY2h1bmsobWRldmljZSwgTlVMTCwgZmFsc2UpO1xcbmxpYi90ZXN0X2htbS5jLTE4MDEtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NDEuMDAwNTE3NjE2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU2NzUyNjE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIHNpdHRpbmcgaW4gYGxpYi90ZXN0X2htbS5jYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dCBvZiB0aGlzIGZpbGUg4oCTIHdoYXQgY29uZmlnIG9wdGlvbnMgYWN0dWFsbHkgYnJpbmcgdGhpcyBjb2RlIGludG8gdGhlIGJ1aWxkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gSSdsbCBuZWVkIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY29uZmlnIHN5c3RlbSB0byBzZWUgd2hhdCBmbGFncyBvciBzZXR0aW5ncyB0cmlnZ2VyIHRoZSBpbmNsdXNpb24gb2YgYHRlc3RfaG1tLmNgLiBUaGlzIGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW50ZW5kZWQgdXNlIG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTk1LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NDMuNTY4MDQ1NDQyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzQ0NjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRlc3RfaG1tXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImxpYi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvTWFrZWZpbGU9MTAyPW9iai0kKENPTkZJR19URVNUX0xPQ0tVUCkgKz0gdGVzdF9sb2NrdXAub1xcbmxpYi9NYWtlZmlsZToxMDM6b2JqLSQoQ09ORklHX1RFU1RfSE1NKSArPSB0ZXN0X2htbS5vXFxubGliL01ha2VmaWxlLTEwNC1vYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSArPSB0ZXN0X2ZyZWVfcGFnZXMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1Mzo0My42MTk3OTQwMTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTgzODAyNDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgZG1pcnJvciBNb2R1bGUqKlxuXG5Pa2F5LCBzbyB0aGUgY2hhbmdlIGlzIHJlbGF0ZWQgdG8gYENPTkZJR19URVNUX0hNTWAuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IGFuZCB3aGV0aGVyIHRoaXMgY2hhbmdlIGFmZmVjdHMgaXRzIHJlYWNoLiBMZXQncyBzZWUuLi4gaXQgbG9va3MgbGlrZSBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AgaXMgY2FsbGVkIGZyb20gYGRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2VgIGFuZCBgZG1pcnJvcl9kZXZpY2VfaW5pdGAuIE5vdywgYGRtaXJyb3JfZGV2aWNlX2luaXRgLi4uIHRoYXQncyBwcm9iYWJseSBjYWxsZWQgZWFybHkgb24sIGR1cmluZyBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3Igd2hlbiB0aGUgZGV2aWNlIGlzIGNyZWF0ZWQsIHllYWgsIHRoYXQncyB3aGF0IEkgd291bGQgYXNzdW1lIGluIHRoaXMgY29udGV4dC4gSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlIHdpdGhpbiBgZG1pcnJvcl9kZXZpY2VfaW5pdGAgc3BlY2lmaWNhbGx5LiBMZXQncyBzdGFydCBieSBjaGVja2luZyB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODUyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NDYuODAzNTk3ODk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMjIyNzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRtaXJyb3JfZGV2aWNlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL3Rlc3RfaG1tLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL3Rlc3RfaG1tLmM9MTc3Mj1zdGF0aWMgdm9pZCBkbWlycm9yX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE3NzgtXFxubGliL3Rlc3RfaG1tLmM6MTc3OTpzdGF0aWMgaW50IGRtaXJyb3JfZGV2aWNlX2luaXQoc3RydWN0IGRtaXJyb3JfZGV2aWNlICptZGV2aWNlLCBpbnQgaWQpXFxubGliL3Rlc3RfaG1tLmMtMTc4MC17XFxuLS1cXG5saWIvdGVzdF9obW0uYz0xODIxPXN0YXRpYyBpbnQgX19pbml0IGhtbV9kbWlycm9yX2luaXQodm9pZClcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE4NDMtXFx0Zm9yIChpZCA9IDA7IGlkIFxcdTAwM2MgbmRldmljZXM7IGlkKyspIHtcXG5saWIvdGVzdF9obW0uYzoxODQ0OlxcdFxcdHJldCA9IGRtaXJyb3JfZGV2aWNlX2luaXQoZG1pcnJvcl9kZXZpY2VzICsgaWQsIGlkKTtcXG5saWIvdGVzdF9obW0uYy0xODQ1LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjQ2Ljg1NjgyNDA5OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTIwMzEwMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBkbWlycm9yIE1vZHVsZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgZG1pcnJvcl9kZXZpY2VfaW5pdGAgZnVuY3Rpb24gaXMgaW5pdGlhbGl6ZWQgYXMgcGFydCBvZiB0aGUgYGhtbV9kbWlycm9yX2luaXRgIG1vZHVsZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIFRoZSByZWNlbnQgcGF0Y2ggdG91Y2hlcyBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AsIHdoaWNoIGZlZWxzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIElzIHRoZXJlIGFueSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHRoYXQgc3RhbmRzIG91dCBhcyBhIGhpZ2gtdmFsdWUgZnV6emluZyB0YXJnZXQgd2l0aGluIHRoaXMgY29kZT8gSG1tLCBsZXQncyBzZWUuIGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCBpcyBjYWxsZWQgYnkgYGRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2VgLiBBbmQgaXMgdGhhdCBmdW5jdGlvbiBjYWxsZWQgYnkgYGRtaXJyb3JfZG9fZmF1bHRgIG9yIGEgc2ltaWxhciBmYXVsdC1oYW5kbGluZyBwYXRoPyBNeSBmb2N1cyBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEknbGwgY2hlY2sgYGRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2VgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1Mzo0OS45Njg4NTc2ODFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDEwNDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL3Rlc3RfaG1tLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL3Rlc3RfaG1tLmMtNDEtICogRm9yIGRldmljZV9wcml2YXRlIHBhZ2VzLCBkcGFnZSBpcyBqdXN0IGEgZHVtbXkgc3RydWN0IHBhZ2VcXG5saWIvdGVzdF9obW0uYzo0MjogKiByZXByZXNlbnRpbmcgYSBwaWVjZSBvZiBkZXZpY2UgbWVtb3J5LiBkbWlycm9yX2Rldm1lbV9hbGxvY19wYWdlXFxubGliL3Rlc3RfaG1tLmMtNDMtICogYWxsb2NhdGVzIGEgcmVhbCBzeXN0ZW0gbWVtb3J5IHBhZ2UgYXMgYmFja2luZyBzdG9yYWdlIHRvIGZha2UgYVxcbi0tXFxubGliL3Rlc3RfaG1tLmM9NTU4PXN0YXRpYyBpbnQgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZpY2UgKm1kZXZpY2UsXFxuLS1cXG5saWIvdGVzdF9obW0uYy02ODktXFxubGliL3Rlc3RfaG1tLmM6NjkwOnN0YXRpYyBzdHJ1Y3QgcGFnZSAqZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG5saWIvdGVzdF9obW0uYy02OTEtXFx0XFx0XFx0XFx0XFx0ICAgICAgYm9vbCBpc19sYXJnZSlcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTczOT1zdGF0aWMgdm9pZCBkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHkoc3RydWN0IG1pZ3JhdGVfdm1hICphcmdzLFxcbi0tXFxubGliL3Rlc3RfaG1tLmMtNzcwLVxcdFxcdH0gZWxzZVxcbmxpYi90ZXN0X2htbS5jOjc3MTpcXHRcXHRcXHRkcGFnZSA9IGRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2UoZG1pcnJvciwgaXNfbGFyZ2UpO1xcbmxpYi90ZXN0X2htbS5jLTc3Mi1cXG4tLVxcbmxpYi90ZXN0X2htbS5jLTc4OS1cXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnIgXFx1MDAyNlxcdTAwMjYgYWRkciBcXHUwMDNjIGFyZ3MtXFx1MDAzZWVuZDsgaSsrKSB7XFxubGliL3Rlc3RfaG1tLmM6NzkwOlxcdFxcdFxcdFxcdGRwYWdlID0gZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZShkbWlycm9yLCBmYWxzZSk7XFxubGliL3Rlc3RfaG1tLmMtNzkxLVxcdFxcdFxcdFxcdHJwYWdlID0gQkFDS0lOR19QQUdFKGRwYWdlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NTAuMDIyMjc4NDM2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NDczMDc5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERhdGEgTWlncmF0aW9uIEZ1bmN0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHlgLiAgVGhhdCdzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWxsb2NhdGluZyBtZW1vcnkgYW5kIGNvcHlpbmcgZGF0YSBkdXJpbmcgYSBtaXJyb3IgbWlncmF0aW9uLCBjbGVhcmx5IGEgY3JpdGljYWwgcGllY2UuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIGl0cyBjYWxsIGNoYWluLiBLbm93aW5nIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCB3aWxsIHByb3ZpZGUgdml0YWwgY29udGV4dC4gS25vd2luZyB0aGUgZW50cnkgcG9pbnQgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoeSB0aGlzIHJvdXRpbmUgaXMgY2FsbGVkLiBJIG5lZWQgdG8ga25vdyB0aGUgb3JpZ2luLiBMZXQncyBzZWUgd2hlcmUgYGRtaXJyb3JfbWlncmF0ZV9hbGxvY19hbmRfY29weWAgaXMgYWN0dWFsbHkgKmNhbGxlZCogZnJvbS4gVGhhdCdzIHRoZSBsb2dpY2FsIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA2MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjUyLjg2OTU4ODUwNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQxNzk4NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImxpYi90ZXN0X2htbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi90ZXN0X2htbS5jPTY5MD1zdGF0aWMgc3RydWN0IHBhZ2UgKmRtaXJyb3JfZGV2bWVtX2FsbG9jX3BhZ2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy03MzgtXFxubGliL3Rlc3RfaG1tLmM6NzM5OnN0YXRpYyB2b2lkIGRtaXJyb3JfbWlncmF0ZV9hbGxvY19hbmRfY29weShzdHJ1Y3QgbWlncmF0ZV92bWEgKmFyZ3MsXFxubGliL3Rlc3RfaG1tLmMtNzQwLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkbWlycm9yICpkbWlycm9yKVxcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTE4OT1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMjQ3LVxcdFxcdHByX2RlYnVnKFxcXCJNaWdyYXRpbmcgZnJvbSBzeXMgbWVtIHRvIGRldmljZSBtZW1cXFxcblxcXCIpO1xcbmxpYi90ZXN0X2htbS5jOjEyNDg6XFx0XFx0ZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5KFxcdTAwMjZhcmdzLCBkbWlycm9yKTtcXG5saWIvdGVzdF9obW0uYy0xMjQ5LVxcdFxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZhcmdzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NTIuOTIzNzcyOTY5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDA4ODE5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKlRyYWNpbmcgdGhlIE9yaWdpbiBvZiBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGRpcmVjdHMgbWUgdG8gZmlndXJlIG91dCB3aGVyZSBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAgaXMgYmVpbmcgY2FsbGVkIGZyb20uIFRoYXQncyBhIHByZXR0eSBzdGFuZGFyZCBkZWJ1Z2dpbmcgb3IgY29kZSBhbmFseXNpcyB0YXNrLiBNeSBtaW5kIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIHNjZW5hcmlvcyBhbmQgYXBwcm9hY2hlcy5cblxuRmlyc3QsIEkgbmVlZCB0byBrbm93IHdoZXJlIEkgY2FuIGZpbmQgdGhlIGNvZGUuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gZGVmaW5lZD8gSXMgaXQgaW4gYSB3ZWxsLWtub3duIGxpYnJhcnksIGEgcHJvamVjdC1zcGVjaWZpYyBtb2R1bGUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoYXQgY29udGV4dCB3aWxsIGd1aWRlIG15IGFwcHJvYWNoLiBJcyB0aGlzIGEgbG9jYWwgY29kZWJhc2U/IElmIHNvLCBpcyB0aGVyZSBhIHByb2plY3QncyBJREU/XG5cbk5leHQsIEknbGwgY29uc2lkZXIgaG93IEknZCBhcHByb2FjaCB0aGlzIHByYWN0aWNhbGx5LiBJZiBJIGhhdmUgYWNjZXNzIHRvIHRoZSBjb2RlLCBJJ2QgcHJvYmFibHkgdXNlIGEgY29tYmluYXRpb24gb2YgZ3JlcCBvciBgZmluZGAgd2l0aCBgZ3JlcGAsIG9yIG15IElERSdzIHNlYXJjaCBmdW5jdGlvbiB0byBwZXJmb3JtIGEgY29kZSBzZWFyY2ggZm9yIHRoZSBmdW5jdGlvbiBuYW1lLiBJJ2QgbG9vayBmb3IgaXRzIGRlZmluaXRpb24gYW5kIHRoZW4gdHJhY2UgYWxsIG9mIGl0cyB1c2FnZXMuIElmIGl0J3MgYSBwYXJ0aWN1bGFybHkgbGFyZ2UgY29kZWJhc2UsIEkgbWlnaHQgZW1wbG95IHNvbWUgc29waGlzdGljYXRlZCBzb3VyY2UgY29kZSBuYXZpZ2F0aW9uIHRvb2xzIGlmIHRoZXkgZXhpc3QsIG9yIGV2ZW4gY29uc2lkZXIgYnVpbGRpbmcgYSBjYWxsIGdyYXBoLlxuXG5JJ20gYXNzdW1pbmcgdGhpcyBpcyBhIGZ1bmN0aW9uIGNhbGwsIGFzIHRoZSBwcm9tcHQgc3BlY2lmaWVzIGEgZnVuY3Rpb24uIEJ1dCBJIG5lZWQgdG8gYmUgcHJlcGFyZWQgaW4gY2FzZSBpdCdzIGEgbWFjcm8gb3Igc29tZXRoaW5nIGVsc2UuIEknZCB0aGVuIGhhdmUgdG8gdW5kZXJzdGFuZCBob3cgdG8gdHJhY2UgdGhlIGV4cGFuc2lvbiBvZiBtYWNyb3MgZGVwZW5kaW5nIG9uIHRoZSBsYW5ndWFnZSBJJ20gd29ya2luZyB3aXRoLlxuXG5Fc3NlbnRpYWxseSwgSSBuZWVkIHRvIGZpbmQgdGhlIHNwZWNpZmljIHNvdXJjZSBjb2RlIGxvY2F0aW9uKHMpIHdoZXJlIGBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlYCBpcyBpbnZva2VkLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgcHJvdmlkZSB0aGUgY29udGV4dCBJJ20gYWZ0ZXIuIEZyb20gdGhlcmUsIEkgY2FuIGFuYWx5emUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGUgY2FsbCwgdGhlIGRhdGEgYmVpbmcgcGFzc2VkLCBhbmQgdGhlIG92ZXJhbGwgZXhlY3V0aW9uIHBhdGguIFVuZGVyc3RhbmRpbmcgdGhlIHBhdGggaXMgaW1wb3J0YW50LCBzaW5jZSBJIG1pZ2h0IGJlIGxvb2tpbmcgZm9yIHJhY2UgY29uZGl0aW9ucyBvciBkYXRhIGFub21hbGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUyNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjUzOjU2Ljg2NDY1NjY4OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM0ODI2MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvdGVzdF9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTExODgtXFxubGliL3Rlc3RfaG1tLmM6MTE4OTpzdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxubGliL3Rlc3RfaG1tLmMtMTE5MC1cXHRcXHRcXHRcXHRzdHJ1Y3QgaG1tX2RtaXJyb3JfY21kICpjbWQpXFxuLS1cXG5saWIvdGVzdF9obW0uYz0xNTEzPXN0YXRpYyBsb25nIGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE1NDYtXFx0Y2FzZSBITU1fRE1JUlJPUl9NSUdSQVRFX1RPX0RFVjpcXG5saWIvdGVzdF9obW0uYzoxNTQ3OlxcdFxcdHJldCA9IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2UoZG1pcnJvciwgXFx1MDAyNmNtZCk7XFxubGliL3Rlc3RfaG1tLmMtMTU0OC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTM6NTYuOTE4MTQzODA0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTg1MDI4MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIEJ1ZyBGaXggaW4gYSBUZXN0IE1vZHVsZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgaXQncyBhZGRyZXNzaW5nIGEgYnVnIHdpdGhpbiBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgcHJvYmxlbSBsaWVzIGluIHRoZSBpbmNvcnJlY3QgdXNlIG9mIGBNSU5PUihtZGV2aWNlLVx1MDAzZWNkZXZpY2UuZGV2KWAgaW5zdGVhZCBvZiBgTUlOT1IobWRldmljZS1cdTAwM2VkZXZpY2UuZGV2dClgLiBJdCdzIGdldHRpbmcgY2FsbGVkIHZpYSBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYCwgd2hpY2ggbWVhbnMgdGhpcyBpcyBiZWluZyB0cmlnZ2VyZWQgdGhyb3VnaCBhIGNoYXJhY3RlciBkZXZpY2UgZXhwb3NlZCBieSB0aGUgYHRlc3RfaG1tYCBtb2R1bGUuXG5cblNpbmNlIHRoaXMgaXMgd2l0aGluIGEgdGVzdCBtb2R1bGUsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gYXNzZXNzIGlmIGZ1enppbmcgaXMgd2FycmFudGVkLiBDb25zaWRlcmluZyB0aGlzIGB0ZXN0X2htbWAgbW9kdWxlIGFjdGl2ZWx5IGV4ZXJjaXNlcyB0aGUgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KSBzdWJzeXN0ZW0sIHRoZSBhbnN3ZXIgaXMgYSBkZWZpbml0aXZlIHllcy4gQnVncyBmb3VuZCBoZXJlIGNvdWxkIHBvaW50IHRvIGNyaXRpY2FsIGZsYXdzIHdpdGhpbiBITU0gaXRzZWxmLCBub3QganVzdCB0aGUgdGVzdCBjb2RlLiBUaGVyZWZvcmUsIGVuYWJsaW5nIGBURVNUX0hNTWAgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGludmVzdGlnYXRpb24uXG5cbkdpdmVuIHRoZSBjb2RlIGluIHF1ZXN0aW9uLCBJIHNob3VsZCBmb2N1cyBteSBhbmFseXNpcyBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYCwgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBhbmQgYGRtaXJyb3JfYWxsb2NhdGVfY2h1bmtgLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBURVNUX0hNTWAgaXMgdGhlIG9ubHkgY29uZmlnIHRoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIwMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1NDowMS4zMzY2NDgzOTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMTQ3NzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBURVNUX0hNTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Z1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0zMzE4PWNvbmZpZyBURVNUX01FTUlOSVRcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTMzMjUtXFxubGliL0tjb25maWcuZGVidWc6MzMyNjpjb25maWcgVEVTVF9ITU1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzI3LVxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjU0OjAxLjM4OTc5OTMyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjA2NzA0MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgc3Vycm91bmRpbmcgYFRFU1RfSE1NYC4gQmVmb3JlIEkgY2FuIGV2ZW4gdGhpbmsgYWJvdXQgbW9kaWZ5aW5nLCBkZWJ1Z2dpbmcsIG9yIGludGVncmF0aW5nIGl0LCBJIG5lZWQgYSByb2NrLXNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyBtZWFucyBub3QganVzdCB0aGUgaW1tZWRpYXRlIGltcG9ydHMgb3IgZXh0ZXJuYWwgbGlicmFyaWVzLCBidXQgYWxzbyB0aGUgdmVyc2lvbnMsIHBvdGVudGlhbCBjb25mbGljdHMsIGFuZCwgZnJhbmtseSwgdGhlIGhpZGRlbiBhc3N1bXB0aW9ucyBiYWtlZCBpbnRvIHRob3NlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHZlcmlmeSBpdHMgZGVwZW5kZW5jaWVzLCB0aGUgc2NvcGUgdGhleSBhcHBseSB0bywgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRob3NlIGRlcGVuZGVuY2llcy4gVGhlIGRvY3VtZW50YXRpb24gbWF5IGJlIHVzZWZ1bCwgYnV0IGV4cGVyaWVuY2UgdGVsbHMgbWUgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbSB0aGlua2luZyBvZiBjaGVja2luZyBwYWNrYWdlIG1hbmFnZXJzLCBleGFtaW5pbmcgYnVpbGQgc2NyaXB0cywgYW5kIG1heWJlIGV2ZW4gZ3JlcHBpbmcgdGhlIGNvZGViYXNlIGZvciBzdWJ0bGUgaW50ZXJhY3Rpb25zLiBJdCdzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc5NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjU0OjA0LjUxMDQ3MTg3MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibGliL0tjb25maWcuZGVidWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzMyNixcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzMyNjpcXHRjb25maWcgVEVTVF9ITU1cXG4zMzI3OlxcdFxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuMzMyODpcXHRcXHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxuMzMyOTpcXHRcXHRkZXBlbmRzIG9uIERFVklDRV9QUklWQVRFXFxuMzMzMDpcXHRcXHRzZWxlY3QgSE1NX01JUlJPUlxcbjMzMzE6XFx0XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbjMzMzI6XFx0XFx0aGVscFxcbjMzMzM6XFx0XFx0ICBUaGlzIGlzIGEgcHNldWRvIGRldmljZSBkcml2ZXIgc29sZWx5IGZvciB0ZXN0aW5nIEhNTS5cXG4zMzM0OlxcdFxcdCAgU2F5IE0gaGVyZSBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUgSE1NIHRlc3QgbW9kdWxlLlxcbjMzMzU6XFx0XFx0ICBEb2luZyBzbyB3aWxsIGFsbG93IHlvdSB0byBydW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdC92bS9obW0tdGVzdHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjU0OjA0LjUxMDYyMjc1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjIzNjMyMjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBhbmQgS2V5IFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzIGxhYmVsZWQgYFRFU1RfSE1NYC4gUmlnaHQsIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZXNlIHN5bWJvbHM6IGBkbWlycm9yX2ZvcHNfdW5sb2NrZWRfaW9jdGxgLCBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAsIGFuZCBgZG1pcnJvcl9hbGxvY2F0ZV9jaHVua2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBmaXQgdG9nZXRoZXIsIHdoaWNoIG9uZSBpcyBjYXVzaW5nIHRoZSBwcm9ibGVtLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgZmlyc3Qgb25lLCBgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgbmFtZSBpdHNlbGYgaXMgY29ycmVjdCwgdGhhdCBpdCdzIHdoYXQgSSB0aGluayBpdCBpcy4gSSdsbCBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0cyBmdW5jdGlvbiBhbmQgcHVycG9zZSBhcmUgd2hhdCdzIGRvY3VtZW50ZWQgYW5kIGV4cGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjAzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1NDowNy43MzQyNTcwOTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzE0Nzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvdGVzdF9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvdGVzdF9obW0uYz0xNDgxPXN0YXRpYyB2b2lkIGRtaXJyb3JfZGV2aWNlX3JlbW92ZV9jaHVua3Moc3RydWN0IGRtaXJyb3JfZGV2aWNlICptZGV2aWNlKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTUxMi1cXG5saWIvdGVzdF9obW0uYzoxNTEzOnN0YXRpYyBsb25nIGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG5saWIvdGVzdF9obW0uYy0xNTE0LVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBjb21tYW5kLFxcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTYxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkbWlycm9yX2ZvcHMgPSB7XFxuLS1cXG5saWIvdGVzdF9obW0uYy0xNjE0LVxcdC5tbWFwXFx0XFx0PSBkbWlycm9yX2ZvcHNfbW1hcCxcXG5saWIvdGVzdF9obW0uYzoxNjE1OlxcdC51bmxvY2tlZF9pb2N0bCA9IGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bCxcXG5saWIvdGVzdF9obW0uYy0xNjE2LVxcdC5sbHNlZWtcXHRcXHQ9IGRlZmF1bHRfbGxzZWVrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1NDowNy43ODg5NzY5NTlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMTA4NzQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW50ZXJuYWwgVmVyaWZpY2F0aW9uIG9mIEZ1bmN0aW9uIE5hbWUqKlxuXG5SaWdodCwgdGhhdCBzZWVtcyB0byBiZSB0aGUgY2FzZS4gTm93LCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgZGVidWdnaW5nLCBsZXQncyBqdXN0IHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGZ1bmN0aW9uIG5hbWUsIGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCwgYWNjdXJhdGVseSByZWZsZWN0cyBpdHMgaW50ZW5kZWQgcHVycG9zZS4gSXQncyBjcnVjaWFsIHRvIGVuc3VyZSB0aGF0IG5hbWluZyBjb252ZW50aW9ucyBhbGlnbiB3aXRoIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkuIEEgZGlzY3JlcGFuY3kgaGVyZSBjb3VsZCBwb2ludCB0byBhIG1pc2ludGVycHJldGF0aW9uIG9mIHRoZSBjb2RlJ3Mgcm9sZSBvciwgd29yc2UsIGEgcG90ZW50aWFsIHNvdXJjZSBvZiBlcnJvcnMgZG93biB0aGUgbGluZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIG5hbWUgaXMgbm90IGp1c3QgYSBjb252ZW5pZW50IHBsYWNlaG9sZGVyIGJ1dCBhIHByZWNpc2UgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIGZ1bmN0aW9uICphY3R1YWxseSogZG9lcy4gVGltZSB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbnMgYW5kIGF2b2lkIGEgZnV0dXJlIHJhYmJpdCBob2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njk3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjM6NTQ6MTAuOTEwMDY2OTcxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDU2NTg5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkbWlycm9yX2FsbG9jYXRlX2NodW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImxpYi90ZXN0X2htbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi90ZXN0X2htbS5jPTUxNz1zdGF0aWMgaW50IGRtaXJyb3Jfd3JpdGUoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsIHN0cnVjdCBobW1fZG1pcnJvcl9jbWQgKmNtZClcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTU1Ny1cXG5saWIvdGVzdF9obW0uYzo1NTg6c3RhdGljIGludCBkbWlycm9yX2FsbG9jYXRlX2NodW5rKHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSxcXG5saWIvdGVzdF9obW0uYy01NTktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcGFnZSAqKnBwYWdlLCBib29sIGlzX2xhcmdlKVxcbi0tXFxubGliL3Rlc3RfaG1tLmM9NjkwPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqZG1pcnJvcl9kZXZtZW1fYWxsb2NfcGFnZShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTcyMi1cXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bWRldmljZS1cXHUwMDNlbG9jayk7XFxubGliL3Rlc3RfaG1tLmM6NzIzOlxcdFxcdGlmIChkbWlycm9yX2FsbG9jYXRlX2NodW5rKG1kZXZpY2UsIFxcdTAwMjZkcGFnZSwgaXNfbGFyZ2UpKVxcbmxpYi90ZXN0X2htbS5jLTcyNC1cXHRcXHRcXHRnb3RvIGVycm9yO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTc3OT1zdGF0aWMgaW50IGRtaXJyb3JfZGV2aWNlX2luaXQoc3RydWN0IGRtaXJyb3JfZGV2aWNlICptZGV2aWNlLCBpbnQgaWQpXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xNzk5LVxcdC8qIEJ1aWxkIGEgbGlzdCBvZiBmcmVlIFpPTkVfREVWSUNFIHN0cnVjdCBwYWdlcyAqL1xcbmxpYi90ZXN0X2htbS5jOjE4MDA6XFx0cmV0ID0gZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhtZGV2aWNlLCBOVUxMLCBmYWxzZSk7XFxubGliL3Rlc3RfaG1tLmMtMTgwMS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMzo1NDoxMC45NjQ2Mzc1MjZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1MDIwNzEwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHllcywgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGNvbnNpZGVyLiBJdCBhZGRyZXNzZXMgYSBzcGVjaWZpYyBidWcgaW4gdGhlIGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCBmdW5jdGlvbiwgYSBjcml0aWNhbCBlbGVtZW50IG9mIHRoZSBkZXZpY2UgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMgd2l0aGluIHRoZSBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpIHRlc3QgbW9kdWxlLiBUaGUgcm9vdCBjYXVzZSBpcyBhIG1pbm9yIGVycm9yIOKAkyB1c2luZyB0aGUgaW5jb3JyZWN0IGRldmljZSBudW1iZXIgbWFjcm8g4oCTIGJ1dCBpdCBjb3VsZCBsZWFkIHRvIHNpZ25pZmljYW50IHByb2JsZW1zLiBTcGVjaWZpY2FsbHksIHRoZXkgd2VyZSB1c2luZyBgTUlOT1IobWRldmljZS1cdTAwM2VjZGV2aWNlLmRldilgIHdoZW4gdGhleSBzaG91bGQgaGF2ZSBiZWVuIHVzaW5nIGBNSU5PUihtZGV2aWNlLVx1MDAzZWRldmljZS5kZXZ0KWAuIFRoaXMgaXMgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNvcnJlY3Rpb24gb2YgdW5kZXJseWluZyBjb2RlIGxvZ2ljLlxuXG5UaGVyZWZvcmUsIHNpbmNlIHRoaXMgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBtZW1vcnkgYWxsb2NhdGlvbiB3aXRoaW4gdGhlIEhNTSB0ZXN0IG1vZHVsZSwgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgd2UgbmVlZCB0byB0aHJvdyBzb21lIGZ1enppbmcgYXQgaXQuIEl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIHVuY292ZXJpbmcgc3VidGxlIG1lbW9yeS1yZWxhdGVkIGZsYXdzIHRoYXQgbWlnaHQgYmUgbWlzc2VkIGR1cmluZyBzdGFuZGFyZCB0ZXN0aW5nLlxuXG5CYXNlZCBvbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgsIEkgd2lsbCBlbmFibGUgdGhlIGBURVNUX0hNTWAgY29uZmlndXJhdGlvbiBvcHRpb24gZHVyaW5nIGZ1enppbmcsIG9idmlvdXNseS4gVGhlIGZ1enppbmcgc2hvdWxkIGJlIGZvY3VzZWQgb24gdGhyZWUga2V5IHN5bWJvbHM6IGBkbWlycm9yX2FsbG9jYXRlX2NodW5rYCwgc2luY2UgaXQncyB0aGUgcG9pbnQgb2YgdGhlIGZpeCwgYGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bGAgd2hpY2ggaXMgdGhlIGVudHJ5IHBvaW50LCBhbmQgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBpbiBjYXNlIGl0IGludGVyYWN0cyB3aXRoIHRoZSBhbGxvY2F0aW9uIGFuZCBidWcuIFRoaXMgd2lsbCBoZWxwIHVzIHRvIHRob3JvdWdobHkgZXZhbHVhdGUgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBhbmQgdW5jb3ZlciBhbnkgcmVtYWluaW5nIHZ1bG5lcmFiaWxpdGllcyBpbiBib3RoIHRoZSBITU0gc3Vic3lzdGVtIGFuZCB0aGUgdGVzdCBtb2R1bGUgaXRzZWxmLiBUaGlzIGlzIGFuIGltcG9ydGFudCBzdGVwIHRvIGVuc3VyZSB0aGUgaW50ZWdyaXR5IGFuZCByb2J1c3RuZXNzIG9mIHRoZSBITU0gaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNjAsIk91dHB1dFRva2VucyI6MTEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIzOjU0OjE2LjAxNDg0NjUzOFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1Nzg5ODAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJURVNUX0hNTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRtaXJyb3JfYWxsb2NhdGVfY2h1bmtcIixcbiAgICBcImRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bFwiLFxuICAgIFwiZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBITU0gdGVzdCBtb2R1bGUncyBkZXZpY2UgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMuIEZ1enppbmcgdGhlIHRlc3QgbW9kdWxlJ3MgaW9jdGwgaW50ZXJmYWNlIGNhbiBoZWxwIHVuY292ZXIgYnVncyBpbiB0aGUgSE1NIHN1YnN5c3RlbSBhbmQgdGhlIHRlc3QgbW9kdWxlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJURVNUX0hNTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRtaXJyb3JfYWxsb2NhdGVfY2h1bmtcIixcbiAgICBcImRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bFwiLFxuICAgIFwiZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBITU0gdGVzdCBtb2R1bGUncyBkZXZpY2UgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMuIEZ1enppbmcgdGhlIHRlc3QgbW9kdWxlJ3MgaW9jdGwgaW50ZXJmYWNlIGNhbiBoZWxwIHVuY292ZXIgYnVncyBpbiB0aGUgSE1NIHN1YnN5c3RlbSBhbmQgdGhlIHRlc3QgbW9kdWxlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5hwq2[1] Phase: Succeeded StartedAt: 2026-06-29 23:54:28 +0000 UTC FinishedAt: 2026-06-29 23:54:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-29 23:54:28 +0000 UTC FinishedAt: 2026-06-29 23:54:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2] Phase: Succeeded StartedAt: 2026-06-29 23:54:28 +0000 UTC FinishedAt: 2026-06-30 03:46:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-29 23:54:28 +0000 UTC FinishedAt: 2026-06-30 03:46:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-29 23:54:28 +0000 UTC FinishedAt: 2026-06-29 23:54:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-29 23:54:28 +0000 UTC FinishedAt: 2026-06-29 23:54:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow5hwq2/series-workflow5hwq2-convert-artifact-4094811475/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-29 23:54:49 +0000 UTC FinishedAt: 2026-06-30 00:17:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-29 23:54:49 +0000 UTC FinishedAt: 2026-06-30 00:17:20 +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:*07869479-3e65-4288-88a5-756fe2dbc405,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-workflow5hwq2/series-workflow5hwq2-convert-artifact-4094811475/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": "742b8351-3346-4c52-8160-165626e9c100", "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-workflow5hwq2/series-workflow5hwq2-build-action-3288408193/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-29 23:54:49 +0000 UTC FinishedAt: 2026-06-30 00:17:10 +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:*07869479-3e65-4288-88a5-756fe2dbc405,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-workflow5hwq2/series-workflow5hwq2-convert-artifact-4094811475/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": "742b8351-3346-4c52-8160-165626e9c100", "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-workflow5hwq2/series-workflow5hwq2-build-action-3288408193/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 00:17:20 +0000 UTC FinishedAt: 2026-06-30 00:17:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 00:17:20 +0000 UTC FinishedAt: 2026-06-30 00:17:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 00:17:20 +0000 UTC FinishedAt: 2026-06-30 00:17:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 00:17:20 +0000 UTC FinishedAt: 2026-06-30 00:17:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow5hwq2/series-workflow5hwq2-convert-artifact-137747274/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 00:17:30 +0000 UTC FinishedAt: 2026-06-30 00:19:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 00:17:30 +0000 UTC FinishedAt: 2026-06-30 00:19:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*742b8351-3346-4c52-8160-165626e9c100,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-workflow5hwq2/series-workflow5hwq2-build-action-3288408193/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-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 00:19:47 +0000 UTC FinishedAt: 2026-06-30 00:19:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 00:19:47 +0000 UTC FinishedAt: 2026-06-30 00:19:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 00:19:47 +0000 UTC FinishedAt: 2026-06-30 00:41:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 00:19:47 +0000 UTC FinishedAt: 2026-06-30 00:41:12 +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:*07869479-3e65-4288-88a5-756fe2dbc405,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-workflow5hwq2/series-workflow5hwq2-convert-artifact-137747274/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": "573ceea9-206e-4539-98bb-4b18bcab3560", "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-workflow5hwq2/series-workflow5hwq2-build-action-965623662/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 00:19:47 +0000 UTC FinishedAt: 2026-06-30 00:41:02 +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:*07869479-3e65-4288-88a5-756fe2dbc405,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-workflow5hwq2/series-workflow5hwq2-convert-artifact-137747274/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": "573ceea9-206e-4539-98bb-4b18bcab3560", "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-workflow5hwq2/series-workflow5hwq2-build-action-965623662/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 00:41:12 +0000 UTC FinishedAt: 2026-06-30 00:41:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 00:41:12 +0000 UTC FinishedAt: 2026-06-30 00:41:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 00:41:12 +0000 UTC FinishedAt: 2026-06-30 00:43:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 00:41:12 +0000 UTC FinishedAt: 2026-06-30 00:43:23 +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:*573ceea9-206e-4539-98bb-4b18bcab3560,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-workflow5hwq2/series-workflow5hwq2-build-action-965623662/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-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 00:43:33 +0000 UTC FinishedAt: 2026-06-30 03:46:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 00:43:33 +0000 UTC FinishedAt: 2026-06-30 03:46:25 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},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:*742b8351-3346-4c52-8160-165626e9c100,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*573ceea9-206e-4539-98bb-4b18bcab3560,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-workflow5hwq2/series-workflow5hwq2-build-action-3288408193/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-workflow5hwq2/series-workflow5hwq2-build-action-965623662/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 00:43:33 +0000 UTC FinishedAt: 2026-06-30 00:43:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 00:43:33 +0000 UTC FinishedAt: 2026-06-30 00:43:39 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},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-workflow5hwq2/series-workflow5hwq2-convert-artifact-3682536671/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 00:43:33 +0000 UTC FinishedAt: 2026-06-30 00:43:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 00:43:33 +0000 UTC FinishedAt: 2026-06-30 00:43:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 00:43:33 +0000 UTC FinishedAt: 2026-06-30 00:43:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 00:43:43 +0000 UTC FinishedAt: 2026-06-30 03:46:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hwq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dmirror_allocate_chunk","dmirror_fops_unlocked_ioctl","dmirror_migrate_to_device"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"88cefc306c43b58d9bb65c9e96e284306710d961","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM"],"series_id":"6be3d642-d22b-4881-8aee-c19ddf8eae28","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 00:43:43 +0000 UTC FinishedAt: 2026-06-30 03:46:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*742b8351-3346-4c52-8160-165626e9c100,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*573ceea9-206e-4539-98bb-4b18bcab3560,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-workflow5hwq2/series-workflow5hwq2-build-action-3288408193/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-workflow5hwq2/series-workflow5hwq2-build-action-965623662/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-workflow5hwq2/series-workflow5hwq2-convert-artifact-3682536671/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,}