Name: series-workflowgmvb9 Phase: Succeeded StartedAt: 2026-07-17 23:38:04 +0000 UTC FinishedAt: 2026-07-18 04:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[0] Phase: Succeeded StartedAt: 2026-07-17 23:38:04 +0000 UTC FinishedAt: 2026-07-18 00:12:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 23:38:04 +0000 UTC FinishedAt: 2026-07-18 00:12:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS", "NET_CLS_ACT", "NF_TABLES", "NF_FLOW_TABLE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS", "NET_CLS_ACT", "NF_TABLES", "NF_FLOW_TABLE" ], "series_id": "3d3dfcb2-2508-4b25-b1ad-a53fc624e092" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "flow_indr_dev_setup_offload", "tcf_block_offload_cmd", "nft_indr_block_offload_cmd", "nf_flow_table_indr_offload_cmd" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQmIzM0OywKICAgICYjMzQ7dGNmX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0NGFiYmFkYzRhMTQ1ZDM3NWVjY2IzYmQ4MzA1YjBhODUwOGU4NjliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTggMDA6MTE6MDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmMgYi9uZXQvY29yZS9mbG93X29mZmxvYWQuY1xuaW5kZXggNTA3MWQ3ZmU2Y2UyYTUuLjVmYmIxYWU0Njc5ZGRlIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jXG5AQCAtNjA2LDE1ICYjNDM7NjA2LDIwIEBAIGludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcdHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdFx0dm9pZCAoKmNsZWFudXApKHN0cnVjdCBmbG93X2Jsb2NrX2NiICpibG9ja19jYikpXG4ge1xuIFx0c3RydWN0IGZsb3dfaW5kcl9kZXYgKnRoaXM7XG4mIzQzO1x0Ym9vbCByZXBsYXlfYWRkZWQgPSBmYWxzZTtcbiBcdHUzMiBjb3VudCA9IDA7XG4gXHRpbnQgZXJyO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZmbG93X2luZHJfYmxvY2tfbG9jayk7XG4gXHRpZiAoYm8pIHtcbi1cdFx0aWYgKGJvLVx1MDAzZWNvbW1hbmQgPT0gRkxPV19CTE9DS19CSU5EKVxuLVx0XHRcdGluZGlyX2Rldl9hZGQoZGF0YSwgZGV2LCBzY2gsIHR5cGUsIGNsZWFudXAsIGJvKTtcbi1cdFx0ZWxzZSBpZiAoYm8tXHUwMDNlY29tbWFuZCA9PSBGTE9XX0JMT0NLX1VOQklORClcbiYjNDM7XHRcdGlmIChiby1cdTAwM2Vjb21tYW5kID09IEZMT1dfQkxPQ0tfQklORCkge1xuJiM0MztcdFx0XHRpbnQgYWRkX2VycjtcbiYjNDM7XG4mIzQzO1x0XHRcdGFkZF9lcnIgPSBpbmRpcl9kZXZfYWRkKGRhdGEsIGRldiwgc2NoLCB0eXBlLCBjbGVhbnVwLCBibyk7XG4mIzQzO1x0XHRcdHJlcGxheV9hZGRlZCA9IGFkZF9lcnIgPT0gMDtcbiYjNDM7XHRcdH0gZWxzZSBpZiAoYm8tXHUwMDNlY29tbWFuZCA9PSBGTE9XX0JMT0NLX1VOQklORCkge1xuIFx0XHRcdGluZGlyX2Rldl9yZW1vdmUoZGF0YSk7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRoaXMsIFx1MDAyNmZsb3dfYmxvY2tfaW5kcl9kZXZfbGlzdCwgbGlzdCkge1xuQEAgLTYyMyw5ICYjNDM7NjI4LDE3IEBAIGludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcdHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdGNvdW50JiM0MzsmIzQzOztcbiBcdH1cbiBcbiYjNDM7XHRpZiAoYm8gXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2Ym8tXHUwMDNlY2JfbGlzdCkpIHtcbiYjNDM7XHRcdGlmIChyZXBsYXlfYWRkZWQpXG4mIzQzO1x0XHRcdGluZGlyX2Rldl9yZW1vdmUoZGF0YSk7XG4mIzQzO1x0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0ZXJyID0gY291bnQ7XG4mIzQzO1x0fVxuJiM0MztcbiBcdG11dGV4X3VubG9jayhcdTAwMjZmbG93X2luZHJfYmxvY2tfbG9jayk7XG4gXG4tXHRyZXR1cm4gKGJvIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNmJvLVx1MDAzZWNiX2xpc3QpKSA/IC1FT1BOT1RTVVBQIDogY291bnQ7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gRVhQT1JUX1NZTUJPTChmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQmIzM0OywKICAgICYjMzQ7dGNmX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ0YWJiYWRjNGExNDVkMzc1ZWNjYjNiZDgzMDViMGE4NTA4ZTg2OWIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxOCAwMDoxMTowMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jIGIvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmMKaW5kZXggNTA3MWQ3ZmU2Y2UyYTUuLjVmYmIxYWU0Njc5ZGRlIDEwMDY0NAotLS0gYS9uZXQvY29yZS9mbG93X29mZmxvYWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9mbG93X29mZmxvYWQuYwpAQCAtNjA2LDE1ICYjNDM7NjA2LDIwIEBAIGludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwJc3RydWN0IFFkaXNjICpzY2gsCiAJCQkJdm9pZCAoKmNsZWFudXApKHN0cnVjdCBmbG93X2Jsb2NrX2NiICpibG9ja19jYikpCiB7CiAJc3RydWN0IGZsb3dfaW5kcl9kZXYgKnRoaXM7CiYjNDM7CWJvb2wgcmVwbGF5X2FkZGVkID0gZmFsc2U7CiAJdTMyIGNvdW50ID0gMDsKIAlpbnQgZXJyOwogCiAJbXV0ZXhfbG9jaygmYW1wO2Zsb3dfaW5kcl9ibG9ja19sb2NrKTsKIAlpZiAoYm8pIHsKLQkJaWYgKGJvLSZndDtjb21tYW5kID09IEZMT1dfQkxPQ0tfQklORCkKLQkJCWluZGlyX2Rldl9hZGQoZGF0YSwgZGV2LCBzY2gsIHR5cGUsIGNsZWFudXAsIGJvKTsKLQkJZWxzZSBpZiAoYm8tJmd0O2NvbW1hbmQgPT0gRkxPV19CTE9DS19VTkJJTkQpCiYjNDM7CQlpZiAoYm8tJmd0O2NvbW1hbmQgPT0gRkxPV19CTE9DS19CSU5EKSB7CiYjNDM7CQkJaW50IGFkZF9lcnI7CiYjNDM7CiYjNDM7CQkJYWRkX2VyciA9IGluZGlyX2Rldl9hZGQoZGF0YSwgZGV2LCBzY2gsIHR5cGUsIGNsZWFudXAsIGJvKTsKJiM0MzsJCQlyZXBsYXlfYWRkZWQgPSBhZGRfZXJyID09IDA7CiYjNDM7CQl9IGVsc2UgaWYgKGJvLSZndDtjb21tYW5kID09IEZMT1dfQkxPQ0tfVU5CSU5EKSB7CiAJCQlpbmRpcl9kZXZfcmVtb3ZlKGRhdGEpOwomIzQzOwkJfQogCX0KIAogCWxpc3RfZm9yX2VhY2hfZW50cnkodGhpcywgJmFtcDtmbG93X2Jsb2NrX2luZHJfZGV2X2xpc3QsIGxpc3QpIHsKQEAgLTYyMyw5ICYjNDM7NjI4LDE3IEBAIGludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwJc3RydWN0IFFkaXNjICpzY2gsCiAJCQljb3VudCYjNDM7JiM0Mzs7CiAJfQogCiYjNDM7CWlmIChibyAmYW1wOyZhbXA7IGxpc3RfZW1wdHkoJmFtcDtiby0mZ3Q7Y2JfbGlzdCkpIHsKJiM0MzsJCWlmIChyZXBsYXlfYWRkZWQpCiYjNDM7CQkJaW5kaXJfZGV2X3JlbW92ZShkYXRhKTsKJiM0MzsJCWVyciA9IC1FT1BOT1RTVVBQOwomIzQzOwl9IGVsc2UgewomIzQzOwkJZXJyID0gY291bnQ7CiYjNDM7CX0KJiM0MzsKIAltdXRleF91bmxvY2soJmFtcDtmbG93X2luZHJfYmxvY2tfbG9jayk7CiAKLQlyZXR1cm4gKGJvICZhbXA7JmFtcDsgbGlzdF9lbXB0eSgmYW1wO2JvLSZndDtjYl9saXN0KSkgPyAtRU9QTk9UU1VQUCA6IGNvdW50OwomIzQzOwlyZXR1cm4gZXJyOwogfQogRVhQT1JUX1NZTUJPTChmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMjIKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBGbG93IE9mZmxvYWQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgd2l0aGluIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AuIEl0JiMzOTtzIGZvY3VzZWQgb24gaGFuZGxpbmcgaW5kaXJlY3QgZGV2aWNlcywgc3BlY2lmaWNhbGx5IHRoZSBsb2dpYyBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyB0aGVtIGR1cmluZyBvZmZsb2FkIG9wZXJhdGlvbnMuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhbiBpc3N1ZSB3aGVyZSB0aGUgY2FsbGJhY2sgbGlzdCAoYGJvLSZndDtjYl9saXN0YCkgbWlnaHQgYmUgZW1wdHkgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHJlc291cmNlIGxlYWsgb3IgaW5jb25zaXN0ZW50IHN0YXRlLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgdGhlIGBGTE9XX0JMT0NLX0JJTkRgIGNvbW1hbmQuIElmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIHdoZW4gYSBiaW5kaW5nIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQsIHRoZSBjb2RlIG5vdyBjYXB0dXJlcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBpbmRpcl9kZXZfYWRkYCBhbmQgc2V0cyBhIGZsYWcsIGByZXBsYXlfYWRkZWRgLCBiYXNlZCBvbiB3aGV0aGVyIHRoYXQgYWRkaXRpb24gd2FzIHN1Y2Nlc3NmdWwuIExhdGVyLCBhIGNoZWNrIGlzIHBlcmZvcm1lZDogaWYgd2UgaGF2ZSBhIGBib2AgYW5kIHRoZSBjYWxsYmFjayBsaXN0IGlzIGVtcHR5LCBhbmQgaWYgYHJlcGxheV9hZGRlZGAgaXMgdHJ1ZSwgaXQgY2FsbHMgYGluZGlyX2Rldl9yZW1vdmUoZGF0YSlgLiBUaGUgZnVuY3Rpb24gdGhlbiByZXR1cm5zIGAtRU9QTk9UU1VQUGAuIFRoaXMgc2VlbXMgdG8gYmUgdGhlIGNydWNpYWwgcGFydCBvZiB0aGUgZml4LiBJIGJlbGlldmUgdGhpcyBwYXJ0IGlzIGFuIGF0dGVtcHQgdG8gY2xlYW4gdXAgYW55IHBhcnRpYWxseSBhZGRlZCBpbmRpcmVjdCBkZXZpY2VzIHdoZW4gdGhlIGJpbmRpbmcgZmFpbHMgaW4gc29tZSB3YXkuCgpCYXNpY2FsbHksIGl0JiMzOTtzIGEgc2FmZXR5IG5ldC4gSWYgYSBiaW5kaW5nIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQsIGFuZCB0aGUgYmluZGluZyBlbmRzIHVwIHdpdGggYW4gZW1wdHkgY2FsbGJhY2sgbGlzdCwgaXQgcmVtb3ZlcyB0aGUgbmV3bHkgYWRkZWQgaW5kaXJlY3QgZGV2aWNlIGlmIHRoZSBhZGRpdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgYW5kIHRoZW4gcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIGxlYWsgb3IgYW4gaW5jb3JyZWN0IHN0YXRlIHdoZXJlIHRoZSBpbmRpcmVjdCBkZXZpY2UgaXMgYWRkZWQgYnV0IG5vdCBwcm9wZXJseSB0cmFja2VkLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIHJlYXNvbmFibGUgY2hhbmdlIHRvIGltcHJvdmUgcmVsaWFiaWxpdHkgd2l0aGluIHRoZSBmbG93IG9mZmxvYWQgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Zsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jPTU4OT1zdGF0aWMgaW50IGluZGlyX2Rldl9yZW1vdmUodm9pZCAqZGF0YSlcbi0tXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDItXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYzo2MDM6aW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFx0c3RydWN0IFFkaXNjICpzY2gsXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDQtXHRcdFx0XHRlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqZGF0YSxcbi0tXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02NDItfVxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmM6NjQzOkVYUE9SVF9TWU1CT0woZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKTtcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTY0NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDIyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBLZXJuZWwgRmxvdyBPZmZsb2FkIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGZvciB0aGlzIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AgbW9kdWxlLiBNeSBmaXJzdCB0aG91Z2h0IHdhcyB0byBqdXN0IGxvb2sgZm9yIGBDT05GSUdfTkVUX0ZMT1dfTElNSVRgIHdoaWNoIHNlZW1zIGxvZ2ljYWwuIEhvd2V2ZXIsIEkgd2FudCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgY2hlY2sgdGhlIGBuZXQvY29yZS9NYWtlZmlsZWAgaW5zdGVhZC4gSXQmIzM5O3MgdGhlIE1ha2VmaWxlIHRoYXQgdWx0aW1hdGVseSBkaWN0YXRlcyB0aGUgY29tcGlsYXRpb24gYW5kIGluY2x1c2lvbiBvZiB0aGUgc291cmNlIGZpbGUsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFjdHVhbCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBkZWZpbmVkLiBJJiMzOTtsbCBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGFjdHVhbCBjb25maWd1cmF0aW9uIGNvbmRpdGlvbnMgdGhlcmUsIGluc3RlYWQgb2YgcmVseWluZyBvbiBhbiBhc3N1bWVkIGRlcGVuZGVuY3kgdGhhdCBtaWdodCBiZSBtaXN0YWtlbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgTWFrZWZpbGUgaGFzIHRvIHNheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmbG93X29mZmxvYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZT0xMj1vYmoteVx0XHQgICAgICYjNDM7PSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXG4tLVxubmV0L2NvcmUvTWFrZWZpbGUtMTQtXHRcdFx0c29ja19kaWFnLm8gZGV2X2lvY3RsLm8gdHNvLm8gc29ja19yZXVzZXBvcnQubyBcXFxubmV0L2NvcmUvTWFrZWZpbGU6MTU6XHRcdFx0ZmliX25vdGlmaWVyLm8geGRwLm8gZmxvd19vZmZsb2FkLm8gZ3JvLm8gXFxcbm5ldC9jb3JlL01ha2VmaWxlLTE2LVx0XHRcdG5ldGRldi1nZW5sLm8gbmV0ZGV2LWdlbmwtZ2VuLm8gbmV0ZGV2X3dvcmsubyBnc28ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIEZsb3cgT2ZmbG9hZCBDb21waWxhdGlvbiBhbmQgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBidWlsZCBzeXN0ZW0gaXMgY29tcGlsaW5nIGBvYmoteWAgdW5jb25kaXRpb25hbGx5LCBpbnRlcmVzdGluZy4gQW5kLCBvZiBjb3Vyc2UsIGBmbG93X29mZmxvYWQub2AgaXMgcHVsbGVkIGluIHZpYSBgb2JqLXlgLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgaG9sZCBvbiBhIG1pbnV0ZSwgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgaGVyZSwgc28gSSYjMzk7bGwgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIGdvdmVybmluZyBmbG93IG9mZmxvYWQuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEkmIzM5O20gdHJ5aW5nIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3MgZm9yIHRoZSBmbG93IG9mZmxvYWQgZmVhdHVyZXMuIEFoLCBoZXJlJiMzOTtzIHRoZSBob29rIC0gYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgaXMgdXNlZCwgd2hpY2ggbWVhbnMgaXQgaXMgdGllZCB0byBUcmFmZmljIENvbnRyb2wgKFRDKSBhbmQgYWxzbyB0aGUgdmFyaW91cyBkcml2ZXJzLiBPa2F5LCB0aGF0IGNvbmZpcm1zIGl0cyBicm9hZGVyIGltcGFjdC4gVGhpcyBsaWtlbHkgaW5mb3JtcyB0aGUgY29uZmlndXJhdGlvbiBzdHJhdGVneSB0byBhY3RpdmF0ZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIE5vdyBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdCBiZWluZyBjb21waWxlZCBpbiB3aXRoIGBvYmoteWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oPTczOT12b2lkIGZsb3dfaW5kcl9kZXZfdW5yZWdpc3RlcihmbG93X2luZHJfYmxvY2tfYmluZF9jYl90ICpjYiwgdm9pZCAqY2JfcHJpdixcbmluY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oLTc0MC1cdFx0XHQgICAgICB2b2lkICgqcmVsZWFzZSkodm9pZCAqY2JfcHJpdikpO1xuaW5jbHVkZS9uZXQvZmxvd19vZmZsb2FkLmg6NzQxOmludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IFFkaXNjICpzY2gsXG5pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaC03NDItXHRcdFx0XHRlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqZGF0YSxcbi0tXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYz01ODk9c3RhdGljIGludCBpbmRpcl9kZXZfcmVtb3ZlKHZvaWQgKmRhdGEpXG4tLVxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjAyLVxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmM6NjAzOmludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcdHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjA0LVx0XHRcdFx0ZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKmRhdGEsXG4tLVxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjQyLX1cbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jOjY0MzpFWFBPUlRfU1lNQk9MKGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZCk7XG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02NDQtXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz0xMjM4PXN0YXRpYyBpbnQgbmZfZmxvd190YWJsZV9pbmRyX29mZmxvYWRfY21kKHN0cnVjdCBmbG93X2Jsb2NrX29mZmxvYWQgKmJvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtMTI0Ni1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6MTI0NzpcdHJldHVybiBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoZGV2LCBOVUxMLCBUQ19TRVRVUF9GVCwgZmxvd3RhYmxlLCBibyxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtMTI0OC1cdFx0XHRcdFx0ICAgbmZfZmxvd190YWJsZV9pbmRyX2NsZWFudXApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX29mZmxvYWQuYz00MjM9c3RhdGljIGludCBuZnRfaW5kcl9ibG9ja19vZmZsb2FkX2NtZChzdHJ1Y3QgbmZ0X2Jhc2VfY2hhaW4gKmJhc2VjaGFpbixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19vZmZsb2FkLmMtNDMyLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfb2ZmbG9hZC5jOjQzMzpcdGVyciA9IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChkZXYsIE5VTEwsIFRDX1NFVFVQX0JMT0NLLCBiYXNlY2hhaW4sIFx1MDAyNmJvLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfb2ZmbG9hZC5jLTQzNC1cdFx0XHRcdFx0ICBuZnRfaW5kcl9ibG9ja19jbGVhbnVwKTtcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jPTIwMz1zdGF0aWMgaW50IHRjZl9hY3Rpb25fb2ZmbG9hZF9jbWRfZXgoc3RydWN0IGZsb3dfb2ZmbG9hZF9hY3Rpb24gKmZsX2FjdCxcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIwNy1cbm5ldC9zY2hlZC9hY3RfYXBpLmM6MjA4Olx0ZXJyID0gZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKE5VTEwsIE5VTEwsIFRDX1NFVFVQX0FDVCxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMjA5LVx0XHRcdFx0XHQgIGZsX2FjdCwgTlVMTCwgTlVMTCk7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz04MjM9c3RhdGljIGludCB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy04NDctXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjg0ODpcdGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChkZXYsIHNjaCwgVENfU0VUVVBfQkxPQ0ssIGJsb2NrLCBcdTAwMjZibyxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODQ5LVx0XHRcdFx0ICAgIHRjX2Jsb2NrX2luZHJfY2xlYW51cCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYxOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoaXMgY29kZSBzbmlwcGV0IGlzIHVzZWQgYWNyb3NzIGEgZmV3IGtleSBhcmVhcyB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBuZXR3b3JraW5nIHN0YWNrOiBgbmZfZmxvd190YWJsZV9vZmZsb2FkLmNgLCBgbmZfdGFibGVzX29mZmxvYWQuY2AsIGBhY3RfYXBpLmNgLCBhbmQgYGNsc19hcGkuY2AuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgYSBmZXcgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCB3aWxsIGxpa2VseSBpbmZsdWVuY2UgaG93IHRoaXMgaXMgdXNlZCBvciBldmVuIGVuYWJsZWQuIEkmIzM5O20gemVyb2luZyBpbiBvbiBgQ09ORklHX05FVF9DTFNfQUNUYCwgYENPTkZJR19ORVRfU0NIRURgLCBgQ09ORklHX05GX1RBQkxFU2AsIGFuZCBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGFzIHRoZSBsaWtlbHkgY2FuZGlkYXRlcyB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBHaXZlbiB0aGUgY29udGV4dCwgSSB0aGluayBhIGRlZXBlciBkaXZlIGludG8gYG5ldC9zY2hlZC9jbHNfYXBpLmNgIGFuZCBgbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY2AgaXMgdGhlIGJlc3Qgc3RhcnRpbmcgcG9pbnQgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9mbG93X3RhYmxlX29mZmxvYWQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDM9bmZfZmxvd190YWJsZS1vYmpzXHRcdDo9IG5mX2Zsb3dfdGFibGVfY29yZS5vIG5mX2Zsb3dfdGFibGVfaXAubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDQtXHRcdFx0XHQgICBuZl9mbG93X3RhYmxlX3BhdGgubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxNDU6XHRcdFx0XHQgICBuZl9mbG93X3RhYmxlX29mZmxvYWQubyBuZl9mbG93X3RhYmxlX3hkcC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0Ni1uZl9mbG93X3RhYmxlLSQoQ09ORklHX05GX0ZMT1dfVEFCTEVfUFJPQ0ZTKSAmIzQzOz0gbmZfZmxvd190YWJsZV9wcm9jZnMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTM1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKk5hdmlnYXRpbmcgS2VybmVsIE9mZmxvYWQgU3RydWN0dXJlcyoqCgpPa2F5LCBzbyBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGlzIHRoZSBrZXkgaGVyZS4gUmlnaHQsIHRoYXQgbWVhbnMgdGhlIGBuZl9mbG93X3RhYmxlLm9gIG1vZHVsZSBnZXRzIGJ1aWx0LiBBbmQsIGlmIEkmIzM5O20gcmVtZW1iZXJpbmcgY29ycmVjdGx5LCB0aGF0IGFsc28gcHVsbHMgaW4gYG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5vYC4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBOZXRmaWx0ZXIgb2ZmbG9hZCBmcmFtZXdvcmssIGFuZCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgYG5mX3RhYmxlc19vZmZsb2FkLm9gIG1vZHVsZSBhbHNvIGhhcyBzb21lIGRlcGVuZGVuY2llcyBoZXJlLiBMZXQmIzM5O3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvbmV0ZmlsdGVyL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBjcml0aWNhbCBkZXRhaWwgYWJvdXQgdGhlIGludGVyY29ubmVjdGlvbnMuIE5lZWQgdG8gbWFrZSBzdXJlIHRoZSBvZmZsb2FkaW5nIGRlcGVuZGVuY2llcyBhcmUgYWxsIGluIG9yZGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl90YWJsZXNfb2ZmbG9hZC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTg3PW5mX3RhYmxlcy1vYmpzIDo9IG5mX3RhYmxlc19jb3JlLm8gbmZfdGFibGVzX2FwaS5vIG5mdF9jaGFpbl9maWx0ZXIubyBcXFxuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTEtXHRcdCAgbmZ0X2NvdW50ZXIubyBuZnRfb2JqcmVmLm8gbmZ0X2lubmVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6OTI6XHRcdCAgbmZ0X2NoYWluX3JvdXRlLm8gbmZfdGFibGVzX29mZmxvYWQubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05My1cdFx0ICBuZnRfc2V0X2hhc2gubyBuZnRfc2V0X2JpdG1hcC5vIG5mdF9zZXRfcmJ0cmVlLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzOQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIGFuZCBUcmFmZmljIENvbnRyb2wgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIGBDT05GSUdfTkZfVEFCTEVTYCBhY3RpdmF0ZXMgYG5mX3RhYmxlcy5vYC4gSSBrbm93IHRoYXQgbWVhbnMgYG5mX3RhYmxlc19vZmZsb2FkLm9gIGdldHMgcHVsbGVkIGluIHRvbywgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBvZmZsb2FkaW5nIE5ldGZpbHRlciBydWxlcy4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgbWlnaHQgaW50ZXJhY3Qgd2l0aCB0cmFmZmljIGNvbnRyb2wsIG9yIGB0Y2AuIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBjbHNfYXBpLm9gIGFuZCBgYWN0X2FwaS5vYC4gVGhlc2UgYXJlIGNlbnRyYWwgdG8gY2xhc3NpZmljYXRpb24gYW5kIGFjdGlvbnMgcmVzcGVjdGl2ZWx5LCB3aGljaCBpcyB3aGVyZSBOZXRmaWx0ZXIgY2FuLCBhbmQgb2Z0ZW4gZG9lcywgaW50ZXJzZWN0IHdpdGggdHJhZmZpYyBjb250cm9sIG9uIGEgc3lzdGVtLiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgbW9kdWxlcyBwbGF5IG5pY2VseSB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2xzX2FwaS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORVRfU0NIRUQpXHRcdCYjNDM7PSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05FVF9DTFMpXHRcdCYjNDM7PSBjbHNfYXBpLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfTkVUX0NMU19BQ1QpXHQmIzQzOz0gYWN0X2FwaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4OTUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMgZm9yIE5ldHdvcmsgT2ZmbG9hZCoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIG5ldHdvcmsgb2ZmbG9hZCBjb25maWd1cmF0aW9uIGhlcmUuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19ORVRfQ0xTYCBhbmQgYENPTkZJR19ORVRfQ0xTX0FDVGAgYXJlIGRlZmluaXRlbHkgcmVsZXZhbnQsIGdpdmVuIHRoZSB0YXNrIGF0IGhhbmQuIEluaXRpYWxseSwgSSB0aG91Z2h0IHRoYXQgYENPTkZJR19ORVRfU0NIRURgIG1pZ2h0IGJlIHJlcXVpcmVkIHRvbywgc3BlY2lmaWNhbGx5IGZvciB0aGUgYGNsc19hcGkub2AgYW5kIGBhY3RfYXBpLm9gIG1vZHVsZXMsIGJ1dCBvbiBmdXJ0aGVyIHJldmlldywgaXQgYXBwZWFycyBgQ09ORklHX05FVF9DTFNgIGFuZCBgQ09ORklHX05FVF9DTFNfQUNUYCBzdGFuZCBhbG9uZS4KCk5vdywgYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAuLi4gdGhhdCYjMzk7cyBkZWZpbmVkIGluIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AsIGFuZCB0aGF0IHNlZW1zIHRvIGJlIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSwgd2hpY2ggaXMgZ29vZC4gQnV0IHRvIGFjdHVhbGx5ICp1c2UqIHRoYXQgZnVuY3Rpb25hbGl0eSwgSSYjMzk7bSB0aGlua2luZyB3ZSYjMzk7cmUgZ29pbmcgdG8gbmVlZCB0byBpbnZvbHZlIGVpdGhlciBUQyBvciBOZXRmaWx0ZXIgb2ZmbG9hZCBwYXRocy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgY29ycmVjdCBtb2R1bGVzIGVuYWJsZWQuIEkgc2hvdWxkIGFkZCBgTkVUX0NMU2AsIGBORVRfQ0xTX0FDVGAsIGBORl9UQUJMRVNgLCBhbmQgYE5GX0ZMT1dfVEFCTEVgIHRvIHRoZSBjb25maWd1cmF0aW9uLgoKV2FpdCBhIHNlY29uZCwgYSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYCAqcmVxdWlyZXMqIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLiBUaGF0JiMzOTtzIGNydWNpYWwuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkLiBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHNldHRpbmcgdXAgdGhlIG9mZmxvYWQgZm9yIGEgcGFydGljdWxhciBibG9jayBvZiBmdW5jdGlvbmFsaXR5LCBhcyBzZWVuIGluIGB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWRgLCBzbyBJIG5lZWQgdG8gZmFjdG9yIHRoYXQgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9ibG9ja19vZmZsb2FkX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYz04MTg9c3RhdGljIGJvb2wgdGNmX2Jsb2NrX29mZmxvYWRfaW5fdXNlKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtODIyLVxubmV0L3NjaGVkL2Nsc19hcGkuYzo4MjM6c3RhdGljIGludCB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTgyNC1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTg1NT1zdGF0aWMgaW50IHRjZl9ibG9ja19vZmZsb2FkX2JpbmQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTg3NC1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6ODc1Olx0ZXJyID0gdGNmX2Jsb2NrX29mZmxvYWRfY21kKGJsb2NrLCBkZXYsIHEsIGVpLCBGTE9XX0JMT0NLX0JJTkQsIGV4dGFjayk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTg3Ni1cdGlmIChlcnIgPT0gLUVPUE5PVFNVUFApXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz04OTU9c3RhdGljIHZvaWQgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy05MDEtXHRkb3duX3dyaXRlKFx1MDAyNmJsb2NrLVx1MDAzZWNiX2xvY2spO1xubmV0L3NjaGVkL2Nsc19hcGkuYzo5MDI6XHRlcnIgPSB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWQoYmxvY2ssIGRldiwgcSwgZWksIEZMT1dfQkxPQ0tfVU5CSU5ELCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtOTAzLVx0aWYgKGVyciA9PSAtRU9QTk9UU1VQUClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg4MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQ6CgoqKkFuYWx5emluZyBgdGNmX2Jsb2NrX29mZmxvYWRfYmluZGAqKgoKUmlnaHQsIHNvIGB0Y2ZfYmxvY2tfb2ZmbG9hZF9iaW5kYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBnZXRzIGludm9rZWQgd2hlbmV2ZXIgYSBibG9jayBpcyBhc3NvY2lhdGVkIHdpdGggYSBkZXZpY2UuIFRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgY29yZSBwcm9jZXNzIG9mIGFjdHVhbGx5IGhvb2tpbmcgYSBibG9jayB1cCwgYW5kIHRoZSBpbXBvcnRhbnQgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhpcyBpcyBoYXBwZW5pbmcgKmR1cmluZyogdGhlIGNvbmZpZ3VyYXRpb24gcGhhc2UuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdHJpZ2dlcmVkIHdoZW4gd2UmIzM5O3JlIHNldHRpbmcgdXAgYSBxdWV1aW5nIGRpc2NpcGxpbmUgKHFkaXNjKSBvciBhIHRyYWZmaWMgZmlsdGVyLiBJdCYjMzk7cyB0aGUgY2VudHJhbCBwb2ludCBmb3IgZGV2aWNlIGJpbmRpbmcsIHNvIHRoZSBiZWhhdmlvciBvZiB0aGlzIGlzIGtleSB0byBwZXJmb3JtYW5jZSBhbmQgb2ZmbG9hZC4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgdGNmX2Jsb2NrX29mZmxvYWRfYmluZGAgYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyB0YWtpbmcgcGxhY2UgdG8gdHJ1bHkgZGV0ZXJtaW5lIGl0cyBwdXJwb3NlIGluIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0cmFmZmljIGNvbnRyb2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9ibG9ja19vZmZsb2FkX2JpbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9ODIzPXN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfY21kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtODU0LVxubmV0L3NjaGVkL2Nsc19hcGkuYzo4NTU6c3RhdGljIGludCB0Y2ZfYmxvY2tfb2ZmbG9hZF9iaW5kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTg1Ni1cdFx0XHRcdCAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNDY0PWludCB0Y2ZfYmxvY2tfZ2V0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICoqcF9ibG9jaywgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTQ5Ny1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTQ5ODpcdGVyciA9IHRjZl9ibG9ja19vZmZsb2FkX2JpbmQoYmxvY2ssIHEsIGVpLCBleHRhY2spO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xNDk5LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQyNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJsb2NrIE9mZmxvYWQgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYmxvY2sgb2ZmbG9hZCBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBmaXggdGhhdCB3YXMgaW1wbGVtZW50ZWQuIEl0IHNlZW1zIGB0Y2ZfYmxvY2tfZ2V0X2V4dGAgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYmxvY2sgY3JlYXRpb24sIG1lYW5pbmcgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggc3RhbmRhcmQgVEMgbmV0bGluayBjb21tYW5kcy4gVGhhdCBtYWtlcyBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYCBhIGNsZWFyIGNhbmRpZGF0ZSBmb3IgdGVzdGluZywgYXMgd2VsbC4KClRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBpcyB0aGlzOiBUaGUgcGF0Y2ggYXR0ZW1wdHMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCBmYWlsdXJlIGluIGBpbmRpcl9kZXZfYWRkYCwgYnV0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXNuJiMzOTt0IGhhbmRsZSB0aGUgZXJyb3IgcHJvcGVybHksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gbGVha3MgaWYgYGJvLSZndDtjYl9saXN0YCBpcyBlbXB0eS4gUmlnaHQsIEkgc2VlIGl0IG5vdy4gYGluZGlyX2Rldl9hZGRgICpjYW4qIHJldHVybiBhbiBlcnJvciwgYW5kIHRoZSBjb2RlIGNhcHR1cmVzIHRoYXQgaW4gYHJlcGxheV9hZGRlZCA9IGFkZF9lcnIgPT0gMGAuIE5vdywgaWYgYHJlcGxheV9hZGRlZGAgaXMgKnRydWUqIChtZWFuaW5nIHRoZSBhZGRpdGlvbiBzdWNjZWVkZWQpIGFuZCBpZiB0aGUgY2FsbGJhY2sgbGlzdCBgYm8tJmd0O2NiX2xpc3RgIGlzIGVtcHR5LCB0aGVuIHRoZSBjb2RlIGNhbGxzIGBpbmRpcl9kZXZfcmVtb3ZlKGRhdGEpYCBhbmQgcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBFZmZlY3RpdmVseSwgdGhpcyBwYXRjaCBwcmV2ZW50cyB0aGUgaW5kaXJlY3QgZGV2aWNlIHJlZ2lzdHJhdGlvbiBsZWFrIGlmIG5vIGNhbGxiYWNrcyBhcmUgYWRkZWQgdG8gdGhlIG9mZmxvYWQgbGlzdC4gUHJldHR5IGNsZXZlciwgSSBzdXBwb3NlLiBJdCYjMzk7cyBhIHByYWdtYXRpYyB3b3JrYXJvdW5kLgoKR2l2ZW4gdGhpcywgSSBzaG91bGQgZm9jdXMgb24gYSBmZXcga2V5IHN5bWJvbHM6IGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIGlzIGRlZmluaXRlbHkgdGhlIHRhcmdldCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBtb2RpZmllZCBmdW5jdGlvbi4gQWxzbywgYHRjZl9ibG9ja19vZmZsb2FkX2JpbmRgIGFuZCBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYCBhcmUgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIG9mZmxvYWQgbGlmZWN5Y2xlLCBzbyB0aG9zZSBhcmUgZ29vZCBmb2N1cyBwb2ludHMuCgpJJiMzOTtsbCBjaGVjayBgbmV0L2NvcmUvZmxvd19vZmZsb2FkLmNgIGZvciBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYCB0byBnZXQgYSBiZXR0ZXIgZmVlbCBmb3IgdGhlIGNvbnRleHQuIFRoaXMgc2hvdWxkIGhlbHAgbWUgYmV0dGVyIHVuZGVyc3RhbmQgaG93IHRoaXMgZml4IGludGVncmF0ZXMgd2l0aCB0aGUgZXhpc3RpbmcgZmxvdyBvZmZsb2FkIG1lY2hhbmlzbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmxvd19vZmZsb2FkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmxvd19vZmZsb2FkLmM9NTg5PXN0YXRpYyBpbnQgaW5kaXJfZGV2X3JlbW92ZSh2b2lkICpkYXRhKVxuLS1cbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTYwMi1cbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jOjYwMzppbnQgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXHRzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTYwNC1cdFx0XHRcdGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICpkYXRhLFxuLS1cbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTY0Mi19XG5uZXQvY29yZS9mbG93X29mZmxvYWQuYzo2NDM6RVhQT1JUX1NZTUJPTChmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQpO1xubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjQ0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDQ2CgkJCQkJCQlvdXRwdXQ6IDIxMQoJCQkJCQkJdGhvdWdodHM6IDU5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgTmV0d29ya2luZyBGbG93IE9mZmxvYWQgQnVnKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcG90ZW50aWFsIGxlYWsgaW4gYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAuIEkmIzM5O20gY2hlY2tpbmcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgTkVUX0NMU2AsIGBORVRfQ0xTX0FDVGAsIGBORl9UQUJMRVNgLCBhbmQgYE5GX0ZMT1dfVEFCTEVgLiBJJiMzOTttIHByZXR0eSBzdXJlIEkgaGF2ZSB0aGUgY29uZmlnIG5hbWVzIGNvcnJlY3QsIGJ1dCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRob3NlIGFyZSB0aGUgY29ycmVjdCBuYW1lcywgYENPTkZJR19ORVRfQ0xTYCBmb3IgdHJhZmZpYyBjb250cm9sIGNsYXNzaWZpZXIsIGBDT05GSUdfTkVUX0NMU19BQ1RgIGZvciB0cmFmZmljIGNvbnRyb2wgYWN0aW9ucywgYENPTkZJR19ORl9UQUJMRVNgIGZvciBOZXRmaWx0ZXIgbmZfdGFibGVzLCBhbmQgYENPTkZJR19ORl9GTE9XX1RBQkxFYCBmb3IgdGhlIE5ldGZpbHRlciBmbG93IHRhYmxlLgoKVGhlIG1haW4gcXVlc3Rpb24gaXMgd2hldGhlciBgTkVUX0NMU2AgaXMgc3VmZmljaWVudCBvbiBpdHMgb3duLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBlbmFibGluZyBgY2xzX2FwaS5vYCB3aGljaCBzZWVtcyByaWdodC4gVGhlIG90aGVycyBlbmFibGUgdGhlaXIgY29ycmVzcG9uZGluZyBtb2R1bGVzLiBOb3csIGlzIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHJlYWNoYWJsZSBldmVuIHdpdGhvdXQgaGFyZHdhcmUgb2ZmbG9hZD8gWWVzLCBpdCYjMzk7cyB1bmNvbmRpdGlvbmFsbHkgY2FsbGVkLCB3aGljaCBpcyBpbXBvcnRhbnQuIEl0IHNldHMgdXAgYm90aCBUQyBibG9ja3MgYW5kIE5ldGZpbHRlciBmbG93IHRhYmxlcy4gRXZlbiBpZiB0aGUgZGV2aWNlICpkb2VzbiYjMzk7dCogc3VwcG9ydCBvZmZsb2FkLCBpdCYjMzk7bGwgcnVuLCBhbmQganVzdCByZXR1cm4gYC1FT1BOT1RTVVBQYC4gVGhhdCYjMzk7cyB0aGUga2V5LgoKU28sIGBpbmRpcl9kZXZfYWRkYCBhZGRzIHRoZSBkZXZpY2UgdG8gYGZsb3dfYmxvY2tfaW5kcl9kZXZfbGlzdGAuIFRoZSBmdW5jdGlvbiB0aGVuIGl0ZXJhdGVzIHRocm91Z2ggdGhhdCBsaXN0LCBjYWxsaW5nIGB0aGlzLSZndDtjYmAuIElmIGBsaXN0X2VtcHR5KCZhbXA7Ym8tJmd0O2NiX2xpc3QpYCBhZnRlciB0aGF0LCBtZWFuaW5nIG5vIGNhbGxiYWNrcyB3ZXJlIHJlZ2lzdGVyZWQsIHRoZW4gYGluZGlyX2Rldl9yZW1vdmVgIHNob3VsZCBiZSBjYWxsZWQsIGFuZCBpdCByZXR1cm5zIGAtRU9QTk9UU1VQUGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHByb2JsZW0gbGllcywgaXQgd2FzbiYjMzk7dC4KCkFscmlnaHQsIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCBpcyBmaXhpbmcgYSBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgLiBXaGVuIGFuIGluZGlyZWN0IGRldmljZSBpcyBhZGRlZCBidXQgbm8gY2FsbGJhY2tzIGFyZSByZWdpc3RlcmVkLCBpdCBub3cgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbi4gVGhpcyBpcyBjcnVjaWFsIG5ldHdvcmtpbmcgbG9naWMsIGRlYWxpbmcgd2l0aCBmbG93IG9mZmxvYWQsIHVzZWQgYnkgYm90aCBUQyBhbmQgTmV0ZmlsdGVyIGFuZCByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29uZmlndXJhdGlvbi4KCkkgc2hvdWxkIGFsc28gbm90ZSB0aGUga2V5IHN5bWJvbHMgaGVyZTogYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAsIGB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWRgLCBgbmZ0X2luZHJfYmxvY2tfb2ZmbG9hZF9jbWRgLCBhbmQgYG5mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZGAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBvZmZsb2FkIGNvbW1hbmRzIGFyZSBwYXNzZWQgZG93bi4KCk9rYXksIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgaGFuZGxlIG9uIHRoaXMuIEkmIzM5O2xsIHN1bW1hcml6ZSBteSBmaW5kaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQmIzM0OywKICAgICYjMzQ7dGNmX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQmIzM0OywKICAgICYjMzQ7dGNmX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMTowMi4yMjg3NzY4NThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTYyNTY1MTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQ0xTXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORl9GTE9XX1RBQkxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkXCIsXG4gICAgXCJ0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWRcIixcbiAgICBcIm5mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kXCIsXG4gICAgXCJuZl9mbG93X3RhYmxlX2luZHJfb2ZmbG9hZF9jbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjAyLjIyODc4MTYzOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1MDM1OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDRhYmJhZGM0YTE0NWQzNzVlY2NiM2JkODMwNWIwYTg1MDhlODY5YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxOCAwMDoxMTowMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9mbG93X29mZmxvYWQuYyBiL25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jXFxuaW5kZXggNTA3MWQ3ZmU2Y2UyYTUuLjVmYmIxYWU0Njc5ZGRlIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jXFxuKysrIGIvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmNcXG5AQCAtNjA2LDE1ICs2MDYsMjAgQEAgaW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcdHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRcXHRcXHR2b2lkICgqY2xlYW51cCkoc3RydWN0IGZsb3dfYmxvY2tfY2IgKmJsb2NrX2NiKSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZmxvd19pbmRyX2RldiAqdGhpcztcXG4rXFx0Ym9vbCByZXBsYXlfYWRkZWQgPSBmYWxzZTtcXG4gXFx0dTMyIGNvdW50ID0gMDtcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmZsb3dfaW5kcl9ibG9ja19sb2NrKTtcXG4gXFx0aWYgKGJvKSB7XFxuLVxcdFxcdGlmIChiby1cXHUwMDNlY29tbWFuZCA9PSBGTE9XX0JMT0NLX0JJTkQpXFxuLVxcdFxcdFxcdGluZGlyX2Rldl9hZGQoZGF0YSwgZGV2LCBzY2gsIHR5cGUsIGNsZWFudXAsIGJvKTtcXG4tXFx0XFx0ZWxzZSBpZiAoYm8tXFx1MDAzZWNvbW1hbmQgPT0gRkxPV19CTE9DS19VTkJJTkQpXFxuK1xcdFxcdGlmIChiby1cXHUwMDNlY29tbWFuZCA9PSBGTE9XX0JMT0NLX0JJTkQpIHtcXG4rXFx0XFx0XFx0aW50IGFkZF9lcnI7XFxuK1xcbitcXHRcXHRcXHRhZGRfZXJyID0gaW5kaXJfZGV2X2FkZChkYXRhLCBkZXYsIHNjaCwgdHlwZSwgY2xlYW51cCwgYm8pO1xcbitcXHRcXHRcXHRyZXBsYXlfYWRkZWQgPSBhZGRfZXJyID09IDA7XFxuK1xcdFxcdH0gZWxzZSBpZiAoYm8tXFx1MDAzZWNvbW1hbmQgPT0gRkxPV19CTE9DS19VTkJJTkQpIHtcXG4gXFx0XFx0XFx0aW5kaXJfZGV2X3JlbW92ZShkYXRhKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRoaXMsIFxcdTAwMjZmbG93X2Jsb2NrX2luZHJfZGV2X2xpc3QsIGxpc3QpIHtcXG5AQCAtNjIzLDkgKzYyOCwxNyBAQCBpbnQgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFx0c3RydWN0IFFkaXNjICpzY2gsXFxuIFxcdFxcdFxcdGNvdW50Kys7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChibyBcXHUwMDI2XFx1MDAyNiBsaXN0X2VtcHR5KFxcdTAwMjZiby1cXHUwMDNlY2JfbGlzdCkpIHtcXG4rXFx0XFx0aWYgKHJlcGxheV9hZGRlZClcXG4rXFx0XFx0XFx0aW5kaXJfZGV2X3JlbW92ZShkYXRhKTtcXG4rXFx0XFx0ZXJyID0gLUVPUE5PVFNVUFA7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGVyciA9IGNvdW50O1xcbitcXHR9XFxuK1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmZsb3dfaW5kcl9ibG9ja19sb2NrKTtcXG4gXFxuLVxcdHJldHVybiAoYm8gXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2Ym8tXFx1MDAzZWNiX2xpc3QpKSA/IC1FT1BOT1RTVVBQIDogY291bnQ7XFxuK1xcdHJldHVybiBlcnI7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MDIuNjQ0NDc5OTI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTIwOTkzMjI1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQ0xTXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORl9GTE9XX1RBQkxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkXCIsXG4gICAgXCJ0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWRcIixcbiAgICBcIm5mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kXCIsXG4gICAgXCJuZl9mbG93X3RhYmxlX2luZHJfb2ZmbG9hZF9jbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDRhYmJhZGM0YTE0NWQzNzVlY2NiM2JkODMwNWIwYTg1MDhlODY5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDE4IDAwOjExOjAxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmMgYi9uZXQvY29yZS9mbG93X29mZmxvYWQuY1xuaW5kZXggNTA3MWQ3ZmU2Y2UyYTUuLjVmYmIxYWU0Njc5ZGRlIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmNcbisrKyBiL25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jXG5AQCAtNjA2LDE1ICs2MDYsMjAgQEAgaW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFx0c3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0XHR2b2lkICgqY2xlYW51cCkoc3RydWN0IGZsb3dfYmxvY2tfY2IgKmJsb2NrX2NiKSlcbiB7XG4gXHRzdHJ1Y3QgZmxvd19pbmRyX2RldiAqdGhpcztcbitcdGJvb2wgcmVwbGF5X2FkZGVkID0gZmFsc2U7XG4gXHR1MzIgY291bnQgPSAwO1xuIFx0aW50IGVycjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2Zmxvd19pbmRyX2Jsb2NrX2xvY2spO1xuIFx0aWYgKGJvKSB7XG4tXHRcdGlmIChiby1cdTAwM2Vjb21tYW5kID09IEZMT1dfQkxPQ0tfQklORClcbi1cdFx0XHRpbmRpcl9kZXZfYWRkKGRhdGEsIGRldiwgc2NoLCB0eXBlLCBjbGVhbnVwLCBibyk7XG4tXHRcdGVsc2UgaWYgKGJvLVx1MDAzZWNvbW1hbmQgPT0gRkxPV19CTE9DS19VTkJJTkQpXG4rXHRcdGlmIChiby1cdTAwM2Vjb21tYW5kID09IEZMT1dfQkxPQ0tfQklORCkge1xuK1x0XHRcdGludCBhZGRfZXJyO1xuK1xuK1x0XHRcdGFkZF9lcnIgPSBpbmRpcl9kZXZfYWRkKGRhdGEsIGRldiwgc2NoLCB0eXBlLCBjbGVhbnVwLCBibyk7XG4rXHRcdFx0cmVwbGF5X2FkZGVkID0gYWRkX2VyciA9PSAwO1xuK1x0XHR9IGVsc2UgaWYgKGJvLVx1MDAzZWNvbW1hbmQgPT0gRkxPV19CTE9DS19VTkJJTkQpIHtcbiBcdFx0XHRpbmRpcl9kZXZfcmVtb3ZlKGRhdGEpO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRoaXMsIFx1MDAyNmZsb3dfYmxvY2tfaW5kcl9kZXZfbGlzdCwgbGlzdCkge1xuQEAgLTYyMyw5ICs2MjgsMTcgQEAgaW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFx0c3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0Y291bnQrKztcbiBcdH1cbiBcbitcdGlmIChibyBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZiby1cdTAwM2VjYl9saXN0KSkge1xuK1x0XHRpZiAocmVwbGF5X2FkZGVkKVxuK1x0XHRcdGluZGlyX2Rldl9yZW1vdmUoZGF0YSk7XG4rXHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuK1x0fSBlbHNlIHtcbitcdFx0ZXJyID0gY291bnQ7XG4rXHR9XG4rXG4gXHRtdXRleF91bmxvY2soXHUwMDI2Zmxvd19pbmRyX2Jsb2NrX2xvY2spO1xuIFxuLVx0cmV0dXJuIChibyBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZiby1cdTAwM2VjYl9saXN0KSkgPyAtRU9QTk9UU1VQUCA6IGNvdW50O1xuK1x0cmV0dXJuIGVycjtcbiB9XG4gRVhQT1JUX1NZTUJPTChmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MDIuNjQ0NDgxMDc5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg1MTk2OTI2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIEZsb3cgT2ZmbG9hZCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgd2l0aGluIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AuIEl0J3MgZm9jdXNlZCBvbiBoYW5kbGluZyBpbmRpcmVjdCBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgdGhlIGxvZ2ljIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIHRoZW0gZHVyaW5nIG9mZmxvYWQgb3BlcmF0aW9ucy4gSXQgc2VlbXMgbGlrZSBpdCdzIGFkZHJlc3NpbmcgYW4gaXNzdWUgd2hlcmUgdGhlIGNhbGxiYWNrIGxpc3QgKGBiby1cdTAwM2VjYl9saXN0YCkgbWlnaHQgYmUgZW1wdHkgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHJlc291cmNlIGxlYWsgb3IgaW5jb25zaXN0ZW50IHN0YXRlLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgYEZMT1dfQkxPQ0tfQklORGAgY29tbWFuZC4gSWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgd2hlbiBhIGJpbmRpbmcgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCwgdGhlIGNvZGUgbm93IGNhcHR1cmVzIHRoZSByZXR1cm4gdmFsdWUgb2YgYGluZGlyX2Rldl9hZGRgIGFuZCBzZXRzIGEgZmxhZywgYHJlcGxheV9hZGRlZGAsIGJhc2VkIG9uIHdoZXRoZXIgdGhhdCBhZGRpdGlvbiB3YXMgc3VjY2Vzc2Z1bC4gTGF0ZXIsIGEgY2hlY2sgaXMgcGVyZm9ybWVkOiBpZiB3ZSBoYXZlIGEgYGJvYCBhbmQgdGhlIGNhbGxiYWNrIGxpc3QgaXMgZW1wdHksIGFuZCBpZiBgcmVwbGF5X2FkZGVkYCBpcyB0cnVlLCBpdCBjYWxscyBgaW5kaXJfZGV2X3JlbW92ZShkYXRhKWAuIFRoZSBmdW5jdGlvbiB0aGVuIHJldHVybnMgYC1FT1BOT1RTVVBQYC4gVGhpcyBzZWVtcyB0byBiZSB0aGUgY3J1Y2lhbCBwYXJ0IG9mIHRoZSBmaXguIEkgYmVsaWV2ZSB0aGlzIHBhcnQgaXMgYW4gYXR0ZW1wdCB0byBjbGVhbiB1cCBhbnkgcGFydGlhbGx5IGFkZGVkIGluZGlyZWN0IGRldmljZXMgd2hlbiB0aGUgYmluZGluZyBmYWlscyBpbiBzb21lIHdheS5cblxuQmFzaWNhbGx5LCBpdCdzIGEgc2FmZXR5IG5ldC4gSWYgYSBiaW5kaW5nIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQsIGFuZCB0aGUgYmluZGluZyBlbmRzIHVwIHdpdGggYW4gZW1wdHkgY2FsbGJhY2sgbGlzdCwgaXQgcmVtb3ZlcyB0aGUgbmV3bHkgYWRkZWQgaW5kaXJlY3QgZGV2aWNlIGlmIHRoZSBhZGRpdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgYW5kIHRoZW4gcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIGxlYWsgb3IgYW4gaW5jb3JyZWN0IHN0YXRlIHdoZXJlIHRoZSBpbmRpcmVjdCBkZXZpY2UgaXMgYWRkZWQgYnV0IG5vdCBwcm9wZXJseSB0cmFja2VkLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIHJlYXNvbmFibGUgY2hhbmdlIHRvIGltcHJvdmUgcmVsaWFiaWxpdHkgd2l0aGluIHRoZSBmbG93IG9mZmxvYWQgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjIyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MDcuNDk2NDUyNjQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjQ3NzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9mbG93X29mZmxvYWQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9mbG93X29mZmxvYWQuYz01ODk9c3RhdGljIGludCBpbmRpcl9kZXZfcmVtb3ZlKHZvaWQgKmRhdGEpXFxuLS1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDItXFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmM6NjAzOmludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXHRzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDQtXFx0XFx0XFx0XFx0ZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKmRhdGEsXFxuLS1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02NDItfVxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jOjY0MzpFWFBPUlRfU1lNQk9MKGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZCk7XFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjQ0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMTowNy41NTYxMDY0ODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkzNDg2MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgS2VybmVsIEZsb3cgT2ZmbG9hZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGZvciB0aGlzIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AgbW9kdWxlLiBNeSBmaXJzdCB0aG91Z2h0IHdhcyB0byBqdXN0IGxvb2sgZm9yIGBDT05GSUdfTkVUX0ZMT1dfTElNSVRgIHdoaWNoIHNlZW1zIGxvZ2ljYWwuIEhvd2V2ZXIsIEkgd2FudCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgY2hlY2sgdGhlIGBuZXQvY29yZS9NYWtlZmlsZWAgaW5zdGVhZC4gSXQncyB0aGUgTWFrZWZpbGUgdGhhdCB1bHRpbWF0ZWx5IGRpY3RhdGVzIHRoZSBjb21waWxhdGlvbiBhbmQgaW5jbHVzaW9uIG9mIHRoZSBzb3VyY2UgZmlsZSwgc28gdGhhdCdzIHdoZXJlIHRoZSBhY3R1YWwgZGVwZW5kZW5jaWVzIHdpbGwgYmUgZGVmaW5lZC4gSSdsbCBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGFjdHVhbCBjb25maWd1cmF0aW9uIGNvbmRpdGlvbnMgdGhlcmUsIGluc3RlYWQgb2YgcmVseWluZyBvbiBhbiBhc3N1bWVkIGRlcGVuZGVuY3kgdGhhdCBtaWdodCBiZSBtaXN0YWtlbi4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBNYWtlZmlsZSBoYXMgdG8gc2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDIyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MTAuMzQ5NTk0NDRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY5NDk1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmxvd19vZmZsb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTEyPW9iai15XFx0XFx0ICAgICArPSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXFxcXG4tLVxcbm5ldC9jb3JlL01ha2VmaWxlLTE0LVxcdFxcdFxcdHNvY2tfZGlhZy5vIGRldl9pb2N0bC5vIHRzby5vIHNvY2tfcmV1c2Vwb3J0Lm8gXFxcXFxcbm5ldC9jb3JlL01ha2VmaWxlOjE1OlxcdFxcdFxcdGZpYl9ub3RpZmllci5vIHhkcC5vIGZsb3dfb2ZmbG9hZC5vIGdyby5vIFxcXFxcXG5uZXQvY29yZS9NYWtlZmlsZS0xNi1cXHRcXHRcXHRuZXRkZXYtZ2VubC5vIG5ldGRldi1nZW5sLWdlbi5vIG5ldGRldl93b3JrLm8gZ3NvLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MTAuNDA2NTU2NzM5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3MjY3OTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyBGbG93IE9mZmxvYWQgQ29tcGlsYXRpb24gYW5kIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBidWlsZCBzeXN0ZW0gaXMgY29tcGlsaW5nIGBvYmoteWAgdW5jb25kaXRpb25hbGx5LCBpbnRlcmVzdGluZy4gQW5kLCBvZiBjb3Vyc2UsIGBmbG93X29mZmxvYWQub2AgaXMgcHVsbGVkIGluIHZpYSBgb2JqLXlgLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgaG9sZCBvbiBhIG1pbnV0ZSwgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgaGVyZSwgc28gSSdsbCBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgZ292ZXJuaW5nIGZsb3cgb2ZmbG9hZC4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gSSdtIHRyeWluZyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWdzIGZvciB0aGUgZmxvdyBvZmZsb2FkIGZlYXR1cmVzLiBBaCwgaGVyZSdzIHRoZSBob29rIC0gYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgaXMgdXNlZCwgd2hpY2ggbWVhbnMgaXQgaXMgdGllZCB0byBUcmFmZmljIENvbnRyb2wgKFRDKSBhbmQgYWxzbyB0aGUgdmFyaW91cyBkcml2ZXJzLiBPa2F5LCB0aGF0IGNvbmZpcm1zIGl0cyBicm9hZGVyIGltcGFjdC4gVGhpcyBsaWtlbHkgaW5mb3JtcyB0aGUgY29uZmlndXJhdGlvbiBzdHJhdGVneSB0byBhY3RpdmF0ZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIE5vdyBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdCBiZWluZyBjb21waWxlZCBpbiB3aXRoIGBvYmoteWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMToxMy41NzkyMzgyNDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwMjYzMjAzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oPTczOT12b2lkIGZsb3dfaW5kcl9kZXZfdW5yZWdpc3RlcihmbG93X2luZHJfYmxvY2tfYmluZF9jYl90ICpjYiwgdm9pZCAqY2JfcHJpdixcXG5pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaC03NDAtXFx0XFx0XFx0ICAgICAgdm9pZCAoKnJlbGVhc2UpKHZvaWQgKmNiX3ByaXYpKTtcXG5pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaDo3NDE6aW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaC03NDItXFx0XFx0XFx0XFx0ZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKmRhdGEsXFxuLS1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYz01ODk9c3RhdGljIGludCBpbmRpcl9kZXZfcmVtb3ZlKHZvaWQgKmRhdGEpXFxuLS1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDItXFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmM6NjAzOmludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXHRzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDQtXFx0XFx0XFx0XFx0ZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKmRhdGEsXFxuLS1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02NDItfVxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jOjY0MzpFWFBPUlRfU1lNQk9MKGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZCk7XFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjQ0LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz0xMjM4PXN0YXRpYyBpbnQgbmZfZmxvd190YWJsZV9pbmRyX29mZmxvYWRfY21kKHN0cnVjdCBmbG93X2Jsb2NrX29mZmxvYWQgKmJvLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0xMjQ2LVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6MTI0NzpcXHRyZXR1cm4gZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKGRldiwgTlVMTCwgVENfU0VUVVBfRlQsIGZsb3d0YWJsZSwgYm8sXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0xMjQ4LVxcdFxcdFxcdFxcdFxcdCAgIG5mX2Zsb3dfdGFibGVfaW5kcl9jbGVhbnVwKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX29mZmxvYWQuYz00MjM9c3RhdGljIGludCBuZnRfaW5kcl9ibG9ja19vZmZsb2FkX2NtZChzdHJ1Y3QgbmZ0X2Jhc2VfY2hhaW4gKmJhc2VjaGFpbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX29mZmxvYWQuYy00MzItXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfb2ZmbG9hZC5jOjQzMzpcXHRlcnIgPSBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoZGV2LCBOVUxMLCBUQ19TRVRVUF9CTE9DSywgYmFzZWNoYWluLCBcXHUwMDI2Ym8sXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfb2ZmbG9hZC5jLTQzNC1cXHRcXHRcXHRcXHRcXHQgIG5mdF9pbmRyX2Jsb2NrX2NsZWFudXApO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYz0yMDM9c3RhdGljIGludCB0Y2ZfYWN0aW9uX29mZmxvYWRfY21kX2V4KHN0cnVjdCBmbG93X29mZmxvYWRfYWN0aW9uICpmbF9hY3QsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIwNy1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjIwODpcXHRlcnIgPSBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoTlVMTCwgTlVMTCwgVENfU0VUVVBfQUNULFxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMjA5LVxcdFxcdFxcdFxcdFxcdCAgZmxfYWN0LCBOVUxMLCBOVUxMKTtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9ODIzPXN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfY21kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy04NDctXFxubmV0L3NjaGVkL2Nsc19hcGkuYzo4NDg6XFx0Zmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKGRldiwgc2NoLCBUQ19TRVRVUF9CTE9DSywgYmxvY2ssIFxcdTAwMjZibyxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTg0OS1cXHRcXHRcXHRcXHQgICAgdGNfYmxvY2tfaW5kcl9jbGVhbnVwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MTUuNzgxODc1NTcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMzc0Nzg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGlzIGNvZGUgc25pcHBldCBpcyB1c2VkIGFjcm9zcyBhIGZldyBrZXkgYXJlYXMgd2l0aGluIHRoZSBrZXJuZWwncyBuZXR3b3JraW5nIHN0YWNrOiBgbmZfZmxvd190YWJsZV9vZmZsb2FkLmNgLCBgbmZfdGFibGVzX29mZmxvYWQuY2AsIGBhY3RfYXBpLmNgLCBhbmQgYGNsc19hcGkuY2AuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgYSBmZXcgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCB3aWxsIGxpa2VseSBpbmZsdWVuY2UgaG93IHRoaXMgaXMgdXNlZCBvciBldmVuIGVuYWJsZWQuIEknbSB6ZXJvaW5nIGluIG9uIGBDT05GSUdfTkVUX0NMU19BQ1RgLCBgQ09ORklHX05FVF9TQ0hFRGAsIGBDT05GSUdfTkZfVEFCTEVTYCwgYW5kIGBDT05GSUdfTkZfRkxPV19UQUJMRWAgYXMgdGhlIGxpa2VseSBjYW5kaWRhdGVzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHRoaW5rIGEgZGVlcGVyIGRpdmUgaW50byBgbmV0L3NjaGVkL2Nsc19hcGkuY2AgYW5kIGBuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jYCBpcyB0aGUgYmVzdCBzdGFydGluZyBwb2ludCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MTkuMTk1NjI1NDQ2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzYzMDE1OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfZmxvd190YWJsZV9vZmZsb2FkLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcXHRcXHQ6PSBuZl9mbG93X3RhYmxlX2NvcmUubyBuZl9mbG93X3RhYmxlX2lwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ0LVxcdFxcdFxcdFxcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NTpcXHRcXHRcXHRcXHQgICBuZl9mbG93X3RhYmxlX29mZmxvYWQubyBuZl9mbG93X3RhYmxlX3hkcC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDYtbmZfZmxvd190YWJsZS0kKENPTkZJR19ORl9GTE9XX1RBQkxFX1BST0NGUykgKz0gbmZfZmxvd190YWJsZV9wcm9jZnMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMToxOS41MzE5MzY5NDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY3NTUwMzA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKk5hdmlnYXRpbmcgS2VybmVsIE9mZmxvYWQgU3RydWN0dXJlcyoqXG5cbk9rYXksIHNvIGBDT05GSUdfTkZfRkxPV19UQUJMRWAgaXMgdGhlIGtleSBoZXJlLiBSaWdodCwgdGhhdCBtZWFucyB0aGUgYG5mX2Zsb3dfdGFibGUub2AgbW9kdWxlIGdldHMgYnVpbHQuIEFuZCwgaWYgSSdtIHJlbWVtYmVyaW5nIGNvcnJlY3RseSwgdGhhdCBhbHNvIHB1bGxzIGluIGBuZl9mbG93X3RhYmxlX29mZmxvYWQub2AuIE5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBOZXRmaWx0ZXIgb2ZmbG9hZCBmcmFtZXdvcmssIGFuZCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgYG5mX3RhYmxlc19vZmZsb2FkLm9gIG1vZHVsZSBhbHNvIGhhcyBzb21lIGRlcGVuZGVuY2llcyBoZXJlLiBMZXQncyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGEgY3JpdGljYWwgZGV0YWlsIGFib3V0IHRoZSBpbnRlcmNvbm5lY3Rpb25zLiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGUgb2ZmbG9hZGluZyBkZXBlbmRlbmNpZXMgYXJlIGFsbCBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEzNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjIyLjIwNzQ0MjIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTExNjAyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl90YWJsZXNfb2ZmbG9hZC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT04Nz1uZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcXFxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05MS1cXHRcXHQgIG5mdF9jb3VudGVyLm8gbmZ0X29ianJlZi5vIG5mdF9pbm5lci5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjkyOlxcdFxcdCAgbmZ0X2NoYWluX3JvdXRlLm8gbmZfdGFibGVzX29mZmxvYWQubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05My1cXHRcXHQgIG5mdF9zZXRfaGFzaC5vIG5mdF9zZXRfYml0bWFwLm8gbmZ0X3NldF9yYnRyZWUubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjIyLjI2NjU2MzgyOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzA4NDkzNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBhbmQgVHJhZmZpYyBDb250cm9sIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIGBDT05GSUdfTkZfVEFCTEVTYCBhY3RpdmF0ZXMgYG5mX3RhYmxlcy5vYC4gSSBrbm93IHRoYXQgbWVhbnMgYG5mX3RhYmxlc19vZmZsb2FkLm9gIGdldHMgcHVsbGVkIGluIHRvbywgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBvZmZsb2FkaW5nIE5ldGZpbHRlciBydWxlcy5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBtaWdodCBpbnRlcmFjdCB3aXRoIHRyYWZmaWMgY29udHJvbCwgb3IgYHRjYC4gSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgbmV0L3NjaGVkL01ha2VmaWxlYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBpbnRlcmVzdGVkIGluIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBjbHNfYXBpLm9gIGFuZCBgYWN0X2FwaS5vYC4gVGhlc2UgYXJlIGNlbnRyYWwgdG8gY2xhc3NpZmljYXRpb24gYW5kIGFjdGlvbnMgcmVzcGVjdGl2ZWx5LCB3aGljaCBpcyB3aGVyZSBOZXRmaWx0ZXIgY2FuLCBhbmQgb2Z0ZW4gZG9lcywgaW50ZXJzZWN0IHdpdGggdHJhZmZpYyBjb250cm9sIG9uIGEgc3lzdGVtLiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgbW9kdWxlcyBwbGF5IG5pY2VseSB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUzOSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjI0Ljk3NTA1OTI1OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkwNTA2NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2xzX2FwaS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkVUX1NDSEVEKVxcdFxcdCs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05FVF9DTFMpXFx0XFx0Kz0gY2xzX2FwaS5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcXHQrPSBhY3RfYXBpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MjUuMDM0MTE1OTE4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzI0MDY2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMgZm9yIE5ldHdvcmsgT2ZmbG9hZCoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiBuZXR3b3JrIG9mZmxvYWQgY29uZmlndXJhdGlvbiBoZXJlLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfTkVUX0NMU2AgYW5kIGBDT05GSUdfTkVUX0NMU19BQ1RgIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LCBnaXZlbiB0aGUgdGFzayBhdCBoYW5kLiBJbml0aWFsbHksIEkgdGhvdWdodCB0aGF0IGBDT05GSUdfTkVUX1NDSEVEYCBtaWdodCBiZSByZXF1aXJlZCB0b28sIHNwZWNpZmljYWxseSBmb3IgdGhlIGBjbHNfYXBpLm9gIGFuZCBgYWN0X2FwaS5vYCBtb2R1bGVzLCBidXQgb24gZnVydGhlciByZXZpZXcsIGl0IGFwcGVhcnMgYENPTkZJR19ORVRfQ0xTYCBhbmQgYENPTkZJR19ORVRfQ0xTX0FDVGAgc3RhbmQgYWxvbmUuXG5cbk5vdywgYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAuLi4gdGhhdCdzIGRlZmluZWQgaW4gYG5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jYCwgYW5kIHRoYXQgc2VlbXMgdG8gYmUgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5LCB3aGljaCBpcyBnb29kLiBCdXQgdG8gYWN0dWFsbHkgKnVzZSogdGhhdCBmdW5jdGlvbmFsaXR5LCBJJ20gdGhpbmtpbmcgd2UncmUgZ29pbmcgdG8gbmVlZCB0byBpbnZvbHZlIGVpdGhlciBUQyBvciBOZXRmaWx0ZXIgb2ZmbG9hZCBwYXRocy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZ290IHRoZSBjb3JyZWN0IG1vZHVsZXMgZW5hYmxlZC4gSSBzaG91bGQgYWRkIGBORVRfQ0xTYCwgYE5FVF9DTFNfQUNUYCwgYE5GX1RBQkxFU2AsIGFuZCBgTkZfRkxPV19UQUJMRWAgdG8gdGhlIGNvbmZpZ3VyYXRpb24uXG5cbldhaXQgYSBzZWNvbmQsIGEga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgKnJlcXVpcmVzKiBoYXJkd2FyZSBvZmZsb2FkIGNhcGFiaWxpdGllcy4gVGhhdCdzIGNydWNpYWwuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQuIEl0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gc2V0dGluZyB1cCB0aGUgb2ZmbG9hZCBmb3IgYSBwYXJ0aWN1bGFyIGJsb2NrIG9mIGZ1bmN0aW9uYWxpdHksIGFzIHNlZW4gaW4gYHRjZl9ibG9ja19vZmZsb2FkX2NtZGAsIHNvIEkgbmVlZCB0byBmYWN0b3IgdGhhdCBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg5NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMToyOS40NjY1MjQzMzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzQwMTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9ibG9ja19vZmZsb2FkX2NtZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmM9ODE4PXN0YXRpYyBib29sIHRjZl9ibG9ja19vZmZsb2FkX2luX3VzZShzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaylcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODIyLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6ODIzOnN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfY21kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODI0LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9ODU1PXN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfYmluZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy04NzQtXFxubmV0L3NjaGVkL2Nsc19hcGkuYzo4NzU6XFx0ZXJyID0gdGNmX2Jsb2NrX29mZmxvYWRfY21kKGJsb2NrLCBkZXYsIHEsIGVpLCBGTE9XX0JMT0NLX0JJTkQsIGV4dGFjayk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy04NzYtXFx0aWYgKGVyciA9PSAtRU9QTk9UU1VQUClcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9ODk1PXN0YXRpYyB2b2lkIHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy05MDEtXFx0ZG93bl93cml0ZShcXHUwMDI2YmxvY2stXFx1MDAzZWNiX2xvY2spO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6OTAyOlxcdGVyciA9IHRjZl9ibG9ja19vZmZsb2FkX2NtZChibG9jaywgZGV2LCBxLCBlaSwgRkxPV19CTE9DS19VTkJJTkQsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtOTAzLVxcdGlmIChlcnIgPT0gLUVPUE5PVFNVUFApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjI5LjUyNjI2OTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NTcyMDEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdtIHRoaW5raW5nIGFib3V0IGl0OlxuXG4qKkFuYWx5emluZyBgdGNmX2Jsb2NrX29mZmxvYWRfYmluZGAqKlxuXG5SaWdodCwgc28gYHRjZl9ibG9ja19vZmZsb2FkX2JpbmRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGdldHMgaW52b2tlZCB3aGVuZXZlciBhIGJsb2NrIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGRldmljZS4gVGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGNvcmUgcHJvY2VzcyBvZiBhY3R1YWxseSBob29raW5nIGEgYmxvY2sgdXAsIGFuZCB0aGUgaW1wb3J0YW50IHRoaW5nIHRvIHJlbWVtYmVyIGlzIHRoaXMgaXMgaGFwcGVuaW5nICpkdXJpbmcqIHRoZSBjb25maWd1cmF0aW9uIHBoYXNlLiBTcGVjaWZpY2FsbHksIGl0J3MgdHJpZ2dlcmVkIHdoZW4gd2UncmUgc2V0dGluZyB1cCBhIHF1ZXVpbmcgZGlzY2lwbGluZSAocWRpc2MpIG9yIGEgdHJhZmZpYyBmaWx0ZXIuIEl0J3MgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIGRldmljZSBiaW5kaW5nLCBzbyB0aGUgYmVoYXZpb3Igb2YgdGhpcyBpcyBrZXkgdG8gcGVyZm9ybWFuY2UgYW5kIG9mZmxvYWQuIExldCdzIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgdGNmX2Jsb2NrX29mZmxvYWRfYmluZGAgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgdGFraW5nIHBsYWNlIHRvIHRydWx5IGRldGVybWluZSBpdHMgcHVycG9zZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdHJhZmZpYyBjb250cm9sLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODgyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MzIuNzExOTkxNTZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MjIzMjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9ibG9ja19vZmZsb2FkX2JpbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jPTgyMz1zdGF0aWMgaW50IHRjZl9ibG9ja19vZmZsb2FkX2NtZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jayxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODU0LVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6ODU1OnN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfYmluZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODU2LVxcdFxcdFxcdFxcdCAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE0NjQ9aW50IHRjZl9ibG9ja19nZXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKipwX2Jsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE0OTctXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNDk4OlxcdGVyciA9IHRjZl9ibG9ja19vZmZsb2FkX2JpbmQoYmxvY2ssIHEsIGVpLCBleHRhY2spO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTQ5OS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMTozMi43NjkyMjE3NTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA5MDEyMTgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJsb2NrIE9mZmxvYWQgTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGJsb2NrIG9mZmxvYWQgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgZml4IHRoYXQgd2FzIGltcGxlbWVudGVkLiBJdCBzZWVtcyBgdGNmX2Jsb2NrX2dldF9leHRgIGlzIGNydWNpYWwgYmVjYXVzZSBpdCdzIGNhbGxlZCBkdXJpbmcgYmxvY2sgY3JlYXRpb24sIG1lYW5pbmcgaXQncyByZWFjaGFibGUgdGhyb3VnaCBzdGFuZGFyZCBUQyBuZXRsaW5rIGNvbW1hbmRzLiBUaGF0IG1ha2VzIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIGEgY2xlYXIgY2FuZGlkYXRlIGZvciB0ZXN0aW5nLCBhcyB3ZWxsLlxuXG5UaGUgY29yZSBvZiB0aGUgaXNzdWUgaXMgdGhpczogVGhlIHBhdGNoIGF0dGVtcHRzIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgZmFpbHVyZSBpbiBgaW5kaXJfZGV2X2FkZGAsIGJ1dCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGhhbmRsZSB0aGUgZXJyb3IgcHJvcGVybHksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gbGVha3MgaWYgYGJvLVx1MDAzZWNiX2xpc3RgIGlzIGVtcHR5LiBSaWdodCwgSSBzZWUgaXQgbm93LiBgaW5kaXJfZGV2X2FkZGAgKmNhbiogcmV0dXJuIGFuIGVycm9yLCBhbmQgdGhlIGNvZGUgY2FwdHVyZXMgdGhhdCBpbiBgcmVwbGF5X2FkZGVkID0gYWRkX2VyciA9PSAwYC4gTm93LCBpZiBgcmVwbGF5X2FkZGVkYCBpcyAqdHJ1ZSogKG1lYW5pbmcgdGhlIGFkZGl0aW9uIHN1Y2NlZWRlZCkgYW5kIGlmIHRoZSBjYWxsYmFjayBsaXN0IGBiby1cdTAwM2VjYl9saXN0YCBpcyBlbXB0eSwgdGhlbiB0aGUgY29kZSBjYWxscyBgaW5kaXJfZGV2X3JlbW92ZShkYXRhKWAgYW5kIHJldHVybnMgYC1FT1BOT1RTVVBQYC4gRWZmZWN0aXZlbHksIHRoaXMgcGF0Y2ggcHJldmVudHMgdGhlIGluZGlyZWN0IGRldmljZSByZWdpc3RyYXRpb24gbGVhayBpZiBubyBjYWxsYmFja3MgYXJlIGFkZGVkIHRvIHRoZSBvZmZsb2FkIGxpc3QuIFByZXR0eSBjbGV2ZXIsIEkgc3VwcG9zZS4gSXQncyBhIHByYWdtYXRpYyB3b3JrYXJvdW5kLlxuXG5HaXZlbiB0aGlzLCBJIHNob3VsZCBmb2N1cyBvbiBhIGZldyBrZXkgc3ltYm9sczogYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgaXMgZGVmaW5pdGVseSB0aGUgdGFyZ2V0IGJlY2F1c2UgaXQncyB0aGUgbW9kaWZpZWQgZnVuY3Rpb24uIEFsc28sIGB0Y2ZfYmxvY2tfb2ZmbG9hZF9iaW5kYCBhbmQgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgYXJlIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBvZmZsb2FkIGxpZmVjeWNsZSwgc28gdGhvc2UgYXJlIGdvb2QgZm9jdXMgcG9pbnRzLlxuXG5JJ2xsIGNoZWNrIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AgZm9yIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHRvIGdldCBhIGJldHRlciBmZWVsIGZvciB0aGUgY29udGV4dC4gVGhpcyBzaG91bGQgaGVscCBtZSBiZXR0ZXIgdW5kZXJzdGFuZCBob3cgdGhpcyBmaXggaW50ZWdyYXRlcyB3aXRoIHRoZSBleGlzdGluZyBmbG93IG9mZmxvYWQgbWVjaGFuaXNtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDI0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjM4Ljg1OTM0NTYwNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgyNzcwODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jPTU4OT1zdGF0aWMgaW50IGluZGlyX2Rldl9yZW1vdmUodm9pZCAqZGF0YSlcXG4tLVxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTYwMi1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYzo2MDM6aW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcdHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTYwNC1cXHRcXHRcXHRcXHRlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqZGF0YSxcXG4tLVxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTY0Mi19XFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmM6NjQzOkVYUE9SVF9TWU1CT0woZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKTtcXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02NDQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjM4LjkxNzYyODEyNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODYzMzc4NTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBOZXR3b3JraW5nIEZsb3cgT2ZmbG9hZCBCdWcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcG90ZW50aWFsIGxlYWsgaW4gYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAuIEknbSBjaGVja2luZyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBORVRfQ0xTYCwgYE5FVF9DTFNfQUNUYCwgYE5GX1RBQkxFU2AsIGFuZCBgTkZfRkxPV19UQUJMRWAuIEknbSBwcmV0dHkgc3VyZSBJIGhhdmUgdGhlIGNvbmZpZyBuYW1lcyBjb3JyZWN0LCBidXQgbGV0J3MganVzdCBjb25maXJtIHRob3NlIGFyZSB0aGUgY29ycmVjdCBuYW1lcywgYENPTkZJR19ORVRfQ0xTYCBmb3IgdHJhZmZpYyBjb250cm9sIGNsYXNzaWZpZXIsIGBDT05GSUdfTkVUX0NMU19BQ1RgIGZvciB0cmFmZmljIGNvbnRyb2wgYWN0aW9ucywgYENPTkZJR19ORl9UQUJMRVNgIGZvciBOZXRmaWx0ZXIgbmZfdGFibGVzLCBhbmQgYENPTkZJR19ORl9GTE9XX1RBQkxFYCBmb3IgdGhlIE5ldGZpbHRlciBmbG93IHRhYmxlLlxuXG5UaGUgbWFpbiBxdWVzdGlvbiBpcyB3aGV0aGVyIGBORVRfQ0xTYCBpcyBzdWZmaWNpZW50IG9uIGl0cyBvd24sIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgZW5hYmxpbmcgYGNsc19hcGkub2Agd2hpY2ggc2VlbXMgcmlnaHQuIFRoZSBvdGhlcnMgZW5hYmxlIHRoZWlyIGNvcnJlc3BvbmRpbmcgbW9kdWxlcy4gTm93LCBpcyBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYCByZWFjaGFibGUgZXZlbiB3aXRob3V0IGhhcmR3YXJlIG9mZmxvYWQ/IFllcywgaXQncyB1bmNvbmRpdGlvbmFsbHkgY2FsbGVkLCB3aGljaCBpcyBpbXBvcnRhbnQuIEl0IHNldHMgdXAgYm90aCBUQyBibG9ja3MgYW5kIE5ldGZpbHRlciBmbG93IHRhYmxlcy4gRXZlbiBpZiB0aGUgZGV2aWNlICpkb2Vzbid0KiBzdXBwb3J0IG9mZmxvYWQsIGl0J2xsIHJ1biwgYW5kIGp1c3QgcmV0dXJuIGAtRU9QTk9UU1VQUGAuIFRoYXQncyB0aGUga2V5LlxuXG5TbywgYGluZGlyX2Rldl9hZGRgIGFkZHMgdGhlIGRldmljZSB0byBgZmxvd19ibG9ja19pbmRyX2Rldl9saXN0YC4gVGhlIGZ1bmN0aW9uIHRoZW4gaXRlcmF0ZXMgdGhyb3VnaCB0aGF0IGxpc3QsIGNhbGxpbmcgYHRoaXMtXHUwMDNlY2JgLiBJZiBgbGlzdF9lbXB0eShcdTAwMjZiby1cdTAwM2VjYl9saXN0KWAgYWZ0ZXIgdGhhdCwgbWVhbmluZyBubyBjYWxsYmFja3Mgd2VyZSByZWdpc3RlcmVkLCB0aGVuIGBpbmRpcl9kZXZfcmVtb3ZlYCBzaG91bGQgYmUgY2FsbGVkLCBhbmQgaXQgcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBUaGF0J3Mgd2hlcmUgdGhlIHByb2JsZW0gbGllcywgaXQgd2Fzbid0LlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBvZiB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgbGVhayBpbiBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYC4gV2hlbiBhbiBpbmRpcmVjdCBkZXZpY2UgaXMgYWRkZWQgYnV0IG5vIGNhbGxiYWNrcyBhcmUgcmVnaXN0ZXJlZCwgaXQgbm93IGVuc3VyZXMgdGhhdCBgaW5kaXJfZGV2X3JlbW92ZWAgaXMgY2FsbGVkIHRvIGNsZWFuIHVwIHRoZSByZWdpc3RyYXRpb24uIFRoaXMgaXMgY3J1Y2lhbCBuZXR3b3JraW5nIGxvZ2ljLCBkZWFsaW5nIHdpdGggZmxvdyBvZmZsb2FkLCB1c2VkIGJ5IGJvdGggVEMgYW5kIE5ldGZpbHRlciBhbmQgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uXG5cbkkgc2hvdWxkIGFsc28gbm90ZSB0aGUga2V5IHN5bWJvbHMgaGVyZTogYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAsIGB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWRgLCBgbmZ0X2luZHJfYmxvY2tfb2ZmbG9hZF9jbWRgLCBhbmQgYG5mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZGAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBvZmZsb2FkIGNvbW1hbmRzIGFyZSBwYXNzZWQgZG93bi5cblxuT2theSwgSSB0aGluayBJJ3ZlIGdvdCBhIGhhbmRsZSBvbiB0aGlzLiBJJ2xsIHN1bW1hcml6ZSBteSBmaW5kaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ0NiwiT3V0cHV0VG9rZW5zIjoyMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6NDcuNzgxMDA4ODFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzM5OTAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0NMU1wiLFxuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfRkxPV19UQUJMRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZFwiLFxuICAgIFwidGNmX2Jsb2NrX29mZmxvYWRfY21kXCIsXG4gICAgXCJuZnRfaW5kcl9ibG9ja19vZmZsb2FkX2NtZFwiLFxuICAgIFwibmZfZmxvd190YWJsZV9pbmRyX29mZmxvYWRfY21kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgbGVhayBpbiBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYCB3aGVuIGFuIGluZGlyZWN0IGRldmljZSBpcyBhZGRlZCBidXQgbm8gY2FsbGJhY2tzIGFyZSByZWdpc3RlcmVkIHRvIHRoZSBibG9jayBvZmZsb2FkIGxpc3QuIEl0IGVuc3VyZXMgdGhhdCBgaW5kaXJfZGV2X3JlbW92ZWAgaXMgY2FsbGVkIHRvIGNsZWFuIHVwIHRoZSByZWdpc3RyYXRpb24gaWYgYGluZGlyX2Rldl9hZGRgIHN1Y2NlZWRlZCBidXQgdGhlIGNhbGxiYWNrIGxpc3QgcmVtYWlucyBlbXB0eS4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgcmVsYXRlZCB0byBmbG93IG9mZmxvYWQgKHVzZWQgYnkgVEMgYW5kIE5ldGZpbHRlcikgYW5kIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9DTFNcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORl9UQUJMRVNcIixcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRcIixcbiAgICBcInRjZl9ibG9ja19vZmZsb2FkX2NtZFwiLFxuICAgIFwibmZ0X2luZHJfYmxvY2tfb2ZmbG9hZF9jbWRcIixcbiAgICBcIm5mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGxlYWsgaW4gYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgd2hlbiBhbiBpbmRpcmVjdCBkZXZpY2UgaXMgYWRkZWQgYnV0IG5vIGNhbGxiYWNrcyBhcmUgcmVnaXN0ZXJlZCB0byB0aGUgYmxvY2sgb2ZmbG9hZCBsaXN0LiBJdCBlbnN1cmVzIHRoYXQgYGluZGlyX2Rldl9yZW1vdmVgIGlzIGNhbGxlZCB0byBjbGVhbiB1cCB0aGUgcmVnaXN0cmF0aW9uIGlmIGBpbmRpcl9kZXZfYWRkYCBzdWNjZWVkZWQgYnV0IHRoZSBjYWxsYmFjayBsaXN0IHJlbWFpbnMgZW1wdHkuIFRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHJlbGF0ZWQgdG8gZmxvdyBvZmZsb2FkICh1c2VkIGJ5IFRDIGFuZCBOZXRmaWx0ZXIpIGFuZCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29uZmlndXJhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgmvb9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 23:38:04 +0000 UTC FinishedAt: 2026-07-18 00:11:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS", "NET_CLS_ACT", "NF_TABLES", "NF_FLOW_TABLE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS", "NET_CLS_ACT", "NF_TABLES", "NF_FLOW_TABLE" ], "series_id": "3d3dfcb2-2508-4b25-b1ad-a53fc624e092" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "flow_indr_dev_setup_offload", "tcf_block_offload_cmd", "nft_indr_block_offload_cmd", "nf_flow_table_indr_offload_cmd" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQmIzM0OywKICAgICYjMzQ7dGNmX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0NGFiYmFkYzRhMTQ1ZDM3NWVjY2IzYmQ4MzA1YjBhODUwOGU4NjliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTggMDA6MTE6MDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmMgYi9uZXQvY29yZS9mbG93X29mZmxvYWQuY1xuaW5kZXggNTA3MWQ3ZmU2Y2UyYTUuLjVmYmIxYWU0Njc5ZGRlIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jXG5AQCAtNjA2LDE1ICYjNDM7NjA2LDIwIEBAIGludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcdHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdFx0dm9pZCAoKmNsZWFudXApKHN0cnVjdCBmbG93X2Jsb2NrX2NiICpibG9ja19jYikpXG4ge1xuIFx0c3RydWN0IGZsb3dfaW5kcl9kZXYgKnRoaXM7XG4mIzQzO1x0Ym9vbCByZXBsYXlfYWRkZWQgPSBmYWxzZTtcbiBcdHUzMiBjb3VudCA9IDA7XG4gXHRpbnQgZXJyO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZmbG93X2luZHJfYmxvY2tfbG9jayk7XG4gXHRpZiAoYm8pIHtcbi1cdFx0aWYgKGJvLVx1MDAzZWNvbW1hbmQgPT0gRkxPV19CTE9DS19CSU5EKVxuLVx0XHRcdGluZGlyX2Rldl9hZGQoZGF0YSwgZGV2LCBzY2gsIHR5cGUsIGNsZWFudXAsIGJvKTtcbi1cdFx0ZWxzZSBpZiAoYm8tXHUwMDNlY29tbWFuZCA9PSBGTE9XX0JMT0NLX1VOQklORClcbiYjNDM7XHRcdGlmIChiby1cdTAwM2Vjb21tYW5kID09IEZMT1dfQkxPQ0tfQklORCkge1xuJiM0MztcdFx0XHRpbnQgYWRkX2VycjtcbiYjNDM7XG4mIzQzO1x0XHRcdGFkZF9lcnIgPSBpbmRpcl9kZXZfYWRkKGRhdGEsIGRldiwgc2NoLCB0eXBlLCBjbGVhbnVwLCBibyk7XG4mIzQzO1x0XHRcdHJlcGxheV9hZGRlZCA9IGFkZF9lcnIgPT0gMDtcbiYjNDM7XHRcdH0gZWxzZSBpZiAoYm8tXHUwMDNlY29tbWFuZCA9PSBGTE9XX0JMT0NLX1VOQklORCkge1xuIFx0XHRcdGluZGlyX2Rldl9yZW1vdmUoZGF0YSk7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRoaXMsIFx1MDAyNmZsb3dfYmxvY2tfaW5kcl9kZXZfbGlzdCwgbGlzdCkge1xuQEAgLTYyMyw5ICYjNDM7NjI4LDE3IEBAIGludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcdHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdGNvdW50JiM0MzsmIzQzOztcbiBcdH1cbiBcbiYjNDM7XHRpZiAoYm8gXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2Ym8tXHUwMDNlY2JfbGlzdCkpIHtcbiYjNDM7XHRcdGlmIChyZXBsYXlfYWRkZWQpXG4mIzQzO1x0XHRcdGluZGlyX2Rldl9yZW1vdmUoZGF0YSk7XG4mIzQzO1x0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0ZXJyID0gY291bnQ7XG4mIzQzO1x0fVxuJiM0MztcbiBcdG11dGV4X3VubG9jayhcdTAwMjZmbG93X2luZHJfYmxvY2tfbG9jayk7XG4gXG4tXHRyZXR1cm4gKGJvIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNmJvLVx1MDAzZWNiX2xpc3QpKSA/IC1FT1BOT1RTVVBQIDogY291bnQ7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gRVhQT1JUX1NZTUJPTChmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQmIzM0OywKICAgICYjMzQ7dGNmX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ0YWJiYWRjNGExNDVkMzc1ZWNjYjNiZDgzMDViMGE4NTA4ZTg2OWIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxOCAwMDoxMTowMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jIGIvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmMKaW5kZXggNTA3MWQ3ZmU2Y2UyYTUuLjVmYmIxYWU0Njc5ZGRlIDEwMDY0NAotLS0gYS9uZXQvY29yZS9mbG93X29mZmxvYWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9mbG93X29mZmxvYWQuYwpAQCAtNjA2LDE1ICYjNDM7NjA2LDIwIEBAIGludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwJc3RydWN0IFFkaXNjICpzY2gsCiAJCQkJdm9pZCAoKmNsZWFudXApKHN0cnVjdCBmbG93X2Jsb2NrX2NiICpibG9ja19jYikpCiB7CiAJc3RydWN0IGZsb3dfaW5kcl9kZXYgKnRoaXM7CiYjNDM7CWJvb2wgcmVwbGF5X2FkZGVkID0gZmFsc2U7CiAJdTMyIGNvdW50ID0gMDsKIAlpbnQgZXJyOwogCiAJbXV0ZXhfbG9jaygmYW1wO2Zsb3dfaW5kcl9ibG9ja19sb2NrKTsKIAlpZiAoYm8pIHsKLQkJaWYgKGJvLSZndDtjb21tYW5kID09IEZMT1dfQkxPQ0tfQklORCkKLQkJCWluZGlyX2Rldl9hZGQoZGF0YSwgZGV2LCBzY2gsIHR5cGUsIGNsZWFudXAsIGJvKTsKLQkJZWxzZSBpZiAoYm8tJmd0O2NvbW1hbmQgPT0gRkxPV19CTE9DS19VTkJJTkQpCiYjNDM7CQlpZiAoYm8tJmd0O2NvbW1hbmQgPT0gRkxPV19CTE9DS19CSU5EKSB7CiYjNDM7CQkJaW50IGFkZF9lcnI7CiYjNDM7CiYjNDM7CQkJYWRkX2VyciA9IGluZGlyX2Rldl9hZGQoZGF0YSwgZGV2LCBzY2gsIHR5cGUsIGNsZWFudXAsIGJvKTsKJiM0MzsJCQlyZXBsYXlfYWRkZWQgPSBhZGRfZXJyID09IDA7CiYjNDM7CQl9IGVsc2UgaWYgKGJvLSZndDtjb21tYW5kID09IEZMT1dfQkxPQ0tfVU5CSU5EKSB7CiAJCQlpbmRpcl9kZXZfcmVtb3ZlKGRhdGEpOwomIzQzOwkJfQogCX0KIAogCWxpc3RfZm9yX2VhY2hfZW50cnkodGhpcywgJmFtcDtmbG93X2Jsb2NrX2luZHJfZGV2X2xpc3QsIGxpc3QpIHsKQEAgLTYyMyw5ICYjNDM7NjI4LDE3IEBAIGludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwJc3RydWN0IFFkaXNjICpzY2gsCiAJCQljb3VudCYjNDM7JiM0Mzs7CiAJfQogCiYjNDM7CWlmIChibyAmYW1wOyZhbXA7IGxpc3RfZW1wdHkoJmFtcDtiby0mZ3Q7Y2JfbGlzdCkpIHsKJiM0MzsJCWlmIChyZXBsYXlfYWRkZWQpCiYjNDM7CQkJaW5kaXJfZGV2X3JlbW92ZShkYXRhKTsKJiM0MzsJCWVyciA9IC1FT1BOT1RTVVBQOwomIzQzOwl9IGVsc2UgewomIzQzOwkJZXJyID0gY291bnQ7CiYjNDM7CX0KJiM0MzsKIAltdXRleF91bmxvY2soJmFtcDtmbG93X2luZHJfYmxvY2tfbG9jayk7CiAKLQlyZXR1cm4gKGJvICZhbXA7JmFtcDsgbGlzdF9lbXB0eSgmYW1wO2JvLSZndDtjYl9saXN0KSkgPyAtRU9QTk9UU1VQUCA6IGNvdW50OwomIzQzOwlyZXR1cm4gZXJyOwogfQogRVhQT1JUX1NZTUJPTChmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMjIKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBGbG93IE9mZmxvYWQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgd2l0aGluIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AuIEl0JiMzOTtzIGZvY3VzZWQgb24gaGFuZGxpbmcgaW5kaXJlY3QgZGV2aWNlcywgc3BlY2lmaWNhbGx5IHRoZSBsb2dpYyBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyB0aGVtIGR1cmluZyBvZmZsb2FkIG9wZXJhdGlvbnMuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhbiBpc3N1ZSB3aGVyZSB0aGUgY2FsbGJhY2sgbGlzdCAoYGJvLSZndDtjYl9saXN0YCkgbWlnaHQgYmUgZW1wdHkgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHJlc291cmNlIGxlYWsgb3IgaW5jb25zaXN0ZW50IHN0YXRlLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgdGhlIGBGTE9XX0JMT0NLX0JJTkRgIGNvbW1hbmQuIElmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIHdoZW4gYSBiaW5kaW5nIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQsIHRoZSBjb2RlIG5vdyBjYXB0dXJlcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBpbmRpcl9kZXZfYWRkYCBhbmQgc2V0cyBhIGZsYWcsIGByZXBsYXlfYWRkZWRgLCBiYXNlZCBvbiB3aGV0aGVyIHRoYXQgYWRkaXRpb24gd2FzIHN1Y2Nlc3NmdWwuIExhdGVyLCBhIGNoZWNrIGlzIHBlcmZvcm1lZDogaWYgd2UgaGF2ZSBhIGBib2AgYW5kIHRoZSBjYWxsYmFjayBsaXN0IGlzIGVtcHR5LCBhbmQgaWYgYHJlcGxheV9hZGRlZGAgaXMgdHJ1ZSwgaXQgY2FsbHMgYGluZGlyX2Rldl9yZW1vdmUoZGF0YSlgLiBUaGUgZnVuY3Rpb24gdGhlbiByZXR1cm5zIGAtRU9QTk9UU1VQUGAuIFRoaXMgc2VlbXMgdG8gYmUgdGhlIGNydWNpYWwgcGFydCBvZiB0aGUgZml4LiBJIGJlbGlldmUgdGhpcyBwYXJ0IGlzIGFuIGF0dGVtcHQgdG8gY2xlYW4gdXAgYW55IHBhcnRpYWxseSBhZGRlZCBpbmRpcmVjdCBkZXZpY2VzIHdoZW4gdGhlIGJpbmRpbmcgZmFpbHMgaW4gc29tZSB3YXkuCgpCYXNpY2FsbHksIGl0JiMzOTtzIGEgc2FmZXR5IG5ldC4gSWYgYSBiaW5kaW5nIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQsIGFuZCB0aGUgYmluZGluZyBlbmRzIHVwIHdpdGggYW4gZW1wdHkgY2FsbGJhY2sgbGlzdCwgaXQgcmVtb3ZlcyB0aGUgbmV3bHkgYWRkZWQgaW5kaXJlY3QgZGV2aWNlIGlmIHRoZSBhZGRpdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgYW5kIHRoZW4gcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIGxlYWsgb3IgYW4gaW5jb3JyZWN0IHN0YXRlIHdoZXJlIHRoZSBpbmRpcmVjdCBkZXZpY2UgaXMgYWRkZWQgYnV0IG5vdCBwcm9wZXJseSB0cmFja2VkLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIHJlYXNvbmFibGUgY2hhbmdlIHRvIGltcHJvdmUgcmVsaWFiaWxpdHkgd2l0aGluIHRoZSBmbG93IG9mZmxvYWQgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Zsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jPTU4OT1zdGF0aWMgaW50IGluZGlyX2Rldl9yZW1vdmUodm9pZCAqZGF0YSlcbi0tXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDItXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYzo2MDM6aW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFx0c3RydWN0IFFkaXNjICpzY2gsXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDQtXHRcdFx0XHRlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqZGF0YSxcbi0tXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02NDItfVxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmM6NjQzOkVYUE9SVF9TWU1CT0woZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKTtcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTY0NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDIyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBLZXJuZWwgRmxvdyBPZmZsb2FkIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGZvciB0aGlzIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AgbW9kdWxlLiBNeSBmaXJzdCB0aG91Z2h0IHdhcyB0byBqdXN0IGxvb2sgZm9yIGBDT05GSUdfTkVUX0ZMT1dfTElNSVRgIHdoaWNoIHNlZW1zIGxvZ2ljYWwuIEhvd2V2ZXIsIEkgd2FudCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgY2hlY2sgdGhlIGBuZXQvY29yZS9NYWtlZmlsZWAgaW5zdGVhZC4gSXQmIzM5O3MgdGhlIE1ha2VmaWxlIHRoYXQgdWx0aW1hdGVseSBkaWN0YXRlcyB0aGUgY29tcGlsYXRpb24gYW5kIGluY2x1c2lvbiBvZiB0aGUgc291cmNlIGZpbGUsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFjdHVhbCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBkZWZpbmVkLiBJJiMzOTtsbCBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGFjdHVhbCBjb25maWd1cmF0aW9uIGNvbmRpdGlvbnMgdGhlcmUsIGluc3RlYWQgb2YgcmVseWluZyBvbiBhbiBhc3N1bWVkIGRlcGVuZGVuY3kgdGhhdCBtaWdodCBiZSBtaXN0YWtlbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgTWFrZWZpbGUgaGFzIHRvIHNheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmbG93X29mZmxvYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZT0xMj1vYmoteVx0XHQgICAgICYjNDM7PSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXG4tLVxubmV0L2NvcmUvTWFrZWZpbGUtMTQtXHRcdFx0c29ja19kaWFnLm8gZGV2X2lvY3RsLm8gdHNvLm8gc29ja19yZXVzZXBvcnQubyBcXFxubmV0L2NvcmUvTWFrZWZpbGU6MTU6XHRcdFx0ZmliX25vdGlmaWVyLm8geGRwLm8gZmxvd19vZmZsb2FkLm8gZ3JvLm8gXFxcbm5ldC9jb3JlL01ha2VmaWxlLTE2LVx0XHRcdG5ldGRldi1nZW5sLm8gbmV0ZGV2LWdlbmwtZ2VuLm8gbmV0ZGV2X3dvcmsubyBnc28ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIEZsb3cgT2ZmbG9hZCBDb21waWxhdGlvbiBhbmQgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBidWlsZCBzeXN0ZW0gaXMgY29tcGlsaW5nIGBvYmoteWAgdW5jb25kaXRpb25hbGx5LCBpbnRlcmVzdGluZy4gQW5kLCBvZiBjb3Vyc2UsIGBmbG93X29mZmxvYWQub2AgaXMgcHVsbGVkIGluIHZpYSBgb2JqLXlgLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgaG9sZCBvbiBhIG1pbnV0ZSwgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgaGVyZSwgc28gSSYjMzk7bGwgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIGdvdmVybmluZyBmbG93IG9mZmxvYWQuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEkmIzM5O20gdHJ5aW5nIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3MgZm9yIHRoZSBmbG93IG9mZmxvYWQgZmVhdHVyZXMuIEFoLCBoZXJlJiMzOTtzIHRoZSBob29rIC0gYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgaXMgdXNlZCwgd2hpY2ggbWVhbnMgaXQgaXMgdGllZCB0byBUcmFmZmljIENvbnRyb2wgKFRDKSBhbmQgYWxzbyB0aGUgdmFyaW91cyBkcml2ZXJzLiBPa2F5LCB0aGF0IGNvbmZpcm1zIGl0cyBicm9hZGVyIGltcGFjdC4gVGhpcyBsaWtlbHkgaW5mb3JtcyB0aGUgY29uZmlndXJhdGlvbiBzdHJhdGVneSB0byBhY3RpdmF0ZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIE5vdyBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdCBiZWluZyBjb21waWxlZCBpbiB3aXRoIGBvYmoteWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oPTczOT12b2lkIGZsb3dfaW5kcl9kZXZfdW5yZWdpc3RlcihmbG93X2luZHJfYmxvY2tfYmluZF9jYl90ICpjYiwgdm9pZCAqY2JfcHJpdixcbmluY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oLTc0MC1cdFx0XHQgICAgICB2b2lkICgqcmVsZWFzZSkodm9pZCAqY2JfcHJpdikpO1xuaW5jbHVkZS9uZXQvZmxvd19vZmZsb2FkLmg6NzQxOmludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IFFkaXNjICpzY2gsXG5pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaC03NDItXHRcdFx0XHRlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqZGF0YSxcbi0tXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYz01ODk9c3RhdGljIGludCBpbmRpcl9kZXZfcmVtb3ZlKHZvaWQgKmRhdGEpXG4tLVxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjAyLVxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmM6NjAzOmludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcdHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjA0LVx0XHRcdFx0ZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKmRhdGEsXG4tLVxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjQyLX1cbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jOjY0MzpFWFBPUlRfU1lNQk9MKGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZCk7XG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02NDQtXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz0xMjM4PXN0YXRpYyBpbnQgbmZfZmxvd190YWJsZV9pbmRyX29mZmxvYWRfY21kKHN0cnVjdCBmbG93X2Jsb2NrX29mZmxvYWQgKmJvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtMTI0Ni1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6MTI0NzpcdHJldHVybiBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoZGV2LCBOVUxMLCBUQ19TRVRVUF9GVCwgZmxvd3RhYmxlLCBibyxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMtMTI0OC1cdFx0XHRcdFx0ICAgbmZfZmxvd190YWJsZV9pbmRyX2NsZWFudXApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX29mZmxvYWQuYz00MjM9c3RhdGljIGludCBuZnRfaW5kcl9ibG9ja19vZmZsb2FkX2NtZChzdHJ1Y3QgbmZ0X2Jhc2VfY2hhaW4gKmJhc2VjaGFpbixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19vZmZsb2FkLmMtNDMyLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfb2ZmbG9hZC5jOjQzMzpcdGVyciA9IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChkZXYsIE5VTEwsIFRDX1NFVFVQX0JMT0NLLCBiYXNlY2hhaW4sIFx1MDAyNmJvLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfb2ZmbG9hZC5jLTQzNC1cdFx0XHRcdFx0ICBuZnRfaW5kcl9ibG9ja19jbGVhbnVwKTtcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jPTIwMz1zdGF0aWMgaW50IHRjZl9hY3Rpb25fb2ZmbG9hZF9jbWRfZXgoc3RydWN0IGZsb3dfb2ZmbG9hZF9hY3Rpb24gKmZsX2FjdCxcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIwNy1cbm5ldC9zY2hlZC9hY3RfYXBpLmM6MjA4Olx0ZXJyID0gZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKE5VTEwsIE5VTEwsIFRDX1NFVFVQX0FDVCxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMjA5LVx0XHRcdFx0XHQgIGZsX2FjdCwgTlVMTCwgTlVMTCk7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz04MjM9c3RhdGljIGludCB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy04NDctXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjg0ODpcdGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChkZXYsIHNjaCwgVENfU0VUVVBfQkxPQ0ssIGJsb2NrLCBcdTAwMjZibyxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODQ5LVx0XHRcdFx0ICAgIHRjX2Jsb2NrX2luZHJfY2xlYW51cCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYxOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoaXMgY29kZSBzbmlwcGV0IGlzIHVzZWQgYWNyb3NzIGEgZmV3IGtleSBhcmVhcyB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBuZXR3b3JraW5nIHN0YWNrOiBgbmZfZmxvd190YWJsZV9vZmZsb2FkLmNgLCBgbmZfdGFibGVzX29mZmxvYWQuY2AsIGBhY3RfYXBpLmNgLCBhbmQgYGNsc19hcGkuY2AuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgYSBmZXcgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCB3aWxsIGxpa2VseSBpbmZsdWVuY2UgaG93IHRoaXMgaXMgdXNlZCBvciBldmVuIGVuYWJsZWQuIEkmIzM5O20gemVyb2luZyBpbiBvbiBgQ09ORklHX05FVF9DTFNfQUNUYCwgYENPTkZJR19ORVRfU0NIRURgLCBgQ09ORklHX05GX1RBQkxFU2AsIGFuZCBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGFzIHRoZSBsaWtlbHkgY2FuZGlkYXRlcyB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBHaXZlbiB0aGUgY29udGV4dCwgSSB0aGluayBhIGRlZXBlciBkaXZlIGludG8gYG5ldC9zY2hlZC9jbHNfYXBpLmNgIGFuZCBgbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY2AgaXMgdGhlIGJlc3Qgc3RhcnRpbmcgcG9pbnQgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9mbG93X3RhYmxlX29mZmxvYWQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDM9bmZfZmxvd190YWJsZS1vYmpzXHRcdDo9IG5mX2Zsb3dfdGFibGVfY29yZS5vIG5mX2Zsb3dfdGFibGVfaXAubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDQtXHRcdFx0XHQgICBuZl9mbG93X3RhYmxlX3BhdGgubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxNDU6XHRcdFx0XHQgICBuZl9mbG93X3RhYmxlX29mZmxvYWQubyBuZl9mbG93X3RhYmxlX3hkcC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0Ni1uZl9mbG93X3RhYmxlLSQoQ09ORklHX05GX0ZMT1dfVEFCTEVfUFJPQ0ZTKSAmIzQzOz0gbmZfZmxvd190YWJsZV9wcm9jZnMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTM1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKk5hdmlnYXRpbmcgS2VybmVsIE9mZmxvYWQgU3RydWN0dXJlcyoqCgpPa2F5LCBzbyBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGlzIHRoZSBrZXkgaGVyZS4gUmlnaHQsIHRoYXQgbWVhbnMgdGhlIGBuZl9mbG93X3RhYmxlLm9gIG1vZHVsZSBnZXRzIGJ1aWx0LiBBbmQsIGlmIEkmIzM5O20gcmVtZW1iZXJpbmcgY29ycmVjdGx5LCB0aGF0IGFsc28gcHVsbHMgaW4gYG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5vYC4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBOZXRmaWx0ZXIgb2ZmbG9hZCBmcmFtZXdvcmssIGFuZCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgYG5mX3RhYmxlc19vZmZsb2FkLm9gIG1vZHVsZSBhbHNvIGhhcyBzb21lIGRlcGVuZGVuY2llcyBoZXJlLiBMZXQmIzM5O3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvbmV0ZmlsdGVyL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBjcml0aWNhbCBkZXRhaWwgYWJvdXQgdGhlIGludGVyY29ubmVjdGlvbnMuIE5lZWQgdG8gbWFrZSBzdXJlIHRoZSBvZmZsb2FkaW5nIGRlcGVuZGVuY2llcyBhcmUgYWxsIGluIG9yZGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl90YWJsZXNfb2ZmbG9hZC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTg3PW5mX3RhYmxlcy1vYmpzIDo9IG5mX3RhYmxlc19jb3JlLm8gbmZfdGFibGVzX2FwaS5vIG5mdF9jaGFpbl9maWx0ZXIubyBcXFxuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTEtXHRcdCAgbmZ0X2NvdW50ZXIubyBuZnRfb2JqcmVmLm8gbmZ0X2lubmVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6OTI6XHRcdCAgbmZ0X2NoYWluX3JvdXRlLm8gbmZfdGFibGVzX29mZmxvYWQubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05My1cdFx0ICBuZnRfc2V0X2hhc2gubyBuZnRfc2V0X2JpdG1hcC5vIG5mdF9zZXRfcmJ0cmVlLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzOQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIGFuZCBUcmFmZmljIENvbnRyb2wgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIGBDT05GSUdfTkZfVEFCTEVTYCBhY3RpdmF0ZXMgYG5mX3RhYmxlcy5vYC4gSSBrbm93IHRoYXQgbWVhbnMgYG5mX3RhYmxlc19vZmZsb2FkLm9gIGdldHMgcHVsbGVkIGluIHRvbywgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBvZmZsb2FkaW5nIE5ldGZpbHRlciBydWxlcy4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgbWlnaHQgaW50ZXJhY3Qgd2l0aCB0cmFmZmljIGNvbnRyb2wsIG9yIGB0Y2AuIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBjbHNfYXBpLm9gIGFuZCBgYWN0X2FwaS5vYC4gVGhlc2UgYXJlIGNlbnRyYWwgdG8gY2xhc3NpZmljYXRpb24gYW5kIGFjdGlvbnMgcmVzcGVjdGl2ZWx5LCB3aGljaCBpcyB3aGVyZSBOZXRmaWx0ZXIgY2FuLCBhbmQgb2Z0ZW4gZG9lcywgaW50ZXJzZWN0IHdpdGggdHJhZmZpYyBjb250cm9sIG9uIGEgc3lzdGVtLiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgbW9kdWxlcyBwbGF5IG5pY2VseSB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2xzX2FwaS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORVRfU0NIRUQpXHRcdCYjNDM7PSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05FVF9DTFMpXHRcdCYjNDM7PSBjbHNfYXBpLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfTkVUX0NMU19BQ1QpXHQmIzQzOz0gYWN0X2FwaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4OTUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMgZm9yIE5ldHdvcmsgT2ZmbG9hZCoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIG5ldHdvcmsgb2ZmbG9hZCBjb25maWd1cmF0aW9uIGhlcmUuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19ORVRfQ0xTYCBhbmQgYENPTkZJR19ORVRfQ0xTX0FDVGAgYXJlIGRlZmluaXRlbHkgcmVsZXZhbnQsIGdpdmVuIHRoZSB0YXNrIGF0IGhhbmQuIEluaXRpYWxseSwgSSB0aG91Z2h0IHRoYXQgYENPTkZJR19ORVRfU0NIRURgIG1pZ2h0IGJlIHJlcXVpcmVkIHRvbywgc3BlY2lmaWNhbGx5IGZvciB0aGUgYGNsc19hcGkub2AgYW5kIGBhY3RfYXBpLm9gIG1vZHVsZXMsIGJ1dCBvbiBmdXJ0aGVyIHJldmlldywgaXQgYXBwZWFycyBgQ09ORklHX05FVF9DTFNgIGFuZCBgQ09ORklHX05FVF9DTFNfQUNUYCBzdGFuZCBhbG9uZS4KCk5vdywgYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAuLi4gdGhhdCYjMzk7cyBkZWZpbmVkIGluIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AsIGFuZCB0aGF0IHNlZW1zIHRvIGJlIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSwgd2hpY2ggaXMgZ29vZC4gQnV0IHRvIGFjdHVhbGx5ICp1c2UqIHRoYXQgZnVuY3Rpb25hbGl0eSwgSSYjMzk7bSB0aGlua2luZyB3ZSYjMzk7cmUgZ29pbmcgdG8gbmVlZCB0byBpbnZvbHZlIGVpdGhlciBUQyBvciBOZXRmaWx0ZXIgb2ZmbG9hZCBwYXRocy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgY29ycmVjdCBtb2R1bGVzIGVuYWJsZWQuIEkgc2hvdWxkIGFkZCBgTkVUX0NMU2AsIGBORVRfQ0xTX0FDVGAsIGBORl9UQUJMRVNgLCBhbmQgYE5GX0ZMT1dfVEFCTEVgIHRvIHRoZSBjb25maWd1cmF0aW9uLgoKV2FpdCBhIHNlY29uZCwgYSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYCAqcmVxdWlyZXMqIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLiBUaGF0JiMzOTtzIGNydWNpYWwuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkLiBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHNldHRpbmcgdXAgdGhlIG9mZmxvYWQgZm9yIGEgcGFydGljdWxhciBibG9jayBvZiBmdW5jdGlvbmFsaXR5LCBhcyBzZWVuIGluIGB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWRgLCBzbyBJIG5lZWQgdG8gZmFjdG9yIHRoYXQgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9ibG9ja19vZmZsb2FkX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYz04MTg9c3RhdGljIGJvb2wgdGNmX2Jsb2NrX29mZmxvYWRfaW5fdXNlKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtODIyLVxubmV0L3NjaGVkL2Nsc19hcGkuYzo4MjM6c3RhdGljIGludCB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTgyNC1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTg1NT1zdGF0aWMgaW50IHRjZl9ibG9ja19vZmZsb2FkX2JpbmQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTg3NC1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6ODc1Olx0ZXJyID0gdGNmX2Jsb2NrX29mZmxvYWRfY21kKGJsb2NrLCBkZXYsIHEsIGVpLCBGTE9XX0JMT0NLX0JJTkQsIGV4dGFjayk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTg3Ni1cdGlmIChlcnIgPT0gLUVPUE5PVFNVUFApXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz04OTU9c3RhdGljIHZvaWQgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy05MDEtXHRkb3duX3dyaXRlKFx1MDAyNmJsb2NrLVx1MDAzZWNiX2xvY2spO1xubmV0L3NjaGVkL2Nsc19hcGkuYzo5MDI6XHRlcnIgPSB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWQoYmxvY2ssIGRldiwgcSwgZWksIEZMT1dfQkxPQ0tfVU5CSU5ELCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtOTAzLVx0aWYgKGVyciA9PSAtRU9QTk9UU1VQUClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg4MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQ6CgoqKkFuYWx5emluZyBgdGNmX2Jsb2NrX29mZmxvYWRfYmluZGAqKgoKUmlnaHQsIHNvIGB0Y2ZfYmxvY2tfb2ZmbG9hZF9iaW5kYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBnZXRzIGludm9rZWQgd2hlbmV2ZXIgYSBibG9jayBpcyBhc3NvY2lhdGVkIHdpdGggYSBkZXZpY2UuIFRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgY29yZSBwcm9jZXNzIG9mIGFjdHVhbGx5IGhvb2tpbmcgYSBibG9jayB1cCwgYW5kIHRoZSBpbXBvcnRhbnQgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhpcyBpcyBoYXBwZW5pbmcgKmR1cmluZyogdGhlIGNvbmZpZ3VyYXRpb24gcGhhc2UuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdHJpZ2dlcmVkIHdoZW4gd2UmIzM5O3JlIHNldHRpbmcgdXAgYSBxdWV1aW5nIGRpc2NpcGxpbmUgKHFkaXNjKSBvciBhIHRyYWZmaWMgZmlsdGVyLiBJdCYjMzk7cyB0aGUgY2VudHJhbCBwb2ludCBmb3IgZGV2aWNlIGJpbmRpbmcsIHNvIHRoZSBiZWhhdmlvciBvZiB0aGlzIGlzIGtleSB0byBwZXJmb3JtYW5jZSBhbmQgb2ZmbG9hZC4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgdGNmX2Jsb2NrX29mZmxvYWRfYmluZGAgYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyB0YWtpbmcgcGxhY2UgdG8gdHJ1bHkgZGV0ZXJtaW5lIGl0cyBwdXJwb3NlIGluIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0cmFmZmljIGNvbnRyb2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9ibG9ja19vZmZsb2FkX2JpbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9ODIzPXN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfY21kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtODU0LVxubmV0L3NjaGVkL2Nsc19hcGkuYzo4NTU6c3RhdGljIGludCB0Y2ZfYmxvY2tfb2ZmbG9hZF9iaW5kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTg1Ni1cdFx0XHRcdCAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNDY0PWludCB0Y2ZfYmxvY2tfZ2V0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICoqcF9ibG9jaywgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTQ5Ny1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTQ5ODpcdGVyciA9IHRjZl9ibG9ja19vZmZsb2FkX2JpbmQoYmxvY2ssIHEsIGVpLCBleHRhY2spO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xNDk5LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQyNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJsb2NrIE9mZmxvYWQgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYmxvY2sgb2ZmbG9hZCBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBmaXggdGhhdCB3YXMgaW1wbGVtZW50ZWQuIEl0IHNlZW1zIGB0Y2ZfYmxvY2tfZ2V0X2V4dGAgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYmxvY2sgY3JlYXRpb24sIG1lYW5pbmcgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggc3RhbmRhcmQgVEMgbmV0bGluayBjb21tYW5kcy4gVGhhdCBtYWtlcyBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYCBhIGNsZWFyIGNhbmRpZGF0ZSBmb3IgdGVzdGluZywgYXMgd2VsbC4KClRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBpcyB0aGlzOiBUaGUgcGF0Y2ggYXR0ZW1wdHMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCBmYWlsdXJlIGluIGBpbmRpcl9kZXZfYWRkYCwgYnV0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXNuJiMzOTt0IGhhbmRsZSB0aGUgZXJyb3IgcHJvcGVybHksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gbGVha3MgaWYgYGJvLSZndDtjYl9saXN0YCBpcyBlbXB0eS4gUmlnaHQsIEkgc2VlIGl0IG5vdy4gYGluZGlyX2Rldl9hZGRgICpjYW4qIHJldHVybiBhbiBlcnJvciwgYW5kIHRoZSBjb2RlIGNhcHR1cmVzIHRoYXQgaW4gYHJlcGxheV9hZGRlZCA9IGFkZF9lcnIgPT0gMGAuIE5vdywgaWYgYHJlcGxheV9hZGRlZGAgaXMgKnRydWUqIChtZWFuaW5nIHRoZSBhZGRpdGlvbiBzdWNjZWVkZWQpIGFuZCBpZiB0aGUgY2FsbGJhY2sgbGlzdCBgYm8tJmd0O2NiX2xpc3RgIGlzIGVtcHR5LCB0aGVuIHRoZSBjb2RlIGNhbGxzIGBpbmRpcl9kZXZfcmVtb3ZlKGRhdGEpYCBhbmQgcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBFZmZlY3RpdmVseSwgdGhpcyBwYXRjaCBwcmV2ZW50cyB0aGUgaW5kaXJlY3QgZGV2aWNlIHJlZ2lzdHJhdGlvbiBsZWFrIGlmIG5vIGNhbGxiYWNrcyBhcmUgYWRkZWQgdG8gdGhlIG9mZmxvYWQgbGlzdC4gUHJldHR5IGNsZXZlciwgSSBzdXBwb3NlLiBJdCYjMzk7cyBhIHByYWdtYXRpYyB3b3JrYXJvdW5kLgoKR2l2ZW4gdGhpcywgSSBzaG91bGQgZm9jdXMgb24gYSBmZXcga2V5IHN5bWJvbHM6IGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIGlzIGRlZmluaXRlbHkgdGhlIHRhcmdldCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBtb2RpZmllZCBmdW5jdGlvbi4gQWxzbywgYHRjZl9ibG9ja19vZmZsb2FkX2JpbmRgIGFuZCBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYCBhcmUgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIG9mZmxvYWQgbGlmZWN5Y2xlLCBzbyB0aG9zZSBhcmUgZ29vZCBmb2N1cyBwb2ludHMuCgpJJiMzOTtsbCBjaGVjayBgbmV0L2NvcmUvZmxvd19vZmZsb2FkLmNgIGZvciBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYCB0byBnZXQgYSBiZXR0ZXIgZmVlbCBmb3IgdGhlIGNvbnRleHQuIFRoaXMgc2hvdWxkIGhlbHAgbWUgYmV0dGVyIHVuZGVyc3RhbmQgaG93IHRoaXMgZml4IGludGVncmF0ZXMgd2l0aCB0aGUgZXhpc3RpbmcgZmxvdyBvZmZsb2FkIG1lY2hhbmlzbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmxvd19vZmZsb2FkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmxvd19vZmZsb2FkLmM9NTg5PXN0YXRpYyBpbnQgaW5kaXJfZGV2X3JlbW92ZSh2b2lkICpkYXRhKVxuLS1cbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTYwMi1cbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jOjYwMzppbnQgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXHRzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTYwNC1cdFx0XHRcdGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICpkYXRhLFxuLS1cbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTY0Mi19XG5uZXQvY29yZS9mbG93X29mZmxvYWQuYzo2NDM6RVhQT1JUX1NZTUJPTChmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQpO1xubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjQ0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDQ2CgkJCQkJCQlvdXRwdXQ6IDIxMQoJCQkJCQkJdGhvdWdodHM6IDU5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgTmV0d29ya2luZyBGbG93IE9mZmxvYWQgQnVnKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcG90ZW50aWFsIGxlYWsgaW4gYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAuIEkmIzM5O20gY2hlY2tpbmcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgTkVUX0NMU2AsIGBORVRfQ0xTX0FDVGAsIGBORl9UQUJMRVNgLCBhbmQgYE5GX0ZMT1dfVEFCTEVgLiBJJiMzOTttIHByZXR0eSBzdXJlIEkgaGF2ZSB0aGUgY29uZmlnIG5hbWVzIGNvcnJlY3QsIGJ1dCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRob3NlIGFyZSB0aGUgY29ycmVjdCBuYW1lcywgYENPTkZJR19ORVRfQ0xTYCBmb3IgdHJhZmZpYyBjb250cm9sIGNsYXNzaWZpZXIsIGBDT05GSUdfTkVUX0NMU19BQ1RgIGZvciB0cmFmZmljIGNvbnRyb2wgYWN0aW9ucywgYENPTkZJR19ORl9UQUJMRVNgIGZvciBOZXRmaWx0ZXIgbmZfdGFibGVzLCBhbmQgYENPTkZJR19ORl9GTE9XX1RBQkxFYCBmb3IgdGhlIE5ldGZpbHRlciBmbG93IHRhYmxlLgoKVGhlIG1haW4gcXVlc3Rpb24gaXMgd2hldGhlciBgTkVUX0NMU2AgaXMgc3VmZmljaWVudCBvbiBpdHMgb3duLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBlbmFibGluZyBgY2xzX2FwaS5vYCB3aGljaCBzZWVtcyByaWdodC4gVGhlIG90aGVycyBlbmFibGUgdGhlaXIgY29ycmVzcG9uZGluZyBtb2R1bGVzLiBOb3csIGlzIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHJlYWNoYWJsZSBldmVuIHdpdGhvdXQgaGFyZHdhcmUgb2ZmbG9hZD8gWWVzLCBpdCYjMzk7cyB1bmNvbmRpdGlvbmFsbHkgY2FsbGVkLCB3aGljaCBpcyBpbXBvcnRhbnQuIEl0IHNldHMgdXAgYm90aCBUQyBibG9ja3MgYW5kIE5ldGZpbHRlciBmbG93IHRhYmxlcy4gRXZlbiBpZiB0aGUgZGV2aWNlICpkb2VzbiYjMzk7dCogc3VwcG9ydCBvZmZsb2FkLCBpdCYjMzk7bGwgcnVuLCBhbmQganVzdCByZXR1cm4gYC1FT1BOT1RTVVBQYC4gVGhhdCYjMzk7cyB0aGUga2V5LgoKU28sIGBpbmRpcl9kZXZfYWRkYCBhZGRzIHRoZSBkZXZpY2UgdG8gYGZsb3dfYmxvY2tfaW5kcl9kZXZfbGlzdGAuIFRoZSBmdW5jdGlvbiB0aGVuIGl0ZXJhdGVzIHRocm91Z2ggdGhhdCBsaXN0LCBjYWxsaW5nIGB0aGlzLSZndDtjYmAuIElmIGBsaXN0X2VtcHR5KCZhbXA7Ym8tJmd0O2NiX2xpc3QpYCBhZnRlciB0aGF0LCBtZWFuaW5nIG5vIGNhbGxiYWNrcyB3ZXJlIHJlZ2lzdGVyZWQsIHRoZW4gYGluZGlyX2Rldl9yZW1vdmVgIHNob3VsZCBiZSBjYWxsZWQsIGFuZCBpdCByZXR1cm5zIGAtRU9QTk9UU1VQUGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHByb2JsZW0gbGllcywgaXQgd2FzbiYjMzk7dC4KCkFscmlnaHQsIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCBpcyBmaXhpbmcgYSBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgLiBXaGVuIGFuIGluZGlyZWN0IGRldmljZSBpcyBhZGRlZCBidXQgbm8gY2FsbGJhY2tzIGFyZSByZWdpc3RlcmVkLCBpdCBub3cgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbi4gVGhpcyBpcyBjcnVjaWFsIG5ldHdvcmtpbmcgbG9naWMsIGRlYWxpbmcgd2l0aCBmbG93IG9mZmxvYWQsIHVzZWQgYnkgYm90aCBUQyBhbmQgTmV0ZmlsdGVyIGFuZCByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29uZmlndXJhdGlvbi4KCkkgc2hvdWxkIGFsc28gbm90ZSB0aGUga2V5IHN5bWJvbHMgaGVyZTogYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAsIGB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWRgLCBgbmZ0X2luZHJfYmxvY2tfb2ZmbG9hZF9jbWRgLCBhbmQgYG5mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZGAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBvZmZsb2FkIGNvbW1hbmRzIGFyZSBwYXNzZWQgZG93bi4KCk9rYXksIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgaGFuZGxlIG9uIHRoaXMuIEkmIzM5O2xsIHN1bW1hcml6ZSBteSBmaW5kaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQmIzM0OywKICAgICYjMzQ7dGNmX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQmIzM0OywKICAgICYjMzQ7dGNmX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMTowMi4yMjg3NzY4NThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTYyNTY1MTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQ0xTXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORl9GTE9XX1RBQkxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkXCIsXG4gICAgXCJ0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWRcIixcbiAgICBcIm5mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kXCIsXG4gICAgXCJuZl9mbG93X3RhYmxlX2luZHJfb2ZmbG9hZF9jbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjAyLjIyODc4MTYzOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1MDM1OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDRhYmJhZGM0YTE0NWQzNzVlY2NiM2JkODMwNWIwYTg1MDhlODY5YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxOCAwMDoxMTowMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9mbG93X29mZmxvYWQuYyBiL25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jXFxuaW5kZXggNTA3MWQ3ZmU2Y2UyYTUuLjVmYmIxYWU0Njc5ZGRlIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jXFxuKysrIGIvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmNcXG5AQCAtNjA2LDE1ICs2MDYsMjAgQEAgaW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcdHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRcXHRcXHR2b2lkICgqY2xlYW51cCkoc3RydWN0IGZsb3dfYmxvY2tfY2IgKmJsb2NrX2NiKSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZmxvd19pbmRyX2RldiAqdGhpcztcXG4rXFx0Ym9vbCByZXBsYXlfYWRkZWQgPSBmYWxzZTtcXG4gXFx0dTMyIGNvdW50ID0gMDtcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmZsb3dfaW5kcl9ibG9ja19sb2NrKTtcXG4gXFx0aWYgKGJvKSB7XFxuLVxcdFxcdGlmIChiby1cXHUwMDNlY29tbWFuZCA9PSBGTE9XX0JMT0NLX0JJTkQpXFxuLVxcdFxcdFxcdGluZGlyX2Rldl9hZGQoZGF0YSwgZGV2LCBzY2gsIHR5cGUsIGNsZWFudXAsIGJvKTtcXG4tXFx0XFx0ZWxzZSBpZiAoYm8tXFx1MDAzZWNvbW1hbmQgPT0gRkxPV19CTE9DS19VTkJJTkQpXFxuK1xcdFxcdGlmIChiby1cXHUwMDNlY29tbWFuZCA9PSBGTE9XX0JMT0NLX0JJTkQpIHtcXG4rXFx0XFx0XFx0aW50IGFkZF9lcnI7XFxuK1xcbitcXHRcXHRcXHRhZGRfZXJyID0gaW5kaXJfZGV2X2FkZChkYXRhLCBkZXYsIHNjaCwgdHlwZSwgY2xlYW51cCwgYm8pO1xcbitcXHRcXHRcXHRyZXBsYXlfYWRkZWQgPSBhZGRfZXJyID09IDA7XFxuK1xcdFxcdH0gZWxzZSBpZiAoYm8tXFx1MDAzZWNvbW1hbmQgPT0gRkxPV19CTE9DS19VTkJJTkQpIHtcXG4gXFx0XFx0XFx0aW5kaXJfZGV2X3JlbW92ZShkYXRhKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRoaXMsIFxcdTAwMjZmbG93X2Jsb2NrX2luZHJfZGV2X2xpc3QsIGxpc3QpIHtcXG5AQCAtNjIzLDkgKzYyOCwxNyBAQCBpbnQgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFx0c3RydWN0IFFkaXNjICpzY2gsXFxuIFxcdFxcdFxcdGNvdW50Kys7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChibyBcXHUwMDI2XFx1MDAyNiBsaXN0X2VtcHR5KFxcdTAwMjZiby1cXHUwMDNlY2JfbGlzdCkpIHtcXG4rXFx0XFx0aWYgKHJlcGxheV9hZGRlZClcXG4rXFx0XFx0XFx0aW5kaXJfZGV2X3JlbW92ZShkYXRhKTtcXG4rXFx0XFx0ZXJyID0gLUVPUE5PVFNVUFA7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGVyciA9IGNvdW50O1xcbitcXHR9XFxuK1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmZsb3dfaW5kcl9ibG9ja19sb2NrKTtcXG4gXFxuLVxcdHJldHVybiAoYm8gXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2Ym8tXFx1MDAzZWNiX2xpc3QpKSA/IC1FT1BOT1RTVVBQIDogY291bnQ7XFxuK1xcdHJldHVybiBlcnI7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MDIuNjQ0NDc5OTI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTIwOTkzMjI1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQ0xTXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORl9GTE9XX1RBQkxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkXCIsXG4gICAgXCJ0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWRcIixcbiAgICBcIm5mdF9pbmRyX2Jsb2NrX29mZmxvYWRfY21kXCIsXG4gICAgXCJuZl9mbG93X3RhYmxlX2luZHJfb2ZmbG9hZF9jbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBsZWFrIGluIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHdoZW4gYW4gaW5kaXJlY3QgZGV2aWNlIGlzIGFkZGVkIGJ1dCBubyBjYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGJsb2NrIG9mZmxvYWQgbGlzdC4gSXQgZW5zdXJlcyB0aGF0IGBpbmRpcl9kZXZfcmVtb3ZlYCBpcyBjYWxsZWQgdG8gY2xlYW4gdXAgdGhlIHJlZ2lzdHJhdGlvbiBpZiBgaW5kaXJfZGV2X2FkZGAgc3VjY2VlZGVkIGJ1dCB0aGUgY2FsbGJhY2sgbGlzdCByZW1haW5zIGVtcHR5LiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyByZWxhdGVkIHRvIGZsb3cgb2ZmbG9hZCAodXNlZCBieSBUQyBhbmQgTmV0ZmlsdGVyKSBhbmQgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDRhYmJhZGM0YTE0NWQzNzVlY2NiM2JkODMwNWIwYTg1MDhlODY5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDE4IDAwOjExOjAxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmMgYi9uZXQvY29yZS9mbG93X29mZmxvYWQuY1xuaW5kZXggNTA3MWQ3ZmU2Y2UyYTUuLjVmYmIxYWU0Njc5ZGRlIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZmxvd19vZmZsb2FkLmNcbisrKyBiL25ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jXG5AQCAtNjA2LDE1ICs2MDYsMjAgQEAgaW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFx0c3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0XHR2b2lkICgqY2xlYW51cCkoc3RydWN0IGZsb3dfYmxvY2tfY2IgKmJsb2NrX2NiKSlcbiB7XG4gXHRzdHJ1Y3QgZmxvd19pbmRyX2RldiAqdGhpcztcbitcdGJvb2wgcmVwbGF5X2FkZGVkID0gZmFsc2U7XG4gXHR1MzIgY291bnQgPSAwO1xuIFx0aW50IGVycjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2Zmxvd19pbmRyX2Jsb2NrX2xvY2spO1xuIFx0aWYgKGJvKSB7XG4tXHRcdGlmIChiby1cdTAwM2Vjb21tYW5kID09IEZMT1dfQkxPQ0tfQklORClcbi1cdFx0XHRpbmRpcl9kZXZfYWRkKGRhdGEsIGRldiwgc2NoLCB0eXBlLCBjbGVhbnVwLCBibyk7XG4tXHRcdGVsc2UgaWYgKGJvLVx1MDAzZWNvbW1hbmQgPT0gRkxPV19CTE9DS19VTkJJTkQpXG4rXHRcdGlmIChiby1cdTAwM2Vjb21tYW5kID09IEZMT1dfQkxPQ0tfQklORCkge1xuK1x0XHRcdGludCBhZGRfZXJyO1xuK1xuK1x0XHRcdGFkZF9lcnIgPSBpbmRpcl9kZXZfYWRkKGRhdGEsIGRldiwgc2NoLCB0eXBlLCBjbGVhbnVwLCBibyk7XG4rXHRcdFx0cmVwbGF5X2FkZGVkID0gYWRkX2VyciA9PSAwO1xuK1x0XHR9IGVsc2UgaWYgKGJvLVx1MDAzZWNvbW1hbmQgPT0gRkxPV19CTE9DS19VTkJJTkQpIHtcbiBcdFx0XHRpbmRpcl9kZXZfcmVtb3ZlKGRhdGEpO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRoaXMsIFx1MDAyNmZsb3dfYmxvY2tfaW5kcl9kZXZfbGlzdCwgbGlzdCkge1xuQEAgLTYyMyw5ICs2MjgsMTcgQEAgaW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFx0c3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0Y291bnQrKztcbiBcdH1cbiBcbitcdGlmIChibyBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZiby1cdTAwM2VjYl9saXN0KSkge1xuK1x0XHRpZiAocmVwbGF5X2FkZGVkKVxuK1x0XHRcdGluZGlyX2Rldl9yZW1vdmUoZGF0YSk7XG4rXHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuK1x0fSBlbHNlIHtcbitcdFx0ZXJyID0gY291bnQ7XG4rXHR9XG4rXG4gXHRtdXRleF91bmxvY2soXHUwMDI2Zmxvd19pbmRyX2Jsb2NrX2xvY2spO1xuIFxuLVx0cmV0dXJuIChibyBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZiby1cdTAwM2VjYl9saXN0KSkgPyAtRU9QTk9UU1VQUCA6IGNvdW50O1xuK1x0cmV0dXJuIGVycjtcbiB9XG4gRVhQT1JUX1NZTUJPTChmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MDIuNjQ0NDgxMDc5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg1MTk2OTI2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIEZsb3cgT2ZmbG9hZCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgd2l0aGluIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AuIEl0J3MgZm9jdXNlZCBvbiBoYW5kbGluZyBpbmRpcmVjdCBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgdGhlIGxvZ2ljIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIHRoZW0gZHVyaW5nIG9mZmxvYWQgb3BlcmF0aW9ucy4gSXQgc2VlbXMgbGlrZSBpdCdzIGFkZHJlc3NpbmcgYW4gaXNzdWUgd2hlcmUgdGhlIGNhbGxiYWNrIGxpc3QgKGBiby1cdTAwM2VjYl9saXN0YCkgbWlnaHQgYmUgZW1wdHkgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHJlc291cmNlIGxlYWsgb3IgaW5jb25zaXN0ZW50IHN0YXRlLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgYEZMT1dfQkxPQ0tfQklORGAgY29tbWFuZC4gSWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgd2hlbiBhIGJpbmRpbmcgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCwgdGhlIGNvZGUgbm93IGNhcHR1cmVzIHRoZSByZXR1cm4gdmFsdWUgb2YgYGluZGlyX2Rldl9hZGRgIGFuZCBzZXRzIGEgZmxhZywgYHJlcGxheV9hZGRlZGAsIGJhc2VkIG9uIHdoZXRoZXIgdGhhdCBhZGRpdGlvbiB3YXMgc3VjY2Vzc2Z1bC4gTGF0ZXIsIGEgY2hlY2sgaXMgcGVyZm9ybWVkOiBpZiB3ZSBoYXZlIGEgYGJvYCBhbmQgdGhlIGNhbGxiYWNrIGxpc3QgaXMgZW1wdHksIGFuZCBpZiBgcmVwbGF5X2FkZGVkYCBpcyB0cnVlLCBpdCBjYWxscyBgaW5kaXJfZGV2X3JlbW92ZShkYXRhKWAuIFRoZSBmdW5jdGlvbiB0aGVuIHJldHVybnMgYC1FT1BOT1RTVVBQYC4gVGhpcyBzZWVtcyB0byBiZSB0aGUgY3J1Y2lhbCBwYXJ0IG9mIHRoZSBmaXguIEkgYmVsaWV2ZSB0aGlzIHBhcnQgaXMgYW4gYXR0ZW1wdCB0byBjbGVhbiB1cCBhbnkgcGFydGlhbGx5IGFkZGVkIGluZGlyZWN0IGRldmljZXMgd2hlbiB0aGUgYmluZGluZyBmYWlscyBpbiBzb21lIHdheS5cblxuQmFzaWNhbGx5LCBpdCdzIGEgc2FmZXR5IG5ldC4gSWYgYSBiaW5kaW5nIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQsIGFuZCB0aGUgYmluZGluZyBlbmRzIHVwIHdpdGggYW4gZW1wdHkgY2FsbGJhY2sgbGlzdCwgaXQgcmVtb3ZlcyB0aGUgbmV3bHkgYWRkZWQgaW5kaXJlY3QgZGV2aWNlIGlmIHRoZSBhZGRpdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgYW5kIHRoZW4gcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIGxlYWsgb3IgYW4gaW5jb3JyZWN0IHN0YXRlIHdoZXJlIHRoZSBpbmRpcmVjdCBkZXZpY2UgaXMgYWRkZWQgYnV0IG5vdCBwcm9wZXJseSB0cmFja2VkLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIHJlYXNvbmFibGUgY2hhbmdlIHRvIGltcHJvdmUgcmVsaWFiaWxpdHkgd2l0aGluIHRoZSBmbG93IG9mZmxvYWQgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjIyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MDcuNDk2NDUyNjQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjQ3NzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9mbG93X29mZmxvYWQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9mbG93X29mZmxvYWQuYz01ODk9c3RhdGljIGludCBpbmRpcl9kZXZfcmVtb3ZlKHZvaWQgKmRhdGEpXFxuLS1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDItXFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmM6NjAzOmludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXHRzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDQtXFx0XFx0XFx0XFx0ZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKmRhdGEsXFxuLS1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02NDItfVxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jOjY0MzpFWFBPUlRfU1lNQk9MKGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZCk7XFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjQ0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMTowNy41NTYxMDY0ODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkzNDg2MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgS2VybmVsIEZsb3cgT2ZmbG9hZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGZvciB0aGlzIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AgbW9kdWxlLiBNeSBmaXJzdCB0aG91Z2h0IHdhcyB0byBqdXN0IGxvb2sgZm9yIGBDT05GSUdfTkVUX0ZMT1dfTElNSVRgIHdoaWNoIHNlZW1zIGxvZ2ljYWwuIEhvd2V2ZXIsIEkgd2FudCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgY2hlY2sgdGhlIGBuZXQvY29yZS9NYWtlZmlsZWAgaW5zdGVhZC4gSXQncyB0aGUgTWFrZWZpbGUgdGhhdCB1bHRpbWF0ZWx5IGRpY3RhdGVzIHRoZSBjb21waWxhdGlvbiBhbmQgaW5jbHVzaW9uIG9mIHRoZSBzb3VyY2UgZmlsZSwgc28gdGhhdCdzIHdoZXJlIHRoZSBhY3R1YWwgZGVwZW5kZW5jaWVzIHdpbGwgYmUgZGVmaW5lZC4gSSdsbCBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGFjdHVhbCBjb25maWd1cmF0aW9uIGNvbmRpdGlvbnMgdGhlcmUsIGluc3RlYWQgb2YgcmVseWluZyBvbiBhbiBhc3N1bWVkIGRlcGVuZGVuY3kgdGhhdCBtaWdodCBiZSBtaXN0YWtlbi4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBNYWtlZmlsZSBoYXMgdG8gc2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDIyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MTAuMzQ5NTk0NDRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY5NDk1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmxvd19vZmZsb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTEyPW9iai15XFx0XFx0ICAgICArPSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXFxcXG4tLVxcbm5ldC9jb3JlL01ha2VmaWxlLTE0LVxcdFxcdFxcdHNvY2tfZGlhZy5vIGRldl9pb2N0bC5vIHRzby5vIHNvY2tfcmV1c2Vwb3J0Lm8gXFxcXFxcbm5ldC9jb3JlL01ha2VmaWxlOjE1OlxcdFxcdFxcdGZpYl9ub3RpZmllci5vIHhkcC5vIGZsb3dfb2ZmbG9hZC5vIGdyby5vIFxcXFxcXG5uZXQvY29yZS9NYWtlZmlsZS0xNi1cXHRcXHRcXHRuZXRkZXYtZ2VubC5vIG5ldGRldi1nZW5sLWdlbi5vIG5ldGRldl93b3JrLm8gZ3NvLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MTAuNDA2NTU2NzM5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3MjY3OTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyBGbG93IE9mZmxvYWQgQ29tcGlsYXRpb24gYW5kIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBidWlsZCBzeXN0ZW0gaXMgY29tcGlsaW5nIGBvYmoteWAgdW5jb25kaXRpb25hbGx5LCBpbnRlcmVzdGluZy4gQW5kLCBvZiBjb3Vyc2UsIGBmbG93X29mZmxvYWQub2AgaXMgcHVsbGVkIGluIHZpYSBgb2JqLXlgLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgaG9sZCBvbiBhIG1pbnV0ZSwgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgaGVyZSwgc28gSSdsbCBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgZ292ZXJuaW5nIGZsb3cgb2ZmbG9hZC4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gSSdtIHRyeWluZyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWdzIGZvciB0aGUgZmxvdyBvZmZsb2FkIGZlYXR1cmVzLiBBaCwgaGVyZSdzIHRoZSBob29rIC0gYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgaXMgdXNlZCwgd2hpY2ggbWVhbnMgaXQgaXMgdGllZCB0byBUcmFmZmljIENvbnRyb2wgKFRDKSBhbmQgYWxzbyB0aGUgdmFyaW91cyBkcml2ZXJzLiBPa2F5LCB0aGF0IGNvbmZpcm1zIGl0cyBicm9hZGVyIGltcGFjdC4gVGhpcyBsaWtlbHkgaW5mb3JtcyB0aGUgY29uZmlndXJhdGlvbiBzdHJhdGVneSB0byBhY3RpdmF0ZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIE5vdyBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdCBiZWluZyBjb21waWxlZCBpbiB3aXRoIGBvYmoteWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMToxMy41NzkyMzgyNDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwMjYzMjAzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oPTczOT12b2lkIGZsb3dfaW5kcl9kZXZfdW5yZWdpc3RlcihmbG93X2luZHJfYmxvY2tfYmluZF9jYl90ICpjYiwgdm9pZCAqY2JfcHJpdixcXG5pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaC03NDAtXFx0XFx0XFx0ICAgICAgdm9pZCAoKnJlbGVhc2UpKHZvaWQgKmNiX3ByaXYpKTtcXG5pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaDo3NDE6aW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaC03NDItXFx0XFx0XFx0XFx0ZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKmRhdGEsXFxuLS1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYz01ODk9c3RhdGljIGludCBpbmRpcl9kZXZfcmVtb3ZlKHZvaWQgKmRhdGEpXFxuLS1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDItXFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmM6NjAzOmludCBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXHRzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02MDQtXFx0XFx0XFx0XFx0ZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKmRhdGEsXFxuLS1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02NDItfVxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jOjY0MzpFWFBPUlRfU1lNQk9MKGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZCk7XFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmMtNjQ0LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYz0xMjM4PXN0YXRpYyBpbnQgbmZfZmxvd190YWJsZV9pbmRyX29mZmxvYWRfY21kKHN0cnVjdCBmbG93X2Jsb2NrX29mZmxvYWQgKmJvLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0xMjQ2LVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmM6MTI0NzpcXHRyZXR1cm4gZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKGRldiwgTlVMTCwgVENfU0VUVVBfRlQsIGZsb3d0YWJsZSwgYm8sXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYy0xMjQ4LVxcdFxcdFxcdFxcdFxcdCAgIG5mX2Zsb3dfdGFibGVfaW5kcl9jbGVhbnVwKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX29mZmxvYWQuYz00MjM9c3RhdGljIGludCBuZnRfaW5kcl9ibG9ja19vZmZsb2FkX2NtZChzdHJ1Y3QgbmZ0X2Jhc2VfY2hhaW4gKmJhc2VjaGFpbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX29mZmxvYWQuYy00MzItXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfb2ZmbG9hZC5jOjQzMzpcXHRlcnIgPSBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoZGV2LCBOVUxMLCBUQ19TRVRVUF9CTE9DSywgYmFzZWNoYWluLCBcXHUwMDI2Ym8sXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfb2ZmbG9hZC5jLTQzNC1cXHRcXHRcXHRcXHRcXHQgIG5mdF9pbmRyX2Jsb2NrX2NsZWFudXApO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYz0yMDM9c3RhdGljIGludCB0Y2ZfYWN0aW9uX29mZmxvYWRfY21kX2V4KHN0cnVjdCBmbG93X29mZmxvYWRfYWN0aW9uICpmbF9hY3QsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIwNy1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjIwODpcXHRlcnIgPSBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWQoTlVMTCwgTlVMTCwgVENfU0VUVVBfQUNULFxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMjA5LVxcdFxcdFxcdFxcdFxcdCAgZmxfYWN0LCBOVUxMLCBOVUxMKTtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9ODIzPXN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfY21kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy04NDctXFxubmV0L3NjaGVkL2Nsc19hcGkuYzo4NDg6XFx0Zmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKGRldiwgc2NoLCBUQ19TRVRVUF9CTE9DSywgYmxvY2ssIFxcdTAwMjZibyxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTg0OS1cXHRcXHRcXHRcXHQgICAgdGNfYmxvY2tfaW5kcl9jbGVhbnVwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MTUuNzgxODc1NTcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMzc0Nzg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGlzIGNvZGUgc25pcHBldCBpcyB1c2VkIGFjcm9zcyBhIGZldyBrZXkgYXJlYXMgd2l0aGluIHRoZSBrZXJuZWwncyBuZXR3b3JraW5nIHN0YWNrOiBgbmZfZmxvd190YWJsZV9vZmZsb2FkLmNgLCBgbmZfdGFibGVzX29mZmxvYWQuY2AsIGBhY3RfYXBpLmNgLCBhbmQgYGNsc19hcGkuY2AuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgYSBmZXcgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCB3aWxsIGxpa2VseSBpbmZsdWVuY2UgaG93IHRoaXMgaXMgdXNlZCBvciBldmVuIGVuYWJsZWQuIEknbSB6ZXJvaW5nIGluIG9uIGBDT05GSUdfTkVUX0NMU19BQ1RgLCBgQ09ORklHX05FVF9TQ0hFRGAsIGBDT05GSUdfTkZfVEFCTEVTYCwgYW5kIGBDT05GSUdfTkZfRkxPV19UQUJMRWAgYXMgdGhlIGxpa2VseSBjYW5kaWRhdGVzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHRoaW5rIGEgZGVlcGVyIGRpdmUgaW50byBgbmV0L3NjaGVkL2Nsc19hcGkuY2AgYW5kIGBuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jYCBpcyB0aGUgYmVzdCBzdGFydGluZyBwb2ludCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MTkuMTk1NjI1NDQ2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzYzMDE1OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfZmxvd190YWJsZV9vZmZsb2FkLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcXHRcXHQ6PSBuZl9mbG93X3RhYmxlX2NvcmUubyBuZl9mbG93X3RhYmxlX2lwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ0LVxcdFxcdFxcdFxcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NTpcXHRcXHRcXHRcXHQgICBuZl9mbG93X3RhYmxlX29mZmxvYWQubyBuZl9mbG93X3RhYmxlX3hkcC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDYtbmZfZmxvd190YWJsZS0kKENPTkZJR19ORl9GTE9XX1RBQkxFX1BST0NGUykgKz0gbmZfZmxvd190YWJsZV9wcm9jZnMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMToxOS41MzE5MzY5NDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY3NTUwMzA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKk5hdmlnYXRpbmcgS2VybmVsIE9mZmxvYWQgU3RydWN0dXJlcyoqXG5cbk9rYXksIHNvIGBDT05GSUdfTkZfRkxPV19UQUJMRWAgaXMgdGhlIGtleSBoZXJlLiBSaWdodCwgdGhhdCBtZWFucyB0aGUgYG5mX2Zsb3dfdGFibGUub2AgbW9kdWxlIGdldHMgYnVpbHQuIEFuZCwgaWYgSSdtIHJlbWVtYmVyaW5nIGNvcnJlY3RseSwgdGhhdCBhbHNvIHB1bGxzIGluIGBuZl9mbG93X3RhYmxlX29mZmxvYWQub2AuIE5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBOZXRmaWx0ZXIgb2ZmbG9hZCBmcmFtZXdvcmssIGFuZCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgYG5mX3RhYmxlc19vZmZsb2FkLm9gIG1vZHVsZSBhbHNvIGhhcyBzb21lIGRlcGVuZGVuY2llcyBoZXJlLiBMZXQncyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGEgY3JpdGljYWwgZGV0YWlsIGFib3V0IHRoZSBpbnRlcmNvbm5lY3Rpb25zLiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGUgb2ZmbG9hZGluZyBkZXBlbmRlbmNpZXMgYXJlIGFsbCBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEzNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjIyLjIwNzQ0MjIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTExNjAyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl90YWJsZXNfb2ZmbG9hZC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT04Nz1uZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcXFxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05MS1cXHRcXHQgIG5mdF9jb3VudGVyLm8gbmZ0X29ianJlZi5vIG5mdF9pbm5lci5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjkyOlxcdFxcdCAgbmZ0X2NoYWluX3JvdXRlLm8gbmZfdGFibGVzX29mZmxvYWQubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05My1cXHRcXHQgIG5mdF9zZXRfaGFzaC5vIG5mdF9zZXRfYml0bWFwLm8gbmZ0X3NldF9yYnRyZWUubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjIyLjI2NjU2MzgyOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzA4NDkzNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBhbmQgVHJhZmZpYyBDb250cm9sIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIGBDT05GSUdfTkZfVEFCTEVTYCBhY3RpdmF0ZXMgYG5mX3RhYmxlcy5vYC4gSSBrbm93IHRoYXQgbWVhbnMgYG5mX3RhYmxlc19vZmZsb2FkLm9gIGdldHMgcHVsbGVkIGluIHRvbywgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBvZmZsb2FkaW5nIE5ldGZpbHRlciBydWxlcy5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBtaWdodCBpbnRlcmFjdCB3aXRoIHRyYWZmaWMgY29udHJvbCwgb3IgYHRjYC4gSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgbmV0L3NjaGVkL01ha2VmaWxlYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBpbnRlcmVzdGVkIGluIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBjbHNfYXBpLm9gIGFuZCBgYWN0X2FwaS5vYC4gVGhlc2UgYXJlIGNlbnRyYWwgdG8gY2xhc3NpZmljYXRpb24gYW5kIGFjdGlvbnMgcmVzcGVjdGl2ZWx5LCB3aGljaCBpcyB3aGVyZSBOZXRmaWx0ZXIgY2FuLCBhbmQgb2Z0ZW4gZG9lcywgaW50ZXJzZWN0IHdpdGggdHJhZmZpYyBjb250cm9sIG9uIGEgc3lzdGVtLiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgbW9kdWxlcyBwbGF5IG5pY2VseSB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUzOSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjI0Ljk3NTA1OTI1OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkwNTA2NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2xzX2FwaS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkVUX1NDSEVEKVxcdFxcdCs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05FVF9DTFMpXFx0XFx0Kz0gY2xzX2FwaS5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcXHQrPSBhY3RfYXBpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MjUuMDM0MTE1OTE4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzI0MDY2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMgZm9yIE5ldHdvcmsgT2ZmbG9hZCoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiBuZXR3b3JrIG9mZmxvYWQgY29uZmlndXJhdGlvbiBoZXJlLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfTkVUX0NMU2AgYW5kIGBDT05GSUdfTkVUX0NMU19BQ1RgIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LCBnaXZlbiB0aGUgdGFzayBhdCBoYW5kLiBJbml0aWFsbHksIEkgdGhvdWdodCB0aGF0IGBDT05GSUdfTkVUX1NDSEVEYCBtaWdodCBiZSByZXF1aXJlZCB0b28sIHNwZWNpZmljYWxseSBmb3IgdGhlIGBjbHNfYXBpLm9gIGFuZCBgYWN0X2FwaS5vYCBtb2R1bGVzLCBidXQgb24gZnVydGhlciByZXZpZXcsIGl0IGFwcGVhcnMgYENPTkZJR19ORVRfQ0xTYCBhbmQgYENPTkZJR19ORVRfQ0xTX0FDVGAgc3RhbmQgYWxvbmUuXG5cbk5vdywgYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAuLi4gdGhhdCdzIGRlZmluZWQgaW4gYG5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jYCwgYW5kIHRoYXQgc2VlbXMgdG8gYmUgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5LCB3aGljaCBpcyBnb29kLiBCdXQgdG8gYWN0dWFsbHkgKnVzZSogdGhhdCBmdW5jdGlvbmFsaXR5LCBJJ20gdGhpbmtpbmcgd2UncmUgZ29pbmcgdG8gbmVlZCB0byBpbnZvbHZlIGVpdGhlciBUQyBvciBOZXRmaWx0ZXIgb2ZmbG9hZCBwYXRocy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZ290IHRoZSBjb3JyZWN0IG1vZHVsZXMgZW5hYmxlZC4gSSBzaG91bGQgYWRkIGBORVRfQ0xTYCwgYE5FVF9DTFNfQUNUYCwgYE5GX1RBQkxFU2AsIGFuZCBgTkZfRkxPV19UQUJMRWAgdG8gdGhlIGNvbmZpZ3VyYXRpb24uXG5cbldhaXQgYSBzZWNvbmQsIGEga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgKnJlcXVpcmVzKiBoYXJkd2FyZSBvZmZsb2FkIGNhcGFiaWxpdGllcy4gVGhhdCdzIGNydWNpYWwuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQuIEl0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gc2V0dGluZyB1cCB0aGUgb2ZmbG9hZCBmb3IgYSBwYXJ0aWN1bGFyIGJsb2NrIG9mIGZ1bmN0aW9uYWxpdHksIGFzIHNlZW4gaW4gYHRjZl9ibG9ja19vZmZsb2FkX2NtZGAsIHNvIEkgbmVlZCB0byBmYWN0b3IgdGhhdCBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg5NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMToyOS40NjY1MjQzMzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzQwMTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9ibG9ja19vZmZsb2FkX2NtZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmM9ODE4PXN0YXRpYyBib29sIHRjZl9ibG9ja19vZmZsb2FkX2luX3VzZShzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaylcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODIyLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6ODIzOnN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfY21kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODI0LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9ODU1PXN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfYmluZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy04NzQtXFxubmV0L3NjaGVkL2Nsc19hcGkuYzo4NzU6XFx0ZXJyID0gdGNmX2Jsb2NrX29mZmxvYWRfY21kKGJsb2NrLCBkZXYsIHEsIGVpLCBGTE9XX0JMT0NLX0JJTkQsIGV4dGFjayk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy04NzYtXFx0aWYgKGVyciA9PSAtRU9QTk9UU1VQUClcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9ODk1PXN0YXRpYyB2b2lkIHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy05MDEtXFx0ZG93bl93cml0ZShcXHUwMDI2YmxvY2stXFx1MDAzZWNiX2xvY2spO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6OTAyOlxcdGVyciA9IHRjZl9ibG9ja19vZmZsb2FkX2NtZChibG9jaywgZGV2LCBxLCBlaSwgRkxPV19CTE9DS19VTkJJTkQsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtOTAzLVxcdGlmIChlcnIgPT0gLUVPUE5PVFNVUFApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjI5LjUyNjI2OTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NTcyMDEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdtIHRoaW5raW5nIGFib3V0IGl0OlxuXG4qKkFuYWx5emluZyBgdGNmX2Jsb2NrX29mZmxvYWRfYmluZGAqKlxuXG5SaWdodCwgc28gYHRjZl9ibG9ja19vZmZsb2FkX2JpbmRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGdldHMgaW52b2tlZCB3aGVuZXZlciBhIGJsb2NrIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGRldmljZS4gVGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGNvcmUgcHJvY2VzcyBvZiBhY3R1YWxseSBob29raW5nIGEgYmxvY2sgdXAsIGFuZCB0aGUgaW1wb3J0YW50IHRoaW5nIHRvIHJlbWVtYmVyIGlzIHRoaXMgaXMgaGFwcGVuaW5nICpkdXJpbmcqIHRoZSBjb25maWd1cmF0aW9uIHBoYXNlLiBTcGVjaWZpY2FsbHksIGl0J3MgdHJpZ2dlcmVkIHdoZW4gd2UncmUgc2V0dGluZyB1cCBhIHF1ZXVpbmcgZGlzY2lwbGluZSAocWRpc2MpIG9yIGEgdHJhZmZpYyBmaWx0ZXIuIEl0J3MgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIGRldmljZSBiaW5kaW5nLCBzbyB0aGUgYmVoYXZpb3Igb2YgdGhpcyBpcyBrZXkgdG8gcGVyZm9ybWFuY2UgYW5kIG9mZmxvYWQuIExldCdzIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgdGNmX2Jsb2NrX29mZmxvYWRfYmluZGAgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgdGFraW5nIHBsYWNlIHRvIHRydWx5IGRldGVybWluZSBpdHMgcHVycG9zZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdHJhZmZpYyBjb250cm9sLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODgyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6MzIuNzExOTkxNTZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MjIzMjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9ibG9ja19vZmZsb2FkX2JpbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jPTgyMz1zdGF0aWMgaW50IHRjZl9ibG9ja19vZmZsb2FkX2NtZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jayxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODU0LVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6ODU1OnN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfYmluZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODU2LVxcdFxcdFxcdFxcdCAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE0NjQ9aW50IHRjZl9ibG9ja19nZXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKipwX2Jsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE0OTctXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNDk4OlxcdGVyciA9IHRjZl9ibG9ja19vZmZsb2FkX2JpbmQoYmxvY2ssIHEsIGVpLCBleHRhY2spO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTQ5OS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMDoxMTozMi43NjkyMjE3NTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA5MDEyMTgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJsb2NrIE9mZmxvYWQgTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGJsb2NrIG9mZmxvYWQgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgZml4IHRoYXQgd2FzIGltcGxlbWVudGVkLiBJdCBzZWVtcyBgdGNmX2Jsb2NrX2dldF9leHRgIGlzIGNydWNpYWwgYmVjYXVzZSBpdCdzIGNhbGxlZCBkdXJpbmcgYmxvY2sgY3JlYXRpb24sIG1lYW5pbmcgaXQncyByZWFjaGFibGUgdGhyb3VnaCBzdGFuZGFyZCBUQyBuZXRsaW5rIGNvbW1hbmRzLiBUaGF0IG1ha2VzIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIGEgY2xlYXIgY2FuZGlkYXRlIGZvciB0ZXN0aW5nLCBhcyB3ZWxsLlxuXG5UaGUgY29yZSBvZiB0aGUgaXNzdWUgaXMgdGhpczogVGhlIHBhdGNoIGF0dGVtcHRzIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgZmFpbHVyZSBpbiBgaW5kaXJfZGV2X2FkZGAsIGJ1dCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGhhbmRsZSB0aGUgZXJyb3IgcHJvcGVybHksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gbGVha3MgaWYgYGJvLVx1MDAzZWNiX2xpc3RgIGlzIGVtcHR5LiBSaWdodCwgSSBzZWUgaXQgbm93LiBgaW5kaXJfZGV2X2FkZGAgKmNhbiogcmV0dXJuIGFuIGVycm9yLCBhbmQgdGhlIGNvZGUgY2FwdHVyZXMgdGhhdCBpbiBgcmVwbGF5X2FkZGVkID0gYWRkX2VyciA9PSAwYC4gTm93LCBpZiBgcmVwbGF5X2FkZGVkYCBpcyAqdHJ1ZSogKG1lYW5pbmcgdGhlIGFkZGl0aW9uIHN1Y2NlZWRlZCkgYW5kIGlmIHRoZSBjYWxsYmFjayBsaXN0IGBiby1cdTAwM2VjYl9saXN0YCBpcyBlbXB0eSwgdGhlbiB0aGUgY29kZSBjYWxscyBgaW5kaXJfZGV2X3JlbW92ZShkYXRhKWAgYW5kIHJldHVybnMgYC1FT1BOT1RTVVBQYC4gRWZmZWN0aXZlbHksIHRoaXMgcGF0Y2ggcHJldmVudHMgdGhlIGluZGlyZWN0IGRldmljZSByZWdpc3RyYXRpb24gbGVhayBpZiBubyBjYWxsYmFja3MgYXJlIGFkZGVkIHRvIHRoZSBvZmZsb2FkIGxpc3QuIFByZXR0eSBjbGV2ZXIsIEkgc3VwcG9zZS4gSXQncyBhIHByYWdtYXRpYyB3b3JrYXJvdW5kLlxuXG5HaXZlbiB0aGlzLCBJIHNob3VsZCBmb2N1cyBvbiBhIGZldyBrZXkgc3ltYm9sczogYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgaXMgZGVmaW5pdGVseSB0aGUgdGFyZ2V0IGJlY2F1c2UgaXQncyB0aGUgbW9kaWZpZWQgZnVuY3Rpb24uIEFsc28sIGB0Y2ZfYmxvY2tfb2ZmbG9hZF9iaW5kYCBhbmQgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgYXJlIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBvZmZsb2FkIGxpZmVjeWNsZSwgc28gdGhvc2UgYXJlIGdvb2QgZm9jdXMgcG9pbnRzLlxuXG5JJ2xsIGNoZWNrIGBuZXQvY29yZS9mbG93X29mZmxvYWQuY2AgZm9yIGBmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRgIHRvIGdldCBhIGJldHRlciBmZWVsIGZvciB0aGUgY29udGV4dC4gVGhpcyBzaG91bGQgaGVscCBtZSBiZXR0ZXIgdW5kZXJzdGFuZCBob3cgdGhpcyBmaXggaW50ZWdyYXRlcyB3aXRoIHRoZSBleGlzdGluZyBmbG93IG9mZmxvYWQgbWVjaGFuaXNtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDI0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjM4Ljg1OTM0NTYwNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgyNzcwODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jPTU4OT1zdGF0aWMgaW50IGluZGlyX2Rldl9yZW1vdmUodm9pZCAqZGF0YSlcXG4tLVxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTYwMi1cXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYzo2MDM6aW50IGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcdHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTYwNC1cXHRcXHRcXHRcXHRlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqZGF0YSxcXG4tLVxcbm5ldC9jb3JlL2Zsb3dfb2ZmbG9hZC5jLTY0Mi19XFxubmV0L2NvcmUvZmxvd19vZmZsb2FkLmM6NjQzOkVYUE9SVF9TWU1CT0woZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkKTtcXG5uZXQvY29yZS9mbG93X29mZmxvYWQuYy02NDQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAwOjExOjM4LjkxNzYyODEyNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODYzMzc4NTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBOZXR3b3JraW5nIEZsb3cgT2ZmbG9hZCBCdWcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcG90ZW50aWFsIGxlYWsgaW4gYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAuIEknbSBjaGVja2luZyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBORVRfQ0xTYCwgYE5FVF9DTFNfQUNUYCwgYE5GX1RBQkxFU2AsIGFuZCBgTkZfRkxPV19UQUJMRWAuIEknbSBwcmV0dHkgc3VyZSBJIGhhdmUgdGhlIGNvbmZpZyBuYW1lcyBjb3JyZWN0LCBidXQgbGV0J3MganVzdCBjb25maXJtIHRob3NlIGFyZSB0aGUgY29ycmVjdCBuYW1lcywgYENPTkZJR19ORVRfQ0xTYCBmb3IgdHJhZmZpYyBjb250cm9sIGNsYXNzaWZpZXIsIGBDT05GSUdfTkVUX0NMU19BQ1RgIGZvciB0cmFmZmljIGNvbnRyb2wgYWN0aW9ucywgYENPTkZJR19ORl9UQUJMRVNgIGZvciBOZXRmaWx0ZXIgbmZfdGFibGVzLCBhbmQgYENPTkZJR19ORl9GTE9XX1RBQkxFYCBmb3IgdGhlIE5ldGZpbHRlciBmbG93IHRhYmxlLlxuXG5UaGUgbWFpbiBxdWVzdGlvbiBpcyB3aGV0aGVyIGBORVRfQ0xTYCBpcyBzdWZmaWNpZW50IG9uIGl0cyBvd24sIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgZW5hYmxpbmcgYGNsc19hcGkub2Agd2hpY2ggc2VlbXMgcmlnaHQuIFRoZSBvdGhlcnMgZW5hYmxlIHRoZWlyIGNvcnJlc3BvbmRpbmcgbW9kdWxlcy4gTm93LCBpcyBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYCByZWFjaGFibGUgZXZlbiB3aXRob3V0IGhhcmR3YXJlIG9mZmxvYWQ/IFllcywgaXQncyB1bmNvbmRpdGlvbmFsbHkgY2FsbGVkLCB3aGljaCBpcyBpbXBvcnRhbnQuIEl0IHNldHMgdXAgYm90aCBUQyBibG9ja3MgYW5kIE5ldGZpbHRlciBmbG93IHRhYmxlcy4gRXZlbiBpZiB0aGUgZGV2aWNlICpkb2Vzbid0KiBzdXBwb3J0IG9mZmxvYWQsIGl0J2xsIHJ1biwgYW5kIGp1c3QgcmV0dXJuIGAtRU9QTk9UU1VQUGAuIFRoYXQncyB0aGUga2V5LlxuXG5TbywgYGluZGlyX2Rldl9hZGRgIGFkZHMgdGhlIGRldmljZSB0byBgZmxvd19ibG9ja19pbmRyX2Rldl9saXN0YC4gVGhlIGZ1bmN0aW9uIHRoZW4gaXRlcmF0ZXMgdGhyb3VnaCB0aGF0IGxpc3QsIGNhbGxpbmcgYHRoaXMtXHUwMDNlY2JgLiBJZiBgbGlzdF9lbXB0eShcdTAwMjZiby1cdTAwM2VjYl9saXN0KWAgYWZ0ZXIgdGhhdCwgbWVhbmluZyBubyBjYWxsYmFja3Mgd2VyZSByZWdpc3RlcmVkLCB0aGVuIGBpbmRpcl9kZXZfcmVtb3ZlYCBzaG91bGQgYmUgY2FsbGVkLCBhbmQgaXQgcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBUaGF0J3Mgd2hlcmUgdGhlIHByb2JsZW0gbGllcywgaXQgd2Fzbid0LlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBvZiB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgbGVhayBpbiBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYC4gV2hlbiBhbiBpbmRpcmVjdCBkZXZpY2UgaXMgYWRkZWQgYnV0IG5vIGNhbGxiYWNrcyBhcmUgcmVnaXN0ZXJlZCwgaXQgbm93IGVuc3VyZXMgdGhhdCBgaW5kaXJfZGV2X3JlbW92ZWAgaXMgY2FsbGVkIHRvIGNsZWFuIHVwIHRoZSByZWdpc3RyYXRpb24uIFRoaXMgaXMgY3J1Y2lhbCBuZXR3b3JraW5nIGxvZ2ljLCBkZWFsaW5nIHdpdGggZmxvdyBvZmZsb2FkLCB1c2VkIGJ5IGJvdGggVEMgYW5kIE5ldGZpbHRlciBhbmQgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24uXG5cbkkgc2hvdWxkIGFsc28gbm90ZSB0aGUga2V5IHN5bWJvbHMgaGVyZTogYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAsIGB0Y2ZfYmxvY2tfb2ZmbG9hZF9jbWRgLCBgbmZ0X2luZHJfYmxvY2tfb2ZmbG9hZF9jbWRgLCBhbmQgYG5mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZGAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBvZmZsb2FkIGNvbW1hbmRzIGFyZSBwYXNzZWQgZG93bi5cblxuT2theSwgSSB0aGluayBJJ3ZlIGdvdCBhIGhhbmRsZSBvbiB0aGlzLiBJJ2xsIHN1bW1hcml6ZSBteSBmaW5kaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ0NiwiT3V0cHV0VG9rZW5zIjoyMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDA6MTE6NDcuNzgxMDA4ODFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzM5OTAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0NMU1wiLFxuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfRkxPV19UQUJMRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZFwiLFxuICAgIFwidGNmX2Jsb2NrX29mZmxvYWRfY21kXCIsXG4gICAgXCJuZnRfaW5kcl9ibG9ja19vZmZsb2FkX2NtZFwiLFxuICAgIFwibmZfZmxvd190YWJsZV9pbmRyX29mZmxvYWRfY21kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgbGVhayBpbiBgZmxvd19pbmRyX2Rldl9zZXR1cF9vZmZsb2FkYCB3aGVuIGFuIGluZGlyZWN0IGRldmljZSBpcyBhZGRlZCBidXQgbm8gY2FsbGJhY2tzIGFyZSByZWdpc3RlcmVkIHRvIHRoZSBibG9jayBvZmZsb2FkIGxpc3QuIEl0IGVuc3VyZXMgdGhhdCBgaW5kaXJfZGV2X3JlbW92ZWAgaXMgY2FsbGVkIHRvIGNsZWFuIHVwIHRoZSByZWdpc3RyYXRpb24gaWYgYGluZGlyX2Rldl9hZGRgIHN1Y2NlZWRlZCBidXQgdGhlIGNhbGxiYWNrIGxpc3QgcmVtYWlucyBlbXB0eS4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgcmVsYXRlZCB0byBmbG93IG9mZmxvYWQgKHVzZWQgYnkgVEMgYW5kIE5ldGZpbHRlcikgYW5kIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9DTFNcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORl9UQUJMRVNcIixcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbG93X2luZHJfZGV2X3NldHVwX29mZmxvYWRcIixcbiAgICBcInRjZl9ibG9ja19vZmZsb2FkX2NtZFwiLFxuICAgIFwibmZ0X2luZHJfYmxvY2tfb2ZmbG9hZF9jbWRcIixcbiAgICBcIm5mX2Zsb3dfdGFibGVfaW5kcl9vZmZsb2FkX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGxlYWsgaW4gYGZsb3dfaW5kcl9kZXZfc2V0dXBfb2ZmbG9hZGAgd2hlbiBhbiBpbmRpcmVjdCBkZXZpY2UgaXMgYWRkZWQgYnV0IG5vIGNhbGxiYWNrcyBhcmUgcmVnaXN0ZXJlZCB0byB0aGUgYmxvY2sgb2ZmbG9hZCBsaXN0LiBJdCBlbnN1cmVzIHRoYXQgYGluZGlyX2Rldl9yZW1vdmVgIGlzIGNhbGxlZCB0byBjbGVhbiB1cCB0aGUgcmVnaXN0cmF0aW9uIGlmIGBpbmRpcl9kZXZfYWRkYCBzdWNjZWVkZWQgYnV0IHRoZSBjYWxsYmFjayBsaXN0IHJlbWFpbnMgZW1wdHkuIFRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHJlbGF0ZWQgdG8gZmxvdyBvZmZsb2FkICh1c2VkIGJ5IFRDIGFuZCBOZXRmaWx0ZXIpIGFuZCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgY29uZmlndXJhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgmvb9[1] Phase: Succeeded StartedAt: 2026-07-18 00:12:51 +0000 UTC FinishedAt: 2026-07-18 00:12:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-18 00:12:51 +0000 UTC FinishedAt: 2026-07-18 00:12:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2] Phase: Succeeded StartedAt: 2026-07-18 00:12:51 +0000 UTC FinishedAt: 2026-07-18 04:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-18 00:12:51 +0000 UTC FinishedAt: 2026-07-18 04:23:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-18 00:12:51 +0000 UTC FinishedAt: 2026-07-18 00:13:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-18 00:12:51 +0000 UTC FinishedAt: 2026-07-18 00:13:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgmvb9/series-workflowgmvb9-convert-artifact-1449803813/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-18 00:13:23 +0000 UTC FinishedAt: 2026-07-18 00:51:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-18 00:13:23 +0000 UTC FinishedAt: 2026-07-18 00:51:28 +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:*538e6278-bcb4-4b1a-bcfb-74181fb69db2,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-workflowgmvb9/series-workflowgmvb9-convert-artifact-1449803813/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": "47f3ca59-1fb1-4b97-8463-c89c762e4cd8", "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-workflowgmvb9/series-workflowgmvb9-build-action-1182669899/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-18 00:13:23 +0000 UTC FinishedAt: 2026-07-18 00:51:18 +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:*538e6278-bcb4-4b1a-bcfb-74181fb69db2,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-workflowgmvb9/series-workflowgmvb9-convert-artifact-1449803813/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": "47f3ca59-1fb1-4b97-8463-c89c762e4cd8", "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-workflowgmvb9/series-workflowgmvb9-build-action-1182669899/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-18 00:51:28 +0000 UTC FinishedAt: 2026-07-18 00:51:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-18 00:51:28 +0000 UTC FinishedAt: 2026-07-18 00:51:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-18 00:51:28 +0000 UTC FinishedAt: 2026-07-18 00:51:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-18 00:51:28 +0000 UTC FinishedAt: 2026-07-18 00:51:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgmvb9/series-workflowgmvb9-convert-artifact-1173405952/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-18 00:51:38 +0000 UTC FinishedAt: 2026-07-18 00:53:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-18 00:51:38 +0000 UTC FinishedAt: 2026-07-18 00:53:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*47f3ca59-1fb1-4b97-8463-c89c762e4cd8,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-workflowgmvb9/series-workflowgmvb9-build-action-1182669899/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-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-18 00:53:49 +0000 UTC FinishedAt: 2026-07-18 00:53:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-18 00:53:49 +0000 UTC FinishedAt: 2026-07-18 00:53:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-18 00:53:49 +0000 UTC FinishedAt: 2026-07-18 01:19:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-18 00:53:49 +0000 UTC FinishedAt: 2026-07-18 01:19:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*538e6278-bcb4-4b1a-bcfb-74181fb69db2,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-workflowgmvb9/series-workflowgmvb9-convert-artifact-1173405952/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": "20905ba7-7f41-4269-bfd2-b5ee0663a600", "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-workflowgmvb9/series-workflowgmvb9-build-action-3219041980/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-18 00:53:49 +0000 UTC FinishedAt: 2026-07-18 01:18:23 +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:*538e6278-bcb4-4b1a-bcfb-74181fb69db2,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-workflowgmvb9/series-workflowgmvb9-convert-artifact-1173405952/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": "20905ba7-7f41-4269-bfd2-b5ee0663a600", "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-workflowgmvb9/series-workflowgmvb9-build-action-3219041980/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-18 01:19:18 +0000 UTC FinishedAt: 2026-07-18 01:19:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-18 01:19:18 +0000 UTC FinishedAt: 2026-07-18 01:19:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-18 01:19:18 +0000 UTC FinishedAt: 2026-07-18 01:21:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-18 01:19:18 +0000 UTC FinishedAt: 2026-07-18 01:21:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*20905ba7-7f41-4269-bfd2-b5ee0663a600,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-workflowgmvb9/series-workflowgmvb9-build-action-3219041980/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-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-18 01:21:37 +0000 UTC FinishedAt: 2026-07-18 04:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-18 01:21:37 +0000 UTC FinishedAt: 2026-07-18 04:23:42 +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":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"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:*47f3ca59-1fb1-4b97-8463-c89c762e4cd8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*20905ba7-7f41-4269-bfd2-b5ee0663a600,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-workflowgmvb9/series-workflowgmvb9-build-action-1182669899/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-workflowgmvb9/series-workflowgmvb9-build-action-3219041980/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-18 01:21:37 +0000 UTC FinishedAt: 2026-07-18 01:21:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-18 01:21:37 +0000 UTC FinishedAt: 2026-07-18 01:21:44 +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":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"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-workflowgmvb9/series-workflowgmvb9-convert-artifact-1838845017/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-18 01:21:37 +0000 UTC FinishedAt: 2026-07-18 01:21:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-18 01:21:37 +0000 UTC FinishedAt: 2026-07-18 01:21:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-18 01:21:38 +0000 UTC FinishedAt: 2026-07-18 01:21:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-18 01:21:48 +0000 UTC FinishedAt: 2026-07-18 04:23:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgmvb9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_indr_dev_setup_offload","tcf_block_offload_cmd","nft_indr_block_offload_cmd","nf_flow_table_indr_offload_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS","NET_CLS_ACT","NF_TABLES","NF_FLOW_TABLE"],"series_id":"3d3dfcb2-2508-4b25-b1ad-a53fc624e092","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-18 01:21:48 +0000 UTC FinishedAt: 2026-07-18 04:23:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*47f3ca59-1fb1-4b97-8463-c89c762e4cd8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*20905ba7-7f41-4269-bfd2-b5ee0663a600,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-workflowgmvb9/series-workflowgmvb9-build-action-1182669899/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-workflowgmvb9/series-workflowgmvb9-build-action-3219041980/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-workflowgmvb9/series-workflowgmvb9-convert-artifact-1838845017/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,}