Name: series-workflowvj57g Phase: Succeeded StartedAt: 2026-08-01 11:40:23 +0000 UTC FinishedAt: 2026-08-01 16:17:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[0] Phase: Succeeded StartedAt: 2026-08-01 11:40:23 +0000 UTC FinishedAt: 2026-08-01 12:09:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 11:40:23 +0000 UTC FinishedAt: 2026-08-01 12:09:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_ST_NCI_I2C", "NFC_ST_NCI_SPI", "NFC_VIRTUAL_NCI", "I2C", "SPI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_ST_NCI_I2C", "NFC_ST_NCI_SPI", "NFC_VIRTUAL_NCI", "I2C", "SPI" ], "series_id": "8dc86100-2bcc-4b87-a93a-9d920355f407" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfc_genl_se_io", "nci_unregister_device", "st_nci_se_io", "st_nci_se_deinit" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19TVF9OQ0lfSTJDJiMzNDssCiAgICAmIzM0O05GQ19TVF9OQ0lfU1BJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7LAogICAgJiMzNDtJMkMmIzM0OywKICAgICYjMzQ7U1BJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZjX2dlbmxfc2VfaW8mIzM0OywKICAgICYjMzQ7bmNpX3VucmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgICAmIzM0O3N0X25jaV9zZV9pbyYjMzQ7LAogICAgJiMzNDtzdF9uY2lfc2VfZGVpbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAobmZjX3NlX2lvLCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2UpIGFuZCB0aGUgc3QtbmNpIGRyaXZlciAoc3RfbmNpX3NlX2lvLCBzdF9uY2lfc2VfZGVpbml0KSB0byBmaXggcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIFNFIEkvTyBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgZnVuY3Rpb25hbGx5IHJlYWNoYWJsZSB2aWEgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgSTJDL1NQSSBkZXZpY2UgaW5zdGFudGlhdGlvbi9yZW1vdmFsLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjZTA0NzIxZDFjMzQyM2Y5MjE3MzRiMTdlYWY0NzU2ZTFiYmYwNTEyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAxMjowNjo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xuaW5kZXggYTM2NzEzNmQ0MzMwYS4uNmU4Zjc5OWY1Yzk0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbkBAIC0xMDUsNiAmIzQzOzEwNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xuIFx0LmhjaV9sb2FkX3Nlc3Npb24gPSBzdF9uY2lfaGNpX2xvYWRfc2Vzc2lvbixcbiBcdC5oY2lfZXZlbnRfcmVjZWl2ZWQgPSBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkLFxuIFx0LmhjaV9jbWRfcmVjZWl2ZWQgPSBzdF9uY2lfaGNpX2NtZF9yZWNlaXZlZCxcbiYjNDM7XHQucHJlX3VucmVnaXN0ZXIgPSBzdF9uY2lfc2VfZGVpbml0LFxuIFx0LnByb3Bfb3BzID0gc3RfbmNpX3Byb3Bfb3BzLFxuIFx0Lm5fcHJvcF9vcHMgPSBBUlJBWV9TSVpFKHN0X25jaV9wcm9wX29wcyksXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXG5pbmRleCA2MDdlYzc2OGViN2I0Li4yMzIyNDlkNjBiYjg2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXG5AQCAtMjgzLDkgJiM0MzsyODMsOSBAQCBzdGF0aWMgaW50IHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4gXHRzd2l0Y2ggKGV2ZW50KSB7XG4gXHRjYXNlIFNUX05DSV9FVlRfVFJBTlNNSVRfREFUQTpcbiBcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV90aW1lcik7XG4tXHRcdGluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlID0gZmFsc2U7XG4tXHRcdGluZm8tXHUwMDNlc2VfaW5mby5jYihpbmZvLVx1MDAzZXNlX2luZm8uY2JfY29udGV4dCxcbi1cdFx0XHRcdCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbiwgMCk7XG4mIzQzO1x0XHRpZiAoeGNoZyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSwgZmFsc2UpKVxuJiM0MztcdFx0XHRpbmZvLVx1MDAzZXNlX2luZm8uY2IoaW5mby1cdTAwM2VzZV9pbmZvLmNiX2NvbnRleHQsXG4mIzQzO1x0XHRcdFx0XHQgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4sIDApO1xuIFx0YnJlYWs7XG4gXHRjYXNlIFNUX05DSV9FVlRfV1RYX1JFUVVFU1Q6XG4gXHRcdG1vZF90aW1lcihcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX3RpbWVyLCBqaWZmaWVzICYjNDM7XG5AQCAtNjY1LDkgJiM0Mzs2NjUsOSBAQCBpbnQgc3RfbmNpX3NlX2lvKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1MzIgc2VfaWR4LFxuIFx0Y2FzZSBTVF9OQ0lfRVNFX0hPU1RfSUQ6XG4gXHRcdGluZm8tXHUwMDNlc2VfaW5mby5jYiA9IGNiO1xuIFx0XHRpbmZvLVx1MDAzZXNlX2luZm8uY2JfY29udGV4dCA9IGNiX2NvbnRleHQ7XG4mIzQzO1x0XHR4Y2hnKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCB0cnVlKTtcbiBcdFx0bW9kX3RpbWVyKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfdGltZXIsIGppZmZpZXMgJiM0MztcbiBcdFx0XHQgIG1zZWNzX3RvX2ppZmZpZXMoaW5mby1cdTAwM2VzZV9pbmZvLnd0X3RpbWVvdXQpKTtcbi1cdFx0aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUgPSB0cnVlO1xuIFx0XHRyZXR1cm4gbmNpX2hjaV9zZW5kX2V2ZW50KG5kZXYsIFNUX05DSV9BUERVX1JFQURFUl9HQVRFLFxuIFx0XHRcdFx0XHRTVF9OQ0lfRVZUX1RSQU5TTUlUX0RBVEEsIGFwZHUsXG4gXHRcdFx0XHRcdGFwZHVfbGVuZ3RoKTtcbkBAIC02OTksNyAmIzQzOzY5OSw4IEBAIHN0YXRpYyB2b2lkIHN0X25jaV9zZV93dF90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gdGltZXJfY29udGFpbmVyX29mKGluZm8sIHQsXG4gXHRcdFx0XHRcdFx0ICAgICAgc2VfaW5mby5id2lfdGltZXIpO1xuIFxuLVx0aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUgPSBmYWxzZTtcbiYjNDM7XHRpZiAoIXhjaGcoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUsIGZhbHNlKSlcbiYjNDM7XHRcdHJldHVybjtcbiBcbiBcdGlmICghaW5mby1cdTAwM2VzZV9pbmZvLnhjaF9lcnJvcikge1xuIFx0XHRpbmZvLVx1MDAzZXNlX2luZm8ueGNoX2Vycm9yID0gdHJ1ZTtcbkBAIC03NTEsMTMgJiM0Mzs3NTIsMTIgQEAgdm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuIHtcbiBcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcbiBcbi1cdGlmIChpbmZvLVx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSlcbi1cdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV90aW1lcik7XG4tXHRpZiAoaW5mby1cdTAwM2VzZV9pbmZvLnNlX2FjdGl2ZSlcbi1cdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLnNlX2FjdGl2ZV90aW1lcik7XG4mIzQzO1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX3RpbWVyKTtcbiYjNDM7XHRpZiAoeGNoZyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSwgZmFsc2UpKVxuJiM0MztcdFx0aW5mby1cdTAwM2VzZV9pbmZvLmNiKGluZm8tXHUwMDNlc2VfaW5mby5jYl9jb250ZXh0LCBOVUxMLCAwLCAtRU5PREVWKTtcbiBcbi1cdGluZm8tXHUwMDNlc2VfaW5mby5zZV9hY3RpdmUgPSBmYWxzZTtcbi1cdGluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlID0gZmFsc2U7XG4mIzQzO1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uc2VfYWN0aXZlX3RpbWVyKTtcbiYjNDM7XHR4Y2hnKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5zZV9hY3RpdmUsIGZhbHNlKTtcbiYjNDM7XHRjb21wbGV0ZShcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8ucmVxX2NvbXBsZXRpb24pO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9kZWluaXQpO1xuLVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oIGIvaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmhcbmluZGV4IDY2NGQ1MDU4ZTY2ZTAuLjc1NGE2NzE4NTY0MjQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmhcbkBAIC04Miw2ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgbmNpX29wcyB7XG4gXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4gXHR2b2lkICAoKmhjaV9jbWRfcmVjZWl2ZWQpKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLCB1OCBjbWQsXG4gXHRcdFx0XHQgIHN0cnVjdCBza19idWZmICpza2IpO1xuJiM0MztcdHZvaWQgICgqcHJlX3VucmVnaXN0ZXIpKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcbiBcbiBcdGNvbnN0IHN0cnVjdCBuY2lfZHJpdmVyX29wcyAqcHJvcF9vcHM7XG4gXHRzaXplX3Qgbl9wcm9wX29wcztcbmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9jb3JlLmMgYi9uZXQvbmZjL25jaS9jb3JlLmNcbmluZGV4IDVmNDZjNGI1NzIwZjYuLjg2Mjg2YzA3NjVmMjYgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL25jaS9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbmNpL2NvcmUuY1xuQEAgLTEzMjEsNiAmIzQzOzEzMjEsOSBAQCB2b2lkIG5jaV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiBcbiBcdG5mY191bnJlZ2lzdGVyX3Jma2lsbChuZGV2LVx1MDAzZW5mY19kZXYpO1xuIFxuJiM0MztcdGlmIChuZGV2LVx1MDAzZW9wcy1cdTAwM2VwcmVfdW5yZWdpc3RlcilcbiYjNDM7XHRcdG5kZXYtXHUwMDNlb3BzLVx1MDAzZXByZV91bnJlZ2lzdGVyKG5kZXYpO1xuJiM0MztcbiBcdC8qIFRoaXMgc2V0X2JpdCBpcyBub3QgcHJvdGVjdGVkIHdpdGggc3BlY2lhbGl6ZWQgYmFycmllcixcbiBcdCAqIEhvd2V2ZXIsIGl0IGlzIGZpbmUgYmVjYXVzZSB0aGUgbXV0ZXhfbG9jayhcdTAwMjZuZGV2LVx1MDAzZXJlcV9sb2NrKTtcbiBcdCAqIGluIG5jaV9jbG9zZV9kZXZpY2UoKSB3aWxsIGhlbHAgdG8gZW1pdCBvbmUuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9uZXRsaW5rLmMgYi9uZXQvbmZjL25ldGxpbmsuY1xuaW5kZXggMGM1ODgyNGNiMTUwZC4uMzEzMmY3YTkwYWI5ZiAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbmV0bGluay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL25ldGxpbmsuY1xuQEAgLTE0MjYsNiAmIzQzOzE0MjYsMTEgQEAgc3RhdGljIGludCBuZmNfc2VfaW8oc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHNlX2lkeCxcbiBcbiBcdGRldmljZV9sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuIFxuJiM0MztcdGlmIChkZXYtXHUwMDNlc2h1dHRpbmdfZG93bikge1xuJiM0MztcdFx0cmMgPSAtRU5PREVWO1xuJiM0MztcdFx0Z290byBlcnJvcjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKCFkZXZpY2VfaXNfcmVnaXN0ZXJlZChcdTAwMjZkZXYtXHUwMDNlZGV2KSkge1xuIFx0XHRyYyA9IC1FTk9ERVY7XG4gXHRcdGdvdG8gZXJyb3I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19TVF9OQ0lfSTJDJiMzNDssCiAgICAmIzM0O05GQ19TVF9OQ0lfU1BJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7LAogICAgJiMzNDtJMkMmIzM0OywKICAgICYjMzQ7U1BJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZjX2dlbmxfc2VfaW8mIzM0OywKICAgICYjMzQ7bmNpX3VucmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgICAmIzM0O3N0X25jaV9zZV9pbyYjMzQ7LAogICAgJiMzNDtzdF9uY2lfc2VfZGVpbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAobmZjX3NlX2lvLCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2UpIGFuZCB0aGUgc3QtbmNpIGRyaXZlciAoc3RfbmNpX3NlX2lvLCBzdF9uY2lfc2VfZGVpbml0KSB0byBmaXggcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIFNFIEkvTyBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgZnVuY3Rpb25hbGx5IHJlYWNoYWJsZSB2aWEgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgSTJDL1NQSSBkZXZpY2UgaW5zdGFudGlhdGlvbi9yZW1vdmFsLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjZTA0NzIxZDFjMzQyM2Y5MjE3MzRiMTdlYWY0NzU2ZTFiYmYwNTEyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAxMjowNjo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jCmluZGV4IGEzNjcxMzZkNDMzMGEuLjZlOGY3OTlmNWM5NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYwpAQCAtMTA1LDYgJiM0MzsxMDUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgc3RfbmNpX29wcyA9IHsKIAkuaGNpX2xvYWRfc2Vzc2lvbiA9IHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uLAogCS5oY2lfZXZlbnRfcmVjZWl2ZWQgPSBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkLAogCS5oY2lfY21kX3JlY2VpdmVkID0gc3RfbmNpX2hjaV9jbWRfcmVjZWl2ZWQsCiYjNDM7CS5wcmVfdW5yZWdpc3RlciA9IHN0X25jaV9zZV9kZWluaXQsCiAJLnByb3Bfb3BzID0gc3RfbmNpX3Byb3Bfb3BzLAogCS5uX3Byb3Bfb3BzID0gQVJSQVlfU0laRShzdF9uY2lfcHJvcF9vcHMpLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMKaW5kZXggNjA3ZWM3NjhlYjdiNC4uMjMyMjQ5ZDYwYmI4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMKQEAgLTI4Myw5ICYjNDM7MjgzLDkgQEAgc3RhdGljIGludCBzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LAogCXN3aXRjaCAoZXZlbnQpIHsKIAljYXNlIFNUX05DSV9FVlRfVFJBTlNNSVRfREFUQToKIAkJdGltZXJfZGVsZXRlX3N5bmMoJmFtcDtpbmZvLSZndDtzZV9pbmZvLmJ3aV90aW1lcik7Ci0JCWluZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlOwotCQlpbmZvLSZndDtzZV9pbmZvLmNiKGluZm8tJmd0O3NlX2luZm8uY2JfY29udGV4dCwKLQkJCQkgc2tiLSZndDtkYXRhLCBza2ItJmd0O2xlbiwgMCk7CiYjNDM7CQlpZiAoeGNoZygmYW1wO2luZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSwgZmFsc2UpKQomIzQzOwkJCWluZm8tJmd0O3NlX2luZm8uY2IoaW5mby0mZ3Q7c2VfaW5mby5jYl9jb250ZXh0LAomIzQzOwkJCQkJIHNrYi0mZ3Q7ZGF0YSwgc2tiLSZndDtsZW4sIDApOwogCWJyZWFrOwogCWNhc2UgU1RfTkNJX0VWVF9XVFhfUkVRVUVTVDoKIAkJbW9kX3RpbWVyKCZhbXA7aW5mby0mZ3Q7c2VfaW5mby5id2lfdGltZXIsIGppZmZpZXMgJiM0MzsKQEAgLTY2NSw5ICYjNDM7NjY1LDkgQEAgaW50IHN0X25jaV9zZV9pbyhzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTMyIHNlX2lkeCwKIAljYXNlIFNUX05DSV9FU0VfSE9TVF9JRDoKIAkJaW5mby0mZ3Q7c2VfaW5mby5jYiA9IGNiOwogCQlpbmZvLSZndDtzZV9pbmZvLmNiX2NvbnRleHQgPSBjYl9jb250ZXh0OwomIzQzOwkJeGNoZygmYW1wO2luZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSwgdHJ1ZSk7CiAJCW1vZF90aW1lcigmYW1wO2luZm8tJmd0O3NlX2luZm8uYndpX3RpbWVyLCBqaWZmaWVzICYjNDM7CiAJCQkgIG1zZWNzX3RvX2ppZmZpZXMoaW5mby0mZ3Q7c2VfaW5mby53dF90aW1lb3V0KSk7Ci0JCWluZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSA9IHRydWU7CiAJCXJldHVybiBuY2lfaGNpX3NlbmRfZXZlbnQobmRldiwgU1RfTkNJX0FQRFVfUkVBREVSX0dBVEUsCiAJCQkJCVNUX05DSV9FVlRfVFJBTlNNSVRfREFUQSwgYXBkdSwKIAkJCQkJYXBkdV9sZW5ndGgpOwpAQCAtNjk5LDcgJiM0Mzs2OTksOCBAQCBzdGF0aWMgdm9pZCBzdF9uY2lfc2Vfd3RfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIAlzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSB0aW1lcl9jb250YWluZXJfb2YoaW5mbywgdCwKIAkJCQkJCSAgICAgIHNlX2luZm8uYndpX3RpbWVyKTsKIAotCWluZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlOwomIzQzOwlpZiAoIXhjaGcoJmFtcDtpbmZvLSZndDtzZV9pbmZvLmJ3aV9hY3RpdmUsIGZhbHNlKSkKJiM0MzsJCXJldHVybjsKIAogCWlmICghaW5mby0mZ3Q7c2VfaW5mby54Y2hfZXJyb3IpIHsKIAkJaW5mby0mZ3Q7c2VfaW5mby54Y2hfZXJyb3IgPSB0cnVlOwpAQCAtNzUxLDEzICYjNDM7NzUyLDEyIEBAIHZvaWQgc3RfbmNpX3NlX2RlaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldikKIHsKIAlzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7CiAKLQlpZiAoaW5mby0mZ3Q7c2VfaW5mby5id2lfYWN0aXZlKQotCQl0aW1lcl9kZWxldGVfc3luYygmYW1wO2luZm8tJmd0O3NlX2luZm8uYndpX3RpbWVyKTsKLQlpZiAoaW5mby0mZ3Q7c2VfaW5mby5zZV9hY3RpdmUpCi0JCXRpbWVyX2RlbGV0ZV9zeW5jKCZhbXA7aW5mby0mZ3Q7c2VfaW5mby5zZV9hY3RpdmVfdGltZXIpOwomIzQzOwl0aW1lcl9zaHV0ZG93bl9zeW5jKCZhbXA7aW5mby0mZ3Q7c2VfaW5mby5id2lfdGltZXIpOwomIzQzOwlpZiAoeGNoZygmYW1wO2luZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSwgZmFsc2UpKQomIzQzOwkJaW5mby0mZ3Q7c2VfaW5mby5jYihpbmZvLSZndDtzZV9pbmZvLmNiX2NvbnRleHQsIE5VTEwsIDAsIC1FTk9ERVYpOwogCi0JaW5mby0mZ3Q7c2VfaW5mby5zZV9hY3RpdmUgPSBmYWxzZTsKLQlpbmZvLSZndDtzZV9pbmZvLmJ3aV9hY3RpdmUgPSBmYWxzZTsKJiM0MzsJdGltZXJfc2h1dGRvd25fc3luYygmYW1wO2luZm8tJmd0O3NlX2luZm8uc2VfYWN0aXZlX3RpbWVyKTsKJiM0MzsJeGNoZygmYW1wO2luZm8tJmd0O3NlX2luZm8uc2VfYWN0aXZlLCBmYWxzZSk7CiYjNDM7CWNvbXBsZXRlKCZhbXA7aW5mby0mZ3Q7c2VfaW5mby5yZXFfY29tcGxldGlvbik7CiB9CiBFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9kZWluaXQpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaCBiL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oCmluZGV4IDY2NGQ1MDU4ZTY2ZTAuLjc1NGE2NzE4NTY0MjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oCkBAIC04Miw2ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgbmNpX29wcyB7CiAJCQkJICAgIHN0cnVjdCBza19idWZmICpza2IpOwogCXZvaWQgICgqaGNpX2NtZF9yZWNlaXZlZCkoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHU4IHBpcGUsIHU4IGNtZCwKIAkJCQkgIHN0cnVjdCBza19idWZmICpza2IpOwomIzQzOwl2b2lkICAoKnByZV91bnJlZ2lzdGVyKShzdHJ1Y3QgbmNpX2RldiAqbmRldik7CiAKIAljb25zdCBzdHJ1Y3QgbmNpX2RyaXZlcl9vcHMgKnByb3Bfb3BzOwogCXNpemVfdCBuX3Byb3Bfb3BzOwpkaWZmIC0tZ2l0IGEvbmV0L25mYy9uY2kvY29yZS5jIGIvbmV0L25mYy9uY2kvY29yZS5jCmluZGV4IDVmNDZjNGI1NzIwZjYuLjg2Mjg2YzA3NjVmMjYgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbmNpL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL25jaS9jb3JlLmMKQEAgLTEzMjEsNiAmIzQzOzEzMjEsOSBAQCB2b2lkIG5jaV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldikKIAogCW5mY191bnJlZ2lzdGVyX3Jma2lsbChuZGV2LSZndDtuZmNfZGV2KTsKIAomIzQzOwlpZiAobmRldi0mZ3Q7b3BzLSZndDtwcmVfdW5yZWdpc3RlcikKJiM0MzsJCW5kZXYtJmd0O29wcy0mZ3Q7cHJlX3VucmVnaXN0ZXIobmRldik7CiYjNDM7CiAJLyogVGhpcyBzZXRfYml0IGlzIG5vdCBwcm90ZWN0ZWQgd2l0aCBzcGVjaWFsaXplZCBiYXJyaWVyLAogCSAqIEhvd2V2ZXIsIGl0IGlzIGZpbmUgYmVjYXVzZSB0aGUgbXV0ZXhfbG9jaygmYW1wO25kZXYtJmd0O3JlcV9sb2NrKTsKIAkgKiBpbiBuY2lfY2xvc2VfZGV2aWNlKCkgd2lsbCBoZWxwIHRvIGVtaXQgb25lLgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9uZXRsaW5rLmMgYi9uZXQvbmZjL25ldGxpbmsuYwppbmRleCAwYzU4ODI0Y2IxNTBkLi4zMTMyZjdhOTBhYjlmIDEwMDY0NAotLS0gYS9uZXQvbmZjL25ldGxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL25ldGxpbmsuYwpAQCAtMTQyNiw2ICYjNDM7MTQyNiwxMSBAQCBzdGF0aWMgaW50IG5mY19zZV9pbyhzdHJ1Y3QgbmZjX2RldiAqZGV2LCB1MzIgc2VfaWR4LAogCiAJZGV2aWNlX2xvY2soJmFtcDtkZXYtJmd0O2Rldik7CiAKJiM0MzsJaWYgKGRldi0mZ3Q7c2h1dHRpbmdfZG93bikgewomIzQzOwkJcmMgPSAtRU5PREVWOwomIzQzOwkJZ290byBlcnJvcjsKJiM0MzsJfQomIzQzOwogCWlmICghZGV2aWNlX2lzX3JlZ2lzdGVyZWQoJmFtcDtkZXYtJmd0O2RldikpIHsKIAkJcmMgPSAtRU5PREVWOwogCQlnb3RvIGVycm9yOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODE3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgTkZDIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIE5GQyBzdWJzeXN0ZW0uIEl0IHNlZW1zIGxpa2UgaXQgZm9jdXNlcyBvbiB0aGUgYHN0LW5jaWAgZHJpdmVyLCBpbnRyb2R1Y2luZyBhIGBwcmVfdW5yZWdpc3RlcmAgY2FsbGJhY2sgaW4gYG5jaV9vcHNgIHNwZWNpZmljYWxseSBmb3IgdGhhdCBkcml2ZXIsIGFuZCB0aGVuIG1vZGlmaWVzIHNldmVyYWwgZnVuY3Rpb25zIChgc3RfbmNpX3NlX2lvYCwgYHN0X25jaV9zZV93dF90aW1lb3V0YCwgYW5kIGBzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkYCkgdG8gdXNlIGB4Y2hnYCBmb3IgdGhlIGBid2lfYWN0aXZlYCBmbGFnLiBUaGVyZSYjMzk7cyBhbHNvIGEgY2hhbmdlIHRvIGBuZmNfc2VfaW9gIGluIGBuZXQvbmZjL25ldGxpbmsuY2AsIHdoaWNoIGlzIHRoZSBpbnRlcmVzdGluZyBiaXQuIFRoZSBwYXRjaCBhZGRzIGEgYGRldi0mZ3Q7c2h1dHRpbmdfZG93bmAgY2hlY2suCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyBhIHVzZWZ1bCB0YXJnZXQgZm9yIGZ1enppbmcuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBrZXkgaXMgcmVhY2hhYmlsaXR5LiBJIHNlZSB0aGF0IGBuZmNfc2VfaW9gIGlzIGNhbGxlZCB0aHJvdWdoIG5ldGxpbmssIHdoaWNoIHN1Z2dlc3RzIHRoYXQgdGhlIGVudGlyZSBORkMgc3Vic3lzdGVtLCBpbmNsdWRpbmcgYHN0LW5jaWAsIGlzIHBvdGVudGlhbGx5IHJlYWNoYWJsZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB3aGV0aGVyIHRoZSBgc3QtbmNpYCBkcml2ZXIgaXRzZWxmIGNhbiBiZSBlbXVsYXRlZCBvciBlYXNpbHkgcmVhY2hlZCwgYnV0IHRoZW4gaXQgaGl0cyBtZS4gYG5mY19zZV9pb2AgaXMgaW4gYG5ldC9uZmMvbmV0bGluay5jYCwgd2hpY2ggaXMgKipjb3JlKiogTkZDIGNvZGUsIG5vdCBkcml2ZXItc3BlY2lmaWMhIFRoYXQmIzM5O3MgZXhjZWxsZW50LgoKU28sIHRoaXMgcGF0Y2ggdG91Y2hlcyBib3RoIGBuZXQvbmZjL25ldGxpbmsuY2AgYW5kIGBuZXQvbmZjL25jaS9jb3JlLmNgIOKAkyBtYWpvciBwYXJ0cyBvZiB0aGUgTkZDIGNvcmUuIFdlIGtub3cgdGhlIGNvcmUgTkZDIHN1YnN5c3RlbSBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZywgYW5kIGl0JiMzOTtzIGFscmVhZHkgZnV6emVkIGluIHN5emthbGxlci4gVGhlIHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHRoZSBjaGFuZ2VzIGludHJvZHVjZWQgbWFrZSB0aGlzIHBhdGNoIGEgd29ydGh3aGlsZSBuZXcgdGFyZ2V0LiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBpdCB3aWxsIGJlIGZ1enplZCwgZ2l2ZW4gdGhhdCBuZXRsaW5rIGludGVyZmFjZSBpcyBpbnZvbHZlZCwgb3IgdGhhdCB3ZSBjYW4gZ2VuZXJhdGUgZnV6emVyIGlucHV0cyBmb3IgdmlydHVhbCBkZXZpY2VzLiBCdXQsIGhhbmcgb24uLi4gZG9lc24mIzM5O3Qgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGFscmVhZHkgaW4gcGxhY2UgZm9yIE5GQyBzZXR1cCwgcGVyaGFwcyBgc3l6X25jaV9zZXR1cGAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0LiBUaGF0IHdvdWxkIGJlIHRoZSBiZXN0IGluZGljYXRpb24gb2Ygd2hldGhlciB3ZSBjYW4gZWFzaWx5IGludGVncmF0ZSB0aGlzIHBhdGNoIGludG8gZXhpc3RpbmcgZnV6emluZyBpbmZyYXN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuY2lfcmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL2ZkcC9mZHAuYz02OTk9aW50IGZkcF9uY2lfcHJvYmUoc3RydWN0IGZkcF9pMmNfcGh5ICpwaHksIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNzM3LVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjczODpcdHIgPSBuY2lfcmVnaXN0ZXJfZGV2aWNlKG5kZXYpO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTczOS1cdGlmIChyKVxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jPTkyPXN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKm5mY21ydmxfbmNpX3JlZ2lzdGVyX2RldihlbnVtIG5mY21ydmxfcGh5IHBoeSxcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0xNTYtXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzoxNTc6XHRyYyA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UocHJpdi1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTE1OC1cdGlmIChyYykge1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM6MTU5Olx0XHRuZmNfZXJyKGRldiwgXCYjMzQ7bmNpX3JlZ2lzdGVyX2RldmljZSBmYWlsZWQgJWRcXG5cJiMzNDssIHJjKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTE2MC1cdFx0Z290byBlcnJvcl9md19kbmxkX2RlaW5pdDtcbi0tXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0xMzU9aW50IG54cF9uY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTE2OS1cdG5jaV9zZXRfZHJ2ZGF0YShpbmZvLVx1MDAzZW5kZXYsIGluZm8pO1xuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6MTcwOlx0ciA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UoaW5mby1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTE3MS1cdGlmIChyIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZmMvczNmd3JuNS9jb3JlLmM9MTYwPWludCBzM2Z3cm41X3Byb2JlKHN0cnVjdCBuY2lfZGV2ICoqbmRldiwgdm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3MzZndybjUvY29yZS5jLTE4NC1cbmRyaXZlcnMvbmZjL3MzZndybjUvY29yZS5jOjE4NTpcdHJldCA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UoaW5mby1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmZjL3MzZndybjUvY29yZS5jLTE4Ni1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTExMz1pbnQgc3RfbmNpX3Byb2JlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgaW50IHBoeV9oZWFkcm9vbSxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTE0OS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTUwOlx0ciA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UobmRsYy1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTUxLVx0aWYgKHIpIHtcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jPTEzMz1zdGF0aWMgaW50IHZpcnR1YWxfbmNpZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNTItXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE1MzpcdHJldCA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UodmRldi1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTU0LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmluY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oPTI4MD12b2lkIG5jaV9mcmVlX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldik7XG5pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaDoyODE6aW50IG5jaV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpO1xuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmgtMjgyLXZvaWQgbmNpX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcbi0tXG5uZXQvbmZjL25jaS9jb3JlLmM9MTI0ND1FWFBPUlRfU1lNQk9MKG5jaV9mcmVlX2RldmljZSk7XG4tLVxubmV0L25mYy9uY2kvY29yZS5jLTEyNDYtLyoqXG5uZXQvbmZjL25jaS9jb3JlLmM6MTI0NzogKiBuY2lfcmVnaXN0ZXJfZGV2aWNlIC0gcmVnaXN0ZXIgYSBuY2kgZGV2aWNlIGluIHRoZSBuZmMgc3Vic3lzdGVtXG5uZXQvbmZjL25jaS9jb3JlLmMtMTI0OC0gKlxuLS1cbm5ldC9uZmMvbmNpL2NvcmUuYy0xMjUwLSAqL1xubmV0L25mYy9uY2kvY29yZS5jOjEyNTE6aW50IG5jaV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG5uZXQvbmZjL25jaS9jb3JlLmMtMTI1Mi17XG4tLVxubmV0L25mYy9uY2kvY29yZS5jLTEzMTAtfVxubmV0L25mYy9uY2kvY29yZS5jOjEzMTE6RVhQT1JUX1NZTUJPTChuY2lfcmVnaXN0ZXJfZGV2aWNlKTtcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMzEyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MDIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBgdmlydHVhbF9uY2lkZXYuY2AgLSBQb3RlbnRpYWwgR29sZG1pbmUgZm9yIE5DSSBFbXVsYXRpb24gYW5kIEZ1enppbmcqKgoKUmlnaHQsICp2aXJ0dWFsX25jaWRldi5jKiEgVGhhdCYjMzk7cyBleGNlbGxlbnQgbmV3cy4gVGhlIGV4aXN0ZW5jZSBvZiB0aGlzIGZpbGUgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgdGhhdCB3ZSBoYXZlIGEgbWVjaGFuaXNtIGZvciBlbXVsYXRpbmcgYW5kIGZ1enppbmcgTkNJIGRldmljZXMuIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgZm9yIGRlZXBlciBzZWN1cml0eSBhbmFseXNpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1vZHVsZSAqYWN0dWFsbHkqIGRvZXMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgaG93IHRoaXMgZW11bGF0aW9uIGlzIGltcGxlbWVudGVkLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWUgd2Vha25lc3NlcyBvciBpbnRlcmVzdGluZyBiZWhhdmlvcnMgd2l0aGluIGl0cyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXJ0dWFsX25jaWRldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtNQUlOVEFJTkVSUz0xOTExOD1TOlx0U3VwcG9ydGVkXG5NQUlOVEFJTkVSUzoxOTExOTpGOlx0ZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuY1xuTUFJTlRBSU5FUlMtMTkxMjAtRjpcdHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25jaS9cbi0tXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTkZDX1NUOTVIRilcdCYjNDM7PSBzdDk1aGYvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTkZDX1ZJUlRVQUxfTkNJKVx0JiM0Mzs9IHZpcnR1YWxfbmNpZGV2Lm9cbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jPTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyB2aXJ0dWFsX25jaV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04MS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6ODI6c3RhdGljIHNzaXplX3QgdmlydHVhbF9uY2lkZXZfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtODMtXHRcdFx0XHQgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTExMi1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTEzOnN0YXRpYyBzc2l6ZV90IHZpcnR1YWxfbmNpZGV2X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMTQtXHRcdFx0XHQgICAgY29uc3QgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTEzMi1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTMzOnN0YXRpYyBpbnQgdmlydHVhbF9uY2lkZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTM0LXtcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE2My1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTY0OnN0YXRpYyBpbnQgdmlydHVhbF9uY2lkZXZfY2xvc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE2NS17XG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNzUtXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE3NjpzdGF0aWMgbG9uZyB2aXJ0dWFsX25jaWRldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTc3LVx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTkxLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTI6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmlydHVhbF9uY2lkZXZfZm9wcyA9IHtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTkzLVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NDpcdC5yZWFkID0gdmlydHVhbF9uY2lkZXZfcmVhZCxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk1Olx0LndyaXRlID0gdmlydHVhbF9uY2lkZXZfd3JpdGUsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NjpcdC5vcGVuID0gdmlydHVhbF9uY2lkZXZfb3BlbixcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk3Olx0LnJlbGVhc2UgPSB2aXJ0dWFsX25jaWRldl9jbG9zZSxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk4Olx0LnVubG9ja2VkX2lvY3RsID0gdmlydHVhbF9uY2lkZXZfaW9jdGxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTk5LX07XG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYz0yMDE9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIG1pc2NkZXYgPSB7XG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0yMDMtXHQubmFtZSA9IFwmIzM0O3ZpcnR1YWxfbmNpXCYjMzQ7LFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoyMDQ6XHQuZm9wcyA9IFx1MDAyNnZpcnR1YWxfbmNpZGV2X2ZvcHMsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIwNS1cdC5tb2RlID0gMDYwMCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDIxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGUgc2l0dWF0aW9uOgoKKipBbmFseXppbmcgdGhlIGBzdC1uY2lgIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBzbyB0aGUgcGF0Y2ggaXMgcGlucG9pbnRlZCBkaXJlY3RseSBhdCB0aGUgYHN0LW5jaWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYm90aCBgY29yZS5jYCBhbmQgYHNlLmNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmZjL3N0LW5jaS9gIGRpcmVjdG9yeS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhlIGBzdC1uY2lgIGRyaXZlciBpbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50IGlmIGl0JiMzOTtzIHZpcnR1YWxpemVkPyBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGh5cGVydmlzb3IgYW5kIGhvdyBJL08gaXMgaGFuZGxlZC4KClRoZSBxdWljayBpbnZlc3RpZ2F0aW9uIHJldmVhbHMgdGhhdCB0aGlzIGRyaXZlciByZWxpZXMgb24gZWl0aGVyIEkyQyBvciBTUEkuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBub3cgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZS4gVGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmZjL3N0LW5jaS9gIGZpbGVzIHRoZW1zZWx2ZXMgYW5kIHNlZSB3aGF0JiMzOTtzIGNoYW5nZWQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgaW4gdGhvc2UgY29udGV4dHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7Y29yZS5jJiMzNDssCiAgICAmIzM0O2kyYy5jJiMzNDssCiAgICAmIzM0O25kbGMuYyYjMzQ7LAogICAgJiMzNDtuZGxjLmgmIzM0OywKICAgICYjMzQ7c2UuYyYjMzQ7LAogICAgJiMzNDtzcGkuYyYjMzQ7LAogICAgJiMzNDtzdC1uY2kuaCYjMzQ7LAogICAgJiMzNDt2ZW5kb3JfY21kcy5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDAzCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNzk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIGZvciBORkMgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7c3QtbmNpLCB0aGF0JiMzOTtzIGFuIFNUTWljcm9lbGVjdHJvbmljcyBORkMgZHJpdmVyLCByaWdodD8mIzM0OyBJdCB1c2VzIEkyQyBvciBTUEksIHR5cGljYWwgZm9yIE5GQy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gU3l6a2FsbGVyIHJlbGlhYmx5IGZ1enogdGhvc2UgaW50ZXJmYWNlcz8gSSBrbm93IGl0IGNhbiBmdXp6IEkyQywgZ2VuZXJhbGx5IHZpYSBgL2Rldi9pMmMtKmAgZGV2aWNlcywgYnV0IGl0IG9mdGVuIG5lZWRzIHNvbWUgc3BlY2lhbCBzZXR1cCwgYSBwc2V1ZG8tZGV2aWNlLCBvciBpbnN0YW50aWF0aW9uIHRocm91Z2ggdGhlIGRldmljZSB0cmVlIG9yIHN5c2ZzLiBJdCBjYW4gYWxzbyBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcyB2aWEgbmV0bGluayBvciBzeXNmcyB3aGljaCBvcGVucyBkb29ycy4KCkJ1dCB3YWl0LCBgc3QtbmNpYCBpcyBhICpwaHlzaWNhbCogZGV2aWNlIGRyaXZlci4gVGhhdOKAmXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBDYW4gSSByZWFjaCBzcGVjaWZpYyBmdW5jdGlvbnMgaW4gaXQgd2l0aG91dCB0aGUgaGFyZHdhcmU/IExldCYjMzk7cyB6b29tIGluIG9uIGBzdF9uY2lfc2VfaW9gLiBJdCYjMzk7cyBwYXJ0IG9mIHRoZSBgc3RfbmNpX29wc2Agc3RydWN0dXJlLCBkZWZpbmVkIGluIGBzdC1uY2kvY29yZS5jYC4gSG1tLCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBuZXQvbmZjL25jaS9jb3JlLmNgIGFuZCBgbmV0L25mYy9uZXRsaW5rLmNgLiBUaGF0JiMzOTtzIGludHJpZ3VpbmchIGBuZXQvbmZjL25ldGxpbmsuY2AgaXMgY29yZSBORkMgY29kZSwgYW5kLCBjcnVjaWFseSwgaXQmIzM5O3MgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLgoKVGhlIGNoYW5nZSBpbiBgbmV0L25mYy9uZXRsaW5rLmNgLCBhZGRpbmcgYSBgc2h1dHRpbmdfZG93bmAgY2hlY2sgaW4gYG5mY19zZV9pb2AgKGNhbGxlZCBieSB0aGUgYE5GQ19DTURfU0VfSU9gIG5ldGxpbmsgY29tbWFuZCksIGNvbmZpcm1zIHRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHRoZXJlZm9yZSBmdXp6YWJsZS4gVGhhdCYjMzk7cyBhIHRhcmdldCEKCkFsc28sIHRoZSBhZGRpdGlvbiBpbiBgbmV0L25mYy9uY2kvY29yZS5jYCBpbnNpZGUgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAsICh3aGljaCBpcyBjYWxsZWQgd2hlbiBhbiBOQ0kgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCksIHNlZW1zIHJlYWNoYWJsZSBhcyB3ZWxsIChsaWtlIHdoZW4gY2xvc2luZyBgL2Rldi92aXJ0dWFsX25jaWApLgoKU28sIHdoaWxlIHRoZSBjaGFuZ2VzICp3aXRoaW4qIHRoZSBgc3QtbmNpYCBkcml2ZXIgaXRzZWxmIG1pZ2h0IHJlcXVpcmUgdGhlIGFjdHVhbCBoYXJkd2FyZSwgdGhvc2UgY29yZSBORkMgbW9kaWZpY2F0aW9ucz8gVGhvc2UgYXJlIGZhaXIgZ2FtZS4KCkhhbmcgb27igKZ0aGlzIHBhdGNoIGlzIGEgU3l6Ym90IGZpeCEgSWYgU3l6Ym90IGZvdW5kIGEgYnVnLCB0aGF0ICptZWFucyogaXQmIzM5O3MgcmVhY2hpbmcgdGhpcyBjb2RlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgU3l6Ym90IGlzIHRyaWdnZXJpbmcgYHN0LW5jaWAuIERvZXMgU3l6a2FsbGVyIGhhdmUgc3BlY2lmaWMgZGVzY3JpcHRpb25zIGZvciBgc3QtbmNpYCwgb3IgaXMgaXQgYmVpbmcgaW5zdGFudGlhdGVkIHNvbWVob3c/IEkga25vdyBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHdpdGggdGhlIHJpZ2h0IHN5eiBjYWxscywgYnV0IEkgZG8gbm90IHNlZSBhbiBpbnN0YW50aWF0aW9uIHVzaW5nIGBzeXpfaTJjX3NldHVwYC4gSXMgaXQgdGhyb3VnaCBzb21lIG90aGVyIG1ldGhvZD8gTm8uIEFuZCBpdCBjYW4mIzM5O3QgYmUgYHZpcnR1YWxfbmNpZGV2YCBzaW5jZSB0aGF0IHVzZXMgdGhlIGB2aXJ0dWFsX25jaV9vcHNgLCBub3QgYHN0X25jaV9vcHNgLiBOZWVkIHRvIGNoZWNrIGBzdF9uY2lfb3BzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX2RyaXZlcl9vcHMgc3RfbmNpX3Byb3Bfb3BzW10gPSB7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy05NC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6OTU6c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHN0X25jaV9vcHMgPSB7XG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTk2LVx0LmluaXQgPSBzdF9uY2lfaW5pdCxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTExMz1pbnQgc3RfbmNpX3Byb2JlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgaW50IHBoeV9oZWFkcm9vbSxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEzMy1cdEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKHN0X25jaV9wcm9wX29wcykgXHUwMDNlIE5DSV9NQVhfUFJPUFJJRVRBUllfQ01EKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTM0Olx0bmRsYy1cdTAwM2VuZGV2ID0gbmNpX2FsbG9jYXRlX2RldmljZShcdTAwMjZzdF9uY2lfb3BzLCBwcm90b2NvbHMsXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEzNS1cdFx0XHRcdFx0cGh5X2hlYWRyb29tLCBwaHlfdGFpbHJvb20pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTE4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgc3l6Ym90LURpc2NvdmVyZWQgQnVnIGluIHN0LW5jaSoqCgpBbHJpZ2h0LCBzbyBzeXpib3QgZmxhZ2dlZCBhIGJ1ZyB3aXRoaW4gYHN0LW5jaWAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaG93IGRpZCBzeXpib3QgZXZlbiAqdHJpZ2dlciogdGhpcz8gV2hhdCB3YXMgdGhlIGVudHJ5IHBvaW50PyBNeSBndXQgZmVlbGluZyBpcyBzdWdnZXN0aW5nIGEgZnVuY3Rpb24gbGlrZSBgc3l6X2kyY19zZXR1cGAuIEl0IHNvdW5kcyBwbGF1c2libGUsIGdpdmVuIHRoZSBJMkMgY29udGV4dC4gQnV0IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBodW5jaC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgYHN5el9pMmNfc2V0dXBgIGlzLCBpbiBmYWN0LCBldmVuIHBhcnQgb2YgdGhlIGtlcm5lbCBjYWxsczsgdGhlIHByZXNlbmNlIG9mIGBzeXpfaTJjX3NldHVwYCB3b3VsZCByZWFsbHkgdmFsaWRhdGUgdGhpcyB0aGVvcnkuIFRoZW4sIEkgY2FuIHN0YXJ0IGxvb2tpbmcgYXQgdGhlIGNhbGwgYW5kIGdvIGZyb20gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6X2kyY19zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNzgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSTJDIERldmljZSBJbnN0YW50aWF0aW9uIEludmVzdGlnYXRpb24qKgoKT2theSwgbm8sIGhvbGQgb24uLi4gd2hhdCBhYm91dCB0aGF0IGBzeXpfbmNpX3NldHVwYCBmdW5jdGlvbj8gSG1tLCByaWdodCwgY2FuJiMzOTt0IGp1c3QgYGdyZXBwZXJgIGZvciBhbnl0aGluZyBzdGFydGluZyB3aXRoIGBzeXpfYCwgdGhhdCYjMzk7cyBnb2luZyB0byBiZSBhIG1lc3MuIEJ1dCB3YWl0IGEgc2Vjb25kLi4uIGlzbiYjMzk7dCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgc3l6Ym90IGFuZCBJMkMgZGV2aWNlcz8gRGlkIGl0IHVzZSB0aGUgYEkyQ19ORVdfREVWSUNFYCBpb2N0bCBvbiBgL2Rldi9pMmMtKmA/IE5vLCB0aGF0IGNhbiYjMzk7dCBiZSByaWdodC4uLiBpc24mIzM5O3QgdGhhdCBhIHN5c2ZzIHRoaW5nLCBvciBzb21ldGhpbmcgc2ltaWxhcj8gQWN0dWFsbHksIEkgKnRoaW5rKiBgSTJDX1NMQVZFYCBpcyBhbiBpb2N0bCwgYnV0IHRoYXQmIzM5O3Mgb2J2aW91c2x5IGRpZmZlcmVudC4KCkFoYSEgTm93IEkgcmVtZW1iZXIuLi4gSTJDIGRldmljZXMgKmFyZSogaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnMhIFNvbWV0aGluZyBsaWtlIGBlY2hvIHN0LW5jaSAmZ3Q7IC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0wL25ld19kZXZpY2VgLiBZZXMsICp0aGF0JiMzOTtzKiBpdCEgU3l6a2FsbGVyIGRvZXMgZXhhY3RseSB0aGF0IHRvIGNyZWF0ZSB0aGUgZGV2aWNlcyEgU28sIGl0JiMzOTtzIHdyaXRpbmcgdG8gc3lzZnMgdG8gaW5zdGFudGlhdGUgdGhlIEkyQyBkZXZpY2VzLgoKQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyB0byBjaGVjayBpZiBgc3QtbmNpYCBhY3R1YWxseSAqaXMqIGFuIEkyQyBkcml2ZXIuLi4gSSBiZXQgdGhhdCYjMzk7cyB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdF9uY2lfaTJjX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM9Mjc4PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0X25jaV9pMmNfbWF0Y2gpO1xuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI3OS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzoyODA6c3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHN0X25jaV9pMmNfZHJpdmVyID0ge1xuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI4MS1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI4OS19O1xuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjI5MDptb2R1bGVfaTJjX2RyaXZlcihzdF9uY2lfaTJjX2RyaXZlcik7XG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjkxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDExMAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNULU5DSSBEcml2ZXIgRml4KioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgYW4gSTJDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgc3QtbmNpYCBkcml2ZXIuIEdvb2QsIEkgdW5kZXJzdGFuZCBob3cgU3l6a2FsbGVyIGNhbiBpbnRlcmFjdCB3aXRoIGl0OyBpdCB1c2VzIGBzeXNmc2AgYW5kIGBuZXdfZGV2aWNlYCBvbiBJMkMgYWRhcHRlcnMgc3VjaCBhcyBgaTJjLXN0dWJgIG9yIGBpMmMtZGV2YC4gVGhhdCBtZWFucyB0aGUgcGF0aCB0byB0cmlnZ2VyaW5nIGBzdC1uY2lgIGlzIGNsZWFyLgoKVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhIGZpeCBmb3IgYSByYWNlIGNvbmRpdGlvbiB3aXRoaW4gYHN0LW5jaWAuIEl0IGFsc28gYWRkcyBhIGBwcmVfdW5yZWdpc3RlcmAgY2FsbGJhY2sgdG8gdGhlIGBuY2lfb3BzYCBzdHJ1Y3R1cmUsIHdoaWNoIG1ha2VzIG1lIHdvbmRlciBhYm91dCB0aGUgc3BlY2lmaWMgY29uY3VycmVuY3kgaXNzdWUgdGhleSYjMzk7cmUgYWRkcmVzc2luZy4gQWRkaXRpb25hbGx5LCB0aGVyZeKAmXMgYSBjaGVjayBhZGRlZCB3aXRoaW4gYG5mY19zZV9pb2AgaW4gYG5ldC9uZmMvbmV0bGluay5jYCwgc28gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0bGluayBpbnRlcmFjdGlvbiBwbGF5cyBpbnRvIHRoaXMuCgpOZXh0LCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBjb25maXJtIHRoZSBuZWNlc3NhcnkgY29uZmlnIG9wdGlvbnM6IGBDT05GSUdfTkZDX1NUX05DSWAgZm9yIHRoZSBkcml2ZXIgaXRzZWxmLCBhbmQgZWl0aGVyIGBDT05GSUdfTkZDX1NUX05DSV9JMkNgIG9yIGBDT05GSUdfTkZDX1NUX05DSV9TUElgIGRlcGVuZGluZyBvbiB0aGUgaW50ZW5kZWQgYnVzLiBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWdgIGFuZCBgZHJpdmVycy9uZmMvS2NvbmZpZ2AgZm9yIHRoZSBwcmVjaXNlIGRldGFpbHMgb24gdGhlc2Ugb3B0aW9ucyBhbmQgYW55IGRlcGVuZGVuY2llcy4gRnJvbSB0aGVyZSBJJiMzOTtsbCBiZSBhYmxlIHRvIHNlZSB0aGUgZnVsbCBzY29wZSBvZiB3aGF0JiMzOTtzIGludm9sdmVkIHdpdGggdGhpcyBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfU1RfTkNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1RfTkNJXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy04LVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6OTpjb25maWcgTkZDX1NUX05DSV9JMkNcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIFNUIE5DSSBORkMgZHJpdmVyIChJMkMpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjAtXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyMTpjb25maWcgTkZDX1NUX05DSV9TUElcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIFNUIE5DSSBORkMgZHJpdmVyIChTUEkpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTEyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBORkNfU1RfTkNJX0kyQyBEZXBlbmRlbmNpZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBORkNfU1RfTkNJX0kyQ2AgbW9kdWxlLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIG1lYW5zIGRpZ2dpbmcgaW50byB0aGUgY29kZSwgcG9zc2libHkgbG9va2luZyBhdCBoZWFkZXIgZmlsZXMsIGFuZCB0cmFjaW5nIGJhY2sgZnJvbSBgTkZDX1NUX05DSV9JMkNgIHRvIGlkZW50aWZ5IHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgaXQgcmVsaWVzIHVwb24uIElzIGl0IHN0cmljdGx5IGhhcmR3YXJlLWRlcGVuZGVudCwgb3IgZG9lcyBpdCBhYnN0cmFjdCBzb21lIGxvd2VyLWxldmVsIGludGVyZmFjZXM/IEFyZSB0aGVyZSBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIHByb3RvY29scyBpdCBhc3N1bWVzIGFyZSBpbiBwbGFjZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciBJJiMzOTttIGRlYWxpbmcgd2l0aCBhIGhpZ2gtbGV2ZWwgZHJpdmVyIG9yIHNvbWV0aGluZyBtb3JlIGdyYW51bGFyLiBBcmUgdGhlcmUgc3BlY2lmaWMgcmVnaXN0ZXIgbWFwcGluZ3MgSSBuZWVkIHRvIGtub3c/IFdoYXQgb3RoZXIgbW9kdWxlcyBwcm92aWRlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdGllcyB0aGF0IGl0IG5lZWRzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBib3R0bGVuZWNrcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFVsdGltYXRlbHksIEkmIzM5O20gdHJ5aW5nIHRvIGVzdGFibGlzaCBpdHMgcG9zaXRpb24gd2l0aGluIHRoZSBicm9hZGVyIE5GQyBzdGFjayBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBwcm9wZXIgY29udGV4dCB3aGVuIGRlYWxpbmcgd2l0aCwgcmV2aWV3aW5nIG9yIHBvc3NpYmx5IGRlYnVnZ2luIHRoZSBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTkZDX1NUX05DSVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdGhlbHBcbiAgIDU6XHRcdCAgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBOQ0kgY2hpcHMgY29yZSBkcml2ZXIuIEl0IGltcGxlbWVudHMgdGhlIGNoaXBzZXRcbiAgIDY6XHRcdCAgTkNJIGxvZ2ljIGFuZCBob29rcyBpbnRvIHRoZSBORkMga2VybmVsIEFQSXMuIFBoeXNpY2FsIGxheWVycyB3aWxsXG4gICA3Olx0XHQgIHJlZ2lzdGVyIGFnYWluc3QgaXQuXG4gICA4Olx0XG4gICA5Olx0Y29uZmlnIE5GQ19TVF9OQ0lfSTJDXG4gIDEwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcJiMzNDtcbiAgMTE6XHRcdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgSTJDXG4gIDEyOlx0XHRzZWxlY3QgTkZDX1NUX05DSVxuICAxMzpcdFx0aGVscFxuICAxNDpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIEkyQyBpbnRlcmZhY2UgdG8gdGhlXG4gIDE1Olx0XHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cbiAgMTY6XHRcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgaTJjIGJ1cy5cbiAgMTc6XHRcbiAgMTg6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBzdC1uY2lfaTJjLlxuICAxOTpcdFx0ICBTYXkgTiBpZiB1bnN1cmUuXG4gIDIwOlx0XG4gIDIxOlx0Y29uZmlnIE5GQ19TVF9OQ0lfU1BJXG4gIDIyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcJiMzNDtcbiAgMjM6XHRcdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgU1BJXG4gIDI0Olx0XHRzZWxlY3QgTkZDX1NUX05DSVxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIFNQSSBpbnRlcmZhY2UgdG8gdGhlXG4gIDI3Olx0XHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cbiAgMjg6XHRcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgc3BpIGJ1cy5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBzdC1uY2lfc3BpLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY0NQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgbmVlZCBmb3IgYE5GQ19OQ0lgLCBgSTJDYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuIFN0YW5kYXJkIGNvbXBvbmVudHMsIG5vIHN1cnByaXNlcyB0aGVyZSwgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLiBCdXQgd2FpdC4uLiB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCBhbHNvIHRvdWNoZXMgYG5ldC9uZmMvbmV0bGluay5jYC4gVGhhdCYjMzk7cyBwYXJ0IG9mIHRoZSAqY29yZSogTkZDIHN1YnN5c3RlbS4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgbm90IGp1c3QgZGVhbGluZyB3aXRoIGEgcGVyaXBoZXJhbCBkcml2ZXI7IHRoaXMgcGF0Y2ggaGFzIHBvdGVudGlhbCBzeXN0ZW0td2lkZSBpbXBsaWNhdGlvbnMuIEJlZm9yZSBJIGRpdmUgZGVlcGVyLCBJIHNob3VsZCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIGNoYW5nZXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYG5ldC9uZmMvS2NvbmZpZ2AuIFNlZSB3aGF0IG9wdGlvbnMgYXJlIGJlaW5nIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBjaGFuZ2UgaW1wbGljYXRpb25zLiBUaGlzIGNvdWxkIGJlIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3Igb3IgYSBtaW5vciB0d2VhaywgZGVwZW5kaW5nIG9uIHRoZSBLY29uZmlnIGZpbGUuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWctNS1cbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXG5uZXQvbmZjL0tjb25maWctNy1cdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbi0tXG5uZXQvbmZjL0tjb25maWctMTYtXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXG5uZXQvbmZjL0tjb25maWctMTgtXHRkZXBlbmRzIG9uIE5GQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA1MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVjb2RpbmcgdGhlIE5GQyBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgTkZDYCBjb25maWd1cmF0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gVGhlbiwgSSBzZWUgdGhlIHBhdGNoIGlzIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYG5ldC9uZmMvbmNpL2NvcmUuY2AuIFRoaXMgdGVsbHMgbWUgaW1tZWRpYXRlbHkgdGhhdCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0aGUgTmV0d29yayBDb250cm9sbGVyIEludGVyZmFjZSwgb3IgYE5GQ19OQ0lgIGFzIHRoZSBjb2RlIHdvdWxkIHJlY29nbml6ZSBpdCwgcG9ydGlvbiBvZiB0aGUgTkZDIHN0YWNrLiBUaGlzIGBjb3JlLmNgIGZpbGUgaXMgdGhlIGhlYXJ0IG9mIHRoZSBOQ0kgaW1wbGVtZW50YXRpb24uIEtub3dpbmcgdGhpcyBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIG9mIHRoZSBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucyBhbmQgdGhlaXIgbGlrZWx5IGltcGFjdCBvbiB0aGUgb3ZlcmFsbCBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgcGF0Y2ggdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGNoYW5nZXMsIGJ1dCB0aGlzIGluaXRpYWwgY29udGV4dCBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSByYXRpb25hbGUgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfTkNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cdGRlcGVuZHMgb24gTkZDXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTIzLVxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXG5uZXQvbmZjL25jaS9LY29uZmlnLTI1LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBUVFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MTMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBTY29wZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgZmlndXJpbmcgb3V0IGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBuYWlsIGRvd24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBCYXNlZCBvbiB0aGUgY29kZSBjaGFuZ2VzLCBpdCBsb29rcyBsaWtlIHdlIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSBlbmFibGVkOiBgTkZDYCwgYE5GQ19OQ0lgLCBgSTJDYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuIFdhaXQsIHdhaXQsIGBJMkNgIGlzIHByZXR0eSBzdGFuZGFyZCBmb3Igc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb25zLCBidXQgaXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBsaXN0IGl0IG91dCBqdXN0IHRvIGJlIHN1cmUuIEFscmlnaHQsIGxldCYjMzk7cyBpbmNsdWRlIGBTUElgIGFuZCBgTkZDX1NUX05DSV9TUElgIGFzIHdlbGwganVzdCBpbiBjYXNlLiBBbHdheXMgYmV0dGVyIHRvIGJlIHRob3JvdWdoLgoKTm93LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGVzZTogYHN0X25jaV9zZV9pb2AsIGBzdF9uY2lfc2Vfd3RfdGltZW91dGAsIGBzdF9uY2lfc2VfZGVpbml0YCwgYHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWRgLCBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYCwgYW5kIGBuZmNfc2VfaW9gLiBPa2F5LCBJIHNlZS4gSG93ZXZlciwgYHN0X25jaV9zZV93dF90aW1lb3V0YCBhbmQgYHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWRgIGFyZSBtYXJrZWQgYXMgYHN0YXRpY2AuIEkgc2hvdWxkIHByb2JhYmx5IHZlcmlmeSB3aGV0aGVyIGBzdF9uY2lfc2VfaW9gIGlzIGV4cG9ydGVkIG9yIG5vdCwganVzdCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBzY29wZSBvZiB0aGUgaW1wYWN0IG9mIHRoZSBjaGFuZ2VzLiBUaGlzIG1pZ2h0IGluZGljYXRlIHdoZXRoZXIgaXTigJlzIGEgcHVibGljIGludGVyZmFjZSBvciBhbiBpbnRlcm5hbCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX3NlX2lvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTAzLVx0LmRpc2FibGVfc2UgPSBzdF9uY2lfZGlzYWJsZV9zZSxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTA0Olx0LnNlX2lvID0gc3RfbmNpX3NlX2lvLFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDUtXHQuaGNpX2xvYWRfc2Vzc2lvbiA9IHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uLFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTY1Nj1FWFBPUlRfU1lNQk9MX0dQTChzdF9uY2lfZGlzY292ZXJfc2UpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjU3LVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NjU4OmludCBzdF9uY2lfc2VfaW8oc3RydWN0IG5jaV9kZXYgKm5kZXYsIHUzMiBzZV9pZHgsXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02NTktXHRcdCAgICAgICB1OCAqYXBkdSwgc2l6ZV90IGFwZHVfbGVuZ3RoLFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTY4My19XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo2ODQ6RVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfaW8pO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjg1LVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaD0xMzA9aW50IHN0X25jaV9kaXNhYmxlX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1MzIgc2VfaWR4KTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaDoxMzE6aW50IHN0X25jaV9zZV9pbyhzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTMyIHNlX2lkeCxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaC0xMzItXHRcdFx0XHR1OCAqYXBkdSwgc2l6ZV90IGFwZHVfbGVuZ3RoLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzYzNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyB0aGUgRXhwb3J0ZWQgU3ltYm9scyoqCgpBbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIGNvbmZpcm1pbmcgdGhhdCBgc3RfbmNpX3NlX2lvYCBpcywgaW4gZmFjdCwgYW4gZXhwb3J0ZWQgc3ltYm9sLiBHb29kLCB0aGF0JiMzOTtzIHdoYXQgSSBleHBlY3RlZC4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgYHN0X25jaV9zZV9kZWluaXRgIGlzIGV4cG9ydGVkIGFzIHdlbGwuIFRoaXMgY29uZmlybXMgdGhlIGluaXRpYWwgdW5kZXJzdGFuZGluZyBhbmQgdGhlIHBsYW5uZWQgYXJjaGl0ZWN0dXJlLiBOb3cgSSBjYW4gbW92ZSBmb3J3YXJkIHdpdGggdGhlIG5leHQgc3RlcCwgYmFzZWQgb24gdGhpcyBjb25maXJtYXRpb24uIEV4Y2VsbGVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX3NlX2RlaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz05NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgc3RfbmNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNy1cdC5oY2lfY21kX3JlY2VpdmVkID0gc3RfbmNpX2hjaV9jbWRfcmVjZWl2ZWQsXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjEwODpcdC5wcmVfdW5yZWdpc3RlciA9IHN0X25jaV9zZV9kZWluaXQsXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwOS1cdC5wcm9wX29wcyA9IHN0X25jaV9wcm9wX29wcyxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYz03NDk9RVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfaW5pdCk7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy03NTAtXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo3NTE6dm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNzUyLXtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy03NjItfVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NzYzOkVYUE9SVF9TWU1CT0woc3RfbmNpX3NlX2RlaW5pdCk7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oPTEyNT1pbnQgc3RfbmNpX3NlX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHN0cnVjdCBzdF9uY2lfc2Vfc3RhdHVzICpzZV9zdGF0dXMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oOjEyNjp2b2lkIHN0X25jaV9zZV9kZWluaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oLTEyNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyNjEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBjaGFuZ2VzIEkmIzM5O20gc2VlaW5nOgoKKipBbmFseXppbmcgQ29kZSBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb2RlIG1vZGlmaWNhdGlvbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYCBmdW5jdGlvbiBpcyBnZXR0aW5nIHRvdWNoZWQsIGFsb25nIHdpdGggYG5mY19zZV9pb2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBwcm9iYWJseSBpbnZvbHZlcyBzb21lIGxvd2VyLWxldmVsIGludGVyYWN0aW9uIHdpdGggaGFyZHdhcmUgb3IgaG93IHRoZSBORkMgU2VjdXJlIEVsZW1lbnQgaXMgbWFuYWdlZCB3aXRoaW4gdGhlIHN5c3RlbS4gYG5jaV91bnJlZ2lzdGVyX2RldmljZWAgc3VnZ2VzdHMgdW5yZWdpc3RyYXRpb24sIHNvIHRoZXJlJiMzOTtzIGxpa2VseSBzb21lIGRldmljZSBjbGVhbnVwIG9yIHRlYXJkb3duIG9jY3VycmluZy4gUGVyaGFwcyBhIHNwZWNpZmljIHNlY3VyZSBlbGVtZW50IGlzIGJlaW5nIHJlbW92ZWQgb3IgZGVhY3RpdmF0ZWQuIGBuZmNfc2VfaW9gIGlzIGEgZ2VuZXJhbCBORkMgc2VjdXJlIGVsZW1lbnQgSS9PIGZ1bmN0aW9uLCBhbmQgY2hhbmdlcyBoZXJlIGNvdWxkIGluZGljYXRlIGEgY2hhbmdlIGluIGhvdyBkYXRhIGlzIHNlbnQgYW5kIHJlY2VpdmVkIHRvIGFuZCBmcm9tIHRoZSBzZWN1cmUgZWxlbWVudC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgYWN0dWFsIGNvZGUgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyB0byB1bmRlcnN0YW5kIHdoYXQgZXhhY3RseSBoYXMgY2hhbmdlZC4gV2hhdCYjMzk7cyB0aGUgY29udGV4dD8gV2hhdCB0cmlnZ2VyZWQgdGhlc2UgbW9kaWZpY2F0aW9ucz8gQXJlIHRoZXNlIHJlbGF0ZWQgdG8gYSBuZXcgZmVhdHVyZSwgYSBidWcgZml4LCBvciBzZWN1cml0eSBlbmhhbmNlbWVudD8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfc2VfaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25ldGxpbmsuYz0xNDA2PXN0YXRpYyBpbnQgbmZjX2dlbmxfZHVtcF9zZXNfZG9uZShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L25mYy9uZXRsaW5rLmMtMTQxNy1cbm5ldC9uZmMvbmV0bGluay5jOjE0MTg6c3RhdGljIGludCBuZmNfc2VfaW8oc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHNlX2lkeCxcbm5ldC9uZmMvbmV0bGluay5jLTE0MTktXHRcdCAgICAgdTggKmFwZHUsIHNpemVfdCBhcGR1X2xlbmd0aCxcbi0tXG5uZXQvbmZjL25ldGxpbmsuYz0xNTE1PXN0YXRpYyBpbnQgbmZjX2dlbmxfc2VfaW8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvbmZjL25ldGxpbmsuYy0xNTU3LVxubmV0L25mYy9uZXRsaW5rLmM6MTU1ODpcdHJjID0gbmZjX3NlX2lvKGRldiwgc2VfaWR4LCBhcGR1LCBhcGR1X2xlbiwgc2VfaW9fY2IsIGN0eCk7XG5uZXQvbmZjL25ldGxpbmsuYy0xNTU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDgwMQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5GQyBTZWN1cmUgRWxlbWVudCBJTyBGbG93KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBORkMgU2VjdXJlIEVsZW1lbnQgSU8uIEkgc2VlIHRoYXQgYG5mY19zZV9pb2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24gaW4gYG5ldC9uZmMvbmV0bGluay5jYCwgd2hpY2ggbWFrZXMgYG5mY19nZW5sX3NlX2lvYCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCB0byBmb2N1cyBvbi4gQnV0IHRvIHRyYWNlIHRoZSBkZS1pbml0aWFsaXphdGlvbiBmbG93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nICphZnRlciogYW4gTkZDIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQsIHNvIEkmIzM5O20gYWxzbyBnb2luZyB0byBleGFtaW5lIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgLCBgc3RfbmNpX3NlX2lvYCwgYW5kIGBzdF9uY2lfc2VfZGVpbml0YC4KCldhaXQgYSBtaW51dGUsIGlzIGBzdF9uY2lfc2VfZGVpbml0YCBhY3R1YWxseSBjYWxsZWQgZnJvbSBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYD8gWWVzLCBJIHNlZSBpdCBub3csIGl0JiMzOTtzIGNhbGxlZCB0aHJvdWdoIGBuZGV2LSZndDtvcHMtJmd0O3ByZV91bnJlZ2lzdGVyYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQ7IGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgIGxvb2tzIGxpa2UgYSBrZXkgc3ltYm9sIHRvIHRyYWNrLiBJIGNhbiBzZWUgdGhlIGJpZ2dlciBwaWN0dXJlIG1vcmUgY2xlYXJseSB3aXRoIHRoYXQgaW4gbWluZC4KCk5vdywgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBvbiB3aGV0aGVyIGB2aXJ0dWFsX25jaWRldmAgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIGl0IHJlcXVpcmVzIGEgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB0eXBpY2FsIGVudmlyb25tZW50IHRvIGJldHRlciBhbmFseXplIHRoZSBkZS1pbml0aWFsaXphdGlvbiBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19WSVJUVUFMX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNDUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2MzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBzdC1uY2lgIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBzdC1uY2lgIGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0IGZpeGVzIHNvbWV0aGluZyByZWxhdGVkIHRvIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgU2VjdXJlIEVsZW1lbnQgSS9PLCBsaWtlbHkgYSByYWNlIGNvbmRpdGlvbi4gVG8gcHJvcGVybHkgYnVpbGQgYW5kIHRlc3QgdGhpcywgSSBuZWVkIHRvIGVuc3VyZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuICBgTkZDX1ZJUlRVQUxfTkNJYCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIGl0IGxldHMgbWUgZnV6eiB0aGUgTkNJIGNvcmUgd2l0aG91dCBuZWVkaW5nIHBoeXNpY2FsIGhhcmR3YXJlLCB3aGljaCBpcyBhbHdheXMgY29udmVuaWVudC4gSG93ZXZlciwgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIHRoZSBgc3QtbmNpYCBkcml2ZXIsIHNvIEkgYWJzb2x1dGVseSBuZWVkIHRvIGVuYWJsZSBgTkZDX1NUX05DSV9JMkNgIGFuZCBgTkZDX1NUX05DSV9TUElgIHRvIGNvbXBpbGUgdGhlIHJlbGV2YW50IG1vZGlmaWVkIGNvZGUuCgpIZXJlJiMzOTtzIG15IGxpc3Qgb2YgY29uZmlndXJhdGlvbnMgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgY29tcGlsZXM6CiogICBgTkZDYAoqICAgYE5GQ19OQ0lgCiogICBgTkZDX1NUX05DSV9JMkNgCiogICBgTkZDX1NUX05DSV9TUElgCiogICBgTkZDX1ZJUlRVQUxfTkNJYAoqICAgYEkyQ2AKKiAgIGBTUElgCgpgSTJDYCBhbmQgYFNQSWAgYXJlIHByZXR0eSB1YmlxdWl0b3VzLCBidXQgSSYjMzk7bGwgYWRkIHRoZW0ganVzdCB0byBiZSBzYWZlLiAgTm93LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IHZlcmlmeSBkZXBlbmRlbmNpZXMuIGBORkNfU1RfTkNJX0kyQ2AgZGVwZW5kcyBvbiBgTkZDX05DSSAmYW1wOyZhbXA7IEkyQ2AsIGFuZCBgTkZDX1NUX05DSV9TUElgIGRlcGVuZHMgb24gYE5GQ19OQ0kgJmFtcDsmYW1wOyBTUElgLCBzbyB3ZSYjMzk7cmUgZ29vZCB0aGVyZS4KCkkgbmVlZCB0byBjb25maXJtIHRoYXQgYHN0X25jaV9zZV9kZWluaXRgIGlzIHJlYWNoYWJsZS4gUmlnaHQsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgTkNJIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQuICBJbiB0aGUgY29udGV4dCBvZiBgc3QtbmNpYCwgdGhhdCBoYXBwZW5zIHdoZW4gdGhlIEkyQyBvciBTUEkgZGV2aWNlIGlzIHJlbW92ZWQsIHNvIEkgY2FuIHRyaWdnZXIgdGhpcyB0aHJvdWdoIHN5emthbGxlciwgbGlrZSB3cml0aW5nIHRvIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMC9kZWxldGVfZGV2aWNlYCwgb3IgYnkganVzdCB1bmxvYWRpbmcgdGhlIG1vZHVsZS4gQW5kLCBvZiBjb3Vyc2UsIHRoZXJlJiMzOTtzIGBuZmNfZ2VubF9zZV9pb2AsIHdoaWNoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmsuCgpTbywgdGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZToKKiAgIGBuZmNfZ2VubF9zZV9pb2AKKiAgIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgCiogICBgc3RfbmNpX3NlX2lvYAoqICAgYHN0X25jaV9zZV9kZWluaXRgCgpMZXQmIzM5O3Mgc2VlLi4uYW55IG90aGVyIGZ1bmN0aW9ucz8gYHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWRgIGlzIHN0YXRpYywgYnV0IGl0IHNlZW1zIHRvIGJlIGFuIGV2ZW50IGhhbmRsZXIuICBgc3RfbmNpX3NlX3d0X3RpbWVvdXRgIGlzIGEgdGltZXIgY2FsbGJhY2suIElmIEkgZm9jdXMgb24gZnV6emluZyBgc3RfbmNpX3NlX2lvYCB0aGUgcmVzdCBzaG91bGQgYmUgY292ZXJlZC4KClNvLCB0aGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGFkZHJlc3MgcmFjZSBjb25kaXRpb25zIGluIHRoZSBgc3QtbmNpYCBkcml2ZXIgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gU2VjdXJlIEVsZW1lbnQgSS9PLiBUaGUgbW9kaWZpY2F0aW9ucyB0b3VjaCBib3RoIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAoYG5mY19nZW5sX3NlX2lvYCwgYG5jaV91bnJlZ2lzdGVyX2RldmljZWApIGFuZCBhbHNvIHRoZSBgc3QtbmNpYCBkcml2ZXIgaXRzZWxmIChgc3RfbmNpX3NlX2lvYCwgYHN0X25jaV9zZV9kZWluaXRgKS4gIFRoZXNlIGNvZGUgcGF0aHMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGUgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgdGhlIGluc3RhbnRpYXRpb24gYW5kIHJlbW92YWwgb2YgSTJDL1NQSSBkZXZpY2VzLCB3aGljaCBTeXprYWxsZXIgY2FuIGVhc2lseSBlbXVsYXRlLiBJIHNob3VsZCBqdXN0IGNvbmZpcm0gdGhhdCBJJiMzOTt2ZSBnb3R0ZW4gdGhlIGZ1bmN0aW9uIG5hbWUgb2YgYG5mY19nZW5sX3NlX2lvYCBjb3JyZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfZ2VubF9zZV9pbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbmV0bGluay5jPTE0Nzc9c3RhdGljIHZvaWQgc2VfaW9fY2Iodm9pZCAqY29udGV4dCwgdTggKmFwZHUsIHNpemVfdCBhcGR1X2xlbiwgaW50IGVycilcbi0tXG5uZXQvbmZjL25ldGxpbmsuYy0xNTE0LVxubmV0L25mYy9uZXRsaW5rLmM6MTUxNTpzdGF0aWMgaW50IG5mY19nZW5sX3NlX2lvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvbmZjL25ldGxpbmsuYy0xNTE2LXtcbi0tXG5uZXQvbmZjL25ldGxpbmsuYz0xNzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgbmZjX2dlbmxfb3BzW10gPSB7XG4tLVxubmV0L25mYy9uZXRsaW5rLmMtMTc5NS1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxubmV0L25mYy9uZXRsaW5rLmM6MTc5NjpcdFx0LmRvaXQgPSBuZmNfZ2VubF9zZV9pbyxcbm5ldC9uZmMvbmV0bGluay5jLTE3OTctXHRcdC5mbGFncyA9IEdFTkxfQURNSU5fUEVSTSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcwODMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIE5ldGxpbmsgSGFuZGxlciBmb3IgTkZDKioKCkFscmlnaHQsIHNvIGBuZmNfZ2VubF9zZV9pb2Ag4oCTIHl1cCwgdGhhdCYjMzk7cyB0aGUgbmV0bGluayBoYW5kbGVyIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIEp1c3QgY29uZmlybWluZyB0aGF0IG1lbnRhbCBub3RlLiBOb3csIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHNvbWV0aGluZyBjcml0aWNhbCBmb3IgdGhlIG92ZXJhbGwgZGV2aWNlIG1hbmFnZW1lbnQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gYG5jaV91bnJlZ2lzdGVyX2RldmljZWAgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIEltcG9ydGFudCBmb3Igb3VyIHVzZSBjYXNlIGFuZCBtYWtpbmcgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBnb3RjaGFzIGRvd24gdGhlIGxpbmUuIFdlIGRvbiYjMzk7dCB3YW50IHRvIGdldCBiaXR0ZW4gYnkgc29tZSBzeW1ib2wgdmlzaWJpbGl0eSBpc3N1ZSBsYXRlci4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCYjMzk7cyBhY2Nlc3NpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipuY2lfdW5yZWdpc3Rlcl9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvY29yZS5jPTEzMTg9dm9pZCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4tLVxubmV0L25mYy9uY2kvY29yZS5jLTEzNDUtfVxubmV0L25mYy9uY2kvY29yZS5jOjEzNDY6RVhQT1JUX1NZTUJPTChuY2lfdW5yZWdpc3Rlcl9kZXZpY2UpO1xubmV0L25mYy9uY2kvY29yZS5jLTEzNDctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDE5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlZlcmlmaWNhdGlvbiBTdGVwKioKClJpZ2h0LCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgdGhlIGNhc2UuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBmdXJ0aGVyIGFuYWx5c2lzIG9yIGRlYnVnZ2luZywgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBJIGhhdmUgYSBodW5jaCwgYW5kIGl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIHZlcmlmeSB0aGVzZSB0aGluZ3MgZWFybHkgb24uIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IHRoZSBzeW1ib2wgYHN0X25jaV9zZV9pb2AgaXMsIGluIGZhY3QsIGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgY2FuIGV2ZW4gKmFjY2VzcyogdGhhdCBjb2RlIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgaWYgaXQmIzM5O3Mgbm90IGV4cG9zZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnN0X25jaV9zZV9pbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTY1OD1pbnQgc3RfbmNpX3NlX2lvKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1MzIgc2VfaWR4LFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTY4My19XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo2ODQ6RVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfaW8pO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzc0NQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZlcmlmeWluZyBNb2R1bGUgRGUtSW5pdGlhbGl6YXRpb24qKgoKT2theSwgeWVzLCB0aGF0IGZlZWxzIHJpZ2h0LiBOb3csIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gc29tZXRoaW5nIGNyaXRpY2FsIGJlZm9yZSB3ZSBwcm9jZWVkIGZ1cnRoZXIuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBgc3RfbmNpX3NlX2RlaW5pdGAgZnVuY3Rpb24gaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIFRoaXMgaXMgYSBzdGFuZGFyZCBhbmQgZXNzZW50aWFsIHNhbml0eSBjaGVjayBJIGFsd2F5cyBwZXJmb3JtIHdoZW4gZGVhbGluZyB3aXRoIG1vZHVsZSBpbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaW4gdGhpcyBjb250ZXh0IHdoZXJlIHRoaXMgY2FuIGJyZWFrIHRoZSBzeXN0ZW0gZG93biB0aGUgbGluZS4gSSBhbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSBmb3IgbGlua2luZy4gV2UgY2FuJiMzOTt0IG1vdmUgZm9yd2FyZCB3aXRob3V0IHRoaXMgYXNzdXJhbmNlLCBiZWNhdXNlLCBvdGhlcndpc2UgdGhlIGVudGlyZSBwcm9jZWR1cmUgZmFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnN0X25jaV9zZV9kZWluaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvc2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvc2UuYz03NTE9dm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTc2Mi19XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo3NjM6RVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfZGVpbml0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwNDgKCQkJCQkJCW91dHB1dDogMjMxCgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIFRoZXNlIENoYW5nZXMqKgoKT2theSwgc28gdGhpcyBpcyBhYm91dCBhbiBORkMgZHJpdmVyIGFuZCBpdCBsb29rcyBsaWtlIGEgZ29vZCBjaHVuayBvZiBmdW5jdGlvbmFsIGxvZ2ljIGlzIGJlaW5nIG1vZGlmaWVkLiBZZXMsIHRoYXQmIzM5O3MgcmlnaHQsIHRoZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IGluIHRoZSBmdW5jdGlvbmFsIGxvZ2ljIGl0c2VsZi4KClJpZ2h0LCB0aGUga2V5IHN5bWJvbHMgdGhpcyBwYXRjaCB0b3VjaGVzIGFyZTogYG5mY19nZW5sX3NlX2lvYCwgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAsIGBzdF9uY2lfc2VfaW9gLCBhbmQgYHN0X25jaV9zZV9kZWluaXRgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyBhbmQgdGhlIGRlLWluaXRpYWxpemF0aW9uIHJvdXRpbmVzIC0gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuCgpBbmQgdGhlbiB0aGVyZSYjMzk7cyB0aGUgY29uZmlndXJhdGlvbiBhc3BlY3QuIFRoZSByZWxldmFudCBLY29uZmlnIHN5bWJvbHMgYXJlIGBORkNgLCBgTkZDX05DSWAsIGBORkNfU1RfTkNJX0kyQ2AsIGBORkNfU1RfTkNJX1NQSWAsIGBORkNfVklSVFVBTF9OQ0lgLCBgSTJDYCwgYW5kIGBTUElgLiBXYWl0IGEgc2Vjb25kLCBiZWNhdXNlIGBORkNfU1RfTkNJYCBpcyBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IGBORkNfU1RfTkNJX0kyQ2Agb3IgYE5GQ19TVF9OQ0lfU1BJYCwgc28gaXQmIzM5O3Mgbm90IGEgdXNlci1zZWxlY3RhYmxlIG9wdGlvbiwgYWx0aG91Z2ggaXQmIzM5O3MgaGVscGZ1bCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgc3ltYm9scy4KCk9rYXksIHNvIHRoZSBwYXRjaCBpdHNlbGYgaXMgbW9kaWZ5aW5nIHRoZSBmdW5jdGlvbmFsIGxvZ2ljLiBUaGVyZSBhcmUgYSBwcmVfdW5yZWdpc3RlciBjYWxsYmFjaywgdGltZXIgZml4ZXMsIGFuZCBmaXhlcyBmb3IgYWN0aXZlIGZsYWdzLiBUaGlzIGhhcyB0aGUgdGVsbC10YWxlIHNpZ25zIG9mIHJhY2UgY29uZGl0aW9uIGZpeGVzIGFuZCBzeW5jaHJvbml6YXRpb24gY2hhbmdlcy4gR2l2ZW4gdGhhdCwgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gSSYjMzk7bGwgZmxhZyB0aGlzIG9uZSBpbW1lZGlhdGVseSBmb3IgaW5jbHVzaW9uIGluIHRoZSBmdXp6aW5nIHF1ZXVlLgoKSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYW5hbHlzaXMsIHNvIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBsb2cgdGhlIHJlc3VsdHMgd2l0aCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSV9JMkMmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSV9TUEkmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDssCiAgICAmIzM0O0kyQyYjMzQ7LAogICAgJiMzNDtTUEkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfZ2VubF9zZV9pbyYjMzQ7LAogICAgJiMzNDtuY2lfdW5yZWdpc3Rlcl9kZXZpY2UmIzM0OywKICAgICYjMzQ7c3RfbmNpX3NlX2lvJiMzNDssCiAgICAmIzM0O3N0X25jaV9zZV9kZWluaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBORkMgbmV0bGluayBhbmQgTkNJIHN1YnN5c3RlbSBjb2RlIChuZmNfc2VfaW8sIG5jaV91bnJlZ2lzdGVyX2RldmljZSkgYW5kIHRoZSBzdC1uY2kgZHJpdmVyIChzdF9uY2lfc2VfaW8sIHN0X25jaV9zZV9kZWluaXQpIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgU0UgSS9PIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBmdW5jdGlvbmFsbHkgcmVhY2hhYmxlIHZpYSBORkMgbmV0bGluayBpbnRlcmZhY2VzIGFuZCBJMkMvU1BJIGRldmljZSBpbnN0YW50aWF0aW9uL3JlbW92YWwsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSV9JMkMmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSV9TUEkmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDssCiAgICAmIzM0O0kyQyYjMzQ7LAogICAgJiMzNDtTUEkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfZ2VubF9zZV9pbyYjMzQ7LAogICAgJiMzNDtuY2lfdW5yZWdpc3Rlcl9kZXZpY2UmIzM0OywKICAgICYjMzQ7c3RfbmNpX3NlX2lvJiMzNDssCiAgICAmIzM0O3N0X25jaV9zZV9kZWluaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBORkMgbmV0bGluayBhbmQgTkNJIHN1YnN5c3RlbSBjb2RlIChuZmNfc2VfaW8sIG5jaV91bnJlZ2lzdGVyX2RldmljZSkgYW5kIHRoZSBzdC1uY2kgZHJpdmVyIChzdF9uY2lfc2VfaW8sIHN0X25jaV9zZV9kZWluaXQpIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgU0UgSS9PIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBmdW5jdGlvbmFsbHkgcmVhY2hhYmxlIHZpYSBORkMgbmV0bGluayBpbnRlcmZhY2VzIGFuZCBJMkMvU1BJIGRldmljZSBpbnN0YW50aWF0aW9uL3JlbW92YWwsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjQyLjM0NTk1OTk0OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzIyNzg2NDI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19TVF9OQ0lfSTJDXCIsXG4gICAgXCJORkNfU1RfTkNJX1NQSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCIsXG4gICAgXCJJMkNcIixcbiAgICBcIlNQSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mY19nZW5sX3NlX2lvXCIsXG4gICAgXCJuY2lfdW5yZWdpc3Rlcl9kZXZpY2VcIixcbiAgICBcInN0X25jaV9zZV9pb1wiLFxuICAgIFwic3RfbmNpX3NlX2RlaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAobmZjX3NlX2lvLCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2UpIGFuZCB0aGUgc3QtbmNpIGRyaXZlciAoc3RfbmNpX3NlX2lvLCBzdF9uY2lfc2VfZGVpbml0KSB0byBmaXggcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIFNFIEkvTyBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgZnVuY3Rpb25hbGx5IHJlYWNoYWJsZSB2aWEgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgSTJDL1NQSSBkZXZpY2UgaW5zdGFudGlhdGlvbi9yZW1vdmFsLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjQyLjM0NTk2NTUxOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI2ODE0ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2UwNDcyMWQxYzM0MjNmOTIxNzM0YjE3ZWFmNDc1NmUxYmJmMDUxMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDEyOjA2OjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXFxuaW5kZXggYTM2NzEzNmQ0MzMwYS4uNmU4Zjc5OWY1Yzk0MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xcbkBAIC0xMDUsNiArMTA1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHN0X25jaV9vcHMgPSB7XFxuIFxcdC5oY2lfbG9hZF9zZXNzaW9uID0gc3RfbmNpX2hjaV9sb2FkX3Nlc3Npb24sXFxuIFxcdC5oY2lfZXZlbnRfcmVjZWl2ZWQgPSBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkLFxcbiBcXHQuaGNpX2NtZF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfY21kX3JlY2VpdmVkLFxcbitcXHQucHJlX3VucmVnaXN0ZXIgPSBzdF9uY2lfc2VfZGVpbml0LFxcbiBcXHQucHJvcF9vcHMgPSBzdF9uY2lfcHJvcF9vcHMsXFxuIFxcdC5uX3Byb3Bfb3BzID0gQVJSQVlfU0laRShzdF9uY2lfcHJvcF9vcHMpLFxcbiB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXFxuaW5kZXggNjA3ZWM3NjhlYjdiNC4uMjMyMjQ5ZDYwYmI4NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXFxuQEAgLTI4Myw5ICsyODMsOSBAQCBzdGF0aWMgaW50IHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxuIFxcdHN3aXRjaCAoZXZlbnQpIHtcXG4gXFx0Y2FzZSBTVF9OQ0lfRVZUX1RSQU5TTUlUX0RBVEE6XFxuIFxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZpbmZvLVxcdTAwM2VzZV9pbmZvLmJ3aV90aW1lcik7XFxuLVxcdFxcdGluZm8tXFx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlO1xcbi1cXHRcXHRpbmZvLVxcdTAwM2VzZV9pbmZvLmNiKGluZm8tXFx1MDAzZXNlX2luZm8uY2JfY29udGV4dCxcXG4tXFx0XFx0XFx0XFx0IHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4sIDApO1xcbitcXHRcXHRpZiAoeGNoZyhcXHUwMDI2aW5mby1cXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCBmYWxzZSkpXFxuK1xcdFxcdFxcdGluZm8tXFx1MDAzZXNlX2luZm8uY2IoaW5mby1cXHUwMDNlc2VfaW5mby5jYl9jb250ZXh0LFxcbitcXHRcXHRcXHRcXHRcXHQgc2tiLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWxlbiwgMCk7XFxuIFxcdGJyZWFrO1xcbiBcXHRjYXNlIFNUX05DSV9FVlRfV1RYX1JFUVVFU1Q6XFxuIFxcdFxcdG1vZF90aW1lcihcXHUwMDI2aW5mby1cXHUwMDNlc2VfaW5mby5id2lfdGltZXIsIGppZmZpZXMgK1xcbkBAIC02NjUsOSArNjY1LDkgQEAgaW50IHN0X25jaV9zZV9pbyhzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTMyIHNlX2lkeCxcXG4gXFx0Y2FzZSBTVF9OQ0lfRVNFX0hPU1RfSUQ6XFxuIFxcdFxcdGluZm8tXFx1MDAzZXNlX2luZm8uY2IgPSBjYjtcXG4gXFx0XFx0aW5mby1cXHUwMDNlc2VfaW5mby5jYl9jb250ZXh0ID0gY2JfY29udGV4dDtcXG4rXFx0XFx0eGNoZyhcXHUwMDI2aW5mby1cXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCB0cnVlKTtcXG4gXFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZpbmZvLVxcdTAwM2VzZV9pbmZvLmJ3aV90aW1lciwgamlmZmllcyArXFxuIFxcdFxcdFxcdCAgbXNlY3NfdG9famlmZmllcyhpbmZvLVxcdTAwM2VzZV9pbmZvLnd0X3RpbWVvdXQpKTtcXG4tXFx0XFx0aW5mby1cXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIG5jaV9oY2lfc2VuZF9ldmVudChuZGV2LCBTVF9OQ0lfQVBEVV9SRUFERVJfR0FURSxcXG4gXFx0XFx0XFx0XFx0XFx0U1RfTkNJX0VWVF9UUkFOU01JVF9EQVRBLCBhcGR1LFxcbiBcXHRcXHRcXHRcXHRcXHRhcGR1X2xlbmd0aCk7XFxuQEAgLTY5OSw3ICs2OTksOCBAQCBzdGF0aWMgdm9pZCBzdF9uY2lfc2Vfd3RfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4gXFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gdGltZXJfY29udGFpbmVyX29mKGluZm8sIHQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHNlX2luZm8uYndpX3RpbWVyKTtcXG4gXFxuLVxcdGluZm8tXFx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlO1xcbitcXHRpZiAoIXhjaGcoXFx1MDAyNmluZm8tXFx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSwgZmFsc2UpKVxcbitcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRpZiAoIWluZm8tXFx1MDAzZXNlX2luZm8ueGNoX2Vycm9yKSB7XFxuIFxcdFxcdGluZm8tXFx1MDAzZXNlX2luZm8ueGNoX2Vycm9yID0gdHJ1ZTtcXG5AQCAtNzUxLDEzICs3NTIsMTIgQEAgdm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcXG4gXFxuLVxcdGlmIChpbmZvLVxcdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUpXFxuLVxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZpbmZvLVxcdTAwM2VzZV9pbmZvLmJ3aV90aW1lcik7XFxuLVxcdGlmIChpbmZvLVxcdTAwM2VzZV9pbmZvLnNlX2FjdGl2ZSlcXG4tXFx0XFx0dGltZXJfZGVsZXRlX3N5bmMoXFx1MDAyNmluZm8tXFx1MDAzZXNlX2luZm8uc2VfYWN0aXZlX3RpbWVyKTtcXG4rXFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2aW5mby1cXHUwMDNlc2VfaW5mby5id2lfdGltZXIpO1xcbitcXHRpZiAoeGNoZyhcXHUwMDI2aW5mby1cXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCBmYWxzZSkpXFxuK1xcdFxcdGluZm8tXFx1MDAzZXNlX2luZm8uY2IoaW5mby1cXHUwMDNlc2VfaW5mby5jYl9jb250ZXh0LCBOVUxMLCAwLCAtRU5PREVWKTtcXG4gXFxuLVxcdGluZm8tXFx1MDAzZXNlX2luZm8uc2VfYWN0aXZlID0gZmFsc2U7XFxuLVxcdGluZm8tXFx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlO1xcbitcXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFxcdTAwMjZpbmZvLVxcdTAwM2VzZV9pbmZvLnNlX2FjdGl2ZV90aW1lcik7XFxuK1xcdHhjaGcoXFx1MDAyNmluZm8tXFx1MDAzZXNlX2luZm8uc2VfYWN0aXZlLCBmYWxzZSk7XFxuK1xcdGNvbXBsZXRlKFxcdTAwMjZpbmZvLVxcdTAwM2VzZV9pbmZvLnJlcV9jb21wbGV0aW9uKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9kZWluaXQpO1xcbi1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmggYi9pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaFxcbmluZGV4IDY2NGQ1MDU4ZTY2ZTAuLjc1NGE2NzE4NTY0MjQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmhcXG4rKysgYi9pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaFxcbkBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBuY2lfb3BzIHtcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbiBcXHR2b2lkICAoKmhjaV9jbWRfcmVjZWl2ZWQpKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLCB1OCBjbWQsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuK1xcdHZvaWQgICgqcHJlX3VucmVnaXN0ZXIpKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcXG4gXFxuIFxcdGNvbnN0IHN0cnVjdCBuY2lfZHJpdmVyX29wcyAqcHJvcF9vcHM7XFxuIFxcdHNpemVfdCBuX3Byb3Bfb3BzO1xcbmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9jb3JlLmMgYi9uZXQvbmZjL25jaS9jb3JlLmNcXG5pbmRleCA1ZjQ2YzRiNTcyMGY2Li44NjI4NmMwNzY1ZjI2IDEwMDY0NFxcbi0tLSBhL25ldC9uZmMvbmNpL2NvcmUuY1xcbisrKyBiL25ldC9uZmMvbmNpL2NvcmUuY1xcbkBAIC0xMzIxLDYgKzEzMjEsOSBAQCB2b2lkIG5jaV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4gXFxuIFxcdG5mY191bnJlZ2lzdGVyX3Jma2lsbChuZGV2LVxcdTAwM2VuZmNfZGV2KTtcXG4gXFxuK1xcdGlmIChuZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXByZV91bnJlZ2lzdGVyKVxcbitcXHRcXHRuZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXByZV91bnJlZ2lzdGVyKG5kZXYpO1xcbitcXG4gXFx0LyogVGhpcyBzZXRfYml0IGlzIG5vdCBwcm90ZWN0ZWQgd2l0aCBzcGVjaWFsaXplZCBiYXJyaWVyLFxcbiBcXHQgKiBIb3dldmVyLCBpdCBpcyBmaW5lIGJlY2F1c2UgdGhlIG11dGV4X2xvY2soXFx1MDAyNm5kZXYtXFx1MDAzZXJlcV9sb2NrKTtcXG4gXFx0ICogaW4gbmNpX2Nsb3NlX2RldmljZSgpIHdpbGwgaGVscCB0byBlbWl0IG9uZS5cXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9uZXRsaW5rLmMgYi9uZXQvbmZjL25ldGxpbmsuY1xcbmluZGV4IDBjNTg4MjRjYjE1MGQuLjMxMzJmN2E5MGFiOWYgMTAwNjQ0XFxuLS0tIGEvbmV0L25mYy9uZXRsaW5rLmNcXG4rKysgYi9uZXQvbmZjL25ldGxpbmsuY1xcbkBAIC0xNDI2LDYgKzE0MjYsMTEgQEAgc3RhdGljIGludCBuZmNfc2VfaW8oc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHNlX2lkeCxcXG4gXFxuIFxcdGRldmljZV9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWRldik7XFxuIFxcbitcXHRpZiAoZGV2LVxcdTAwM2VzaHV0dGluZ19kb3duKSB7XFxuK1xcdFxcdHJjID0gLUVOT0RFVjtcXG4rXFx0XFx0Z290byBlcnJvcjtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKCFkZXZpY2VfaXNfcmVnaXN0ZXJlZChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpKSB7XFxuIFxcdFxcdHJjID0gLUVOT0RFVjtcXG4gXFx0XFx0Z290byBlcnJvcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDY6NDIuNjczNDEzMjc0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAyOTAwNDAyMzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1NUX05DSV9JMkNcIixcbiAgICBcIk5GQ19TVF9OQ0lfU1BJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIixcbiAgICBcIkkyQ1wiLFxuICAgIFwiU1BJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2dlbmxfc2VfaW9cIixcbiAgICBcIm5jaV91bnJlZ2lzdGVyX2RldmljZVwiLFxuICAgIFwic3RfbmNpX3NlX2lvXCIsXG4gICAgXCJzdF9uY2lfc2VfZGVpbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBORkMgbmV0bGluayBhbmQgTkNJIHN1YnN5c3RlbSBjb2RlIChuZmNfc2VfaW8sIG5jaV91bnJlZ2lzdGVyX2RldmljZSkgYW5kIHRoZSBzdC1uY2kgZHJpdmVyIChzdF9uY2lfc2VfaW8sIHN0X25jaV9zZV9kZWluaXQpIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgU0UgSS9PIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBmdW5jdGlvbmFsbHkgcmVhY2hhYmxlIHZpYSBORkMgbmV0bGluayBpbnRlcmZhY2VzIGFuZCBJMkMvU1BJIGRldmljZSBpbnN0YW50aWF0aW9uL3JlbW92YWwsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2UwNDcyMWQxYzM0MjNmOTIxNzM0YjE3ZWFmNDc1NmUxYmJmMDUxMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTI6MDY6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xuaW5kZXggYTM2NzEzNmQ0MzMwYS4uNmU4Zjc5OWY1Yzk0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbkBAIC0xMDUsNiArMTA1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHN0X25jaV9vcHMgPSB7XG4gXHQuaGNpX2xvYWRfc2Vzc2lvbiA9IHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uLFxuIFx0LmhjaV9ldmVudF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfZXZlbnRfcmVjZWl2ZWQsXG4gXHQuaGNpX2NtZF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfY21kX3JlY2VpdmVkLFxuK1x0LnByZV91bnJlZ2lzdGVyID0gc3RfbmNpX3NlX2RlaW5pdCxcbiBcdC5wcm9wX29wcyA9IHN0X25jaV9wcm9wX29wcyxcbiBcdC5uX3Byb3Bfb3BzID0gQVJSQVlfU0laRShzdF9uY2lfcHJvcF9vcHMpLFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuaW5kZXggNjA3ZWM3NjhlYjdiNC4uMjMyMjQ5ZDYwYmI4NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuQEAgLTI4Myw5ICsyODMsOSBAQCBzdGF0aWMgaW50IHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4gXHRzd2l0Y2ggKGV2ZW50KSB7XG4gXHRjYXNlIFNUX05DSV9FVlRfVFJBTlNNSVRfREFUQTpcbiBcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV90aW1lcik7XG4tXHRcdGluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlID0gZmFsc2U7XG4tXHRcdGluZm8tXHUwMDNlc2VfaW5mby5jYihpbmZvLVx1MDAzZXNlX2luZm8uY2JfY29udGV4dCxcbi1cdFx0XHRcdCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbiwgMCk7XG4rXHRcdGlmICh4Y2hnKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCBmYWxzZSkpXG4rXHRcdFx0aW5mby1cdTAwM2VzZV9pbmZvLmNiKGluZm8tXHUwMDNlc2VfaW5mby5jYl9jb250ZXh0LFxuK1x0XHRcdFx0XHQgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4sIDApO1xuIFx0YnJlYWs7XG4gXHRjYXNlIFNUX05DSV9FVlRfV1RYX1JFUVVFU1Q6XG4gXHRcdG1vZF90aW1lcihcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX3RpbWVyLCBqaWZmaWVzICtcbkBAIC02NjUsOSArNjY1LDkgQEAgaW50IHN0X25jaV9zZV9pbyhzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTMyIHNlX2lkeCxcbiBcdGNhc2UgU1RfTkNJX0VTRV9IT1NUX0lEOlxuIFx0XHRpbmZvLVx1MDAzZXNlX2luZm8uY2IgPSBjYjtcbiBcdFx0aW5mby1cdTAwM2VzZV9pbmZvLmNiX2NvbnRleHQgPSBjYl9jb250ZXh0O1xuK1x0XHR4Y2hnKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCB0cnVlKTtcbiBcdFx0bW9kX3RpbWVyKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfdGltZXIsIGppZmZpZXMgK1xuIFx0XHRcdCAgbXNlY3NfdG9famlmZmllcyhpbmZvLVx1MDAzZXNlX2luZm8ud3RfdGltZW91dCkpO1xuLVx0XHRpbmZvLVx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSA9IHRydWU7XG4gXHRcdHJldHVybiBuY2lfaGNpX3NlbmRfZXZlbnQobmRldiwgU1RfTkNJX0FQRFVfUkVBREVSX0dBVEUsXG4gXHRcdFx0XHRcdFNUX05DSV9FVlRfVFJBTlNNSVRfREFUQSwgYXBkdSxcbiBcdFx0XHRcdFx0YXBkdV9sZW5ndGgpO1xuQEAgLTY5OSw3ICs2OTksOCBAQCBzdGF0aWMgdm9pZCBzdF9uY2lfc2Vfd3RfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IHRpbWVyX2NvbnRhaW5lcl9vZihpbmZvLCB0LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNlX2luZm8uYndpX3RpbWVyKTtcbiBcbi1cdGluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlID0gZmFsc2U7XG4rXHRpZiAoIXhjaGcoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUsIGZhbHNlKSlcbitcdFx0cmV0dXJuO1xuIFxuIFx0aWYgKCFpbmZvLVx1MDAzZXNlX2luZm8ueGNoX2Vycm9yKSB7XG4gXHRcdGluZm8tXHUwMDNlc2VfaW5mby54Y2hfZXJyb3IgPSB0cnVlO1xuQEAgLTc1MSwxMyArNzUyLDEyIEBAIHZvaWQgc3RfbmNpX3NlX2RlaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiB7XG4gXHRzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XG4gXG4tXHRpZiAoaW5mby1cdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUpXG4tXHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfdGltZXIpO1xuLVx0aWYgKGluZm8tXHUwMDNlc2VfaW5mby5zZV9hY3RpdmUpXG4tXHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5zZV9hY3RpdmVfdGltZXIpO1xuK1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX3RpbWVyKTtcbitcdGlmICh4Y2hnKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCBmYWxzZSkpXG4rXHRcdGluZm8tXHUwMDNlc2VfaW5mby5jYihpbmZvLVx1MDAzZXNlX2luZm8uY2JfY29udGV4dCwgTlVMTCwgMCwgLUVOT0RFVik7XG4gXG4tXHRpbmZvLVx1MDAzZXNlX2luZm8uc2VfYWN0aXZlID0gZmFsc2U7XG4tXHRpbmZvLVx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlO1xuK1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uc2VfYWN0aXZlX3RpbWVyKTtcbitcdHhjaGcoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLnNlX2FjdGl2ZSwgZmFsc2UpO1xuK1x0Y29tcGxldGUoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLnJlcV9jb21wbGV0aW9uKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfZGVpbml0KTtcbi1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaCBiL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oXG5pbmRleCA2NjRkNTA1OGU2NmUwLi43NTRhNjcxODU2NDI0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmhcbisrKyBiL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oXG5AQCAtODIsNiArODIsNyBAQCBzdHJ1Y3QgbmNpX29wcyB7XG4gXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4gXHR2b2lkICAoKmhjaV9jbWRfcmVjZWl2ZWQpKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLCB1OCBjbWQsXG4gXHRcdFx0XHQgIHN0cnVjdCBza19idWZmICpza2IpO1xuK1x0dm9pZCAgKCpwcmVfdW5yZWdpc3Rlcikoc3RydWN0IG5jaV9kZXYgKm5kZXYpO1xuIFxuIFx0Y29uc3Qgc3RydWN0IG5jaV9kcml2ZXJfb3BzICpwcm9wX29wcztcbiBcdHNpemVfdCBuX3Byb3Bfb3BzO1xuZGlmZiAtLWdpdCBhL25ldC9uZmMvbmNpL2NvcmUuYyBiL25ldC9uZmMvbmNpL2NvcmUuY1xuaW5kZXggNWY0NmM0YjU3MjBmNi4uODYyODZjMDc2NWYyNiAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbmNpL2NvcmUuY1xuKysrIGIvbmV0L25mYy9uY2kvY29yZS5jXG5AQCAtMTMyMSw2ICsxMzIxLDkgQEAgdm9pZCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4gXG4gXHRuZmNfdW5yZWdpc3Rlcl9yZmtpbGwobmRldi1cdTAwM2VuZmNfZGV2KTtcbiBcbitcdGlmIChuZGV2LVx1MDAzZW9wcy1cdTAwM2VwcmVfdW5yZWdpc3RlcilcbitcdFx0bmRldi1cdTAwM2VvcHMtXHUwMDNlcHJlX3VucmVnaXN0ZXIobmRldik7XG4rXG4gXHQvKiBUaGlzIHNldF9iaXQgaXMgbm90IHByb3RlY3RlZCB3aXRoIHNwZWNpYWxpemVkIGJhcnJpZXIsXG4gXHQgKiBIb3dldmVyLCBpdCBpcyBmaW5lIGJlY2F1c2UgdGhlIG11dGV4X2xvY2soXHUwMDI2bmRldi1cdTAwM2VyZXFfbG9jayk7XG4gXHQgKiBpbiBuY2lfY2xvc2VfZGV2aWNlKCkgd2lsbCBoZWxwIHRvIGVtaXQgb25lLlxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbmV0bGluay5jIGIvbmV0L25mYy9uZXRsaW5rLmNcbmluZGV4IDBjNTg4MjRjYjE1MGQuLjMxMzJmN2E5MGFiOWYgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL25ldGxpbmsuY1xuKysrIGIvbmV0L25mYy9uZXRsaW5rLmNcbkBAIC0xNDI2LDYgKzE0MjYsMTEgQEAgc3RhdGljIGludCBuZmNfc2VfaW8oc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHNlX2lkeCxcbiBcbiBcdGRldmljZV9sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuIFxuK1x0aWYgKGRldi1cdTAwM2VzaHV0dGluZ19kb3duKSB7XG4rXHRcdHJjID0gLUVOT0RFVjtcbitcdFx0Z290byBlcnJvcjtcbitcdH1cbitcbiBcdGlmICghZGV2aWNlX2lzX3JlZ2lzdGVyZWQoXHUwMDI2ZGV2LVx1MDAzZWRldikpIHtcbiBcdFx0cmMgPSAtRU5PREVWO1xuIFx0XHRnb3RvIGVycm9yO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDY6NDIuNjczNDE0MzM0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3NzA1Njk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIE5GQyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTkZDIHN1YnN5c3RlbS4gSXQgc2VlbXMgbGlrZSBpdCBmb2N1c2VzIG9uIHRoZSBgc3QtbmNpYCBkcml2ZXIsIGludHJvZHVjaW5nIGEgYHByZV91bnJlZ2lzdGVyYCBjYWxsYmFjayBpbiBgbmNpX29wc2Agc3BlY2lmaWNhbGx5IGZvciB0aGF0IGRyaXZlciwgYW5kIHRoZW4gbW9kaWZpZXMgc2V2ZXJhbCBmdW5jdGlvbnMgKGBzdF9uY2lfc2VfaW9gLCBgc3RfbmNpX3NlX3d0X3RpbWVvdXRgLCBhbmQgYHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWRgKSB0byB1c2UgYHhjaGdgIGZvciB0aGUgYGJ3aV9hY3RpdmVgIGZsYWcuIFRoZXJlJ3MgYWxzbyBhIGNoYW5nZSB0byBgbmZjX3NlX2lvYCBpbiBgbmV0L25mYy9uZXRsaW5rLmNgLCB3aGljaCBpcyB0aGUgaW50ZXJlc3RpbmcgYml0LiBUaGUgcGF0Y2ggYWRkcyBhIGBkZXYtXHUwMDNlc2h1dHRpbmdfZG93bmAgY2hlY2suXG5cblRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIGEgdXNlZnVsIHRhcmdldCBmb3IgZnV6emluZy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGtleSBpcyByZWFjaGFiaWxpdHkuIEkgc2VlIHRoYXQgYG5mY19zZV9pb2AgaXMgY2FsbGVkIHRocm91Z2ggbmV0bGluaywgd2hpY2ggc3VnZ2VzdHMgdGhhdCB0aGUgZW50aXJlIE5GQyBzdWJzeXN0ZW0sIGluY2x1ZGluZyBgc3QtbmNpYCwgaXMgcG90ZW50aWFsbHkgcmVhY2hhYmxlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgdGhlIGBzdC1uY2lgIGRyaXZlciBpdHNlbGYgY2FuIGJlIGVtdWxhdGVkIG9yIGVhc2lseSByZWFjaGVkLCBidXQgdGhlbiBpdCBoaXRzIG1lLiBgbmZjX3NlX2lvYCBpcyBpbiBgbmV0L25mYy9uZXRsaW5rLmNgLCB3aGljaCBpcyAqKmNvcmUqKiBORkMgY29kZSwgbm90IGRyaXZlci1zcGVjaWZpYyEgVGhhdCdzIGV4Y2VsbGVudC5cblxuU28sIHRoaXMgcGF0Y2ggdG91Y2hlcyBib3RoIGBuZXQvbmZjL25ldGxpbmsuY2AgYW5kIGBuZXQvbmZjL25jaS9jb3JlLmNgIOKAkyBtYWpvciBwYXJ0cyBvZiB0aGUgTkZDIGNvcmUuIFdlIGtub3cgdGhlIGNvcmUgTkZDIHN1YnN5c3RlbSBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZywgYW5kIGl0J3MgYWxyZWFkeSBmdXp6ZWQgaW4gc3l6a2FsbGVyLiBUaGUgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgdGhlIGNoYW5nZXMgaW50cm9kdWNlZCBtYWtlIHRoaXMgcGF0Y2ggYSB3b3J0aHdoaWxlIG5ldyB0YXJnZXQuIEl0J3MgbGlrZWx5IHRoYXQgaXQgd2lsbCBiZSBmdXp6ZWQsIGdpdmVuIHRoYXQgbmV0bGluayBpbnRlcmZhY2UgaXMgaW52b2x2ZWQsIG9yIHRoYXQgd2UgY2FuIGdlbmVyYXRlIGZ1enplciBpbnB1dHMgZm9yIHZpcnR1YWwgZGV2aWNlcy4gQnV0LCBoYW5nIG9uLi4uIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGFscmVhZHkgaW4gcGxhY2UgZm9yIE5GQyBzZXR1cCwgcGVyaGFwcyBgc3l6X25jaV9zZXR1cGAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0LiBUaGF0IHdvdWxkIGJlIHRoZSBiZXN0IGluZGljYXRpb24gb2Ygd2hldGhlciB3ZSBjYW4gZWFzaWx5IGludGVncmF0ZSB0aGlzIHBhdGNoIGludG8gZXhpc3RpbmcgZnV6emluZyBpbmZyYXN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxNywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjQ5LjI1MDQ3NDEwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMxNzc0MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5jaV9yZWdpc3Rlcl9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL2ZkcC9mZHAuYz02OTk9aW50IGZkcF9uY2lfcHJvYmUoc3RydWN0IGZkcF9pMmNfcGh5ICpwaHksIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy03MzctXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjczODpcXHRyID0gbmNpX3JlZ2lzdGVyX2RldmljZShuZGV2KTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNzM5LVxcdGlmIChyKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9OTI9c3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqbmZjbXJ2bF9uY2lfcmVnaXN0ZXJfZGV2KGVudW0gbmZjbXJ2bF9waHkgcGh5LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTU2LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjE1NzpcXHRyYyA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTU4LVxcdGlmIChyYykge1xcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjE1OTpcXHRcXHRuZmNfZXJyKGRldiwgXFxcIm5jaV9yZWdpc3Rlcl9kZXZpY2UgZmFpbGVkICVkXFxcXG5cXFwiLCByYyk7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTYwLVxcdFxcdGdvdG8gZXJyb3JfZndfZG5sZF9kZWluaXQ7XFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0xMzU9aW50IG54cF9uY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMTY5LVxcdG5jaV9zZXRfZHJ2ZGF0YShpbmZvLVxcdTAwM2VuZGV2LCBpbmZvKTtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoxNzA6XFx0ciA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UoaW5mby1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMTcxLVxcdGlmIChyIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZmMvczNmd3JuNS9jb3JlLmM9MTYwPWludCBzM2Z3cm41X3Byb2JlKHN0cnVjdCBuY2lfZGV2ICoqbmRldiwgdm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvczNmd3JuNS9jb3JlLmMtMTg0LVxcbmRyaXZlcnMvbmZjL3MzZndybjUvY29yZS5jOjE4NTpcXHRyZXQgPSBuY2lfcmVnaXN0ZXJfZGV2aWNlKGluZm8tXFx1MDAzZW5kZXYpO1xcbmRyaXZlcnMvbmZjL3MzZndybjUvY29yZS5jLTE4Ni1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz0xMTM9aW50IHN0X25jaV9wcm9iZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIGludCBwaHlfaGVhZHJvb20sXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTE0OS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjE1MDpcXHRyID0gbmNpX3JlZ2lzdGVyX2RldmljZShuZGxjLVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTE1MS1cXHRpZiAocikge1xcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYz0xMzM9c3RhdGljIGludCB2aXJ0dWFsX25jaWRldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNTItXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxNTM6XFx0cmV0ID0gbmNpX3JlZ2lzdGVyX2RldmljZSh2ZGV2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE1NC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmg9MjgwPXZvaWQgbmNpX2ZyZWVfZGV2aWNlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcXG5pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaDoyODE6aW50IG5jaV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpO1xcbmluY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oLTI4Mi12b2lkIG5jaV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldik7XFxuLS1cXG5uZXQvbmZjL25jaS9jb3JlLmM9MTI0ND1FWFBPUlRfU1lNQk9MKG5jaV9mcmVlX2RldmljZSk7XFxuLS1cXG5uZXQvbmZjL25jaS9jb3JlLmMtMTI0Ni0vKipcXG5uZXQvbmZjL25jaS9jb3JlLmM6MTI0NzogKiBuY2lfcmVnaXN0ZXJfZGV2aWNlIC0gcmVnaXN0ZXIgYSBuY2kgZGV2aWNlIGluIHRoZSBuZmMgc3Vic3lzdGVtXFxubmV0L25mYy9uY2kvY29yZS5jLTEyNDgtICpcXG4tLVxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMjUwLSAqL1xcbm5ldC9uZmMvbmNpL2NvcmUuYzoxMjUxOmludCBuY2lfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMjUyLXtcXG4tLVxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMzEwLX1cXG5uZXQvbmZjL25jaS9jb3JlLmM6MTMxMTpFWFBPUlRfU1lNQk9MKG5jaV9yZWdpc3Rlcl9kZXZpY2UpO1xcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMzEyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNjo1MC43ODIyNTQyNDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA0NTIyMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBgdmlydHVhbF9uY2lkZXYuY2AgLSBQb3RlbnRpYWwgR29sZG1pbmUgZm9yIE5DSSBFbXVsYXRpb24gYW5kIEZ1enppbmcqKlxuXG5SaWdodCwgKnZpcnR1YWxfbmNpZGV2LmMqISBUaGF0J3MgZXhjZWxsZW50IG5ld3MuIFRoZSBleGlzdGVuY2Ugb2YgdGhpcyBmaWxlIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHRoYXQgd2UgaGF2ZSBhIG1lY2hhbmlzbSBmb3IgZW11bGF0aW5nIGFuZCBmdXp6aW5nIE5DSSBkZXZpY2VzLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwIGZvciBkZWVwZXIgc2VjdXJpdHkgYW5hbHlzaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtb2R1bGUgKmFjdHVhbGx5KiBkb2VzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIGhvdyB0aGlzIGVtdWxhdGlvbiBpcyBpbXBsZW1lbnRlZC4gTGV0J3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWUgd2Vha25lc3NlcyBvciBpbnRlcmVzdGluZyBiZWhhdmlvcnMgd2l0aGluIGl0cyBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkwMiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjUzLjc4Njc3ODA5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE0ODg2NDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnR1YWxfbmNpZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJNQUlOVEFJTkVSUz0xOTExOD1TOlxcdFN1cHBvcnRlZFxcbk1BSU5UQUlORVJTOjE5MTE5OkY6XFx0ZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuY1xcbk1BSU5UQUlORVJTLTE5MTIwLUY6XFx0dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmNpL1xcbi0tXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX05GQ19TVDk1SEYpXFx0Kz0gc3Q5NWhmL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19ORkNfVklSVFVBTF9OQ0kpXFx0Kz0gdmlydHVhbF9uY2lkZXYub1xcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYz03Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgdmlydHVhbF9uY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04MS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjgyOnN0YXRpYyBzc2l6ZV90IHZpcnR1YWxfbmNpZGV2X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04My1cXHRcXHRcXHRcXHQgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTEyLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTEzOnN0YXRpYyBzc2l6ZV90IHZpcnR1YWxfbmNpZGV2X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTE0LVxcdFxcdFxcdFxcdCAgICBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMzItXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxMzM6c3RhdGljIGludCB2aXJ0dWFsX25jaWRldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTM0LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTYzLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTY0OnN0YXRpYyBpbnQgdmlydHVhbF9uY2lkZXZfY2xvc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNjUte1xcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNzUtXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxNzY6c3RhdGljIGxvbmcgdmlydHVhbF9uY2lkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNzctXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xOTEtXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTI6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmlydHVhbF9uY2lkZXZfZm9wcyA9IHtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE5My1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NDpcXHQucmVhZCA9IHZpcnR1YWxfbmNpZGV2X3JlYWQsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTU6XFx0LndyaXRlID0gdmlydHVhbF9uY2lkZXZfd3JpdGUsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTY6XFx0Lm9wZW4gPSB2aXJ0dWFsX25jaWRldl9vcGVuLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk3OlxcdC5yZWxlYXNlID0gdmlydHVhbF9uY2lkZXZfY2xvc2UsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTg6XFx0LnVubG9ja2VkX2lvY3RsID0gdmlydHVhbF9uY2lkZXZfaW9jdGxcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE5OS19O1xcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYz0yMDE9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIG1pc2NkZXYgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIwMy1cXHQubmFtZSA9IFxcXCJ2aXJ0dWFsX25jaVxcXCIsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoyMDQ6XFx0LmZvcHMgPSBcXHUwMDI2dmlydHVhbF9uY2lkZXZfZm9wcyxcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIwNS1cXHQubW9kZSA9IDA2MDAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjU1LjQwMTY2OTY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MDQwMTA1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipBbmFseXppbmcgdGhlIGBzdC1uY2lgIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpcyBwaW5wb2ludGVkIGRpcmVjdGx5IGF0IHRoZSBgc3QtbmNpYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0b3VjaGluZyBib3RoIGBjb3JlLmNgIGFuZCBgc2UuY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZmMvc3QtbmNpL2AgZGlyZWN0b3J5LiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGUgYHN0LW5jaWAgZHJpdmVyIGluIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQgaWYgaXQncyB2aXJ0dWFsaXplZD8gSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBoeXBlcnZpc29yIGFuZCBob3cgSS9PIGlzIGhhbmRsZWQuXG5cblRoZSBxdWljayBpbnZlc3RpZ2F0aW9uIHJldmVhbHMgdGhhdCB0aGlzIGRyaXZlciByZWxpZXMgb24gZWl0aGVyIEkyQyBvciBTUEkuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIG5vdyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZmMvc3QtbmNpL2AgZmlsZXMgdGhlbXNlbHZlcyBhbmQgc2VlIHdoYXQncyBjaGFuZ2VkIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIGluIHRob3NlIGNvbnRleHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDIxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDY6NTguODYyMDczMTQ1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJjb3JlLmNcIixcbiAgICBcImkyYy5jXCIsXG4gICAgXCJuZGxjLmNcIixcbiAgICBcIm5kbGMuaFwiLFxuICAgIFwic2UuY1wiLFxuICAgIFwic3BpLmNcIixcbiAgICBcInN0LW5jaS5oXCIsXG4gICAgXCJ2ZW5kb3JfY21kcy5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjU4Ljg2MjEzMjMwNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1Mjk2NDM1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgZm9yIE5GQyBWdWxuZXJhYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwic3QtbmNpLCB0aGF0J3MgYW4gU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBkcml2ZXIsIHJpZ2h0P1wiIEl0IHVzZXMgSTJDIG9yIFNQSSwgdHlwaWNhbCBmb3IgTkZDLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBTeXprYWxsZXIgcmVsaWFibHkgZnV6eiB0aG9zZSBpbnRlcmZhY2VzPyBJIGtub3cgaXQgY2FuIGZ1enogSTJDLCBnZW5lcmFsbHkgdmlhIGAvZGV2L2kyYy0qYCBkZXZpY2VzLCBidXQgaXQgb2Z0ZW4gbmVlZHMgc29tZSBzcGVjaWFsIHNldHVwLCBhIHBzZXVkby1kZXZpY2UsIG9yIGluc3RhbnRpYXRpb24gdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUgb3Igc3lzZnMuIEl0IGNhbiBhbHNvIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHZpYSBuZXRsaW5rIG9yIHN5c2ZzIHdoaWNoIG9wZW5zIGRvb3JzLlxuXG5CdXQgd2FpdCwgYHN0LW5jaWAgaXMgYSAqcGh5c2ljYWwqIGRldmljZSBkcml2ZXIuIFRoYXTigJlzIGltcG9ydGFudCB0byByZW1lbWJlci4gQ2FuIEkgcmVhY2ggc3BlY2lmaWMgZnVuY3Rpb25zIGluIGl0IHdpdGhvdXQgdGhlIGhhcmR3YXJlPyBMZXQncyB6b29tIGluIG9uIGBzdF9uY2lfc2VfaW9gLiBJdCdzIHBhcnQgb2YgdGhlIGBzdF9uY2lfb3BzYCBzdHJ1Y3R1cmUsIGRlZmluZWQgaW4gYHN0LW5jaS9jb3JlLmNgLiBIbW0sIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYG5ldC9uZmMvbmNpL2NvcmUuY2AgYW5kIGBuZXQvbmZjL25ldGxpbmsuY2AuIFRoYXQncyBpbnRyaWd1aW5nISBgbmV0L25mYy9uZXRsaW5rLmNgIGlzIGNvcmUgTkZDIGNvZGUsIGFuZCwgY3J1Y2lhbHksIGl0J3MgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLlxuXG5UaGUgY2hhbmdlIGluIGBuZXQvbmZjL25ldGxpbmsuY2AsIGFkZGluZyBhIGBzaHV0dGluZ19kb3duYCBjaGVjayBpbiBgbmZjX3NlX2lvYCAoY2FsbGVkIGJ5IHRoZSBgTkZDX0NNRF9TRV9JT2AgbmV0bGluayBjb21tYW5kKSwgY29uZmlybXMgdGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGhlcmVmb3JlIGZ1enphYmxlLiBUaGF0J3MgYSB0YXJnZXQhXG5cbkFsc28sIHRoZSBhZGRpdGlvbiBpbiBgbmV0L25mYy9uY2kvY29yZS5jYCBpbnNpZGUgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAsICh3aGljaCBpcyBjYWxsZWQgd2hlbiBhbiBOQ0kgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCksIHNlZW1zIHJlYWNoYWJsZSBhcyB3ZWxsIChsaWtlIHdoZW4gY2xvc2luZyBgL2Rldi92aXJ0dWFsX25jaWApLlxuXG5Tbywgd2hpbGUgdGhlIGNoYW5nZXMgKndpdGhpbiogdGhlIGBzdC1uY2lgIGRyaXZlciBpdHNlbGYgbWlnaHQgcmVxdWlyZSB0aGUgYWN0dWFsIGhhcmR3YXJlLCB0aG9zZSBjb3JlIE5GQyBtb2RpZmljYXRpb25zPyBUaG9zZSBhcmUgZmFpciBnYW1lLlxuXG5IYW5nIG9u4oCmdGhpcyBwYXRjaCBpcyBhIFN5emJvdCBmaXghIElmIFN5emJvdCBmb3VuZCBhIGJ1ZywgdGhhdCAqbWVhbnMqIGl0J3MgcmVhY2hpbmcgdGhpcyBjb2RlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgU3l6Ym90IGlzIHRyaWdnZXJpbmcgYHN0LW5jaWAuIERvZXMgU3l6a2FsbGVyIGhhdmUgc3BlY2lmaWMgZGVzY3JpcHRpb25zIGZvciBgc3QtbmNpYCwgb3IgaXMgaXQgYmVpbmcgaW5zdGFudGlhdGVkIHNvbWVob3c/IEkga25vdyBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHdpdGggdGhlIHJpZ2h0IHN5eiBjYWxscywgYnV0IEkgZG8gbm90IHNlZSBhbiBpbnN0YW50aWF0aW9uIHVzaW5nIGBzeXpfaTJjX3NldHVwYC4gSXMgaXQgdGhyb3VnaCBzb21lIG90aGVyIG1ldGhvZD8gTm8uIEFuZCBpdCBjYW4ndCBiZSBgdmlydHVhbF9uY2lkZXZgIHNpbmNlIHRoYXQgdXNlcyB0aGUgYHZpcnR1YWxfbmNpX29wc2AsIG5vdCBgc3RfbmNpX29wc2AuIE5lZWQgdG8gY2hlY2sgYHN0X25jaV9vcHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDAzLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzk1LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNzowOC4zOTE3Nzc3NzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTYxODYxMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz04Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9kcml2ZXJfb3BzIHN0X25jaV9wcm9wX29wc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy05NC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjk1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtOTYtXFx0LmluaXQgPSBzdF9uY2lfaW5pdCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9MTEzPWludCBzdF9uY2lfcHJvYmUoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBpbnQgcGh5X2hlYWRyb29tLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMzMtXFx0QlVJTERfQlVHX09OKEFSUkFZX1NJWkUoc3RfbmNpX3Byb3Bfb3BzKSBcXHUwMDNlIE5DSV9NQVhfUFJPUFJJRVRBUllfQ01EKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjEzNDpcXHRuZGxjLVxcdTAwM2VuZGV2ID0gbmNpX2FsbG9jYXRlX2RldmljZShcXHUwMDI2c3RfbmNpX29wcywgcHJvdG9jb2xzLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTM1LVxcdFxcdFxcdFxcdFxcdHBoeV9oZWFkcm9vbSwgcGh5X3RhaWxyb29tKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MDkuODg3OTcyMDU5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzY4NjU0MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBzeXpib3QtRGlzY292ZXJlZCBCdWcgaW4gc3QtbmNpKipcblxuQWxyaWdodCwgc28gc3l6Ym90IGZsYWdnZWQgYSBidWcgd2l0aGluIGBzdC1uY2lgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBkaWQgc3l6Ym90IGV2ZW4gKnRyaWdnZXIqIHRoaXM/IFdoYXQgd2FzIHRoZSBlbnRyeSBwb2ludD8gTXkgZ3V0IGZlZWxpbmcgaXMgc3VnZ2VzdGluZyBhIGZ1bmN0aW9uIGxpa2UgYHN5el9pMmNfc2V0dXBgLiBJdCBzb3VuZHMgcGxhdXNpYmxlLCBnaXZlbiB0aGUgSTJDIGNvbnRleHQuIEJ1dCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaHVuY2guIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIGBzeXpfaTJjX3NldHVwYCBpcywgaW4gZmFjdCwgZXZlbiBwYXJ0IG9mIHRoZSBrZXJuZWwgY2FsbHM7IHRoZSBwcmVzZW5jZSBvZiBgc3l6X2kyY19zZXR1cGAgd291bGQgcmVhbGx5IHZhbGlkYXRlIHRoaXMgdGhlb3J5LiBUaGVuLCBJIGNhbiBzdGFydCBsb29raW5nIGF0IHRoZSBjYWxsIGFuZCBnbyBmcm9tIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTE4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MTQuMDI0ODQwNzYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcxNDgyMTA4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfaTJjX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MTUuMzk2MzMwMTQxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NjAyNjE2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSTJDIERldmljZSBJbnN0YW50aWF0aW9uIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBubywgaG9sZCBvbi4uLiB3aGF0IGFib3V0IHRoYXQgYHN5el9uY2lfc2V0dXBgIGZ1bmN0aW9uPyBIbW0sIHJpZ2h0LCBjYW4ndCBqdXN0IGBncmVwcGVyYCBmb3IgYW55dGhpbmcgc3RhcnRpbmcgd2l0aCBgc3l6X2AsIHRoYXQncyBnb2luZyB0byBiZSBhIG1lc3MuIEJ1dCB3YWl0IGEgc2Vjb25kLi4uIGlzbid0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBzeXpib3QgYW5kIEkyQyBkZXZpY2VzPyBEaWQgaXQgdXNlIHRoZSBgSTJDX05FV19ERVZJQ0VgIGlvY3RsIG9uIGAvZGV2L2kyYy0qYD8gTm8sIHRoYXQgY2FuJ3QgYmUgcmlnaHQuLi4gaXNuJ3QgdGhhdCBhIHN5c2ZzIHRoaW5nLCBvciBzb21ldGhpbmcgc2ltaWxhcj8gQWN0dWFsbHksIEkgKnRoaW5rKiBgSTJDX1NMQVZFYCBpcyBhbiBpb2N0bCwgYnV0IHRoYXQncyBvYnZpb3VzbHkgZGlmZmVyZW50LlxuXG5BaGEhIE5vdyBJIHJlbWVtYmVyLi4uIEkyQyBkZXZpY2VzICphcmUqIGluc3RhbnRpYXRlZCB0aHJvdWdoIHN5c2ZzISBTb21ldGhpbmcgbGlrZSBgZWNobyBzdC1uY2kgXHUwMDNlIC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0wL25ld19kZXZpY2VgLiBZZXMsICp0aGF0J3MqIGl0ISBTeXprYWxsZXIgZG9lcyBleGFjdGx5IHRoYXQgdG8gY3JlYXRlIHRoZSBkZXZpY2VzISBTbywgaXQncyB3cml0aW5nIHRvIHN5c2ZzIHRvIGluc3RhbnRpYXRlIHRoZSBJMkMgZGV2aWNlcy5cblxuQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyB0byBjaGVjayBpZiBgc3QtbmNpYCBhY3R1YWxseSAqaXMqIGFuIEkyQyBkcml2ZXIuLi4gSSBiZXQgdGhhdCdzIHdoYXQncyBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM3OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNzoyMC4xNTY1OTQ0OTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTk5NDgzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX2kyY19kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0yNzg9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2Zfc3RfbmNpX2kyY19tYXRjaCk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI3OS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MjgwOnN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzdF9uY2lfaTJjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjgxLVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjg5LX07XFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjI5MDptb2R1bGVfaTJjX2RyaXZlcihzdF9uY2lfaTJjX2RyaXZlcik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI5MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MjEuNjE2NTQ3MDIyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NjQ3NzcwNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVC1OQ0kgRHJpdmVyIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgYW4gSTJDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgc3QtbmNpYCBkcml2ZXIuIEdvb2QsIEkgdW5kZXJzdGFuZCBob3cgU3l6a2FsbGVyIGNhbiBpbnRlcmFjdCB3aXRoIGl0OyBpdCB1c2VzIGBzeXNmc2AgYW5kIGBuZXdfZGV2aWNlYCBvbiBJMkMgYWRhcHRlcnMgc3VjaCBhcyBgaTJjLXN0dWJgIG9yIGBpMmMtZGV2YC4gVGhhdCBtZWFucyB0aGUgcGF0aCB0byB0cmlnZ2VyaW5nIGBzdC1uY2lgIGlzIGNsZWFyLlxuXG5UaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGEgZml4IGZvciBhIHJhY2UgY29uZGl0aW9uIHdpdGhpbiBgc3QtbmNpYC4gSXQgYWxzbyBhZGRzIGEgYHByZV91bnJlZ2lzdGVyYCBjYWxsYmFjayB0byB0aGUgYG5jaV9vcHNgIHN0cnVjdHVyZSwgd2hpY2ggbWFrZXMgbWUgd29uZGVyIGFib3V0IHRoZSBzcGVjaWZpYyBjb25jdXJyZW5jeSBpc3N1ZSB0aGV5J3JlIGFkZHJlc3NpbmcuIEFkZGl0aW9uYWxseSwgdGhlcmXigJlzIGEgY2hlY2sgYWRkZWQgd2l0aGluIGBuZmNfc2VfaW9gIGluIGBuZXQvbmZjL25ldGxpbmsuY2AsIHNvIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0bGluayBpbnRlcmFjdGlvbiBwbGF5cyBpbnRvIHRoaXMuXG5cbk5leHQsIEkgbmVlZCB0byBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIG5lY2Vzc2FyeSBjb25maWcgb3B0aW9uczogYENPTkZJR19ORkNfU1RfTkNJYCBmb3IgdGhlIGRyaXZlciBpdHNlbGYsIGFuZCBlaXRoZXIgYENPTkZJR19ORkNfU1RfTkNJX0kyQ2Agb3IgYENPTkZJR19ORkNfU1RfTkNJX1NQSWAgZGVwZW5kaW5nIG9uIHRoZSBpbnRlbmRlZCBidXMuIEknbGwgY2hlY2sgYGRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmZjL0tjb25maWdgIGZvciB0aGUgcHJlY2lzZSBkZXRhaWxzIG9uIHRoZXNlIG9wdGlvbnMgYW5kIGFueSBkZXBlbmRlbmNpZXMuIEZyb20gdGhlcmUgSSdsbCBiZSBhYmxlIHRvIHNlZSB0aGUgZnVsbCBzY29wZSBvZiB3aGF0J3MgaW52b2x2ZWQgd2l0aCB0aGlzIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxMTAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MjYuMTgxMzI2NjU5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI1MzM0ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfU1RfTkNJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVF9OQ0lcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy04LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjk6Y29uZmlnIE5GQ19TVF9OQ0lfSTJDXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoSTJDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjIxOmNvbmZpZyBORkNfU1RfTkNJX1NQSVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIyLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjI3LjYwNjY2NjQ0OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUwOTkwNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIE5GQ19TVF9OQ0lfSTJDIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBORkNfU1RfTkNJX0kyQ2AgbW9kdWxlLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIG1lYW5zIGRpZ2dpbmcgaW50byB0aGUgY29kZSwgcG9zc2libHkgbG9va2luZyBhdCBoZWFkZXIgZmlsZXMsIGFuZCB0cmFjaW5nIGJhY2sgZnJvbSBgTkZDX1NUX05DSV9JMkNgIHRvIGlkZW50aWZ5IHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgaXQgcmVsaWVzIHVwb24uIElzIGl0IHN0cmljdGx5IGhhcmR3YXJlLWRlcGVuZGVudCwgb3IgZG9lcyBpdCBhYnN0cmFjdCBzb21lIGxvd2VyLWxldmVsIGludGVyZmFjZXM/IEFyZSB0aGVyZSBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIHByb3RvY29scyBpdCBhc3N1bWVzIGFyZSBpbiBwbGFjZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciBJJ20gZGVhbGluZyB3aXRoIGEgaGlnaC1sZXZlbCBkcml2ZXIgb3Igc29tZXRoaW5nIG1vcmUgZ3JhbnVsYXIuIEFyZSB0aGVyZSBzcGVjaWZpYyByZWdpc3RlciBtYXBwaW5ncyBJIG5lZWQgdG8ga25vdz8gV2hhdCBvdGhlciBtb2R1bGVzIHByb3ZpZGUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIHRoYXQgaXQgbmVlZHM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGJvdHRsZW5lY2tzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gVWx0aW1hdGVseSwgSSdtIHRyeWluZyB0byBlc3RhYmxpc2ggaXRzIHBvc2l0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBORkMgc3RhY2sgYXJjaGl0ZWN0dXJlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGNvbnRleHQgd2hlbiBkZWFsaW5nIHdpdGgsIHJldmlld2luZyBvciBwb3NzaWJseSBkZWJ1Z2dpbiB0aGUgbW9kdWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDkxMiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjMwLjg1NzY1OTgxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5GQ19TVF9OQ0lcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRoZWxwXFxuICAgNTpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGNvcmUgZHJpdmVyLiBJdCBpbXBsZW1lbnRzIHRoZSBjaGlwc2V0XFxuICAgNjpcXHRcXHQgIE5DSSBsb2dpYyBhbmQgaG9va3MgaW50byB0aGUgTkZDIGtlcm5lbCBBUElzLiBQaHlzaWNhbCBsYXllcnMgd2lsbFxcbiAgIDc6XFx0XFx0ICByZWdpc3RlciBhZ2FpbnN0IGl0LlxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgTkZDX1NUX05DSV9JMkNcXG4gIDEwOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgSTJDXFxuICAxMjpcXHRcXHRzZWxlY3QgTkZDX1NUX05DSVxcbiAgMTM6XFx0XFx0aGVscFxcbiAgMTQ6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIEkyQyBpbnRlcmZhY2UgdG8gdGhlXFxuICAxNTpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cXG4gIDE2OlxcdFxcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgaTJjIGJ1cy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgc3QtbmNpX2kyYy5cXG4gIDE5OlxcdFxcdCAgU2F5IE4gaWYgdW5zdXJlLlxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTkZDX1NUX05DSV9TUElcXG4gIDIyOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcXFwiXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgU1BJXFxuICAyNDpcXHRcXHRzZWxlY3QgTkZDX1NUX05DSVxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIFNQSSBpbnRlcmZhY2UgdG8gdGhlXFxuICAyNzpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cXG4gIDI4OlxcdFxcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgc3BpIGJ1cy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgc3QtbmNpX3NwaS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MzAuODU3NzI3MDk3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTA0NjQ0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgbmVlZCBmb3IgYE5GQ19OQ0lgLCBgSTJDYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuIFN0YW5kYXJkIGNvbXBvbmVudHMsIG5vIHN1cnByaXNlcyB0aGVyZSwgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLiBCdXQgd2FpdC4uLiB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCBhbHNvIHRvdWNoZXMgYG5ldC9uZmMvbmV0bGluay5jYC4gVGhhdCdzIHBhcnQgb2YgdGhlICpjb3JlKiBORkMgc3Vic3lzdGVtLiBUaGlzIG1lYW5zIHdlJ3JlIG5vdCBqdXN0IGRlYWxpbmcgd2l0aCBhIHBlcmlwaGVyYWwgZHJpdmVyOyB0aGlzIHBhdGNoIGhhcyBwb3RlbnRpYWwgc3lzdGVtLXdpZGUgaW1wbGljYXRpb25zLiBCZWZvcmUgSSBkaXZlIGRlZXBlciwgSSBzaG91bGQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiBjaGFuZ2VzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgYG5ldC9uZmMvS2NvbmZpZ2AuIFNlZSB3aGF0IG9wdGlvbnMgYXJlIGJlaW5nIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBjaGFuZ2UgaW1wbGljYXRpb25zLiBUaGlzIGNvdWxkIGJlIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3Igb3IgYSBtaW5vciB0d2VhaywgZGVwZW5kaW5nIG9uIHRoZSBLY29uZmlnIGZpbGUuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY0NSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MzQuMDY4MTk0MjA2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjA1NTY5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL0tjb25maWctNS1cXG5uZXQvbmZjL0tjb25maWc6NjptZW51Y29uZmlnIE5GQ1xcbm5ldC9uZmMvS2NvbmZpZy03LVxcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcXG4tLVxcbm5ldC9uZmMvS2NvbmZpZy0xNi1cXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXFxubmV0L25mYy9LY29uZmlnLTE4LVxcdGRlcGVuZHMgb24gTkZDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjM0LjExMDI1NjA4NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE0MTEwNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVjb2RpbmcgdGhlIE5GQyBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYE5GQ2AgY29uZmlndXJhdGlvbi4gVGhhdCdzIHRoZSBjb3JlIG9mIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoLiBUaGVuLCBJIHNlZSB0aGUgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgbmV0L25mYy9uY2kvY29yZS5jYC4gVGhpcyB0ZWxscyBtZSBpbW1lZGlhdGVseSB0aGF0IHdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIE5ldHdvcmsgQ29udHJvbGxlciBJbnRlcmZhY2UsIG9yIGBORkNfTkNJYCBhcyB0aGUgY29kZSB3b3VsZCByZWNvZ25pemUgaXQsIHBvcnRpb24gb2YgdGhlIE5GQyBzdGFjay4gVGhpcyBgY29yZS5jYCBmaWxlIGlzIHRoZSBoZWFydCBvZiB0aGUgTkNJIGltcGxlbWVudGF0aW9uLiBLbm93aW5nIHRoaXMgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB0aGUgcG90ZW50aWFsIG1vZGlmaWNhdGlvbnMgYW5kIHRoZWlyIGxpa2VseSBpbXBhY3Qgb24gdGhlIG92ZXJhbGwgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgcGF0Y2ggdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGNoYW5nZXMsIGJ1dCB0aGlzIGluaXRpYWwgY29udGV4dCBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSByYXRpb25hbGUgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDUxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MzcuMjI0MzY5NTI3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzMzMjQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDX05DSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTItXFxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBTUElcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXFxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVFRZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjM3LjI2NzcwNTg5NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQ3MTM2NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBTY29wZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGZpZ3VyaW5nIG91dCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gbmFpbCBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQmFzZWQgb24gdGhlIGNvZGUgY2hhbmdlcywgaXQgbG9va3MgbGlrZSB3ZSBuZWVkIHRvIGVuc3VyZSB0aGVzZSBhcmUgZW5hYmxlZDogYE5GQ2AsIGBORkNfTkNJYCwgYEkyQ2AsIGFuZCBgTkZDX1NUX05DSV9JMkNgLiBXYWl0LCB3YWl0LCBgSTJDYCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIHN5emthbGxlciBjb25maWd1cmF0aW9ucywgYnV0IGl0J3MgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBsaXN0IGl0IG91dCBqdXN0IHRvIGJlIHN1cmUuIEFscmlnaHQsIGxldCdzIGluY2x1ZGUgYFNQSWAgYW5kIGBORkNfU1RfTkNJX1NQSWAgYXMgd2VsbCBqdXN0IGluIGNhc2UuIEFsd2F5cyBiZXR0ZXIgdG8gYmUgdGhvcm91Z2guXG5cbk5vdywgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyBtb2RpZmllZC4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlc2U6IGBzdF9uY2lfc2VfaW9gLCBgc3RfbmNpX3NlX3d0X3RpbWVvdXRgLCBgc3RfbmNpX3NlX2RlaW5pdGAsIGBzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkYCwgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAsIGFuZCBgbmZjX3NlX2lvYC4gT2theSwgSSBzZWUuIEhvd2V2ZXIsIGBzdF9uY2lfc2Vfd3RfdGltZW91dGAgYW5kIGBzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkYCBhcmUgbWFya2VkIGFzIGBzdGF0aWNgLiBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgd2hldGhlciBgc3RfbmNpX3NlX2lvYCBpcyBleHBvcnRlZCBvciBub3QsIGp1c3QgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgc2NvcGUgb2YgdGhlIGltcGFjdCBvZiB0aGUgY2hhbmdlcy4gVGhpcyBtaWdodCBpbmRpY2F0ZSB3aGV0aGVyIGl04oCZcyBhIHB1YmxpYyBpbnRlcmZhY2Ugb3IgYW4gaW50ZXJuYWwgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTEzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjQyLjExNDg0NjI3OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3MzQxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX3NlX2lvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz05NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgc3RfbmNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTAzLVxcdC5kaXNhYmxlX3NlID0gc3RfbmNpX2Rpc2FibGVfc2UsXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYzoxMDQ6XFx0LnNlX2lvID0gc3RfbmNpX3NlX2lvLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTA1LVxcdC5oY2lfbG9hZF9zZXNzaW9uID0gc3RfbmNpX2hjaV9sb2FkX3Nlc3Npb24sXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYz02NTY9RVhQT1JUX1NZTUJPTF9HUEwoc3RfbmNpX2Rpc2NvdmVyX3NlKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02NTctXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NjU4OmludCBzdF9uY2lfc2VfaW8oc3RydWN0IG5jaV9kZXYgKm5kZXYsIHUzMiBzZV9pZHgsXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjU5LVxcdFxcdCAgICAgICB1OCAqYXBkdSwgc2l6ZV90IGFwZHVfbGVuZ3RoLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjgzLX1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo2ODQ6RVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfaW8pO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTY4NS1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaD0xMzA9aW50IHN0X25jaV9kaXNhYmxlX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1MzIgc2VfaWR4KTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmg6MTMxOmludCBzdF9uY2lfc2VfaW8oc3RydWN0IG5jaV9kZXYgKm5kZXYsIHUzMiBzZV9pZHgsXFxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oLTEzMi1cXHRcXHRcXHRcXHR1OCAqYXBkdSwgc2l6ZV90IGFwZHVfbGVuZ3RoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNzo0Mi4xNTU1ODY5MjhaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwMTE4MjU5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgdGhlIEV4cG9ydGVkIFN5bWJvbHMqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIGNvbmZpcm1pbmcgdGhhdCBgc3RfbmNpX3NlX2lvYCBpcywgaW4gZmFjdCwgYW4gZXhwb3J0ZWQgc3ltYm9sLiBHb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBBbmQsIGFzIEkgc3VzcGVjdGVkLCBgc3RfbmNpX3NlX2RlaW5pdGAgaXMgZXhwb3J0ZWQgYXMgd2VsbC4gVGhpcyBjb25maXJtcyB0aGUgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGFuZCB0aGUgcGxhbm5lZCBhcmNoaXRlY3R1cmUuIE5vdyBJIGNhbiBtb3ZlIGZvcndhcmQgd2l0aCB0aGUgbmV4dCBzdGVwLCBiYXNlZCBvbiB0aGlzIGNvbmZpcm1hdGlvbi4gRXhjZWxsZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzYzNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjQ0Ljk1Njc3MjIwNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA5NTk4MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX3NlX2RlaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9OTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHN0X25jaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNy1cXHQuaGNpX2NtZF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfY21kX3JlY2VpdmVkLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTA4OlxcdC5wcmVfdW5yZWdpc3RlciA9IHN0X25jaV9zZV9kZWluaXQsXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDktXFx0LnByb3Bfb3BzID0gc3RfbmNpX3Byb3Bfb3BzLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM9NzQ5PUVYUE9SVF9TWU1CT0woc3RfbmNpX3NlX2luaXQpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTc1MC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo3NTE6dm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTc1Mi17XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy03NjItfVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjc2MzpFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9kZWluaXQpO1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oPTEyNT1pbnQgc3RfbmNpX3NlX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHN0cnVjdCBzdF9uY2lfc2Vfc3RhdHVzICpzZV9zdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaDoxMjY6dm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmgtMTI3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNzo0NC45OTc3MzczMTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1MjU3MzU3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGNoYW5nZXMgSSdtIHNlZWluZzpcblxuKipBbmFseXppbmcgQ29kZSBNb2RpZmljYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29kZSBtb2RpZmljYXRpb25zLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb24gaXMgZ2V0dGluZyB0b3VjaGVkLCBhbG9uZyB3aXRoIGBuZmNfc2VfaW9gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgcHJvYmFibHkgaW52b2x2ZXMgc29tZSBsb3dlci1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIGhhcmR3YXJlIG9yIGhvdyB0aGUgTkZDIFNlY3VyZSBFbGVtZW50IGlzIG1hbmFnZWQgd2l0aGluIHRoZSBzeXN0ZW0uIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgIHN1Z2dlc3RzIHVucmVnaXN0cmF0aW9uLCBzbyB0aGVyZSdzIGxpa2VseSBzb21lIGRldmljZSBjbGVhbnVwIG9yIHRlYXJkb3duIG9jY3VycmluZy4gUGVyaGFwcyBhIHNwZWNpZmljIHNlY3VyZSBlbGVtZW50IGlzIGJlaW5nIHJlbW92ZWQgb3IgZGVhY3RpdmF0ZWQuIGBuZmNfc2VfaW9gIGlzIGEgZ2VuZXJhbCBORkMgc2VjdXJlIGVsZW1lbnQgSS9PIGZ1bmN0aW9uLCBhbmQgY2hhbmdlcyBoZXJlIGNvdWxkIGluZGljYXRlIGEgY2hhbmdlIGluIGhvdyBkYXRhIGlzIHNlbnQgYW5kIHJlY2VpdmVkIHRvIGFuZCBmcm9tIHRoZSBzZWN1cmUgZWxlbWVudC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgYWN0dWFsIGNvZGUgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyB0byB1bmRlcnN0YW5kIHdoYXQgZXhhY3RseSBoYXMgY2hhbmdlZC4gV2hhdCdzIHRoZSBjb250ZXh0PyBXaGF0IHRyaWdnZXJlZCB0aGVzZSBtb2RpZmljYXRpb25zPyBBcmUgdGhlc2UgcmVsYXRlZCB0byBhIG5ldyBmZWF0dXJlLCBhIGJ1ZyBmaXgsIG9yIHNlY3VyaXR5IGVuaGFuY2VtZW50PyBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyNjEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNzo0OC4xNTAzMTMyNzJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDYyNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19zZV9pb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25ldGxpbmsuYz0xNDA2PXN0YXRpYyBpbnQgbmZjX2dlbmxfZHVtcF9zZXNfZG9uZShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxuLS1cXG5uZXQvbmZjL25ldGxpbmsuYy0xNDE3LVxcbm5ldC9uZmMvbmV0bGluay5jOjE0MTg6c3RhdGljIGludCBuZmNfc2VfaW8oc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHNlX2lkeCxcXG5uZXQvbmZjL25ldGxpbmsuYy0xNDE5LVxcdFxcdCAgICAgdTggKmFwZHUsIHNpemVfdCBhcGR1X2xlbmd0aCxcXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jPTE1MTU9c3RhdGljIGludCBuZmNfZ2VubF9zZV9pbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L25mYy9uZXRsaW5rLmMtMTU1Ny1cXG5uZXQvbmZjL25ldGxpbmsuYzoxNTU4OlxcdHJjID0gbmZjX3NlX2lvKGRldiwgc2VfaWR4LCBhcGR1LCBhcGR1X2xlbiwgc2VfaW9fY2IsIGN0eCk7XFxubmV0L25mYy9uZXRsaW5rLmMtMTU1OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6NDguMTkxNzc5NDcyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjk2NDMyNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkZDIFNlY3VyZSBFbGVtZW50IElPIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBORkMgU2VjdXJlIEVsZW1lbnQgSU8uIEkgc2VlIHRoYXQgYG5mY19zZV9pb2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24gaW4gYG5ldC9uZmMvbmV0bGluay5jYCwgd2hpY2ggbWFrZXMgYG5mY19nZW5sX3NlX2lvYCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCB0byBmb2N1cyBvbi4gQnV0IHRvIHRyYWNlIHRoZSBkZS1pbml0aWFsaXphdGlvbiBmbG93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgKmFmdGVyKiBhbiBORkMgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCwgc28gSSdtIGFsc28gZ29pbmcgdG8gZXhhbWluZSBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYCwgYHN0X25jaV9zZV9pb2AsIGFuZCBgc3RfbmNpX3NlX2RlaW5pdGAuXG5cbldhaXQgYSBtaW51dGUsIGlzIGBzdF9uY2lfc2VfZGVpbml0YCBhY3R1YWxseSBjYWxsZWQgZnJvbSBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYD8gWWVzLCBJIHNlZSBpdCBub3csIGl0J3MgY2FsbGVkIHRocm91Z2ggYG5kZXYtXHUwMDNlb3BzLVx1MDAzZXByZV91bnJlZ2lzdGVyYC4gVGhhdCdzIGltcG9ydGFudDsgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAgbG9va3MgbGlrZSBhIGtleSBzeW1ib2wgdG8gdHJhY2suIEkgY2FuIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUgbW9yZSBjbGVhcmx5IHdpdGggdGhhdCBpbiBtaW5kLlxuXG5Ob3csIEknbGwgcXVpY2tseSBjaGVjayBvbiB3aGV0aGVyIGB2aXJ0dWFsX25jaWRldmAgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIGl0IHJlcXVpcmVzIGEgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB0eXBpY2FsIGVudmlyb25tZW50IHRvIGJldHRlciBhbmFseXplIHRoZSBkZS1pbml0aWFsaXphdGlvbiBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MDEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6NTkuNDg4MjE1NDEyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk2NDIzNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfVklSVFVBTF9OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL0tjb25maWc9NDI9Y29uZmlnIE5GQ19QT1JUMTAwXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTUxLVxcbmRyaXZlcnMvbmZjL0tjb25maWc6NTI6Y29uZmlnIE5GQ19WSVJUVUFMX05DSVxcbmRyaXZlcnMvbmZjL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIk5DSSBkZXZpY2Ugc2ltdWxhdG9yIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDg6MDAuOTg0NjQ0MzQ4WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NTQyMTczOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBzdC1uY2lgIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgc3QtbmNpYCBkcml2ZXIsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCBmaXhlcyBzb21ldGhpbmcgcmVsYXRlZCB0byBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIFNlY3VyZSBFbGVtZW50IEkvTywgbGlrZWx5IGEgcmFjZSBjb25kaXRpb24uIFRvIHByb3Blcmx5IGJ1aWxkIGFuZCB0ZXN0IHRoaXMsIEkgbmVlZCB0byBlbnN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiAgYE5GQ19WSVJUVUFMX05DSWAgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBpdCBsZXRzIG1lIGZ1enogdGhlIE5DSSBjb3JlIHdpdGhvdXQgbmVlZGluZyBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggaXMgYWx3YXlzIGNvbnZlbmllbnQuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyB0aGUgYHN0LW5jaWAgZHJpdmVyLCBzbyBJIGFic29sdXRlbHkgbmVlZCB0byBlbmFibGUgYE5GQ19TVF9OQ0lfSTJDYCBhbmQgYE5GQ19TVF9OQ0lfU1BJYCB0byBjb21waWxlIHRoZSByZWxldmFudCBtb2RpZmllZCBjb2RlLlxuXG5IZXJlJ3MgbXkgbGlzdCBvZiBjb25maWd1cmF0aW9ucyB0byBlbnN1cmUgZXZlcnl0aGluZyBjb21waWxlczpcbiogICBgTkZDYFxuKiAgIGBORkNfTkNJYFxuKiAgIGBORkNfU1RfTkNJX0kyQ2BcbiogICBgTkZDX1NUX05DSV9TUElgXG4qICAgYE5GQ19WSVJUVUFMX05DSWBcbiogICBgSTJDYFxuKiAgIGBTUElgXG5cbmBJMkNgIGFuZCBgU1BJYCBhcmUgcHJldHR5IHViaXF1aXRvdXMsIGJ1dCBJJ2xsIGFkZCB0aGVtIGp1c3QgdG8gYmUgc2FmZS4gIE5vdywgbGV0J3MganVzdCBxdWlja2x5IHZlcmlmeSBkZXBlbmRlbmNpZXMuIGBORkNfU1RfTkNJX0kyQ2AgZGVwZW5kcyBvbiBgTkZDX05DSSBcdTAwMjZcdTAwMjYgSTJDYCwgYW5kIGBORkNfU1RfTkNJX1NQSWAgZGVwZW5kcyBvbiBgTkZDX05DSSBcdTAwMjZcdTAwMjYgU1BJYCwgc28gd2UncmUgZ29vZCB0aGVyZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgc3RfbmNpX3NlX2RlaW5pdGAgaXMgcmVhY2hhYmxlLiBSaWdodCwgaXQncyBjYWxsZWQgZnJvbSBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYCwgd2hpY2ggaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIE5DSSBkZXZpY2UgaXMgdW5yZWdpc3RlcmVkLiAgSW4gdGhlIGNvbnRleHQgb2YgYHN0LW5jaWAsIHRoYXQgaGFwcGVucyB3aGVuIHRoZSBJMkMgb3IgU1BJIGRldmljZSBpcyByZW1vdmVkLCBzbyBJIGNhbiB0cmlnZ2VyIHRoaXMgdGhyb3VnaCBzeXprYWxsZXIsIGxpa2Ugd3JpdGluZyB0byBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLTAvZGVsZXRlX2RldmljZWAsIG9yIGJ5IGp1c3QgdW5sb2FkaW5nIHRoZSBtb2R1bGUuIEFuZCwgb2YgY291cnNlLCB0aGVyZSdzIGBuZmNfZ2VubF9zZV9pb2AsIHdoaWNoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmsuXG5cblNvLCB0aGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlOlxuKiAgIGBuZmNfZ2VubF9zZV9pb2BcbiogICBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYFxuKiAgIGBzdF9uY2lfc2VfaW9gXG4qICAgYHN0X25jaV9zZV9kZWluaXRgXG5cbkxldCdzIHNlZS4uLmFueSBvdGhlciBmdW5jdGlvbnM/IGBzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkYCBpcyBzdGF0aWMsIGJ1dCBpdCBzZWVtcyB0byBiZSBhbiBldmVudCBoYW5kbGVyLiAgYHN0X25jaV9zZV93dF90aW1lb3V0YCBpcyBhIHRpbWVyIGNhbGxiYWNrLiBJZiBJIGZvY3VzIG9uIGZ1enppbmcgYHN0X25jaV9zZV9pb2AgdGhlIHJlc3Qgc2hvdWxkIGJlIGNvdmVyZWQuXG5cblNvLCB0aGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGFkZHJlc3MgcmFjZSBjb25kaXRpb25zIGluIHRoZSBgc3QtbmNpYCBkcml2ZXIgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gU2VjdXJlIEVsZW1lbnQgSS9PLiBUaGUgbW9kaWZpY2F0aW9ucyB0b3VjaCBib3RoIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAoYG5mY19nZW5sX3NlX2lvYCwgYG5jaV91bnJlZ2lzdGVyX2RldmljZWApIGFuZCBhbHNvIHRoZSBgc3QtbmNpYCBkcml2ZXIgaXRzZWxmIChgc3RfbmNpX3NlX2lvYCwgYHN0X25jaV9zZV9kZWluaXRgKS4gIFRoZXNlIGNvZGUgcGF0aHMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGUgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgdGhlIGluc3RhbnRpYXRpb24gYW5kIHJlbW92YWwgb2YgSTJDL1NQSSBkZXZpY2VzLCB3aGljaCBTeXprYWxsZXIgY2FuIGVhc2lseSBlbXVsYXRlLiBJIHNob3VsZCBqdXN0IGNvbmZpcm0gdGhhdCBJJ3ZlIGdvdHRlbiB0aGUgZnVuY3Rpb24gbmFtZSBvZiBgbmZjX2dlbmxfc2VfaW9gIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzQ1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA4OjA5LjkzODg2NDM5NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1NDk2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2dlbmxfc2VfaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9uZXRsaW5rLmM9MTQ3Nz1zdGF0aWMgdm9pZCBzZV9pb19jYih2b2lkICpjb250ZXh0LCB1OCAqYXBkdSwgc2l6ZV90IGFwZHVfbGVuLCBpbnQgZXJyKVxcbi0tXFxubmV0L25mYy9uZXRsaW5rLmMtMTUxNC1cXG5uZXQvbmZjL25ldGxpbmsuYzoxNTE1OnN0YXRpYyBpbnQgbmZjX2dlbmxfc2VfaW8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvbmZjL25ldGxpbmsuYy0xNTE2LXtcXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jPTE3MDE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX29wcyBuZmNfZ2VubF9vcHNbXSA9IHtcXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jLTE3OTUtXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC9uZmMvbmV0bGluay5jOjE3OTY6XFx0XFx0LmRvaXQgPSBuZmNfZ2VubF9zZV9pbyxcXG5uZXQvbmZjL25ldGxpbmsuYy0xNzk3LVxcdFxcdC5mbGFncyA9IEdFTkxfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDg6MDkuOTgyNDE5MDU0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTczNzY3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTmV0bGluayBIYW5kbGVyIGZvciBORkMqKlxuXG5BbHJpZ2h0LCBzbyBgbmZjX2dlbmxfc2VfaW9gIOKAkyB5dXAsIHRoYXQncyB0aGUgbmV0bGluayBoYW5kbGVyIHdlJ3JlIGRlYWxpbmcgd2l0aC4gSnVzdCBjb25maXJtaW5nIHRoYXQgbWVudGFsIG5vdGUuIE5vdywgbGV0J3MganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayBzb21ldGhpbmcgY3JpdGljYWwgZm9yIHRoZSBvdmVyYWxsIGRldmljZSBtYW5hZ2VtZW50LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjb25maXJtIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBJbXBvcnRhbnQgZm9yIG91ciB1c2UgY2FzZSBhbmQgbWFraW5nIHN1cmUgdGhlcmUgYXJlbid0IGFueSBnb3RjaGFzIGRvd24gdGhlIGxpbmUuIFdlIGRvbid0IHdhbnQgdG8gZ2V0IGJpdHRlbiBieSBzb21lIHN5bWJvbCB2aXNpYmlsaXR5IGlzc3VlIGxhdGVyLiBMZXQncyBtYWtlIHN1cmUgaXQncyBhY2Nlc3NpYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzA4MywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA4OjEzLjU5OTc5ODY3NloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk4OTk5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qbmNpX3VucmVnaXN0ZXJfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbmNpL2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25jaS9jb3JlLmM9MTMxOD12b2lkIG5jaV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4tLVxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMzQ1LX1cXG5uZXQvbmZjL25jaS9jb3JlLmM6MTM0NjpFWFBPUlRfU1lNQk9MKG5jaV91bnJlZ2lzdGVyX2RldmljZSk7XFxubmV0L25mYy9uY2kvY29yZS5jLTEzNDctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA4OjEzLjYzOTcwNTk5NVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkxNTA0NzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipWZXJpZmljYXRpb24gU3RlcCoqXG5cblJpZ2h0LCB0aGF0J3MgZGVmaW5pdGVseSB0aGUgY2FzZS4gTm93LCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgZGVidWdnaW5nLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcgZnVuZGFtZW50YWwuIEkgaGF2ZSBhIGh1bmNoLCBhbmQgaXQncyBhbHdheXMgYmVzdCB0byB2ZXJpZnkgdGhlc2UgdGhpbmdzIGVhcmx5IG9uLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUgc3ltYm9sIGBzdF9uY2lfc2VfaW9gIGlzLCBpbiBmYWN0LCBleHBvcnRlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNhbiBldmVuICphY2Nlc3MqIHRoYXQgY29kZSBiZWZvcmUgSSBkaWcgYW55IGRlZXBlci4gTm8gcG9pbnQgaW4gd2FzdGluZyB0aW1lIGlmIGl0J3Mgbm90IGV4cG9zZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDE5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDg6MTYuNDMxMjEyOTAxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzA0MTAzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipzdF9uY2lfc2VfaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM9NjU4PWludCBzdF9uY2lfc2VfaW8oc3RydWN0IG5jaV9kZXYgKm5kZXYsIHUzMiBzZV9pZHgsXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02ODMtfVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjY4NDpFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9pbyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjg1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowODoxNi40NzgyNTczOFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQxNDM2NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZlcmlmeWluZyBNb2R1bGUgRGUtSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCB5ZXMsIHRoYXQgZmVlbHMgcmlnaHQuIE5vdywgbGV0J3MganVzdCBjb25maXJtIHNvbWV0aGluZyBjcml0aWNhbCBiZWZvcmUgd2UgcHJvY2VlZCBmdXJ0aGVyLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgYHN0X25jaV9zZV9kZWluaXRgIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBUaGlzIGlzIGEgc3RhbmRhcmQgYW5kIGVzc2VudGlhbCBzYW5pdHkgY2hlY2sgSSBhbHdheXMgcGVyZm9ybSB3aGVuIGRlYWxpbmcgd2l0aCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGluIHRoaXMgY29udGV4dCB3aGVyZSB0aGlzIGNhbiBicmVhayB0aGUgc3lzdGVtIGRvd24gdGhlIGxpbmUuIEkgYW0gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBhdmFpbGFibGUgZm9yIGxpbmtpbmcuIFdlIGNhbid0IG1vdmUgZm9yd2FyZCB3aXRob3V0IHRoaXMgYXNzdXJhbmNlLCBiZWNhdXNlLCBvdGhlcndpc2UgdGhlIGVudGlyZSBwcm9jZWR1cmUgZmFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzQ1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDg6MTkuNDE5Njk3MDAzWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDczMTY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipzdF9uY2lfc2VfZGVpbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTc1MT12b2lkIHN0X25jaV9zZV9kZWluaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy03NjItfVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjc2MzpFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9kZWluaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowODoxOS40NjA0MzM5OTNaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA0NDY4ODA4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBUaGVzZSBDaGFuZ2VzKipcblxuT2theSwgc28gdGhpcyBpcyBhYm91dCBhbiBORkMgZHJpdmVyIGFuZCBpdCBsb29rcyBsaWtlIGEgZ29vZCBjaHVuayBvZiBmdW5jdGlvbmFsIGxvZ2ljIGlzIGJlaW5nIG1vZGlmaWVkLiBZZXMsIHRoYXQncyByaWdodCwgdGhlIGNoYW5nZXMgYXJlIGRlZmluaXRlbHkgaW4gdGhlIGZ1bmN0aW9uYWwgbG9naWMgaXRzZWxmLlxuXG5SaWdodCwgdGhlIGtleSBzeW1ib2xzIHRoaXMgcGF0Y2ggdG91Y2hlcyBhcmU6IGBuZmNfZ2VubF9zZV9pb2AsIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgLCBgc3RfbmNpX3NlX2lvYCwgYW5kIGBzdF9uY2lfc2VfZGVpbml0YC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBkZS1pbml0aWFsaXphdGlvbiByb3V0aW5lcyAtIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuXG5cbkFuZCB0aGVuIHRoZXJlJ3MgdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBUaGUgcmVsZXZhbnQgS2NvbmZpZyBzeW1ib2xzIGFyZSBgTkZDYCwgYE5GQ19OQ0lgLCBgTkZDX1NUX05DSV9JMkNgLCBgTkZDX1NUX05DSV9TUElgLCBgTkZDX1ZJUlRVQUxfTkNJYCwgYEkyQ2AsIGFuZCBgU1BJYC4gV2FpdCBhIHNlY29uZCwgYmVjYXVzZSBgTkZDX1NUX05DSWAgaXMgaW1wbGljaXRseSBzZWxlY3RlZCBieSBgTkZDX1NUX05DSV9JMkNgIG9yIGBORkNfU1RfTkNJX1NQSWAsIHNvIGl0J3Mgbm90IGEgdXNlci1zZWxlY3RhYmxlIG9wdGlvbiwgYWx0aG91Z2ggaXQncyBoZWxwZnVsIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBzeW1ib2xzLlxuXG5Pa2F5LCBzbyB0aGUgcGF0Y2ggaXRzZWxmIGlzIG1vZGlmeWluZyB0aGUgZnVuY3Rpb25hbCBsb2dpYy4gVGhlcmUgYXJlIGEgcHJlX3VucmVnaXN0ZXIgY2FsbGJhY2ssIHRpbWVyIGZpeGVzLCBhbmQgZml4ZXMgZm9yIGFjdGl2ZSBmbGFncy4gVGhpcyBoYXMgdGhlIHRlbGwtdGFsZSBzaWducyBvZiByYWNlIGNvbmRpdGlvbiBmaXhlcyBhbmQgc3luY2hyb25pemF0aW9uIGNoYW5nZXMuIEdpdmVuIHRoYXQsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIEknbGwgZmxhZyB0aGlzIG9uZSBpbW1lZGlhdGVseSBmb3IgaW5jbHVzaW9uIGluIHRoZSBmdXp6aW5nIHF1ZXVlLlxuXG5JJ20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLCBzbyBJJ2xsIGdvIGFoZWFkIGFuZCBsb2cgdGhlIHJlc3VsdHMgd2l0aCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA0OCwiT3V0cHV0VG9rZW5zIjoyMzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDg6MjUuNTA1MTI0MzQ2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg2ODg1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1NUX05DSV9JMkNcIixcbiAgICBcIk5GQ19TVF9OQ0lfU1BJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIixcbiAgICBcIkkyQ1wiLFxuICAgIFwiU1BJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2dlbmxfc2VfaW9cIixcbiAgICBcIm5jaV91bnJlZ2lzdGVyX2RldmljZVwiLFxuICAgIFwic3RfbmNpX3NlX2lvXCIsXG4gICAgXCJzdF9uY2lfc2VfZGVpbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBORkMgbmV0bGluayBhbmQgTkNJIHN1YnN5c3RlbSBjb2RlIChuZmNfc2VfaW8sIG5jaV91bnJlZ2lzdGVyX2RldmljZSkgYW5kIHRoZSBzdC1uY2kgZHJpdmVyIChzdF9uY2lfc2VfaW8sIHN0X25jaV9zZV9kZWluaXQpIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgU0UgSS9PIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBmdW5jdGlvbmFsbHkgcmVhY2hhYmxlIHZpYSBORkMgbmV0bGluayBpbnRlcmZhY2VzIGFuZCBJMkMvU1BJIGRldmljZSBpbnN0YW50aWF0aW9uL3JlbW92YWwsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19TVF9OQ0lfSTJDXCIsXG4gICAgXCJORkNfU1RfTkNJX1NQSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCIsXG4gICAgXCJJMkNcIixcbiAgICBcIlNQSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mY19nZW5sX3NlX2lvXCIsXG4gICAgXCJuY2lfdW5yZWdpc3Rlcl9kZXZpY2VcIixcbiAgICBcInN0X25jaV9zZV9pb1wiLFxuICAgIFwic3RfbmNpX3NlX2RlaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAobmZjX3NlX2lvLCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2UpIGFuZCB0aGUgc3QtbmNpIGRyaXZlciAoc3RfbmNpX3NlX2lvLCBzdF9uY2lfc2VfZGVpbml0KSB0byBmaXggcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIFNFIEkvTyBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgZnVuY3Rpb25hbGx5IHJlYWNoYWJsZSB2aWEgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgSTJDL1NQSSBkZXZpY2UgaW5zdGFudGlhdGlvbi9yZW1vdmFsLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvj57g[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 11:40:23 +0000 UTC FinishedAt: 2026-08-01 12:08:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_ST_NCI_I2C", "NFC_ST_NCI_SPI", "NFC_VIRTUAL_NCI", "I2C", "SPI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_ST_NCI_I2C", "NFC_ST_NCI_SPI", "NFC_VIRTUAL_NCI", "I2C", "SPI" ], "series_id": "8dc86100-2bcc-4b87-a93a-9d920355f407" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfc_genl_se_io", "nci_unregister_device", "st_nci_se_io", "st_nci_se_deinit" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19TVF9OQ0lfSTJDJiMzNDssCiAgICAmIzM0O05GQ19TVF9OQ0lfU1BJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7LAogICAgJiMzNDtJMkMmIzM0OywKICAgICYjMzQ7U1BJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZjX2dlbmxfc2VfaW8mIzM0OywKICAgICYjMzQ7bmNpX3VucmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgICAmIzM0O3N0X25jaV9zZV9pbyYjMzQ7LAogICAgJiMzNDtzdF9uY2lfc2VfZGVpbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAobmZjX3NlX2lvLCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2UpIGFuZCB0aGUgc3QtbmNpIGRyaXZlciAoc3RfbmNpX3NlX2lvLCBzdF9uY2lfc2VfZGVpbml0KSB0byBmaXggcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIFNFIEkvTyBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgZnVuY3Rpb25hbGx5IHJlYWNoYWJsZSB2aWEgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgSTJDL1NQSSBkZXZpY2UgaW5zdGFudGlhdGlvbi9yZW1vdmFsLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjZTA0NzIxZDFjMzQyM2Y5MjE3MzRiMTdlYWY0NzU2ZTFiYmYwNTEyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAxMjowNjo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xuaW5kZXggYTM2NzEzNmQ0MzMwYS4uNmU4Zjc5OWY1Yzk0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbkBAIC0xMDUsNiAmIzQzOzEwNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xuIFx0LmhjaV9sb2FkX3Nlc3Npb24gPSBzdF9uY2lfaGNpX2xvYWRfc2Vzc2lvbixcbiBcdC5oY2lfZXZlbnRfcmVjZWl2ZWQgPSBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkLFxuIFx0LmhjaV9jbWRfcmVjZWl2ZWQgPSBzdF9uY2lfaGNpX2NtZF9yZWNlaXZlZCxcbiYjNDM7XHQucHJlX3VucmVnaXN0ZXIgPSBzdF9uY2lfc2VfZGVpbml0LFxuIFx0LnByb3Bfb3BzID0gc3RfbmNpX3Byb3Bfb3BzLFxuIFx0Lm5fcHJvcF9vcHMgPSBBUlJBWV9TSVpFKHN0X25jaV9wcm9wX29wcyksXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXG5pbmRleCA2MDdlYzc2OGViN2I0Li4yMzIyNDlkNjBiYjg2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXG5AQCAtMjgzLDkgJiM0MzsyODMsOSBAQCBzdGF0aWMgaW50IHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4gXHRzd2l0Y2ggKGV2ZW50KSB7XG4gXHRjYXNlIFNUX05DSV9FVlRfVFJBTlNNSVRfREFUQTpcbiBcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV90aW1lcik7XG4tXHRcdGluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlID0gZmFsc2U7XG4tXHRcdGluZm8tXHUwMDNlc2VfaW5mby5jYihpbmZvLVx1MDAzZXNlX2luZm8uY2JfY29udGV4dCxcbi1cdFx0XHRcdCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbiwgMCk7XG4mIzQzO1x0XHRpZiAoeGNoZyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSwgZmFsc2UpKVxuJiM0MztcdFx0XHRpbmZvLVx1MDAzZXNlX2luZm8uY2IoaW5mby1cdTAwM2VzZV9pbmZvLmNiX2NvbnRleHQsXG4mIzQzO1x0XHRcdFx0XHQgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4sIDApO1xuIFx0YnJlYWs7XG4gXHRjYXNlIFNUX05DSV9FVlRfV1RYX1JFUVVFU1Q6XG4gXHRcdG1vZF90aW1lcihcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX3RpbWVyLCBqaWZmaWVzICYjNDM7XG5AQCAtNjY1LDkgJiM0Mzs2NjUsOSBAQCBpbnQgc3RfbmNpX3NlX2lvKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1MzIgc2VfaWR4LFxuIFx0Y2FzZSBTVF9OQ0lfRVNFX0hPU1RfSUQ6XG4gXHRcdGluZm8tXHUwMDNlc2VfaW5mby5jYiA9IGNiO1xuIFx0XHRpbmZvLVx1MDAzZXNlX2luZm8uY2JfY29udGV4dCA9IGNiX2NvbnRleHQ7XG4mIzQzO1x0XHR4Y2hnKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCB0cnVlKTtcbiBcdFx0bW9kX3RpbWVyKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfdGltZXIsIGppZmZpZXMgJiM0MztcbiBcdFx0XHQgIG1zZWNzX3RvX2ppZmZpZXMoaW5mby1cdTAwM2VzZV9pbmZvLnd0X3RpbWVvdXQpKTtcbi1cdFx0aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUgPSB0cnVlO1xuIFx0XHRyZXR1cm4gbmNpX2hjaV9zZW5kX2V2ZW50KG5kZXYsIFNUX05DSV9BUERVX1JFQURFUl9HQVRFLFxuIFx0XHRcdFx0XHRTVF9OQ0lfRVZUX1RSQU5TTUlUX0RBVEEsIGFwZHUsXG4gXHRcdFx0XHRcdGFwZHVfbGVuZ3RoKTtcbkBAIC02OTksNyAmIzQzOzY5OSw4IEBAIHN0YXRpYyB2b2lkIHN0X25jaV9zZV93dF90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuIFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gdGltZXJfY29udGFpbmVyX29mKGluZm8sIHQsXG4gXHRcdFx0XHRcdFx0ICAgICAgc2VfaW5mby5id2lfdGltZXIpO1xuIFxuLVx0aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUgPSBmYWxzZTtcbiYjNDM7XHRpZiAoIXhjaGcoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUsIGZhbHNlKSlcbiYjNDM7XHRcdHJldHVybjtcbiBcbiBcdGlmICghaW5mby1cdTAwM2VzZV9pbmZvLnhjaF9lcnJvcikge1xuIFx0XHRpbmZvLVx1MDAzZXNlX2luZm8ueGNoX2Vycm9yID0gdHJ1ZTtcbkBAIC03NTEsMTMgJiM0Mzs3NTIsMTIgQEAgdm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuIHtcbiBcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcbiBcbi1cdGlmIChpbmZvLVx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSlcbi1cdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV90aW1lcik7XG4tXHRpZiAoaW5mby1cdTAwM2VzZV9pbmZvLnNlX2FjdGl2ZSlcbi1cdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLnNlX2FjdGl2ZV90aW1lcik7XG4mIzQzO1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX3RpbWVyKTtcbiYjNDM7XHRpZiAoeGNoZyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSwgZmFsc2UpKVxuJiM0MztcdFx0aW5mby1cdTAwM2VzZV9pbmZvLmNiKGluZm8tXHUwMDNlc2VfaW5mby5jYl9jb250ZXh0LCBOVUxMLCAwLCAtRU5PREVWKTtcbiBcbi1cdGluZm8tXHUwMDNlc2VfaW5mby5zZV9hY3RpdmUgPSBmYWxzZTtcbi1cdGluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlID0gZmFsc2U7XG4mIzQzO1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uc2VfYWN0aXZlX3RpbWVyKTtcbiYjNDM7XHR4Y2hnKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5zZV9hY3RpdmUsIGZhbHNlKTtcbiYjNDM7XHRjb21wbGV0ZShcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8ucmVxX2NvbXBsZXRpb24pO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9kZWluaXQpO1xuLVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oIGIvaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmhcbmluZGV4IDY2NGQ1MDU4ZTY2ZTAuLjc1NGE2NzE4NTY0MjQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmhcbkBAIC04Miw2ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgbmNpX29wcyB7XG4gXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4gXHR2b2lkICAoKmhjaV9jbWRfcmVjZWl2ZWQpKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLCB1OCBjbWQsXG4gXHRcdFx0XHQgIHN0cnVjdCBza19idWZmICpza2IpO1xuJiM0MztcdHZvaWQgICgqcHJlX3VucmVnaXN0ZXIpKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcbiBcbiBcdGNvbnN0IHN0cnVjdCBuY2lfZHJpdmVyX29wcyAqcHJvcF9vcHM7XG4gXHRzaXplX3Qgbl9wcm9wX29wcztcbmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9jb3JlLmMgYi9uZXQvbmZjL25jaS9jb3JlLmNcbmluZGV4IDVmNDZjNGI1NzIwZjYuLjg2Mjg2YzA3NjVmMjYgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL25jaS9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbmNpL2NvcmUuY1xuQEAgLTEzMjEsNiAmIzQzOzEzMjEsOSBAQCB2b2lkIG5jaV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiBcbiBcdG5mY191bnJlZ2lzdGVyX3Jma2lsbChuZGV2LVx1MDAzZW5mY19kZXYpO1xuIFxuJiM0MztcdGlmIChuZGV2LVx1MDAzZW9wcy1cdTAwM2VwcmVfdW5yZWdpc3RlcilcbiYjNDM7XHRcdG5kZXYtXHUwMDNlb3BzLVx1MDAzZXByZV91bnJlZ2lzdGVyKG5kZXYpO1xuJiM0MztcbiBcdC8qIFRoaXMgc2V0X2JpdCBpcyBub3QgcHJvdGVjdGVkIHdpdGggc3BlY2lhbGl6ZWQgYmFycmllcixcbiBcdCAqIEhvd2V2ZXIsIGl0IGlzIGZpbmUgYmVjYXVzZSB0aGUgbXV0ZXhfbG9jayhcdTAwMjZuZGV2LVx1MDAzZXJlcV9sb2NrKTtcbiBcdCAqIGluIG5jaV9jbG9zZV9kZXZpY2UoKSB3aWxsIGhlbHAgdG8gZW1pdCBvbmUuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9uZXRsaW5rLmMgYi9uZXQvbmZjL25ldGxpbmsuY1xuaW5kZXggMGM1ODgyNGNiMTUwZC4uMzEzMmY3YTkwYWI5ZiAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbmV0bGluay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL25ldGxpbmsuY1xuQEAgLTE0MjYsNiAmIzQzOzE0MjYsMTEgQEAgc3RhdGljIGludCBuZmNfc2VfaW8oc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHNlX2lkeCxcbiBcbiBcdGRldmljZV9sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuIFxuJiM0MztcdGlmIChkZXYtXHUwMDNlc2h1dHRpbmdfZG93bikge1xuJiM0MztcdFx0cmMgPSAtRU5PREVWO1xuJiM0MztcdFx0Z290byBlcnJvcjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKCFkZXZpY2VfaXNfcmVnaXN0ZXJlZChcdTAwMjZkZXYtXHUwMDNlZGV2KSkge1xuIFx0XHRyYyA9IC1FTk9ERVY7XG4gXHRcdGdvdG8gZXJyb3I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19TVF9OQ0lfSTJDJiMzNDssCiAgICAmIzM0O05GQ19TVF9OQ0lfU1BJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7LAogICAgJiMzNDtJMkMmIzM0OywKICAgICYjMzQ7U1BJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZjX2dlbmxfc2VfaW8mIzM0OywKICAgICYjMzQ7bmNpX3VucmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgICAmIzM0O3N0X25jaV9zZV9pbyYjMzQ7LAogICAgJiMzNDtzdF9uY2lfc2VfZGVpbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAobmZjX3NlX2lvLCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2UpIGFuZCB0aGUgc3QtbmNpIGRyaXZlciAoc3RfbmNpX3NlX2lvLCBzdF9uY2lfc2VfZGVpbml0KSB0byBmaXggcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIFNFIEkvTyBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgZnVuY3Rpb25hbGx5IHJlYWNoYWJsZSB2aWEgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgSTJDL1NQSSBkZXZpY2UgaW5zdGFudGlhdGlvbi9yZW1vdmFsLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjZTA0NzIxZDFjMzQyM2Y5MjE3MzRiMTdlYWY0NzU2ZTFiYmYwNTEyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAxMjowNjo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jCmluZGV4IGEzNjcxMzZkNDMzMGEuLjZlOGY3OTlmNWM5NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYwpAQCAtMTA1LDYgJiM0MzsxMDUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgc3RfbmNpX29wcyA9IHsKIAkuaGNpX2xvYWRfc2Vzc2lvbiA9IHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uLAogCS5oY2lfZXZlbnRfcmVjZWl2ZWQgPSBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkLAogCS5oY2lfY21kX3JlY2VpdmVkID0gc3RfbmNpX2hjaV9jbWRfcmVjZWl2ZWQsCiYjNDM7CS5wcmVfdW5yZWdpc3RlciA9IHN0X25jaV9zZV9kZWluaXQsCiAJLnByb3Bfb3BzID0gc3RfbmNpX3Byb3Bfb3BzLAogCS5uX3Byb3Bfb3BzID0gQVJSQVlfU0laRShzdF9uY2lfcHJvcF9vcHMpLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMKaW5kZXggNjA3ZWM3NjhlYjdiNC4uMjMyMjQ5ZDYwYmI4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMKQEAgLTI4Myw5ICYjNDM7MjgzLDkgQEAgc3RhdGljIGludCBzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LAogCXN3aXRjaCAoZXZlbnQpIHsKIAljYXNlIFNUX05DSV9FVlRfVFJBTlNNSVRfREFUQToKIAkJdGltZXJfZGVsZXRlX3N5bmMoJmFtcDtpbmZvLSZndDtzZV9pbmZvLmJ3aV90aW1lcik7Ci0JCWluZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlOwotCQlpbmZvLSZndDtzZV9pbmZvLmNiKGluZm8tJmd0O3NlX2luZm8uY2JfY29udGV4dCwKLQkJCQkgc2tiLSZndDtkYXRhLCBza2ItJmd0O2xlbiwgMCk7CiYjNDM7CQlpZiAoeGNoZygmYW1wO2luZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSwgZmFsc2UpKQomIzQzOwkJCWluZm8tJmd0O3NlX2luZm8uY2IoaW5mby0mZ3Q7c2VfaW5mby5jYl9jb250ZXh0LAomIzQzOwkJCQkJIHNrYi0mZ3Q7ZGF0YSwgc2tiLSZndDtsZW4sIDApOwogCWJyZWFrOwogCWNhc2UgU1RfTkNJX0VWVF9XVFhfUkVRVUVTVDoKIAkJbW9kX3RpbWVyKCZhbXA7aW5mby0mZ3Q7c2VfaW5mby5id2lfdGltZXIsIGppZmZpZXMgJiM0MzsKQEAgLTY2NSw5ICYjNDM7NjY1LDkgQEAgaW50IHN0X25jaV9zZV9pbyhzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTMyIHNlX2lkeCwKIAljYXNlIFNUX05DSV9FU0VfSE9TVF9JRDoKIAkJaW5mby0mZ3Q7c2VfaW5mby5jYiA9IGNiOwogCQlpbmZvLSZndDtzZV9pbmZvLmNiX2NvbnRleHQgPSBjYl9jb250ZXh0OwomIzQzOwkJeGNoZygmYW1wO2luZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSwgdHJ1ZSk7CiAJCW1vZF90aW1lcigmYW1wO2luZm8tJmd0O3NlX2luZm8uYndpX3RpbWVyLCBqaWZmaWVzICYjNDM7CiAJCQkgIG1zZWNzX3RvX2ppZmZpZXMoaW5mby0mZ3Q7c2VfaW5mby53dF90aW1lb3V0KSk7Ci0JCWluZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSA9IHRydWU7CiAJCXJldHVybiBuY2lfaGNpX3NlbmRfZXZlbnQobmRldiwgU1RfTkNJX0FQRFVfUkVBREVSX0dBVEUsCiAJCQkJCVNUX05DSV9FVlRfVFJBTlNNSVRfREFUQSwgYXBkdSwKIAkJCQkJYXBkdV9sZW5ndGgpOwpAQCAtNjk5LDcgJiM0Mzs2OTksOCBAQCBzdGF0aWMgdm9pZCBzdF9uY2lfc2Vfd3RfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIAlzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSB0aW1lcl9jb250YWluZXJfb2YoaW5mbywgdCwKIAkJCQkJCSAgICAgIHNlX2luZm8uYndpX3RpbWVyKTsKIAotCWluZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlOwomIzQzOwlpZiAoIXhjaGcoJmFtcDtpbmZvLSZndDtzZV9pbmZvLmJ3aV9hY3RpdmUsIGZhbHNlKSkKJiM0MzsJCXJldHVybjsKIAogCWlmICghaW5mby0mZ3Q7c2VfaW5mby54Y2hfZXJyb3IpIHsKIAkJaW5mby0mZ3Q7c2VfaW5mby54Y2hfZXJyb3IgPSB0cnVlOwpAQCAtNzUxLDEzICYjNDM7NzUyLDEyIEBAIHZvaWQgc3RfbmNpX3NlX2RlaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldikKIHsKIAlzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7CiAKLQlpZiAoaW5mby0mZ3Q7c2VfaW5mby5id2lfYWN0aXZlKQotCQl0aW1lcl9kZWxldGVfc3luYygmYW1wO2luZm8tJmd0O3NlX2luZm8uYndpX3RpbWVyKTsKLQlpZiAoaW5mby0mZ3Q7c2VfaW5mby5zZV9hY3RpdmUpCi0JCXRpbWVyX2RlbGV0ZV9zeW5jKCZhbXA7aW5mby0mZ3Q7c2VfaW5mby5zZV9hY3RpdmVfdGltZXIpOwomIzQzOwl0aW1lcl9zaHV0ZG93bl9zeW5jKCZhbXA7aW5mby0mZ3Q7c2VfaW5mby5id2lfdGltZXIpOwomIzQzOwlpZiAoeGNoZygmYW1wO2luZm8tJmd0O3NlX2luZm8uYndpX2FjdGl2ZSwgZmFsc2UpKQomIzQzOwkJaW5mby0mZ3Q7c2VfaW5mby5jYihpbmZvLSZndDtzZV9pbmZvLmNiX2NvbnRleHQsIE5VTEwsIDAsIC1FTk9ERVYpOwogCi0JaW5mby0mZ3Q7c2VfaW5mby5zZV9hY3RpdmUgPSBmYWxzZTsKLQlpbmZvLSZndDtzZV9pbmZvLmJ3aV9hY3RpdmUgPSBmYWxzZTsKJiM0MzsJdGltZXJfc2h1dGRvd25fc3luYygmYW1wO2luZm8tJmd0O3NlX2luZm8uc2VfYWN0aXZlX3RpbWVyKTsKJiM0MzsJeGNoZygmYW1wO2luZm8tJmd0O3NlX2luZm8uc2VfYWN0aXZlLCBmYWxzZSk7CiYjNDM7CWNvbXBsZXRlKCZhbXA7aW5mby0mZ3Q7c2VfaW5mby5yZXFfY29tcGxldGlvbik7CiB9CiBFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9kZWluaXQpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaCBiL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oCmluZGV4IDY2NGQ1MDU4ZTY2ZTAuLjc1NGE2NzE4NTY0MjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oCkBAIC04Miw2ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgbmNpX29wcyB7CiAJCQkJICAgIHN0cnVjdCBza19idWZmICpza2IpOwogCXZvaWQgICgqaGNpX2NtZF9yZWNlaXZlZCkoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHU4IHBpcGUsIHU4IGNtZCwKIAkJCQkgIHN0cnVjdCBza19idWZmICpza2IpOwomIzQzOwl2b2lkICAoKnByZV91bnJlZ2lzdGVyKShzdHJ1Y3QgbmNpX2RldiAqbmRldik7CiAKIAljb25zdCBzdHJ1Y3QgbmNpX2RyaXZlcl9vcHMgKnByb3Bfb3BzOwogCXNpemVfdCBuX3Byb3Bfb3BzOwpkaWZmIC0tZ2l0IGEvbmV0L25mYy9uY2kvY29yZS5jIGIvbmV0L25mYy9uY2kvY29yZS5jCmluZGV4IDVmNDZjNGI1NzIwZjYuLjg2Mjg2YzA3NjVmMjYgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbmNpL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL25jaS9jb3JlLmMKQEAgLTEzMjEsNiAmIzQzOzEzMjEsOSBAQCB2b2lkIG5jaV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldikKIAogCW5mY191bnJlZ2lzdGVyX3Jma2lsbChuZGV2LSZndDtuZmNfZGV2KTsKIAomIzQzOwlpZiAobmRldi0mZ3Q7b3BzLSZndDtwcmVfdW5yZWdpc3RlcikKJiM0MzsJCW5kZXYtJmd0O29wcy0mZ3Q7cHJlX3VucmVnaXN0ZXIobmRldik7CiYjNDM7CiAJLyogVGhpcyBzZXRfYml0IGlzIG5vdCBwcm90ZWN0ZWQgd2l0aCBzcGVjaWFsaXplZCBiYXJyaWVyLAogCSAqIEhvd2V2ZXIsIGl0IGlzIGZpbmUgYmVjYXVzZSB0aGUgbXV0ZXhfbG9jaygmYW1wO25kZXYtJmd0O3JlcV9sb2NrKTsKIAkgKiBpbiBuY2lfY2xvc2VfZGV2aWNlKCkgd2lsbCBoZWxwIHRvIGVtaXQgb25lLgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9uZXRsaW5rLmMgYi9uZXQvbmZjL25ldGxpbmsuYwppbmRleCAwYzU4ODI0Y2IxNTBkLi4zMTMyZjdhOTBhYjlmIDEwMDY0NAotLS0gYS9uZXQvbmZjL25ldGxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL25ldGxpbmsuYwpAQCAtMTQyNiw2ICYjNDM7MTQyNiwxMSBAQCBzdGF0aWMgaW50IG5mY19zZV9pbyhzdHJ1Y3QgbmZjX2RldiAqZGV2LCB1MzIgc2VfaWR4LAogCiAJZGV2aWNlX2xvY2soJmFtcDtkZXYtJmd0O2Rldik7CiAKJiM0MzsJaWYgKGRldi0mZ3Q7c2h1dHRpbmdfZG93bikgewomIzQzOwkJcmMgPSAtRU5PREVWOwomIzQzOwkJZ290byBlcnJvcjsKJiM0MzsJfQomIzQzOwogCWlmICghZGV2aWNlX2lzX3JlZ2lzdGVyZWQoJmFtcDtkZXYtJmd0O2RldikpIHsKIAkJcmMgPSAtRU5PREVWOwogCQlnb3RvIGVycm9yOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODE3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgTkZDIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIE5GQyBzdWJzeXN0ZW0uIEl0IHNlZW1zIGxpa2UgaXQgZm9jdXNlcyBvbiB0aGUgYHN0LW5jaWAgZHJpdmVyLCBpbnRyb2R1Y2luZyBhIGBwcmVfdW5yZWdpc3RlcmAgY2FsbGJhY2sgaW4gYG5jaV9vcHNgIHNwZWNpZmljYWxseSBmb3IgdGhhdCBkcml2ZXIsIGFuZCB0aGVuIG1vZGlmaWVzIHNldmVyYWwgZnVuY3Rpb25zIChgc3RfbmNpX3NlX2lvYCwgYHN0X25jaV9zZV93dF90aW1lb3V0YCwgYW5kIGBzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkYCkgdG8gdXNlIGB4Y2hnYCBmb3IgdGhlIGBid2lfYWN0aXZlYCBmbGFnLiBUaGVyZSYjMzk7cyBhbHNvIGEgY2hhbmdlIHRvIGBuZmNfc2VfaW9gIGluIGBuZXQvbmZjL25ldGxpbmsuY2AsIHdoaWNoIGlzIHRoZSBpbnRlcmVzdGluZyBiaXQuIFRoZSBwYXRjaCBhZGRzIGEgYGRldi0mZ3Q7c2h1dHRpbmdfZG93bmAgY2hlY2suCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyBhIHVzZWZ1bCB0YXJnZXQgZm9yIGZ1enppbmcuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBrZXkgaXMgcmVhY2hhYmlsaXR5LiBJIHNlZSB0aGF0IGBuZmNfc2VfaW9gIGlzIGNhbGxlZCB0aHJvdWdoIG5ldGxpbmssIHdoaWNoIHN1Z2dlc3RzIHRoYXQgdGhlIGVudGlyZSBORkMgc3Vic3lzdGVtLCBpbmNsdWRpbmcgYHN0LW5jaWAsIGlzIHBvdGVudGlhbGx5IHJlYWNoYWJsZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB3aGV0aGVyIHRoZSBgc3QtbmNpYCBkcml2ZXIgaXRzZWxmIGNhbiBiZSBlbXVsYXRlZCBvciBlYXNpbHkgcmVhY2hlZCwgYnV0IHRoZW4gaXQgaGl0cyBtZS4gYG5mY19zZV9pb2AgaXMgaW4gYG5ldC9uZmMvbmV0bGluay5jYCwgd2hpY2ggaXMgKipjb3JlKiogTkZDIGNvZGUsIG5vdCBkcml2ZXItc3BlY2lmaWMhIFRoYXQmIzM5O3MgZXhjZWxsZW50LgoKU28sIHRoaXMgcGF0Y2ggdG91Y2hlcyBib3RoIGBuZXQvbmZjL25ldGxpbmsuY2AgYW5kIGBuZXQvbmZjL25jaS9jb3JlLmNgIOKAkyBtYWpvciBwYXJ0cyBvZiB0aGUgTkZDIGNvcmUuIFdlIGtub3cgdGhlIGNvcmUgTkZDIHN1YnN5c3RlbSBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZywgYW5kIGl0JiMzOTtzIGFscmVhZHkgZnV6emVkIGluIHN5emthbGxlci4gVGhlIHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHRoZSBjaGFuZ2VzIGludHJvZHVjZWQgbWFrZSB0aGlzIHBhdGNoIGEgd29ydGh3aGlsZSBuZXcgdGFyZ2V0LiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBpdCB3aWxsIGJlIGZ1enplZCwgZ2l2ZW4gdGhhdCBuZXRsaW5rIGludGVyZmFjZSBpcyBpbnZvbHZlZCwgb3IgdGhhdCB3ZSBjYW4gZ2VuZXJhdGUgZnV6emVyIGlucHV0cyBmb3IgdmlydHVhbCBkZXZpY2VzLiBCdXQsIGhhbmcgb24uLi4gZG9lc24mIzM5O3Qgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGFscmVhZHkgaW4gcGxhY2UgZm9yIE5GQyBzZXR1cCwgcGVyaGFwcyBgc3l6X25jaV9zZXR1cGAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0LiBUaGF0IHdvdWxkIGJlIHRoZSBiZXN0IGluZGljYXRpb24gb2Ygd2hldGhlciB3ZSBjYW4gZWFzaWx5IGludGVncmF0ZSB0aGlzIHBhdGNoIGludG8gZXhpc3RpbmcgZnV6emluZyBpbmZyYXN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuY2lfcmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL2ZkcC9mZHAuYz02OTk9aW50IGZkcF9uY2lfcHJvYmUoc3RydWN0IGZkcF9pMmNfcGh5ICpwaHksIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNzM3LVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjczODpcdHIgPSBuY2lfcmVnaXN0ZXJfZGV2aWNlKG5kZXYpO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTczOS1cdGlmIChyKVxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jPTkyPXN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKm5mY21ydmxfbmNpX3JlZ2lzdGVyX2RldihlbnVtIG5mY21ydmxfcGh5IHBoeSxcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0xNTYtXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzoxNTc6XHRyYyA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UocHJpdi1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTE1OC1cdGlmIChyYykge1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM6MTU5Olx0XHRuZmNfZXJyKGRldiwgXCYjMzQ7bmNpX3JlZ2lzdGVyX2RldmljZSBmYWlsZWQgJWRcXG5cJiMzNDssIHJjKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTE2MC1cdFx0Z290byBlcnJvcl9md19kbmxkX2RlaW5pdDtcbi0tXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0xMzU9aW50IG54cF9uY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTE2OS1cdG5jaV9zZXRfZHJ2ZGF0YShpbmZvLVx1MDAzZW5kZXYsIGluZm8pO1xuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6MTcwOlx0ciA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UoaW5mby1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTE3MS1cdGlmIChyIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZmMvczNmd3JuNS9jb3JlLmM9MTYwPWludCBzM2Z3cm41X3Byb2JlKHN0cnVjdCBuY2lfZGV2ICoqbmRldiwgdm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3MzZndybjUvY29yZS5jLTE4NC1cbmRyaXZlcnMvbmZjL3MzZndybjUvY29yZS5jOjE4NTpcdHJldCA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UoaW5mby1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmZjL3MzZndybjUvY29yZS5jLTE4Ni1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTExMz1pbnQgc3RfbmNpX3Byb2JlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgaW50IHBoeV9oZWFkcm9vbSxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTE0OS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTUwOlx0ciA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UobmRsYy1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTUxLVx0aWYgKHIpIHtcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jPTEzMz1zdGF0aWMgaW50IHZpcnR1YWxfbmNpZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNTItXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE1MzpcdHJldCA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UodmRldi1cdTAwM2VuZGV2KTtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTU0LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmluY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oPTI4MD12b2lkIG5jaV9mcmVlX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldik7XG5pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaDoyODE6aW50IG5jaV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpO1xuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmgtMjgyLXZvaWQgbmNpX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcbi0tXG5uZXQvbmZjL25jaS9jb3JlLmM9MTI0ND1FWFBPUlRfU1lNQk9MKG5jaV9mcmVlX2RldmljZSk7XG4tLVxubmV0L25mYy9uY2kvY29yZS5jLTEyNDYtLyoqXG5uZXQvbmZjL25jaS9jb3JlLmM6MTI0NzogKiBuY2lfcmVnaXN0ZXJfZGV2aWNlIC0gcmVnaXN0ZXIgYSBuY2kgZGV2aWNlIGluIHRoZSBuZmMgc3Vic3lzdGVtXG5uZXQvbmZjL25jaS9jb3JlLmMtMTI0OC0gKlxuLS1cbm5ldC9uZmMvbmNpL2NvcmUuYy0xMjUwLSAqL1xubmV0L25mYy9uY2kvY29yZS5jOjEyNTE6aW50IG5jaV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG5uZXQvbmZjL25jaS9jb3JlLmMtMTI1Mi17XG4tLVxubmV0L25mYy9uY2kvY29yZS5jLTEzMTAtfVxubmV0L25mYy9uY2kvY29yZS5jOjEzMTE6RVhQT1JUX1NZTUJPTChuY2lfcmVnaXN0ZXJfZGV2aWNlKTtcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMzEyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MDIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBgdmlydHVhbF9uY2lkZXYuY2AgLSBQb3RlbnRpYWwgR29sZG1pbmUgZm9yIE5DSSBFbXVsYXRpb24gYW5kIEZ1enppbmcqKgoKUmlnaHQsICp2aXJ0dWFsX25jaWRldi5jKiEgVGhhdCYjMzk7cyBleGNlbGxlbnQgbmV3cy4gVGhlIGV4aXN0ZW5jZSBvZiB0aGlzIGZpbGUgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgdGhhdCB3ZSBoYXZlIGEgbWVjaGFuaXNtIGZvciBlbXVsYXRpbmcgYW5kIGZ1enppbmcgTkNJIGRldmljZXMuIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgZm9yIGRlZXBlciBzZWN1cml0eSBhbmFseXNpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1vZHVsZSAqYWN0dWFsbHkqIGRvZXMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgaG93IHRoaXMgZW11bGF0aW9uIGlzIGltcGxlbWVudGVkLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWUgd2Vha25lc3NlcyBvciBpbnRlcmVzdGluZyBiZWhhdmlvcnMgd2l0aGluIGl0cyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXJ0dWFsX25jaWRldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtNQUlOVEFJTkVSUz0xOTExOD1TOlx0U3VwcG9ydGVkXG5NQUlOVEFJTkVSUzoxOTExOTpGOlx0ZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuY1xuTUFJTlRBSU5FUlMtMTkxMjAtRjpcdHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25jaS9cbi0tXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTkZDX1NUOTVIRilcdCYjNDM7PSBzdDk1aGYvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTkZDX1ZJUlRVQUxfTkNJKVx0JiM0Mzs9IHZpcnR1YWxfbmNpZGV2Lm9cbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jPTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyB2aXJ0dWFsX25jaV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04MS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6ODI6c3RhdGljIHNzaXplX3QgdmlydHVhbF9uY2lkZXZfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtODMtXHRcdFx0XHQgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTExMi1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTEzOnN0YXRpYyBzc2l6ZV90IHZpcnR1YWxfbmNpZGV2X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMTQtXHRcdFx0XHQgICAgY29uc3QgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTEzMi1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTMzOnN0YXRpYyBpbnQgdmlydHVhbF9uY2lkZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTM0LXtcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE2My1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTY0OnN0YXRpYyBpbnQgdmlydHVhbF9uY2lkZXZfY2xvc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE2NS17XG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNzUtXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE3NjpzdGF0aWMgbG9uZyB2aXJ0dWFsX25jaWRldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTc3LVx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTkxLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTI6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmlydHVhbF9uY2lkZXZfZm9wcyA9IHtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTkzLVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NDpcdC5yZWFkID0gdmlydHVhbF9uY2lkZXZfcmVhZCxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk1Olx0LndyaXRlID0gdmlydHVhbF9uY2lkZXZfd3JpdGUsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NjpcdC5vcGVuID0gdmlydHVhbF9uY2lkZXZfb3BlbixcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk3Olx0LnJlbGVhc2UgPSB2aXJ0dWFsX25jaWRldl9jbG9zZSxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk4Olx0LnVubG9ja2VkX2lvY3RsID0gdmlydHVhbF9uY2lkZXZfaW9jdGxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTk5LX07XG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYz0yMDE9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIG1pc2NkZXYgPSB7XG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0yMDMtXHQubmFtZSA9IFwmIzM0O3ZpcnR1YWxfbmNpXCYjMzQ7LFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoyMDQ6XHQuZm9wcyA9IFx1MDAyNnZpcnR1YWxfbmNpZGV2X2ZvcHMsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIwNS1cdC5tb2RlID0gMDYwMCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDIxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGUgc2l0dWF0aW9uOgoKKipBbmFseXppbmcgdGhlIGBzdC1uY2lgIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBzbyB0aGUgcGF0Y2ggaXMgcGlucG9pbnRlZCBkaXJlY3RseSBhdCB0aGUgYHN0LW5jaWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYm90aCBgY29yZS5jYCBhbmQgYHNlLmNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmZjL3N0LW5jaS9gIGRpcmVjdG9yeS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhlIGBzdC1uY2lgIGRyaXZlciBpbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50IGlmIGl0JiMzOTtzIHZpcnR1YWxpemVkPyBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGh5cGVydmlzb3IgYW5kIGhvdyBJL08gaXMgaGFuZGxlZC4KClRoZSBxdWljayBpbnZlc3RpZ2F0aW9uIHJldmVhbHMgdGhhdCB0aGlzIGRyaXZlciByZWxpZXMgb24gZWl0aGVyIEkyQyBvciBTUEkuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBub3cgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZS4gVGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmZjL3N0LW5jaS9gIGZpbGVzIHRoZW1zZWx2ZXMgYW5kIHNlZSB3aGF0JiMzOTtzIGNoYW5nZWQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgaW4gdGhvc2UgY29udGV4dHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7Y29yZS5jJiMzNDssCiAgICAmIzM0O2kyYy5jJiMzNDssCiAgICAmIzM0O25kbGMuYyYjMzQ7LAogICAgJiMzNDtuZGxjLmgmIzM0OywKICAgICYjMzQ7c2UuYyYjMzQ7LAogICAgJiMzNDtzcGkuYyYjMzQ7LAogICAgJiMzNDtzdC1uY2kuaCYjMzQ7LAogICAgJiMzNDt2ZW5kb3JfY21kcy5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDAzCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNzk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIGZvciBORkMgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7c3QtbmNpLCB0aGF0JiMzOTtzIGFuIFNUTWljcm9lbGVjdHJvbmljcyBORkMgZHJpdmVyLCByaWdodD8mIzM0OyBJdCB1c2VzIEkyQyBvciBTUEksIHR5cGljYWwgZm9yIE5GQy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gU3l6a2FsbGVyIHJlbGlhYmx5IGZ1enogdGhvc2UgaW50ZXJmYWNlcz8gSSBrbm93IGl0IGNhbiBmdXp6IEkyQywgZ2VuZXJhbGx5IHZpYSBgL2Rldi9pMmMtKmAgZGV2aWNlcywgYnV0IGl0IG9mdGVuIG5lZWRzIHNvbWUgc3BlY2lhbCBzZXR1cCwgYSBwc2V1ZG8tZGV2aWNlLCBvciBpbnN0YW50aWF0aW9uIHRocm91Z2ggdGhlIGRldmljZSB0cmVlIG9yIHN5c2ZzLiBJdCBjYW4gYWxzbyBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcyB2aWEgbmV0bGluayBvciBzeXNmcyB3aGljaCBvcGVucyBkb29ycy4KCkJ1dCB3YWl0LCBgc3QtbmNpYCBpcyBhICpwaHlzaWNhbCogZGV2aWNlIGRyaXZlci4gVGhhdOKAmXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBDYW4gSSByZWFjaCBzcGVjaWZpYyBmdW5jdGlvbnMgaW4gaXQgd2l0aG91dCB0aGUgaGFyZHdhcmU/IExldCYjMzk7cyB6b29tIGluIG9uIGBzdF9uY2lfc2VfaW9gLiBJdCYjMzk7cyBwYXJ0IG9mIHRoZSBgc3RfbmNpX29wc2Agc3RydWN0dXJlLCBkZWZpbmVkIGluIGBzdC1uY2kvY29yZS5jYC4gSG1tLCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBuZXQvbmZjL25jaS9jb3JlLmNgIGFuZCBgbmV0L25mYy9uZXRsaW5rLmNgLiBUaGF0JiMzOTtzIGludHJpZ3VpbmchIGBuZXQvbmZjL25ldGxpbmsuY2AgaXMgY29yZSBORkMgY29kZSwgYW5kLCBjcnVjaWFseSwgaXQmIzM5O3MgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLgoKVGhlIGNoYW5nZSBpbiBgbmV0L25mYy9uZXRsaW5rLmNgLCBhZGRpbmcgYSBgc2h1dHRpbmdfZG93bmAgY2hlY2sgaW4gYG5mY19zZV9pb2AgKGNhbGxlZCBieSB0aGUgYE5GQ19DTURfU0VfSU9gIG5ldGxpbmsgY29tbWFuZCksIGNvbmZpcm1zIHRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHRoZXJlZm9yZSBmdXp6YWJsZS4gVGhhdCYjMzk7cyBhIHRhcmdldCEKCkFsc28sIHRoZSBhZGRpdGlvbiBpbiBgbmV0L25mYy9uY2kvY29yZS5jYCBpbnNpZGUgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAsICh3aGljaCBpcyBjYWxsZWQgd2hlbiBhbiBOQ0kgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCksIHNlZW1zIHJlYWNoYWJsZSBhcyB3ZWxsIChsaWtlIHdoZW4gY2xvc2luZyBgL2Rldi92aXJ0dWFsX25jaWApLgoKU28sIHdoaWxlIHRoZSBjaGFuZ2VzICp3aXRoaW4qIHRoZSBgc3QtbmNpYCBkcml2ZXIgaXRzZWxmIG1pZ2h0IHJlcXVpcmUgdGhlIGFjdHVhbCBoYXJkd2FyZSwgdGhvc2UgY29yZSBORkMgbW9kaWZpY2F0aW9ucz8gVGhvc2UgYXJlIGZhaXIgZ2FtZS4KCkhhbmcgb27igKZ0aGlzIHBhdGNoIGlzIGEgU3l6Ym90IGZpeCEgSWYgU3l6Ym90IGZvdW5kIGEgYnVnLCB0aGF0ICptZWFucyogaXQmIzM5O3MgcmVhY2hpbmcgdGhpcyBjb2RlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgU3l6Ym90IGlzIHRyaWdnZXJpbmcgYHN0LW5jaWAuIERvZXMgU3l6a2FsbGVyIGhhdmUgc3BlY2lmaWMgZGVzY3JpcHRpb25zIGZvciBgc3QtbmNpYCwgb3IgaXMgaXQgYmVpbmcgaW5zdGFudGlhdGVkIHNvbWVob3c/IEkga25vdyBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHdpdGggdGhlIHJpZ2h0IHN5eiBjYWxscywgYnV0IEkgZG8gbm90IHNlZSBhbiBpbnN0YW50aWF0aW9uIHVzaW5nIGBzeXpfaTJjX3NldHVwYC4gSXMgaXQgdGhyb3VnaCBzb21lIG90aGVyIG1ldGhvZD8gTm8uIEFuZCBpdCBjYW4mIzM5O3QgYmUgYHZpcnR1YWxfbmNpZGV2YCBzaW5jZSB0aGF0IHVzZXMgdGhlIGB2aXJ0dWFsX25jaV9vcHNgLCBub3QgYHN0X25jaV9vcHNgLiBOZWVkIHRvIGNoZWNrIGBzdF9uY2lfb3BzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX2RyaXZlcl9vcHMgc3RfbmNpX3Byb3Bfb3BzW10gPSB7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy05NC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6OTU6c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHN0X25jaV9vcHMgPSB7XG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTk2LVx0LmluaXQgPSBzdF9uY2lfaW5pdCxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTExMz1pbnQgc3RfbmNpX3Byb2JlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgaW50IHBoeV9oZWFkcm9vbSxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEzMy1cdEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKHN0X25jaV9wcm9wX29wcykgXHUwMDNlIE5DSV9NQVhfUFJPUFJJRVRBUllfQ01EKTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTM0Olx0bmRsYy1cdTAwM2VuZGV2ID0gbmNpX2FsbG9jYXRlX2RldmljZShcdTAwMjZzdF9uY2lfb3BzLCBwcm90b2NvbHMsXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEzNS1cdFx0XHRcdFx0cGh5X2hlYWRyb29tLCBwaHlfdGFpbHJvb20pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTE4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgc3l6Ym90LURpc2NvdmVyZWQgQnVnIGluIHN0LW5jaSoqCgpBbHJpZ2h0LCBzbyBzeXpib3QgZmxhZ2dlZCBhIGJ1ZyB3aXRoaW4gYHN0LW5jaWAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaG93IGRpZCBzeXpib3QgZXZlbiAqdHJpZ2dlciogdGhpcz8gV2hhdCB3YXMgdGhlIGVudHJ5IHBvaW50PyBNeSBndXQgZmVlbGluZyBpcyBzdWdnZXN0aW5nIGEgZnVuY3Rpb24gbGlrZSBgc3l6X2kyY19zZXR1cGAuIEl0IHNvdW5kcyBwbGF1c2libGUsIGdpdmVuIHRoZSBJMkMgY29udGV4dC4gQnV0IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBodW5jaC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgYHN5el9pMmNfc2V0dXBgIGlzLCBpbiBmYWN0LCBldmVuIHBhcnQgb2YgdGhlIGtlcm5lbCBjYWxsczsgdGhlIHByZXNlbmNlIG9mIGBzeXpfaTJjX3NldHVwYCB3b3VsZCByZWFsbHkgdmFsaWRhdGUgdGhpcyB0aGVvcnkuIFRoZW4sIEkgY2FuIHN0YXJ0IGxvb2tpbmcgYXQgdGhlIGNhbGwgYW5kIGdvIGZyb20gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6X2kyY19zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNzgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSTJDIERldmljZSBJbnN0YW50aWF0aW9uIEludmVzdGlnYXRpb24qKgoKT2theSwgbm8sIGhvbGQgb24uLi4gd2hhdCBhYm91dCB0aGF0IGBzeXpfbmNpX3NldHVwYCBmdW5jdGlvbj8gSG1tLCByaWdodCwgY2FuJiMzOTt0IGp1c3QgYGdyZXBwZXJgIGZvciBhbnl0aGluZyBzdGFydGluZyB3aXRoIGBzeXpfYCwgdGhhdCYjMzk7cyBnb2luZyB0byBiZSBhIG1lc3MuIEJ1dCB3YWl0IGEgc2Vjb25kLi4uIGlzbiYjMzk7dCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgc3l6Ym90IGFuZCBJMkMgZGV2aWNlcz8gRGlkIGl0IHVzZSB0aGUgYEkyQ19ORVdfREVWSUNFYCBpb2N0bCBvbiBgL2Rldi9pMmMtKmA/IE5vLCB0aGF0IGNhbiYjMzk7dCBiZSByaWdodC4uLiBpc24mIzM5O3QgdGhhdCBhIHN5c2ZzIHRoaW5nLCBvciBzb21ldGhpbmcgc2ltaWxhcj8gQWN0dWFsbHksIEkgKnRoaW5rKiBgSTJDX1NMQVZFYCBpcyBhbiBpb2N0bCwgYnV0IHRoYXQmIzM5O3Mgb2J2aW91c2x5IGRpZmZlcmVudC4KCkFoYSEgTm93IEkgcmVtZW1iZXIuLi4gSTJDIGRldmljZXMgKmFyZSogaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnMhIFNvbWV0aGluZyBsaWtlIGBlY2hvIHN0LW5jaSAmZ3Q7IC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0wL25ld19kZXZpY2VgLiBZZXMsICp0aGF0JiMzOTtzKiBpdCEgU3l6a2FsbGVyIGRvZXMgZXhhY3RseSB0aGF0IHRvIGNyZWF0ZSB0aGUgZGV2aWNlcyEgU28sIGl0JiMzOTtzIHdyaXRpbmcgdG8gc3lzZnMgdG8gaW5zdGFudGlhdGUgdGhlIEkyQyBkZXZpY2VzLgoKQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyB0byBjaGVjayBpZiBgc3QtbmNpYCBhY3R1YWxseSAqaXMqIGFuIEkyQyBkcml2ZXIuLi4gSSBiZXQgdGhhdCYjMzk7cyB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdF9uY2lfaTJjX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM9Mjc4PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0X25jaV9pMmNfbWF0Y2gpO1xuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI3OS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzoyODA6c3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHN0X25jaV9pMmNfZHJpdmVyID0ge1xuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI4MS1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI4OS19O1xuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjI5MDptb2R1bGVfaTJjX2RyaXZlcihzdF9uY2lfaTJjX2RyaXZlcik7XG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjkxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDExMAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNULU5DSSBEcml2ZXIgRml4KioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgYW4gSTJDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgc3QtbmNpYCBkcml2ZXIuIEdvb2QsIEkgdW5kZXJzdGFuZCBob3cgU3l6a2FsbGVyIGNhbiBpbnRlcmFjdCB3aXRoIGl0OyBpdCB1c2VzIGBzeXNmc2AgYW5kIGBuZXdfZGV2aWNlYCBvbiBJMkMgYWRhcHRlcnMgc3VjaCBhcyBgaTJjLXN0dWJgIG9yIGBpMmMtZGV2YC4gVGhhdCBtZWFucyB0aGUgcGF0aCB0byB0cmlnZ2VyaW5nIGBzdC1uY2lgIGlzIGNsZWFyLgoKVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhIGZpeCBmb3IgYSByYWNlIGNvbmRpdGlvbiB3aXRoaW4gYHN0LW5jaWAuIEl0IGFsc28gYWRkcyBhIGBwcmVfdW5yZWdpc3RlcmAgY2FsbGJhY2sgdG8gdGhlIGBuY2lfb3BzYCBzdHJ1Y3R1cmUsIHdoaWNoIG1ha2VzIG1lIHdvbmRlciBhYm91dCB0aGUgc3BlY2lmaWMgY29uY3VycmVuY3kgaXNzdWUgdGhleSYjMzk7cmUgYWRkcmVzc2luZy4gQWRkaXRpb25hbGx5LCB0aGVyZeKAmXMgYSBjaGVjayBhZGRlZCB3aXRoaW4gYG5mY19zZV9pb2AgaW4gYG5ldC9uZmMvbmV0bGluay5jYCwgc28gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0bGluayBpbnRlcmFjdGlvbiBwbGF5cyBpbnRvIHRoaXMuCgpOZXh0LCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBjb25maXJtIHRoZSBuZWNlc3NhcnkgY29uZmlnIG9wdGlvbnM6IGBDT05GSUdfTkZDX1NUX05DSWAgZm9yIHRoZSBkcml2ZXIgaXRzZWxmLCBhbmQgZWl0aGVyIGBDT05GSUdfTkZDX1NUX05DSV9JMkNgIG9yIGBDT05GSUdfTkZDX1NUX05DSV9TUElgIGRlcGVuZGluZyBvbiB0aGUgaW50ZW5kZWQgYnVzLiBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWdgIGFuZCBgZHJpdmVycy9uZmMvS2NvbmZpZ2AgZm9yIHRoZSBwcmVjaXNlIGRldGFpbHMgb24gdGhlc2Ugb3B0aW9ucyBhbmQgYW55IGRlcGVuZGVuY2llcy4gRnJvbSB0aGVyZSBJJiMzOTtsbCBiZSBhYmxlIHRvIHNlZSB0aGUgZnVsbCBzY29wZSBvZiB3aGF0JiMzOTtzIGludm9sdmVkIHdpdGggdGhpcyBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfU1RfTkNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1RfTkNJXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy04LVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6OTpjb25maWcgTkZDX1NUX05DSV9JMkNcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIFNUIE5DSSBORkMgZHJpdmVyIChJMkMpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjAtXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyMTpjb25maWcgTkZDX1NUX05DSV9TUElcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIFNUIE5DSSBORkMgZHJpdmVyIChTUEkpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTEyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBORkNfU1RfTkNJX0kyQyBEZXBlbmRlbmNpZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBORkNfU1RfTkNJX0kyQ2AgbW9kdWxlLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIG1lYW5zIGRpZ2dpbmcgaW50byB0aGUgY29kZSwgcG9zc2libHkgbG9va2luZyBhdCBoZWFkZXIgZmlsZXMsIGFuZCB0cmFjaW5nIGJhY2sgZnJvbSBgTkZDX1NUX05DSV9JMkNgIHRvIGlkZW50aWZ5IHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgaXQgcmVsaWVzIHVwb24uIElzIGl0IHN0cmljdGx5IGhhcmR3YXJlLWRlcGVuZGVudCwgb3IgZG9lcyBpdCBhYnN0cmFjdCBzb21lIGxvd2VyLWxldmVsIGludGVyZmFjZXM/IEFyZSB0aGVyZSBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIHByb3RvY29scyBpdCBhc3N1bWVzIGFyZSBpbiBwbGFjZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciBJJiMzOTttIGRlYWxpbmcgd2l0aCBhIGhpZ2gtbGV2ZWwgZHJpdmVyIG9yIHNvbWV0aGluZyBtb3JlIGdyYW51bGFyLiBBcmUgdGhlcmUgc3BlY2lmaWMgcmVnaXN0ZXIgbWFwcGluZ3MgSSBuZWVkIHRvIGtub3c/IFdoYXQgb3RoZXIgbW9kdWxlcyBwcm92aWRlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdGllcyB0aGF0IGl0IG5lZWRzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBib3R0bGVuZWNrcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFVsdGltYXRlbHksIEkmIzM5O20gdHJ5aW5nIHRvIGVzdGFibGlzaCBpdHMgcG9zaXRpb24gd2l0aGluIHRoZSBicm9hZGVyIE5GQyBzdGFjayBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBwcm9wZXIgY29udGV4dCB3aGVuIGRlYWxpbmcgd2l0aCwgcmV2aWV3aW5nIG9yIHBvc3NpYmx5IGRlYnVnZ2luIHRoZSBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTkZDX1NUX05DSVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdGhlbHBcbiAgIDU6XHRcdCAgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBOQ0kgY2hpcHMgY29yZSBkcml2ZXIuIEl0IGltcGxlbWVudHMgdGhlIGNoaXBzZXRcbiAgIDY6XHRcdCAgTkNJIGxvZ2ljIGFuZCBob29rcyBpbnRvIHRoZSBORkMga2VybmVsIEFQSXMuIFBoeXNpY2FsIGxheWVycyB3aWxsXG4gICA3Olx0XHQgIHJlZ2lzdGVyIGFnYWluc3QgaXQuXG4gICA4Olx0XG4gICA5Olx0Y29uZmlnIE5GQ19TVF9OQ0lfSTJDXG4gIDEwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcJiMzNDtcbiAgMTE6XHRcdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgSTJDXG4gIDEyOlx0XHRzZWxlY3QgTkZDX1NUX05DSVxuICAxMzpcdFx0aGVscFxuICAxNDpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIEkyQyBpbnRlcmZhY2UgdG8gdGhlXG4gIDE1Olx0XHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cbiAgMTY6XHRcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgaTJjIGJ1cy5cbiAgMTc6XHRcbiAgMTg6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBzdC1uY2lfaTJjLlxuICAxOTpcdFx0ICBTYXkgTiBpZiB1bnN1cmUuXG4gIDIwOlx0XG4gIDIxOlx0Y29uZmlnIE5GQ19TVF9OQ0lfU1BJXG4gIDIyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcJiMzNDtcbiAgMjM6XHRcdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgU1BJXG4gIDI0Olx0XHRzZWxlY3QgTkZDX1NUX05DSVxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIFNQSSBpbnRlcmZhY2UgdG8gdGhlXG4gIDI3Olx0XHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cbiAgMjg6XHRcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgc3BpIGJ1cy5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBzdC1uY2lfc3BpLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY0NQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgbmVlZCBmb3IgYE5GQ19OQ0lgLCBgSTJDYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuIFN0YW5kYXJkIGNvbXBvbmVudHMsIG5vIHN1cnByaXNlcyB0aGVyZSwgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLiBCdXQgd2FpdC4uLiB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCBhbHNvIHRvdWNoZXMgYG5ldC9uZmMvbmV0bGluay5jYC4gVGhhdCYjMzk7cyBwYXJ0IG9mIHRoZSAqY29yZSogTkZDIHN1YnN5c3RlbS4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgbm90IGp1c3QgZGVhbGluZyB3aXRoIGEgcGVyaXBoZXJhbCBkcml2ZXI7IHRoaXMgcGF0Y2ggaGFzIHBvdGVudGlhbCBzeXN0ZW0td2lkZSBpbXBsaWNhdGlvbnMuIEJlZm9yZSBJIGRpdmUgZGVlcGVyLCBJIHNob3VsZCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIGNoYW5nZXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYG5ldC9uZmMvS2NvbmZpZ2AuIFNlZSB3aGF0IG9wdGlvbnMgYXJlIGJlaW5nIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBjaGFuZ2UgaW1wbGljYXRpb25zLiBUaGlzIGNvdWxkIGJlIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3Igb3IgYSBtaW5vciB0d2VhaywgZGVwZW5kaW5nIG9uIHRoZSBLY29uZmlnIGZpbGUuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWctNS1cbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXG5uZXQvbmZjL0tjb25maWctNy1cdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbi0tXG5uZXQvbmZjL0tjb25maWctMTYtXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXG5uZXQvbmZjL0tjb25maWctMTgtXHRkZXBlbmRzIG9uIE5GQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA1MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVjb2RpbmcgdGhlIE5GQyBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgTkZDYCBjb25maWd1cmF0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gVGhlbiwgSSBzZWUgdGhlIHBhdGNoIGlzIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYG5ldC9uZmMvbmNpL2NvcmUuY2AuIFRoaXMgdGVsbHMgbWUgaW1tZWRpYXRlbHkgdGhhdCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0aGUgTmV0d29yayBDb250cm9sbGVyIEludGVyZmFjZSwgb3IgYE5GQ19OQ0lgIGFzIHRoZSBjb2RlIHdvdWxkIHJlY29nbml6ZSBpdCwgcG9ydGlvbiBvZiB0aGUgTkZDIHN0YWNrLiBUaGlzIGBjb3JlLmNgIGZpbGUgaXMgdGhlIGhlYXJ0IG9mIHRoZSBOQ0kgaW1wbGVtZW50YXRpb24uIEtub3dpbmcgdGhpcyBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIG9mIHRoZSBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucyBhbmQgdGhlaXIgbGlrZWx5IGltcGFjdCBvbiB0aGUgb3ZlcmFsbCBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgcGF0Y2ggdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGNoYW5nZXMsIGJ1dCB0aGlzIGluaXRpYWwgY29udGV4dCBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSByYXRpb25hbGUgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfTkNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cdGRlcGVuZHMgb24gTkZDXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTIzLVxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXG5uZXQvbmZjL25jaS9LY29uZmlnLTI1LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBUVFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MTMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBTY29wZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgZmlndXJpbmcgb3V0IGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBuYWlsIGRvd24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBCYXNlZCBvbiB0aGUgY29kZSBjaGFuZ2VzLCBpdCBsb29rcyBsaWtlIHdlIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSBlbmFibGVkOiBgTkZDYCwgYE5GQ19OQ0lgLCBgSTJDYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuIFdhaXQsIHdhaXQsIGBJMkNgIGlzIHByZXR0eSBzdGFuZGFyZCBmb3Igc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb25zLCBidXQgaXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBsaXN0IGl0IG91dCBqdXN0IHRvIGJlIHN1cmUuIEFscmlnaHQsIGxldCYjMzk7cyBpbmNsdWRlIGBTUElgIGFuZCBgTkZDX1NUX05DSV9TUElgIGFzIHdlbGwganVzdCBpbiBjYXNlLiBBbHdheXMgYmV0dGVyIHRvIGJlIHRob3JvdWdoLgoKTm93LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGVzZTogYHN0X25jaV9zZV9pb2AsIGBzdF9uY2lfc2Vfd3RfdGltZW91dGAsIGBzdF9uY2lfc2VfZGVpbml0YCwgYHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWRgLCBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYCwgYW5kIGBuZmNfc2VfaW9gLiBPa2F5LCBJIHNlZS4gSG93ZXZlciwgYHN0X25jaV9zZV93dF90aW1lb3V0YCBhbmQgYHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWRgIGFyZSBtYXJrZWQgYXMgYHN0YXRpY2AuIEkgc2hvdWxkIHByb2JhYmx5IHZlcmlmeSB3aGV0aGVyIGBzdF9uY2lfc2VfaW9gIGlzIGV4cG9ydGVkIG9yIG5vdCwganVzdCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBzY29wZSBvZiB0aGUgaW1wYWN0IG9mIHRoZSBjaGFuZ2VzLiBUaGlzIG1pZ2h0IGluZGljYXRlIHdoZXRoZXIgaXTigJlzIGEgcHVibGljIGludGVyZmFjZSBvciBhbiBpbnRlcm5hbCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX3NlX2lvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTAzLVx0LmRpc2FibGVfc2UgPSBzdF9uY2lfZGlzYWJsZV9zZSxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTA0Olx0LnNlX2lvID0gc3RfbmNpX3NlX2lvLFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDUtXHQuaGNpX2xvYWRfc2Vzc2lvbiA9IHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uLFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTY1Nj1FWFBPUlRfU1lNQk9MX0dQTChzdF9uY2lfZGlzY292ZXJfc2UpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjU3LVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NjU4OmludCBzdF9uY2lfc2VfaW8oc3RydWN0IG5jaV9kZXYgKm5kZXYsIHUzMiBzZV9pZHgsXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02NTktXHRcdCAgICAgICB1OCAqYXBkdSwgc2l6ZV90IGFwZHVfbGVuZ3RoLFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTY4My19XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo2ODQ6RVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfaW8pO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjg1LVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaD0xMzA9aW50IHN0X25jaV9kaXNhYmxlX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1MzIgc2VfaWR4KTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaDoxMzE6aW50IHN0X25jaV9zZV9pbyhzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTMyIHNlX2lkeCxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaC0xMzItXHRcdFx0XHR1OCAqYXBkdSwgc2l6ZV90IGFwZHVfbGVuZ3RoLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzYzNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyB0aGUgRXhwb3J0ZWQgU3ltYm9scyoqCgpBbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIGNvbmZpcm1pbmcgdGhhdCBgc3RfbmNpX3NlX2lvYCBpcywgaW4gZmFjdCwgYW4gZXhwb3J0ZWQgc3ltYm9sLiBHb29kLCB0aGF0JiMzOTtzIHdoYXQgSSBleHBlY3RlZC4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgYHN0X25jaV9zZV9kZWluaXRgIGlzIGV4cG9ydGVkIGFzIHdlbGwuIFRoaXMgY29uZmlybXMgdGhlIGluaXRpYWwgdW5kZXJzdGFuZGluZyBhbmQgdGhlIHBsYW5uZWQgYXJjaGl0ZWN0dXJlLiBOb3cgSSBjYW4gbW92ZSBmb3J3YXJkIHdpdGggdGhlIG5leHQgc3RlcCwgYmFzZWQgb24gdGhpcyBjb25maXJtYXRpb24uIEV4Y2VsbGVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX3NlX2RlaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz05NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgc3RfbmNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNy1cdC5oY2lfY21kX3JlY2VpdmVkID0gc3RfbmNpX2hjaV9jbWRfcmVjZWl2ZWQsXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjEwODpcdC5wcmVfdW5yZWdpc3RlciA9IHN0X25jaV9zZV9kZWluaXQsXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwOS1cdC5wcm9wX29wcyA9IHN0X25jaV9wcm9wX29wcyxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYz03NDk9RVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfaW5pdCk7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy03NTAtXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo3NTE6dm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNzUyLXtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy03NjItfVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NzYzOkVYUE9SVF9TWU1CT0woc3RfbmNpX3NlX2RlaW5pdCk7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oPTEyNT1pbnQgc3RfbmNpX3NlX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHN0cnVjdCBzdF9uY2lfc2Vfc3RhdHVzICpzZV9zdGF0dXMpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oOjEyNjp2b2lkIHN0X25jaV9zZV9kZWluaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oLTEyNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyNjEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBjaGFuZ2VzIEkmIzM5O20gc2VlaW5nOgoKKipBbmFseXppbmcgQ29kZSBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb2RlIG1vZGlmaWNhdGlvbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYCBmdW5jdGlvbiBpcyBnZXR0aW5nIHRvdWNoZWQsIGFsb25nIHdpdGggYG5mY19zZV9pb2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBwcm9iYWJseSBpbnZvbHZlcyBzb21lIGxvd2VyLWxldmVsIGludGVyYWN0aW9uIHdpdGggaGFyZHdhcmUgb3IgaG93IHRoZSBORkMgU2VjdXJlIEVsZW1lbnQgaXMgbWFuYWdlZCB3aXRoaW4gdGhlIHN5c3RlbS4gYG5jaV91bnJlZ2lzdGVyX2RldmljZWAgc3VnZ2VzdHMgdW5yZWdpc3RyYXRpb24sIHNvIHRoZXJlJiMzOTtzIGxpa2VseSBzb21lIGRldmljZSBjbGVhbnVwIG9yIHRlYXJkb3duIG9jY3VycmluZy4gUGVyaGFwcyBhIHNwZWNpZmljIHNlY3VyZSBlbGVtZW50IGlzIGJlaW5nIHJlbW92ZWQgb3IgZGVhY3RpdmF0ZWQuIGBuZmNfc2VfaW9gIGlzIGEgZ2VuZXJhbCBORkMgc2VjdXJlIGVsZW1lbnQgSS9PIGZ1bmN0aW9uLCBhbmQgY2hhbmdlcyBoZXJlIGNvdWxkIGluZGljYXRlIGEgY2hhbmdlIGluIGhvdyBkYXRhIGlzIHNlbnQgYW5kIHJlY2VpdmVkIHRvIGFuZCBmcm9tIHRoZSBzZWN1cmUgZWxlbWVudC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgYWN0dWFsIGNvZGUgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyB0byB1bmRlcnN0YW5kIHdoYXQgZXhhY3RseSBoYXMgY2hhbmdlZC4gV2hhdCYjMzk7cyB0aGUgY29udGV4dD8gV2hhdCB0cmlnZ2VyZWQgdGhlc2UgbW9kaWZpY2F0aW9ucz8gQXJlIHRoZXNlIHJlbGF0ZWQgdG8gYSBuZXcgZmVhdHVyZSwgYSBidWcgZml4LCBvciBzZWN1cml0eSBlbmhhbmNlbWVudD8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfc2VfaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25ldGxpbmsuYz0xNDA2PXN0YXRpYyBpbnQgbmZjX2dlbmxfZHVtcF9zZXNfZG9uZShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L25mYy9uZXRsaW5rLmMtMTQxNy1cbm5ldC9uZmMvbmV0bGluay5jOjE0MTg6c3RhdGljIGludCBuZmNfc2VfaW8oc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHNlX2lkeCxcbm5ldC9uZmMvbmV0bGluay5jLTE0MTktXHRcdCAgICAgdTggKmFwZHUsIHNpemVfdCBhcGR1X2xlbmd0aCxcbi0tXG5uZXQvbmZjL25ldGxpbmsuYz0xNTE1PXN0YXRpYyBpbnQgbmZjX2dlbmxfc2VfaW8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvbmZjL25ldGxpbmsuYy0xNTU3LVxubmV0L25mYy9uZXRsaW5rLmM6MTU1ODpcdHJjID0gbmZjX3NlX2lvKGRldiwgc2VfaWR4LCBhcGR1LCBhcGR1X2xlbiwgc2VfaW9fY2IsIGN0eCk7XG5uZXQvbmZjL25ldGxpbmsuYy0xNTU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDgwMQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5GQyBTZWN1cmUgRWxlbWVudCBJTyBGbG93KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBORkMgU2VjdXJlIEVsZW1lbnQgSU8uIEkgc2VlIHRoYXQgYG5mY19zZV9pb2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24gaW4gYG5ldC9uZmMvbmV0bGluay5jYCwgd2hpY2ggbWFrZXMgYG5mY19nZW5sX3NlX2lvYCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCB0byBmb2N1cyBvbi4gQnV0IHRvIHRyYWNlIHRoZSBkZS1pbml0aWFsaXphdGlvbiBmbG93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nICphZnRlciogYW4gTkZDIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQsIHNvIEkmIzM5O20gYWxzbyBnb2luZyB0byBleGFtaW5lIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgLCBgc3RfbmNpX3NlX2lvYCwgYW5kIGBzdF9uY2lfc2VfZGVpbml0YC4KCldhaXQgYSBtaW51dGUsIGlzIGBzdF9uY2lfc2VfZGVpbml0YCBhY3R1YWxseSBjYWxsZWQgZnJvbSBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYD8gWWVzLCBJIHNlZSBpdCBub3csIGl0JiMzOTtzIGNhbGxlZCB0aHJvdWdoIGBuZGV2LSZndDtvcHMtJmd0O3ByZV91bnJlZ2lzdGVyYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQ7IGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgIGxvb2tzIGxpa2UgYSBrZXkgc3ltYm9sIHRvIHRyYWNrLiBJIGNhbiBzZWUgdGhlIGJpZ2dlciBwaWN0dXJlIG1vcmUgY2xlYXJseSB3aXRoIHRoYXQgaW4gbWluZC4KCk5vdywgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBvbiB3aGV0aGVyIGB2aXJ0dWFsX25jaWRldmAgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIGl0IHJlcXVpcmVzIGEgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB0eXBpY2FsIGVudmlyb25tZW50IHRvIGJldHRlciBhbmFseXplIHRoZSBkZS1pbml0aWFsaXphdGlvbiBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19WSVJUVUFMX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNDUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2MzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBzdC1uY2lgIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBzdC1uY2lgIGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0IGZpeGVzIHNvbWV0aGluZyByZWxhdGVkIHRvIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgU2VjdXJlIEVsZW1lbnQgSS9PLCBsaWtlbHkgYSByYWNlIGNvbmRpdGlvbi4gVG8gcHJvcGVybHkgYnVpbGQgYW5kIHRlc3QgdGhpcywgSSBuZWVkIHRvIGVuc3VyZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuICBgTkZDX1ZJUlRVQUxfTkNJYCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIGl0IGxldHMgbWUgZnV6eiB0aGUgTkNJIGNvcmUgd2l0aG91dCBuZWVkaW5nIHBoeXNpY2FsIGhhcmR3YXJlLCB3aGljaCBpcyBhbHdheXMgY29udmVuaWVudC4gSG93ZXZlciwgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIHRoZSBgc3QtbmNpYCBkcml2ZXIsIHNvIEkgYWJzb2x1dGVseSBuZWVkIHRvIGVuYWJsZSBgTkZDX1NUX05DSV9JMkNgIGFuZCBgTkZDX1NUX05DSV9TUElgIHRvIGNvbXBpbGUgdGhlIHJlbGV2YW50IG1vZGlmaWVkIGNvZGUuCgpIZXJlJiMzOTtzIG15IGxpc3Qgb2YgY29uZmlndXJhdGlvbnMgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgY29tcGlsZXM6CiogICBgTkZDYAoqICAgYE5GQ19OQ0lgCiogICBgTkZDX1NUX05DSV9JMkNgCiogICBgTkZDX1NUX05DSV9TUElgCiogICBgTkZDX1ZJUlRVQUxfTkNJYAoqICAgYEkyQ2AKKiAgIGBTUElgCgpgSTJDYCBhbmQgYFNQSWAgYXJlIHByZXR0eSB1YmlxdWl0b3VzLCBidXQgSSYjMzk7bGwgYWRkIHRoZW0ganVzdCB0byBiZSBzYWZlLiAgTm93LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IHZlcmlmeSBkZXBlbmRlbmNpZXMuIGBORkNfU1RfTkNJX0kyQ2AgZGVwZW5kcyBvbiBgTkZDX05DSSAmYW1wOyZhbXA7IEkyQ2AsIGFuZCBgTkZDX1NUX05DSV9TUElgIGRlcGVuZHMgb24gYE5GQ19OQ0kgJmFtcDsmYW1wOyBTUElgLCBzbyB3ZSYjMzk7cmUgZ29vZCB0aGVyZS4KCkkgbmVlZCB0byBjb25maXJtIHRoYXQgYHN0X25jaV9zZV9kZWluaXRgIGlzIHJlYWNoYWJsZS4gUmlnaHQsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgTkNJIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQuICBJbiB0aGUgY29udGV4dCBvZiBgc3QtbmNpYCwgdGhhdCBoYXBwZW5zIHdoZW4gdGhlIEkyQyBvciBTUEkgZGV2aWNlIGlzIHJlbW92ZWQsIHNvIEkgY2FuIHRyaWdnZXIgdGhpcyB0aHJvdWdoIHN5emthbGxlciwgbGlrZSB3cml0aW5nIHRvIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMC9kZWxldGVfZGV2aWNlYCwgb3IgYnkganVzdCB1bmxvYWRpbmcgdGhlIG1vZHVsZS4gQW5kLCBvZiBjb3Vyc2UsIHRoZXJlJiMzOTtzIGBuZmNfZ2VubF9zZV9pb2AsIHdoaWNoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmsuCgpTbywgdGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZToKKiAgIGBuZmNfZ2VubF9zZV9pb2AKKiAgIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgCiogICBgc3RfbmNpX3NlX2lvYAoqICAgYHN0X25jaV9zZV9kZWluaXRgCgpMZXQmIzM5O3Mgc2VlLi4uYW55IG90aGVyIGZ1bmN0aW9ucz8gYHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWRgIGlzIHN0YXRpYywgYnV0IGl0IHNlZW1zIHRvIGJlIGFuIGV2ZW50IGhhbmRsZXIuICBgc3RfbmNpX3NlX3d0X3RpbWVvdXRgIGlzIGEgdGltZXIgY2FsbGJhY2suIElmIEkgZm9jdXMgb24gZnV6emluZyBgc3RfbmNpX3NlX2lvYCB0aGUgcmVzdCBzaG91bGQgYmUgY292ZXJlZC4KClNvLCB0aGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGFkZHJlc3MgcmFjZSBjb25kaXRpb25zIGluIHRoZSBgc3QtbmNpYCBkcml2ZXIgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gU2VjdXJlIEVsZW1lbnQgSS9PLiBUaGUgbW9kaWZpY2F0aW9ucyB0b3VjaCBib3RoIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAoYG5mY19nZW5sX3NlX2lvYCwgYG5jaV91bnJlZ2lzdGVyX2RldmljZWApIGFuZCBhbHNvIHRoZSBgc3QtbmNpYCBkcml2ZXIgaXRzZWxmIChgc3RfbmNpX3NlX2lvYCwgYHN0X25jaV9zZV9kZWluaXRgKS4gIFRoZXNlIGNvZGUgcGF0aHMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGUgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgdGhlIGluc3RhbnRpYXRpb24gYW5kIHJlbW92YWwgb2YgSTJDL1NQSSBkZXZpY2VzLCB3aGljaCBTeXprYWxsZXIgY2FuIGVhc2lseSBlbXVsYXRlLiBJIHNob3VsZCBqdXN0IGNvbmZpcm0gdGhhdCBJJiMzOTt2ZSBnb3R0ZW4gdGhlIGZ1bmN0aW9uIG5hbWUgb2YgYG5mY19nZW5sX3NlX2lvYCBjb3JyZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfZ2VubF9zZV9pbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbmV0bGluay5jPTE0Nzc9c3RhdGljIHZvaWQgc2VfaW9fY2Iodm9pZCAqY29udGV4dCwgdTggKmFwZHUsIHNpemVfdCBhcGR1X2xlbiwgaW50IGVycilcbi0tXG5uZXQvbmZjL25ldGxpbmsuYy0xNTE0LVxubmV0L25mYy9uZXRsaW5rLmM6MTUxNTpzdGF0aWMgaW50IG5mY19nZW5sX3NlX2lvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvbmZjL25ldGxpbmsuYy0xNTE2LXtcbi0tXG5uZXQvbmZjL25ldGxpbmsuYz0xNzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgbmZjX2dlbmxfb3BzW10gPSB7XG4tLVxubmV0L25mYy9uZXRsaW5rLmMtMTc5NS1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxubmV0L25mYy9uZXRsaW5rLmM6MTc5NjpcdFx0LmRvaXQgPSBuZmNfZ2VubF9zZV9pbyxcbm5ldC9uZmMvbmV0bGluay5jLTE3OTctXHRcdC5mbGFncyA9IEdFTkxfQURNSU5fUEVSTSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcwODMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIE5ldGxpbmsgSGFuZGxlciBmb3IgTkZDKioKCkFscmlnaHQsIHNvIGBuZmNfZ2VubF9zZV9pb2Ag4oCTIHl1cCwgdGhhdCYjMzk7cyB0aGUgbmV0bGluayBoYW5kbGVyIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIEp1c3QgY29uZmlybWluZyB0aGF0IG1lbnRhbCBub3RlLiBOb3csIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHNvbWV0aGluZyBjcml0aWNhbCBmb3IgdGhlIG92ZXJhbGwgZGV2aWNlIG1hbmFnZW1lbnQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gYG5jaV91bnJlZ2lzdGVyX2RldmljZWAgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIEltcG9ydGFudCBmb3Igb3VyIHVzZSBjYXNlIGFuZCBtYWtpbmcgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBnb3RjaGFzIGRvd24gdGhlIGxpbmUuIFdlIGRvbiYjMzk7dCB3YW50IHRvIGdldCBiaXR0ZW4gYnkgc29tZSBzeW1ib2wgdmlzaWJpbGl0eSBpc3N1ZSBsYXRlci4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCYjMzk7cyBhY2Nlc3NpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipuY2lfdW5yZWdpc3Rlcl9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvY29yZS5jPTEzMTg9dm9pZCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4tLVxubmV0L25mYy9uY2kvY29yZS5jLTEzNDUtfVxubmV0L25mYy9uY2kvY29yZS5jOjEzNDY6RVhQT1JUX1NZTUJPTChuY2lfdW5yZWdpc3Rlcl9kZXZpY2UpO1xubmV0L25mYy9uY2kvY29yZS5jLTEzNDctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDE5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlZlcmlmaWNhdGlvbiBTdGVwKioKClJpZ2h0LCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgdGhlIGNhc2UuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBmdXJ0aGVyIGFuYWx5c2lzIG9yIGRlYnVnZ2luZywgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBJIGhhdmUgYSBodW5jaCwgYW5kIGl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIHZlcmlmeSB0aGVzZSB0aGluZ3MgZWFybHkgb24uIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IHRoZSBzeW1ib2wgYHN0X25jaV9zZV9pb2AgaXMsIGluIGZhY3QsIGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgY2FuIGV2ZW4gKmFjY2VzcyogdGhhdCBjb2RlIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgaWYgaXQmIzM5O3Mgbm90IGV4cG9zZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnN0X25jaV9zZV9pbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTY1OD1pbnQgc3RfbmNpX3NlX2lvKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1MzIgc2VfaWR4LFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTY4My19XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo2ODQ6RVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfaW8pO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzc0NQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZlcmlmeWluZyBNb2R1bGUgRGUtSW5pdGlhbGl6YXRpb24qKgoKT2theSwgeWVzLCB0aGF0IGZlZWxzIHJpZ2h0LiBOb3csIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gc29tZXRoaW5nIGNyaXRpY2FsIGJlZm9yZSB3ZSBwcm9jZWVkIGZ1cnRoZXIuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBgc3RfbmNpX3NlX2RlaW5pdGAgZnVuY3Rpb24gaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIFRoaXMgaXMgYSBzdGFuZGFyZCBhbmQgZXNzZW50aWFsIHNhbml0eSBjaGVjayBJIGFsd2F5cyBwZXJmb3JtIHdoZW4gZGVhbGluZyB3aXRoIG1vZHVsZSBpbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaW4gdGhpcyBjb250ZXh0IHdoZXJlIHRoaXMgY2FuIGJyZWFrIHRoZSBzeXN0ZW0gZG93biB0aGUgbGluZS4gSSBhbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSBmb3IgbGlua2luZy4gV2UgY2FuJiMzOTt0IG1vdmUgZm9yd2FyZCB3aXRob3V0IHRoaXMgYXNzdXJhbmNlLCBiZWNhdXNlLCBvdGhlcndpc2UgdGhlIGVudGlyZSBwcm9jZWR1cmUgZmFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnN0X25jaV9zZV9kZWluaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvc2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvc2UuYz03NTE9dm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTc2Mi19XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo3NjM6RVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfZGVpbml0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwNDgKCQkJCQkJCW91dHB1dDogMjMxCgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIFRoZXNlIENoYW5nZXMqKgoKT2theSwgc28gdGhpcyBpcyBhYm91dCBhbiBORkMgZHJpdmVyIGFuZCBpdCBsb29rcyBsaWtlIGEgZ29vZCBjaHVuayBvZiBmdW5jdGlvbmFsIGxvZ2ljIGlzIGJlaW5nIG1vZGlmaWVkLiBZZXMsIHRoYXQmIzM5O3MgcmlnaHQsIHRoZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IGluIHRoZSBmdW5jdGlvbmFsIGxvZ2ljIGl0c2VsZi4KClJpZ2h0LCB0aGUga2V5IHN5bWJvbHMgdGhpcyBwYXRjaCB0b3VjaGVzIGFyZTogYG5mY19nZW5sX3NlX2lvYCwgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAsIGBzdF9uY2lfc2VfaW9gLCBhbmQgYHN0X25jaV9zZV9kZWluaXRgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyBhbmQgdGhlIGRlLWluaXRpYWxpemF0aW9uIHJvdXRpbmVzIC0gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuCgpBbmQgdGhlbiB0aGVyZSYjMzk7cyB0aGUgY29uZmlndXJhdGlvbiBhc3BlY3QuIFRoZSByZWxldmFudCBLY29uZmlnIHN5bWJvbHMgYXJlIGBORkNgLCBgTkZDX05DSWAsIGBORkNfU1RfTkNJX0kyQ2AsIGBORkNfU1RfTkNJX1NQSWAsIGBORkNfVklSVFVBTF9OQ0lgLCBgSTJDYCwgYW5kIGBTUElgLiBXYWl0IGEgc2Vjb25kLCBiZWNhdXNlIGBORkNfU1RfTkNJYCBpcyBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IGBORkNfU1RfTkNJX0kyQ2Agb3IgYE5GQ19TVF9OQ0lfU1BJYCwgc28gaXQmIzM5O3Mgbm90IGEgdXNlci1zZWxlY3RhYmxlIG9wdGlvbiwgYWx0aG91Z2ggaXQmIzM5O3MgaGVscGZ1bCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgc3ltYm9scy4KCk9rYXksIHNvIHRoZSBwYXRjaCBpdHNlbGYgaXMgbW9kaWZ5aW5nIHRoZSBmdW5jdGlvbmFsIGxvZ2ljLiBUaGVyZSBhcmUgYSBwcmVfdW5yZWdpc3RlciBjYWxsYmFjaywgdGltZXIgZml4ZXMsIGFuZCBmaXhlcyBmb3IgYWN0aXZlIGZsYWdzLiBUaGlzIGhhcyB0aGUgdGVsbC10YWxlIHNpZ25zIG9mIHJhY2UgY29uZGl0aW9uIGZpeGVzIGFuZCBzeW5jaHJvbml6YXRpb24gY2hhbmdlcy4gR2l2ZW4gdGhhdCwgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gSSYjMzk7bGwgZmxhZyB0aGlzIG9uZSBpbW1lZGlhdGVseSBmb3IgaW5jbHVzaW9uIGluIHRoZSBmdXp6aW5nIHF1ZXVlLgoKSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYW5hbHlzaXMsIHNvIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBsb2cgdGhlIHJlc3VsdHMgd2l0aCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSV9JMkMmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSV9TUEkmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDssCiAgICAmIzM0O0kyQyYjMzQ7LAogICAgJiMzNDtTUEkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfZ2VubF9zZV9pbyYjMzQ7LAogICAgJiMzNDtuY2lfdW5yZWdpc3Rlcl9kZXZpY2UmIzM0OywKICAgICYjMzQ7c3RfbmNpX3NlX2lvJiMzNDssCiAgICAmIzM0O3N0X25jaV9zZV9kZWluaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBORkMgbmV0bGluayBhbmQgTkNJIHN1YnN5c3RlbSBjb2RlIChuZmNfc2VfaW8sIG5jaV91bnJlZ2lzdGVyX2RldmljZSkgYW5kIHRoZSBzdC1uY2kgZHJpdmVyIChzdF9uY2lfc2VfaW8sIHN0X25jaV9zZV9kZWluaXQpIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgU0UgSS9PIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBmdW5jdGlvbmFsbHkgcmVhY2hhYmxlIHZpYSBORkMgbmV0bGluayBpbnRlcmZhY2VzIGFuZCBJMkMvU1BJIGRldmljZSBpbnN0YW50aWF0aW9uL3JlbW92YWwsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSV9JMkMmIzM0OywKICAgICYjMzQ7TkZDX1NUX05DSV9TUEkmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDssCiAgICAmIzM0O0kyQyYjMzQ7LAogICAgJiMzNDtTUEkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfZ2VubF9zZV9pbyYjMzQ7LAogICAgJiMzNDtuY2lfdW5yZWdpc3Rlcl9kZXZpY2UmIzM0OywKICAgICYjMzQ7c3RfbmNpX3NlX2lvJiMzNDssCiAgICAmIzM0O3N0X25jaV9zZV9kZWluaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBORkMgbmV0bGluayBhbmQgTkNJIHN1YnN5c3RlbSBjb2RlIChuZmNfc2VfaW8sIG5jaV91bnJlZ2lzdGVyX2RldmljZSkgYW5kIHRoZSBzdC1uY2kgZHJpdmVyIChzdF9uY2lfc2VfaW8sIHN0X25jaV9zZV9kZWluaXQpIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgU0UgSS9PIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBmdW5jdGlvbmFsbHkgcmVhY2hhYmxlIHZpYSBORkMgbmV0bGluayBpbnRlcmZhY2VzIGFuZCBJMkMvU1BJIGRldmljZSBpbnN0YW50aWF0aW9uL3JlbW92YWwsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjQyLjM0NTk1OTk0OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzIyNzg2NDI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19TVF9OQ0lfSTJDXCIsXG4gICAgXCJORkNfU1RfTkNJX1NQSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCIsXG4gICAgXCJJMkNcIixcbiAgICBcIlNQSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mY19nZW5sX3NlX2lvXCIsXG4gICAgXCJuY2lfdW5yZWdpc3Rlcl9kZXZpY2VcIixcbiAgICBcInN0X25jaV9zZV9pb1wiLFxuICAgIFwic3RfbmNpX3NlX2RlaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAobmZjX3NlX2lvLCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2UpIGFuZCB0aGUgc3QtbmNpIGRyaXZlciAoc3RfbmNpX3NlX2lvLCBzdF9uY2lfc2VfZGVpbml0KSB0byBmaXggcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIFNFIEkvTyBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgZnVuY3Rpb25hbGx5IHJlYWNoYWJsZSB2aWEgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgSTJDL1NQSSBkZXZpY2UgaW5zdGFudGlhdGlvbi9yZW1vdmFsLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjQyLjM0NTk2NTUxOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI2ODE0ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2UwNDcyMWQxYzM0MjNmOTIxNzM0YjE3ZWFmNDc1NmUxYmJmMDUxMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDEyOjA2OjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXFxuaW5kZXggYTM2NzEzNmQ0MzMwYS4uNmU4Zjc5OWY1Yzk0MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xcbkBAIC0xMDUsNiArMTA1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHN0X25jaV9vcHMgPSB7XFxuIFxcdC5oY2lfbG9hZF9zZXNzaW9uID0gc3RfbmNpX2hjaV9sb2FkX3Nlc3Npb24sXFxuIFxcdC5oY2lfZXZlbnRfcmVjZWl2ZWQgPSBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkLFxcbiBcXHQuaGNpX2NtZF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfY21kX3JlY2VpdmVkLFxcbitcXHQucHJlX3VucmVnaXN0ZXIgPSBzdF9uY2lfc2VfZGVpbml0LFxcbiBcXHQucHJvcF9vcHMgPSBzdF9uY2lfcHJvcF9vcHMsXFxuIFxcdC5uX3Byb3Bfb3BzID0gQVJSQVlfU0laRShzdF9uY2lfcHJvcF9vcHMpLFxcbiB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXFxuaW5kZXggNjA3ZWM3NjhlYjdiNC4uMjMyMjQ5ZDYwYmI4NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXFxuQEAgLTI4Myw5ICsyODMsOSBAQCBzdGF0aWMgaW50IHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxuIFxcdHN3aXRjaCAoZXZlbnQpIHtcXG4gXFx0Y2FzZSBTVF9OQ0lfRVZUX1RSQU5TTUlUX0RBVEE6XFxuIFxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZpbmZvLVxcdTAwM2VzZV9pbmZvLmJ3aV90aW1lcik7XFxuLVxcdFxcdGluZm8tXFx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlO1xcbi1cXHRcXHRpbmZvLVxcdTAwM2VzZV9pbmZvLmNiKGluZm8tXFx1MDAzZXNlX2luZm8uY2JfY29udGV4dCxcXG4tXFx0XFx0XFx0XFx0IHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4sIDApO1xcbitcXHRcXHRpZiAoeGNoZyhcXHUwMDI2aW5mby1cXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCBmYWxzZSkpXFxuK1xcdFxcdFxcdGluZm8tXFx1MDAzZXNlX2luZm8uY2IoaW5mby1cXHUwMDNlc2VfaW5mby5jYl9jb250ZXh0LFxcbitcXHRcXHRcXHRcXHRcXHQgc2tiLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWxlbiwgMCk7XFxuIFxcdGJyZWFrO1xcbiBcXHRjYXNlIFNUX05DSV9FVlRfV1RYX1JFUVVFU1Q6XFxuIFxcdFxcdG1vZF90aW1lcihcXHUwMDI2aW5mby1cXHUwMDNlc2VfaW5mby5id2lfdGltZXIsIGppZmZpZXMgK1xcbkBAIC02NjUsOSArNjY1LDkgQEAgaW50IHN0X25jaV9zZV9pbyhzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTMyIHNlX2lkeCxcXG4gXFx0Y2FzZSBTVF9OQ0lfRVNFX0hPU1RfSUQ6XFxuIFxcdFxcdGluZm8tXFx1MDAzZXNlX2luZm8uY2IgPSBjYjtcXG4gXFx0XFx0aW5mby1cXHUwMDNlc2VfaW5mby5jYl9jb250ZXh0ID0gY2JfY29udGV4dDtcXG4rXFx0XFx0eGNoZyhcXHUwMDI2aW5mby1cXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCB0cnVlKTtcXG4gXFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZpbmZvLVxcdTAwM2VzZV9pbmZvLmJ3aV90aW1lciwgamlmZmllcyArXFxuIFxcdFxcdFxcdCAgbXNlY3NfdG9famlmZmllcyhpbmZvLVxcdTAwM2VzZV9pbmZvLnd0X3RpbWVvdXQpKTtcXG4tXFx0XFx0aW5mby1cXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIG5jaV9oY2lfc2VuZF9ldmVudChuZGV2LCBTVF9OQ0lfQVBEVV9SRUFERVJfR0FURSxcXG4gXFx0XFx0XFx0XFx0XFx0U1RfTkNJX0VWVF9UUkFOU01JVF9EQVRBLCBhcGR1LFxcbiBcXHRcXHRcXHRcXHRcXHRhcGR1X2xlbmd0aCk7XFxuQEAgLTY5OSw3ICs2OTksOCBAQCBzdGF0aWMgdm9pZCBzdF9uY2lfc2Vfd3RfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4gXFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gdGltZXJfY29udGFpbmVyX29mKGluZm8sIHQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHNlX2luZm8uYndpX3RpbWVyKTtcXG4gXFxuLVxcdGluZm8tXFx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlO1xcbitcXHRpZiAoIXhjaGcoXFx1MDAyNmluZm8tXFx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSwgZmFsc2UpKVxcbitcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRpZiAoIWluZm8tXFx1MDAzZXNlX2luZm8ueGNoX2Vycm9yKSB7XFxuIFxcdFxcdGluZm8tXFx1MDAzZXNlX2luZm8ueGNoX2Vycm9yID0gdHJ1ZTtcXG5AQCAtNzUxLDEzICs3NTIsMTIgQEAgdm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcXG4gXFxuLVxcdGlmIChpbmZvLVxcdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUpXFxuLVxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZpbmZvLVxcdTAwM2VzZV9pbmZvLmJ3aV90aW1lcik7XFxuLVxcdGlmIChpbmZvLVxcdTAwM2VzZV9pbmZvLnNlX2FjdGl2ZSlcXG4tXFx0XFx0dGltZXJfZGVsZXRlX3N5bmMoXFx1MDAyNmluZm8tXFx1MDAzZXNlX2luZm8uc2VfYWN0aXZlX3RpbWVyKTtcXG4rXFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2aW5mby1cXHUwMDNlc2VfaW5mby5id2lfdGltZXIpO1xcbitcXHRpZiAoeGNoZyhcXHUwMDI2aW5mby1cXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCBmYWxzZSkpXFxuK1xcdFxcdGluZm8tXFx1MDAzZXNlX2luZm8uY2IoaW5mby1cXHUwMDNlc2VfaW5mby5jYl9jb250ZXh0LCBOVUxMLCAwLCAtRU5PREVWKTtcXG4gXFxuLVxcdGluZm8tXFx1MDAzZXNlX2luZm8uc2VfYWN0aXZlID0gZmFsc2U7XFxuLVxcdGluZm8tXFx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlO1xcbitcXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFxcdTAwMjZpbmZvLVxcdTAwM2VzZV9pbmZvLnNlX2FjdGl2ZV90aW1lcik7XFxuK1xcdHhjaGcoXFx1MDAyNmluZm8tXFx1MDAzZXNlX2luZm8uc2VfYWN0aXZlLCBmYWxzZSk7XFxuK1xcdGNvbXBsZXRlKFxcdTAwMjZpbmZvLVxcdTAwM2VzZV9pbmZvLnJlcV9jb21wbGV0aW9uKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9kZWluaXQpO1xcbi1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmggYi9pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaFxcbmluZGV4IDY2NGQ1MDU4ZTY2ZTAuLjc1NGE2NzE4NTY0MjQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmhcXG4rKysgYi9pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaFxcbkBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBuY2lfb3BzIHtcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbiBcXHR2b2lkICAoKmhjaV9jbWRfcmVjZWl2ZWQpKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLCB1OCBjbWQsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuK1xcdHZvaWQgICgqcHJlX3VucmVnaXN0ZXIpKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcXG4gXFxuIFxcdGNvbnN0IHN0cnVjdCBuY2lfZHJpdmVyX29wcyAqcHJvcF9vcHM7XFxuIFxcdHNpemVfdCBuX3Byb3Bfb3BzO1xcbmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9jb3JlLmMgYi9uZXQvbmZjL25jaS9jb3JlLmNcXG5pbmRleCA1ZjQ2YzRiNTcyMGY2Li44NjI4NmMwNzY1ZjI2IDEwMDY0NFxcbi0tLSBhL25ldC9uZmMvbmNpL2NvcmUuY1xcbisrKyBiL25ldC9uZmMvbmNpL2NvcmUuY1xcbkBAIC0xMzIxLDYgKzEzMjEsOSBAQCB2b2lkIG5jaV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4gXFxuIFxcdG5mY191bnJlZ2lzdGVyX3Jma2lsbChuZGV2LVxcdTAwM2VuZmNfZGV2KTtcXG4gXFxuK1xcdGlmIChuZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXByZV91bnJlZ2lzdGVyKVxcbitcXHRcXHRuZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXByZV91bnJlZ2lzdGVyKG5kZXYpO1xcbitcXG4gXFx0LyogVGhpcyBzZXRfYml0IGlzIG5vdCBwcm90ZWN0ZWQgd2l0aCBzcGVjaWFsaXplZCBiYXJyaWVyLFxcbiBcXHQgKiBIb3dldmVyLCBpdCBpcyBmaW5lIGJlY2F1c2UgdGhlIG11dGV4X2xvY2soXFx1MDAyNm5kZXYtXFx1MDAzZXJlcV9sb2NrKTtcXG4gXFx0ICogaW4gbmNpX2Nsb3NlX2RldmljZSgpIHdpbGwgaGVscCB0byBlbWl0IG9uZS5cXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9uZXRsaW5rLmMgYi9uZXQvbmZjL25ldGxpbmsuY1xcbmluZGV4IDBjNTg4MjRjYjE1MGQuLjMxMzJmN2E5MGFiOWYgMTAwNjQ0XFxuLS0tIGEvbmV0L25mYy9uZXRsaW5rLmNcXG4rKysgYi9uZXQvbmZjL25ldGxpbmsuY1xcbkBAIC0xNDI2LDYgKzE0MjYsMTEgQEAgc3RhdGljIGludCBuZmNfc2VfaW8oc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHNlX2lkeCxcXG4gXFxuIFxcdGRldmljZV9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWRldik7XFxuIFxcbitcXHRpZiAoZGV2LVxcdTAwM2VzaHV0dGluZ19kb3duKSB7XFxuK1xcdFxcdHJjID0gLUVOT0RFVjtcXG4rXFx0XFx0Z290byBlcnJvcjtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKCFkZXZpY2VfaXNfcmVnaXN0ZXJlZChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpKSB7XFxuIFxcdFxcdHJjID0gLUVOT0RFVjtcXG4gXFx0XFx0Z290byBlcnJvcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDY6NDIuNjczNDEzMjc0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAyOTAwNDAyMzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1NUX05DSV9JMkNcIixcbiAgICBcIk5GQ19TVF9OQ0lfU1BJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIixcbiAgICBcIkkyQ1wiLFxuICAgIFwiU1BJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2dlbmxfc2VfaW9cIixcbiAgICBcIm5jaV91bnJlZ2lzdGVyX2RldmljZVwiLFxuICAgIFwic3RfbmNpX3NlX2lvXCIsXG4gICAgXCJzdF9uY2lfc2VfZGVpbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBORkMgbmV0bGluayBhbmQgTkNJIHN1YnN5c3RlbSBjb2RlIChuZmNfc2VfaW8sIG5jaV91bnJlZ2lzdGVyX2RldmljZSkgYW5kIHRoZSBzdC1uY2kgZHJpdmVyIChzdF9uY2lfc2VfaW8sIHN0X25jaV9zZV9kZWluaXQpIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgU0UgSS9PIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBmdW5jdGlvbmFsbHkgcmVhY2hhYmxlIHZpYSBORkMgbmV0bGluayBpbnRlcmZhY2VzIGFuZCBJMkMvU1BJIGRldmljZSBpbnN0YW50aWF0aW9uL3JlbW92YWwsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2UwNDcyMWQxYzM0MjNmOTIxNzM0YjE3ZWFmNDc1NmUxYmJmMDUxMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTI6MDY6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xuaW5kZXggYTM2NzEzNmQ0MzMwYS4uNmU4Zjc5OWY1Yzk0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbkBAIC0xMDUsNiArMTA1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHN0X25jaV9vcHMgPSB7XG4gXHQuaGNpX2xvYWRfc2Vzc2lvbiA9IHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uLFxuIFx0LmhjaV9ldmVudF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfZXZlbnRfcmVjZWl2ZWQsXG4gXHQuaGNpX2NtZF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfY21kX3JlY2VpdmVkLFxuK1x0LnByZV91bnJlZ2lzdGVyID0gc3RfbmNpX3NlX2RlaW5pdCxcbiBcdC5wcm9wX29wcyA9IHN0X25jaV9wcm9wX29wcyxcbiBcdC5uX3Byb3Bfb3BzID0gQVJSQVlfU0laRShzdF9uY2lfcHJvcF9vcHMpLFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuaW5kZXggNjA3ZWM3NjhlYjdiNC4uMjMyMjQ5ZDYwYmI4NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuQEAgLTI4Myw5ICsyODMsOSBAQCBzdGF0aWMgaW50IHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4gXHRzd2l0Y2ggKGV2ZW50KSB7XG4gXHRjYXNlIFNUX05DSV9FVlRfVFJBTlNNSVRfREFUQTpcbiBcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV90aW1lcik7XG4tXHRcdGluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlID0gZmFsc2U7XG4tXHRcdGluZm8tXHUwMDNlc2VfaW5mby5jYihpbmZvLVx1MDAzZXNlX2luZm8uY2JfY29udGV4dCxcbi1cdFx0XHRcdCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbiwgMCk7XG4rXHRcdGlmICh4Y2hnKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCBmYWxzZSkpXG4rXHRcdFx0aW5mby1cdTAwM2VzZV9pbmZvLmNiKGluZm8tXHUwMDNlc2VfaW5mby5jYl9jb250ZXh0LFxuK1x0XHRcdFx0XHQgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4sIDApO1xuIFx0YnJlYWs7XG4gXHRjYXNlIFNUX05DSV9FVlRfV1RYX1JFUVVFU1Q6XG4gXHRcdG1vZF90aW1lcihcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX3RpbWVyLCBqaWZmaWVzICtcbkBAIC02NjUsOSArNjY1LDkgQEAgaW50IHN0X25jaV9zZV9pbyhzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTMyIHNlX2lkeCxcbiBcdGNhc2UgU1RfTkNJX0VTRV9IT1NUX0lEOlxuIFx0XHRpbmZvLVx1MDAzZXNlX2luZm8uY2IgPSBjYjtcbiBcdFx0aW5mby1cdTAwM2VzZV9pbmZvLmNiX2NvbnRleHQgPSBjYl9jb250ZXh0O1xuK1x0XHR4Y2hnKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCB0cnVlKTtcbiBcdFx0bW9kX3RpbWVyKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfdGltZXIsIGppZmZpZXMgK1xuIFx0XHRcdCAgbXNlY3NfdG9famlmZmllcyhpbmZvLVx1MDAzZXNlX2luZm8ud3RfdGltZW91dCkpO1xuLVx0XHRpbmZvLVx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSA9IHRydWU7XG4gXHRcdHJldHVybiBuY2lfaGNpX3NlbmRfZXZlbnQobmRldiwgU1RfTkNJX0FQRFVfUkVBREVSX0dBVEUsXG4gXHRcdFx0XHRcdFNUX05DSV9FVlRfVFJBTlNNSVRfREFUQSwgYXBkdSxcbiBcdFx0XHRcdFx0YXBkdV9sZW5ndGgpO1xuQEAgLTY5OSw3ICs2OTksOCBAQCBzdGF0aWMgdm9pZCBzdF9uY2lfc2Vfd3RfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbiBcdHN0cnVjdCBzdF9uY2lfaW5mbyAqaW5mbyA9IHRpbWVyX2NvbnRhaW5lcl9vZihpbmZvLCB0LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNlX2luZm8uYndpX3RpbWVyKTtcbiBcbi1cdGluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlID0gZmFsc2U7XG4rXHRpZiAoIXhjaGcoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUsIGZhbHNlKSlcbitcdFx0cmV0dXJuO1xuIFxuIFx0aWYgKCFpbmZvLVx1MDAzZXNlX2luZm8ueGNoX2Vycm9yKSB7XG4gXHRcdGluZm8tXHUwMDNlc2VfaW5mby54Y2hfZXJyb3IgPSB0cnVlO1xuQEAgLTc1MSwxMyArNzUyLDEyIEBAIHZvaWQgc3RfbmNpX3NlX2RlaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiB7XG4gXHRzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XG4gXG4tXHRpZiAoaW5mby1cdTAwM2VzZV9pbmZvLmJ3aV9hY3RpdmUpXG4tXHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfdGltZXIpO1xuLVx0aWYgKGluZm8tXHUwMDNlc2VfaW5mby5zZV9hY3RpdmUpXG4tXHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5zZV9hY3RpdmVfdGltZXIpO1xuK1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uYndpX3RpbWVyKTtcbitcdGlmICh4Y2hnKFx1MDAyNmluZm8tXHUwMDNlc2VfaW5mby5id2lfYWN0aXZlLCBmYWxzZSkpXG4rXHRcdGluZm8tXHUwMDNlc2VfaW5mby5jYihpbmZvLVx1MDAzZXNlX2luZm8uY2JfY29udGV4dCwgTlVMTCwgMCwgLUVOT0RFVik7XG4gXG4tXHRpbmZvLVx1MDAzZXNlX2luZm8uc2VfYWN0aXZlID0gZmFsc2U7XG4tXHRpbmZvLVx1MDAzZXNlX2luZm8uYndpX2FjdGl2ZSA9IGZhbHNlO1xuK1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpbmZvLVx1MDAzZXNlX2luZm8uc2VfYWN0aXZlX3RpbWVyKTtcbitcdHhjaGcoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLnNlX2FjdGl2ZSwgZmFsc2UpO1xuK1x0Y29tcGxldGUoXHUwMDI2aW5mby1cdTAwM2VzZV9pbmZvLnJlcV9jb21wbGV0aW9uKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfZGVpbml0KTtcbi1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaCBiL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oXG5pbmRleCA2NjRkNTA1OGU2NmUwLi43NTRhNjcxODU2NDI0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmhcbisrKyBiL2luY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oXG5AQCAtODIsNiArODIsNyBAQCBzdHJ1Y3QgbmNpX29wcyB7XG4gXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4gXHR2b2lkICAoKmhjaV9jbWRfcmVjZWl2ZWQpKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLCB1OCBjbWQsXG4gXHRcdFx0XHQgIHN0cnVjdCBza19idWZmICpza2IpO1xuK1x0dm9pZCAgKCpwcmVfdW5yZWdpc3Rlcikoc3RydWN0IG5jaV9kZXYgKm5kZXYpO1xuIFxuIFx0Y29uc3Qgc3RydWN0IG5jaV9kcml2ZXJfb3BzICpwcm9wX29wcztcbiBcdHNpemVfdCBuX3Byb3Bfb3BzO1xuZGlmZiAtLWdpdCBhL25ldC9uZmMvbmNpL2NvcmUuYyBiL25ldC9uZmMvbmNpL2NvcmUuY1xuaW5kZXggNWY0NmM0YjU3MjBmNi4uODYyODZjMDc2NWYyNiAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbmNpL2NvcmUuY1xuKysrIGIvbmV0L25mYy9uY2kvY29yZS5jXG5AQCAtMTMyMSw2ICsxMzIxLDkgQEAgdm9pZCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4gXG4gXHRuZmNfdW5yZWdpc3Rlcl9yZmtpbGwobmRldi1cdTAwM2VuZmNfZGV2KTtcbiBcbitcdGlmIChuZGV2LVx1MDAzZW9wcy1cdTAwM2VwcmVfdW5yZWdpc3RlcilcbitcdFx0bmRldi1cdTAwM2VvcHMtXHUwMDNlcHJlX3VucmVnaXN0ZXIobmRldik7XG4rXG4gXHQvKiBUaGlzIHNldF9iaXQgaXMgbm90IHByb3RlY3RlZCB3aXRoIHNwZWNpYWxpemVkIGJhcnJpZXIsXG4gXHQgKiBIb3dldmVyLCBpdCBpcyBmaW5lIGJlY2F1c2UgdGhlIG11dGV4X2xvY2soXHUwMDI2bmRldi1cdTAwM2VyZXFfbG9jayk7XG4gXHQgKiBpbiBuY2lfY2xvc2VfZGV2aWNlKCkgd2lsbCBoZWxwIHRvIGVtaXQgb25lLlxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbmV0bGluay5jIGIvbmV0L25mYy9uZXRsaW5rLmNcbmluZGV4IDBjNTg4MjRjYjE1MGQuLjMxMzJmN2E5MGFiOWYgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL25ldGxpbmsuY1xuKysrIGIvbmV0L25mYy9uZXRsaW5rLmNcbkBAIC0xNDI2LDYgKzE0MjYsMTEgQEAgc3RhdGljIGludCBuZmNfc2VfaW8oc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHNlX2lkeCxcbiBcbiBcdGRldmljZV9sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuIFxuK1x0aWYgKGRldi1cdTAwM2VzaHV0dGluZ19kb3duKSB7XG4rXHRcdHJjID0gLUVOT0RFVjtcbitcdFx0Z290byBlcnJvcjtcbitcdH1cbitcbiBcdGlmICghZGV2aWNlX2lzX3JlZ2lzdGVyZWQoXHUwMDI2ZGV2LVx1MDAzZWRldikpIHtcbiBcdFx0cmMgPSAtRU5PREVWO1xuIFx0XHRnb3RvIGVycm9yO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDY6NDIuNjczNDE0MzM0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3NzA1Njk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIE5GQyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTkZDIHN1YnN5c3RlbS4gSXQgc2VlbXMgbGlrZSBpdCBmb2N1c2VzIG9uIHRoZSBgc3QtbmNpYCBkcml2ZXIsIGludHJvZHVjaW5nIGEgYHByZV91bnJlZ2lzdGVyYCBjYWxsYmFjayBpbiBgbmNpX29wc2Agc3BlY2lmaWNhbGx5IGZvciB0aGF0IGRyaXZlciwgYW5kIHRoZW4gbW9kaWZpZXMgc2V2ZXJhbCBmdW5jdGlvbnMgKGBzdF9uY2lfc2VfaW9gLCBgc3RfbmNpX3NlX3d0X3RpbWVvdXRgLCBhbmQgYHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWRgKSB0byB1c2UgYHhjaGdgIGZvciB0aGUgYGJ3aV9hY3RpdmVgIGZsYWcuIFRoZXJlJ3MgYWxzbyBhIGNoYW5nZSB0byBgbmZjX3NlX2lvYCBpbiBgbmV0L25mYy9uZXRsaW5rLmNgLCB3aGljaCBpcyB0aGUgaW50ZXJlc3RpbmcgYml0LiBUaGUgcGF0Y2ggYWRkcyBhIGBkZXYtXHUwMDNlc2h1dHRpbmdfZG93bmAgY2hlY2suXG5cblRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIGEgdXNlZnVsIHRhcmdldCBmb3IgZnV6emluZy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGtleSBpcyByZWFjaGFiaWxpdHkuIEkgc2VlIHRoYXQgYG5mY19zZV9pb2AgaXMgY2FsbGVkIHRocm91Z2ggbmV0bGluaywgd2hpY2ggc3VnZ2VzdHMgdGhhdCB0aGUgZW50aXJlIE5GQyBzdWJzeXN0ZW0sIGluY2x1ZGluZyBgc3QtbmNpYCwgaXMgcG90ZW50aWFsbHkgcmVhY2hhYmxlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgdGhlIGBzdC1uY2lgIGRyaXZlciBpdHNlbGYgY2FuIGJlIGVtdWxhdGVkIG9yIGVhc2lseSByZWFjaGVkLCBidXQgdGhlbiBpdCBoaXRzIG1lLiBgbmZjX3NlX2lvYCBpcyBpbiBgbmV0L25mYy9uZXRsaW5rLmNgLCB3aGljaCBpcyAqKmNvcmUqKiBORkMgY29kZSwgbm90IGRyaXZlci1zcGVjaWZpYyEgVGhhdCdzIGV4Y2VsbGVudC5cblxuU28sIHRoaXMgcGF0Y2ggdG91Y2hlcyBib3RoIGBuZXQvbmZjL25ldGxpbmsuY2AgYW5kIGBuZXQvbmZjL25jaS9jb3JlLmNgIOKAkyBtYWpvciBwYXJ0cyBvZiB0aGUgTkZDIGNvcmUuIFdlIGtub3cgdGhlIGNvcmUgTkZDIHN1YnN5c3RlbSBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZywgYW5kIGl0J3MgYWxyZWFkeSBmdXp6ZWQgaW4gc3l6a2FsbGVyLiBUaGUgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgdGhlIGNoYW5nZXMgaW50cm9kdWNlZCBtYWtlIHRoaXMgcGF0Y2ggYSB3b3J0aHdoaWxlIG5ldyB0YXJnZXQuIEl0J3MgbGlrZWx5IHRoYXQgaXQgd2lsbCBiZSBmdXp6ZWQsIGdpdmVuIHRoYXQgbmV0bGluayBpbnRlcmZhY2UgaXMgaW52b2x2ZWQsIG9yIHRoYXQgd2UgY2FuIGdlbmVyYXRlIGZ1enplciBpbnB1dHMgZm9yIHZpcnR1YWwgZGV2aWNlcy4gQnV0LCBoYW5nIG9uLi4uIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGFscmVhZHkgaW4gcGxhY2UgZm9yIE5GQyBzZXR1cCwgcGVyaGFwcyBgc3l6X25jaV9zZXR1cGAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0LiBUaGF0IHdvdWxkIGJlIHRoZSBiZXN0IGluZGljYXRpb24gb2Ygd2hldGhlciB3ZSBjYW4gZWFzaWx5IGludGVncmF0ZSB0aGlzIHBhdGNoIGludG8gZXhpc3RpbmcgZnV6emluZyBpbmZyYXN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxNywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjQ5LjI1MDQ3NDEwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMxNzc0MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5jaV9yZWdpc3Rlcl9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL2ZkcC9mZHAuYz02OTk9aW50IGZkcF9uY2lfcHJvYmUoc3RydWN0IGZkcF9pMmNfcGh5ICpwaHksIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy03MzctXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjczODpcXHRyID0gbmNpX3JlZ2lzdGVyX2RldmljZShuZGV2KTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNzM5LVxcdGlmIChyKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9OTI9c3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqbmZjbXJ2bF9uY2lfcmVnaXN0ZXJfZGV2KGVudW0gbmZjbXJ2bF9waHkgcGh5LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTU2LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjE1NzpcXHRyYyA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTU4LVxcdGlmIChyYykge1xcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjE1OTpcXHRcXHRuZmNfZXJyKGRldiwgXFxcIm5jaV9yZWdpc3Rlcl9kZXZpY2UgZmFpbGVkICVkXFxcXG5cXFwiLCByYyk7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTYwLVxcdFxcdGdvdG8gZXJyb3JfZndfZG5sZF9kZWluaXQ7XFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0xMzU9aW50IG54cF9uY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMTY5LVxcdG5jaV9zZXRfZHJ2ZGF0YShpbmZvLVxcdTAwM2VuZGV2LCBpbmZvKTtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoxNzA6XFx0ciA9IG5jaV9yZWdpc3Rlcl9kZXZpY2UoaW5mby1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMTcxLVxcdGlmIChyIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZmMvczNmd3JuNS9jb3JlLmM9MTYwPWludCBzM2Z3cm41X3Byb2JlKHN0cnVjdCBuY2lfZGV2ICoqbmRldiwgdm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvczNmd3JuNS9jb3JlLmMtMTg0LVxcbmRyaXZlcnMvbmZjL3MzZndybjUvY29yZS5jOjE4NTpcXHRyZXQgPSBuY2lfcmVnaXN0ZXJfZGV2aWNlKGluZm8tXFx1MDAzZW5kZXYpO1xcbmRyaXZlcnMvbmZjL3MzZndybjUvY29yZS5jLTE4Ni1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz0xMTM9aW50IHN0X25jaV9wcm9iZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIGludCBwaHlfaGVhZHJvb20sXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTE0OS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjE1MDpcXHRyID0gbmNpX3JlZ2lzdGVyX2RldmljZShuZGxjLVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTE1MS1cXHRpZiAocikge1xcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYz0xMzM9c3RhdGljIGludCB2aXJ0dWFsX25jaWRldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNTItXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxNTM6XFx0cmV0ID0gbmNpX3JlZ2lzdGVyX2RldmljZSh2ZGV2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE1NC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmg9MjgwPXZvaWQgbmNpX2ZyZWVfZGV2aWNlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcXG5pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaDoyODE6aW50IG5jaV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpO1xcbmluY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oLTI4Mi12b2lkIG5jaV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldik7XFxuLS1cXG5uZXQvbmZjL25jaS9jb3JlLmM9MTI0ND1FWFBPUlRfU1lNQk9MKG5jaV9mcmVlX2RldmljZSk7XFxuLS1cXG5uZXQvbmZjL25jaS9jb3JlLmMtMTI0Ni0vKipcXG5uZXQvbmZjL25jaS9jb3JlLmM6MTI0NzogKiBuY2lfcmVnaXN0ZXJfZGV2aWNlIC0gcmVnaXN0ZXIgYSBuY2kgZGV2aWNlIGluIHRoZSBuZmMgc3Vic3lzdGVtXFxubmV0L25mYy9uY2kvY29yZS5jLTEyNDgtICpcXG4tLVxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMjUwLSAqL1xcbm5ldC9uZmMvbmNpL2NvcmUuYzoxMjUxOmludCBuY2lfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMjUyLXtcXG4tLVxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMzEwLX1cXG5uZXQvbmZjL25jaS9jb3JlLmM6MTMxMTpFWFBPUlRfU1lNQk9MKG5jaV9yZWdpc3Rlcl9kZXZpY2UpO1xcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMzEyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNjo1MC43ODIyNTQyNDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA0NTIyMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBgdmlydHVhbF9uY2lkZXYuY2AgLSBQb3RlbnRpYWwgR29sZG1pbmUgZm9yIE5DSSBFbXVsYXRpb24gYW5kIEZ1enppbmcqKlxuXG5SaWdodCwgKnZpcnR1YWxfbmNpZGV2LmMqISBUaGF0J3MgZXhjZWxsZW50IG5ld3MuIFRoZSBleGlzdGVuY2Ugb2YgdGhpcyBmaWxlIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHRoYXQgd2UgaGF2ZSBhIG1lY2hhbmlzbSBmb3IgZW11bGF0aW5nIGFuZCBmdXp6aW5nIE5DSSBkZXZpY2VzLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwIGZvciBkZWVwZXIgc2VjdXJpdHkgYW5hbHlzaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtb2R1bGUgKmFjdHVhbGx5KiBkb2VzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIGhvdyB0aGlzIGVtdWxhdGlvbiBpcyBpbXBsZW1lbnRlZC4gTGV0J3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWUgd2Vha25lc3NlcyBvciBpbnRlcmVzdGluZyBiZWhhdmlvcnMgd2l0aGluIGl0cyBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkwMiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjUzLjc4Njc3ODA5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE0ODg2NDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnR1YWxfbmNpZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJNQUlOVEFJTkVSUz0xOTExOD1TOlxcdFN1cHBvcnRlZFxcbk1BSU5UQUlORVJTOjE5MTE5OkY6XFx0ZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuY1xcbk1BSU5UQUlORVJTLTE5MTIwLUY6XFx0dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmNpL1xcbi0tXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX05GQ19TVDk1SEYpXFx0Kz0gc3Q5NWhmL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19ORkNfVklSVFVBTF9OQ0kpXFx0Kz0gdmlydHVhbF9uY2lkZXYub1xcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYz03Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgdmlydHVhbF9uY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04MS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjgyOnN0YXRpYyBzc2l6ZV90IHZpcnR1YWxfbmNpZGV2X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04My1cXHRcXHRcXHRcXHQgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTEyLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTEzOnN0YXRpYyBzc2l6ZV90IHZpcnR1YWxfbmNpZGV2X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTE0LVxcdFxcdFxcdFxcdCAgICBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMzItXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxMzM6c3RhdGljIGludCB2aXJ0dWFsX25jaWRldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTM0LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTYzLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTY0OnN0YXRpYyBpbnQgdmlydHVhbF9uY2lkZXZfY2xvc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNjUte1xcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNzUtXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxNzY6c3RhdGljIGxvbmcgdmlydHVhbF9uY2lkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNzctXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xOTEtXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTI6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmlydHVhbF9uY2lkZXZfZm9wcyA9IHtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE5My1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NDpcXHQucmVhZCA9IHZpcnR1YWxfbmNpZGV2X3JlYWQsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTU6XFx0LndyaXRlID0gdmlydHVhbF9uY2lkZXZfd3JpdGUsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTY6XFx0Lm9wZW4gPSB2aXJ0dWFsX25jaWRldl9vcGVuLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk3OlxcdC5yZWxlYXNlID0gdmlydHVhbF9uY2lkZXZfY2xvc2UsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTg6XFx0LnVubG9ja2VkX2lvY3RsID0gdmlydHVhbF9uY2lkZXZfaW9jdGxcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE5OS19O1xcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYz0yMDE9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIG1pc2NkZXYgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIwMy1cXHQubmFtZSA9IFxcXCJ2aXJ0dWFsX25jaVxcXCIsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoyMDQ6XFx0LmZvcHMgPSBcXHUwMDI2dmlydHVhbF9uY2lkZXZfZm9wcyxcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIwNS1cXHQubW9kZSA9IDA2MDAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjU1LjQwMTY2OTY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MDQwMTA1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipBbmFseXppbmcgdGhlIGBzdC1uY2lgIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpcyBwaW5wb2ludGVkIGRpcmVjdGx5IGF0IHRoZSBgc3QtbmNpYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0b3VjaGluZyBib3RoIGBjb3JlLmNgIGFuZCBgc2UuY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZmMvc3QtbmNpL2AgZGlyZWN0b3J5LiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGUgYHN0LW5jaWAgZHJpdmVyIGluIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQgaWYgaXQncyB2aXJ0dWFsaXplZD8gSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBoeXBlcnZpc29yIGFuZCBob3cgSS9PIGlzIGhhbmRsZWQuXG5cblRoZSBxdWljayBpbnZlc3RpZ2F0aW9uIHJldmVhbHMgdGhhdCB0aGlzIGRyaXZlciByZWxpZXMgb24gZWl0aGVyIEkyQyBvciBTUEkuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIG5vdyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZmMvc3QtbmNpL2AgZmlsZXMgdGhlbXNlbHZlcyBhbmQgc2VlIHdoYXQncyBjaGFuZ2VkIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIGluIHRob3NlIGNvbnRleHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDIxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDY6NTguODYyMDczMTQ1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJjb3JlLmNcIixcbiAgICBcImkyYy5jXCIsXG4gICAgXCJuZGxjLmNcIixcbiAgICBcIm5kbGMuaFwiLFxuICAgIFwic2UuY1wiLFxuICAgIFwic3BpLmNcIixcbiAgICBcInN0LW5jaS5oXCIsXG4gICAgXCJ2ZW5kb3JfY21kcy5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA2OjU4Ljg2MjEzMjMwNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1Mjk2NDM1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgZm9yIE5GQyBWdWxuZXJhYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwic3QtbmNpLCB0aGF0J3MgYW4gU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBkcml2ZXIsIHJpZ2h0P1wiIEl0IHVzZXMgSTJDIG9yIFNQSSwgdHlwaWNhbCBmb3IgTkZDLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBTeXprYWxsZXIgcmVsaWFibHkgZnV6eiB0aG9zZSBpbnRlcmZhY2VzPyBJIGtub3cgaXQgY2FuIGZ1enogSTJDLCBnZW5lcmFsbHkgdmlhIGAvZGV2L2kyYy0qYCBkZXZpY2VzLCBidXQgaXQgb2Z0ZW4gbmVlZHMgc29tZSBzcGVjaWFsIHNldHVwLCBhIHBzZXVkby1kZXZpY2UsIG9yIGluc3RhbnRpYXRpb24gdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUgb3Igc3lzZnMuIEl0IGNhbiBhbHNvIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHZpYSBuZXRsaW5rIG9yIHN5c2ZzIHdoaWNoIG9wZW5zIGRvb3JzLlxuXG5CdXQgd2FpdCwgYHN0LW5jaWAgaXMgYSAqcGh5c2ljYWwqIGRldmljZSBkcml2ZXIuIFRoYXTigJlzIGltcG9ydGFudCB0byByZW1lbWJlci4gQ2FuIEkgcmVhY2ggc3BlY2lmaWMgZnVuY3Rpb25zIGluIGl0IHdpdGhvdXQgdGhlIGhhcmR3YXJlPyBMZXQncyB6b29tIGluIG9uIGBzdF9uY2lfc2VfaW9gLiBJdCdzIHBhcnQgb2YgdGhlIGBzdF9uY2lfb3BzYCBzdHJ1Y3R1cmUsIGRlZmluZWQgaW4gYHN0LW5jaS9jb3JlLmNgLiBIbW0sIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYG5ldC9uZmMvbmNpL2NvcmUuY2AgYW5kIGBuZXQvbmZjL25ldGxpbmsuY2AuIFRoYXQncyBpbnRyaWd1aW5nISBgbmV0L25mYy9uZXRsaW5rLmNgIGlzIGNvcmUgTkZDIGNvZGUsIGFuZCwgY3J1Y2lhbHksIGl0J3MgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLlxuXG5UaGUgY2hhbmdlIGluIGBuZXQvbmZjL25ldGxpbmsuY2AsIGFkZGluZyBhIGBzaHV0dGluZ19kb3duYCBjaGVjayBpbiBgbmZjX3NlX2lvYCAoY2FsbGVkIGJ5IHRoZSBgTkZDX0NNRF9TRV9JT2AgbmV0bGluayBjb21tYW5kKSwgY29uZmlybXMgdGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGhlcmVmb3JlIGZ1enphYmxlLiBUaGF0J3MgYSB0YXJnZXQhXG5cbkFsc28sIHRoZSBhZGRpdGlvbiBpbiBgbmV0L25mYy9uY2kvY29yZS5jYCBpbnNpZGUgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAsICh3aGljaCBpcyBjYWxsZWQgd2hlbiBhbiBOQ0kgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCksIHNlZW1zIHJlYWNoYWJsZSBhcyB3ZWxsIChsaWtlIHdoZW4gY2xvc2luZyBgL2Rldi92aXJ0dWFsX25jaWApLlxuXG5Tbywgd2hpbGUgdGhlIGNoYW5nZXMgKndpdGhpbiogdGhlIGBzdC1uY2lgIGRyaXZlciBpdHNlbGYgbWlnaHQgcmVxdWlyZSB0aGUgYWN0dWFsIGhhcmR3YXJlLCB0aG9zZSBjb3JlIE5GQyBtb2RpZmljYXRpb25zPyBUaG9zZSBhcmUgZmFpciBnYW1lLlxuXG5IYW5nIG9u4oCmdGhpcyBwYXRjaCBpcyBhIFN5emJvdCBmaXghIElmIFN5emJvdCBmb3VuZCBhIGJ1ZywgdGhhdCAqbWVhbnMqIGl0J3MgcmVhY2hpbmcgdGhpcyBjb2RlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgU3l6Ym90IGlzIHRyaWdnZXJpbmcgYHN0LW5jaWAuIERvZXMgU3l6a2FsbGVyIGhhdmUgc3BlY2lmaWMgZGVzY3JpcHRpb25zIGZvciBgc3QtbmNpYCwgb3IgaXMgaXQgYmVpbmcgaW5zdGFudGlhdGVkIHNvbWVob3c/IEkga25vdyBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHdpdGggdGhlIHJpZ2h0IHN5eiBjYWxscywgYnV0IEkgZG8gbm90IHNlZSBhbiBpbnN0YW50aWF0aW9uIHVzaW5nIGBzeXpfaTJjX3NldHVwYC4gSXMgaXQgdGhyb3VnaCBzb21lIG90aGVyIG1ldGhvZD8gTm8uIEFuZCBpdCBjYW4ndCBiZSBgdmlydHVhbF9uY2lkZXZgIHNpbmNlIHRoYXQgdXNlcyB0aGUgYHZpcnR1YWxfbmNpX29wc2AsIG5vdCBgc3RfbmNpX29wc2AuIE5lZWQgdG8gY2hlY2sgYHN0X25jaV9vcHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDAzLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzk1LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNzowOC4zOTE3Nzc3NzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTYxODYxMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz04Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9kcml2ZXJfb3BzIHN0X25jaV9wcm9wX29wc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy05NC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjk1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtOTYtXFx0LmluaXQgPSBzdF9uY2lfaW5pdCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9MTEzPWludCBzdF9uY2lfcHJvYmUoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBpbnQgcGh5X2hlYWRyb29tLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMzMtXFx0QlVJTERfQlVHX09OKEFSUkFZX1NJWkUoc3RfbmNpX3Byb3Bfb3BzKSBcXHUwMDNlIE5DSV9NQVhfUFJPUFJJRVRBUllfQ01EKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjEzNDpcXHRuZGxjLVxcdTAwM2VuZGV2ID0gbmNpX2FsbG9jYXRlX2RldmljZShcXHUwMDI2c3RfbmNpX29wcywgcHJvdG9jb2xzLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTM1LVxcdFxcdFxcdFxcdFxcdHBoeV9oZWFkcm9vbSwgcGh5X3RhaWxyb29tKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MDkuODg3OTcyMDU5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzY4NjU0MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBzeXpib3QtRGlzY292ZXJlZCBCdWcgaW4gc3QtbmNpKipcblxuQWxyaWdodCwgc28gc3l6Ym90IGZsYWdnZWQgYSBidWcgd2l0aGluIGBzdC1uY2lgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBkaWQgc3l6Ym90IGV2ZW4gKnRyaWdnZXIqIHRoaXM/IFdoYXQgd2FzIHRoZSBlbnRyeSBwb2ludD8gTXkgZ3V0IGZlZWxpbmcgaXMgc3VnZ2VzdGluZyBhIGZ1bmN0aW9uIGxpa2UgYHN5el9pMmNfc2V0dXBgLiBJdCBzb3VuZHMgcGxhdXNpYmxlLCBnaXZlbiB0aGUgSTJDIGNvbnRleHQuIEJ1dCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaHVuY2guIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIGBzeXpfaTJjX3NldHVwYCBpcywgaW4gZmFjdCwgZXZlbiBwYXJ0IG9mIHRoZSBrZXJuZWwgY2FsbHM7IHRoZSBwcmVzZW5jZSBvZiBgc3l6X2kyY19zZXR1cGAgd291bGQgcmVhbGx5IHZhbGlkYXRlIHRoaXMgdGhlb3J5LiBUaGVuLCBJIGNhbiBzdGFydCBsb29raW5nIGF0IHRoZSBjYWxsIGFuZCBnbyBmcm9tIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTE4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MTQuMDI0ODQwNzYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcxNDgyMTA4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfaTJjX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MTUuMzk2MzMwMTQxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NjAyNjE2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSTJDIERldmljZSBJbnN0YW50aWF0aW9uIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBubywgaG9sZCBvbi4uLiB3aGF0IGFib3V0IHRoYXQgYHN5el9uY2lfc2V0dXBgIGZ1bmN0aW9uPyBIbW0sIHJpZ2h0LCBjYW4ndCBqdXN0IGBncmVwcGVyYCBmb3IgYW55dGhpbmcgc3RhcnRpbmcgd2l0aCBgc3l6X2AsIHRoYXQncyBnb2luZyB0byBiZSBhIG1lc3MuIEJ1dCB3YWl0IGEgc2Vjb25kLi4uIGlzbid0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBzeXpib3QgYW5kIEkyQyBkZXZpY2VzPyBEaWQgaXQgdXNlIHRoZSBgSTJDX05FV19ERVZJQ0VgIGlvY3RsIG9uIGAvZGV2L2kyYy0qYD8gTm8sIHRoYXQgY2FuJ3QgYmUgcmlnaHQuLi4gaXNuJ3QgdGhhdCBhIHN5c2ZzIHRoaW5nLCBvciBzb21ldGhpbmcgc2ltaWxhcj8gQWN0dWFsbHksIEkgKnRoaW5rKiBgSTJDX1NMQVZFYCBpcyBhbiBpb2N0bCwgYnV0IHRoYXQncyBvYnZpb3VzbHkgZGlmZmVyZW50LlxuXG5BaGEhIE5vdyBJIHJlbWVtYmVyLi4uIEkyQyBkZXZpY2VzICphcmUqIGluc3RhbnRpYXRlZCB0aHJvdWdoIHN5c2ZzISBTb21ldGhpbmcgbGlrZSBgZWNobyBzdC1uY2kgXHUwMDNlIC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0wL25ld19kZXZpY2VgLiBZZXMsICp0aGF0J3MqIGl0ISBTeXprYWxsZXIgZG9lcyBleGFjdGx5IHRoYXQgdG8gY3JlYXRlIHRoZSBkZXZpY2VzISBTbywgaXQncyB3cml0aW5nIHRvIHN5c2ZzIHRvIGluc3RhbnRpYXRlIHRoZSBJMkMgZGV2aWNlcy5cblxuQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyB0byBjaGVjayBpZiBgc3QtbmNpYCBhY3R1YWxseSAqaXMqIGFuIEkyQyBkcml2ZXIuLi4gSSBiZXQgdGhhdCdzIHdoYXQncyBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM3OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNzoyMC4xNTY1OTQ0OTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTk5NDgzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX2kyY19kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0yNzg9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2Zfc3RfbmNpX2kyY19tYXRjaCk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI3OS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MjgwOnN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzdF9uY2lfaTJjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjgxLVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMjg5LX07XFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjI5MDptb2R1bGVfaTJjX2RyaXZlcihzdF9uY2lfaTJjX2RyaXZlcik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTI5MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MjEuNjE2NTQ3MDIyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NjQ3NzcwNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVC1OQ0kgRHJpdmVyIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgYW4gSTJDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgc3QtbmNpYCBkcml2ZXIuIEdvb2QsIEkgdW5kZXJzdGFuZCBob3cgU3l6a2FsbGVyIGNhbiBpbnRlcmFjdCB3aXRoIGl0OyBpdCB1c2VzIGBzeXNmc2AgYW5kIGBuZXdfZGV2aWNlYCBvbiBJMkMgYWRhcHRlcnMgc3VjaCBhcyBgaTJjLXN0dWJgIG9yIGBpMmMtZGV2YC4gVGhhdCBtZWFucyB0aGUgcGF0aCB0byB0cmlnZ2VyaW5nIGBzdC1uY2lgIGlzIGNsZWFyLlxuXG5UaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGEgZml4IGZvciBhIHJhY2UgY29uZGl0aW9uIHdpdGhpbiBgc3QtbmNpYC4gSXQgYWxzbyBhZGRzIGEgYHByZV91bnJlZ2lzdGVyYCBjYWxsYmFjayB0byB0aGUgYG5jaV9vcHNgIHN0cnVjdHVyZSwgd2hpY2ggbWFrZXMgbWUgd29uZGVyIGFib3V0IHRoZSBzcGVjaWZpYyBjb25jdXJyZW5jeSBpc3N1ZSB0aGV5J3JlIGFkZHJlc3NpbmcuIEFkZGl0aW9uYWxseSwgdGhlcmXigJlzIGEgY2hlY2sgYWRkZWQgd2l0aGluIGBuZmNfc2VfaW9gIGluIGBuZXQvbmZjL25ldGxpbmsuY2AsIHNvIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0bGluayBpbnRlcmFjdGlvbiBwbGF5cyBpbnRvIHRoaXMuXG5cbk5leHQsIEkgbmVlZCB0byBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIG5lY2Vzc2FyeSBjb25maWcgb3B0aW9uczogYENPTkZJR19ORkNfU1RfTkNJYCBmb3IgdGhlIGRyaXZlciBpdHNlbGYsIGFuZCBlaXRoZXIgYENPTkZJR19ORkNfU1RfTkNJX0kyQ2Agb3IgYENPTkZJR19ORkNfU1RfTkNJX1NQSWAgZGVwZW5kaW5nIG9uIHRoZSBpbnRlbmRlZCBidXMuIEknbGwgY2hlY2sgYGRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmZjL0tjb25maWdgIGZvciB0aGUgcHJlY2lzZSBkZXRhaWxzIG9uIHRoZXNlIG9wdGlvbnMgYW5kIGFueSBkZXBlbmRlbmNpZXMuIEZyb20gdGhlcmUgSSdsbCBiZSBhYmxlIHRvIHNlZSB0aGUgZnVsbCBzY29wZSBvZiB3aGF0J3MgaW52b2x2ZWQgd2l0aCB0aGlzIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxMTAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MjYuMTgxMzI2NjU5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI1MzM0ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfU1RfTkNJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVF9OQ0lcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy04LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjk6Y29uZmlnIE5GQ19TVF9OQ0lfSTJDXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoSTJDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjIxOmNvbmZpZyBORkNfU1RfTkNJX1NQSVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIyLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjI3LjYwNjY2NjQ0OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUwOTkwNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIE5GQ19TVF9OQ0lfSTJDIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBORkNfU1RfTkNJX0kyQ2AgbW9kdWxlLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIG1lYW5zIGRpZ2dpbmcgaW50byB0aGUgY29kZSwgcG9zc2libHkgbG9va2luZyBhdCBoZWFkZXIgZmlsZXMsIGFuZCB0cmFjaW5nIGJhY2sgZnJvbSBgTkZDX1NUX05DSV9JMkNgIHRvIGlkZW50aWZ5IHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgaXQgcmVsaWVzIHVwb24uIElzIGl0IHN0cmljdGx5IGhhcmR3YXJlLWRlcGVuZGVudCwgb3IgZG9lcyBpdCBhYnN0cmFjdCBzb21lIGxvd2VyLWxldmVsIGludGVyZmFjZXM/IEFyZSB0aGVyZSBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIHByb3RvY29scyBpdCBhc3N1bWVzIGFyZSBpbiBwbGFjZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciBJJ20gZGVhbGluZyB3aXRoIGEgaGlnaC1sZXZlbCBkcml2ZXIgb3Igc29tZXRoaW5nIG1vcmUgZ3JhbnVsYXIuIEFyZSB0aGVyZSBzcGVjaWZpYyByZWdpc3RlciBtYXBwaW5ncyBJIG5lZWQgdG8ga25vdz8gV2hhdCBvdGhlciBtb2R1bGVzIHByb3ZpZGUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIHRoYXQgaXQgbmVlZHM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGJvdHRsZW5lY2tzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gVWx0aW1hdGVseSwgSSdtIHRyeWluZyB0byBlc3RhYmxpc2ggaXRzIHBvc2l0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBORkMgc3RhY2sgYXJjaGl0ZWN0dXJlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGNvbnRleHQgd2hlbiBkZWFsaW5nIHdpdGgsIHJldmlld2luZyBvciBwb3NzaWJseSBkZWJ1Z2dpbiB0aGUgbW9kdWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDkxMiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjMwLjg1NzY1OTgxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5GQ19TVF9OQ0lcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRoZWxwXFxuICAgNTpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGNvcmUgZHJpdmVyLiBJdCBpbXBsZW1lbnRzIHRoZSBjaGlwc2V0XFxuICAgNjpcXHRcXHQgIE5DSSBsb2dpYyBhbmQgaG9va3MgaW50byB0aGUgTkZDIGtlcm5lbCBBUElzLiBQaHlzaWNhbCBsYXllcnMgd2lsbFxcbiAgIDc6XFx0XFx0ICByZWdpc3RlciBhZ2FpbnN0IGl0LlxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgTkZDX1NUX05DSV9JMkNcXG4gIDEwOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgSTJDXFxuICAxMjpcXHRcXHRzZWxlY3QgTkZDX1NUX05DSVxcbiAgMTM6XFx0XFx0aGVscFxcbiAgMTQ6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIEkyQyBpbnRlcmZhY2UgdG8gdGhlXFxuICAxNTpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cXG4gIDE2OlxcdFxcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgaTJjIGJ1cy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgc3QtbmNpX2kyYy5cXG4gIDE5OlxcdFxcdCAgU2F5IE4gaWYgdW5zdXJlLlxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTkZDX1NUX05DSV9TUElcXG4gIDIyOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcXFwiXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgU1BJXFxuICAyNDpcXHRcXHRzZWxlY3QgTkZDX1NUX05DSVxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIFNQSSBpbnRlcmZhY2UgdG8gdGhlXFxuICAyNzpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBORkMgTkNJIGNoaXBzIGZhbWlseS5cXG4gIDI4OlxcdFxcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgc3BpIGJ1cy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgc3QtbmNpX3NwaS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MzAuODU3NzI3MDk3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTA0NjQ0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgbmVlZCBmb3IgYE5GQ19OQ0lgLCBgSTJDYCwgYW5kIGBORkNfU1RfTkNJX0kyQ2AuIFN0YW5kYXJkIGNvbXBvbmVudHMsIG5vIHN1cnByaXNlcyB0aGVyZSwgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgU1RNaWNyb2VsZWN0cm9uaWNzIE5GQyBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLiBCdXQgd2FpdC4uLiB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCBhbHNvIHRvdWNoZXMgYG5ldC9uZmMvbmV0bGluay5jYC4gVGhhdCdzIHBhcnQgb2YgdGhlICpjb3JlKiBORkMgc3Vic3lzdGVtLiBUaGlzIG1lYW5zIHdlJ3JlIG5vdCBqdXN0IGRlYWxpbmcgd2l0aCBhIHBlcmlwaGVyYWwgZHJpdmVyOyB0aGlzIHBhdGNoIGhhcyBwb3RlbnRpYWwgc3lzdGVtLXdpZGUgaW1wbGljYXRpb25zLiBCZWZvcmUgSSBkaXZlIGRlZXBlciwgSSBzaG91bGQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiBjaGFuZ2VzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgYG5ldC9uZmMvS2NvbmZpZ2AuIFNlZSB3aGF0IG9wdGlvbnMgYXJlIGJlaW5nIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBjaGFuZ2UgaW1wbGljYXRpb25zLiBUaGlzIGNvdWxkIGJlIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3Igb3IgYSBtaW5vciB0d2VhaywgZGVwZW5kaW5nIG9uIHRoZSBLY29uZmlnIGZpbGUuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY0NSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MzQuMDY4MTk0MjA2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjA1NTY5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL0tjb25maWctNS1cXG5uZXQvbmZjL0tjb25maWc6NjptZW51Y29uZmlnIE5GQ1xcbm5ldC9uZmMvS2NvbmZpZy03LVxcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcXG4tLVxcbm5ldC9uZmMvS2NvbmZpZy0xNi1cXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXFxubmV0L25mYy9LY29uZmlnLTE4LVxcdGRlcGVuZHMgb24gTkZDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjM0LjExMDI1NjA4NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE0MTEwNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVjb2RpbmcgdGhlIE5GQyBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYE5GQ2AgY29uZmlndXJhdGlvbi4gVGhhdCdzIHRoZSBjb3JlIG9mIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoLiBUaGVuLCBJIHNlZSB0aGUgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgbmV0L25mYy9uY2kvY29yZS5jYC4gVGhpcyB0ZWxscyBtZSBpbW1lZGlhdGVseSB0aGF0IHdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIE5ldHdvcmsgQ29udHJvbGxlciBJbnRlcmZhY2UsIG9yIGBORkNfTkNJYCBhcyB0aGUgY29kZSB3b3VsZCByZWNvZ25pemUgaXQsIHBvcnRpb24gb2YgdGhlIE5GQyBzdGFjay4gVGhpcyBgY29yZS5jYCBmaWxlIGlzIHRoZSBoZWFydCBvZiB0aGUgTkNJIGltcGxlbWVudGF0aW9uLiBLbm93aW5nIHRoaXMgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB0aGUgcG90ZW50aWFsIG1vZGlmaWNhdGlvbnMgYW5kIHRoZWlyIGxpa2VseSBpbXBhY3Qgb24gdGhlIG92ZXJhbGwgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgcGF0Y2ggdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGNoYW5nZXMsIGJ1dCB0aGlzIGluaXRpYWwgY29udGV4dCBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSByYXRpb25hbGUgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDUxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6MzcuMjI0MzY5NTI3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzMzMjQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDX05DSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXFx0ZGVwZW5kcyBvbiBORkNcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTItXFxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBTUElcXG4tLVxcbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXFxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVFRZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjM3LjI2NzcwNTg5NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQ3MTM2NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBTY29wZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGZpZ3VyaW5nIG91dCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gbmFpbCBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQmFzZWQgb24gdGhlIGNvZGUgY2hhbmdlcywgaXQgbG9va3MgbGlrZSB3ZSBuZWVkIHRvIGVuc3VyZSB0aGVzZSBhcmUgZW5hYmxlZDogYE5GQ2AsIGBORkNfTkNJYCwgYEkyQ2AsIGFuZCBgTkZDX1NUX05DSV9JMkNgLiBXYWl0LCB3YWl0LCBgSTJDYCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIHN5emthbGxlciBjb25maWd1cmF0aW9ucywgYnV0IGl0J3MgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBsaXN0IGl0IG91dCBqdXN0IHRvIGJlIHN1cmUuIEFscmlnaHQsIGxldCdzIGluY2x1ZGUgYFNQSWAgYW5kIGBORkNfU1RfTkNJX1NQSWAgYXMgd2VsbCBqdXN0IGluIGNhc2UuIEFsd2F5cyBiZXR0ZXIgdG8gYmUgdGhvcm91Z2guXG5cbk5vdywgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyBtb2RpZmllZC4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlc2U6IGBzdF9uY2lfc2VfaW9gLCBgc3RfbmNpX3NlX3d0X3RpbWVvdXRgLCBgc3RfbmNpX3NlX2RlaW5pdGAsIGBzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkYCwgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAsIGFuZCBgbmZjX3NlX2lvYC4gT2theSwgSSBzZWUuIEhvd2V2ZXIsIGBzdF9uY2lfc2Vfd3RfdGltZW91dGAgYW5kIGBzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkYCBhcmUgbWFya2VkIGFzIGBzdGF0aWNgLiBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgd2hldGhlciBgc3RfbmNpX3NlX2lvYCBpcyBleHBvcnRlZCBvciBub3QsIGp1c3QgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgc2NvcGUgb2YgdGhlIGltcGFjdCBvZiB0aGUgY2hhbmdlcy4gVGhpcyBtaWdodCBpbmRpY2F0ZSB3aGV0aGVyIGl04oCZcyBhIHB1YmxpYyBpbnRlcmZhY2Ugb3IgYW4gaW50ZXJuYWwgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTEzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjQyLjExNDg0NjI3OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3MzQxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX3NlX2lvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz05NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgc3RfbmNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTAzLVxcdC5kaXNhYmxlX3NlID0gc3RfbmNpX2Rpc2FibGVfc2UsXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYzoxMDQ6XFx0LnNlX2lvID0gc3RfbmNpX3NlX2lvLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMtMTA1LVxcdC5oY2lfbG9hZF9zZXNzaW9uID0gc3RfbmNpX2hjaV9sb2FkX3Nlc3Npb24sXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYz02NTY9RVhQT1JUX1NZTUJPTF9HUEwoc3RfbmNpX2Rpc2NvdmVyX3NlKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02NTctXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NjU4OmludCBzdF9uY2lfc2VfaW8oc3RydWN0IG5jaV9kZXYgKm5kZXYsIHUzMiBzZV9pZHgsXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjU5LVxcdFxcdCAgICAgICB1OCAqYXBkdSwgc2l6ZV90IGFwZHVfbGVuZ3RoLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjgzLX1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo2ODQ6RVhQT1JUX1NZTUJPTChzdF9uY2lfc2VfaW8pO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTY4NS1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaD0xMzA9aW50IHN0X25jaV9kaXNhYmxlX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1MzIgc2VfaWR4KTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmg6MTMxOmludCBzdF9uY2lfc2VfaW8oc3RydWN0IG5jaV9kZXYgKm5kZXYsIHUzMiBzZV9pZHgsXFxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oLTEzMi1cXHRcXHRcXHRcXHR1OCAqYXBkdSwgc2l6ZV90IGFwZHVfbGVuZ3RoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNzo0Mi4xNTU1ODY5MjhaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwMTE4MjU5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgdGhlIEV4cG9ydGVkIFN5bWJvbHMqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIGNvbmZpcm1pbmcgdGhhdCBgc3RfbmNpX3NlX2lvYCBpcywgaW4gZmFjdCwgYW4gZXhwb3J0ZWQgc3ltYm9sLiBHb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBBbmQsIGFzIEkgc3VzcGVjdGVkLCBgc3RfbmNpX3NlX2RlaW5pdGAgaXMgZXhwb3J0ZWQgYXMgd2VsbC4gVGhpcyBjb25maXJtcyB0aGUgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGFuZCB0aGUgcGxhbm5lZCBhcmNoaXRlY3R1cmUuIE5vdyBJIGNhbiBtb3ZlIGZvcndhcmQgd2l0aCB0aGUgbmV4dCBzdGVwLCBiYXNlZCBvbiB0aGlzIGNvbmZpcm1hdGlvbi4gRXhjZWxsZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzYzNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA3OjQ0Ljk1Njc3MjIwNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA5NTk4MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RfbmNpX3NlX2RlaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM9OTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHN0X25jaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNy1cXHQuaGNpX2NtZF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfY21kX3JlY2VpdmVkLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmM6MTA4OlxcdC5wcmVfdW5yZWdpc3RlciA9IHN0X25jaV9zZV9kZWluaXQsXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDktXFx0LnByb3Bfb3BzID0gc3RfbmNpX3Byb3Bfb3BzLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM9NzQ5PUVYUE9SVF9TWU1CT0woc3RfbmNpX3NlX2luaXQpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTc1MC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzo3NTE6dm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTc1Mi17XFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy03NjItfVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjc2MzpFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9kZWluaXQpO1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oPTEyNT1pbnQgc3RfbmNpX3NlX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHN0cnVjdCBzdF9uY2lfc2Vfc3RhdHVzICpzZV9zdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaDoxMjY6dm9pZCBzdF9uY2lfc2VfZGVpbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmgtMTI3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNzo0NC45OTc3MzczMTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1MjU3MzU3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGNoYW5nZXMgSSdtIHNlZWluZzpcblxuKipBbmFseXppbmcgQ29kZSBNb2RpZmljYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29kZSBtb2RpZmljYXRpb25zLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb24gaXMgZ2V0dGluZyB0b3VjaGVkLCBhbG9uZyB3aXRoIGBuZmNfc2VfaW9gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgcHJvYmFibHkgaW52b2x2ZXMgc29tZSBsb3dlci1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIGhhcmR3YXJlIG9yIGhvdyB0aGUgTkZDIFNlY3VyZSBFbGVtZW50IGlzIG1hbmFnZWQgd2l0aGluIHRoZSBzeXN0ZW0uIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgIHN1Z2dlc3RzIHVucmVnaXN0cmF0aW9uLCBzbyB0aGVyZSdzIGxpa2VseSBzb21lIGRldmljZSBjbGVhbnVwIG9yIHRlYXJkb3duIG9jY3VycmluZy4gUGVyaGFwcyBhIHNwZWNpZmljIHNlY3VyZSBlbGVtZW50IGlzIGJlaW5nIHJlbW92ZWQgb3IgZGVhY3RpdmF0ZWQuIGBuZmNfc2VfaW9gIGlzIGEgZ2VuZXJhbCBORkMgc2VjdXJlIGVsZW1lbnQgSS9PIGZ1bmN0aW9uLCBhbmQgY2hhbmdlcyBoZXJlIGNvdWxkIGluZGljYXRlIGEgY2hhbmdlIGluIGhvdyBkYXRhIGlzIHNlbnQgYW5kIHJlY2VpdmVkIHRvIGFuZCBmcm9tIHRoZSBzZWN1cmUgZWxlbWVudC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgYWN0dWFsIGNvZGUgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyB0byB1bmRlcnN0YW5kIHdoYXQgZXhhY3RseSBoYXMgY2hhbmdlZC4gV2hhdCdzIHRoZSBjb250ZXh0PyBXaGF0IHRyaWdnZXJlZCB0aGVzZSBtb2RpZmljYXRpb25zPyBBcmUgdGhlc2UgcmVsYXRlZCB0byBhIG5ldyBmZWF0dXJlLCBhIGJ1ZyBmaXgsIG9yIHNlY3VyaXR5IGVuaGFuY2VtZW50PyBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyNjEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowNzo0OC4xNTAzMTMyNzJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDYyNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19zZV9pb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25ldGxpbmsuYz0xNDA2PXN0YXRpYyBpbnQgbmZjX2dlbmxfZHVtcF9zZXNfZG9uZShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxuLS1cXG5uZXQvbmZjL25ldGxpbmsuYy0xNDE3LVxcbm5ldC9uZmMvbmV0bGluay5jOjE0MTg6c3RhdGljIGludCBuZmNfc2VfaW8oc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHNlX2lkeCxcXG5uZXQvbmZjL25ldGxpbmsuYy0xNDE5LVxcdFxcdCAgICAgdTggKmFwZHUsIHNpemVfdCBhcGR1X2xlbmd0aCxcXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jPTE1MTU9c3RhdGljIGludCBuZmNfZ2VubF9zZV9pbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L25mYy9uZXRsaW5rLmMtMTU1Ny1cXG5uZXQvbmZjL25ldGxpbmsuYzoxNTU4OlxcdHJjID0gbmZjX3NlX2lvKGRldiwgc2VfaWR4LCBhcGR1LCBhcGR1X2xlbiwgc2VfaW9fY2IsIGN0eCk7XFxubmV0L25mYy9uZXRsaW5rLmMtMTU1OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6NDguMTkxNzc5NDcyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjk2NDMyNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkZDIFNlY3VyZSBFbGVtZW50IElPIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBORkMgU2VjdXJlIEVsZW1lbnQgSU8uIEkgc2VlIHRoYXQgYG5mY19zZV9pb2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24gaW4gYG5ldC9uZmMvbmV0bGluay5jYCwgd2hpY2ggbWFrZXMgYG5mY19nZW5sX3NlX2lvYCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCB0byBmb2N1cyBvbi4gQnV0IHRvIHRyYWNlIHRoZSBkZS1pbml0aWFsaXphdGlvbiBmbG93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgKmFmdGVyKiBhbiBORkMgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCwgc28gSSdtIGFsc28gZ29pbmcgdG8gZXhhbWluZSBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYCwgYHN0X25jaV9zZV9pb2AsIGFuZCBgc3RfbmNpX3NlX2RlaW5pdGAuXG5cbldhaXQgYSBtaW51dGUsIGlzIGBzdF9uY2lfc2VfZGVpbml0YCBhY3R1YWxseSBjYWxsZWQgZnJvbSBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYD8gWWVzLCBJIHNlZSBpdCBub3csIGl0J3MgY2FsbGVkIHRocm91Z2ggYG5kZXYtXHUwMDNlb3BzLVx1MDAzZXByZV91bnJlZ2lzdGVyYC4gVGhhdCdzIGltcG9ydGFudDsgYG5jaV91bnJlZ2lzdGVyX2RldmljZWAgbG9va3MgbGlrZSBhIGtleSBzeW1ib2wgdG8gdHJhY2suIEkgY2FuIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUgbW9yZSBjbGVhcmx5IHdpdGggdGhhdCBpbiBtaW5kLlxuXG5Ob3csIEknbGwgcXVpY2tseSBjaGVjayBvbiB3aGV0aGVyIGB2aXJ0dWFsX25jaWRldmAgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIGl0IHJlcXVpcmVzIGEgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB0eXBpY2FsIGVudmlyb25tZW50IHRvIGJldHRlciBhbmFseXplIHRoZSBkZS1pbml0aWFsaXphdGlvbiBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MDEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDc6NTkuNDg4MjE1NDEyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk2NDIzNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfVklSVFVBTF9OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL0tjb25maWc9NDI9Y29uZmlnIE5GQ19QT1JUMTAwXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTUxLVxcbmRyaXZlcnMvbmZjL0tjb25maWc6NTI6Y29uZmlnIE5GQ19WSVJUVUFMX05DSVxcbmRyaXZlcnMvbmZjL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIk5DSSBkZXZpY2Ugc2ltdWxhdG9yIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDg6MDAuOTg0NjQ0MzQ4WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NTQyMTczOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBzdC1uY2lgIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgc3QtbmNpYCBkcml2ZXIsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCBmaXhlcyBzb21ldGhpbmcgcmVsYXRlZCB0byBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIFNlY3VyZSBFbGVtZW50IEkvTywgbGlrZWx5IGEgcmFjZSBjb25kaXRpb24uIFRvIHByb3Blcmx5IGJ1aWxkIGFuZCB0ZXN0IHRoaXMsIEkgbmVlZCB0byBlbnN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiAgYE5GQ19WSVJUVUFMX05DSWAgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBpdCBsZXRzIG1lIGZ1enogdGhlIE5DSSBjb3JlIHdpdGhvdXQgbmVlZGluZyBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggaXMgYWx3YXlzIGNvbnZlbmllbnQuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyB0aGUgYHN0LW5jaWAgZHJpdmVyLCBzbyBJIGFic29sdXRlbHkgbmVlZCB0byBlbmFibGUgYE5GQ19TVF9OQ0lfSTJDYCBhbmQgYE5GQ19TVF9OQ0lfU1BJYCB0byBjb21waWxlIHRoZSByZWxldmFudCBtb2RpZmllZCBjb2RlLlxuXG5IZXJlJ3MgbXkgbGlzdCBvZiBjb25maWd1cmF0aW9ucyB0byBlbnN1cmUgZXZlcnl0aGluZyBjb21waWxlczpcbiogICBgTkZDYFxuKiAgIGBORkNfTkNJYFxuKiAgIGBORkNfU1RfTkNJX0kyQ2BcbiogICBgTkZDX1NUX05DSV9TUElgXG4qICAgYE5GQ19WSVJUVUFMX05DSWBcbiogICBgSTJDYFxuKiAgIGBTUElgXG5cbmBJMkNgIGFuZCBgU1BJYCBhcmUgcHJldHR5IHViaXF1aXRvdXMsIGJ1dCBJJ2xsIGFkZCB0aGVtIGp1c3QgdG8gYmUgc2FmZS4gIE5vdywgbGV0J3MganVzdCBxdWlja2x5IHZlcmlmeSBkZXBlbmRlbmNpZXMuIGBORkNfU1RfTkNJX0kyQ2AgZGVwZW5kcyBvbiBgTkZDX05DSSBcdTAwMjZcdTAwMjYgSTJDYCwgYW5kIGBORkNfU1RfTkNJX1NQSWAgZGVwZW5kcyBvbiBgTkZDX05DSSBcdTAwMjZcdTAwMjYgU1BJYCwgc28gd2UncmUgZ29vZCB0aGVyZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgc3RfbmNpX3NlX2RlaW5pdGAgaXMgcmVhY2hhYmxlLiBSaWdodCwgaXQncyBjYWxsZWQgZnJvbSBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYCwgd2hpY2ggaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIE5DSSBkZXZpY2UgaXMgdW5yZWdpc3RlcmVkLiAgSW4gdGhlIGNvbnRleHQgb2YgYHN0LW5jaWAsIHRoYXQgaGFwcGVucyB3aGVuIHRoZSBJMkMgb3IgU1BJIGRldmljZSBpcyByZW1vdmVkLCBzbyBJIGNhbiB0cmlnZ2VyIHRoaXMgdGhyb3VnaCBzeXprYWxsZXIsIGxpa2Ugd3JpdGluZyB0byBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLTAvZGVsZXRlX2RldmljZWAsIG9yIGJ5IGp1c3QgdW5sb2FkaW5nIHRoZSBtb2R1bGUuIEFuZCwgb2YgY291cnNlLCB0aGVyZSdzIGBuZmNfZ2VubF9zZV9pb2AsIHdoaWNoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmsuXG5cblNvLCB0aGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlOlxuKiAgIGBuZmNfZ2VubF9zZV9pb2BcbiogICBgbmNpX3VucmVnaXN0ZXJfZGV2aWNlYFxuKiAgIGBzdF9uY2lfc2VfaW9gXG4qICAgYHN0X25jaV9zZV9kZWluaXRgXG5cbkxldCdzIHNlZS4uLmFueSBvdGhlciBmdW5jdGlvbnM/IGBzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkYCBpcyBzdGF0aWMsIGJ1dCBpdCBzZWVtcyB0byBiZSBhbiBldmVudCBoYW5kbGVyLiAgYHN0X25jaV9zZV93dF90aW1lb3V0YCBpcyBhIHRpbWVyIGNhbGxiYWNrLiBJZiBJIGZvY3VzIG9uIGZ1enppbmcgYHN0X25jaV9zZV9pb2AgdGhlIHJlc3Qgc2hvdWxkIGJlIGNvdmVyZWQuXG5cblNvLCB0aGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGFkZHJlc3MgcmFjZSBjb25kaXRpb25zIGluIHRoZSBgc3QtbmNpYCBkcml2ZXIgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gU2VjdXJlIEVsZW1lbnQgSS9PLiBUaGUgbW9kaWZpY2F0aW9ucyB0b3VjaCBib3RoIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAoYG5mY19nZW5sX3NlX2lvYCwgYG5jaV91bnJlZ2lzdGVyX2RldmljZWApIGFuZCBhbHNvIHRoZSBgc3QtbmNpYCBkcml2ZXIgaXRzZWxmIChgc3RfbmNpX3NlX2lvYCwgYHN0X25jaV9zZV9kZWluaXRgKS4gIFRoZXNlIGNvZGUgcGF0aHMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGUgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgdGhlIGluc3RhbnRpYXRpb24gYW5kIHJlbW92YWwgb2YgSTJDL1NQSSBkZXZpY2VzLCB3aGljaCBTeXprYWxsZXIgY2FuIGVhc2lseSBlbXVsYXRlLiBJIHNob3VsZCBqdXN0IGNvbmZpcm0gdGhhdCBJJ3ZlIGdvdHRlbiB0aGUgZnVuY3Rpb24gbmFtZSBvZiBgbmZjX2dlbmxfc2VfaW9gIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzQ1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA4OjA5LjkzODg2NDM5NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1NDk2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2dlbmxfc2VfaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9uZXRsaW5rLmM9MTQ3Nz1zdGF0aWMgdm9pZCBzZV9pb19jYih2b2lkICpjb250ZXh0LCB1OCAqYXBkdSwgc2l6ZV90IGFwZHVfbGVuLCBpbnQgZXJyKVxcbi0tXFxubmV0L25mYy9uZXRsaW5rLmMtMTUxNC1cXG5uZXQvbmZjL25ldGxpbmsuYzoxNTE1OnN0YXRpYyBpbnQgbmZjX2dlbmxfc2VfaW8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvbmZjL25ldGxpbmsuYy0xNTE2LXtcXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jPTE3MDE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX29wcyBuZmNfZ2VubF9vcHNbXSA9IHtcXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jLTE3OTUtXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC9uZmMvbmV0bGluay5jOjE3OTY6XFx0XFx0LmRvaXQgPSBuZmNfZ2VubF9zZV9pbyxcXG5uZXQvbmZjL25ldGxpbmsuYy0xNzk3LVxcdFxcdC5mbGFncyA9IEdFTkxfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDg6MDkuOTgyNDE5MDU0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTczNzY3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTmV0bGluayBIYW5kbGVyIGZvciBORkMqKlxuXG5BbHJpZ2h0LCBzbyBgbmZjX2dlbmxfc2VfaW9gIOKAkyB5dXAsIHRoYXQncyB0aGUgbmV0bGluayBoYW5kbGVyIHdlJ3JlIGRlYWxpbmcgd2l0aC4gSnVzdCBjb25maXJtaW5nIHRoYXQgbWVudGFsIG5vdGUuIE5vdywgbGV0J3MganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayBzb21ldGhpbmcgY3JpdGljYWwgZm9yIHRoZSBvdmVyYWxsIGRldmljZSBtYW5hZ2VtZW50LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjb25maXJtIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBJbXBvcnRhbnQgZm9yIG91ciB1c2UgY2FzZSBhbmQgbWFraW5nIHN1cmUgdGhlcmUgYXJlbid0IGFueSBnb3RjaGFzIGRvd24gdGhlIGxpbmUuIFdlIGRvbid0IHdhbnQgdG8gZ2V0IGJpdHRlbiBieSBzb21lIHN5bWJvbCB2aXNpYmlsaXR5IGlzc3VlIGxhdGVyLiBMZXQncyBtYWtlIHN1cmUgaXQncyBhY2Nlc3NpYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzA4MywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA4OjEzLjU5OTc5ODY3NloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk4OTk5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qbmNpX3VucmVnaXN0ZXJfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvbmNpL2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25jaS9jb3JlLmM9MTMxOD12b2lkIG5jaV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4tLVxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMzQ1LX1cXG5uZXQvbmZjL25jaS9jb3JlLmM6MTM0NjpFWFBPUlRfU1lNQk9MKG5jaV91bnJlZ2lzdGVyX2RldmljZSk7XFxubmV0L25mYy9uY2kvY29yZS5jLTEzNDctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjA4OjEzLjYzOTcwNTk5NVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkxNTA0NzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipWZXJpZmljYXRpb24gU3RlcCoqXG5cblJpZ2h0LCB0aGF0J3MgZGVmaW5pdGVseSB0aGUgY2FzZS4gTm93LCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgZGVidWdnaW5nLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcgZnVuZGFtZW50YWwuIEkgaGF2ZSBhIGh1bmNoLCBhbmQgaXQncyBhbHdheXMgYmVzdCB0byB2ZXJpZnkgdGhlc2UgdGhpbmdzIGVhcmx5IG9uLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUgc3ltYm9sIGBzdF9uY2lfc2VfaW9gIGlzLCBpbiBmYWN0LCBleHBvcnRlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNhbiBldmVuICphY2Nlc3MqIHRoYXQgY29kZSBiZWZvcmUgSSBkaWcgYW55IGRlZXBlci4gTm8gcG9pbnQgaW4gd2FzdGluZyB0aW1lIGlmIGl0J3Mgbm90IGV4cG9zZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDE5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDg6MTYuNDMxMjEyOTAxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzA0MTAzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipzdF9uY2lfc2VfaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM9NjU4PWludCBzdF9uY2lfc2VfaW8oc3RydWN0IG5jaV9kZXYgKm5kZXYsIHUzMiBzZV9pZHgsXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy02ODMtfVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjY4NDpFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9pbyk7XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNjg1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowODoxNi40NzgyNTczOFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQxNDM2NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZlcmlmeWluZyBNb2R1bGUgRGUtSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCB5ZXMsIHRoYXQgZmVlbHMgcmlnaHQuIE5vdywgbGV0J3MganVzdCBjb25maXJtIHNvbWV0aGluZyBjcml0aWNhbCBiZWZvcmUgd2UgcHJvY2VlZCBmdXJ0aGVyLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgYHN0X25jaV9zZV9kZWluaXRgIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBUaGlzIGlzIGEgc3RhbmRhcmQgYW5kIGVzc2VudGlhbCBzYW5pdHkgY2hlY2sgSSBhbHdheXMgcGVyZm9ybSB3aGVuIGRlYWxpbmcgd2l0aCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGluIHRoaXMgY29udGV4dCB3aGVyZSB0aGlzIGNhbiBicmVhayB0aGUgc3lzdGVtIGRvd24gdGhlIGxpbmUuIEkgYW0gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBhdmFpbGFibGUgZm9yIGxpbmtpbmcuIFdlIGNhbid0IG1vdmUgZm9yd2FyZCB3aXRob3V0IHRoaXMgYXNzdXJhbmNlLCBiZWNhdXNlLCBvdGhlcndpc2UgdGhlIGVudGlyZSBwcm9jZWR1cmUgZmFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzQ1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDg6MTkuNDE5Njk3MDAzWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDczMTY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipzdF9uY2lfc2VfZGVpbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTc1MT12b2lkIHN0X25jaV9zZV9kZWluaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy03NjItfVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjc2MzpFWFBPUlRfU1lNQk9MKHN0X25jaV9zZV9kZWluaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowODoxOS40NjA0MzM5OTNaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA0NDY4ODA4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBUaGVzZSBDaGFuZ2VzKipcblxuT2theSwgc28gdGhpcyBpcyBhYm91dCBhbiBORkMgZHJpdmVyIGFuZCBpdCBsb29rcyBsaWtlIGEgZ29vZCBjaHVuayBvZiBmdW5jdGlvbmFsIGxvZ2ljIGlzIGJlaW5nIG1vZGlmaWVkLiBZZXMsIHRoYXQncyByaWdodCwgdGhlIGNoYW5nZXMgYXJlIGRlZmluaXRlbHkgaW4gdGhlIGZ1bmN0aW9uYWwgbG9naWMgaXRzZWxmLlxuXG5SaWdodCwgdGhlIGtleSBzeW1ib2xzIHRoaXMgcGF0Y2ggdG91Y2hlcyBhcmU6IGBuZmNfZ2VubF9zZV9pb2AsIGBuY2lfdW5yZWdpc3Rlcl9kZXZpY2VgLCBgc3RfbmNpX3NlX2lvYCwgYW5kIGBzdF9uY2lfc2VfZGVpbml0YC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBkZS1pbml0aWFsaXphdGlvbiByb3V0aW5lcyAtIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuXG5cbkFuZCB0aGVuIHRoZXJlJ3MgdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBUaGUgcmVsZXZhbnQgS2NvbmZpZyBzeW1ib2xzIGFyZSBgTkZDYCwgYE5GQ19OQ0lgLCBgTkZDX1NUX05DSV9JMkNgLCBgTkZDX1NUX05DSV9TUElgLCBgTkZDX1ZJUlRVQUxfTkNJYCwgYEkyQ2AsIGFuZCBgU1BJYC4gV2FpdCBhIHNlY29uZCwgYmVjYXVzZSBgTkZDX1NUX05DSWAgaXMgaW1wbGljaXRseSBzZWxlY3RlZCBieSBgTkZDX1NUX05DSV9JMkNgIG9yIGBORkNfU1RfTkNJX1NQSWAsIHNvIGl0J3Mgbm90IGEgdXNlci1zZWxlY3RhYmxlIG9wdGlvbiwgYWx0aG91Z2ggaXQncyBoZWxwZnVsIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBzeW1ib2xzLlxuXG5Pa2F5LCBzbyB0aGUgcGF0Y2ggaXRzZWxmIGlzIG1vZGlmeWluZyB0aGUgZnVuY3Rpb25hbCBsb2dpYy4gVGhlcmUgYXJlIGEgcHJlX3VucmVnaXN0ZXIgY2FsbGJhY2ssIHRpbWVyIGZpeGVzLCBhbmQgZml4ZXMgZm9yIGFjdGl2ZSBmbGFncy4gVGhpcyBoYXMgdGhlIHRlbGwtdGFsZSBzaWducyBvZiByYWNlIGNvbmRpdGlvbiBmaXhlcyBhbmQgc3luY2hyb25pemF0aW9uIGNoYW5nZXMuIEdpdmVuIHRoYXQsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIEknbGwgZmxhZyB0aGlzIG9uZSBpbW1lZGlhdGVseSBmb3IgaW5jbHVzaW9uIGluIHRoZSBmdXp6aW5nIHF1ZXVlLlxuXG5JJ20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLCBzbyBJJ2xsIGdvIGFoZWFkIGFuZCBsb2cgdGhlIHJlc3VsdHMgd2l0aCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA0OCwiT3V0cHV0VG9rZW5zIjoyMzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDg6MjUuNTA1MTI0MzQ2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg2ODg1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1NUX05DSV9JMkNcIixcbiAgICBcIk5GQ19TVF9OQ0lfU1BJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIixcbiAgICBcIkkyQ1wiLFxuICAgIFwiU1BJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2dlbmxfc2VfaW9cIixcbiAgICBcIm5jaV91bnJlZ2lzdGVyX2RldmljZVwiLFxuICAgIFwic3RfbmNpX3NlX2lvXCIsXG4gICAgXCJzdF9uY2lfc2VfZGVpbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBORkMgbmV0bGluayBhbmQgTkNJIHN1YnN5c3RlbSBjb2RlIChuZmNfc2VfaW8sIG5jaV91bnJlZ2lzdGVyX2RldmljZSkgYW5kIHRoZSBzdC1uY2kgZHJpdmVyIChzdF9uY2lfc2VfaW8sIHN0X25jaV9zZV9kZWluaXQpIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgU0UgSS9PIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBmdW5jdGlvbmFsbHkgcmVhY2hhYmxlIHZpYSBORkMgbmV0bGluayBpbnRlcmZhY2VzIGFuZCBJMkMvU1BJIGRldmljZSBpbnN0YW50aWF0aW9uL3JlbW92YWwsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19TVF9OQ0lfSTJDXCIsXG4gICAgXCJORkNfU1RfTkNJX1NQSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCIsXG4gICAgXCJJMkNcIixcbiAgICBcIlNQSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mY19nZW5sX3NlX2lvXCIsXG4gICAgXCJuY2lfdW5yZWdpc3Rlcl9kZXZpY2VcIixcbiAgICBcInN0X25jaV9zZV9pb1wiLFxuICAgIFwic3RfbmNpX3NlX2RlaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgTkZDIG5ldGxpbmsgYW5kIE5DSSBzdWJzeXN0ZW0gY29kZSAobmZjX3NlX2lvLCBuY2lfdW5yZWdpc3Rlcl9kZXZpY2UpIGFuZCB0aGUgc3QtbmNpIGRyaXZlciAoc3RfbmNpX3NlX2lvLCBzdF9uY2lfc2VfZGVpbml0KSB0byBmaXggcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIFNFIEkvTyBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgZnVuY3Rpb25hbGx5IHJlYWNoYWJsZSB2aWEgTkZDIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgSTJDL1NQSSBkZXZpY2UgaW5zdGFudGlhdGlvbi9yZW1vdmFsLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvj57g[1] Phase: Succeeded StartedAt: 2026-08-01 12:09:03 +0000 UTC FinishedAt: 2026-08-01 12:09:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 12:09:03 +0000 UTC FinishedAt: 2026-08-01 12:09:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2] Phase: Succeeded StartedAt: 2026-08-01 12:09:03 +0000 UTC FinishedAt: 2026-08-01 16:17:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 12:09:03 +0000 UTC FinishedAt: 2026-08-01 16:17:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-01 12:09:03 +0000 UTC FinishedAt: 2026-08-01 12:09:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-01 12:09:03 +0000 UTC FinishedAt: 2026-08-01 12:09:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvj57g/series-workflowvj57g-convert-artifact-2880587922/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-01 12:09:13 +0000 UTC FinishedAt: 2026-08-01 12:37:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-01 12:09:13 +0000 UTC FinishedAt: 2026-08-01 12:37:39 +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:*19735e2e-74df-46ac-888f-cb102c5208cf,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-workflowvj57g/series-workflowvj57g-convert-artifact-2880587922/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": "aa4640ce-148e-4903-876c-e1f4903b7381", "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-workflowvj57g/series-workflowvj57g-build-action-1003276816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-01 12:09:13 +0000 UTC FinishedAt: 2026-08-01 12:37:29 +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:*19735e2e-74df-46ac-888f-cb102c5208cf,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-workflowvj57g/series-workflowvj57g-convert-artifact-2880587922/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": "aa4640ce-148e-4903-876c-e1f4903b7381", "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-workflowvj57g/series-workflowvj57g-build-action-1003276816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-01 12:37:39 +0000 UTC FinishedAt: 2026-08-01 12:37:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-01 12:37:39 +0000 UTC FinishedAt: 2026-08-01 12:37:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-01 12:37:39 +0000 UTC FinishedAt: 2026-08-01 12:38:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-01 12:37:39 +0000 UTC FinishedAt: 2026-08-01 12:38:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvj57g/series-workflowvj57g-convert-artifact-803514797/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-01 12:38:25 +0000 UTC FinishedAt: 2026-08-01 12:40:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-01 12:38:25 +0000 UTC FinishedAt: 2026-08-01 12:40:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aa4640ce-148e-4903-876c-e1f4903b7381,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-workflowvj57g/series-workflowvj57g-build-action-1003276816/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-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-01 12:40:24 +0000 UTC FinishedAt: 2026-08-01 12:40:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-01 12:40:24 +0000 UTC FinishedAt: 2026-08-01 12:40:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-01 12:40:24 +0000 UTC FinishedAt: 2026-08-01 13:12:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-01 12:40:24 +0000 UTC FinishedAt: 2026-08-01 13:12:07 +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:*19735e2e-74df-46ac-888f-cb102c5208cf,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-workflowvj57g/series-workflowvj57g-convert-artifact-803514797/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": "fe83b64e-7369-48b6-b94e-a0ffda9f0fba", "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-workflowvj57g/series-workflowvj57g-build-action-556330505/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-01 12:40:24 +0000 UTC FinishedAt: 2026-08-01 13:11:57 +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:*19735e2e-74df-46ac-888f-cb102c5208cf,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-workflowvj57g/series-workflowvj57g-convert-artifact-803514797/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": "fe83b64e-7369-48b6-b94e-a0ffda9f0fba", "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-workflowvj57g/series-workflowvj57g-build-action-556330505/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-01 13:12:07 +0000 UTC FinishedAt: 2026-08-01 13:12:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-01 13:12:07 +0000 UTC FinishedAt: 2026-08-01 13:12:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-01 13:12:07 +0000 UTC FinishedAt: 2026-08-01 13:14:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-01 13:12:07 +0000 UTC FinishedAt: 2026-08-01 13:13:52 +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:*fe83b64e-7369-48b6-b94e-a0ffda9f0fba,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-workflowvj57g/series-workflowvj57g-build-action-556330505/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-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 13:14:02 +0000 UTC FinishedAt: 2026-08-01 16:17:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 13:14:02 +0000 UTC FinishedAt: 2026-08-01 16:17:18 +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":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"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:*aa4640ce-148e-4903-876c-e1f4903b7381,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fe83b64e-7369-48b6-b94e-a0ffda9f0fba,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-workflowvj57g/series-workflowvj57g-build-action-1003276816/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-workflowvj57g/series-workflowvj57g-build-action-556330505/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 13:14:02 +0000 UTC FinishedAt: 2026-08-01 13:14:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 13:14:02 +0000 UTC FinishedAt: 2026-08-01 13:14:23 +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":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"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-workflowvj57g/series-workflowvj57g-convert-artifact-3660644114/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 13:14:02 +0000 UTC FinishedAt: 2026-08-01 13:14:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 13:14:02 +0000 UTC FinishedAt: 2026-08-01 13:14:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-01 13:14:02 +0000 UTC FinishedAt: 2026-08-01 13:14:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 13:14:36 +0000 UTC FinishedAt: 2026-08-01 16:17:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvj57g[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_genl_se_io","nci_unregister_device","st_nci_se_io","st_nci_se_deinit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_ST_NCI_I2C","NFC_ST_NCI_SPI","NFC_VIRTUAL_NCI","I2C","SPI"],"series_id":"8dc86100-2bcc-4b87-a93a-9d920355f407","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 13:14:36 +0000 UTC FinishedAt: 2026-08-01 16:17:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aa4640ce-148e-4903-876c-e1f4903b7381,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fe83b64e-7369-48b6-b94e-a0ffda9f0fba,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-workflowvj57g/series-workflowvj57g-build-action-1003276816/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-workflowvj57g/series-workflowvj57g-build-action-556330505/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-workflowvj57g/series-workflowvj57g-convert-artifact-3660644114/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,}