Name: series-workflowjgmm9 Phase: Succeeded StartedAt: 2026-06-25 15:14:35 +0000 UTC FinishedAt: 2026-06-25 18:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[0] Phase: Succeeded StartedAt: 2026-06-25 15:14:35 +0000 UTC FinishedAt: 2026-06-25 15:32:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 15:14:35 +0000 UTC FinishedAt: 2026-06-25 15:32:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_DRBD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_DRBD" ], "series_id": "ce99f795-7937-4d7d-ba42-a2c4cd4e81c2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "receive_SyncParam" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfRFJCRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlY2VpdmVfU3luY1BhcmFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlLXB1dCBidWcgb2YgdGhlIGxvY2FsIGRldmljZSByZWZlcmVuY2UgaW4gdGhlIERSQkQgcHJvdG9jb2wgaGFuZGxlciBgcmVjZWl2ZV9TeW5jUGFyYW1gIHdoZW4gYGZpZm9fYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQwNzAzNDE4NGExYmEyYmJlOWQ1YzYwNWUzNGJmZjZkOWVlNGFkYWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAxNTozMToxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuaW5kZXggNThiOTViZjRiZGNhNmEuLmY2MThkMDNmZDJhNmVhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuQEAgLTM3ODcsNyAmIzQzOzM3ODcsNiBAQCBzdGF0aWMgaW50IHJlY2VpdmVfU3luY1BhcmFtKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHN0cnVjdCBwYWNrZXRfaVxuIFx0XHRcdFx0bmV3X3BsYW4gPSBmaWZvX2FsbG9jKGZpZm9fc2l6ZSk7XG4gXHRcdFx0XHRpZiAoIW5ld19wbGFuKSB7XG4gXHRcdFx0XHRcdGRyYmRfZXJyKGRldmljZSwgXCYjMzQ7a21hbGxvYyBvZiBmaWZvX2J1ZmZlciBmYWlsZWRcJiMzNDspO1xuLVx0XHRcdFx0XHRwdXRfbGRldihkZXZpY2UpO1xuIFx0XHRcdFx0XHRnb3RvIGRpc2Nvbm5lY3Q7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfRFJCRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlY2VpdmVfU3luY1BhcmFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlLXB1dCBidWcgb2YgdGhlIGxvY2FsIGRldmljZSByZWZlcmVuY2UgaW4gdGhlIERSQkQgcHJvdG9jb2wgaGFuZGxlciBgcmVjZWl2ZV9TeW5jUGFyYW1gIHdoZW4gYGZpZm9fYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDA3MDM0MTg0YTFiYTJiYmU5ZDVjNjA1ZTM0YmZmNmQ5ZWU0YWRhYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDE1OjMxOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKaW5kZXggNThiOTViZjRiZGNhNmEuLmY2MThkMDNmZDJhNmVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAgLTM3ODcsNyAmIzQzOzM3ODcsNiBAQCBzdGF0aWMgaW50IHJlY2VpdmVfU3luY1BhcmFtKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHN0cnVjdCBwYWNrZXRfaQogCQkJCW5ld19wbGFuID0gZmlmb19hbGxvYyhmaWZvX3NpemUpOwogCQkJCWlmICghbmV3X3BsYW4pIHsKIAkJCQkJZHJiZF9lcnIoZGV2aWNlLCAmIzM0O2ttYWxsb2Mgb2YgZmlmb19idWZmZXIgZmFpbGVkJiMzNDspOwotCQkJCQlwdXRfbGRldihkZXZpY2UpOwogCQkJCQlnb3RvIGRpc2Nvbm5lY3Q7CiAJCQkJfQogCQkJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqRFJCRCBSZWNlaXZlciBQYXRjaCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY2AuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgcmVtb3ZpbmcgYSBgcHV0X2xkZXYoZGV2aWNlKTtgIGNhbGwgd2l0aGluIHRoZSBgcmVjZWl2ZV9TeW5jUGFyYW1gIGZ1bmN0aW9uLiBUaGlzIGlzIGludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aHkgdGhleSBkZWNpZGVkIHRvIG1ha2UgdGhpcyBjaGFuZ2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlLiBNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIG1lbW9yeSBsZWFrcy4gUmVtb3ZpbmcgdGhlIGBwdXRfbGRldmAgY2FsbCBpbiBhIGZhaWx1cmUgcGF0aCwgc3BlY2lmaWNhbGx5IHRoZSBgZmlmb19hbGxvY2AgZmFpbHVyZSBwYXRoLCBpcyBhIHBvdGVudGlhbCBhcmVhIGZvciBsZWFrYWdlIGFuZCBjb3VsZCBsZWFkIHRvIHByb2JsZW1zIGRvd24gdGhlIHJvYWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGZpZm9fYWxsb2NgICpkb2VzKiBhbmQgd2hhdCBgcHV0X2xkZXZgICpkb2VzKiB0byBiZSBjZXJ0YWluLiBJcyB0aGlzIHNhZmUgdG8gbWFrZT8gSXMgdGhlIGRldmljZSBoYW5kbGUgYmVpbmcgcHJvcGVybHkgaGFuZGxlZCBpbiBhbGwgb3RoZXIgc2NlbmFyaW9zPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29kZSBjYXJlZnVsbHkgYW5kIGZpZ3VyZSBvdXQgdGhlIGNoYWluIG9mIGV2ZW50cy4gSSB3YW50IHRvIGRvdWJsZSBjaGVjayB0aGUgZXJyb3IgaGFuZGxpbmcgaGVyZSwgYW5kIHZlcmlmeSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIGNvcnJlY3QuIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIGV2ZXIgY2FsbGVkIHdpdGggYW4gdW5leHBlY3RlZCBgZGV2aWNlYCB2YWx1ZS4gRXNzZW50aWFsbHksIHRoZSBuZXh0IHN0ZXAgaXMgYSBkZWVwIGRpdmUgaW50byBgcmVjZWl2ZV9TeW5jUGFyYW1gIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSwgZXNwZWNpYWxseSBhbnl0aGluZyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZXZpY2UgaGFuZGxpbmcgd2l0aGluIHRoYXQgbW9kdWxlLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsIGFuZCBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gc3VidGxlIHJlc291cmNlIGxlYWsgb3IgY29ycnVwdGlvbiBpbnRyb2R1Y2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlY2VpdmVfU3luY1BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jPTM2NDc9c3RhdGljIGludCBjb25maWdfdW5rbm93bl92b2x1bWUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHBhY2tldF9pbmZvICpwaSlcbi0tXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jLTM2NTMtXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jOjM2NTQ6c3RhdGljIGludCByZWNlaXZlX1N5bmNQYXJhbShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxuZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYy0zNjU1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jPTQ4MzI9c3RhdGljIHN0cnVjdCBkYXRhX2NtZCBkcmJkX2NtZF9oYW5kbGVyW10gPSB7XG4tLVxuZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYy00ODQxLVx0W1BfUlNfREFUQV9SRVFVRVNUXSA9IHsgMCwgc2l6ZW9mKHN0cnVjdCBwX2Jsb2NrX3JlcSksIHJlY2VpdmVfRGF0YVJlcXVlc3QgfSxcbmRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmM6NDg0MjpcdFtQX1NZTkNfUEFSQU1dXHQgICAgPSB7IDEsIDAsIHJlY2VpdmVfU3luY1BhcmFtIH0sXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jOjQ4NDM6XHRbUF9TWU5DX1BBUkFNODldICAgID0geyAxLCAwLCByZWNlaXZlX1N5bmNQYXJhbSB9LFxuZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYy00ODQ0LVx0W1BfUFJPVE9DT0xdICAgICAgICA9IHsgMSwgc2l6ZW9mKHN0cnVjdCBwX3Byb3RvY29sKSwgcmVjZWl2ZV9wcm90b2NvbCB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgcmVjZWl2ZV9TeW5jUGFyYW1gIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHplcm9pbmcgaW4gb24gYHJlY2VpdmVfU3luY1BhcmFtYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSBhYm91dCBoYW5kbGluZyBzb21lIHNvcnQgb2YgcGFyYW1ldGVyIHN5bmNocm9uaXphdGlvbi4gR2l2ZW4gdGhhdCBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGxldCYjMzk7cyB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIGJlZW4gbW9kaWZpZWQuJiMzNDsgQ29udGV4dCBpcyBldmVyeXRoaW5nLCBzbyBJJiMzOTttIHNraXBwaW5nIHJpZ2h0IHRvIGxpbmUgMzc4NyB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCBhcm91bmQgdGhhdCBmdW5jdGlvbiBjYWxsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgKnN1cHBvc2VkKiB0byBiZSBkb2luZyBiZWZvcmUgSSBjYW4gZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLiBJcyB0aGlzIGEgbmV3IGZlYXR1cmUsIGEgYnVnIGZpeCwgYW4gb3B0aW1pemF0aW9uPyBJIGNhbiYjMzk7dCBzYXkgYW55dGhpbmcgdW50aWwgSSBzZWUgdGhlIHN1cnJvdW5kaW5nIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNzYwOlx0XHRcdFx0XHR2ZXJpZnlfdGZtID0gTlVMTDtcbjM3NjE6XHRcdFx0XHRcdGdvdG8gZGlzY29ubmVjdDtcbjM3NjI6XHRcdFx0XHR9XG4zNzYzOlx0XHRcdH1cbjM3NjQ6XHRcbjM3NjU6XHRcdFx0aWYgKGFwdiBcdTAwM2U9IDg5IFx1MDAyNlx1MDAyNiBzdHJjbXAob2xkX25ldF9jb25mLVx1MDAzZWNzdW1zX2FsZywgcC1cdTAwM2Vjc3Vtc19hbGcpKSB7XG4zNzY2Olx0XHRcdFx0aWYgKGRldmljZS1cdTAwM2VzdGF0ZS5jb25uID09IENfV0ZfUkVQT1JUX1BBUkFNUykge1xuMzc2NzpcdFx0XHRcdFx0ZHJiZF9lcnIoZGV2aWNlLCBcJiMzNDtEaWZmZXJlbnQgY3N1bXMtYWxnIHNldHRpbmdzLiBtZT1cXFwmIzM0OyVzXFxcJiMzNDsgcGVlcj1cXFwmIzM0OyVzXFxcJiMzNDtcXG5cJiMzNDssXG4zNzY4Olx0XHRcdFx0XHQgICAgb2xkX25ldF9jb25mLVx1MDAzZWNzdW1zX2FsZywgcC1cdTAwM2Vjc3Vtc19hbGcpO1xuMzc2OTpcdFx0XHRcdFx0Z290byBkaXNjb25uZWN0O1xuMzc3MDpcdFx0XHRcdH1cbjM3NzE6XHRcdFx0XHRjc3Vtc190Zm0gPSBkcmJkX2NyeXB0b19hbGxvY19kaWdlc3Rfc2FmZShkZXZpY2UsXG4zNzcyOlx0XHRcdFx0XHRcdHAtXHUwMDNlY3N1bXNfYWxnLCBcJiMzNDtjc3Vtcy1hbGdcJiMzNDspO1xuMzc3MzpcdFx0XHRcdGlmIChJU19FUlIoY3N1bXNfdGZtKSkge1xuMzc3NDpcdFx0XHRcdFx0Y3N1bXNfdGZtID0gTlVMTDtcbjM3NzU6XHRcdFx0XHRcdGdvdG8gZGlzY29ubmVjdDtcbjM3NzY6XHRcdFx0XHR9XG4zNzc3Olx0XHRcdH1cbjM3Nzg6XHRcbjM3Nzk6XHRcdFx0aWYgKGFwdiBcdTAwM2UgOTQgXHUwMDI2XHUwMDI2IG5ld19kaXNrX2NvbmYpIHtcbjM3ODA6XHRcdFx0XHRuZXdfZGlza19jb25mLVx1MDAzZWNfcGxhbl9haGVhZCA9IGJlMzJfdG9fY3B1KHAtXHUwMDNlY19wbGFuX2FoZWFkKTtcbjM3ODE6XHRcdFx0XHRuZXdfZGlza19jb25mLVx1MDAzZWNfZGVsYXlfdGFyZ2V0ID0gYmUzMl90b19jcHUocC1cdTAwM2VjX2RlbGF5X3RhcmdldCk7XG4zNzgyOlx0XHRcdFx0bmV3X2Rpc2tfY29uZi1cdTAwM2VjX2ZpbGxfdGFyZ2V0ID0gYmUzMl90b19jcHUocC1cdTAwM2VjX2ZpbGxfdGFyZ2V0KTtcbjM3ODM6XHRcdFx0XHRuZXdfZGlza19jb25mLVx1MDAzZWNfbWF4X3JhdGUgPSBiZTMyX3RvX2NwdShwLVx1MDAzZWNfbWF4X3JhdGUpO1xuMzc4NDpcdFxuMzc4NTpcdFx0XHRcdGZpZm9fc2l6ZSA9IChuZXdfZGlza19jb25mLVx1MDAzZWNfcGxhbl9haGVhZCAqIDEwICogU0xFRVBfVElNRSkgLyBIWjtcbjM3ODY6XHRcdFx0XHRpZiAoZmlmb19zaXplICE9IGRldmljZS1cdTAwM2Vyc19wbGFuX3MtXHUwMDNlc2l6ZSkge1xuMzc4NzpcdFx0XHRcdFx0bmV3X3BsYW4gPSBmaWZvX2FsbG9jKGZpZm9fc2l6ZSk7XG4zNzg4Olx0XHRcdFx0XHRpZiAoIW5ld19wbGFuKSB7XG4zNzg5Olx0XHRcdFx0XHRcdGRyYmRfZXJyKGRldmljZSwgXCYjMzQ7a21hbGxvYyBvZiBmaWZvX2J1ZmZlciBmYWlsZWRcJiMzNDspO1xuMzc5MDpcdFx0XHRcdFx0XHRnb3RvIGRpc2Nvbm5lY3Q7XG4zNzkxOlx0XHRcdFx0XHR9XG4zNzkyOlx0XHRcdFx0fVxuMzc5MzpcdFx0XHR9XG4zNzk0Olx0XG4zNzk1Olx0XHRcdGlmICh2ZXJpZnlfdGZtIHx8IGNzdW1zX3RmbSkge1xuMzc5NjpcdFx0XHRcdG5ld19uZXRfY29uZiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBuZXRfY29uZik7XG4zNzk3Olx0XHRcdFx0aWYgKCFuZXdfbmV0X2NvbmYpXG4zNzk4Olx0XHRcdFx0XHRnb3RvIGRpc2Nvbm5lY3Q7XG4zNzk5Olx0XG4zODAwOlx0XHRcdFx0Km5ld19uZXRfY29uZiA9ICpvbGRfbmV0X2NvbmY7XG4zODAxOlx0XG4zODAyOlx0XHRcdFx0aWYgKHZlcmlmeV90Zm0pIHtcbjM4MDM6XHRcdFx0XHRcdHN0cnNjcHkobmV3X25ldF9jb25mLVx1MDAzZXZlcmlmeV9hbGcsIHAtXHUwMDNldmVyaWZ5X2FsZyk7XG4zODA0Olx0XHRcdFx0XHRuZXdfbmV0X2NvbmYtXHUwMDNldmVyaWZ5X2FsZ19sZW4gPSBzdHJsZW4ocC1cdTAwM2V2ZXJpZnlfYWxnKSAmIzQzOyAxO1xuMzgwNTpcdFx0XHRcdFx0Y3J5cHRvX2ZyZWVfc2hhc2gocGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbi1cdTAwM2V2ZXJpZnlfdGZtKTtcbjM4MDY6XHRcdFx0XHRcdHBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb24tXHUwMDNldmVyaWZ5X3RmbSA9IHZlcmlmeV90Zm07XG4zODA3Olx0XHRcdFx0XHRkcmJkX2luZm8oZGV2aWNlLCBcJiMzNDt1c2luZyB2ZXJpZnktYWxnOiBcXFwmIzM0OyVzXFxcJiMzNDtcXG5cJiMzNDssIHAtXHUwMDNldmVyaWZ5X2FsZyk7XG4zODA4Olx0XHRcdFx0fVxuMzgwOTpcdFx0XHRcdGlmIChjc3Vtc190Zm0pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzg0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6CgoqKlRyb3VibGVzaG9vdGluZyBhIFJlY2VudCBDb2RlIENoYW5nZSoqCgpBbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLi4uIEkmIzM5O20gbm90aWNpbmcgdGhhdCBgcHV0X2xkZXYoZGV2aWNlKTtgIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmlwcGVkIG91dCBvZiB0aGUgY29kZSBiYXNlLiBUaGF0JiMzOTtzIGEgcmVkIGZsYWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsLCBhbmQgd2hldGhlciB0aGlzIHJlbW92YWwgaXMgYSBicmVha2luZyBjaGFuZ2UuCgpUaGUgb2J2aW91cyBxdWVzdGlvbiBpczogd2hlcmUgd2FzIGBwdXRfbGRldigpYCBiZWluZyB1c2VkPyBNeSBmaXJzdCBodW5jaCBpcyB0byBjaGVjayB0aGUgaW1tZWRpYXRlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIGNhbGwgc3RhY2tzLCBidXQgYmVmb3JlIEkgZ28gdGhlcmUsIGxldCBtZSBxdWlja2x5IGFzY2VydGFpbiBpZiB0aGUgZGV2aWNlIGl0IHRha2VzLCAqZGV2aWNlKiwgd2FzIGJlaW5nIHJldHJpZXZlZCBiZWZvcmVoYW5kLiBUaGUgaW1tZWRpYXRlIGxvZ2ljYWwgc3RlcCB0byB0YWtlIGhlcmUgaXMgdG8gYW5hbHl6ZSB0aGUgY29kZSBmb3IgYW55IGNhbGxzIHRvIGBnZXRfbGRldihkZXZpY2UpYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgKmRldmljZSogd2FzIGJlaW5nIGhhbmRsZWQgYmVmb3JlIHRoZSBwb3RlbnRpYWwgd3JpdGUgdG8gaXQgd2l0aCBgcHV0X2xkZXYoKWAsIHRvIGRldGVybWluZSB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLiBGcm9tIHRoZSBjYWxsIHN0YWNrLCBJIGNhbiBkZXRlcm1pbmUgd2h5IHRoaXMgY2hhbmdlIHdhcyBtYWRlIGluIHRoZSBmaXJzdCBwbGFjZSwgYW5kIHdoZXJlIGl0cyBpbXBhY3Qgd2lsbCBiZSB0aGUgbW9zdCBhcHBhcmVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNjUwOlx0XHRcdCAgY21kbmFtZShwaS1cdTAwM2VjbWQpLCBwaS1cdTAwM2V2bnIpO1xuMzY1MTpcdFx0cmV0dXJuIGlnbm9yZV9yZW1haW5pbmdfcGFja2V0KGNvbm5lY3Rpb24sIHBpKTtcbjM2NTI6XHR9XG4zNjUzOlx0XG4zNjU0Olx0c3RhdGljIGludCByZWNlaXZlX1N5bmNQYXJhbShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxuMzY1NTpcdHtcbjM2NTY6XHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZTtcbjM2NTc6XHRcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlO1xuMzY1ODpcdFx0c3RydWN0IHBfcnNfcGFyYW1fOTUgKnA7XG4zNjU5Olx0XHR1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsIGRhdGFfc2l6ZSwgZXhwX21heF9zejtcbjM2NjA6XHRcdHN0cnVjdCBjcnlwdG9fc2hhc2ggKnZlcmlmeV90Zm0gPSBOVUxMO1xuMzY2MTpcdFx0c3RydWN0IGNyeXB0b19zaGFzaCAqY3N1bXNfdGZtID0gTlVMTDtcbjM2NjI6XHRcdHN0cnVjdCBuZXRfY29uZiAqb2xkX25ldF9jb25mLCAqbmV3X25ldF9jb25mID0gTlVMTDtcbjM2NjM6XHRcdHN0cnVjdCBkaXNrX2NvbmYgKm9sZF9kaXNrX2NvbmYgPSBOVUxMLCAqbmV3X2Rpc2tfY29uZiA9IE5VTEw7XG4zNjY0Olx0XHRjb25zdCBpbnQgYXB2ID0gY29ubmVjdGlvbi1cdTAwM2VhZ3JlZWRfcHJvX3ZlcnNpb247XG4zNjY1Olx0XHRzdHJ1Y3QgZmlmb19idWZmZXIgKm9sZF9wbGFuID0gTlVMTCwgKm5ld19wbGFuID0gTlVMTDtcbjM2NjY6XHRcdHVuc2lnbmVkIGludCBmaWZvX3NpemUgPSAwO1xuMzY2NzpcdFx0aW50IGVycjtcbjM2Njg6XHRcbjM2Njk6XHRcdHBlZXJfZGV2aWNlID0gY29ubl9wZWVyX2RldmljZShjb25uZWN0aW9uLCBwaS1cdTAwM2V2bnIpO1xuMzY3MDpcdFx0aWYgKCFwZWVyX2RldmljZSlcbjM2NzE6XHRcdFx0cmV0dXJuIGNvbmZpZ191bmtub3duX3ZvbHVtZShjb25uZWN0aW9uLCBwaSk7XG4zNjcyOlx0XHRkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4zNjczOlx0XG4zNjc0Olx0XHRleHBfbWF4X3N6ICA9IGFwdiBcdTAwM2M9IDg3ID8gc2l6ZW9mKHN0cnVjdCBwX3JzX3BhcmFtKVxuMzY3NTpcdFx0XHQgICAgOiBhcHYgPT0gODggPyBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW0pXG4zNjc2Olx0XHRcdFx0XHRcdCYjNDM7IFNIQVJFRF9TRUNSRVRfTUFYXG4zNjc3Olx0XHRcdCAgICA6IGFwdiBcdTAwM2M9IDk0ID8gc2l6ZW9mKHN0cnVjdCBwX3JzX3BhcmFtXzg5KVxuMzY3ODpcdFx0XHQgICAgOiAvKiBhcHYgXHUwMDNlPSA5NSAqLyBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW1fOTUpO1xuMzY3OTpcdFxuMzY4MDpcdFx0aWYgKHBpLVx1MDAzZXNpemUgXHUwMDNlIGV4cF9tYXhfc3opIHtcbjM2ODE6XHRcdFx0ZHJiZF9lcnIoZGV2aWNlLCBcJiMzNDtTeW5jUGFyYW0gcGFja2V0IHRvbyBsb25nOiByZWNlaXZlZCAldSwgZXhwZWN0ZWQgXHUwMDNjPSAldSBieXRlc1xcblwmIzM0OyxcbjM2ODI6XHRcdFx0ICAgIHBpLVx1MDAzZXNpemUsIGV4cF9tYXhfc3opO1xuMzY4MzpcdFx0XHRyZXR1cm4gLUVJTztcbjM2ODQ6XHRcdH1cbjM2ODU6XHRcbjM2ODY6XHRcdGlmIChhcHYgXHUwMDNjPSA4OCkge1xuMzY4NzpcdFx0XHRoZWFkZXJfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcF9yc19wYXJhbSk7XG4zNjg4Olx0XHRcdGRhdGFfc2l6ZSA9IHBpLVx1MDAzZXNpemUgLSBoZWFkZXJfc2l6ZTtcbjM2ODk6XHRcdH0gZWxzZSBpZiAoYXB2IFx1MDAzYz0gOTQpIHtcbjM2OTA6XHRcdFx0aGVhZGVyX3NpemUgPSBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW1fODkpO1xuMzY5MTpcdFx0XHRkYXRhX3NpemUgPSBwaS1cdTAwM2VzaXplIC0gaGVhZGVyX3NpemU7XG4zNjkyOlx0XHRcdERfQVNTRVJUKGRldmljZSwgZGF0YV9zaXplID09IDApO1xuMzY5MzpcdFx0fSBlbHNlIHtcbjM2OTQ6XHRcdFx0aGVhZGVyX3NpemUgPSBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW1fOTUpO1xuMzY5NTpcdFx0XHRkYXRhX3NpemUgPSBwaS1cdTAwM2VzaXplIC0gaGVhZGVyX3NpemU7XG4zNjk2Olx0XHRcdERfQVNTRVJUKGRldmljZSwgZGF0YV9zaXplID09IDApO1xuMzY5NzpcdFx0fVxuMzY5ODpcdFxuMzY5OTpcdFx0LyogaW5pdGlhbGl6ZSB2ZXJpZnlfYWxnIGFuZCBjc3Vtc19hbGcgKi9cbjM3MDA6XHRcdHAgPSBwaS1cdTAwM2VkYXRhO1xuMzcwMTpcdFx0QlVJTERfQlVHX09OKHNpemVvZihwLVx1MDAzZWFsZ3MpICE9IDIgKiBTSEFSRURfU0VDUkVUX01BWCk7XG4zNzAyOlx0XHRtZW1zZXQoXHUwMDI2cC1cdTAwM2VhbGdzLCAwLCBzaXplb2YocC1cdTAwM2VhbGdzKSk7XG4zNzAzOlx0XG4zNzA0Olx0XHRlcnIgPSBkcmJkX3JlY3ZfYWxsKHBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb24sIHAsIGhlYWRlcl9zaXplKTtcbjM3MDU6XHRcdGlmIChlcnIpXG4zNzA2Olx0XHRcdHJldHVybiBlcnI7XG4zNzA3Olx0XG4zNzA4Olx0XHRtdXRleF9sb2NrKFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlcmVzb3VyY2UtXHUwMDNlY29uZl91cGRhdGUpO1xuMzcwOTpcdFx0b2xkX25ldF9jb25mID0gcGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbi1cdTAwM2VuZXRfY29uZjtcbjM3MTA6XHRcdGlmIChnZXRfbGRldihkZXZpY2UpKSB7XG4zNzExOlx0XHRcdG5ld19kaXNrX2NvbmYgPSBremFsbG9jX29iaihzdHJ1Y3QgZGlza19jb25mKTtcbjM3MTI6XHRcdFx0aWYgKCFuZXdfZGlza19jb25mKSB7XG4zNzEzOlx0XHRcdFx0cHV0X2xkZXYoZGV2aWNlKTtcbjM3MTQ6XHRcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2Y29ubmVjdGlvbi1cdTAwM2VyZXNvdXJjZS1cdTAwM2Vjb25mX3VwZGF0ZSk7XG4zNzE1Olx0XHRcdFx0ZHJiZF9lcnIoZGV2aWNlLCBcJiMzNDtBbGxvY2F0aW9uIG9mIG5ldyBkaXNrX2NvbmYgZmFpbGVkXFxuXCYjMzQ7KTtcbjM3MTY6XHRcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjM3MTc6XHRcdFx0fVxuMzcxODpcdFxuMzcxOTpcdFx0XHRvbGRfZGlza19jb25mID0gZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlZGlza19jb25mO1xuMzcyMDpcdFx0XHQqbmV3X2Rpc2tfY29uZiA9ICpvbGRfZGlza19jb25mO1xuMzcyMTpcdFxuMzcyMjpcdFx0XHRuZXdfZGlza19jb25mLVx1MDAzZXJlc3luY19yYXRlID0gYmUzMl90b19jcHUocC1cdTAwM2VyZXN5bmNfcmF0ZSk7XG4zNzIzOlx0XHR9XG4zNzI0Olx0XG4zNzI1Olx0XHRpZiAoYXB2IFx1MDAzZT0gODgpIHtcbjM3MjY6XHRcdFx0aWYgKGFwdiA9PSA4OCkge1xuMzcyNzpcdFx0XHRcdGlmIChkYXRhX3NpemUgXHUwMDNlIFNIQVJFRF9TRUNSRVRfTUFYIHx8IGRhdGFfc2l6ZSA9PSAwKSB7XG4zNzI4Olx0XHRcdFx0XHRkcmJkX2VycihkZXZpY2UsIFwmIzM0O3ZlcmlmeS1hbGcgb2Ygd3Jvbmcgc2l6ZSwgXCYjMzQ7XG4zNzI5Olx0XHRcdFx0XHRcdFwmIzM0O3BlZXIgd2FudHMgJXUsIGFjY2VwdGluZyBvbmx5IHVwIHRvICV1IGJ5dGVcXG5cJiMzNDssXG4zNzMwOlx0XHRcdFx0XHRcdGRhdGFfc2l6ZSwgU0hBUkVEX1NFQ1JFVF9NQVgpO1xuMzczMTpcdFx0XHRcdFx0Z290byByZWNvbm5lY3Q7XG4zNzMyOlx0XHRcdFx0fVxuMzczMzpcdFxuMzczNDpcdFx0XHRcdGVyciA9IGRyYmRfcmVjdl9hbGwocGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbiwgcC1cdTAwM2V2ZXJpZnlfYWxnLCBkYXRhX3NpemUpO1xuMzczNTpcdFx0XHRcdGlmIChlcnIpXG4zNzM2Olx0XHRcdFx0XHRnb3RvIHJlY29ubmVjdDtcbjM3Mzc6XHRcdFx0XHQvKiB3ZSBleHBlY3QgTlVMIHRlcm1pbmF0ZWQgc3RyaW5nICovXG4zNzM4Olx0XHRcdFx0LyogYnV0IGp1c3QgaW4gY2FzZSBzb21lb25lIHRyaWVzIHRvIGJlIGV2aWwgKi9cbjM3Mzk6XHRcdFx0XHREX0FTU0VSVChkZXZpY2UsIHAtXHUwMDNldmVyaWZ5X2FsZ1tkYXRhX3NpemUtMV0gPT0gMCk7XG4zNzQwOlx0XHRcdFx0cC1cdTAwM2V2ZXJpZnlfYWxnW2RhdGFfc2l6ZS0xXSA9IDA7XG4zNzQxOlx0XG4zNzQyOlx0XHRcdH0gZWxzZSAvKiBhcHYgXHUwMDNlPSA4OSAqLyB7XG4zNzQzOlx0XHRcdFx0Lyogd2Ugc3RpbGwgZXhwZWN0IE5VTCB0ZXJtaW5hdGVkIHN0cmluZ3MgKi9cbjM3NDQ6XHRcdFx0XHQvKiBidXQganVzdCBpbiBjYXNlIHNvbWVvbmUgdHJpZXMgdG8gYmUgZXZpbCAqL1xuMzc0NTpcdFx0XHRcdERfQVNTRVJUKGRldmljZSwgcC1cdTAwM2V2ZXJpZnlfYWxnW1NIQVJFRF9TRUNSRVRfTUFYLTFdID09IDApO1xuMzc0NjpcdFx0XHRcdERfQVNTRVJUKGRldmljZSwgcC1cdTAwM2Vjc3Vtc19hbGdbU0hBUkVEX1NFQ1JFVF9NQVgtMV0gPT0gMCk7XG4zNzQ3Olx0XHRcdFx0cC1cdTAwM2V2ZXJpZnlfYWxnW1NIQVJFRF9TRUNSRVRfTUFYLTFdID0gMDtcbjM3NDg6XHRcdFx0XHRwLVx1MDAzZWNzdW1zX2FsZ1tTSEFSRURfU0VDUkVUX01BWC0xXSA9IDA7XG4zNzQ5Olx0XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODc1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGRpc2tfY29uZmAgVXBkYXRlIGluIERSQkQgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgRFJCRCBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzcxMC4gSSBzZWUgdGhhdCBgZ2V0X2xkZXYoZGV2aWNlKWAgaXMgYmVpbmcgY2FsbGVkLiBJZiB0aGF0IHJldHVybnMgdHJ1ZSwgYSBgbmV3X2Rpc2tfY29uZmAgaXMgYWxsb2NhdGVkLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2g7IHdlJiMzOTtyZSBwcm9iYWJseSBzZXR0aW5nIHVwIHRvIHVwZGF0ZSB0aGUgZGlzayBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCBmdW5jdGlvbiBvZiBgZ2V0X2xkZXYoZGV2aWNlKWAgYW5kIGBwdXRfbGRldihkZXZpY2UpYCB0byBiZSBzdXJlLgoKTG9va2luZyBmdXJ0aGVyLCBJIHNlZSBtb3JlIGludGVyZXN0aW5nIGxvZ2ljIGF0IGhpZ2hlciBBUFYgdmFsdWVzLiBJZiBgYXB2ICZndDsgOTRgIGFuZCBgbmV3X2Rpc2tfY29uZmAgZXhpc3RzLCB3ZSYjMzk7cmUgY29weWluZyBzb21lIHZhbHVlcyBmcm9tIHNvbWUgYHBgIG9iamVjdCBpbnRvIGBuZXdfZGlza19jb25mYC4gU3BlY2lmaWNhbGx5LCBgY19wbGFuX2FoZWFkYCwgYGNfZGVsYXlfdGFyZ2V0YCwgYGNfZmlsbF90YXJnZXRgLCBhbmQgYGNfbWF4X3JhdGVgIGFyZSBiZWluZyB1cGRhdGVkLiBUaGVuLCBhIGBmaWZvX3NpemVgIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gYGNfcGxhbl9haGVhZGAgYW5kIHVzZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBgbmV3X3BsYW5gIHVzaW5nIGBmaWZvX2FsbG9jYC4KCk5vdywgaWYgdGhhdCBgZmlmb19hbGxvY2AgZmFpbHMsIGl0IGp1bXBzIHRvIHRoZSBgZGlzY29ubmVjdGAgbGFiZWwuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIGJpdCBJIHdhbnQgdG8gdW5kZXJzdGFuZC4gV2hhdCBleGFjdGx5IGlzIGhhcHBlbmluZyBkdXJpbmcgdGhhdCBkaXNjb25uZWN0PyBXaGF0IHJlc291cmNlcyBhcmUgYmVpbmcgZnJlZWQ/IElzIHRoZXJlIGEgcmlzayBvZiBtZW1vcnkgbGVha3Mgb3IgbGVhdmluZyB0aGUgZGV2aWNlIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZT8gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY29kZSBmcm9tIHRoZSBgZGlzY29ubmVjdGAgbGFiZWwgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgaGFuZGxlZCBncmFjZWZ1bGx5IGluIGNhc2Ugb2YgYSBgZmlmb19hbGxvY2AgZmFpbHVyZS4gSSYjMzk7bGwgY2hlY2sgaG93IGBuZXdfZGlza19jb25mYCBpcyB1c2VkIGluIHRoaXMgcHJvY2VzcyBhcyB3ZWxsLCB0byBtYWtlIHN1cmUgaXQmIzM5O3MgZnJlZWQgaWYgaXQgZG9lc24mIzM5O3QgZ2V0IGFzc2lnbmVkIHByb3Blcmx5LiBJJiMzOTtsbCBhbHNvIGJlIHNlYXJjaGluZyBmb3IgcmVsYXRlZCBjb2RlLCBhcyB0aGVyZSBjb3VsZCBiZSBvdGhlciBwYXRocyB0aHJvdWdoIHRoZSBjb2RlIHdoaWNoIHBlcmZvcm0gdGhpcyBraW5kIG9mIHVwZGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzgxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszODEwOlx0XHRcdFx0XHRzdHJzY3B5KG5ld19uZXRfY29uZi1cdTAwM2Vjc3Vtc19hbGcsIHAtXHUwMDNlY3N1bXNfYWxnKTtcbjM4MTE6XHRcdFx0XHRcdG5ld19uZXRfY29uZi1cdTAwM2Vjc3Vtc19hbGdfbGVuID0gc3RybGVuKHAtXHUwMDNlY3N1bXNfYWxnKSAmIzQzOyAxO1xuMzgxMjpcdFx0XHRcdFx0Y3J5cHRvX2ZyZWVfc2hhc2gocGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbi1cdTAwM2Vjc3Vtc190Zm0pO1xuMzgxMzpcdFx0XHRcdFx0cGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbi1cdTAwM2Vjc3Vtc190Zm0gPSBjc3Vtc190Zm07XG4zODE0Olx0XHRcdFx0XHRkcmJkX2luZm8oZGV2aWNlLCBcJiMzNDt1c2luZyBjc3Vtcy1hbGc6IFxcXCYjMzQ7JXNcXFwmIzM0O1xcblwmIzM0OywgcC1cdTAwM2Vjc3Vtc19hbGcpO1xuMzgxNTpcdFx0XHRcdH1cbjM4MTY6XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoY29ubmVjdGlvbi1cdTAwM2VuZXRfY29uZiwgbmV3X25ldF9jb25mKTtcbjM4MTc6XHRcdFx0fVxuMzgxODpcdFx0fVxuMzgxOTpcdFxuMzgyMDpcdFx0aWYgKG5ld19kaXNrX2NvbmYpIHtcbjM4MjE6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldmljZS1cdTAwM2VsZGV2LVx1MDAzZWRpc2tfY29uZiwgbmV3X2Rpc2tfY29uZik7XG4zODIyOlx0XHRcdHB1dF9sZGV2KGRldmljZSk7XG4zODIzOlx0XHR9XG4zODI0Olx0XG4zODI1Olx0XHRpZiAobmV3X3BsYW4pIHtcbjM4MjY6XHRcdFx0b2xkX3BsYW4gPSBkZXZpY2UtXHUwMDNlcnNfcGxhbl9zO1xuMzgyNzpcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2aWNlLVx1MDAzZXJzX3BsYW5fcywgbmV3X3BsYW4pO1xuMzgyODpcdFx0fVxuMzgyOTpcdFxuMzgzMDpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlcmVzb3VyY2UtXHUwMDNlY29uZl91cGRhdGUpO1xuMzgzMTpcdFx0c3luY2hyb25pemVfcmN1KCk7XG4zODMyOlx0XHRpZiAobmV3X25ldF9jb25mKVxuMzgzMzpcdFx0XHRrZnJlZShvbGRfbmV0X2NvbmYpO1xuMzgzNDpcdFx0a2ZyZWUob2xkX2Rpc2tfY29uZik7XG4zODM1Olx0XHRrZnJlZShvbGRfcGxhbik7XG4zODM2Olx0XG4zODM3Olx0XHRyZXR1cm4gMDtcbjM4Mzg6XHRcbjM4Mzk6XHRyZWNvbm5lY3Q6XG4zODQwOlx0XHRpZiAobmV3X2Rpc2tfY29uZikge1xuMzg0MTpcdFx0XHRwdXRfbGRldihkZXZpY2UpO1xuMzg0MjpcdFx0XHRrZnJlZShuZXdfZGlza19jb25mKTtcbjM4NDM6XHRcdH1cbjM4NDQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZjb25uZWN0aW9uLVx1MDAzZXJlc291cmNlLVx1MDAzZWNvbmZfdXBkYXRlKTtcbjM4NDU6XHRcdHJldHVybiAtRUlPO1xuMzg0NjpcdFxuMzg0NzpcdGRpc2Nvbm5lY3Q6XG4zODQ4Olx0XHRrZnJlZShuZXdfcGxhbik7XG4zODQ5Olx0XHRpZiAobmV3X2Rpc2tfY29uZikge1xuMzg1MDpcdFx0XHRwdXRfbGRldihkZXZpY2UpO1xuMzg1MTpcdFx0XHRrZnJlZShuZXdfZGlza19jb25mKTtcbjM4NTI6XHRcdH1cbjM4NTM6XHRcdG11dGV4X3VubG9jayhcdTAwMjZjb25uZWN0aW9uLVx1MDAzZXJlc291cmNlLVx1MDAzZWNvbmZfdXBkYXRlKTtcbjM4NTQ6XHRcdC8qIGp1c3QgZm9yIGNvbXBsZXRlbmVzczogYWN0dWFsbHkgbm90IG5lZWRlZCxcbjM4NTU6XHRcdCAqIGFzIHRoaXMgaXMgbm90IHJlYWNoZWQgaWYgY3N1bXNfdGZtIHdhcyBvay4gKi9cbjM4NTY6XHRcdGNyeXB0b19mcmVlX3NoYXNoKGNzdW1zX3RmbSk7XG4zODU3Olx0XHQvKiBidXQgZnJlZSB0aGUgdmVyaWZ5X3RmbSBhZ2FpbiwgaWYgY3N1bXNfdGZtIGRpZCBub3Qgd29yayBvdXQgKi9cbjM4NTg6XHRcdGNyeXB0b19mcmVlX3NoYXNoKHZlcmlmeV90Zm0pO1xuMzg1OTpcdFx0Y29ubl9yZXF1ZXN0X3N0YXRlKHBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb24sIE5TKGNvbm4sIENfRElTQ09OTkVDVElORyksIENTX0hBUkQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjI0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlZmVyZW5jZSBDb3VudGluZyBCdWcgRml4KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEluIHRoaXMgYGRpc2Nvbm5lY3RgIHNlY3Rpb24sIEkgc2VlIGEgY2xlYXIgcG90ZW50aWFsIGZvciBhIGRvdWJsZSBgcHV0X2xkZXYoZGV2aWNlKWAgY2FsbC4gSXQgbG9va3MgbGlrZSB0aGUgY29kZSBpbiB0aGUgYGRpc2Nvbm5lY3RgIGxhYmVsICphbHJlYWR5KiBhY2NvdW50cyBmb3IgYG5ld19kaXNrX2NvbmZgIGJlaW5nIGFsbG9jYXRlZCBhbmQgdGhlcmVmb3JlIGNhbGxzIGBwdXRfbGRldihkZXZpY2UpYC4gSG93ZXZlciwgdGhlcmUmIzM5O3MgYSBjb25kaXRpb25hbCBwYXRoLCBzcGVjaWZpY2FsbHkgd2hlbiBgZmlmb19hbGxvY2AgZmFpbHMsIHRoYXQgKmFsc28qIGNhbGxzIGBwdXRfbGRldihkZXZpY2UpYCAqYmVmb3JlKiBqdW1waW5nIHRvIGBkaXNjb25uZWN0YC4gVGhpcyBpcyBkdXBsaWNhdGVkIGZ1bmN0aW9uYWxpdHksIGEgZGVmaW5pdGUgcmVjaXBlIGZvciBhIHJlZmVyZW5jZSBjb3VudGluZyBwcm9ibGVtIQoKVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCBgbmV3X2Rpc2tfY29uZmAgKndpbGwqIGJlIG5vbi1OVUxMIGluIHRoZSBmYWlsdXJlIHBhdGggb2YgYGZpZm9fYWxsb2NgIGJlY2F1c2Ugb2YgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGBpZiAoYXB2ICZndDsgOTQgJmFtcDsmYW1wOyBuZXdfZGlza19jb25mKWAuIFNvLCB0aGUgY29kZSB3YXMsIGVmZmVjdGl2ZWx5LCBjYWxsaW5nIGBwdXRfbGRldihkZXZpY2UpYCB0d2ljZSBpbiB0aGF0IGZhaWx1cmUgc2NlbmFyaW8sIGxlYWRpbmcgdG8gYSBkb3VibGUtZnJlZSBvciBvdGhlciByZWZlcmVuY2UgY291bnQtcmVsYXRlZCBpc3N1ZS4gVGhlIGZpeCwgSSBzZWUsIHNtYXJ0bHkgcmVtb3ZlcyB0aGUgZmlyc3QgYHB1dF9sZGV2KGRldmljZSlgIGNhbGwsIG5lYXRseSByZXNvbHZpbmcgdGhlIGRvdWJsZS1wdXQgYnVnLgoKVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGZ1bmN0aW9uYWwgY2hhbmdlOyBpdCYjMzk7cyBmaXhpbmcgYSBjbGVhciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3IuIEl0JiMzOTtzIHRoZSBraW5kIG9mIGlzc3VlIHRoYXQgY2FuIGxlYWQgdG8gc3VidGxlIGJ1dCBuYXN0eSBwcm9ibGVtcyBpbiB0aGUgbG9uZyBydW4uIE5vdywgdGhlIGtleSBxdWVzdGlvbiBmb3IgbWUgaXMgd2hldGhlciB0aGlzIGlzIGVhc2lseSB0ZXN0YWJsZS4gVGhpcyBpcyBsaWtlbHkgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgcGF0Y2ggcmVsYXRlcyB0byB0aGUgRFJCRCBibG9jayBkcml2ZXIuIEl0IGNhbiBiZSBlYXNpbHkgdGVzdGVkLCBzcGVjaWZpY2FsbHkgYmVjYXVzZSBEUkJEIGlzIGVhc2lseSB0ZXN0YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJIHNob3VsZCBjaGVjayB0byBzZWUgaWYgRFJCRCBpcyBlbmFibGVkIG9yIGNhbiBiZSBlbmFibGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9EUkJEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWc9Nj1jb21tZW50IFwmIzM0O0RSQkQgZGlzYWJsZWQgYmVjYXVzZSBQUk9DX0ZTIG9yIElORVQgbm90IHNlbGVjdGVkXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWctOC1cbmRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnOjk6Y29uZmlnIEJMS19ERVZfRFJCRFxuZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtEUkJEIERpc3RyaWJ1dGVkIFJlcGxpY2F0ZWQgQmxvY2sgRGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ1MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBEUkJEJiMzOTtzIFN5bmNocm9uaXphdGlvbiBQYXJhbWV0ZXIgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byBmdXp6aW5nIERSQkQsIHNwZWNpZmljYWxseSB0aGUgc3luY2hyb25pemF0aW9uIHBhcmFtZXRlciBoYW5kbGluZy4gVGhlIGNvcmUgc2VlbXMgdG8gaGluZ2Ugb24gdGhlIGBCTEtfREVWX0RSQkRgIGNvbmZpZ3VyYXRpb24sIHNvIHRoYXQmIzM5O3MgbXkgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0JiMzOTtzIGVuYWJsZWQ7IG5vIHBvaW50IGdvaW5nIGZ1cnRoZXIgaWYgdGhhdCYjMzk7cyBub3QgcmlnaHQuCgpNeSBpbml0aWFsIHNjYW4gZm9jdXNlcyBvbiBgcmVjZWl2ZV9TeW5jUGFyYW1gIGFuZCBgZHJiZF9yZWNlaXZlci5jYC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgZGVzaWduYXRlZCBwcm90b2NvbCBoYW5kbGVyIGZvciBEUkJELCBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIGluY29taW5nIGBQX1NZTkNfUEFSQU1gIHBhY2tldHMuIEl04oCZcyBwcmV0dHkgY2xlYXIgdGhhdCB0byB0cmlnZ2VyIGZ1enppbmcsIEkmIzM5O2xsIG5lZWQgdG8gbWFuaXB1bGF0ZSBhbmQgc2VuZCBwYWNrZXRzIGRpcmVjdGx5IHRvIHRoZSBEUkJEIHNvY2tldC4KCk15IHByaW1hcnkgZm9jdXMsIG15ICYjMzQ7Rm9jdXNTeW1ib2wsJiMzNDsgd2lsbCBiZSBgcmVjZWl2ZV9TeW5jUGFyYW1gLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IHBheWxvYWRzIGFuZCB0cmlnZ2Vycy4gVGhlIGNyaXRpY2FsICYjMzQ7RW5hYmxlQ29uZmlnJiMzNDsgaXMgZGVmaW5pdGVseSBgQkxLX0RFVl9EUkJEYCwgYXMgdGhhdCBlbmFibGVzIERSQkQgc3VwcG9ydC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgbm8gb3RoZXIgbGVzcyBvYnZpb3VzIGNvbmZpZ3MgYXJlIGFsc28gbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9EUkJEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnPTY9Y29tbWVudCBcJiMzNDtEUkJEIGRpc2FibGVkIGJlY2F1c2UgUFJPQ19GUyBvciBJTkVUIG5vdCBzZWxlY3RlZFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnLTgtXG5kcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZzo5OmNvbmZpZyBCTEtfREVWX0RSQkRcbmRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7RFJCRCBEaXN0cmlidXRlZCBSZXBsaWNhdGVkIEJsb2NrIERldmljZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NTgKCQkJCQkJCW91dHB1dDogOTQKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgYSBDcml0aWNhbCBQYXRjaCoqCgpBbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBwb3RlbnRpYWxseSBuYXN0eSwgYnVnIGluIGByZWNlaXZlX1N5bmNQYXJhbWAuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgZG91YmxlLXB1dCBpc3N1ZSwgc3BlY2lmaWNhbGx5IHRyaWdnZXJlZCB3aGVuIHRoZSBgZmlmb19hbGxvY2AgY2FsbCBmYWlscy4gVGhhdCBtYWtlcyBpdCBhIGZ1bmN0aW9uYWwgZml4LCBub3QganVzdCBjb3NtZXRpYy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSAqaG93KiB0aGlzIGlzIGhhcHBlbmluZy4gVGhlIGRvdWJsZS1wdXQgaW1wbGllcyB0aGF0IHNvbWUgbG9naWMgaXMgYXNzdW1pbmcgYWxsb2NhdGlvbiAqd2lsbCogc3VjY2VlZCBhbmQgY29udGludWVzLCBsZWFkaW5nIHRvIHRoZSBleHRyYSwgYW5kIHBvdGVudGlhbGx5IGRpc2FzdHJvdXMsIGF0dGVtcHQgdG8gcHV0LiBOb3csIHRoZSBmaXggc291bmRzIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyB0aGUgZmFpbHVyZSBjYXNlIG9mIHRoZSBhbGxvY2F0aW9uLiBPa2F5LiBHb3QgaXQuIFNvIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hlbiBgZmlmb19hbGxvY2AgKmRvZXNuJiMzOTt0KiB3b3JrLCB3ZSBleGl0IGdyYWNlZnVsbHkgYW5kIGNvcnJlY3RseSwgcHJldmVudGluZyB0aGUgZG91YmxlLXB1dC4KClNvLCBpbiB0aGUgcmV2aXNlZCBjb2RlLCBteSBhY3Rpb24gd2lsbCBiZSB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGUgYXBwcm9wcmlhdGUgcmV0dXJuIHZhbHVlcy4gVGhpcyBpcyBsaWtlbHkgaGFuZGxpbmcgdGhlIGVycm9yIGNvbmRpdGlvbiBmcm9tIHRoZSBmYWlsZWQgYWxsb2NhdGlvbi4gSXQmIzM5O3MgYSBjbGVhbiBhcHByb2FjaC4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gZml4aW5nIHRoaXMgaXNzdWUuIEkgbmVlZCB0byByZXZpZXcgaG93IHRoZSByZXR1cm4gdmFsdWUgb2YgYGZpZm9fYWxsb2NgIGlzIGJlaW5nIGhhbmRsZWQgaW4gdGhlIGV4aXN0aW5nIGNvZGUgYW5kIGVuc3VyZSB0aGF0IHRoaXMgcGF0Y2ggcHJvdmlkZXMgdGhlIGNvcnJlY3QgcmVzcG9uc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX0RSQkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZWNlaXZlX1N5bmNQYXJhbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRvdWJsZS1wdXQgYnVnIG9mIHRoZSBsb2NhbCBkZXZpY2UgcmVmZXJlbmNlIGluIHRoZSBEUkJEIHByb3RvY29sIGhhbmRsZXIgYHJlY2VpdmVfU3luY1BhcmFtYCB3aGVuIGBmaWZvX2FsbG9jYCBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGZvciBhIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBpbiByZWFjaGFibGUgYmxvY2sgZHJpdmVyIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfRFJCRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlY2VpdmVfU3luY1BhcmFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlLXB1dCBidWcgb2YgdGhlIGxvY2FsIGRldmljZSByZWZlcmVuY2UgaW4gdGhlIERSQkQgcHJvdG9jb2wgaGFuZGxlciBgcmVjZWl2ZV9TeW5jUGFyYW1gIHdoZW4gYGZpZm9fYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjMxOjEzLjMzNzk3NjI0NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMTYwNDM0NjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfRFJCRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlY2VpdmVfU3luY1BhcmFtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkb3VibGUtcHV0IGJ1ZyBvZiB0aGUgbG9jYWwgZGV2aWNlIHJlZmVyZW5jZSBpbiB0aGUgRFJCRCBwcm90b2NvbCBoYW5kbGVyIGByZWNlaXZlX1N5bmNQYXJhbWAgd2hlbiBgZmlmb19hbGxvY2AgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gcmVhY2hhYmxlIGJsb2NrIGRyaXZlciBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMToxMy4zMzc5ODMxODZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDU0ODk1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkMDcwMzQxODRhMWJhMmJiZTlkNWM2MDVlMzRiZmY2ZDllZTRhZGFjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVuIDI1IDE1OjMxOjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXFxuaW5kZXggNThiOTViZjRiZGNhNmEuLmY2MThkMDNmZDJhNmVhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXFxuQEAgLTM3ODcsNyArMzc4Nyw2IEBAIHN0YXRpYyBpbnQgcmVjZWl2ZV9TeW5jUGFyYW0oc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHBhY2tldF9pXFxuIFxcdFxcdFxcdFxcdG5ld19wbGFuID0gZmlmb19hbGxvYyhmaWZvX3NpemUpO1xcbiBcXHRcXHRcXHRcXHRpZiAoIW5ld19wbGFuKSB7XFxuIFxcdFxcdFxcdFxcdFxcdGRyYmRfZXJyKGRldmljZSwgXFxcImttYWxsb2Mgb2YgZmlmb19idWZmZXIgZmFpbGVkXFxcIik7XFxuLVxcdFxcdFxcdFxcdFxcdHB1dF9sZGV2KGRldmljZSk7XFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gZGlzY29ubmVjdDtcXG4gXFx0XFx0XFx0XFx0fVxcbiBcXHRcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjMxOjE1LjY0NDQ5MjUwNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4NTM5MDkyNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9EUkJEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVjZWl2ZV9TeW5jUGFyYW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRvdWJsZS1wdXQgYnVnIG9mIHRoZSBsb2NhbCBkZXZpY2UgcmVmZXJlbmNlIGluIHRoZSBEUkJEIHByb3RvY29sIGhhbmRsZXIgYHJlY2VpdmVfU3luY1BhcmFtYCB3aGVuIGBmaWZvX2FsbG9jYCBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGZvciBhIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBpbiByZWFjaGFibGUgYmxvY2sgZHJpdmVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDA3MDM0MTg0YTFiYTJiYmU5ZDVjNjA1ZTM0YmZmNmQ5ZWU0YWRhY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVuIDI1IDE1OjMxOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcbmluZGV4IDU4Yjk1YmY0YmRjYTZhLi5mNjE4ZDAzZmQyYTZlYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcbkBAIC0zNzg3LDcgKzM3ODcsNiBAQCBzdGF0aWMgaW50IHJlY2VpdmVfU3luY1BhcmFtKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHN0cnVjdCBwYWNrZXRfaVxuIFx0XHRcdFx0bmV3X3BsYW4gPSBmaWZvX2FsbG9jKGZpZm9fc2l6ZSk7XG4gXHRcdFx0XHRpZiAoIW5ld19wbGFuKSB7XG4gXHRcdFx0XHRcdGRyYmRfZXJyKGRldmljZSwgXCJrbWFsbG9jIG9mIGZpZm9fYnVmZmVyIGZhaWxlZFwiKTtcbi1cdFx0XHRcdFx0cHV0X2xkZXYoZGV2aWNlKTtcbiBcdFx0XHRcdFx0Z290byBkaXNjb25uZWN0O1xuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjMxOjE1LjY0NDQ5NDczNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzIyMjk0NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkRSQkQgUmVjZWl2ZXIgUGF0Y2ggQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIHJlbW92aW5nIGEgYHB1dF9sZGV2KGRldmljZSk7YCBjYWxsIHdpdGhpbiB0aGUgYHJlY2VpdmVfU3luY1BhcmFtYCBmdW5jdGlvbi4gVGhpcyBpcyBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2h5IHRoZXkgZGVjaWRlZCB0byBtYWtlIHRoaXMgY2hhbmdlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlLiBNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIG1lbW9yeSBsZWFrcy4gUmVtb3ZpbmcgdGhlIGBwdXRfbGRldmAgY2FsbCBpbiBhIGZhaWx1cmUgcGF0aCwgc3BlY2lmaWNhbGx5IHRoZSBgZmlmb19hbGxvY2AgZmFpbHVyZSBwYXRoLCBpcyBhIHBvdGVudGlhbCBhcmVhIGZvciBsZWFrYWdlIGFuZCBjb3VsZCBsZWFkIHRvIHByb2JsZW1zIGRvd24gdGhlIHJvYWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGZpZm9fYWxsb2NgICpkb2VzKiBhbmQgd2hhdCBgcHV0X2xkZXZgICpkb2VzKiB0byBiZSBjZXJ0YWluLiBJcyB0aGlzIHNhZmUgdG8gbWFrZT8gSXMgdGhlIGRldmljZSBoYW5kbGUgYmVpbmcgcHJvcGVybHkgaGFuZGxlZCBpbiBhbGwgb3RoZXIgc2NlbmFyaW9zPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29kZSBjYXJlZnVsbHkgYW5kIGZpZ3VyZSBvdXQgdGhlIGNoYWluIG9mIGV2ZW50cy4gSSB3YW50IHRvIGRvdWJsZSBjaGVjayB0aGUgZXJyb3IgaGFuZGxpbmcgaGVyZSwgYW5kIHZlcmlmeSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIGNvcnJlY3QuIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIGV2ZXIgY2FsbGVkIHdpdGggYW4gdW5leHBlY3RlZCBgZGV2aWNlYCB2YWx1ZS4gRXNzZW50aWFsbHksIHRoZSBuZXh0IHN0ZXAgaXMgYSBkZWVwIGRpdmUgaW50byBgcmVjZWl2ZV9TeW5jUGFyYW1gIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSwgZXNwZWNpYWxseSBhbnl0aGluZyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZXZpY2UgaGFuZGxpbmcgd2l0aGluIHRoYXQgbW9kdWxlLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsIGFuZCBtYWtlIHN1cmUgdGhlcmUncyBubyBzdWJ0bGUgcmVzb3VyY2UgbGVhayBvciBjb3JydXB0aW9uIGludHJvZHVjZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjMxOjE5Ljc3NjcyNzQzNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQ4NzMwMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVjZWl2ZV9TeW5jUGFyYW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jPTM2NDc9c3RhdGljIGludCBjb25maWdfdW5rbm93bl92b2x1bWUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHBhY2tldF9pbmZvICpwaSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMtMzY1My1cXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jOjM2NTQ6c3RhdGljIGludCByZWNlaXZlX1N5bmNQYXJhbShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxcbmRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMtMzY1NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jPTQ4MzI9c3RhdGljIHN0cnVjdCBkYXRhX2NtZCBkcmJkX2NtZF9oYW5kbGVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jLTQ4NDEtXFx0W1BfUlNfREFUQV9SRVFVRVNUXSA9IHsgMCwgc2l6ZW9mKHN0cnVjdCBwX2Jsb2NrX3JlcSksIHJlY2VpdmVfRGF0YVJlcXVlc3QgfSxcXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jOjQ4NDI6XFx0W1BfU1lOQ19QQVJBTV1cXHQgICAgPSB7IDEsIDAsIHJlY2VpdmVfU3luY1BhcmFtIH0sXFxuZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYzo0ODQzOlxcdFtQX1NZTkNfUEFSQU04OV0gICAgPSB7IDEsIDAsIHJlY2VpdmVfU3luY1BhcmFtIH0sXFxuZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYy00ODQ0LVxcdFtQX1BST1RPQ09MXSAgICAgICAgPSB7IDEsIHNpemVvZihzdHJ1Y3QgcF9wcm90b2NvbCksIHJlY2VpdmVfcHJvdG9jb2wgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MjAuMjAxNjA3OTA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2OTM0ODk3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgYHJlY2VpdmVfU3luY1BhcmFtYCBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHplcm9pbmcgaW4gb24gYHJlY2VpdmVfU3luY1BhcmFtYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSBhYm91dCBoYW5kbGluZyBzb21lIHNvcnQgb2YgcGFyYW1ldGVyIHN5bmNocm9uaXphdGlvbi4gR2l2ZW4gdGhhdCBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUsIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSaWdodCwgbGV0J3MgdW5kZXJzdGFuZCAqaG93KiBpdCdzIGJlZW4gbW9kaWZpZWQuXCIgQ29udGV4dCBpcyBldmVyeXRoaW5nLCBzbyBJJ20gc2tpcHBpbmcgcmlnaHQgdG8gbGluZSAzNzg3IHRvIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kIGFyb3VuZCB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyAqc3VwcG9zZWQqIHRvIGJlIGRvaW5nIGJlZm9yZSBJIGNhbiBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UuIElzIHRoaXMgYSBuZXcgZmVhdHVyZSwgYSBidWcgZml4LCBhbiBvcHRpbWl6YXRpb24/IEkgY2FuJ3Qgc2F5IGFueXRoaW5nIHVudGlsIEkgc2VlIHRoZSBzdXJyb3VuZGluZyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjE1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MjMuMzcwOTU5MDk3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI3MjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzc2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzc2MDpcXHRcXHRcXHRcXHRcXHR2ZXJpZnlfdGZtID0gTlVMTDtcXG4zNzYxOlxcdFxcdFxcdFxcdFxcdGdvdG8gZGlzY29ubmVjdDtcXG4zNzYyOlxcdFxcdFxcdFxcdH1cXG4zNzYzOlxcdFxcdFxcdH1cXG4zNzY0OlxcdFxcbjM3NjU6XFx0XFx0XFx0aWYgKGFwdiBcXHUwMDNlPSA4OSBcXHUwMDI2XFx1MDAyNiBzdHJjbXAob2xkX25ldF9jb25mLVxcdTAwM2Vjc3Vtc19hbGcsIHAtXFx1MDAzZWNzdW1zX2FsZykpIHtcXG4zNzY2OlxcdFxcdFxcdFxcdGlmIChkZXZpY2UtXFx1MDAzZXN0YXRlLmNvbm4gPT0gQ19XRl9SRVBPUlRfUEFSQU1TKSB7XFxuMzc2NzpcXHRcXHRcXHRcXHRcXHRkcmJkX2VycihkZXZpY2UsIFxcXCJEaWZmZXJlbnQgY3N1bXMtYWxnIHNldHRpbmdzLiBtZT1cXFxcXFxcIiVzXFxcXFxcXCIgcGVlcj1cXFxcXFxcIiVzXFxcXFxcXCJcXFxcblxcXCIsXFxuMzc2ODpcXHRcXHRcXHRcXHRcXHQgICAgb2xkX25ldF9jb25mLVxcdTAwM2Vjc3Vtc19hbGcsIHAtXFx1MDAzZWNzdW1zX2FsZyk7XFxuMzc2OTpcXHRcXHRcXHRcXHRcXHRnb3RvIGRpc2Nvbm5lY3Q7XFxuMzc3MDpcXHRcXHRcXHRcXHR9XFxuMzc3MTpcXHRcXHRcXHRcXHRjc3Vtc190Zm0gPSBkcmJkX2NyeXB0b19hbGxvY19kaWdlc3Rfc2FmZShkZXZpY2UsXFxuMzc3MjpcXHRcXHRcXHRcXHRcXHRcXHRwLVxcdTAwM2Vjc3Vtc19hbGcsIFxcXCJjc3Vtcy1hbGdcXFwiKTtcXG4zNzczOlxcdFxcdFxcdFxcdGlmIChJU19FUlIoY3N1bXNfdGZtKSkge1xcbjM3NzQ6XFx0XFx0XFx0XFx0XFx0Y3N1bXNfdGZtID0gTlVMTDtcXG4zNzc1OlxcdFxcdFxcdFxcdFxcdGdvdG8gZGlzY29ubmVjdDtcXG4zNzc2OlxcdFxcdFxcdFxcdH1cXG4zNzc3OlxcdFxcdFxcdH1cXG4zNzc4OlxcdFxcbjM3Nzk6XFx0XFx0XFx0aWYgKGFwdiBcXHUwMDNlIDk0IFxcdTAwMjZcXHUwMDI2IG5ld19kaXNrX2NvbmYpIHtcXG4zNzgwOlxcdFxcdFxcdFxcdG5ld19kaXNrX2NvbmYtXFx1MDAzZWNfcGxhbl9haGVhZCA9IGJlMzJfdG9fY3B1KHAtXFx1MDAzZWNfcGxhbl9haGVhZCk7XFxuMzc4MTpcXHRcXHRcXHRcXHRuZXdfZGlza19jb25mLVxcdTAwM2VjX2RlbGF5X3RhcmdldCA9IGJlMzJfdG9fY3B1KHAtXFx1MDAzZWNfZGVsYXlfdGFyZ2V0KTtcXG4zNzgyOlxcdFxcdFxcdFxcdG5ld19kaXNrX2NvbmYtXFx1MDAzZWNfZmlsbF90YXJnZXQgPSBiZTMyX3RvX2NwdShwLVxcdTAwM2VjX2ZpbGxfdGFyZ2V0KTtcXG4zNzgzOlxcdFxcdFxcdFxcdG5ld19kaXNrX2NvbmYtXFx1MDAzZWNfbWF4X3JhdGUgPSBiZTMyX3RvX2NwdShwLVxcdTAwM2VjX21heF9yYXRlKTtcXG4zNzg0OlxcdFxcbjM3ODU6XFx0XFx0XFx0XFx0Zmlmb19zaXplID0gKG5ld19kaXNrX2NvbmYtXFx1MDAzZWNfcGxhbl9haGVhZCAqIDEwICogU0xFRVBfVElNRSkgLyBIWjtcXG4zNzg2OlxcdFxcdFxcdFxcdGlmIChmaWZvX3NpemUgIT0gZGV2aWNlLVxcdTAwM2Vyc19wbGFuX3MtXFx1MDAzZXNpemUpIHtcXG4zNzg3OlxcdFxcdFxcdFxcdFxcdG5ld19wbGFuID0gZmlmb19hbGxvYyhmaWZvX3NpemUpO1xcbjM3ODg6XFx0XFx0XFx0XFx0XFx0aWYgKCFuZXdfcGxhbikge1xcbjM3ODk6XFx0XFx0XFx0XFx0XFx0XFx0ZHJiZF9lcnIoZGV2aWNlLCBcXFwia21hbGxvYyBvZiBmaWZvX2J1ZmZlciBmYWlsZWRcXFwiKTtcXG4zNzkwOlxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gZGlzY29ubmVjdDtcXG4zNzkxOlxcdFxcdFxcdFxcdFxcdH1cXG4zNzkyOlxcdFxcdFxcdFxcdH1cXG4zNzkzOlxcdFxcdFxcdH1cXG4zNzk0OlxcdFxcbjM3OTU6XFx0XFx0XFx0aWYgKHZlcmlmeV90Zm0gfHwgY3N1bXNfdGZtKSB7XFxuMzc5NjpcXHRcXHRcXHRcXHRuZXdfbmV0X2NvbmYgPSBremFsbG9jX29iaihzdHJ1Y3QgbmV0X2NvbmYpO1xcbjM3OTc6XFx0XFx0XFx0XFx0aWYgKCFuZXdfbmV0X2NvbmYpXFxuMzc5ODpcXHRcXHRcXHRcXHRcXHRnb3RvIGRpc2Nvbm5lY3Q7XFxuMzc5OTpcXHRcXG4zODAwOlxcdFxcdFxcdFxcdCpuZXdfbmV0X2NvbmYgPSAqb2xkX25ldF9jb25mO1xcbjM4MDE6XFx0XFxuMzgwMjpcXHRcXHRcXHRcXHRpZiAodmVyaWZ5X3RmbSkge1xcbjM4MDM6XFx0XFx0XFx0XFx0XFx0c3Ryc2NweShuZXdfbmV0X2NvbmYtXFx1MDAzZXZlcmlmeV9hbGcsIHAtXFx1MDAzZXZlcmlmeV9hbGcpO1xcbjM4MDQ6XFx0XFx0XFx0XFx0XFx0bmV3X25ldF9jb25mLVxcdTAwM2V2ZXJpZnlfYWxnX2xlbiA9IHN0cmxlbihwLVxcdTAwM2V2ZXJpZnlfYWxnKSArIDE7XFxuMzgwNTpcXHRcXHRcXHRcXHRcXHRjcnlwdG9fZnJlZV9zaGFzaChwZWVyX2RldmljZS1cXHUwMDNlY29ubmVjdGlvbi1cXHUwMDNldmVyaWZ5X3RmbSk7XFxuMzgwNjpcXHRcXHRcXHRcXHRcXHRwZWVyX2RldmljZS1cXHUwMDNlY29ubmVjdGlvbi1cXHUwMDNldmVyaWZ5X3RmbSA9IHZlcmlmeV90Zm07XFxuMzgwNzpcXHRcXHRcXHRcXHRcXHRkcmJkX2luZm8oZGV2aWNlLCBcXFwidXNpbmcgdmVyaWZ5LWFsZzogXFxcXFxcXCIlc1xcXFxcXFwiXFxcXG5cXFwiLCBwLVxcdTAwM2V2ZXJpZnlfYWxnKTtcXG4zODA4OlxcdFxcdFxcdFxcdH1cXG4zODA5OlxcdFxcdFxcdFxcdGlmIChjc3Vtc190Zm0pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MjMuMzcxMjg5MDU3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyODI4OTA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKlRyb3VibGVzaG9vdGluZyBhIFJlY2VudCBDb2RlIENoYW5nZSoqXG5cbkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuLi4gSSdtIG5vdGljaW5nIHRoYXQgYHB1dF9sZGV2KGRldmljZSk7YCBoYXMgYmVlbiBjb21wbGV0ZWx5IHJpcHBlZCBvdXQgb2YgdGhlIGNvZGUgYmFzZS4gVGhhdCdzIGEgcmVkIGZsYWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsLCBhbmQgd2hldGhlciB0aGlzIHJlbW92YWwgaXMgYSBicmVha2luZyBjaGFuZ2UuXG5cblRoZSBvYnZpb3VzIHF1ZXN0aW9uIGlzOiB3aGVyZSB3YXMgYHB1dF9sZGV2KClgIGJlaW5nIHVzZWQ/IE15IGZpcnN0IGh1bmNoIGlzIHRvIGNoZWNrIHRoZSBpbW1lZGlhdGUgc3Vycm91bmRpbmcgY29kZSBhbmQgY2FsbCBzdGFja3MsIGJ1dCBiZWZvcmUgSSBnbyB0aGVyZSwgbGV0IG1lIHF1aWNrbHkgYXNjZXJ0YWluIGlmIHRoZSBkZXZpY2UgaXQgdGFrZXMsICpkZXZpY2UqLCB3YXMgYmVpbmcgcmV0cmlldmVkIGJlZm9yZWhhbmQuIFRoZSBpbW1lZGlhdGUgbG9naWNhbCBzdGVwIHRvIHRha2UgaGVyZSBpcyB0byBhbmFseXplIHRoZSBjb2RlIGZvciBhbnkgY2FsbHMgdG8gYGdldF9sZGV2KGRldmljZSlgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyAqZGV2aWNlKiB3YXMgYmVpbmcgaGFuZGxlZCBiZWZvcmUgdGhlIHBvdGVudGlhbCB3cml0ZSB0byBpdCB3aXRoIGBwdXRfbGRldigpYCwgdG8gZGV0ZXJtaW5lIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEZyb20gdGhlIGNhbGwgc3RhY2ssIEkgY2FuIGRldGVybWluZSB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG1hZGUgaW4gdGhlIGZpcnN0IHBsYWNlLCBhbmQgd2hlcmUgaXRzIGltcGFjdCB3aWxsIGJlIHRoZSBtb3N0IGFwcGFyZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzg0LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMToyNi45OTk1ODAzOTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODA0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjUwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzY1MDpcXHRcXHRcXHQgIGNtZG5hbWUocGktXFx1MDAzZWNtZCksIHBpLVxcdTAwM2V2bnIpO1xcbjM2NTE6XFx0XFx0cmV0dXJuIGlnbm9yZV9yZW1haW5pbmdfcGFja2V0KGNvbm5lY3Rpb24sIHBpKTtcXG4zNjUyOlxcdH1cXG4zNjUzOlxcdFxcbjM2NTQ6XFx0c3RhdGljIGludCByZWNlaXZlX1N5bmNQYXJhbShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxcbjM2NTU6XFx0e1xcbjM2NTY6XFx0XFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlO1xcbjM2NTc6XFx0XFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2U7XFxuMzY1ODpcXHRcXHRzdHJ1Y3QgcF9yc19wYXJhbV85NSAqcDtcXG4zNjU5OlxcdFxcdHVuc2lnbmVkIGludCBoZWFkZXJfc2l6ZSwgZGF0YV9zaXplLCBleHBfbWF4X3N6O1xcbjM2NjA6XFx0XFx0c3RydWN0IGNyeXB0b19zaGFzaCAqdmVyaWZ5X3RmbSA9IE5VTEw7XFxuMzY2MTpcXHRcXHRzdHJ1Y3QgY3J5cHRvX3NoYXNoICpjc3Vtc190Zm0gPSBOVUxMO1xcbjM2NjI6XFx0XFx0c3RydWN0IG5ldF9jb25mICpvbGRfbmV0X2NvbmYsICpuZXdfbmV0X2NvbmYgPSBOVUxMO1xcbjM2NjM6XFx0XFx0c3RydWN0IGRpc2tfY29uZiAqb2xkX2Rpc2tfY29uZiA9IE5VTEwsICpuZXdfZGlza19jb25mID0gTlVMTDtcXG4zNjY0OlxcdFxcdGNvbnN0IGludCBhcHYgPSBjb25uZWN0aW9uLVxcdTAwM2VhZ3JlZWRfcHJvX3ZlcnNpb247XFxuMzY2NTpcXHRcXHRzdHJ1Y3QgZmlmb19idWZmZXIgKm9sZF9wbGFuID0gTlVMTCwgKm5ld19wbGFuID0gTlVMTDtcXG4zNjY2OlxcdFxcdHVuc2lnbmVkIGludCBmaWZvX3NpemUgPSAwO1xcbjM2Njc6XFx0XFx0aW50IGVycjtcXG4zNjY4OlxcdFxcbjM2Njk6XFx0XFx0cGVlcl9kZXZpY2UgPSBjb25uX3BlZXJfZGV2aWNlKGNvbm5lY3Rpb24sIHBpLVxcdTAwM2V2bnIpO1xcbjM2NzA6XFx0XFx0aWYgKCFwZWVyX2RldmljZSlcXG4zNjcxOlxcdFxcdFxcdHJldHVybiBjb25maWdfdW5rbm93bl92b2x1bWUoY29ubmVjdGlvbiwgcGkpO1xcbjM2NzI6XFx0XFx0ZGV2aWNlID0gcGVlcl9kZXZpY2UtXFx1MDAzZWRldmljZTtcXG4zNjczOlxcdFxcbjM2NzQ6XFx0XFx0ZXhwX21heF9zeiAgPSBhcHYgXFx1MDAzYz0gODcgPyBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW0pXFxuMzY3NTpcXHRcXHRcXHQgICAgOiBhcHYgPT0gODggPyBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW0pXFxuMzY3NjpcXHRcXHRcXHRcXHRcXHRcXHQrIFNIQVJFRF9TRUNSRVRfTUFYXFxuMzY3NzpcXHRcXHRcXHQgICAgOiBhcHYgXFx1MDAzYz0gOTQgPyBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW1fODkpXFxuMzY3ODpcXHRcXHRcXHQgICAgOiAvKiBhcHYgXFx1MDAzZT0gOTUgKi8gc2l6ZW9mKHN0cnVjdCBwX3JzX3BhcmFtXzk1KTtcXG4zNjc5OlxcdFxcbjM2ODA6XFx0XFx0aWYgKHBpLVxcdTAwM2VzaXplIFxcdTAwM2UgZXhwX21heF9zeikge1xcbjM2ODE6XFx0XFx0XFx0ZHJiZF9lcnIoZGV2aWNlLCBcXFwiU3luY1BhcmFtIHBhY2tldCB0b28gbG9uZzogcmVjZWl2ZWQgJXUsIGV4cGVjdGVkIFxcdTAwM2M9ICV1IGJ5dGVzXFxcXG5cXFwiLFxcbjM2ODI6XFx0XFx0XFx0ICAgIHBpLVxcdTAwM2VzaXplLCBleHBfbWF4X3N6KTtcXG4zNjgzOlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjM2ODQ6XFx0XFx0fVxcbjM2ODU6XFx0XFxuMzY4NjpcXHRcXHRpZiAoYXB2IFxcdTAwM2M9IDg4KSB7XFxuMzY4NzpcXHRcXHRcXHRoZWFkZXJfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcF9yc19wYXJhbSk7XFxuMzY4ODpcXHRcXHRcXHRkYXRhX3NpemUgPSBwaS1cXHUwMDNlc2l6ZSAtIGhlYWRlcl9zaXplO1xcbjM2ODk6XFx0XFx0fSBlbHNlIGlmIChhcHYgXFx1MDAzYz0gOTQpIHtcXG4zNjkwOlxcdFxcdFxcdGhlYWRlcl9zaXplID0gc2l6ZW9mKHN0cnVjdCBwX3JzX3BhcmFtXzg5KTtcXG4zNjkxOlxcdFxcdFxcdGRhdGFfc2l6ZSA9IHBpLVxcdTAwM2VzaXplIC0gaGVhZGVyX3NpemU7XFxuMzY5MjpcXHRcXHRcXHREX0FTU0VSVChkZXZpY2UsIGRhdGFfc2l6ZSA9PSAwKTtcXG4zNjkzOlxcdFxcdH0gZWxzZSB7XFxuMzY5NDpcXHRcXHRcXHRoZWFkZXJfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcF9yc19wYXJhbV85NSk7XFxuMzY5NTpcXHRcXHRcXHRkYXRhX3NpemUgPSBwaS1cXHUwMDNlc2l6ZSAtIGhlYWRlcl9zaXplO1xcbjM2OTY6XFx0XFx0XFx0RF9BU1NFUlQoZGV2aWNlLCBkYXRhX3NpemUgPT0gMCk7XFxuMzY5NzpcXHRcXHR9XFxuMzY5ODpcXHRcXG4zNjk5OlxcdFxcdC8qIGluaXRpYWxpemUgdmVyaWZ5X2FsZyBhbmQgY3N1bXNfYWxnICovXFxuMzcwMDpcXHRcXHRwID0gcGktXFx1MDAzZWRhdGE7XFxuMzcwMTpcXHRcXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHAtXFx1MDAzZWFsZ3MpICE9IDIgKiBTSEFSRURfU0VDUkVUX01BWCk7XFxuMzcwMjpcXHRcXHRtZW1zZXQoXFx1MDAyNnAtXFx1MDAzZWFsZ3MsIDAsIHNpemVvZihwLVxcdTAwM2VhbGdzKSk7XFxuMzcwMzpcXHRcXG4zNzA0OlxcdFxcdGVyciA9IGRyYmRfcmVjdl9hbGwocGVlcl9kZXZpY2UtXFx1MDAzZWNvbm5lY3Rpb24sIHAsIGhlYWRlcl9zaXplKTtcXG4zNzA1OlxcdFxcdGlmIChlcnIpXFxuMzcwNjpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjM3MDc6XFx0XFxuMzcwODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjb25uZWN0aW9uLVxcdTAwM2VyZXNvdXJjZS1cXHUwMDNlY29uZl91cGRhdGUpO1xcbjM3MDk6XFx0XFx0b2xkX25ldF9jb25mID0gcGVlcl9kZXZpY2UtXFx1MDAzZWNvbm5lY3Rpb24tXFx1MDAzZW5ldF9jb25mO1xcbjM3MTA6XFx0XFx0aWYgKGdldF9sZGV2KGRldmljZSkpIHtcXG4zNzExOlxcdFxcdFxcdG5ld19kaXNrX2NvbmYgPSBremFsbG9jX29iaihzdHJ1Y3QgZGlza19jb25mKTtcXG4zNzEyOlxcdFxcdFxcdGlmICghbmV3X2Rpc2tfY29uZikge1xcbjM3MTM6XFx0XFx0XFx0XFx0cHV0X2xkZXYoZGV2aWNlKTtcXG4zNzE0OlxcdFxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y29ubmVjdGlvbi1cXHUwMDNlcmVzb3VyY2UtXFx1MDAzZWNvbmZfdXBkYXRlKTtcXG4zNzE1OlxcdFxcdFxcdFxcdGRyYmRfZXJyKGRldmljZSwgXFxcIkFsbG9jYXRpb24gb2YgbmV3IGRpc2tfY29uZiBmYWlsZWRcXFxcblxcXCIpO1xcbjM3MTY6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMzcxNzpcXHRcXHRcXHR9XFxuMzcxODpcXHRcXG4zNzE5OlxcdFxcdFxcdG9sZF9kaXNrX2NvbmYgPSBkZXZpY2UtXFx1MDAzZWxkZXYtXFx1MDAzZWRpc2tfY29uZjtcXG4zNzIwOlxcdFxcdFxcdCpuZXdfZGlza19jb25mID0gKm9sZF9kaXNrX2NvbmY7XFxuMzcyMTpcXHRcXG4zNzIyOlxcdFxcdFxcdG5ld19kaXNrX2NvbmYtXFx1MDAzZXJlc3luY19yYXRlID0gYmUzMl90b19jcHUocC1cXHUwMDNlcmVzeW5jX3JhdGUpO1xcbjM3MjM6XFx0XFx0fVxcbjM3MjQ6XFx0XFxuMzcyNTpcXHRcXHRpZiAoYXB2IFxcdTAwM2U9IDg4KSB7XFxuMzcyNjpcXHRcXHRcXHRpZiAoYXB2ID09IDg4KSB7XFxuMzcyNzpcXHRcXHRcXHRcXHRpZiAoZGF0YV9zaXplIFxcdTAwM2UgU0hBUkVEX1NFQ1JFVF9NQVggfHwgZGF0YV9zaXplID09IDApIHtcXG4zNzI4OlxcdFxcdFxcdFxcdFxcdGRyYmRfZXJyKGRldmljZSwgXFxcInZlcmlmeS1hbGcgb2Ygd3Jvbmcgc2l6ZSwgXFxcIlxcbjM3Mjk6XFx0XFx0XFx0XFx0XFx0XFx0XFxcInBlZXIgd2FudHMgJXUsIGFjY2VwdGluZyBvbmx5IHVwIHRvICV1IGJ5dGVcXFxcblxcXCIsXFxuMzczMDpcXHRcXHRcXHRcXHRcXHRcXHRkYXRhX3NpemUsIFNIQVJFRF9TRUNSRVRfTUFYKTtcXG4zNzMxOlxcdFxcdFxcdFxcdFxcdGdvdG8gcmVjb25uZWN0O1xcbjM3MzI6XFx0XFx0XFx0XFx0fVxcbjM3MzM6XFx0XFxuMzczNDpcXHRcXHRcXHRcXHRlcnIgPSBkcmJkX3JlY3ZfYWxsKHBlZXJfZGV2aWNlLVxcdTAwM2Vjb25uZWN0aW9uLCBwLVxcdTAwM2V2ZXJpZnlfYWxnLCBkYXRhX3NpemUpO1xcbjM3MzU6XFx0XFx0XFx0XFx0aWYgKGVycilcXG4zNzM2OlxcdFxcdFxcdFxcdFxcdGdvdG8gcmVjb25uZWN0O1xcbjM3Mzc6XFx0XFx0XFx0XFx0Lyogd2UgZXhwZWN0IE5VTCB0ZXJtaW5hdGVkIHN0cmluZyAqL1xcbjM3Mzg6XFx0XFx0XFx0XFx0LyogYnV0IGp1c3QgaW4gY2FzZSBzb21lb25lIHRyaWVzIHRvIGJlIGV2aWwgKi9cXG4zNzM5OlxcdFxcdFxcdFxcdERfQVNTRVJUKGRldmljZSwgcC1cXHUwMDNldmVyaWZ5X2FsZ1tkYXRhX3NpemUtMV0gPT0gMCk7XFxuMzc0MDpcXHRcXHRcXHRcXHRwLVxcdTAwM2V2ZXJpZnlfYWxnW2RhdGFfc2l6ZS0xXSA9IDA7XFxuMzc0MTpcXHRcXG4zNzQyOlxcdFxcdFxcdH0gZWxzZSAvKiBhcHYgXFx1MDAzZT0gODkgKi8ge1xcbjM3NDM6XFx0XFx0XFx0XFx0Lyogd2Ugc3RpbGwgZXhwZWN0IE5VTCB0ZXJtaW5hdGVkIHN0cmluZ3MgKi9cXG4zNzQ0OlxcdFxcdFxcdFxcdC8qIGJ1dCBqdXN0IGluIGNhc2Ugc29tZW9uZSB0cmllcyB0byBiZSBldmlsICovXFxuMzc0NTpcXHRcXHRcXHRcXHREX0FTU0VSVChkZXZpY2UsIHAtXFx1MDAzZXZlcmlmeV9hbGdbU0hBUkVEX1NFQ1JFVF9NQVgtMV0gPT0gMCk7XFxuMzc0NjpcXHRcXHRcXHRcXHREX0FTU0VSVChkZXZpY2UsIHAtXFx1MDAzZWNzdW1zX2FsZ1tTSEFSRURfU0VDUkVUX01BWC0xXSA9PSAwKTtcXG4zNzQ3OlxcdFxcdFxcdFxcdHAtXFx1MDAzZXZlcmlmeV9hbGdbU0hBUkVEX1NFQ1JFVF9NQVgtMV0gPSAwO1xcbjM3NDg6XFx0XFx0XFx0XFx0cC1cXHUwMDNlY3N1bXNfYWxnW1NIQVJFRF9TRUNSRVRfTUFYLTFdID0gMDtcXG4zNzQ5OlxcdFxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MjYuOTk5ODYyNTQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg2MDg0Nzc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBkaXNrX2NvbmZgIFVwZGF0ZSBpbiBEUkJEIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBEUkJEIGNvZGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAzNzEwLiBJIHNlZSB0aGF0IGBnZXRfbGRldihkZXZpY2UpYCBpcyBiZWluZyBjYWxsZWQuIElmIHRoYXQgcmV0dXJucyB0cnVlLCBhIGBuZXdfZGlza19jb25mYCBpcyBhbGxvY2F0ZWQuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgd2UncmUgcHJvYmFibHkgc2V0dGluZyB1cCB0byB1cGRhdGUgdGhlIGRpc2sgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCBmdW5jdGlvbiBvZiBgZ2V0X2xkZXYoZGV2aWNlKWAgYW5kIGBwdXRfbGRldihkZXZpY2UpYCB0byBiZSBzdXJlLlxuXG5Mb29raW5nIGZ1cnRoZXIsIEkgc2VlIG1vcmUgaW50ZXJlc3RpbmcgbG9naWMgYXQgaGlnaGVyIEFQViB2YWx1ZXMuIElmIGBhcHYgXHUwMDNlIDk0YCBhbmQgYG5ld19kaXNrX2NvbmZgIGV4aXN0cywgd2UncmUgY29weWluZyBzb21lIHZhbHVlcyBmcm9tIHNvbWUgYHBgIG9iamVjdCBpbnRvIGBuZXdfZGlza19jb25mYC4gU3BlY2lmaWNhbGx5LCBgY19wbGFuX2FoZWFkYCwgYGNfZGVsYXlfdGFyZ2V0YCwgYGNfZmlsbF90YXJnZXRgLCBhbmQgYGNfbWF4X3JhdGVgIGFyZSBiZWluZyB1cGRhdGVkLiBUaGVuLCBhIGBmaWZvX3NpemVgIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gYGNfcGxhbl9haGVhZGAgYW5kIHVzZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBgbmV3X3BsYW5gIHVzaW5nIGBmaWZvX2FsbG9jYC5cblxuTm93LCBpZiB0aGF0IGBmaWZvX2FsbG9jYCBmYWlscywgaXQganVtcHMgdG8gdGhlIGBkaXNjb25uZWN0YCBsYWJlbC4gVGhhdCdzIHRoZSBjcml0aWNhbCBiaXQgSSB3YW50IHRvIHVuZGVyc3RhbmQuIFdoYXQgZXhhY3RseSBpcyBoYXBwZW5pbmcgZHVyaW5nIHRoYXQgZGlzY29ubmVjdD8gV2hhdCByZXNvdXJjZXMgYXJlIGJlaW5nIGZyZWVkPyBJcyB0aGVyZSBhIHJpc2sgb2YgbWVtb3J5IGxlYWtzIG9yIGxlYXZpbmcgdGhlIGRldmljZSBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGU/IEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY29kZSBmcm9tIHRoZSBgZGlzY29ubmVjdGAgbGFiZWwgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgaGFuZGxlZCBncmFjZWZ1bGx5IGluIGNhc2Ugb2YgYSBgZmlmb19hbGxvY2AgZmFpbHVyZS4gSSdsbCBjaGVjayBob3cgYG5ld19kaXNrX2NvbmZgIGlzIHVzZWQgaW4gdGhpcyBwcm9jZXNzIGFzIHdlbGwsIHRvIG1ha2Ugc3VyZSBpdCdzIGZyZWVkIGlmIGl0IGRvZXNuJ3QgZ2V0IGFzc2lnbmVkIHByb3Blcmx5LiBJJ2xsIGFsc28gYmUgc2VhcmNoaW5nIGZvciByZWxhdGVkIGNvZGUsIGFzIHRoZXJlIGNvdWxkIGJlIG90aGVyIHBhdGhzIHRocm91Z2ggdGhlIGNvZGUgd2hpY2ggcGVyZm9ybSB0aGlzIGtpbmQgb2YgdXBkYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODc1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MzMuODYwNzEzNDE3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MjYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4MTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM4MTA6XFx0XFx0XFx0XFx0XFx0c3Ryc2NweShuZXdfbmV0X2NvbmYtXFx1MDAzZWNzdW1zX2FsZywgcC1cXHUwMDNlY3N1bXNfYWxnKTtcXG4zODExOlxcdFxcdFxcdFxcdFxcdG5ld19uZXRfY29uZi1cXHUwMDNlY3N1bXNfYWxnX2xlbiA9IHN0cmxlbihwLVxcdTAwM2Vjc3Vtc19hbGcpICsgMTtcXG4zODEyOlxcdFxcdFxcdFxcdFxcdGNyeXB0b19mcmVlX3NoYXNoKHBlZXJfZGV2aWNlLVxcdTAwM2Vjb25uZWN0aW9uLVxcdTAwM2Vjc3Vtc190Zm0pO1xcbjM4MTM6XFx0XFx0XFx0XFx0XFx0cGVlcl9kZXZpY2UtXFx1MDAzZWNvbm5lY3Rpb24tXFx1MDAzZWNzdW1zX3RmbSA9IGNzdW1zX3RmbTtcXG4zODE0OlxcdFxcdFxcdFxcdFxcdGRyYmRfaW5mbyhkZXZpY2UsIFxcXCJ1c2luZyBjc3Vtcy1hbGc6IFxcXFxcXFwiJXNcXFxcXFxcIlxcXFxuXFxcIiwgcC1cXHUwMDNlY3N1bXNfYWxnKTtcXG4zODE1OlxcdFxcdFxcdFxcdH1cXG4zODE2OlxcdFxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihjb25uZWN0aW9uLVxcdTAwM2VuZXRfY29uZiwgbmV3X25ldF9jb25mKTtcXG4zODE3OlxcdFxcdFxcdH1cXG4zODE4OlxcdFxcdH1cXG4zODE5OlxcdFxcbjM4MjA6XFx0XFx0aWYgKG5ld19kaXNrX2NvbmYpIHtcXG4zODIxOlxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXZpY2UtXFx1MDAzZWxkZXYtXFx1MDAzZWRpc2tfY29uZiwgbmV3X2Rpc2tfY29uZik7XFxuMzgyMjpcXHRcXHRcXHRwdXRfbGRldihkZXZpY2UpO1xcbjM4MjM6XFx0XFx0fVxcbjM4MjQ6XFx0XFxuMzgyNTpcXHRcXHRpZiAobmV3X3BsYW4pIHtcXG4zODI2OlxcdFxcdFxcdG9sZF9wbGFuID0gZGV2aWNlLVxcdTAwM2Vyc19wbGFuX3M7XFxuMzgyNzpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2aWNlLVxcdTAwM2Vyc19wbGFuX3MsIG5ld19wbGFuKTtcXG4zODI4OlxcdFxcdH1cXG4zODI5OlxcdFxcbjM4MzA6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjb25uZWN0aW9uLVxcdTAwM2VyZXNvdXJjZS1cXHUwMDNlY29uZl91cGRhdGUpO1xcbjM4MzE6XFx0XFx0c3luY2hyb25pemVfcmN1KCk7XFxuMzgzMjpcXHRcXHRpZiAobmV3X25ldF9jb25mKVxcbjM4MzM6XFx0XFx0XFx0a2ZyZWUob2xkX25ldF9jb25mKTtcXG4zODM0OlxcdFxcdGtmcmVlKG9sZF9kaXNrX2NvbmYpO1xcbjM4MzU6XFx0XFx0a2ZyZWUob2xkX3BsYW4pO1xcbjM4MzY6XFx0XFxuMzgzNzpcXHRcXHRyZXR1cm4gMDtcXG4zODM4OlxcdFxcbjM4Mzk6XFx0cmVjb25uZWN0OlxcbjM4NDA6XFx0XFx0aWYgKG5ld19kaXNrX2NvbmYpIHtcXG4zODQxOlxcdFxcdFxcdHB1dF9sZGV2KGRldmljZSk7XFxuMzg0MjpcXHRcXHRcXHRrZnJlZShuZXdfZGlza19jb25mKTtcXG4zODQzOlxcdFxcdH1cXG4zODQ0OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y29ubmVjdGlvbi1cXHUwMDNlcmVzb3VyY2UtXFx1MDAzZWNvbmZfdXBkYXRlKTtcXG4zODQ1OlxcdFxcdHJldHVybiAtRUlPO1xcbjM4NDY6XFx0XFxuMzg0NzpcXHRkaXNjb25uZWN0OlxcbjM4NDg6XFx0XFx0a2ZyZWUobmV3X3BsYW4pO1xcbjM4NDk6XFx0XFx0aWYgKG5ld19kaXNrX2NvbmYpIHtcXG4zODUwOlxcdFxcdFxcdHB1dF9sZGV2KGRldmljZSk7XFxuMzg1MTpcXHRcXHRcXHRrZnJlZShuZXdfZGlza19jb25mKTtcXG4zODUyOlxcdFxcdH1cXG4zODUzOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y29ubmVjdGlvbi1cXHUwMDNlcmVzb3VyY2UtXFx1MDAzZWNvbmZfdXBkYXRlKTtcXG4zODU0OlxcdFxcdC8qIGp1c3QgZm9yIGNvbXBsZXRlbmVzczogYWN0dWFsbHkgbm90IG5lZWRlZCxcXG4zODU1OlxcdFxcdCAqIGFzIHRoaXMgaXMgbm90IHJlYWNoZWQgaWYgY3N1bXNfdGZtIHdhcyBvay4gKi9cXG4zODU2OlxcdFxcdGNyeXB0b19mcmVlX3NoYXNoKGNzdW1zX3RmbSk7XFxuMzg1NzpcXHRcXHQvKiBidXQgZnJlZSB0aGUgdmVyaWZ5X3RmbSBhZ2FpbiwgaWYgY3N1bXNfdGZtIGRpZCBub3Qgd29yayBvdXQgKi9cXG4zODU4OlxcdFxcdGNyeXB0b19mcmVlX3NoYXNoKHZlcmlmeV90Zm0pO1xcbjM4NTk6XFx0XFx0Y29ubl9yZXF1ZXN0X3N0YXRlKHBlZXJfZGV2aWNlLVxcdTAwM2Vjb25uZWN0aW9uLCBOUyhjb25uLCBDX0RJU0NPTk5FQ1RJTkcpLCBDU19IQVJEKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MzMuODYxMDkyMDc3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MDUyMTgwMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVmZXJlbmNlIENvdW50aW5nIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEluIHRoaXMgYGRpc2Nvbm5lY3RgIHNlY3Rpb24sIEkgc2VlIGEgY2xlYXIgcG90ZW50aWFsIGZvciBhIGRvdWJsZSBgcHV0X2xkZXYoZGV2aWNlKWAgY2FsbC4gSXQgbG9va3MgbGlrZSB0aGUgY29kZSBpbiB0aGUgYGRpc2Nvbm5lY3RgIGxhYmVsICphbHJlYWR5KiBhY2NvdW50cyBmb3IgYG5ld19kaXNrX2NvbmZgIGJlaW5nIGFsbG9jYXRlZCBhbmQgdGhlcmVmb3JlIGNhbGxzIGBwdXRfbGRldihkZXZpY2UpYC4gSG93ZXZlciwgdGhlcmUncyBhIGNvbmRpdGlvbmFsIHBhdGgsIHNwZWNpZmljYWxseSB3aGVuIGBmaWZvX2FsbG9jYCBmYWlscywgdGhhdCAqYWxzbyogY2FsbHMgYHB1dF9sZGV2KGRldmljZSlgICpiZWZvcmUqIGp1bXBpbmcgdG8gYGRpc2Nvbm5lY3RgLiBUaGlzIGlzIGR1cGxpY2F0ZWQgZnVuY3Rpb25hbGl0eSwgYSBkZWZpbml0ZSByZWNpcGUgZm9yIGEgcmVmZXJlbmNlIGNvdW50aW5nIHByb2JsZW0hXG5cblRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgYG5ld19kaXNrX2NvbmZgICp3aWxsKiBiZSBub24tTlVMTCBpbiB0aGUgZmFpbHVyZSBwYXRoIG9mIGBmaWZvX2FsbG9jYCBiZWNhdXNlIG9mIHRoZSBjb25kaXRpb25hbCBjaGVjayBgaWYgKGFwdiBcdTAwM2UgOTQgXHUwMDI2XHUwMDI2IG5ld19kaXNrX2NvbmYpYC4gU28sIHRoZSBjb2RlIHdhcywgZWZmZWN0aXZlbHksIGNhbGxpbmcgYHB1dF9sZGV2KGRldmljZSlgIHR3aWNlIGluIHRoYXQgZmFpbHVyZSBzY2VuYXJpbywgbGVhZGluZyB0byBhIGRvdWJsZS1mcmVlIG9yIG90aGVyIHJlZmVyZW5jZSBjb3VudC1yZWxhdGVkIGlzc3VlLiBUaGUgZml4LCBJIHNlZSwgc21hcnRseSByZW1vdmVzIHRoZSBmaXJzdCBgcHV0X2xkZXYoZGV2aWNlKWAgY2FsbCwgbmVhdGx5IHJlc29sdmluZyB0aGUgZG91YmxlLXB1dCBidWcuXG5cblRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBmdW5jdGlvbmFsIGNoYW5nZTsgaXQncyBmaXhpbmcgYSBjbGVhciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3IuIEl0J3MgdGhlIGtpbmQgb2YgaXNzdWUgdGhhdCBjYW4gbGVhZCB0byBzdWJ0bGUgYnV0IG5hc3R5IHByb2JsZW1zIGluIHRoZSBsb25nIHJ1bi4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGZvciBtZSBpcyB3aGV0aGVyIHRoaXMgaXMgZWFzaWx5IHRlc3RhYmxlLiBUaGlzIGlzIGxpa2VseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBwYXRjaCByZWxhdGVzIHRvIHRoZSBEUkJEIGJsb2NrIGRyaXZlci4gSXQgY2FuIGJlIGVhc2lseSB0ZXN0ZWQsIHNwZWNpZmljYWxseSBiZWNhdXNlIERSQkQgaXMgZWFzaWx5IHRlc3RhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEkgc2hvdWxkIGNoZWNrIHRvIHNlZSBpZiBEUkJEIGlzIGVuYWJsZWQgb3IgY2FuIGJlIGVuYWJsZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MjQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMTo0MC4yNjYzMTM3MzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjgwODg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9EUkJEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnPTY9Y29tbWVudCBcXFwiRFJCRCBkaXNhYmxlZCBiZWNhdXNlIFBST0NfRlMgb3IgSU5FVCBub3Qgc2VsZWN0ZWRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZy04LVxcbmRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnOjk6Y29uZmlnIEJMS19ERVZfRFJCRFxcbmRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJEUkJEIERpc3RyaWJ1dGVkIFJlcGxpY2F0ZWQgQmxvY2sgRGV2aWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjMxOjQwLjc3MzEzMDQ3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODg0MTgzNDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIERSQkQncyBTeW5jaHJvbml6YXRpb24gUGFyYW1ldGVyIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIGZ1enppbmcgRFJCRCwgc3BlY2lmaWNhbGx5IHRoZSBzeW5jaHJvbml6YXRpb24gcGFyYW1ldGVyIGhhbmRsaW5nLiBUaGUgY29yZSBzZWVtcyB0byBoaW5nZSBvbiB0aGUgYEJMS19ERVZfRFJCRGAgY29uZmlndXJhdGlvbiwgc28gdGhhdCdzIG15IHN0YXJ0aW5nIHBvaW50LiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0J3MgZW5hYmxlZDsgbm8gcG9pbnQgZ29pbmcgZnVydGhlciBpZiB0aGF0J3Mgbm90IHJpZ2h0LlxuXG5NeSBpbml0aWFsIHNjYW4gZm9jdXNlcyBvbiBgcmVjZWl2ZV9TeW5jUGFyYW1gIGFuZCBgZHJiZF9yZWNlaXZlci5jYC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgZGVzaWduYXRlZCBwcm90b2NvbCBoYW5kbGVyIGZvciBEUkJELCBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIGluY29taW5nIGBQX1NZTkNfUEFSQU1gIHBhY2tldHMuIEl04oCZcyBwcmV0dHkgY2xlYXIgdGhhdCB0byB0cmlnZ2VyIGZ1enppbmcsIEknbGwgbmVlZCB0byBtYW5pcHVsYXRlIGFuZCBzZW5kIHBhY2tldHMgZGlyZWN0bHkgdG8gdGhlIERSQkQgc29ja2V0LlxuXG5NeSBwcmltYXJ5IGZvY3VzLCBteSBcIkZvY3VzU3ltYm9sLFwiIHdpbGwgYmUgYHJlY2VpdmVfU3luY1BhcmFtYC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IHBheWxvYWRzIGFuZCB0cmlnZ2Vycy4gVGhlIGNyaXRpY2FsIFwiRW5hYmxlQ29uZmlnXCIgaXMgZGVmaW5pdGVseSBgQkxLX0RFVl9EUkJEYCwgYXMgdGhhdCBlbmFibGVzIERSQkQgc3VwcG9ydC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IG5vIG90aGVyIGxlc3Mgb2J2aW91cyBjb25maWdzIGFyZSBhbHNvIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ1MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMTo0NS42NTczMTgxMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM3NjEzNDcxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9EUkJEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZz02PWNvbW1lbnQgXFxcIkRSQkQgZGlzYWJsZWQgYmVjYXVzZSBQUk9DX0ZTIG9yIElORVQgbm90IHNlbGVjdGVkXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWctOC1cXG5kcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZzo5OmNvbmZpZyBCTEtfREVWX0RSQkRcXG5kcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZSBcXFwiRFJCRCBEaXN0cmlidXRlZCBSZXBsaWNhdGVkIEJsb2NrIERldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMTo0OS4wMzM0NjA0MzZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxODQwNTY3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBwb3RlbnRpYWxseSBuYXN0eSwgYnVnIGluIGByZWNlaXZlX1N5bmNQYXJhbWAuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBkb3VibGUtcHV0IGlzc3VlLCBzcGVjaWZpY2FsbHkgdHJpZ2dlcmVkIHdoZW4gdGhlIGBmaWZvX2FsbG9jYCBjYWxsIGZhaWxzLiBUaGF0IG1ha2VzIGl0IGEgZnVuY3Rpb25hbCBmaXgsIG5vdCBqdXN0IGNvc21ldGljLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgKmhvdyogdGhpcyBpcyBoYXBwZW5pbmcuIFRoZSBkb3VibGUtcHV0IGltcGxpZXMgdGhhdCBzb21lIGxvZ2ljIGlzIGFzc3VtaW5nIGFsbG9jYXRpb24gKndpbGwqIHN1Y2NlZWQgYW5kIGNvbnRpbnVlcywgbGVhZGluZyB0byB0aGUgZXh0cmEsIGFuZCBwb3RlbnRpYWxseSBkaXNhc3Ryb3VzLCBhdHRlbXB0IHRvIHB1dC4gTm93LCB0aGUgZml4IHNvdW5kcyBsaWtlIGl0J3MgYWRkcmVzc2luZyB0aGUgZmFpbHVyZSBjYXNlIG9mIHRoZSBhbGxvY2F0aW9uLiBPa2F5LiBHb3QgaXQuIFNvIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hlbiBgZmlmb19hbGxvY2AgKmRvZXNuJ3QqIHdvcmssIHdlIGV4aXQgZ3JhY2VmdWxseSBhbmQgY29ycmVjdGx5LCBwcmV2ZW50aW5nIHRoZSBkb3VibGUtcHV0LlxuXG5TbywgaW4gdGhlIHJldmlzZWQgY29kZSwgbXkgYWN0aW9uIHdpbGwgYmUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhlIGFwcHJvcHJpYXRlIHJldHVybiB2YWx1ZXMuIFRoaXMgaXMgbGlrZWx5IGhhbmRsaW5nIHRoZSBlcnJvciBjb25kaXRpb24gZnJvbSB0aGUgZmFpbGVkIGFsbG9jYXRpb24uIEl0J3MgYSBjbGVhbiBhcHByb2FjaC4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gZml4aW5nIHRoaXMgaXNzdWUuIEkgbmVlZCB0byByZXZpZXcgaG93IHRoZSByZXR1cm4gdmFsdWUgb2YgYGZpZm9fYWxsb2NgIGlzIGJlaW5nIGhhbmRsZWQgaW4gdGhlIGV4aXN0aW5nIGNvZGUgYW5kIGVuc3VyZSB0aGF0IHRoaXMgcGF0Y2ggcHJvdmlkZXMgdGhlIGNvcnJlY3QgcmVzcG9uc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5NTgsIk91dHB1dFRva2VucyI6OTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMTo1My4zNTE4NzA0NjFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY1MjU4MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfRFJCRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlY2VpdmVfU3luY1BhcmFtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkb3VibGUtcHV0IGJ1ZyBvZiB0aGUgbG9jYWwgZGV2aWNlIHJlZmVyZW5jZSBpbiB0aGUgRFJCRCBwcm90b2NvbCBoYW5kbGVyIGByZWNlaXZlX1N5bmNQYXJhbWAgd2hlbiBgZmlmb19hbGxvY2AgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gcmVhY2hhYmxlIGJsb2NrIGRyaXZlciBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfRFJCRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlY2VpdmVfU3luY1BhcmFtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkb3VibGUtcHV0IGJ1ZyBvZiB0aGUgbG9jYWwgZGV2aWNlIHJlZmVyZW5jZSBpbiB0aGUgRFJCRCBwcm90b2NvbCBoYW5kbGVyIGByZWNlaXZlX1N5bmNQYXJhbWAgd2hlbiBgZmlmb19hbGxvY2AgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gcmVhY2hhYmxlIGJsb2NrIGRyaXZlciBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjgmm9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 15:14:35 +0000 UTC FinishedAt: 2026-06-25 15:31:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_DRBD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "ab9de95c9cf952332ab79453b4b5d1bfca8e514f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_DRBD" ], "series_id": "ce99f795-7937-4d7d-ba42-a2c4cd4e81c2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "receive_SyncParam" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfRFJCRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlY2VpdmVfU3luY1BhcmFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlLXB1dCBidWcgb2YgdGhlIGxvY2FsIGRldmljZSByZWZlcmVuY2UgaW4gdGhlIERSQkQgcHJvdG9jb2wgaGFuZGxlciBgcmVjZWl2ZV9TeW5jUGFyYW1gIHdoZW4gYGZpZm9fYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQwNzAzNDE4NGExYmEyYmJlOWQ1YzYwNWUzNGJmZjZkOWVlNGFkYWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAxNTozMToxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuaW5kZXggNThiOTViZjRiZGNhNmEuLmY2MThkMDNmZDJhNmVhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuQEAgLTM3ODcsNyAmIzQzOzM3ODcsNiBAQCBzdGF0aWMgaW50IHJlY2VpdmVfU3luY1BhcmFtKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHN0cnVjdCBwYWNrZXRfaVxuIFx0XHRcdFx0bmV3X3BsYW4gPSBmaWZvX2FsbG9jKGZpZm9fc2l6ZSk7XG4gXHRcdFx0XHRpZiAoIW5ld19wbGFuKSB7XG4gXHRcdFx0XHRcdGRyYmRfZXJyKGRldmljZSwgXCYjMzQ7a21hbGxvYyBvZiBmaWZvX2J1ZmZlciBmYWlsZWRcJiMzNDspO1xuLVx0XHRcdFx0XHRwdXRfbGRldihkZXZpY2UpO1xuIFx0XHRcdFx0XHRnb3RvIGRpc2Nvbm5lY3Q7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfRFJCRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlY2VpdmVfU3luY1BhcmFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlLXB1dCBidWcgb2YgdGhlIGxvY2FsIGRldmljZSByZWZlcmVuY2UgaW4gdGhlIERSQkQgcHJvdG9jb2wgaGFuZGxlciBgcmVjZWl2ZV9TeW5jUGFyYW1gIHdoZW4gYGZpZm9fYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDA3MDM0MTg0YTFiYTJiYmU5ZDVjNjA1ZTM0YmZmNmQ5ZWU0YWRhYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDE1OjMxOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKaW5kZXggNThiOTViZjRiZGNhNmEuLmY2MThkMDNmZDJhNmVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAgLTM3ODcsNyAmIzQzOzM3ODcsNiBAQCBzdGF0aWMgaW50IHJlY2VpdmVfU3luY1BhcmFtKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHN0cnVjdCBwYWNrZXRfaQogCQkJCW5ld19wbGFuID0gZmlmb19hbGxvYyhmaWZvX3NpemUpOwogCQkJCWlmICghbmV3X3BsYW4pIHsKIAkJCQkJZHJiZF9lcnIoZGV2aWNlLCAmIzM0O2ttYWxsb2Mgb2YgZmlmb19idWZmZXIgZmFpbGVkJiMzNDspOwotCQkJCQlwdXRfbGRldihkZXZpY2UpOwogCQkJCQlnb3RvIGRpc2Nvbm5lY3Q7CiAJCQkJfQogCQkJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqRFJCRCBSZWNlaXZlciBQYXRjaCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY2AuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgcmVtb3ZpbmcgYSBgcHV0X2xkZXYoZGV2aWNlKTtgIGNhbGwgd2l0aGluIHRoZSBgcmVjZWl2ZV9TeW5jUGFyYW1gIGZ1bmN0aW9uLiBUaGlzIGlzIGludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aHkgdGhleSBkZWNpZGVkIHRvIG1ha2UgdGhpcyBjaGFuZ2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlLiBNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIG1lbW9yeSBsZWFrcy4gUmVtb3ZpbmcgdGhlIGBwdXRfbGRldmAgY2FsbCBpbiBhIGZhaWx1cmUgcGF0aCwgc3BlY2lmaWNhbGx5IHRoZSBgZmlmb19hbGxvY2AgZmFpbHVyZSBwYXRoLCBpcyBhIHBvdGVudGlhbCBhcmVhIGZvciBsZWFrYWdlIGFuZCBjb3VsZCBsZWFkIHRvIHByb2JsZW1zIGRvd24gdGhlIHJvYWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGZpZm9fYWxsb2NgICpkb2VzKiBhbmQgd2hhdCBgcHV0X2xkZXZgICpkb2VzKiB0byBiZSBjZXJ0YWluLiBJcyB0aGlzIHNhZmUgdG8gbWFrZT8gSXMgdGhlIGRldmljZSBoYW5kbGUgYmVpbmcgcHJvcGVybHkgaGFuZGxlZCBpbiBhbGwgb3RoZXIgc2NlbmFyaW9zPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29kZSBjYXJlZnVsbHkgYW5kIGZpZ3VyZSBvdXQgdGhlIGNoYWluIG9mIGV2ZW50cy4gSSB3YW50IHRvIGRvdWJsZSBjaGVjayB0aGUgZXJyb3IgaGFuZGxpbmcgaGVyZSwgYW5kIHZlcmlmeSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIGNvcnJlY3QuIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIGV2ZXIgY2FsbGVkIHdpdGggYW4gdW5leHBlY3RlZCBgZGV2aWNlYCB2YWx1ZS4gRXNzZW50aWFsbHksIHRoZSBuZXh0IHN0ZXAgaXMgYSBkZWVwIGRpdmUgaW50byBgcmVjZWl2ZV9TeW5jUGFyYW1gIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSwgZXNwZWNpYWxseSBhbnl0aGluZyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZXZpY2UgaGFuZGxpbmcgd2l0aGluIHRoYXQgbW9kdWxlLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsIGFuZCBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gc3VidGxlIHJlc291cmNlIGxlYWsgb3IgY29ycnVwdGlvbiBpbnRyb2R1Y2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlY2VpdmVfU3luY1BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jPTM2NDc9c3RhdGljIGludCBjb25maWdfdW5rbm93bl92b2x1bWUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHBhY2tldF9pbmZvICpwaSlcbi0tXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jLTM2NTMtXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jOjM2NTQ6c3RhdGljIGludCByZWNlaXZlX1N5bmNQYXJhbShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxuZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYy0zNjU1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jPTQ4MzI9c3RhdGljIHN0cnVjdCBkYXRhX2NtZCBkcmJkX2NtZF9oYW5kbGVyW10gPSB7XG4tLVxuZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYy00ODQxLVx0W1BfUlNfREFUQV9SRVFVRVNUXSA9IHsgMCwgc2l6ZW9mKHN0cnVjdCBwX2Jsb2NrX3JlcSksIHJlY2VpdmVfRGF0YVJlcXVlc3QgfSxcbmRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmM6NDg0MjpcdFtQX1NZTkNfUEFSQU1dXHQgICAgPSB7IDEsIDAsIHJlY2VpdmVfU3luY1BhcmFtIH0sXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jOjQ4NDM6XHRbUF9TWU5DX1BBUkFNODldICAgID0geyAxLCAwLCByZWNlaXZlX1N5bmNQYXJhbSB9LFxuZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYy00ODQ0LVx0W1BfUFJPVE9DT0xdICAgICAgICA9IHsgMSwgc2l6ZW9mKHN0cnVjdCBwX3Byb3RvY29sKSwgcmVjZWl2ZV9wcm90b2NvbCB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgcmVjZWl2ZV9TeW5jUGFyYW1gIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHplcm9pbmcgaW4gb24gYHJlY2VpdmVfU3luY1BhcmFtYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSBhYm91dCBoYW5kbGluZyBzb21lIHNvcnQgb2YgcGFyYW1ldGVyIHN5bmNocm9uaXphdGlvbi4gR2l2ZW4gdGhhdCBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGxldCYjMzk7cyB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIGJlZW4gbW9kaWZpZWQuJiMzNDsgQ29udGV4dCBpcyBldmVyeXRoaW5nLCBzbyBJJiMzOTttIHNraXBwaW5nIHJpZ2h0IHRvIGxpbmUgMzc4NyB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCBhcm91bmQgdGhhdCBmdW5jdGlvbiBjYWxsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgKnN1cHBvc2VkKiB0byBiZSBkb2luZyBiZWZvcmUgSSBjYW4gZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLiBJcyB0aGlzIGEgbmV3IGZlYXR1cmUsIGEgYnVnIGZpeCwgYW4gb3B0aW1pemF0aW9uPyBJIGNhbiYjMzk7dCBzYXkgYW55dGhpbmcgdW50aWwgSSBzZWUgdGhlIHN1cnJvdW5kaW5nIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNzYwOlx0XHRcdFx0XHR2ZXJpZnlfdGZtID0gTlVMTDtcbjM3NjE6XHRcdFx0XHRcdGdvdG8gZGlzY29ubmVjdDtcbjM3NjI6XHRcdFx0XHR9XG4zNzYzOlx0XHRcdH1cbjM3NjQ6XHRcbjM3NjU6XHRcdFx0aWYgKGFwdiBcdTAwM2U9IDg5IFx1MDAyNlx1MDAyNiBzdHJjbXAob2xkX25ldF9jb25mLVx1MDAzZWNzdW1zX2FsZywgcC1cdTAwM2Vjc3Vtc19hbGcpKSB7XG4zNzY2Olx0XHRcdFx0aWYgKGRldmljZS1cdTAwM2VzdGF0ZS5jb25uID09IENfV0ZfUkVQT1JUX1BBUkFNUykge1xuMzc2NzpcdFx0XHRcdFx0ZHJiZF9lcnIoZGV2aWNlLCBcJiMzNDtEaWZmZXJlbnQgY3N1bXMtYWxnIHNldHRpbmdzLiBtZT1cXFwmIzM0OyVzXFxcJiMzNDsgcGVlcj1cXFwmIzM0OyVzXFxcJiMzNDtcXG5cJiMzNDssXG4zNzY4Olx0XHRcdFx0XHQgICAgb2xkX25ldF9jb25mLVx1MDAzZWNzdW1zX2FsZywgcC1cdTAwM2Vjc3Vtc19hbGcpO1xuMzc2OTpcdFx0XHRcdFx0Z290byBkaXNjb25uZWN0O1xuMzc3MDpcdFx0XHRcdH1cbjM3NzE6XHRcdFx0XHRjc3Vtc190Zm0gPSBkcmJkX2NyeXB0b19hbGxvY19kaWdlc3Rfc2FmZShkZXZpY2UsXG4zNzcyOlx0XHRcdFx0XHRcdHAtXHUwMDNlY3N1bXNfYWxnLCBcJiMzNDtjc3Vtcy1hbGdcJiMzNDspO1xuMzc3MzpcdFx0XHRcdGlmIChJU19FUlIoY3N1bXNfdGZtKSkge1xuMzc3NDpcdFx0XHRcdFx0Y3N1bXNfdGZtID0gTlVMTDtcbjM3NzU6XHRcdFx0XHRcdGdvdG8gZGlzY29ubmVjdDtcbjM3NzY6XHRcdFx0XHR9XG4zNzc3Olx0XHRcdH1cbjM3Nzg6XHRcbjM3Nzk6XHRcdFx0aWYgKGFwdiBcdTAwM2UgOTQgXHUwMDI2XHUwMDI2IG5ld19kaXNrX2NvbmYpIHtcbjM3ODA6XHRcdFx0XHRuZXdfZGlza19jb25mLVx1MDAzZWNfcGxhbl9haGVhZCA9IGJlMzJfdG9fY3B1KHAtXHUwMDNlY19wbGFuX2FoZWFkKTtcbjM3ODE6XHRcdFx0XHRuZXdfZGlza19jb25mLVx1MDAzZWNfZGVsYXlfdGFyZ2V0ID0gYmUzMl90b19jcHUocC1cdTAwM2VjX2RlbGF5X3RhcmdldCk7XG4zNzgyOlx0XHRcdFx0bmV3X2Rpc2tfY29uZi1cdTAwM2VjX2ZpbGxfdGFyZ2V0ID0gYmUzMl90b19jcHUocC1cdTAwM2VjX2ZpbGxfdGFyZ2V0KTtcbjM3ODM6XHRcdFx0XHRuZXdfZGlza19jb25mLVx1MDAzZWNfbWF4X3JhdGUgPSBiZTMyX3RvX2NwdShwLVx1MDAzZWNfbWF4X3JhdGUpO1xuMzc4NDpcdFxuMzc4NTpcdFx0XHRcdGZpZm9fc2l6ZSA9IChuZXdfZGlza19jb25mLVx1MDAzZWNfcGxhbl9haGVhZCAqIDEwICogU0xFRVBfVElNRSkgLyBIWjtcbjM3ODY6XHRcdFx0XHRpZiAoZmlmb19zaXplICE9IGRldmljZS1cdTAwM2Vyc19wbGFuX3MtXHUwMDNlc2l6ZSkge1xuMzc4NzpcdFx0XHRcdFx0bmV3X3BsYW4gPSBmaWZvX2FsbG9jKGZpZm9fc2l6ZSk7XG4zNzg4Olx0XHRcdFx0XHRpZiAoIW5ld19wbGFuKSB7XG4zNzg5Olx0XHRcdFx0XHRcdGRyYmRfZXJyKGRldmljZSwgXCYjMzQ7a21hbGxvYyBvZiBmaWZvX2J1ZmZlciBmYWlsZWRcJiMzNDspO1xuMzc5MDpcdFx0XHRcdFx0XHRnb3RvIGRpc2Nvbm5lY3Q7XG4zNzkxOlx0XHRcdFx0XHR9XG4zNzkyOlx0XHRcdFx0fVxuMzc5MzpcdFx0XHR9XG4zNzk0Olx0XG4zNzk1Olx0XHRcdGlmICh2ZXJpZnlfdGZtIHx8IGNzdW1zX3RmbSkge1xuMzc5NjpcdFx0XHRcdG5ld19uZXRfY29uZiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBuZXRfY29uZik7XG4zNzk3Olx0XHRcdFx0aWYgKCFuZXdfbmV0X2NvbmYpXG4zNzk4Olx0XHRcdFx0XHRnb3RvIGRpc2Nvbm5lY3Q7XG4zNzk5Olx0XG4zODAwOlx0XHRcdFx0Km5ld19uZXRfY29uZiA9ICpvbGRfbmV0X2NvbmY7XG4zODAxOlx0XG4zODAyOlx0XHRcdFx0aWYgKHZlcmlmeV90Zm0pIHtcbjM4MDM6XHRcdFx0XHRcdHN0cnNjcHkobmV3X25ldF9jb25mLVx1MDAzZXZlcmlmeV9hbGcsIHAtXHUwMDNldmVyaWZ5X2FsZyk7XG4zODA0Olx0XHRcdFx0XHRuZXdfbmV0X2NvbmYtXHUwMDNldmVyaWZ5X2FsZ19sZW4gPSBzdHJsZW4ocC1cdTAwM2V2ZXJpZnlfYWxnKSAmIzQzOyAxO1xuMzgwNTpcdFx0XHRcdFx0Y3J5cHRvX2ZyZWVfc2hhc2gocGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbi1cdTAwM2V2ZXJpZnlfdGZtKTtcbjM4MDY6XHRcdFx0XHRcdHBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb24tXHUwMDNldmVyaWZ5X3RmbSA9IHZlcmlmeV90Zm07XG4zODA3Olx0XHRcdFx0XHRkcmJkX2luZm8oZGV2aWNlLCBcJiMzNDt1c2luZyB2ZXJpZnktYWxnOiBcXFwmIzM0OyVzXFxcJiMzNDtcXG5cJiMzNDssIHAtXHUwMDNldmVyaWZ5X2FsZyk7XG4zODA4Olx0XHRcdFx0fVxuMzgwOTpcdFx0XHRcdGlmIChjc3Vtc190Zm0pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzg0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6CgoqKlRyb3VibGVzaG9vdGluZyBhIFJlY2VudCBDb2RlIENoYW5nZSoqCgpBbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLi4uIEkmIzM5O20gbm90aWNpbmcgdGhhdCBgcHV0X2xkZXYoZGV2aWNlKTtgIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmlwcGVkIG91dCBvZiB0aGUgY29kZSBiYXNlLiBUaGF0JiMzOTtzIGEgcmVkIGZsYWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsLCBhbmQgd2hldGhlciB0aGlzIHJlbW92YWwgaXMgYSBicmVha2luZyBjaGFuZ2UuCgpUaGUgb2J2aW91cyBxdWVzdGlvbiBpczogd2hlcmUgd2FzIGBwdXRfbGRldigpYCBiZWluZyB1c2VkPyBNeSBmaXJzdCBodW5jaCBpcyB0byBjaGVjayB0aGUgaW1tZWRpYXRlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIGNhbGwgc3RhY2tzLCBidXQgYmVmb3JlIEkgZ28gdGhlcmUsIGxldCBtZSBxdWlja2x5IGFzY2VydGFpbiBpZiB0aGUgZGV2aWNlIGl0IHRha2VzLCAqZGV2aWNlKiwgd2FzIGJlaW5nIHJldHJpZXZlZCBiZWZvcmVoYW5kLiBUaGUgaW1tZWRpYXRlIGxvZ2ljYWwgc3RlcCB0byB0YWtlIGhlcmUgaXMgdG8gYW5hbHl6ZSB0aGUgY29kZSBmb3IgYW55IGNhbGxzIHRvIGBnZXRfbGRldihkZXZpY2UpYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgKmRldmljZSogd2FzIGJlaW5nIGhhbmRsZWQgYmVmb3JlIHRoZSBwb3RlbnRpYWwgd3JpdGUgdG8gaXQgd2l0aCBgcHV0X2xkZXYoKWAsIHRvIGRldGVybWluZSB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLiBGcm9tIHRoZSBjYWxsIHN0YWNrLCBJIGNhbiBkZXRlcm1pbmUgd2h5IHRoaXMgY2hhbmdlIHdhcyBtYWRlIGluIHRoZSBmaXJzdCBwbGFjZSwgYW5kIHdoZXJlIGl0cyBpbXBhY3Qgd2lsbCBiZSB0aGUgbW9zdCBhcHBhcmVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNjUwOlx0XHRcdCAgY21kbmFtZShwaS1cdTAwM2VjbWQpLCBwaS1cdTAwM2V2bnIpO1xuMzY1MTpcdFx0cmV0dXJuIGlnbm9yZV9yZW1haW5pbmdfcGFja2V0KGNvbm5lY3Rpb24sIHBpKTtcbjM2NTI6XHR9XG4zNjUzOlx0XG4zNjU0Olx0c3RhdGljIGludCByZWNlaXZlX1N5bmNQYXJhbShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxuMzY1NTpcdHtcbjM2NTY6XHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZTtcbjM2NTc6XHRcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlO1xuMzY1ODpcdFx0c3RydWN0IHBfcnNfcGFyYW1fOTUgKnA7XG4zNjU5Olx0XHR1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsIGRhdGFfc2l6ZSwgZXhwX21heF9zejtcbjM2NjA6XHRcdHN0cnVjdCBjcnlwdG9fc2hhc2ggKnZlcmlmeV90Zm0gPSBOVUxMO1xuMzY2MTpcdFx0c3RydWN0IGNyeXB0b19zaGFzaCAqY3N1bXNfdGZtID0gTlVMTDtcbjM2NjI6XHRcdHN0cnVjdCBuZXRfY29uZiAqb2xkX25ldF9jb25mLCAqbmV3X25ldF9jb25mID0gTlVMTDtcbjM2NjM6XHRcdHN0cnVjdCBkaXNrX2NvbmYgKm9sZF9kaXNrX2NvbmYgPSBOVUxMLCAqbmV3X2Rpc2tfY29uZiA9IE5VTEw7XG4zNjY0Olx0XHRjb25zdCBpbnQgYXB2ID0gY29ubmVjdGlvbi1cdTAwM2VhZ3JlZWRfcHJvX3ZlcnNpb247XG4zNjY1Olx0XHRzdHJ1Y3QgZmlmb19idWZmZXIgKm9sZF9wbGFuID0gTlVMTCwgKm5ld19wbGFuID0gTlVMTDtcbjM2NjY6XHRcdHVuc2lnbmVkIGludCBmaWZvX3NpemUgPSAwO1xuMzY2NzpcdFx0aW50IGVycjtcbjM2Njg6XHRcbjM2Njk6XHRcdHBlZXJfZGV2aWNlID0gY29ubl9wZWVyX2RldmljZShjb25uZWN0aW9uLCBwaS1cdTAwM2V2bnIpO1xuMzY3MDpcdFx0aWYgKCFwZWVyX2RldmljZSlcbjM2NzE6XHRcdFx0cmV0dXJuIGNvbmZpZ191bmtub3duX3ZvbHVtZShjb25uZWN0aW9uLCBwaSk7XG4zNjcyOlx0XHRkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4zNjczOlx0XG4zNjc0Olx0XHRleHBfbWF4X3N6ICA9IGFwdiBcdTAwM2M9IDg3ID8gc2l6ZW9mKHN0cnVjdCBwX3JzX3BhcmFtKVxuMzY3NTpcdFx0XHQgICAgOiBhcHYgPT0gODggPyBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW0pXG4zNjc2Olx0XHRcdFx0XHRcdCYjNDM7IFNIQVJFRF9TRUNSRVRfTUFYXG4zNjc3Olx0XHRcdCAgICA6IGFwdiBcdTAwM2M9IDk0ID8gc2l6ZW9mKHN0cnVjdCBwX3JzX3BhcmFtXzg5KVxuMzY3ODpcdFx0XHQgICAgOiAvKiBhcHYgXHUwMDNlPSA5NSAqLyBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW1fOTUpO1xuMzY3OTpcdFxuMzY4MDpcdFx0aWYgKHBpLVx1MDAzZXNpemUgXHUwMDNlIGV4cF9tYXhfc3opIHtcbjM2ODE6XHRcdFx0ZHJiZF9lcnIoZGV2aWNlLCBcJiMzNDtTeW5jUGFyYW0gcGFja2V0IHRvbyBsb25nOiByZWNlaXZlZCAldSwgZXhwZWN0ZWQgXHUwMDNjPSAldSBieXRlc1xcblwmIzM0OyxcbjM2ODI6XHRcdFx0ICAgIHBpLVx1MDAzZXNpemUsIGV4cF9tYXhfc3opO1xuMzY4MzpcdFx0XHRyZXR1cm4gLUVJTztcbjM2ODQ6XHRcdH1cbjM2ODU6XHRcbjM2ODY6XHRcdGlmIChhcHYgXHUwMDNjPSA4OCkge1xuMzY4NzpcdFx0XHRoZWFkZXJfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcF9yc19wYXJhbSk7XG4zNjg4Olx0XHRcdGRhdGFfc2l6ZSA9IHBpLVx1MDAzZXNpemUgLSBoZWFkZXJfc2l6ZTtcbjM2ODk6XHRcdH0gZWxzZSBpZiAoYXB2IFx1MDAzYz0gOTQpIHtcbjM2OTA6XHRcdFx0aGVhZGVyX3NpemUgPSBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW1fODkpO1xuMzY5MTpcdFx0XHRkYXRhX3NpemUgPSBwaS1cdTAwM2VzaXplIC0gaGVhZGVyX3NpemU7XG4zNjkyOlx0XHRcdERfQVNTRVJUKGRldmljZSwgZGF0YV9zaXplID09IDApO1xuMzY5MzpcdFx0fSBlbHNlIHtcbjM2OTQ6XHRcdFx0aGVhZGVyX3NpemUgPSBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW1fOTUpO1xuMzY5NTpcdFx0XHRkYXRhX3NpemUgPSBwaS1cdTAwM2VzaXplIC0gaGVhZGVyX3NpemU7XG4zNjk2Olx0XHRcdERfQVNTRVJUKGRldmljZSwgZGF0YV9zaXplID09IDApO1xuMzY5NzpcdFx0fVxuMzY5ODpcdFxuMzY5OTpcdFx0LyogaW5pdGlhbGl6ZSB2ZXJpZnlfYWxnIGFuZCBjc3Vtc19hbGcgKi9cbjM3MDA6XHRcdHAgPSBwaS1cdTAwM2VkYXRhO1xuMzcwMTpcdFx0QlVJTERfQlVHX09OKHNpemVvZihwLVx1MDAzZWFsZ3MpICE9IDIgKiBTSEFSRURfU0VDUkVUX01BWCk7XG4zNzAyOlx0XHRtZW1zZXQoXHUwMDI2cC1cdTAwM2VhbGdzLCAwLCBzaXplb2YocC1cdTAwM2VhbGdzKSk7XG4zNzAzOlx0XG4zNzA0Olx0XHRlcnIgPSBkcmJkX3JlY3ZfYWxsKHBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb24sIHAsIGhlYWRlcl9zaXplKTtcbjM3MDU6XHRcdGlmIChlcnIpXG4zNzA2Olx0XHRcdHJldHVybiBlcnI7XG4zNzA3Olx0XG4zNzA4Olx0XHRtdXRleF9sb2NrKFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlcmVzb3VyY2UtXHUwMDNlY29uZl91cGRhdGUpO1xuMzcwOTpcdFx0b2xkX25ldF9jb25mID0gcGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbi1cdTAwM2VuZXRfY29uZjtcbjM3MTA6XHRcdGlmIChnZXRfbGRldihkZXZpY2UpKSB7XG4zNzExOlx0XHRcdG5ld19kaXNrX2NvbmYgPSBremFsbG9jX29iaihzdHJ1Y3QgZGlza19jb25mKTtcbjM3MTI6XHRcdFx0aWYgKCFuZXdfZGlza19jb25mKSB7XG4zNzEzOlx0XHRcdFx0cHV0X2xkZXYoZGV2aWNlKTtcbjM3MTQ6XHRcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2Y29ubmVjdGlvbi1cdTAwM2VyZXNvdXJjZS1cdTAwM2Vjb25mX3VwZGF0ZSk7XG4zNzE1Olx0XHRcdFx0ZHJiZF9lcnIoZGV2aWNlLCBcJiMzNDtBbGxvY2F0aW9uIG9mIG5ldyBkaXNrX2NvbmYgZmFpbGVkXFxuXCYjMzQ7KTtcbjM3MTY6XHRcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjM3MTc6XHRcdFx0fVxuMzcxODpcdFxuMzcxOTpcdFx0XHRvbGRfZGlza19jb25mID0gZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlZGlza19jb25mO1xuMzcyMDpcdFx0XHQqbmV3X2Rpc2tfY29uZiA9ICpvbGRfZGlza19jb25mO1xuMzcyMTpcdFxuMzcyMjpcdFx0XHRuZXdfZGlza19jb25mLVx1MDAzZXJlc3luY19yYXRlID0gYmUzMl90b19jcHUocC1cdTAwM2VyZXN5bmNfcmF0ZSk7XG4zNzIzOlx0XHR9XG4zNzI0Olx0XG4zNzI1Olx0XHRpZiAoYXB2IFx1MDAzZT0gODgpIHtcbjM3MjY6XHRcdFx0aWYgKGFwdiA9PSA4OCkge1xuMzcyNzpcdFx0XHRcdGlmIChkYXRhX3NpemUgXHUwMDNlIFNIQVJFRF9TRUNSRVRfTUFYIHx8IGRhdGFfc2l6ZSA9PSAwKSB7XG4zNzI4Olx0XHRcdFx0XHRkcmJkX2VycihkZXZpY2UsIFwmIzM0O3ZlcmlmeS1hbGcgb2Ygd3Jvbmcgc2l6ZSwgXCYjMzQ7XG4zNzI5Olx0XHRcdFx0XHRcdFwmIzM0O3BlZXIgd2FudHMgJXUsIGFjY2VwdGluZyBvbmx5IHVwIHRvICV1IGJ5dGVcXG5cJiMzNDssXG4zNzMwOlx0XHRcdFx0XHRcdGRhdGFfc2l6ZSwgU0hBUkVEX1NFQ1JFVF9NQVgpO1xuMzczMTpcdFx0XHRcdFx0Z290byByZWNvbm5lY3Q7XG4zNzMyOlx0XHRcdFx0fVxuMzczMzpcdFxuMzczNDpcdFx0XHRcdGVyciA9IGRyYmRfcmVjdl9hbGwocGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbiwgcC1cdTAwM2V2ZXJpZnlfYWxnLCBkYXRhX3NpemUpO1xuMzczNTpcdFx0XHRcdGlmIChlcnIpXG4zNzM2Olx0XHRcdFx0XHRnb3RvIHJlY29ubmVjdDtcbjM3Mzc6XHRcdFx0XHQvKiB3ZSBleHBlY3QgTlVMIHRlcm1pbmF0ZWQgc3RyaW5nICovXG4zNzM4Olx0XHRcdFx0LyogYnV0IGp1c3QgaW4gY2FzZSBzb21lb25lIHRyaWVzIHRvIGJlIGV2aWwgKi9cbjM3Mzk6XHRcdFx0XHREX0FTU0VSVChkZXZpY2UsIHAtXHUwMDNldmVyaWZ5X2FsZ1tkYXRhX3NpemUtMV0gPT0gMCk7XG4zNzQwOlx0XHRcdFx0cC1cdTAwM2V2ZXJpZnlfYWxnW2RhdGFfc2l6ZS0xXSA9IDA7XG4zNzQxOlx0XG4zNzQyOlx0XHRcdH0gZWxzZSAvKiBhcHYgXHUwMDNlPSA4OSAqLyB7XG4zNzQzOlx0XHRcdFx0Lyogd2Ugc3RpbGwgZXhwZWN0IE5VTCB0ZXJtaW5hdGVkIHN0cmluZ3MgKi9cbjM3NDQ6XHRcdFx0XHQvKiBidXQganVzdCBpbiBjYXNlIHNvbWVvbmUgdHJpZXMgdG8gYmUgZXZpbCAqL1xuMzc0NTpcdFx0XHRcdERfQVNTRVJUKGRldmljZSwgcC1cdTAwM2V2ZXJpZnlfYWxnW1NIQVJFRF9TRUNSRVRfTUFYLTFdID09IDApO1xuMzc0NjpcdFx0XHRcdERfQVNTRVJUKGRldmljZSwgcC1cdTAwM2Vjc3Vtc19hbGdbU0hBUkVEX1NFQ1JFVF9NQVgtMV0gPT0gMCk7XG4zNzQ3Olx0XHRcdFx0cC1cdTAwM2V2ZXJpZnlfYWxnW1NIQVJFRF9TRUNSRVRfTUFYLTFdID0gMDtcbjM3NDg6XHRcdFx0XHRwLVx1MDAzZWNzdW1zX2FsZ1tTSEFSRURfU0VDUkVUX01BWC0xXSA9IDA7XG4zNzQ5Olx0XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODc1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGRpc2tfY29uZmAgVXBkYXRlIGluIERSQkQgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgRFJCRCBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzcxMC4gSSBzZWUgdGhhdCBgZ2V0X2xkZXYoZGV2aWNlKWAgaXMgYmVpbmcgY2FsbGVkLiBJZiB0aGF0IHJldHVybnMgdHJ1ZSwgYSBgbmV3X2Rpc2tfY29uZmAgaXMgYWxsb2NhdGVkLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2g7IHdlJiMzOTtyZSBwcm9iYWJseSBzZXR0aW5nIHVwIHRvIHVwZGF0ZSB0aGUgZGlzayBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCBmdW5jdGlvbiBvZiBgZ2V0X2xkZXYoZGV2aWNlKWAgYW5kIGBwdXRfbGRldihkZXZpY2UpYCB0byBiZSBzdXJlLgoKTG9va2luZyBmdXJ0aGVyLCBJIHNlZSBtb3JlIGludGVyZXN0aW5nIGxvZ2ljIGF0IGhpZ2hlciBBUFYgdmFsdWVzLiBJZiBgYXB2ICZndDsgOTRgIGFuZCBgbmV3X2Rpc2tfY29uZmAgZXhpc3RzLCB3ZSYjMzk7cmUgY29weWluZyBzb21lIHZhbHVlcyBmcm9tIHNvbWUgYHBgIG9iamVjdCBpbnRvIGBuZXdfZGlza19jb25mYC4gU3BlY2lmaWNhbGx5LCBgY19wbGFuX2FoZWFkYCwgYGNfZGVsYXlfdGFyZ2V0YCwgYGNfZmlsbF90YXJnZXRgLCBhbmQgYGNfbWF4X3JhdGVgIGFyZSBiZWluZyB1cGRhdGVkLiBUaGVuLCBhIGBmaWZvX3NpemVgIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gYGNfcGxhbl9haGVhZGAgYW5kIHVzZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBgbmV3X3BsYW5gIHVzaW5nIGBmaWZvX2FsbG9jYC4KCk5vdywgaWYgdGhhdCBgZmlmb19hbGxvY2AgZmFpbHMsIGl0IGp1bXBzIHRvIHRoZSBgZGlzY29ubmVjdGAgbGFiZWwuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIGJpdCBJIHdhbnQgdG8gdW5kZXJzdGFuZC4gV2hhdCBleGFjdGx5IGlzIGhhcHBlbmluZyBkdXJpbmcgdGhhdCBkaXNjb25uZWN0PyBXaGF0IHJlc291cmNlcyBhcmUgYmVpbmcgZnJlZWQ/IElzIHRoZXJlIGEgcmlzayBvZiBtZW1vcnkgbGVha3Mgb3IgbGVhdmluZyB0aGUgZGV2aWNlIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZT8gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY29kZSBmcm9tIHRoZSBgZGlzY29ubmVjdGAgbGFiZWwgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgaGFuZGxlZCBncmFjZWZ1bGx5IGluIGNhc2Ugb2YgYSBgZmlmb19hbGxvY2AgZmFpbHVyZS4gSSYjMzk7bGwgY2hlY2sgaG93IGBuZXdfZGlza19jb25mYCBpcyB1c2VkIGluIHRoaXMgcHJvY2VzcyBhcyB3ZWxsLCB0byBtYWtlIHN1cmUgaXQmIzM5O3MgZnJlZWQgaWYgaXQgZG9lc24mIzM5O3QgZ2V0IGFzc2lnbmVkIHByb3Blcmx5LiBJJiMzOTtsbCBhbHNvIGJlIHNlYXJjaGluZyBmb3IgcmVsYXRlZCBjb2RlLCBhcyB0aGVyZSBjb3VsZCBiZSBvdGhlciBwYXRocyB0aHJvdWdoIHRoZSBjb2RlIHdoaWNoIHBlcmZvcm0gdGhpcyBraW5kIG9mIHVwZGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzgxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszODEwOlx0XHRcdFx0XHRzdHJzY3B5KG5ld19uZXRfY29uZi1cdTAwM2Vjc3Vtc19hbGcsIHAtXHUwMDNlY3N1bXNfYWxnKTtcbjM4MTE6XHRcdFx0XHRcdG5ld19uZXRfY29uZi1cdTAwM2Vjc3Vtc19hbGdfbGVuID0gc3RybGVuKHAtXHUwMDNlY3N1bXNfYWxnKSAmIzQzOyAxO1xuMzgxMjpcdFx0XHRcdFx0Y3J5cHRvX2ZyZWVfc2hhc2gocGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbi1cdTAwM2Vjc3Vtc190Zm0pO1xuMzgxMzpcdFx0XHRcdFx0cGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbi1cdTAwM2Vjc3Vtc190Zm0gPSBjc3Vtc190Zm07XG4zODE0Olx0XHRcdFx0XHRkcmJkX2luZm8oZGV2aWNlLCBcJiMzNDt1c2luZyBjc3Vtcy1hbGc6IFxcXCYjMzQ7JXNcXFwmIzM0O1xcblwmIzM0OywgcC1cdTAwM2Vjc3Vtc19hbGcpO1xuMzgxNTpcdFx0XHRcdH1cbjM4MTY6XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoY29ubmVjdGlvbi1cdTAwM2VuZXRfY29uZiwgbmV3X25ldF9jb25mKTtcbjM4MTc6XHRcdFx0fVxuMzgxODpcdFx0fVxuMzgxOTpcdFxuMzgyMDpcdFx0aWYgKG5ld19kaXNrX2NvbmYpIHtcbjM4MjE6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldmljZS1cdTAwM2VsZGV2LVx1MDAzZWRpc2tfY29uZiwgbmV3X2Rpc2tfY29uZik7XG4zODIyOlx0XHRcdHB1dF9sZGV2KGRldmljZSk7XG4zODIzOlx0XHR9XG4zODI0Olx0XG4zODI1Olx0XHRpZiAobmV3X3BsYW4pIHtcbjM4MjY6XHRcdFx0b2xkX3BsYW4gPSBkZXZpY2UtXHUwMDNlcnNfcGxhbl9zO1xuMzgyNzpcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2aWNlLVx1MDAzZXJzX3BsYW5fcywgbmV3X3BsYW4pO1xuMzgyODpcdFx0fVxuMzgyOTpcdFxuMzgzMDpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlcmVzb3VyY2UtXHUwMDNlY29uZl91cGRhdGUpO1xuMzgzMTpcdFx0c3luY2hyb25pemVfcmN1KCk7XG4zODMyOlx0XHRpZiAobmV3X25ldF9jb25mKVxuMzgzMzpcdFx0XHRrZnJlZShvbGRfbmV0X2NvbmYpO1xuMzgzNDpcdFx0a2ZyZWUob2xkX2Rpc2tfY29uZik7XG4zODM1Olx0XHRrZnJlZShvbGRfcGxhbik7XG4zODM2Olx0XG4zODM3Olx0XHRyZXR1cm4gMDtcbjM4Mzg6XHRcbjM4Mzk6XHRyZWNvbm5lY3Q6XG4zODQwOlx0XHRpZiAobmV3X2Rpc2tfY29uZikge1xuMzg0MTpcdFx0XHRwdXRfbGRldihkZXZpY2UpO1xuMzg0MjpcdFx0XHRrZnJlZShuZXdfZGlza19jb25mKTtcbjM4NDM6XHRcdH1cbjM4NDQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZjb25uZWN0aW9uLVx1MDAzZXJlc291cmNlLVx1MDAzZWNvbmZfdXBkYXRlKTtcbjM4NDU6XHRcdHJldHVybiAtRUlPO1xuMzg0NjpcdFxuMzg0NzpcdGRpc2Nvbm5lY3Q6XG4zODQ4Olx0XHRrZnJlZShuZXdfcGxhbik7XG4zODQ5Olx0XHRpZiAobmV3X2Rpc2tfY29uZikge1xuMzg1MDpcdFx0XHRwdXRfbGRldihkZXZpY2UpO1xuMzg1MTpcdFx0XHRrZnJlZShuZXdfZGlza19jb25mKTtcbjM4NTI6XHRcdH1cbjM4NTM6XHRcdG11dGV4X3VubG9jayhcdTAwMjZjb25uZWN0aW9uLVx1MDAzZXJlc291cmNlLVx1MDAzZWNvbmZfdXBkYXRlKTtcbjM4NTQ6XHRcdC8qIGp1c3QgZm9yIGNvbXBsZXRlbmVzczogYWN0dWFsbHkgbm90IG5lZWRlZCxcbjM4NTU6XHRcdCAqIGFzIHRoaXMgaXMgbm90IHJlYWNoZWQgaWYgY3N1bXNfdGZtIHdhcyBvay4gKi9cbjM4NTY6XHRcdGNyeXB0b19mcmVlX3NoYXNoKGNzdW1zX3RmbSk7XG4zODU3Olx0XHQvKiBidXQgZnJlZSB0aGUgdmVyaWZ5X3RmbSBhZ2FpbiwgaWYgY3N1bXNfdGZtIGRpZCBub3Qgd29yayBvdXQgKi9cbjM4NTg6XHRcdGNyeXB0b19mcmVlX3NoYXNoKHZlcmlmeV90Zm0pO1xuMzg1OTpcdFx0Y29ubl9yZXF1ZXN0X3N0YXRlKHBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb24sIE5TKGNvbm4sIENfRElTQ09OTkVDVElORyksIENTX0hBUkQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjI0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlZmVyZW5jZSBDb3VudGluZyBCdWcgRml4KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEluIHRoaXMgYGRpc2Nvbm5lY3RgIHNlY3Rpb24sIEkgc2VlIGEgY2xlYXIgcG90ZW50aWFsIGZvciBhIGRvdWJsZSBgcHV0X2xkZXYoZGV2aWNlKWAgY2FsbC4gSXQgbG9va3MgbGlrZSB0aGUgY29kZSBpbiB0aGUgYGRpc2Nvbm5lY3RgIGxhYmVsICphbHJlYWR5KiBhY2NvdW50cyBmb3IgYG5ld19kaXNrX2NvbmZgIGJlaW5nIGFsbG9jYXRlZCBhbmQgdGhlcmVmb3JlIGNhbGxzIGBwdXRfbGRldihkZXZpY2UpYC4gSG93ZXZlciwgdGhlcmUmIzM5O3MgYSBjb25kaXRpb25hbCBwYXRoLCBzcGVjaWZpY2FsbHkgd2hlbiBgZmlmb19hbGxvY2AgZmFpbHMsIHRoYXQgKmFsc28qIGNhbGxzIGBwdXRfbGRldihkZXZpY2UpYCAqYmVmb3JlKiBqdW1waW5nIHRvIGBkaXNjb25uZWN0YC4gVGhpcyBpcyBkdXBsaWNhdGVkIGZ1bmN0aW9uYWxpdHksIGEgZGVmaW5pdGUgcmVjaXBlIGZvciBhIHJlZmVyZW5jZSBjb3VudGluZyBwcm9ibGVtIQoKVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCBgbmV3X2Rpc2tfY29uZmAgKndpbGwqIGJlIG5vbi1OVUxMIGluIHRoZSBmYWlsdXJlIHBhdGggb2YgYGZpZm9fYWxsb2NgIGJlY2F1c2Ugb2YgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGBpZiAoYXB2ICZndDsgOTQgJmFtcDsmYW1wOyBuZXdfZGlza19jb25mKWAuIFNvLCB0aGUgY29kZSB3YXMsIGVmZmVjdGl2ZWx5LCBjYWxsaW5nIGBwdXRfbGRldihkZXZpY2UpYCB0d2ljZSBpbiB0aGF0IGZhaWx1cmUgc2NlbmFyaW8sIGxlYWRpbmcgdG8gYSBkb3VibGUtZnJlZSBvciBvdGhlciByZWZlcmVuY2UgY291bnQtcmVsYXRlZCBpc3N1ZS4gVGhlIGZpeCwgSSBzZWUsIHNtYXJ0bHkgcmVtb3ZlcyB0aGUgZmlyc3QgYHB1dF9sZGV2KGRldmljZSlgIGNhbGwsIG5lYXRseSByZXNvbHZpbmcgdGhlIGRvdWJsZS1wdXQgYnVnLgoKVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGZ1bmN0aW9uYWwgY2hhbmdlOyBpdCYjMzk7cyBmaXhpbmcgYSBjbGVhciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3IuIEl0JiMzOTtzIHRoZSBraW5kIG9mIGlzc3VlIHRoYXQgY2FuIGxlYWQgdG8gc3VidGxlIGJ1dCBuYXN0eSBwcm9ibGVtcyBpbiB0aGUgbG9uZyBydW4uIE5vdywgdGhlIGtleSBxdWVzdGlvbiBmb3IgbWUgaXMgd2hldGhlciB0aGlzIGlzIGVhc2lseSB0ZXN0YWJsZS4gVGhpcyBpcyBsaWtlbHkgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgcGF0Y2ggcmVsYXRlcyB0byB0aGUgRFJCRCBibG9jayBkcml2ZXIuIEl0IGNhbiBiZSBlYXNpbHkgdGVzdGVkLCBzcGVjaWZpY2FsbHkgYmVjYXVzZSBEUkJEIGlzIGVhc2lseSB0ZXN0YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJIHNob3VsZCBjaGVjayB0byBzZWUgaWYgRFJCRCBpcyBlbmFibGVkIG9yIGNhbiBiZSBlbmFibGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9EUkJEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWc9Nj1jb21tZW50IFwmIzM0O0RSQkQgZGlzYWJsZWQgYmVjYXVzZSBQUk9DX0ZTIG9yIElORVQgbm90IHNlbGVjdGVkXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWctOC1cbmRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnOjk6Y29uZmlnIEJMS19ERVZfRFJCRFxuZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtEUkJEIERpc3RyaWJ1dGVkIFJlcGxpY2F0ZWQgQmxvY2sgRGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ1MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBEUkJEJiMzOTtzIFN5bmNocm9uaXphdGlvbiBQYXJhbWV0ZXIgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byBmdXp6aW5nIERSQkQsIHNwZWNpZmljYWxseSB0aGUgc3luY2hyb25pemF0aW9uIHBhcmFtZXRlciBoYW5kbGluZy4gVGhlIGNvcmUgc2VlbXMgdG8gaGluZ2Ugb24gdGhlIGBCTEtfREVWX0RSQkRgIGNvbmZpZ3VyYXRpb24sIHNvIHRoYXQmIzM5O3MgbXkgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0JiMzOTtzIGVuYWJsZWQ7IG5vIHBvaW50IGdvaW5nIGZ1cnRoZXIgaWYgdGhhdCYjMzk7cyBub3QgcmlnaHQuCgpNeSBpbml0aWFsIHNjYW4gZm9jdXNlcyBvbiBgcmVjZWl2ZV9TeW5jUGFyYW1gIGFuZCBgZHJiZF9yZWNlaXZlci5jYC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgZGVzaWduYXRlZCBwcm90b2NvbCBoYW5kbGVyIGZvciBEUkJELCBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIGluY29taW5nIGBQX1NZTkNfUEFSQU1gIHBhY2tldHMuIEl04oCZcyBwcmV0dHkgY2xlYXIgdGhhdCB0byB0cmlnZ2VyIGZ1enppbmcsIEkmIzM5O2xsIG5lZWQgdG8gbWFuaXB1bGF0ZSBhbmQgc2VuZCBwYWNrZXRzIGRpcmVjdGx5IHRvIHRoZSBEUkJEIHNvY2tldC4KCk15IHByaW1hcnkgZm9jdXMsIG15ICYjMzQ7Rm9jdXNTeW1ib2wsJiMzNDsgd2lsbCBiZSBgcmVjZWl2ZV9TeW5jUGFyYW1gLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IHBheWxvYWRzIGFuZCB0cmlnZ2Vycy4gVGhlIGNyaXRpY2FsICYjMzQ7RW5hYmxlQ29uZmlnJiMzNDsgaXMgZGVmaW5pdGVseSBgQkxLX0RFVl9EUkJEYCwgYXMgdGhhdCBlbmFibGVzIERSQkQgc3VwcG9ydC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgbm8gb3RoZXIgbGVzcyBvYnZpb3VzIGNvbmZpZ3MgYXJlIGFsc28gbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9EUkJEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnPTY9Y29tbWVudCBcJiMzNDtEUkJEIGRpc2FibGVkIGJlY2F1c2UgUFJPQ19GUyBvciBJTkVUIG5vdCBzZWxlY3RlZFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnLTgtXG5kcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZzo5OmNvbmZpZyBCTEtfREVWX0RSQkRcbmRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7RFJCRCBEaXN0cmlidXRlZCBSZXBsaWNhdGVkIEJsb2NrIERldmljZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NTgKCQkJCQkJCW91dHB1dDogOTQKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgYSBDcml0aWNhbCBQYXRjaCoqCgpBbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBwb3RlbnRpYWxseSBuYXN0eSwgYnVnIGluIGByZWNlaXZlX1N5bmNQYXJhbWAuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgZG91YmxlLXB1dCBpc3N1ZSwgc3BlY2lmaWNhbGx5IHRyaWdnZXJlZCB3aGVuIHRoZSBgZmlmb19hbGxvY2AgY2FsbCBmYWlscy4gVGhhdCBtYWtlcyBpdCBhIGZ1bmN0aW9uYWwgZml4LCBub3QganVzdCBjb3NtZXRpYy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSAqaG93KiB0aGlzIGlzIGhhcHBlbmluZy4gVGhlIGRvdWJsZS1wdXQgaW1wbGllcyB0aGF0IHNvbWUgbG9naWMgaXMgYXNzdW1pbmcgYWxsb2NhdGlvbiAqd2lsbCogc3VjY2VlZCBhbmQgY29udGludWVzLCBsZWFkaW5nIHRvIHRoZSBleHRyYSwgYW5kIHBvdGVudGlhbGx5IGRpc2FzdHJvdXMsIGF0dGVtcHQgdG8gcHV0LiBOb3csIHRoZSBmaXggc291bmRzIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyB0aGUgZmFpbHVyZSBjYXNlIG9mIHRoZSBhbGxvY2F0aW9uLiBPa2F5LiBHb3QgaXQuIFNvIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hlbiBgZmlmb19hbGxvY2AgKmRvZXNuJiMzOTt0KiB3b3JrLCB3ZSBleGl0IGdyYWNlZnVsbHkgYW5kIGNvcnJlY3RseSwgcHJldmVudGluZyB0aGUgZG91YmxlLXB1dC4KClNvLCBpbiB0aGUgcmV2aXNlZCBjb2RlLCBteSBhY3Rpb24gd2lsbCBiZSB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGUgYXBwcm9wcmlhdGUgcmV0dXJuIHZhbHVlcy4gVGhpcyBpcyBsaWtlbHkgaGFuZGxpbmcgdGhlIGVycm9yIGNvbmRpdGlvbiBmcm9tIHRoZSBmYWlsZWQgYWxsb2NhdGlvbi4gSXQmIzM5O3MgYSBjbGVhbiBhcHByb2FjaC4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gZml4aW5nIHRoaXMgaXNzdWUuIEkgbmVlZCB0byByZXZpZXcgaG93IHRoZSByZXR1cm4gdmFsdWUgb2YgYGZpZm9fYWxsb2NgIGlzIGJlaW5nIGhhbmRsZWQgaW4gdGhlIGV4aXN0aW5nIGNvZGUgYW5kIGVuc3VyZSB0aGF0IHRoaXMgcGF0Y2ggcHJvdmlkZXMgdGhlIGNvcnJlY3QgcmVzcG9uc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX0RSQkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZWNlaXZlX1N5bmNQYXJhbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRvdWJsZS1wdXQgYnVnIG9mIHRoZSBsb2NhbCBkZXZpY2UgcmVmZXJlbmNlIGluIHRoZSBEUkJEIHByb3RvY29sIGhhbmRsZXIgYHJlY2VpdmVfU3luY1BhcmFtYCB3aGVuIGBmaWZvX2FsbG9jYCBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGZvciBhIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBpbiByZWFjaGFibGUgYmxvY2sgZHJpdmVyIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfRFJCRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JlY2VpdmVfU3luY1BhcmFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlLXB1dCBidWcgb2YgdGhlIGxvY2FsIGRldmljZSByZWZlcmVuY2UgaW4gdGhlIERSQkQgcHJvdG9jb2wgaGFuZGxlciBgcmVjZWl2ZV9TeW5jUGFyYW1gIHdoZW4gYGZpZm9fYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggZm9yIGEgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjMxOjEzLjMzNzk3NjI0NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMTYwNDM0NjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfRFJCRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlY2VpdmVfU3luY1BhcmFtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkb3VibGUtcHV0IGJ1ZyBvZiB0aGUgbG9jYWwgZGV2aWNlIHJlZmVyZW5jZSBpbiB0aGUgRFJCRCBwcm90b2NvbCBoYW5kbGVyIGByZWNlaXZlX1N5bmNQYXJhbWAgd2hlbiBgZmlmb19hbGxvY2AgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gcmVhY2hhYmxlIGJsb2NrIGRyaXZlciBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMToxMy4zMzc5ODMxODZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDU0ODk1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkMDcwMzQxODRhMWJhMmJiZTlkNWM2MDVlMzRiZmY2ZDllZTRhZGFjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVuIDI1IDE1OjMxOjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXFxuaW5kZXggNThiOTViZjRiZGNhNmEuLmY2MThkMDNmZDJhNmVhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXFxuQEAgLTM3ODcsNyArMzc4Nyw2IEBAIHN0YXRpYyBpbnQgcmVjZWl2ZV9TeW5jUGFyYW0oc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHBhY2tldF9pXFxuIFxcdFxcdFxcdFxcdG5ld19wbGFuID0gZmlmb19hbGxvYyhmaWZvX3NpemUpO1xcbiBcXHRcXHRcXHRcXHRpZiAoIW5ld19wbGFuKSB7XFxuIFxcdFxcdFxcdFxcdFxcdGRyYmRfZXJyKGRldmljZSwgXFxcImttYWxsb2Mgb2YgZmlmb19idWZmZXIgZmFpbGVkXFxcIik7XFxuLVxcdFxcdFxcdFxcdFxcdHB1dF9sZGV2KGRldmljZSk7XFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gZGlzY29ubmVjdDtcXG4gXFx0XFx0XFx0XFx0fVxcbiBcXHRcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjMxOjE1LjY0NDQ5MjUwNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4NTM5MDkyNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9EUkJEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVjZWl2ZV9TeW5jUGFyYW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRvdWJsZS1wdXQgYnVnIG9mIHRoZSBsb2NhbCBkZXZpY2UgcmVmZXJlbmNlIGluIHRoZSBEUkJEIHByb3RvY29sIGhhbmRsZXIgYHJlY2VpdmVfU3luY1BhcmFtYCB3aGVuIGBmaWZvX2FsbG9jYCBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGZvciBhIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBpbiByZWFjaGFibGUgYmxvY2sgZHJpdmVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDA3MDM0MTg0YTFiYTJiYmU5ZDVjNjA1ZTM0YmZmNmQ5ZWU0YWRhY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVuIDI1IDE1OjMxOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcbmluZGV4IDU4Yjk1YmY0YmRjYTZhLi5mNjE4ZDAzZmQyYTZlYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcbkBAIC0zNzg3LDcgKzM3ODcsNiBAQCBzdGF0aWMgaW50IHJlY2VpdmVfU3luY1BhcmFtKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHN0cnVjdCBwYWNrZXRfaVxuIFx0XHRcdFx0bmV3X3BsYW4gPSBmaWZvX2FsbG9jKGZpZm9fc2l6ZSk7XG4gXHRcdFx0XHRpZiAoIW5ld19wbGFuKSB7XG4gXHRcdFx0XHRcdGRyYmRfZXJyKGRldmljZSwgXCJrbWFsbG9jIG9mIGZpZm9fYnVmZmVyIGZhaWxlZFwiKTtcbi1cdFx0XHRcdFx0cHV0X2xkZXYoZGV2aWNlKTtcbiBcdFx0XHRcdFx0Z290byBkaXNjb25uZWN0O1xuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjMxOjE1LjY0NDQ5NDczNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzIyMjk0NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkRSQkQgUmVjZWl2ZXIgUGF0Y2ggQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIHJlbW92aW5nIGEgYHB1dF9sZGV2KGRldmljZSk7YCBjYWxsIHdpdGhpbiB0aGUgYHJlY2VpdmVfU3luY1BhcmFtYCBmdW5jdGlvbi4gVGhpcyBpcyBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2h5IHRoZXkgZGVjaWRlZCB0byBtYWtlIHRoaXMgY2hhbmdlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlLiBNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIG1lbW9yeSBsZWFrcy4gUmVtb3ZpbmcgdGhlIGBwdXRfbGRldmAgY2FsbCBpbiBhIGZhaWx1cmUgcGF0aCwgc3BlY2lmaWNhbGx5IHRoZSBgZmlmb19hbGxvY2AgZmFpbHVyZSBwYXRoLCBpcyBhIHBvdGVudGlhbCBhcmVhIGZvciBsZWFrYWdlIGFuZCBjb3VsZCBsZWFkIHRvIHByb2JsZW1zIGRvd24gdGhlIHJvYWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGZpZm9fYWxsb2NgICpkb2VzKiBhbmQgd2hhdCBgcHV0X2xkZXZgICpkb2VzKiB0byBiZSBjZXJ0YWluLiBJcyB0aGlzIHNhZmUgdG8gbWFrZT8gSXMgdGhlIGRldmljZSBoYW5kbGUgYmVpbmcgcHJvcGVybHkgaGFuZGxlZCBpbiBhbGwgb3RoZXIgc2NlbmFyaW9zPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29kZSBjYXJlZnVsbHkgYW5kIGZpZ3VyZSBvdXQgdGhlIGNoYWluIG9mIGV2ZW50cy4gSSB3YW50IHRvIGRvdWJsZSBjaGVjayB0aGUgZXJyb3IgaGFuZGxpbmcgaGVyZSwgYW5kIHZlcmlmeSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIGNvcnJlY3QuIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIGV2ZXIgY2FsbGVkIHdpdGggYW4gdW5leHBlY3RlZCBgZGV2aWNlYCB2YWx1ZS4gRXNzZW50aWFsbHksIHRoZSBuZXh0IHN0ZXAgaXMgYSBkZWVwIGRpdmUgaW50byBgcmVjZWl2ZV9TeW5jUGFyYW1gIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSwgZXNwZWNpYWxseSBhbnl0aGluZyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZXZpY2UgaGFuZGxpbmcgd2l0aGluIHRoYXQgbW9kdWxlLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsIGFuZCBtYWtlIHN1cmUgdGhlcmUncyBubyBzdWJ0bGUgcmVzb3VyY2UgbGVhayBvciBjb3JydXB0aW9uIGludHJvZHVjZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjMxOjE5Ljc3NjcyNzQzNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQ4NzMwMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVjZWl2ZV9TeW5jUGFyYW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jPTM2NDc9c3RhdGljIGludCBjb25maWdfdW5rbm93bl92b2x1bWUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHBhY2tldF9pbmZvICpwaSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMtMzY1My1cXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jOjM2NTQ6c3RhdGljIGludCByZWNlaXZlX1N5bmNQYXJhbShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxcbmRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMtMzY1NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jPTQ4MzI9c3RhdGljIHN0cnVjdCBkYXRhX2NtZCBkcmJkX2NtZF9oYW5kbGVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jLTQ4NDEtXFx0W1BfUlNfREFUQV9SRVFVRVNUXSA9IHsgMCwgc2l6ZW9mKHN0cnVjdCBwX2Jsb2NrX3JlcSksIHJlY2VpdmVfRGF0YVJlcXVlc3QgfSxcXG5kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jOjQ4NDI6XFx0W1BfU1lOQ19QQVJBTV1cXHQgICAgPSB7IDEsIDAsIHJlY2VpdmVfU3luY1BhcmFtIH0sXFxuZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYzo0ODQzOlxcdFtQX1NZTkNfUEFSQU04OV0gICAgPSB7IDEsIDAsIHJlY2VpdmVfU3luY1BhcmFtIH0sXFxuZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYy00ODQ0LVxcdFtQX1BST1RPQ09MXSAgICAgICAgPSB7IDEsIHNpemVvZihzdHJ1Y3QgcF9wcm90b2NvbCksIHJlY2VpdmVfcHJvdG9jb2wgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MjAuMjAxNjA3OTA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2OTM0ODk3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgYHJlY2VpdmVfU3luY1BhcmFtYCBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHplcm9pbmcgaW4gb24gYHJlY2VpdmVfU3luY1BhcmFtYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSBhYm91dCBoYW5kbGluZyBzb21lIHNvcnQgb2YgcGFyYW1ldGVyIHN5bmNocm9uaXphdGlvbi4gR2l2ZW4gdGhhdCBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUsIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSaWdodCwgbGV0J3MgdW5kZXJzdGFuZCAqaG93KiBpdCdzIGJlZW4gbW9kaWZpZWQuXCIgQ29udGV4dCBpcyBldmVyeXRoaW5nLCBzbyBJJ20gc2tpcHBpbmcgcmlnaHQgdG8gbGluZSAzNzg3IHRvIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kIGFyb3VuZCB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyAqc3VwcG9zZWQqIHRvIGJlIGRvaW5nIGJlZm9yZSBJIGNhbiBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UuIElzIHRoaXMgYSBuZXcgZmVhdHVyZSwgYSBidWcgZml4LCBhbiBvcHRpbWl6YXRpb24/IEkgY2FuJ3Qgc2F5IGFueXRoaW5nIHVudGlsIEkgc2VlIHRoZSBzdXJyb3VuZGluZyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjE1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MjMuMzcwOTU5MDk3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI3MjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzc2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzc2MDpcXHRcXHRcXHRcXHRcXHR2ZXJpZnlfdGZtID0gTlVMTDtcXG4zNzYxOlxcdFxcdFxcdFxcdFxcdGdvdG8gZGlzY29ubmVjdDtcXG4zNzYyOlxcdFxcdFxcdFxcdH1cXG4zNzYzOlxcdFxcdFxcdH1cXG4zNzY0OlxcdFxcbjM3NjU6XFx0XFx0XFx0aWYgKGFwdiBcXHUwMDNlPSA4OSBcXHUwMDI2XFx1MDAyNiBzdHJjbXAob2xkX25ldF9jb25mLVxcdTAwM2Vjc3Vtc19hbGcsIHAtXFx1MDAzZWNzdW1zX2FsZykpIHtcXG4zNzY2OlxcdFxcdFxcdFxcdGlmIChkZXZpY2UtXFx1MDAzZXN0YXRlLmNvbm4gPT0gQ19XRl9SRVBPUlRfUEFSQU1TKSB7XFxuMzc2NzpcXHRcXHRcXHRcXHRcXHRkcmJkX2VycihkZXZpY2UsIFxcXCJEaWZmZXJlbnQgY3N1bXMtYWxnIHNldHRpbmdzLiBtZT1cXFxcXFxcIiVzXFxcXFxcXCIgcGVlcj1cXFxcXFxcIiVzXFxcXFxcXCJcXFxcblxcXCIsXFxuMzc2ODpcXHRcXHRcXHRcXHRcXHQgICAgb2xkX25ldF9jb25mLVxcdTAwM2Vjc3Vtc19hbGcsIHAtXFx1MDAzZWNzdW1zX2FsZyk7XFxuMzc2OTpcXHRcXHRcXHRcXHRcXHRnb3RvIGRpc2Nvbm5lY3Q7XFxuMzc3MDpcXHRcXHRcXHRcXHR9XFxuMzc3MTpcXHRcXHRcXHRcXHRjc3Vtc190Zm0gPSBkcmJkX2NyeXB0b19hbGxvY19kaWdlc3Rfc2FmZShkZXZpY2UsXFxuMzc3MjpcXHRcXHRcXHRcXHRcXHRcXHRwLVxcdTAwM2Vjc3Vtc19hbGcsIFxcXCJjc3Vtcy1hbGdcXFwiKTtcXG4zNzczOlxcdFxcdFxcdFxcdGlmIChJU19FUlIoY3N1bXNfdGZtKSkge1xcbjM3NzQ6XFx0XFx0XFx0XFx0XFx0Y3N1bXNfdGZtID0gTlVMTDtcXG4zNzc1OlxcdFxcdFxcdFxcdFxcdGdvdG8gZGlzY29ubmVjdDtcXG4zNzc2OlxcdFxcdFxcdFxcdH1cXG4zNzc3OlxcdFxcdFxcdH1cXG4zNzc4OlxcdFxcbjM3Nzk6XFx0XFx0XFx0aWYgKGFwdiBcXHUwMDNlIDk0IFxcdTAwMjZcXHUwMDI2IG5ld19kaXNrX2NvbmYpIHtcXG4zNzgwOlxcdFxcdFxcdFxcdG5ld19kaXNrX2NvbmYtXFx1MDAzZWNfcGxhbl9haGVhZCA9IGJlMzJfdG9fY3B1KHAtXFx1MDAzZWNfcGxhbl9haGVhZCk7XFxuMzc4MTpcXHRcXHRcXHRcXHRuZXdfZGlza19jb25mLVxcdTAwM2VjX2RlbGF5X3RhcmdldCA9IGJlMzJfdG9fY3B1KHAtXFx1MDAzZWNfZGVsYXlfdGFyZ2V0KTtcXG4zNzgyOlxcdFxcdFxcdFxcdG5ld19kaXNrX2NvbmYtXFx1MDAzZWNfZmlsbF90YXJnZXQgPSBiZTMyX3RvX2NwdShwLVxcdTAwM2VjX2ZpbGxfdGFyZ2V0KTtcXG4zNzgzOlxcdFxcdFxcdFxcdG5ld19kaXNrX2NvbmYtXFx1MDAzZWNfbWF4X3JhdGUgPSBiZTMyX3RvX2NwdShwLVxcdTAwM2VjX21heF9yYXRlKTtcXG4zNzg0OlxcdFxcbjM3ODU6XFx0XFx0XFx0XFx0Zmlmb19zaXplID0gKG5ld19kaXNrX2NvbmYtXFx1MDAzZWNfcGxhbl9haGVhZCAqIDEwICogU0xFRVBfVElNRSkgLyBIWjtcXG4zNzg2OlxcdFxcdFxcdFxcdGlmIChmaWZvX3NpemUgIT0gZGV2aWNlLVxcdTAwM2Vyc19wbGFuX3MtXFx1MDAzZXNpemUpIHtcXG4zNzg3OlxcdFxcdFxcdFxcdFxcdG5ld19wbGFuID0gZmlmb19hbGxvYyhmaWZvX3NpemUpO1xcbjM3ODg6XFx0XFx0XFx0XFx0XFx0aWYgKCFuZXdfcGxhbikge1xcbjM3ODk6XFx0XFx0XFx0XFx0XFx0XFx0ZHJiZF9lcnIoZGV2aWNlLCBcXFwia21hbGxvYyBvZiBmaWZvX2J1ZmZlciBmYWlsZWRcXFwiKTtcXG4zNzkwOlxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gZGlzY29ubmVjdDtcXG4zNzkxOlxcdFxcdFxcdFxcdFxcdH1cXG4zNzkyOlxcdFxcdFxcdFxcdH1cXG4zNzkzOlxcdFxcdFxcdH1cXG4zNzk0OlxcdFxcbjM3OTU6XFx0XFx0XFx0aWYgKHZlcmlmeV90Zm0gfHwgY3N1bXNfdGZtKSB7XFxuMzc5NjpcXHRcXHRcXHRcXHRuZXdfbmV0X2NvbmYgPSBremFsbG9jX29iaihzdHJ1Y3QgbmV0X2NvbmYpO1xcbjM3OTc6XFx0XFx0XFx0XFx0aWYgKCFuZXdfbmV0X2NvbmYpXFxuMzc5ODpcXHRcXHRcXHRcXHRcXHRnb3RvIGRpc2Nvbm5lY3Q7XFxuMzc5OTpcXHRcXG4zODAwOlxcdFxcdFxcdFxcdCpuZXdfbmV0X2NvbmYgPSAqb2xkX25ldF9jb25mO1xcbjM4MDE6XFx0XFxuMzgwMjpcXHRcXHRcXHRcXHRpZiAodmVyaWZ5X3RmbSkge1xcbjM4MDM6XFx0XFx0XFx0XFx0XFx0c3Ryc2NweShuZXdfbmV0X2NvbmYtXFx1MDAzZXZlcmlmeV9hbGcsIHAtXFx1MDAzZXZlcmlmeV9hbGcpO1xcbjM4MDQ6XFx0XFx0XFx0XFx0XFx0bmV3X25ldF9jb25mLVxcdTAwM2V2ZXJpZnlfYWxnX2xlbiA9IHN0cmxlbihwLVxcdTAwM2V2ZXJpZnlfYWxnKSArIDE7XFxuMzgwNTpcXHRcXHRcXHRcXHRcXHRjcnlwdG9fZnJlZV9zaGFzaChwZWVyX2RldmljZS1cXHUwMDNlY29ubmVjdGlvbi1cXHUwMDNldmVyaWZ5X3RmbSk7XFxuMzgwNjpcXHRcXHRcXHRcXHRcXHRwZWVyX2RldmljZS1cXHUwMDNlY29ubmVjdGlvbi1cXHUwMDNldmVyaWZ5X3RmbSA9IHZlcmlmeV90Zm07XFxuMzgwNzpcXHRcXHRcXHRcXHRcXHRkcmJkX2luZm8oZGV2aWNlLCBcXFwidXNpbmcgdmVyaWZ5LWFsZzogXFxcXFxcXCIlc1xcXFxcXFwiXFxcXG5cXFwiLCBwLVxcdTAwM2V2ZXJpZnlfYWxnKTtcXG4zODA4OlxcdFxcdFxcdFxcdH1cXG4zODA5OlxcdFxcdFxcdFxcdGlmIChjc3Vtc190Zm0pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MjMuMzcxMjg5MDU3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyODI4OTA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKlRyb3VibGVzaG9vdGluZyBhIFJlY2VudCBDb2RlIENoYW5nZSoqXG5cbkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuLi4gSSdtIG5vdGljaW5nIHRoYXQgYHB1dF9sZGV2KGRldmljZSk7YCBoYXMgYmVlbiBjb21wbGV0ZWx5IHJpcHBlZCBvdXQgb2YgdGhlIGNvZGUgYmFzZS4gVGhhdCdzIGEgcmVkIGZsYWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsLCBhbmQgd2hldGhlciB0aGlzIHJlbW92YWwgaXMgYSBicmVha2luZyBjaGFuZ2UuXG5cblRoZSBvYnZpb3VzIHF1ZXN0aW9uIGlzOiB3aGVyZSB3YXMgYHB1dF9sZGV2KClgIGJlaW5nIHVzZWQ/IE15IGZpcnN0IGh1bmNoIGlzIHRvIGNoZWNrIHRoZSBpbW1lZGlhdGUgc3Vycm91bmRpbmcgY29kZSBhbmQgY2FsbCBzdGFja3MsIGJ1dCBiZWZvcmUgSSBnbyB0aGVyZSwgbGV0IG1lIHF1aWNrbHkgYXNjZXJ0YWluIGlmIHRoZSBkZXZpY2UgaXQgdGFrZXMsICpkZXZpY2UqLCB3YXMgYmVpbmcgcmV0cmlldmVkIGJlZm9yZWhhbmQuIFRoZSBpbW1lZGlhdGUgbG9naWNhbCBzdGVwIHRvIHRha2UgaGVyZSBpcyB0byBhbmFseXplIHRoZSBjb2RlIGZvciBhbnkgY2FsbHMgdG8gYGdldF9sZGV2KGRldmljZSlgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyAqZGV2aWNlKiB3YXMgYmVpbmcgaGFuZGxlZCBiZWZvcmUgdGhlIHBvdGVudGlhbCB3cml0ZSB0byBpdCB3aXRoIGBwdXRfbGRldigpYCwgdG8gZGV0ZXJtaW5lIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEZyb20gdGhlIGNhbGwgc3RhY2ssIEkgY2FuIGRldGVybWluZSB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG1hZGUgaW4gdGhlIGZpcnN0IHBsYWNlLCBhbmQgd2hlcmUgaXRzIGltcGFjdCB3aWxsIGJlIHRoZSBtb3N0IGFwcGFyZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzg0LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMToyNi45OTk1ODAzOTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODA0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjUwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzY1MDpcXHRcXHRcXHQgIGNtZG5hbWUocGktXFx1MDAzZWNtZCksIHBpLVxcdTAwM2V2bnIpO1xcbjM2NTE6XFx0XFx0cmV0dXJuIGlnbm9yZV9yZW1haW5pbmdfcGFja2V0KGNvbm5lY3Rpb24sIHBpKTtcXG4zNjUyOlxcdH1cXG4zNjUzOlxcdFxcbjM2NTQ6XFx0c3RhdGljIGludCByZWNlaXZlX1N5bmNQYXJhbShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxcbjM2NTU6XFx0e1xcbjM2NTY6XFx0XFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlO1xcbjM2NTc6XFx0XFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2U7XFxuMzY1ODpcXHRcXHRzdHJ1Y3QgcF9yc19wYXJhbV85NSAqcDtcXG4zNjU5OlxcdFxcdHVuc2lnbmVkIGludCBoZWFkZXJfc2l6ZSwgZGF0YV9zaXplLCBleHBfbWF4X3N6O1xcbjM2NjA6XFx0XFx0c3RydWN0IGNyeXB0b19zaGFzaCAqdmVyaWZ5X3RmbSA9IE5VTEw7XFxuMzY2MTpcXHRcXHRzdHJ1Y3QgY3J5cHRvX3NoYXNoICpjc3Vtc190Zm0gPSBOVUxMO1xcbjM2NjI6XFx0XFx0c3RydWN0IG5ldF9jb25mICpvbGRfbmV0X2NvbmYsICpuZXdfbmV0X2NvbmYgPSBOVUxMO1xcbjM2NjM6XFx0XFx0c3RydWN0IGRpc2tfY29uZiAqb2xkX2Rpc2tfY29uZiA9IE5VTEwsICpuZXdfZGlza19jb25mID0gTlVMTDtcXG4zNjY0OlxcdFxcdGNvbnN0IGludCBhcHYgPSBjb25uZWN0aW9uLVxcdTAwM2VhZ3JlZWRfcHJvX3ZlcnNpb247XFxuMzY2NTpcXHRcXHRzdHJ1Y3QgZmlmb19idWZmZXIgKm9sZF9wbGFuID0gTlVMTCwgKm5ld19wbGFuID0gTlVMTDtcXG4zNjY2OlxcdFxcdHVuc2lnbmVkIGludCBmaWZvX3NpemUgPSAwO1xcbjM2Njc6XFx0XFx0aW50IGVycjtcXG4zNjY4OlxcdFxcbjM2Njk6XFx0XFx0cGVlcl9kZXZpY2UgPSBjb25uX3BlZXJfZGV2aWNlKGNvbm5lY3Rpb24sIHBpLVxcdTAwM2V2bnIpO1xcbjM2NzA6XFx0XFx0aWYgKCFwZWVyX2RldmljZSlcXG4zNjcxOlxcdFxcdFxcdHJldHVybiBjb25maWdfdW5rbm93bl92b2x1bWUoY29ubmVjdGlvbiwgcGkpO1xcbjM2NzI6XFx0XFx0ZGV2aWNlID0gcGVlcl9kZXZpY2UtXFx1MDAzZWRldmljZTtcXG4zNjczOlxcdFxcbjM2NzQ6XFx0XFx0ZXhwX21heF9zeiAgPSBhcHYgXFx1MDAzYz0gODcgPyBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW0pXFxuMzY3NTpcXHRcXHRcXHQgICAgOiBhcHYgPT0gODggPyBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW0pXFxuMzY3NjpcXHRcXHRcXHRcXHRcXHRcXHQrIFNIQVJFRF9TRUNSRVRfTUFYXFxuMzY3NzpcXHRcXHRcXHQgICAgOiBhcHYgXFx1MDAzYz0gOTQgPyBzaXplb2Yoc3RydWN0IHBfcnNfcGFyYW1fODkpXFxuMzY3ODpcXHRcXHRcXHQgICAgOiAvKiBhcHYgXFx1MDAzZT0gOTUgKi8gc2l6ZW9mKHN0cnVjdCBwX3JzX3BhcmFtXzk1KTtcXG4zNjc5OlxcdFxcbjM2ODA6XFx0XFx0aWYgKHBpLVxcdTAwM2VzaXplIFxcdTAwM2UgZXhwX21heF9zeikge1xcbjM2ODE6XFx0XFx0XFx0ZHJiZF9lcnIoZGV2aWNlLCBcXFwiU3luY1BhcmFtIHBhY2tldCB0b28gbG9uZzogcmVjZWl2ZWQgJXUsIGV4cGVjdGVkIFxcdTAwM2M9ICV1IGJ5dGVzXFxcXG5cXFwiLFxcbjM2ODI6XFx0XFx0XFx0ICAgIHBpLVxcdTAwM2VzaXplLCBleHBfbWF4X3N6KTtcXG4zNjgzOlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjM2ODQ6XFx0XFx0fVxcbjM2ODU6XFx0XFxuMzY4NjpcXHRcXHRpZiAoYXB2IFxcdTAwM2M9IDg4KSB7XFxuMzY4NzpcXHRcXHRcXHRoZWFkZXJfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcF9yc19wYXJhbSk7XFxuMzY4ODpcXHRcXHRcXHRkYXRhX3NpemUgPSBwaS1cXHUwMDNlc2l6ZSAtIGhlYWRlcl9zaXplO1xcbjM2ODk6XFx0XFx0fSBlbHNlIGlmIChhcHYgXFx1MDAzYz0gOTQpIHtcXG4zNjkwOlxcdFxcdFxcdGhlYWRlcl9zaXplID0gc2l6ZW9mKHN0cnVjdCBwX3JzX3BhcmFtXzg5KTtcXG4zNjkxOlxcdFxcdFxcdGRhdGFfc2l6ZSA9IHBpLVxcdTAwM2VzaXplIC0gaGVhZGVyX3NpemU7XFxuMzY5MjpcXHRcXHRcXHREX0FTU0VSVChkZXZpY2UsIGRhdGFfc2l6ZSA9PSAwKTtcXG4zNjkzOlxcdFxcdH0gZWxzZSB7XFxuMzY5NDpcXHRcXHRcXHRoZWFkZXJfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcF9yc19wYXJhbV85NSk7XFxuMzY5NTpcXHRcXHRcXHRkYXRhX3NpemUgPSBwaS1cXHUwMDNlc2l6ZSAtIGhlYWRlcl9zaXplO1xcbjM2OTY6XFx0XFx0XFx0RF9BU1NFUlQoZGV2aWNlLCBkYXRhX3NpemUgPT0gMCk7XFxuMzY5NzpcXHRcXHR9XFxuMzY5ODpcXHRcXG4zNjk5OlxcdFxcdC8qIGluaXRpYWxpemUgdmVyaWZ5X2FsZyBhbmQgY3N1bXNfYWxnICovXFxuMzcwMDpcXHRcXHRwID0gcGktXFx1MDAzZWRhdGE7XFxuMzcwMTpcXHRcXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHAtXFx1MDAzZWFsZ3MpICE9IDIgKiBTSEFSRURfU0VDUkVUX01BWCk7XFxuMzcwMjpcXHRcXHRtZW1zZXQoXFx1MDAyNnAtXFx1MDAzZWFsZ3MsIDAsIHNpemVvZihwLVxcdTAwM2VhbGdzKSk7XFxuMzcwMzpcXHRcXG4zNzA0OlxcdFxcdGVyciA9IGRyYmRfcmVjdl9hbGwocGVlcl9kZXZpY2UtXFx1MDAzZWNvbm5lY3Rpb24sIHAsIGhlYWRlcl9zaXplKTtcXG4zNzA1OlxcdFxcdGlmIChlcnIpXFxuMzcwNjpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjM3MDc6XFx0XFxuMzcwODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjb25uZWN0aW9uLVxcdTAwM2VyZXNvdXJjZS1cXHUwMDNlY29uZl91cGRhdGUpO1xcbjM3MDk6XFx0XFx0b2xkX25ldF9jb25mID0gcGVlcl9kZXZpY2UtXFx1MDAzZWNvbm5lY3Rpb24tXFx1MDAzZW5ldF9jb25mO1xcbjM3MTA6XFx0XFx0aWYgKGdldF9sZGV2KGRldmljZSkpIHtcXG4zNzExOlxcdFxcdFxcdG5ld19kaXNrX2NvbmYgPSBremFsbG9jX29iaihzdHJ1Y3QgZGlza19jb25mKTtcXG4zNzEyOlxcdFxcdFxcdGlmICghbmV3X2Rpc2tfY29uZikge1xcbjM3MTM6XFx0XFx0XFx0XFx0cHV0X2xkZXYoZGV2aWNlKTtcXG4zNzE0OlxcdFxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y29ubmVjdGlvbi1cXHUwMDNlcmVzb3VyY2UtXFx1MDAzZWNvbmZfdXBkYXRlKTtcXG4zNzE1OlxcdFxcdFxcdFxcdGRyYmRfZXJyKGRldmljZSwgXFxcIkFsbG9jYXRpb24gb2YgbmV3IGRpc2tfY29uZiBmYWlsZWRcXFxcblxcXCIpO1xcbjM3MTY6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMzcxNzpcXHRcXHRcXHR9XFxuMzcxODpcXHRcXG4zNzE5OlxcdFxcdFxcdG9sZF9kaXNrX2NvbmYgPSBkZXZpY2UtXFx1MDAzZWxkZXYtXFx1MDAzZWRpc2tfY29uZjtcXG4zNzIwOlxcdFxcdFxcdCpuZXdfZGlza19jb25mID0gKm9sZF9kaXNrX2NvbmY7XFxuMzcyMTpcXHRcXG4zNzIyOlxcdFxcdFxcdG5ld19kaXNrX2NvbmYtXFx1MDAzZXJlc3luY19yYXRlID0gYmUzMl90b19jcHUocC1cXHUwMDNlcmVzeW5jX3JhdGUpO1xcbjM3MjM6XFx0XFx0fVxcbjM3MjQ6XFx0XFxuMzcyNTpcXHRcXHRpZiAoYXB2IFxcdTAwM2U9IDg4KSB7XFxuMzcyNjpcXHRcXHRcXHRpZiAoYXB2ID09IDg4KSB7XFxuMzcyNzpcXHRcXHRcXHRcXHRpZiAoZGF0YV9zaXplIFxcdTAwM2UgU0hBUkVEX1NFQ1JFVF9NQVggfHwgZGF0YV9zaXplID09IDApIHtcXG4zNzI4OlxcdFxcdFxcdFxcdFxcdGRyYmRfZXJyKGRldmljZSwgXFxcInZlcmlmeS1hbGcgb2Ygd3Jvbmcgc2l6ZSwgXFxcIlxcbjM3Mjk6XFx0XFx0XFx0XFx0XFx0XFx0XFxcInBlZXIgd2FudHMgJXUsIGFjY2VwdGluZyBvbmx5IHVwIHRvICV1IGJ5dGVcXFxcblxcXCIsXFxuMzczMDpcXHRcXHRcXHRcXHRcXHRcXHRkYXRhX3NpemUsIFNIQVJFRF9TRUNSRVRfTUFYKTtcXG4zNzMxOlxcdFxcdFxcdFxcdFxcdGdvdG8gcmVjb25uZWN0O1xcbjM3MzI6XFx0XFx0XFx0XFx0fVxcbjM3MzM6XFx0XFxuMzczNDpcXHRcXHRcXHRcXHRlcnIgPSBkcmJkX3JlY3ZfYWxsKHBlZXJfZGV2aWNlLVxcdTAwM2Vjb25uZWN0aW9uLCBwLVxcdTAwM2V2ZXJpZnlfYWxnLCBkYXRhX3NpemUpO1xcbjM3MzU6XFx0XFx0XFx0XFx0aWYgKGVycilcXG4zNzM2OlxcdFxcdFxcdFxcdFxcdGdvdG8gcmVjb25uZWN0O1xcbjM3Mzc6XFx0XFx0XFx0XFx0Lyogd2UgZXhwZWN0IE5VTCB0ZXJtaW5hdGVkIHN0cmluZyAqL1xcbjM3Mzg6XFx0XFx0XFx0XFx0LyogYnV0IGp1c3QgaW4gY2FzZSBzb21lb25lIHRyaWVzIHRvIGJlIGV2aWwgKi9cXG4zNzM5OlxcdFxcdFxcdFxcdERfQVNTRVJUKGRldmljZSwgcC1cXHUwMDNldmVyaWZ5X2FsZ1tkYXRhX3NpemUtMV0gPT0gMCk7XFxuMzc0MDpcXHRcXHRcXHRcXHRwLVxcdTAwM2V2ZXJpZnlfYWxnW2RhdGFfc2l6ZS0xXSA9IDA7XFxuMzc0MTpcXHRcXG4zNzQyOlxcdFxcdFxcdH0gZWxzZSAvKiBhcHYgXFx1MDAzZT0gODkgKi8ge1xcbjM3NDM6XFx0XFx0XFx0XFx0Lyogd2Ugc3RpbGwgZXhwZWN0IE5VTCB0ZXJtaW5hdGVkIHN0cmluZ3MgKi9cXG4zNzQ0OlxcdFxcdFxcdFxcdC8qIGJ1dCBqdXN0IGluIGNhc2Ugc29tZW9uZSB0cmllcyB0byBiZSBldmlsICovXFxuMzc0NTpcXHRcXHRcXHRcXHREX0FTU0VSVChkZXZpY2UsIHAtXFx1MDAzZXZlcmlmeV9hbGdbU0hBUkVEX1NFQ1JFVF9NQVgtMV0gPT0gMCk7XFxuMzc0NjpcXHRcXHRcXHRcXHREX0FTU0VSVChkZXZpY2UsIHAtXFx1MDAzZWNzdW1zX2FsZ1tTSEFSRURfU0VDUkVUX01BWC0xXSA9PSAwKTtcXG4zNzQ3OlxcdFxcdFxcdFxcdHAtXFx1MDAzZXZlcmlmeV9hbGdbU0hBUkVEX1NFQ1JFVF9NQVgtMV0gPSAwO1xcbjM3NDg6XFx0XFx0XFx0XFx0cC1cXHUwMDNlY3N1bXNfYWxnW1NIQVJFRF9TRUNSRVRfTUFYLTFdID0gMDtcXG4zNzQ5OlxcdFxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MjYuOTk5ODYyNTQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg2MDg0Nzc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBkaXNrX2NvbmZgIFVwZGF0ZSBpbiBEUkJEIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBEUkJEIGNvZGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAzNzEwLiBJIHNlZSB0aGF0IGBnZXRfbGRldihkZXZpY2UpYCBpcyBiZWluZyBjYWxsZWQuIElmIHRoYXQgcmV0dXJucyB0cnVlLCBhIGBuZXdfZGlza19jb25mYCBpcyBhbGxvY2F0ZWQuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgd2UncmUgcHJvYmFibHkgc2V0dGluZyB1cCB0byB1cGRhdGUgdGhlIGRpc2sgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCBmdW5jdGlvbiBvZiBgZ2V0X2xkZXYoZGV2aWNlKWAgYW5kIGBwdXRfbGRldihkZXZpY2UpYCB0byBiZSBzdXJlLlxuXG5Mb29raW5nIGZ1cnRoZXIsIEkgc2VlIG1vcmUgaW50ZXJlc3RpbmcgbG9naWMgYXQgaGlnaGVyIEFQViB2YWx1ZXMuIElmIGBhcHYgXHUwMDNlIDk0YCBhbmQgYG5ld19kaXNrX2NvbmZgIGV4aXN0cywgd2UncmUgY29weWluZyBzb21lIHZhbHVlcyBmcm9tIHNvbWUgYHBgIG9iamVjdCBpbnRvIGBuZXdfZGlza19jb25mYC4gU3BlY2lmaWNhbGx5LCBgY19wbGFuX2FoZWFkYCwgYGNfZGVsYXlfdGFyZ2V0YCwgYGNfZmlsbF90YXJnZXRgLCBhbmQgYGNfbWF4X3JhdGVgIGFyZSBiZWluZyB1cGRhdGVkLiBUaGVuLCBhIGBmaWZvX3NpemVgIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gYGNfcGxhbl9haGVhZGAgYW5kIHVzZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBgbmV3X3BsYW5gIHVzaW5nIGBmaWZvX2FsbG9jYC5cblxuTm93LCBpZiB0aGF0IGBmaWZvX2FsbG9jYCBmYWlscywgaXQganVtcHMgdG8gdGhlIGBkaXNjb25uZWN0YCBsYWJlbC4gVGhhdCdzIHRoZSBjcml0aWNhbCBiaXQgSSB3YW50IHRvIHVuZGVyc3RhbmQuIFdoYXQgZXhhY3RseSBpcyBoYXBwZW5pbmcgZHVyaW5nIHRoYXQgZGlzY29ubmVjdD8gV2hhdCByZXNvdXJjZXMgYXJlIGJlaW5nIGZyZWVkPyBJcyB0aGVyZSBhIHJpc2sgb2YgbWVtb3J5IGxlYWtzIG9yIGxlYXZpbmcgdGhlIGRldmljZSBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGU/IEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY29kZSBmcm9tIHRoZSBgZGlzY29ubmVjdGAgbGFiZWwgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgaGFuZGxlZCBncmFjZWZ1bGx5IGluIGNhc2Ugb2YgYSBgZmlmb19hbGxvY2AgZmFpbHVyZS4gSSdsbCBjaGVjayBob3cgYG5ld19kaXNrX2NvbmZgIGlzIHVzZWQgaW4gdGhpcyBwcm9jZXNzIGFzIHdlbGwsIHRvIG1ha2Ugc3VyZSBpdCdzIGZyZWVkIGlmIGl0IGRvZXNuJ3QgZ2V0IGFzc2lnbmVkIHByb3Blcmx5LiBJJ2xsIGFsc28gYmUgc2VhcmNoaW5nIGZvciByZWxhdGVkIGNvZGUsIGFzIHRoZXJlIGNvdWxkIGJlIG90aGVyIHBhdGhzIHRocm91Z2ggdGhlIGNvZGUgd2hpY2ggcGVyZm9ybSB0aGlzIGtpbmQgb2YgdXBkYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODc1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MzMuODYwNzEzNDE3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MjYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4MTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM4MTA6XFx0XFx0XFx0XFx0XFx0c3Ryc2NweShuZXdfbmV0X2NvbmYtXFx1MDAzZWNzdW1zX2FsZywgcC1cXHUwMDNlY3N1bXNfYWxnKTtcXG4zODExOlxcdFxcdFxcdFxcdFxcdG5ld19uZXRfY29uZi1cXHUwMDNlY3N1bXNfYWxnX2xlbiA9IHN0cmxlbihwLVxcdTAwM2Vjc3Vtc19hbGcpICsgMTtcXG4zODEyOlxcdFxcdFxcdFxcdFxcdGNyeXB0b19mcmVlX3NoYXNoKHBlZXJfZGV2aWNlLVxcdTAwM2Vjb25uZWN0aW9uLVxcdTAwM2Vjc3Vtc190Zm0pO1xcbjM4MTM6XFx0XFx0XFx0XFx0XFx0cGVlcl9kZXZpY2UtXFx1MDAzZWNvbm5lY3Rpb24tXFx1MDAzZWNzdW1zX3RmbSA9IGNzdW1zX3RmbTtcXG4zODE0OlxcdFxcdFxcdFxcdFxcdGRyYmRfaW5mbyhkZXZpY2UsIFxcXCJ1c2luZyBjc3Vtcy1hbGc6IFxcXFxcXFwiJXNcXFxcXFxcIlxcXFxuXFxcIiwgcC1cXHUwMDNlY3N1bXNfYWxnKTtcXG4zODE1OlxcdFxcdFxcdFxcdH1cXG4zODE2OlxcdFxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihjb25uZWN0aW9uLVxcdTAwM2VuZXRfY29uZiwgbmV3X25ldF9jb25mKTtcXG4zODE3OlxcdFxcdFxcdH1cXG4zODE4OlxcdFxcdH1cXG4zODE5OlxcdFxcbjM4MjA6XFx0XFx0aWYgKG5ld19kaXNrX2NvbmYpIHtcXG4zODIxOlxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXZpY2UtXFx1MDAzZWxkZXYtXFx1MDAzZWRpc2tfY29uZiwgbmV3X2Rpc2tfY29uZik7XFxuMzgyMjpcXHRcXHRcXHRwdXRfbGRldihkZXZpY2UpO1xcbjM4MjM6XFx0XFx0fVxcbjM4MjQ6XFx0XFxuMzgyNTpcXHRcXHRpZiAobmV3X3BsYW4pIHtcXG4zODI2OlxcdFxcdFxcdG9sZF9wbGFuID0gZGV2aWNlLVxcdTAwM2Vyc19wbGFuX3M7XFxuMzgyNzpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2aWNlLVxcdTAwM2Vyc19wbGFuX3MsIG5ld19wbGFuKTtcXG4zODI4OlxcdFxcdH1cXG4zODI5OlxcdFxcbjM4MzA6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjb25uZWN0aW9uLVxcdTAwM2VyZXNvdXJjZS1cXHUwMDNlY29uZl91cGRhdGUpO1xcbjM4MzE6XFx0XFx0c3luY2hyb25pemVfcmN1KCk7XFxuMzgzMjpcXHRcXHRpZiAobmV3X25ldF9jb25mKVxcbjM4MzM6XFx0XFx0XFx0a2ZyZWUob2xkX25ldF9jb25mKTtcXG4zODM0OlxcdFxcdGtmcmVlKG9sZF9kaXNrX2NvbmYpO1xcbjM4MzU6XFx0XFx0a2ZyZWUob2xkX3BsYW4pO1xcbjM4MzY6XFx0XFxuMzgzNzpcXHRcXHRyZXR1cm4gMDtcXG4zODM4OlxcdFxcbjM4Mzk6XFx0cmVjb25uZWN0OlxcbjM4NDA6XFx0XFx0aWYgKG5ld19kaXNrX2NvbmYpIHtcXG4zODQxOlxcdFxcdFxcdHB1dF9sZGV2KGRldmljZSk7XFxuMzg0MjpcXHRcXHRcXHRrZnJlZShuZXdfZGlza19jb25mKTtcXG4zODQzOlxcdFxcdH1cXG4zODQ0OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y29ubmVjdGlvbi1cXHUwMDNlcmVzb3VyY2UtXFx1MDAzZWNvbmZfdXBkYXRlKTtcXG4zODQ1OlxcdFxcdHJldHVybiAtRUlPO1xcbjM4NDY6XFx0XFxuMzg0NzpcXHRkaXNjb25uZWN0OlxcbjM4NDg6XFx0XFx0a2ZyZWUobmV3X3BsYW4pO1xcbjM4NDk6XFx0XFx0aWYgKG5ld19kaXNrX2NvbmYpIHtcXG4zODUwOlxcdFxcdFxcdHB1dF9sZGV2KGRldmljZSk7XFxuMzg1MTpcXHRcXHRcXHRrZnJlZShuZXdfZGlza19jb25mKTtcXG4zODUyOlxcdFxcdH1cXG4zODUzOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y29ubmVjdGlvbi1cXHUwMDNlcmVzb3VyY2UtXFx1MDAzZWNvbmZfdXBkYXRlKTtcXG4zODU0OlxcdFxcdC8qIGp1c3QgZm9yIGNvbXBsZXRlbmVzczogYWN0dWFsbHkgbm90IG5lZWRlZCxcXG4zODU1OlxcdFxcdCAqIGFzIHRoaXMgaXMgbm90IHJlYWNoZWQgaWYgY3N1bXNfdGZtIHdhcyBvay4gKi9cXG4zODU2OlxcdFxcdGNyeXB0b19mcmVlX3NoYXNoKGNzdW1zX3RmbSk7XFxuMzg1NzpcXHRcXHQvKiBidXQgZnJlZSB0aGUgdmVyaWZ5X3RmbSBhZ2FpbiwgaWYgY3N1bXNfdGZtIGRpZCBub3Qgd29yayBvdXQgKi9cXG4zODU4OlxcdFxcdGNyeXB0b19mcmVlX3NoYXNoKHZlcmlmeV90Zm0pO1xcbjM4NTk6XFx0XFx0Y29ubl9yZXF1ZXN0X3N0YXRlKHBlZXJfZGV2aWNlLVxcdTAwM2Vjb25uZWN0aW9uLCBOUyhjb25uLCBDX0RJU0NPTk5FQ1RJTkcpLCBDU19IQVJEKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6MzE6MzMuODYxMDkyMDc3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MDUyMTgwMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVmZXJlbmNlIENvdW50aW5nIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEluIHRoaXMgYGRpc2Nvbm5lY3RgIHNlY3Rpb24sIEkgc2VlIGEgY2xlYXIgcG90ZW50aWFsIGZvciBhIGRvdWJsZSBgcHV0X2xkZXYoZGV2aWNlKWAgY2FsbC4gSXQgbG9va3MgbGlrZSB0aGUgY29kZSBpbiB0aGUgYGRpc2Nvbm5lY3RgIGxhYmVsICphbHJlYWR5KiBhY2NvdW50cyBmb3IgYG5ld19kaXNrX2NvbmZgIGJlaW5nIGFsbG9jYXRlZCBhbmQgdGhlcmVmb3JlIGNhbGxzIGBwdXRfbGRldihkZXZpY2UpYC4gSG93ZXZlciwgdGhlcmUncyBhIGNvbmRpdGlvbmFsIHBhdGgsIHNwZWNpZmljYWxseSB3aGVuIGBmaWZvX2FsbG9jYCBmYWlscywgdGhhdCAqYWxzbyogY2FsbHMgYHB1dF9sZGV2KGRldmljZSlgICpiZWZvcmUqIGp1bXBpbmcgdG8gYGRpc2Nvbm5lY3RgLiBUaGlzIGlzIGR1cGxpY2F0ZWQgZnVuY3Rpb25hbGl0eSwgYSBkZWZpbml0ZSByZWNpcGUgZm9yIGEgcmVmZXJlbmNlIGNvdW50aW5nIHByb2JsZW0hXG5cblRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgYG5ld19kaXNrX2NvbmZgICp3aWxsKiBiZSBub24tTlVMTCBpbiB0aGUgZmFpbHVyZSBwYXRoIG9mIGBmaWZvX2FsbG9jYCBiZWNhdXNlIG9mIHRoZSBjb25kaXRpb25hbCBjaGVjayBgaWYgKGFwdiBcdTAwM2UgOTQgXHUwMDI2XHUwMDI2IG5ld19kaXNrX2NvbmYpYC4gU28sIHRoZSBjb2RlIHdhcywgZWZmZWN0aXZlbHksIGNhbGxpbmcgYHB1dF9sZGV2KGRldmljZSlgIHR3aWNlIGluIHRoYXQgZmFpbHVyZSBzY2VuYXJpbywgbGVhZGluZyB0byBhIGRvdWJsZS1mcmVlIG9yIG90aGVyIHJlZmVyZW5jZSBjb3VudC1yZWxhdGVkIGlzc3VlLiBUaGUgZml4LCBJIHNlZSwgc21hcnRseSByZW1vdmVzIHRoZSBmaXJzdCBgcHV0X2xkZXYoZGV2aWNlKWAgY2FsbCwgbmVhdGx5IHJlc29sdmluZyB0aGUgZG91YmxlLXB1dCBidWcuXG5cblRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBmdW5jdGlvbmFsIGNoYW5nZTsgaXQncyBmaXhpbmcgYSBjbGVhciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3IuIEl0J3MgdGhlIGtpbmQgb2YgaXNzdWUgdGhhdCBjYW4gbGVhZCB0byBzdWJ0bGUgYnV0IG5hc3R5IHByb2JsZW1zIGluIHRoZSBsb25nIHJ1bi4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGZvciBtZSBpcyB3aGV0aGVyIHRoaXMgaXMgZWFzaWx5IHRlc3RhYmxlLiBUaGlzIGlzIGxpa2VseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBwYXRjaCByZWxhdGVzIHRvIHRoZSBEUkJEIGJsb2NrIGRyaXZlci4gSXQgY2FuIGJlIGVhc2lseSB0ZXN0ZWQsIHNwZWNpZmljYWxseSBiZWNhdXNlIERSQkQgaXMgZWFzaWx5IHRlc3RhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEkgc2hvdWxkIGNoZWNrIHRvIHNlZSBpZiBEUkJEIGlzIGVuYWJsZWQgb3IgY2FuIGJlIGVuYWJsZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MjQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMTo0MC4yNjYzMTM3MzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjgwODg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9EUkJEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnPTY9Y29tbWVudCBcXFwiRFJCRCBkaXNhYmxlZCBiZWNhdXNlIFBST0NfRlMgb3IgSU5FVCBub3Qgc2VsZWN0ZWRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZy04LVxcbmRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnOjk6Y29uZmlnIEJMS19ERVZfRFJCRFxcbmRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJEUkJEIERpc3RyaWJ1dGVkIFJlcGxpY2F0ZWQgQmxvY2sgRGV2aWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjMxOjQwLjc3MzEzMDQ3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODg0MTgzNDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIERSQkQncyBTeW5jaHJvbml6YXRpb24gUGFyYW1ldGVyIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIGZ1enppbmcgRFJCRCwgc3BlY2lmaWNhbGx5IHRoZSBzeW5jaHJvbml6YXRpb24gcGFyYW1ldGVyIGhhbmRsaW5nLiBUaGUgY29yZSBzZWVtcyB0byBoaW5nZSBvbiB0aGUgYEJMS19ERVZfRFJCRGAgY29uZmlndXJhdGlvbiwgc28gdGhhdCdzIG15IHN0YXJ0aW5nIHBvaW50LiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0J3MgZW5hYmxlZDsgbm8gcG9pbnQgZ29pbmcgZnVydGhlciBpZiB0aGF0J3Mgbm90IHJpZ2h0LlxuXG5NeSBpbml0aWFsIHNjYW4gZm9jdXNlcyBvbiBgcmVjZWl2ZV9TeW5jUGFyYW1gIGFuZCBgZHJiZF9yZWNlaXZlci5jYC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgZGVzaWduYXRlZCBwcm90b2NvbCBoYW5kbGVyIGZvciBEUkJELCBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIGluY29taW5nIGBQX1NZTkNfUEFSQU1gIHBhY2tldHMuIEl04oCZcyBwcmV0dHkgY2xlYXIgdGhhdCB0byB0cmlnZ2VyIGZ1enppbmcsIEknbGwgbmVlZCB0byBtYW5pcHVsYXRlIGFuZCBzZW5kIHBhY2tldHMgZGlyZWN0bHkgdG8gdGhlIERSQkQgc29ja2V0LlxuXG5NeSBwcmltYXJ5IGZvY3VzLCBteSBcIkZvY3VzU3ltYm9sLFwiIHdpbGwgYmUgYHJlY2VpdmVfU3luY1BhcmFtYC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IHBheWxvYWRzIGFuZCB0cmlnZ2Vycy4gVGhlIGNyaXRpY2FsIFwiRW5hYmxlQ29uZmlnXCIgaXMgZGVmaW5pdGVseSBgQkxLX0RFVl9EUkJEYCwgYXMgdGhhdCBlbmFibGVzIERSQkQgc3VwcG9ydC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IG5vIG90aGVyIGxlc3Mgb2J2aW91cyBjb25maWdzIGFyZSBhbHNvIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ1MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMTo0NS42NTczMTgxMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM3NjEzNDcxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9EUkJEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZz02PWNvbW1lbnQgXFxcIkRSQkQgZGlzYWJsZWQgYmVjYXVzZSBQUk9DX0ZTIG9yIElORVQgbm90IHNlbGVjdGVkXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWctOC1cXG5kcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZzo5OmNvbmZpZyBCTEtfREVWX0RSQkRcXG5kcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZSBcXFwiRFJCRCBEaXN0cmlidXRlZCBSZXBsaWNhdGVkIEJsb2NrIERldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMTo0OS4wMzM0NjA0MzZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxODQwNTY3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBwb3RlbnRpYWxseSBuYXN0eSwgYnVnIGluIGByZWNlaXZlX1N5bmNQYXJhbWAuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBkb3VibGUtcHV0IGlzc3VlLCBzcGVjaWZpY2FsbHkgdHJpZ2dlcmVkIHdoZW4gdGhlIGBmaWZvX2FsbG9jYCBjYWxsIGZhaWxzLiBUaGF0IG1ha2VzIGl0IGEgZnVuY3Rpb25hbCBmaXgsIG5vdCBqdXN0IGNvc21ldGljLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgKmhvdyogdGhpcyBpcyBoYXBwZW5pbmcuIFRoZSBkb3VibGUtcHV0IGltcGxpZXMgdGhhdCBzb21lIGxvZ2ljIGlzIGFzc3VtaW5nIGFsbG9jYXRpb24gKndpbGwqIHN1Y2NlZWQgYW5kIGNvbnRpbnVlcywgbGVhZGluZyB0byB0aGUgZXh0cmEsIGFuZCBwb3RlbnRpYWxseSBkaXNhc3Ryb3VzLCBhdHRlbXB0IHRvIHB1dC4gTm93LCB0aGUgZml4IHNvdW5kcyBsaWtlIGl0J3MgYWRkcmVzc2luZyB0aGUgZmFpbHVyZSBjYXNlIG9mIHRoZSBhbGxvY2F0aW9uLiBPa2F5LiBHb3QgaXQuIFNvIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hlbiBgZmlmb19hbGxvY2AgKmRvZXNuJ3QqIHdvcmssIHdlIGV4aXQgZ3JhY2VmdWxseSBhbmQgY29ycmVjdGx5LCBwcmV2ZW50aW5nIHRoZSBkb3VibGUtcHV0LlxuXG5TbywgaW4gdGhlIHJldmlzZWQgY29kZSwgbXkgYWN0aW9uIHdpbGwgYmUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhlIGFwcHJvcHJpYXRlIHJldHVybiB2YWx1ZXMuIFRoaXMgaXMgbGlrZWx5IGhhbmRsaW5nIHRoZSBlcnJvciBjb25kaXRpb24gZnJvbSB0aGUgZmFpbGVkIGFsbG9jYXRpb24uIEl0J3MgYSBjbGVhbiBhcHByb2FjaC4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gZml4aW5nIHRoaXMgaXNzdWUuIEkgbmVlZCB0byByZXZpZXcgaG93IHRoZSByZXR1cm4gdmFsdWUgb2YgYGZpZm9fYWxsb2NgIGlzIGJlaW5nIGhhbmRsZWQgaW4gdGhlIGV4aXN0aW5nIGNvZGUgYW5kIGVuc3VyZSB0aGF0IHRoaXMgcGF0Y2ggcHJvdmlkZXMgdGhlIGNvcnJlY3QgcmVzcG9uc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5NTgsIk91dHB1dFRva2VucyI6OTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTozMTo1My4zNTE4NzA0NjFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY1MjU4MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfRFJCRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlY2VpdmVfU3luY1BhcmFtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkb3VibGUtcHV0IGJ1ZyBvZiB0aGUgbG9jYWwgZGV2aWNlIHJlZmVyZW5jZSBpbiB0aGUgRFJCRCBwcm90b2NvbCBoYW5kbGVyIGByZWNlaXZlX1N5bmNQYXJhbWAgd2hlbiBgZmlmb19hbGxvY2AgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gcmVhY2hhYmxlIGJsb2NrIGRyaXZlciBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfRFJCRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlY2VpdmVfU3luY1BhcmFtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkb3VibGUtcHV0IGJ1ZyBvZiB0aGUgbG9jYWwgZGV2aWNlIHJlZmVyZW5jZSBpbiB0aGUgRFJCRCBwcm90b2NvbCBoYW5kbGVyIGByZWNlaXZlX1N5bmNQYXJhbWAgd2hlbiBgZmlmb19hbGxvY2AgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgYSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gcmVhY2hhYmxlIGJsb2NrIGRyaXZlciBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjgmm9[1] Phase: Succeeded StartedAt: 2026-06-25 15:32:04 +0000 UTC FinishedAt: 2026-06-25 15:32:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-25 15:32:04 +0000 UTC FinishedAt: 2026-06-25 15:32:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2] Phase: Succeeded StartedAt: 2026-06-25 15:32:04 +0000 UTC FinishedAt: 2026-06-25 18:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-25 15:32:04 +0000 UTC FinishedAt: 2026-06-25 18:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-25 15:32:04 +0000 UTC FinishedAt: 2026-06-25 15:32:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-25 15:32:04 +0000 UTC FinishedAt: 2026-06-25 15:32:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowjgmm9/series-workflowjgmm9-convert-artifact-1504092713/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-25 15:32:14 +0000 UTC FinishedAt: 2026-06-25 15:58:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-25 15:32:14 +0000 UTC FinishedAt: 2026-06-25 15:58:25 +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:*e62b6e86-3872-4d13-88d2-af19f6ebae96,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-workflowjgmm9/series-workflowjgmm9-convert-artifact-1504092713/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": "4fdd2cae-4889-4eb1-a91f-3b4d1e5a0aed", "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-workflowjgmm9/series-workflowjgmm9-build-action-1386023559/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-25 15:32:14 +0000 UTC FinishedAt: 2026-06-25 15:58:03 +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:*e62b6e86-3872-4d13-88d2-af19f6ebae96,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-workflowjgmm9/series-workflowjgmm9-convert-artifact-1504092713/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": "4fdd2cae-4889-4eb1-a91f-3b4d1e5a0aed", "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-workflowjgmm9/series-workflowjgmm9-build-action-1386023559/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-25 15:58:25 +0000 UTC FinishedAt: 2026-06-25 15:58:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-25 15:58:25 +0000 UTC FinishedAt: 2026-06-25 15:58:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-25 15:58:25 +0000 UTC FinishedAt: 2026-06-25 15:58:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-25 15:58:25 +0000 UTC FinishedAt: 2026-06-25 15:58:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowjgmm9/series-workflowjgmm9-convert-artifact-2991257020/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-25 15:58:35 +0000 UTC FinishedAt: 2026-06-25 16:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-25 15:58:35 +0000 UTC FinishedAt: 2026-06-25 16:00:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4fdd2cae-4889-4eb1-a91f-3b4d1e5a0aed,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-workflowjgmm9/series-workflowjgmm9-build-action-1386023559/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-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-25 16:00:46 +0000 UTC FinishedAt: 2026-06-25 16:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-25 16:00:46 +0000 UTC FinishedAt: 2026-06-25 16:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-25 16:00:46 +0000 UTC FinishedAt: 2026-06-25 17:01:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-25 16:00:46 +0000 UTC FinishedAt: 2026-06-25 17:01:51 +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:*e62b6e86-3872-4d13-88d2-af19f6ebae96,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-workflowjgmm9/series-workflowjgmm9-convert-artifact-2991257020/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": "378b76ec-5f1b-4b8f-a852-6a41a5ba27ab", "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-workflowjgmm9/series-workflowjgmm9-build-action-641315350/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Failed StartedAt: 2026-06-25 16:00:46 +0000 UTC FinishedAt: 2026-06-25 16:03:50 +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:*e62b6e86-3872-4d13-88d2-af19f6ebae96,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-workflowjgmm9/series-workflowjgmm9-convert-artifact-2991257020/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(1) Phase: Failed StartedAt: 2026-06-25 16:11:19 +0000 UTC FinishedAt: 2026-06-25 16:16:06 +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:*e62b6e86-3872-4d13-88d2-af19f6ebae96,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-workflowjgmm9/series-workflowjgmm9-convert-artifact-2991257020/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(2) Phase: Succeeded StartedAt: 2026-06-25 16:25:28 +0000 UTC FinishedAt: 2026-06-25 17:01:40 +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:*e62b6e86-3872-4d13-88d2-af19f6ebae96,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-workflowjgmm9/series-workflowjgmm9-convert-artifact-2991257020/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": "378b76ec-5f1b-4b8f-a852-6a41a5ba27ab", "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-workflowjgmm9/series-workflowjgmm9-build-action-641315350/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-25 17:01:51 +0000 UTC FinishedAt: 2026-06-25 17:01:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-25 17:01:51 +0000 UTC FinishedAt: 2026-06-25 17:01:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-25 17:01:51 +0000 UTC FinishedAt: 2026-06-25 17:03:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-25 17:01:51 +0000 UTC FinishedAt: 2026-06-25 17:03:49 +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:*378b76ec-5f1b-4b8f-a852-6a41a5ba27ab,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-workflowjgmm9/series-workflowjgmm9-build-action-641315350/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-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-25 17:03:59 +0000 UTC FinishedAt: 2026-06-25 18:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-25 17:03:59 +0000 UTC FinishedAt: 2026-06-25 18:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*4fdd2cae-4889-4eb1-a91f-3b4d1e5a0aed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*378b76ec-5f1b-4b8f-a852-6a41a5ba27ab,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-workflowjgmm9/series-workflowjgmm9-build-action-1386023559/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-workflowjgmm9/series-workflowjgmm9-build-action-641315350/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-25 17:03:59 +0000 UTC FinishedAt: 2026-06-25 17:04:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-25 17:03:59 +0000 UTC FinishedAt: 2026-06-25 17:04:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjgmm9/series-workflowjgmm9-convert-artifact-1149438597/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-25 17:03:59 +0000 UTC FinishedAt: 2026-06-25 17:03:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-25 17:03:59 +0000 UTC FinishedAt: 2026-06-25 17:03:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-25 17:03:59 +0000 UTC FinishedAt: 2026-06-25 17:03:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-25 17:04:09 +0000 UTC FinishedAt: 2026-06-25 18:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgmm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["receive_SyncParam"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ab9de95c9cf952332ab79453b4b5d1bfca8e514f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_DRBD"],"series_id":"ce99f795-7937-4d7d-ba42-a2c4cd4e81c2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-25 17:04:09 +0000 UTC FinishedAt: 2026-06-25 17:59:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4fdd2cae-4889-4eb1-a91f-3b4d1e5a0aed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*378b76ec-5f1b-4b8f-a852-6a41a5ba27ab,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-workflowjgmm9/series-workflowjgmm9-build-action-1386023559/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-workflowjgmm9/series-workflowjgmm9-build-action-641315350/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-workflowjgmm9/series-workflowjgmm9-convert-artifact-1149438597/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,}