Name: series-workflowqns5h Phase: Succeeded StartedAt: 2026-07-21 14:10:46 +0000 UTC FinishedAt: 2026-07-21 19:05:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[0] Phase: Succeeded StartedAt: 2026-07-21 14:10:46 +0000 UTC FinishedAt: 2026-07-21 14:46:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[0].run-triage Phase: Succeeded StartedAt: 2026-07-21 14:10:46 +0000 UTC FinishedAt: 2026-07-21 14:46:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "597df0d1ea0eb383971deed73cea0a228ee69ef5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEVICE_PRIVATE", "SWAP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "597df0d1ea0eb383971deed73cea0a228ee69ef5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEVICE_PRIVATE", "SWAP" ], "series_id": "7ddf86ed-e16d-404d-817b-dcaaf913f7b6" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "do_swap_page" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19zd2FwX3BhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGRldmljZSBwcml2YXRlIG1lbW9yeSBoYW5kbGluZyBpbiBkb19zd2FwX3BhZ2UgdG8gdXNlIGZvbGlvcyBpbnN0ZWFkIG9mIHBhZ2VzLiBUaGlzIG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGluIHBhZ2UvZm9saW8gbG9ja2luZyBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTUwNzY4MzI4N2I3MDFhZTQ2ODkzNjg5NzkzYmUzOGQxNTFmYTAyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjM3OjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmNcbmluZGV4IGQ1ZTg3NjI0ZjY5MjA1Li5iZDI3MzcyYTEwNTIyZiAxMDA2NDRcbi0tLSBhL21tL21lbW9yeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1vcnkuY1xuQEAgLTQ4NTIsNiAmIzQzOzQ4NTIsOCBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiBcdFx0XHR2bWYtXHUwMDNlcGFnZSA9IHNvZnRsZWFmX3RvX3BhZ2UoZW50cnkpO1xuIFx0XHRcdHJldCA9IHJlbW92ZV9kZXZpY2VfZXhjbHVzaXZlX2VudHJ5KHZtZik7XG4gXHRcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBmb2xpbyAqZmF1bHRfZm9saW87XG4mIzQzO1xuIFx0XHRcdGlmICh2bWYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZBVUxUX0ZMQUdfVk1BX0xPQ0spIHtcbiBcdFx0XHRcdC8qXG4gXHRcdFx0XHQgKiBtaWdyYXRlX3RvX3JhbSBpcyBub3QgeWV0IHJlYWR5IHRvIG9wZXJhdGVcbkBAIC00ODYzLDYgJiM0Mzs0ODY1LDcgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRcdFx0fVxuIFxuIFx0XHRcdHZtZi1cdTAwM2VwYWdlID0gc29mdGxlYWZfdG9fcGFnZShlbnRyeSk7XG4mIzQzO1x0XHRcdGZhdWx0X2ZvbGlvID0gcGFnZV9mb2xpbyh2bWYtXHUwMDNlcGFnZSk7XG4gXHRcdFx0dm1mLVx1MDAzZXB0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sodm1hLVx1MDAzZXZtX21tLCB2bWYtXHUwMDNlcG1kLFxuIFx0XHRcdFx0XHR2bWYtXHUwMDNlYWRkcmVzcywgXHUwMDI2dm1mLVx1MDAzZXB0bCk7XG4gXHRcdFx0aWYgKHVubGlrZWx5KCF2bWYtXHUwMDNlcHRlIHx8XG5AQCAtNDg3NCwxNSAmIzQzOzQ4NzcsMTUgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRcdFx0ICogR2V0IGEgcGFnZSByZWZlcmVuY2Ugd2hpbGUgd2Uga25vdyB0aGUgcGFnZSBjYW4mIzM5O3QgYmVcbiBcdFx0XHQgKiBmcmVlZC5cbiBcdFx0XHQgKi9cbi1cdFx0XHRpZiAodHJ5bG9ja19wYWdlKHZtZi1cdTAwM2VwYWdlKSkge1xuJiM0MztcdFx0XHRpZiAoZm9saW9fdHJ5bG9jayhmYXVsdF9mb2xpbykpIHtcbiBcdFx0XHRcdHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXA7XG4gXG4tXHRcdFx0XHRnZXRfcGFnZSh2bWYtXHUwMDNlcGFnZSk7XG4mIzQzO1x0XHRcdFx0Zm9saW9fZ2V0KGZhdWx0X2ZvbGlvKTtcbiBcdFx0XHRcdHB0ZV91bm1hcF91bmxvY2sodm1mLVx1MDAzZXB0ZSwgdm1mLVx1MDAzZXB0bCk7XG4gXHRcdFx0XHRwZ21hcCA9IHBhZ2VfcGdtYXAodm1mLVx1MDAzZXBhZ2UpO1xuIFx0XHRcdFx0cmV0ID0gcGdtYXAtXHUwMDNlb3BzLVx1MDAzZW1pZ3JhdGVfdG9fcmFtKHZtZik7XG4tXHRcdFx0XHR1bmxvY2tfcGFnZSh2bWYtXHUwMDNlcGFnZSk7XG4tXHRcdFx0XHRwdXRfcGFnZSh2bWYtXHUwMDNlcGFnZSk7XG4mIzQzO1x0XHRcdFx0Zm9saW9fdW5sb2NrKGZhdWx0X2ZvbGlvKTtcbiYjNDM7XHRcdFx0XHRmb2xpb19wdXQoZmF1bHRfZm9saW8pO1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRwdGVfdW5tYXAodm1mLVx1MDAzZXB0ZSk7XG4gXHRcdFx0XHRzb2Z0bGVhZl9lbnRyeV93YWl0X29uX2xvY2tlZChlbnRyeSwgdm1mLVx1MDAzZXB0bCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6Mzc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19zd2FwX3BhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGRldmljZSBwcml2YXRlIG1lbW9yeSBoYW5kbGluZyBpbiBkb19zd2FwX3BhZ2UgdG8gdXNlIGZvbGlvcyBpbnN0ZWFkIG9mIHBhZ2VzLiBUaGlzIG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGluIHBhZ2UvZm9saW8gbG9ja2luZyBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5NTA3NjgzMjg3YjcwMWFlNDY4OTM2ODk3OTNiZTM4ZDE1MWZhMDI3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMjEgMTQ6Mzc6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jCmluZGV4IGQ1ZTg3NjI0ZjY5MjA1Li5iZDI3MzcyYTEwNTIyZiAxMDA2NDQKLS0tIGEvbW0vbWVtb3J5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5LmMKQEAgLTQ4NTIsNiAmIzQzOzQ4NTIsOCBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJCXZtZi0mZ3Q7cGFnZSA9IHNvZnRsZWFmX3RvX3BhZ2UoZW50cnkpOwogCQkJcmV0ID0gcmVtb3ZlX2RldmljZV9leGNsdXNpdmVfZW50cnkodm1mKTsKIAkJfSBlbHNlIGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpIHsKJiM0MzsJCQlzdHJ1Y3QgZm9saW8gKmZhdWx0X2ZvbGlvOwomIzQzOwogCQkJaWYgKHZtZi0mZ3Q7ZmxhZ3MgJmFtcDsgRkFVTFRfRkxBR19WTUFfTE9DSykgewogCQkJCS8qCiAJCQkJICogbWlncmF0ZV90b19yYW0gaXMgbm90IHlldCByZWFkeSB0byBvcGVyYXRlCkBAIC00ODYzLDYgJiM0Mzs0ODY1LDcgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCQl9CiAKIAkJCXZtZi0mZ3Q7cGFnZSA9IHNvZnRsZWFmX3RvX3BhZ2UoZW50cnkpOwomIzQzOwkJCWZhdWx0X2ZvbGlvID0gcGFnZV9mb2xpbyh2bWYtJmd0O3BhZ2UpOwogCQkJdm1mLSZndDtwdGUgPSBwdGVfb2Zmc2V0X21hcF9sb2NrKHZtYS0mZ3Q7dm1fbW0sIHZtZi0mZ3Q7cG1kLAogCQkJCQl2bWYtJmd0O2FkZHJlc3MsICZhbXA7dm1mLSZndDtwdGwpOwogCQkJaWYgKHVubGlrZWx5KCF2bWYtJmd0O3B0ZSB8fApAQCAtNDg3NCwxNSAmIzQzOzQ4NzcsMTUgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCQkgKiBHZXQgYSBwYWdlIHJlZmVyZW5jZSB3aGlsZSB3ZSBrbm93IHRoZSBwYWdlIGNhbiYjMzk7dCBiZQogCQkJICogZnJlZWQuCiAJCQkgKi8KLQkJCWlmICh0cnlsb2NrX3BhZ2Uodm1mLSZndDtwYWdlKSkgewomIzQzOwkJCWlmIChmb2xpb190cnlsb2NrKGZhdWx0X2ZvbGlvKSkgewogCQkJCXN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXA7CiAKLQkJCQlnZXRfcGFnZSh2bWYtJmd0O3BhZ2UpOwomIzQzOwkJCQlmb2xpb19nZXQoZmF1bHRfZm9saW8pOwogCQkJCXB0ZV91bm1hcF91bmxvY2sodm1mLSZndDtwdGUsIHZtZi0mZ3Q7cHRsKTsKIAkJCQlwZ21hcCA9IHBhZ2VfcGdtYXAodm1mLSZndDtwYWdlKTsKIAkJCQlyZXQgPSBwZ21hcC0mZ3Q7b3BzLSZndDttaWdyYXRlX3RvX3JhbSh2bWYpOwotCQkJCXVubG9ja19wYWdlKHZtZi0mZ3Q7cGFnZSk7Ci0JCQkJcHV0X3BhZ2Uodm1mLSZndDtwYWdlKTsKJiM0MzsJCQkJZm9saW9fdW5sb2NrKGZhdWx0X2ZvbGlvKTsKJiM0MzsJCQkJZm9saW9fcHV0KGZhdWx0X2ZvbGlvKTsKIAkJCX0gZWxzZSB7CiAJCQkJcHRlX3VubWFwKHZtZi0mZ3Q7cHRlKTsKIAkJCQlzb2Z0bGVhZl9lbnRyeV93YWl0X29uX2xvY2tlZChlbnRyeSwgdm1mLSZndDtwdGwpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzExCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBtbS9tZW1vcnkuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRvX3N3YXBfcGFnZWAgZnVuY3Rpb24uIFRoZSBrZXkgaGVyZSBpcyB0aGUgc3dpdGNoIGZyb20gYHBhZ2VgIHRvIGBmb2xpb2Agb3BlcmF0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSByZXBsYWNpbmcgYHRyeWxvY2tfcGFnZWAgd2l0aCBgZm9saW9fdHJ5bG9ja2AsIGBnZXRfcGFnZWAgd2l0aCBgZm9saW9fZ2V0YCwgYHVubG9ja19wYWdlYCB3aXRoIGBmb2xpb191bmxvY2tgLCBhbmQgYHB1dF9wYWdlYCB3aXRoIGBmb2xpb19wdXRgLiBQcmV0dHkgbXVjaCBhIHJlZmFjdG9yaW5nIGVmZm9ydCB0byBtb2Rlcm5pemUgdGhlIGNvZGUsIHVzaW5nIGBmb2xpb3NgIGluc3RlYWQgb2YgdGhlIG9sZGVyIGBwYWdlYCBhYnN0cmFjdGlvbi4gQWgsIHRoZXkmIzM5O3ZlIGFsc28gYWRkZWQgYGZhdWx0X2ZvbGlvID0gcGFnZV9mb2xpbyh2bWYtJmd0O3BhZ2UpO2Ag4oCTIG1ha2VzIHNlbnNlIGZvciB0aGUgZm9saW8gY29udGV4dC4KCkdpdmVuIHRoYXQgaXQmIzM5O3MgdG91Y2hpbmcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBJdCYjMzk7cyBhIGNyaXRpY2FsIGFyZWEsIHNvIGV2ZW4gc2VlbWluZ2x5IG1pbm9yIGNoYW5nZXMgY2FuIGhhdmUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkb19zd2FwX3BhZ2VgIGluIGBtbS9tZW1vcnkuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIHdpdGggdGhpcyBmb2xpbyBjb252ZXJzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RvX3N3YXBfcGFnZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL21lbW9yeS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbW9yeS5jPTk0MD1zdGF0aWMgdm9pZCByZXN0b3JlX2V4Y2x1c2l2ZV9wdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vbWVtb3J5LmMtOTU0LVxubW0vbWVtb3J5LmM6OTU1Olx0LyogU2VlIGRvX3N3YXBfcGFnZSgpOiByZXN0b3JlIFBBR0VfTk9ORSBmb3IgUldQICovXG5tbS9tZW1vcnkuYy05NTYtXHRpZiAocHRlX3N3cF91ZmZkKG9yaWdfcHRlKSBcdTAwMjZcdTAwMjYgdXNlcmZhdWx0ZmRfcndwKHZtYSkpXG4tLVxubW0vbWVtb3J5LmM9MzU5Nz1pbnQgYXBwbHlfdG9fZXhpc3RpbmdfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL21lbW9yeS5jLTM2MDYtICogb3IgY29uZmlndXJhdGlvbnMgKGUuZy4gaTM4NiB3aXRoIFBBRSkgd2hpY2ggbWlnaHQgZ2l2ZSBhIG1peCBvZiB1bm1hdGNoZWRcbm1tL21lbW9yeS5jOjM2MDc6ICogcGFydHMsIGRvX3N3YXBfcGFnZSBtdXN0IGNoZWNrIHVuZGVyIGxvY2sgYmVmb3JlIHVubWFwcGluZyB0aGUgcHRlIGFuZFxubW0vbWVtb3J5LmMtMzYwOC0gKiBwcm9jZWVkaW5nIChidXQgZG9fd3BfcGFnZSBpcyBvbmx5IGNhbGxlZCBhZnRlciBhbHJlYWR5IG1ha2luZyBzdWNoIGEgY2hlY2s7XG4tLVxubW0vbWVtb3J5LmM9NDc0MD1zdGF0aWMgdW5zaWduZWQgbG9uZyB0aHBfc3dhcGluX3N1aXRhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9tZW1vcnkuYy00Nzg0LVx0Lypcbm1tL21lbW9yeS5jOjQ3ODU6XHQgKiBGb3IgZG9fc3dhcF9wYWdlLCBmaW5kIHRoZSBoaWdoZXN0IG9yZGVyIHdoZXJlIHRoZSBhbGlnbmVkIHJhbmdlIGlzXG5tbS9tZW1vcnkuYy00Nzg2LVx0ICogY29tcGxldGVseSBzd2FwIGVudHJpZXMgd2l0aCBjb250aWd1b3VzIHN3YXAgb2Zmc2V0cy5cbi0tXG5tbS9tZW1vcnkuYz00ODA4PXN0YXRpYyB2b2lkIGNoZWNrX3N3YXBfZXhjbHVzaXZlKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5LFxuLS1cbm1tL21lbW9yeS5jLTQ4MjUtICovXG5tbS9tZW1vcnkuYzo0ODI2OnZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxubW0vbWVtb3J5LmMtNDgyNy17XG4tLVxubW0vbWVtb3J5LmMtNTE3Mi1cdHNldF9wdGVzKHZtYS1cdTAwM2V2bV9tbSwgYWRkcmVzcywgcHRlcCwgcHRlLCBucl9wYWdlcyk7XG5tbS9tZW1vcnkuYzo1MTczOlx0YXJjaF9kb19zd2FwX3BhZ2VfbnIodm1hLVx1MDAzZXZtX21tLCB2bWEsIGFkZHJlc3MsXG5tbS9tZW1vcnkuYy01MTc0LVx0XHRcdHB0ZSwgcHRlLCBucl9wYWdlcyk7XG4tLVxubW0vbWVtb3J5LmM9NjQ2Mj1zdGF0aWMgdm1fZmF1bHRfdCBoYW5kbGVfcHRlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbm1tL21lbW9yeS5jLTY1MDgtXHRpZiAoIXB0ZV9wcmVzZW50KHZtZi1cdTAwM2VvcmlnX3B0ZSkpXG5tbS9tZW1vcnkuYzo2NTA5Olx0XHRyZXR1cm4gZG9fc3dhcF9wYWdlKHZtZik7XG5tbS9tZW1vcnkuYy02NTEwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MDgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFN3YXAgUGFnZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgYXJvdW5kIGluIGBkb19zd2FwX3BhZ2VgLiBGdW5jdGlvbmFsbHksIGl0IHNlZW1zIHRvIGJlIHByaW1hcmlseSBhIHJlZmFjdG9yaW5nIGV4ZXJjaXNlLCBtb3ZpbmcgdGhpbmdzIG92ZXIgdG8gdXNpbmcgZm9saW9zLiBOb3QgYSBodWdlIGFyY2hpdGVjdHVyYWwgc2hpZnQsIHdoaWNoIGlzIGdvb2QuIEJ1dCB3YWl0LCBJIHNlZSBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpYCBwb3BwaW5nIHVwIGluIHRoZSBwYXRjaCBjb2RlLiBUaGF0JiMzOTtzIGEgbGl0dGxlIGludGVyZXN0aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlbGV2YW50IHRvIHRoZSBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgIGZ1bmN0aW9uLiBUaGF0IHdpbGwgdGVsbCBtZSB3aGF0IHN5c3RlbXMgbWlnaHQgYmUgYWZmZWN0ZWQgb3Igd2hhdCB0aGlzIHBhdGNoIGNvdWxkIGJlIHNwZWNpZmljYWxseSB0YXJnZXRpbmcuIFRoaXMgZGV0YWlsIGlzIGltcG9ydGFudCwgYmVjYXVzZSB0aGlzIGNvbnRleHQgaXMgdml0YWwgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZSBjaGFuZ2VzLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgYXQgcGxheSBoZXJlIHRvIHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jPTEwNDk9c3RhdGljIHZvaWQgc21hcHNfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTA4Mi1cdFx0fSBlbHNlIGlmIChzb2Z0bGVhZl9oYXNfcGZuKGVudHJ5KSkge1xuZnMvcHJvYy90YXNrX21tdS5jOjEwODM6XHRcdFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSlcbmZzL3Byb2MvdGFza19tbXUuYy0xMDg0LVx0XHRcdFx0cHJlc2VudCA9IHRydWU7XG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg9MjU2PXN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19taWdyYXRpb24oc29mdGxlYWZfdCBlbnRyeSlcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yNjgtLyoqXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyNjk6ICogc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZSBwcml2YXRlXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yNzAtICogd3JpdGFibGUgZW50cnk/XG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjc1LSAqL1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6Mjc2OnN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShzb2Z0bGVhZl90IGVudHJ5KVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjc3LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yODEtLyoqXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyODI6ICogc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZSBwcml2YXRlIGVudHJ5P1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjgzLSAqIEBlbnRyeTogTGVhZiBlbnRyeS5cbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yODYtICovXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyODc6c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX3QgZW50cnkpXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yODgte1xuLS1cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oPTM1NT1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaGFzX3Bmbihzb2Z0bGVhZl90IGVudHJ5KVxuLS1cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTM2MS1cdFx0cmV0dXJuIHRydWU7XG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDozNjI6XHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMzYzLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD02MDQ9c3RhdGljIGlubGluZSBib29sIHBtZF9pc19kZXZpY2VfcHJpdmF0ZV9lbnRyeShwbWRfdCBwbWQpXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MDUte1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6NjA2Olx0cmV0dXJuIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX2Zyb21fcG1kKHBtZCkpO1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjA3LX1cbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD02MzU9c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX3ZhbGlkX3BtZF9lbnRyeShzb2Z0bGVhZl90IGVudHJ5KVxuLS1cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTYzNy1cdC8qIE9ubHkgZGV2aWNlIHByaXZhdGUsIG1pZ3JhdGlvbiBlbnRyaWVzIHZhbGlkIGZvciBQTUQuICovXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDo2Mzg6XHRyZXR1cm4gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpIHx8XG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MzktXHRcdHNvZnRsZWFmX2lzX21pZ3JhdGlvbihlbnRyeSk7XG4tLVxubW0vaG1tLmM9MjQxPXN0YXRpYyBpbnQgaG1tX3ZtYV9oYW5kbGVfcHRlKHN0cnVjdCBtbV93YWxrICp3YWxrLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vaG1tLmMtMjcyLVx0XHQgKi9cbm1tL2htbS5jOjI3MzpcdFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSBcdTAwMjZcdTAwMjZcbm1tL2htbS5jLTI3NC1cdFx0ICAgIHBhZ2VfcGdtYXAoc29mdGxlYWZfdG9fcGFnZShlbnRyeSkpLVx1MDAzZW93bmVyID09XG4tLVxubW0vaG1tLmMtMjc2LVx0XHRcdGNwdV9mbGFncyA9IEhNTV9QRk5fVkFMSUQ7XG5tbS9obW0uYzoyNzc6XHRcdFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKGVudHJ5KSlcbm1tL2htbS5jLTI3OC1cdFx0XHRcdGNwdV9mbGFncyB8PSBITU1fUEZOX1dSSVRFO1xuLS1cbm1tL2htbS5jLTI5MC1cbm1tL2htbS5jOjI5MTpcdFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSlcbm1tL2htbS5jLTI5Mi1cdFx0XHRnb3RvIGZhdWx0O1xuLS1cbm1tL2htbS5jPTM0MT1zdGF0aWMgaW50IGhtbV92bWFfaGFuZGxlX2Fic2VudF9wbWQoc3RydWN0IG1tX3dhbGsgKndhbGssIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxubW0vaG1tLmMtMzUxLVxubW0vaG1tLmM6MzUyOlx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSBcdTAwMjZcdTAwMjZcbm1tL2htbS5jLTM1My1cdCAgICBzb2Z0bGVhZl90b19mb2xpbyhlbnRyeSktXHUwMDNlcGdtYXAtXHUwMDNlb3duZXIgPT1cbi0tXG5tbS9obW0uYy0zNTktXG5tbS9obW0uYzozNjA6XHRcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpXG5tbS9obW0uYy0zNjEtXHRcdFx0Y3B1X2ZsYWdzIHw9IEhNTV9QRk5fV1JJVEU7XG4tLVxubW0vaG1tLmMtMzc4LVx0aWYgKHJlcXVpcmVkX2ZhdWx0KSB7XG5tbS9obW0uYzozNzk6XHRcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpXG5tbS9obW0uYy0zODAtXHRcdFx0cmV0dXJuIGhtbV9yZWNvcmRfZmF1bHQoYWRkciwgZW5kLCByZXF1aXJlZF9mYXVsdCwgd2Fsayk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0xODA5PXN0YXRpYyB2b2lkIGNvcHlfaHVnZV9ub25fcHJlc2VudF9wbWQoXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0xODI4LVx0XHRzZXRfcG1kX2F0KHNyY19tbSwgYWRkciwgc3JjX3BtZCwgcG1kKTtcbm1tL2h1Z2VfbWVtb3J5LmM6MTgyOTpcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XG5tbS9odWdlX21lbW9yeS5jLTE4MzAtXHRcdC8qXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0xODMzLVx0XHQgKi9cbm1tL2h1Z2VfbWVtb3J5LmM6MTgzNDpcdFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKGVudHJ5KSkge1xubW0vaHVnZV9tZW1vcnkuYy0xODM1LVx0XHRcdGVudHJ5ID0gbWFrZV9yZWFkYWJsZV9kZXZpY2VfcHJpdmF0ZV9lbnRyeShzd3Bfb2Zmc2V0KGVudHJ5KSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0yNjAxPXN0YXRpYyB2b2lkIGNoYW5nZV9ub25fcHJlc2VudF9odWdlX3BtZChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5tbS9odWdlX21lbW9yeS5jLTI2MjItXHRcdFx0bmV3cG1kID0gcG1kX3N3cF9ta3NvZnRfZGlydHkobmV3cG1kKTtcbm1tL2h1Z2VfbWVtb3J5LmM6MjYyMzpcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpKSB7XG5tbS9odWdlX21lbW9yeS5jLTI2MjQtXHRcdGVudHJ5ID0gbWFrZV9yZWFkYWJsZV9kZXZpY2VfcHJpdmF0ZV9lbnRyeShzd3Bfb2Zmc2V0KGVudHJ5KSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zMDk3PXN0YXRpYyB2b2lkIF9fc3BsaXRfaHVnZV9wbWRfbG9ja2VkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBwbWRfdCAqcG1kLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzE5MC1cbm1tL2h1Z2VfbWVtb3J5LmM6MzE5MTpcdFx0d3JpdGUgPSBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSk7XG5tbS9odWdlX21lbW9yeS5jLTMxOTItXHRcdGFub25fZXhjbHVzaXZlID0gUGFnZUFub25FeGNsdXNpdmUocGFnZSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz00OTYxPWludCBzZXRfcG1kX21pZ3JhdGlvbl9lbnRyeShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00OTkwLVxubW0vaHVnZV9tZW1vcnkuYzo0OTkxOlx0XHR3cml0YWJsZSA9IHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKG9sZF9lbnRyeSk7XG5tbS9odWdlX21lbW9yeS5jLTQ5OTItXHRcdHNvZnRkaXJ0eSA9IHBtZF9zd3Bfc29mdF9kaXJ0eShwbWR2YWwpO1xuLS1cbm1tL21lbW9yeS5jPTEwMDE9Y29weV9ub25wcmVzZW50X3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3RfbW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKnNyY19tbSxcbi0tXG5tbS9tZW1vcnkuYy0xMDQzLVx0XHR9XG5tbS9tZW1vcnkuYzoxMDQ0Olx0fSBlbHNlIGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpIHtcbm1tL21lbW9yeS5jLTEwNDUtXHRcdHBhZ2UgPSBzb2Z0bGVhZl90b19wYWdlKGVudHJ5KTtcbi0tXG5tbS9tZW1vcnkuYy0xMDY4LVx0XHQgKi9cbm1tL21lbW9yeS5jOjEwNjk6XHRcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkgXHUwMDI2XHUwMDI2XG5tbS9tZW1vcnkuYy0xMDcwLVx0XHQgICAgaXNfY293X21hcHBpbmcodm1fZmxhZ3MpKSB7XG4tLVxubW0vbWVtb3J5LmM9MTgxMT1zdGF0aWMgaW5saW5lIGludCB6YXBfbm9ucHJlc2VudF9wdGVzKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsXG4tLVxubW0vbWVtb3J5LmMtMTgyMC1cdGVudHJ5ID0gc29mdGxlYWZfZnJvbV9wdGUocHRlbnQpO1xubW0vbWVtb3J5LmM6MTgyMTpcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgfHxcbm1tL21lbW9yeS5jLTE4MjItXHQgICAgc29mdGxlYWZfaXNfZGV2aWNlX2V4Y2x1c2l2ZShlbnRyeSkpIHtcbi0tXG5tbS9tZW1vcnkuYz00ODI2PXZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbm1tL21lbW9yeS5jLTQ4NTMtXHRcdFx0cmV0ID0gcmVtb3ZlX2RldmljZV9leGNsdXNpdmVfZW50cnkodm1mKTtcbm1tL21lbW9yeS5jOjQ4NTQ6XHRcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XG5tbS9tZW1vcnkuYy00ODU1LVx0XHRcdHN0cnVjdCBmb2xpbyAqZmF1bHRfZm9saW87XG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMzc9c3RhdGljIGludCBtaWdyYXRlX3ZtYV9jb2xsZWN0X2h1Z2VfcG1kKHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTY5LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNzA6XHRcdGlmICghc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpIHx8XG5tbS9taWdyYXRlX2RldmljZS5jLTE3MS1cdFx0ICAgICEobWlncmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgTUlHUkFURV9WTUFfU0VMRUNUX0RFVklDRV9QUklWQVRFKSkge1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTgxLVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxODI6XHRcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpXG5tbS9taWdyYXRlX2RldmljZS5jLTE4My1cdFx0XHR3cml0ZSA9IE1JR1JBVEVfUEZOX1dSSVRFO1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MjQ1PXN0YXRpYyBpbnQgbWlncmF0ZV92bWFfY29sbGVjdF9wbWQocG1kX3QgKnBtZHAsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0yOTktXHRcdFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZShwdGUpO1xubW0vbWlncmF0ZV9kZXZpY2UuYzozMDA6XHRcdFx0aWYgKCFzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpXG5tbS9taWdyYXRlX2RldmljZS5jLTMwMS1cdFx0XHRcdGdvdG8gbmV4dDtcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTMzMy1cdFx0XHRcdFx0TUlHUkFURV9QRk5fTUlHUkFURTtcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MzM0Olx0XHRcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpXG5tbS9taWdyYXRlX2RldmljZS5jLTMzNS1cdFx0XHRcdG1wZm4gfD0gTUlHUkFURV9QRk5fV1JJVEU7XG4tLVxubW0vbXByb3RlY3QuYz0yMTQ9c3RhdGljIGxvbmcgY2hhbmdlX3NvZnRsZWFmX3B0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9tcHJvdGVjdC5jLTIzNi1cdFx0XHRuZXdwdGUgPSBwdGVfc3dwX21rc29mdF9kaXJ0eShuZXdwdGUpO1xubW0vbXByb3RlY3QuYzoyMzc6XHR9IGVsc2UgaWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKGVudHJ5KSkge1xubW0vbXByb3RlY3QuYy0yMzgtXHRcdC8qXG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE4Mj1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfY2FjaGVkX3dyaXRhYmxlKHNvZnRsZWFmX3QgZW50cnkpXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTgzLXtcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoxODQ6XHRyZXR1cm4gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpIHx8XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTg1LVx0XHRzb2Z0bGVhZl9pc19taWdyYXRpb25fd3JpdGUoZW50cnkpO1xuLS1cbm1tL3BhZ2Vfdm1hX21hcHBlZC5jPTE2PXN0YXRpYyBib29sIG1hcF9wdGUoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCBwbWRfdCAqcG1kdmFscCxcbi0tXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYy03MC1cdFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZShwdGVudCk7XG5tbS9wYWdlX3ZtYV9tYXBwZWQuYzo3MTpcdFx0aWYgKCFzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgXHUwMDI2XHUwMDI2XG5tbS9wYWdlX3ZtYV9tYXBwZWQuYy03Mi1cdFx0ICAgICFzb2Z0bGVhZl9pc19kZXZpY2VfZXhjbHVzaXZlKGVudHJ5KSlcbi0tXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYz0xMDc9c3RhdGljIGJvb2wgY2hlY2tfcHRlKHN0cnVjdCBwYWdlX3ZtYV9tYXBwZWRfd2FsayAqcHZtdywgdW5zaWduZWQgbG9uZyBwdGVfbnIpXG4tLVxubW0vcGFnZV92bWFfbWFwcGVkLmMtMTMwLVx0XHQvKiBIYW5kbGUgdW4tYWRkcmVzc2FibGUgWk9ORV9ERVZJQ0UgbWVtb3J5ICovXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYzoxMzE6XHRcdGlmICghc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpIFx1MDAyNlx1MDAyNlxubW0vcGFnZV92bWFfbWFwcGVkLmMtMTMyLVx0XHQgICAgIXNvZnRsZWFmX2lzX2RldmljZV9leGNsdXNpdmUoZW50cnkpKVxuLS1cbm1tL3JtYXAuYz0yNDYxPXN0YXRpYyBib29sIHRyeV90b19taWdyYXRlX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9ybWFwLmMtMjY0OS1cbm1tL3JtYXAuYzoyNjUwOlx0XHRcdHdyaXRhYmxlID0gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpO1xubW0vcm1hcC5jLTI2NTEtXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODQ5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSB3ZWxsLXZlcnNlZCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbjoKCioqQW5hbHl6aW5nIHRoZSBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgIEZsYWcqKgoKUmlnaHQsIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBhc3NvY2lhdGVzIHRoYXQgd2l0aCB0aGUgY29uY2VwdCBvZiBtZW1vcnkgdGhhdCYjMzk7cyBwcml2YXRlIHRvIGEgc3BlY2lmaWMgZGV2aWNlLiBUaGF0IHNvdW5kcyBsaWtlIGl0JiMzOTtzIGNvbm5lY3RlZCB0byBgREVWSUNFX1BSSVZBVEVgIG1lbW9yeSBzb21laG93LiBUaGUgY29ubmVjdGlvbiBzZWVtcyBsb2dpY2FsLCBsaWtlIHRoZXJlJiMzOTtzIGEgc2V0dGluZyB0aGF0IGdvdmVybnMgdGhpcyBwcml2YXRlIG1lbW9yeSBjaGFyYWN0ZXJpc3RpYy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gdGhpcy4gTXkgZmlyc3QgcmVmbGV4IHdvdWxkIGJlIHRvIGNoZWNrIHRoZSBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IHZhcmlhYmxlIGFjdHVhbGx5IGRvZXMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gbG9vayB1cCB0aGUgZGVmaW5pdGlvbiBvZiBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBhbmQgaXRzIHJlbGF0aW9uc2hpcHMsIGxpa2VseSB0aHJvdWdoIGEgcXVpY2sgZ3JlcCwgb3IgaWYgSSYjMzk7bSB1c2luZyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvb2wsIEkmIzM5O2QgbmF2aWdhdGUgdG8gaXQgYW5kIGV4YW1pbmUgdGhlIGhlbHAgdGV4dCBhbmQgZGVwZW5kZW5jaWVzLiBLbm93aW5nIGl0cyBtZWFuaW5nIGlzIGNyaXRpY2FsIHRvIGV2YWx1YXRpbmcgdGhlIHNpZ25pZmljYW5jZSBvZiBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTEyMjI9Y29uZmlnIFpPTkVfREVWSUNFXG4tLVxubW0vS2NvbmZpZy0xMjMxLVx0ICBcJiMzNDtkZXZpY2UtcGh5c2ljYWxcJiMzNDsgYWRkcmVzc2VzIHdoaWNoIGlzIG5lZWRlZCBmb3IgREFYLCBQQ0lfUDJQRE1BLCBhbmRcbm1tL0tjb25maWc6MTIzMjpcdCAgREVWSUNFX1BSSVZBVEUgZmVhdHVyZXMgYW1vbmcgb3RoZXJzLlxubW0vS2NvbmZpZy0xMjMzLVxuLS1cbm1tL0tjb25maWc9MTI0OD1jb25maWcgR0VUX0ZSRUVfUkVHSU9OXG4tLVxubW0vS2NvbmZpZy0xMjUwLVxubW0vS2NvbmZpZzoxMjUxOmNvbmZpZyBERVZJQ0VfUFJJVkFURVxubW0vS2NvbmZpZy0xMjUyLVx0Ym9vbCBcJiMzNDtVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzAxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKk5hdmlnYXRpbmcgYENPTkZJR19ERVZJQ0VfUFJJVkFURWAgYW5kIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAqKgoKT2theSwgc28gYENPTkZJR19ERVZJQ0VfUFJJVkFURWAg4oCTIHRoYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQmIzM5O3MgZHJpdmluZyB0aGlzIHdob2xlIHRoaW5nLiBOb3csIEkgc2VlbSB0byByZWNhbGwgZW5jb3VudGVyaW5nIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAgc29tZXdoZXJlIGluIHJlbGF0aW9uIHRvIGl0LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gcHJldHR5IHN1cmUgaXQgY29tZXMgdXAgaW4gYGRvX3N3YXBfcGFnZWAgd2hlbiBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBpcyBlbmFibGVkLiBPciwgbWF5YmUgaXQmIzM5O3MgYWx3YXlzIGRlZmluZWQsIGFuZCBqdXN0IHJldHVybnMgYGZhbHNlYCBpZiB0aGUgY29uZmlnIGlzbiYjMzk7dCBzZXQuIEkgbmVlZCB0byBiZSBzdXJlLiBUaW1lIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uLiBMZXQmIzM5O3MgaGVhZCBvdmVyIHRvIGBpbmNsdWRlL2xpbnV4L2xlYWZvcHMuaGAuIFRoYXQgc2hvdWxkIGhhdmUgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIHdoYXQgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlYCBhY3R1YWxseSBkb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbGVhZm9wcy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbGVhZm9wcy5oPTI1Nj1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaXNfbWlncmF0aW9uKHNvZnRsZWFmX3QgZW50cnkpXG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjY4LS8qKlxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6MjY5OiAqIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKCkgLSBJcyB0aGlzIGxlYWYgZW50cnkgYSBkZXZpY2UgcHJpdmF0ZVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjcwLSAqIHdyaXRhYmxlIGVudHJ5P1xuLS1cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI3NS0gKi9cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjI3NjpzdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoc29mdGxlYWZfdCBlbnRyeSlcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI3Ny17XG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjgxLS8qKlxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6MjgyOiAqIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKCkgLSBJcyB0aGlzIGxlYWYgZW50cnkgYSBkZXZpY2UgcHJpdmF0ZSBlbnRyeT9cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI4My0gKiBAZW50cnk6IExlYWYgZW50cnkuXG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjg2LSAqL1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6Mjg3OnN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShzb2Z0bGVhZl90IGVudHJ5KVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjg4LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD0zNTU9c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2hhc19wZm4oc29mdGxlYWZfdCBlbnRyeSlcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0zNjEtXHRcdHJldHVybiB0cnVlO1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6MzYyOlx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSlcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTM2My1cdFx0cmV0dXJuIHRydWU7XG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg9NjA0PXN0YXRpYyBpbmxpbmUgYm9vbCBwbWRfaXNfZGV2aWNlX3ByaXZhdGVfZW50cnkocG1kX3QgcG1kKVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjA1LXtcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjYwNjpcdHJldHVybiBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShzb2Z0bGVhZl9mcm9tX3BtZChwbWQpKTtcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTYwNy19XG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg9NjM1PXN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc192YWxpZF9wbWRfZW50cnkoc29mdGxlYWZfdCBlbnRyeSlcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MzctXHQvKiBPbmx5IGRldmljZSBwcml2YXRlLCBtaWdyYXRpb24gZW50cmllcyB2YWxpZCBmb3IgUE1ELiAqL1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6NjM4Olx0cmV0dXJuIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSB8fFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjM5LVx0XHRzb2Z0bGVhZl9pc19taWdyYXRpb24oZW50cnkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjM4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbGVhZm9wcy5oYCoqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgaW5jbHVkZS9saW51eC9sZWFmb3BzLmhgIGhlYWRlciBmaWxlLiBNeSBodW5jaCBpcyB0aGF0IHRoZSByZWxldmFudCBjb2RlLCBvciBhdCBsZWFzdCB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGlzc3VlLCBpcyBhcm91bmQgbGluZSAyODcuIFRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIGJlZ2luIG15IGludmVzdGlnYXRpb24gaW50byB0aGlzIHNwZWNpZmljIGFzcGVjdC4gSSBleHBlY3QgdGhhdCBpcyBnb2luZyB0byBiZSB0aGUgc291cmNlIG9mIG15IGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9sZWFmb3BzLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdCAqIHdyaXRhYmxlIGVudHJ5P1xuIDI3MTpcdCAqIEBlbnRyeTogTGVhZiBlbnRyeS5cbiAyNzI6XHQgKlxuIDI3MzpcdCAqIFJldHVybnM6IHRydWUgaWYgdGhlIGxlYWYgZW50cnkgaXMgYSBkZXZpY2UgcHJpdmF0ZSB3cml0YWJsZSBlbnRyeSwgb3RoZXJ3aXNlXG4gMjc0Olx0ICogZmFsc2UuXG4gMjc1Olx0ICovXG4gMjc2Olx0c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKHNvZnRsZWFmX3QgZW50cnkpXG4gMjc3Olx0e1xuIDI3ODpcdFx0cmV0dXJuIHNvZnRsZWFmX3R5cGUoZW50cnkpID09IFNPRlRMRUFGX0RFVklDRV9QUklWQVRFX1dSSVRFO1xuIDI3OTpcdH1cbiAyODA6XHRcbiAyODE6XHQvKipcbiAyODI6XHQgKiBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZSgpIC0gSXMgdGhpcyBsZWFmIGVudHJ5IGEgZGV2aWNlIHByaXZhdGUgZW50cnk/XG4gMjgzOlx0ICogQGVudHJ5OiBMZWFmIGVudHJ5LlxuIDI4NDpcdCAqXG4gMjg1Olx0ICogUmV0dXJuczogdHJ1ZSBpZiB0aGUgbGVhZiBlbnRyeSBpcyBhIGRldmljZSBwcml2YXRlIGVudHJ5LCBvdGhlcndpc2UgZmFsc2UuXG4gMjg2Olx0ICovXG4gMjg3Olx0c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX3QgZW50cnkpXG4gMjg4Olx0e1xuIDI4OTpcdFx0c3dpdGNoIChzb2Z0bGVhZl90eXBlKGVudHJ5KSkge1xuIDI5MDpcdFx0Y2FzZSBTT0ZUTEVBRl9ERVZJQ0VfUFJJVkFURV9XUklURTpcbiAyOTE6XHRcdGNhc2UgU09GVExFQUZfREVWSUNFX1BSSVZBVEVfUkVBRDpcbiAyOTI6XHRcdFx0cmV0dXJuIHRydWU7XG4gMjkzOlx0XHRkZWZhdWx0OlxuIDI5NDpcdFx0XHRyZXR1cm4gZmFsc2U7XG4gMjk1Olx0XHR9XG4gMjk2Olx0fVxuIDI5NzpcdFxuIDI5ODpcdC8qKlxuIDI5OTpcdCAqIHNvZnRsZWFmX2lzX2RldmljZV9leGNsdXNpdmUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZS1leGNsdXNpdmUgZW50cnk/XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NDAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIENvbnRleHQqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGluZ3Mg4oCTIGBkb19zd2FwX3BhZ2VgLiBUaGF0JiMzOTtzIHNlcmlvdXMgbWVtb3J5IG1hbmFnZW1lbnQgdGVycml0b3J5LiBUaGUgc3BlY2lmaWMgY29kZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIHRoYXQgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KWAgYnJhbmNoLiBBbHJpZ2h0LCB0aGF0IHBpbnMgZG93biBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBhcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBkcml2aW5nIHRoaXMuIEdvb2QsIHRoYXQgbmFycm93cyB0aGluZ3MgZG93biBjb25zaWRlcmFibHkuIE5vdywgd2hhdCBlbHNlIG1pZ2h0IGJlIGF0IHBsYXkgaGVyZT8gV2UgKmtub3cqIGBDT05GSUdfU1dBUGAgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIGBkb19zd2FwX3BhZ2VgIHRvIGV2ZW4gYmUgY2FsbGVkLCBidXQgd2hhdCBvdGhlciBjb25maWdzIGNvdWxkIGluZmx1ZW5jZSB0aGlzIHBhcnRpY3VsYXIgcGF0aD8gVGltZSB0byBkaXZlIGludG8gYG1tL21lbW9yeS5jYCBhbmQgdGFrZSBhIGNsb3NlciBsb29rLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgZG9fc3dhcF9wYWdlYCBmdW5jdGlvbiB0byBzZWUgaWYgYW55dGhpbmcgZWxzZSBpcyBpbiBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19zd2FwX3BhZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9tZW1vcnkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tZW1vcnkuYz05NDA9c3RhdGljIHZvaWQgcmVzdG9yZV9leGNsdXNpdmVfcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL21lbW9yeS5jLTk1NC1cbm1tL21lbW9yeS5jOjk1NTpcdC8qIFNlZSBkb19zd2FwX3BhZ2UoKTogcmVzdG9yZSBQQUdFX05PTkUgZm9yIFJXUCAqL1xubW0vbWVtb3J5LmMtOTU2LVx0aWYgKHB0ZV9zd3BfdWZmZChvcmlnX3B0ZSkgXHUwMDI2XHUwMDI2IHVzZXJmYXVsdGZkX3J3cCh2bWEpKVxuLS1cbm1tL21lbW9yeS5jPTM1OTc9aW50IGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9tZW1vcnkuYy0zNjA2LSAqIG9yIGNvbmZpZ3VyYXRpb25zIChlLmcuIGkzODYgd2l0aCBQQUUpIHdoaWNoIG1pZ2h0IGdpdmUgYSBtaXggb2YgdW5tYXRjaGVkXG5tbS9tZW1vcnkuYzozNjA3OiAqIHBhcnRzLCBkb19zd2FwX3BhZ2UgbXVzdCBjaGVjayB1bmRlciBsb2NrIGJlZm9yZSB1bm1hcHBpbmcgdGhlIHB0ZSBhbmRcbm1tL21lbW9yeS5jLTM2MDgtICogcHJvY2VlZGluZyAoYnV0IGRvX3dwX3BhZ2UgaXMgb25seSBjYWxsZWQgYWZ0ZXIgYWxyZWFkeSBtYWtpbmcgc3VjaCBhIGNoZWNrO1xuLS1cbm1tL21lbW9yeS5jPTQ3NDA9c3RhdGljIHVuc2lnbmVkIGxvbmcgdGhwX3N3YXBpbl9zdWl0YWJsZV9vcmRlcnMoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxubW0vbWVtb3J5LmMtNDc4NC1cdC8qXG5tbS9tZW1vcnkuYzo0Nzg1Olx0ICogRm9yIGRvX3N3YXBfcGFnZSwgZmluZCB0aGUgaGlnaGVzdCBvcmRlciB3aGVyZSB0aGUgYWxpZ25lZCByYW5nZSBpc1xubW0vbWVtb3J5LmMtNDc4Ni1cdCAqIGNvbXBsZXRlbHkgc3dhcCBlbnRyaWVzIHdpdGggY29udGlndW91cyBzd2FwIG9mZnNldHMuXG4tLVxubW0vbWVtb3J5LmM9NDgwOD1zdGF0aWMgdm9pZCBjaGVja19zd2FwX2V4Y2x1c2l2ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcbi0tXG5tbS9tZW1vcnkuYy00ODI1LSAqL1xubW0vbWVtb3J5LmM6NDgyNjp2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbm1tL21lbW9yeS5jLTQ4Mjcte1xuLS1cbm1tL21lbW9yeS5jLTUxNzItXHRzZXRfcHRlcyh2bWEtXHUwMDNldm1fbW0sIGFkZHJlc3MsIHB0ZXAsIHB0ZSwgbnJfcGFnZXMpO1xubW0vbWVtb3J5LmM6NTE3MzpcdGFyY2hfZG9fc3dhcF9wYWdlX25yKHZtYS1cdTAwM2V2bV9tbSwgdm1hLCBhZGRyZXNzLFxubW0vbWVtb3J5LmMtNTE3NC1cdFx0XHRwdGUsIHB0ZSwgbnJfcGFnZXMpO1xuLS1cbm1tL21lbW9yeS5jPTY0NjI9c3RhdGljIHZtX2ZhdWx0X3QgaGFuZGxlX3B0ZV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9tZW1vcnkuYy02NTA4LVx0aWYgKCFwdGVfcHJlc2VudCh2bWYtXHUwMDNlb3JpZ19wdGUpKVxubW0vbWVtb3J5LmM6NjUwOTpcdFx0cmV0dXJuIGRvX3N3YXBfcGFnZSh2bWYpO1xubW0vbWVtb3J5LmMtNjUxMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc4MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29tcGlsYXRpb24gb2YgYGRvX3N3YXBfcGFnZWAqKgoKT2theSwgc28gYGRvX3N3YXBfcGFnZWAgaXMgYWx3YXlzIGNvbXBpbGVkLCAqcHJvdmlkZWQqIGBDT05GSUdfU1dBUGAgaXMgZW5hYmxlZC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgaXQgcmFpc2VzIGEgcXVlc3Rpb24uIE5vdywgd2hlcmUgaXMgYGRvX3N3YXBfcGFnZWAgZGVmaW5lZD8gQWgsIHllcywgaXQmIzM5O3MgaW4gYG1tL21lbW9yeS5jYC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgdGhhdCBmaWxlLCBgbW0vbWVtb3J5LmNgLCBhbHdheXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGltYWdlPyBMb2dpY2FsbHksIHRoZSBhbnN3ZXIgaXMgeWVzLCBnaXZlbiBpdHMgY29yZSByb2xlIGluIG1lbW9yeSBtYW5hZ2VtZW50LiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgKmFic29sdXRlbHkqIGNlcnRhaW4uIFRoZXJlZm9yZSwgdG8gcmVtb3ZlIGFueSBkb3VidCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBkb19zd2FwX3BhZ2VgIGl0c2VsZiAqaXNuJiMzOTt0KiBoaWRkZW4gYmVoaW5kIGEgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSB0aGF0IG9ubHkgaW5jbHVkZXMgaXQgdW5kZXIgYENPTkZJR19TV0FQYC4gVGltZSB0byBjaGVjayB0aGUgc291cmNlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL21lbW9yeS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDgwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0ODAwOlx0I2Vsc2UgLyogIUNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xuNDgwMTpcdHN0YXRpYyB1bnNpZ25lZCBsb25nIHRocF9zd2FwaW5fc3VpdGFibGVfb3JkZXJzKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuNDgwMjpcdHtcbjQ4MDM6XHRcdHJldHVybiAwO1xuNDgwNDpcdH1cbjQ4MDU6XHQjZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG40ODA2Olx0XG40ODA3Olx0LyogU2FuaXR5IGNoZWNrIHRoYXQgYSBmb2xpbyBpcyBmdWxseSBleGNsdXNpdmUgKi9cbjQ4MDg6XHRzdGF0aWMgdm9pZCBjaGVja19zd2FwX2V4Y2x1c2l2ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcbjQ4MDk6XHRcdFx0XHRcdCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpXG40ODEwOlx0e1xuNDgxMTpcdFx0LyogQ2FsbGVkIHVuZGVyIFBUIGxvY2tlZCBhbmQgZm9saW8gbG9ja2VkLCB0aGUgc3dhcCBjb3VudCBpcyBzdGFibGUgKi9cbjQ4MTI6XHRcdGRvIHtcbjQ4MTM6XHRcdFx0Vk1fV0FSTl9PTl9PTkNFX0ZPTElPKF9fc3dhcF9jb3VudChlbnRyeSkgIT0gMSwgZm9saW8pO1xuNDgxNDpcdFx0XHRlbnRyeS52YWwmIzQzOyYjNDM7O1xuNDgxNTpcdFx0fSB3aGlsZSAoLS1ucl9wYWdlcyk7XG40ODE2Olx0fVxuNDgxNzpcdFxuNDgxODpcdC8qXG40ODE5Olx0ICogV2UgZW50ZXIgd2l0aCBlaXRoZXIgdGhlIFZNQSBsb2NrIG9yIHRoZSBtbWFwX2xvY2sgaGVsZCAoc2VlXG40ODIwOlx0ICogRkFVTFRfRkxBR19WTUFfTE9DSyksIGFuZCBwdGUgbWFwcGVkIGJ1dCBub3QgeWV0IGxvY2tlZC5cbjQ4MjE6XHQgKiBXZSByZXR1cm4gd2l0aCBwdGUgdW5tYXBwZWQgYW5kIHVubG9ja2VkLlxuNDgyMjpcdCAqXG40ODIzOlx0ICogV2hlbiByZXR1cm5pbmcsIHRoZSBsb2NrIG1heSBoYXZlIGJlZW4gcmVsZWFzZWQgaW4gdGhlIHNhbWUgY2FzZXNcbjQ4MjQ6XHQgKiBhcyBkb25lIGJ5IGZpbGVtYXBfZmF1bHQoKS5cbjQ4MjU6XHQgKi9cbjQ4MjY6XHR2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbjQ4Mjc6XHR7XG40ODI4Olx0XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi1cdTAwM2V2bWE7XG40ODI5Olx0XHRzdHJ1Y3QgZm9saW8gKnN3YXBjYWNoZSA9IE5VTEwsICpmb2xpbztcbjQ4MzA6XHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuNDgzMTpcdFx0c3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpID0gTlVMTDtcbjQ4MzI6XHRcdHJtYXBfdCBybWFwX2ZsYWdzID0gUk1BUF9OT05FO1xuNDgzMzpcdFx0Ym9vbCBleGNsdXNpdmUgPSBmYWxzZTtcbjQ4MzQ6XHRcdGJvb2wgcndwX3Jlc3RvcmUgPSBmYWxzZTtcbjQ4MzU6XHRcdHNvZnRsZWFmX3QgZW50cnk7XG40ODM2Olx0XHRwdGVfdCBwdGU7XG40ODM3Olx0XHR2bV9mYXVsdF90IHJldCA9IDA7XG40ODM4Olx0XHRpbnQgbnJfcGFnZXM7XG40ODM5Olx0XHR1bnNpZ25lZCBsb25nIHBhZ2VfaWR4O1xuNDg0MDpcdFx0dW5zaWduZWQgbG9uZyBhZGRyZXNzO1xuNDg0MTpcdFx0cHRlX3QgKnB0ZXA7XG40ODQyOlx0XG40ODQzOlx0XHRpZiAoIXB0ZV91bm1hcF9zYW1lKHZtZikpXG40ODQ0Olx0XHRcdGdvdG8gb3V0O1xuNDg0NTpcdFxuNDg0NjpcdFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZSh2bWYtXHUwMDNlb3JpZ19wdGUpO1xuNDg0NzpcdFx0aWYgKHVubGlrZWx5KCFzb2Z0bGVhZl9pc19zd2FwKGVudHJ5KSkpIHtcbjQ4NDg6XHRcdFx0aWYgKHNvZnRsZWFmX2lzX21pZ3JhdGlvbihlbnRyeSkpIHtcbjQ4NDk6XHRcdFx0XHRtaWdyYXRpb25fZW50cnlfd2FpdCh2bWEtXHUwMDNldm1fbW0sIHZtZi1cdTAwM2VwbWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODY3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNzY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRm9saW8gTWlncmF0aW9uIGluIGBkb19zd2FwX3BhZ2VgKioKCk9rYXksIHNvIGBkb19zd2FwX3BhZ2VgIGlzIGFsd2F5cyBjb21waWxlZCwgYnV0IHdoYXQmIzM5O3MgcmVsZXZhbnQgaGVyZSBpcyBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBmb2N1cyBuZWVkcyB0byBiZS4gUmlnaHQsIHNvIGBDT05GSUdfREVWSUNFX1BSSVZBVEVgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24uIFdlIG5lZWQgdG8gYmUgc3VyZSB0aGF0JiMzOTtzIGVuYWJsZWQuIEFsc28sIGBTV0FQYCBpcyBuZWVkZWQgZm9yIGBkb19zd2FwX3BhZ2VgIHRvIGZ1bmN0aW9uLCBidXQgdGhhdCYjMzk7cyB1c3VhbGx5IGVuYWJsZWQsIHNvIHNob3VsZCBiZSBmaW5lLiBJIHNlZSwgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlYCBpcyBzcGVjaWZpY2FsbHkgdXNlZCB3aXRoaW4gYGRvX3N3YXBfcGFnZWAgd2hlbiB0aGUgbWVtb3J5IGVudHJ5IGlzIHByaXZhdGUgdG8gYSBkZXZpY2UuIFRoYXQgY29uZmlybXMgYERFVklDRV9QUklWQVRFYCBpcyB0aGUgY29ycmVjdCBjb25maWcuCgpMZXQmIzM5O3MgZ28gYmFjayB0byB0aGUgcGF0Y2ggaXRzZWxmLgoKYGBgYwogCQl9IGVsc2UgaWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSkgewomIzQzOwkJCXN0cnVjdCBmb2xpbyAqZmF1bHRfZm9saW87CiYjNDM7CiAJCQlpZiAodm1mLSZndDtmbGFncyAmYW1wOyBGQVVMVF9GTEFHX1ZNQV9MT0NLKSB7CiAJCQkJLyoKIAkJCQkgKiBtaWdyYXRlX3RvX3JhbSBpcyBub3QgeWV0IHJlYWR5IHRvIG9wZXJhdGUKQEAgLTQ4NjMsNiAmIzQzOzQ4NjUsNyBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJCX0KIAogCQkJdm1mLSZndDtwYWdlID0gc29mdGxlYWZfdG9fcGFnZShlbnRyeSk7CiYjNDM7CQkJZmF1bHRfZm9saW8gPSBwYWdlX2ZvbGlvKHZtZi0mZ3Q7cGFnZSk7CiAJCQl2bWYtJmd0O3B0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sodm1hLSZndDt2bV9tbSwgdm1mLSZndDtwbWQsCiAJCQkJCXZtZi0mZ3Q7YWRkcmVzcywgJmFtcDt2bWYtJmd0O3B0bCk7CiAJCQlpZiAodW5saWtlbHkoIXZtZi0mZ3Q7cHRlIHx8CkBAIC00ODc0LDE1ICYjNDM7NDg3NywxNSBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJCSAqIEdldCBhIHBhZ2UgcmVmZXJlbmNlIHdoaWxlIHdlIGtub3cgdGhlIHBhZ2UgY2FuJiMzOTt0IGJlCiAJCQkgKiBmcmVlZC4KIAkJCSAqLwotCQkJaWYgKHRyeWxvY2tfcGFnZSh2bWYtJmd0O3BhZ2UpKSB7CiYjNDM7CQkJaWYgKGZvbGlvX3RyeWxvY2soZmF1bHRfZm9saW8pKSB7CiAJCQkJc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcDsKIAotCQkJCWdldF9wYWdlKHZtZi0mZ3Q7cGFnZSk7CiYjNDM7CQkJCWZvbGlvX2dldChmYXVsdF9mb2xpbyk7CiAJCQkJcHRlX3VubWFwX3VubG9jayh2bWYtJmd0O3B0ZSwgdm1mLSZndDtwdGwpOwogCQkJCXBnbWFwID0gcGFnZV9wZ21hcCh2bWYtJmd0O3BhZ2UpOwogCQkJCXJldCA9IHBnbWFwLSZndDtvcHMtJmd0O21pZ3JhdGVfdG9fcmFtKHZtZik7Ci0JCQkJdW5sb2NrX3BhZ2Uodm1mLSZndDtwYWdlKTsKLQkJCQlwdXRfcGFnZSh2bWYtJmd0O3BhZ2UpOwomIzQzOwkJCQlmb2xpb191bmxvY2soZmF1bHRfZm9saW8pOwomIzQzOwkJCQlmb2xpb19wdXQoZmF1bHRfZm9saW8pOwogCQkJfSBlbHNlIHsKIAkJCQlwdGVfdW5tYXAodm1mLSZndDtwdGUpOwogCQkJCXNvZnRsZWFmX2VudHJ5X3dhaXRfb25fbG9ja2VkKGVudHJ5LCB2bWYtJmd0O3B0bCk7CmBgYAoKQWgsIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJlcGxhY2luZyB0aGUgdXNlIG9mIGB0cnlsb2NrX3BhZ2VgLCBgZ2V0X3BhZ2VgLCBgdW5sb2NrX3BhZ2VgLCBhbmQgYHB1dF9wYWdlYCB3aXRoIHRoZWlyIGBmb2xpb2AgY291bnRlcnBhcnRzLiBOb3csIGl0JiMzOTtzIHdvcnRoIHRha2luZyBhIGNsb3NlciBsb29rIGF0IHRoYXQgc3Vic3RpdHV0aW9uLCBgZm9saW9fdHJ5bG9ja2AgdnMuIGB0cnlsb2NrX3BhZ2VgLiBJbiBtYW55IGtlcm5lbHMsIGB0cnlsb2NrX3BhZ2VgIGlzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBgZm9saW9fdHJ5bG9ja2AuIEhvd2V2ZXIsIGl0IG1heSBiZSBhIGdlbnVpbmUgY2hhbmdlIGluIHRoaXMgY2FzZSwgYSBwb3RlbnRpYWwgYXJlYSBvZiBjb25jZXJuLiBDb25zaWRlcmluZyB0aGUgY2VudHJhbCByb2xlIG9mIHRoaXMgZnVuY3Rpb24gaW4gbWVtb3J5IG1hbmFnZW1lbnQsIGZ1enppbmcgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSBgZG9fc3dhcF9wYWdlYCwgYW5kIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgYERFVklDRV9QUklWQVRFYCBhbmQgYFNXQVBgLiBXZSBuZWVkIHRvIGJlIHN1cmUgYFNXQVBgIGlzIGVuYWJsZWQgYW5kIHJlLWV2YWx1YXRlIHRoaXMgc3Vic3RpdHV0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1dBUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz05PWNvbmZpZyBBUkNIX05PX1NXQVBcbi0tXG5tbS9LY29uZmlnLTExLVxubW0vS2NvbmZpZzoxMjptZW51Y29uZmlnIFNXQVBcbm1tL0tjb25maWctMTMtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHBhZ2luZyBvZiBhbm9ueW1vdXMgbWVtb3J5IChzd2FwKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU2MQoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIGBkb19zd2FwX3BhZ2VgIFJlZmFjdG9yaW5nKioKCk9rYXksIHNvIHRoZSBgU1dBUGAgY29uZmlndXJhdGlvbiBpcyB0aGUga2V5IGhlcmUuIEdvdCBpdC4gQmFzZWQgb24gdGhlIHBhdGNoIGRlc2NyaXB0aW9uLCBJJiMzOTttIGdvaW5nIHRvIGZsYWcgdGhpcyBhcyBkZWZpbml0aXZlbHkgbmVlZGluZyBmdXp6aW5nOyBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIGNyaXRpY2FsIHBvaW50IGZvciBteSBmdXp6aW5nIGNhbXBhaWduIHdpbGwgYmUgdGhlIGBkb19zd2FwX3BhZ2VgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIG15IGBGb2N1c1N5bWJvbHNgLgoKVGhpcyBwYXRjaCBpcyByZWZhY3RvcmluZyBob3cgZGV2aWNlIHByaXZhdGUgbWVtb3J5IGlzIGhhbmRsZWQgd2l0aGluIGBkb19zd2FwX3BhZ2VgLCBtb3ZpbmcgZnJvbSBwYWdlcyB0byBmb2xpb3MuIFRoaXMga2luZCBvZiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZSBpcyBleGFjdGx5IHRoZSBzb3J0IG9mIHRoaW5nIEkgbmVlZCB0byB0YXJnZXQgd2l0aCBmdXp6aW5nLiBJdCYjMzk7cyB0b3VjaGluZyBwYWdlL2ZvbGlvIGxvY2tpbmcgYW5kIHJlZmVyZW5jZSBjb3VudGluZywgd2hpY2ggYXJlIG5vdG9yaW91c2x5IHN1YnRsZSBhbmQgZXJyb3ItcHJvbmUuIE15IGBFbmFibGVDb25maWdzYCB3aWxsIGRlZmluaXRlbHkgaW5jbHVkZSBgREVWSUNFX1BSSVZBVEVgIGFuZCwgb2YgY291cnNlLCBgU1dBUGAgdG8gZW5hYmxlIHRoZSBjb2RlLiBNeSByZWFzb25pbmc/IFdlbGwsIHRvIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHN1YnRsZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuIEl0JiMzOTtzIGEgY3JpdGljYWwgYXJlYSwgYW5kIGZ1enppbmcgaXMgdGhlIGJlc3Qgd2F5IHRvIHVuY292ZXIgaGlkZGVuIHByb2JsZW1zIHJlbGF0ZWQgdG8gdGhpcyBjb3JlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19zd2FwX3BhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGRldmljZSBwcml2YXRlIG1lbW9yeSBoYW5kbGluZyBpbiBkb19zd2FwX3BhZ2UgdG8gdXNlIGZvbGlvcyBpbnN0ZWFkIG9mIHBhZ2VzLiBUaGlzIG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGluIHBhZ2UvZm9saW8gbG9ja2luZyBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtERVZJQ0VfUFJJVkFURSYjMzQ7LAogICAgJiMzNDtTV0FQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fc3dhcF9wYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBkZXZpY2UgcHJpdmF0ZSBtZW1vcnkgaGFuZGxpbmcgaW4gZG9fc3dhcF9wYWdlIHRvIHVzZSBmb2xpb3MgaW5zdGVhZCBvZiBwYWdlcy4gVGhpcyBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBpbiBwYWdlL2ZvbGlvIGxvY2tpbmcgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM3OjM5LjUyMzM5MzQ3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNDYxNzQ3Nzg5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiU1dBUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX3N3YXBfcGFnZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBkZXZpY2UgcHJpdmF0ZSBtZW1vcnkgaGFuZGxpbmcgaW4gZG9fc3dhcF9wYWdlIHRvIHVzZSBmb2xpb3MgaW5zdGVhZCBvZiBwYWdlcy4gVGhpcyBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBpbiBwYWdlL2ZvbGlvIGxvY2tpbmcgYW5kIHJlZmVyZW5jZSBjb3VudGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6Mzc6MzkuNTIzNDA0MDQ0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzg3MTkyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5NTA3NjgzMjg3YjcwMWFlNDY4OTM2ODk3OTNiZTM4ZDE1MWZhMDI3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjM3OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmNcXG5pbmRleCBkNWU4NzYyNGY2OTIwNS4uYmQyNzM3MmExMDUyMmYgMTAwNjQ0XFxuLS0tIGEvbW0vbWVtb3J5LmNcXG4rKysgYi9tbS9tZW1vcnkuY1xcbkBAIC00ODUyLDYgKzQ4NTIsOCBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4gXFx0XFx0XFx0dm1mLVxcdTAwM2VwYWdlID0gc29mdGxlYWZfdG9fcGFnZShlbnRyeSk7XFxuIFxcdFxcdFxcdHJldCA9IHJlbW92ZV9kZXZpY2VfZXhjbHVzaXZlX2VudHJ5KHZtZik7XFxuIFxcdFxcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBmb2xpbyAqZmF1bHRfZm9saW87XFxuK1xcbiBcXHRcXHRcXHRpZiAodm1mLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZBVUxUX0ZMQUdfVk1BX0xPQ0spIHtcXG4gXFx0XFx0XFx0XFx0LypcXG4gXFx0XFx0XFx0XFx0ICogbWlncmF0ZV90b19yYW0gaXMgbm90IHlldCByZWFkeSB0byBvcGVyYXRlXFxuQEAgLTQ4NjMsNiArNDg2NSw3IEBAIHZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHR2bWYtXFx1MDAzZXBhZ2UgPSBzb2Z0bGVhZl90b19wYWdlKGVudHJ5KTtcXG4rXFx0XFx0XFx0ZmF1bHRfZm9saW8gPSBwYWdlX2ZvbGlvKHZtZi1cXHUwMDNlcGFnZSk7XFxuIFxcdFxcdFxcdHZtZi1cXHUwMDNlcHRlID0gcHRlX29mZnNldF9tYXBfbG9jayh2bWEtXFx1MDAzZXZtX21tLCB2bWYtXFx1MDAzZXBtZCxcXG4gXFx0XFx0XFx0XFx0XFx0dm1mLVxcdTAwM2VhZGRyZXNzLCBcXHUwMDI2dm1mLVxcdTAwM2VwdGwpO1xcbiBcXHRcXHRcXHRpZiAodW5saWtlbHkoIXZtZi1cXHUwMDNlcHRlIHx8XFxuQEAgLTQ4NzQsMTUgKzQ4NzcsMTUgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuIFxcdFxcdFxcdCAqIEdldCBhIHBhZ2UgcmVmZXJlbmNlIHdoaWxlIHdlIGtub3cgdGhlIHBhZ2UgY2FuJ3QgYmVcXG4gXFx0XFx0XFx0ICogZnJlZWQuXFxuIFxcdFxcdFxcdCAqL1xcbi1cXHRcXHRcXHRpZiAodHJ5bG9ja19wYWdlKHZtZi1cXHUwMDNlcGFnZSkpIHtcXG4rXFx0XFx0XFx0aWYgKGZvbGlvX3RyeWxvY2soZmF1bHRfZm9saW8pKSB7XFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXA7XFxuIFxcbi1cXHRcXHRcXHRcXHRnZXRfcGFnZSh2bWYtXFx1MDAzZXBhZ2UpO1xcbitcXHRcXHRcXHRcXHRmb2xpb19nZXQoZmF1bHRfZm9saW8pO1xcbiBcXHRcXHRcXHRcXHRwdGVfdW5tYXBfdW5sb2NrKHZtZi1cXHUwMDNlcHRlLCB2bWYtXFx1MDAzZXB0bCk7XFxuIFxcdFxcdFxcdFxcdHBnbWFwID0gcGFnZV9wZ21hcCh2bWYtXFx1MDAzZXBhZ2UpO1xcbiBcXHRcXHRcXHRcXHRyZXQgPSBwZ21hcC1cXHUwMDNlb3BzLVxcdTAwM2VtaWdyYXRlX3RvX3JhbSh2bWYpO1xcbi1cXHRcXHRcXHRcXHR1bmxvY2tfcGFnZSh2bWYtXFx1MDAzZXBhZ2UpO1xcbi1cXHRcXHRcXHRcXHRwdXRfcGFnZSh2bWYtXFx1MDAzZXBhZ2UpO1xcbitcXHRcXHRcXHRcXHRmb2xpb191bmxvY2soZmF1bHRfZm9saW8pO1xcbitcXHRcXHRcXHRcXHRmb2xpb19wdXQoZmF1bHRfZm9saW8pO1xcbiBcXHRcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRcXHRwdGVfdW5tYXAodm1mLVxcdTAwM2VwdGUpO1xcbiBcXHRcXHRcXHRcXHRzb2Z0bGVhZl9lbnRyeV93YWl0X29uX2xvY2tlZChlbnRyeSwgdm1mLVxcdTAwM2VwdGwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozNzo0MC4zMDMxNDc1MzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MDM4Mzc3MDg0MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlNXQVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19zd2FwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgZGV2aWNlIHByaXZhdGUgbWVtb3J5IGhhbmRsaW5nIGluIGRvX3N3YXBfcGFnZSB0byB1c2UgZm9saW9zIGluc3RlYWQgb2YgcGFnZXMuIFRoaXMgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gcGFnZS9mb2xpbyBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTUwNzY4MzI4N2I3MDFhZTQ2ODkzNjg5NzkzYmUzOGQxNTFmYTAyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjM3OjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5LmMgYi9tbS9tZW1vcnkuY1xuaW5kZXggZDVlODc2MjRmNjkyMDUuLmJkMjczNzJhMTA1MjJmIDEwMDY0NFxuLS0tIGEvbW0vbWVtb3J5LmNcbisrKyBiL21tL21lbW9yeS5jXG5AQCAtNDg1Miw2ICs0ODUyLDggQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRcdFx0dm1mLVx1MDAzZXBhZ2UgPSBzb2Z0bGVhZl90b19wYWdlKGVudHJ5KTtcbiBcdFx0XHRyZXQgPSByZW1vdmVfZGV2aWNlX2V4Y2x1c2l2ZV9lbnRyeSh2bWYpO1xuIFx0XHR9IGVsc2UgaWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSkge1xuK1x0XHRcdHN0cnVjdCBmb2xpbyAqZmF1bHRfZm9saW87XG4rXG4gXHRcdFx0aWYgKHZtZi1cdTAwM2VmbGFncyBcdTAwMjYgRkFVTFRfRkxBR19WTUFfTE9DSykge1xuIFx0XHRcdFx0LypcbiBcdFx0XHRcdCAqIG1pZ3JhdGVfdG9fcmFtIGlzIG5vdCB5ZXQgcmVhZHkgdG8gb3BlcmF0ZVxuQEAgLTQ4NjMsNiArNDg2NSw3IEBAIHZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0XHRcdH1cbiBcbiBcdFx0XHR2bWYtXHUwMDNlcGFnZSA9IHNvZnRsZWFmX3RvX3BhZ2UoZW50cnkpO1xuK1x0XHRcdGZhdWx0X2ZvbGlvID0gcGFnZV9mb2xpbyh2bWYtXHUwMDNlcGFnZSk7XG4gXHRcdFx0dm1mLVx1MDAzZXB0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sodm1hLVx1MDAzZXZtX21tLCB2bWYtXHUwMDNlcG1kLFxuIFx0XHRcdFx0XHR2bWYtXHUwMDNlYWRkcmVzcywgXHUwMDI2dm1mLVx1MDAzZXB0bCk7XG4gXHRcdFx0aWYgKHVubGlrZWx5KCF2bWYtXHUwMDNlcHRlIHx8XG5AQCAtNDg3NCwxNSArNDg3NywxNSBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiBcdFx0XHQgKiBHZXQgYSBwYWdlIHJlZmVyZW5jZSB3aGlsZSB3ZSBrbm93IHRoZSBwYWdlIGNhbid0IGJlXG4gXHRcdFx0ICogZnJlZWQuXG4gXHRcdFx0ICovXG4tXHRcdFx0aWYgKHRyeWxvY2tfcGFnZSh2bWYtXHUwMDNlcGFnZSkpIHtcbitcdFx0XHRpZiAoZm9saW9fdHJ5bG9jayhmYXVsdF9mb2xpbykpIHtcbiBcdFx0XHRcdHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXA7XG4gXG4tXHRcdFx0XHRnZXRfcGFnZSh2bWYtXHUwMDNlcGFnZSk7XG4rXHRcdFx0XHRmb2xpb19nZXQoZmF1bHRfZm9saW8pO1xuIFx0XHRcdFx0cHRlX3VubWFwX3VubG9jayh2bWYtXHUwMDNlcHRlLCB2bWYtXHUwMDNlcHRsKTtcbiBcdFx0XHRcdHBnbWFwID0gcGFnZV9wZ21hcCh2bWYtXHUwMDNlcGFnZSk7XG4gXHRcdFx0XHRyZXQgPSBwZ21hcC1cdTAwM2VvcHMtXHUwMDNlbWlncmF0ZV90b19yYW0odm1mKTtcbi1cdFx0XHRcdHVubG9ja19wYWdlKHZtZi1cdTAwM2VwYWdlKTtcbi1cdFx0XHRcdHB1dF9wYWdlKHZtZi1cdTAwM2VwYWdlKTtcbitcdFx0XHRcdGZvbGlvX3VubG9jayhmYXVsdF9mb2xpbyk7XG4rXHRcdFx0XHRmb2xpb19wdXQoZmF1bHRfZm9saW8pO1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRwdGVfdW5tYXAodm1mLVx1MDAzZXB0ZSk7XG4gXHRcdFx0XHRzb2Z0bGVhZl9lbnRyeV93YWl0X29uX2xvY2tlZChlbnRyeSwgdm1mLVx1MDAzZXB0bCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozNzo0MC4zMDMxNDk4NzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjAzMTcwMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG1tL21lbW9yeS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgZG9fc3dhcF9wYWdlYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBzd2l0Y2ggZnJvbSBgcGFnZWAgdG8gYGZvbGlvYCBvcGVyYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgcmVwbGFjaW5nIGB0cnlsb2NrX3BhZ2VgIHdpdGggYGZvbGlvX3RyeWxvY2tgLCBgZ2V0X3BhZ2VgIHdpdGggYGZvbGlvX2dldGAsIGB1bmxvY2tfcGFnZWAgd2l0aCBgZm9saW9fdW5sb2NrYCwgYW5kIGBwdXRfcGFnZWAgd2l0aCBgZm9saW9fcHV0YC4gUHJldHR5IG11Y2ggYSByZWZhY3RvcmluZyBlZmZvcnQgdG8gbW9kZXJuaXplIHRoZSBjb2RlLCB1c2luZyBgZm9saW9zYCBpbnN0ZWFkIG9mIHRoZSBvbGRlciBgcGFnZWAgYWJzdHJhY3Rpb24uIEFoLCB0aGV5J3ZlIGFsc28gYWRkZWQgYGZhdWx0X2ZvbGlvID0gcGFnZV9mb2xpbyh2bWYtXHUwMDNlcGFnZSk7YCDigJMgbWFrZXMgc2Vuc2UgZm9yIHRoZSBmb2xpbyBjb250ZXh0LlxuXG5HaXZlbiB0aGF0IGl0J3MgdG91Y2hpbmcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBJdCdzIGEgY3JpdGljYWwgYXJlYSwgc28gZXZlbiBzZWVtaW5nbHkgbWlub3IgY2hhbmdlcyBjYW4gaGF2ZSBzaWduaWZpY2FudCBpbXBsaWNhdGlvbnMuIFRpbWUgdG8gZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRvX3N3YXBfcGFnZWAgaW4gYG1tL21lbW9yeS5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VidGxlIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgd2l0aCB0aGlzIGZvbGlvIGNvbnZlcnNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozNzo0NC41MDYzMjU0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQ3ODUwMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fc3dhcF9wYWdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21lbW9yeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21lbW9yeS5jPTk0MD1zdGF0aWMgdm9pZCByZXN0b3JlX2V4Y2x1c2l2ZV9wdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9tZW1vcnkuYy05NTQtXFxubW0vbWVtb3J5LmM6OTU1OlxcdC8qIFNlZSBkb19zd2FwX3BhZ2UoKTogcmVzdG9yZSBQQUdFX05PTkUgZm9yIFJXUCAqL1xcbm1tL21lbW9yeS5jLTk1Ni1cXHRpZiAocHRlX3N3cF91ZmZkKG9yaWdfcHRlKSBcXHUwMDI2XFx1MDAyNiB1c2VyZmF1bHRmZF9yd3Aodm1hKSlcXG4tLVxcbm1tL21lbW9yeS5jPTM1OTc9aW50IGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL21lbW9yeS5jLTM2MDYtICogb3IgY29uZmlndXJhdGlvbnMgKGUuZy4gaTM4NiB3aXRoIFBBRSkgd2hpY2ggbWlnaHQgZ2l2ZSBhIG1peCBvZiB1bm1hdGNoZWRcXG5tbS9tZW1vcnkuYzozNjA3OiAqIHBhcnRzLCBkb19zd2FwX3BhZ2UgbXVzdCBjaGVjayB1bmRlciBsb2NrIGJlZm9yZSB1bm1hcHBpbmcgdGhlIHB0ZSBhbmRcXG5tbS9tZW1vcnkuYy0zNjA4LSAqIHByb2NlZWRpbmcgKGJ1dCBkb193cF9wYWdlIGlzIG9ubHkgY2FsbGVkIGFmdGVyIGFscmVhZHkgbWFraW5nIHN1Y2ggYSBjaGVjaztcXG4tLVxcbm1tL21lbW9yeS5jPTQ3NDA9c3RhdGljIHVuc2lnbmVkIGxvbmcgdGhwX3N3YXBpbl9zdWl0YWJsZV9vcmRlcnMoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5tbS9tZW1vcnkuYy00Nzg0LVxcdC8qXFxubW0vbWVtb3J5LmM6NDc4NTpcXHQgKiBGb3IgZG9fc3dhcF9wYWdlLCBmaW5kIHRoZSBoaWdoZXN0IG9yZGVyIHdoZXJlIHRoZSBhbGlnbmVkIHJhbmdlIGlzXFxubW0vbWVtb3J5LmMtNDc4Ni1cXHQgKiBjb21wbGV0ZWx5IHN3YXAgZW50cmllcyB3aXRoIGNvbnRpZ3VvdXMgc3dhcCBvZmZzZXRzLlxcbi0tXFxubW0vbWVtb3J5LmM9NDgwOD1zdGF0aWMgdm9pZCBjaGVja19zd2FwX2V4Y2x1c2l2ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcXG4tLVxcbm1tL21lbW9yeS5jLTQ4MjUtICovXFxubW0vbWVtb3J5LmM6NDgyNjp2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG5tbS9tZW1vcnkuYy00ODI3LXtcXG4tLVxcbm1tL21lbW9yeS5jLTUxNzItXFx0c2V0X3B0ZXModm1hLVxcdTAwM2V2bV9tbSwgYWRkcmVzcywgcHRlcCwgcHRlLCBucl9wYWdlcyk7XFxubW0vbWVtb3J5LmM6NTE3MzpcXHRhcmNoX2RvX3N3YXBfcGFnZV9ucih2bWEtXFx1MDAzZXZtX21tLCB2bWEsIGFkZHJlc3MsXFxubW0vbWVtb3J5LmMtNTE3NC1cXHRcXHRcXHRwdGUsIHB0ZSwgbnJfcGFnZXMpO1xcbi0tXFxubW0vbWVtb3J5LmM9NjQ2Mj1zdGF0aWMgdm1fZmF1bHRfdCBoYW5kbGVfcHRlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxubW0vbWVtb3J5LmMtNjUwOC1cXHRpZiAoIXB0ZV9wcmVzZW50KHZtZi1cXHUwMDNlb3JpZ19wdGUpKVxcbm1tL21lbW9yeS5jOjY1MDk6XFx0XFx0cmV0dXJuIGRvX3N3YXBfcGFnZSh2bWYpO1xcbm1tL21lbW9yeS5jLTY1MTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM3OjQ0Ljc4MTEyMzU2N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzYwMTI4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgU3dhcCBQYWdlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGFyb3VuZCBpbiBgZG9fc3dhcF9wYWdlYC4gRnVuY3Rpb25hbGx5LCBpdCBzZWVtcyB0byBiZSBwcmltYXJpbHkgYSByZWZhY3RvcmluZyBleGVyY2lzZSwgbW92aW5nIHRoaW5ncyBvdmVyIHRvIHVzaW5nIGZvbGlvcy4gTm90IGEgaHVnZSBhcmNoaXRlY3R1cmFsIHNoaWZ0LCB3aGljaCBpcyBnb29kLiBCdXQgd2FpdCwgSSBzZWUgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KWAgcG9wcGluZyB1cCBpbiB0aGUgcGF0Y2ggY29kZS4gVGhhdCdzIGEgbGl0dGxlIGludGVyZXN0aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVsZXZhbnQgdG8gdGhlIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAgZnVuY3Rpb24uIFRoYXQgd2lsbCB0ZWxsIG1lIHdoYXQgc3lzdGVtcyBtaWdodCBiZSBhZmZlY3RlZCBvciB3aGF0IHRoaXMgcGF0Y2ggY291bGQgYmUgc3BlY2lmaWNhbGx5IHRhcmdldGluZy4gVGhpcyBkZXRhaWwgaXMgaW1wb3J0YW50LCBiZWNhdXNlIHRoaXMgY29udGV4dCBpcyB2aXRhbCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIGNoYW5nZXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGF0IHBsYXkgaGVyZSB0byBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6Mzc6NDguMTE3MTM5OTUyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMjAzMTA4MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy90YXNrX21tdS5jPTEwNDk9c3RhdGljIHZvaWQgc21hcHNfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDgyLVxcdFxcdH0gZWxzZSBpZiAoc29mdGxlYWZfaGFzX3BmbihlbnRyeSkpIHtcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTA4MzpcXHRcXHRcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDg0LVxcdFxcdFxcdFxcdHByZXNlbnQgPSB0cnVlO1xcbi0tXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg9MjU2PXN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19taWdyYXRpb24oc29mdGxlYWZfdCBlbnRyeSlcXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI2OC0vKipcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyNjk6ICogc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZSBwcml2YXRlXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjcwLSAqIHdyaXRhYmxlIGVudHJ5P1xcbi0tXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjc1LSAqL1xcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjI3NjpzdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoc29mdGxlYWZfdCBlbnRyeSlcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yNzcte1xcbi0tXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjgxLS8qKlxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjI4MjogKiBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZSgpIC0gSXMgdGhpcyBsZWFmIGVudHJ5IGEgZGV2aWNlIHByaXZhdGUgZW50cnk/XFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjgzLSAqIEBlbnRyeTogTGVhZiBlbnRyeS5cXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI4Ni0gKi9cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyODc6c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX3QgZW50cnkpXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjg4LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oPTM1NT1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaGFzX3Bmbihzb2Z0bGVhZl90IGVudHJ5KVxcbi0tXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMzYxLVxcdFxcdHJldHVybiB0cnVlO1xcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjM2MjpcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTM2My1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oPTYwND1zdGF0aWMgaW5saW5lIGJvb2wgcG1kX2lzX2RldmljZV9wcml2YXRlX2VudHJ5KHBtZF90IHBtZClcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MDUte1xcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjYwNjpcXHRyZXR1cm4gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoc29mdGxlYWZfZnJvbV9wbWQocG1kKSk7XFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjA3LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oPTYzNT1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaXNfdmFsaWRfcG1kX2VudHJ5KHNvZnRsZWFmX3QgZW50cnkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MzctXFx0LyogT25seSBkZXZpY2UgcHJpdmF0ZSwgbWlncmF0aW9uIGVudHJpZXMgdmFsaWQgZm9yIFBNRC4gKi9cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDo2Mzg6XFx0cmV0dXJuIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSB8fFxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTYzOS1cXHRcXHRzb2Z0bGVhZl9pc19taWdyYXRpb24oZW50cnkpO1xcbi0tXFxubW0vaG1tLmM9MjQxPXN0YXRpYyBpbnQgaG1tX3ZtYV9oYW5kbGVfcHRlKHN0cnVjdCBtbV93YWxrICp3YWxrLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9obW0uYy0yNzItXFx0XFx0ICovXFxubW0vaG1tLmM6MjczOlxcdFxcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9obW0uYy0yNzQtXFx0XFx0ICAgIHBhZ2VfcGdtYXAoc29mdGxlYWZfdG9fcGFnZShlbnRyeSkpLVxcdTAwM2Vvd25lciA9PVxcbi0tXFxubW0vaG1tLmMtMjc2LVxcdFxcdFxcdGNwdV9mbGFncyA9IEhNTV9QRk5fVkFMSUQ7XFxubW0vaG1tLmM6Mjc3OlxcdFxcdFxcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpXFxubW0vaG1tLmMtMjc4LVxcdFxcdFxcdFxcdGNwdV9mbGFncyB8PSBITU1fUEZOX1dSSVRFO1xcbi0tXFxubW0vaG1tLmMtMjkwLVxcbm1tL2htbS5jOjI5MTpcXHRcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKVxcbm1tL2htbS5jLTI5Mi1cXHRcXHRcXHRnb3RvIGZhdWx0O1xcbi0tXFxubW0vaG1tLmM9MzQxPXN0YXRpYyBpbnQgaG1tX3ZtYV9oYW5kbGVfYWJzZW50X3BtZChzdHJ1Y3QgbW1fd2FsayAqd2FsaywgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL2htbS5jLTM1MS1cXG5tbS9obW0uYzozNTI6XFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSBcXHUwMDI2XFx1MDAyNlxcbm1tL2htbS5jLTM1My1cXHQgICAgc29mdGxlYWZfdG9fZm9saW8oZW50cnkpLVxcdTAwM2VwZ21hcC1cXHUwMDNlb3duZXIgPT1cXG4tLVxcbm1tL2htbS5jLTM1OS1cXG5tbS9obW0uYzozNjA6XFx0XFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKGVudHJ5KSlcXG5tbS9obW0uYy0zNjEtXFx0XFx0XFx0Y3B1X2ZsYWdzIHw9IEhNTV9QRk5fV1JJVEU7XFxuLS1cXG5tbS9obW0uYy0zNzgtXFx0aWYgKHJlcXVpcmVkX2ZhdWx0KSB7XFxubW0vaG1tLmM6Mzc5OlxcdFxcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpXFxubW0vaG1tLmMtMzgwLVxcdFxcdFxcdHJldHVybiBobW1fcmVjb3JkX2ZhdWx0KGFkZHIsIGVuZCwgcmVxdWlyZWRfZmF1bHQsIHdhbGspO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0xODA5PXN0YXRpYyB2b2lkIGNvcHlfaHVnZV9ub25fcHJlc2VudF9wbWQoXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTE4MjgtXFx0XFx0c2V0X3BtZF9hdChzcmNfbW0sIGFkZHIsIHNyY19wbWQsIHBtZCk7XFxubW0vaHVnZV9tZW1vcnkuYzoxODI5OlxcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XFxubW0vaHVnZV9tZW1vcnkuYy0xODMwLVxcdFxcdC8qXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTE4MzMtXFx0XFx0ICovXFxubW0vaHVnZV9tZW1vcnkuYzoxODM0OlxcdFxcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpIHtcXG5tbS9odWdlX21lbW9yeS5jLTE4MzUtXFx0XFx0XFx0ZW50cnkgPSBtYWtlX3JlYWRhYmxlX2RldmljZV9wcml2YXRlX2VudHJ5KHN3cF9vZmZzZXQoZW50cnkpKTtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9MjYwMT1zdGF0aWMgdm9pZCBjaGFuZ2Vfbm9uX3ByZXNlbnRfaHVnZV9wbWQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTI2MjItXFx0XFx0XFx0bmV3cG1kID0gcG1kX3N3cF9ta3NvZnRfZGlydHkobmV3cG1kKTtcXG5tbS9odWdlX21lbW9yeS5jOjI2MjM6XFx0fSBlbHNlIGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpIHtcXG5tbS9odWdlX21lbW9yeS5jLTI2MjQtXFx0XFx0ZW50cnkgPSBtYWtlX3JlYWRhYmxlX2RldmljZV9wcml2YXRlX2VudHJ5KHN3cF9vZmZzZXQoZW50cnkpKTtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9MzA5Nz1zdGF0aWMgdm9pZCBfX3NwbGl0X2h1Z2VfcG1kX2xvY2tlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcG1kX3QgKnBtZCxcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzE5MC1cXG5tbS9odWdlX21lbW9yeS5jOjMxOTE6XFx0XFx0d3JpdGUgPSBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSk7XFxubW0vaHVnZV9tZW1vcnkuYy0zMTkyLVxcdFxcdGFub25fZXhjbHVzaXZlID0gUGFnZUFub25FeGNsdXNpdmUocGFnZSk7XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQ5NjE9aW50IHNldF9wbWRfbWlncmF0aW9uX2VudHJ5KHN0cnVjdCBwYWdlX3ZtYV9tYXBwZWRfd2FsayAqcHZtdyxcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDk5MC1cXG5tbS9odWdlX21lbW9yeS5jOjQ5OTE6XFx0XFx0d3JpdGFibGUgPSBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShvbGRfZW50cnkpO1xcbm1tL2h1Z2VfbWVtb3J5LmMtNDk5Mi1cXHRcXHRzb2Z0ZGlydHkgPSBwbWRfc3dwX3NvZnRfZGlydHkocG1kdmFsKTtcXG4tLVxcbm1tL21lbW9yeS5jPTEwMDE9Y29weV9ub25wcmVzZW50X3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3RfbW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKnNyY19tbSxcXG4tLVxcbm1tL21lbW9yeS5jLTEwNDMtXFx0XFx0fVxcbm1tL21lbW9yeS5jOjEwNDQ6XFx0fSBlbHNlIGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpIHtcXG5tbS9tZW1vcnkuYy0xMDQ1LVxcdFxcdHBhZ2UgPSBzb2Z0bGVhZl90b19wYWdlKGVudHJ5KTtcXG4tLVxcbm1tL21lbW9yeS5jLTEwNjgtXFx0XFx0ICovXFxubW0vbWVtb3J5LmM6MTA2OTpcXHRcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpIFxcdTAwMjZcXHUwMDI2XFxubW0vbWVtb3J5LmMtMTA3MC1cXHRcXHQgICAgaXNfY293X21hcHBpbmcodm1fZmxhZ3MpKSB7XFxuLS1cXG5tbS9tZW1vcnkuYz0xODExPXN0YXRpYyBpbmxpbmUgaW50IHphcF9ub25wcmVzZW50X3B0ZXMoc3RydWN0IG1tdV9nYXRoZXIgKnRsYixcXG4tLVxcbm1tL21lbW9yeS5jLTE4MjAtXFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZShwdGVudCk7XFxubW0vbWVtb3J5LmM6MTgyMTpcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpIHx8XFxubW0vbWVtb3J5LmMtMTgyMi1cXHQgICAgc29mdGxlYWZfaXNfZGV2aWNlX2V4Y2x1c2l2ZShlbnRyeSkpIHtcXG4tLVxcbm1tL21lbW9yeS5jPTQ4MjY9dm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5tbS9tZW1vcnkuYy00ODUzLVxcdFxcdFxcdHJldCA9IHJlbW92ZV9kZXZpY2VfZXhjbHVzaXZlX2VudHJ5KHZtZik7XFxubW0vbWVtb3J5LmM6NDg1NDpcXHRcXHR9IGVsc2UgaWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSkge1xcbm1tL21lbW9yeS5jLTQ4NTUtXFx0XFx0XFx0c3RydWN0IGZvbGlvICpmYXVsdF9mb2xpbztcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTM3PXN0YXRpYyBpbnQgbWlncmF0ZV92bWFfY29sbGVjdF9odWdlX3BtZChwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTY5LVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTcwOlxcdFxcdGlmICghc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpIHx8XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNzEtXFx0XFx0ICAgICEobWlncmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNSUdSQVRFX1ZNQV9TRUxFQ1RfREVWSUNFX1BSSVZBVEUpKSB7XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTE4MS1cXG5tbS9taWdyYXRlX2RldmljZS5jOjE4MjpcXHRcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTgzLVxcdFxcdFxcdHdyaXRlID0gTUlHUkFURV9QRk5fV1JJVEU7XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTI0NT1zdGF0aWMgaW50IG1pZ3JhdGVfdm1hX2NvbGxlY3RfcG1kKHBtZF90ICpwbWRwLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0yOTktXFx0XFx0XFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZShwdGUpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MzAwOlxcdFxcdFxcdGlmICghc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMzAxLVxcdFxcdFxcdFxcdGdvdG8gbmV4dDtcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMzMzLVxcdFxcdFxcdFxcdFxcdE1JR1JBVEVfUEZOX01JR1JBVEU7XFxubW0vbWlncmF0ZV9kZXZpY2UuYzozMzQ6XFx0XFx0XFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKGVudHJ5KSlcXG5tbS9taWdyYXRlX2RldmljZS5jLTMzNS1cXHRcXHRcXHRcXHRtcGZuIHw9IE1JR1JBVEVfUEZOX1dSSVRFO1xcbi0tXFxubW0vbXByb3RlY3QuYz0yMTQ9c3RhdGljIGxvbmcgY2hhbmdlX3NvZnRsZWFmX3B0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL21wcm90ZWN0LmMtMjM2LVxcdFxcdFxcdG5ld3B0ZSA9IHB0ZV9zd3BfbWtzb2Z0X2RpcnR5KG5ld3B0ZSk7XFxubW0vbXByb3RlY3QuYzoyMzc6XFx0fSBlbHNlIGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpIHtcXG5tbS9tcHJvdGVjdC5jLTIzOC1cXHRcXHQvKlxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE4Mj1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfY2FjaGVkX3dyaXRhYmxlKHNvZnRsZWFmX3QgZW50cnkpXFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE4My17XFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE4NDpcXHRyZXR1cm4gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpIHx8XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE4NS1cXHRcXHRzb2Z0bGVhZl9pc19taWdyYXRpb25fd3JpdGUoZW50cnkpO1xcbi0tXFxubW0vcGFnZV92bWFfbWFwcGVkLmM9MTY9c3RhdGljIGJvb2wgbWFwX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHBtZF90ICpwbWR2YWxwLFxcbi0tXFxubW0vcGFnZV92bWFfbWFwcGVkLmMtNzAtXFx0XFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZShwdGVudCk7XFxubW0vcGFnZV92bWFfbWFwcGVkLmM6NzE6XFx0XFx0aWYgKCFzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYy03Mi1cXHRcXHQgICAgIXNvZnRsZWFmX2lzX2RldmljZV9leGNsdXNpdmUoZW50cnkpKVxcbi0tXFxubW0vcGFnZV92bWFfbWFwcGVkLmM9MTA3PXN0YXRpYyBib29sIGNoZWNrX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGxvbmcgcHRlX25yKVxcbi0tXFxubW0vcGFnZV92bWFfbWFwcGVkLmMtMTMwLVxcdFxcdC8qIEhhbmRsZSB1bi1hZGRyZXNzYWJsZSBaT05FX0RFVklDRSBtZW1vcnkgKi9cXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYzoxMzE6XFx0XFx0aWYgKCFzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYy0xMzItXFx0XFx0ICAgICFzb2Z0bGVhZl9pc19kZXZpY2VfZXhjbHVzaXZlKGVudHJ5KSlcXG4tLVxcbm1tL3JtYXAuYz0yNDYxPXN0YXRpYyBib29sIHRyeV90b19taWdyYXRlX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL3JtYXAuYy0yNjQ5LVxcbm1tL3JtYXAuYzoyNjUwOlxcdFxcdFxcdHdyaXRhYmxlID0gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpO1xcbm1tL3JtYXAuYy0yNjUxLVxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6Mzc6NTQuMTM3NDYxMzA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5NTQwNjQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSB3ZWxsLXZlcnNlZCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipBbmFseXppbmcgdGhlIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAgRmxhZyoqXG5cblJpZ2h0LCBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4gYXNzb2NpYXRlcyB0aGF0IHdpdGggdGhlIGNvbmNlcHQgb2YgbWVtb3J5IHRoYXQncyBwcml2YXRlIHRvIGEgc3BlY2lmaWMgZGV2aWNlLiBUaGF0IHNvdW5kcyBsaWtlIGl0J3MgY29ubmVjdGVkIHRvIGBERVZJQ0VfUFJJVkFURWAgbWVtb3J5IHNvbWVob3cuIFRoZSBjb25uZWN0aW9uIHNlZW1zIGxvZ2ljYWwsIGxpa2UgdGhlcmUncyBhIHNldHRpbmcgdGhhdCBnb3Zlcm5zIHRoaXMgcHJpdmF0ZSBtZW1vcnkgY2hhcmFjdGVyaXN0aWMuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aGlzLiBNeSBmaXJzdCByZWZsZXggd291bGQgYmUgdG8gY2hlY2sgdGhlIGBDT05GSUdfREVWSUNFX1BSSVZBVEVgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgdmFyaWFibGUgYWN0dWFsbHkgZG9lcyBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdtIGdvaW5nIHRvIGxvb2sgdXAgdGhlIGRlZmluaXRpb24gb2YgYENPTkZJR19ERVZJQ0VfUFJJVkFURWAgYW5kIGl0cyByZWxhdGlvbnNoaXBzLCBsaWtlbHkgdGhyb3VnaCBhIHF1aWNrIGdyZXAsIG9yIGlmIEknbSB1c2luZyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvb2wsIEknZCBuYXZpZ2F0ZSB0byBpdCBhbmQgZXhhbWluZSB0aGUgaGVscCB0ZXh0IGFuZCBkZXBlbmRlbmNpZXMuIEtub3dpbmcgaXRzIG1lYW5pbmcgaXMgY3JpdGljYWwgdG8gZXZhbHVhdGluZyB0aGUgc2lnbmlmaWNhbmNlIG9mIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NDksIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozNzo1Ny45MzI4NzE5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTc0NjE0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJERVZJQ0VfUFJJVkFURVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTIyMj1jb25maWcgWk9ORV9ERVZJQ0VcXG4tLVxcbm1tL0tjb25maWctMTIzMS1cXHQgIFxcXCJkZXZpY2UtcGh5c2ljYWxcXFwiIGFkZHJlc3NlcyB3aGljaCBpcyBuZWVkZWQgZm9yIERBWCwgUENJX1AyUERNQSwgYW5kXFxubW0vS2NvbmZpZzoxMjMyOlxcdCAgREVWSUNFX1BSSVZBVEUgZmVhdHVyZXMgYW1vbmcgb3RoZXJzLlxcbm1tL0tjb25maWctMTIzMy1cXG4tLVxcbm1tL0tjb25maWc9MTI0OD1jb25maWcgR0VUX0ZSRUVfUkVHSU9OXFxuLS1cXG5tbS9LY29uZmlnLTEyNTAtXFxubW0vS2NvbmZpZzoxMjUxOmNvbmZpZyBERVZJQ0VfUFJJVkFURVxcbm1tL0tjb25maWctMTI1Mi1cXHRib29sIFxcXCJVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM3OjU4LjQyODYyNTcxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NTc3Mzk2NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqTmF2aWdhdGluZyBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBhbmQgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlYCoqXG5cbk9rYXksIHNvIGBDT05GSUdfREVWSUNFX1BSSVZBVEVgIOKAkyB0aGF0J3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQncyBkcml2aW5nIHRoaXMgd2hvbGUgdGhpbmcuIE5vdywgSSBzZWVtIHRvIHJlY2FsbCBlbmNvdW50ZXJpbmcgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlYCBzb21ld2hlcmUgaW4gcmVsYXRpb24gdG8gaXQuIFNwZWNpZmljYWxseSwgSSdtIHByZXR0eSBzdXJlIGl0IGNvbWVzIHVwIGluIGBkb19zd2FwX3BhZ2VgIHdoZW4gYENPTkZJR19ERVZJQ0VfUFJJVkFURWAgaXMgZW5hYmxlZC4gT3IsIG1heWJlIGl0J3MgYWx3YXlzIGRlZmluZWQsIGFuZCBqdXN0IHJldHVybnMgYGZhbHNlYCBpZiB0aGUgY29uZmlnIGlzbid0IHNldC4gSSBuZWVkIHRvIGJlIHN1cmUuIFRpbWUgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24uIExldCdzIGhlYWQgb3ZlciB0byBgaW5jbHVkZS9saW51eC9sZWFmb3BzLmhgLiBUaGF0IHNob3VsZCBoYXZlIHRoZSBkZWZpbml0aXZlIGFuc3dlciBvbiB3aGF0IGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAgYWN0dWFsbHkgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzMwMSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM4OjI3LjAwNjAyNjYzM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1MTMyODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvbGVhZm9wcy5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbGVhZm9wcy5oPTI1Nj1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaXNfbWlncmF0aW9uKHNvZnRsZWFmX3QgZW50cnkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yNjgtLyoqXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6MjY5OiAqIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKCkgLSBJcyB0aGlzIGxlYWYgZW50cnkgYSBkZXZpY2UgcHJpdmF0ZVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI3MC0gKiB3cml0YWJsZSBlbnRyeT9cXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI3NS0gKi9cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyNzY6c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKHNvZnRsZWFmX3QgZW50cnkpXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjc3LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI4MS0vKipcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyODI6ICogc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZSBwcml2YXRlIGVudHJ5P1xcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI4My0gKiBAZW50cnk6IExlYWYgZW50cnkuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yODYtICovXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6Mjg3OnN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShzb2Z0bGVhZl90IGVudHJ5KVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI4OC17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD0zNTU9c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2hhc19wZm4oc29mdGxlYWZfdCBlbnRyeSlcXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTM2MS1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDozNjI6XFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSlcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0zNjMtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD02MDQ9c3RhdGljIGlubGluZSBib29sIHBtZF9pc19kZXZpY2VfcHJpdmF0ZV9lbnRyeShwbWRfdCBwbWQpXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjA1LXtcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDo2MDY6XFx0cmV0dXJuIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX2Zyb21fcG1kKHBtZCkpO1xcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTYwNy19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD02MzU9c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX3ZhbGlkX3BtZF9lbnRyeShzb2Z0bGVhZl90IGVudHJ5KVxcbi0tXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjM3LVxcdC8qIE9ubHkgZGV2aWNlIHByaXZhdGUsIG1pZ3JhdGlvbiBlbnRyaWVzIHZhbGlkIGZvciBQTUQuICovXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6NjM4OlxcdHJldHVybiBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgfHxcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MzktXFx0XFx0c29mdGxlYWZfaXNfbWlncmF0aW9uKGVudHJ5KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6Mzg6MjcuNjIxMTk3MDQyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODgzODUwMzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBsZWFmb3BzLmhgKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGluY2x1ZGUvbGludXgvbGVhZm9wcy5oYCBoZWFkZXIgZmlsZS4gTXkgaHVuY2ggaXMgdGhhdCB0aGUgcmVsZXZhbnQgY29kZSwgb3IgYXQgbGVhc3QgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpc3N1ZSwgaXMgYXJvdW5kIGxpbmUgMjg3LiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIGJlZ2luIG15IGludmVzdGlnYXRpb24gaW50byB0aGlzIHNwZWNpZmljIGFzcGVjdC4gSSBleHBlY3QgdGhhdCBpcyBnb2luZyB0byBiZSB0aGUgc291cmNlIG9mIG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMzgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozODo1OC41MDUwNTIyNzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvbGVhZm9wcy5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI3MDpcXHQgKiB3cml0YWJsZSBlbnRyeT9cXG4gMjcxOlxcdCAqIEBlbnRyeTogTGVhZiBlbnRyeS5cXG4gMjcyOlxcdCAqXFxuIDI3MzpcXHQgKiBSZXR1cm5zOiB0cnVlIGlmIHRoZSBsZWFmIGVudHJ5IGlzIGEgZGV2aWNlIHByaXZhdGUgd3JpdGFibGUgZW50cnksIG90aGVyd2lzZVxcbiAyNzQ6XFx0ICogZmFsc2UuXFxuIDI3NTpcXHQgKi9cXG4gMjc2OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShzb2Z0bGVhZl90IGVudHJ5KVxcbiAyNzc6XFx0e1xcbiAyNzg6XFx0XFx0cmV0dXJuIHNvZnRsZWFmX3R5cGUoZW50cnkpID09IFNPRlRMRUFGX0RFVklDRV9QUklWQVRFX1dSSVRFO1xcbiAyNzk6XFx0fVxcbiAyODA6XFx0XFxuIDI4MTpcXHQvKipcXG4gMjgyOlxcdCAqIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKCkgLSBJcyB0aGlzIGxlYWYgZW50cnkgYSBkZXZpY2UgcHJpdmF0ZSBlbnRyeT9cXG4gMjgzOlxcdCAqIEBlbnRyeTogTGVhZiBlbnRyeS5cXG4gMjg0OlxcdCAqXFxuIDI4NTpcXHQgKiBSZXR1cm5zOiB0cnVlIGlmIHRoZSBsZWFmIGVudHJ5IGlzIGEgZGV2aWNlIHByaXZhdGUgZW50cnksIG90aGVyd2lzZSBmYWxzZS5cXG4gMjg2OlxcdCAqL1xcbiAyODc6XFx0c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX3QgZW50cnkpXFxuIDI4ODpcXHR7XFxuIDI4OTpcXHRcXHRzd2l0Y2ggKHNvZnRsZWFmX3R5cGUoZW50cnkpKSB7XFxuIDI5MDpcXHRcXHRjYXNlIFNPRlRMRUFGX0RFVklDRV9QUklWQVRFX1dSSVRFOlxcbiAyOTE6XFx0XFx0Y2FzZSBTT0ZUTEVBRl9ERVZJQ0VfUFJJVkFURV9SRUFEOlxcbiAyOTI6XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuIDI5MzpcXHRcXHRkZWZhdWx0OlxcbiAyOTQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAyOTU6XFx0XFx0fVxcbiAyOTY6XFx0fVxcbiAyOTc6XFx0XFxuIDI5ODpcXHQvKipcXG4gMjk5OlxcdCAqIHNvZnRsZWFmX2lzX2RldmljZV9leGNsdXNpdmUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZS1leGNsdXNpdmUgZW50cnk/XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM4OjU4LjUwNTE4MjMxNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzk4OTUxMTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBDb250ZXh0KipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGluZ3Mg4oCTIGBkb19zd2FwX3BhZ2VgLiBUaGF0J3Mgc2VyaW91cyBtZW1vcnkgbWFuYWdlbWVudCB0ZXJyaXRvcnkuIFRoZSBzcGVjaWZpYyBjb2RlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhhdCBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpYCBicmFuY2guIEFscmlnaHQsIHRoYXQgcGlucyBkb3duIGBDT05GSUdfREVWSUNFX1BSSVZBVEVgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtIGRyaXZpbmcgdGhpcy4gR29vZCwgdGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gTm93LCB3aGF0IGVsc2UgbWlnaHQgYmUgYXQgcGxheSBoZXJlPyBXZSAqa25vdyogYENPTkZJR19TV0FQYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYGRvX3N3YXBfcGFnZWAgdG8gZXZlbiBiZSBjYWxsZWQsIGJ1dCB3aGF0IG90aGVyIGNvbmZpZ3MgY291bGQgaW5mbHVlbmNlIHRoaXMgcGFydGljdWxhciBwYXRoPyBUaW1lIHRvIGRpdmUgaW50byBgbW0vbWVtb3J5LmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2ssIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBkb19zd2FwX3BhZ2VgIGZ1bmN0aW9uIHRvIHNlZSBpZiBhbnl0aGluZyBlbHNlIGlzIGluIHBsYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NDAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM5OjAzLjMwNDEzODE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIwNDc5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fc3dhcF9wYWdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21lbW9yeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21lbW9yeS5jPTk0MD1zdGF0aWMgdm9pZCByZXN0b3JlX2V4Y2x1c2l2ZV9wdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9tZW1vcnkuYy05NTQtXFxubW0vbWVtb3J5LmM6OTU1OlxcdC8qIFNlZSBkb19zd2FwX3BhZ2UoKTogcmVzdG9yZSBQQUdFX05PTkUgZm9yIFJXUCAqL1xcbm1tL21lbW9yeS5jLTk1Ni1cXHRpZiAocHRlX3N3cF91ZmZkKG9yaWdfcHRlKSBcXHUwMDI2XFx1MDAyNiB1c2VyZmF1bHRmZF9yd3Aodm1hKSlcXG4tLVxcbm1tL21lbW9yeS5jPTM1OTc9aW50IGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL21lbW9yeS5jLTM2MDYtICogb3IgY29uZmlndXJhdGlvbnMgKGUuZy4gaTM4NiB3aXRoIFBBRSkgd2hpY2ggbWlnaHQgZ2l2ZSBhIG1peCBvZiB1bm1hdGNoZWRcXG5tbS9tZW1vcnkuYzozNjA3OiAqIHBhcnRzLCBkb19zd2FwX3BhZ2UgbXVzdCBjaGVjayB1bmRlciBsb2NrIGJlZm9yZSB1bm1hcHBpbmcgdGhlIHB0ZSBhbmRcXG5tbS9tZW1vcnkuYy0zNjA4LSAqIHByb2NlZWRpbmcgKGJ1dCBkb193cF9wYWdlIGlzIG9ubHkgY2FsbGVkIGFmdGVyIGFscmVhZHkgbWFraW5nIHN1Y2ggYSBjaGVjaztcXG4tLVxcbm1tL21lbW9yeS5jPTQ3NDA9c3RhdGljIHVuc2lnbmVkIGxvbmcgdGhwX3N3YXBpbl9zdWl0YWJsZV9vcmRlcnMoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5tbS9tZW1vcnkuYy00Nzg0LVxcdC8qXFxubW0vbWVtb3J5LmM6NDc4NTpcXHQgKiBGb3IgZG9fc3dhcF9wYWdlLCBmaW5kIHRoZSBoaWdoZXN0IG9yZGVyIHdoZXJlIHRoZSBhbGlnbmVkIHJhbmdlIGlzXFxubW0vbWVtb3J5LmMtNDc4Ni1cXHQgKiBjb21wbGV0ZWx5IHN3YXAgZW50cmllcyB3aXRoIGNvbnRpZ3VvdXMgc3dhcCBvZmZzZXRzLlxcbi0tXFxubW0vbWVtb3J5LmM9NDgwOD1zdGF0aWMgdm9pZCBjaGVja19zd2FwX2V4Y2x1c2l2ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcXG4tLVxcbm1tL21lbW9yeS5jLTQ4MjUtICovXFxubW0vbWVtb3J5LmM6NDgyNjp2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG5tbS9tZW1vcnkuYy00ODI3LXtcXG4tLVxcbm1tL21lbW9yeS5jLTUxNzItXFx0c2V0X3B0ZXModm1hLVxcdTAwM2V2bV9tbSwgYWRkcmVzcywgcHRlcCwgcHRlLCBucl9wYWdlcyk7XFxubW0vbWVtb3J5LmM6NTE3MzpcXHRhcmNoX2RvX3N3YXBfcGFnZV9ucih2bWEtXFx1MDAzZXZtX21tLCB2bWEsIGFkZHJlc3MsXFxubW0vbWVtb3J5LmMtNTE3NC1cXHRcXHRcXHRwdGUsIHB0ZSwgbnJfcGFnZXMpO1xcbi0tXFxubW0vbWVtb3J5LmM9NjQ2Mj1zdGF0aWMgdm1fZmF1bHRfdCBoYW5kbGVfcHRlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxubW0vbWVtb3J5LmMtNjUwOC1cXHRpZiAoIXB0ZV9wcmVzZW50KHZtZi1cXHUwMDNlb3JpZ19wdGUpKVxcbm1tL21lbW9yeS5jOjY1MDk6XFx0XFx0cmV0dXJuIGRvX3N3YXBfcGFnZSh2bWYpO1xcbm1tL21lbW9yeS5jLTY1MTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM5OjAzLjQ3NjIwMTU1NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDI2NTIzODQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbXBpbGF0aW9uIG9mIGBkb19zd2FwX3BhZ2VgKipcblxuT2theSwgc28gYGRvX3N3YXBfcGFnZWAgaXMgYWx3YXlzIGNvbXBpbGVkLCAqcHJvdmlkZWQqIGBDT05GSUdfU1dBUGAgaXMgZW5hYmxlZC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgaXQgcmFpc2VzIGEgcXVlc3Rpb24uIE5vdywgd2hlcmUgaXMgYGRvX3N3YXBfcGFnZWAgZGVmaW5lZD8gQWgsIHllcywgaXQncyBpbiBgbW0vbWVtb3J5LmNgLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBpcyB0aGF0IGZpbGUsIGBtbS9tZW1vcnkuY2AsIGFsd2F5cyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2U/IExvZ2ljYWxseSwgdGhlIGFuc3dlciBpcyB5ZXMsIGdpdmVuIGl0cyBjb3JlIHJvbGUgaW4gbWVtb3J5IG1hbmFnZW1lbnQuIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSAqYWJzb2x1dGVseSogY2VydGFpbi4gVGhlcmVmb3JlLCB0byByZW1vdmUgYW55IGRvdWJ0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGRvX3N3YXBfcGFnZWAgaXRzZWxmICppc24ndCogaGlkZGVuIGJlaGluZCBhIHByZXByb2Nlc3NvciBkaXJlY3RpdmUgdGhhdCBvbmx5IGluY2x1ZGVzIGl0IHVuZGVyIGBDT05GSUdfU1dBUGAuIFRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZSFcblxuXG4iLCJJbnB1dFRva2VucyI6OTc4MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM5OjQ3Ljc0MTQ0NDc2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vbWVtb3J5LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDgwMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDgwMDpcXHQjZWxzZSAvKiAhQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXFxuNDgwMTpcXHRzdGF0aWMgdW5zaWduZWQgbG9uZyB0aHBfc3dhcGluX3N1aXRhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG40ODAyOlxcdHtcXG40ODAzOlxcdFxcdHJldHVybiAwO1xcbjQ4MDQ6XFx0fVxcbjQ4MDU6XFx0I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbjQ4MDY6XFx0XFxuNDgwNzpcXHQvKiBTYW5pdHkgY2hlY2sgdGhhdCBhIGZvbGlvIGlzIGZ1bGx5IGV4Y2x1c2l2ZSAqL1xcbjQ4MDg6XFx0c3RhdGljIHZvaWQgY2hlY2tfc3dhcF9leGNsdXNpdmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnksXFxuNDgwOTpcXHRcXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG5yX3BhZ2VzKVxcbjQ4MTA6XFx0e1xcbjQ4MTE6XFx0XFx0LyogQ2FsbGVkIHVuZGVyIFBUIGxvY2tlZCBhbmQgZm9saW8gbG9ja2VkLCB0aGUgc3dhcCBjb3VudCBpcyBzdGFibGUgKi9cXG40ODEyOlxcdFxcdGRvIHtcXG40ODEzOlxcdFxcdFxcdFZNX1dBUk5fT05fT05DRV9GT0xJTyhfX3N3YXBfY291bnQoZW50cnkpICE9IDEsIGZvbGlvKTtcXG40ODE0OlxcdFxcdFxcdGVudHJ5LnZhbCsrO1xcbjQ4MTU6XFx0XFx0fSB3aGlsZSAoLS1ucl9wYWdlcyk7XFxuNDgxNjpcXHR9XFxuNDgxNzpcXHRcXG40ODE4OlxcdC8qXFxuNDgxOTpcXHQgKiBXZSBlbnRlciB3aXRoIGVpdGhlciB0aGUgVk1BIGxvY2sgb3IgdGhlIG1tYXBfbG9jayBoZWxkIChzZWVcXG40ODIwOlxcdCAqIEZBVUxUX0ZMQUdfVk1BX0xPQ0spLCBhbmQgcHRlIG1hcHBlZCBidXQgbm90IHlldCBsb2NrZWQuXFxuNDgyMTpcXHQgKiBXZSByZXR1cm4gd2l0aCBwdGUgdW5tYXBwZWQgYW5kIHVubG9ja2VkLlxcbjQ4MjI6XFx0ICpcXG40ODIzOlxcdCAqIFdoZW4gcmV0dXJuaW5nLCB0aGUgbG9jayBtYXkgaGF2ZSBiZWVuIHJlbGVhc2VkIGluIHRoZSBzYW1lIGNhc2VzXFxuNDgyNDpcXHQgKiBhcyBkb25lIGJ5IGZpbGVtYXBfZmF1bHQoKS5cXG40ODI1OlxcdCAqL1xcbjQ4MjY6XFx0dm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuNDgyNzpcXHR7XFxuNDgyODpcXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi1cXHUwMDNldm1hO1xcbjQ4Mjk6XFx0XFx0c3RydWN0IGZvbGlvICpzd2FwY2FjaGUgPSBOVUxMLCAqZm9saW87XFxuNDgzMDpcXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG40ODMxOlxcdFxcdHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzaSA9IE5VTEw7XFxuNDgzMjpcXHRcXHRybWFwX3Qgcm1hcF9mbGFncyA9IFJNQVBfTk9ORTtcXG40ODMzOlxcdFxcdGJvb2wgZXhjbHVzaXZlID0gZmFsc2U7XFxuNDgzNDpcXHRcXHRib29sIHJ3cF9yZXN0b3JlID0gZmFsc2U7XFxuNDgzNTpcXHRcXHRzb2Z0bGVhZl90IGVudHJ5O1xcbjQ4MzY6XFx0XFx0cHRlX3QgcHRlO1xcbjQ4Mzc6XFx0XFx0dm1fZmF1bHRfdCByZXQgPSAwO1xcbjQ4Mzg6XFx0XFx0aW50IG5yX3BhZ2VzO1xcbjQ4Mzk6XFx0XFx0dW5zaWduZWQgbG9uZyBwYWdlX2lkeDtcXG40ODQwOlxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkcmVzcztcXG40ODQxOlxcdFxcdHB0ZV90ICpwdGVwO1xcbjQ4NDI6XFx0XFxuNDg0MzpcXHRcXHRpZiAoIXB0ZV91bm1hcF9zYW1lKHZtZikpXFxuNDg0NDpcXHRcXHRcXHRnb3RvIG91dDtcXG40ODQ1OlxcdFxcbjQ4NDY6XFx0XFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZSh2bWYtXFx1MDAzZW9yaWdfcHRlKTtcXG40ODQ3OlxcdFxcdGlmICh1bmxpa2VseSghc29mdGxlYWZfaXNfc3dhcChlbnRyeSkpKSB7XFxuNDg0ODpcXHRcXHRcXHRpZiAoc29mdGxlYWZfaXNfbWlncmF0aW9uKGVudHJ5KSkge1xcbjQ4NDk6XFx0XFx0XFx0XFx0bWlncmF0aW9uX2VudHJ5X3dhaXQodm1hLVxcdTAwM2V2bV9tbSwgdm1mLVxcdTAwM2VwbWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM5OjQ3Ljc0MjE1OTM2NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTE1NjAxNDUwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZvbGlvIE1pZ3JhdGlvbiBpbiBgZG9fc3dhcF9wYWdlYCoqXG5cbk9rYXksIHNvIGBkb19zd2FwX3BhZ2VgIGlzIGFsd2F5cyBjb21waWxlZCwgYnV0IHdoYXQncyByZWxldmFudCBoZXJlIGlzIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAuIFRoYXQncyB3aGVyZSB0aGUgZm9jdXMgbmVlZHMgdG8gYmUuIFJpZ2h0LCBzbyBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhhdCdzIGVuYWJsZWQuIEFsc28sIGBTV0FQYCBpcyBuZWVkZWQgZm9yIGBkb19zd2FwX3BhZ2VgIHRvIGZ1bmN0aW9uLCBidXQgdGhhdCdzIHVzdWFsbHkgZW5hYmxlZCwgc28gc2hvdWxkIGJlIGZpbmUuIEkgc2VlLCBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgIGlzIHNwZWNpZmljYWxseSB1c2VkIHdpdGhpbiBgZG9fc3dhcF9wYWdlYCB3aGVuIHRoZSBtZW1vcnkgZW50cnkgaXMgcHJpdmF0ZSB0byBhIGRldmljZS4gVGhhdCBjb25maXJtcyBgREVWSUNFX1BSSVZBVEVgIGlzIHRoZSBjb3JyZWN0IGNvbmZpZy5cblxuTGV0J3MgZ28gYmFjayB0byB0aGUgcGF0Y2ggaXRzZWxmLlxuXG5gYGBjXG4gXHRcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XG4rXHRcdFx0c3RydWN0IGZvbGlvICpmYXVsdF9mb2xpbztcbitcbiBcdFx0XHRpZiAodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1ZNQV9MT0NLKSB7XG4gXHRcdFx0XHQvKlxuIFx0XHRcdFx0ICogbWlncmF0ZV90b19yYW0gaXMgbm90IHlldCByZWFkeSB0byBvcGVyYXRlXG5AQCAtNDg2Myw2ICs0ODY1LDcgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRcdFx0fVxuIFxuIFx0XHRcdHZtZi1cdTAwM2VwYWdlID0gc29mdGxlYWZfdG9fcGFnZShlbnRyeSk7XG4rXHRcdFx0ZmF1bHRfZm9saW8gPSBwYWdlX2ZvbGlvKHZtZi1cdTAwM2VwYWdlKTtcbiBcdFx0XHR2bWYtXHUwMDNlcHRlID0gcHRlX29mZnNldF9tYXBfbG9jayh2bWEtXHUwMDNldm1fbW0sIHZtZi1cdTAwM2VwbWQsXG4gXHRcdFx0XHRcdHZtZi1cdTAwM2VhZGRyZXNzLCBcdTAwMjZ2bWYtXHUwMDNlcHRsKTtcbiBcdFx0XHRpZiAodW5saWtlbHkoIXZtZi1cdTAwM2VwdGUgfHxcbkBAIC00ODc0LDE1ICs0ODc3LDE1IEBAIHZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0XHRcdCAqIEdldCBhIHBhZ2UgcmVmZXJlbmNlIHdoaWxlIHdlIGtub3cgdGhlIHBhZ2UgY2FuJ3QgYmVcbiBcdFx0XHQgKiBmcmVlZC5cbiBcdFx0XHQgKi9cbi1cdFx0XHRpZiAodHJ5bG9ja19wYWdlKHZtZi1cdTAwM2VwYWdlKSkge1xuK1x0XHRcdGlmIChmb2xpb190cnlsb2NrKGZhdWx0X2ZvbGlvKSkge1xuIFx0XHRcdFx0c3RydWN0IGRldl9wYWdlbWFwICpwZ21hcDtcbiBcbi1cdFx0XHRcdGdldF9wYWdlKHZtZi1cdTAwM2VwYWdlKTtcbitcdFx0XHRcdGZvbGlvX2dldChmYXVsdF9mb2xpbyk7XG4gXHRcdFx0XHRwdGVfdW5tYXBfdW5sb2NrKHZtZi1cdTAwM2VwdGUsIHZtZi1cdTAwM2VwdGwpO1xuIFx0XHRcdFx0cGdtYXAgPSBwYWdlX3BnbWFwKHZtZi1cdTAwM2VwYWdlKTtcbiBcdFx0XHRcdHJldCA9IHBnbWFwLVx1MDAzZW9wcy1cdTAwM2VtaWdyYXRlX3RvX3JhbSh2bWYpO1xuLVx0XHRcdFx0dW5sb2NrX3BhZ2Uodm1mLVx1MDAzZXBhZ2UpO1xuLVx0XHRcdFx0cHV0X3BhZ2Uodm1mLVx1MDAzZXBhZ2UpO1xuK1x0XHRcdFx0Zm9saW9fdW5sb2NrKGZhdWx0X2ZvbGlvKTtcbitcdFx0XHRcdGZvbGlvX3B1dChmYXVsdF9mb2xpbyk7XG4gXHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdHB0ZV91bm1hcCh2bWYtXHUwMDNlcHRlKTtcbiBcdFx0XHRcdHNvZnRsZWFmX2VudHJ5X3dhaXRfb25fbG9ja2VkKGVudHJ5LCB2bWYtXHUwMDNlcHRsKTtcbmBgYFxuXG5BaCwgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCByZXBsYWNpbmcgdGhlIHVzZSBvZiBgdHJ5bG9ja19wYWdlYCwgYGdldF9wYWdlYCwgYHVubG9ja19wYWdlYCwgYW5kIGBwdXRfcGFnZWAgd2l0aCB0aGVpciBgZm9saW9gIGNvdW50ZXJwYXJ0cy4gTm93LCBpdCdzIHdvcnRoIHRha2luZyBhIGNsb3NlciBsb29rIGF0IHRoYXQgc3Vic3RpdHV0aW9uLCBgZm9saW9fdHJ5bG9ja2AgdnMuIGB0cnlsb2NrX3BhZ2VgLiBJbiBtYW55IGtlcm5lbHMsIGB0cnlsb2NrX3BhZ2VgIGlzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBgZm9saW9fdHJ5bG9ja2AuIEhvd2V2ZXIsIGl0IG1heSBiZSBhIGdlbnVpbmUgY2hhbmdlIGluIHRoaXMgY2FzZSwgYSBwb3RlbnRpYWwgYXJlYSBvZiBjb25jZXJuLiBDb25zaWRlcmluZyB0aGUgY2VudHJhbCByb2xlIG9mIHRoaXMgZnVuY3Rpb24gaW4gbWVtb3J5IG1hbmFnZW1lbnQsIGZ1enppbmcgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSBgZG9fc3dhcF9wYWdlYCwgYW5kIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgYERFVklDRV9QUklWQVRFYCBhbmQgYFNXQVBgLiBXZSBuZWVkIHRvIGJlIHN1cmUgYFNXQVBgIGlzIGVuYWJsZWQgYW5kIHJlLWV2YWx1YXRlIHRoaXMgc3Vic3RpdHV0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg2NywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM5OjU4Ljg5ODE3OTM2OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzMTM4NzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTV0FQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz05PWNvbmZpZyBBUkNIX05PX1NXQVBcXG4tLVxcbm1tL0tjb25maWctMTEtXFxubW0vS2NvbmZpZzoxMjptZW51Y29uZmlnIFNXQVBcXG5tbS9LY29uZmlnLTEzLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHBhZ2luZyBvZiBhbm9ueW1vdXMgbWVtb3J5IChzd2FwKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6Mzk6NTkuMzkxMzI4NzQzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDQ4OTU1NDExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgZG9fc3dhcF9wYWdlYCBSZWZhY3RvcmluZyoqXG5cbk9rYXksIHNvIHRoZSBgU1dBUGAgY29uZmlndXJhdGlvbiBpcyB0aGUga2V5IGhlcmUuIEdvdCBpdC4gQmFzZWQgb24gdGhlIHBhdGNoIGRlc2NyaXB0aW9uLCBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGRlZmluaXRpdmVseSBuZWVkaW5nIGZ1enppbmc7IEknbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoZSBjcml0aWNhbCBwb2ludCBmb3IgbXkgZnV6emluZyBjYW1wYWlnbiB3aWxsIGJlIHRoZSBgZG9fc3dhcF9wYWdlYCBmdW5jdGlvbi4gVGhhdCdzIG15IGBGb2N1c1N5bWJvbHNgLlxuXG5UaGlzIHBhdGNoIGlzIHJlZmFjdG9yaW5nIGhvdyBkZXZpY2UgcHJpdmF0ZSBtZW1vcnkgaXMgaGFuZGxlZCB3aXRoaW4gYGRvX3N3YXBfcGFnZWAsIG1vdmluZyBmcm9tIHBhZ2VzIHRvIGZvbGlvcy4gVGhpcyBraW5kIG9mIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgY2hhbmdlIGlzIGV4YWN0bHkgdGhlIHNvcnQgb2YgdGhpbmcgSSBuZWVkIHRvIHRhcmdldCB3aXRoIGZ1enppbmcuIEl0J3MgdG91Y2hpbmcgcGFnZS9mb2xpbyBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcsIHdoaWNoIGFyZSBub3RvcmlvdXNseSBzdWJ0bGUgYW5kIGVycm9yLXByb25lLiBNeSBgRW5hYmxlQ29uZmlnc2Agd2lsbCBkZWZpbml0ZWx5IGluY2x1ZGUgYERFVklDRV9QUklWQVRFYCBhbmQsIG9mIGNvdXJzZSwgYFNXQVBgIHRvIGVuYWJsZSB0aGUgY29kZS4gTXkgcmVhc29uaW5nPyBXZWxsLCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHN1YnRsZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuIEl0J3MgYSBjcml0aWNhbCBhcmVhLCBhbmQgZnV6emluZyBpcyB0aGUgYmVzdCB3YXkgdG8gdW5jb3ZlciBoaWRkZW4gcHJvYmxlbXMgcmVsYXRlZCB0byB0aGlzIGNvcmUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjU2MSwiT3V0cHV0VG9rZW5zIjo5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjQ2OjAzLjg4MDg5MDQ1MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTk1NjkwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlNXQVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19zd2FwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgZGV2aWNlIHByaXZhdGUgbWVtb3J5IGhhbmRsaW5nIGluIGRvX3N3YXBfcGFnZSB0byB1c2UgZm9saW9zIGluc3RlYWQgb2YgcGFnZXMuIFRoaXMgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gcGFnZS9mb2xpbyBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlNXQVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19zd2FwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgZGV2aWNlIHByaXZhdGUgbWVtb3J5IGhhbmRsaW5nIGluIGRvX3N3YXBfcGFnZSB0byB1c2UgZm9saW9zIGluc3RlYWQgb2YgcGFnZXMuIFRoaXMgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gcGFnZS9mb2xpbyBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowqns5h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-21 14:10:46 +0000 UTC FinishedAt: 2026-07-21 14:46:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "597df0d1ea0eb383971deed73cea0a228ee69ef5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEVICE_PRIVATE", "SWAP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "597df0d1ea0eb383971deed73cea0a228ee69ef5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEVICE_PRIVATE", "SWAP" ], "series_id": "7ddf86ed-e16d-404d-817b-dcaaf913f7b6" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "do_swap_page" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19zd2FwX3BhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGRldmljZSBwcml2YXRlIG1lbW9yeSBoYW5kbGluZyBpbiBkb19zd2FwX3BhZ2UgdG8gdXNlIGZvbGlvcyBpbnN0ZWFkIG9mIHBhZ2VzLiBUaGlzIG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGluIHBhZ2UvZm9saW8gbG9ja2luZyBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTUwNzY4MzI4N2I3MDFhZTQ2ODkzNjg5NzkzYmUzOGQxNTFmYTAyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjM3OjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmNcbmluZGV4IGQ1ZTg3NjI0ZjY5MjA1Li5iZDI3MzcyYTEwNTIyZiAxMDA2NDRcbi0tLSBhL21tL21lbW9yeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1vcnkuY1xuQEAgLTQ4NTIsNiAmIzQzOzQ4NTIsOCBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiBcdFx0XHR2bWYtXHUwMDNlcGFnZSA9IHNvZnRsZWFmX3RvX3BhZ2UoZW50cnkpO1xuIFx0XHRcdHJldCA9IHJlbW92ZV9kZXZpY2VfZXhjbHVzaXZlX2VudHJ5KHZtZik7XG4gXHRcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBmb2xpbyAqZmF1bHRfZm9saW87XG4mIzQzO1xuIFx0XHRcdGlmICh2bWYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZBVUxUX0ZMQUdfVk1BX0xPQ0spIHtcbiBcdFx0XHRcdC8qXG4gXHRcdFx0XHQgKiBtaWdyYXRlX3RvX3JhbSBpcyBub3QgeWV0IHJlYWR5IHRvIG9wZXJhdGVcbkBAIC00ODYzLDYgJiM0Mzs0ODY1LDcgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRcdFx0fVxuIFxuIFx0XHRcdHZtZi1cdTAwM2VwYWdlID0gc29mdGxlYWZfdG9fcGFnZShlbnRyeSk7XG4mIzQzO1x0XHRcdGZhdWx0X2ZvbGlvID0gcGFnZV9mb2xpbyh2bWYtXHUwMDNlcGFnZSk7XG4gXHRcdFx0dm1mLVx1MDAzZXB0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sodm1hLVx1MDAzZXZtX21tLCB2bWYtXHUwMDNlcG1kLFxuIFx0XHRcdFx0XHR2bWYtXHUwMDNlYWRkcmVzcywgXHUwMDI2dm1mLVx1MDAzZXB0bCk7XG4gXHRcdFx0aWYgKHVubGlrZWx5KCF2bWYtXHUwMDNlcHRlIHx8XG5AQCAtNDg3NCwxNSAmIzQzOzQ4NzcsMTUgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRcdFx0ICogR2V0IGEgcGFnZSByZWZlcmVuY2Ugd2hpbGUgd2Uga25vdyB0aGUgcGFnZSBjYW4mIzM5O3QgYmVcbiBcdFx0XHQgKiBmcmVlZC5cbiBcdFx0XHQgKi9cbi1cdFx0XHRpZiAodHJ5bG9ja19wYWdlKHZtZi1cdTAwM2VwYWdlKSkge1xuJiM0MztcdFx0XHRpZiAoZm9saW9fdHJ5bG9jayhmYXVsdF9mb2xpbykpIHtcbiBcdFx0XHRcdHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXA7XG4gXG4tXHRcdFx0XHRnZXRfcGFnZSh2bWYtXHUwMDNlcGFnZSk7XG4mIzQzO1x0XHRcdFx0Zm9saW9fZ2V0KGZhdWx0X2ZvbGlvKTtcbiBcdFx0XHRcdHB0ZV91bm1hcF91bmxvY2sodm1mLVx1MDAzZXB0ZSwgdm1mLVx1MDAzZXB0bCk7XG4gXHRcdFx0XHRwZ21hcCA9IHBhZ2VfcGdtYXAodm1mLVx1MDAzZXBhZ2UpO1xuIFx0XHRcdFx0cmV0ID0gcGdtYXAtXHUwMDNlb3BzLVx1MDAzZW1pZ3JhdGVfdG9fcmFtKHZtZik7XG4tXHRcdFx0XHR1bmxvY2tfcGFnZSh2bWYtXHUwMDNlcGFnZSk7XG4tXHRcdFx0XHRwdXRfcGFnZSh2bWYtXHUwMDNlcGFnZSk7XG4mIzQzO1x0XHRcdFx0Zm9saW9fdW5sb2NrKGZhdWx0X2ZvbGlvKTtcbiYjNDM7XHRcdFx0XHRmb2xpb19wdXQoZmF1bHRfZm9saW8pO1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRwdGVfdW5tYXAodm1mLVx1MDAzZXB0ZSk7XG4gXHRcdFx0XHRzb2Z0bGVhZl9lbnRyeV93YWl0X29uX2xvY2tlZChlbnRyeSwgdm1mLVx1MDAzZXB0bCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6Mzc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19zd2FwX3BhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGRldmljZSBwcml2YXRlIG1lbW9yeSBoYW5kbGluZyBpbiBkb19zd2FwX3BhZ2UgdG8gdXNlIGZvbGlvcyBpbnN0ZWFkIG9mIHBhZ2VzLiBUaGlzIG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGluIHBhZ2UvZm9saW8gbG9ja2luZyBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5NTA3NjgzMjg3YjcwMWFlNDY4OTM2ODk3OTNiZTM4ZDE1MWZhMDI3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMjEgMTQ6Mzc6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jCmluZGV4IGQ1ZTg3NjI0ZjY5MjA1Li5iZDI3MzcyYTEwNTIyZiAxMDA2NDQKLS0tIGEvbW0vbWVtb3J5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5LmMKQEAgLTQ4NTIsNiAmIzQzOzQ4NTIsOCBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJCXZtZi0mZ3Q7cGFnZSA9IHNvZnRsZWFmX3RvX3BhZ2UoZW50cnkpOwogCQkJcmV0ID0gcmVtb3ZlX2RldmljZV9leGNsdXNpdmVfZW50cnkodm1mKTsKIAkJfSBlbHNlIGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpIHsKJiM0MzsJCQlzdHJ1Y3QgZm9saW8gKmZhdWx0X2ZvbGlvOwomIzQzOwogCQkJaWYgKHZtZi0mZ3Q7ZmxhZ3MgJmFtcDsgRkFVTFRfRkxBR19WTUFfTE9DSykgewogCQkJCS8qCiAJCQkJICogbWlncmF0ZV90b19yYW0gaXMgbm90IHlldCByZWFkeSB0byBvcGVyYXRlCkBAIC00ODYzLDYgJiM0Mzs0ODY1LDcgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCQl9CiAKIAkJCXZtZi0mZ3Q7cGFnZSA9IHNvZnRsZWFmX3RvX3BhZ2UoZW50cnkpOwomIzQzOwkJCWZhdWx0X2ZvbGlvID0gcGFnZV9mb2xpbyh2bWYtJmd0O3BhZ2UpOwogCQkJdm1mLSZndDtwdGUgPSBwdGVfb2Zmc2V0X21hcF9sb2NrKHZtYS0mZ3Q7dm1fbW0sIHZtZi0mZ3Q7cG1kLAogCQkJCQl2bWYtJmd0O2FkZHJlc3MsICZhbXA7dm1mLSZndDtwdGwpOwogCQkJaWYgKHVubGlrZWx5KCF2bWYtJmd0O3B0ZSB8fApAQCAtNDg3NCwxNSAmIzQzOzQ4NzcsMTUgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCQkgKiBHZXQgYSBwYWdlIHJlZmVyZW5jZSB3aGlsZSB3ZSBrbm93IHRoZSBwYWdlIGNhbiYjMzk7dCBiZQogCQkJICogZnJlZWQuCiAJCQkgKi8KLQkJCWlmICh0cnlsb2NrX3BhZ2Uodm1mLSZndDtwYWdlKSkgewomIzQzOwkJCWlmIChmb2xpb190cnlsb2NrKGZhdWx0X2ZvbGlvKSkgewogCQkJCXN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXA7CiAKLQkJCQlnZXRfcGFnZSh2bWYtJmd0O3BhZ2UpOwomIzQzOwkJCQlmb2xpb19nZXQoZmF1bHRfZm9saW8pOwogCQkJCXB0ZV91bm1hcF91bmxvY2sodm1mLSZndDtwdGUsIHZtZi0mZ3Q7cHRsKTsKIAkJCQlwZ21hcCA9IHBhZ2VfcGdtYXAodm1mLSZndDtwYWdlKTsKIAkJCQlyZXQgPSBwZ21hcC0mZ3Q7b3BzLSZndDttaWdyYXRlX3RvX3JhbSh2bWYpOwotCQkJCXVubG9ja19wYWdlKHZtZi0mZ3Q7cGFnZSk7Ci0JCQkJcHV0X3BhZ2Uodm1mLSZndDtwYWdlKTsKJiM0MzsJCQkJZm9saW9fdW5sb2NrKGZhdWx0X2ZvbGlvKTsKJiM0MzsJCQkJZm9saW9fcHV0KGZhdWx0X2ZvbGlvKTsKIAkJCX0gZWxzZSB7CiAJCQkJcHRlX3VubWFwKHZtZi0mZ3Q7cHRlKTsKIAkJCQlzb2Z0bGVhZl9lbnRyeV93YWl0X29uX2xvY2tlZChlbnRyeSwgdm1mLSZndDtwdGwpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzExCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBtbS9tZW1vcnkuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRvX3N3YXBfcGFnZWAgZnVuY3Rpb24uIFRoZSBrZXkgaGVyZSBpcyB0aGUgc3dpdGNoIGZyb20gYHBhZ2VgIHRvIGBmb2xpb2Agb3BlcmF0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSByZXBsYWNpbmcgYHRyeWxvY2tfcGFnZWAgd2l0aCBgZm9saW9fdHJ5bG9ja2AsIGBnZXRfcGFnZWAgd2l0aCBgZm9saW9fZ2V0YCwgYHVubG9ja19wYWdlYCB3aXRoIGBmb2xpb191bmxvY2tgLCBhbmQgYHB1dF9wYWdlYCB3aXRoIGBmb2xpb19wdXRgLiBQcmV0dHkgbXVjaCBhIHJlZmFjdG9yaW5nIGVmZm9ydCB0byBtb2Rlcm5pemUgdGhlIGNvZGUsIHVzaW5nIGBmb2xpb3NgIGluc3RlYWQgb2YgdGhlIG9sZGVyIGBwYWdlYCBhYnN0cmFjdGlvbi4gQWgsIHRoZXkmIzM5O3ZlIGFsc28gYWRkZWQgYGZhdWx0X2ZvbGlvID0gcGFnZV9mb2xpbyh2bWYtJmd0O3BhZ2UpO2Ag4oCTIG1ha2VzIHNlbnNlIGZvciB0aGUgZm9saW8gY29udGV4dC4KCkdpdmVuIHRoYXQgaXQmIzM5O3MgdG91Y2hpbmcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBJdCYjMzk7cyBhIGNyaXRpY2FsIGFyZWEsIHNvIGV2ZW4gc2VlbWluZ2x5IG1pbm9yIGNoYW5nZXMgY2FuIGhhdmUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkb19zd2FwX3BhZ2VgIGluIGBtbS9tZW1vcnkuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIHdpdGggdGhpcyBmb2xpbyBjb252ZXJzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RvX3N3YXBfcGFnZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL21lbW9yeS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbW9yeS5jPTk0MD1zdGF0aWMgdm9pZCByZXN0b3JlX2V4Y2x1c2l2ZV9wdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vbWVtb3J5LmMtOTU0LVxubW0vbWVtb3J5LmM6OTU1Olx0LyogU2VlIGRvX3N3YXBfcGFnZSgpOiByZXN0b3JlIFBBR0VfTk9ORSBmb3IgUldQICovXG5tbS9tZW1vcnkuYy05NTYtXHRpZiAocHRlX3N3cF91ZmZkKG9yaWdfcHRlKSBcdTAwMjZcdTAwMjYgdXNlcmZhdWx0ZmRfcndwKHZtYSkpXG4tLVxubW0vbWVtb3J5LmM9MzU5Nz1pbnQgYXBwbHlfdG9fZXhpc3RpbmdfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL21lbW9yeS5jLTM2MDYtICogb3IgY29uZmlndXJhdGlvbnMgKGUuZy4gaTM4NiB3aXRoIFBBRSkgd2hpY2ggbWlnaHQgZ2l2ZSBhIG1peCBvZiB1bm1hdGNoZWRcbm1tL21lbW9yeS5jOjM2MDc6ICogcGFydHMsIGRvX3N3YXBfcGFnZSBtdXN0IGNoZWNrIHVuZGVyIGxvY2sgYmVmb3JlIHVubWFwcGluZyB0aGUgcHRlIGFuZFxubW0vbWVtb3J5LmMtMzYwOC0gKiBwcm9jZWVkaW5nIChidXQgZG9fd3BfcGFnZSBpcyBvbmx5IGNhbGxlZCBhZnRlciBhbHJlYWR5IG1ha2luZyBzdWNoIGEgY2hlY2s7XG4tLVxubW0vbWVtb3J5LmM9NDc0MD1zdGF0aWMgdW5zaWduZWQgbG9uZyB0aHBfc3dhcGluX3N1aXRhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9tZW1vcnkuYy00Nzg0LVx0Lypcbm1tL21lbW9yeS5jOjQ3ODU6XHQgKiBGb3IgZG9fc3dhcF9wYWdlLCBmaW5kIHRoZSBoaWdoZXN0IG9yZGVyIHdoZXJlIHRoZSBhbGlnbmVkIHJhbmdlIGlzXG5tbS9tZW1vcnkuYy00Nzg2LVx0ICogY29tcGxldGVseSBzd2FwIGVudHJpZXMgd2l0aCBjb250aWd1b3VzIHN3YXAgb2Zmc2V0cy5cbi0tXG5tbS9tZW1vcnkuYz00ODA4PXN0YXRpYyB2b2lkIGNoZWNrX3N3YXBfZXhjbHVzaXZlKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5LFxuLS1cbm1tL21lbW9yeS5jLTQ4MjUtICovXG5tbS9tZW1vcnkuYzo0ODI2OnZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxubW0vbWVtb3J5LmMtNDgyNy17XG4tLVxubW0vbWVtb3J5LmMtNTE3Mi1cdHNldF9wdGVzKHZtYS1cdTAwM2V2bV9tbSwgYWRkcmVzcywgcHRlcCwgcHRlLCBucl9wYWdlcyk7XG5tbS9tZW1vcnkuYzo1MTczOlx0YXJjaF9kb19zd2FwX3BhZ2VfbnIodm1hLVx1MDAzZXZtX21tLCB2bWEsIGFkZHJlc3MsXG5tbS9tZW1vcnkuYy01MTc0LVx0XHRcdHB0ZSwgcHRlLCBucl9wYWdlcyk7XG4tLVxubW0vbWVtb3J5LmM9NjQ2Mj1zdGF0aWMgdm1fZmF1bHRfdCBoYW5kbGVfcHRlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbm1tL21lbW9yeS5jLTY1MDgtXHRpZiAoIXB0ZV9wcmVzZW50KHZtZi1cdTAwM2VvcmlnX3B0ZSkpXG5tbS9tZW1vcnkuYzo2NTA5Olx0XHRyZXR1cm4gZG9fc3dhcF9wYWdlKHZtZik7XG5tbS9tZW1vcnkuYy02NTEwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MDgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFN3YXAgUGFnZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgYXJvdW5kIGluIGBkb19zd2FwX3BhZ2VgLiBGdW5jdGlvbmFsbHksIGl0IHNlZW1zIHRvIGJlIHByaW1hcmlseSBhIHJlZmFjdG9yaW5nIGV4ZXJjaXNlLCBtb3ZpbmcgdGhpbmdzIG92ZXIgdG8gdXNpbmcgZm9saW9zLiBOb3QgYSBodWdlIGFyY2hpdGVjdHVyYWwgc2hpZnQsIHdoaWNoIGlzIGdvb2QuIEJ1dCB3YWl0LCBJIHNlZSBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpYCBwb3BwaW5nIHVwIGluIHRoZSBwYXRjaCBjb2RlLiBUaGF0JiMzOTtzIGEgbGl0dGxlIGludGVyZXN0aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlbGV2YW50IHRvIHRoZSBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgIGZ1bmN0aW9uLiBUaGF0IHdpbGwgdGVsbCBtZSB3aGF0IHN5c3RlbXMgbWlnaHQgYmUgYWZmZWN0ZWQgb3Igd2hhdCB0aGlzIHBhdGNoIGNvdWxkIGJlIHNwZWNpZmljYWxseSB0YXJnZXRpbmcuIFRoaXMgZGV0YWlsIGlzIGltcG9ydGFudCwgYmVjYXVzZSB0aGlzIGNvbnRleHQgaXMgdml0YWwgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZSBjaGFuZ2VzLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgYXQgcGxheSBoZXJlIHRvIHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jPTEwNDk9c3RhdGljIHZvaWQgc21hcHNfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTA4Mi1cdFx0fSBlbHNlIGlmIChzb2Z0bGVhZl9oYXNfcGZuKGVudHJ5KSkge1xuZnMvcHJvYy90YXNrX21tdS5jOjEwODM6XHRcdFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSlcbmZzL3Byb2MvdGFza19tbXUuYy0xMDg0LVx0XHRcdFx0cHJlc2VudCA9IHRydWU7XG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg9MjU2PXN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19taWdyYXRpb24oc29mdGxlYWZfdCBlbnRyeSlcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yNjgtLyoqXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyNjk6ICogc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZSBwcml2YXRlXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yNzAtICogd3JpdGFibGUgZW50cnk/XG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjc1LSAqL1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6Mjc2OnN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShzb2Z0bGVhZl90IGVudHJ5KVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjc3LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yODEtLyoqXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyODI6ICogc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZSBwcml2YXRlIGVudHJ5P1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjgzLSAqIEBlbnRyeTogTGVhZiBlbnRyeS5cbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yODYtICovXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyODc6c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX3QgZW50cnkpXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yODgte1xuLS1cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oPTM1NT1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaGFzX3Bmbihzb2Z0bGVhZl90IGVudHJ5KVxuLS1cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTM2MS1cdFx0cmV0dXJuIHRydWU7XG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDozNjI6XHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMzYzLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD02MDQ9c3RhdGljIGlubGluZSBib29sIHBtZF9pc19kZXZpY2VfcHJpdmF0ZV9lbnRyeShwbWRfdCBwbWQpXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MDUte1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6NjA2Olx0cmV0dXJuIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX2Zyb21fcG1kKHBtZCkpO1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjA3LX1cbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD02MzU9c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX3ZhbGlkX3BtZF9lbnRyeShzb2Z0bGVhZl90IGVudHJ5KVxuLS1cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTYzNy1cdC8qIE9ubHkgZGV2aWNlIHByaXZhdGUsIG1pZ3JhdGlvbiBlbnRyaWVzIHZhbGlkIGZvciBQTUQuICovXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDo2Mzg6XHRyZXR1cm4gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpIHx8XG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MzktXHRcdHNvZnRsZWFmX2lzX21pZ3JhdGlvbihlbnRyeSk7XG4tLVxubW0vaG1tLmM9MjQxPXN0YXRpYyBpbnQgaG1tX3ZtYV9oYW5kbGVfcHRlKHN0cnVjdCBtbV93YWxrICp3YWxrLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vaG1tLmMtMjcyLVx0XHQgKi9cbm1tL2htbS5jOjI3MzpcdFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSBcdTAwMjZcdTAwMjZcbm1tL2htbS5jLTI3NC1cdFx0ICAgIHBhZ2VfcGdtYXAoc29mdGxlYWZfdG9fcGFnZShlbnRyeSkpLVx1MDAzZW93bmVyID09XG4tLVxubW0vaG1tLmMtMjc2LVx0XHRcdGNwdV9mbGFncyA9IEhNTV9QRk5fVkFMSUQ7XG5tbS9obW0uYzoyNzc6XHRcdFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKGVudHJ5KSlcbm1tL2htbS5jLTI3OC1cdFx0XHRcdGNwdV9mbGFncyB8PSBITU1fUEZOX1dSSVRFO1xuLS1cbm1tL2htbS5jLTI5MC1cbm1tL2htbS5jOjI5MTpcdFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSlcbm1tL2htbS5jLTI5Mi1cdFx0XHRnb3RvIGZhdWx0O1xuLS1cbm1tL2htbS5jPTM0MT1zdGF0aWMgaW50IGhtbV92bWFfaGFuZGxlX2Fic2VudF9wbWQoc3RydWN0IG1tX3dhbGsgKndhbGssIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxubW0vaG1tLmMtMzUxLVxubW0vaG1tLmM6MzUyOlx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSBcdTAwMjZcdTAwMjZcbm1tL2htbS5jLTM1My1cdCAgICBzb2Z0bGVhZl90b19mb2xpbyhlbnRyeSktXHUwMDNlcGdtYXAtXHUwMDNlb3duZXIgPT1cbi0tXG5tbS9obW0uYy0zNTktXG5tbS9obW0uYzozNjA6XHRcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpXG5tbS9obW0uYy0zNjEtXHRcdFx0Y3B1X2ZsYWdzIHw9IEhNTV9QRk5fV1JJVEU7XG4tLVxubW0vaG1tLmMtMzc4LVx0aWYgKHJlcXVpcmVkX2ZhdWx0KSB7XG5tbS9obW0uYzozNzk6XHRcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpXG5tbS9obW0uYy0zODAtXHRcdFx0cmV0dXJuIGhtbV9yZWNvcmRfZmF1bHQoYWRkciwgZW5kLCByZXF1aXJlZF9mYXVsdCwgd2Fsayk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0xODA5PXN0YXRpYyB2b2lkIGNvcHlfaHVnZV9ub25fcHJlc2VudF9wbWQoXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0xODI4LVx0XHRzZXRfcG1kX2F0KHNyY19tbSwgYWRkciwgc3JjX3BtZCwgcG1kKTtcbm1tL2h1Z2VfbWVtb3J5LmM6MTgyOTpcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XG5tbS9odWdlX21lbW9yeS5jLTE4MzAtXHRcdC8qXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0xODMzLVx0XHQgKi9cbm1tL2h1Z2VfbWVtb3J5LmM6MTgzNDpcdFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKGVudHJ5KSkge1xubW0vaHVnZV9tZW1vcnkuYy0xODM1LVx0XHRcdGVudHJ5ID0gbWFrZV9yZWFkYWJsZV9kZXZpY2VfcHJpdmF0ZV9lbnRyeShzd3Bfb2Zmc2V0KGVudHJ5KSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0yNjAxPXN0YXRpYyB2b2lkIGNoYW5nZV9ub25fcHJlc2VudF9odWdlX3BtZChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5tbS9odWdlX21lbW9yeS5jLTI2MjItXHRcdFx0bmV3cG1kID0gcG1kX3N3cF9ta3NvZnRfZGlydHkobmV3cG1kKTtcbm1tL2h1Z2VfbWVtb3J5LmM6MjYyMzpcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpKSB7XG5tbS9odWdlX21lbW9yeS5jLTI2MjQtXHRcdGVudHJ5ID0gbWFrZV9yZWFkYWJsZV9kZXZpY2VfcHJpdmF0ZV9lbnRyeShzd3Bfb2Zmc2V0KGVudHJ5KSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zMDk3PXN0YXRpYyB2b2lkIF9fc3BsaXRfaHVnZV9wbWRfbG9ja2VkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBwbWRfdCAqcG1kLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzE5MC1cbm1tL2h1Z2VfbWVtb3J5LmM6MzE5MTpcdFx0d3JpdGUgPSBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSk7XG5tbS9odWdlX21lbW9yeS5jLTMxOTItXHRcdGFub25fZXhjbHVzaXZlID0gUGFnZUFub25FeGNsdXNpdmUocGFnZSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz00OTYxPWludCBzZXRfcG1kX21pZ3JhdGlvbl9lbnRyeShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00OTkwLVxubW0vaHVnZV9tZW1vcnkuYzo0OTkxOlx0XHR3cml0YWJsZSA9IHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKG9sZF9lbnRyeSk7XG5tbS9odWdlX21lbW9yeS5jLTQ5OTItXHRcdHNvZnRkaXJ0eSA9IHBtZF9zd3Bfc29mdF9kaXJ0eShwbWR2YWwpO1xuLS1cbm1tL21lbW9yeS5jPTEwMDE9Y29weV9ub25wcmVzZW50X3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3RfbW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKnNyY19tbSxcbi0tXG5tbS9tZW1vcnkuYy0xMDQzLVx0XHR9XG5tbS9tZW1vcnkuYzoxMDQ0Olx0fSBlbHNlIGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpIHtcbm1tL21lbW9yeS5jLTEwNDUtXHRcdHBhZ2UgPSBzb2Z0bGVhZl90b19wYWdlKGVudHJ5KTtcbi0tXG5tbS9tZW1vcnkuYy0xMDY4LVx0XHQgKi9cbm1tL21lbW9yeS5jOjEwNjk6XHRcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkgXHUwMDI2XHUwMDI2XG5tbS9tZW1vcnkuYy0xMDcwLVx0XHQgICAgaXNfY293X21hcHBpbmcodm1fZmxhZ3MpKSB7XG4tLVxubW0vbWVtb3J5LmM9MTgxMT1zdGF0aWMgaW5saW5lIGludCB6YXBfbm9ucHJlc2VudF9wdGVzKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsXG4tLVxubW0vbWVtb3J5LmMtMTgyMC1cdGVudHJ5ID0gc29mdGxlYWZfZnJvbV9wdGUocHRlbnQpO1xubW0vbWVtb3J5LmM6MTgyMTpcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgfHxcbm1tL21lbW9yeS5jLTE4MjItXHQgICAgc29mdGxlYWZfaXNfZGV2aWNlX2V4Y2x1c2l2ZShlbnRyeSkpIHtcbi0tXG5tbS9tZW1vcnkuYz00ODI2PXZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbm1tL21lbW9yeS5jLTQ4NTMtXHRcdFx0cmV0ID0gcmVtb3ZlX2RldmljZV9leGNsdXNpdmVfZW50cnkodm1mKTtcbm1tL21lbW9yeS5jOjQ4NTQ6XHRcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XG5tbS9tZW1vcnkuYy00ODU1LVx0XHRcdHN0cnVjdCBmb2xpbyAqZmF1bHRfZm9saW87XG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMzc9c3RhdGljIGludCBtaWdyYXRlX3ZtYV9jb2xsZWN0X2h1Z2VfcG1kKHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTY5LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNzA6XHRcdGlmICghc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpIHx8XG5tbS9taWdyYXRlX2RldmljZS5jLTE3MS1cdFx0ICAgICEobWlncmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgTUlHUkFURV9WTUFfU0VMRUNUX0RFVklDRV9QUklWQVRFKSkge1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTgxLVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxODI6XHRcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpXG5tbS9taWdyYXRlX2RldmljZS5jLTE4My1cdFx0XHR3cml0ZSA9IE1JR1JBVEVfUEZOX1dSSVRFO1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MjQ1PXN0YXRpYyBpbnQgbWlncmF0ZV92bWFfY29sbGVjdF9wbWQocG1kX3QgKnBtZHAsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0yOTktXHRcdFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZShwdGUpO1xubW0vbWlncmF0ZV9kZXZpY2UuYzozMDA6XHRcdFx0aWYgKCFzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpXG5tbS9taWdyYXRlX2RldmljZS5jLTMwMS1cdFx0XHRcdGdvdG8gbmV4dDtcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTMzMy1cdFx0XHRcdFx0TUlHUkFURV9QRk5fTUlHUkFURTtcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MzM0Olx0XHRcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpXG5tbS9taWdyYXRlX2RldmljZS5jLTMzNS1cdFx0XHRcdG1wZm4gfD0gTUlHUkFURV9QRk5fV1JJVEU7XG4tLVxubW0vbXByb3RlY3QuYz0yMTQ9c3RhdGljIGxvbmcgY2hhbmdlX3NvZnRsZWFmX3B0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9tcHJvdGVjdC5jLTIzNi1cdFx0XHRuZXdwdGUgPSBwdGVfc3dwX21rc29mdF9kaXJ0eShuZXdwdGUpO1xubW0vbXByb3RlY3QuYzoyMzc6XHR9IGVsc2UgaWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKGVudHJ5KSkge1xubW0vbXByb3RlY3QuYy0yMzgtXHRcdC8qXG4tLVxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE4Mj1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfY2FjaGVkX3dyaXRhYmxlKHNvZnRsZWFmX3QgZW50cnkpXG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTgzLXtcbm1tL3BhZ2VfdGFibGVfY2hlY2suYzoxODQ6XHRyZXR1cm4gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpIHx8XG5tbS9wYWdlX3RhYmxlX2NoZWNrLmMtMTg1LVx0XHRzb2Z0bGVhZl9pc19taWdyYXRpb25fd3JpdGUoZW50cnkpO1xuLS1cbm1tL3BhZ2Vfdm1hX21hcHBlZC5jPTE2PXN0YXRpYyBib29sIG1hcF9wdGUoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCBwbWRfdCAqcG1kdmFscCxcbi0tXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYy03MC1cdFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZShwdGVudCk7XG5tbS9wYWdlX3ZtYV9tYXBwZWQuYzo3MTpcdFx0aWYgKCFzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgXHUwMDI2XHUwMDI2XG5tbS9wYWdlX3ZtYV9tYXBwZWQuYy03Mi1cdFx0ICAgICFzb2Z0bGVhZl9pc19kZXZpY2VfZXhjbHVzaXZlKGVudHJ5KSlcbi0tXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYz0xMDc9c3RhdGljIGJvb2wgY2hlY2tfcHRlKHN0cnVjdCBwYWdlX3ZtYV9tYXBwZWRfd2FsayAqcHZtdywgdW5zaWduZWQgbG9uZyBwdGVfbnIpXG4tLVxubW0vcGFnZV92bWFfbWFwcGVkLmMtMTMwLVx0XHQvKiBIYW5kbGUgdW4tYWRkcmVzc2FibGUgWk9ORV9ERVZJQ0UgbWVtb3J5ICovXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYzoxMzE6XHRcdGlmICghc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpIFx1MDAyNlx1MDAyNlxubW0vcGFnZV92bWFfbWFwcGVkLmMtMTMyLVx0XHQgICAgIXNvZnRsZWFmX2lzX2RldmljZV9leGNsdXNpdmUoZW50cnkpKVxuLS1cbm1tL3JtYXAuYz0yNDYxPXN0YXRpYyBib29sIHRyeV90b19taWdyYXRlX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9ybWFwLmMtMjY0OS1cbm1tL3JtYXAuYzoyNjUwOlx0XHRcdHdyaXRhYmxlID0gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpO1xubW0vcm1hcC5jLTI2NTEtXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODQ5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSB3ZWxsLXZlcnNlZCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbjoKCioqQW5hbHl6aW5nIHRoZSBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgIEZsYWcqKgoKUmlnaHQsIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBhc3NvY2lhdGVzIHRoYXQgd2l0aCB0aGUgY29uY2VwdCBvZiBtZW1vcnkgdGhhdCYjMzk7cyBwcml2YXRlIHRvIGEgc3BlY2lmaWMgZGV2aWNlLiBUaGF0IHNvdW5kcyBsaWtlIGl0JiMzOTtzIGNvbm5lY3RlZCB0byBgREVWSUNFX1BSSVZBVEVgIG1lbW9yeSBzb21laG93LiBUaGUgY29ubmVjdGlvbiBzZWVtcyBsb2dpY2FsLCBsaWtlIHRoZXJlJiMzOTtzIGEgc2V0dGluZyB0aGF0IGdvdmVybnMgdGhpcyBwcml2YXRlIG1lbW9yeSBjaGFyYWN0ZXJpc3RpYy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gdGhpcy4gTXkgZmlyc3QgcmVmbGV4IHdvdWxkIGJlIHRvIGNoZWNrIHRoZSBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IHZhcmlhYmxlIGFjdHVhbGx5IGRvZXMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gbG9vayB1cCB0aGUgZGVmaW5pdGlvbiBvZiBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBhbmQgaXRzIHJlbGF0aW9uc2hpcHMsIGxpa2VseSB0aHJvdWdoIGEgcXVpY2sgZ3JlcCwgb3IgaWYgSSYjMzk7bSB1c2luZyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvb2wsIEkmIzM5O2QgbmF2aWdhdGUgdG8gaXQgYW5kIGV4YW1pbmUgdGhlIGhlbHAgdGV4dCBhbmQgZGVwZW5kZW5jaWVzLiBLbm93aW5nIGl0cyBtZWFuaW5nIGlzIGNyaXRpY2FsIHRvIGV2YWx1YXRpbmcgdGhlIHNpZ25pZmljYW5jZSBvZiBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTEyMjI9Y29uZmlnIFpPTkVfREVWSUNFXG4tLVxubW0vS2NvbmZpZy0xMjMxLVx0ICBcJiMzNDtkZXZpY2UtcGh5c2ljYWxcJiMzNDsgYWRkcmVzc2VzIHdoaWNoIGlzIG5lZWRlZCBmb3IgREFYLCBQQ0lfUDJQRE1BLCBhbmRcbm1tL0tjb25maWc6MTIzMjpcdCAgREVWSUNFX1BSSVZBVEUgZmVhdHVyZXMgYW1vbmcgb3RoZXJzLlxubW0vS2NvbmZpZy0xMjMzLVxuLS1cbm1tL0tjb25maWc9MTI0OD1jb25maWcgR0VUX0ZSRUVfUkVHSU9OXG4tLVxubW0vS2NvbmZpZy0xMjUwLVxubW0vS2NvbmZpZzoxMjUxOmNvbmZpZyBERVZJQ0VfUFJJVkFURVxubW0vS2NvbmZpZy0xMjUyLVx0Ym9vbCBcJiMzNDtVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzAxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKk5hdmlnYXRpbmcgYENPTkZJR19ERVZJQ0VfUFJJVkFURWAgYW5kIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAqKgoKT2theSwgc28gYENPTkZJR19ERVZJQ0VfUFJJVkFURWAg4oCTIHRoYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQmIzM5O3MgZHJpdmluZyB0aGlzIHdob2xlIHRoaW5nLiBOb3csIEkgc2VlbSB0byByZWNhbGwgZW5jb3VudGVyaW5nIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAgc29tZXdoZXJlIGluIHJlbGF0aW9uIHRvIGl0LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gcHJldHR5IHN1cmUgaXQgY29tZXMgdXAgaW4gYGRvX3N3YXBfcGFnZWAgd2hlbiBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBpcyBlbmFibGVkLiBPciwgbWF5YmUgaXQmIzM5O3MgYWx3YXlzIGRlZmluZWQsIGFuZCBqdXN0IHJldHVybnMgYGZhbHNlYCBpZiB0aGUgY29uZmlnIGlzbiYjMzk7dCBzZXQuIEkgbmVlZCB0byBiZSBzdXJlLiBUaW1lIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uLiBMZXQmIzM5O3MgaGVhZCBvdmVyIHRvIGBpbmNsdWRlL2xpbnV4L2xlYWZvcHMuaGAuIFRoYXQgc2hvdWxkIGhhdmUgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIHdoYXQgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlYCBhY3R1YWxseSBkb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbGVhZm9wcy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbGVhZm9wcy5oPTI1Nj1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaXNfbWlncmF0aW9uKHNvZnRsZWFmX3QgZW50cnkpXG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjY4LS8qKlxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6MjY5OiAqIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKCkgLSBJcyB0aGlzIGxlYWYgZW50cnkgYSBkZXZpY2UgcHJpdmF0ZVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjcwLSAqIHdyaXRhYmxlIGVudHJ5P1xuLS1cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI3NS0gKi9cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjI3NjpzdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoc29mdGxlYWZfdCBlbnRyeSlcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI3Ny17XG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjgxLS8qKlxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6MjgyOiAqIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKCkgLSBJcyB0aGlzIGxlYWYgZW50cnkgYSBkZXZpY2UgcHJpdmF0ZSBlbnRyeT9cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI4My0gKiBAZW50cnk6IExlYWYgZW50cnkuXG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjg2LSAqL1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6Mjg3OnN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShzb2Z0bGVhZl90IGVudHJ5KVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjg4LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD0zNTU9c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2hhc19wZm4oc29mdGxlYWZfdCBlbnRyeSlcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0zNjEtXHRcdHJldHVybiB0cnVlO1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6MzYyOlx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSlcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTM2My1cdFx0cmV0dXJuIHRydWU7XG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg9NjA0PXN0YXRpYyBpbmxpbmUgYm9vbCBwbWRfaXNfZGV2aWNlX3ByaXZhdGVfZW50cnkocG1kX3QgcG1kKVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjA1LXtcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjYwNjpcdHJldHVybiBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShzb2Z0bGVhZl9mcm9tX3BtZChwbWQpKTtcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTYwNy19XG4tLVxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg9NjM1PXN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc192YWxpZF9wbWRfZW50cnkoc29mdGxlYWZfdCBlbnRyeSlcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MzctXHQvKiBPbmx5IGRldmljZSBwcml2YXRlLCBtaWdyYXRpb24gZW50cmllcyB2YWxpZCBmb3IgUE1ELiAqL1xuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6NjM4Olx0cmV0dXJuIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSB8fFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjM5LVx0XHRzb2Z0bGVhZl9pc19taWdyYXRpb24oZW50cnkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjM4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbGVhZm9wcy5oYCoqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgaW5jbHVkZS9saW51eC9sZWFmb3BzLmhgIGhlYWRlciBmaWxlLiBNeSBodW5jaCBpcyB0aGF0IHRoZSByZWxldmFudCBjb2RlLCBvciBhdCBsZWFzdCB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGlzc3VlLCBpcyBhcm91bmQgbGluZSAyODcuIFRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIGJlZ2luIG15IGludmVzdGlnYXRpb24gaW50byB0aGlzIHNwZWNpZmljIGFzcGVjdC4gSSBleHBlY3QgdGhhdCBpcyBnb2luZyB0byBiZSB0aGUgc291cmNlIG9mIG15IGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9sZWFmb3BzLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdCAqIHdyaXRhYmxlIGVudHJ5P1xuIDI3MTpcdCAqIEBlbnRyeTogTGVhZiBlbnRyeS5cbiAyNzI6XHQgKlxuIDI3MzpcdCAqIFJldHVybnM6IHRydWUgaWYgdGhlIGxlYWYgZW50cnkgaXMgYSBkZXZpY2UgcHJpdmF0ZSB3cml0YWJsZSBlbnRyeSwgb3RoZXJ3aXNlXG4gMjc0Olx0ICogZmFsc2UuXG4gMjc1Olx0ICovXG4gMjc2Olx0c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKHNvZnRsZWFmX3QgZW50cnkpXG4gMjc3Olx0e1xuIDI3ODpcdFx0cmV0dXJuIHNvZnRsZWFmX3R5cGUoZW50cnkpID09IFNPRlRMRUFGX0RFVklDRV9QUklWQVRFX1dSSVRFO1xuIDI3OTpcdH1cbiAyODA6XHRcbiAyODE6XHQvKipcbiAyODI6XHQgKiBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZSgpIC0gSXMgdGhpcyBsZWFmIGVudHJ5IGEgZGV2aWNlIHByaXZhdGUgZW50cnk/XG4gMjgzOlx0ICogQGVudHJ5OiBMZWFmIGVudHJ5LlxuIDI4NDpcdCAqXG4gMjg1Olx0ICogUmV0dXJuczogdHJ1ZSBpZiB0aGUgbGVhZiBlbnRyeSBpcyBhIGRldmljZSBwcml2YXRlIGVudHJ5LCBvdGhlcndpc2UgZmFsc2UuXG4gMjg2Olx0ICovXG4gMjg3Olx0c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX3QgZW50cnkpXG4gMjg4Olx0e1xuIDI4OTpcdFx0c3dpdGNoIChzb2Z0bGVhZl90eXBlKGVudHJ5KSkge1xuIDI5MDpcdFx0Y2FzZSBTT0ZUTEVBRl9ERVZJQ0VfUFJJVkFURV9XUklURTpcbiAyOTE6XHRcdGNhc2UgU09GVExFQUZfREVWSUNFX1BSSVZBVEVfUkVBRDpcbiAyOTI6XHRcdFx0cmV0dXJuIHRydWU7XG4gMjkzOlx0XHRkZWZhdWx0OlxuIDI5NDpcdFx0XHRyZXR1cm4gZmFsc2U7XG4gMjk1Olx0XHR9XG4gMjk2Olx0fVxuIDI5NzpcdFxuIDI5ODpcdC8qKlxuIDI5OTpcdCAqIHNvZnRsZWFmX2lzX2RldmljZV9leGNsdXNpdmUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZS1leGNsdXNpdmUgZW50cnk/XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NDAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIENvbnRleHQqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGluZ3Mg4oCTIGBkb19zd2FwX3BhZ2VgLiBUaGF0JiMzOTtzIHNlcmlvdXMgbWVtb3J5IG1hbmFnZW1lbnQgdGVycml0b3J5LiBUaGUgc3BlY2lmaWMgY29kZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIHRoYXQgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KWAgYnJhbmNoLiBBbHJpZ2h0LCB0aGF0IHBpbnMgZG93biBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBhcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBkcml2aW5nIHRoaXMuIEdvb2QsIHRoYXQgbmFycm93cyB0aGluZ3MgZG93biBjb25zaWRlcmFibHkuIE5vdywgd2hhdCBlbHNlIG1pZ2h0IGJlIGF0IHBsYXkgaGVyZT8gV2UgKmtub3cqIGBDT05GSUdfU1dBUGAgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIGBkb19zd2FwX3BhZ2VgIHRvIGV2ZW4gYmUgY2FsbGVkLCBidXQgd2hhdCBvdGhlciBjb25maWdzIGNvdWxkIGluZmx1ZW5jZSB0aGlzIHBhcnRpY3VsYXIgcGF0aD8gVGltZSB0byBkaXZlIGludG8gYG1tL21lbW9yeS5jYCBhbmQgdGFrZSBhIGNsb3NlciBsb29rLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgZG9fc3dhcF9wYWdlYCBmdW5jdGlvbiB0byBzZWUgaWYgYW55dGhpbmcgZWxzZSBpcyBpbiBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19zd2FwX3BhZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9tZW1vcnkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tZW1vcnkuYz05NDA9c3RhdGljIHZvaWQgcmVzdG9yZV9leGNsdXNpdmVfcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL21lbW9yeS5jLTk1NC1cbm1tL21lbW9yeS5jOjk1NTpcdC8qIFNlZSBkb19zd2FwX3BhZ2UoKTogcmVzdG9yZSBQQUdFX05PTkUgZm9yIFJXUCAqL1xubW0vbWVtb3J5LmMtOTU2LVx0aWYgKHB0ZV9zd3BfdWZmZChvcmlnX3B0ZSkgXHUwMDI2XHUwMDI2IHVzZXJmYXVsdGZkX3J3cCh2bWEpKVxuLS1cbm1tL21lbW9yeS5jPTM1OTc9aW50IGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9tZW1vcnkuYy0zNjA2LSAqIG9yIGNvbmZpZ3VyYXRpb25zIChlLmcuIGkzODYgd2l0aCBQQUUpIHdoaWNoIG1pZ2h0IGdpdmUgYSBtaXggb2YgdW5tYXRjaGVkXG5tbS9tZW1vcnkuYzozNjA3OiAqIHBhcnRzLCBkb19zd2FwX3BhZ2UgbXVzdCBjaGVjayB1bmRlciBsb2NrIGJlZm9yZSB1bm1hcHBpbmcgdGhlIHB0ZSBhbmRcbm1tL21lbW9yeS5jLTM2MDgtICogcHJvY2VlZGluZyAoYnV0IGRvX3dwX3BhZ2UgaXMgb25seSBjYWxsZWQgYWZ0ZXIgYWxyZWFkeSBtYWtpbmcgc3VjaCBhIGNoZWNrO1xuLS1cbm1tL21lbW9yeS5jPTQ3NDA9c3RhdGljIHVuc2lnbmVkIGxvbmcgdGhwX3N3YXBpbl9zdWl0YWJsZV9vcmRlcnMoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxubW0vbWVtb3J5LmMtNDc4NC1cdC8qXG5tbS9tZW1vcnkuYzo0Nzg1Olx0ICogRm9yIGRvX3N3YXBfcGFnZSwgZmluZCB0aGUgaGlnaGVzdCBvcmRlciB3aGVyZSB0aGUgYWxpZ25lZCByYW5nZSBpc1xubW0vbWVtb3J5LmMtNDc4Ni1cdCAqIGNvbXBsZXRlbHkgc3dhcCBlbnRyaWVzIHdpdGggY29udGlndW91cyBzd2FwIG9mZnNldHMuXG4tLVxubW0vbWVtb3J5LmM9NDgwOD1zdGF0aWMgdm9pZCBjaGVja19zd2FwX2V4Y2x1c2l2ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcbi0tXG5tbS9tZW1vcnkuYy00ODI1LSAqL1xubW0vbWVtb3J5LmM6NDgyNjp2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbm1tL21lbW9yeS5jLTQ4Mjcte1xuLS1cbm1tL21lbW9yeS5jLTUxNzItXHRzZXRfcHRlcyh2bWEtXHUwMDNldm1fbW0sIGFkZHJlc3MsIHB0ZXAsIHB0ZSwgbnJfcGFnZXMpO1xubW0vbWVtb3J5LmM6NTE3MzpcdGFyY2hfZG9fc3dhcF9wYWdlX25yKHZtYS1cdTAwM2V2bV9tbSwgdm1hLCBhZGRyZXNzLFxubW0vbWVtb3J5LmMtNTE3NC1cdFx0XHRwdGUsIHB0ZSwgbnJfcGFnZXMpO1xuLS1cbm1tL21lbW9yeS5jPTY0NjI9c3RhdGljIHZtX2ZhdWx0X3QgaGFuZGxlX3B0ZV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9tZW1vcnkuYy02NTA4LVx0aWYgKCFwdGVfcHJlc2VudCh2bWYtXHUwMDNlb3JpZ19wdGUpKVxubW0vbWVtb3J5LmM6NjUwOTpcdFx0cmV0dXJuIGRvX3N3YXBfcGFnZSh2bWYpO1xubW0vbWVtb3J5LmMtNjUxMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc4MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29tcGlsYXRpb24gb2YgYGRvX3N3YXBfcGFnZWAqKgoKT2theSwgc28gYGRvX3N3YXBfcGFnZWAgaXMgYWx3YXlzIGNvbXBpbGVkLCAqcHJvdmlkZWQqIGBDT05GSUdfU1dBUGAgaXMgZW5hYmxlZC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgaXQgcmFpc2VzIGEgcXVlc3Rpb24uIE5vdywgd2hlcmUgaXMgYGRvX3N3YXBfcGFnZWAgZGVmaW5lZD8gQWgsIHllcywgaXQmIzM5O3MgaW4gYG1tL21lbW9yeS5jYC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgdGhhdCBmaWxlLCBgbW0vbWVtb3J5LmNgLCBhbHdheXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGltYWdlPyBMb2dpY2FsbHksIHRoZSBhbnN3ZXIgaXMgeWVzLCBnaXZlbiBpdHMgY29yZSByb2xlIGluIG1lbW9yeSBtYW5hZ2VtZW50LiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgKmFic29sdXRlbHkqIGNlcnRhaW4uIFRoZXJlZm9yZSwgdG8gcmVtb3ZlIGFueSBkb3VidCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBkb19zd2FwX3BhZ2VgIGl0c2VsZiAqaXNuJiMzOTt0KiBoaWRkZW4gYmVoaW5kIGEgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSB0aGF0IG9ubHkgaW5jbHVkZXMgaXQgdW5kZXIgYENPTkZJR19TV0FQYC4gVGltZSB0byBjaGVjayB0aGUgc291cmNlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL21lbW9yeS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDgwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0ODAwOlx0I2Vsc2UgLyogIUNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xuNDgwMTpcdHN0YXRpYyB1bnNpZ25lZCBsb25nIHRocF9zd2FwaW5fc3VpdGFibGVfb3JkZXJzKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuNDgwMjpcdHtcbjQ4MDM6XHRcdHJldHVybiAwO1xuNDgwNDpcdH1cbjQ4MDU6XHQjZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG40ODA2Olx0XG40ODA3Olx0LyogU2FuaXR5IGNoZWNrIHRoYXQgYSBmb2xpbyBpcyBmdWxseSBleGNsdXNpdmUgKi9cbjQ4MDg6XHRzdGF0aWMgdm9pZCBjaGVja19zd2FwX2V4Y2x1c2l2ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcbjQ4MDk6XHRcdFx0XHRcdCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpXG40ODEwOlx0e1xuNDgxMTpcdFx0LyogQ2FsbGVkIHVuZGVyIFBUIGxvY2tlZCBhbmQgZm9saW8gbG9ja2VkLCB0aGUgc3dhcCBjb3VudCBpcyBzdGFibGUgKi9cbjQ4MTI6XHRcdGRvIHtcbjQ4MTM6XHRcdFx0Vk1fV0FSTl9PTl9PTkNFX0ZPTElPKF9fc3dhcF9jb3VudChlbnRyeSkgIT0gMSwgZm9saW8pO1xuNDgxNDpcdFx0XHRlbnRyeS52YWwmIzQzOyYjNDM7O1xuNDgxNTpcdFx0fSB3aGlsZSAoLS1ucl9wYWdlcyk7XG40ODE2Olx0fVxuNDgxNzpcdFxuNDgxODpcdC8qXG40ODE5Olx0ICogV2UgZW50ZXIgd2l0aCBlaXRoZXIgdGhlIFZNQSBsb2NrIG9yIHRoZSBtbWFwX2xvY2sgaGVsZCAoc2VlXG40ODIwOlx0ICogRkFVTFRfRkxBR19WTUFfTE9DSyksIGFuZCBwdGUgbWFwcGVkIGJ1dCBub3QgeWV0IGxvY2tlZC5cbjQ4MjE6XHQgKiBXZSByZXR1cm4gd2l0aCBwdGUgdW5tYXBwZWQgYW5kIHVubG9ja2VkLlxuNDgyMjpcdCAqXG40ODIzOlx0ICogV2hlbiByZXR1cm5pbmcsIHRoZSBsb2NrIG1heSBoYXZlIGJlZW4gcmVsZWFzZWQgaW4gdGhlIHNhbWUgY2FzZXNcbjQ4MjQ6XHQgKiBhcyBkb25lIGJ5IGZpbGVtYXBfZmF1bHQoKS5cbjQ4MjU6XHQgKi9cbjQ4MjY6XHR2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbjQ4Mjc6XHR7XG40ODI4Olx0XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi1cdTAwM2V2bWE7XG40ODI5Olx0XHRzdHJ1Y3QgZm9saW8gKnN3YXBjYWNoZSA9IE5VTEwsICpmb2xpbztcbjQ4MzA6XHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuNDgzMTpcdFx0c3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpID0gTlVMTDtcbjQ4MzI6XHRcdHJtYXBfdCBybWFwX2ZsYWdzID0gUk1BUF9OT05FO1xuNDgzMzpcdFx0Ym9vbCBleGNsdXNpdmUgPSBmYWxzZTtcbjQ4MzQ6XHRcdGJvb2wgcndwX3Jlc3RvcmUgPSBmYWxzZTtcbjQ4MzU6XHRcdHNvZnRsZWFmX3QgZW50cnk7XG40ODM2Olx0XHRwdGVfdCBwdGU7XG40ODM3Olx0XHR2bV9mYXVsdF90IHJldCA9IDA7XG40ODM4Olx0XHRpbnQgbnJfcGFnZXM7XG40ODM5Olx0XHR1bnNpZ25lZCBsb25nIHBhZ2VfaWR4O1xuNDg0MDpcdFx0dW5zaWduZWQgbG9uZyBhZGRyZXNzO1xuNDg0MTpcdFx0cHRlX3QgKnB0ZXA7XG40ODQyOlx0XG40ODQzOlx0XHRpZiAoIXB0ZV91bm1hcF9zYW1lKHZtZikpXG40ODQ0Olx0XHRcdGdvdG8gb3V0O1xuNDg0NTpcdFxuNDg0NjpcdFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZSh2bWYtXHUwMDNlb3JpZ19wdGUpO1xuNDg0NzpcdFx0aWYgKHVubGlrZWx5KCFzb2Z0bGVhZl9pc19zd2FwKGVudHJ5KSkpIHtcbjQ4NDg6XHRcdFx0aWYgKHNvZnRsZWFmX2lzX21pZ3JhdGlvbihlbnRyeSkpIHtcbjQ4NDk6XHRcdFx0XHRtaWdyYXRpb25fZW50cnlfd2FpdCh2bWEtXHUwMDNldm1fbW0sIHZtZi1cdTAwM2VwbWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODY3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNzY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRm9saW8gTWlncmF0aW9uIGluIGBkb19zd2FwX3BhZ2VgKioKCk9rYXksIHNvIGBkb19zd2FwX3BhZ2VgIGlzIGFsd2F5cyBjb21waWxlZCwgYnV0IHdoYXQmIzM5O3MgcmVsZXZhbnQgaGVyZSBpcyBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBmb2N1cyBuZWVkcyB0byBiZS4gUmlnaHQsIHNvIGBDT05GSUdfREVWSUNFX1BSSVZBVEVgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24uIFdlIG5lZWQgdG8gYmUgc3VyZSB0aGF0JiMzOTtzIGVuYWJsZWQuIEFsc28sIGBTV0FQYCBpcyBuZWVkZWQgZm9yIGBkb19zd2FwX3BhZ2VgIHRvIGZ1bmN0aW9uLCBidXQgdGhhdCYjMzk7cyB1c3VhbGx5IGVuYWJsZWQsIHNvIHNob3VsZCBiZSBmaW5lLiBJIHNlZSwgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlYCBpcyBzcGVjaWZpY2FsbHkgdXNlZCB3aXRoaW4gYGRvX3N3YXBfcGFnZWAgd2hlbiB0aGUgbWVtb3J5IGVudHJ5IGlzIHByaXZhdGUgdG8gYSBkZXZpY2UuIFRoYXQgY29uZmlybXMgYERFVklDRV9QUklWQVRFYCBpcyB0aGUgY29ycmVjdCBjb25maWcuCgpMZXQmIzM5O3MgZ28gYmFjayB0byB0aGUgcGF0Y2ggaXRzZWxmLgoKYGBgYwogCQl9IGVsc2UgaWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSkgewomIzQzOwkJCXN0cnVjdCBmb2xpbyAqZmF1bHRfZm9saW87CiYjNDM7CiAJCQlpZiAodm1mLSZndDtmbGFncyAmYW1wOyBGQVVMVF9GTEFHX1ZNQV9MT0NLKSB7CiAJCQkJLyoKIAkJCQkgKiBtaWdyYXRlX3RvX3JhbSBpcyBub3QgeWV0IHJlYWR5IHRvIG9wZXJhdGUKQEAgLTQ4NjMsNiAmIzQzOzQ4NjUsNyBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJCX0KIAogCQkJdm1mLSZndDtwYWdlID0gc29mdGxlYWZfdG9fcGFnZShlbnRyeSk7CiYjNDM7CQkJZmF1bHRfZm9saW8gPSBwYWdlX2ZvbGlvKHZtZi0mZ3Q7cGFnZSk7CiAJCQl2bWYtJmd0O3B0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sodm1hLSZndDt2bV9tbSwgdm1mLSZndDtwbWQsCiAJCQkJCXZtZi0mZ3Q7YWRkcmVzcywgJmFtcDt2bWYtJmd0O3B0bCk7CiAJCQlpZiAodW5saWtlbHkoIXZtZi0mZ3Q7cHRlIHx8CkBAIC00ODc0LDE1ICYjNDM7NDg3NywxNSBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJCSAqIEdldCBhIHBhZ2UgcmVmZXJlbmNlIHdoaWxlIHdlIGtub3cgdGhlIHBhZ2UgY2FuJiMzOTt0IGJlCiAJCQkgKiBmcmVlZC4KIAkJCSAqLwotCQkJaWYgKHRyeWxvY2tfcGFnZSh2bWYtJmd0O3BhZ2UpKSB7CiYjNDM7CQkJaWYgKGZvbGlvX3RyeWxvY2soZmF1bHRfZm9saW8pKSB7CiAJCQkJc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcDsKIAotCQkJCWdldF9wYWdlKHZtZi0mZ3Q7cGFnZSk7CiYjNDM7CQkJCWZvbGlvX2dldChmYXVsdF9mb2xpbyk7CiAJCQkJcHRlX3VubWFwX3VubG9jayh2bWYtJmd0O3B0ZSwgdm1mLSZndDtwdGwpOwogCQkJCXBnbWFwID0gcGFnZV9wZ21hcCh2bWYtJmd0O3BhZ2UpOwogCQkJCXJldCA9IHBnbWFwLSZndDtvcHMtJmd0O21pZ3JhdGVfdG9fcmFtKHZtZik7Ci0JCQkJdW5sb2NrX3BhZ2Uodm1mLSZndDtwYWdlKTsKLQkJCQlwdXRfcGFnZSh2bWYtJmd0O3BhZ2UpOwomIzQzOwkJCQlmb2xpb191bmxvY2soZmF1bHRfZm9saW8pOwomIzQzOwkJCQlmb2xpb19wdXQoZmF1bHRfZm9saW8pOwogCQkJfSBlbHNlIHsKIAkJCQlwdGVfdW5tYXAodm1mLSZndDtwdGUpOwogCQkJCXNvZnRsZWFmX2VudHJ5X3dhaXRfb25fbG9ja2VkKGVudHJ5LCB2bWYtJmd0O3B0bCk7CmBgYAoKQWgsIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJlcGxhY2luZyB0aGUgdXNlIG9mIGB0cnlsb2NrX3BhZ2VgLCBgZ2V0X3BhZ2VgLCBgdW5sb2NrX3BhZ2VgLCBhbmQgYHB1dF9wYWdlYCB3aXRoIHRoZWlyIGBmb2xpb2AgY291bnRlcnBhcnRzLiBOb3csIGl0JiMzOTtzIHdvcnRoIHRha2luZyBhIGNsb3NlciBsb29rIGF0IHRoYXQgc3Vic3RpdHV0aW9uLCBgZm9saW9fdHJ5bG9ja2AgdnMuIGB0cnlsb2NrX3BhZ2VgLiBJbiBtYW55IGtlcm5lbHMsIGB0cnlsb2NrX3BhZ2VgIGlzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBgZm9saW9fdHJ5bG9ja2AuIEhvd2V2ZXIsIGl0IG1heSBiZSBhIGdlbnVpbmUgY2hhbmdlIGluIHRoaXMgY2FzZSwgYSBwb3RlbnRpYWwgYXJlYSBvZiBjb25jZXJuLiBDb25zaWRlcmluZyB0aGUgY2VudHJhbCByb2xlIG9mIHRoaXMgZnVuY3Rpb24gaW4gbWVtb3J5IG1hbmFnZW1lbnQsIGZ1enppbmcgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSBgZG9fc3dhcF9wYWdlYCwgYW5kIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgYERFVklDRV9QUklWQVRFYCBhbmQgYFNXQVBgLiBXZSBuZWVkIHRvIGJlIHN1cmUgYFNXQVBgIGlzIGVuYWJsZWQgYW5kIHJlLWV2YWx1YXRlIHRoaXMgc3Vic3RpdHV0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1dBUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz05PWNvbmZpZyBBUkNIX05PX1NXQVBcbi0tXG5tbS9LY29uZmlnLTExLVxubW0vS2NvbmZpZzoxMjptZW51Y29uZmlnIFNXQVBcbm1tL0tjb25maWctMTMtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHBhZ2luZyBvZiBhbm9ueW1vdXMgbWVtb3J5IChzd2FwKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU2MQoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIGBkb19zd2FwX3BhZ2VgIFJlZmFjdG9yaW5nKioKCk9rYXksIHNvIHRoZSBgU1dBUGAgY29uZmlndXJhdGlvbiBpcyB0aGUga2V5IGhlcmUuIEdvdCBpdC4gQmFzZWQgb24gdGhlIHBhdGNoIGRlc2NyaXB0aW9uLCBJJiMzOTttIGdvaW5nIHRvIGZsYWcgdGhpcyBhcyBkZWZpbml0aXZlbHkgbmVlZGluZyBmdXp6aW5nOyBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIGNyaXRpY2FsIHBvaW50IGZvciBteSBmdXp6aW5nIGNhbXBhaWduIHdpbGwgYmUgdGhlIGBkb19zd2FwX3BhZ2VgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIG15IGBGb2N1c1N5bWJvbHNgLgoKVGhpcyBwYXRjaCBpcyByZWZhY3RvcmluZyBob3cgZGV2aWNlIHByaXZhdGUgbWVtb3J5IGlzIGhhbmRsZWQgd2l0aGluIGBkb19zd2FwX3BhZ2VgLCBtb3ZpbmcgZnJvbSBwYWdlcyB0byBmb2xpb3MuIFRoaXMga2luZCBvZiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZSBpcyBleGFjdGx5IHRoZSBzb3J0IG9mIHRoaW5nIEkgbmVlZCB0byB0YXJnZXQgd2l0aCBmdXp6aW5nLiBJdCYjMzk7cyB0b3VjaGluZyBwYWdlL2ZvbGlvIGxvY2tpbmcgYW5kIHJlZmVyZW5jZSBjb3VudGluZywgd2hpY2ggYXJlIG5vdG9yaW91c2x5IHN1YnRsZSBhbmQgZXJyb3ItcHJvbmUuIE15IGBFbmFibGVDb25maWdzYCB3aWxsIGRlZmluaXRlbHkgaW5jbHVkZSBgREVWSUNFX1BSSVZBVEVgIGFuZCwgb2YgY291cnNlLCBgU1dBUGAgdG8gZW5hYmxlIHRoZSBjb2RlLiBNeSByZWFzb25pbmc/IFdlbGwsIHRvIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHN1YnRsZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuIEl0JiMzOTtzIGEgY3JpdGljYWwgYXJlYSwgYW5kIGZ1enppbmcgaXMgdGhlIGJlc3Qgd2F5IHRvIHVuY292ZXIgaGlkZGVuIHByb2JsZW1zIHJlbGF0ZWQgdG8gdGhpcyBjb3JlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19zd2FwX3BhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGRldmljZSBwcml2YXRlIG1lbW9yeSBoYW5kbGluZyBpbiBkb19zd2FwX3BhZ2UgdG8gdXNlIGZvbGlvcyBpbnN0ZWFkIG9mIHBhZ2VzLiBUaGlzIG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGluIHBhZ2UvZm9saW8gbG9ja2luZyBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtERVZJQ0VfUFJJVkFURSYjMzQ7LAogICAgJiMzNDtTV0FQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fc3dhcF9wYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBkZXZpY2UgcHJpdmF0ZSBtZW1vcnkgaGFuZGxpbmcgaW4gZG9fc3dhcF9wYWdlIHRvIHVzZSBmb2xpb3MgaW5zdGVhZCBvZiBwYWdlcy4gVGhpcyBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBpbiBwYWdlL2ZvbGlvIGxvY2tpbmcgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM3OjM5LjUyMzM5MzQ3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNDYxNzQ3Nzg5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiU1dBUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX3N3YXBfcGFnZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBkZXZpY2UgcHJpdmF0ZSBtZW1vcnkgaGFuZGxpbmcgaW4gZG9fc3dhcF9wYWdlIHRvIHVzZSBmb2xpb3MgaW5zdGVhZCBvZiBwYWdlcy4gVGhpcyBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBpbiBwYWdlL2ZvbGlvIGxvY2tpbmcgYW5kIHJlZmVyZW5jZSBjb3VudGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6Mzc6MzkuNTIzNDA0MDQ0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzg3MTkyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5NTA3NjgzMjg3YjcwMWFlNDY4OTM2ODk3OTNiZTM4ZDE1MWZhMDI3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjM3OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmNcXG5pbmRleCBkNWU4NzYyNGY2OTIwNS4uYmQyNzM3MmExMDUyMmYgMTAwNjQ0XFxuLS0tIGEvbW0vbWVtb3J5LmNcXG4rKysgYi9tbS9tZW1vcnkuY1xcbkBAIC00ODUyLDYgKzQ4NTIsOCBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4gXFx0XFx0XFx0dm1mLVxcdTAwM2VwYWdlID0gc29mdGxlYWZfdG9fcGFnZShlbnRyeSk7XFxuIFxcdFxcdFxcdHJldCA9IHJlbW92ZV9kZXZpY2VfZXhjbHVzaXZlX2VudHJ5KHZtZik7XFxuIFxcdFxcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBmb2xpbyAqZmF1bHRfZm9saW87XFxuK1xcbiBcXHRcXHRcXHRpZiAodm1mLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZBVUxUX0ZMQUdfVk1BX0xPQ0spIHtcXG4gXFx0XFx0XFx0XFx0LypcXG4gXFx0XFx0XFx0XFx0ICogbWlncmF0ZV90b19yYW0gaXMgbm90IHlldCByZWFkeSB0byBvcGVyYXRlXFxuQEAgLTQ4NjMsNiArNDg2NSw3IEBAIHZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHR2bWYtXFx1MDAzZXBhZ2UgPSBzb2Z0bGVhZl90b19wYWdlKGVudHJ5KTtcXG4rXFx0XFx0XFx0ZmF1bHRfZm9saW8gPSBwYWdlX2ZvbGlvKHZtZi1cXHUwMDNlcGFnZSk7XFxuIFxcdFxcdFxcdHZtZi1cXHUwMDNlcHRlID0gcHRlX29mZnNldF9tYXBfbG9jayh2bWEtXFx1MDAzZXZtX21tLCB2bWYtXFx1MDAzZXBtZCxcXG4gXFx0XFx0XFx0XFx0XFx0dm1mLVxcdTAwM2VhZGRyZXNzLCBcXHUwMDI2dm1mLVxcdTAwM2VwdGwpO1xcbiBcXHRcXHRcXHRpZiAodW5saWtlbHkoIXZtZi1cXHUwMDNlcHRlIHx8XFxuQEAgLTQ4NzQsMTUgKzQ4NzcsMTUgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuIFxcdFxcdFxcdCAqIEdldCBhIHBhZ2UgcmVmZXJlbmNlIHdoaWxlIHdlIGtub3cgdGhlIHBhZ2UgY2FuJ3QgYmVcXG4gXFx0XFx0XFx0ICogZnJlZWQuXFxuIFxcdFxcdFxcdCAqL1xcbi1cXHRcXHRcXHRpZiAodHJ5bG9ja19wYWdlKHZtZi1cXHUwMDNlcGFnZSkpIHtcXG4rXFx0XFx0XFx0aWYgKGZvbGlvX3RyeWxvY2soZmF1bHRfZm9saW8pKSB7XFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXA7XFxuIFxcbi1cXHRcXHRcXHRcXHRnZXRfcGFnZSh2bWYtXFx1MDAzZXBhZ2UpO1xcbitcXHRcXHRcXHRcXHRmb2xpb19nZXQoZmF1bHRfZm9saW8pO1xcbiBcXHRcXHRcXHRcXHRwdGVfdW5tYXBfdW5sb2NrKHZtZi1cXHUwMDNlcHRlLCB2bWYtXFx1MDAzZXB0bCk7XFxuIFxcdFxcdFxcdFxcdHBnbWFwID0gcGFnZV9wZ21hcCh2bWYtXFx1MDAzZXBhZ2UpO1xcbiBcXHRcXHRcXHRcXHRyZXQgPSBwZ21hcC1cXHUwMDNlb3BzLVxcdTAwM2VtaWdyYXRlX3RvX3JhbSh2bWYpO1xcbi1cXHRcXHRcXHRcXHR1bmxvY2tfcGFnZSh2bWYtXFx1MDAzZXBhZ2UpO1xcbi1cXHRcXHRcXHRcXHRwdXRfcGFnZSh2bWYtXFx1MDAzZXBhZ2UpO1xcbitcXHRcXHRcXHRcXHRmb2xpb191bmxvY2soZmF1bHRfZm9saW8pO1xcbitcXHRcXHRcXHRcXHRmb2xpb19wdXQoZmF1bHRfZm9saW8pO1xcbiBcXHRcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRcXHRwdGVfdW5tYXAodm1mLVxcdTAwM2VwdGUpO1xcbiBcXHRcXHRcXHRcXHRzb2Z0bGVhZl9lbnRyeV93YWl0X29uX2xvY2tlZChlbnRyeSwgdm1mLVxcdTAwM2VwdGwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozNzo0MC4zMDMxNDc1MzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MDM4Mzc3MDg0MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlNXQVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19zd2FwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgZGV2aWNlIHByaXZhdGUgbWVtb3J5IGhhbmRsaW5nIGluIGRvX3N3YXBfcGFnZSB0byB1c2UgZm9saW9zIGluc3RlYWQgb2YgcGFnZXMuIFRoaXMgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gcGFnZS9mb2xpbyBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTUwNzY4MzI4N2I3MDFhZTQ2ODkzNjg5NzkzYmUzOGQxNTFmYTAyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjM3OjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5LmMgYi9tbS9tZW1vcnkuY1xuaW5kZXggZDVlODc2MjRmNjkyMDUuLmJkMjczNzJhMTA1MjJmIDEwMDY0NFxuLS0tIGEvbW0vbWVtb3J5LmNcbisrKyBiL21tL21lbW9yeS5jXG5AQCAtNDg1Miw2ICs0ODUyLDggQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRcdFx0dm1mLVx1MDAzZXBhZ2UgPSBzb2Z0bGVhZl90b19wYWdlKGVudHJ5KTtcbiBcdFx0XHRyZXQgPSByZW1vdmVfZGV2aWNlX2V4Y2x1c2l2ZV9lbnRyeSh2bWYpO1xuIFx0XHR9IGVsc2UgaWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSkge1xuK1x0XHRcdHN0cnVjdCBmb2xpbyAqZmF1bHRfZm9saW87XG4rXG4gXHRcdFx0aWYgKHZtZi1cdTAwM2VmbGFncyBcdTAwMjYgRkFVTFRfRkxBR19WTUFfTE9DSykge1xuIFx0XHRcdFx0LypcbiBcdFx0XHRcdCAqIG1pZ3JhdGVfdG9fcmFtIGlzIG5vdCB5ZXQgcmVhZHkgdG8gb3BlcmF0ZVxuQEAgLTQ4NjMsNiArNDg2NSw3IEBAIHZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0XHRcdH1cbiBcbiBcdFx0XHR2bWYtXHUwMDNlcGFnZSA9IHNvZnRsZWFmX3RvX3BhZ2UoZW50cnkpO1xuK1x0XHRcdGZhdWx0X2ZvbGlvID0gcGFnZV9mb2xpbyh2bWYtXHUwMDNlcGFnZSk7XG4gXHRcdFx0dm1mLVx1MDAzZXB0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sodm1hLVx1MDAzZXZtX21tLCB2bWYtXHUwMDNlcG1kLFxuIFx0XHRcdFx0XHR2bWYtXHUwMDNlYWRkcmVzcywgXHUwMDI2dm1mLVx1MDAzZXB0bCk7XG4gXHRcdFx0aWYgKHVubGlrZWx5KCF2bWYtXHUwMDNlcHRlIHx8XG5AQCAtNDg3NCwxNSArNDg3NywxNSBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiBcdFx0XHQgKiBHZXQgYSBwYWdlIHJlZmVyZW5jZSB3aGlsZSB3ZSBrbm93IHRoZSBwYWdlIGNhbid0IGJlXG4gXHRcdFx0ICogZnJlZWQuXG4gXHRcdFx0ICovXG4tXHRcdFx0aWYgKHRyeWxvY2tfcGFnZSh2bWYtXHUwMDNlcGFnZSkpIHtcbitcdFx0XHRpZiAoZm9saW9fdHJ5bG9jayhmYXVsdF9mb2xpbykpIHtcbiBcdFx0XHRcdHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXA7XG4gXG4tXHRcdFx0XHRnZXRfcGFnZSh2bWYtXHUwMDNlcGFnZSk7XG4rXHRcdFx0XHRmb2xpb19nZXQoZmF1bHRfZm9saW8pO1xuIFx0XHRcdFx0cHRlX3VubWFwX3VubG9jayh2bWYtXHUwMDNlcHRlLCB2bWYtXHUwMDNlcHRsKTtcbiBcdFx0XHRcdHBnbWFwID0gcGFnZV9wZ21hcCh2bWYtXHUwMDNlcGFnZSk7XG4gXHRcdFx0XHRyZXQgPSBwZ21hcC1cdTAwM2VvcHMtXHUwMDNlbWlncmF0ZV90b19yYW0odm1mKTtcbi1cdFx0XHRcdHVubG9ja19wYWdlKHZtZi1cdTAwM2VwYWdlKTtcbi1cdFx0XHRcdHB1dF9wYWdlKHZtZi1cdTAwM2VwYWdlKTtcbitcdFx0XHRcdGZvbGlvX3VubG9jayhmYXVsdF9mb2xpbyk7XG4rXHRcdFx0XHRmb2xpb19wdXQoZmF1bHRfZm9saW8pO1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRwdGVfdW5tYXAodm1mLVx1MDAzZXB0ZSk7XG4gXHRcdFx0XHRzb2Z0bGVhZl9lbnRyeV93YWl0X29uX2xvY2tlZChlbnRyeSwgdm1mLVx1MDAzZXB0bCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozNzo0MC4zMDMxNDk4NzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjAzMTcwMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG1tL21lbW9yeS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgZG9fc3dhcF9wYWdlYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBzd2l0Y2ggZnJvbSBgcGFnZWAgdG8gYGZvbGlvYCBvcGVyYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgcmVwbGFjaW5nIGB0cnlsb2NrX3BhZ2VgIHdpdGggYGZvbGlvX3RyeWxvY2tgLCBgZ2V0X3BhZ2VgIHdpdGggYGZvbGlvX2dldGAsIGB1bmxvY2tfcGFnZWAgd2l0aCBgZm9saW9fdW5sb2NrYCwgYW5kIGBwdXRfcGFnZWAgd2l0aCBgZm9saW9fcHV0YC4gUHJldHR5IG11Y2ggYSByZWZhY3RvcmluZyBlZmZvcnQgdG8gbW9kZXJuaXplIHRoZSBjb2RlLCB1c2luZyBgZm9saW9zYCBpbnN0ZWFkIG9mIHRoZSBvbGRlciBgcGFnZWAgYWJzdHJhY3Rpb24uIEFoLCB0aGV5J3ZlIGFsc28gYWRkZWQgYGZhdWx0X2ZvbGlvID0gcGFnZV9mb2xpbyh2bWYtXHUwMDNlcGFnZSk7YCDigJMgbWFrZXMgc2Vuc2UgZm9yIHRoZSBmb2xpbyBjb250ZXh0LlxuXG5HaXZlbiB0aGF0IGl0J3MgdG91Y2hpbmcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBJdCdzIGEgY3JpdGljYWwgYXJlYSwgc28gZXZlbiBzZWVtaW5nbHkgbWlub3IgY2hhbmdlcyBjYW4gaGF2ZSBzaWduaWZpY2FudCBpbXBsaWNhdGlvbnMuIFRpbWUgdG8gZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRvX3N3YXBfcGFnZWAgaW4gYG1tL21lbW9yeS5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VidGxlIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgd2l0aCB0aGlzIGZvbGlvIGNvbnZlcnNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozNzo0NC41MDYzMjU0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQ3ODUwMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fc3dhcF9wYWdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21lbW9yeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21lbW9yeS5jPTk0MD1zdGF0aWMgdm9pZCByZXN0b3JlX2V4Y2x1c2l2ZV9wdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9tZW1vcnkuYy05NTQtXFxubW0vbWVtb3J5LmM6OTU1OlxcdC8qIFNlZSBkb19zd2FwX3BhZ2UoKTogcmVzdG9yZSBQQUdFX05PTkUgZm9yIFJXUCAqL1xcbm1tL21lbW9yeS5jLTk1Ni1cXHRpZiAocHRlX3N3cF91ZmZkKG9yaWdfcHRlKSBcXHUwMDI2XFx1MDAyNiB1c2VyZmF1bHRmZF9yd3Aodm1hKSlcXG4tLVxcbm1tL21lbW9yeS5jPTM1OTc9aW50IGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL21lbW9yeS5jLTM2MDYtICogb3IgY29uZmlndXJhdGlvbnMgKGUuZy4gaTM4NiB3aXRoIFBBRSkgd2hpY2ggbWlnaHQgZ2l2ZSBhIG1peCBvZiB1bm1hdGNoZWRcXG5tbS9tZW1vcnkuYzozNjA3OiAqIHBhcnRzLCBkb19zd2FwX3BhZ2UgbXVzdCBjaGVjayB1bmRlciBsb2NrIGJlZm9yZSB1bm1hcHBpbmcgdGhlIHB0ZSBhbmRcXG5tbS9tZW1vcnkuYy0zNjA4LSAqIHByb2NlZWRpbmcgKGJ1dCBkb193cF9wYWdlIGlzIG9ubHkgY2FsbGVkIGFmdGVyIGFscmVhZHkgbWFraW5nIHN1Y2ggYSBjaGVjaztcXG4tLVxcbm1tL21lbW9yeS5jPTQ3NDA9c3RhdGljIHVuc2lnbmVkIGxvbmcgdGhwX3N3YXBpbl9zdWl0YWJsZV9vcmRlcnMoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5tbS9tZW1vcnkuYy00Nzg0LVxcdC8qXFxubW0vbWVtb3J5LmM6NDc4NTpcXHQgKiBGb3IgZG9fc3dhcF9wYWdlLCBmaW5kIHRoZSBoaWdoZXN0IG9yZGVyIHdoZXJlIHRoZSBhbGlnbmVkIHJhbmdlIGlzXFxubW0vbWVtb3J5LmMtNDc4Ni1cXHQgKiBjb21wbGV0ZWx5IHN3YXAgZW50cmllcyB3aXRoIGNvbnRpZ3VvdXMgc3dhcCBvZmZzZXRzLlxcbi0tXFxubW0vbWVtb3J5LmM9NDgwOD1zdGF0aWMgdm9pZCBjaGVja19zd2FwX2V4Y2x1c2l2ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcXG4tLVxcbm1tL21lbW9yeS5jLTQ4MjUtICovXFxubW0vbWVtb3J5LmM6NDgyNjp2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG5tbS9tZW1vcnkuYy00ODI3LXtcXG4tLVxcbm1tL21lbW9yeS5jLTUxNzItXFx0c2V0X3B0ZXModm1hLVxcdTAwM2V2bV9tbSwgYWRkcmVzcywgcHRlcCwgcHRlLCBucl9wYWdlcyk7XFxubW0vbWVtb3J5LmM6NTE3MzpcXHRhcmNoX2RvX3N3YXBfcGFnZV9ucih2bWEtXFx1MDAzZXZtX21tLCB2bWEsIGFkZHJlc3MsXFxubW0vbWVtb3J5LmMtNTE3NC1cXHRcXHRcXHRwdGUsIHB0ZSwgbnJfcGFnZXMpO1xcbi0tXFxubW0vbWVtb3J5LmM9NjQ2Mj1zdGF0aWMgdm1fZmF1bHRfdCBoYW5kbGVfcHRlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxubW0vbWVtb3J5LmMtNjUwOC1cXHRpZiAoIXB0ZV9wcmVzZW50KHZtZi1cXHUwMDNlb3JpZ19wdGUpKVxcbm1tL21lbW9yeS5jOjY1MDk6XFx0XFx0cmV0dXJuIGRvX3N3YXBfcGFnZSh2bWYpO1xcbm1tL21lbW9yeS5jLTY1MTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM3OjQ0Ljc4MTEyMzU2N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzYwMTI4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgU3dhcCBQYWdlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGFyb3VuZCBpbiBgZG9fc3dhcF9wYWdlYC4gRnVuY3Rpb25hbGx5LCBpdCBzZWVtcyB0byBiZSBwcmltYXJpbHkgYSByZWZhY3RvcmluZyBleGVyY2lzZSwgbW92aW5nIHRoaW5ncyBvdmVyIHRvIHVzaW5nIGZvbGlvcy4gTm90IGEgaHVnZSBhcmNoaXRlY3R1cmFsIHNoaWZ0LCB3aGljaCBpcyBnb29kLiBCdXQgd2FpdCwgSSBzZWUgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KWAgcG9wcGluZyB1cCBpbiB0aGUgcGF0Y2ggY29kZS4gVGhhdCdzIGEgbGl0dGxlIGludGVyZXN0aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVsZXZhbnQgdG8gdGhlIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAgZnVuY3Rpb24uIFRoYXQgd2lsbCB0ZWxsIG1lIHdoYXQgc3lzdGVtcyBtaWdodCBiZSBhZmZlY3RlZCBvciB3aGF0IHRoaXMgcGF0Y2ggY291bGQgYmUgc3BlY2lmaWNhbGx5IHRhcmdldGluZy4gVGhpcyBkZXRhaWwgaXMgaW1wb3J0YW50LCBiZWNhdXNlIHRoaXMgY29udGV4dCBpcyB2aXRhbCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIGNoYW5nZXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGF0IHBsYXkgaGVyZSB0byBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6Mzc6NDguMTE3MTM5OTUyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMjAzMTA4MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy90YXNrX21tdS5jPTEwNDk9c3RhdGljIHZvaWQgc21hcHNfcHRlX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDgyLVxcdFxcdH0gZWxzZSBpZiAoc29mdGxlYWZfaGFzX3BmbihlbnRyeSkpIHtcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTA4MzpcXHRcXHRcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDg0LVxcdFxcdFxcdFxcdHByZXNlbnQgPSB0cnVlO1xcbi0tXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg9MjU2PXN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19taWdyYXRpb24oc29mdGxlYWZfdCBlbnRyeSlcXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI2OC0vKipcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyNjk6ICogc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZSBwcml2YXRlXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjcwLSAqIHdyaXRhYmxlIGVudHJ5P1xcbi0tXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjc1LSAqL1xcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjI3NjpzdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoc29mdGxlYWZfdCBlbnRyeSlcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yNzcte1xcbi0tXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjgxLS8qKlxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjI4MjogKiBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZSgpIC0gSXMgdGhpcyBsZWFmIGVudHJ5IGEgZGV2aWNlIHByaXZhdGUgZW50cnk/XFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjgzLSAqIEBlbnRyeTogTGVhZiBlbnRyeS5cXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI4Ni0gKi9cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyODc6c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX3QgZW50cnkpXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjg4LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oPTM1NT1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaGFzX3Bmbihzb2Z0bGVhZl90IGVudHJ5KVxcbi0tXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMzYxLVxcdFxcdHJldHVybiB0cnVlO1xcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjM2MjpcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTM2My1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oPTYwND1zdGF0aWMgaW5saW5lIGJvb2wgcG1kX2lzX2RldmljZV9wcml2YXRlX2VudHJ5KHBtZF90IHBtZClcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MDUte1xcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjYwNjpcXHRyZXR1cm4gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoc29mdGxlYWZfZnJvbV9wbWQocG1kKSk7XFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjA3LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oPTYzNT1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaXNfdmFsaWRfcG1kX2VudHJ5KHNvZnRsZWFmX3QgZW50cnkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MzctXFx0LyogT25seSBkZXZpY2UgcHJpdmF0ZSwgbWlncmF0aW9uIGVudHJpZXMgdmFsaWQgZm9yIFBNRC4gKi9cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDo2Mzg6XFx0cmV0dXJuIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSB8fFxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTYzOS1cXHRcXHRzb2Z0bGVhZl9pc19taWdyYXRpb24oZW50cnkpO1xcbi0tXFxubW0vaG1tLmM9MjQxPXN0YXRpYyBpbnQgaG1tX3ZtYV9oYW5kbGVfcHRlKHN0cnVjdCBtbV93YWxrICp3YWxrLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9obW0uYy0yNzItXFx0XFx0ICovXFxubW0vaG1tLmM6MjczOlxcdFxcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9obW0uYy0yNzQtXFx0XFx0ICAgIHBhZ2VfcGdtYXAoc29mdGxlYWZfdG9fcGFnZShlbnRyeSkpLVxcdTAwM2Vvd25lciA9PVxcbi0tXFxubW0vaG1tLmMtMjc2LVxcdFxcdFxcdGNwdV9mbGFncyA9IEhNTV9QRk5fVkFMSUQ7XFxubW0vaG1tLmM6Mjc3OlxcdFxcdFxcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpXFxubW0vaG1tLmMtMjc4LVxcdFxcdFxcdFxcdGNwdV9mbGFncyB8PSBITU1fUEZOX1dSSVRFO1xcbi0tXFxubW0vaG1tLmMtMjkwLVxcbm1tL2htbS5jOjI5MTpcXHRcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKVxcbm1tL2htbS5jLTI5Mi1cXHRcXHRcXHRnb3RvIGZhdWx0O1xcbi0tXFxubW0vaG1tLmM9MzQxPXN0YXRpYyBpbnQgaG1tX3ZtYV9oYW5kbGVfYWJzZW50X3BtZChzdHJ1Y3QgbW1fd2FsayAqd2FsaywgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL2htbS5jLTM1MS1cXG5tbS9obW0uYzozNTI6XFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSBcXHUwMDI2XFx1MDAyNlxcbm1tL2htbS5jLTM1My1cXHQgICAgc29mdGxlYWZfdG9fZm9saW8oZW50cnkpLVxcdTAwM2VwZ21hcC1cXHUwMDNlb3duZXIgPT1cXG4tLVxcbm1tL2htbS5jLTM1OS1cXG5tbS9obW0uYzozNjA6XFx0XFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKGVudHJ5KSlcXG5tbS9obW0uYy0zNjEtXFx0XFx0XFx0Y3B1X2ZsYWdzIHw9IEhNTV9QRk5fV1JJVEU7XFxuLS1cXG5tbS9obW0uYy0zNzgtXFx0aWYgKHJlcXVpcmVkX2ZhdWx0KSB7XFxubW0vaG1tLmM6Mzc5OlxcdFxcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpXFxubW0vaG1tLmMtMzgwLVxcdFxcdFxcdHJldHVybiBobW1fcmVjb3JkX2ZhdWx0KGFkZHIsIGVuZCwgcmVxdWlyZWRfZmF1bHQsIHdhbGspO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0xODA5PXN0YXRpYyB2b2lkIGNvcHlfaHVnZV9ub25fcHJlc2VudF9wbWQoXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTE4MjgtXFx0XFx0c2V0X3BtZF9hdChzcmNfbW0sIGFkZHIsIHNyY19wbWQsIHBtZCk7XFxubW0vaHVnZV9tZW1vcnkuYzoxODI5OlxcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XFxubW0vaHVnZV9tZW1vcnkuYy0xODMwLVxcdFxcdC8qXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTE4MzMtXFx0XFx0ICovXFxubW0vaHVnZV9tZW1vcnkuYzoxODM0OlxcdFxcdGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpIHtcXG5tbS9odWdlX21lbW9yeS5jLTE4MzUtXFx0XFx0XFx0ZW50cnkgPSBtYWtlX3JlYWRhYmxlX2RldmljZV9wcml2YXRlX2VudHJ5KHN3cF9vZmZzZXQoZW50cnkpKTtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9MjYwMT1zdGF0aWMgdm9pZCBjaGFuZ2Vfbm9uX3ByZXNlbnRfaHVnZV9wbWQoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTI2MjItXFx0XFx0XFx0bmV3cG1kID0gcG1kX3N3cF9ta3NvZnRfZGlydHkobmV3cG1kKTtcXG5tbS9odWdlX21lbW9yeS5jOjI2MjM6XFx0fSBlbHNlIGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpIHtcXG5tbS9odWdlX21lbW9yeS5jLTI2MjQtXFx0XFx0ZW50cnkgPSBtYWtlX3JlYWRhYmxlX2RldmljZV9wcml2YXRlX2VudHJ5KHN3cF9vZmZzZXQoZW50cnkpKTtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9MzA5Nz1zdGF0aWMgdm9pZCBfX3NwbGl0X2h1Z2VfcG1kX2xvY2tlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcG1kX3QgKnBtZCxcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzE5MC1cXG5tbS9odWdlX21lbW9yeS5jOjMxOTE6XFx0XFx0d3JpdGUgPSBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSk7XFxubW0vaHVnZV9tZW1vcnkuYy0zMTkyLVxcdFxcdGFub25fZXhjbHVzaXZlID0gUGFnZUFub25FeGNsdXNpdmUocGFnZSk7XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQ5NjE9aW50IHNldF9wbWRfbWlncmF0aW9uX2VudHJ5KHN0cnVjdCBwYWdlX3ZtYV9tYXBwZWRfd2FsayAqcHZtdyxcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDk5MC1cXG5tbS9odWdlX21lbW9yeS5jOjQ5OTE6XFx0XFx0d3JpdGFibGUgPSBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShvbGRfZW50cnkpO1xcbm1tL2h1Z2VfbWVtb3J5LmMtNDk5Mi1cXHRcXHRzb2Z0ZGlydHkgPSBwbWRfc3dwX3NvZnRfZGlydHkocG1kdmFsKTtcXG4tLVxcbm1tL21lbW9yeS5jPTEwMDE9Y29weV9ub25wcmVzZW50X3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3RfbW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKnNyY19tbSxcXG4tLVxcbm1tL21lbW9yeS5jLTEwNDMtXFx0XFx0fVxcbm1tL21lbW9yeS5jOjEwNDQ6XFx0fSBlbHNlIGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpIHtcXG5tbS9tZW1vcnkuYy0xMDQ1LVxcdFxcdHBhZ2UgPSBzb2Z0bGVhZl90b19wYWdlKGVudHJ5KTtcXG4tLVxcbm1tL21lbW9yeS5jLTEwNjgtXFx0XFx0ICovXFxubW0vbWVtb3J5LmM6MTA2OTpcXHRcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpIFxcdTAwMjZcXHUwMDI2XFxubW0vbWVtb3J5LmMtMTA3MC1cXHRcXHQgICAgaXNfY293X21hcHBpbmcodm1fZmxhZ3MpKSB7XFxuLS1cXG5tbS9tZW1vcnkuYz0xODExPXN0YXRpYyBpbmxpbmUgaW50IHphcF9ub25wcmVzZW50X3B0ZXMoc3RydWN0IG1tdV9nYXRoZXIgKnRsYixcXG4tLVxcbm1tL21lbW9yeS5jLTE4MjAtXFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZShwdGVudCk7XFxubW0vbWVtb3J5LmM6MTgyMTpcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpIHx8XFxubW0vbWVtb3J5LmMtMTgyMi1cXHQgICAgc29mdGxlYWZfaXNfZGV2aWNlX2V4Y2x1c2l2ZShlbnRyeSkpIHtcXG4tLVxcbm1tL21lbW9yeS5jPTQ4MjY9dm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5tbS9tZW1vcnkuYy00ODUzLVxcdFxcdFxcdHJldCA9IHJlbW92ZV9kZXZpY2VfZXhjbHVzaXZlX2VudHJ5KHZtZik7XFxubW0vbWVtb3J5LmM6NDg1NDpcXHRcXHR9IGVsc2UgaWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSkge1xcbm1tL21lbW9yeS5jLTQ4NTUtXFx0XFx0XFx0c3RydWN0IGZvbGlvICpmYXVsdF9mb2xpbztcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTM3PXN0YXRpYyBpbnQgbWlncmF0ZV92bWFfY29sbGVjdF9odWdlX3BtZChwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTY5LVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTcwOlxcdFxcdGlmICghc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpIHx8XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNzEtXFx0XFx0ICAgICEobWlncmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNSUdSQVRFX1ZNQV9TRUxFQ1RfREVWSUNFX1BSSVZBVEUpKSB7XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTE4MS1cXG5tbS9taWdyYXRlX2RldmljZS5jOjE4MjpcXHRcXHRpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTgzLVxcdFxcdFxcdHdyaXRlID0gTUlHUkFURV9QRk5fV1JJVEU7XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTI0NT1zdGF0aWMgaW50IG1pZ3JhdGVfdm1hX2NvbGxlY3RfcG1kKHBtZF90ICpwbWRwLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0yOTktXFx0XFx0XFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZShwdGUpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MzAwOlxcdFxcdFxcdGlmICghc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMzAxLVxcdFxcdFxcdFxcdGdvdG8gbmV4dDtcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMzMzLVxcdFxcdFxcdFxcdFxcdE1JR1JBVEVfUEZOX01JR1JBVEU7XFxubW0vbWlncmF0ZV9kZXZpY2UuYzozMzQ6XFx0XFx0XFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKGVudHJ5KSlcXG5tbS9taWdyYXRlX2RldmljZS5jLTMzNS1cXHRcXHRcXHRcXHRtcGZuIHw9IE1JR1JBVEVfUEZOX1dSSVRFO1xcbi0tXFxubW0vbXByb3RlY3QuYz0yMTQ9c3RhdGljIGxvbmcgY2hhbmdlX3NvZnRsZWFmX3B0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL21wcm90ZWN0LmMtMjM2LVxcdFxcdFxcdG5ld3B0ZSA9IHB0ZV9zd3BfbWtzb2Z0X2RpcnR5KG5ld3B0ZSk7XFxubW0vbXByb3RlY3QuYzoyMzc6XFx0fSBlbHNlIGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShlbnRyeSkpIHtcXG5tbS9tcHJvdGVjdC5jLTIzOC1cXHRcXHQvKlxcbi0tXFxubW0vcGFnZV90YWJsZV9jaGVjay5jPTE4Mj1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfY2FjaGVkX3dyaXRhYmxlKHNvZnRsZWFmX3QgZW50cnkpXFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE4My17XFxubW0vcGFnZV90YWJsZV9jaGVjay5jOjE4NDpcXHRyZXR1cm4gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpIHx8XFxubW0vcGFnZV90YWJsZV9jaGVjay5jLTE4NS1cXHRcXHRzb2Z0bGVhZl9pc19taWdyYXRpb25fd3JpdGUoZW50cnkpO1xcbi0tXFxubW0vcGFnZV92bWFfbWFwcGVkLmM9MTY9c3RhdGljIGJvb2wgbWFwX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHBtZF90ICpwbWR2YWxwLFxcbi0tXFxubW0vcGFnZV92bWFfbWFwcGVkLmMtNzAtXFx0XFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZShwdGVudCk7XFxubW0vcGFnZV92bWFfbWFwcGVkLmM6NzE6XFx0XFx0aWYgKCFzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYy03Mi1cXHRcXHQgICAgIXNvZnRsZWFmX2lzX2RldmljZV9leGNsdXNpdmUoZW50cnkpKVxcbi0tXFxubW0vcGFnZV92bWFfbWFwcGVkLmM9MTA3PXN0YXRpYyBib29sIGNoZWNrX3B0ZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGxvbmcgcHRlX25yKVxcbi0tXFxubW0vcGFnZV92bWFfbWFwcGVkLmMtMTMwLVxcdFxcdC8qIEhhbmRsZSB1bi1hZGRyZXNzYWJsZSBaT05FX0RFVklDRSBtZW1vcnkgKi9cXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYzoxMzE6XFx0XFx0aWYgKCFzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9wYWdlX3ZtYV9tYXBwZWQuYy0xMzItXFx0XFx0ICAgICFzb2Z0bGVhZl9pc19kZXZpY2VfZXhjbHVzaXZlKGVudHJ5KSlcXG4tLVxcbm1tL3JtYXAuYz0yNDYxPXN0YXRpYyBib29sIHRyeV90b19taWdyYXRlX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL3JtYXAuYy0yNjQ5LVxcbm1tL3JtYXAuYzoyNjUwOlxcdFxcdFxcdHdyaXRhYmxlID0gc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVfd3JpdGUoZW50cnkpO1xcbm1tL3JtYXAuYy0yNjUxLVxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6Mzc6NTQuMTM3NDYxMzA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5NTQwNjQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSB3ZWxsLXZlcnNlZCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipBbmFseXppbmcgdGhlIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAgRmxhZyoqXG5cblJpZ2h0LCBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4gYXNzb2NpYXRlcyB0aGF0IHdpdGggdGhlIGNvbmNlcHQgb2YgbWVtb3J5IHRoYXQncyBwcml2YXRlIHRvIGEgc3BlY2lmaWMgZGV2aWNlLiBUaGF0IHNvdW5kcyBsaWtlIGl0J3MgY29ubmVjdGVkIHRvIGBERVZJQ0VfUFJJVkFURWAgbWVtb3J5IHNvbWVob3cuIFRoZSBjb25uZWN0aW9uIHNlZW1zIGxvZ2ljYWwsIGxpa2UgdGhlcmUncyBhIHNldHRpbmcgdGhhdCBnb3Zlcm5zIHRoaXMgcHJpdmF0ZSBtZW1vcnkgY2hhcmFjdGVyaXN0aWMuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aGlzLiBNeSBmaXJzdCByZWZsZXggd291bGQgYmUgdG8gY2hlY2sgdGhlIGBDT05GSUdfREVWSUNFX1BSSVZBVEVgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgdmFyaWFibGUgYWN0dWFsbHkgZG9lcyBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdtIGdvaW5nIHRvIGxvb2sgdXAgdGhlIGRlZmluaXRpb24gb2YgYENPTkZJR19ERVZJQ0VfUFJJVkFURWAgYW5kIGl0cyByZWxhdGlvbnNoaXBzLCBsaWtlbHkgdGhyb3VnaCBhIHF1aWNrIGdyZXAsIG9yIGlmIEknbSB1c2luZyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvb2wsIEknZCBuYXZpZ2F0ZSB0byBpdCBhbmQgZXhhbWluZSB0aGUgaGVscCB0ZXh0IGFuZCBkZXBlbmRlbmNpZXMuIEtub3dpbmcgaXRzIG1lYW5pbmcgaXMgY3JpdGljYWwgdG8gZXZhbHVhdGluZyB0aGUgc2lnbmlmaWNhbmNlIG9mIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NDksIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozNzo1Ny45MzI4NzE5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTc0NjE0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJERVZJQ0VfUFJJVkFURVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTIyMj1jb25maWcgWk9ORV9ERVZJQ0VcXG4tLVxcbm1tL0tjb25maWctMTIzMS1cXHQgIFxcXCJkZXZpY2UtcGh5c2ljYWxcXFwiIGFkZHJlc3NlcyB3aGljaCBpcyBuZWVkZWQgZm9yIERBWCwgUENJX1AyUERNQSwgYW5kXFxubW0vS2NvbmZpZzoxMjMyOlxcdCAgREVWSUNFX1BSSVZBVEUgZmVhdHVyZXMgYW1vbmcgb3RoZXJzLlxcbm1tL0tjb25maWctMTIzMy1cXG4tLVxcbm1tL0tjb25maWc9MTI0OD1jb25maWcgR0VUX0ZSRUVfUkVHSU9OXFxuLS1cXG5tbS9LY29uZmlnLTEyNTAtXFxubW0vS2NvbmZpZzoxMjUxOmNvbmZpZyBERVZJQ0VfUFJJVkFURVxcbm1tL0tjb25maWctMTI1Mi1cXHRib29sIFxcXCJVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM3OjU4LjQyODYyNTcxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NTc3Mzk2NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqTmF2aWdhdGluZyBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBhbmQgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlYCoqXG5cbk9rYXksIHNvIGBDT05GSUdfREVWSUNFX1BSSVZBVEVgIOKAkyB0aGF0J3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQncyBkcml2aW5nIHRoaXMgd2hvbGUgdGhpbmcuIE5vdywgSSBzZWVtIHRvIHJlY2FsbCBlbmNvdW50ZXJpbmcgYHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlYCBzb21ld2hlcmUgaW4gcmVsYXRpb24gdG8gaXQuIFNwZWNpZmljYWxseSwgSSdtIHByZXR0eSBzdXJlIGl0IGNvbWVzIHVwIGluIGBkb19zd2FwX3BhZ2VgIHdoZW4gYENPTkZJR19ERVZJQ0VfUFJJVkFURWAgaXMgZW5hYmxlZC4gT3IsIG1heWJlIGl0J3MgYWx3YXlzIGRlZmluZWQsIGFuZCBqdXN0IHJldHVybnMgYGZhbHNlYCBpZiB0aGUgY29uZmlnIGlzbid0IHNldC4gSSBuZWVkIHRvIGJlIHN1cmUuIFRpbWUgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24uIExldCdzIGhlYWQgb3ZlciB0byBgaW5jbHVkZS9saW51eC9sZWFmb3BzLmhgLiBUaGF0IHNob3VsZCBoYXZlIHRoZSBkZWZpbml0aXZlIGFuc3dlciBvbiB3aGF0IGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAgYWN0dWFsbHkgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzMwMSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM4OjI3LjAwNjAyNjYzM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1MTMyODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvbGVhZm9wcy5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbGVhZm9wcy5oPTI1Nj1zdGF0aWMgaW5saW5lIGJvb2wgc29mdGxlYWZfaXNfbWlncmF0aW9uKHNvZnRsZWFmX3QgZW50cnkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yNjgtLyoqXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6MjY5OiAqIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKCkgLSBJcyB0aGlzIGxlYWYgZW50cnkgYSBkZXZpY2UgcHJpdmF0ZVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI3MC0gKiB3cml0YWJsZSBlbnRyeT9cXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI3NS0gKi9cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyNzY6c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlX3dyaXRlKHNvZnRsZWFmX3QgZW50cnkpXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMjc3LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI4MS0vKipcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDoyODI6ICogc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZSBwcml2YXRlIGVudHJ5P1xcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI4My0gKiBAZW50cnk6IExlYWYgZW50cnkuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0yODYtICovXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6Mjg3OnN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShzb2Z0bGVhZl90IGVudHJ5KVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTI4OC17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD0zNTU9c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2hhc19wZm4oc29mdGxlYWZfdCBlbnRyeSlcXG4tLVxcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTM2MS1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDozNjI6XFx0aWYgKHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKGVudHJ5KSlcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0zNjMtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD02MDQ9c3RhdGljIGlubGluZSBib29sIHBtZF9pc19kZXZpY2VfcHJpdmF0ZV9lbnRyeShwbWRfdCBwbWQpXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjA1LXtcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaDo2MDY6XFx0cmV0dXJuIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX2Zyb21fcG1kKHBtZCkpO1xcbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oLTYwNy19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD02MzU9c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX3ZhbGlkX3BtZF9lbnRyeShzb2Z0bGVhZl90IGVudHJ5KVxcbi0tXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtNjM3LVxcdC8qIE9ubHkgZGV2aWNlIHByaXZhdGUsIG1pZ3JhdGlvbiBlbnRyaWVzIHZhbGlkIGZvciBQTUQuICovXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6NjM4OlxcdHJldHVybiBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkgfHxcXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC02MzktXFx0XFx0c29mdGxlYWZfaXNfbWlncmF0aW9uKGVudHJ5KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6Mzg6MjcuNjIxMTk3MDQyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODgzODUwMzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBsZWFmb3BzLmhgKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGluY2x1ZGUvbGludXgvbGVhZm9wcy5oYCBoZWFkZXIgZmlsZS4gTXkgaHVuY2ggaXMgdGhhdCB0aGUgcmVsZXZhbnQgY29kZSwgb3IgYXQgbGVhc3QgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpc3N1ZSwgaXMgYXJvdW5kIGxpbmUgMjg3LiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIGJlZ2luIG15IGludmVzdGlnYXRpb24gaW50byB0aGlzIHNwZWNpZmljIGFzcGVjdC4gSSBleHBlY3QgdGhhdCBpcyBnb2luZyB0byBiZSB0aGUgc291cmNlIG9mIG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMzgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozODo1OC41MDUwNTIyNzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvbGVhZm9wcy5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI3MDpcXHQgKiB3cml0YWJsZSBlbnRyeT9cXG4gMjcxOlxcdCAqIEBlbnRyeTogTGVhZiBlbnRyeS5cXG4gMjcyOlxcdCAqXFxuIDI3MzpcXHQgKiBSZXR1cm5zOiB0cnVlIGlmIHRoZSBsZWFmIGVudHJ5IGlzIGEgZGV2aWNlIHByaXZhdGUgd3JpdGFibGUgZW50cnksIG90aGVyd2lzZVxcbiAyNzQ6XFx0ICogZmFsc2UuXFxuIDI3NTpcXHQgKi9cXG4gMjc2OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZV93cml0ZShzb2Z0bGVhZl90IGVudHJ5KVxcbiAyNzc6XFx0e1xcbiAyNzg6XFx0XFx0cmV0dXJuIHNvZnRsZWFmX3R5cGUoZW50cnkpID09IFNPRlRMRUFGX0RFVklDRV9QUklWQVRFX1dSSVRFO1xcbiAyNzk6XFx0fVxcbiAyODA6XFx0XFxuIDI4MTpcXHQvKipcXG4gMjgyOlxcdCAqIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKCkgLSBJcyB0aGlzIGxlYWYgZW50cnkgYSBkZXZpY2UgcHJpdmF0ZSBlbnRyeT9cXG4gMjgzOlxcdCAqIEBlbnRyeTogTGVhZiBlbnRyeS5cXG4gMjg0OlxcdCAqXFxuIDI4NTpcXHQgKiBSZXR1cm5zOiB0cnVlIGlmIHRoZSBsZWFmIGVudHJ5IGlzIGEgZGV2aWNlIHByaXZhdGUgZW50cnksIG90aGVyd2lzZSBmYWxzZS5cXG4gMjg2OlxcdCAqL1xcbiAyODc6XFx0c3RhdGljIGlubGluZSBib29sIHNvZnRsZWFmX2lzX2RldmljZV9wcml2YXRlKHNvZnRsZWFmX3QgZW50cnkpXFxuIDI4ODpcXHR7XFxuIDI4OTpcXHRcXHRzd2l0Y2ggKHNvZnRsZWFmX3R5cGUoZW50cnkpKSB7XFxuIDI5MDpcXHRcXHRjYXNlIFNPRlRMRUFGX0RFVklDRV9QUklWQVRFX1dSSVRFOlxcbiAyOTE6XFx0XFx0Y2FzZSBTT0ZUTEVBRl9ERVZJQ0VfUFJJVkFURV9SRUFEOlxcbiAyOTI6XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuIDI5MzpcXHRcXHRkZWZhdWx0OlxcbiAyOTQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAyOTU6XFx0XFx0fVxcbiAyOTY6XFx0fVxcbiAyOTc6XFx0XFxuIDI5ODpcXHQvKipcXG4gMjk5OlxcdCAqIHNvZnRsZWFmX2lzX2RldmljZV9leGNsdXNpdmUoKSAtIElzIHRoaXMgbGVhZiBlbnRyeSBhIGRldmljZS1leGNsdXNpdmUgZW50cnk/XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM4OjU4LjUwNTE4MjMxNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzk4OTUxMTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBDb250ZXh0KipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGluZ3Mg4oCTIGBkb19zd2FwX3BhZ2VgLiBUaGF0J3Mgc2VyaW91cyBtZW1vcnkgbWFuYWdlbWVudCB0ZXJyaXRvcnkuIFRoZSBzcGVjaWZpYyBjb2RlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhhdCBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpYCBicmFuY2guIEFscmlnaHQsIHRoYXQgcGlucyBkb3duIGBDT05GSUdfREVWSUNFX1BSSVZBVEVgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtIGRyaXZpbmcgdGhpcy4gR29vZCwgdGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gTm93LCB3aGF0IGVsc2UgbWlnaHQgYmUgYXQgcGxheSBoZXJlPyBXZSAqa25vdyogYENPTkZJR19TV0FQYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYGRvX3N3YXBfcGFnZWAgdG8gZXZlbiBiZSBjYWxsZWQsIGJ1dCB3aGF0IG90aGVyIGNvbmZpZ3MgY291bGQgaW5mbHVlbmNlIHRoaXMgcGFydGljdWxhciBwYXRoPyBUaW1lIHRvIGRpdmUgaW50byBgbW0vbWVtb3J5LmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2ssIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBkb19zd2FwX3BhZ2VgIGZ1bmN0aW9uIHRvIHNlZSBpZiBhbnl0aGluZyBlbHNlIGlzIGluIHBsYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NDAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM5OjAzLjMwNDEzODE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIwNDc5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fc3dhcF9wYWdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21lbW9yeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21lbW9yeS5jPTk0MD1zdGF0aWMgdm9pZCByZXN0b3JlX2V4Y2x1c2l2ZV9wdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9tZW1vcnkuYy05NTQtXFxubW0vbWVtb3J5LmM6OTU1OlxcdC8qIFNlZSBkb19zd2FwX3BhZ2UoKTogcmVzdG9yZSBQQUdFX05PTkUgZm9yIFJXUCAqL1xcbm1tL21lbW9yeS5jLTk1Ni1cXHRpZiAocHRlX3N3cF91ZmZkKG9yaWdfcHRlKSBcXHUwMDI2XFx1MDAyNiB1c2VyZmF1bHRmZF9yd3Aodm1hKSlcXG4tLVxcbm1tL21lbW9yeS5jPTM1OTc9aW50IGFwcGx5X3RvX2V4aXN0aW5nX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL21lbW9yeS5jLTM2MDYtICogb3IgY29uZmlndXJhdGlvbnMgKGUuZy4gaTM4NiB3aXRoIFBBRSkgd2hpY2ggbWlnaHQgZ2l2ZSBhIG1peCBvZiB1bm1hdGNoZWRcXG5tbS9tZW1vcnkuYzozNjA3OiAqIHBhcnRzLCBkb19zd2FwX3BhZ2UgbXVzdCBjaGVjayB1bmRlciBsb2NrIGJlZm9yZSB1bm1hcHBpbmcgdGhlIHB0ZSBhbmRcXG5tbS9tZW1vcnkuYy0zNjA4LSAqIHByb2NlZWRpbmcgKGJ1dCBkb193cF9wYWdlIGlzIG9ubHkgY2FsbGVkIGFmdGVyIGFscmVhZHkgbWFraW5nIHN1Y2ggYSBjaGVjaztcXG4tLVxcbm1tL21lbW9yeS5jPTQ3NDA9c3RhdGljIHVuc2lnbmVkIGxvbmcgdGhwX3N3YXBpbl9zdWl0YWJsZV9vcmRlcnMoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5tbS9tZW1vcnkuYy00Nzg0LVxcdC8qXFxubW0vbWVtb3J5LmM6NDc4NTpcXHQgKiBGb3IgZG9fc3dhcF9wYWdlLCBmaW5kIHRoZSBoaWdoZXN0IG9yZGVyIHdoZXJlIHRoZSBhbGlnbmVkIHJhbmdlIGlzXFxubW0vbWVtb3J5LmMtNDc4Ni1cXHQgKiBjb21wbGV0ZWx5IHN3YXAgZW50cmllcyB3aXRoIGNvbnRpZ3VvdXMgc3dhcCBvZmZzZXRzLlxcbi0tXFxubW0vbWVtb3J5LmM9NDgwOD1zdGF0aWMgdm9pZCBjaGVja19zd2FwX2V4Y2x1c2l2ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcXG4tLVxcbm1tL21lbW9yeS5jLTQ4MjUtICovXFxubW0vbWVtb3J5LmM6NDgyNjp2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG5tbS9tZW1vcnkuYy00ODI3LXtcXG4tLVxcbm1tL21lbW9yeS5jLTUxNzItXFx0c2V0X3B0ZXModm1hLVxcdTAwM2V2bV9tbSwgYWRkcmVzcywgcHRlcCwgcHRlLCBucl9wYWdlcyk7XFxubW0vbWVtb3J5LmM6NTE3MzpcXHRhcmNoX2RvX3N3YXBfcGFnZV9ucih2bWEtXFx1MDAzZXZtX21tLCB2bWEsIGFkZHJlc3MsXFxubW0vbWVtb3J5LmMtNTE3NC1cXHRcXHRcXHRwdGUsIHB0ZSwgbnJfcGFnZXMpO1xcbi0tXFxubW0vbWVtb3J5LmM9NjQ2Mj1zdGF0aWMgdm1fZmF1bHRfdCBoYW5kbGVfcHRlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxubW0vbWVtb3J5LmMtNjUwOC1cXHRpZiAoIXB0ZV9wcmVzZW50KHZtZi1cXHUwMDNlb3JpZ19wdGUpKVxcbm1tL21lbW9yeS5jOjY1MDk6XFx0XFx0cmV0dXJuIGRvX3N3YXBfcGFnZSh2bWYpO1xcbm1tL21lbW9yeS5jLTY1MTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM5OjAzLjQ3NjIwMTU1NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDI2NTIzODQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbXBpbGF0aW9uIG9mIGBkb19zd2FwX3BhZ2VgKipcblxuT2theSwgc28gYGRvX3N3YXBfcGFnZWAgaXMgYWx3YXlzIGNvbXBpbGVkLCAqcHJvdmlkZWQqIGBDT05GSUdfU1dBUGAgaXMgZW5hYmxlZC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgaXQgcmFpc2VzIGEgcXVlc3Rpb24uIE5vdywgd2hlcmUgaXMgYGRvX3N3YXBfcGFnZWAgZGVmaW5lZD8gQWgsIHllcywgaXQncyBpbiBgbW0vbWVtb3J5LmNgLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBpcyB0aGF0IGZpbGUsIGBtbS9tZW1vcnkuY2AsIGFsd2F5cyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2U/IExvZ2ljYWxseSwgdGhlIGFuc3dlciBpcyB5ZXMsIGdpdmVuIGl0cyBjb3JlIHJvbGUgaW4gbWVtb3J5IG1hbmFnZW1lbnQuIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSAqYWJzb2x1dGVseSogY2VydGFpbi4gVGhlcmVmb3JlLCB0byByZW1vdmUgYW55IGRvdWJ0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGRvX3N3YXBfcGFnZWAgaXRzZWxmICppc24ndCogaGlkZGVuIGJlaGluZCBhIHByZXByb2Nlc3NvciBkaXJlY3RpdmUgdGhhdCBvbmx5IGluY2x1ZGVzIGl0IHVuZGVyIGBDT05GSUdfU1dBUGAuIFRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZSFcblxuXG4iLCJJbnB1dFRva2VucyI6OTc4MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM5OjQ3Ljc0MTQ0NDc2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vbWVtb3J5LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDgwMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDgwMDpcXHQjZWxzZSAvKiAhQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXFxuNDgwMTpcXHRzdGF0aWMgdW5zaWduZWQgbG9uZyB0aHBfc3dhcGluX3N1aXRhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG40ODAyOlxcdHtcXG40ODAzOlxcdFxcdHJldHVybiAwO1xcbjQ4MDQ6XFx0fVxcbjQ4MDU6XFx0I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbjQ4MDY6XFx0XFxuNDgwNzpcXHQvKiBTYW5pdHkgY2hlY2sgdGhhdCBhIGZvbGlvIGlzIGZ1bGx5IGV4Y2x1c2l2ZSAqL1xcbjQ4MDg6XFx0c3RhdGljIHZvaWQgY2hlY2tfc3dhcF9leGNsdXNpdmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnksXFxuNDgwOTpcXHRcXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG5yX3BhZ2VzKVxcbjQ4MTA6XFx0e1xcbjQ4MTE6XFx0XFx0LyogQ2FsbGVkIHVuZGVyIFBUIGxvY2tlZCBhbmQgZm9saW8gbG9ja2VkLCB0aGUgc3dhcCBjb3VudCBpcyBzdGFibGUgKi9cXG40ODEyOlxcdFxcdGRvIHtcXG40ODEzOlxcdFxcdFxcdFZNX1dBUk5fT05fT05DRV9GT0xJTyhfX3N3YXBfY291bnQoZW50cnkpICE9IDEsIGZvbGlvKTtcXG40ODE0OlxcdFxcdFxcdGVudHJ5LnZhbCsrO1xcbjQ4MTU6XFx0XFx0fSB3aGlsZSAoLS1ucl9wYWdlcyk7XFxuNDgxNjpcXHR9XFxuNDgxNzpcXHRcXG40ODE4OlxcdC8qXFxuNDgxOTpcXHQgKiBXZSBlbnRlciB3aXRoIGVpdGhlciB0aGUgVk1BIGxvY2sgb3IgdGhlIG1tYXBfbG9jayBoZWxkIChzZWVcXG40ODIwOlxcdCAqIEZBVUxUX0ZMQUdfVk1BX0xPQ0spLCBhbmQgcHRlIG1hcHBlZCBidXQgbm90IHlldCBsb2NrZWQuXFxuNDgyMTpcXHQgKiBXZSByZXR1cm4gd2l0aCBwdGUgdW5tYXBwZWQgYW5kIHVubG9ja2VkLlxcbjQ4MjI6XFx0ICpcXG40ODIzOlxcdCAqIFdoZW4gcmV0dXJuaW5nLCB0aGUgbG9jayBtYXkgaGF2ZSBiZWVuIHJlbGVhc2VkIGluIHRoZSBzYW1lIGNhc2VzXFxuNDgyNDpcXHQgKiBhcyBkb25lIGJ5IGZpbGVtYXBfZmF1bHQoKS5cXG40ODI1OlxcdCAqL1xcbjQ4MjY6XFx0dm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuNDgyNzpcXHR7XFxuNDgyODpcXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi1cXHUwMDNldm1hO1xcbjQ4Mjk6XFx0XFx0c3RydWN0IGZvbGlvICpzd2FwY2FjaGUgPSBOVUxMLCAqZm9saW87XFxuNDgzMDpcXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG40ODMxOlxcdFxcdHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzaSA9IE5VTEw7XFxuNDgzMjpcXHRcXHRybWFwX3Qgcm1hcF9mbGFncyA9IFJNQVBfTk9ORTtcXG40ODMzOlxcdFxcdGJvb2wgZXhjbHVzaXZlID0gZmFsc2U7XFxuNDgzNDpcXHRcXHRib29sIHJ3cF9yZXN0b3JlID0gZmFsc2U7XFxuNDgzNTpcXHRcXHRzb2Z0bGVhZl90IGVudHJ5O1xcbjQ4MzY6XFx0XFx0cHRlX3QgcHRlO1xcbjQ4Mzc6XFx0XFx0dm1fZmF1bHRfdCByZXQgPSAwO1xcbjQ4Mzg6XFx0XFx0aW50IG5yX3BhZ2VzO1xcbjQ4Mzk6XFx0XFx0dW5zaWduZWQgbG9uZyBwYWdlX2lkeDtcXG40ODQwOlxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkcmVzcztcXG40ODQxOlxcdFxcdHB0ZV90ICpwdGVwO1xcbjQ4NDI6XFx0XFxuNDg0MzpcXHRcXHRpZiAoIXB0ZV91bm1hcF9zYW1lKHZtZikpXFxuNDg0NDpcXHRcXHRcXHRnb3RvIG91dDtcXG40ODQ1OlxcdFxcbjQ4NDY6XFx0XFx0ZW50cnkgPSBzb2Z0bGVhZl9mcm9tX3B0ZSh2bWYtXFx1MDAzZW9yaWdfcHRlKTtcXG40ODQ3OlxcdFxcdGlmICh1bmxpa2VseSghc29mdGxlYWZfaXNfc3dhcChlbnRyeSkpKSB7XFxuNDg0ODpcXHRcXHRcXHRpZiAoc29mdGxlYWZfaXNfbWlncmF0aW9uKGVudHJ5KSkge1xcbjQ4NDk6XFx0XFx0XFx0XFx0bWlncmF0aW9uX2VudHJ5X3dhaXQodm1hLVxcdTAwM2V2bV9tbSwgdm1mLVxcdTAwM2VwbWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM5OjQ3Ljc0MjE1OTM2NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTE1NjAxNDUwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZvbGlvIE1pZ3JhdGlvbiBpbiBgZG9fc3dhcF9wYWdlYCoqXG5cbk9rYXksIHNvIGBkb19zd2FwX3BhZ2VgIGlzIGFsd2F5cyBjb21waWxlZCwgYnV0IHdoYXQncyByZWxldmFudCBoZXJlIGlzIGBzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZWAuIFRoYXQncyB3aGVyZSB0aGUgZm9jdXMgbmVlZHMgdG8gYmUuIFJpZ2h0LCBzbyBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhhdCdzIGVuYWJsZWQuIEFsc28sIGBTV0FQYCBpcyBuZWVkZWQgZm9yIGBkb19zd2FwX3BhZ2VgIHRvIGZ1bmN0aW9uLCBidXQgdGhhdCdzIHVzdWFsbHkgZW5hYmxlZCwgc28gc2hvdWxkIGJlIGZpbmUuIEkgc2VlLCBgc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGVgIGlzIHNwZWNpZmljYWxseSB1c2VkIHdpdGhpbiBgZG9fc3dhcF9wYWdlYCB3aGVuIHRoZSBtZW1vcnkgZW50cnkgaXMgcHJpdmF0ZSB0byBhIGRldmljZS4gVGhhdCBjb25maXJtcyBgREVWSUNFX1BSSVZBVEVgIGlzIHRoZSBjb3JyZWN0IGNvbmZpZy5cblxuTGV0J3MgZ28gYmFjayB0byB0aGUgcGF0Y2ggaXRzZWxmLlxuXG5gYGBjXG4gXHRcdH0gZWxzZSBpZiAoc29mdGxlYWZfaXNfZGV2aWNlX3ByaXZhdGUoZW50cnkpKSB7XG4rXHRcdFx0c3RydWN0IGZvbGlvICpmYXVsdF9mb2xpbztcbitcbiBcdFx0XHRpZiAodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1ZNQV9MT0NLKSB7XG4gXHRcdFx0XHQvKlxuIFx0XHRcdFx0ICogbWlncmF0ZV90b19yYW0gaXMgbm90IHlldCByZWFkeSB0byBvcGVyYXRlXG5AQCAtNDg2Myw2ICs0ODY1LDcgQEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRcdFx0fVxuIFxuIFx0XHRcdHZtZi1cdTAwM2VwYWdlID0gc29mdGxlYWZfdG9fcGFnZShlbnRyeSk7XG4rXHRcdFx0ZmF1bHRfZm9saW8gPSBwYWdlX2ZvbGlvKHZtZi1cdTAwM2VwYWdlKTtcbiBcdFx0XHR2bWYtXHUwMDNlcHRlID0gcHRlX29mZnNldF9tYXBfbG9jayh2bWEtXHUwMDNldm1fbW0sIHZtZi1cdTAwM2VwbWQsXG4gXHRcdFx0XHRcdHZtZi1cdTAwM2VhZGRyZXNzLCBcdTAwMjZ2bWYtXHUwMDNlcHRsKTtcbiBcdFx0XHRpZiAodW5saWtlbHkoIXZtZi1cdTAwM2VwdGUgfHxcbkBAIC00ODc0LDE1ICs0ODc3LDE1IEBAIHZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0XHRcdCAqIEdldCBhIHBhZ2UgcmVmZXJlbmNlIHdoaWxlIHdlIGtub3cgdGhlIHBhZ2UgY2FuJ3QgYmVcbiBcdFx0XHQgKiBmcmVlZC5cbiBcdFx0XHQgKi9cbi1cdFx0XHRpZiAodHJ5bG9ja19wYWdlKHZtZi1cdTAwM2VwYWdlKSkge1xuK1x0XHRcdGlmIChmb2xpb190cnlsb2NrKGZhdWx0X2ZvbGlvKSkge1xuIFx0XHRcdFx0c3RydWN0IGRldl9wYWdlbWFwICpwZ21hcDtcbiBcbi1cdFx0XHRcdGdldF9wYWdlKHZtZi1cdTAwM2VwYWdlKTtcbitcdFx0XHRcdGZvbGlvX2dldChmYXVsdF9mb2xpbyk7XG4gXHRcdFx0XHRwdGVfdW5tYXBfdW5sb2NrKHZtZi1cdTAwM2VwdGUsIHZtZi1cdTAwM2VwdGwpO1xuIFx0XHRcdFx0cGdtYXAgPSBwYWdlX3BnbWFwKHZtZi1cdTAwM2VwYWdlKTtcbiBcdFx0XHRcdHJldCA9IHBnbWFwLVx1MDAzZW9wcy1cdTAwM2VtaWdyYXRlX3RvX3JhbSh2bWYpO1xuLVx0XHRcdFx0dW5sb2NrX3BhZ2Uodm1mLVx1MDAzZXBhZ2UpO1xuLVx0XHRcdFx0cHV0X3BhZ2Uodm1mLVx1MDAzZXBhZ2UpO1xuK1x0XHRcdFx0Zm9saW9fdW5sb2NrKGZhdWx0X2ZvbGlvKTtcbitcdFx0XHRcdGZvbGlvX3B1dChmYXVsdF9mb2xpbyk7XG4gXHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdHB0ZV91bm1hcCh2bWYtXHUwMDNlcHRlKTtcbiBcdFx0XHRcdHNvZnRsZWFmX2VudHJ5X3dhaXRfb25fbG9ja2VkKGVudHJ5LCB2bWYtXHUwMDNlcHRsKTtcbmBgYFxuXG5BaCwgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCByZXBsYWNpbmcgdGhlIHVzZSBvZiBgdHJ5bG9ja19wYWdlYCwgYGdldF9wYWdlYCwgYHVubG9ja19wYWdlYCwgYW5kIGBwdXRfcGFnZWAgd2l0aCB0aGVpciBgZm9saW9gIGNvdW50ZXJwYXJ0cy4gTm93LCBpdCdzIHdvcnRoIHRha2luZyBhIGNsb3NlciBsb29rIGF0IHRoYXQgc3Vic3RpdHV0aW9uLCBgZm9saW9fdHJ5bG9ja2AgdnMuIGB0cnlsb2NrX3BhZ2VgLiBJbiBtYW55IGtlcm5lbHMsIGB0cnlsb2NrX3BhZ2VgIGlzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBgZm9saW9fdHJ5bG9ja2AuIEhvd2V2ZXIsIGl0IG1heSBiZSBhIGdlbnVpbmUgY2hhbmdlIGluIHRoaXMgY2FzZSwgYSBwb3RlbnRpYWwgYXJlYSBvZiBjb25jZXJuLiBDb25zaWRlcmluZyB0aGUgY2VudHJhbCByb2xlIG9mIHRoaXMgZnVuY3Rpb24gaW4gbWVtb3J5IG1hbmFnZW1lbnQsIGZ1enppbmcgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSBgZG9fc3dhcF9wYWdlYCwgYW5kIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgYERFVklDRV9QUklWQVRFYCBhbmQgYFNXQVBgLiBXZSBuZWVkIHRvIGJlIHN1cmUgYFNXQVBgIGlzIGVuYWJsZWQgYW5kIHJlLWV2YWx1YXRlIHRoaXMgc3Vic3RpdHV0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg2NywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM5OjU4Ljg5ODE3OTM2OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzMTM4NzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTV0FQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz05PWNvbmZpZyBBUkNIX05PX1NXQVBcXG4tLVxcbm1tL0tjb25maWctMTEtXFxubW0vS2NvbmZpZzoxMjptZW51Y29uZmlnIFNXQVBcXG5tbS9LY29uZmlnLTEzLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHBhZ2luZyBvZiBhbm9ueW1vdXMgbWVtb3J5IChzd2FwKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6Mzk6NTkuMzkxMzI4NzQzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDQ4OTU1NDExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgZG9fc3dhcF9wYWdlYCBSZWZhY3RvcmluZyoqXG5cbk9rYXksIHNvIHRoZSBgU1dBUGAgY29uZmlndXJhdGlvbiBpcyB0aGUga2V5IGhlcmUuIEdvdCBpdC4gQmFzZWQgb24gdGhlIHBhdGNoIGRlc2NyaXB0aW9uLCBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGRlZmluaXRpdmVseSBuZWVkaW5nIGZ1enppbmc7IEknbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoZSBjcml0aWNhbCBwb2ludCBmb3IgbXkgZnV6emluZyBjYW1wYWlnbiB3aWxsIGJlIHRoZSBgZG9fc3dhcF9wYWdlYCBmdW5jdGlvbi4gVGhhdCdzIG15IGBGb2N1c1N5bWJvbHNgLlxuXG5UaGlzIHBhdGNoIGlzIHJlZmFjdG9yaW5nIGhvdyBkZXZpY2UgcHJpdmF0ZSBtZW1vcnkgaXMgaGFuZGxlZCB3aXRoaW4gYGRvX3N3YXBfcGFnZWAsIG1vdmluZyBmcm9tIHBhZ2VzIHRvIGZvbGlvcy4gVGhpcyBraW5kIG9mIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgY2hhbmdlIGlzIGV4YWN0bHkgdGhlIHNvcnQgb2YgdGhpbmcgSSBuZWVkIHRvIHRhcmdldCB3aXRoIGZ1enppbmcuIEl0J3MgdG91Y2hpbmcgcGFnZS9mb2xpbyBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcsIHdoaWNoIGFyZSBub3RvcmlvdXNseSBzdWJ0bGUgYW5kIGVycm9yLXByb25lLiBNeSBgRW5hYmxlQ29uZmlnc2Agd2lsbCBkZWZpbml0ZWx5IGluY2x1ZGUgYERFVklDRV9QUklWQVRFYCBhbmQsIG9mIGNvdXJzZSwgYFNXQVBgIHRvIGVuYWJsZSB0aGUgY29kZS4gTXkgcmVhc29uaW5nPyBXZWxsLCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHN1YnRsZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuIEl0J3MgYSBjcml0aWNhbCBhcmVhLCBhbmQgZnV6emluZyBpcyB0aGUgYmVzdCB3YXkgdG8gdW5jb3ZlciBoaWRkZW4gcHJvYmxlbXMgcmVsYXRlZCB0byB0aGlzIGNvcmUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjU2MSwiT3V0cHV0VG9rZW5zIjo5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjQ2OjAzLjg4MDg5MDQ1MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTk1NjkwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlNXQVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19zd2FwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgZGV2aWNlIHByaXZhdGUgbWVtb3J5IGhhbmRsaW5nIGluIGRvX3N3YXBfcGFnZSB0byB1c2UgZm9saW9zIGluc3RlYWQgb2YgcGFnZXMuIFRoaXMgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gcGFnZS9mb2xpbyBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlNXQVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19zd2FwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgZGV2aWNlIHByaXZhdGUgbWVtb3J5IGhhbmRsaW5nIGluIGRvX3N3YXBfcGFnZSB0byB1c2UgZm9saW9zIGluc3RlYWQgb2YgcGFnZXMuIFRoaXMgbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gcGFnZS9mb2xpbyBsb2NraW5nIGFuZCByZWZlcmVuY2UgY291bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowqns5h[1] Phase: Succeeded StartedAt: 2026-07-21 14:46:19 +0000 UTC FinishedAt: 2026-07-21 14:46:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-21 14:46:19 +0000 UTC FinishedAt: 2026-07-21 14:46:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2] Phase: Succeeded StartedAt: 2026-07-21 14:46:19 +0000 UTC FinishedAt: 2026-07-21 19:05:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-21 14:46:19 +0000 UTC FinishedAt: 2026-07-21 19:05:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-21 14:46:19 +0000 UTC FinishedAt: 2026-07-21 14:47:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-21 14:46:19 +0000 UTC FinishedAt: 2026-07-21 14:46:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqns5h/series-workflowqns5h-convert-artifact-3289682776/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-21 14:47:03 +0000 UTC FinishedAt: 2026-07-21 15:17:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-21 14:47:03 +0000 UTC FinishedAt: 2026-07-21 15:17:54 +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:*765a167c-57d2-435b-bae3-802f8919e7cd,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-workflowqns5h/series-workflowqns5h-convert-artifact-3289682776/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": "14adcca8-4229-4029-9efd-c33fe1da831c", "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-workflowqns5h/series-workflowqns5h-build-action-2214669198/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-21 14:47:04 +0000 UTC FinishedAt: 2026-07-21 15:17:44 +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:*765a167c-57d2-435b-bae3-802f8919e7cd,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-workflowqns5h/series-workflowqns5h-convert-artifact-3289682776/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": "14adcca8-4229-4029-9efd-c33fe1da831c", "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-workflowqns5h/series-workflowqns5h-build-action-2214669198/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-21 15:17:54 +0000 UTC FinishedAt: 2026-07-21 15:17:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-21 15:17:54 +0000 UTC FinishedAt: 2026-07-21 15:17:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-21 15:17:54 +0000 UTC FinishedAt: 2026-07-21 15:18:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-21 15:17:54 +0000 UTC FinishedAt: 2026-07-21 15:18:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqns5h/series-workflowqns5h-convert-artifact-245647039/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-21 15:18:05 +0000 UTC FinishedAt: 2026-07-21 15:19:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-21 15:18:05 +0000 UTC FinishedAt: 2026-07-21 15:19:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14adcca8-4229-4029-9efd-c33fe1da831c,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-workflowqns5h/series-workflowqns5h-build-action-2214669198/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-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-21 15:19:57 +0000 UTC FinishedAt: 2026-07-21 15:19:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-21 15:19:57 +0000 UTC FinishedAt: 2026-07-21 15:19:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-21 15:19:57 +0000 UTC FinishedAt: 2026-07-21 15:59:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-21 15:19:57 +0000 UTC FinishedAt: 2026-07-21 15:59:59 +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:*765a167c-57d2-435b-bae3-802f8919e7cd,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-workflowqns5h/series-workflowqns5h-convert-artifact-245647039/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": "c6130b69-6853-4d43-a8fb-e74402016724", "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-workflowqns5h/series-workflowqns5h-build-action-1100630739/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-21 15:19:57 +0000 UTC FinishedAt: 2026-07-21 15:59:49 +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:*765a167c-57d2-435b-bae3-802f8919e7cd,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-workflowqns5h/series-workflowqns5h-convert-artifact-245647039/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": "c6130b69-6853-4d43-a8fb-e74402016724", "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-workflowqns5h/series-workflowqns5h-build-action-1100630739/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-21 15:59:59 +0000 UTC FinishedAt: 2026-07-21 15:59:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-21 15:59:59 +0000 UTC FinishedAt: 2026-07-21 15:59:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-21 15:59:59 +0000 UTC FinishedAt: 2026-07-21 16:02:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-21 15:59:59 +0000 UTC FinishedAt: 2026-07-21 16:01:53 +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:*c6130b69-6853-4d43-a8fb-e74402016724,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-workflowqns5h/series-workflowqns5h-build-action-1100630739/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-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-21 16:02:03 +0000 UTC FinishedAt: 2026-07-21 19:05:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-21 16:02:03 +0000 UTC FinishedAt: 2026-07-21 19:05:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*14adcca8-4229-4029-9efd-c33fe1da831c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c6130b69-6853-4d43-a8fb-e74402016724,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-workflowqns5h/series-workflowqns5h-build-action-2214669198/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-workflowqns5h/series-workflowqns5h-build-action-1100630739/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-21 16:02:03 +0000 UTC FinishedAt: 2026-07-21 16:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-21 16:02:03 +0000 UTC FinishedAt: 2026-07-21 16:02:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqns5h/series-workflowqns5h-convert-artifact-2249871448/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-21 16:02:03 +0000 UTC FinishedAt: 2026-07-21 16:02:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-21 16:02:03 +0000 UTC FinishedAt: 2026-07-21 16:02:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-21 16:02:03 +0000 UTC FinishedAt: 2026-07-21 16:02:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-21 16:02:13 +0000 UTC FinishedAt: 2026-07-21 19:05:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqns5h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["do_swap_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"597df0d1ea0eb383971deed73cea0a228ee69ef5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_PRIVATE","SWAP"],"series_id":"7ddf86ed-e16d-404d-817b-dcaaf913f7b6","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-21 16:02:13 +0000 UTC FinishedAt: 2026-07-21 19:05:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14adcca8-4229-4029-9efd-c33fe1da831c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c6130b69-6853-4d43-a8fb-e74402016724,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-workflowqns5h/series-workflowqns5h-build-action-2214669198/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-workflowqns5h/series-workflowqns5h-build-action-1100630739/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-workflowqns5h/series-workflowqns5h-convert-artifact-2249871448/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,}