Name: series-workflowwfjfz Phase: Succeeded StartedAt: 2026-06-24 10:02:00 +0000 UTC FinishedAt: 2026-06-24 11:58:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[0] Phase: Succeeded StartedAt: 2026-06-24 10:02:00 +0000 UTC FinishedAt: 2026-06-24 10:53:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 10:02:00 +0000 UTC FinishedAt: 2026-06-24 10:53:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LIQUIDIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LIQUIDIO" ], "series_id": "83bbeb51-1f6b-4b32-b358-a17b1bc69b3f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "setup_cn23xx_octeon_pf_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xJUVVJRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgaW4gdGhlIENhdml1bSBMaXF1aWRJTyBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBwcm9iaW5nLCB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlciYjMzk7cyB2UENJIGZ1enplci4gRnV6emluZyB0aGlzIGVycm9yIHBhdGggaXMgdXNlZnVsIHRvIGVuc3VyZSB0aGF0IHRoZSB1bm1hcHBpbmcgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIGRvdWJsZSBmcmVlcyBvciBvdGhlciBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOGY1ZTg3MjViNWM4ZmNjZDVlMmIzYzMzZWNhNThjOTQxMjE4ZjhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTA6NTA6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbmluZGV4IDc1ZjIyZjc0Nzc0Y2IyLi4wNmI0NDI0ZTc3OGVkOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbkBAIC0xMTYzLDE4ICYjNDM7MTE2MywxNCBAQCBpbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcbiBcdGlmIChvY3Rlb25fbWFwX3BjaV9iYXJ4KG9jdCwgMSwgTUFYX0JBUjFfSU9SRU1BUF9TSVpFKSkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNm9jdC1cdTAwM2VwY2lfZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXMgQ04yM1hYIEJBUjEgbWFwIGZhaWxlZFxcblwmIzM0OyxcbiBcdFx0XHRfX2Z1bmNfXyk7XG4tXHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xuLVx0XHRyZXR1cm4gMTtcbiYjNDM7XHRcdGdvdG8gZXJyX3VubWFwX2JhcjA7XG4gXHR9XG4gXG4gXHRpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKVxuLVx0XHRyZXR1cm4gMTtcbiYjNDM7XHRcdGdvdG8gZXJyX3VubWFwX2JhcjE7XG4gXG4tXHRpZiAoY24yM3h4X3NyaW92X2NvbmZpZyhvY3QpKSB7XG4tXHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xuLVx0XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAxKTtcbi1cdFx0cmV0dXJuIDE7XG4tXHR9XG4mIzQzO1x0aWYgKGNuMjN4eF9zcmlvdl9jb25maWcob2N0KSlcbiYjNDM7XHRcdGdvdG8gZXJyX3VubWFwX2JhcjE7XG4gXG4gXHRvY3Rlb25fd3JpdGVfY3NyNjQob2N0LCBDTjIzWFhfU0xJX01BQ19DUkVESVRfQ05ULCAweDNGODAyMDgwODAyMDgwVUxMKTtcbiBcbkBAIC0xMjA1LDYgJiM0MzsxMjAxLDEyIEBAIGludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuIFx0b2N0LVx1MDAzZWNvcHJvY19jbG9ja19yYXRlID0gMTAwMDAwMFVMTCAqIGNuMjN4eF9jb3Byb2Nlc3Nvcl9jbG9jayhvY3QpO1xuIFxuIFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztlcnJfdW5tYXBfYmFyMTpcbiYjNDM7XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAxKTtcbiYjNDM7ZXJyX3VubWFwX2JhcjA6XG4mIzQzO1x0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4mIzQzO1x0cmV0dXJuIDE7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMSVFVSURJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgcHJvYmluZywgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgdlBDSSBmdXp6ZXIuIEZ1enppbmcgdGhpcyBlcnJvciBwYXRoIGlzIHVzZWZ1bCB0byBlbnN1cmUgdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSBkb3VibGUgZnJlZXMgb3Igb3RoZXIgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyOGY1ZTg3MjViNWM4ZmNjZDVlMmIzYzMzZWNhNThjOTQxMjE4ZjhiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMTA6NTA6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYwppbmRleCA3NWYyMmY3NDc3NGNiMi4uMDZiNDQyNGU3NzhlZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYwpAQCAtMTE2MywxOCAmIzQzOzExNjMsMTQgQEAgaW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpCiAJaWYgKG9jdGVvbl9tYXBfcGNpX2Jhcngob2N0LCAxLCBNQVhfQkFSMV9JT1JFTUFQX1NJWkUpKSB7CiAJCWRldl9lcnIoJmFtcDtvY3QtJmd0O3BjaV9kZXYtJmd0O2RldiwgJiMzNDslcyBDTjIzWFggQkFSMSBtYXAgZmFpbGVkXG4mIzM0OywKIAkJCV9fZnVuY19fKTsKLQkJb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7Ci0JCXJldHVybiAxOwomIzQzOwkJZ290byBlcnJfdW5tYXBfYmFyMDsKIAl9CiAKIAlpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKQotCQlyZXR1cm4gMTsKJiM0MzsJCWdvdG8gZXJyX3VubWFwX2JhcjE7CiAKLQlpZiAoY24yM3h4X3NyaW92X2NvbmZpZyhvY3QpKSB7Ci0JCW9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApOwotCQlvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAxKTsKLQkJcmV0dXJuIDE7Ci0JfQomIzQzOwlpZiAoY24yM3h4X3NyaW92X2NvbmZpZyhvY3QpKQomIzQzOwkJZ290byBlcnJfdW5tYXBfYmFyMTsKIAogCW9jdGVvbl93cml0ZV9jc3I2NChvY3QsIENOMjNYWF9TTElfTUFDX0NSRURJVF9DTlQsIDB4M0Y4MDIwODA4MDIwODBVTEwpOwogCkBAIC0xMjA1LDYgJiM0MzsxMjAxLDEyIEBAIGludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KQogCW9jdC0mZ3Q7Y29wcm9jX2Nsb2NrX3JhdGUgPSAxMDAwMDAwVUxMICogY24yM3h4X2NvcHJvY2Vzc29yX2Nsb2NrKG9jdCk7CiAKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfdW5tYXBfYmFyMToKJiM0MzsJb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7CiYjNDM7ZXJyX3VubWFwX2JhcjA6CiYjNDM7CW9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApOwomIzQzOwlyZXR1cm4gMTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzExCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENhdml1bSBMaXF1aWRJTyBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jYC4gSXQmIzM5O3MgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGZpeCBmb3IgZXJyb3IgaGFuZGxpbmcgaW4gYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCwgYWRkaW5nIGBnb3RvYCBzdGF0ZW1lbnRzIHRvIGVuc3VyZSBwcm9wZXIgUENJIEJBUiB1bm1hcHBpbmcgb24gZmFpbHVyZS4gVGhhdCYjMzk7cyBnb29kIGh5Z2llbmUsIGJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpczogaXMgdGhpcyBmdXp6YWJsZT8KClRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgdGhhdCB0aGlzIGlzIGEgZHJpdmVyIGZvciB0aGUgQ2F2aXVtIExpcXVpZElPIEludGVsbGlnZW50IFNlcnZlciBBZGFwdGVyLCBhIFBDSSBkZXZpY2UuIE15IGluaXRpYWwgaW50dWl0aW9uIGlzIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyBsaWtlIHRoaXMgYXJlIGRpZmZpY3VsdCB0byBmdXp6IGRpcmVjdGx5LCB1bmxlc3Mgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBzb3BoaXN0aWNhdGVkIGhhcmR3YXJlIGVtdWxhdG9yIG9yLCBwcmVmZXJhYmx5LCBhIHZlcnkgd2VsbC1kZXZlbG9wZWQgZ2VuZXJpYyBQQ0kgZnV6emluZyBzZXR1cC4gSG93ZXZlciwgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgcHJvamVjdCBoYXMgYSBzcGVjaWZpYyBleGNsdXNpb246IGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4KCkdpdmVuIHRoYXQsIEkgbmVlZCB0byBjb25maXJtOiBpcyB0aGlzIENhdml1bSBMaXF1aWRJTyBoYXJkd2FyZSBlbXVsYXRlZCBpbiBRRU1VPyBBcyBmYXIgYXMgSSBrbm93LCBpdCBpc24mIzM5O3QuIFNvIGlmIHdlIGNhbiYjMzk7dCBmdXp6IGl0IHRocm91Z2ggUUVNVSwgY2FuIHdlIHN0aWxsIGdldCB0byBpdD8gVGhhbmtmdWxseSwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGlzIGEgcHJvbWlzaW5nIHNpZ24uIFRoZSBQQ0kgZnV6emVyIHVzZXMgdGhlIGBzeXpfcGNpX2RldmljZV9zZXR1cGAgY2FsbCwgcHJvdmlkaW5nIHZlbmRvciBhbmQgZGV2aWNlIElEcy4gVGhlIG5leHQgcXVlc3Rpb24gaXMsIGRvZXMgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBnZXQgY2FsbGVkIGR1cmluZyBQQ0kgcHJvYmU/IElmIHNvLCB0aGlzIHBhdGNoIGlzIGFic29sdXRlbHkgd29ydGggY29uc2lkZXJpbmcgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM9MTA4MD1pbnQgY24yM3h4X3NyaW92X2NvbmZpZyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTEzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTEzODppbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTEzOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMjEwLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTIxMTpFWFBPUlRfU1lNQk9MX0dQTChzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTEyMTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuaD00Nj1zdHJ1Y3Qgb2N0X3ZmX3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5oLTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuaDo1NTppbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5oLTU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMzY9c3RhdGljIGludCBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzNTctXHRcdG9jdC1cdTAwM2VjaGlwX2lkID0gT0NURU9OX0NOMjNYWF9QRl9WSUQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoxMzU4Olx0XHRyZXQgPSBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShvY3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTM1OS1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjc1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXBgIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgY2FsbGVkIGZyb20gYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYC4gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGlzIGlzIGdldHRpbmcgY2FsbGVkIGR1cmluZyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIOKAkyBtYWtlcyBzZW5zZSBmb3IgaW5pdGlhbCBoYXJkd2FyZSBzZXR1cC4gTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFuZCB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBkb2luZy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlIG9mIGBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cGAgZGlyZWN0bHkuIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYGxpb19tYWluLmNgIGFuZCBzZWUgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIGFsbCBhYm91dC4gSG9wZWZ1bGx5LCB0aGUgY29kZSBjb21tZW50cyBhcmUgZGVzY3JpcHRpdmUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMDM9c3RhdGljIHZvaWQgbGlxdWlkaW9fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzMzItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoxMzMzOiAqIG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwIC0gSWRlbnRpZnkgdGhlIE9jdGVvbiBkZXZpY2UgYW5kIHRvIG1hcCB0aGUgQkFSIGFkZHJlc3Mgc3BhY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzMzQtICogQG9jdDogb2N0ZW9uIGRldmljZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTMzNS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjEzMzY6c3RhdGljIGludCBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTMzNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9NDAzND1zdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MDUxLVx0LyogSWRlbnRpZnkgdGhlIE9jdGVvbiB0eXBlIGFuZCBtYXAgdGhlIEJBUiBhZGRyZXNzIHNwYWNlLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6NDA1MjpcdGlmIChvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cChvY3Rlb25fZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDA1My1cdFx0ZGV2X2VycihcdTAwMjZvY3Rlb25fZGV2LVx1MDAzZXBjaV9kZXYtXHUwMDNlZGV2LCBcJiMzNDtDaGlwIHNwZWNpZmljIHNldHVwIGZhaWxlZFxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM2OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVHJhY2luZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpBbHJpZ2h0LCBsZXQgbWUganVzdCBtYWtlIHN1cmUgSSYjMzk7bSBmb2xsb3dpbmcgdGhpcyBjb3JyZWN0bHkuIFNvLCBgb2N0ZW9uX2RldmljZV9pbml0YCBpcyBpbnZva2VkLCBhbmQgdGhhdCBmdW5jdGlvbi4uLiBhaCwgdGhhdCYjMzk7cyBjYWxsZWQgZnJvbSBgbGlxdWlkaW9fcHJvYmVgLCBpc24mIzM5O3QgaXQ/IEp1c3Qgd2FudGluZyB0byBtYWtlIGNlcnRhaW4gSSYjMzk7bSBub3QgbWlzc2luZyBhIHN0ZXAgaW4gdGhlIGRldmljZSBpbml0aWFsaXphdGlvbi4gR290dGEga2VlcCB0aGUgd2hvbGUgcGljdHVyZSBjbGVhciBpbiBteSBoZWFkLCBlc3BlY2lhbGx5IHdoZW4gZGl2aW5nIGRlZXAgaW50byB0aGVzZSBkcml2ZXIgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29jdGVvbl9kZXZpY2VfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MTM5PXN0YXRpYyBpbnQgb2N0ZW9uX2RiZ19jb25zb2xlX3ByaW50KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsIHUzMiBjb25zb2xlX251bSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xNDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoxNDI6c3RhdGljIGludCBvY3Rlb25fZGV2aWNlX2luaXQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xNDMtc3RhdGljIGludCBsaXF1aWRpb19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTgyMz1saXF1aWRpb19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy04NjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo4NjY6XHRpZiAob2N0ZW9uX2RldmljZV9pbml0KG9jdF9kZXYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy04NjctXHRcdGNvbXBsZXRlKFx1MDAyNmhzLVx1MDAzZWluaXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTM5ODA9b2N0ZW9uX3JlY3ZfdmZfZHJ2X25vdGljZShzdHJ1Y3Qgb2N0ZW9uX3JlY3ZfaW5mbyAqcmVjdl9pbmZvLCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjQwMzE6ICogb2N0ZW9uX2RldmljZV9pbml0IC0gRGV2aWNlIGluaXRpYWxpemF0aW9uIGZvciBlYWNoIE9jdGVvbiBkZXZpY2UgdGhhdCBpcyBwcm9iZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTQwMzItICogQG9jdGVvbl9kZXY6ICBvY3Rlb24gZGV2aWNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MDMzLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6NDAzNDpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2RldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTQwMzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTY5PXN0YXRpYyB2b2lkIGxpcXVpZGlvX3ZmX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzo3MDpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTcxLXN0YXRpYyBpbnQgbGlxdWlkaW9fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0zNzk9bGlxdWlkaW9fdmZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtNDA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6NDA1Olx0aWYgKG9jdGVvbl9kZXZpY2VfaW5pdChvY3RfZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtNDA2LVx0XHRsaXF1aWRpb192Zl9yZW1vdmUocGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MjIzMD1zdGF0aWMgaW50IGxpcXVpZGlvX2luaXRfbmljX21vZHVsZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIyNjQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoyMjY1OiAqIG9jdGVvbl9kZXZpY2VfaW5pdCAtIERldmljZSBpbml0aWFsaXphdGlvbiBmb3IgZWFjaCBPY3Rlb24gZGV2aWNlIHRoYXQgaXMgcHJvYmVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY2LSAqIEBvY3Q6ICBvY3Rlb24gZGV2aWNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MjI2ODpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY3OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgUENJIFByb2JlIEZpeCoqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWssIHNwZWNpZmljYWxseSBvbiB0aGUgZXJyb3IgcGF0aCB3aXRoaW4gYGxpcXVpZGlvX3Byb2JlYC4gVGhpcyBmdW5jdGlvbiBpcywgb2YgY291cnNlLCBhIFBDSSBwcm9iZSBmdW5jdGlvbiwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtDYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICpyZWFjaCogdGhpcz8mIzM0OyBUaGUgYW5zd2VyLCBhcyBJIHJlY2FsbCwgaXMgdGhhdCB5ZXMsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBsaXF1aWRpb19wcm9iZWAsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSByZWFjaGVkIHZpYSBzeXprYWxsZXImIzM5O3MgYHN5el9wY2lfZGV2aWNlX3NldHVwYCwgb3Igc2ltaWxhciB2UENJIGZ1enppbmcgYXBwcm9hY2hlcy4KCkJ1dCB3YWl0LCB0aGUgcGF0Y2ggKm9ubHkqIGFkZHJlc3NlcyBhbiBlcnJvciBwYXRoLiBJcyB0aGlzIGV2ZW4gd29ydGggb3VyIHRpbWUgdG8gZnV6ej8gSSBuZWVkIHRvIGFwcGx5IHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhLiBJZiB0aGUgcGF0Y2ggJiMzNDtvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LCB0aGVuIHRoZSBhbnN3ZXIgaXMgJiMzNDtubyYjMzQ7LiBTbywgY2FuIHdlIHJlYWNoIENhdml1bSBMaXF1aWRJTyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/CgpUaGlua2luZyBhYm91dCBzeXprYWxsZXIsIGl0ICpkb2VzKiBoYXZlIGEgdlBDSSBmdXp6ZXIsIHdoaWNoIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBlbXVsYXRlIGFyYml0cmFyeSBQQ0kgZGV2aWNlcy4gSXQgYWNjb21wbGlzaGVzIHRoaXMgZWl0aGVyIGJ5IGhvb2tpbmcgaW50byB0aGUgUENJIHN1YnN5c3RlbSBvciBlbXBsb3lpbmcgYSB2aXJ0dWFsIFBDSSBidXMsIGFuZCBpdCBjYW4gdHJpZ2dlciBwcm9iZSBmdW5jdGlvbnMgb2YgKmFueSogUENJIGRyaXZlciBieSBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcy4KCkJ1dCBoZXJlJiMzOTtzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBkb2VzIHRoZSB2UENJIGZ1enplciAqZ2VudWluZWx5KiBlbXVsYXRlIHRoZSBkZXZpY2UmIzM5O3MgQkFScyAoQmFzZSBBZGRyZXNzIFJlZ2lzdGVycykgYW5kIHJlZ2lzdGVycyBzdWZmaWNpZW50bHkgd2VsbCB0byBwZW5ldHJhdGUgZGVlcGx5IGludG8gdGhlIGBwcm9iZWAgZnVuY3Rpb24/IEkgYmVsaWV2ZSB0aGUgYW5zd2VyIGlzIHllcy4gSSBrbm93IHN5emthbGxlciBjYW4gcHJvdmlkZSBmYWtlIEJBUnMgYW5kIG1lbW9yeS1tYXBwZWQgSS9PIHJlZ2lvbnMuIFRoYXQmIzM5O3MgYSBrZXkgY2FwYWJpbGl0eS4KClNvLCBpdCAqYXBwZWFycyogcHJvbWlzaW5nLiBCZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzcGVjaWZpYyBDT05GSUdzIG5lZWRlZCB0byBlbmFibGUgdGhlIENhdml1bSBMaXF1aWRJTyBkZXZpY2UsIHdoaWNoIHdvdWxkIHJlbmRlciB0aGUgd2hvbGUgZXhlcmNpc2UgdXNlbGVzcyB3aXRob3V0IHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0xJUVVJRElPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MSVFVSURJT19DT1JFKSAmIzQzOz0gbGlxdWlkaW8tY29yZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtNy1saXF1aWRpby1jb3JlLXkgOj0gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0xJUVVJRElPKSAmIzQzOz0gbGlxdWlkaW8ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTIzLWxpcXVpZGlvLXkgOj0gbGlvX21haW4ubyBvY3Rlb25fY29uc29sZS5vIGxpb192Zl9yZXAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19MSVFVSURJT19WRikgJiM0Mzs9IGxpcXVpZGlvX3ZmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZS0yNi1saXF1aWRpb192Zi15IDo9IGxpb192Zl9tYWluLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jPTQwNT1pbnQgY24yM3h4X29jdGVvbl9wZnZmX2hhbmRzaGFrZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfdmZfZGV2aWNlLmMtNDIzLVx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcdTAwMjZtYm94X2NtZC5kYXRhWzBdKS1cdTAwM2VtYWpvciA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQyNDpcdFx0XHRcdFx0XHRMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT047XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jLTQyNS1cdCgoc3RydWN0IGxpb192ZXJzaW9uICopXHUwMDI2bWJveF9jbWQuZGF0YVswXSktXHUwMDNlbWlub3IgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYzo0MjY6XHRcdFx0XHRcdFx0TElRVUlESU9fQkFTRV9NSU5PUl9WRVJTSU9OO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00MjctXHQoKHN0cnVjdCBsaW9fdmVyc2lvbiAqKVx1MDAyNm1ib3hfY21kLmRhdGFbMF0pLVx1MDAzZW1pY3JvID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfdmZfZGV2aWNlLmM6NDI4Olx0XHRcdFx0XHRcdExJUVVJRElPX0JBU0VfTUlDUk9fVkVSU0lPTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfdmZfZGV2aWNlLmMtNDI5LVx0bWJveF9jbWQucV9ubyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQ1MjpcdHZmbWFqb3IgPSBMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT047XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jLTQ1My1cdHBmbWFqb3IgPSByZXQgXHUwMDNlXHUwMDNlIDE2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jPTE0NTY9dm9pZCBsaW9fZmV0Y2hfc3RhdHMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTE0NjgtXHRcdGlmICghKG9jdF9kZXYtXHUwMDNldmZzdGF0c19wb2xsICUgTElPX1ZGU1RBVFNfUE9MTCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYzoxNDY5Olx0XHQgICAgKG9jdF9kZXYtXHUwMDNlZndfaW5mby5hcHBfY2FwX2ZsYWdzIFx1MDAyNiBMSVFVSURJT19TUE9PRkNIS19DQVApIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMTQ3MC1cdFx0ICAgIG9jdF9kZXYtXHUwMDNlc3Jpb3ZfaW5mby5udW1fdmZzX2FsbG9jZWQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0xNTE2LWxpb19mZXRjaF9zdGF0c19leGl0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmM6MTUxNzpcdHRpbWVfaW5famlmZmllcyA9IG1zZWNzX3RvX2ppZmZpZXMoTElRVUlESU9fTkRFVl9TVEFUU19QT0xMX1RJTUVfTVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMTUxOC1cdGlmIChpZnN0YXRlX2NoZWNrKGxpbywgTElPX0lGU1RBVEVfUlVOTklORykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM9OTg4PXN0YXRpYyBpbnQgbGlvXzIzeHhfcmVjb25maWd1cmVfcXVldWVfY291bnQoc3RydWN0IGxpbyAqbGlvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTEwMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzoxMDE0Olx0dmRhdGEtXHUwMDNlbWFqb3IgPSAoX19mb3JjZSB1MTYpY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jOjEwMTU6XHR2ZGF0YS1cdTAwM2VtaW5vciA9IChfX2ZvcmNlIHUxNiljcHVfdG9fYmUxNihMSVFVSURJT19CQVNFX01JTk9SX1ZFUlNJT04pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM6MTAxNjpcdHZkYXRhLVx1MDAzZW1pY3JvID0gKF9fZm9yY2UgdTE2KWNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUlDUk9fVkVSU0lPTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0xMDE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jPTI0MjM9c3RhdGljIGludCBsaW9fc2V0X2ludHJfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0yNDQ4LVx0XHRcdGRldl9lcnIoXHUwMDI2b2N0LVx1MDAzZXBjaV9kZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM6MjQ0OTpcdFx0XHRcdFwmIzM0O0xJUVVJRElPOiBJbnZhbGlkIHR4LWZyYW1lczolZC4gUmFuZ2UgaXMgbWluOiVkIG1heDolZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTI0NTAtXHRcdFx0XHRpbnRyX2NvYWwtXHUwMDNldHhfbWF4X2NvYWxlc2NlZF9mcmFtZXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9NzY9c3RhdGljIGludCBvY3Rlb25fY29uc29sZV9kZWJ1Z19lbmFibGVkKHUzMiBjb25zb2xlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTgxLS8qIFBvbGxpbmcgaW50ZXJ2YWwgZm9yIGRldGVybWluaW5nIHdoZW4gTklDIGFwcGxpY2F0aW9uIGlzIGFsaXZlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo4MjojZGVmaW5lIExJUVVJRElPX1NUQVJURVJfUE9MTF9JTlRFUlZBTF9NUyAxMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODQtLyogcnVudGltZSBsaW5rIHF1ZXJ5IGludGVydmFsICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo4NTojZGVmaW5lIExJUVVJRElPX0xJTktfUVVFUllfSU5URVJWQUxfTVMgICAgICAgICAxMDAwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy04Ni0vKiB1cGRhdGUgbG9jYWx0aW1lIHRvIG9jdGVvbiBmaXJtd2FyZSBldmVyeSA2MCBzZWNvbmRzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMDM9c3RhdGljIHZvaWQgbGlxdWlkaW9fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzMTItXHRpZiAoIW9jdF9kZXYtXHUwMDNlb2N0ZW9uX2lkIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MTMxMzpcdCAgICBvY3RfZGV2LVx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcdTAwMjYgTElRVUlESU9fU1dJVENIREVWX0NBUClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzMTQtXHRcdGxpb192Zl9yZXBfbW9kZXhpdCgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTE3NjQ9c3RhdGljIGludCBsaXF1aWRpb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTgxMC1cdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZsaW8tXHUwMDNlc3RhdHNfd2sud29yaywgbXNlY3NfdG9famlmZmllc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MTgxMTpcdFx0XHRcdFx0KExJUVVJRElPX05ERVZfU1RBVFNfUE9MTF9USU1FX01TKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xODEyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTI4NTE9c3RhdGljIGludCBsaXF1aWRpb19zZXRfdmZfc3Bvb2ZjaGsoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHZmaWR4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI4NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyODU5Olx0aWYgKCEob2N0LVx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcdTAwMjYgTElRVUlESU9fU1BPT0ZDSEtfQ0FQKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjg2MC1cdFx0bmV0aWZfaW5mbyhsaW8sIGRydiwgbGlvLVx1MDAzZW5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zMTI1PWxpcXVpZGlvX2Vzd2l0Y2hfbW9kZV9zZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssIHUxNiBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTMxMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozMTM1Olx0aWYgKCEob2N0LVx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcdTAwMjYgTElRVUlESU9fU1dJVENIREVWX0NBUCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zMTM2LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zMzIyPXN0YXRpYyBpbnQgc2V0dXBfbmljX2RldmljZXMoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzM2OS1cdFx0KigodTY0ICopdmRhdGEpID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMzNzA6XHRcdHZkYXRhLVx1MDAzZW1ham9yID0gY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMzNzE6XHRcdHZkYXRhLVx1MDAzZW1pbm9yID0gY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NSU5PUl9WRVJTSU9OKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMzNzI6XHRcdHZkYXRhLVx1MDAzZW1pY3JvID0gY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NSUNST19WRVJTSU9OKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTMzNzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ0MC1cdFx0ZndfdmVyID0gb2N0ZW9uX2Rldi1cdTAwM2Vmd19pbmZvLmxpcXVpZGlvX2Zpcm13YXJlX3ZlcnNpb247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNDQxOlx0XHRpZiAobWVtY21wKExJUVVJRElPX0JBU0VfVkVSU0lPTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM0NDItXHRcdFx0ICAgZndfdmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzQ0MzpcdFx0XHQgICBzdHJsZW4oTElRVUlESU9fQkFTRV9WRVJTSU9OKSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM0NDQtXHRcdFx0ZGV2X2VycihcdTAwMjZvY3Rlb25fZGV2LVx1MDAzZXBjaV9kZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ0NS1cdFx0XHRcdFwmIzM0O1VubWF0Y2hlZCBmaXJtd2FyZSB2ZXJzaW9uLiBFeHBlY3RlZCAlcy54LCBnb3QgJXMuXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzQ0NjpcdFx0XHRcdExJUVVJRElPX0JBU0VfVkVSU0lPTiwgZndfdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM0NDctXHRcdFx0V1JJVEVfT05DRShzYy1cdTAwM2VjYWxsZXJfaXNfZG9uZSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ1Ni1cdFx0LyogZXh0cmFjdCBtaWNybyB2ZXJzaW9uIGZpZWxkOyBwb2ludCBwYXN0ICYjMzk7XHUwMDNjbWFqXHUwMDNlLlx1MDAzY21pblx1MDAzZS4mIzM5OyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzQ1NzpcdFx0bWljcm9fdmVyID0gZndfdmVyICYjNDM7IHN0cmxlbihMSVFVSURJT19CQVNFX1ZFUlNJT04pICYjNDM7IDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDU4LVx0XHRpZiAoa3N0cnRvdWwobWljcm9fdmVyLCAxMCwgXHUwMDI2bWljcm8pICE9IDApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDU5LVx0XHRcdG1pY3JvID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM0NjA6XHRcdG9jdGVvbl9kZXYtXHUwMDNlZndfaW5mby52ZXIubWFqID0gTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzQ2MTpcdFx0b2N0ZW9uX2Rldi1cdTAwM2Vmd19pbmZvLnZlci5taW4gPSBMSVFVSURJT19CQVNFX01JTk9SX1ZFUlNJT047XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDYyLVx0XHRvY3Rlb25fZGV2LVx1MDAzZWZ3X2luZm8udmVyLnJldiA9IG1pY3JvO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM2NzMtXHRcdGlmICgob2N0ZW9uX2Rldi1cdTAwM2Vmd19pbmZvLmFwcF9jYXBfZmxhZ3MgXHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNjc0Olx0XHQgICAgIExJUVVJRElPX1RJTUVfU1lOQ19DQVApIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzY3NS1cdFx0ICAgIHNldHVwX3N5bmNfb2N0ZW9uX3RpbWVfd3EobmV0ZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zODg1PXN0YXRpYyBpbnQgbGlxdWlkaW9faW5pdF9uaWNfbW9kdWxlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzkxMi1cdGlmICghb2N0LVx1MDAzZW9jdGVvbl9pZCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM5MTM6XHQgICAgb2N0LVx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcdTAwMjYgTElRVUlESU9fU1dJVENIREVWX0NBUCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzkxNC1cdFx0cmV0dmFsID0gbGlvX3ZmX3JlcF9tb2Rpbml0KCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9Mzk0MD1zdGF0aWMgdm9pZCBuaWNfc3RhcnRlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzk1Ni1cdFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNm9jdC1cdTAwM2VuaWNfcG9sbF93b3JrLndvcmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozOTU3Olx0XHRcdFx0ICAgICAgTElRVUlESU9fU1RBUlRFUl9QT0xMX0lOVEVSVkFMX01TKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM5NTgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz00MDM0PXN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTQxMjAtXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2b2N0ZW9uX2Rldi1cdTAwM2VuaWNfcG9sbF93b3JrLndvcmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo0MTIxOlx0XHRcdCAgICAgIExJUVVJRElPX1NUQVJURVJfUE9MTF9JTlRFUlZBTF9NUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MTIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTkwMz1zdGF0aWMgaW50IGxpcXVpZGlvX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy05MzItXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bGlvLVx1MDAzZXN0YXRzX3drLndvcmssIG1zZWNzX3RvX2ppZmZpZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjkzMzpcdFx0XHRcdFx0KExJUVVJRElPX05ERVZfU1RBVFNfUE9MTF9USU1FX01TKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy05MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTkxOT1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE5NjAtXHRcdCooKHU2NCAqKXZkYXRhKSA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxOTYxOlx0XHR2ZGF0YS1cdTAwM2VtYWpvciA9IGNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUFKT1JfVkVSU0lPTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxOTYyOlx0XHR2ZGF0YS1cdTAwM2VtaW5vciA9IGNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxOTYzOlx0XHR2ZGF0YS1cdTAwM2VtaWNybyA9IGNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUlDUk9fVkVSU0lPTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xOTY0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaC0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyMzojaWZuZGVmIF9fTElRVUlESU9fQ09NTU9OX0hfX1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjI0OiNkZWZpbmUgX19MSVFVSURJT19DT01NT05fSF9fXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjI4OiNkZWZpbmUgTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OIDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyOTojZGVmaW5lIExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTiA3XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg6MzA6I2RlZmluZSBMSVFVSURJT19CQVNFX01JQ1JPX1ZFUlNJT04gMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjMxOiNkZWZpbmUgTElRVUlESU9fQkFTRV9WRVJTSU9OICAgX19zdHJpbmdpZnkoTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OKSBcJiMzNDsuXCYjMzQ7IFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg6MzI6XHRcdFx0XHRfX3N0cmluZ2lmeShMSVFVSURJT19CQVNFX01JTk9SX1ZFUlNJT04pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oPTQzPWVudW0gb2N0ZW9uX3RhZ190eXBlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMTEyLS8qIEFwcCBzcGVjaWZpYyBjYXBhYmlsaXRpZXMgZnJvbSBmaXJtd2FyZSB0byBwZiBkcml2ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoxMTM6I2RlZmluZSBMSVFVSURJT19USU1FX1NZTkNfQ0FQIDB4MVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjExNDojZGVmaW5lIExJUVVJRElPX1NXSVRDSERFVl9DQVAgMHgyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg6MTE1OiNkZWZpbmUgTElRVUlESU9fU1BPT0ZDSEtfQ0FQICAweDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaC0xMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2ltYWdlLmgtMTctICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2ltYWdlLmg6MTg6I2lmbmRlZiBfTElRVUlESU9fSU1BR0VfSF9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oOjE5OiNkZWZpbmUgX0xJUVVJRElPX0lNQUdFX0hfXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9faW1hZ2UuaC0yMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9faW1hZ2UuaD00ND1zdHJ1Y3Qgb2N0ZW9uX2Zpcm13YXJlX2ZpbGVfaGVhZGVyIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9faW1hZ2UuaC01My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oOjU0OiNlbmRpZiAvKiBfTElRVUlESU9fSU1BR0VfSF8gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYz04MDc9aW50IG9jdGVvbl9kb3dubG9hZF9maXJtd2FyZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LCBjb25zdCB1OCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYy04NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYzo4NDI6XHRpZiAobWVtY21wKExJUVVJRElPX0JBU0VfVkVSU0lPTiwgaC1cdTAwM2V2ZXJzaW9uLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmM6ODQzOlx0XHQgICBzdHJsZW4oTElRVUlESU9fQkFTRV9WRVJTSU9OKSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jLTg0NC1cdFx0ZGV2X2VycihcdTAwMjZvY3QtXHUwMDNlcGNpX2Rldi1cdTAwM2VkZXYsIFwmIzM0O1VubWF0Y2hlZCBmaXJtd2FyZSB2ZXJzaW9uLiBFeHBlY3RlZCAlcy54LCBnb3QgJXMuXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmM6ODQ1Olx0XHRcdExJUVVJRElPX0JBU0VfVkVSU0lPTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jLTg0Ni1cdFx0XHRoLVx1MDAzZXZlcnNpb24pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jLTg1Ni1cdGRldl9pbmZvKFx1MDAyNm9jdC1cdTAwM2VwY2lfZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmlybXdhcmUgdmVyc2lvbjogJXNcXG5cJiMzNDssIGgtXHUwMDNldmVyc2lvbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYzo4NTc6XHRzbnByaW50ZihvY3QtXHUwMDNlZndfaW5mby5saXF1aWRpb19maXJtd2FyZV92ZXJzaW9uLCAzMiwgXCYjMzQ7TElRVUlESU86ICVzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmMtODU4LVx0XHQgaC1cdTAwM2V2ZXJzaW9uKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYz0yMzY9c3RhdGljIGludCBvY3Rlb25fbWJveF9wcm9jZXNzX2NtZChzdHJ1Y3Qgb2N0ZW9uX21ib3ggKm1ib3gsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmMtMjQ4LVx0XHQoKHN0cnVjdCBsaW9fdmVyc2lvbiAqKVx1MDAyNm1ib3hfY21kLVx1MDAzZWRhdGFbMF0pLVx1MDAzZW1ham9yID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jOjI0OTpcdFx0XHRMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT047XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYy0yNTAtXHRcdCgoc3RydWN0IGxpb192ZXJzaW9uICopXHUwMDI2bWJveF9jbWQtXHUwMDNlZGF0YVswXSktXHUwMDNlbWlub3IgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmM6MjUxOlx0XHRcdExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jLTI1Mi1cdFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcdTAwMjZtYm94X2NtZC1cdTAwM2VkYXRhWzBdKS1cdTAwM2VtaWNybyA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYzoyNTM6XHRcdFx0TElRVUlESU9fQkFTRV9NSUNST19WRVJTSU9OO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmMtMjU0LVx0XHRtZW1jcHkobWJveF9jbWQtXHUwMDNlbXNnLnMucGFyYW1zLCAodWludDhfdCAqKVx1MDAyNm9jdC1cdTAwM2VwZnZmX2hzd29yZCwgNik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uZXR3b3JrLmg9Mzg9c3RydWN0IGxpcXVpZGlvX2lmX2NmZ19yZXNwIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25ldHdvcmsuaC00NC0jZGVmaW5lIExJT19JRkNGR19XQUlUX1RJTUUgICAgMzAwMCAvKiBJbiBtaWxsaSBzZWNvbmRzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25ldHdvcmsuaDo0NTojZGVmaW5lIExJUVVJRElPX05ERVZfU1RBVFNfUE9MTF9USU1FX01TIDIwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uZXR3b3JrLmgtNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNTQyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBMaXF1aWQgSS9PIENvbmZpZ3VyYXRpb24gYW5kIENvZGUgTG9jYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiB0aGUgY29uZmlncyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUgYXJlIGBDT05GSUdfTElRVUlESU9gIGFuZCBgQ09ORklHX0xJUVVJRElPX0NPUkVgLiBTZWVtcyBwcmV0dHkgc3RhbmRhcmQgZm9yIExpcXVpZCBJL08uIEJ1dCBob2xkIG9uLCB0aGUgcGF0Y2ggbG9jYXRpb24gbGlzdGVkIGlzIGluIGBjbjIzeHhfcGZfZGV2aWNlLmNgLiBIbW0sIHRoYXQmIzM5O3Mgbm90IGV4YWN0bHkgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCBjb3JlIExpcXVpZCBJL08gZnVuY3Rpb25hbGl0eS4gQmVmb3JlIEkgZGl2ZSBpbiB0b28gZGVlcCwgSSBzaG91bGQgY2hlY2sgdGhlIGBNYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueXRoaW5nIHVudXN1YWwgZ29pbmcgb24gd2l0aCB0aGUgYnVpbGQgcHJvY2VzcyBvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCYjMzk7cyBhdCBwbGF5LiBUaGlzIHdpbGwgZ2l2ZSBtZSBzb21lIGNvbnRleHQgYmVmb3JlIEkgYW5hbHl6ZSB0aGUgY29kZSBkaXJlY3RseS4gTWF5YmUgdGhlIGBjbjIzeHhfcGZfZGV2aWNlLmNgIGZpbGUgaXMgc29tZWhvdyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIG9yIHBhcnQgb2YgYSBtb2R1bGU/IFRpbWUgdG8gZGlnIGEgYml0IGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y24yM3h4X3BmX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlPTc9bGlxdWlkaW8tY29yZS15IDo9IFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTE0LVx0XHRjbjY4eHhfZGV2aWNlLm9cdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZToxNTpcdFx0Y24yM3h4X3BmX2RldmljZS5vXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTE2LVx0XHRjbjIzeHhfdmZfZGV2aWNlLm9cdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0yNS0jaW5jbHVkZSBcJiMzNDtvY3Rlb25fZGV2aWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MjY6I2luY2x1ZGUgXCYjMzQ7Y24yM3h4X3BmX2RldmljZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTI3LSNpbmNsdWRlIFwmIzM0O29jdGVvbl9tYWluLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0zMS0jaW5jbHVkZSBcJiMzNDtjbjY2eHhfZGV2aWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jOjMyOiNpbmNsdWRlIFwmIzM0O2NuMjN4eF9wZl9kZXZpY2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmMtMzMtI2luY2x1ZGUgXCYjMzQ7Y24yM3h4X3ZmX2RldmljZS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQtI2luY2x1ZGUgXCYjMzQ7Y242OHh4X2RldmljZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNTojaW5jbHVkZSBcJiMzNDtjbjIzeHhfcGZfZGV2aWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM2LSNpbmNsdWRlIFwmIzM0O2xpcXVpZGlvX2ltYWdlLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2RldmljZS5jLTI5LSNpbmNsdWRlIFwmIzM0O2NuNjZ4eF9kZXZpY2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9kZXZpY2UuYzozMDojaW5jbHVkZSBcJiMzNDtjbjIzeHhfcGZfZGV2aWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fZGV2aWNlLmMtMzEtI2luY2x1ZGUgXCYjMzQ7Y24yM3h4X3ZmX2RldmljZS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9kcm9xLmMtMjktI2luY2x1ZGUgXCYjMzQ7Y242Nnh4X2RldmljZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2Ryb3EuYzozMDojaW5jbHVkZSBcJiMzNDtjbjIzeHhfcGZfZGV2aWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fZHJvcS5jLTMxLSNpbmNsdWRlIFwmIzM0O2NuMjN4eF92Zl9kZXZpY2UuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jLTI2LSNpbmNsdWRlIFwmIzM0O29jdGVvbl9tYWlsYm94LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jOjI3OiNpbmNsdWRlIFwmIzM0O2NuMjN4eF9wZl9kZXZpY2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmMtMjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jLTI5LSNpbmNsdWRlIFwmIzM0O2NuNjZ4eF9kZXZpY2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jOjMwOiNpbmNsdWRlIFwmIzM0O2NuMjN4eF9wZl9kZXZpY2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jLTMxLSNpbmNsdWRlIFwmIzM0O2NuMjN4eF92Zl9kZXZpY2UuaFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzczOQoJCQkJCQkJb3V0cHV0OiA1NwoJCQkJCQkJdGhvdWdodHM6IDQxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyByZWxhdGVkIHRvIGBMSVFVSURJT2AgYW5kIHRoZSBgY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBJdCYjMzk7cyBidWlsdCB3aXRoIGBDT05GSUdfTElRVUlESU9fQ09SRWAgd2hpY2ggaXMgc2VsZWN0ZWQgYnkgYENPTkZJR19MSVFVSURJT2AgYW5kIGBDT05GSUdfTElRVUlESU9fVkZgLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhhdCBpdCBtb2RpZmllcyBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtjYW4gc3l6a2FsbGVyIGhpdCB0aGlzIHdpdGggaXRzIHZQQ0kgZnV6emVyPyYjMzQ7IFRoZSBhbnN3ZXIsIGFzIEkgcmVjYWxsLCBpcyB5ZXMsIHN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIHRyaWdnZXIgcHJvYmUgZnVuY3Rpb25zLgoKSG93ZXZlciwgYWZ0ZXIgYSBjbG9zZXIgbG9vaywgdGhlIHBhdGNoIGlzIGp1c3QgYWRkaW5nIGBnb3RvIGVycl91bm1hcF9iYXIwYCBhbmQgYGdvdG8gZXJyX3VubWFwX2JhcjFgIHRvIHVubWFwIEJBUnMgb24gYW4gZXJyb3IgcGF0aC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogJiMzNDtJcyB0aGlzICp3b3J0aCogZnV6emluZz8mIzM0OyBJdCYjMzk7cyBhIHNpbXBsZSBlcnJvciBwYXRoIGZpeC4gTm8gbmV3IGZlYXR1cmVzLCBqdXN0IHJlc291cmNlIGxlYWsgcHJldmVudGlvbi4gRXJyb3IgcGF0aHMgYXJlIHR5cGljYWxseSB3b3J0aCBpbnZlc3RpZ2F0aW5nIGJlY2F1c2UgdGhleSBjYW4gYmUgcHJvbmUgdG8gZG91YmxlLWZyZWVzIG9yIHVzZS1hZnRlci1mcmVlcywgYnV0IGhlcmUsIGl0JiMzOTtzIGp1c3QgdW5tYXBwaW5nIEJBUnMuIFRoYXQgZmVlbHMgcHJldHR5IGJlbmlnbi4KCkJ1dCB3YWl0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gVGhleSBleHBsaWNpdGx5IHNheSAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gbW9kaWZpY2F0aW9ucyB0by4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuLi4mIzM0OyBTbywgY2FuIHN5emthbGxlciYjMzk7cyB2UENJIHJlYWNoIHRoaXM/IFRoZSBQQ0kgZnV6emVyICpjYW4qIHJlYWNoIFBDSSBwcm9iZSBmdW5jdGlvbnMuIEJ1dCBkb2VzIGl0ICplbXVsYXRlKiB0aGUgZGV2aWNlIGVub3VnaCB0byBnZXQgdG8gYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYD8gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgdG8gYmUgc3VyZSwgYnV0IGl0IHNvdW5kcyBsaWtlIGEgcG9zc2libGUgeWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz0xMDgwPWludCBjbjIzeHhfc3Jpb3ZfY29uZmlnKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMTM4OmludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTEyMTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMjExOkVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTIxMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5MTEKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgZnVuY3Rpb24uIEkgc2VlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIENOMjN4eCBwbGF0Zm9ybSBhbmQgT2N0ZW9uIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgYSBQRiAoUGh5c2ljYWwgRnVuY3Rpb24pIGRldmljZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgbGlrZWx5IHBhcnQgb2YgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBvciBicmluZy11cCBzZXF1ZW5jZS4gV2UmIzM5O3JlIHByb2JhYmx5IGNvbmZpZ3VyaW5nIHRoaXMgUEYgZGV2aWNlIGZvciBhIHBhcnRpY3VsYXIgbmV0d29yayBvciBoYXJkd2FyZSBmdW5jdGlvbi4gS25vd2luZyB0aGUgQ04yM3h4IGFyY2hpdGVjdHVyZSwgSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGNhbGxzIHJlbGF0ZWQgdG8gcmVnaXN0ZXIgYWNjZXNzLCBpbnRlcnJ1cHQgc2V0dXAsIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLiBUaGlzIHdpbGwgcHJvYmFibHkgaW5jbHVkZSBjb25maWd1cmluZyB0aGUgUENJZSBsaW5rLCBzZXR0aW5nIHVwIERNQSBjaGFubmVscywgYW5kIGVuYWJsaW5nIGFueSBuZWNlc3NhcnkgaGFyZHdhcmUgYWNjZWxlcmF0b3JzLiBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHNlZSBob3cgaXQgaGFuZGxlcyBlcnJvciBjb25kaXRpb25zIGFuZCB3aGF0IGtpbmQgb2YgZGVidWdnaW5nIGluZm9ybWF0aW9uIGl0IHByb3ZpZGVzLiBJdCB3aWxsIGJlIGludGVyZXN0aW5nIHRvIHNlZSBob3cgdGhlIGNvZGUgaGFuZGxlcyBtdWx0aS1mdW5jdGlvbiBkZXZpY2VzIG9yIGlmIGl0IGFzc3VtZXMgYSBzaW5nbGUgUEYgcGVyIGRldmljZS4gVWx0aW1hdGVseSwgSSYjMzk7bSBleHBlY3RpbmcgdG8gZ2V0IHRoaXMgZGV2aWNlIHJlYWR5IGZvciBoaWdoZXItbGV2ZWwgbmV0d29yayBzdGFjayBpbnRlcmFjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEzOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTEzODpcdGludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuMTEzOTpcdHtcbjExNDA6XHRcdHUzMiBkYXRhMzI7XG4xMTQxOlx0XHR1NjQgQkFSMCwgQkFSMTtcbjExNDI6XHRcbjExNDM6XHRcdHBjaV9yZWFkX2NvbmZpZ19kd29yZChvY3QtXHUwMDNlcGNpX2RldiwgUENJX0JBU0VfQUREUkVTU18wLCBcdTAwMjZkYXRhMzIpO1xuMTE0NDpcdFx0QkFSMCA9ICh1NjQpKGRhdGEzMiBcdTAwMjYgfjB4Zik7XG4xMTQ1Olx0XHRwY2lfcmVhZF9jb25maWdfZHdvcmQob2N0LVx1MDAzZXBjaV9kZXYsIFBDSV9CQVNFX0FERFJFU1NfMSwgXHUwMDI2ZGF0YTMyKTtcbjExNDY6XHRcdEJBUjAgfD0gKCh1NjQpZGF0YTMyIFx1MDAzY1x1MDAzYyAzMik7XG4xMTQ3Olx0XHRwY2lfcmVhZF9jb25maWdfZHdvcmQob2N0LVx1MDAzZXBjaV9kZXYsIFBDSV9CQVNFX0FERFJFU1NfMiwgXHUwMDI2ZGF0YTMyKTtcbjExNDg6XHRcdEJBUjEgPSAodTY0KShkYXRhMzIgXHUwMDI2IH4weGYpO1xuMTE0OTpcdFx0cGNpX3JlYWRfY29uZmlnX2R3b3JkKG9jdC1cdTAwM2VwY2lfZGV2LCBQQ0lfQkFTRV9BRERSRVNTXzMsIFx1MDAyNmRhdGEzMik7XG4xMTUwOlx0XHRCQVIxIHw9ICgodTY0KWRhdGEzMiBcdTAwM2NcdTAwM2MgMzIpO1xuMTE1MTpcdFxuMTE1MjpcdFx0aWYgKCFCQVIwIHx8ICFCQVIxKSB7XG4xMTUzOlx0XHRcdGlmICghQkFSMClcbjExNTQ6XHRcdFx0XHRkZXZfZXJyKFx1MDAyNm9jdC1cdTAwM2VwY2lfZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZGV2aWNlIEJBUjAgdW5hc3NpZ25lZFxcblwmIzM0Oyk7XG4xMTU1Olx0XHRcdGlmICghQkFSMSlcbjExNTY6XHRcdFx0XHRkZXZfZXJyKFx1MDAyNm9jdC1cdTAwM2VwY2lfZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZGV2aWNlIEJBUjEgdW5hc3NpZ25lZFxcblwmIzM0Oyk7XG4xMTU3Olx0XHRcdHJldHVybiAxO1xuMTE1ODpcdFx0fVxuMTE1OTpcdFxuMTE2MDpcdFx0aWYgKG9jdGVvbl9tYXBfcGNpX2Jhcngob2N0LCAwLCAwKSlcbjExNjE6XHRcdFx0cmV0dXJuIDE7XG4xMTYyOlx0XG4xMTYzOlx0XHRpZiAob2N0ZW9uX21hcF9wY2lfYmFyeChvY3QsIDEsIE1BWF9CQVIxX0lPUkVNQVBfU0laRSkpIHtcbjExNjQ6XHRcdFx0ZGV2X2VycihcdTAwMjZvY3QtXHUwMDNlcGNpX2Rldi1cdTAwM2VkZXYsIFwmIzM0OyVzIENOMjNYWCBCQVIxIG1hcCBmYWlsZWRcXG5cJiMzNDssXG4xMTY1Olx0XHRcdFx0X19mdW5jX18pO1xuMTE2NjpcdFx0XHRnb3RvIGVycl91bm1hcF9iYXIwO1xuMTE2NzpcdFx0fVxuMTE2ODpcdFxuMTE2OTpcdFx0aWYgKGNuMjN4eF9nZXRfcGZfbnVtKG9jdCkgIT0gMClcbjExNzA6XHRcdFx0Z290byBlcnJfdW5tYXBfYmFyMTtcbjExNzE6XHRcbjExNzI6XHRcdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpXG4xMTczOlx0XHRcdGdvdG8gZXJyX3VubWFwX2JhcjE7XG4xMTc0Olx0XG4xMTc1Olx0XHRvY3Rlb25fd3JpdGVfY3NyNjQob2N0LCBDTjIzWFhfU0xJX01BQ19DUkVESVRfQ05ULCAweDNGODAyMDgwODAyMDgwVUxMKTtcbjExNzY6XHRcbjExNzc6XHRcdG9jdC1cdTAwM2Vmbl9saXN0LnNldHVwX2lxX3JlZ3MgPSBjbjIzeHhfc2V0dXBfaXFfcmVncztcbjExNzg6XHRcdG9jdC1cdTAwM2Vmbl9saXN0LnNldHVwX29xX3JlZ3MgPSBjbjIzeHhfc2V0dXBfb3FfcmVncztcbjExNzk6XHRcdG9jdC1cdTAwM2Vmbl9saXN0LnNldHVwX21ib3ggPSBjbjIzeHhfc2V0dXBfcGZfbWJveDtcbjExODA6XHRcdG9jdC1cdTAwM2Vmbl9saXN0LmZyZWVfbWJveCA9IGNuMjN4eF9mcmVlX3BmX21ib3g7XG4xMTgxOlx0XG4xMTgyOlx0XHRvY3QtXHUwMDNlZm5fbGlzdC5wcm9jZXNzX2ludGVycnVwdF9yZWdzID0gY24yM3h4X2ludGVycnVwdF9oYW5kbGVyO1xuMTE4MzpcdFx0b2N0LVx1MDAzZWZuX2xpc3QubXNpeF9pbnRlcnJ1cHRfaGFuZGxlciA9IGNuMjN4eF9wZl9tc2l4X2ludGVycnVwdF9oYW5kbGVyO1xuMTE4NDpcdFxuMTE4NTpcdFx0b2N0LVx1MDAzZWZuX2xpc3Quc29mdF9yZXNldCA9IGNuMjN4eF9wZl9zb2Z0X3Jlc2V0O1xuMTE4NjpcdFx0b2N0LVx1MDAzZWZuX2xpc3Quc2V0dXBfZGV2aWNlX3JlZ3MgPSBjbjIzeHhfc2V0dXBfcGZfZGV2aWNlX3JlZ3M7XG4xMTg3Olx0XHRvY3QtXHUwMDNlZm5fbGlzdC51cGRhdGVfaXFfcmVhZF9pZHggPSBjbjIzeHhfdXBkYXRlX3JlYWRfaW5kZXg7XG4xMTg4Olx0XG4xMTg5Olx0XHRvY3QtXHUwMDNlZm5fbGlzdC5iYXIxX2lkeF9zZXR1cCA9IGNuMjN4eF9iYXIxX2lkeF9zZXR1cDtcbjExOTA6XHRcdG9jdC1cdTAwM2Vmbl9saXN0LmJhcjFfaWR4X3dyaXRlID0gY24yM3h4X2JhcjFfaWR4X3dyaXRlO1xuMTE5MTpcdFx0b2N0LVx1MDAzZWZuX2xpc3QuYmFyMV9pZHhfcmVhZCA9IGNuMjN4eF9iYXIxX2lkeF9yZWFkO1xuMTE5MjpcdFxuMTE5MzpcdFx0b2N0LVx1MDAzZWZuX2xpc3QuZW5hYmxlX2ludGVycnVwdCA9IGNuMjN4eF9lbmFibGVfcGZfaW50ZXJydXB0O1xuMTE5NDpcdFx0b2N0LVx1MDAzZWZuX2xpc3QuZGlzYWJsZV9pbnRlcnJ1cHQgPSBjbjIzeHhfZGlzYWJsZV9wZl9pbnRlcnJ1cHQ7XG4xMTk1Olx0XG4xMTk2Olx0XHRvY3QtXHUwMDNlZm5fbGlzdC5lbmFibGVfaW9fcXVldWVzID0gY24yM3h4X2VuYWJsZV9pb19xdWV1ZXM7XG4xMTk3Olx0XHRvY3QtXHUwMDNlZm5fbGlzdC5kaXNhYmxlX2lvX3F1ZXVlcyA9IGNuMjN4eF9kaXNhYmxlX2lvX3F1ZXVlcztcbjExOTg6XHRcbjExOTk6XHRcdGNuMjN4eF9zZXR1cF9yZWdfYWRkcmVzcyhvY3QpO1xuMTIwMDpcdFxuMTIwMTpcdFx0b2N0LVx1MDAzZWNvcHJvY19jbG9ja19yYXRlID0gMTAwMDAwMFVMTCAqIGNuMjN4eF9jb3Byb2Nlc3Nvcl9jbG9jayhvY3QpO1xuMTIwMjpcdFxuMTIwMzpcdFx0cmV0dXJuIDA7XG4xMjA0Olx0XG4xMjA1Olx0ZXJyX3VubWFwX2JhcjE6XG4xMjA2Olx0XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAxKTtcbjEyMDc6XHRlcnJfdW5tYXBfYmFyMDpcbjEyMDg6XHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xuMTIwOTpcdFx0cmV0dXJuIDE7XG4xMjEwOlx0fVxuMTIxMTpcdEVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTtcbjEyMTI6XHRcbjEyMTM6XHRpbnQgY24yM3h4X2Z3X2xvYWRlZChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuMTIxNDpcdHtcbjEyMTU6XHRcdHU2NCB2YWw7XG4xMjE2Olx0XG4xMjE3Olx0XHQvKiBJZiB0aGVyZSYjMzk7cyBtb3JlIHRoYW4gb25lIGFjdGl2ZSBQRiBvbiB0aGlzIE5JQywgdGhlbiB0aGF0XG4xMjE4Olx0XHQgKiBpbXBsaWVzIHRoYXQgdGhlIE5JQyBmaXJtd2FyZSBpcyBsb2FkZWQgYW5kIHJ1bm5pbmcuIFRoaXMgY2hlY2tcbjEyMTk6XHRcdCAqIHByZXZlbnRzIGEgcmFyZSBmYWxzZSBuZWdhdGl2ZSB0aGF0IG1pZ2h0IG9jY3VyIGlmIHdlIG9ubHkgcmVsaWVkXG4xMjIwOlx0XHQgKiBvbiBjaGVja2luZyB0aGUgU0NSMl9CSVRfRldfTE9BREVEIGZsYWcuIFRoZSBmYWxzZSBuZWdhdGl2ZSB3b3VsZFxuMTIyMTpcdFx0ICogaGFwcGVuIGlmIHRoZSBQRiBkcml2ZXIgc2VlcyBTQ1IyX0JJVF9GV19MT0FERUQgYXMgY2xlYXJlZCBldmVuXG4xMjIyOlx0XHQgKiB0aG91Z2ggdGhlIGZpcm13YXJlIHdhcyBhbHJlYWR5IGxvYWRlZCBidXQgc3RpbGwgYm9vdGluZyBhbmQgaGFzIHlldFxuMTIyMzpcdFx0ICogdG8gc2V0IFNDUjJfQklUX0ZXX0xPQURFRC5cbjEyMjQ6XHRcdCAqL1xuMTIyNTpcdFx0aWYgKGF0b21pY19yZWFkKG9jdC1cdTAwM2VhZGFwdGVyX3JlZmNvdW50KSBcdTAwM2UgMSlcbjEyMjY6XHRcdFx0cmV0dXJuIDE7XG4xMjI3Olx0XG4xMjI4Olx0XHR2YWwgPSBvY3Rlb25fcmVhZF9jc3I2NChvY3QsIENOMjNYWF9TTElfU0NSQVRDSDIpO1xuMTIyOTpcdFx0cmV0dXJuICh2YWwgXHUwMDNlXHUwMDNlIFNDUjJfQklUX0ZXX0xPQURFRCkgXHUwMDI2IDFVTEw7XG4xMjMwOlx0fVxuMTIzMTpcdEVYUE9SVF9TWU1CT0xfR1BMKGNuMjN4eF9md19sb2FkZWQpO1xuMTIzMjpcdFxuMTIzMzpcdHZvaWQgY24yM3h4X3RlbGxfdmZfaXRzX21hY2FkZHJfY2hhbmdlZChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LCBpbnQgdmZpZHgsXG4xMjM0Olx0XHRcdFx0XHRcdHU4ICptYWMpXG4xMjM1Olx0e1xuMTIzNjpcdFx0aWYgKG9jdC1cdTAwM2Vzcmlvdl9pbmZvLnZmX2Rydl9sb2FkZWRfbWFzayBcdTAwMjYgQklUX1VMTCh2ZmlkeCkpIHtcbjEyMzc6XHRcdFx0c3RydWN0IG9jdGVvbl9tYm94X2NtZCBtYm94X2NtZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxNzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBoYW5kbGluZyBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZml4LCBhZGRyZXNzaW5nIGEgbWVtb3J5IGxlYWsuIEFuZCB0aGUgY29kZSBwYXRoICppcyogcmVhY2hhYmxlIOKAkyBldmVuIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aGFua3MgdG8gdlBDSS4gRXJyb3IgcGF0aCBmaXhlcyBhcmUgZ2VuZXJhbGx5IGdvb2QgZnV6emluZyB0YXJnZXRzIHRvIGNhdGNoIGFueSBkb3VibGUtZnJlZXMgb3Igc2ltaWxhciBwcm9ibGVtcyB0aGF0IG1pZ2h0IGJlIGludHJvZHVjZWQuIFRoZSBmaXggaXRzZWxmIGlzIHNpbXBsZSwganVzdCB1bm1hcHBpbmcgQkFScy4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoZXJlIGFyZSBubyBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcGF0Y2guIE5vcGUsIGp1c3QgdGhlIHVubWFwcGluZy4gT2theSwgc28geWVzLCB3b3J0aCBmdXp6aW5nLCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb2RlLgoKQnV0IHdhaXQsIEkgbmVlZCB0byBjaGVjayB0aGUgaW5zdHJ1Y3Rpb25zISBUaGV5IHNheSAqbm90KiB0byBmdXp6IGlmIHRoZSBjaGFuZ2UgaXMgYSBkb2N1bWVudGF0aW9uIHVwZGF0ZSwgY29zbWV0aWMgbG9nZ2luZywgbnVtZXJpYyBjb25zdGFudCBhZGp1c3RtZW50cyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCBvciBjb2RlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gTm9wZSwgdGhlIHZQQ0kgbWFrZXMgdGhpcyByZWFjaGFibGUuIFNvLCB0aGUgZGVjaXNpb24gaXMgc3RpbGwgdG8gZnV6eiwgV29ydGhGdXp6aW5nPXRydWUuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGZ1enppbmcgZm9jdXMuIFRoZSBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBJdCBhbHNvIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgY29uZmlnIG9wdGlvbnM6IGBMSVFVSURJT2AgYW5kIGBMSVFVSURJT19DT1JFYC4gSG9sZCBvbiwgYExJUVVJRElPX0NPUkVgIGlzbiYjMzk7dCBhIGRpcmVjdGx5IHVzZXItc2VsZWN0YWJsZSBvcHRpb24sIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IGBMSVFVSURJT2AhIEdvdHRhIHZlcmlmeSB0aGF0IGluIHRoZSBgS2NvbmZpZ2AgZm9yIGBMSVFVSURJT2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIExJUVVJRElPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTYyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIENhdml1bSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBDYXZpdW0tc3BlY2lmaWMgRXRoZXJuZXQgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIFRoaXMgaXMgdGhlIHBsYWNlIHdoZXJlIEkmIzM5O2xsIGZpbmQgYWxsIHRoZSBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0cyB0aGF0IGdvdmVybiBpdHMgYmVoYXZpb3Igd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBJ4oCZbSB0aGlua2luZyB0aGlzIGZpbGUgaG9sZHMgdGhlIGtleSB0byB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGV4YW1pbmUuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIExJUVVJRElPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz01ND1jb25maWcgQ0FWSVVNX1BUUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NjU6Y29uZmlnIExJUVVJRElPX0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY2LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6Njg6Y29uZmlnIExJUVVJRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy02OS1cdHRyaXN0YXRlIFwmIzM0O0Nhdml1bSBMaXF1aWRJTyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9ODQ9Y29uZmlnIE9DVEVPTl9NR01UX0VUSEVSTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo5NTpjb25maWcgTElRVUlESU9fVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk2LVx0dHJpc3RhdGUgXCYjMzQ7Q2F2aXVtIExpcXVpZElPIFZGIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MjIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOgoKKipDaGVja2luZyBhbmQgRW5hYmxpbmcgdGhlIExJUVVJRElPIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbiBoZXJlIGlzIGRlZmluaXRlbHkgYExJUVVJRElPYC4gTXkgcHJpbWFyeSB0YXNrIHdpbGwgYmUgdG8gaW50ZWdyYXRlIGBMSVFVSURJT2AgaW50byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIFRoYXQgc2hvdWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCBqdXN0IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYExJUVVJRElPYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBMb29rcyBsaWtlIHRoZXJlIGlzIG9uZSBkZXBlbmRlbmN5LCBgUENJYCwgdGhhdCBtdXN0IGFsc28gYmUgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTE2PWNvbmZpZyBUSFVOREVSX05JQ19QRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctMTctXHR0cmlzdGF0ZSBcJiMzNDtUaHVuZGVyIFBoeXNpY2FsIGZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6MTg6XHRkZXBlbmRzIG9uIDY0QklUIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTE5LVx0c2VsZWN0IFRIVU5ERVJfTklDX0JHWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTI4PWNvbmZpZyBUSFVOREVSX05JQ19WRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTMwLVx0aW1wbHkgQ0FWSVVNX1BUUFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6MzE6XHRkZXBlbmRzIG9uIDY0QklUIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTMyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTM1PWNvbmZpZ1x0VEhVTkRFUl9OSUNfQkdYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy0zNi1cdHRyaXN0YXRlIFwmIzM0O1RodW5kZXIgTUFDIGludGVyZmFjZSBkcml2ZXIgKEJHWClcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjM3Olx0ZGVwZW5kcyBvbiA2NEJJVCBcdTAwMjZcdTAwMjYgUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy0zOC1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz00NT1jb25maWdcdFRIVU5ERVJfTklDX1JHWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtUaHVuZGVyIE1BQyBpbnRlcmZhY2UgZHJpdmVyIChSR1gpXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo0NzpcdGRlcGVuZHMgb24gNjRCSVQgXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNDgtXHRzZWxlY3QgUEhZTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9NTQ9Y29uZmlnIENBVklVTV9QVFBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7Q2F2aXVtIFBUUCBjb3Byb2Nlc3NvciBhcyBQVFAgY2xvY2tcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjU2Olx0ZGVwZW5kcyBvbiA2NEJJVCBcdTAwMjZcdTAwMjYgUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo1NzpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTU4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTY4PWNvbmZpZyBMSVFVSURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNjktXHR0cmlzdGF0ZSBcJiMzNDtDYXZpdW0gTGlxdWlkSU8gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NzA6XHRkZXBlbmRzIG9uIDY0QklUIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjcxOlx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjcyOlx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNzMtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz04ND1jb25maWcgT0NURU9OX01HTVRfRVRIRVJORVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7T2N0ZW9uIE1hbmFnZW1lbnQgcG9ydCBldGhlcm5ldCBkcml2ZXIgKENONVhYWCwgQ042WFhYKVwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6ODY6XHRkZXBlbmRzIG9uIENBVklVTV9PQ1RFT05fU09DXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy04Ny1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz05NT1jb25maWcgTElRVUlESU9fVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk2LVx0dHJpc3RhdGUgXCYjMzQ7Q2F2aXVtIExpcXVpZElPIFZGIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjk3Olx0ZGVwZW5kcyBvbiA2NEJJVCBcdTAwMjZcdTAwMjYgUENJX01TSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6OTg6XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy05OS1cdHNlbGVjdCBMSVFVSURJT19DT1JFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTc4CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDYXZpdW0gTGlxdWlkSU8gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgQ2F2aXVtIExpcXVpZElPIGRyaXZlci4gVGhlIGtleSBkZXBlbmRlbmNpZXMgaGVyZSBhcmUgYExJUVVJRElPYCwgd2hpY2ggaXMgYSBnaXZlbiwgYnV0IGFsc28gYDY0QklUYCwgYFBDSWAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgLiBUaGVzZSBhcmUgYWxsIHByZXR0eSBzdGFuZGFyZCBrZXJuZWwgY29uZmlndXJhdGlvbnMsIG5vdGhpbmcgdW51c3VhbCB0aGVyZS4KClRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYC4gQWgsIHRoaXMgaXMgaW4gdGhlIENhdml1bSBMaXF1aWRJTyBkcml2ZXIuIFRoZSBpbnRlcmVzdGluZyBwb2ludCBpcyB0aGF0IHRoaXMgdnVsbmVyYWJsZSBjb2RlIGlzIHJlYWNoYWJsZSB0aHJvdWdoIFBDSSBwcm9iaW5nLCBtZWFuaW5nIGl0JiMzOTtzIHN1c2NlcHRpYmxlIHRvIGZ1enppbmcsIGVzcGVjaWFsbHkgdmlhIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciYjMzk7cyB2UENJIGZ1enplci4gVGhlIHZhbHVlIGhlcmUgaXMgdGhhdCBmdXp6aW5nIHRoaXMgZXJyb3IgcGF0aCB3aWxsIGNvbmZpcm0gdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGlzIG5vdCBpbnRyb2R1Y2luZyBkb3VibGUgZnJlZXMgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiBJdCBtYWtlcyBzZW5zZSB0byB0YXJnZXQgdGhpcyBhcyBhbiBhcmVhIGZvciB2dWxuZXJhYmlsaXRpZXMuCgpNeSBzcGVjaWZpYyBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgZnVuY3Rpb24uIEkgaW5pdGlhbGx5IHdhbnQgdG8gdGFrZSBhIGJyaWVmIGxvb2sgdG8gc2VlIGlmIHRoaXMgYWZmZWN0cyBhbnkgb3RoZXIgZnVuY3Rpb25zLCBidXQgaXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGlzb2xhdGVkIHRvIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIEl0IGlzIGZpbmUgdG8gb25seSBmb2N1cyBvbiB0aGlzLgoKQWxyaWdodCwgSSYjMzk7bSBzYXRpc2ZpZWQuIFRpbWUgdG8gc3VibWl0IG15IHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMSVFVSURJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgcHJvYmluZywgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgdlBDSSBmdXp6ZXIuIEZ1enppbmcgdGhpcyBlcnJvciBwYXRoIGlzIHVzZWZ1bCB0byBlbnN1cmUgdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSBkb3VibGUgZnJlZXMgb3Igb3RoZXIgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMSVFVSURJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgcHJvYmluZywgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgdlBDSSBmdXp6ZXIuIEZ1enppbmcgdGhpcyBlcnJvciBwYXRoIGlzIHVzZWZ1bCB0byBlbnN1cmUgdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSBkb3VibGUgZnJlZXMgb3Igb3RoZXIgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTA6NDIuNzkyOTcyOTk3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4MzI5NTQ4NDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkxJUVVJRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBpbiB0aGUgQ2F2aXVtIExpcXVpZElPIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIHByb2JpbmcsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgdlBDSSBmdXp6ZXIuIEZ1enppbmcgdGhpcyBlcnJvciBwYXRoIGlzIHVzZWZ1bCB0byBlbnN1cmUgdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSBkb3VibGUgZnJlZXMgb3Igb3RoZXIgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1MDo0Mi43OTI5ODI2MTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MDMyNzMwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI4ZjVlODcyNWI1YzhmY2NkNWUyYjNjMzNlY2E1OGM5NDEyMThmOGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTA6NTA6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcXG5pbmRleCA3NWYyMmY3NDc3NGNiMi4uMDZiNDQyNGU3NzhlZDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcXG5AQCAtMTE2MywxOCArMTE2MywxNCBAQCBpbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG4gXFx0aWYgKG9jdGVvbl9tYXBfcGNpX2Jhcngob2N0LCAxLCBNQVhfQkFSMV9JT1JFTUFQX1NJWkUpKSB7XFxuIFxcdFxcdGRldl9lcnIoXFx1MDAyNm9jdC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlZGV2LCBcXFwiJXMgQ04yM1hYIEJBUjEgbWFwIGZhaWxlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0X19mdW5jX18pO1xcbi1cXHRcXHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTtcXG4tXFx0XFx0cmV0dXJuIDE7XFxuK1xcdFxcdGdvdG8gZXJyX3VubWFwX2JhcjA7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApXFxuLVxcdFxcdHJldHVybiAxO1xcbitcXHRcXHRnb3RvIGVycl91bm1hcF9iYXIxO1xcbiBcXG4tXFx0aWYgKGNuMjN4eF9zcmlvdl9jb25maWcob2N0KSkge1xcbi1cXHRcXHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTtcXG4tXFx0XFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7XFxuLVxcdFxcdHJldHVybiAxO1xcbi1cXHR9XFxuK1xcdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpXFxuK1xcdFxcdGdvdG8gZXJyX3VubWFwX2JhcjE7XFxuIFxcbiBcXHRvY3Rlb25fd3JpdGVfY3NyNjQob2N0LCBDTjIzWFhfU0xJX01BQ19DUkVESVRfQ05ULCAweDNGODAyMDgwODAyMDgwVUxMKTtcXG4gXFxuQEAgLTEyMDUsNiArMTIwMSwxMiBAQCBpbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG4gXFx0b2N0LVxcdTAwM2Vjb3Byb2NfY2xvY2tfcmF0ZSA9IDEwMDAwMDBVTEwgKiBjbjIzeHhfY29wcm9jZXNzb3JfY2xvY2sob2N0KTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbitcXG4rZXJyX3VubWFwX2JhcjE6XFxuK1xcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpO1xcbitlcnJfdW5tYXBfYmFyMDpcXG4rXFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XFxuK1xcdHJldHVybiAxO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUwOjQzLjQ0NDU1OTM4MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM3Njc3OTQ3OTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkxJUVVJRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBpbiB0aGUgQ2F2aXVtIExpcXVpZElPIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIHByb2JpbmcsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgdlBDSSBmdXp6ZXIuIEZ1enppbmcgdGhpcyBlcnJvciBwYXRoIGlzIHVzZWZ1bCB0byBlbnN1cmUgdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSBkb3VibGUgZnJlZXMgb3Igb3RoZXIgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI4ZjVlODcyNWI1YzhmY2NkNWUyYjNjMzNlY2E1OGM5NDEyMThmOGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAxMDo1MDo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG5pbmRleCA3NWYyMmY3NDc3NGNiMi4uMDZiNDQyNGU3NzhlZDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG5AQCAtMTE2MywxOCArMTE2MywxNCBAQCBpbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcbiBcdGlmIChvY3Rlb25fbWFwX3BjaV9iYXJ4KG9jdCwgMSwgTUFYX0JBUjFfSU9SRU1BUF9TSVpFKSkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNm9jdC1cdTAwM2VwY2lfZGV2LVx1MDAzZWRldiwgXCIlcyBDTjIzWFggQkFSMSBtYXAgZmFpbGVkXFxuXCIsXG4gXHRcdFx0X19mdW5jX18pO1xuLVx0XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTtcbi1cdFx0cmV0dXJuIDE7XG4rXHRcdGdvdG8gZXJyX3VubWFwX2JhcjA7XG4gXHR9XG4gXG4gXHRpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKVxuLVx0XHRyZXR1cm4gMTtcbitcdFx0Z290byBlcnJfdW5tYXBfYmFyMTtcbiBcbi1cdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpIHtcbi1cdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4tXHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpO1xuLVx0XHRyZXR1cm4gMTtcbi1cdH1cbitcdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpXG4rXHRcdGdvdG8gZXJyX3VubWFwX2JhcjE7XG4gXG4gXHRvY3Rlb25fd3JpdGVfY3NyNjQob2N0LCBDTjIzWFhfU0xJX01BQ19DUkVESVRfQ05ULCAweDNGODAyMDgwODAyMDgwVUxMKTtcbiBcbkBAIC0xMjA1LDYgKzEyMDEsMTIgQEAgaW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4gXHRvY3QtXHUwMDNlY29wcm9jX2Nsb2NrX3JhdGUgPSAxMDAwMDAwVUxMICogY24yM3h4X2NvcHJvY2Vzc29yX2Nsb2NrKG9jdCk7XG4gXG4gXHRyZXR1cm4gMDtcbitcbitlcnJfdW5tYXBfYmFyMTpcbitcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpO1xuK2Vycl91bm1hcF9iYXIwOlxuK1x0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4rXHRyZXR1cm4gMTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTA6NDMuNDQ0NTYxODkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzExMzI3MjYyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDYXZpdW0gTGlxdWlkSU8gRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNgLiBJdCdzIGEgZmFpcmx5IHN0cmFpZ2h0Zm9yd2FyZCBmaXggZm9yIGVycm9yIGhhbmRsaW5nIGluIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAsIGFkZGluZyBgZ290b2Agc3RhdGVtZW50cyB0byBlbnN1cmUgcHJvcGVyIFBDSSBCQVIgdW5tYXBwaW5nIG9uIGZhaWx1cmUuIFRoYXQncyBnb29kIGh5Z2llbmUsIGJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpczogaXMgdGhpcyBmdXp6YWJsZT9cblxuVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBDYXZpdW0gTGlxdWlkSU8gSW50ZWxsaWdlbnQgU2VydmVyIEFkYXB0ZXIsIGEgUENJIGRldmljZS4gTXkgaW5pdGlhbCBpbnR1aXRpb24gaXMgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIGxpa2UgdGhpcyBhcmUgZGlmZmljdWx0IHRvIGZ1enogZGlyZWN0bHksIHVubGVzcyB3ZSdyZSB0YWxraW5nIGFib3V0IGEgc29waGlzdGljYXRlZCBoYXJkd2FyZSBlbXVsYXRvciBvciwgcHJlZmVyYWJseSwgYSB2ZXJ5IHdlbGwtZGV2ZWxvcGVkIGdlbmVyaWMgUENJIGZ1enppbmcgc2V0dXAuIEhvd2V2ZXIsIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIHByb2plY3QgaGFzIGEgc3BlY2lmaWMgZXhjbHVzaW9uOiBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuXG5cbkdpdmVuIHRoYXQsIEkgbmVlZCB0byBjb25maXJtOiBpcyB0aGlzIENhdml1bSBMaXF1aWRJTyBoYXJkd2FyZSBlbXVsYXRlZCBpbiBRRU1VPyBBcyBmYXIgYXMgSSBrbm93LCBpdCBpc24ndC4gU28gaWYgd2UgY2FuJ3QgZnV6eiBpdCB0aHJvdWdoIFFFTVUsIGNhbiB3ZSBzdGlsbCBnZXQgdG8gaXQ/IFRoYW5rZnVsbHksIHN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyLCB3aGljaCBpcyBhIHByb21pc2luZyBzaWduLiBUaGUgUENJIGZ1enplciB1c2VzIHRoZSBgc3l6X3BjaV9kZXZpY2Vfc2V0dXBgIGNhbGwsIHByb3ZpZGluZyB2ZW5kb3IgYW5kIGRldmljZSBJRHMuIFRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBkb2VzIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgZ2V0IGNhbGxlZCBkdXJpbmcgUENJIHByb2JlPyBJZiBzbywgdGhpcyBwYXRjaCBpcyBhYnNvbHV0ZWx5IHdvcnRoIGNvbnNpZGVyaW5nIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzExLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTA6NTAuNTU3ODM3NjgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTEwNjE5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM9MTA4MD1pbnQgY24yM3h4X3NyaW92X2NvbmZpZyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTEzODppbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTExMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMjEwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjEyMTE6RVhQT1JUX1NZTUJPTF9HUEwoc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTIxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmg9NDY9c3RydWN0IG9jdF92Zl9zdGF0cyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5oLTU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmg6NTU6aW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmgtNTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0xMzM2PXN0YXRpYyBpbnQgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXAoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzNTctXFx0XFx0b2N0LVxcdTAwM2VjaGlwX2lkID0gT0NURU9OX0NOMjNYWF9QRl9WSUQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MTM1ODpcXHRcXHRyZXQgPSBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShvY3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzNTktXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTA6NTAuNzM2OTUzMDM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0MDg4OTI4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhc3Nlc3NtZW50IG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGVhbGluZyB3aXRoIHNvbWV0aGluZyBjYWxsZWQgZnJvbSBgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXBgLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoaXMgaXMgZ2V0dGluZyBjYWxsZWQgZHVyaW5nIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24g4oCTIG1ha2VzIHNlbnNlIGZvciBpbml0aWFsIGhhcmR3YXJlIHNldHVwLiBOb3csIEkgbmVlZCB0byBjb25maXJtIHRoaXMgYW5kIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGRvaW5nLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUgb2YgYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCBkaXJlY3RseS4gTGV0J3MgaGVhZCBvdmVyIHRvIGBsaW9fbWFpbi5jYCBhbmQgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBhbGwgYWJvdXQuIEhvcGVmdWxseSwgdGhlIGNvZGUgY29tbWVudHMgYXJlIGRlc2NyaXB0aXZlIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTE6MDEuMTQ1ODQ4NTk5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzk4Njk0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMDM9c3RhdGljIHZvaWQgbGlxdWlkaW9fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTMzMi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoxMzMzOiAqIG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwIC0gSWRlbnRpZnkgdGhlIE9jdGVvbiBkZXZpY2UgYW5kIHRvIG1hcCB0aGUgQkFSIGFkZHJlc3Mgc3BhY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xMzM0LSAqIEBvY3Q6IG9jdGVvbiBkZXZpY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xMzM1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjEzMzY6c3RhdGljIGludCBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9NDAzND1zdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTQwNTEtXFx0LyogSWRlbnRpZnkgdGhlIE9jdGVvbiB0eXBlIGFuZCBtYXAgdGhlIEJBUiBhZGRyZXNzIHNwYWNlLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjQwNTI6XFx0aWYgKG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwKG9jdGVvbl9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDA1My1cXHRcXHRkZXZfZXJyKFxcdTAwMjZvY3Rlb25fZGV2LVxcdTAwM2VwY2lfZGV2LVxcdTAwM2VkZXYsIFxcXCJDaGlwIHNwZWNpZmljIHNldHVwIGZhaWxlZFxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUxOjAxLjI3OTg1MDgwNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0ODczMzY1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipUcmFjaW5nIHRoZSBJbml0aWFsaXphdGlvbiBGbG93KipcblxuQWxyaWdodCwgbGV0IG1lIGp1c3QgbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhpcyBjb3JyZWN0bHkuIFNvLCBgb2N0ZW9uX2RldmljZV9pbml0YCBpcyBpbnZva2VkLCBhbmQgdGhhdCBmdW5jdGlvbi4uLiBhaCwgdGhhdCdzIGNhbGxlZCBmcm9tIGBsaXF1aWRpb19wcm9iZWAsIGlzbid0IGl0PyBKdXN0IHdhbnRpbmcgdG8gbWFrZSBjZXJ0YWluIEknbSBub3QgbWlzc2luZyBhIHN0ZXAgaW4gdGhlIGRldmljZSBpbml0aWFsaXphdGlvbi4gR290dGEga2VlcCB0aGUgd2hvbGUgcGljdHVyZSBjbGVhciBpbiBteSBoZWFkLCBlc3BlY2lhbGx5IHdoZW4gZGl2aW5nIGRlZXAgaW50byB0aGVzZSBkcml2ZXIgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzY4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTE6MDMuNzY3MTkxMDU3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTY4MTQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvY3Rlb25fZGV2aWNlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0xMzk9c3RhdGljIGludCBvY3Rlb25fZGJnX2NvbnNvbGVfcHJpbnQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgdTMyIGNvbnNvbGVfbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjE0MjpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xNDMtc3RhdGljIGludCBsaXF1aWRpb19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9ODIzPWxpcXVpZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBfX21heWJlX3VudXNlZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjg2NjpcXHRpZiAob2N0ZW9uX2RldmljZV9pbml0KG9jdF9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODY3LVxcdFxcdGNvbXBsZXRlKFxcdTAwMjZocy1cXHUwMDNlaW5pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zOTgwPW9jdGVvbl9yZWN2X3ZmX2Rydl9ub3RpY2Uoc3RydWN0IG9jdGVvbl9yZWN2X2luZm8gKnJlY3ZfaW5mbywgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo0MDMxOiAqIG9jdGVvbl9kZXZpY2VfaW5pdCAtIERldmljZSBpbml0aWFsaXphdGlvbiBmb3IgZWFjaCBPY3Rlb24gZGV2aWNlIHRoYXQgaXMgcHJvYmVkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMi0gKiBAb2N0ZW9uX2RldjogIG9jdGVvbiBkZXZpY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MDMzLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjQwMzQ6c3RhdGljIGludCBvY3Rlb25fZGV2aWNlX2luaXQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz02OT1zdGF0aWMgdm9pZCBsaXF1aWRpb192Zl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjcwOnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTcxLXN0YXRpYyBpbnQgbGlxdWlkaW9fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTM3OT1saXF1aWRpb192Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTQwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzo0MDU6XFx0aWYgKG9jdGVvbl9kZXZpY2VfaW5pdChvY3RfZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTQwNi1cXHRcXHRsaXF1aWRpb192Zl9yZW1vdmUocGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0yMjMwPXN0YXRpYyBpbnQgbGlxdWlkaW9faW5pdF9uaWNfbW9kdWxlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjIyNjU6ICogb2N0ZW9uX2RldmljZV9pbml0IC0gRGV2aWNlIGluaXRpYWxpemF0aW9uIGZvciBlYWNoIE9jdGVvbiBkZXZpY2UgdGhhdCBpcyBwcm9iZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY2LSAqIEBvY3Q6ICBvY3Rlb24gZGV2aWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2Ny0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoyMjY4OnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUxOjAzLjkwMjg3OTEwM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MjA1NDUwNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBUaGlzIFBDSSBQcm9iZSBGaXgqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWssIHNwZWNpZmljYWxseSBvbiB0aGUgZXJyb3IgcGF0aCB3aXRoaW4gYGxpcXVpZGlvX3Byb2JlYC4gVGhpcyBmdW5jdGlvbiBpcywgb2YgY291cnNlLCBhIFBDSSBwcm9iZSBmdW5jdGlvbiwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJDYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICpyZWFjaCogdGhpcz9cIiBUaGUgYW5zd2VyLCBhcyBJIHJlY2FsbCwgaXMgdGhhdCB5ZXMsIGl0J3MgY2FsbGVkIGZyb20gYGxpcXVpZGlvX3Byb2JlYCwgd2hpY2ggbWVhbnMgaXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZV9zZXR1cGAsIG9yIHNpbWlsYXIgdlBDSSBmdXp6aW5nIGFwcHJvYWNoZXMuXG5cbkJ1dCB3YWl0LCB0aGUgcGF0Y2ggKm9ubHkqIGFkZHJlc3NlcyBhbiBlcnJvciBwYXRoLiBJcyB0aGlzIGV2ZW4gd29ydGggb3VyIHRpbWUgdG8gZnV6ej8gSSBuZWVkIHRvIGFwcGx5IHRoZSBcIldvcnRoRnV6emluZ1wiIGNyaXRlcmlhLiBJZiB0aGUgcGF0Y2ggXCJvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLCB0aGVuIHRoZSBhbnN3ZXIgaXMgXCJub1wiLiBTbywgY2FuIHdlIHJlYWNoIENhdml1bSBMaXF1aWRJTyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/XG5cblRoaW5raW5nIGFib3V0IHN5emthbGxlciwgaXQgKmRvZXMqIGhhdmUgYSB2UENJIGZ1enplciwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGVtdWxhdGUgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLiBJdCBhY2NvbXBsaXNoZXMgdGhpcyBlaXRoZXIgYnkgaG9va2luZyBpbnRvIHRoZSBQQ0kgc3Vic3lzdGVtIG9yIGVtcGxveWluZyBhIHZpcnR1YWwgUENJIGJ1cywgYW5kIGl0IGNhbiB0cmlnZ2VyIHByb2JlIGZ1bmN0aW9ucyBvZiAqYW55KiBQQ0kgZHJpdmVyIGJ5IG1hdGNoaW5nIHZlbmRvci9kZXZpY2UgSURzLlxuXG5CdXQgaGVyZSdzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBkb2VzIHRoZSB2UENJIGZ1enplciAqZ2VudWluZWx5KiBlbXVsYXRlIHRoZSBkZXZpY2UncyBCQVJzIChCYXNlIEFkZHJlc3MgUmVnaXN0ZXJzKSBhbmQgcmVnaXN0ZXJzIHN1ZmZpY2llbnRseSB3ZWxsIHRvIHBlbmV0cmF0ZSBkZWVwbHkgaW50byB0aGUgYHByb2JlYCBmdW5jdGlvbj8gSSBiZWxpZXZlIHRoZSBhbnN3ZXIgaXMgeWVzLiBJIGtub3cgc3l6a2FsbGVyIGNhbiBwcm92aWRlIGZha2UgQkFScyBhbmQgbWVtb3J5LW1hcHBlZCBJL08gcmVnaW9ucy4gVGhhdCdzIGEga2V5IGNhcGFiaWxpdHkuXG5cblNvLCBpdCAqYXBwZWFycyogcHJvbWlzaW5nLiBCZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNwZWNpZmljIENPTkZJR3MgbmVlZGVkIHRvIGVuYWJsZSB0aGUgQ2F2aXVtIExpcXVpZElPIGRldmljZSwgd2hpY2ggd291bGQgcmVuZGVyIHRoZSB3aG9sZSBleGVyY2lzZSB1c2VsZXNzIHdpdGhvdXQgdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY3OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1MToxMC42MjM0MjY5NjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzg0NjE0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJMSVFVSURJT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MSVFVSURJT19DT1JFKSArPSBsaXF1aWRpby1jb3JlLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtNy1saXF1aWRpby1jb3JlLXkgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfTElRVUlESU8pICs9IGxpcXVpZGlvLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtMjMtbGlxdWlkaW8teSA6PSBsaW9fbWFpbi5vIG9jdGVvbl9jb25zb2xlLm8gbGlvX3ZmX3JlcC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfTElRVUlESU9fVkYpICs9IGxpcXVpZGlvX3ZmLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtMjYtbGlxdWlkaW9fdmYteSA6PSBsaW9fdmZfbWFpbi5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jPTQwNT1pbnQgY24yM3h4X29jdGVvbl9wZnZmX2hhbmRzaGFrZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00MjMtXFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQuZGF0YVswXSktXFx1MDAzZW1ham9yID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQyNDpcXHRcXHRcXHRcXHRcXHRcXHRMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT047XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00MjUtXFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQuZGF0YVswXSktXFx1MDAzZW1pbm9yID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQyNjpcXHRcXHRcXHRcXHRcXHRcXHRMSVFVSURJT19CQVNFX01JTk9SX1ZFUlNJT047XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00MjctXFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQuZGF0YVswXSktXFx1MDAzZW1pY3JvID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQyODpcXHRcXHRcXHRcXHRcXHRcXHRMSVFVSURJT19CQVNFX01JQ1JPX1ZFUlNJT047XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00MjktXFx0bWJveF9jbWQucV9ubyA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jLTQ1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQ1MjpcXHR2Zm1ham9yID0gTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfdmZfZGV2aWNlLmMtNDUzLVxcdHBmbWFqb3IgPSByZXQgXFx1MDAzZVxcdTAwM2UgMTY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYz0xNDU2PXZvaWQgbGlvX2ZldGNoX3N0YXRzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTE0NjgtXFx0XFx0aWYgKCEob2N0X2Rldi1cXHUwMDNldmZzdGF0c19wb2xsICUgTElPX1ZGU1RBVFNfUE9MTCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYzoxNDY5OlxcdFxcdCAgICAob2N0X2Rldi1cXHUwMDNlZndfaW5mby5hcHBfY2FwX2ZsYWdzIFxcdTAwMjYgTElRVUlESU9fU1BPT0ZDSEtfQ0FQKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTE0NzAtXFx0XFx0ICAgIG9jdF9kZXYtXFx1MDAzZXNyaW92X2luZm8ubnVtX3Zmc19hbGxvY2VkKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0xNTE2LWxpb19mZXRjaF9zdGF0c19leGl0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jOjE1MTc6XFx0dGltZV9pbl9qaWZmaWVzID0gbXNlY3NfdG9famlmZmllcyhMSVFVSURJT19OREVWX1NUQVRTX1BPTExfVElNRV9NUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMTUxOC1cXHRpZiAoaWZzdGF0ZV9jaGVjayhsaW8sIExJT19JRlNUQVRFX1JVTk5JTkcpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM9OTg4PXN0YXRpYyBpbnQgbGlvXzIzeHhfcmVjb25maWd1cmVfcXVldWVfY291bnQoc3RydWN0IGxpbyAqbGlvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmMtMTAxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzoxMDE0OlxcdHZkYXRhLVxcdTAwM2VtYWpvciA9IChfX2ZvcmNlIHUxNiljcHVfdG9fYmUxNihMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT04pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jOjEwMTU6XFx0dmRhdGEtXFx1MDAzZW1pbm9yID0gKF9fZm9yY2UgdTE2KWNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM6MTAxNjpcXHR2ZGF0YS1cXHUwMDNlbWljcm8gPSAoX19mb3JjZSB1MTYpY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NSUNST19WRVJTSU9OKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0xMDE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM9MjQyMz1zdGF0aWMgaW50IGxpb19zZXRfaW50cl9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmMtMjQ0OC1cXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZvY3QtXFx1MDAzZXBjaV9kZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzoyNDQ5OlxcdFxcdFxcdFxcdFxcXCJMSVFVSURJTzogSW52YWxpZCB0eC1mcmFtZXM6JWQuIFJhbmdlIGlzIG1pbjolZCBtYXg6JWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmMtMjQ1MC1cXHRcXHRcXHRcXHRpbnRyX2NvYWwtXFx1MDAzZXR4X21heF9jb2FsZXNjZWRfZnJhbWVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9NzY9c3RhdGljIGludCBvY3Rlb25fY29uc29sZV9kZWJ1Z19lbmFibGVkKHUzMiBjb25zb2xlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODEtLyogUG9sbGluZyBpbnRlcnZhbCBmb3IgZGV0ZXJtaW5pbmcgd2hlbiBOSUMgYXBwbGljYXRpb24gaXMgYWxpdmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo4MjojZGVmaW5lIExJUVVJRElPX1NUQVJURVJfUE9MTF9JTlRFUlZBTF9NUyAxMDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy04NC0vKiBydW50aW1lIGxpbmsgcXVlcnkgaW50ZXJ2YWwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo4NTojZGVmaW5lIExJUVVJRElPX0xJTktfUVVFUllfSU5URVJWQUxfTVMgICAgICAgICAxMDAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODYtLyogdXBkYXRlIGxvY2FsdGltZSB0byBvY3Rlb24gZmlybXdhcmUgZXZlcnkgNjAgc2Vjb25kcy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMDM9c3RhdGljIHZvaWQgbGlxdWlkaW9fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTMxMi1cXHRpZiAoIW9jdF9kZXYtXFx1MDAzZW9jdGVvbl9pZCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjEzMTM6XFx0ICAgIG9jdF9kZXYtXFx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcXHUwMDI2IExJUVVJRElPX1NXSVRDSERFVl9DQVApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTMxNC1cXHRcXHRsaW9fdmZfcmVwX21vZGV4aXQoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTE3NjQ9c3RhdGljIGludCBsaXF1aWRpb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xODEwLVxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bGlvLVxcdTAwM2VzdGF0c193ay53b3JrLCBtc2Vjc190b19qaWZmaWVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MTgxMTpcXHRcXHRcXHRcXHRcXHQoTElRVUlESU9fTkRFVl9TVEFUU19QT0xMX1RJTUVfTVMpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xODEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9Mjg1MT1zdGF0aWMgaW50IGxpcXVpZGlvX3NldF92Zl9zcG9vZmNoayhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgdmZpZHgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yODU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI4NTk6XFx0aWYgKCEob2N0LVxcdTAwM2Vmd19pbmZvLmFwcF9jYXBfZmxhZ3MgXFx1MDAyNiBMSVFVSURJT19TUE9PRkNIS19DQVApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjg2MC1cXHRcXHRuZXRpZl9pbmZvKGxpbywgZHJ2LCBsaW8tXFx1MDAzZW5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTMxMjU9bGlxdWlkaW9fZXN3aXRjaF9tb2RlX3NldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywgdTE2IG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zMTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMxMzU6XFx0aWYgKCEob2N0LVxcdTAwM2Vmd19pbmZvLmFwcF9jYXBfZmxhZ3MgXFx1MDAyNiBMSVFVSURJT19TV0lUQ0hERVZfQ0FQKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zMTM2LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MzMyMj1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzM2OS1cXHRcXHQqKCh1NjQgKil2ZGF0YSkgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMzNzA6XFx0XFx0dmRhdGEtXFx1MDAzZW1ham9yID0gY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozMzcxOlxcdFxcdHZkYXRhLVxcdTAwM2VtaW5vciA9IGNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzM3MjpcXHRcXHR2ZGF0YS1cXHUwMDNlbWljcm8gPSBjcHVfdG9fYmUxNihMSVFVSURJT19CQVNFX01JQ1JPX1ZFUlNJT04pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTMzNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDQwLVxcdFxcdGZ3X3ZlciA9IG9jdGVvbl9kZXYtXFx1MDAzZWZ3X2luZm8ubGlxdWlkaW9fZmlybXdhcmVfdmVyc2lvbjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNDQxOlxcdFxcdGlmIChtZW1jbXAoTElRVUlESU9fQkFTRV9WRVJTSU9OLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM0NDItXFx0XFx0XFx0ICAgZndfdmVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM0NDM6XFx0XFx0XFx0ICAgc3RybGVuKExJUVVJRElPX0JBU0VfVkVSU0lPTikpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ0NC1cXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZvY3Rlb25fZGV2LVxcdTAwM2VwY2lfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ0NS1cXHRcXHRcXHRcXHRcXFwiVW5tYXRjaGVkIGZpcm13YXJlIHZlcnNpb24uIEV4cGVjdGVkICVzLngsIGdvdCAlcy5cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzQ0NjpcXHRcXHRcXHRcXHRMSVFVSURJT19CQVNFX1ZFUlNJT04sIGZ3X3Zlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ0Ny1cXHRcXHRcXHRXUklURV9PTkNFKHNjLVxcdTAwM2VjYWxsZXJfaXNfZG9uZSwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDU2LVxcdFxcdC8qIGV4dHJhY3QgbWljcm8gdmVyc2lvbiBmaWVsZDsgcG9pbnQgcGFzdCAnXFx1MDAzY21halxcdTAwM2UuXFx1MDAzY21pblxcdTAwM2UuJyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM0NTc6XFx0XFx0bWljcm9fdmVyID0gZndfdmVyICsgc3RybGVuKExJUVVJRElPX0JBU0VfVkVSU0lPTikgKyAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM0NTgtXFx0XFx0aWYgKGtzdHJ0b3VsKG1pY3JvX3ZlciwgMTAsIFxcdTAwMjZtaWNybykgIT0gMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDU5LVxcdFxcdFxcdG1pY3JvID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNDYwOlxcdFxcdG9jdGVvbl9kZXYtXFx1MDAzZWZ3X2luZm8udmVyLm1haiA9IExJUVVJRElPX0JBU0VfTUFKT1JfVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNDYxOlxcdFxcdG9jdGVvbl9kZXYtXFx1MDAzZWZ3X2luZm8udmVyLm1pbiA9IExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDYyLVxcdFxcdG9jdGVvbl9kZXYtXFx1MDAzZWZ3X2luZm8udmVyLnJldiA9IG1pY3JvO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzY3My1cXHRcXHRpZiAoKG9jdGVvbl9kZXYtXFx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzY3NDpcXHRcXHQgICAgIExJUVVJRElPX1RJTUVfU1lOQ19DQVApIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzY3NS1cXHRcXHQgICAgc2V0dXBfc3luY19vY3Rlb25fdGltZV93cShuZXRkZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9Mzg4NT1zdGF0aWMgaW50IGxpcXVpZGlvX2luaXRfbmljX21vZHVsZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzkxMi1cXHRpZiAoIW9jdC1cXHUwMDNlb2N0ZW9uX2lkIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzkxMzpcXHQgICAgb2N0LVxcdTAwM2Vmd19pbmZvLmFwcF9jYXBfZmxhZ3MgXFx1MDAyNiBMSVFVSURJT19TV0lUQ0hERVZfQ0FQKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzkxNC1cXHRcXHRyZXR2YWwgPSBsaW9fdmZfcmVwX21vZGluaXQoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTM5NDA9c3RhdGljIHZvaWQgbmljX3N0YXJ0ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzk1Ni1cXHRcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNm9jdC1cXHUwMDNlbmljX3BvbGxfd29yay53b3JrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM5NTc6XFx0XFx0XFx0XFx0ICAgICAgTElRVUlESU9fU1RBUlRFUl9QT0xMX0lOVEVSVkFMX01TKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zOTU4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTQwMzQ9c3RhdGljIGludCBvY3Rlb25fZGV2aWNlX2luaXQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MTIwLVxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2b2N0ZW9uX2Rldi1cXHUwMDNlbmljX3BvbGxfd29yay53b3JrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjQxMjE6XFx0XFx0XFx0ICAgICAgTElRVUlESU9fU1RBUlRFUl9QT0xMX0lOVEVSVkFMX01TKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9OTAzPXN0YXRpYyBpbnQgbGlxdWlkaW9fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtOTMyLVxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bGlvLVxcdTAwM2VzdGF0c193ay53b3JrLCBtc2Vjc190b19qaWZmaWVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6OTMzOlxcdFxcdFxcdFxcdFxcdChMSVFVSURJT19OREVWX1NUQVRTX1BPTExfVElNRV9NUykpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTkzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE5MTk9c3RhdGljIGludCBzZXR1cF9uaWNfZGV2aWNlcyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE5NjAtXFx0XFx0KigodTY0ICopdmRhdGEpID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxOTYxOlxcdFxcdHZkYXRhLVxcdTAwM2VtYWpvciA9IGNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUFKT1JfVkVSU0lPTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTk2MjpcXHRcXHR2ZGF0YS1cXHUwMDNlbWlub3IgPSBjcHVfdG9fYmUxNihMSVFVSURJT19CQVNFX01JTk9SX1ZFUlNJT04pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE5NjM6XFx0XFx0dmRhdGEtXFx1MDAzZW1pY3JvID0gY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NSUNST19WRVJTSU9OKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xOTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyMzojaWZuZGVmIF9fTElRVUlESU9fQ09NTU9OX0hfX1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyNDojZGVmaW5lIF9fTElRVUlESU9fQ09NTU9OX0hfX1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaC0yNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaC0yNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg6Mjg6I2RlZmluZSBMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT04gMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyOTojZGVmaW5lIExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTiA3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjMwOiNkZWZpbmUgTElRVUlESU9fQkFTRV9NSUNST19WRVJTSU9OIDJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg6MzE6I2RlZmluZSBMSVFVSURJT19CQVNFX1ZFUlNJT04gICBfX3N0cmluZ2lmeShMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT04pIFxcXCIuXFxcIiBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjMyOlxcdFxcdFxcdFxcdF9fc3RyaW5naWZ5KExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg9NDM9ZW51bSBvY3Rlb25fdGFnX3R5cGUge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTExMi0vKiBBcHAgc3BlY2lmaWMgY2FwYWJpbGl0aWVzIGZyb20gZmlybXdhcmUgdG8gcGYgZHJpdmVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjExMzojZGVmaW5lIExJUVVJRElPX1RJTUVfU1lOQ19DQVAgMHgxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjExNDojZGVmaW5lIExJUVVJRElPX1NXSVRDSERFVl9DQVAgMHgyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjExNTojZGVmaW5lIExJUVVJRElPX1NQT09GQ0hLX0NBUCAgMHg0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTExNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oLTE3LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9faW1hZ2UuaDoxODojaWZuZGVmIF9MSVFVSURJT19JTUFHRV9IX1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oOjE5OiNkZWZpbmUgX0xJUVVJRElPX0lNQUdFX0hfXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2ltYWdlLmgtMjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9faW1hZ2UuaD00ND1zdHJ1Y3Qgb2N0ZW9uX2Zpcm13YXJlX2ZpbGVfaGVhZGVyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oLTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oOjU0OiNlbmRpZiAvKiBfTElRVUlESU9fSU1BR0VfSF8gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jPTgwNz1pbnQgb2N0ZW9uX2Rvd25sb2FkX2Zpcm13YXJlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmMtODQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jOjg0MjpcXHRpZiAobWVtY21wKExJUVVJRElPX0JBU0VfVkVSU0lPTiwgaC1cXHUwMDNldmVyc2lvbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYzo4NDM6XFx0XFx0ICAgc3RybGVuKExJUVVJRElPX0JBU0VfVkVSU0lPTikpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmMtODQ0LVxcdFxcdGRldl9lcnIoXFx1MDAyNm9jdC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlZGV2LCBcXFwiVW5tYXRjaGVkIGZpcm13YXJlIHZlcnNpb24uIEV4cGVjdGVkICVzLngsIGdvdCAlcy5cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmM6ODQ1OlxcdFxcdFxcdExJUVVJRElPX0JBU0VfVkVSU0lPTixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYy04NDYtXFx0XFx0XFx0aC1cXHUwMDNldmVyc2lvbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYy04NTYtXFx0ZGV2X2luZm8oXFx1MDAyNm9jdC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlZGV2LCBcXFwiRmlybXdhcmUgdmVyc2lvbjogJXNcXFxcblxcXCIsIGgtXFx1MDAzZXZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jOjg1NzpcXHRzbnByaW50ZihvY3QtXFx1MDAzZWZ3X2luZm8ubGlxdWlkaW9fZmlybXdhcmVfdmVyc2lvbiwgMzIsIFxcXCJMSVFVSURJTzogJXNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jLTg1OC1cXHRcXHQgaC1cXHUwMDNldmVyc2lvbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYz0yMzY9c3RhdGljIGludCBvY3Rlb25fbWJveF9wcm9jZXNzX2NtZChzdHJ1Y3Qgb2N0ZW9uX21ib3ggKm1ib3gsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYy0yNDgtXFx0XFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQtXFx1MDAzZWRhdGFbMF0pLVxcdTAwM2VtYWpvciA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmM6MjQ5OlxcdFxcdFxcdExJUVVJRElPX0JBU0VfTUFKT1JfVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYy0yNTAtXFx0XFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQtXFx1MDAzZWRhdGFbMF0pLVxcdTAwM2VtaW5vciA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmM6MjUxOlxcdFxcdFxcdExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYy0yNTItXFx0XFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQtXFx1MDAzZWRhdGFbMF0pLVxcdTAwM2VtaWNybyA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmM6MjUzOlxcdFxcdFxcdExJUVVJRElPX0JBU0VfTUlDUk9fVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYy0yNTQtXFx0XFx0bWVtY3B5KG1ib3hfY21kLVxcdTAwM2Vtc2cucy5wYXJhbXMsICh1aW50OF90ICopXFx1MDAyNm9jdC1cXHUwMDNlcGZ2Zl9oc3dvcmQsIDYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uZXR3b3JrLmg9Mzg9c3RydWN0IGxpcXVpZGlvX2lmX2NmZ19yZXNwIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmV0d29yay5oLTQ0LSNkZWZpbmUgTElPX0lGQ0ZHX1dBSVRfVElNRSAgICAzMDAwIC8qIEluIG1pbGxpIHNlY29uZHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25ldHdvcmsuaDo0NTojZGVmaW5lIExJUVVJRElPX05ERVZfU1RBVFNfUE9MTF9USU1FX01TIDIwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmV0d29yay5oLTQ2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1MToxMC43NDEyODcwNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA4NzQwODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIExpcXVpZCBJL08gQ29uZmlndXJhdGlvbiBhbmQgQ29kZSBMb2NhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiB0aGUgY29uZmlncyB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSBhcmUgYENPTkZJR19MSVFVSURJT2AgYW5kIGBDT05GSUdfTElRVUlESU9fQ09SRWAuIFNlZW1zIHByZXR0eSBzdGFuZGFyZCBmb3IgTGlxdWlkIEkvTy4gQnV0IGhvbGQgb24sIHRoZSBwYXRjaCBsb2NhdGlvbiBsaXN0ZWQgaXMgaW4gYGNuMjN4eF9wZl9kZXZpY2UuY2AuIEhtbSwgdGhhdCdzIG5vdCBleGFjdGx5IHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCBjb3JlIExpcXVpZCBJL08gZnVuY3Rpb25hbGl0eS4gQmVmb3JlIEkgZGl2ZSBpbiB0b28gZGVlcCwgSSBzaG91bGQgY2hlY2sgdGhlIGBNYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlJ3MgYW55dGhpbmcgdW51c3VhbCBnb2luZyBvbiB3aXRoIHRoZSBidWlsZCBwcm9jZXNzIG9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0J3MgYXQgcGxheS4gVGhpcyB3aWxsIGdpdmUgbWUgc29tZSBjb250ZXh0IGJlZm9yZSBJIGFuYWx5emUgdGhlIGNvZGUgZGlyZWN0bHkuIE1heWJlIHRoZSBgY24yM3h4X3BmX2RldmljZS5jYCBmaWxlIGlzIHNvbWVob3cgY29uZGl0aW9uYWxseSBjb21waWxlZCBvciBwYXJ0IG9mIGEgbW9kdWxlPyBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTQyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTE6MTQuNjUwMDMxMDU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAxODQzMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY24yM3h4X3BmX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZT03PWxpcXVpZGlvLWNvcmUteSA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtMTQtXFx0XFx0Y242OHh4X2RldmljZS5vXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZToxNTpcXHRcXHRjbjIzeHhfcGZfZGV2aWNlLm9cXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTE2LVxcdFxcdGNuMjN4eF92Zl9kZXZpY2Uub1xcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMjUtI2luY2x1ZGUgXFxcIm9jdGVvbl9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjI2OiNpbmNsdWRlIFxcXCJjbjIzeHhfcGZfZGV2aWNlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0yNy0jaW5jbHVkZSBcXFwib2N0ZW9uX21haW4uaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxLSNpbmNsdWRlIFxcXCJjbjY2eHhfZGV2aWNlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM6MzI6I2luY2x1ZGUgXFxcImNuMjN4eF9wZl9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0zMy0jaW5jbHVkZSBcXFwiY24yM3h4X3ZmX2RldmljZS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQtI2luY2x1ZGUgXFxcImNuNjh4eF9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNTojaW5jbHVkZSBcXFwiY24yM3h4X3BmX2RldmljZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM2LSNpbmNsdWRlIFxcXCJsaXF1aWRpb19pbWFnZS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9kZXZpY2UuYy0yOS0jaW5jbHVkZSBcXFwiY242Nnh4X2RldmljZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fZGV2aWNlLmM6MzA6I2luY2x1ZGUgXFxcImNuMjN4eF9wZl9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2RldmljZS5jLTMxLSNpbmNsdWRlIFxcXCJjbjIzeHhfdmZfZGV2aWNlLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2Ryb3EuYy0yOS0jaW5jbHVkZSBcXFwiY242Nnh4X2RldmljZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fZHJvcS5jOjMwOiNpbmNsdWRlIFxcXCJjbjIzeHhfcGZfZGV2aWNlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9kcm9xLmMtMzEtI2luY2x1ZGUgXFxcImNuMjN4eF92Zl9kZXZpY2UuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jLTI2LSNpbmNsdWRlIFxcXCJvY3Rlb25fbWFpbGJveC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jOjI3OiNpbmNsdWRlIFxcXCJjbjIzeHhfcGZfZGV2aWNlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmMtMjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmMtMjktI2luY2x1ZGUgXFxcImNuNjZ4eF9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmM6MzA6I2luY2x1ZGUgXFxcImNuMjN4eF9wZl9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmMtMzEtI2luY2x1ZGUgXFxcImNuMjN4eF92Zl9kZXZpY2UuaFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTE6MTQuNzkwMjIzMzc0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNzAxOTcxNTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgV29ydGhpbmVzcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcmVsYXRlZCB0byBgTElRVUlESU9gIGFuZCB0aGUgYGNuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYC4gSXQncyBidWlsdCB3aXRoIGBDT05GSUdfTElRVUlESU9fQ09SRWAgd2hpY2ggaXMgc2VsZWN0ZWQgYnkgYENPTkZJR19MSVFVSURJT2AgYW5kIGBDT05GSUdfTElRVUlESU9fVkZgLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhhdCBpdCBtb2RpZmllcyBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJjYW4gc3l6a2FsbGVyIGhpdCB0aGlzIHdpdGggaXRzIHZQQ0kgZnV6emVyP1wiIFRoZSBhbnN3ZXIsIGFzIEkgcmVjYWxsLCBpcyB5ZXMsIHN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIHRyaWdnZXIgcHJvYmUgZnVuY3Rpb25zLlxuXG5Ib3dldmVyLCBhZnRlciBhIGNsb3NlciBsb29rLCB0aGUgcGF0Y2ggaXMganVzdCBhZGRpbmcgYGdvdG8gZXJyX3VubWFwX2JhcjBgIGFuZCBgZ290byBlcnJfdW5tYXBfYmFyMWAgdG8gdW5tYXAgQkFScyBvbiBhbiBlcnJvciBwYXRoLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBcIklzIHRoaXMgKndvcnRoKiBmdXp6aW5nP1wiIEl0J3MgYSBzaW1wbGUgZXJyb3IgcGF0aCBmaXguIE5vIG5ldyBmZWF0dXJlcywganVzdCByZXNvdXJjZSBsZWFrIHByZXZlbnRpb24uIEVycm9yIHBhdGhzIGFyZSB0eXBpY2FsbHkgd29ydGggaW52ZXN0aWdhdGluZyBiZWNhdXNlIHRoZXkgY2FuIGJlIHByb25lIHRvIGRvdWJsZS1mcmVlcyBvciB1c2UtYWZ0ZXItZnJlZXMsIGJ1dCBoZXJlLCBpdCdzIGp1c3QgdW5tYXBwaW5nIEJBUnMuIFRoYXQgZmVlbHMgcHJldHR5IGJlbmlnbi5cblxuQnV0IHdhaXQsIEkgbmVlZCB0byByZW1lbWJlciB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGV5IGV4cGxpY2l0bHkgc2F5IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBtb2RpZmljYXRpb25zIHRvLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4uLlwiIFNvLCBjYW4gc3l6a2FsbGVyJ3MgdlBDSSByZWFjaCB0aGlzPyBUaGUgUENJIGZ1enplciAqY2FuKiByZWFjaCBQQ0kgcHJvYmUgZnVuY3Rpb25zLiBCdXQgZG9lcyBpdCAqZW11bGF0ZSogdGhlIGRldmljZSBlbm91Z2ggdG8gZ2V0IHRvIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWA/IFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgdG8gYmUgc3VyZSwgYnV0IGl0IHNvdW5kcyBsaWtlIGEgcG9zc2libGUgeWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzczOSwiT3V0cHV0VG9rZW5zIjo1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1MjoyOC40OTIyMDI1MjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NDU2NDMzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM9MTA4MD1pbnQgY24yM3h4X3NyaW92X2NvbmZpZyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTEzODppbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTExMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMjEwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjEyMTE6RVhQT1JUX1NZTUJPTF9HUEwoc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTIxMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTI6MjkuMTc2Nzc1NThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2MDU0ODYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBmdW5jdGlvbi4gSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBDTjIzeHggcGxhdGZvcm0gYW5kIE9jdGVvbiBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIGEgUEYgKFBoeXNpY2FsIEZ1bmN0aW9uKSBkZXZpY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gb3IgYnJpbmctdXAgc2VxdWVuY2UuIFdlJ3JlIHByb2JhYmx5IGNvbmZpZ3VyaW5nIHRoaXMgUEYgZGV2aWNlIGZvciBhIHBhcnRpY3VsYXIgbmV0d29yayBvciBoYXJkd2FyZSBmdW5jdGlvbi4gS25vd2luZyB0aGUgQ04yM3h4IGFyY2hpdGVjdHVyZSwgSSdtIGV4cGVjdGluZyB0byBzZWUgY2FsbHMgcmVsYXRlZCB0byByZWdpc3RlciBhY2Nlc3MsIGludGVycnVwdCBzZXR1cCwgYW5kIHJlc291cmNlIGFsbG9jYXRpb24uIFRoaXMgd2lsbCBwcm9iYWJseSBpbmNsdWRlIGNvbmZpZ3VyaW5nIHRoZSBQQ0llIGxpbmssIHNldHRpbmcgdXAgRE1BIGNoYW5uZWxzLCBhbmQgZW5hYmxpbmcgYW55IG5lY2Vzc2FyeSBoYXJkd2FyZSBhY2NlbGVyYXRvcnMuIEknbGwgYmUgbG9va2luZyB0byBzZWUgaG93IGl0IGhhbmRsZXMgZXJyb3IgY29uZGl0aW9ucyBhbmQgd2hhdCBraW5kIG9mIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBpdCBwcm92aWRlcy4gSXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaG93IHRoZSBjb2RlIGhhbmRsZXMgbXVsdGktZnVuY3Rpb24gZGV2aWNlcyBvciBpZiBpdCBhc3N1bWVzIGEgc2luZ2xlIFBGIHBlciBkZXZpY2UuIFVsdGltYXRlbHksIEknbSBleHBlY3RpbmcgdG8gZ2V0IHRoaXMgZGV2aWNlIHJlYWR5IGZvciBoaWdoZXItbGV2ZWwgbmV0d29yayBzdGFjayBpbnRlcmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MTEsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1MjozMi4zMzczMzAyNzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTEzOCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExMzg6XFx0aW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuMTEzOTpcXHR7XFxuMTE0MDpcXHRcXHR1MzIgZGF0YTMyO1xcbjExNDE6XFx0XFx0dTY0IEJBUjAsIEJBUjE7XFxuMTE0MjpcXHRcXG4xMTQzOlxcdFxcdHBjaV9yZWFkX2NvbmZpZ19kd29yZChvY3QtXFx1MDAzZXBjaV9kZXYsIFBDSV9CQVNFX0FERFJFU1NfMCwgXFx1MDAyNmRhdGEzMik7XFxuMTE0NDpcXHRcXHRCQVIwID0gKHU2NCkoZGF0YTMyIFxcdTAwMjYgfjB4Zik7XFxuMTE0NTpcXHRcXHRwY2lfcmVhZF9jb25maWdfZHdvcmQob2N0LVxcdTAwM2VwY2lfZGV2LCBQQ0lfQkFTRV9BRERSRVNTXzEsIFxcdTAwMjZkYXRhMzIpO1xcbjExNDY6XFx0XFx0QkFSMCB8PSAoKHU2NClkYXRhMzIgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbjExNDc6XFx0XFx0cGNpX3JlYWRfY29uZmlnX2R3b3JkKG9jdC1cXHUwMDNlcGNpX2RldiwgUENJX0JBU0VfQUREUkVTU18yLCBcXHUwMDI2ZGF0YTMyKTtcXG4xMTQ4OlxcdFxcdEJBUjEgPSAodTY0KShkYXRhMzIgXFx1MDAyNiB+MHhmKTtcXG4xMTQ5OlxcdFxcdHBjaV9yZWFkX2NvbmZpZ19kd29yZChvY3QtXFx1MDAzZXBjaV9kZXYsIFBDSV9CQVNFX0FERFJFU1NfMywgXFx1MDAyNmRhdGEzMik7XFxuMTE1MDpcXHRcXHRCQVIxIHw9ICgodTY0KWRhdGEzMiBcXHUwMDNjXFx1MDAzYyAzMik7XFxuMTE1MTpcXHRcXG4xMTUyOlxcdFxcdGlmICghQkFSMCB8fCAhQkFSMSkge1xcbjExNTM6XFx0XFx0XFx0aWYgKCFCQVIwKVxcbjExNTQ6XFx0XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2b2N0LVxcdTAwM2VwY2lfZGV2LVxcdTAwM2VkZXYsIFxcXCJkZXZpY2UgQkFSMCB1bmFzc2lnbmVkXFxcXG5cXFwiKTtcXG4xMTU1OlxcdFxcdFxcdGlmICghQkFSMSlcXG4xMTU2OlxcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNm9jdC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlZGV2LCBcXFwiZGV2aWNlIEJBUjEgdW5hc3NpZ25lZFxcXFxuXFxcIik7XFxuMTE1NzpcXHRcXHRcXHRyZXR1cm4gMTtcXG4xMTU4OlxcdFxcdH1cXG4xMTU5OlxcdFxcbjExNjA6XFx0XFx0aWYgKG9jdGVvbl9tYXBfcGNpX2Jhcngob2N0LCAwLCAwKSlcXG4xMTYxOlxcdFxcdFxcdHJldHVybiAxO1xcbjExNjI6XFx0XFxuMTE2MzpcXHRcXHRpZiAob2N0ZW9uX21hcF9wY2lfYmFyeChvY3QsIDEsIE1BWF9CQVIxX0lPUkVNQVBfU0laRSkpIHtcXG4xMTY0OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNm9jdC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlZGV2LCBcXFwiJXMgQ04yM1hYIEJBUjEgbWFwIGZhaWxlZFxcXFxuXFxcIixcXG4xMTY1OlxcdFxcdFxcdFxcdF9fZnVuY19fKTtcXG4xMTY2OlxcdFxcdFxcdGdvdG8gZXJyX3VubWFwX2JhcjA7XFxuMTE2NzpcXHRcXHR9XFxuMTE2ODpcXHRcXG4xMTY5OlxcdFxcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApXFxuMTE3MDpcXHRcXHRcXHRnb3RvIGVycl91bm1hcF9iYXIxO1xcbjExNzE6XFx0XFxuMTE3MjpcXHRcXHRpZiAoY24yM3h4X3NyaW92X2NvbmZpZyhvY3QpKVxcbjExNzM6XFx0XFx0XFx0Z290byBlcnJfdW5tYXBfYmFyMTtcXG4xMTc0OlxcdFxcbjExNzU6XFx0XFx0b2N0ZW9uX3dyaXRlX2NzcjY0KG9jdCwgQ04yM1hYX1NMSV9NQUNfQ1JFRElUX0NOVCwgMHgzRjgwMjA4MDgwMjA4MFVMTCk7XFxuMTE3NjpcXHRcXG4xMTc3OlxcdFxcdG9jdC1cXHUwMDNlZm5fbGlzdC5zZXR1cF9pcV9yZWdzID0gY24yM3h4X3NldHVwX2lxX3JlZ3M7XFxuMTE3ODpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3Quc2V0dXBfb3FfcmVncyA9IGNuMjN4eF9zZXR1cF9vcV9yZWdzO1xcbjExNzk6XFx0XFx0b2N0LVxcdTAwM2Vmbl9saXN0LnNldHVwX21ib3ggPSBjbjIzeHhfc2V0dXBfcGZfbWJveDtcXG4xMTgwOlxcdFxcdG9jdC1cXHUwMDNlZm5fbGlzdC5mcmVlX21ib3ggPSBjbjIzeHhfZnJlZV9wZl9tYm94O1xcbjExODE6XFx0XFxuMTE4MjpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QucHJvY2Vzc19pbnRlcnJ1cHRfcmVncyA9IGNuMjN4eF9pbnRlcnJ1cHRfaGFuZGxlcjtcXG4xMTgzOlxcdFxcdG9jdC1cXHUwMDNlZm5fbGlzdC5tc2l4X2ludGVycnVwdF9oYW5kbGVyID0gY24yM3h4X3BmX21zaXhfaW50ZXJydXB0X2hhbmRsZXI7XFxuMTE4NDpcXHRcXG4xMTg1OlxcdFxcdG9jdC1cXHUwMDNlZm5fbGlzdC5zb2Z0X3Jlc2V0ID0gY24yM3h4X3BmX3NvZnRfcmVzZXQ7XFxuMTE4NjpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3Quc2V0dXBfZGV2aWNlX3JlZ3MgPSBjbjIzeHhfc2V0dXBfcGZfZGV2aWNlX3JlZ3M7XFxuMTE4NzpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QudXBkYXRlX2lxX3JlYWRfaWR4ID0gY24yM3h4X3VwZGF0ZV9yZWFkX2luZGV4O1xcbjExODg6XFx0XFxuMTE4OTpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QuYmFyMV9pZHhfc2V0dXAgPSBjbjIzeHhfYmFyMV9pZHhfc2V0dXA7XFxuMTE5MDpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QuYmFyMV9pZHhfd3JpdGUgPSBjbjIzeHhfYmFyMV9pZHhfd3JpdGU7XFxuMTE5MTpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QuYmFyMV9pZHhfcmVhZCA9IGNuMjN4eF9iYXIxX2lkeF9yZWFkO1xcbjExOTI6XFx0XFxuMTE5MzpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QuZW5hYmxlX2ludGVycnVwdCA9IGNuMjN4eF9lbmFibGVfcGZfaW50ZXJydXB0O1xcbjExOTQ6XFx0XFx0b2N0LVxcdTAwM2Vmbl9saXN0LmRpc2FibGVfaW50ZXJydXB0ID0gY24yM3h4X2Rpc2FibGVfcGZfaW50ZXJydXB0O1xcbjExOTU6XFx0XFxuMTE5NjpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QuZW5hYmxlX2lvX3F1ZXVlcyA9IGNuMjN4eF9lbmFibGVfaW9fcXVldWVzO1xcbjExOTc6XFx0XFx0b2N0LVxcdTAwM2Vmbl9saXN0LmRpc2FibGVfaW9fcXVldWVzID0gY24yM3h4X2Rpc2FibGVfaW9fcXVldWVzO1xcbjExOTg6XFx0XFxuMTE5OTpcXHRcXHRjbjIzeHhfc2V0dXBfcmVnX2FkZHJlc3Mob2N0KTtcXG4xMjAwOlxcdFxcbjEyMDE6XFx0XFx0b2N0LVxcdTAwM2Vjb3Byb2NfY2xvY2tfcmF0ZSA9IDEwMDAwMDBVTEwgKiBjbjIzeHhfY29wcm9jZXNzb3JfY2xvY2sob2N0KTtcXG4xMjAyOlxcdFxcbjEyMDM6XFx0XFx0cmV0dXJuIDA7XFxuMTIwNDpcXHRcXG4xMjA1OlxcdGVycl91bm1hcF9iYXIxOlxcbjEyMDY6XFx0XFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7XFxuMTIwNzpcXHRlcnJfdW5tYXBfYmFyMDpcXG4xMjA4OlxcdFxcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xcbjEyMDk6XFx0XFx0cmV0dXJuIDE7XFxuMTIxMDpcXHR9XFxuMTIxMTpcXHRFWFBPUlRfU1lNQk9MX0dQTChzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSk7XFxuMTIxMjpcXHRcXG4xMjEzOlxcdGludCBjbjIzeHhfZndfbG9hZGVkKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuMTIxNDpcXHR7XFxuMTIxNTpcXHRcXHR1NjQgdmFsO1xcbjEyMTY6XFx0XFxuMTIxNzpcXHRcXHQvKiBJZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgYWN0aXZlIFBGIG9uIHRoaXMgTklDLCB0aGVuIHRoYXRcXG4xMjE4OlxcdFxcdCAqIGltcGxpZXMgdGhhdCB0aGUgTklDIGZpcm13YXJlIGlzIGxvYWRlZCBhbmQgcnVubmluZy4gVGhpcyBjaGVja1xcbjEyMTk6XFx0XFx0ICogcHJldmVudHMgYSByYXJlIGZhbHNlIG5lZ2F0aXZlIHRoYXQgbWlnaHQgb2NjdXIgaWYgd2Ugb25seSByZWxpZWRcXG4xMjIwOlxcdFxcdCAqIG9uIGNoZWNraW5nIHRoZSBTQ1IyX0JJVF9GV19MT0FERUQgZmxhZy4gVGhlIGZhbHNlIG5lZ2F0aXZlIHdvdWxkXFxuMTIyMTpcXHRcXHQgKiBoYXBwZW4gaWYgdGhlIFBGIGRyaXZlciBzZWVzIFNDUjJfQklUX0ZXX0xPQURFRCBhcyBjbGVhcmVkIGV2ZW5cXG4xMjIyOlxcdFxcdCAqIHRob3VnaCB0aGUgZmlybXdhcmUgd2FzIGFscmVhZHkgbG9hZGVkIGJ1dCBzdGlsbCBib290aW5nIGFuZCBoYXMgeWV0XFxuMTIyMzpcXHRcXHQgKiB0byBzZXQgU0NSMl9CSVRfRldfTE9BREVELlxcbjEyMjQ6XFx0XFx0ICovXFxuMTIyNTpcXHRcXHRpZiAoYXRvbWljX3JlYWQob2N0LVxcdTAwM2VhZGFwdGVyX3JlZmNvdW50KSBcXHUwMDNlIDEpXFxuMTIyNjpcXHRcXHRcXHRyZXR1cm4gMTtcXG4xMjI3OlxcdFxcbjEyMjg6XFx0XFx0dmFsID0gb2N0ZW9uX3JlYWRfY3NyNjQob2N0LCBDTjIzWFhfU0xJX1NDUkFUQ0gyKTtcXG4xMjI5OlxcdFxcdHJldHVybiAodmFsIFxcdTAwM2VcXHUwMDNlIFNDUjJfQklUX0ZXX0xPQURFRCkgXFx1MDAyNiAxVUxMO1xcbjEyMzA6XFx0fVxcbjEyMzE6XFx0RVhQT1JUX1NZTUJPTF9HUEwoY24yM3h4X2Z3X2xvYWRlZCk7XFxuMTIzMjpcXHRcXG4xMjMzOlxcdHZvaWQgY24yM3h4X3RlbGxfdmZfaXRzX21hY2FkZHJfY2hhbmdlZChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LCBpbnQgdmZpZHgsXFxuMTIzNDpcXHRcXHRcXHRcXHRcXHRcXHR1OCAqbWFjKVxcbjEyMzU6XFx0e1xcbjEyMzY6XFx0XFx0aWYgKG9jdC1cXHUwMDNlc3Jpb3ZfaW5mby52Zl9kcnZfbG9hZGVkX21hc2sgXFx1MDAyNiBCSVRfVUxMKHZmaWR4KSkge1xcbjEyMzc6XFx0XFx0XFx0c3RydWN0IG9jdGVvbl9tYm94X2NtZCBtYm94X2NtZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTI6MzIuMzM3NTQwNDIzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTc4ODkwNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIGhhbmRsaW5nIG9mIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/IEl0J3MgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyBhIG1lbW9yeSBsZWFrLiBBbmQgdGhlIGNvZGUgcGF0aCAqaXMqIHJlYWNoYWJsZSDigJMgZXZlbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhhbmtzIHRvIHZQQ0kuIEVycm9yIHBhdGggZml4ZXMgYXJlIGdlbmVyYWxseSBnb29kIGZ1enppbmcgdGFyZ2V0cyB0byBjYXRjaCBhbnkgZG91YmxlLWZyZWVzIG9yIHNpbWlsYXIgcHJvYmxlbXMgdGhhdCBtaWdodCBiZSBpbnRyb2R1Y2VkLiBUaGUgZml4IGl0c2VsZiBpcyBzaW1wbGUsIGp1c3QgdW5tYXBwaW5nIEJBUnMuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGVyZSBhcmUgbm8gb3RoZXIgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLiBOb3BlLCBqdXN0IHRoZSB1bm1hcHBpbmcuIE9rYXksIHNvIHllcywgd29ydGggZnV6emluZywgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb2RlLlxuXG5CdXQgd2FpdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBpbnN0cnVjdGlvbnMhIFRoZXkgc2F5ICpub3QqIHRvIGZ1enogaWYgdGhlIGNoYW5nZSBpcyBhIGRvY3VtZW50YXRpb24gdXBkYXRlLCBjb3NtZXRpYyBsb2dnaW5nLCBudW1lcmljIGNvbnN0YW50IGFkanVzdG1lbnRzIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QsIG9yIGNvZGUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBOb3BlLCB0aGUgdlBDSSBtYWtlcyB0aGlzIHJlYWNoYWJsZS4gU28sIHRoZSBkZWNpc2lvbiBpcyBzdGlsbCB0byBmdXp6LCBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGZ1enppbmcgZm9jdXMuIFRoZSBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBJdCBhbHNvIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgY29uZmlnIG9wdGlvbnM6IGBMSVFVSURJT2AgYW5kIGBMSVFVSURJT19DT1JFYC4gSG9sZCBvbiwgYExJUVVJRElPX0NPUkVgIGlzbid0IGEgZGlyZWN0bHkgdXNlci1zZWxlY3RhYmxlIG9wdGlvbiwgaXQncyBzZWxlY3RlZCBieSBgTElRVUlESU9gISBHb3R0YSB2ZXJpZnkgdGhhdCBpbiB0aGUgYEtjb25maWdgIGZvciBgTElRVUlESU9gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzE3OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUyOjM4Ljk1NTQzMzQ4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NzQ2NjUyMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIExJUVVJRElPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUyOjQxLjAyMjkxMzYwMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTMzMjYyNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQ2F2aXVtIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgdGhpcyBzb3J0ZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQ2F2aXVtLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlciBpcyBjb25maWd1cmVkLiBUaGlzIGlzIHRoZSBwbGFjZSB3aGVyZSBJJ2xsIGZpbmQgYWxsIHRoZSBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0cyB0aGF0IGdvdmVybiBpdHMgYmVoYXZpb3Igd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBJ4oCZbSB0aGlua2luZyB0aGlzIGZpbGUgaG9sZHMgdGhlIGtleSB0byB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGV4YW1pbmUuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk2MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUyOjQ3LjE1NjE3OTk4M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY3MjQ5MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBMSVFVSURJT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTU0PWNvbmZpZyBDQVZJVU1fUFRQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy02NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo2NTpjb25maWcgTElRVUlESU9fQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY2LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6Njg6Y29uZmlnIExJUVVJRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNjktXFx0dHJpc3RhdGUgXFxcIkNhdml1bSBMaXF1aWRJTyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9ODQ9Y29uZmlnIE9DVEVPTl9NR01UX0VUSEVSTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy05NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo5NTpjb25maWcgTElRVUlESU9fVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy05Ni1cXHR0cmlzdGF0ZSBcXFwiQ2F2aXVtIExpcXVpZElPIFZGIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUyOjQ3LjgyMzQzNzM0NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM3ODY2NDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDpcblxuKipDaGVja2luZyBhbmQgRW5hYmxpbmcgdGhlIExJUVVJRElPIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUgaXMgZGVmaW5pdGVseSBgTElRVUlESU9gLiBNeSBwcmltYXJ5IHRhc2sgd2lsbCBiZSB0byBpbnRlZ3JhdGUgYExJUVVJRElPYCBpbnRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gVGhhdCBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkLiBOb3csIGp1c3QgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBMSVFVSURJT2AgZG9lc24ndCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBMb29rcyBsaWtlIHRoZXJlIGlzIG9uZSBkZXBlbmRlbmN5LCBgUENJYCwgdGhhdCBtdXN0IGFsc28gYmUgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MjIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1Mjo1Mi41NjEzMDcxMTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDY2NzE5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTE2PWNvbmZpZyBUSFVOREVSX05JQ19QRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTE3LVxcdHRyaXN0YXRlIFxcXCJUaHVuZGVyIFBoeXNpY2FsIGZ1bmN0aW9uIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzoxODpcXHRkZXBlbmRzIG9uIDY0QklUIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTE5LVxcdHNlbGVjdCBUSFVOREVSX05JQ19CR1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTI4PWNvbmZpZyBUSFVOREVSX05JQ19WRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctMzAtXFx0aW1wbHkgQ0FWSVVNX1BUUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjMxOlxcdGRlcGVuZHMgb24gNjRCSVQgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9MzU9Y29uZmlnXFx0VEhVTkRFUl9OSUNfQkdYXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctMzYtXFx0dHJpc3RhdGUgXFxcIlRodW5kZXIgTUFDIGludGVyZmFjZSBkcml2ZXIgKEJHWClcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6Mzc6XFx0ZGVwZW5kcyBvbiA2NEJJVCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy0zOC1cXHRzZWxlY3QgUEhZTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz00NT1jb25maWdcXHRUSFVOREVSX05JQ19SR1hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiVGh1bmRlciBNQUMgaW50ZXJmYWNlIGRyaXZlciAoUkdYKVxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo0NzpcXHRkZXBlbmRzIG9uIDY0QklUIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTQ4LVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTU0PWNvbmZpZyBDQVZJVU1fUFRQXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIkNhdml1bSBQVFAgY29wcm9jZXNzb3IgYXMgUFRQIGNsb2NrXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjU2OlxcdGRlcGVuZHMgb24gNjRCSVQgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NTc6XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTU4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTY4PWNvbmZpZyBMSVFVSURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY5LVxcdHRyaXN0YXRlIFxcXCJDYXZpdW0gTGlxdWlkSU8gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo3MDpcXHRkZXBlbmRzIG9uIDY0QklUIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjcxOlxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NzI6XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTczLVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9ODQ9Y29uZmlnIE9DVEVPTl9NR01UX0VUSEVSTkVUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctODUtXFx0dHJpc3RhdGUgXFxcIk9jdGVvbiBNYW5hZ2VtZW50IHBvcnQgZXRoZXJuZXQgZHJpdmVyIChDTjVYWFgsIENONlhYWClcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6ODY6XFx0ZGVwZW5kcyBvbiBDQVZJVU1fT0NURU9OX1NPQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTg3LVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTk1PWNvbmZpZyBMSVFVSURJT19WRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk2LVxcdHRyaXN0YXRlIFxcXCJDYXZpdW0gTGlxdWlkSU8gVkYgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo5NzpcXHRkZXBlbmRzIG9uIDY0QklUIFxcdTAwMjZcXHUwMDI2IFBDSV9NU0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo5ODpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctOTktXFx0c2VsZWN0IExJUVVJRElPX0NPUkVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTI6NTIuNzc1OTg4MTg2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMjAzODM3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ2F2aXVtIExpcXVpZElPIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGUga2V5IGRlcGVuZGVuY2llcyBoZXJlIGFyZSBgTElRVUlESU9gLCB3aGljaCBpcyBhIGdpdmVuLCBidXQgYWxzbyBgNjRCSVRgLCBgUENJYCwgYW5kIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAuIFRoZXNlIGFyZSBhbGwgcHJldHR5IHN0YW5kYXJkIGtlcm5lbCBjb25maWd1cmF0aW9ucywgbm90aGluZyB1bnVzdWFsIHRoZXJlLlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIGhhbmRsaW5nIG9mIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIEFoLCB0aGlzIGlzIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGUgaW50ZXJlc3RpbmcgcG9pbnQgaXMgdGhhdCB0aGlzIHZ1bG5lcmFibGUgY29kZSBpcyByZWFjaGFibGUgdGhyb3VnaCBQQ0kgcHJvYmluZywgbWVhbmluZyBpdCdzIHN1c2NlcHRpYmxlIHRvIGZ1enppbmcsIGVzcGVjaWFsbHkgdmlhIHNvbWV0aGluZyBsaWtlIHN5emthbGxlcidzIHZQQ0kgZnV6emVyLiBUaGUgdmFsdWUgaGVyZSBpcyB0aGF0IGZ1enppbmcgdGhpcyBlcnJvciBwYXRoIHdpbGwgY29uZmlybSB0aGF0IHRoZSB1bm1hcHBpbmcgbG9naWMgaXMgbm90IGludHJvZHVjaW5nIGRvdWJsZSBmcmVlcyBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuIEl0IG1ha2VzIHNlbnNlIHRvIHRhcmdldCB0aGlzIGFzIGFuIGFyZWEgZm9yIHZ1bG5lcmFiaWxpdGllcy5cblxuTXkgc3BlY2lmaWMgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGZ1bmN0aW9uLiBJIGluaXRpYWxseSB3YW50IHRvIHRha2UgYSBicmllZiBsb29rIHRvIHNlZSBpZiB0aGlzIGFmZmVjdHMgYW55IG90aGVyIGZ1bmN0aW9ucywgYnV0IGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyBpc29sYXRlZCB0byBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBJdCBpcyBmaW5lIHRvIG9ubHkgZm9jdXMgb24gdGhpcy5cblxuQWxyaWdodCwgSSdtIHNhdGlzZmllZC4gVGltZSB0byBzdWJtaXQgbXkgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1NzgsIk91dHB1dFRva2VucyI6MTM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUzOjAwLjg5NjM3NjAyOFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjEyMzc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTElRVUlESU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgcHJvYmluZywgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXIncyB2UENJIGZ1enplci4gRnV6emluZyB0aGlzIGVycm9yIHBhdGggaXMgdXNlZnVsIHRvIGVuc3VyZSB0aGF0IHRoZSB1bm1hcHBpbmcgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIGRvdWJsZSBmcmVlcyBvciBvdGhlciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTElRVUlESU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgcHJvYmluZywgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXIncyB2UENJIGZ1enplci4gRnV6emluZyB0aGlzIGVycm9yIHBhdGggaXMgdXNlZnVsIHRvIGVuc3VyZSB0aGF0IHRoZSB1bm1hcHBpbmcgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIGRvdWJsZSBmcmVlcyBvciBvdGhlciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowwfjfz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 10:02:00 +0000 UTC FinishedAt: 2026-06-24 10:53:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LIQUIDIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LIQUIDIO" ], "series_id": "83bbeb51-1f6b-4b32-b358-a17b1bc69b3f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "setup_cn23xx_octeon_pf_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xJUVVJRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgaW4gdGhlIENhdml1bSBMaXF1aWRJTyBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBwcm9iaW5nLCB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlciYjMzk7cyB2UENJIGZ1enplci4gRnV6emluZyB0aGlzIGVycm9yIHBhdGggaXMgdXNlZnVsIHRvIGVuc3VyZSB0aGF0IHRoZSB1bm1hcHBpbmcgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIGRvdWJsZSBmcmVlcyBvciBvdGhlciBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOGY1ZTg3MjViNWM4ZmNjZDVlMmIzYzMzZWNhNThjOTQxMjE4ZjhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTA6NTA6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbmluZGV4IDc1ZjIyZjc0Nzc0Y2IyLi4wNmI0NDI0ZTc3OGVkOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbkBAIC0xMTYzLDE4ICYjNDM7MTE2MywxNCBAQCBpbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcbiBcdGlmIChvY3Rlb25fbWFwX3BjaV9iYXJ4KG9jdCwgMSwgTUFYX0JBUjFfSU9SRU1BUF9TSVpFKSkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNm9jdC1cdTAwM2VwY2lfZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXMgQ04yM1hYIEJBUjEgbWFwIGZhaWxlZFxcblwmIzM0OyxcbiBcdFx0XHRfX2Z1bmNfXyk7XG4tXHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xuLVx0XHRyZXR1cm4gMTtcbiYjNDM7XHRcdGdvdG8gZXJyX3VubWFwX2JhcjA7XG4gXHR9XG4gXG4gXHRpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKVxuLVx0XHRyZXR1cm4gMTtcbiYjNDM7XHRcdGdvdG8gZXJyX3VubWFwX2JhcjE7XG4gXG4tXHRpZiAoY24yM3h4X3NyaW92X2NvbmZpZyhvY3QpKSB7XG4tXHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xuLVx0XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAxKTtcbi1cdFx0cmV0dXJuIDE7XG4tXHR9XG4mIzQzO1x0aWYgKGNuMjN4eF9zcmlvdl9jb25maWcob2N0KSlcbiYjNDM7XHRcdGdvdG8gZXJyX3VubWFwX2JhcjE7XG4gXG4gXHRvY3Rlb25fd3JpdGVfY3NyNjQob2N0LCBDTjIzWFhfU0xJX01BQ19DUkVESVRfQ05ULCAweDNGODAyMDgwODAyMDgwVUxMKTtcbiBcbkBAIC0xMjA1LDYgJiM0MzsxMjAxLDEyIEBAIGludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuIFx0b2N0LVx1MDAzZWNvcHJvY19jbG9ja19yYXRlID0gMTAwMDAwMFVMTCAqIGNuMjN4eF9jb3Byb2Nlc3Nvcl9jbG9jayhvY3QpO1xuIFxuIFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztlcnJfdW5tYXBfYmFyMTpcbiYjNDM7XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAxKTtcbiYjNDM7ZXJyX3VubWFwX2JhcjA6XG4mIzQzO1x0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4mIzQzO1x0cmV0dXJuIDE7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMSVFVSURJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgcHJvYmluZywgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgdlBDSSBmdXp6ZXIuIEZ1enppbmcgdGhpcyBlcnJvciBwYXRoIGlzIHVzZWZ1bCB0byBlbnN1cmUgdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSBkb3VibGUgZnJlZXMgb3Igb3RoZXIgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyOGY1ZTg3MjViNWM4ZmNjZDVlMmIzYzMzZWNhNThjOTQxMjE4ZjhiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMTA6NTA6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYwppbmRleCA3NWYyMmY3NDc3NGNiMi4uMDZiNDQyNGU3NzhlZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYwpAQCAtMTE2MywxOCAmIzQzOzExNjMsMTQgQEAgaW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpCiAJaWYgKG9jdGVvbl9tYXBfcGNpX2Jhcngob2N0LCAxLCBNQVhfQkFSMV9JT1JFTUFQX1NJWkUpKSB7CiAJCWRldl9lcnIoJmFtcDtvY3QtJmd0O3BjaV9kZXYtJmd0O2RldiwgJiMzNDslcyBDTjIzWFggQkFSMSBtYXAgZmFpbGVkXG4mIzM0OywKIAkJCV9fZnVuY19fKTsKLQkJb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7Ci0JCXJldHVybiAxOwomIzQzOwkJZ290byBlcnJfdW5tYXBfYmFyMDsKIAl9CiAKIAlpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKQotCQlyZXR1cm4gMTsKJiM0MzsJCWdvdG8gZXJyX3VubWFwX2JhcjE7CiAKLQlpZiAoY24yM3h4X3NyaW92X2NvbmZpZyhvY3QpKSB7Ci0JCW9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApOwotCQlvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAxKTsKLQkJcmV0dXJuIDE7Ci0JfQomIzQzOwlpZiAoY24yM3h4X3NyaW92X2NvbmZpZyhvY3QpKQomIzQzOwkJZ290byBlcnJfdW5tYXBfYmFyMTsKIAogCW9jdGVvbl93cml0ZV9jc3I2NChvY3QsIENOMjNYWF9TTElfTUFDX0NSRURJVF9DTlQsIDB4M0Y4MDIwODA4MDIwODBVTEwpOwogCkBAIC0xMjA1LDYgJiM0MzsxMjAxLDEyIEBAIGludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KQogCW9jdC0mZ3Q7Y29wcm9jX2Nsb2NrX3JhdGUgPSAxMDAwMDAwVUxMICogY24yM3h4X2NvcHJvY2Vzc29yX2Nsb2NrKG9jdCk7CiAKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfdW5tYXBfYmFyMToKJiM0MzsJb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7CiYjNDM7ZXJyX3VubWFwX2JhcjA6CiYjNDM7CW9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApOwomIzQzOwlyZXR1cm4gMTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzExCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENhdml1bSBMaXF1aWRJTyBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jYC4gSXQmIzM5O3MgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGZpeCBmb3IgZXJyb3IgaGFuZGxpbmcgaW4gYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCwgYWRkaW5nIGBnb3RvYCBzdGF0ZW1lbnRzIHRvIGVuc3VyZSBwcm9wZXIgUENJIEJBUiB1bm1hcHBpbmcgb24gZmFpbHVyZS4gVGhhdCYjMzk7cyBnb29kIGh5Z2llbmUsIGJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpczogaXMgdGhpcyBmdXp6YWJsZT8KClRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgdGhhdCB0aGlzIGlzIGEgZHJpdmVyIGZvciB0aGUgQ2F2aXVtIExpcXVpZElPIEludGVsbGlnZW50IFNlcnZlciBBZGFwdGVyLCBhIFBDSSBkZXZpY2UuIE15IGluaXRpYWwgaW50dWl0aW9uIGlzIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyBsaWtlIHRoaXMgYXJlIGRpZmZpY3VsdCB0byBmdXp6IGRpcmVjdGx5LCB1bmxlc3Mgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBzb3BoaXN0aWNhdGVkIGhhcmR3YXJlIGVtdWxhdG9yIG9yLCBwcmVmZXJhYmx5LCBhIHZlcnkgd2VsbC1kZXZlbG9wZWQgZ2VuZXJpYyBQQ0kgZnV6emluZyBzZXR1cC4gSG93ZXZlciwgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgcHJvamVjdCBoYXMgYSBzcGVjaWZpYyBleGNsdXNpb246IGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4KCkdpdmVuIHRoYXQsIEkgbmVlZCB0byBjb25maXJtOiBpcyB0aGlzIENhdml1bSBMaXF1aWRJTyBoYXJkd2FyZSBlbXVsYXRlZCBpbiBRRU1VPyBBcyBmYXIgYXMgSSBrbm93LCBpdCBpc24mIzM5O3QuIFNvIGlmIHdlIGNhbiYjMzk7dCBmdXp6IGl0IHRocm91Z2ggUUVNVSwgY2FuIHdlIHN0aWxsIGdldCB0byBpdD8gVGhhbmtmdWxseSwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGlzIGEgcHJvbWlzaW5nIHNpZ24uIFRoZSBQQ0kgZnV6emVyIHVzZXMgdGhlIGBzeXpfcGNpX2RldmljZV9zZXR1cGAgY2FsbCwgcHJvdmlkaW5nIHZlbmRvciBhbmQgZGV2aWNlIElEcy4gVGhlIG5leHQgcXVlc3Rpb24gaXMsIGRvZXMgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBnZXQgY2FsbGVkIGR1cmluZyBQQ0kgcHJvYmU/IElmIHNvLCB0aGlzIHBhdGNoIGlzIGFic29sdXRlbHkgd29ydGggY29uc2lkZXJpbmcgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM9MTA4MD1pbnQgY24yM3h4X3NyaW92X2NvbmZpZyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTEzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTEzODppbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTEzOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMjEwLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTIxMTpFWFBPUlRfU1lNQk9MX0dQTChzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTEyMTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuaD00Nj1zdHJ1Y3Qgb2N0X3ZmX3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5oLTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuaDo1NTppbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5oLTU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMzY9c3RhdGljIGludCBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzNTctXHRcdG9jdC1cdTAwM2VjaGlwX2lkID0gT0NURU9OX0NOMjNYWF9QRl9WSUQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoxMzU4Olx0XHRyZXQgPSBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShvY3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTM1OS1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjc1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXBgIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgY2FsbGVkIGZyb20gYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYC4gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGlzIGlzIGdldHRpbmcgY2FsbGVkIGR1cmluZyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIOKAkyBtYWtlcyBzZW5zZSBmb3IgaW5pdGlhbCBoYXJkd2FyZSBzZXR1cC4gTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFuZCB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBkb2luZy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlIG9mIGBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cGAgZGlyZWN0bHkuIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYGxpb19tYWluLmNgIGFuZCBzZWUgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIGFsbCBhYm91dC4gSG9wZWZ1bGx5LCB0aGUgY29kZSBjb21tZW50cyBhcmUgZGVzY3JpcHRpdmUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMDM9c3RhdGljIHZvaWQgbGlxdWlkaW9fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzMzItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoxMzMzOiAqIG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwIC0gSWRlbnRpZnkgdGhlIE9jdGVvbiBkZXZpY2UgYW5kIHRvIG1hcCB0aGUgQkFSIGFkZHJlc3Mgc3BhY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzMzQtICogQG9jdDogb2N0ZW9uIGRldmljZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTMzNS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjEzMzY6c3RhdGljIGludCBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTMzNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9NDAzND1zdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MDUxLVx0LyogSWRlbnRpZnkgdGhlIE9jdGVvbiB0eXBlIGFuZCBtYXAgdGhlIEJBUiBhZGRyZXNzIHNwYWNlLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6NDA1MjpcdGlmIChvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cChvY3Rlb25fZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDA1My1cdFx0ZGV2X2VycihcdTAwMjZvY3Rlb25fZGV2LVx1MDAzZXBjaV9kZXYtXHUwMDNlZGV2LCBcJiMzNDtDaGlwIHNwZWNpZmljIHNldHVwIGZhaWxlZFxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM2OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVHJhY2luZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpBbHJpZ2h0LCBsZXQgbWUganVzdCBtYWtlIHN1cmUgSSYjMzk7bSBmb2xsb3dpbmcgdGhpcyBjb3JyZWN0bHkuIFNvLCBgb2N0ZW9uX2RldmljZV9pbml0YCBpcyBpbnZva2VkLCBhbmQgdGhhdCBmdW5jdGlvbi4uLiBhaCwgdGhhdCYjMzk7cyBjYWxsZWQgZnJvbSBgbGlxdWlkaW9fcHJvYmVgLCBpc24mIzM5O3QgaXQ/IEp1c3Qgd2FudGluZyB0byBtYWtlIGNlcnRhaW4gSSYjMzk7bSBub3QgbWlzc2luZyBhIHN0ZXAgaW4gdGhlIGRldmljZSBpbml0aWFsaXphdGlvbi4gR290dGEga2VlcCB0aGUgd2hvbGUgcGljdHVyZSBjbGVhciBpbiBteSBoZWFkLCBlc3BlY2lhbGx5IHdoZW4gZGl2aW5nIGRlZXAgaW50byB0aGVzZSBkcml2ZXIgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29jdGVvbl9kZXZpY2VfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MTM5PXN0YXRpYyBpbnQgb2N0ZW9uX2RiZ19jb25zb2xlX3ByaW50KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsIHUzMiBjb25zb2xlX251bSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xNDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoxNDI6c3RhdGljIGludCBvY3Rlb25fZGV2aWNlX2luaXQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xNDMtc3RhdGljIGludCBsaXF1aWRpb19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTgyMz1saXF1aWRpb19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy04NjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo4NjY6XHRpZiAob2N0ZW9uX2RldmljZV9pbml0KG9jdF9kZXYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy04NjctXHRcdGNvbXBsZXRlKFx1MDAyNmhzLVx1MDAzZWluaXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTM5ODA9b2N0ZW9uX3JlY3ZfdmZfZHJ2X25vdGljZShzdHJ1Y3Qgb2N0ZW9uX3JlY3ZfaW5mbyAqcmVjdl9pbmZvLCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjQwMzE6ICogb2N0ZW9uX2RldmljZV9pbml0IC0gRGV2aWNlIGluaXRpYWxpemF0aW9uIGZvciBlYWNoIE9jdGVvbiBkZXZpY2UgdGhhdCBpcyBwcm9iZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTQwMzItICogQG9jdGVvbl9kZXY6ICBvY3Rlb24gZGV2aWNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MDMzLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6NDAzNDpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2RldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTQwMzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTY5PXN0YXRpYyB2b2lkIGxpcXVpZGlvX3ZmX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzo3MDpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTcxLXN0YXRpYyBpbnQgbGlxdWlkaW9fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0zNzk9bGlxdWlkaW9fdmZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtNDA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6NDA1Olx0aWYgKG9jdGVvbl9kZXZpY2VfaW5pdChvY3RfZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtNDA2LVx0XHRsaXF1aWRpb192Zl9yZW1vdmUocGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MjIzMD1zdGF0aWMgaW50IGxpcXVpZGlvX2luaXRfbmljX21vZHVsZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIyNjQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoyMjY1OiAqIG9jdGVvbl9kZXZpY2VfaW5pdCAtIERldmljZSBpbml0aWFsaXphdGlvbiBmb3IgZWFjaCBPY3Rlb24gZGV2aWNlIHRoYXQgaXMgcHJvYmVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY2LSAqIEBvY3Q6ICBvY3Rlb24gZGV2aWNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MjI2ODpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY3OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgUENJIFByb2JlIEZpeCoqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWssIHNwZWNpZmljYWxseSBvbiB0aGUgZXJyb3IgcGF0aCB3aXRoaW4gYGxpcXVpZGlvX3Byb2JlYC4gVGhpcyBmdW5jdGlvbiBpcywgb2YgY291cnNlLCBhIFBDSSBwcm9iZSBmdW5jdGlvbiwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtDYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICpyZWFjaCogdGhpcz8mIzM0OyBUaGUgYW5zd2VyLCBhcyBJIHJlY2FsbCwgaXMgdGhhdCB5ZXMsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBsaXF1aWRpb19wcm9iZWAsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSByZWFjaGVkIHZpYSBzeXprYWxsZXImIzM5O3MgYHN5el9wY2lfZGV2aWNlX3NldHVwYCwgb3Igc2ltaWxhciB2UENJIGZ1enppbmcgYXBwcm9hY2hlcy4KCkJ1dCB3YWl0LCB0aGUgcGF0Y2ggKm9ubHkqIGFkZHJlc3NlcyBhbiBlcnJvciBwYXRoLiBJcyB0aGlzIGV2ZW4gd29ydGggb3VyIHRpbWUgdG8gZnV6ej8gSSBuZWVkIHRvIGFwcGx5IHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhLiBJZiB0aGUgcGF0Y2ggJiMzNDtvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LCB0aGVuIHRoZSBhbnN3ZXIgaXMgJiMzNDtubyYjMzQ7LiBTbywgY2FuIHdlIHJlYWNoIENhdml1bSBMaXF1aWRJTyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/CgpUaGlua2luZyBhYm91dCBzeXprYWxsZXIsIGl0ICpkb2VzKiBoYXZlIGEgdlBDSSBmdXp6ZXIsIHdoaWNoIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBlbXVsYXRlIGFyYml0cmFyeSBQQ0kgZGV2aWNlcy4gSXQgYWNjb21wbGlzaGVzIHRoaXMgZWl0aGVyIGJ5IGhvb2tpbmcgaW50byB0aGUgUENJIHN1YnN5c3RlbSBvciBlbXBsb3lpbmcgYSB2aXJ0dWFsIFBDSSBidXMsIGFuZCBpdCBjYW4gdHJpZ2dlciBwcm9iZSBmdW5jdGlvbnMgb2YgKmFueSogUENJIGRyaXZlciBieSBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcy4KCkJ1dCBoZXJlJiMzOTtzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBkb2VzIHRoZSB2UENJIGZ1enplciAqZ2VudWluZWx5KiBlbXVsYXRlIHRoZSBkZXZpY2UmIzM5O3MgQkFScyAoQmFzZSBBZGRyZXNzIFJlZ2lzdGVycykgYW5kIHJlZ2lzdGVycyBzdWZmaWNpZW50bHkgd2VsbCB0byBwZW5ldHJhdGUgZGVlcGx5IGludG8gdGhlIGBwcm9iZWAgZnVuY3Rpb24/IEkgYmVsaWV2ZSB0aGUgYW5zd2VyIGlzIHllcy4gSSBrbm93IHN5emthbGxlciBjYW4gcHJvdmlkZSBmYWtlIEJBUnMgYW5kIG1lbW9yeS1tYXBwZWQgSS9PIHJlZ2lvbnMuIFRoYXQmIzM5O3MgYSBrZXkgY2FwYWJpbGl0eS4KClNvLCBpdCAqYXBwZWFycyogcHJvbWlzaW5nLiBCZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzcGVjaWZpYyBDT05GSUdzIG5lZWRlZCB0byBlbmFibGUgdGhlIENhdml1bSBMaXF1aWRJTyBkZXZpY2UsIHdoaWNoIHdvdWxkIHJlbmRlciB0aGUgd2hvbGUgZXhlcmNpc2UgdXNlbGVzcyB3aXRob3V0IHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0xJUVVJRElPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MSVFVSURJT19DT1JFKSAmIzQzOz0gbGlxdWlkaW8tY29yZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtNy1saXF1aWRpby1jb3JlLXkgOj0gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0xJUVVJRElPKSAmIzQzOz0gbGlxdWlkaW8ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTIzLWxpcXVpZGlvLXkgOj0gbGlvX21haW4ubyBvY3Rlb25fY29uc29sZS5vIGxpb192Zl9yZXAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19MSVFVSURJT19WRikgJiM0Mzs9IGxpcXVpZGlvX3ZmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZS0yNi1saXF1aWRpb192Zi15IDo9IGxpb192Zl9tYWluLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jPTQwNT1pbnQgY24yM3h4X29jdGVvbl9wZnZmX2hhbmRzaGFrZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfdmZfZGV2aWNlLmMtNDIzLVx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcdTAwMjZtYm94X2NtZC5kYXRhWzBdKS1cdTAwM2VtYWpvciA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQyNDpcdFx0XHRcdFx0XHRMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT047XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jLTQyNS1cdCgoc3RydWN0IGxpb192ZXJzaW9uICopXHUwMDI2bWJveF9jbWQuZGF0YVswXSktXHUwMDNlbWlub3IgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYzo0MjY6XHRcdFx0XHRcdFx0TElRVUlESU9fQkFTRV9NSU5PUl9WRVJTSU9OO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00MjctXHQoKHN0cnVjdCBsaW9fdmVyc2lvbiAqKVx1MDAyNm1ib3hfY21kLmRhdGFbMF0pLVx1MDAzZW1pY3JvID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfdmZfZGV2aWNlLmM6NDI4Olx0XHRcdFx0XHRcdExJUVVJRElPX0JBU0VfTUlDUk9fVkVSU0lPTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfdmZfZGV2aWNlLmMtNDI5LVx0bWJveF9jbWQucV9ubyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQ1MjpcdHZmbWFqb3IgPSBMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT047XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jLTQ1My1cdHBmbWFqb3IgPSByZXQgXHUwMDNlXHUwMDNlIDE2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jPTE0NTY9dm9pZCBsaW9fZmV0Y2hfc3RhdHMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTE0NjgtXHRcdGlmICghKG9jdF9kZXYtXHUwMDNldmZzdGF0c19wb2xsICUgTElPX1ZGU1RBVFNfUE9MTCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYzoxNDY5Olx0XHQgICAgKG9jdF9kZXYtXHUwMDNlZndfaW5mby5hcHBfY2FwX2ZsYWdzIFx1MDAyNiBMSVFVSURJT19TUE9PRkNIS19DQVApIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMTQ3MC1cdFx0ICAgIG9jdF9kZXYtXHUwMDNlc3Jpb3ZfaW5mby5udW1fdmZzX2FsbG9jZWQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0xNTE2LWxpb19mZXRjaF9zdGF0c19leGl0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmM6MTUxNzpcdHRpbWVfaW5famlmZmllcyA9IG1zZWNzX3RvX2ppZmZpZXMoTElRVUlESU9fTkRFVl9TVEFUU19QT0xMX1RJTUVfTVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMTUxOC1cdGlmIChpZnN0YXRlX2NoZWNrKGxpbywgTElPX0lGU1RBVEVfUlVOTklORykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM9OTg4PXN0YXRpYyBpbnQgbGlvXzIzeHhfcmVjb25maWd1cmVfcXVldWVfY291bnQoc3RydWN0IGxpbyAqbGlvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTEwMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzoxMDE0Olx0dmRhdGEtXHUwMDNlbWFqb3IgPSAoX19mb3JjZSB1MTYpY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jOjEwMTU6XHR2ZGF0YS1cdTAwM2VtaW5vciA9IChfX2ZvcmNlIHUxNiljcHVfdG9fYmUxNihMSVFVSURJT19CQVNFX01JTk9SX1ZFUlNJT04pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM6MTAxNjpcdHZkYXRhLVx1MDAzZW1pY3JvID0gKF9fZm9yY2UgdTE2KWNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUlDUk9fVkVSU0lPTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0xMDE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jPTI0MjM9c3RhdGljIGludCBsaW9fc2V0X2ludHJfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0yNDQ4LVx0XHRcdGRldl9lcnIoXHUwMDI2b2N0LVx1MDAzZXBjaV9kZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM6MjQ0OTpcdFx0XHRcdFwmIzM0O0xJUVVJRElPOiBJbnZhbGlkIHR4LWZyYW1lczolZC4gUmFuZ2UgaXMgbWluOiVkIG1heDolZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTI0NTAtXHRcdFx0XHRpbnRyX2NvYWwtXHUwMDNldHhfbWF4X2NvYWxlc2NlZF9mcmFtZXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9NzY9c3RhdGljIGludCBvY3Rlb25fY29uc29sZV9kZWJ1Z19lbmFibGVkKHUzMiBjb25zb2xlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTgxLS8qIFBvbGxpbmcgaW50ZXJ2YWwgZm9yIGRldGVybWluaW5nIHdoZW4gTklDIGFwcGxpY2F0aW9uIGlzIGFsaXZlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo4MjojZGVmaW5lIExJUVVJRElPX1NUQVJURVJfUE9MTF9JTlRFUlZBTF9NUyAxMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODQtLyogcnVudGltZSBsaW5rIHF1ZXJ5IGludGVydmFsICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo4NTojZGVmaW5lIExJUVVJRElPX0xJTktfUVVFUllfSU5URVJWQUxfTVMgICAgICAgICAxMDAwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy04Ni0vKiB1cGRhdGUgbG9jYWx0aW1lIHRvIG9jdGVvbiBmaXJtd2FyZSBldmVyeSA2MCBzZWNvbmRzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMDM9c3RhdGljIHZvaWQgbGlxdWlkaW9fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzMTItXHRpZiAoIW9jdF9kZXYtXHUwMDNlb2N0ZW9uX2lkIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MTMxMzpcdCAgICBvY3RfZGV2LVx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcdTAwMjYgTElRVUlESU9fU1dJVENIREVWX0NBUClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzMTQtXHRcdGxpb192Zl9yZXBfbW9kZXhpdCgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTE3NjQ9c3RhdGljIGludCBsaXF1aWRpb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTgxMC1cdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZsaW8tXHUwMDNlc3RhdHNfd2sud29yaywgbXNlY3NfdG9famlmZmllc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MTgxMTpcdFx0XHRcdFx0KExJUVVJRElPX05ERVZfU1RBVFNfUE9MTF9USU1FX01TKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xODEyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTI4NTE9c3RhdGljIGludCBsaXF1aWRpb19zZXRfdmZfc3Bvb2ZjaGsoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHZmaWR4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI4NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyODU5Olx0aWYgKCEob2N0LVx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcdTAwMjYgTElRVUlESU9fU1BPT0ZDSEtfQ0FQKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjg2MC1cdFx0bmV0aWZfaW5mbyhsaW8sIGRydiwgbGlvLVx1MDAzZW5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zMTI1PWxpcXVpZGlvX2Vzd2l0Y2hfbW9kZV9zZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssIHUxNiBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTMxMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozMTM1Olx0aWYgKCEob2N0LVx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcdTAwMjYgTElRVUlESU9fU1dJVENIREVWX0NBUCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zMTM2LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zMzIyPXN0YXRpYyBpbnQgc2V0dXBfbmljX2RldmljZXMoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzM2OS1cdFx0KigodTY0ICopdmRhdGEpID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMzNzA6XHRcdHZkYXRhLVx1MDAzZW1ham9yID0gY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMzNzE6XHRcdHZkYXRhLVx1MDAzZW1pbm9yID0gY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NSU5PUl9WRVJTSU9OKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMzNzI6XHRcdHZkYXRhLVx1MDAzZW1pY3JvID0gY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NSUNST19WRVJTSU9OKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTMzNzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ0MC1cdFx0ZndfdmVyID0gb2N0ZW9uX2Rldi1cdTAwM2Vmd19pbmZvLmxpcXVpZGlvX2Zpcm13YXJlX3ZlcnNpb247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNDQxOlx0XHRpZiAobWVtY21wKExJUVVJRElPX0JBU0VfVkVSU0lPTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM0NDItXHRcdFx0ICAgZndfdmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzQ0MzpcdFx0XHQgICBzdHJsZW4oTElRVUlESU9fQkFTRV9WRVJTSU9OKSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM0NDQtXHRcdFx0ZGV2X2VycihcdTAwMjZvY3Rlb25fZGV2LVx1MDAzZXBjaV9kZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ0NS1cdFx0XHRcdFwmIzM0O1VubWF0Y2hlZCBmaXJtd2FyZSB2ZXJzaW9uLiBFeHBlY3RlZCAlcy54LCBnb3QgJXMuXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzQ0NjpcdFx0XHRcdExJUVVJRElPX0JBU0VfVkVSU0lPTiwgZndfdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM0NDctXHRcdFx0V1JJVEVfT05DRShzYy1cdTAwM2VjYWxsZXJfaXNfZG9uZSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ1Ni1cdFx0LyogZXh0cmFjdCBtaWNybyB2ZXJzaW9uIGZpZWxkOyBwb2ludCBwYXN0ICYjMzk7XHUwMDNjbWFqXHUwMDNlLlx1MDAzY21pblx1MDAzZS4mIzM5OyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzQ1NzpcdFx0bWljcm9fdmVyID0gZndfdmVyICYjNDM7IHN0cmxlbihMSVFVSURJT19CQVNFX1ZFUlNJT04pICYjNDM7IDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDU4LVx0XHRpZiAoa3N0cnRvdWwobWljcm9fdmVyLCAxMCwgXHUwMDI2bWljcm8pICE9IDApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDU5LVx0XHRcdG1pY3JvID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM0NjA6XHRcdG9jdGVvbl9kZXYtXHUwMDNlZndfaW5mby52ZXIubWFqID0gTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzQ2MTpcdFx0b2N0ZW9uX2Rldi1cdTAwM2Vmd19pbmZvLnZlci5taW4gPSBMSVFVSURJT19CQVNFX01JTk9SX1ZFUlNJT047XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDYyLVx0XHRvY3Rlb25fZGV2LVx1MDAzZWZ3X2luZm8udmVyLnJldiA9IG1pY3JvO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM2NzMtXHRcdGlmICgob2N0ZW9uX2Rldi1cdTAwM2Vmd19pbmZvLmFwcF9jYXBfZmxhZ3MgXHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNjc0Olx0XHQgICAgIExJUVVJRElPX1RJTUVfU1lOQ19DQVApIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzY3NS1cdFx0ICAgIHNldHVwX3N5bmNfb2N0ZW9uX3RpbWVfd3EobmV0ZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zODg1PXN0YXRpYyBpbnQgbGlxdWlkaW9faW5pdF9uaWNfbW9kdWxlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzkxMi1cdGlmICghb2N0LVx1MDAzZW9jdGVvbl9pZCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM5MTM6XHQgICAgb2N0LVx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcdTAwMjYgTElRVUlESU9fU1dJVENIREVWX0NBUCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzkxNC1cdFx0cmV0dmFsID0gbGlvX3ZmX3JlcF9tb2Rpbml0KCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9Mzk0MD1zdGF0aWMgdm9pZCBuaWNfc3RhcnRlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzk1Ni1cdFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNm9jdC1cdTAwM2VuaWNfcG9sbF93b3JrLndvcmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozOTU3Olx0XHRcdFx0ICAgICAgTElRVUlESU9fU1RBUlRFUl9QT0xMX0lOVEVSVkFMX01TKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM5NTgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz00MDM0PXN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTQxMjAtXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2b2N0ZW9uX2Rldi1cdTAwM2VuaWNfcG9sbF93b3JrLndvcmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo0MTIxOlx0XHRcdCAgICAgIExJUVVJRElPX1NUQVJURVJfUE9MTF9JTlRFUlZBTF9NUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MTIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTkwMz1zdGF0aWMgaW50IGxpcXVpZGlvX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy05MzItXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bGlvLVx1MDAzZXN0YXRzX3drLndvcmssIG1zZWNzX3RvX2ppZmZpZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjkzMzpcdFx0XHRcdFx0KExJUVVJRElPX05ERVZfU1RBVFNfUE9MTF9USU1FX01TKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy05MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTkxOT1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE5NjAtXHRcdCooKHU2NCAqKXZkYXRhKSA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxOTYxOlx0XHR2ZGF0YS1cdTAwM2VtYWpvciA9IGNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUFKT1JfVkVSU0lPTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxOTYyOlx0XHR2ZGF0YS1cdTAwM2VtaW5vciA9IGNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxOTYzOlx0XHR2ZGF0YS1cdTAwM2VtaWNybyA9IGNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUlDUk9fVkVSU0lPTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xOTY0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaC0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyMzojaWZuZGVmIF9fTElRVUlESU9fQ09NTU9OX0hfX1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjI0OiNkZWZpbmUgX19MSVFVSURJT19DT01NT05fSF9fXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjI4OiNkZWZpbmUgTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OIDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyOTojZGVmaW5lIExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTiA3XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg6MzA6I2RlZmluZSBMSVFVSURJT19CQVNFX01JQ1JPX1ZFUlNJT04gMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjMxOiNkZWZpbmUgTElRVUlESU9fQkFTRV9WRVJTSU9OICAgX19zdHJpbmdpZnkoTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OKSBcJiMzNDsuXCYjMzQ7IFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg6MzI6XHRcdFx0XHRfX3N0cmluZ2lmeShMSVFVSURJT19CQVNFX01JTk9SX1ZFUlNJT04pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oPTQzPWVudW0gb2N0ZW9uX3RhZ190eXBlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMTEyLS8qIEFwcCBzcGVjaWZpYyBjYXBhYmlsaXRpZXMgZnJvbSBmaXJtd2FyZSB0byBwZiBkcml2ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoxMTM6I2RlZmluZSBMSVFVSURJT19USU1FX1NZTkNfQ0FQIDB4MVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjExNDojZGVmaW5lIExJUVVJRElPX1NXSVRDSERFVl9DQVAgMHgyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg6MTE1OiNkZWZpbmUgTElRVUlESU9fU1BPT0ZDSEtfQ0FQICAweDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaC0xMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2ltYWdlLmgtMTctICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2ltYWdlLmg6MTg6I2lmbmRlZiBfTElRVUlESU9fSU1BR0VfSF9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oOjE5OiNkZWZpbmUgX0xJUVVJRElPX0lNQUdFX0hfXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9faW1hZ2UuaC0yMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9faW1hZ2UuaD00ND1zdHJ1Y3Qgb2N0ZW9uX2Zpcm13YXJlX2ZpbGVfaGVhZGVyIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9faW1hZ2UuaC01My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oOjU0OiNlbmRpZiAvKiBfTElRVUlESU9fSU1BR0VfSF8gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYz04MDc9aW50IG9jdGVvbl9kb3dubG9hZF9maXJtd2FyZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LCBjb25zdCB1OCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYy04NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYzo4NDI6XHRpZiAobWVtY21wKExJUVVJRElPX0JBU0VfVkVSU0lPTiwgaC1cdTAwM2V2ZXJzaW9uLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmM6ODQzOlx0XHQgICBzdHJsZW4oTElRVUlESU9fQkFTRV9WRVJTSU9OKSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jLTg0NC1cdFx0ZGV2X2VycihcdTAwMjZvY3QtXHUwMDNlcGNpX2Rldi1cdTAwM2VkZXYsIFwmIzM0O1VubWF0Y2hlZCBmaXJtd2FyZSB2ZXJzaW9uLiBFeHBlY3RlZCAlcy54LCBnb3QgJXMuXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmM6ODQ1Olx0XHRcdExJUVVJRElPX0JBU0VfVkVSU0lPTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jLTg0Ni1cdFx0XHRoLVx1MDAzZXZlcnNpb24pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jLTg1Ni1cdGRldl9pbmZvKFx1MDAyNm9jdC1cdTAwM2VwY2lfZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmlybXdhcmUgdmVyc2lvbjogJXNcXG5cJiMzNDssIGgtXHUwMDNldmVyc2lvbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYzo4NTc6XHRzbnByaW50ZihvY3QtXHUwMDNlZndfaW5mby5saXF1aWRpb19maXJtd2FyZV92ZXJzaW9uLCAzMiwgXCYjMzQ7TElRVUlESU86ICVzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmMtODU4LVx0XHQgaC1cdTAwM2V2ZXJzaW9uKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYz0yMzY9c3RhdGljIGludCBvY3Rlb25fbWJveF9wcm9jZXNzX2NtZChzdHJ1Y3Qgb2N0ZW9uX21ib3ggKm1ib3gsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmMtMjQ4LVx0XHQoKHN0cnVjdCBsaW9fdmVyc2lvbiAqKVx1MDAyNm1ib3hfY21kLVx1MDAzZWRhdGFbMF0pLVx1MDAzZW1ham9yID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jOjI0OTpcdFx0XHRMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT047XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYy0yNTAtXHRcdCgoc3RydWN0IGxpb192ZXJzaW9uICopXHUwMDI2bWJveF9jbWQtXHUwMDNlZGF0YVswXSktXHUwMDNlbWlub3IgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmM6MjUxOlx0XHRcdExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jLTI1Mi1cdFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcdTAwMjZtYm94X2NtZC1cdTAwM2VkYXRhWzBdKS1cdTAwM2VtaWNybyA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYzoyNTM6XHRcdFx0TElRVUlESU9fQkFTRV9NSUNST19WRVJTSU9OO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmMtMjU0LVx0XHRtZW1jcHkobWJveF9jbWQtXHUwMDNlbXNnLnMucGFyYW1zLCAodWludDhfdCAqKVx1MDAyNm9jdC1cdTAwM2VwZnZmX2hzd29yZCwgNik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uZXR3b3JrLmg9Mzg9c3RydWN0IGxpcXVpZGlvX2lmX2NmZ19yZXNwIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25ldHdvcmsuaC00NC0jZGVmaW5lIExJT19JRkNGR19XQUlUX1RJTUUgICAgMzAwMCAvKiBJbiBtaWxsaSBzZWNvbmRzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25ldHdvcmsuaDo0NTojZGVmaW5lIExJUVVJRElPX05ERVZfU1RBVFNfUE9MTF9USU1FX01TIDIwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uZXR3b3JrLmgtNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNTQyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBMaXF1aWQgSS9PIENvbmZpZ3VyYXRpb24gYW5kIENvZGUgTG9jYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiB0aGUgY29uZmlncyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUgYXJlIGBDT05GSUdfTElRVUlESU9gIGFuZCBgQ09ORklHX0xJUVVJRElPX0NPUkVgLiBTZWVtcyBwcmV0dHkgc3RhbmRhcmQgZm9yIExpcXVpZCBJL08uIEJ1dCBob2xkIG9uLCB0aGUgcGF0Y2ggbG9jYXRpb24gbGlzdGVkIGlzIGluIGBjbjIzeHhfcGZfZGV2aWNlLmNgLiBIbW0sIHRoYXQmIzM5O3Mgbm90IGV4YWN0bHkgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCBjb3JlIExpcXVpZCBJL08gZnVuY3Rpb25hbGl0eS4gQmVmb3JlIEkgZGl2ZSBpbiB0b28gZGVlcCwgSSBzaG91bGQgY2hlY2sgdGhlIGBNYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueXRoaW5nIHVudXN1YWwgZ29pbmcgb24gd2l0aCB0aGUgYnVpbGQgcHJvY2VzcyBvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCYjMzk7cyBhdCBwbGF5LiBUaGlzIHdpbGwgZ2l2ZSBtZSBzb21lIGNvbnRleHQgYmVmb3JlIEkgYW5hbHl6ZSB0aGUgY29kZSBkaXJlY3RseS4gTWF5YmUgdGhlIGBjbjIzeHhfcGZfZGV2aWNlLmNgIGZpbGUgaXMgc29tZWhvdyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIG9yIHBhcnQgb2YgYSBtb2R1bGU/IFRpbWUgdG8gZGlnIGEgYml0IGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y24yM3h4X3BmX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlPTc9bGlxdWlkaW8tY29yZS15IDo9IFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTE0LVx0XHRjbjY4eHhfZGV2aWNlLm9cdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZToxNTpcdFx0Y24yM3h4X3BmX2RldmljZS5vXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTE2LVx0XHRjbjIzeHhfdmZfZGV2aWNlLm9cdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0yNS0jaW5jbHVkZSBcJiMzNDtvY3Rlb25fZGV2aWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MjY6I2luY2x1ZGUgXCYjMzQ7Y24yM3h4X3BmX2RldmljZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTI3LSNpbmNsdWRlIFwmIzM0O29jdGVvbl9tYWluLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0zMS0jaW5jbHVkZSBcJiMzNDtjbjY2eHhfZGV2aWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jOjMyOiNpbmNsdWRlIFwmIzM0O2NuMjN4eF9wZl9kZXZpY2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmMtMzMtI2luY2x1ZGUgXCYjMzQ7Y24yM3h4X3ZmX2RldmljZS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQtI2luY2x1ZGUgXCYjMzQ7Y242OHh4X2RldmljZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNTojaW5jbHVkZSBcJiMzNDtjbjIzeHhfcGZfZGV2aWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM2LSNpbmNsdWRlIFwmIzM0O2xpcXVpZGlvX2ltYWdlLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2RldmljZS5jLTI5LSNpbmNsdWRlIFwmIzM0O2NuNjZ4eF9kZXZpY2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9kZXZpY2UuYzozMDojaW5jbHVkZSBcJiMzNDtjbjIzeHhfcGZfZGV2aWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fZGV2aWNlLmMtMzEtI2luY2x1ZGUgXCYjMzQ7Y24yM3h4X3ZmX2RldmljZS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9kcm9xLmMtMjktI2luY2x1ZGUgXCYjMzQ7Y242Nnh4X2RldmljZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2Ryb3EuYzozMDojaW5jbHVkZSBcJiMzNDtjbjIzeHhfcGZfZGV2aWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fZHJvcS5jLTMxLSNpbmNsdWRlIFwmIzM0O2NuMjN4eF92Zl9kZXZpY2UuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jLTI2LSNpbmNsdWRlIFwmIzM0O29jdGVvbl9tYWlsYm94LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jOjI3OiNpbmNsdWRlIFwmIzM0O2NuMjN4eF9wZl9kZXZpY2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmMtMjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jLTI5LSNpbmNsdWRlIFwmIzM0O2NuNjZ4eF9kZXZpY2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jOjMwOiNpbmNsdWRlIFwmIzM0O2NuMjN4eF9wZl9kZXZpY2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jLTMxLSNpbmNsdWRlIFwmIzM0O2NuMjN4eF92Zl9kZXZpY2UuaFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzczOQoJCQkJCQkJb3V0cHV0OiA1NwoJCQkJCQkJdGhvdWdodHM6IDQxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyByZWxhdGVkIHRvIGBMSVFVSURJT2AgYW5kIHRoZSBgY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBJdCYjMzk7cyBidWlsdCB3aXRoIGBDT05GSUdfTElRVUlESU9fQ09SRWAgd2hpY2ggaXMgc2VsZWN0ZWQgYnkgYENPTkZJR19MSVFVSURJT2AgYW5kIGBDT05GSUdfTElRVUlESU9fVkZgLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhhdCBpdCBtb2RpZmllcyBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtjYW4gc3l6a2FsbGVyIGhpdCB0aGlzIHdpdGggaXRzIHZQQ0kgZnV6emVyPyYjMzQ7IFRoZSBhbnN3ZXIsIGFzIEkgcmVjYWxsLCBpcyB5ZXMsIHN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIHRyaWdnZXIgcHJvYmUgZnVuY3Rpb25zLgoKSG93ZXZlciwgYWZ0ZXIgYSBjbG9zZXIgbG9vaywgdGhlIHBhdGNoIGlzIGp1c3QgYWRkaW5nIGBnb3RvIGVycl91bm1hcF9iYXIwYCBhbmQgYGdvdG8gZXJyX3VubWFwX2JhcjFgIHRvIHVubWFwIEJBUnMgb24gYW4gZXJyb3IgcGF0aC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogJiMzNDtJcyB0aGlzICp3b3J0aCogZnV6emluZz8mIzM0OyBJdCYjMzk7cyBhIHNpbXBsZSBlcnJvciBwYXRoIGZpeC4gTm8gbmV3IGZlYXR1cmVzLCBqdXN0IHJlc291cmNlIGxlYWsgcHJldmVudGlvbi4gRXJyb3IgcGF0aHMgYXJlIHR5cGljYWxseSB3b3J0aCBpbnZlc3RpZ2F0aW5nIGJlY2F1c2UgdGhleSBjYW4gYmUgcHJvbmUgdG8gZG91YmxlLWZyZWVzIG9yIHVzZS1hZnRlci1mcmVlcywgYnV0IGhlcmUsIGl0JiMzOTtzIGp1c3QgdW5tYXBwaW5nIEJBUnMuIFRoYXQgZmVlbHMgcHJldHR5IGJlbmlnbi4KCkJ1dCB3YWl0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gVGhleSBleHBsaWNpdGx5IHNheSAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gbW9kaWZpY2F0aW9ucyB0by4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuLi4mIzM0OyBTbywgY2FuIHN5emthbGxlciYjMzk7cyB2UENJIHJlYWNoIHRoaXM/IFRoZSBQQ0kgZnV6emVyICpjYW4qIHJlYWNoIFBDSSBwcm9iZSBmdW5jdGlvbnMuIEJ1dCBkb2VzIGl0ICplbXVsYXRlKiB0aGUgZGV2aWNlIGVub3VnaCB0byBnZXQgdG8gYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYD8gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgdG8gYmUgc3VyZSwgYnV0IGl0IHNvdW5kcyBsaWtlIGEgcG9zc2libGUgeWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz0xMDgwPWludCBjbjIzeHhfc3Jpb3ZfY29uZmlnKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMTM4OmludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTEyMTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMjExOkVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTIxMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5MTEKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgZnVuY3Rpb24uIEkgc2VlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIENOMjN4eCBwbGF0Zm9ybSBhbmQgT2N0ZW9uIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgYSBQRiAoUGh5c2ljYWwgRnVuY3Rpb24pIGRldmljZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgbGlrZWx5IHBhcnQgb2YgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBvciBicmluZy11cCBzZXF1ZW5jZS4gV2UmIzM5O3JlIHByb2JhYmx5IGNvbmZpZ3VyaW5nIHRoaXMgUEYgZGV2aWNlIGZvciBhIHBhcnRpY3VsYXIgbmV0d29yayBvciBoYXJkd2FyZSBmdW5jdGlvbi4gS25vd2luZyB0aGUgQ04yM3h4IGFyY2hpdGVjdHVyZSwgSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGNhbGxzIHJlbGF0ZWQgdG8gcmVnaXN0ZXIgYWNjZXNzLCBpbnRlcnJ1cHQgc2V0dXAsIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLiBUaGlzIHdpbGwgcHJvYmFibHkgaW5jbHVkZSBjb25maWd1cmluZyB0aGUgUENJZSBsaW5rLCBzZXR0aW5nIHVwIERNQSBjaGFubmVscywgYW5kIGVuYWJsaW5nIGFueSBuZWNlc3NhcnkgaGFyZHdhcmUgYWNjZWxlcmF0b3JzLiBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHNlZSBob3cgaXQgaGFuZGxlcyBlcnJvciBjb25kaXRpb25zIGFuZCB3aGF0IGtpbmQgb2YgZGVidWdnaW5nIGluZm9ybWF0aW9uIGl0IHByb3ZpZGVzLiBJdCB3aWxsIGJlIGludGVyZXN0aW5nIHRvIHNlZSBob3cgdGhlIGNvZGUgaGFuZGxlcyBtdWx0aS1mdW5jdGlvbiBkZXZpY2VzIG9yIGlmIGl0IGFzc3VtZXMgYSBzaW5nbGUgUEYgcGVyIGRldmljZS4gVWx0aW1hdGVseSwgSSYjMzk7bSBleHBlY3RpbmcgdG8gZ2V0IHRoaXMgZGV2aWNlIHJlYWR5IGZvciBoaWdoZXItbGV2ZWwgbmV0d29yayBzdGFjayBpbnRlcmFjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEzOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTEzODpcdGludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuMTEzOTpcdHtcbjExNDA6XHRcdHUzMiBkYXRhMzI7XG4xMTQxOlx0XHR1NjQgQkFSMCwgQkFSMTtcbjExNDI6XHRcbjExNDM6XHRcdHBjaV9yZWFkX2NvbmZpZ19kd29yZChvY3QtXHUwMDNlcGNpX2RldiwgUENJX0JBU0VfQUREUkVTU18wLCBcdTAwMjZkYXRhMzIpO1xuMTE0NDpcdFx0QkFSMCA9ICh1NjQpKGRhdGEzMiBcdTAwMjYgfjB4Zik7XG4xMTQ1Olx0XHRwY2lfcmVhZF9jb25maWdfZHdvcmQob2N0LVx1MDAzZXBjaV9kZXYsIFBDSV9CQVNFX0FERFJFU1NfMSwgXHUwMDI2ZGF0YTMyKTtcbjExNDY6XHRcdEJBUjAgfD0gKCh1NjQpZGF0YTMyIFx1MDAzY1x1MDAzYyAzMik7XG4xMTQ3Olx0XHRwY2lfcmVhZF9jb25maWdfZHdvcmQob2N0LVx1MDAzZXBjaV9kZXYsIFBDSV9CQVNFX0FERFJFU1NfMiwgXHUwMDI2ZGF0YTMyKTtcbjExNDg6XHRcdEJBUjEgPSAodTY0KShkYXRhMzIgXHUwMDI2IH4weGYpO1xuMTE0OTpcdFx0cGNpX3JlYWRfY29uZmlnX2R3b3JkKG9jdC1cdTAwM2VwY2lfZGV2LCBQQ0lfQkFTRV9BRERSRVNTXzMsIFx1MDAyNmRhdGEzMik7XG4xMTUwOlx0XHRCQVIxIHw9ICgodTY0KWRhdGEzMiBcdTAwM2NcdTAwM2MgMzIpO1xuMTE1MTpcdFxuMTE1MjpcdFx0aWYgKCFCQVIwIHx8ICFCQVIxKSB7XG4xMTUzOlx0XHRcdGlmICghQkFSMClcbjExNTQ6XHRcdFx0XHRkZXZfZXJyKFx1MDAyNm9jdC1cdTAwM2VwY2lfZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZGV2aWNlIEJBUjAgdW5hc3NpZ25lZFxcblwmIzM0Oyk7XG4xMTU1Olx0XHRcdGlmICghQkFSMSlcbjExNTY6XHRcdFx0XHRkZXZfZXJyKFx1MDAyNm9jdC1cdTAwM2VwY2lfZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZGV2aWNlIEJBUjEgdW5hc3NpZ25lZFxcblwmIzM0Oyk7XG4xMTU3Olx0XHRcdHJldHVybiAxO1xuMTE1ODpcdFx0fVxuMTE1OTpcdFxuMTE2MDpcdFx0aWYgKG9jdGVvbl9tYXBfcGNpX2Jhcngob2N0LCAwLCAwKSlcbjExNjE6XHRcdFx0cmV0dXJuIDE7XG4xMTYyOlx0XG4xMTYzOlx0XHRpZiAob2N0ZW9uX21hcF9wY2lfYmFyeChvY3QsIDEsIE1BWF9CQVIxX0lPUkVNQVBfU0laRSkpIHtcbjExNjQ6XHRcdFx0ZGV2X2VycihcdTAwMjZvY3QtXHUwMDNlcGNpX2Rldi1cdTAwM2VkZXYsIFwmIzM0OyVzIENOMjNYWCBCQVIxIG1hcCBmYWlsZWRcXG5cJiMzNDssXG4xMTY1Olx0XHRcdFx0X19mdW5jX18pO1xuMTE2NjpcdFx0XHRnb3RvIGVycl91bm1hcF9iYXIwO1xuMTE2NzpcdFx0fVxuMTE2ODpcdFxuMTE2OTpcdFx0aWYgKGNuMjN4eF9nZXRfcGZfbnVtKG9jdCkgIT0gMClcbjExNzA6XHRcdFx0Z290byBlcnJfdW5tYXBfYmFyMTtcbjExNzE6XHRcbjExNzI6XHRcdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpXG4xMTczOlx0XHRcdGdvdG8gZXJyX3VubWFwX2JhcjE7XG4xMTc0Olx0XG4xMTc1Olx0XHRvY3Rlb25fd3JpdGVfY3NyNjQob2N0LCBDTjIzWFhfU0xJX01BQ19DUkVESVRfQ05ULCAweDNGODAyMDgwODAyMDgwVUxMKTtcbjExNzY6XHRcbjExNzc6XHRcdG9jdC1cdTAwM2Vmbl9saXN0LnNldHVwX2lxX3JlZ3MgPSBjbjIzeHhfc2V0dXBfaXFfcmVncztcbjExNzg6XHRcdG9jdC1cdTAwM2Vmbl9saXN0LnNldHVwX29xX3JlZ3MgPSBjbjIzeHhfc2V0dXBfb3FfcmVncztcbjExNzk6XHRcdG9jdC1cdTAwM2Vmbl9saXN0LnNldHVwX21ib3ggPSBjbjIzeHhfc2V0dXBfcGZfbWJveDtcbjExODA6XHRcdG9jdC1cdTAwM2Vmbl9saXN0LmZyZWVfbWJveCA9IGNuMjN4eF9mcmVlX3BmX21ib3g7XG4xMTgxOlx0XG4xMTgyOlx0XHRvY3QtXHUwMDNlZm5fbGlzdC5wcm9jZXNzX2ludGVycnVwdF9yZWdzID0gY24yM3h4X2ludGVycnVwdF9oYW5kbGVyO1xuMTE4MzpcdFx0b2N0LVx1MDAzZWZuX2xpc3QubXNpeF9pbnRlcnJ1cHRfaGFuZGxlciA9IGNuMjN4eF9wZl9tc2l4X2ludGVycnVwdF9oYW5kbGVyO1xuMTE4NDpcdFxuMTE4NTpcdFx0b2N0LVx1MDAzZWZuX2xpc3Quc29mdF9yZXNldCA9IGNuMjN4eF9wZl9zb2Z0X3Jlc2V0O1xuMTE4NjpcdFx0b2N0LVx1MDAzZWZuX2xpc3Quc2V0dXBfZGV2aWNlX3JlZ3MgPSBjbjIzeHhfc2V0dXBfcGZfZGV2aWNlX3JlZ3M7XG4xMTg3Olx0XHRvY3QtXHUwMDNlZm5fbGlzdC51cGRhdGVfaXFfcmVhZF9pZHggPSBjbjIzeHhfdXBkYXRlX3JlYWRfaW5kZXg7XG4xMTg4Olx0XG4xMTg5Olx0XHRvY3QtXHUwMDNlZm5fbGlzdC5iYXIxX2lkeF9zZXR1cCA9IGNuMjN4eF9iYXIxX2lkeF9zZXR1cDtcbjExOTA6XHRcdG9jdC1cdTAwM2Vmbl9saXN0LmJhcjFfaWR4X3dyaXRlID0gY24yM3h4X2JhcjFfaWR4X3dyaXRlO1xuMTE5MTpcdFx0b2N0LVx1MDAzZWZuX2xpc3QuYmFyMV9pZHhfcmVhZCA9IGNuMjN4eF9iYXIxX2lkeF9yZWFkO1xuMTE5MjpcdFxuMTE5MzpcdFx0b2N0LVx1MDAzZWZuX2xpc3QuZW5hYmxlX2ludGVycnVwdCA9IGNuMjN4eF9lbmFibGVfcGZfaW50ZXJydXB0O1xuMTE5NDpcdFx0b2N0LVx1MDAzZWZuX2xpc3QuZGlzYWJsZV9pbnRlcnJ1cHQgPSBjbjIzeHhfZGlzYWJsZV9wZl9pbnRlcnJ1cHQ7XG4xMTk1Olx0XG4xMTk2Olx0XHRvY3QtXHUwMDNlZm5fbGlzdC5lbmFibGVfaW9fcXVldWVzID0gY24yM3h4X2VuYWJsZV9pb19xdWV1ZXM7XG4xMTk3Olx0XHRvY3QtXHUwMDNlZm5fbGlzdC5kaXNhYmxlX2lvX3F1ZXVlcyA9IGNuMjN4eF9kaXNhYmxlX2lvX3F1ZXVlcztcbjExOTg6XHRcbjExOTk6XHRcdGNuMjN4eF9zZXR1cF9yZWdfYWRkcmVzcyhvY3QpO1xuMTIwMDpcdFxuMTIwMTpcdFx0b2N0LVx1MDAzZWNvcHJvY19jbG9ja19yYXRlID0gMTAwMDAwMFVMTCAqIGNuMjN4eF9jb3Byb2Nlc3Nvcl9jbG9jayhvY3QpO1xuMTIwMjpcdFxuMTIwMzpcdFx0cmV0dXJuIDA7XG4xMjA0Olx0XG4xMjA1Olx0ZXJyX3VubWFwX2JhcjE6XG4xMjA2Olx0XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAxKTtcbjEyMDc6XHRlcnJfdW5tYXBfYmFyMDpcbjEyMDg6XHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xuMTIwOTpcdFx0cmV0dXJuIDE7XG4xMjEwOlx0fVxuMTIxMTpcdEVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTtcbjEyMTI6XHRcbjEyMTM6XHRpbnQgY24yM3h4X2Z3X2xvYWRlZChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuMTIxNDpcdHtcbjEyMTU6XHRcdHU2NCB2YWw7XG4xMjE2Olx0XG4xMjE3Olx0XHQvKiBJZiB0aGVyZSYjMzk7cyBtb3JlIHRoYW4gb25lIGFjdGl2ZSBQRiBvbiB0aGlzIE5JQywgdGhlbiB0aGF0XG4xMjE4Olx0XHQgKiBpbXBsaWVzIHRoYXQgdGhlIE5JQyBmaXJtd2FyZSBpcyBsb2FkZWQgYW5kIHJ1bm5pbmcuIFRoaXMgY2hlY2tcbjEyMTk6XHRcdCAqIHByZXZlbnRzIGEgcmFyZSBmYWxzZSBuZWdhdGl2ZSB0aGF0IG1pZ2h0IG9jY3VyIGlmIHdlIG9ubHkgcmVsaWVkXG4xMjIwOlx0XHQgKiBvbiBjaGVja2luZyB0aGUgU0NSMl9CSVRfRldfTE9BREVEIGZsYWcuIFRoZSBmYWxzZSBuZWdhdGl2ZSB3b3VsZFxuMTIyMTpcdFx0ICogaGFwcGVuIGlmIHRoZSBQRiBkcml2ZXIgc2VlcyBTQ1IyX0JJVF9GV19MT0FERUQgYXMgY2xlYXJlZCBldmVuXG4xMjIyOlx0XHQgKiB0aG91Z2ggdGhlIGZpcm13YXJlIHdhcyBhbHJlYWR5IGxvYWRlZCBidXQgc3RpbGwgYm9vdGluZyBhbmQgaGFzIHlldFxuMTIyMzpcdFx0ICogdG8gc2V0IFNDUjJfQklUX0ZXX0xPQURFRC5cbjEyMjQ6XHRcdCAqL1xuMTIyNTpcdFx0aWYgKGF0b21pY19yZWFkKG9jdC1cdTAwM2VhZGFwdGVyX3JlZmNvdW50KSBcdTAwM2UgMSlcbjEyMjY6XHRcdFx0cmV0dXJuIDE7XG4xMjI3Olx0XG4xMjI4Olx0XHR2YWwgPSBvY3Rlb25fcmVhZF9jc3I2NChvY3QsIENOMjNYWF9TTElfU0NSQVRDSDIpO1xuMTIyOTpcdFx0cmV0dXJuICh2YWwgXHUwMDNlXHUwMDNlIFNDUjJfQklUX0ZXX0xPQURFRCkgXHUwMDI2IDFVTEw7XG4xMjMwOlx0fVxuMTIzMTpcdEVYUE9SVF9TWU1CT0xfR1BMKGNuMjN4eF9md19sb2FkZWQpO1xuMTIzMjpcdFxuMTIzMzpcdHZvaWQgY24yM3h4X3RlbGxfdmZfaXRzX21hY2FkZHJfY2hhbmdlZChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LCBpbnQgdmZpZHgsXG4xMjM0Olx0XHRcdFx0XHRcdHU4ICptYWMpXG4xMjM1Olx0e1xuMTIzNjpcdFx0aWYgKG9jdC1cdTAwM2Vzcmlvdl9pbmZvLnZmX2Rydl9sb2FkZWRfbWFzayBcdTAwMjYgQklUX1VMTCh2ZmlkeCkpIHtcbjEyMzc6XHRcdFx0c3RydWN0IG9jdGVvbl9tYm94X2NtZCBtYm94X2NtZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxNzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBoYW5kbGluZyBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZml4LCBhZGRyZXNzaW5nIGEgbWVtb3J5IGxlYWsuIEFuZCB0aGUgY29kZSBwYXRoICppcyogcmVhY2hhYmxlIOKAkyBldmVuIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aGFua3MgdG8gdlBDSS4gRXJyb3IgcGF0aCBmaXhlcyBhcmUgZ2VuZXJhbGx5IGdvb2QgZnV6emluZyB0YXJnZXRzIHRvIGNhdGNoIGFueSBkb3VibGUtZnJlZXMgb3Igc2ltaWxhciBwcm9ibGVtcyB0aGF0IG1pZ2h0IGJlIGludHJvZHVjZWQuIFRoZSBmaXggaXRzZWxmIGlzIHNpbXBsZSwganVzdCB1bm1hcHBpbmcgQkFScy4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoZXJlIGFyZSBubyBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcGF0Y2guIE5vcGUsIGp1c3QgdGhlIHVubWFwcGluZy4gT2theSwgc28geWVzLCB3b3J0aCBmdXp6aW5nLCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb2RlLgoKQnV0IHdhaXQsIEkgbmVlZCB0byBjaGVjayB0aGUgaW5zdHJ1Y3Rpb25zISBUaGV5IHNheSAqbm90KiB0byBmdXp6IGlmIHRoZSBjaGFuZ2UgaXMgYSBkb2N1bWVudGF0aW9uIHVwZGF0ZSwgY29zbWV0aWMgbG9nZ2luZywgbnVtZXJpYyBjb25zdGFudCBhZGp1c3RtZW50cyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCBvciBjb2RlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gTm9wZSwgdGhlIHZQQ0kgbWFrZXMgdGhpcyByZWFjaGFibGUuIFNvLCB0aGUgZGVjaXNpb24gaXMgc3RpbGwgdG8gZnV6eiwgV29ydGhGdXp6aW5nPXRydWUuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGZ1enppbmcgZm9jdXMuIFRoZSBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBJdCBhbHNvIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgY29uZmlnIG9wdGlvbnM6IGBMSVFVSURJT2AgYW5kIGBMSVFVSURJT19DT1JFYC4gSG9sZCBvbiwgYExJUVVJRElPX0NPUkVgIGlzbiYjMzk7dCBhIGRpcmVjdGx5IHVzZXItc2VsZWN0YWJsZSBvcHRpb24sIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IGBMSVFVSURJT2AhIEdvdHRhIHZlcmlmeSB0aGF0IGluIHRoZSBgS2NvbmZpZ2AgZm9yIGBMSVFVSURJT2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIExJUVVJRElPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTYyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIENhdml1bSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBDYXZpdW0tc3BlY2lmaWMgRXRoZXJuZXQgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIFRoaXMgaXMgdGhlIHBsYWNlIHdoZXJlIEkmIzM5O2xsIGZpbmQgYWxsIHRoZSBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0cyB0aGF0IGdvdmVybiBpdHMgYmVoYXZpb3Igd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBJ4oCZbSB0aGlua2luZyB0aGlzIGZpbGUgaG9sZHMgdGhlIGtleSB0byB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGV4YW1pbmUuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIExJUVVJRElPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz01ND1jb25maWcgQ0FWSVVNX1BUUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NjU6Y29uZmlnIExJUVVJRElPX0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY2LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6Njg6Y29uZmlnIExJUVVJRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy02OS1cdHRyaXN0YXRlIFwmIzM0O0Nhdml1bSBMaXF1aWRJTyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9ODQ9Y29uZmlnIE9DVEVPTl9NR01UX0VUSEVSTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo5NTpjb25maWcgTElRVUlESU9fVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk2LVx0dHJpc3RhdGUgXCYjMzQ7Q2F2aXVtIExpcXVpZElPIFZGIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MjIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOgoKKipDaGVja2luZyBhbmQgRW5hYmxpbmcgdGhlIExJUVVJRElPIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbiBoZXJlIGlzIGRlZmluaXRlbHkgYExJUVVJRElPYC4gTXkgcHJpbWFyeSB0YXNrIHdpbGwgYmUgdG8gaW50ZWdyYXRlIGBMSVFVSURJT2AgaW50byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIFRoYXQgc2hvdWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCBqdXN0IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYExJUVVJRElPYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBMb29rcyBsaWtlIHRoZXJlIGlzIG9uZSBkZXBlbmRlbmN5LCBgUENJYCwgdGhhdCBtdXN0IGFsc28gYmUgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTE2PWNvbmZpZyBUSFVOREVSX05JQ19QRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctMTctXHR0cmlzdGF0ZSBcJiMzNDtUaHVuZGVyIFBoeXNpY2FsIGZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6MTg6XHRkZXBlbmRzIG9uIDY0QklUIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTE5LVx0c2VsZWN0IFRIVU5ERVJfTklDX0JHWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTI4PWNvbmZpZyBUSFVOREVSX05JQ19WRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTMwLVx0aW1wbHkgQ0FWSVVNX1BUUFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6MzE6XHRkZXBlbmRzIG9uIDY0QklUIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTMyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTM1PWNvbmZpZ1x0VEhVTkRFUl9OSUNfQkdYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy0zNi1cdHRyaXN0YXRlIFwmIzM0O1RodW5kZXIgTUFDIGludGVyZmFjZSBkcml2ZXIgKEJHWClcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjM3Olx0ZGVwZW5kcyBvbiA2NEJJVCBcdTAwMjZcdTAwMjYgUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy0zOC1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz00NT1jb25maWdcdFRIVU5ERVJfTklDX1JHWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtUaHVuZGVyIE1BQyBpbnRlcmZhY2UgZHJpdmVyIChSR1gpXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo0NzpcdGRlcGVuZHMgb24gNjRCSVQgXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNDgtXHRzZWxlY3QgUEhZTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9NTQ9Y29uZmlnIENBVklVTV9QVFBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7Q2F2aXVtIFBUUCBjb3Byb2Nlc3NvciBhcyBQVFAgY2xvY2tcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjU2Olx0ZGVwZW5kcyBvbiA2NEJJVCBcdTAwMjZcdTAwMjYgUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo1NzpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTU4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTY4PWNvbmZpZyBMSVFVSURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNjktXHR0cmlzdGF0ZSBcJiMzNDtDYXZpdW0gTGlxdWlkSU8gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NzA6XHRkZXBlbmRzIG9uIDY0QklUIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjcxOlx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjcyOlx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNzMtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz04ND1jb25maWcgT0NURU9OX01HTVRfRVRIRVJORVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7T2N0ZW9uIE1hbmFnZW1lbnQgcG9ydCBldGhlcm5ldCBkcml2ZXIgKENONVhYWCwgQ042WFhYKVwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6ODY6XHRkZXBlbmRzIG9uIENBVklVTV9PQ1RFT05fU09DXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy04Ny1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz05NT1jb25maWcgTElRVUlESU9fVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk2LVx0dHJpc3RhdGUgXCYjMzQ7Q2F2aXVtIExpcXVpZElPIFZGIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjk3Olx0ZGVwZW5kcyBvbiA2NEJJVCBcdTAwMjZcdTAwMjYgUENJX01TSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6OTg6XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy05OS1cdHNlbGVjdCBMSVFVSURJT19DT1JFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTc4CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDYXZpdW0gTGlxdWlkSU8gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgQ2F2aXVtIExpcXVpZElPIGRyaXZlci4gVGhlIGtleSBkZXBlbmRlbmNpZXMgaGVyZSBhcmUgYExJUVVJRElPYCwgd2hpY2ggaXMgYSBnaXZlbiwgYnV0IGFsc28gYDY0QklUYCwgYFBDSWAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgLiBUaGVzZSBhcmUgYWxsIHByZXR0eSBzdGFuZGFyZCBrZXJuZWwgY29uZmlndXJhdGlvbnMsIG5vdGhpbmcgdW51c3VhbCB0aGVyZS4KClRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYC4gQWgsIHRoaXMgaXMgaW4gdGhlIENhdml1bSBMaXF1aWRJTyBkcml2ZXIuIFRoZSBpbnRlcmVzdGluZyBwb2ludCBpcyB0aGF0IHRoaXMgdnVsbmVyYWJsZSBjb2RlIGlzIHJlYWNoYWJsZSB0aHJvdWdoIFBDSSBwcm9iaW5nLCBtZWFuaW5nIGl0JiMzOTtzIHN1c2NlcHRpYmxlIHRvIGZ1enppbmcsIGVzcGVjaWFsbHkgdmlhIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciYjMzk7cyB2UENJIGZ1enplci4gVGhlIHZhbHVlIGhlcmUgaXMgdGhhdCBmdXp6aW5nIHRoaXMgZXJyb3IgcGF0aCB3aWxsIGNvbmZpcm0gdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGlzIG5vdCBpbnRyb2R1Y2luZyBkb3VibGUgZnJlZXMgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiBJdCBtYWtlcyBzZW5zZSB0byB0YXJnZXQgdGhpcyBhcyBhbiBhcmVhIGZvciB2dWxuZXJhYmlsaXRpZXMuCgpNeSBzcGVjaWZpYyBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgZnVuY3Rpb24uIEkgaW5pdGlhbGx5IHdhbnQgdG8gdGFrZSBhIGJyaWVmIGxvb2sgdG8gc2VlIGlmIHRoaXMgYWZmZWN0cyBhbnkgb3RoZXIgZnVuY3Rpb25zLCBidXQgaXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGlzb2xhdGVkIHRvIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIEl0IGlzIGZpbmUgdG8gb25seSBmb2N1cyBvbiB0aGlzLgoKQWxyaWdodCwgSSYjMzk7bSBzYXRpc2ZpZWQuIFRpbWUgdG8gc3VibWl0IG15IHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMSVFVSURJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgcHJvYmluZywgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgdlBDSSBmdXp6ZXIuIEZ1enppbmcgdGhpcyBlcnJvciBwYXRoIGlzIHVzZWZ1bCB0byBlbnN1cmUgdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSBkb3VibGUgZnJlZXMgb3Igb3RoZXIgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMSVFVSURJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgcHJvYmluZywgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgdlBDSSBmdXp6ZXIuIEZ1enppbmcgdGhpcyBlcnJvciBwYXRoIGlzIHVzZWZ1bCB0byBlbnN1cmUgdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSBkb3VibGUgZnJlZXMgb3Igb3RoZXIgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTA6NDIuNzkyOTcyOTk3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4MzI5NTQ4NDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkxJUVVJRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBpbiB0aGUgQ2F2aXVtIExpcXVpZElPIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIHByb2JpbmcsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgdlBDSSBmdXp6ZXIuIEZ1enppbmcgdGhpcyBlcnJvciBwYXRoIGlzIHVzZWZ1bCB0byBlbnN1cmUgdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSBkb3VibGUgZnJlZXMgb3Igb3RoZXIgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1MDo0Mi43OTI5ODI2MTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MDMyNzMwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI4ZjVlODcyNWI1YzhmY2NkNWUyYjNjMzNlY2E1OGM5NDEyMThmOGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTA6NTA6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcXG5pbmRleCA3NWYyMmY3NDc3NGNiMi4uMDZiNDQyNGU3NzhlZDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcXG5AQCAtMTE2MywxOCArMTE2MywxNCBAQCBpbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG4gXFx0aWYgKG9jdGVvbl9tYXBfcGNpX2Jhcngob2N0LCAxLCBNQVhfQkFSMV9JT1JFTUFQX1NJWkUpKSB7XFxuIFxcdFxcdGRldl9lcnIoXFx1MDAyNm9jdC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlZGV2LCBcXFwiJXMgQ04yM1hYIEJBUjEgbWFwIGZhaWxlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0X19mdW5jX18pO1xcbi1cXHRcXHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTtcXG4tXFx0XFx0cmV0dXJuIDE7XFxuK1xcdFxcdGdvdG8gZXJyX3VubWFwX2JhcjA7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApXFxuLVxcdFxcdHJldHVybiAxO1xcbitcXHRcXHRnb3RvIGVycl91bm1hcF9iYXIxO1xcbiBcXG4tXFx0aWYgKGNuMjN4eF9zcmlvdl9jb25maWcob2N0KSkge1xcbi1cXHRcXHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTtcXG4tXFx0XFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7XFxuLVxcdFxcdHJldHVybiAxO1xcbi1cXHR9XFxuK1xcdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpXFxuK1xcdFxcdGdvdG8gZXJyX3VubWFwX2JhcjE7XFxuIFxcbiBcXHRvY3Rlb25fd3JpdGVfY3NyNjQob2N0LCBDTjIzWFhfU0xJX01BQ19DUkVESVRfQ05ULCAweDNGODAyMDgwODAyMDgwVUxMKTtcXG4gXFxuQEAgLTEyMDUsNiArMTIwMSwxMiBAQCBpbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG4gXFx0b2N0LVxcdTAwM2Vjb3Byb2NfY2xvY2tfcmF0ZSA9IDEwMDAwMDBVTEwgKiBjbjIzeHhfY29wcm9jZXNzb3JfY2xvY2sob2N0KTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbitcXG4rZXJyX3VubWFwX2JhcjE6XFxuK1xcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpO1xcbitlcnJfdW5tYXBfYmFyMDpcXG4rXFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XFxuK1xcdHJldHVybiAxO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUwOjQzLjQ0NDU1OTM4MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM3Njc3OTQ3OTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkxJUVVJRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBpbiB0aGUgQ2F2aXVtIExpcXVpZElPIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIHByb2JpbmcsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgdlBDSSBmdXp6ZXIuIEZ1enppbmcgdGhpcyBlcnJvciBwYXRoIGlzIHVzZWZ1bCB0byBlbnN1cmUgdGhhdCB0aGUgdW5tYXBwaW5nIGxvZ2ljIGRvZXMgbm90IGludHJvZHVjZSBkb3VibGUgZnJlZXMgb3Igb3RoZXIgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI4ZjVlODcyNWI1YzhmY2NkNWUyYjNjMzNlY2E1OGM5NDEyMThmOGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAxMDo1MDo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG5pbmRleCA3NWYyMmY3NDc3NGNiMi4uMDZiNDQyNGU3NzhlZDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG5AQCAtMTE2MywxOCArMTE2MywxNCBAQCBpbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcbiBcdGlmIChvY3Rlb25fbWFwX3BjaV9iYXJ4KG9jdCwgMSwgTUFYX0JBUjFfSU9SRU1BUF9TSVpFKSkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNm9jdC1cdTAwM2VwY2lfZGV2LVx1MDAzZWRldiwgXCIlcyBDTjIzWFggQkFSMSBtYXAgZmFpbGVkXFxuXCIsXG4gXHRcdFx0X19mdW5jX18pO1xuLVx0XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTtcbi1cdFx0cmV0dXJuIDE7XG4rXHRcdGdvdG8gZXJyX3VubWFwX2JhcjA7XG4gXHR9XG4gXG4gXHRpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKVxuLVx0XHRyZXR1cm4gMTtcbitcdFx0Z290byBlcnJfdW5tYXBfYmFyMTtcbiBcbi1cdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpIHtcbi1cdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4tXHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpO1xuLVx0XHRyZXR1cm4gMTtcbi1cdH1cbitcdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpXG4rXHRcdGdvdG8gZXJyX3VubWFwX2JhcjE7XG4gXG4gXHRvY3Rlb25fd3JpdGVfY3NyNjQob2N0LCBDTjIzWFhfU0xJX01BQ19DUkVESVRfQ05ULCAweDNGODAyMDgwODAyMDgwVUxMKTtcbiBcbkBAIC0xMjA1LDYgKzEyMDEsMTIgQEAgaW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4gXHRvY3QtXHUwMDNlY29wcm9jX2Nsb2NrX3JhdGUgPSAxMDAwMDAwVUxMICogY24yM3h4X2NvcHJvY2Vzc29yX2Nsb2NrKG9jdCk7XG4gXG4gXHRyZXR1cm4gMDtcbitcbitlcnJfdW5tYXBfYmFyMTpcbitcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpO1xuK2Vycl91bm1hcF9iYXIwOlxuK1x0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4rXHRyZXR1cm4gMTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTA6NDMuNDQ0NTYxODkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzExMzI3MjYyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDYXZpdW0gTGlxdWlkSU8gRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNgLiBJdCdzIGEgZmFpcmx5IHN0cmFpZ2h0Zm9yd2FyZCBmaXggZm9yIGVycm9yIGhhbmRsaW5nIGluIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAsIGFkZGluZyBgZ290b2Agc3RhdGVtZW50cyB0byBlbnN1cmUgcHJvcGVyIFBDSSBCQVIgdW5tYXBwaW5nIG9uIGZhaWx1cmUuIFRoYXQncyBnb29kIGh5Z2llbmUsIGJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpczogaXMgdGhpcyBmdXp6YWJsZT9cblxuVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBDYXZpdW0gTGlxdWlkSU8gSW50ZWxsaWdlbnQgU2VydmVyIEFkYXB0ZXIsIGEgUENJIGRldmljZS4gTXkgaW5pdGlhbCBpbnR1aXRpb24gaXMgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIGxpa2UgdGhpcyBhcmUgZGlmZmljdWx0IHRvIGZ1enogZGlyZWN0bHksIHVubGVzcyB3ZSdyZSB0YWxraW5nIGFib3V0IGEgc29waGlzdGljYXRlZCBoYXJkd2FyZSBlbXVsYXRvciBvciwgcHJlZmVyYWJseSwgYSB2ZXJ5IHdlbGwtZGV2ZWxvcGVkIGdlbmVyaWMgUENJIGZ1enppbmcgc2V0dXAuIEhvd2V2ZXIsIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIHByb2plY3QgaGFzIGEgc3BlY2lmaWMgZXhjbHVzaW9uOiBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuXG5cbkdpdmVuIHRoYXQsIEkgbmVlZCB0byBjb25maXJtOiBpcyB0aGlzIENhdml1bSBMaXF1aWRJTyBoYXJkd2FyZSBlbXVsYXRlZCBpbiBRRU1VPyBBcyBmYXIgYXMgSSBrbm93LCBpdCBpc24ndC4gU28gaWYgd2UgY2FuJ3QgZnV6eiBpdCB0aHJvdWdoIFFFTVUsIGNhbiB3ZSBzdGlsbCBnZXQgdG8gaXQ/IFRoYW5rZnVsbHksIHN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyLCB3aGljaCBpcyBhIHByb21pc2luZyBzaWduLiBUaGUgUENJIGZ1enplciB1c2VzIHRoZSBgc3l6X3BjaV9kZXZpY2Vfc2V0dXBgIGNhbGwsIHByb3ZpZGluZyB2ZW5kb3IgYW5kIGRldmljZSBJRHMuIFRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBkb2VzIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgZ2V0IGNhbGxlZCBkdXJpbmcgUENJIHByb2JlPyBJZiBzbywgdGhpcyBwYXRjaCBpcyBhYnNvbHV0ZWx5IHdvcnRoIGNvbnNpZGVyaW5nIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzExLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTA6NTAuNTU3ODM3NjgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTEwNjE5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM9MTA4MD1pbnQgY24yM3h4X3NyaW92X2NvbmZpZyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTEzODppbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTExMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMjEwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjEyMTE6RVhQT1JUX1NZTUJPTF9HUEwoc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTIxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmg9NDY9c3RydWN0IG9jdF92Zl9zdGF0cyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5oLTU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmg6NTU6aW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmgtNTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0xMzM2PXN0YXRpYyBpbnQgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXAoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzNTctXFx0XFx0b2N0LVxcdTAwM2VjaGlwX2lkID0gT0NURU9OX0NOMjNYWF9QRl9WSUQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MTM1ODpcXHRcXHRyZXQgPSBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShvY3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzNTktXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTA6NTAuNzM2OTUzMDM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0MDg4OTI4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhc3Nlc3NtZW50IG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGVhbGluZyB3aXRoIHNvbWV0aGluZyBjYWxsZWQgZnJvbSBgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXBgLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoaXMgaXMgZ2V0dGluZyBjYWxsZWQgZHVyaW5nIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24g4oCTIG1ha2VzIHNlbnNlIGZvciBpbml0aWFsIGhhcmR3YXJlIHNldHVwLiBOb3csIEkgbmVlZCB0byBjb25maXJtIHRoaXMgYW5kIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGRvaW5nLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUgb2YgYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCBkaXJlY3RseS4gTGV0J3MgaGVhZCBvdmVyIHRvIGBsaW9fbWFpbi5jYCBhbmQgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBhbGwgYWJvdXQuIEhvcGVmdWxseSwgdGhlIGNvZGUgY29tbWVudHMgYXJlIGRlc2NyaXB0aXZlIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTE6MDEuMTQ1ODQ4NTk5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzk4Njk0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMDM9c3RhdGljIHZvaWQgbGlxdWlkaW9fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTMzMi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoxMzMzOiAqIG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwIC0gSWRlbnRpZnkgdGhlIE9jdGVvbiBkZXZpY2UgYW5kIHRvIG1hcCB0aGUgQkFSIGFkZHJlc3Mgc3BhY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xMzM0LSAqIEBvY3Q6IG9jdGVvbiBkZXZpY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xMzM1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjEzMzY6c3RhdGljIGludCBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTEzMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9NDAzND1zdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTQwNTEtXFx0LyogSWRlbnRpZnkgdGhlIE9jdGVvbiB0eXBlIGFuZCBtYXAgdGhlIEJBUiBhZGRyZXNzIHNwYWNlLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjQwNTI6XFx0aWYgKG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwKG9jdGVvbl9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDA1My1cXHRcXHRkZXZfZXJyKFxcdTAwMjZvY3Rlb25fZGV2LVxcdTAwM2VwY2lfZGV2LVxcdTAwM2VkZXYsIFxcXCJDaGlwIHNwZWNpZmljIHNldHVwIGZhaWxlZFxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUxOjAxLjI3OTg1MDgwNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0ODczMzY1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipUcmFjaW5nIHRoZSBJbml0aWFsaXphdGlvbiBGbG93KipcblxuQWxyaWdodCwgbGV0IG1lIGp1c3QgbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhpcyBjb3JyZWN0bHkuIFNvLCBgb2N0ZW9uX2RldmljZV9pbml0YCBpcyBpbnZva2VkLCBhbmQgdGhhdCBmdW5jdGlvbi4uLiBhaCwgdGhhdCdzIGNhbGxlZCBmcm9tIGBsaXF1aWRpb19wcm9iZWAsIGlzbid0IGl0PyBKdXN0IHdhbnRpbmcgdG8gbWFrZSBjZXJ0YWluIEknbSBub3QgbWlzc2luZyBhIHN0ZXAgaW4gdGhlIGRldmljZSBpbml0aWFsaXphdGlvbi4gR290dGEga2VlcCB0aGUgd2hvbGUgcGljdHVyZSBjbGVhciBpbiBteSBoZWFkLCBlc3BlY2lhbGx5IHdoZW4gZGl2aW5nIGRlZXAgaW50byB0aGVzZSBkcml2ZXIgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzY4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTE6MDMuNzY3MTkxMDU3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTY4MTQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvY3Rlb25fZGV2aWNlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0xMzk9c3RhdGljIGludCBvY3Rlb25fZGJnX2NvbnNvbGVfcHJpbnQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgdTMyIGNvbnNvbGVfbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjE0MjpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xNDMtc3RhdGljIGludCBsaXF1aWRpb19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9ODIzPWxpcXVpZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBfX21heWJlX3VudXNlZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjg2NjpcXHRpZiAob2N0ZW9uX2RldmljZV9pbml0KG9jdF9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODY3LVxcdFxcdGNvbXBsZXRlKFxcdTAwMjZocy1cXHUwMDNlaW5pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zOTgwPW9jdGVvbl9yZWN2X3ZmX2Rydl9ub3RpY2Uoc3RydWN0IG9jdGVvbl9yZWN2X2luZm8gKnJlY3ZfaW5mbywgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo0MDMxOiAqIG9jdGVvbl9kZXZpY2VfaW5pdCAtIERldmljZSBpbml0aWFsaXphdGlvbiBmb3IgZWFjaCBPY3Rlb24gZGV2aWNlIHRoYXQgaXMgcHJvYmVkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMi0gKiBAb2N0ZW9uX2RldjogIG9jdGVvbiBkZXZpY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MDMzLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjQwMzQ6c3RhdGljIGludCBvY3Rlb25fZGV2aWNlX2luaXQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz02OT1zdGF0aWMgdm9pZCBsaXF1aWRpb192Zl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjcwOnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTcxLXN0YXRpYyBpbnQgbGlxdWlkaW9fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTM3OT1saXF1aWRpb192Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTQwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzo0MDU6XFx0aWYgKG9jdGVvbl9kZXZpY2VfaW5pdChvY3RfZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTQwNi1cXHRcXHRsaXF1aWRpb192Zl9yZW1vdmUocGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0yMjMwPXN0YXRpYyBpbnQgbGlxdWlkaW9faW5pdF9uaWNfbW9kdWxlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjIyNjU6ICogb2N0ZW9uX2RldmljZV9pbml0IC0gRGV2aWNlIGluaXRpYWxpemF0aW9uIGZvciBlYWNoIE9jdGVvbiBkZXZpY2UgdGhhdCBpcyBwcm9iZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY2LSAqIEBvY3Q6ICBvY3Rlb24gZGV2aWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2Ny0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoyMjY4OnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUxOjAzLjkwMjg3OTEwM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MjA1NDUwNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBUaGlzIFBDSSBQcm9iZSBGaXgqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWssIHNwZWNpZmljYWxseSBvbiB0aGUgZXJyb3IgcGF0aCB3aXRoaW4gYGxpcXVpZGlvX3Byb2JlYC4gVGhpcyBmdW5jdGlvbiBpcywgb2YgY291cnNlLCBhIFBDSSBwcm9iZSBmdW5jdGlvbiwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJDYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICpyZWFjaCogdGhpcz9cIiBUaGUgYW5zd2VyLCBhcyBJIHJlY2FsbCwgaXMgdGhhdCB5ZXMsIGl0J3MgY2FsbGVkIGZyb20gYGxpcXVpZGlvX3Byb2JlYCwgd2hpY2ggbWVhbnMgaXQgY2FuIGJlIHJlYWNoZWQgdmlhIHN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZV9zZXR1cGAsIG9yIHNpbWlsYXIgdlBDSSBmdXp6aW5nIGFwcHJvYWNoZXMuXG5cbkJ1dCB3YWl0LCB0aGUgcGF0Y2ggKm9ubHkqIGFkZHJlc3NlcyBhbiBlcnJvciBwYXRoLiBJcyB0aGlzIGV2ZW4gd29ydGggb3VyIHRpbWUgdG8gZnV6ej8gSSBuZWVkIHRvIGFwcGx5IHRoZSBcIldvcnRoRnV6emluZ1wiIGNyaXRlcmlhLiBJZiB0aGUgcGF0Y2ggXCJvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLCB0aGVuIHRoZSBhbnN3ZXIgaXMgXCJub1wiLiBTbywgY2FuIHdlIHJlYWNoIENhdml1bSBMaXF1aWRJTyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/XG5cblRoaW5raW5nIGFib3V0IHN5emthbGxlciwgaXQgKmRvZXMqIGhhdmUgYSB2UENJIGZ1enplciwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGVtdWxhdGUgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLiBJdCBhY2NvbXBsaXNoZXMgdGhpcyBlaXRoZXIgYnkgaG9va2luZyBpbnRvIHRoZSBQQ0kgc3Vic3lzdGVtIG9yIGVtcGxveWluZyBhIHZpcnR1YWwgUENJIGJ1cywgYW5kIGl0IGNhbiB0cmlnZ2VyIHByb2JlIGZ1bmN0aW9ucyBvZiAqYW55KiBQQ0kgZHJpdmVyIGJ5IG1hdGNoaW5nIHZlbmRvci9kZXZpY2UgSURzLlxuXG5CdXQgaGVyZSdzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBkb2VzIHRoZSB2UENJIGZ1enplciAqZ2VudWluZWx5KiBlbXVsYXRlIHRoZSBkZXZpY2UncyBCQVJzIChCYXNlIEFkZHJlc3MgUmVnaXN0ZXJzKSBhbmQgcmVnaXN0ZXJzIHN1ZmZpY2llbnRseSB3ZWxsIHRvIHBlbmV0cmF0ZSBkZWVwbHkgaW50byB0aGUgYHByb2JlYCBmdW5jdGlvbj8gSSBiZWxpZXZlIHRoZSBhbnN3ZXIgaXMgeWVzLiBJIGtub3cgc3l6a2FsbGVyIGNhbiBwcm92aWRlIGZha2UgQkFScyBhbmQgbWVtb3J5LW1hcHBlZCBJL08gcmVnaW9ucy4gVGhhdCdzIGEga2V5IGNhcGFiaWxpdHkuXG5cblNvLCBpdCAqYXBwZWFycyogcHJvbWlzaW5nLiBCZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNwZWNpZmljIENPTkZJR3MgbmVlZGVkIHRvIGVuYWJsZSB0aGUgQ2F2aXVtIExpcXVpZElPIGRldmljZSwgd2hpY2ggd291bGQgcmVuZGVyIHRoZSB3aG9sZSBleGVyY2lzZSB1c2VsZXNzIHdpdGhvdXQgdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY3OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1MToxMC42MjM0MjY5NjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzg0NjE0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJMSVFVSURJT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MSVFVSURJT19DT1JFKSArPSBsaXF1aWRpby1jb3JlLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtNy1saXF1aWRpby1jb3JlLXkgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfTElRVUlESU8pICs9IGxpcXVpZGlvLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtMjMtbGlxdWlkaW8teSA6PSBsaW9fbWFpbi5vIG9jdGVvbl9jb25zb2xlLm8gbGlvX3ZmX3JlcC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfTElRVUlESU9fVkYpICs9IGxpcXVpZGlvX3ZmLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtMjYtbGlxdWlkaW9fdmYteSA6PSBsaW9fdmZfbWFpbi5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jPTQwNT1pbnQgY24yM3h4X29jdGVvbl9wZnZmX2hhbmRzaGFrZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00MjMtXFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQuZGF0YVswXSktXFx1MDAzZW1ham9yID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQyNDpcXHRcXHRcXHRcXHRcXHRcXHRMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT047XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00MjUtXFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQuZGF0YVswXSktXFx1MDAzZW1pbm9yID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQyNjpcXHRcXHRcXHRcXHRcXHRcXHRMSVFVSURJT19CQVNFX01JTk9SX1ZFUlNJT047XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00MjctXFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQuZGF0YVswXSktXFx1MDAzZW1pY3JvID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQyODpcXHRcXHRcXHRcXHRcXHRcXHRMSVFVSURJT19CQVNFX01JQ1JPX1ZFUlNJT047XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF92Zl9kZXZpY2UuYy00MjktXFx0bWJveF9jbWQucV9ubyA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jLTQ1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3ZmX2RldmljZS5jOjQ1MjpcXHR2Zm1ham9yID0gTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfdmZfZGV2aWNlLmMtNDUzLVxcdHBmbWFqb3IgPSByZXQgXFx1MDAzZVxcdTAwM2UgMTY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYz0xNDU2PXZvaWQgbGlvX2ZldGNoX3N0YXRzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTE0NjgtXFx0XFx0aWYgKCEob2N0X2Rldi1cXHUwMDNldmZzdGF0c19wb2xsICUgTElPX1ZGU1RBVFNfUE9MTCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYzoxNDY5OlxcdFxcdCAgICAob2N0X2Rldi1cXHUwMDNlZndfaW5mby5hcHBfY2FwX2ZsYWdzIFxcdTAwMjYgTElRVUlESU9fU1BPT0ZDSEtfQ0FQKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jLTE0NzAtXFx0XFx0ICAgIG9jdF9kZXYtXFx1MDAzZXNyaW92X2luZm8ubnVtX3Zmc19hbGxvY2VkKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYy0xNTE2LWxpb19mZXRjaF9zdGF0c19leGl0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jOjE1MTc6XFx0dGltZV9pbl9qaWZmaWVzID0gbXNlY3NfdG9famlmZmllcyhMSVFVSURJT19OREVWX1NUQVRTX1BPTExfVElNRV9NUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMtMTUxOC1cXHRpZiAoaWZzdGF0ZV9jaGVjayhsaW8sIExJT19JRlNUQVRFX1JVTk5JTkcpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM9OTg4PXN0YXRpYyBpbnQgbGlvXzIzeHhfcmVjb25maWd1cmVfcXVldWVfY291bnQoc3RydWN0IGxpbyAqbGlvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmMtMTAxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzoxMDE0OlxcdHZkYXRhLVxcdTAwM2VtYWpvciA9IChfX2ZvcmNlIHUxNiljcHVfdG9fYmUxNihMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT04pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jOjEwMTU6XFx0dmRhdGEtXFx1MDAzZW1pbm9yID0gKF9fZm9yY2UgdTE2KWNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM6MTAxNjpcXHR2ZGF0YS1cXHUwMDNlbWljcm8gPSAoX19mb3JjZSB1MTYpY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NSUNST19WRVJTSU9OKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0xMDE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM9MjQyMz1zdGF0aWMgaW50IGxpb19zZXRfaW50cl9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmMtMjQ0OC1cXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZvY3QtXFx1MDAzZXBjaV9kZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzoyNDQ5OlxcdFxcdFxcdFxcdFxcXCJMSVFVSURJTzogSW52YWxpZCB0eC1mcmFtZXM6JWQuIFJhbmdlIGlzIG1pbjolZCBtYXg6JWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmMtMjQ1MC1cXHRcXHRcXHRcXHRpbnRyX2NvYWwtXFx1MDAzZXR4X21heF9jb2FsZXNjZWRfZnJhbWVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9NzY9c3RhdGljIGludCBvY3Rlb25fY29uc29sZV9kZWJ1Z19lbmFibGVkKHUzMiBjb25zb2xlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODEtLyogUG9sbGluZyBpbnRlcnZhbCBmb3IgZGV0ZXJtaW5pbmcgd2hlbiBOSUMgYXBwbGljYXRpb24gaXMgYWxpdmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo4MjojZGVmaW5lIExJUVVJRElPX1NUQVJURVJfUE9MTF9JTlRFUlZBTF9NUyAxMDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy04NC0vKiBydW50aW1lIGxpbmsgcXVlcnkgaW50ZXJ2YWwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo4NTojZGVmaW5lIExJUVVJRElPX0xJTktfUVVFUllfSU5URVJWQUxfTVMgICAgICAgICAxMDAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODYtLyogdXBkYXRlIGxvY2FsdGltZSB0byBvY3Rlb24gZmlybXdhcmUgZXZlcnkgNjAgc2Vjb25kcy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMDM9c3RhdGljIHZvaWQgbGlxdWlkaW9fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTMxMi1cXHRpZiAoIW9jdF9kZXYtXFx1MDAzZW9jdGVvbl9pZCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjEzMTM6XFx0ICAgIG9jdF9kZXYtXFx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcXHUwMDI2IExJUVVJRElPX1NXSVRDSERFVl9DQVApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTMxNC1cXHRcXHRsaW9fdmZfcmVwX21vZGV4aXQoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTE3NjQ9c3RhdGljIGludCBsaXF1aWRpb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xODEwLVxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bGlvLVxcdTAwM2VzdGF0c193ay53b3JrLCBtc2Vjc190b19qaWZmaWVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MTgxMTpcXHRcXHRcXHRcXHRcXHQoTElRVUlESU9fTkRFVl9TVEFUU19QT0xMX1RJTUVfTVMpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xODEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9Mjg1MT1zdGF0aWMgaW50IGxpcXVpZGlvX3NldF92Zl9zcG9vZmNoayhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgdmZpZHgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yODU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI4NTk6XFx0aWYgKCEob2N0LVxcdTAwM2Vmd19pbmZvLmFwcF9jYXBfZmxhZ3MgXFx1MDAyNiBMSVFVSURJT19TUE9PRkNIS19DQVApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjg2MC1cXHRcXHRuZXRpZl9pbmZvKGxpbywgZHJ2LCBsaW8tXFx1MDAzZW5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTMxMjU9bGlxdWlkaW9fZXN3aXRjaF9tb2RlX3NldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywgdTE2IG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zMTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMxMzU6XFx0aWYgKCEob2N0LVxcdTAwM2Vmd19pbmZvLmFwcF9jYXBfZmxhZ3MgXFx1MDAyNiBMSVFVSURJT19TV0lUQ0hERVZfQ0FQKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zMTM2LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MzMyMj1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzM2OS1cXHRcXHQqKCh1NjQgKil2ZGF0YSkgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjMzNzA6XFx0XFx0dmRhdGEtXFx1MDAzZW1ham9yID0gY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NQUpPUl9WRVJTSU9OKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozMzcxOlxcdFxcdHZkYXRhLVxcdTAwM2VtaW5vciA9IGNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzM3MjpcXHRcXHR2ZGF0YS1cXHUwMDNlbWljcm8gPSBjcHVfdG9fYmUxNihMSVFVSURJT19CQVNFX01JQ1JPX1ZFUlNJT04pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTMzNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDQwLVxcdFxcdGZ3X3ZlciA9IG9jdGVvbl9kZXYtXFx1MDAzZWZ3X2luZm8ubGlxdWlkaW9fZmlybXdhcmVfdmVyc2lvbjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNDQxOlxcdFxcdGlmIChtZW1jbXAoTElRVUlESU9fQkFTRV9WRVJTSU9OLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM0NDItXFx0XFx0XFx0ICAgZndfdmVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM0NDM6XFx0XFx0XFx0ICAgc3RybGVuKExJUVVJRElPX0JBU0VfVkVSU0lPTikpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ0NC1cXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZvY3Rlb25fZGV2LVxcdTAwM2VwY2lfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ0NS1cXHRcXHRcXHRcXHRcXFwiVW5tYXRjaGVkIGZpcm13YXJlIHZlcnNpb24uIEV4cGVjdGVkICVzLngsIGdvdCAlcy5cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzQ0NjpcXHRcXHRcXHRcXHRMSVFVSURJT19CQVNFX1ZFUlNJT04sIGZ3X3Zlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQ0Ny1cXHRcXHRcXHRXUklURV9PTkNFKHNjLVxcdTAwM2VjYWxsZXJfaXNfZG9uZSwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDU2LVxcdFxcdC8qIGV4dHJhY3QgbWljcm8gdmVyc2lvbiBmaWVsZDsgcG9pbnQgcGFzdCAnXFx1MDAzY21halxcdTAwM2UuXFx1MDAzY21pblxcdTAwM2UuJyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM0NTc6XFx0XFx0bWljcm9fdmVyID0gZndfdmVyICsgc3RybGVuKExJUVVJRElPX0JBU0VfVkVSU0lPTikgKyAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM0NTgtXFx0XFx0aWYgKGtzdHJ0b3VsKG1pY3JvX3ZlciwgMTAsIFxcdTAwMjZtaWNybykgIT0gMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDU5LVxcdFxcdFxcdG1pY3JvID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNDYwOlxcdFxcdG9jdGVvbl9kZXYtXFx1MDAzZWZ3X2luZm8udmVyLm1haiA9IExJUVVJRElPX0JBU0VfTUFKT1JfVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNDYxOlxcdFxcdG9jdGVvbl9kZXYtXFx1MDAzZWZ3X2luZm8udmVyLm1pbiA9IExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNDYyLVxcdFxcdG9jdGVvbl9kZXYtXFx1MDAzZWZ3X2luZm8udmVyLnJldiA9IG1pY3JvO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzY3My1cXHRcXHRpZiAoKG9jdGVvbl9kZXYtXFx1MDAzZWZ3X2luZm8uYXBwX2NhcF9mbGFncyBcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzY3NDpcXHRcXHQgICAgIExJUVVJRElPX1RJTUVfU1lOQ19DQVApIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzY3NS1cXHRcXHQgICAgc2V0dXBfc3luY19vY3Rlb25fdGltZV93cShuZXRkZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9Mzg4NT1zdGF0aWMgaW50IGxpcXVpZGlvX2luaXRfbmljX21vZHVsZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzkxMi1cXHRpZiAoIW9jdC1cXHUwMDNlb2N0ZW9uX2lkIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzkxMzpcXHQgICAgb2N0LVxcdTAwM2Vmd19pbmZvLmFwcF9jYXBfZmxhZ3MgXFx1MDAyNiBMSVFVSURJT19TV0lUQ0hERVZfQ0FQKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzkxNC1cXHRcXHRyZXR2YWwgPSBsaW9fdmZfcmVwX21vZGluaXQoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTM5NDA9c3RhdGljIHZvaWQgbmljX3N0YXJ0ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzk1Ni1cXHRcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNm9jdC1cXHUwMDNlbmljX3BvbGxfd29yay53b3JrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM5NTc6XFx0XFx0XFx0XFx0ICAgICAgTElRVUlESU9fU1RBUlRFUl9QT0xMX0lOVEVSVkFMX01TKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zOTU4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTQwMzQ9c3RhdGljIGludCBvY3Rlb25fZGV2aWNlX2luaXQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MTIwLVxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2b2N0ZW9uX2Rldi1cXHUwMDNlbmljX3BvbGxfd29yay53b3JrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjQxMjE6XFx0XFx0XFx0ICAgICAgTElRVUlESU9fU1RBUlRFUl9QT0xMX0lOVEVSVkFMX01TKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9OTAzPXN0YXRpYyBpbnQgbGlxdWlkaW9fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtOTMyLVxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bGlvLVxcdTAwM2VzdGF0c193ay53b3JrLCBtc2Vjc190b19qaWZmaWVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6OTMzOlxcdFxcdFxcdFxcdFxcdChMSVFVSURJT19OREVWX1NUQVRTX1BPTExfVElNRV9NUykpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTkzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE5MTk9c3RhdGljIGludCBzZXR1cF9uaWNfZGV2aWNlcyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE5NjAtXFx0XFx0KigodTY0ICopdmRhdGEpID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxOTYxOlxcdFxcdHZkYXRhLVxcdTAwM2VtYWpvciA9IGNwdV90b19iZTE2KExJUVVJRElPX0JBU0VfTUFKT1JfVkVSU0lPTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTk2MjpcXHRcXHR2ZGF0YS1cXHUwMDNlbWlub3IgPSBjcHVfdG9fYmUxNihMSVFVSURJT19CQVNFX01JTk9SX1ZFUlNJT04pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjE5NjM6XFx0XFx0dmRhdGEtXFx1MDAzZW1pY3JvID0gY3B1X3RvX2JlMTYoTElRVUlESU9fQkFTRV9NSUNST19WRVJTSU9OKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xOTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyMzojaWZuZGVmIF9fTElRVUlESU9fQ09NTU9OX0hfX1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyNDojZGVmaW5lIF9fTElRVUlESU9fQ09NTU9OX0hfX1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaC0yNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaC0yNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg6Mjg6I2RlZmluZSBMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT04gMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19jb21tb24uaDoyOTojZGVmaW5lIExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTiA3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjMwOiNkZWZpbmUgTElRVUlESU9fQkFTRV9NSUNST19WRVJTSU9OIDJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg6MzE6I2RlZmluZSBMSVFVSURJT19CQVNFX1ZFUlNJT04gICBfX3N0cmluZ2lmeShMSVFVSURJT19CQVNFX01BSk9SX1ZFUlNJT04pIFxcXCIuXFxcIiBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjMyOlxcdFxcdFxcdFxcdF9fc3RyaW5naWZ5KExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmgtMzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9fY29tbW9uLmg9NDM9ZW51bSBvY3Rlb25fdGFnX3R5cGUge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTExMi0vKiBBcHAgc3BlY2lmaWMgY2FwYWJpbGl0aWVzIGZyb20gZmlybXdhcmUgdG8gcGYgZHJpdmVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjExMzojZGVmaW5lIExJUVVJRElPX1RJTUVfU1lOQ19DQVAgMHgxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjExNDojZGVmaW5lIExJUVVJRElPX1NXSVRDSERFVl9DQVAgMHgyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oOjExNTojZGVmaW5lIExJUVVJRElPX1NQT09GQ0hLX0NBUCAgMHg0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2NvbW1vbi5oLTExNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oLTE3LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9faW1hZ2UuaDoxODojaWZuZGVmIF9MSVFVSURJT19JTUFHRV9IX1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oOjE5OiNkZWZpbmUgX0xJUVVJRElPX0lNQUdFX0hfXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpcXVpZGlvX2ltYWdlLmgtMjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlxdWlkaW9faW1hZ2UuaD00ND1zdHJ1Y3Qgb2N0ZW9uX2Zpcm13YXJlX2ZpbGVfaGVhZGVyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oLTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saXF1aWRpb19pbWFnZS5oOjU0OiNlbmRpZiAvKiBfTElRVUlESU9fSU1BR0VfSF8gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jPTgwNz1pbnQgb2N0ZW9uX2Rvd25sb2FkX2Zpcm13YXJlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmMtODQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jOjg0MjpcXHRpZiAobWVtY21wKExJUVVJRElPX0JBU0VfVkVSU0lPTiwgaC1cXHUwMDNldmVyc2lvbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYzo4NDM6XFx0XFx0ICAgc3RybGVuKExJUVVJRElPX0JBU0VfVkVSU0lPTikpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmMtODQ0LVxcdFxcdGRldl9lcnIoXFx1MDAyNm9jdC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlZGV2LCBcXFwiVW5tYXRjaGVkIGZpcm13YXJlIHZlcnNpb24uIEV4cGVjdGVkICVzLngsIGdvdCAlcy5cXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25zb2xlLmM6ODQ1OlxcdFxcdFxcdExJUVVJRElPX0JBU0VfVkVSU0lPTixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYy04NDYtXFx0XFx0XFx0aC1cXHUwMDNldmVyc2lvbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbnNvbGUuYy04NTYtXFx0ZGV2X2luZm8oXFx1MDAyNm9jdC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlZGV2LCBcXFwiRmlybXdhcmUgdmVyc2lvbjogJXNcXFxcblxcXCIsIGgtXFx1MDAzZXZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jOjg1NzpcXHRzbnByaW50ZihvY3QtXFx1MDAzZWZ3X2luZm8ubGlxdWlkaW9fZmlybXdhcmVfdmVyc2lvbiwgMzIsIFxcXCJMSVFVSURJTzogJXNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uc29sZS5jLTg1OC1cXHRcXHQgaC1cXHUwMDNldmVyc2lvbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYz0yMzY9c3RhdGljIGludCBvY3Rlb25fbWJveF9wcm9jZXNzX2NtZChzdHJ1Y3Qgb2N0ZW9uX21ib3ggKm1ib3gsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYy0yNDgtXFx0XFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQtXFx1MDAzZWRhdGFbMF0pLVxcdTAwM2VtYWpvciA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmM6MjQ5OlxcdFxcdFxcdExJUVVJRElPX0JBU0VfTUFKT1JfVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYy0yNTAtXFx0XFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQtXFx1MDAzZWRhdGFbMF0pLVxcdTAwM2VtaW5vciA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmM6MjUxOlxcdFxcdFxcdExJUVVJRElPX0JBU0VfTUlOT1JfVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYy0yNTItXFx0XFx0KChzdHJ1Y3QgbGlvX3ZlcnNpb24gKilcXHUwMDI2bWJveF9jbWQtXFx1MDAzZWRhdGFbMF0pLVxcdTAwM2VtaWNybyA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmM6MjUzOlxcdFxcdFxcdExJUVVJRElPX0JBU0VfTUlDUk9fVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haWxib3guYy0yNTQtXFx0XFx0bWVtY3B5KG1ib3hfY21kLVxcdTAwM2Vtc2cucy5wYXJhbXMsICh1aW50OF90ICopXFx1MDAyNm9jdC1cXHUwMDNlcGZ2Zl9oc3dvcmQsIDYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uZXR3b3JrLmg9Mzg9c3RydWN0IGxpcXVpZGlvX2lmX2NmZ19yZXNwIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmV0d29yay5oLTQ0LSNkZWZpbmUgTElPX0lGQ0ZHX1dBSVRfVElNRSAgICAzMDAwIC8qIEluIG1pbGxpIHNlY29uZHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25ldHdvcmsuaDo0NTojZGVmaW5lIExJUVVJRElPX05ERVZfU1RBVFNfUE9MTF9USU1FX01TIDIwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmV0d29yay5oLTQ2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1MToxMC43NDEyODcwNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA4NzQwODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIExpcXVpZCBJL08gQ29uZmlndXJhdGlvbiBhbmQgQ29kZSBMb2NhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiB0aGUgY29uZmlncyB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSBhcmUgYENPTkZJR19MSVFVSURJT2AgYW5kIGBDT05GSUdfTElRVUlESU9fQ09SRWAuIFNlZW1zIHByZXR0eSBzdGFuZGFyZCBmb3IgTGlxdWlkIEkvTy4gQnV0IGhvbGQgb24sIHRoZSBwYXRjaCBsb2NhdGlvbiBsaXN0ZWQgaXMgaW4gYGNuMjN4eF9wZl9kZXZpY2UuY2AuIEhtbSwgdGhhdCdzIG5vdCBleGFjdGx5IHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCBjb3JlIExpcXVpZCBJL08gZnVuY3Rpb25hbGl0eS4gQmVmb3JlIEkgZGl2ZSBpbiB0b28gZGVlcCwgSSBzaG91bGQgY2hlY2sgdGhlIGBNYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlJ3MgYW55dGhpbmcgdW51c3VhbCBnb2luZyBvbiB3aXRoIHRoZSBidWlsZCBwcm9jZXNzIG9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0J3MgYXQgcGxheS4gVGhpcyB3aWxsIGdpdmUgbWUgc29tZSBjb250ZXh0IGJlZm9yZSBJIGFuYWx5emUgdGhlIGNvZGUgZGlyZWN0bHkuIE1heWJlIHRoZSBgY24yM3h4X3BmX2RldmljZS5jYCBmaWxlIGlzIHNvbWVob3cgY29uZGl0aW9uYWxseSBjb21waWxlZCBvciBwYXJ0IG9mIGEgbW9kdWxlPyBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTQyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTE6MTQuNjUwMDMxMDU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAxODQzMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY24yM3h4X3BmX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZT03PWxpcXVpZGlvLWNvcmUteSA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUtMTQtXFx0XFx0Y242OHh4X2RldmljZS5vXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZToxNTpcXHRcXHRjbjIzeHhfcGZfZGV2aWNlLm9cXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlLTE2LVxcdFxcdGNuMjN4eF92Zl9kZXZpY2Uub1xcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMjUtI2luY2x1ZGUgXFxcIm9jdGVvbl9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjI2OiNpbmNsdWRlIFxcXCJjbjIzeHhfcGZfZGV2aWNlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0yNy0jaW5jbHVkZSBcXFwib2N0ZW9uX21haW4uaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxLSNpbmNsdWRlIFxcXCJjbjY2eHhfZGV2aWNlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM6MzI6I2luY2x1ZGUgXFxcImNuMjN4eF9wZl9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0zMy0jaW5jbHVkZSBcXFwiY24yM3h4X3ZmX2RldmljZS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzQtI2luY2x1ZGUgXFxcImNuNjh4eF9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNTojaW5jbHVkZSBcXFwiY24yM3h4X3BmX2RldmljZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM2LSNpbmNsdWRlIFxcXCJsaXF1aWRpb19pbWFnZS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9kZXZpY2UuYy0yOS0jaW5jbHVkZSBcXFwiY242Nnh4X2RldmljZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fZGV2aWNlLmM6MzA6I2luY2x1ZGUgXFxcImNuMjN4eF9wZl9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2RldmljZS5jLTMxLSNpbmNsdWRlIFxcXCJjbjIzeHhfdmZfZGV2aWNlLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2Ryb3EuYy0yOS0jaW5jbHVkZSBcXFwiY242Nnh4X2RldmljZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fZHJvcS5jOjMwOiNpbmNsdWRlIFxcXCJjbjIzeHhfcGZfZGV2aWNlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9kcm9xLmMtMzEtI2luY2x1ZGUgXFxcImNuMjN4eF92Zl9kZXZpY2UuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jLTI2LSNpbmNsdWRlIFxcXCJvY3Rlb25fbWFpbGJveC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbGJveC5jOjI3OiNpbmNsdWRlIFxcXCJjbjIzeHhfcGZfZGV2aWNlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWlsYm94LmMtMjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmMtMjktI2luY2x1ZGUgXFxcImNuNjZ4eF9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmM6MzA6I2luY2x1ZGUgXFxcImNuMjN4eF9wZl9kZXZpY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmMtMzEtI2luY2x1ZGUgXFxcImNuMjN4eF92Zl9kZXZpY2UuaFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTE6MTQuNzkwMjIzMzc0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNzAxOTcxNTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgV29ydGhpbmVzcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcmVsYXRlZCB0byBgTElRVUlESU9gIGFuZCB0aGUgYGNuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYC4gSXQncyBidWlsdCB3aXRoIGBDT05GSUdfTElRVUlESU9fQ09SRWAgd2hpY2ggaXMgc2VsZWN0ZWQgYnkgYENPTkZJR19MSVFVSURJT2AgYW5kIGBDT05GSUdfTElRVUlESU9fVkZgLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhhdCBpdCBtb2RpZmllcyBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJjYW4gc3l6a2FsbGVyIGhpdCB0aGlzIHdpdGggaXRzIHZQQ0kgZnV6emVyP1wiIFRoZSBhbnN3ZXIsIGFzIEkgcmVjYWxsLCBpcyB5ZXMsIHN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIHRyaWdnZXIgcHJvYmUgZnVuY3Rpb25zLlxuXG5Ib3dldmVyLCBhZnRlciBhIGNsb3NlciBsb29rLCB0aGUgcGF0Y2ggaXMganVzdCBhZGRpbmcgYGdvdG8gZXJyX3VubWFwX2JhcjBgIGFuZCBgZ290byBlcnJfdW5tYXBfYmFyMWAgdG8gdW5tYXAgQkFScyBvbiBhbiBlcnJvciBwYXRoLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBcIklzIHRoaXMgKndvcnRoKiBmdXp6aW5nP1wiIEl0J3MgYSBzaW1wbGUgZXJyb3IgcGF0aCBmaXguIE5vIG5ldyBmZWF0dXJlcywganVzdCByZXNvdXJjZSBsZWFrIHByZXZlbnRpb24uIEVycm9yIHBhdGhzIGFyZSB0eXBpY2FsbHkgd29ydGggaW52ZXN0aWdhdGluZyBiZWNhdXNlIHRoZXkgY2FuIGJlIHByb25lIHRvIGRvdWJsZS1mcmVlcyBvciB1c2UtYWZ0ZXItZnJlZXMsIGJ1dCBoZXJlLCBpdCdzIGp1c3QgdW5tYXBwaW5nIEJBUnMuIFRoYXQgZmVlbHMgcHJldHR5IGJlbmlnbi5cblxuQnV0IHdhaXQsIEkgbmVlZCB0byByZW1lbWJlciB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGV5IGV4cGxpY2l0bHkgc2F5IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBtb2RpZmljYXRpb25zIHRvLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4uLlwiIFNvLCBjYW4gc3l6a2FsbGVyJ3MgdlBDSSByZWFjaCB0aGlzPyBUaGUgUENJIGZ1enplciAqY2FuKiByZWFjaCBQQ0kgcHJvYmUgZnVuY3Rpb25zLiBCdXQgZG9lcyBpdCAqZW11bGF0ZSogdGhlIGRldmljZSBlbm91Z2ggdG8gZ2V0IHRvIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWA/IFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgdG8gYmUgc3VyZSwgYnV0IGl0IHNvdW5kcyBsaWtlIGEgcG9zc2libGUgeWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzczOSwiT3V0cHV0VG9rZW5zIjo1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1MjoyOC40OTIyMDI1MjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NDU2NDMzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM9MTA4MD1pbnQgY24yM3h4X3NyaW92X2NvbmZpZyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTEzODppbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTExMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMjEwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjEyMTE6RVhQT1JUX1NZTUJPTF9HUEwoc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTIxMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTI6MjkuMTc2Nzc1NThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2MDU0ODYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBmdW5jdGlvbi4gSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBDTjIzeHggcGxhdGZvcm0gYW5kIE9jdGVvbiBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIGEgUEYgKFBoeXNpY2FsIEZ1bmN0aW9uKSBkZXZpY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gb3IgYnJpbmctdXAgc2VxdWVuY2UuIFdlJ3JlIHByb2JhYmx5IGNvbmZpZ3VyaW5nIHRoaXMgUEYgZGV2aWNlIGZvciBhIHBhcnRpY3VsYXIgbmV0d29yayBvciBoYXJkd2FyZSBmdW5jdGlvbi4gS25vd2luZyB0aGUgQ04yM3h4IGFyY2hpdGVjdHVyZSwgSSdtIGV4cGVjdGluZyB0byBzZWUgY2FsbHMgcmVsYXRlZCB0byByZWdpc3RlciBhY2Nlc3MsIGludGVycnVwdCBzZXR1cCwgYW5kIHJlc291cmNlIGFsbG9jYXRpb24uIFRoaXMgd2lsbCBwcm9iYWJseSBpbmNsdWRlIGNvbmZpZ3VyaW5nIHRoZSBQQ0llIGxpbmssIHNldHRpbmcgdXAgRE1BIGNoYW5uZWxzLCBhbmQgZW5hYmxpbmcgYW55IG5lY2Vzc2FyeSBoYXJkd2FyZSBhY2NlbGVyYXRvcnMuIEknbGwgYmUgbG9va2luZyB0byBzZWUgaG93IGl0IGhhbmRsZXMgZXJyb3IgY29uZGl0aW9ucyBhbmQgd2hhdCBraW5kIG9mIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBpdCBwcm92aWRlcy4gSXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaG93IHRoZSBjb2RlIGhhbmRsZXMgbXVsdGktZnVuY3Rpb24gZGV2aWNlcyBvciBpZiBpdCBhc3N1bWVzIGEgc2luZ2xlIFBGIHBlciBkZXZpY2UuIFVsdGltYXRlbHksIEknbSBleHBlY3RpbmcgdG8gZ2V0IHRoaXMgZGV2aWNlIHJlYWR5IGZvciBoaWdoZXItbGV2ZWwgbmV0d29yayBzdGFjayBpbnRlcmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MTEsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1MjozMi4zMzczMzAyNzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTEzOCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExMzg6XFx0aW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuMTEzOTpcXHR7XFxuMTE0MDpcXHRcXHR1MzIgZGF0YTMyO1xcbjExNDE6XFx0XFx0dTY0IEJBUjAsIEJBUjE7XFxuMTE0MjpcXHRcXG4xMTQzOlxcdFxcdHBjaV9yZWFkX2NvbmZpZ19kd29yZChvY3QtXFx1MDAzZXBjaV9kZXYsIFBDSV9CQVNFX0FERFJFU1NfMCwgXFx1MDAyNmRhdGEzMik7XFxuMTE0NDpcXHRcXHRCQVIwID0gKHU2NCkoZGF0YTMyIFxcdTAwMjYgfjB4Zik7XFxuMTE0NTpcXHRcXHRwY2lfcmVhZF9jb25maWdfZHdvcmQob2N0LVxcdTAwM2VwY2lfZGV2LCBQQ0lfQkFTRV9BRERSRVNTXzEsIFxcdTAwMjZkYXRhMzIpO1xcbjExNDY6XFx0XFx0QkFSMCB8PSAoKHU2NClkYXRhMzIgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbjExNDc6XFx0XFx0cGNpX3JlYWRfY29uZmlnX2R3b3JkKG9jdC1cXHUwMDNlcGNpX2RldiwgUENJX0JBU0VfQUREUkVTU18yLCBcXHUwMDI2ZGF0YTMyKTtcXG4xMTQ4OlxcdFxcdEJBUjEgPSAodTY0KShkYXRhMzIgXFx1MDAyNiB+MHhmKTtcXG4xMTQ5OlxcdFxcdHBjaV9yZWFkX2NvbmZpZ19kd29yZChvY3QtXFx1MDAzZXBjaV9kZXYsIFBDSV9CQVNFX0FERFJFU1NfMywgXFx1MDAyNmRhdGEzMik7XFxuMTE1MDpcXHRcXHRCQVIxIHw9ICgodTY0KWRhdGEzMiBcXHUwMDNjXFx1MDAzYyAzMik7XFxuMTE1MTpcXHRcXG4xMTUyOlxcdFxcdGlmICghQkFSMCB8fCAhQkFSMSkge1xcbjExNTM6XFx0XFx0XFx0aWYgKCFCQVIwKVxcbjExNTQ6XFx0XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2b2N0LVxcdTAwM2VwY2lfZGV2LVxcdTAwM2VkZXYsIFxcXCJkZXZpY2UgQkFSMCB1bmFzc2lnbmVkXFxcXG5cXFwiKTtcXG4xMTU1OlxcdFxcdFxcdGlmICghQkFSMSlcXG4xMTU2OlxcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNm9jdC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlZGV2LCBcXFwiZGV2aWNlIEJBUjEgdW5hc3NpZ25lZFxcXFxuXFxcIik7XFxuMTE1NzpcXHRcXHRcXHRyZXR1cm4gMTtcXG4xMTU4OlxcdFxcdH1cXG4xMTU5OlxcdFxcbjExNjA6XFx0XFx0aWYgKG9jdGVvbl9tYXBfcGNpX2Jhcngob2N0LCAwLCAwKSlcXG4xMTYxOlxcdFxcdFxcdHJldHVybiAxO1xcbjExNjI6XFx0XFxuMTE2MzpcXHRcXHRpZiAob2N0ZW9uX21hcF9wY2lfYmFyeChvY3QsIDEsIE1BWF9CQVIxX0lPUkVNQVBfU0laRSkpIHtcXG4xMTY0OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNm9jdC1cXHUwMDNlcGNpX2Rldi1cXHUwMDNlZGV2LCBcXFwiJXMgQ04yM1hYIEJBUjEgbWFwIGZhaWxlZFxcXFxuXFxcIixcXG4xMTY1OlxcdFxcdFxcdFxcdF9fZnVuY19fKTtcXG4xMTY2OlxcdFxcdFxcdGdvdG8gZXJyX3VubWFwX2JhcjA7XFxuMTE2NzpcXHRcXHR9XFxuMTE2ODpcXHRcXG4xMTY5OlxcdFxcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApXFxuMTE3MDpcXHRcXHRcXHRnb3RvIGVycl91bm1hcF9iYXIxO1xcbjExNzE6XFx0XFxuMTE3MjpcXHRcXHRpZiAoY24yM3h4X3NyaW92X2NvbmZpZyhvY3QpKVxcbjExNzM6XFx0XFx0XFx0Z290byBlcnJfdW5tYXBfYmFyMTtcXG4xMTc0OlxcdFxcbjExNzU6XFx0XFx0b2N0ZW9uX3dyaXRlX2NzcjY0KG9jdCwgQ04yM1hYX1NMSV9NQUNfQ1JFRElUX0NOVCwgMHgzRjgwMjA4MDgwMjA4MFVMTCk7XFxuMTE3NjpcXHRcXG4xMTc3OlxcdFxcdG9jdC1cXHUwMDNlZm5fbGlzdC5zZXR1cF9pcV9yZWdzID0gY24yM3h4X3NldHVwX2lxX3JlZ3M7XFxuMTE3ODpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3Quc2V0dXBfb3FfcmVncyA9IGNuMjN4eF9zZXR1cF9vcV9yZWdzO1xcbjExNzk6XFx0XFx0b2N0LVxcdTAwM2Vmbl9saXN0LnNldHVwX21ib3ggPSBjbjIzeHhfc2V0dXBfcGZfbWJveDtcXG4xMTgwOlxcdFxcdG9jdC1cXHUwMDNlZm5fbGlzdC5mcmVlX21ib3ggPSBjbjIzeHhfZnJlZV9wZl9tYm94O1xcbjExODE6XFx0XFxuMTE4MjpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QucHJvY2Vzc19pbnRlcnJ1cHRfcmVncyA9IGNuMjN4eF9pbnRlcnJ1cHRfaGFuZGxlcjtcXG4xMTgzOlxcdFxcdG9jdC1cXHUwMDNlZm5fbGlzdC5tc2l4X2ludGVycnVwdF9oYW5kbGVyID0gY24yM3h4X3BmX21zaXhfaW50ZXJydXB0X2hhbmRsZXI7XFxuMTE4NDpcXHRcXG4xMTg1OlxcdFxcdG9jdC1cXHUwMDNlZm5fbGlzdC5zb2Z0X3Jlc2V0ID0gY24yM3h4X3BmX3NvZnRfcmVzZXQ7XFxuMTE4NjpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3Quc2V0dXBfZGV2aWNlX3JlZ3MgPSBjbjIzeHhfc2V0dXBfcGZfZGV2aWNlX3JlZ3M7XFxuMTE4NzpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QudXBkYXRlX2lxX3JlYWRfaWR4ID0gY24yM3h4X3VwZGF0ZV9yZWFkX2luZGV4O1xcbjExODg6XFx0XFxuMTE4OTpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QuYmFyMV9pZHhfc2V0dXAgPSBjbjIzeHhfYmFyMV9pZHhfc2V0dXA7XFxuMTE5MDpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QuYmFyMV9pZHhfd3JpdGUgPSBjbjIzeHhfYmFyMV9pZHhfd3JpdGU7XFxuMTE5MTpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QuYmFyMV9pZHhfcmVhZCA9IGNuMjN4eF9iYXIxX2lkeF9yZWFkO1xcbjExOTI6XFx0XFxuMTE5MzpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QuZW5hYmxlX2ludGVycnVwdCA9IGNuMjN4eF9lbmFibGVfcGZfaW50ZXJydXB0O1xcbjExOTQ6XFx0XFx0b2N0LVxcdTAwM2Vmbl9saXN0LmRpc2FibGVfaW50ZXJydXB0ID0gY24yM3h4X2Rpc2FibGVfcGZfaW50ZXJydXB0O1xcbjExOTU6XFx0XFxuMTE5NjpcXHRcXHRvY3QtXFx1MDAzZWZuX2xpc3QuZW5hYmxlX2lvX3F1ZXVlcyA9IGNuMjN4eF9lbmFibGVfaW9fcXVldWVzO1xcbjExOTc6XFx0XFx0b2N0LVxcdTAwM2Vmbl9saXN0LmRpc2FibGVfaW9fcXVldWVzID0gY24yM3h4X2Rpc2FibGVfaW9fcXVldWVzO1xcbjExOTg6XFx0XFxuMTE5OTpcXHRcXHRjbjIzeHhfc2V0dXBfcmVnX2FkZHJlc3Mob2N0KTtcXG4xMjAwOlxcdFxcbjEyMDE6XFx0XFx0b2N0LVxcdTAwM2Vjb3Byb2NfY2xvY2tfcmF0ZSA9IDEwMDAwMDBVTEwgKiBjbjIzeHhfY29wcm9jZXNzb3JfY2xvY2sob2N0KTtcXG4xMjAyOlxcdFxcbjEyMDM6XFx0XFx0cmV0dXJuIDA7XFxuMTIwNDpcXHRcXG4xMjA1OlxcdGVycl91bm1hcF9iYXIxOlxcbjEyMDY6XFx0XFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7XFxuMTIwNzpcXHRlcnJfdW5tYXBfYmFyMDpcXG4xMjA4OlxcdFxcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xcbjEyMDk6XFx0XFx0cmV0dXJuIDE7XFxuMTIxMDpcXHR9XFxuMTIxMTpcXHRFWFBPUlRfU1lNQk9MX0dQTChzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSk7XFxuMTIxMjpcXHRcXG4xMjEzOlxcdGludCBjbjIzeHhfZndfbG9hZGVkKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuMTIxNDpcXHR7XFxuMTIxNTpcXHRcXHR1NjQgdmFsO1xcbjEyMTY6XFx0XFxuMTIxNzpcXHRcXHQvKiBJZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgYWN0aXZlIFBGIG9uIHRoaXMgTklDLCB0aGVuIHRoYXRcXG4xMjE4OlxcdFxcdCAqIGltcGxpZXMgdGhhdCB0aGUgTklDIGZpcm13YXJlIGlzIGxvYWRlZCBhbmQgcnVubmluZy4gVGhpcyBjaGVja1xcbjEyMTk6XFx0XFx0ICogcHJldmVudHMgYSByYXJlIGZhbHNlIG5lZ2F0aXZlIHRoYXQgbWlnaHQgb2NjdXIgaWYgd2Ugb25seSByZWxpZWRcXG4xMjIwOlxcdFxcdCAqIG9uIGNoZWNraW5nIHRoZSBTQ1IyX0JJVF9GV19MT0FERUQgZmxhZy4gVGhlIGZhbHNlIG5lZ2F0aXZlIHdvdWxkXFxuMTIyMTpcXHRcXHQgKiBoYXBwZW4gaWYgdGhlIFBGIGRyaXZlciBzZWVzIFNDUjJfQklUX0ZXX0xPQURFRCBhcyBjbGVhcmVkIGV2ZW5cXG4xMjIyOlxcdFxcdCAqIHRob3VnaCB0aGUgZmlybXdhcmUgd2FzIGFscmVhZHkgbG9hZGVkIGJ1dCBzdGlsbCBib290aW5nIGFuZCBoYXMgeWV0XFxuMTIyMzpcXHRcXHQgKiB0byBzZXQgU0NSMl9CSVRfRldfTE9BREVELlxcbjEyMjQ6XFx0XFx0ICovXFxuMTIyNTpcXHRcXHRpZiAoYXRvbWljX3JlYWQob2N0LVxcdTAwM2VhZGFwdGVyX3JlZmNvdW50KSBcXHUwMDNlIDEpXFxuMTIyNjpcXHRcXHRcXHRyZXR1cm4gMTtcXG4xMjI3OlxcdFxcbjEyMjg6XFx0XFx0dmFsID0gb2N0ZW9uX3JlYWRfY3NyNjQob2N0LCBDTjIzWFhfU0xJX1NDUkFUQ0gyKTtcXG4xMjI5OlxcdFxcdHJldHVybiAodmFsIFxcdTAwM2VcXHUwMDNlIFNDUjJfQklUX0ZXX0xPQURFRCkgXFx1MDAyNiAxVUxMO1xcbjEyMzA6XFx0fVxcbjEyMzE6XFx0RVhQT1JUX1NZTUJPTF9HUEwoY24yM3h4X2Z3X2xvYWRlZCk7XFxuMTIzMjpcXHRcXG4xMjMzOlxcdHZvaWQgY24yM3h4X3RlbGxfdmZfaXRzX21hY2FkZHJfY2hhbmdlZChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LCBpbnQgdmZpZHgsXFxuMTIzNDpcXHRcXHRcXHRcXHRcXHRcXHR1OCAqbWFjKVxcbjEyMzU6XFx0e1xcbjEyMzY6XFx0XFx0aWYgKG9jdC1cXHUwMDNlc3Jpb3ZfaW5mby52Zl9kcnZfbG9hZGVkX21hc2sgXFx1MDAyNiBCSVRfVUxMKHZmaWR4KSkge1xcbjEyMzc6XFx0XFx0XFx0c3RydWN0IG9jdGVvbl9tYm94X2NtZCBtYm94X2NtZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTI6MzIuMzM3NTQwNDIzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTc4ODkwNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIGhhbmRsaW5nIG9mIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/IEl0J3MgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyBhIG1lbW9yeSBsZWFrLiBBbmQgdGhlIGNvZGUgcGF0aCAqaXMqIHJlYWNoYWJsZSDigJMgZXZlbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhhbmtzIHRvIHZQQ0kuIEVycm9yIHBhdGggZml4ZXMgYXJlIGdlbmVyYWxseSBnb29kIGZ1enppbmcgdGFyZ2V0cyB0byBjYXRjaCBhbnkgZG91YmxlLWZyZWVzIG9yIHNpbWlsYXIgcHJvYmxlbXMgdGhhdCBtaWdodCBiZSBpbnRyb2R1Y2VkLiBUaGUgZml4IGl0c2VsZiBpcyBzaW1wbGUsIGp1c3QgdW5tYXBwaW5nIEJBUnMuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGVyZSBhcmUgbm8gb3RoZXIgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLiBOb3BlLCBqdXN0IHRoZSB1bm1hcHBpbmcuIE9rYXksIHNvIHllcywgd29ydGggZnV6emluZywgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb2RlLlxuXG5CdXQgd2FpdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBpbnN0cnVjdGlvbnMhIFRoZXkgc2F5ICpub3QqIHRvIGZ1enogaWYgdGhlIGNoYW5nZSBpcyBhIGRvY3VtZW50YXRpb24gdXBkYXRlLCBjb3NtZXRpYyBsb2dnaW5nLCBudW1lcmljIGNvbnN0YW50IGFkanVzdG1lbnRzIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QsIG9yIGNvZGUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBOb3BlLCB0aGUgdlBDSSBtYWtlcyB0aGlzIHJlYWNoYWJsZS4gU28sIHRoZSBkZWNpc2lvbiBpcyBzdGlsbCB0byBmdXp6LCBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGZ1enppbmcgZm9jdXMuIFRoZSBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBJdCBhbHNvIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgY29uZmlnIG9wdGlvbnM6IGBMSVFVSURJT2AgYW5kIGBMSVFVSURJT19DT1JFYC4gSG9sZCBvbiwgYExJUVVJRElPX0NPUkVgIGlzbid0IGEgZGlyZWN0bHkgdXNlci1zZWxlY3RhYmxlIG9wdGlvbiwgaXQncyBzZWxlY3RlZCBieSBgTElRVUlESU9gISBHb3R0YSB2ZXJpZnkgdGhhdCBpbiB0aGUgYEtjb25maWdgIGZvciBgTElRVUlESU9gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzE3OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUyOjM4Ljk1NTQzMzQ4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NzQ2NjUyMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIExJUVVJRElPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUyOjQxLjAyMjkxMzYwMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTMzMjYyNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQ2F2aXVtIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgdGhpcyBzb3J0ZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQ2F2aXVtLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlciBpcyBjb25maWd1cmVkLiBUaGlzIGlzIHRoZSBwbGFjZSB3aGVyZSBJJ2xsIGZpbmQgYWxsIHRoZSBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0cyB0aGF0IGdvdmVybiBpdHMgYmVoYXZpb3Igd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBJ4oCZbSB0aGlua2luZyB0aGlzIGZpbGUgaG9sZHMgdGhlIGtleSB0byB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGV4YW1pbmUuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk2MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUyOjQ3LjE1NjE3OTk4M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY3MjQ5MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBMSVFVSURJT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTU0PWNvbmZpZyBDQVZJVU1fUFRQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy02NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo2NTpjb25maWcgTElRVUlESU9fQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY2LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6Njg6Y29uZmlnIExJUVVJRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNjktXFx0dHJpc3RhdGUgXFxcIkNhdml1bSBMaXF1aWRJTyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9ODQ9Y29uZmlnIE9DVEVPTl9NR01UX0VUSEVSTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy05NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo5NTpjb25maWcgTElRVUlESU9fVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy05Ni1cXHR0cmlzdGF0ZSBcXFwiQ2F2aXVtIExpcXVpZElPIFZGIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUyOjQ3LjgyMzQzNzM0NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM3ODY2NDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDpcblxuKipDaGVja2luZyBhbmQgRW5hYmxpbmcgdGhlIExJUVVJRElPIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUgaXMgZGVmaW5pdGVseSBgTElRVUlESU9gLiBNeSBwcmltYXJ5IHRhc2sgd2lsbCBiZSB0byBpbnRlZ3JhdGUgYExJUVVJRElPYCBpbnRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gVGhhdCBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkLiBOb3csIGp1c3QgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBMSVFVSURJT2AgZG9lc24ndCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBMb29rcyBsaWtlIHRoZXJlIGlzIG9uZSBkZXBlbmRlbmN5LCBgUENJYCwgdGhhdCBtdXN0IGFsc28gYmUgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MjIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDo1Mjo1Mi41NjEzMDcxMTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDY2NzE5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTE2PWNvbmZpZyBUSFVOREVSX05JQ19QRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTE3LVxcdHRyaXN0YXRlIFxcXCJUaHVuZGVyIFBoeXNpY2FsIGZ1bmN0aW9uIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzoxODpcXHRkZXBlbmRzIG9uIDY0QklUIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTE5LVxcdHNlbGVjdCBUSFVOREVSX05JQ19CR1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTI4PWNvbmZpZyBUSFVOREVSX05JQ19WRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctMzAtXFx0aW1wbHkgQ0FWSVVNX1BUUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjMxOlxcdGRlcGVuZHMgb24gNjRCSVQgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9MzU9Y29uZmlnXFx0VEhVTkRFUl9OSUNfQkdYXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctMzYtXFx0dHJpc3RhdGUgXFxcIlRodW5kZXIgTUFDIGludGVyZmFjZSBkcml2ZXIgKEJHWClcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6Mzc6XFx0ZGVwZW5kcyBvbiA2NEJJVCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy0zOC1cXHRzZWxlY3QgUEhZTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz00NT1jb25maWdcXHRUSFVOREVSX05JQ19SR1hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiVGh1bmRlciBNQUMgaW50ZXJmYWNlIGRyaXZlciAoUkdYKVxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo0NzpcXHRkZXBlbmRzIG9uIDY0QklUIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTQ4LVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTU0PWNvbmZpZyBDQVZJVU1fUFRQXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIkNhdml1bSBQVFAgY29wcm9jZXNzb3IgYXMgUFRQIGNsb2NrXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjU2OlxcdGRlcGVuZHMgb24gNjRCSVQgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NTc6XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTU4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTY4PWNvbmZpZyBMSVFVSURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY5LVxcdHRyaXN0YXRlIFxcXCJDYXZpdW0gTGlxdWlkSU8gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo3MDpcXHRkZXBlbmRzIG9uIDY0QklUIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjcxOlxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NzI6XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTczLVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9ODQ9Y29uZmlnIE9DVEVPTl9NR01UX0VUSEVSTkVUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctODUtXFx0dHJpc3RhdGUgXFxcIk9jdGVvbiBNYW5hZ2VtZW50IHBvcnQgZXRoZXJuZXQgZHJpdmVyIChDTjVYWFgsIENONlhYWClcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6ODY6XFx0ZGVwZW5kcyBvbiBDQVZJVU1fT0NURU9OX1NPQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTg3LVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTk1PWNvbmZpZyBMSVFVSURJT19WRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk2LVxcdHRyaXN0YXRlIFxcXCJDYXZpdW0gTGlxdWlkSU8gVkYgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo5NzpcXHRkZXBlbmRzIG9uIDY0QklUIFxcdTAwMjZcXHUwMDI2IFBDSV9NU0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo5ODpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctOTktXFx0c2VsZWN0IExJUVVJRElPX0NPUkVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6NTI6NTIuNzc1OTg4MTg2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMjAzODM3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ2F2aXVtIExpcXVpZElPIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGUga2V5IGRlcGVuZGVuY2llcyBoZXJlIGFyZSBgTElRVUlESU9gLCB3aGljaCBpcyBhIGdpdmVuLCBidXQgYWxzbyBgNjRCSVRgLCBgUENJYCwgYW5kIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAuIFRoZXNlIGFyZSBhbGwgcHJldHR5IHN0YW5kYXJkIGtlcm5lbCBjb25maWd1cmF0aW9ucywgbm90aGluZyB1bnVzdWFsIHRoZXJlLlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIGhhbmRsaW5nIG9mIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIEFoLCB0aGlzIGlzIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGUgaW50ZXJlc3RpbmcgcG9pbnQgaXMgdGhhdCB0aGlzIHZ1bG5lcmFibGUgY29kZSBpcyByZWFjaGFibGUgdGhyb3VnaCBQQ0kgcHJvYmluZywgbWVhbmluZyBpdCdzIHN1c2NlcHRpYmxlIHRvIGZ1enppbmcsIGVzcGVjaWFsbHkgdmlhIHNvbWV0aGluZyBsaWtlIHN5emthbGxlcidzIHZQQ0kgZnV6emVyLiBUaGUgdmFsdWUgaGVyZSBpcyB0aGF0IGZ1enppbmcgdGhpcyBlcnJvciBwYXRoIHdpbGwgY29uZmlybSB0aGF0IHRoZSB1bm1hcHBpbmcgbG9naWMgaXMgbm90IGludHJvZHVjaW5nIGRvdWJsZSBmcmVlcyBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuIEl0IG1ha2VzIHNlbnNlIHRvIHRhcmdldCB0aGlzIGFzIGFuIGFyZWEgZm9yIHZ1bG5lcmFiaWxpdGllcy5cblxuTXkgc3BlY2lmaWMgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGZ1bmN0aW9uLiBJIGluaXRpYWxseSB3YW50IHRvIHRha2UgYSBicmllZiBsb29rIHRvIHNlZSBpZiB0aGlzIGFmZmVjdHMgYW55IG90aGVyIGZ1bmN0aW9ucywgYnV0IGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyBpc29sYXRlZCB0byBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBJdCBpcyBmaW5lIHRvIG9ubHkgZm9jdXMgb24gdGhpcy5cblxuQWxyaWdodCwgSSdtIHNhdGlzZmllZC4gVGltZSB0byBzdWJtaXQgbXkgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1NzgsIk91dHB1dFRva2VucyI6MTM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjUzOjAwLjg5NjM3NjAyOFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjEyMzc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTElRVUlESU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgcHJvYmluZywgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXIncyB2UENJIGZ1enplci4gRnV6emluZyB0aGlzIGVycm9yIHBhdGggaXMgdXNlZnVsIHRvIGVuc3VyZSB0aGF0IHRoZSB1bm1hcHBpbmcgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIGRvdWJsZSBmcmVlcyBvciBvdGhlciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTElRVUlESU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGluIHRoZSBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgcHJvYmluZywgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXIncyB2UENJIGZ1enplci4gRnV6emluZyB0aGlzIGVycm9yIHBhdGggaXMgdXNlZnVsIHRvIGVuc3VyZSB0aGF0IHRoZSB1bm1hcHBpbmcgbG9naWMgZG9lcyBub3QgaW50cm9kdWNlIGRvdWJsZSBmcmVlcyBvciBvdGhlciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowwfjfz[1] Phase: Succeeded StartedAt: 2026-06-24 10:53:13 +0000 UTC FinishedAt: 2026-06-24 10:53:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-24 10:53:13 +0000 UTC FinishedAt: 2026-06-24 10:53:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2] Phase: Succeeded StartedAt: 2026-06-24 10:53:13 +0000 UTC FinishedAt: 2026-06-24 11:58:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-24 10:53:14 +0000 UTC FinishedAt: 2026-06-24 11:58:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-24 10:53:14 +0000 UTC FinishedAt: 2026-06-24 10:53:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-24 10:53:14 +0000 UTC FinishedAt: 2026-06-24 10:53:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwfjfz/series-workflowwfjfz-convert-artifact-2246777886/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-24 10:53:48 +0000 UTC FinishedAt: 2026-06-24 11:27:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-24 10:53:48 +0000 UTC FinishedAt: 2026-06-24 11:27:11 +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:*82f6fdcb-fee4-4114-a3f8-b5c5b9076f4f,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-workflowwfjfz/series-workflowwfjfz-convert-artifact-2246777886/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": "8cb40812-84ae-438e-9f49-85b52b064fda", "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-workflowwfjfz/series-workflowwfjfz-build-action-2755191044/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-24 10:53:48 +0000 UTC FinishedAt: 2026-06-24 11:27:00 +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:*82f6fdcb-fee4-4114-a3f8-b5c5b9076f4f,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-workflowwfjfz/series-workflowwfjfz-convert-artifact-2246777886/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": "8cb40812-84ae-438e-9f49-85b52b064fda", "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-workflowwfjfz/series-workflowwfjfz-build-action-2755191044/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-24 11:27:11 +0000 UTC FinishedAt: 2026-06-24 11:27:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-24 11:27:11 +0000 UTC FinishedAt: 2026-06-24 11:27:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-24 11:27:11 +0000 UTC FinishedAt: 2026-06-24 11:28:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-24 11:27:11 +0000 UTC FinishedAt: 2026-06-24 11:27:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwfjfz/series-workflowwfjfz-convert-artifact-3647142609/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-24 11:28:10 +0000 UTC FinishedAt: 2026-06-24 11:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-24 11:28:10 +0000 UTC FinishedAt: 2026-06-24 11:30:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8cb40812-84ae-438e-9f49-85b52b064fda,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-workflowwfjfz/series-workflowwfjfz-build-action-2755191044/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-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-24 11:30:11 +0000 UTC FinishedAt: 2026-06-24 11:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-24 11:30:11 +0000 UTC FinishedAt: 2026-06-24 11:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-24 11:30:11 +0000 UTC FinishedAt: 2026-06-24 11:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-24 11:30:11 +0000 UTC FinishedAt: 2026-06-24 11:54:30 +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:*82f6fdcb-fee4-4114-a3f8-b5c5b9076f4f,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-workflowwfjfz/series-workflowwfjfz-convert-artifact-3647142609/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": "a7966b50-94a5-4dad-9ce6-5663a2e17921", "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-workflowwfjfz/series-workflowwfjfz-build-action-4000112797/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-24 11:30:11 +0000 UTC FinishedAt: 2026-06-24 11:54:20 +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:*82f6fdcb-fee4-4114-a3f8-b5c5b9076f4f,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-workflowwfjfz/series-workflowwfjfz-convert-artifact-3647142609/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": "a7966b50-94a5-4dad-9ce6-5663a2e17921", "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-workflowwfjfz/series-workflowwfjfz-build-action-4000112797/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-24 11:54:30 +0000 UTC FinishedAt: 2026-06-24 11:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-24 11:54:30 +0000 UTC FinishedAt: 2026-06-24 11:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-24 11:54:30 +0000 UTC FinishedAt: 2026-06-24 11:56:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-24 11:54:30 +0000 UTC FinishedAt: 2026-06-24 11:56:32 +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:*a7966b50-94a5-4dad-9ce6-5663a2e17921,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-workflowwfjfz/series-workflowwfjfz-build-action-4000112797/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-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-24 11:56:42 +0000 UTC FinishedAt: 2026-06-24 11:58:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-24 11:56:42 +0000 UTC FinishedAt: 2026-06-24 11:58:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*8cb40812-84ae-438e-9f49-85b52b064fda,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a7966b50-94a5-4dad-9ce6-5663a2e17921,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-workflowwfjfz/series-workflowwfjfz-build-action-2755191044/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-workflowwfjfz/series-workflowwfjfz-build-action-4000112797/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-24 11:56:42 +0000 UTC FinishedAt: 2026-06-24 11:56:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-24 11:56:42 +0000 UTC FinishedAt: 2026-06-24 11:56:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwfjfz/series-workflowwfjfz-convert-artifact-3139627014/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-24 11:56:42 +0000 UTC FinishedAt: 2026-06-24 11:56:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-24 11:56:42 +0000 UTC FinishedAt: 2026-06-24 11:56:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-24 11:56:42 +0000 UTC FinishedAt: 2026-06-24 11:56:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-24 11:56:52 +0000 UTC FinishedAt: 2026-06-24 11:58:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwfjfz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"83bbeb51-1f6b-4b32-b358-a17b1bc69b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-24 11:56:52 +0000 UTC FinishedAt: 2026-06-24 11:57:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8cb40812-84ae-438e-9f49-85b52b064fda,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a7966b50-94a5-4dad-9ce6-5663a2e17921,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-workflowwfjfz/series-workflowwfjfz-build-action-2755191044/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-workflowwfjfz/series-workflowwfjfz-build-action-4000112797/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-workflowwfjfz/series-workflowwfjfz-convert-artifact-3139627014/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,}