Name: series-workflowxbsck Phase: Succeeded StartedAt: 2026-08-13 12:44:40 +0000 UTC FinishedAt: 2026-08-13 16:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[0] Phase: Succeeded StartedAt: 2026-08-13 12:44:40 +0000 UTC FinishedAt: 2026-08-13 12:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 12:44:40 +0000 UTC FinishedAt: 2026-08-13 12:47:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BT" ], "series_id": "436271ba-2cc1-4a81-a697-3083fe687e36" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hci_sock_sendmsg", "hci_dev_close_sync" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGNpX3NvY2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtoY2lfZGV2X2Nsb3NlX3N5bmMmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBzeW5jaHJvbml6YXRpb24gaXNzdWUgKGxpa2VseSBhIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlKSBiZXR3ZWVuIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AuIEl0IGludHJvZHVjZXMgUkNVIHJlYWQgbG9ja3MgaW4gdGhlIHNlbmQgcGF0aCBhbmQgdXNlcyBgZGlzYWJsZV93b3JrX3N5bmNgIHdpdGggYHN5bmNocm9uaXplX3JjdWAgaW4gdGhlIGNsb3NlIHBhdGggdG8gZW5zdXJlIHNhZmUgdGVhcmRvd24uIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gY29uY3VycmVuY3kgYW5kIG9iamVjdCBsaWZldGltZSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IG1vbml0b3JlZCBieSBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlKSBhbmQgTE9DS0RFUCAoZm9yIGxvY2tpbmcgaXNzdWVzKS4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBvciBtb2RpZmljYXRpb25zIHRvIGJ1ZmZlciBoYW5kbGluZyB0aGF0IHdvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQmx1ZXRvb3RoIHN1YnN5c3RlbSBieSBhZGRpbmcgUkNVIHByb3RlY3Rpb24gaW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBtb2RpZnlpbmcgd29ya3F1ZXVlIHN5bmNocm9uaXphdGlvbiAoYGRpc2FibGVfd29ya19zeW5jYCBhbmQgYHN5bmNocm9uaXplX3JjdWApIGluIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgZHVyaW5nIGRldmljZSB0ZWFyZG93biBhbmQgc29ja2V0IHRyYW5zbWlzc2lvbiwgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmM2RkNjQxZWI2Yjg5NjlhNTcwZjkxZjY5ZjBjZmY0Nzc3NzU5YTkwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTI6NDY6NDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG5pbmRleCAwNzBjYTM4OGY5YWNlLi44MzQ1ZWJiYmQ5ZDUzIDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbkBAIC0xODUwLDkgJiM0MzsxODUwLDEwIEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHRcdGdvdG8gZHJvcDtcbiBcdH1cbiBcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRpZiAoIXRlc3RfYml0KEhDSV9VUCwgXHUwMDI2aGRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0ZXJyID0gLUVORVRET1dOO1xuLVx0XHRnb3RvIGRyb3A7XG4mIzQzO1x0XHRnb3RvIGRyb3BfcmN1O1xuIFx0fVxuIFxuIFx0aGNpX3NrYl9wa3RfdHlwZShza2IpID0gc2tiLVx1MDAzZWRhdGFbMF07XG5AQCAtMTg3MCw3ICYjNDM7MTg3MSw3IEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHRcdCAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9EUlZfUEtUKSB7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRyb3A7XG4mIzQzO1x0XHRcdGdvdG8gZHJvcF9yY3U7XG4gXHRcdH1cbiBcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2aGRldi1cdTAwM2VyYXdfcSwgc2tiKTtcbkBAIC0xODg1LDcgJiM0MzsxODg2LDcgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0XHRcdCAgIFx1MDAyNmhjaV9zZWNfZmlsdGVyLm9jZl9tYXNrW29nZl0pKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICFjYXBhYmxlKENBUF9ORVRfUkFXKSkge1xuIFx0XHRcdGVyciA9IC1FUEVSTTtcbi1cdFx0XHRnb3RvIGRyb3A7XG4mIzQzO1x0XHRcdGdvdG8gZHJvcF9yY3U7XG4gXHRcdH1cbiBcbiBcdFx0LyogU2luY2UgdGhlIG9wY29kZSBoYXMgYWxyZWFkeSBiZWVuIGV4dHJhY3RlZCBoZXJlLCBzdG9yZVxuQEAgLTE5MDgsMTQgJiM0MzsxOTA5LDE0IEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHR9IGVsc2Uge1xuIFx0XHRpZiAoIWNhcGFibGUoQ0FQX05FVF9SQVcpKSB7XG4gXHRcdFx0ZXJyID0gLUVQRVJNO1xuLVx0XHRcdGdvdG8gZHJvcDtcbiYjNDM7XHRcdFx0Z290byBkcm9wX3JjdTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAoaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9BQ0xEQVRBX1BLVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfU0NPREFUQV9QS1QgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUKSB7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRyb3A7XG4mIzQzO1x0XHRcdGdvdG8gZHJvcF9yY3U7XG4gXHRcdH1cbiBcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2aGRldi1cdTAwM2VyYXdfcSwgc2tiKTtcbkBAIC0xOTIzLDE0ICYjNDM7MTkyNCwxNiBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0fVxuIFxuIFx0ZXJyID0gbGVuO1xuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdGdvdG8gZG9uZTtcbiBcbiYjNDM7ZHJvcF9yY3U6XG4mIzQzO1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO2Ryb3A6XG4mIzQzO1x0a2ZyZWVfc2tiKHNrYik7XG4gZG9uZTpcbiBcdHJlbGVhc2Vfc29jayhzayk7XG4gXHRyZXR1cm4gZXJyO1xuLVxuLWRyb3A6XG4tXHRrZnJlZV9za2Ioc2tiKTtcbi1cdGdvdG8gZG9uZTtcbiB9XG4gXG4gc3RhdGljIGludCBoY2lfc29ja19zZXRzb2Nrb3B0X29sZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuaW5kZXggYzhkMTQxMjhjMzYzZC4uYmFkODMzMTNiYjVmOSAxMDA2NDRcbi0tLSBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXG5AQCAtNTQ3Miw5ICYjNDM7NTQ3MiwxMSBAQCBpbnQgaGNpX2Rldl9jbG9zZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0aGNpX2xlZHNfdXBkYXRlX3Bvd2VyZWQoaGRldiwgZmFsc2UpO1xuIFxuIFx0LyogRmx1c2ggUlggYW5kIFRYIHdvcmtzICovXG4tXHRmbHVzaF93b3JrKFx1MDAyNmhkZXYtXHUwMDNldHhfd29yayk7XG4mIzQzO1x0ZGlzYWJsZV93b3JrX3N5bmMoXHUwMDI2aGRldi1cdTAwM2V0eF93b3JrKTtcbiBcdGZsdXNoX3dvcmsoXHUwMDI2aGRldi1cdTAwM2VyeF93b3JrKTtcbiBcbiYjNDM7XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7XG4gXHRpZiAoaGRldi1cdTAwM2VkaXNjb3ZfdGltZW91dCBcdTAwM2UgMCkge1xuIFx0XHRoZGV2LVx1MDAzZWRpc2Nvdl90aW1lb3V0ID0gMDtcbiBcdFx0aGNpX2Rldl9jbGVhcl9mbGFnKGhkZXYsIEhDSV9ESVNDT1ZFUkFCTEUpO1xuQEAgLTU1NzYsNiAmIzQzOzU1NzgsOCBAQCBpbnQgaGNpX2Rldl9jbG9zZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0YmFjcHkoXHUwMDI2aGRldi1cdTAwM2VyYW5kb21fYWRkciwgQkRBRERSX0FOWSk7XG4gXHRoY2lfY29kZWNfbGlzdF9jbGVhcihcdTAwMjZoZGV2LVx1MDAzZWxvY2FsX2NvZGVjcyk7XG4gXG4mIzQzO1x0ZW5hYmxlX3dvcmsoXHUwMDI2aGRldi1cdTAwM2V0eF93b3JrKTtcbiYjNDM7XG4gXHRoY2lfZGV2X3B1dChoZGV2KTtcbiBcdHJldHVybiBlcnI7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hjaV9zb2NrX3NlbmRtc2cmIzM0OywKICAgICYjMzQ7aGNpX2Rldl9jbG9zZV9zeW5jJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBCbHVldG9vdGggc3Vic3lzdGVtIGJ5IGFkZGluZyBSQ1UgcHJvdGVjdGlvbiBpbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIG1vZGlmeWluZyB3b3JrcXVldWUgc3luY2hyb25pemF0aW9uIChgZGlzYWJsZV93b3JrX3N5bmNgIGFuZCBgc3luY2hyb25pemVfcmN1YCkgaW4gYGhjaV9kZXZfY2xvc2Vfc3luY2AuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duIGFuZCBzb2NrZXQgdHJhbnNtaXNzaW9uLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYzZGQ2NDFlYjZiODk2OWE1NzBmOTFmNjlmMGNmZjQ3Nzc3NTlhOTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxMjo0Njo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYyBiL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYwppbmRleCAwNzBjYTM4OGY5YWNlLi44MzQ1ZWJiYmQ5ZDUzIDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jCkBAIC0xODUwLDkgJiM0MzsxODUwLDEwIEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCWdvdG8gZHJvcDsKIAl9CiAKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwogCWlmICghdGVzdF9iaXQoSENJX1VQLCAmYW1wO2hkZXYtJmd0O2ZsYWdzKSkgewogCQllcnIgPSAtRU5FVERPV047Ci0JCWdvdG8gZHJvcDsKJiM0MzsJCWdvdG8gZHJvcF9yY3U7CiAJfQogCiAJaGNpX3NrYl9wa3RfdHlwZShza2IpID0gc2tiLSZndDtkYXRhWzBdOwpAQCAtMTg3MCw3ICYjNDM7MTg3MSw3IEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCSAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUICZhbXA7JmFtcDsKIAkJICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfRFJWX1BLVCkgewogCQkJZXJyID0gLUVJTlZBTDsKLQkJCWdvdG8gZHJvcDsKJiM0MzsJCQlnb3RvIGRyb3BfcmN1OwogCQl9CiAKIAkJc2tiX3F1ZXVlX3RhaWwoJmFtcDtoZGV2LSZndDtyYXdfcSwgc2tiKTsKQEAgLTE4ODUsNyAmIzQzOzE4ODYsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAogCQkJCSAgICZhbXA7aGNpX3NlY19maWx0ZXIub2NmX21hc2tbb2dmXSkpICZhbXA7JmFtcDsKIAkJICAgICFjYXBhYmxlKENBUF9ORVRfUkFXKSkgewogCQkJZXJyID0gLUVQRVJNOwotCQkJZ290byBkcm9wOwomIzQzOwkJCWdvdG8gZHJvcF9yY3U7CiAJCX0KIAogCQkvKiBTaW5jZSB0aGUgb3Bjb2RlIGhhcyBhbHJlYWR5IGJlZW4gZXh0cmFjdGVkIGhlcmUsIHN0b3JlCkBAIC0xOTA4LDE0ICYjNDM7MTkwOSwxNCBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAogCX0gZWxzZSB7CiAJCWlmICghY2FwYWJsZShDQVBfTkVUX1JBVykpIHsKIAkJCWVyciA9IC1FUEVSTTsKLQkJCWdvdG8gZHJvcDsKJiM0MzsJCQlnb3RvIGRyb3BfcmN1OwogCQl9CiAKIAkJaWYgKGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfQUNMREFUQV9QS1QgJmFtcDsmYW1wOwogCQkgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9TQ09EQVRBX1BLVCAmYW1wOyZhbXA7CiAJCSAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUKSB7CiAJCQllcnIgPSAtRUlOVkFMOwotCQkJZ290byBkcm9wOwomIzQzOwkJCWdvdG8gZHJvcF9yY3U7CiAJCX0KIAogCQlza2JfcXVldWVfdGFpbCgmYW1wO2hkZXYtJmd0O3Jhd19xLCBza2IpOwpAQCAtMTkyMywxNCAmIzQzOzE5MjQsMTYgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywKIAl9CiAKIAllcnIgPSBsZW47CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlnb3RvIGRvbmU7CiAKJiM0Mztkcm9wX3JjdToKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7ZHJvcDoKJiM0MzsJa2ZyZWVfc2tiKHNrYik7CiBkb25lOgogCXJlbGVhc2Vfc29jayhzayk7CiAJcmV0dXJuIGVycjsKLQotZHJvcDoKLQlrZnJlZV9za2Ioc2tiKTsKLQlnb3RvIGRvbmU7CiB9CiAKIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2V0c29ja29wdF9vbGQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYwppbmRleCBjOGQxNDEyOGMzNjNkLi5iYWQ4MzMxM2JiNWY5IDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jCkBAIC01NDcyLDkgJiM0Mzs1NDcyLDExIEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJaGNpX2xlZHNfdXBkYXRlX3Bvd2VyZWQoaGRldiwgZmFsc2UpOwogCiAJLyogRmx1c2ggUlggYW5kIFRYIHdvcmtzICovCi0JZmx1c2hfd29yaygmYW1wO2hkZXYtJmd0O3R4X3dvcmspOwomIzQzOwlkaXNhYmxlX3dvcmtfc3luYygmYW1wO2hkZXYtJmd0O3R4X3dvcmspOwogCWZsdXNoX3dvcmsoJmFtcDtoZGV2LSZndDtyeF93b3JrKTsKIAomIzQzOwlzeW5jaHJvbml6ZV9yY3UoKTsKJiM0MzsKIAlpZiAoaGRldi0mZ3Q7ZGlzY292X3RpbWVvdXQgJmd0OyAwKSB7CiAJCWhkZXYtJmd0O2Rpc2Nvdl90aW1lb3V0ID0gMDsKIAkJaGNpX2Rldl9jbGVhcl9mbGFnKGhkZXYsIEhDSV9ESVNDT1ZFUkFCTEUpOwpAQCAtNTU3Niw2ICYjNDM7NTU3OCw4IEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJYmFjcHkoJmFtcDtoZGV2LSZndDtyYW5kb21fYWRkciwgQkRBRERSX0FOWSk7CiAJaGNpX2NvZGVjX2xpc3RfY2xlYXIoJmFtcDtoZGV2LSZndDtsb2NhbF9jb2RlY3MpOwogCiYjNDM7CWVuYWJsZV93b3JrKCZhbXA7aGRldi0mZ3Q7dHhfd29yayk7CiYjNDM7CiAJaGNpX2Rldl9wdXQoaGRldik7CiAJcmV0dXJuIGVycjsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAxNgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCbHVldG9vdGggU3Vic3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiB0aGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gYG5ldC9ibHVldG9vdGgvaGNpX3NvY2suY2AgYW5kIGBuZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNgLiBTZWVtcyBsaWtlIHNvbWVvbmUmIzM5O3MgYmVlbiBidXN5IHdpdGggc29tZSBjb3JlIEJsdWV0b290aCBpbnRlcm5hbHMuIFNwZWNpZmljYWxseSwgYGhjaV9zb2NrX3NlbmRtc2dgIGhhcyBiZWVuIHVwZGF0ZWQgd2l0aCBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYHJjdV9yZWFkX3VubG9jaygpYCBjYWxscywgd2hpY2ggcmluZ3MgYWxhcm0gYmVsbHMg4oCTIHRoYXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSB0byBhZGRyZXNzIHNvbWUga2luZCBvZiBwb3RlbnRpYWwgZGF0YSByYWNlIG9yIHByb3RlY3Rpb24gaXNzdWUgd2hlbiByZWFkaW5nIGRhdGEgZnJvbSBhbiBSQ1UgcHJvdGVjdGVkIGFyZWEuIEkmIzM5O20gZ3Vlc3NpbmcgYGhkZXZgIHN0YXRlIGlzIGludm9sdmVkLgoKVGhlbiwgb3ZlciBpbiBgaGNpX3N5bmMuY2AsIHRoaW5ncyBnZXQgZXZlbiBtb3JlIGludGVyZXN0aW5nLiBUaGV5JiMzOTt2ZSBzd2FwcGVkIG91dCBgZmx1c2hfd29yaygmYW1wO2hkZXYtJmd0O3R4X3dvcmspYCBmb3IgYGRpc2FibGVfd29ya19zeW5jKCZhbXA7aGRldi0mZ3Q7dHhfd29yaylgIGFuZCBhZGRlZCBgc3luY2hyb25pemVfcmN1KClgLCBwbHVzIGFuIGBlbmFibGVfd29yaygpYCBjYWxsIGF0IHRoZSBlbmQuIFRoYXQgaXMgYSB2ZXJ5IHNwZWNpZmljIHBhdHRlcm4hIFRoaXMgKnNjcmVhbXMqIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uIHdpdGggdGhlIGB0eF93b3JrYCB3b3JrcXVldWUgYW5kIHByb2JhYmx5IHRoZSBzaHV0ZG93biBvZiB0aGUgZGV2aWNlLiBUaGUgY2hhbmdlIGZyb20gYGZsdXNoX3dvcmtgIHRvIGBkaXNhYmxlX3dvcmtfc3luY2AgaXMga2V5IGhlcmUgdG8gZW5zdXJpbmcgdGhhdCBhbnkgd29yayBxdWV1ZWQgdG8gdGhlIGB0eF93b3JrYCB3b3JrcXVldWUgYXJlIGNvbXBsZXRlbHkgZmluaXNoZWQgYmVmb3JlIHRoZSBkZXZpY2Ugc2h1dGRvd24gY29udGludWVzLCBhbmQgdGhhdCBhbnkgcmVmZXJlbmNlcyBmcm9tIHRoZSB3b3JrcXVldWUgY29kZSB0byB0aGUgYGhkZXZgIHN0cnVjdHVyZSBvciByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyBhcmUgZG9uZSBiZWZvcmUgdGhleSBjYW4gYmUgZnJlZWQuIFRoZSBgc3luY2hyb25pemVfcmN1KClgIGNhbGwgY29uZmlybXMgbXkgc3VzcGljaW9uIOKAkyB0aGV5JiMzOTtyZSBjbGVhbmluZyB1cCBSQ1UgcmVhZGVycyBiZWZvcmUgYWxsb3dpbmcgdGhlIGRldmljZSB0byBjb21wbGV0ZWx5IGNsb3NlLgoKVGhlIHBhdGNoIHRvdWNoZXMgYm90aCBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLCB3aGljaCBhcmUgaW1wb3J0YW50IHRvIHJlY29nbml6ZSwgYmVjYXVzZSB0aGV5IGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIHNwYWNlLiBTbyB0aGlzIGlzIHRoZSBzb3J0IG9mIGNoYW5nZSB0aGF0IGNhbiBoYXZlIGZhaXJseSB3aWRlc3ByZWFkIGltcGFjdCwgZXZlbiBpZiBpdCYjMzk7cyB0YXJnZXRlZCBhbmQgc3VidGxlLiBXZSYjMzk7cmUgbG9va2luZyBhdCBvcGVyYXRpb25zIHRoYXQgYXJlIGRpcmVjdGx5IHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIGFjdGlvbnM6IHNlbmRpbmcgYSBtZXNzYWdlIG9uIGFuIEhDSSBzb2NrZXQsIGFuZCBjbG9zaW5nIGFuIEhDSSBkZXZpY2UsIHJlc3BlY3RpdmVseS4KClJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBwcmVyZXF1aXNpdGVzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX0JUYCBpcyBjb3JyZWN0bHkgZW5hYmxlZCwgYW5kIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMsIHByb2JhYmx5IHVuZGVyIGBuZXQvYmx1ZXRvb3RoL2AsIHRvIGJlIGNlcnRhaW4gaWYgdGhlcmUgYXJlIG1vcmUgcHJlY2lzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgbmVjZXNzYXJ5IG9yIGF0IGxlYXN0IGhpZ2hseSByZWxldmFudC4gSSYjMzk7bGwgY2hlY2sgdGhhdCB0byBlbnN1cmUgdGhpcyBwYXRjaCBpcyByZWxldmFudCBhbmQgY29ycmVjdCBmb3IgdGhlIGdpdmVuIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYmx1ZXRvb3RoL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JsdWV0b290aC9LY29uZmlnLTUtXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6NjptZW51Y29uZmlnIEJUXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O0JsdWV0b290aCBzdWJzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZy00MS1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZzo0Mjpjb25maWcgQlRfQlJFRFJcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7Qmx1ZXRvb3RoIENsYXNzaWMgKEJSL0VEUikgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc9NTY9c291cmNlIFwmIzM0O25ldC9ibHVldG9vdGgvaGlkcC9LY29uZmlnXCYjMzQ7XG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNTctXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6NTg6Y29uZmlnIEJUX0xFXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNTktXHRib29sIFwmIzM0O0JsdWV0b290aCBMb3cgRW5lcmd5IChMRSkgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNjUtXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6NjY6Y29uZmlnIEJUX0xFX0wyQ0FQX0VDUkVEXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNjctXHRib29sIFwmIzM0O0JsdWV0b290aCBMMkNBUCBFbmhhbmNlZCBDcmVkaXQgRmxvdyBDb250cm9sXCYjMzQ7XG4tLVxubmV0L2JsdWV0b290aC9LY29uZmlnLTc2LVxubmV0L2JsdWV0b290aC9LY29uZmlnOjc3OmNvbmZpZyBCVF82TE9XUEFOXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtCbHVldG9vdGggNkxvV1BBTiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2JsdWV0b290aC9LY29uZmlnLTgyLVxubmV0L2JsdWV0b290aC9LY29uZmlnOjgzOmNvbmZpZyBCVF9MRURTXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctODQtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbi0tXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctOTEtXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6OTI6Y29uZmlnIEJUX01TRlRFWFRcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy05My1cdGJvb2wgXCYjMzQ7RW5hYmxlIE1pY3Jvc29mdCBleHRlbnNpb25zXCYjMzQ7XG4tLVxubmV0L2JsdWV0b290aC9LY29uZmlnLTk4LVxubmV0L2JsdWV0b290aC9LY29uZmlnOjk5OmNvbmZpZyBCVF9BT1NQRVhUXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDtFbmFibGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0IGV4dGVuc2lvbnNcJiMzNDtcbi0tXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctMTA1LVxubmV0L2JsdWV0b290aC9LY29uZmlnOjEwNjpjb25maWcgQlRfREVCVUdGU1xubmV0L2JsdWV0b290aC9LY29uZmlnLTEwNy1cdGJvb2wgXCYjMzQ7RXhwb3J0IEJsdWV0b290aCBpbnRlcm5hbHMgaW4gZGVidWdmc1wmIzM0O1xuLS1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMTMtXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6MTE0OmNvbmZpZyBCVF9TRUxGVEVTVFxubmV0L2JsdWV0b290aC9LY29uZmlnLTExNS1cdGJvb2wgXCYjMzQ7Qmx1ZXRvb3RoIHNlbGYgdGVzdGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2JsdWV0b290aC9LY29uZmlnLTEyNi1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZzoxMjc6Y29uZmlnIEJUX1NFTEZURVNUX0VDREhcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMjgtXHRib29sIFwmIzM0O0VDREggdGVzdCBjYXNlc1wmIzM0O1xuLS1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMzMtXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6MTM0OmNvbmZpZyBCVF9TRUxGVEVTVF9TTVBcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O1NNUCB0ZXN0IGNhc2VzXCYjMzQ7XG4tLVxubmV0L2JsdWV0b290aC9LY29uZmlnLTE0MC1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZzoxNDE6Y29uZmlnIEJUX0ZFQVRVUkVfREVCVUdcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xNDItXHRib29sIFwmIzM0O0VuYWJsZSBydW50aW1lIG9wdGlvbiBmb3IgZGVidWdnaW5nIHN0YXRlbWVudHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTY0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBGb2N1czogQlQgQ29uZmlndXJhdGlvbiBhbmQgRGV2aWNlIENsb3N1cmUqKgoKT2theSwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCByZXZvbHZlcyBhcm91bmQgYEJUYC4gIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBHaXZlbiB0aGF0LCBJIG5lZWQgdG8gZm9jdXMgb24gdHdvIGtleSBmdW5jdGlvbnM6IGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AuIE5vdywgaXMgYGhjaV9kZXZfY2xvc2Vfc3luY2AgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIHJlYWxseSBkaWcgaW50bz8gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byB0aGUgZGV2aWNlIGNsb3NpbmcsIHdoaWNoIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQgdG8gdW5kZXJzdGFuZGluZyB0aGUgbGlmZWN5Y2xlLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBsb29raW5nIGF0IGlzc3VlcyBpbiB0ZWFyZG93bi4gSSB0aGluayB0aGUga2V5IGhlcmUgaXMgdGhlIGZhY3QgdGhhdCBpdCBpcyBjYWxsZWQgd2hlbiBjbG9zaW5nIHRoZSBkZXZpY2UuIE1ha2VzIHNlbnNlLiBCdXQganVzdCB0byBiZSBzdXJlLCBiZWZvcmUgSSBnbyBkZWVwZXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBhcm91bmQgaXQgdG8gZW5zdXJlIHRoaXMgaXMgdGhlIHByb3BlciBmdW5jdGlvbiB0byBzcGVuZCBtb3JlIHRpbWUgb24sIGFuZCB0aGVyZSBhcmVuJiMzOTt0IG90aGVycyBJIG5lZWQgdG8gY29uc2lkZXIgYXQgdGhlIHNhbWUgdGltZS4gTGV0IG1lIHRyYWNlIGl0cyBjYWxscyBhbmQgY29uZmlybSBpdHMgcmVsZXZhbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hjaV9kZXZfY2xvc2Vfc3luYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9ibHVldG9vdGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9ibHVldG9vdGgvaGNpX2Nvbm4uYz0xMTk2PXN0YXRpYyB2b2lkIGhjaV9jb25uX3VubGluayhzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4pXG4tLVxubmV0L2JsdWV0b290aC9oY2lfY29ubi5jLTEyMTAtXHRcdFx0LyogSWYgaGRldiBpcyBkb3duIGl0IG1lYW5zXG5uZXQvYmx1ZXRvb3RoL2hjaV9jb25uLmM6MTIxMTpcdFx0XHQgKiBoY2lfZGV2X2Nsb3NlX3N5bmMvaGNpX2Nvbm5faGFzaF9mbHVzaCBpcyBpbiBwcm9ncmVzc1xubmV0L2JsdWV0b290aC9oY2lfY29ubi5jLTEyMTItXHRcdFx0ICogYW5kIGxpbmtzIGRvbiYjMzk7dCBuZWVkIHRvIGJlIGNsZWFudXAgYXMgYWxsIGNvbm5lY3Rpb25zXG4tLVxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jPTQ5MT1pbnQgaGNpX2Rldl9kb19jbG9zZShzdHJ1Y3QgaGNpX2RldiAqaGRldilcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMtNDk4LVxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jOjQ5OTpcdGVyciA9IGhjaV9kZXZfY2xvc2Vfc3luYyhoZGV2KTtcbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYy01MDAtXG4tLVxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jPTUzMT1zdGF0aWMgaW50IGhjaV9kZXZfZG9fcmVzZXQoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4tLVxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jLTUzOC1cbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYzo1Mzk6XHRyZXQgPSBoY2lfZGV2X2Nsb3NlX3N5bmMoaGRldik7XG5uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMtNTQwLVx0aWYgKCFyZXQpXG4tLVxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTU0MDc9c3RhdGljIGludCBoY2lfZGV2X3NodXRkb3duKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01NDMxLVxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjU0MzI6aW50IGhjaV9kZXZfY2xvc2Vfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01NDMzLXtcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmM9NTU5Mz1zdGF0aWMgaW50IGhjaV9wb3dlcl9vbl9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01NjE2LVx0XHRoY2lfZGV2X2NsZWFyX2ZsYWcoaGRldiwgSENJX0FVVE9fT0ZGKTtcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYzo1NjE3Olx0XHRoY2lfZGV2X2Nsb3NlX3N5bmMoaGRldik7XG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTYxOC1cdH0gZWxzZSBpZiAoaGNpX2Rldl90ZXN0X2ZsYWcoaGRldiwgSENJX0FVVE9fT0ZGKSkge1xuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYz01OTI1PXN0YXRpYyBpbnQgaGNpX2Rpc2Nvbm5lY3RfYWxsX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYsIHU4IHJlYXNvbilcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTk1My0gKiBEaXNjb25uZWN0IGFsbCBjb25uZWN0aW9uc1xubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjU5NTQ6ICogaGNpX2Rldl9jbG9zZV9zeW5jXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTk1NS0gKi9cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYz01OTU2PXN0YXRpYyBpbnQgaGNpX3Bvd2VyX29mZl9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01OTg1LVxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjU5ODY6XHRlcnIgPSBoY2lfZGV2X2Nsb3NlX3N5bmMoaGRldik7XG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTk4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjQzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCbHVldG9vdGggSENJIERldmljZSBTaHV0ZG93biBhbmQgU29ja2V0IENvbW11bmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBCbHVldG9vdGggSENJIGRldmljZXMgYXJlIGNsb3NlZCBhbmQgaG93IHRoZSBzb2NrZXQgY29tbXVuaWNhdGlvbiB3b3JrcywgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZnVuY3Rpb25zIHRvIHRhcmdldC4gYGhjaV9kZXZfY2xvc2Vfc3luY2AgaXMgZGVmaW5pdGVseSBjYWxsZWQgYnkgdmFyaW91cyBmdW5jdGlvbnMgbGlrZSBgaGNpX2Rldl9kb19jbG9zZWAgYW5kIGBoY2lfcG93ZXJfb2ZmX3N5bmNgLCBhbmQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggaW9jdGxzIGFuZCBuZXRsaW5rIGNvbW1hbmRzIHRvIHNodXQgZG93biB0aGUgSENJIGRldmljZS4gVGhhdCBtYWtlcyBpdCBwb3RlbnRpYWxseSBpbnRlcmVzdGluZy4KCk5vdywgYGhjaV9zb2NrX3NlbmRtc2dgIGhhbmRsZXMgc2VuZGluZyBtZXNzYWdlcyBmb3IgYEFGX0JMVUVUT09USGAgc29ja2V0cyB3aXRoIGBCVFBST1RPX0hDSWAuIFRoYXQgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUgZnVydGhlciwgYmVpbmcgdGhlIHN0YW5kYXJkIGBzZW5kbXNnYCBoYW5kbGVyIGZvciBIQ0kgc29ja2V0cy4gU28sIGFyZSBib3RoIGludGVyZXN0aW5nPwoKTGV0JiMzOTtzIHNlZS4gSGFuZyBvbi4uLiBgaGNpX2Rldl9jbG9zZV9zeW5jYCBpcyBub3Qgc3RhdGljLCBpdCYjMzk7cyBkZWZpbmVkIGluIGBuZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNgLiBgaGNpX3NvY2tfc2VuZG1zZ2AgaXMgc3RhdGljIGluIGBuZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNgLiBBaCwgeWVzLCBjb25maXJtZWQ6IGBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKWAuCgpTbywgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnQgZnVuY3Rpb25zLiBFdmVuIHRob3VnaCBgaGNpX3NvY2tfc2VuZG1zZ2AgaXMgc3RhdGljLCBpdCYjMzk7cyBhc3NpZ25lZCB0byBgcHJvdG9fb3BzLnNlbmRtc2dgLCB3aGljaCBtZWFucyBpdCB3b24mIzM5O3QgYmUgaW5saW5lZC4gSXQgaGFzIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQgbWVhbnMgc3l6a2FsbGVyIGNhbiByZWFjaCBpdC4KClRvIGJlIHNhZmUsIEkmIzM5O2xsIGtlZXAgYm90aCBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgIGluIG1pbmQuIEp1c3QgaW4gY2FzZSBvbmUgcHJvdmVzIG1vcmUgdXNlZnVsIHRoYW4gdGhlIG90aGVyLiBJJiMzOTtsbCBhbHNvIGNvbnNpZGVyIGBoY2lfZGV2X2RvX2Nsb3NlYC4gSSB0aGluayBgaGNpX2Rldl9jbG9zZV9zeW5jYCBpcyBwcmVmZXJhYmxlIHNpbmNlIGl0IGlzIG5vbi1zdGF0aWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGNpX3NvY2tfc2VuZG1zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9ibHVldG9vdGgvaGNpX3NvY2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmM9MTczMj1zdGF0aWMgaW50IGhjaV9sb2dnaW5nX2ZyYW1lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMtMTc5Ny1cbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYzoxNzk4OnN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMtMTc5OS1cdFx0XHQgICAgc2l6ZV90IGxlbilcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmM9MjE3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBoY2lfc29ja19vcHMgPSB7XG4tLVxubmV0L2JsdWV0b290aC9oY2lfc29jay5jLTIxODEtXHQuZ2V0bmFtZVx0PSBoY2lfc29ja19nZXRuYW1lLFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jOjIxODI6XHQuc2VuZG1zZ1x0PSBoY2lfc29ja19zZW5kbXNnLFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jLTIxODMtXHQucmVjdm1zZ1x0PSBoY2lfc29ja19yZWN2bXNnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NDcKCQkJCQkJCW91dHB1dDogMTM5CgkJCQkJCQl0aG91Z2h0czogMjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJsdWV0b290aCBTdWJzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaGNpX3NvY2tfc2VuZG1zZ2AgaXNuJiMzOTt0IGlubGluZWQg4oCTIHdoaWNoIGlzIGV4cGVjdGVkLCBnaXZlbiBpdCYjMzk7cyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGFyZ2V0LiBHb29kLiBOb3csIHRoZSBtZWF0IG9mIGl0IHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiBvciBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbi4gSXQmIzM5O3MgZG9pbmcgdGhpcyBieSBicmluZ2luZyBpbiBSQ1UgcHJvdGVjdGlvbiB3aXRoaW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCB0aGVuIHByb3Blcmx5IHN5bmNocm9uaXppbmcgUkNVIGluIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBJIGFsc28gc2VlIGNoYW5nZXMgd2l0aCB0aGUgd29ya3F1ZXVlIHN5bmNocm9uaXphdGlvbiwgc3dpdGNoaW5nIGZyb20gYGZsdXNoX3dvcmtgIHRvIGBkaXNhYmxlX3dvcmtfc3luY2AgYW5kIGludHJvZHVjaW5nIGBlbmFibGVfd29ya2AgZm9yIGB0eF93b3JrYC4KCkZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZS4gQW55IG1vZGlmaWNhdGlvbiB0byBzeW5jaHJvbml6YXRpb24gb3IgZGF0YSBhY2Nlc3MgaXMgYSBnb29kIGNhbmRpZGF0ZSB0byBwb2tlIGF0LiBHaXZlbiB0aGF0IHRoZSBCbHVldG9vdGggc3Vic3lzdGVtIChgQlRgIGNvbmZpZykgaXMgdGhlIHJlbGV2YW50IGNvbnRleHQgYW5kIHRoZSB0YXJnZXRlZCBmdW5jdGlvbnMgYXJlIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AsIEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGEgaGlnaCBwcmlvcml0eSBmb3IgaW52ZXN0aWdhdGlvbi4KCkkmIzM5O2xsIGRvdWJsZS1jaGVjayB0byBjb25maXJtIHRoYXQgdGhlIGBCVGAgY29uZmlnIGlzIHRoZSBwcmltYXJ5IGdhdGluZyBmYWN0b3IsIGJ1dCBzbyBmYXIsIHRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNoYW5nZSB3b3J0aCBmb2N1c2luZyBmdXp6aW5nIGVmZm9ydHMgb24uIFRoZSBjaGFuZ2VzIGhhdmUgaGlnaCBwb3RlbnRpYWwgb2YgaW50cm9kdWNpbmcgc3VidGxlIGJ1Z3MsIHNvIHRoaXMgbmVlZHMgdG8gYmUgaW52ZXN0aWdhdGVkIGltbWVkaWF0ZWx5IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoY2lfc29ja19zZW5kbXNnJiMzNDssCiAgICAmIzM0O2hjaV9kZXZfY2xvc2Vfc3luYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQmx1ZXRvb3RoIHN1YnN5c3RlbSBieSBhZGRpbmcgUkNVIHByb3RlY3Rpb24gaW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBtb2RpZnlpbmcgd29ya3F1ZXVlIHN5bmNocm9uaXphdGlvbiAoYGRpc2FibGVfd29ya19zeW5jYCBhbmQgYHN5bmNocm9uaXplX3JjdWApIGluIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgZHVyaW5nIGRldmljZSB0ZWFyZG93biBhbmQgc29ja2V0IHRyYW5zbWlzc2lvbiwgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGNpX3NvY2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtoY2lfZGV2X2Nsb3NlX3N5bmMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJsdWV0b290aCBzdWJzeXN0ZW0gYnkgYWRkaW5nIFJDVSBwcm90ZWN0aW9uIGluIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgbW9kaWZ5aW5nIHdvcmtxdWV1ZSBzeW5jaHJvbml6YXRpb24gKGBkaXNhYmxlX3dvcmtfc3luY2AgYW5kIGBzeW5jaHJvbml6ZV9yY3VgKSBpbiBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGR1cmluZyBkZXZpY2UgdGVhcmRvd24gYW5kIHNvY2tldCB0cmFuc21pc3Npb24sIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUpIGJldHdlZW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gSXQgaW50cm9kdWNlcyBSQ1UgcmVhZCBsb2NrcyBpbiB0aGUgc2VuZCBwYXRoIGFuZCB1c2VzIGBkaXNhYmxlX3dvcmtfc3luY2Agd2l0aCBgc3luY2hyb25pemVfcmN1YCBpbiB0aGUgY2xvc2UgcGF0aCB0byBlbnN1cmUgc2FmZSB0ZWFyZG93bi4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgb2JqZWN0IGxpZmV0aW1lLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgbW9uaXRvcmVkIGJ5IEtBU0FOIChmb3IgdXNlLWFmdGVyLWZyZWUpIGFuZCBMT0NLREVQIChmb3IgbG9ja2luZyBpc3N1ZXMpLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG9yIG1vZGlmaWNhdGlvbnMgdG8gYnVmZmVyIGhhbmRsaW5nIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYzZGQ2NDFlYjZiODk2OWE1NzBmOTFmNjlmMGNmZjQ3Nzc3NTlhOTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxMjo0Njo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYyBiL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYwppbmRleCAwNzBjYTM4OGY5YWNlLi44MzQ1ZWJiYmQ5ZDUzIDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jCkBAIC0xODUwLDkgJiM0MzsxODUwLDEwIEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCWdvdG8gZHJvcDsKIAl9CiAKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwogCWlmICghdGVzdF9iaXQoSENJX1VQLCAmYW1wO2hkZXYtJmd0O2ZsYWdzKSkgewogCQllcnIgPSAtRU5FVERPV047Ci0JCWdvdG8gZHJvcDsKJiM0MzsJCWdvdG8gZHJvcF9yY3U7CiAJfQogCiAJaGNpX3NrYl9wa3RfdHlwZShza2IpID0gc2tiLSZndDtkYXRhWzBdOwpAQCAtMTg3MCw3ICYjNDM7MTg3MSw3IEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCSAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUICZhbXA7JmFtcDsKIAkJICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfRFJWX1BLVCkgewogCQkJZXJyID0gLUVJTlZBTDsKLQkJCWdvdG8gZHJvcDsKJiM0MzsJCQlnb3RvIGRyb3BfcmN1OwogCQl9CiAKIAkJc2tiX3F1ZXVlX3RhaWwoJmFtcDtoZGV2LSZndDtyYXdfcSwgc2tiKTsKQEAgLTE4ODUsNyAmIzQzOzE4ODYsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAogCQkJCSAgICZhbXA7aGNpX3NlY19maWx0ZXIub2NmX21hc2tbb2dmXSkpICZhbXA7JmFtcDsKIAkJICAgICFjYXBhYmxlKENBUF9ORVRfUkFXKSkgewogCQkJZXJyID0gLUVQRVJNOwotCQkJZ290byBkcm9wOwomIzQzOwkJCWdvdG8gZHJvcF9yY3U7CiAJCX0KIAogCQkvKiBTaW5jZSB0aGUgb3Bjb2RlIGhhcyBhbHJlYWR5IGJlZW4gZXh0cmFjdGVkIGhlcmUsIHN0b3JlCkBAIC0xOTA4LDE0ICYjNDM7MTkwOSwxNCBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAogCX0gZWxzZSB7CiAJCWlmICghY2FwYWJsZShDQVBfTkVUX1JBVykpIHsKIAkJCWVyciA9IC1FUEVSTTsKLQkJCWdvdG8gZHJvcDsKJiM0MzsJCQlnb3RvIGRyb3BfcmN1OwogCQl9CiAKIAkJaWYgKGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfQUNMREFUQV9QS1QgJmFtcDsmYW1wOwogCQkgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9TQ09EQVRBX1BLVCAmYW1wOyZhbXA7CiAJCSAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUKSB7CiAJCQllcnIgPSAtRUlOVkFMOwotCQkJZ290byBkcm9wOwomIzQzOwkJCWdvdG8gZHJvcF9yY3U7CiAJCX0KIAogCQlza2JfcXVldWVfdGFpbCgmYW1wO2hkZXYtJmd0O3Jhd19xLCBza2IpOwpAQCAtMTkyMywxNCAmIzQzOzE5MjQsMTYgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywKIAl9CiAKIAllcnIgPSBsZW47CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlnb3RvIGRvbmU7CiAKJiM0Mztkcm9wX3JjdToKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7ZHJvcDoKJiM0MzsJa2ZyZWVfc2tiKHNrYik7CiBkb25lOgogCXJlbGVhc2Vfc29jayhzayk7CiAJcmV0dXJuIGVycjsKLQotZHJvcDoKLQlrZnJlZV9za2Ioc2tiKTsKLQlnb3RvIGRvbmU7CiB9CiAKIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2V0c29ja29wdF9vbGQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYwppbmRleCBjOGQxNDEyOGMzNjNkLi5iYWQ4MzMxM2JiNWY5IDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jCkBAIC01NDcyLDkgJiM0Mzs1NDcyLDExIEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJaGNpX2xlZHNfdXBkYXRlX3Bvd2VyZWQoaGRldiwgZmFsc2UpOwogCiAJLyogRmx1c2ggUlggYW5kIFRYIHdvcmtzICovCi0JZmx1c2hfd29yaygmYW1wO2hkZXYtJmd0O3R4X3dvcmspOwomIzQzOwlkaXNhYmxlX3dvcmtfc3luYygmYW1wO2hkZXYtJmd0O3R4X3dvcmspOwogCWZsdXNoX3dvcmsoJmFtcDtoZGV2LSZndDtyeF93b3JrKTsKIAomIzQzOwlzeW5jaHJvbml6ZV9yY3UoKTsKJiM0MzsKIAlpZiAoaGRldi0mZ3Q7ZGlzY292X3RpbWVvdXQgJmd0OyAwKSB7CiAJCWhkZXYtJmd0O2Rpc2Nvdl90aW1lb3V0ID0gMDsKIAkJaGNpX2Rldl9jbGVhcl9mbGFnKGhkZXYsIEhDSV9ESVNDT1ZFUkFCTEUpOwpAQCAtNTU3Niw2ICYjNDM7NTU3OCw4IEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJYmFjcHkoJmFtcDtoZGV2LSZndDtyYW5kb21fYWRkciwgQkRBRERSX0FOWSk7CiAJaGNpX2NvZGVjX2xpc3RfY2xlYXIoJmFtcDtoZGV2LSZndDtsb2NhbF9jb2RlY3MpOwogCiYjNDM7CWVuYWJsZV93b3JrKCZhbXA7aGRldi0mZ3Q7dHhfd29yayk7CiYjNDM7CiAJaGNpX2Rldl9wdXQoaGRldik7CiAJcmV0dXJuIGVycjsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTMKCQkJCQkJCW91dHB1dDogMTY4CgkJCQkJCQl0aG91Z2h0czogNTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQmx1ZXRvb3RoIEhDSSBTb2NrZXQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLCBzcGVjaWZpY2FsbHkgaW4gdGhlIEJsdWV0b290aCBuZXR3b3JraW5nIGNvZGUuIEkmIzM5O20gc2VlaW5nIGFkZGl0aW9ucyBpbiBgaGNpX3NvY2tfc2VuZG1zZ2Agb2YgYHJjdV9yZWFkX2xvY2soKWAgYW5kIGByY3VfcmVhZF91bmxvY2soKWAgYXJvdW5kIHRoZSBkZXZpY2UmIzM5O3Mgb3BlcmF0aW9uYWwgY2hlY2suIEFuZCBpbiBgaGNpX2Rldl9jbG9zZV9zeW5jYCwgdGhlIGBmbHVzaF93b3JrYCBjYWxsIG9uIGB0eF93b3JrYCBpcyBiZWluZyByZXBsYWNlZCB3aXRoIGEgYGRpc2FibGVfd29ya19zeW5jYCwgYSBgc3luY2hyb25pemVfcmN1KClgIGlzIGFkZGVkLCBhbmQgdGhlbiBhbiBgZW5hYmxlX3dvcmtgLgoKSW5pdGlhbGx5LCBteSB0aG91Z2h0IHByb2Nlc3Mgd2VudCBzdHJhaWdodCB0byBhIHVzZS1hZnRlci1mcmVlIG9yIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLiBJdCBzZWVtcyBsaWtlIGBoY2lfc29ja19zZW5kbXNnYCBtaWdodCBoYXZlIGJlZW4gcXVldWluZyBzb21ldGhpbmcgdG8gYSBkZXZpY2UgdGhhdCB3YXMgaW4gdGhlIHByb2Nlc3Mgb2Ygc2h1dHRpbmcgZG93biB0aHJvdWdoIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBUaGUgYWRkaXRpb24gb2YgYHN5bmNocm9uaXplX3JjdSgpYCByZWFsbHkgc29saWRpZmllcyB0aGUgcmFjZSBjb25kaXRpb24gc3VzcGljaW9uLCBhcyBpdCYjMzk7cyBtZWFudCB0byB3YWl0IGZvciBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zIHRvIGNvbXBsZXRlLgoKU28sIHRoaXMgaXMgbGlrZWx5IGFib3V0IGRldmljZSBzaHV0ZG93biBzeW5jaHJvbml6YXRpb24sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeS4gV2FpdCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLCB0aGlzIGlzIGEgc3luY2hyb25pemF0aW9uIGlzc3VlLiBUaGUgcGF0Y2ggaXNuJiMzOTt0IGFib3V0IEtNU0FOIGFuZCBpdOKAmXMgcHVycG9zZSBpcyB0byBwcmV2ZW50IGEgdXNlLWFmdGVyLWZyZWUgb3IgZGF0YSBjb3JydXB0aW9uIGR1cmluZyBkZXZpY2Ugc2h1dGRvd24uIFRoaXMgaXNuJiMzOTt0IHJlbGF0ZWQgdG8gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgYW55IGtpbmQgb2YgaW5mb3JtYXRpb24gbGVhay4gSXQmIzM5O3MgZm9jdXNlZCBvbiBSQ1UgbG9ja2luZyBhbmQgd29ya3F1ZXVlIG1hbmFnZW1lbnQuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtLiBMb29raW5nIGF0IHRoZSBjb2RlIHNuaXBwZXRzIGFnYWluOiB0aGUgbG9jayBpbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIHRoZSBgZGlzYWJsZV93b3JrX3N5bmNgIGFuZCBgc3luY2hyb25pemVfcmN1YCBpbiBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gWXVwLCB0aGlzIGlzIGFsbCBhYm91dCBzeW5jaHJvbml6YXRpb24sIGRlZmluaXRlbHkgbm90IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBzeW5jaHJvbml6YXRpb24gaXNzdWUgKGxpa2VseSBhIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlKSBiZXR3ZWVuIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AuIEl0IGludHJvZHVjZXMgUkNVIHJlYWQgbG9ja3MgaW4gdGhlIHNlbmQgcGF0aCBhbmQgdXNlcyBgZGlzYWJsZV93b3JrX3N5bmNgIHdpdGggYHN5bmNocm9uaXplX3JjdWAgaW4gdGhlIGNsb3NlIHBhdGggdG8gZW5zdXJlIHNhZmUgdGVhcmRvd24uIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gY29uY3VycmVuY3kgYW5kIG9iamVjdCBsaWZldGltZSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IG1vbml0b3JlZCBieSBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlKSBhbmQgTE9DS0RFUCAoZm9yIGxvY2tpbmcgaXNzdWVzKS4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBvciBtb2RpZmljYXRpb25zIHRvIGJ1ZmZlciBoYW5kbGluZyB0aGF0IHdvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgc3luY2hyb25pemF0aW9uIGlzc3VlIChsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSkgYmV0d2VlbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBJdCBpbnRyb2R1Y2VzIFJDVSByZWFkIGxvY2tzIGluIHRoZSBzZW5kIHBhdGggYW5kIHVzZXMgYGRpc2FibGVfd29ya19zeW5jYCB3aXRoIGBzeW5jaHJvbml6ZV9yY3VgIGluIHRoZSBjbG9zZSBwYXRoIHRvIGVuc3VyZSBzYWZlIHRlYXJkb3duLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIGNvbmN1cnJlbmN5IGFuZCBvYmplY3QgbGlmZXRpbWUsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBtb25pdG9yZWQgYnkgS0FTQU4gKGZvciB1c2UtYWZ0ZXItZnJlZSkgYW5kIExPQ0tERVAgKGZvciBsb2NraW5nIGlzc3VlcykuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZSwgb3IgbW9kaWZpY2F0aW9ucyB0byBidWZmZXIgaGFuZGxpbmcgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDY6NDguNDg4NzQ2NzYxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1NTU3NjQzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoY2lfc29ja19zZW5kbXNnXCIsXG4gICAgXCJoY2lfZGV2X2Nsb3NlX3N5bmNcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUpIGJldHdlZW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gSXQgaW50cm9kdWNlcyBSQ1UgcmVhZCBsb2NrcyBpbiB0aGUgc2VuZCBwYXRoIGFuZCB1c2VzIGBkaXNhYmxlX3dvcmtfc3luY2Agd2l0aCBgc3luY2hyb25pemVfcmN1YCBpbiB0aGUgY2xvc2UgcGF0aCB0byBlbnN1cmUgc2FmZSB0ZWFyZG93bi4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgb2JqZWN0IGxpZmV0aW1lLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgbW9uaXRvcmVkIGJ5IEtBU0FOIChmb3IgdXNlLWFmdGVyLWZyZWUpIGFuZCBMT0NLREVQIChmb3IgbG9ja2luZyBpc3N1ZXMpLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG9yIG1vZGlmaWNhdGlvbnMgdG8gYnVmZmVyIGhhbmRsaW5nIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJsdWV0b290aCBzdWJzeXN0ZW0gYnkgYWRkaW5nIFJDVSBwcm90ZWN0aW9uIGluIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgbW9kaWZ5aW5nIHdvcmtxdWV1ZSBzeW5jaHJvbml6YXRpb24gKGBkaXNhYmxlX3dvcmtfc3luY2AgYW5kIGBzeW5jaHJvbml6ZV9yY3VgKSBpbiBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGR1cmluZyBkZXZpY2UgdGVhcmRvd24gYW5kIHNvY2tldCB0cmFuc21pc3Npb24sIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0Njo0OC40ODg3NTMxNTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNzg4MzcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYzZGQ2NDFlYjZiODk2OWE1NzBmOTFmNjlmMGNmZjQ3Nzc3NTlhOTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMTI6NDY6NDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXFxuaW5kZXggMDcwY2EzODhmOWFjZS4uODM0NWViYmJkOWQ1MyAxMDA2NDRcXG4tLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcXG4rKysgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcXG5AQCAtMTg1MCw5ICsxODUwLDEwIEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuIFxcdFxcdGdvdG8gZHJvcDtcXG4gXFx0fVxcbiBcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRpZiAoIXRlc3RfYml0KEhDSV9VUCwgXFx1MDAyNmhkZXYtXFx1MDAzZWZsYWdzKSkge1xcbiBcXHRcXHRlcnIgPSAtRU5FVERPV047XFxuLVxcdFxcdGdvdG8gZHJvcDtcXG4rXFx0XFx0Z290byBkcm9wX3JjdTtcXG4gXFx0fVxcbiBcXG4gXFx0aGNpX3NrYl9wa3RfdHlwZShza2IpID0gc2tiLVxcdTAwM2VkYXRhWzBdO1xcbkBAIC0xODcwLDcgKzE4NzEsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHRcXHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9JU09EQVRBX1BLVCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9EUlZfUEtUKSB7XFxuIFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuLVxcdFxcdFxcdGdvdG8gZHJvcDtcXG4rXFx0XFx0XFx0Z290byBkcm9wX3JjdTtcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmhkZXYtXFx1MDAzZXJhd19xLCBza2IpO1xcbkBAIC0xODg1LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHRcXHRcXHRcXHQgICBcXHUwMDI2aGNpX3NlY19maWx0ZXIub2NmX21hc2tbb2dmXSkpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAhY2FwYWJsZShDQVBfTkVUX1JBVykpIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVQRVJNO1xcbi1cXHRcXHRcXHRnb3RvIGRyb3A7XFxuK1xcdFxcdFxcdGdvdG8gZHJvcF9yY3U7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdC8qIFNpbmNlIHRoZSBvcGNvZGUgaGFzIGFscmVhZHkgYmVlbiBleHRyYWN0ZWQgaGVyZSwgc3RvcmVcXG5AQCAtMTkwOCwxNCArMTkwOSwxNCBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRpZiAoIWNhcGFibGUoQ0FQX05FVF9SQVcpKSB7XFxuIFxcdFxcdFxcdGVyciA9IC1FUEVSTTtcXG4tXFx0XFx0XFx0Z290byBkcm9wO1xcbitcXHRcXHRcXHRnb3RvIGRyb3BfcmN1O1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpZiAoaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9BQ0xEQVRBX1BLVCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9TQ09EQVRBX1BLVCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9JU09EQVRBX1BLVCkge1xcbiBcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbi1cXHRcXHRcXHRnb3RvIGRyb3A7XFxuK1xcdFxcdFxcdGdvdG8gZHJvcF9yY3U7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHNrYl9xdWV1ZV90YWlsKFxcdTAwMjZoZGV2LVxcdTAwM2VyYXdfcSwgc2tiKTtcXG5AQCAtMTkyMywxNCArMTkyNCwxNiBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHR9XFxuIFxcbiBcXHRlcnIgPSBsZW47XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRnb3RvIGRvbmU7XFxuIFxcbitkcm9wX3JjdTpcXG4rXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK2Ryb3A6XFxuK1xcdGtmcmVlX3NrYihza2IpO1xcbiBkb25lOlxcbiBcXHRyZWxlYXNlX3NvY2soc2spO1xcbiBcXHRyZXR1cm4gZXJyO1xcbi1cXG4tZHJvcDpcXG4tXFx0a2ZyZWVfc2tiKHNrYik7XFxuLVxcdGdvdG8gZG9uZTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBoY2lfc29ja19zZXRzb2Nrb3B0X29sZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcXG5pbmRleCBjOGQxNDEyOGMzNjNkLi5iYWQ4MzMxM2JiNWY5IDEwMDY0NFxcbi0tLSBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xcbisrKyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xcbkBAIC01NDcyLDkgKzU0NzIsMTEgQEAgaW50IGhjaV9kZXZfY2xvc2Vfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4gXFx0aGNpX2xlZHNfdXBkYXRlX3Bvd2VyZWQoaGRldiwgZmFsc2UpO1xcbiBcXG4gXFx0LyogRmx1c2ggUlggYW5kIFRYIHdvcmtzICovXFxuLVxcdGZsdXNoX3dvcmsoXFx1MDAyNmhkZXYtXFx1MDAzZXR4X3dvcmspO1xcbitcXHRkaXNhYmxlX3dvcmtfc3luYyhcXHUwMDI2aGRldi1cXHUwMDNldHhfd29yayk7XFxuIFxcdGZsdXNoX3dvcmsoXFx1MDAyNmhkZXYtXFx1MDAzZXJ4X3dvcmspO1xcbiBcXG4rXFx0c3luY2hyb25pemVfcmN1KCk7XFxuK1xcbiBcXHRpZiAoaGRldi1cXHUwMDNlZGlzY292X3RpbWVvdXQgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdGhkZXYtXFx1MDAzZWRpc2Nvdl90aW1lb3V0ID0gMDtcXG4gXFx0XFx0aGNpX2Rldl9jbGVhcl9mbGFnKGhkZXYsIEhDSV9ESVNDT1ZFUkFCTEUpO1xcbkBAIC01NTc2LDYgKzU1NzgsOCBAQCBpbnQgaGNpX2Rldl9jbG9zZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxcbiBcXHRiYWNweShcXHUwMDI2aGRldi1cXHUwMDNlcmFuZG9tX2FkZHIsIEJEQUREUl9BTlkpO1xcbiBcXHRoY2lfY29kZWNfbGlzdF9jbGVhcihcXHUwMDI2aGRldi1cXHUwMDNlbG9jYWxfY29kZWNzKTtcXG4gXFxuK1xcdGVuYWJsZV93b3JrKFxcdTAwMjZoZGV2LVxcdTAwM2V0eF93b3JrKTtcXG4rXFxuIFxcdGhjaV9kZXZfcHV0KGhkZXYpO1xcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ2OjQ5LjAyNzE3Nzg4N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI1MDQ5NTU4NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGNpX3NvY2tfc2VuZG1zZ1wiLFxuICAgIFwiaGNpX2Rldl9jbG9zZV9zeW5jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJsdWV0b290aCBzdWJzeXN0ZW0gYnkgYWRkaW5nIFJDVSBwcm90ZWN0aW9uIGluIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgbW9kaWZ5aW5nIHdvcmtxdWV1ZSBzeW5jaHJvbml6YXRpb24gKGBkaXNhYmxlX3dvcmtfc3luY2AgYW5kIGBzeW5jaHJvbml6ZV9yY3VgKSBpbiBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGR1cmluZyBkZXZpY2UgdGVhcmRvd24gYW5kIHNvY2tldCB0cmFuc21pc3Npb24sIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmM2RkNjQxZWI2Yjg5NjlhNTcwZjkxZjY5ZjBjZmY0Nzc3NzU5YTkwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTI6NDY6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbmluZGV4IDA3MGNhMzg4ZjlhY2UuLjgzNDVlYmJiZDlkNTMgMTAwNjQ0XG4tLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbisrKyBiL25ldC9ibHVldG9vdGgvaGNpX3NvY2suY1xuQEAgLTE4NTAsOSArMTg1MCwxMCBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHRnb3RvIGRyb3A7XG4gXHR9XG4gXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRpZiAoIXRlc3RfYml0KEhDSV9VUCwgXHUwMDI2aGRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0ZXJyID0gLUVORVRET1dOO1xuLVx0XHRnb3RvIGRyb3A7XG4rXHRcdGdvdG8gZHJvcF9yY3U7XG4gXHR9XG4gXG4gXHRoY2lfc2tiX3BrdF90eXBlKHNrYikgPSBza2ItXHUwMDNlZGF0YVswXTtcbkBAIC0xODcwLDcgKzE4NzEsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9JU09EQVRBX1BLVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfRFJWX1BLVCkge1xuIFx0XHRcdGVyciA9IC1FSU5WQUw7XG4tXHRcdFx0Z290byBkcm9wO1xuK1x0XHRcdGdvdG8gZHJvcF9yY3U7XG4gXHRcdH1cbiBcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2aGRldi1cdTAwM2VyYXdfcSwgc2tiKTtcbkBAIC0xODg1LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHRcdFx0ICAgXHUwMDI2aGNpX3NlY19maWx0ZXIub2NmX21hc2tbb2dmXSkpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIWNhcGFibGUoQ0FQX05FVF9SQVcpKSB7XG4gXHRcdFx0ZXJyID0gLUVQRVJNO1xuLVx0XHRcdGdvdG8gZHJvcDtcbitcdFx0XHRnb3RvIGRyb3BfcmN1O1xuIFx0XHR9XG4gXG4gXHRcdC8qIFNpbmNlIHRoZSBvcGNvZGUgaGFzIGFscmVhZHkgYmVlbiBleHRyYWN0ZWQgaGVyZSwgc3RvcmVcbkBAIC0xOTA4LDE0ICsxOTA5LDE0IEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHR9IGVsc2Uge1xuIFx0XHRpZiAoIWNhcGFibGUoQ0FQX05FVF9SQVcpKSB7XG4gXHRcdFx0ZXJyID0gLUVQRVJNO1xuLVx0XHRcdGdvdG8gZHJvcDtcbitcdFx0XHRnb3RvIGRyb3BfcmN1O1xuIFx0XHR9XG4gXG4gXHRcdGlmIChoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0FDTERBVEFfUEtUIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9TQ09EQVRBX1BLVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfSVNPREFUQV9QS1QpIHtcbiBcdFx0XHRlcnIgPSAtRUlOVkFMO1xuLVx0XHRcdGdvdG8gZHJvcDtcbitcdFx0XHRnb3RvIGRyb3BfcmN1O1xuIFx0XHR9XG4gXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNmhkZXYtXHUwMDNlcmF3X3EsIHNrYik7XG5AQCAtMTkyMywxNCArMTkyNCwxNiBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0fVxuIFxuIFx0ZXJyID0gbGVuO1xuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRnb3RvIGRvbmU7XG4gXG4rZHJvcF9yY3U6XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbitkcm9wOlxuK1x0a2ZyZWVfc2tiKHNrYik7XG4gZG9uZTpcbiBcdHJlbGVhc2Vfc29jayhzayk7XG4gXHRyZXR1cm4gZXJyO1xuLVxuLWRyb3A6XG4tXHRrZnJlZV9za2Ioc2tiKTtcbi1cdGdvdG8gZG9uZTtcbiB9XG4gXG4gc3RhdGljIGludCBoY2lfc29ja19zZXRzb2Nrb3B0X29sZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuaW5kZXggYzhkMTQxMjhjMzYzZC4uYmFkODMzMTNiYjVmOSAxMDA2NDRcbi0tLSBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuKysrIGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXG5AQCAtNTQ3Miw5ICs1NDcyLDExIEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4gXHRoY2lfbGVkc191cGRhdGVfcG93ZXJlZChoZGV2LCBmYWxzZSk7XG4gXG4gXHQvKiBGbHVzaCBSWCBhbmQgVFggd29ya3MgKi9cbi1cdGZsdXNoX3dvcmsoXHUwMDI2aGRldi1cdTAwM2V0eF93b3JrKTtcbitcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNmhkZXYtXHUwMDNldHhfd29yayk7XG4gXHRmbHVzaF93b3JrKFx1MDAyNmhkZXYtXHUwMDNlcnhfd29yayk7XG4gXG4rXHRzeW5jaHJvbml6ZV9yY3UoKTtcbitcbiBcdGlmIChoZGV2LVx1MDAzZWRpc2Nvdl90aW1lb3V0IFx1MDAzZSAwKSB7XG4gXHRcdGhkZXYtXHUwMDNlZGlzY292X3RpbWVvdXQgPSAwO1xuIFx0XHRoY2lfZGV2X2NsZWFyX2ZsYWcoaGRldiwgSENJX0RJU0NPVkVSQUJMRSk7XG5AQCAtNTU3Niw2ICs1NTc4LDggQEAgaW50IGhjaV9kZXZfY2xvc2Vfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcbiBcdGJhY3B5KFx1MDAyNmhkZXYtXHUwMDNlcmFuZG9tX2FkZHIsIEJEQUREUl9BTlkpO1xuIFx0aGNpX2NvZGVjX2xpc3RfY2xlYXIoXHUwMDI2aGRldi1cdTAwM2Vsb2NhbF9jb2RlY3MpO1xuIFxuK1x0ZW5hYmxlX3dvcmsoXHUwMDI2aGRldi1cdTAwM2V0eF93b3JrKTtcbitcbiBcdGhjaV9kZXZfcHV0KGhkZXYpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0Njo0OS4wMjcxNzg4MjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDQ0NjIwMTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJsdWV0b290aCBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiB0aGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gYG5ldC9ibHVldG9vdGgvaGNpX3NvY2suY2AgYW5kIGBuZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNgLiBTZWVtcyBsaWtlIHNvbWVvbmUncyBiZWVuIGJ1c3kgd2l0aCBzb21lIGNvcmUgQmx1ZXRvb3RoIGludGVybmFscy4gU3BlY2lmaWNhbGx5LCBgaGNpX3NvY2tfc2VuZG1zZ2AgaGFzIGJlZW4gdXBkYXRlZCB3aXRoIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIGNhbGxzLCB3aGljaCByaW5ncyBhbGFybSBiZWxscyDigJMgdGhhdCdzIGFsbW9zdCBjZXJ0YWlubHkgdG8gYWRkcmVzcyBzb21lIGtpbmQgb2YgcG90ZW50aWFsIGRhdGEgcmFjZSBvciBwcm90ZWN0aW9uIGlzc3VlIHdoZW4gcmVhZGluZyBkYXRhIGZyb20gYW4gUkNVIHByb3RlY3RlZCBhcmVhLiBJJ20gZ3Vlc3NpbmcgYGhkZXZgIHN0YXRlIGlzIGludm9sdmVkLlxuXG5UaGVuLCBvdmVyIGluIGBoY2lfc3luYy5jYCwgdGhpbmdzIGdldCBldmVuIG1vcmUgaW50ZXJlc3RpbmcuIFRoZXkndmUgc3dhcHBlZCBvdXQgYGZsdXNoX3dvcmsoXHUwMDI2aGRldi1cdTAwM2V0eF93b3JrKWAgZm9yIGBkaXNhYmxlX3dvcmtfc3luYyhcdTAwMjZoZGV2LVx1MDAzZXR4X3dvcmspYCBhbmQgYWRkZWQgYHN5bmNocm9uaXplX3JjdSgpYCwgcGx1cyBhbiBgZW5hYmxlX3dvcmsoKWAgY2FsbCBhdCB0aGUgZW5kLiBUaGF0IGlzIGEgdmVyeSBzcGVjaWZpYyBwYXR0ZXJuISBUaGlzICpzY3JlYW1zKiB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbiB3aXRoIHRoZSBgdHhfd29ya2Agd29ya3F1ZXVlIGFuZCBwcm9iYWJseSB0aGUgc2h1dGRvd24gb2YgdGhlIGRldmljZS4gVGhlIGNoYW5nZSBmcm9tIGBmbHVzaF93b3JrYCB0byBgZGlzYWJsZV93b3JrX3N5bmNgIGlzIGtleSBoZXJlIHRvIGVuc3VyaW5nIHRoYXQgYW55IHdvcmsgcXVldWVkIHRvIHRoZSBgdHhfd29ya2Agd29ya3F1ZXVlIGFyZSBjb21wbGV0ZWx5IGZpbmlzaGVkIGJlZm9yZSB0aGUgZGV2aWNlIHNodXRkb3duIGNvbnRpbnVlcywgYW5kIHRoYXQgYW55IHJlZmVyZW5jZXMgZnJvbSB0aGUgd29ya3F1ZXVlIGNvZGUgdG8gdGhlIGBoZGV2YCBzdHJ1Y3R1cmUgb3IgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIGRvbmUgYmVmb3JlIHRoZXkgY2FuIGJlIGZyZWVkLiBUaGUgYHN5bmNocm9uaXplX3JjdSgpYCBjYWxsIGNvbmZpcm1zIG15IHN1c3BpY2lvbiDigJMgdGhleSdyZSBjbGVhbmluZyB1cCBSQ1UgcmVhZGVycyBiZWZvcmUgYWxsb3dpbmcgdGhlIGRldmljZSB0byBjb21wbGV0ZWx5IGNsb3NlLlxuXG5UaGUgcGF0Y2ggdG91Y2hlcyBib3RoIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AsIHdoaWNoIGFyZSBpbXBvcnRhbnQgdG8gcmVjb2duaXplLCBiZWNhdXNlIHRoZXkgYXJlIGV4cG9zZWQgdG8gdGhlIHVzZXIgc3BhY2UuIFNvIHRoaXMgaXMgdGhlIHNvcnQgb2YgY2hhbmdlIHRoYXQgY2FuIGhhdmUgZmFpcmx5IHdpZGVzcHJlYWQgaW1wYWN0LCBldmVuIGlmIGl0J3MgdGFyZ2V0ZWQgYW5kIHN1YnRsZS4gV2UncmUgbG9va2luZyBhdCBvcGVyYXRpb25zIHRoYXQgYXJlIGRpcmVjdGx5IHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIGFjdGlvbnM6IHNlbmRpbmcgYSBtZXNzYWdlIG9uIGFuIEhDSSBzb2NrZXQsIGFuZCBjbG9zaW5nIGFuIEhDSSBkZXZpY2UsIHJlc3BlY3RpdmVseS5cblxuUmlnaHQsIHRpbWUgdG8gY2hlY2sgdGhlIHByZXJlcXVpc2l0ZXMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYENPTkZJR19CVGAgaXMgY29ycmVjdGx5IGVuYWJsZWQsIGFuZCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMsIHByb2JhYmx5IHVuZGVyIGBuZXQvYmx1ZXRvb3RoL2AsIHRvIGJlIGNlcnRhaW4gaWYgdGhlcmUgYXJlIG1vcmUgcHJlY2lzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgbmVjZXNzYXJ5IG9yIGF0IGxlYXN0IGhpZ2hseSByZWxldmFudC4gSSdsbCBjaGVjayB0aGF0IHRvIGVuc3VyZSB0aGlzIHBhdGNoIGlzIHJlbGV2YW50IGFuZCBjb3JyZWN0IGZvciB0aGUgZ2l2ZW4gc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDE2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDY6NTYuMDcxODAzMzk0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MTU1Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYmx1ZXRvb3RoL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JsdWV0b290aC9LY29uZmlnLTUtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjY6bWVudWNvbmZpZyBCVFxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJCbHVldG9vdGggc3Vic3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNDEtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjQyOmNvbmZpZyBCVF9CUkVEUlxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy00My1cXHRib29sIFxcXCJCbHVldG9vdGggQ2xhc3NpYyAoQlIvRURSKSBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZz01Nj1zb3VyY2UgXFxcIm5ldC9ibHVldG9vdGgvaGlkcC9LY29uZmlnXFxcIlxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy01Ny1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6NTg6Y29uZmlnIEJUX0xFXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIkJsdWV0b290aCBMb3cgRW5lcmd5IChMRSkgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNjUtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjY2OmNvbmZpZyBCVF9MRV9MMkNBUF9FQ1JFRFxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy02Ny1cXHRib29sIFxcXCJCbHVldG9vdGggTDJDQVAgRW5oYW5jZWQgQ3JlZGl0IEZsb3cgQ29udHJvbFxcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy03Ni1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6Nzc6Y29uZmlnIEJUXzZMT1dQQU5cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNzgtXFx0dHJpc3RhdGUgXFxcIkJsdWV0b290aCA2TG9XUEFOIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctODItXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjgzOmNvbmZpZyBCVF9MRURTXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctOTEtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjkyOmNvbmZpZyBCVF9NU0ZURVhUXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTkzLVxcdGJvb2wgXFxcIkVuYWJsZSBNaWNyb3NvZnQgZXh0ZW5zaW9uc1xcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy05OC1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6OTk6Y29uZmlnIEJUX0FPU1BFWFRcXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctMTAwLVxcdGJvb2wgXFxcIkVuYWJsZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QgZXh0ZW5zaW9uc1xcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMDUtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjEwNjpjb25maWcgQlRfREVCVUdGU1xcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiRXhwb3J0IEJsdWV0b290aCBpbnRlcm5hbHMgaW4gZGVidWdmc1xcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMTMtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjExNDpjb25maWcgQlRfU0VMRlRFU1RcXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctMTE1LVxcdGJvb2wgXFxcIkJsdWV0b290aCBzZWxmIHRlc3Rpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMjYtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjEyNzpjb25maWcgQlRfU0VMRlRFU1RfRUNESFxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMjgtXFx0Ym9vbCBcXFwiRUNESCB0ZXN0IGNhc2VzXFxcIlxcbi0tXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTEzMy1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6MTM0OmNvbmZpZyBCVF9TRUxGVEVTVF9TTVBcXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIlNNUCB0ZXN0IGNhc2VzXFxcIlxcbi0tXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTE0MC1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6MTQxOmNvbmZpZyBCVF9GRUFUVVJFX0RFQlVHXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTE0Mi1cXHRib29sIFxcXCJFbmFibGUgcnVudGltZSBvcHRpb24gZm9yIGRlYnVnZ2luZyBzdGF0ZW1lbnRzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0Njo1Ni4xMjY5NjMyNDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc3OTM5MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgRm9jdXM6IEJUIENvbmZpZ3VyYXRpb24gYW5kIERldmljZSBDbG9zdXJlKipcblxuT2theSwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCByZXZvbHZlcyBhcm91bmQgYEJUYC4gIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byBmb2N1cyBvbiB0d28ga2V5IGZ1bmN0aW9uczogYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gTm93LCBpcyBgaGNpX2Rldl9jbG9zZV9zeW5jYCB0aGUgcmlnaHQgZnVuY3Rpb24gdG8gcmVhbGx5IGRpZyBpbnRvPyBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHRoZSBkZXZpY2UgY2xvc2luZywgd2hpY2ggaXMgZGVmaW5pdGVseSByZWxldmFudCB0byB1bmRlcnN0YW5kaW5nIHRoZSBsaWZlY3ljbGUsIGVzcGVjaWFsbHkgaWYgd2UncmUgbG9va2luZyBhdCBpc3N1ZXMgaW4gdGVhcmRvd24uIEkgdGhpbmsgdGhlIGtleSBoZXJlIGlzIHRoZSBmYWN0IHRoYXQgaXQgaXMgY2FsbGVkIHdoZW4gY2xvc2luZyB0aGUgZGV2aWNlLiBNYWtlcyBzZW5zZS4gQnV0IGp1c3QgdG8gYmUgc3VyZSwgYmVmb3JlIEkgZ28gZGVlcGVyIGRvd24gdGhhdCByYWJiaXQgaG9sZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYXJvdW5kIGl0IHRvIGVuc3VyZSB0aGlzIGlzIHRoZSBwcm9wZXIgZnVuY3Rpb24gdG8gc3BlbmQgbW9yZSB0aW1lIG9uLCBhbmQgdGhlcmUgYXJlbid0IG90aGVycyBJIG5lZWQgdG8gY29uc2lkZXIgYXQgdGhlIHNhbWUgdGltZS4gTGV0IG1lIHRyYWNlIGl0cyBjYWxscyBhbmQgY29uZmlybSBpdHMgcmVsZXZhbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTY0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDY6NTkuNjA0OTA0NTg3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDcxMTMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoY2lfZGV2X2Nsb3NlX3N5bmNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JsdWV0b290aC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JsdWV0b290aC9oY2lfY29ubi5jPTExOTY9c3RhdGljIHZvaWQgaGNpX2Nvbm5fdW5saW5rKHN0cnVjdCBoY2lfY29ubiAqY29ubilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX2Nvbm4uYy0xMjEwLVxcdFxcdFxcdC8qIElmIGhkZXYgaXMgZG93biBpdCBtZWFuc1xcbm5ldC9ibHVldG9vdGgvaGNpX2Nvbm4uYzoxMjExOlxcdFxcdFxcdCAqIGhjaV9kZXZfY2xvc2Vfc3luYy9oY2lfY29ubl9oYXNoX2ZsdXNoIGlzIGluIHByb2dyZXNzXFxubmV0L2JsdWV0b290aC9oY2lfY29ubi5jLTEyMTItXFx0XFx0XFx0ICogYW5kIGxpbmtzIGRvbid0IG5lZWQgdG8gYmUgY2xlYW51cCBhcyBhbGwgY29ubmVjdGlvbnNcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYz00OTE9aW50IGhjaV9kZXZfZG9fY2xvc2Uoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMtNDk4LVxcbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYzo0OTk6XFx0ZXJyID0gaGNpX2Rldl9jbG9zZV9zeW5jKGhkZXYpO1xcbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYy01MDAtXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmM9NTMxPXN0YXRpYyBpbnQgaGNpX2Rldl9kb19yZXNldChzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYy01MzgtXFxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jOjUzOTpcXHRyZXQgPSBoY2lfZGV2X2Nsb3NlX3N5bmMoaGRldik7XFxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jLTU0MC1cXHRpZiAoIXJldClcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYz01NDA3PXN0YXRpYyBpbnQgaGNpX2Rldl9zaHV0ZG93bihzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01NDMxLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYzo1NDMyOmludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTU0MzMte1xcbi0tXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTU1OTM9c3RhdGljIGludCBoY2lfcG93ZXJfb25fc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01NjE2LVxcdFxcdGhjaV9kZXZfY2xlYXJfZmxhZyhoZGV2LCBIQ0lfQVVUT19PRkYpO1xcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYzo1NjE3OlxcdFxcdGhjaV9kZXZfY2xvc2Vfc3luYyhoZGV2KTtcXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTYxOC1cXHR9IGVsc2UgaWYgKGhjaV9kZXZfdGVzdF9mbGFnKGhkZXYsIEhDSV9BVVRPX09GRikpIHtcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYz01OTI1PXN0YXRpYyBpbnQgaGNpX2Rpc2Nvbm5lY3RfYWxsX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYsIHU4IHJlYXNvbilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01OTUzLSAqIERpc2Nvbm5lY3QgYWxsIGNvbm5lY3Rpb25zXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjU5NTQ6ICogaGNpX2Rldl9jbG9zZV9zeW5jXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTU5NTUtICovXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTU5NTY9c3RhdGljIGludCBoY2lfcG93ZXJfb2ZmX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTk4NS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmM6NTk4NjpcXHRlcnIgPSBoY2lfZGV2X2Nsb3NlX3N5bmMoaGRldik7XFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTU5ODctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ2OjU5LjcxNTYyNDEwNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NjUzNTA3MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJsdWV0b290aCBIQ0kgRGV2aWNlIFNodXRkb3duIGFuZCBTb2NrZXQgQ29tbXVuaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBCbHVldG9vdGggSENJIGRldmljZXMgYXJlIGNsb3NlZCBhbmQgaG93IHRoZSBzb2NrZXQgY29tbXVuaWNhdGlvbiB3b3JrcywgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZnVuY3Rpb25zIHRvIHRhcmdldC4gYGhjaV9kZXZfY2xvc2Vfc3luY2AgaXMgZGVmaW5pdGVseSBjYWxsZWQgYnkgdmFyaW91cyBmdW5jdGlvbnMgbGlrZSBgaGNpX2Rldl9kb19jbG9zZWAgYW5kIGBoY2lfcG93ZXJfb2ZmX3N5bmNgLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBpb2N0bHMgYW5kIG5ldGxpbmsgY29tbWFuZHMgdG8gc2h1dCBkb3duIHRoZSBIQ0kgZGV2aWNlLiBUaGF0IG1ha2VzIGl0IHBvdGVudGlhbGx5IGludGVyZXN0aW5nLlxuXG5Ob3csIGBoY2lfc29ja19zZW5kbXNnYCBoYW5kbGVzIHNlbmRpbmcgbWVzc2FnZXMgZm9yIGBBRl9CTFVFVE9PVEhgIHNvY2tldHMgd2l0aCBgQlRQUk9UT19IQ0lgLiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGVudHJ5IHBvaW50IHRvIGludmVzdGlnYXRlIGZ1cnRoZXIsIGJlaW5nIHRoZSBzdGFuZGFyZCBgc2VuZG1zZ2AgaGFuZGxlciBmb3IgSENJIHNvY2tldHMuIFNvLCBhcmUgYm90aCBpbnRlcmVzdGluZz9cblxuTGV0J3Mgc2VlLiBIYW5nIG9uLi4uIGBoY2lfZGV2X2Nsb3NlX3N5bmNgIGlzIG5vdCBzdGF0aWMsIGl0J3MgZGVmaW5lZCBpbiBgbmV0L2JsdWV0b290aC9oY2lfc3luYy5jYC4gYGhjaV9zb2NrX3NlbmRtc2dgIGlzIHN0YXRpYyBpbiBgbmV0L2JsdWV0b290aC9oY2lfc29jay5jYC4gQWgsIHllcywgY29uZmlybWVkOiBgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilgLlxuXG5TbywgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnQgZnVuY3Rpb25zLiBFdmVuIHRob3VnaCBgaGNpX3NvY2tfc2VuZG1zZ2AgaXMgc3RhdGljLCBpdCdzIGFzc2lnbmVkIHRvIGBwcm90b19vcHMuc2VuZG1zZ2AsIHdoaWNoIG1lYW5zIGl0IHdvbid0IGJlIGlubGluZWQuIEl0IGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0IG1lYW5zIHN5emthbGxlciBjYW4gcmVhY2ggaXQuXG5cblRvIGJlIHNhZmUsIEknbGwga2VlcCBib3RoIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AgaW4gbWluZC4gSnVzdCBpbiBjYXNlIG9uZSBwcm92ZXMgbW9yZSB1c2VmdWwgdGhhbiB0aGUgb3RoZXIuIEknbGwgYWxzbyBjb25zaWRlciBgaGNpX2Rldl9kb19jbG9zZWAuIEkgdGhpbmsgYGhjaV9kZXZfY2xvc2Vfc3luY2AgaXMgcHJlZmVyYWJsZSBzaW5jZSBpdCBpcyBub24tc3RhdGljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjQzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ3OjA3LjU4MDk3NzYyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NjAyNjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhjaV9zb2NrX3NlbmRtc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JsdWV0b290aC9oY2lfc29jay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYz0xNzMyPXN0YXRpYyBpbnQgaGNpX2xvZ2dpbmdfZnJhbWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jLTE3OTctXFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jOjE3OTg6c3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMtMTc5OS1cXHRcXHRcXHQgICAgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYz0yMTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGhjaV9zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYy0yMTgxLVxcdC5nZXRuYW1lXFx0PSBoY2lfc29ja19nZXRuYW1lLFxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYzoyMTgyOlxcdC5zZW5kbXNnXFx0PSBoY2lfc29ja19zZW5kbXNnLFxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYy0yMTgzLVxcdC5yZWN2bXNnXFx0PSBoY2lfc29ja19yZWN2bXNnLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0NzowNy42NTc1ODUzNzNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjYzOTk1NDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJsdWV0b290aCBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBoY2lfc29ja19zZW5kbXNnYCBpc24ndCBpbmxpbmVkIOKAkyB3aGljaCBpcyBleHBlY3RlZCwgZ2l2ZW4gaXQncyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGFyZ2V0LiBHb29kLiBOb3csIHRoZSBtZWF0IG9mIGl0IHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiBvciBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbi4gSXQncyBkb2luZyB0aGlzIGJ5IGJyaW5naW5nIGluIFJDVSBwcm90ZWN0aW9uIHdpdGhpbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIHRoZW4gcHJvcGVybHkgc3luY2hyb25pemluZyBSQ1UgaW4gYGhjaV9kZXZfY2xvc2Vfc3luY2AuIEkgYWxzbyBzZWUgY2hhbmdlcyB3aXRoIHRoZSB3b3JrcXVldWUgc3luY2hyb25pemF0aW9uLCBzd2l0Y2hpbmcgZnJvbSBgZmx1c2hfd29ya2AgdG8gYGRpc2FibGVfd29ya19zeW5jYCBhbmQgaW50cm9kdWNpbmcgYGVuYWJsZV93b3JrYCBmb3IgYHR4X3dvcmtgLlxuXG5Gcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEFueSBtb2RpZmljYXRpb24gdG8gc3luY2hyb25pemF0aW9uIG9yIGRhdGEgYWNjZXNzIGlzIGEgZ29vZCBjYW5kaWRhdGUgdG8gcG9rZSBhdC4gR2l2ZW4gdGhhdCB0aGUgQmx1ZXRvb3RoIHN1YnN5c3RlbSAoYEJUYCBjb25maWcpIGlzIHRoZSByZWxldmFudCBjb250ZXh0IGFuZCB0aGUgdGFyZ2V0ZWQgZnVuY3Rpb25zIGFyZSBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLCBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGEgaGlnaCBwcmlvcml0eSBmb3IgaW52ZXN0aWdhdGlvbi5cblxuSSdsbCBkb3VibGUtY2hlY2sgdG8gY29uZmlybSB0aGF0IHRoZSBgQlRgIGNvbmZpZyBpcyB0aGUgcHJpbWFyeSBnYXRpbmcgZmFjdG9yLCBidXQgc28gZmFyLCB0aGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBjaGFuZ2Ugd29ydGggZm9jdXNpbmcgZnV6emluZyBlZmZvcnRzIG9uLiBUaGUgY2hhbmdlcyBoYXZlIGhpZ2ggcG90ZW50aWFsIG9mIGludHJvZHVjaW5nIHN1YnRsZSBidWdzLCBzbyB0aGlzIG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZCBpbW1lZGlhdGVseSFcblxuXG4iLCJJbnB1dFRva2VucyI6Njg0NywiT3V0cHV0VG9rZW5zIjoxMzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDc6MTMuOTIxNTgzMTc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MTQ3ODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhjaV9zb2NrX3NlbmRtc2dcIixcbiAgICBcImhjaV9kZXZfY2xvc2Vfc3luY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBCbHVldG9vdGggc3Vic3lzdGVtIGJ5IGFkZGluZyBSQ1UgcHJvdGVjdGlvbiBpbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIG1vZGlmeWluZyB3b3JrcXVldWUgc3luY2hyb25pemF0aW9uIChgZGlzYWJsZV93b3JrX3N5bmNgIGFuZCBgc3luY2hyb25pemVfcmN1YCkgaW4gYGhjaV9kZXZfY2xvc2Vfc3luY2AuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duIGFuZCBzb2NrZXQgdHJhbnNtaXNzaW9uLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhjaV9zb2NrX3NlbmRtc2dcIixcbiAgICBcImhjaV9kZXZfY2xvc2Vfc3luY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBCbHVldG9vdGggc3Vic3lzdGVtIGJ5IGFkZGluZyBSQ1UgcHJvdGVjdGlvbiBpbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIG1vZGlmeWluZyB3b3JrcXVldWUgc3luY2hyb25pemF0aW9uIChgZGlzYWJsZV93b3JrX3N5bmNgIGFuZCBgc3luY2hyb25pemVfcmN1YCkgaW4gYGhjaV9kZXZfY2xvc2Vfc3luY2AuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duIGFuZCBzb2NrZXQgdHJhbnNtaXNzaW9uLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDc6MTQuMDc2NzQxODU0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTY3NzU2MjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDc6MTQuMDc5NTc5NzYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg5NjQ5MTM4NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUpIGJldHdlZW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gSXQgaW50cm9kdWNlcyBSQ1UgcmVhZCBsb2NrcyBpbiB0aGUgc2VuZCBwYXRoIGFuZCB1c2VzIGBkaXNhYmxlX3dvcmtfc3luY2Agd2l0aCBgc3luY2hyb25pemVfcmN1YCBpbiB0aGUgY2xvc2UgcGF0aCB0byBlbnN1cmUgc2FmZSB0ZWFyZG93bi4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgb2JqZWN0IGxpZmV0aW1lLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgbW9uaXRvcmVkIGJ5IEtBU0FOIChmb3IgdXNlLWFmdGVyLWZyZWUpIGFuZCBMT0NLREVQIChmb3IgbG9ja2luZyBpc3N1ZXMpLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG9yIG1vZGlmaWNhdGlvbnMgdG8gYnVmZmVyIGhhbmRsaW5nIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjNkZDY0MWViNmI4OTY5YTU3MGY5MWY2OWYwY2ZmNDc3Nzc1OWE5MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDEyOjQ2OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG5pbmRleCAwNzBjYTM4OGY5YWNlLi44MzQ1ZWJiYmQ5ZDUzIDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG4rKysgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbkBAIC0xODUwLDkgKzE4NTAsMTAgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0Z290byBkcm9wO1xuIFx0fVxuIFxuK1x0cmN1X3JlYWRfbG9jaygpO1xuIFx0aWYgKCF0ZXN0X2JpdChIQ0lfVVAsIFx1MDAyNmhkZXYtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdGVyciA9IC1FTkVURE9XTjtcbi1cdFx0Z290byBkcm9wO1xuK1x0XHRnb3RvIGRyb3BfcmN1O1xuIFx0fVxuIFxuIFx0aGNpX3NrYl9wa3RfdHlwZShza2IpID0gc2tiLVx1MDAzZWRhdGFbMF07XG5AQCAtMTg3MCw3ICsxODcxLDcgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0ICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfSVNPREFUQV9QS1QgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0RSVl9QS1QpIHtcbiBcdFx0XHRlcnIgPSAtRUlOVkFMO1xuLVx0XHRcdGdvdG8gZHJvcDtcbitcdFx0XHRnb3RvIGRyb3BfcmN1O1xuIFx0XHR9XG4gXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNmhkZXYtXHUwMDNlcmF3X3EsIHNrYik7XG5AQCAtMTg4NSw3ICsxODg2LDcgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0XHRcdCAgIFx1MDAyNmhjaV9zZWNfZmlsdGVyLm9jZl9tYXNrW29nZl0pKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICFjYXBhYmxlKENBUF9ORVRfUkFXKSkge1xuIFx0XHRcdGVyciA9IC1FUEVSTTtcbi1cdFx0XHRnb3RvIGRyb3A7XG4rXHRcdFx0Z290byBkcm9wX3JjdTtcbiBcdFx0fVxuIFxuIFx0XHQvKiBTaW5jZSB0aGUgb3Bjb2RlIGhhcyBhbHJlYWR5IGJlZW4gZXh0cmFjdGVkIGhlcmUsIHN0b3JlXG5AQCAtMTkwOCwxNCArMTkwOSwxNCBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0fSBlbHNlIHtcbiBcdFx0aWYgKCFjYXBhYmxlKENBUF9ORVRfUkFXKSkge1xuIFx0XHRcdGVyciA9IC1FUEVSTTtcbi1cdFx0XHRnb3RvIGRyb3A7XG4rXHRcdFx0Z290byBkcm9wX3JjdTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAoaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9BQ0xEQVRBX1BLVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfU0NPREFUQV9QS1QgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUKSB7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRyb3A7XG4rXHRcdFx0Z290byBkcm9wX3JjdTtcbiBcdFx0fVxuIFxuIFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZoZGV2LVx1MDAzZXJhd19xLCBza2IpO1xuQEAgLTE5MjMsMTQgKzE5MjQsMTYgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdH1cbiBcbiBcdGVyciA9IGxlbjtcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0Z290byBkb25lO1xuIFxuK2Ryb3BfcmN1OlxuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4rZHJvcDpcbitcdGtmcmVlX3NrYihza2IpO1xuIGRvbmU6XG4gXHRyZWxlYXNlX3NvY2soc2spO1xuIFx0cmV0dXJuIGVycjtcbi1cbi1kcm9wOlxuLVx0a2ZyZWVfc2tiKHNrYik7XG4tXHRnb3RvIGRvbmU7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2V0c29ja29wdF9vbGQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcbmluZGV4IGM4ZDE0MTI4YzM2M2QuLmJhZDgzMzEzYmI1ZjkgMTAwNjQ0XG4tLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcbisrKyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuQEAgLTU0NzIsOSArNTQ3MiwxMSBAQCBpbnQgaGNpX2Rldl9jbG9zZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0aGNpX2xlZHNfdXBkYXRlX3Bvd2VyZWQoaGRldiwgZmFsc2UpO1xuIFxuIFx0LyogRmx1c2ggUlggYW5kIFRYIHdvcmtzICovXG4tXHRmbHVzaF93b3JrKFx1MDAyNmhkZXYtXHUwMDNldHhfd29yayk7XG4rXHRkaXNhYmxlX3dvcmtfc3luYyhcdTAwMjZoZGV2LVx1MDAzZXR4X3dvcmspO1xuIFx0Zmx1c2hfd29yayhcdTAwMjZoZGV2LVx1MDAzZXJ4X3dvcmspO1xuIFxuK1x0c3luY2hyb25pemVfcmN1KCk7XG4rXG4gXHRpZiAoaGRldi1cdTAwM2VkaXNjb3ZfdGltZW91dCBcdTAwM2UgMCkge1xuIFx0XHRoZGV2LVx1MDAzZWRpc2Nvdl90aW1lb3V0ID0gMDtcbiBcdFx0aGNpX2Rldl9jbGVhcl9mbGFnKGhkZXYsIEhDSV9ESVNDT1ZFUkFCTEUpO1xuQEAgLTU1NzYsNiArNTU3OCw4IEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4gXHRiYWNweShcdTAwMjZoZGV2LVx1MDAzZXJhbmRvbV9hZGRyLCBCREFERFJfQU5ZKTtcbiBcdGhjaV9jb2RlY19saXN0X2NsZWFyKFx1MDAyNmhkZXYtXHUwMDNlbG9jYWxfY29kZWNzKTtcbiBcbitcdGVuYWJsZV93b3JrKFx1MDAyNmhkZXYtXHUwMDNldHhfd29yayk7XG4rXG4gXHRoY2lfZGV2X3B1dChoZGV2KTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDc6MTQuMDc5NTgxODgzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NjQ4NTk3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCbHVldG9vdGggSENJIFNvY2tldCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYCwgc3BlY2lmaWNhbGx5IGluIHRoZSBCbHVldG9vdGggbmV0d29ya2luZyBjb2RlLiBJJ20gc2VlaW5nIGFkZGl0aW9ucyBpbiBgaGNpX3NvY2tfc2VuZG1zZ2Agb2YgYHJjdV9yZWFkX2xvY2soKWAgYW5kIGByY3VfcmVhZF91bmxvY2soKWAgYXJvdW5kIHRoZSBkZXZpY2UncyBvcGVyYXRpb25hbCBjaGVjay4gQW5kIGluIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLCB0aGUgYGZsdXNoX3dvcmtgIGNhbGwgb24gYHR4X3dvcmtgIGlzIGJlaW5nIHJlcGxhY2VkIHdpdGggYSBgZGlzYWJsZV93b3JrX3N5bmNgLCBhIGBzeW5jaHJvbml6ZV9yY3UoKWAgaXMgYWRkZWQsIGFuZCB0aGVuIGFuIGBlbmFibGVfd29ya2AuXG5cbkluaXRpYWxseSwgbXkgdGhvdWdodCBwcm9jZXNzIHdlbnQgc3RyYWlnaHQgdG8gYSB1c2UtYWZ0ZXItZnJlZSBvciBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gSXQgc2VlbXMgbGlrZSBgaGNpX3NvY2tfc2VuZG1zZ2AgbWlnaHQgaGF2ZSBiZWVuIHF1ZXVpbmcgc29tZXRoaW5nIHRvIGEgZGV2aWNlIHRoYXQgd2FzIGluIHRoZSBwcm9jZXNzIG9mIHNodXR0aW5nIGRvd24gdGhyb3VnaCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gVGhlIGFkZGl0aW9uIG9mIGBzeW5jaHJvbml6ZV9yY3UoKWAgcmVhbGx5IHNvbGlkaWZpZXMgdGhlIHJhY2UgY29uZGl0aW9uIHN1c3BpY2lvbiwgYXMgaXQncyBtZWFudCB0byB3YWl0IGZvciBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zIHRvIGNvbXBsZXRlLlxuXG5TbywgdGhpcyBpcyBsaWtlbHkgYWJvdXQgZGV2aWNlIHNodXRkb3duIHN5bmNocm9uaXphdGlvbiwgbm90IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBXYWl0LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSwgdGhpcyBpcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZS4gVGhlIHBhdGNoIGlzbid0IGFib3V0IEtNU0FOIGFuZCBpdOKAmXMgcHVycG9zZSBpcyB0byBwcmV2ZW50IGEgdXNlLWFmdGVyLWZyZWUgb3IgZGF0YSBjb3JydXB0aW9uIGR1cmluZyBkZXZpY2Ugc2h1dGRvd24uIFRoaXMgaXNuJ3QgcmVsYXRlZCB0byBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBhbnkga2luZCBvZiBpbmZvcm1hdGlvbiBsZWFrLiBJdCdzIGZvY3VzZWQgb24gUkNVIGxvY2tpbmcgYW5kIHdvcmtxdWV1ZSBtYW5hZ2VtZW50LlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0uIExvb2tpbmcgYXQgdGhlIGNvZGUgc25pcHBldHMgYWdhaW46IHRoZSBsb2NrIGluIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgdGhlIGBkaXNhYmxlX3dvcmtfc3luY2AgYW5kIGBzeW5jaHJvbml6ZV9yY3VgIGluIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBZdXAsIHRoaXMgaXMgYWxsIGFib3V0IHN5bmNocm9uaXphdGlvbiwgZGVmaW5pdGVseSBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMywiT3V0cHV0VG9rZW5zIjoxNjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0NzoyMy4wNDQ0NDQ2NDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUpIGJldHdlZW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gSXQgaW50cm9kdWNlcyBSQ1UgcmVhZCBsb2NrcyBpbiB0aGUgc2VuZCBwYXRoIGFuZCB1c2VzIGBkaXNhYmxlX3dvcmtfc3luY2Agd2l0aCBgc3luY2hyb25pemVfcmN1YCBpbiB0aGUgY2xvc2UgcGF0aCB0byBlbnN1cmUgc2FmZSB0ZWFyZG93bi4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgb2JqZWN0IGxpZmV0aW1lLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgbW9uaXRvcmVkIGJ5IEtBU0FOIChmb3IgdXNlLWFmdGVyLWZyZWUpIGFuZCBMT0NLREVQIChmb3IgbG9ja2luZyBpc3N1ZXMpLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG9yIG1vZGlmaWNhdGlvbnMgdG8gYnVmZmVyIGhhbmRsaW5nIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgc3luY2hyb25pemF0aW9uIGlzc3VlIChsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSkgYmV0d2VlbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBJdCBpbnRyb2R1Y2VzIFJDVSByZWFkIGxvY2tzIGluIHRoZSBzZW5kIHBhdGggYW5kIHVzZXMgYGRpc2FibGVfd29ya19zeW5jYCB3aXRoIGBzeW5jaHJvbml6ZV9yY3VgIGluIHRoZSBjbG9zZSBwYXRoIHRvIGVuc3VyZSBzYWZlIHRlYXJkb3duLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIGNvbmN1cnJlbmN5IGFuZCBvYmplY3QgbGlmZXRpbWUsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBtb25pdG9yZWQgYnkgS0FTQU4gKGZvciB1c2UtYWZ0ZXItZnJlZSkgYW5kIExPQ0tERVAgKGZvciBsb2NraW5nIGlzc3VlcykuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZSwgb3IgbW9kaWZpY2F0aW9ucyB0byBidWZmZXIgaGFuZGxpbmcgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbsck[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 12:44:40 +0000 UTC FinishedAt: 2026-08-13 12:47:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BT" ], "series_id": "436271ba-2cc1-4a81-a697-3083fe687e36" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hci_sock_sendmsg", "hci_dev_close_sync" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGNpX3NvY2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtoY2lfZGV2X2Nsb3NlX3N5bmMmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBzeW5jaHJvbml6YXRpb24gaXNzdWUgKGxpa2VseSBhIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlKSBiZXR3ZWVuIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AuIEl0IGludHJvZHVjZXMgUkNVIHJlYWQgbG9ja3MgaW4gdGhlIHNlbmQgcGF0aCBhbmQgdXNlcyBgZGlzYWJsZV93b3JrX3N5bmNgIHdpdGggYHN5bmNocm9uaXplX3JjdWAgaW4gdGhlIGNsb3NlIHBhdGggdG8gZW5zdXJlIHNhZmUgdGVhcmRvd24uIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gY29uY3VycmVuY3kgYW5kIG9iamVjdCBsaWZldGltZSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IG1vbml0b3JlZCBieSBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlKSBhbmQgTE9DS0RFUCAoZm9yIGxvY2tpbmcgaXNzdWVzKS4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBvciBtb2RpZmljYXRpb25zIHRvIGJ1ZmZlciBoYW5kbGluZyB0aGF0IHdvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQmx1ZXRvb3RoIHN1YnN5c3RlbSBieSBhZGRpbmcgUkNVIHByb3RlY3Rpb24gaW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBtb2RpZnlpbmcgd29ya3F1ZXVlIHN5bmNocm9uaXphdGlvbiAoYGRpc2FibGVfd29ya19zeW5jYCBhbmQgYHN5bmNocm9uaXplX3JjdWApIGluIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgZHVyaW5nIGRldmljZSB0ZWFyZG93biBhbmQgc29ja2V0IHRyYW5zbWlzc2lvbiwgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmM2RkNjQxZWI2Yjg5NjlhNTcwZjkxZjY5ZjBjZmY0Nzc3NzU5YTkwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTI6NDY6NDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG5pbmRleCAwNzBjYTM4OGY5YWNlLi44MzQ1ZWJiYmQ5ZDUzIDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbkBAIC0xODUwLDkgJiM0MzsxODUwLDEwIEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHRcdGdvdG8gZHJvcDtcbiBcdH1cbiBcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRpZiAoIXRlc3RfYml0KEhDSV9VUCwgXHUwMDI2aGRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0ZXJyID0gLUVORVRET1dOO1xuLVx0XHRnb3RvIGRyb3A7XG4mIzQzO1x0XHRnb3RvIGRyb3BfcmN1O1xuIFx0fVxuIFxuIFx0aGNpX3NrYl9wa3RfdHlwZShza2IpID0gc2tiLVx1MDAzZWRhdGFbMF07XG5AQCAtMTg3MCw3ICYjNDM7MTg3MSw3IEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHRcdCAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9EUlZfUEtUKSB7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRyb3A7XG4mIzQzO1x0XHRcdGdvdG8gZHJvcF9yY3U7XG4gXHRcdH1cbiBcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2aGRldi1cdTAwM2VyYXdfcSwgc2tiKTtcbkBAIC0xODg1LDcgJiM0MzsxODg2LDcgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0XHRcdCAgIFx1MDAyNmhjaV9zZWNfZmlsdGVyLm9jZl9tYXNrW29nZl0pKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICFjYXBhYmxlKENBUF9ORVRfUkFXKSkge1xuIFx0XHRcdGVyciA9IC1FUEVSTTtcbi1cdFx0XHRnb3RvIGRyb3A7XG4mIzQzO1x0XHRcdGdvdG8gZHJvcF9yY3U7XG4gXHRcdH1cbiBcbiBcdFx0LyogU2luY2UgdGhlIG9wY29kZSBoYXMgYWxyZWFkeSBiZWVuIGV4dHJhY3RlZCBoZXJlLCBzdG9yZVxuQEAgLTE5MDgsMTQgJiM0MzsxOTA5LDE0IEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHR9IGVsc2Uge1xuIFx0XHRpZiAoIWNhcGFibGUoQ0FQX05FVF9SQVcpKSB7XG4gXHRcdFx0ZXJyID0gLUVQRVJNO1xuLVx0XHRcdGdvdG8gZHJvcDtcbiYjNDM7XHRcdFx0Z290byBkcm9wX3JjdTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAoaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9BQ0xEQVRBX1BLVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfU0NPREFUQV9QS1QgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUKSB7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRyb3A7XG4mIzQzO1x0XHRcdGdvdG8gZHJvcF9yY3U7XG4gXHRcdH1cbiBcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2aGRldi1cdTAwM2VyYXdfcSwgc2tiKTtcbkBAIC0xOTIzLDE0ICYjNDM7MTkyNCwxNiBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0fVxuIFxuIFx0ZXJyID0gbGVuO1xuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdGdvdG8gZG9uZTtcbiBcbiYjNDM7ZHJvcF9yY3U6XG4mIzQzO1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO2Ryb3A6XG4mIzQzO1x0a2ZyZWVfc2tiKHNrYik7XG4gZG9uZTpcbiBcdHJlbGVhc2Vfc29jayhzayk7XG4gXHRyZXR1cm4gZXJyO1xuLVxuLWRyb3A6XG4tXHRrZnJlZV9za2Ioc2tiKTtcbi1cdGdvdG8gZG9uZTtcbiB9XG4gXG4gc3RhdGljIGludCBoY2lfc29ja19zZXRzb2Nrb3B0X29sZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuaW5kZXggYzhkMTQxMjhjMzYzZC4uYmFkODMzMTNiYjVmOSAxMDA2NDRcbi0tLSBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXG5AQCAtNTQ3Miw5ICYjNDM7NTQ3MiwxMSBAQCBpbnQgaGNpX2Rldl9jbG9zZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0aGNpX2xlZHNfdXBkYXRlX3Bvd2VyZWQoaGRldiwgZmFsc2UpO1xuIFxuIFx0LyogRmx1c2ggUlggYW5kIFRYIHdvcmtzICovXG4tXHRmbHVzaF93b3JrKFx1MDAyNmhkZXYtXHUwMDNldHhfd29yayk7XG4mIzQzO1x0ZGlzYWJsZV93b3JrX3N5bmMoXHUwMDI2aGRldi1cdTAwM2V0eF93b3JrKTtcbiBcdGZsdXNoX3dvcmsoXHUwMDI2aGRldi1cdTAwM2VyeF93b3JrKTtcbiBcbiYjNDM7XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7XG4gXHRpZiAoaGRldi1cdTAwM2VkaXNjb3ZfdGltZW91dCBcdTAwM2UgMCkge1xuIFx0XHRoZGV2LVx1MDAzZWRpc2Nvdl90aW1lb3V0ID0gMDtcbiBcdFx0aGNpX2Rldl9jbGVhcl9mbGFnKGhkZXYsIEhDSV9ESVNDT1ZFUkFCTEUpO1xuQEAgLTU1NzYsNiAmIzQzOzU1NzgsOCBAQCBpbnQgaGNpX2Rldl9jbG9zZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0YmFjcHkoXHUwMDI2aGRldi1cdTAwM2VyYW5kb21fYWRkciwgQkRBRERSX0FOWSk7XG4gXHRoY2lfY29kZWNfbGlzdF9jbGVhcihcdTAwMjZoZGV2LVx1MDAzZWxvY2FsX2NvZGVjcyk7XG4gXG4mIzQzO1x0ZW5hYmxlX3dvcmsoXHUwMDI2aGRldi1cdTAwM2V0eF93b3JrKTtcbiYjNDM7XG4gXHRoY2lfZGV2X3B1dChoZGV2KTtcbiBcdHJldHVybiBlcnI7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hjaV9zb2NrX3NlbmRtc2cmIzM0OywKICAgICYjMzQ7aGNpX2Rldl9jbG9zZV9zeW5jJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBCbHVldG9vdGggc3Vic3lzdGVtIGJ5IGFkZGluZyBSQ1UgcHJvdGVjdGlvbiBpbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIG1vZGlmeWluZyB3b3JrcXVldWUgc3luY2hyb25pemF0aW9uIChgZGlzYWJsZV93b3JrX3N5bmNgIGFuZCBgc3luY2hyb25pemVfcmN1YCkgaW4gYGhjaV9kZXZfY2xvc2Vfc3luY2AuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duIGFuZCBzb2NrZXQgdHJhbnNtaXNzaW9uLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYzZGQ2NDFlYjZiODk2OWE1NzBmOTFmNjlmMGNmZjQ3Nzc3NTlhOTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxMjo0Njo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYyBiL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYwppbmRleCAwNzBjYTM4OGY5YWNlLi44MzQ1ZWJiYmQ5ZDUzIDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jCkBAIC0xODUwLDkgJiM0MzsxODUwLDEwIEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCWdvdG8gZHJvcDsKIAl9CiAKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwogCWlmICghdGVzdF9iaXQoSENJX1VQLCAmYW1wO2hkZXYtJmd0O2ZsYWdzKSkgewogCQllcnIgPSAtRU5FVERPV047Ci0JCWdvdG8gZHJvcDsKJiM0MzsJCWdvdG8gZHJvcF9yY3U7CiAJfQogCiAJaGNpX3NrYl9wa3RfdHlwZShza2IpID0gc2tiLSZndDtkYXRhWzBdOwpAQCAtMTg3MCw3ICYjNDM7MTg3MSw3IEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCSAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUICZhbXA7JmFtcDsKIAkJICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfRFJWX1BLVCkgewogCQkJZXJyID0gLUVJTlZBTDsKLQkJCWdvdG8gZHJvcDsKJiM0MzsJCQlnb3RvIGRyb3BfcmN1OwogCQl9CiAKIAkJc2tiX3F1ZXVlX3RhaWwoJmFtcDtoZGV2LSZndDtyYXdfcSwgc2tiKTsKQEAgLTE4ODUsNyAmIzQzOzE4ODYsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAogCQkJCSAgICZhbXA7aGNpX3NlY19maWx0ZXIub2NmX21hc2tbb2dmXSkpICZhbXA7JmFtcDsKIAkJICAgICFjYXBhYmxlKENBUF9ORVRfUkFXKSkgewogCQkJZXJyID0gLUVQRVJNOwotCQkJZ290byBkcm9wOwomIzQzOwkJCWdvdG8gZHJvcF9yY3U7CiAJCX0KIAogCQkvKiBTaW5jZSB0aGUgb3Bjb2RlIGhhcyBhbHJlYWR5IGJlZW4gZXh0cmFjdGVkIGhlcmUsIHN0b3JlCkBAIC0xOTA4LDE0ICYjNDM7MTkwOSwxNCBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAogCX0gZWxzZSB7CiAJCWlmICghY2FwYWJsZShDQVBfTkVUX1JBVykpIHsKIAkJCWVyciA9IC1FUEVSTTsKLQkJCWdvdG8gZHJvcDsKJiM0MzsJCQlnb3RvIGRyb3BfcmN1OwogCQl9CiAKIAkJaWYgKGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfQUNMREFUQV9QS1QgJmFtcDsmYW1wOwogCQkgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9TQ09EQVRBX1BLVCAmYW1wOyZhbXA7CiAJCSAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUKSB7CiAJCQllcnIgPSAtRUlOVkFMOwotCQkJZ290byBkcm9wOwomIzQzOwkJCWdvdG8gZHJvcF9yY3U7CiAJCX0KIAogCQlza2JfcXVldWVfdGFpbCgmYW1wO2hkZXYtJmd0O3Jhd19xLCBza2IpOwpAQCAtMTkyMywxNCAmIzQzOzE5MjQsMTYgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywKIAl9CiAKIAllcnIgPSBsZW47CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlnb3RvIGRvbmU7CiAKJiM0Mztkcm9wX3JjdToKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7ZHJvcDoKJiM0MzsJa2ZyZWVfc2tiKHNrYik7CiBkb25lOgogCXJlbGVhc2Vfc29jayhzayk7CiAJcmV0dXJuIGVycjsKLQotZHJvcDoKLQlrZnJlZV9za2Ioc2tiKTsKLQlnb3RvIGRvbmU7CiB9CiAKIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2V0c29ja29wdF9vbGQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYwppbmRleCBjOGQxNDEyOGMzNjNkLi5iYWQ4MzMxM2JiNWY5IDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jCkBAIC01NDcyLDkgJiM0Mzs1NDcyLDExIEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJaGNpX2xlZHNfdXBkYXRlX3Bvd2VyZWQoaGRldiwgZmFsc2UpOwogCiAJLyogRmx1c2ggUlggYW5kIFRYIHdvcmtzICovCi0JZmx1c2hfd29yaygmYW1wO2hkZXYtJmd0O3R4X3dvcmspOwomIzQzOwlkaXNhYmxlX3dvcmtfc3luYygmYW1wO2hkZXYtJmd0O3R4X3dvcmspOwogCWZsdXNoX3dvcmsoJmFtcDtoZGV2LSZndDtyeF93b3JrKTsKIAomIzQzOwlzeW5jaHJvbml6ZV9yY3UoKTsKJiM0MzsKIAlpZiAoaGRldi0mZ3Q7ZGlzY292X3RpbWVvdXQgJmd0OyAwKSB7CiAJCWhkZXYtJmd0O2Rpc2Nvdl90aW1lb3V0ID0gMDsKIAkJaGNpX2Rldl9jbGVhcl9mbGFnKGhkZXYsIEhDSV9ESVNDT1ZFUkFCTEUpOwpAQCAtNTU3Niw2ICYjNDM7NTU3OCw4IEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJYmFjcHkoJmFtcDtoZGV2LSZndDtyYW5kb21fYWRkciwgQkRBRERSX0FOWSk7CiAJaGNpX2NvZGVjX2xpc3RfY2xlYXIoJmFtcDtoZGV2LSZndDtsb2NhbF9jb2RlY3MpOwogCiYjNDM7CWVuYWJsZV93b3JrKCZhbXA7aGRldi0mZ3Q7dHhfd29yayk7CiYjNDM7CiAJaGNpX2Rldl9wdXQoaGRldik7CiAJcmV0dXJuIGVycjsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAxNgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCbHVldG9vdGggU3Vic3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiB0aGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gYG5ldC9ibHVldG9vdGgvaGNpX3NvY2suY2AgYW5kIGBuZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNgLiBTZWVtcyBsaWtlIHNvbWVvbmUmIzM5O3MgYmVlbiBidXN5IHdpdGggc29tZSBjb3JlIEJsdWV0b290aCBpbnRlcm5hbHMuIFNwZWNpZmljYWxseSwgYGhjaV9zb2NrX3NlbmRtc2dgIGhhcyBiZWVuIHVwZGF0ZWQgd2l0aCBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYHJjdV9yZWFkX3VubG9jaygpYCBjYWxscywgd2hpY2ggcmluZ3MgYWxhcm0gYmVsbHMg4oCTIHRoYXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSB0byBhZGRyZXNzIHNvbWUga2luZCBvZiBwb3RlbnRpYWwgZGF0YSByYWNlIG9yIHByb3RlY3Rpb24gaXNzdWUgd2hlbiByZWFkaW5nIGRhdGEgZnJvbSBhbiBSQ1UgcHJvdGVjdGVkIGFyZWEuIEkmIzM5O20gZ3Vlc3NpbmcgYGhkZXZgIHN0YXRlIGlzIGludm9sdmVkLgoKVGhlbiwgb3ZlciBpbiBgaGNpX3N5bmMuY2AsIHRoaW5ncyBnZXQgZXZlbiBtb3JlIGludGVyZXN0aW5nLiBUaGV5JiMzOTt2ZSBzd2FwcGVkIG91dCBgZmx1c2hfd29yaygmYW1wO2hkZXYtJmd0O3R4X3dvcmspYCBmb3IgYGRpc2FibGVfd29ya19zeW5jKCZhbXA7aGRldi0mZ3Q7dHhfd29yaylgIGFuZCBhZGRlZCBgc3luY2hyb25pemVfcmN1KClgLCBwbHVzIGFuIGBlbmFibGVfd29yaygpYCBjYWxsIGF0IHRoZSBlbmQuIFRoYXQgaXMgYSB2ZXJ5IHNwZWNpZmljIHBhdHRlcm4hIFRoaXMgKnNjcmVhbXMqIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uIHdpdGggdGhlIGB0eF93b3JrYCB3b3JrcXVldWUgYW5kIHByb2JhYmx5IHRoZSBzaHV0ZG93biBvZiB0aGUgZGV2aWNlLiBUaGUgY2hhbmdlIGZyb20gYGZsdXNoX3dvcmtgIHRvIGBkaXNhYmxlX3dvcmtfc3luY2AgaXMga2V5IGhlcmUgdG8gZW5zdXJpbmcgdGhhdCBhbnkgd29yayBxdWV1ZWQgdG8gdGhlIGB0eF93b3JrYCB3b3JrcXVldWUgYXJlIGNvbXBsZXRlbHkgZmluaXNoZWQgYmVmb3JlIHRoZSBkZXZpY2Ugc2h1dGRvd24gY29udGludWVzLCBhbmQgdGhhdCBhbnkgcmVmZXJlbmNlcyBmcm9tIHRoZSB3b3JrcXVldWUgY29kZSB0byB0aGUgYGhkZXZgIHN0cnVjdHVyZSBvciByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyBhcmUgZG9uZSBiZWZvcmUgdGhleSBjYW4gYmUgZnJlZWQuIFRoZSBgc3luY2hyb25pemVfcmN1KClgIGNhbGwgY29uZmlybXMgbXkgc3VzcGljaW9uIOKAkyB0aGV5JiMzOTtyZSBjbGVhbmluZyB1cCBSQ1UgcmVhZGVycyBiZWZvcmUgYWxsb3dpbmcgdGhlIGRldmljZSB0byBjb21wbGV0ZWx5IGNsb3NlLgoKVGhlIHBhdGNoIHRvdWNoZXMgYm90aCBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLCB3aGljaCBhcmUgaW1wb3J0YW50IHRvIHJlY29nbml6ZSwgYmVjYXVzZSB0aGV5IGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIHNwYWNlLiBTbyB0aGlzIGlzIHRoZSBzb3J0IG9mIGNoYW5nZSB0aGF0IGNhbiBoYXZlIGZhaXJseSB3aWRlc3ByZWFkIGltcGFjdCwgZXZlbiBpZiBpdCYjMzk7cyB0YXJnZXRlZCBhbmQgc3VidGxlLiBXZSYjMzk7cmUgbG9va2luZyBhdCBvcGVyYXRpb25zIHRoYXQgYXJlIGRpcmVjdGx5IHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIGFjdGlvbnM6IHNlbmRpbmcgYSBtZXNzYWdlIG9uIGFuIEhDSSBzb2NrZXQsIGFuZCBjbG9zaW5nIGFuIEhDSSBkZXZpY2UsIHJlc3BlY3RpdmVseS4KClJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBwcmVyZXF1aXNpdGVzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX0JUYCBpcyBjb3JyZWN0bHkgZW5hYmxlZCwgYW5kIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMsIHByb2JhYmx5IHVuZGVyIGBuZXQvYmx1ZXRvb3RoL2AsIHRvIGJlIGNlcnRhaW4gaWYgdGhlcmUgYXJlIG1vcmUgcHJlY2lzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgbmVjZXNzYXJ5IG9yIGF0IGxlYXN0IGhpZ2hseSByZWxldmFudC4gSSYjMzk7bGwgY2hlY2sgdGhhdCB0byBlbnN1cmUgdGhpcyBwYXRjaCBpcyByZWxldmFudCBhbmQgY29ycmVjdCBmb3IgdGhlIGdpdmVuIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYmx1ZXRvb3RoL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JsdWV0b290aC9LY29uZmlnLTUtXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6NjptZW51Y29uZmlnIEJUXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O0JsdWV0b290aCBzdWJzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZy00MS1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZzo0Mjpjb25maWcgQlRfQlJFRFJcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7Qmx1ZXRvb3RoIENsYXNzaWMgKEJSL0VEUikgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc9NTY9c291cmNlIFwmIzM0O25ldC9ibHVldG9vdGgvaGlkcC9LY29uZmlnXCYjMzQ7XG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNTctXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6NTg6Y29uZmlnIEJUX0xFXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNTktXHRib29sIFwmIzM0O0JsdWV0b290aCBMb3cgRW5lcmd5IChMRSkgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNjUtXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6NjY6Y29uZmlnIEJUX0xFX0wyQ0FQX0VDUkVEXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNjctXHRib29sIFwmIzM0O0JsdWV0b290aCBMMkNBUCBFbmhhbmNlZCBDcmVkaXQgRmxvdyBDb250cm9sXCYjMzQ7XG4tLVxubmV0L2JsdWV0b290aC9LY29uZmlnLTc2LVxubmV0L2JsdWV0b290aC9LY29uZmlnOjc3OmNvbmZpZyBCVF82TE9XUEFOXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtCbHVldG9vdGggNkxvV1BBTiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2JsdWV0b290aC9LY29uZmlnLTgyLVxubmV0L2JsdWV0b290aC9LY29uZmlnOjgzOmNvbmZpZyBCVF9MRURTXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctODQtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbi0tXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctOTEtXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6OTI6Y29uZmlnIEJUX01TRlRFWFRcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy05My1cdGJvb2wgXCYjMzQ7RW5hYmxlIE1pY3Jvc29mdCBleHRlbnNpb25zXCYjMzQ7XG4tLVxubmV0L2JsdWV0b290aC9LY29uZmlnLTk4LVxubmV0L2JsdWV0b290aC9LY29uZmlnOjk5OmNvbmZpZyBCVF9BT1NQRVhUXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDtFbmFibGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0IGV4dGVuc2lvbnNcJiMzNDtcbi0tXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctMTA1LVxubmV0L2JsdWV0b290aC9LY29uZmlnOjEwNjpjb25maWcgQlRfREVCVUdGU1xubmV0L2JsdWV0b290aC9LY29uZmlnLTEwNy1cdGJvb2wgXCYjMzQ7RXhwb3J0IEJsdWV0b290aCBpbnRlcm5hbHMgaW4gZGVidWdmc1wmIzM0O1xuLS1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMTMtXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6MTE0OmNvbmZpZyBCVF9TRUxGVEVTVFxubmV0L2JsdWV0b290aC9LY29uZmlnLTExNS1cdGJvb2wgXCYjMzQ7Qmx1ZXRvb3RoIHNlbGYgdGVzdGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2JsdWV0b290aC9LY29uZmlnLTEyNi1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZzoxMjc6Y29uZmlnIEJUX1NFTEZURVNUX0VDREhcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMjgtXHRib29sIFwmIzM0O0VDREggdGVzdCBjYXNlc1wmIzM0O1xuLS1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMzMtXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6MTM0OmNvbmZpZyBCVF9TRUxGVEVTVF9TTVBcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O1NNUCB0ZXN0IGNhc2VzXCYjMzQ7XG4tLVxubmV0L2JsdWV0b290aC9LY29uZmlnLTE0MC1cbm5ldC9ibHVldG9vdGgvS2NvbmZpZzoxNDE6Y29uZmlnIEJUX0ZFQVRVUkVfREVCVUdcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xNDItXHRib29sIFwmIzM0O0VuYWJsZSBydW50aW1lIG9wdGlvbiBmb3IgZGVidWdnaW5nIHN0YXRlbWVudHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTY0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBGb2N1czogQlQgQ29uZmlndXJhdGlvbiBhbmQgRGV2aWNlIENsb3N1cmUqKgoKT2theSwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCByZXZvbHZlcyBhcm91bmQgYEJUYC4gIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBHaXZlbiB0aGF0LCBJIG5lZWQgdG8gZm9jdXMgb24gdHdvIGtleSBmdW5jdGlvbnM6IGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AuIE5vdywgaXMgYGhjaV9kZXZfY2xvc2Vfc3luY2AgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIHJlYWxseSBkaWcgaW50bz8gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byB0aGUgZGV2aWNlIGNsb3NpbmcsIHdoaWNoIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQgdG8gdW5kZXJzdGFuZGluZyB0aGUgbGlmZWN5Y2xlLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBsb29raW5nIGF0IGlzc3VlcyBpbiB0ZWFyZG93bi4gSSB0aGluayB0aGUga2V5IGhlcmUgaXMgdGhlIGZhY3QgdGhhdCBpdCBpcyBjYWxsZWQgd2hlbiBjbG9zaW5nIHRoZSBkZXZpY2UuIE1ha2VzIHNlbnNlLiBCdXQganVzdCB0byBiZSBzdXJlLCBiZWZvcmUgSSBnbyBkZWVwZXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBhcm91bmQgaXQgdG8gZW5zdXJlIHRoaXMgaXMgdGhlIHByb3BlciBmdW5jdGlvbiB0byBzcGVuZCBtb3JlIHRpbWUgb24sIGFuZCB0aGVyZSBhcmVuJiMzOTt0IG90aGVycyBJIG5lZWQgdG8gY29uc2lkZXIgYXQgdGhlIHNhbWUgdGltZS4gTGV0IG1lIHRyYWNlIGl0cyBjYWxscyBhbmQgY29uZmlybSBpdHMgcmVsZXZhbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hjaV9kZXZfY2xvc2Vfc3luYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9ibHVldG9vdGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9ibHVldG9vdGgvaGNpX2Nvbm4uYz0xMTk2PXN0YXRpYyB2b2lkIGhjaV9jb25uX3VubGluayhzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4pXG4tLVxubmV0L2JsdWV0b290aC9oY2lfY29ubi5jLTEyMTAtXHRcdFx0LyogSWYgaGRldiBpcyBkb3duIGl0IG1lYW5zXG5uZXQvYmx1ZXRvb3RoL2hjaV9jb25uLmM6MTIxMTpcdFx0XHQgKiBoY2lfZGV2X2Nsb3NlX3N5bmMvaGNpX2Nvbm5faGFzaF9mbHVzaCBpcyBpbiBwcm9ncmVzc1xubmV0L2JsdWV0b290aC9oY2lfY29ubi5jLTEyMTItXHRcdFx0ICogYW5kIGxpbmtzIGRvbiYjMzk7dCBuZWVkIHRvIGJlIGNsZWFudXAgYXMgYWxsIGNvbm5lY3Rpb25zXG4tLVxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jPTQ5MT1pbnQgaGNpX2Rldl9kb19jbG9zZShzdHJ1Y3QgaGNpX2RldiAqaGRldilcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMtNDk4LVxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jOjQ5OTpcdGVyciA9IGhjaV9kZXZfY2xvc2Vfc3luYyhoZGV2KTtcbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYy01MDAtXG4tLVxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jPTUzMT1zdGF0aWMgaW50IGhjaV9kZXZfZG9fcmVzZXQoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4tLVxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jLTUzOC1cbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYzo1Mzk6XHRyZXQgPSBoY2lfZGV2X2Nsb3NlX3N5bmMoaGRldik7XG5uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMtNTQwLVx0aWYgKCFyZXQpXG4tLVxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTU0MDc9c3RhdGljIGludCBoY2lfZGV2X3NodXRkb3duKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01NDMxLVxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjU0MzI6aW50IGhjaV9kZXZfY2xvc2Vfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01NDMzLXtcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmM9NTU5Mz1zdGF0aWMgaW50IGhjaV9wb3dlcl9vbl9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01NjE2LVx0XHRoY2lfZGV2X2NsZWFyX2ZsYWcoaGRldiwgSENJX0FVVE9fT0ZGKTtcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYzo1NjE3Olx0XHRoY2lfZGV2X2Nsb3NlX3N5bmMoaGRldik7XG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTYxOC1cdH0gZWxzZSBpZiAoaGNpX2Rldl90ZXN0X2ZsYWcoaGRldiwgSENJX0FVVE9fT0ZGKSkge1xuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYz01OTI1PXN0YXRpYyBpbnQgaGNpX2Rpc2Nvbm5lY3RfYWxsX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYsIHU4IHJlYXNvbilcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTk1My0gKiBEaXNjb25uZWN0IGFsbCBjb25uZWN0aW9uc1xubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjU5NTQ6ICogaGNpX2Rldl9jbG9zZV9zeW5jXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTk1NS0gKi9cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYz01OTU2PXN0YXRpYyBpbnQgaGNpX3Bvd2VyX29mZl9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01OTg1LVxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjU5ODY6XHRlcnIgPSBoY2lfZGV2X2Nsb3NlX3N5bmMoaGRldik7XG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTk4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjQzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCbHVldG9vdGggSENJIERldmljZSBTaHV0ZG93biBhbmQgU29ja2V0IENvbW11bmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBCbHVldG9vdGggSENJIGRldmljZXMgYXJlIGNsb3NlZCBhbmQgaG93IHRoZSBzb2NrZXQgY29tbXVuaWNhdGlvbiB3b3JrcywgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZnVuY3Rpb25zIHRvIHRhcmdldC4gYGhjaV9kZXZfY2xvc2Vfc3luY2AgaXMgZGVmaW5pdGVseSBjYWxsZWQgYnkgdmFyaW91cyBmdW5jdGlvbnMgbGlrZSBgaGNpX2Rldl9kb19jbG9zZWAgYW5kIGBoY2lfcG93ZXJfb2ZmX3N5bmNgLCBhbmQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggaW9jdGxzIGFuZCBuZXRsaW5rIGNvbW1hbmRzIHRvIHNodXQgZG93biB0aGUgSENJIGRldmljZS4gVGhhdCBtYWtlcyBpdCBwb3RlbnRpYWxseSBpbnRlcmVzdGluZy4KCk5vdywgYGhjaV9zb2NrX3NlbmRtc2dgIGhhbmRsZXMgc2VuZGluZyBtZXNzYWdlcyBmb3IgYEFGX0JMVUVUT09USGAgc29ja2V0cyB3aXRoIGBCVFBST1RPX0hDSWAuIFRoYXQgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUgZnVydGhlciwgYmVpbmcgdGhlIHN0YW5kYXJkIGBzZW5kbXNnYCBoYW5kbGVyIGZvciBIQ0kgc29ja2V0cy4gU28sIGFyZSBib3RoIGludGVyZXN0aW5nPwoKTGV0JiMzOTtzIHNlZS4gSGFuZyBvbi4uLiBgaGNpX2Rldl9jbG9zZV9zeW5jYCBpcyBub3Qgc3RhdGljLCBpdCYjMzk7cyBkZWZpbmVkIGluIGBuZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNgLiBgaGNpX3NvY2tfc2VuZG1zZ2AgaXMgc3RhdGljIGluIGBuZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNgLiBBaCwgeWVzLCBjb25maXJtZWQ6IGBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKWAuCgpTbywgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnQgZnVuY3Rpb25zLiBFdmVuIHRob3VnaCBgaGNpX3NvY2tfc2VuZG1zZ2AgaXMgc3RhdGljLCBpdCYjMzk7cyBhc3NpZ25lZCB0byBgcHJvdG9fb3BzLnNlbmRtc2dgLCB3aGljaCBtZWFucyBpdCB3b24mIzM5O3QgYmUgaW5saW5lZC4gSXQgaGFzIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQgbWVhbnMgc3l6a2FsbGVyIGNhbiByZWFjaCBpdC4KClRvIGJlIHNhZmUsIEkmIzM5O2xsIGtlZXAgYm90aCBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgIGluIG1pbmQuIEp1c3QgaW4gY2FzZSBvbmUgcHJvdmVzIG1vcmUgdXNlZnVsIHRoYW4gdGhlIG90aGVyLiBJJiMzOTtsbCBhbHNvIGNvbnNpZGVyIGBoY2lfZGV2X2RvX2Nsb3NlYC4gSSB0aGluayBgaGNpX2Rldl9jbG9zZV9zeW5jYCBpcyBwcmVmZXJhYmxlIHNpbmNlIGl0IGlzIG5vbi1zdGF0aWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGNpX3NvY2tfc2VuZG1zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9ibHVldG9vdGgvaGNpX3NvY2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmM9MTczMj1zdGF0aWMgaW50IGhjaV9sb2dnaW5nX2ZyYW1lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMtMTc5Ny1cbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYzoxNzk4OnN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMtMTc5OS1cdFx0XHQgICAgc2l6ZV90IGxlbilcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmM9MjE3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBoY2lfc29ja19vcHMgPSB7XG4tLVxubmV0L2JsdWV0b290aC9oY2lfc29jay5jLTIxODEtXHQuZ2V0bmFtZVx0PSBoY2lfc29ja19nZXRuYW1lLFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jOjIxODI6XHQuc2VuZG1zZ1x0PSBoY2lfc29ja19zZW5kbXNnLFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jLTIxODMtXHQucmVjdm1zZ1x0PSBoY2lfc29ja19yZWN2bXNnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NDcKCQkJCQkJCW91dHB1dDogMTM5CgkJCQkJCQl0aG91Z2h0czogMjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJsdWV0b290aCBTdWJzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaGNpX3NvY2tfc2VuZG1zZ2AgaXNuJiMzOTt0IGlubGluZWQg4oCTIHdoaWNoIGlzIGV4cGVjdGVkLCBnaXZlbiBpdCYjMzk7cyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGFyZ2V0LiBHb29kLiBOb3csIHRoZSBtZWF0IG9mIGl0IHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiBvciBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbi4gSXQmIzM5O3MgZG9pbmcgdGhpcyBieSBicmluZ2luZyBpbiBSQ1UgcHJvdGVjdGlvbiB3aXRoaW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCB0aGVuIHByb3Blcmx5IHN5bmNocm9uaXppbmcgUkNVIGluIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBJIGFsc28gc2VlIGNoYW5nZXMgd2l0aCB0aGUgd29ya3F1ZXVlIHN5bmNocm9uaXphdGlvbiwgc3dpdGNoaW5nIGZyb20gYGZsdXNoX3dvcmtgIHRvIGBkaXNhYmxlX3dvcmtfc3luY2AgYW5kIGludHJvZHVjaW5nIGBlbmFibGVfd29ya2AgZm9yIGB0eF93b3JrYC4KCkZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZS4gQW55IG1vZGlmaWNhdGlvbiB0byBzeW5jaHJvbml6YXRpb24gb3IgZGF0YSBhY2Nlc3MgaXMgYSBnb29kIGNhbmRpZGF0ZSB0byBwb2tlIGF0LiBHaXZlbiB0aGF0IHRoZSBCbHVldG9vdGggc3Vic3lzdGVtIChgQlRgIGNvbmZpZykgaXMgdGhlIHJlbGV2YW50IGNvbnRleHQgYW5kIHRoZSB0YXJnZXRlZCBmdW5jdGlvbnMgYXJlIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AsIEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGEgaGlnaCBwcmlvcml0eSBmb3IgaW52ZXN0aWdhdGlvbi4KCkkmIzM5O2xsIGRvdWJsZS1jaGVjayB0byBjb25maXJtIHRoYXQgdGhlIGBCVGAgY29uZmlnIGlzIHRoZSBwcmltYXJ5IGdhdGluZyBmYWN0b3IsIGJ1dCBzbyBmYXIsIHRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNoYW5nZSB3b3J0aCBmb2N1c2luZyBmdXp6aW5nIGVmZm9ydHMgb24uIFRoZSBjaGFuZ2VzIGhhdmUgaGlnaCBwb3RlbnRpYWwgb2YgaW50cm9kdWNpbmcgc3VidGxlIGJ1Z3MsIHNvIHRoaXMgbmVlZHMgdG8gYmUgaW52ZXN0aWdhdGVkIGltbWVkaWF0ZWx5IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoY2lfc29ja19zZW5kbXNnJiMzNDssCiAgICAmIzM0O2hjaV9kZXZfY2xvc2Vfc3luYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQmx1ZXRvb3RoIHN1YnN5c3RlbSBieSBhZGRpbmcgUkNVIHByb3RlY3Rpb24gaW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBtb2RpZnlpbmcgd29ya3F1ZXVlIHN5bmNocm9uaXphdGlvbiAoYGRpc2FibGVfd29ya19zeW5jYCBhbmQgYHN5bmNocm9uaXplX3JjdWApIGluIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgZHVyaW5nIGRldmljZSB0ZWFyZG93biBhbmQgc29ja2V0IHRyYW5zbWlzc2lvbiwgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGNpX3NvY2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtoY2lfZGV2X2Nsb3NlX3N5bmMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJsdWV0b290aCBzdWJzeXN0ZW0gYnkgYWRkaW5nIFJDVSBwcm90ZWN0aW9uIGluIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgbW9kaWZ5aW5nIHdvcmtxdWV1ZSBzeW5jaHJvbml6YXRpb24gKGBkaXNhYmxlX3dvcmtfc3luY2AgYW5kIGBzeW5jaHJvbml6ZV9yY3VgKSBpbiBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGR1cmluZyBkZXZpY2UgdGVhcmRvd24gYW5kIHNvY2tldCB0cmFuc21pc3Npb24sIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUpIGJldHdlZW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gSXQgaW50cm9kdWNlcyBSQ1UgcmVhZCBsb2NrcyBpbiB0aGUgc2VuZCBwYXRoIGFuZCB1c2VzIGBkaXNhYmxlX3dvcmtfc3luY2Agd2l0aCBgc3luY2hyb25pemVfcmN1YCBpbiB0aGUgY2xvc2UgcGF0aCB0byBlbnN1cmUgc2FmZSB0ZWFyZG93bi4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgb2JqZWN0IGxpZmV0aW1lLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgbW9uaXRvcmVkIGJ5IEtBU0FOIChmb3IgdXNlLWFmdGVyLWZyZWUpIGFuZCBMT0NLREVQIChmb3IgbG9ja2luZyBpc3N1ZXMpLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG9yIG1vZGlmaWNhdGlvbnMgdG8gYnVmZmVyIGhhbmRsaW5nIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYzZGQ2NDFlYjZiODk2OWE1NzBmOTFmNjlmMGNmZjQ3Nzc3NTlhOTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxMjo0Njo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYyBiL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYwppbmRleCAwNzBjYTM4OGY5YWNlLi44MzQ1ZWJiYmQ5ZDUzIDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jCkBAIC0xODUwLDkgJiM0MzsxODUwLDEwIEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCWdvdG8gZHJvcDsKIAl9CiAKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwogCWlmICghdGVzdF9iaXQoSENJX1VQLCAmYW1wO2hkZXYtJmd0O2ZsYWdzKSkgewogCQllcnIgPSAtRU5FVERPV047Ci0JCWdvdG8gZHJvcDsKJiM0MzsJCWdvdG8gZHJvcF9yY3U7CiAJfQogCiAJaGNpX3NrYl9wa3RfdHlwZShza2IpID0gc2tiLSZndDtkYXRhWzBdOwpAQCAtMTg3MCw3ICYjNDM7MTg3MSw3IEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCSAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUICZhbXA7JmFtcDsKIAkJICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfRFJWX1BLVCkgewogCQkJZXJyID0gLUVJTlZBTDsKLQkJCWdvdG8gZHJvcDsKJiM0MzsJCQlnb3RvIGRyb3BfcmN1OwogCQl9CiAKIAkJc2tiX3F1ZXVlX3RhaWwoJmFtcDtoZGV2LSZndDtyYXdfcSwgc2tiKTsKQEAgLTE4ODUsNyAmIzQzOzE4ODYsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAogCQkJCSAgICZhbXA7aGNpX3NlY19maWx0ZXIub2NmX21hc2tbb2dmXSkpICZhbXA7JmFtcDsKIAkJICAgICFjYXBhYmxlKENBUF9ORVRfUkFXKSkgewogCQkJZXJyID0gLUVQRVJNOwotCQkJZ290byBkcm9wOwomIzQzOwkJCWdvdG8gZHJvcF9yY3U7CiAJCX0KIAogCQkvKiBTaW5jZSB0aGUgb3Bjb2RlIGhhcyBhbHJlYWR5IGJlZW4gZXh0cmFjdGVkIGhlcmUsIHN0b3JlCkBAIC0xOTA4LDE0ICYjNDM7MTkwOSwxNCBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAogCX0gZWxzZSB7CiAJCWlmICghY2FwYWJsZShDQVBfTkVUX1JBVykpIHsKIAkJCWVyciA9IC1FUEVSTTsKLQkJCWdvdG8gZHJvcDsKJiM0MzsJCQlnb3RvIGRyb3BfcmN1OwogCQl9CiAKIAkJaWYgKGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfQUNMREFUQV9QS1QgJmFtcDsmYW1wOwogCQkgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9TQ09EQVRBX1BLVCAmYW1wOyZhbXA7CiAJCSAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUKSB7CiAJCQllcnIgPSAtRUlOVkFMOwotCQkJZ290byBkcm9wOwomIzQzOwkJCWdvdG8gZHJvcF9yY3U7CiAJCX0KIAogCQlza2JfcXVldWVfdGFpbCgmYW1wO2hkZXYtJmd0O3Jhd19xLCBza2IpOwpAQCAtMTkyMywxNCAmIzQzOzE5MjQsMTYgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywKIAl9CiAKIAllcnIgPSBsZW47CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlnb3RvIGRvbmU7CiAKJiM0Mztkcm9wX3JjdToKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7ZHJvcDoKJiM0MzsJa2ZyZWVfc2tiKHNrYik7CiBkb25lOgogCXJlbGVhc2Vfc29jayhzayk7CiAJcmV0dXJuIGVycjsKLQotZHJvcDoKLQlrZnJlZV9za2Ioc2tiKTsKLQlnb3RvIGRvbmU7CiB9CiAKIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2V0c29ja29wdF9vbGQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYwppbmRleCBjOGQxNDEyOGMzNjNkLi5iYWQ4MzMxM2JiNWY5IDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jCkBAIC01NDcyLDkgJiM0Mzs1NDcyLDExIEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJaGNpX2xlZHNfdXBkYXRlX3Bvd2VyZWQoaGRldiwgZmFsc2UpOwogCiAJLyogRmx1c2ggUlggYW5kIFRYIHdvcmtzICovCi0JZmx1c2hfd29yaygmYW1wO2hkZXYtJmd0O3R4X3dvcmspOwomIzQzOwlkaXNhYmxlX3dvcmtfc3luYygmYW1wO2hkZXYtJmd0O3R4X3dvcmspOwogCWZsdXNoX3dvcmsoJmFtcDtoZGV2LSZndDtyeF93b3JrKTsKIAomIzQzOwlzeW5jaHJvbml6ZV9yY3UoKTsKJiM0MzsKIAlpZiAoaGRldi0mZ3Q7ZGlzY292X3RpbWVvdXQgJmd0OyAwKSB7CiAJCWhkZXYtJmd0O2Rpc2Nvdl90aW1lb3V0ID0gMDsKIAkJaGNpX2Rldl9jbGVhcl9mbGFnKGhkZXYsIEhDSV9ESVNDT1ZFUkFCTEUpOwpAQCAtNTU3Niw2ICYjNDM7NTU3OCw4IEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJYmFjcHkoJmFtcDtoZGV2LSZndDtyYW5kb21fYWRkciwgQkRBRERSX0FOWSk7CiAJaGNpX2NvZGVjX2xpc3RfY2xlYXIoJmFtcDtoZGV2LSZndDtsb2NhbF9jb2RlY3MpOwogCiYjNDM7CWVuYWJsZV93b3JrKCZhbXA7aGRldi0mZ3Q7dHhfd29yayk7CiYjNDM7CiAJaGNpX2Rldl9wdXQoaGRldik7CiAJcmV0dXJuIGVycjsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTMKCQkJCQkJCW91dHB1dDogMTY4CgkJCQkJCQl0aG91Z2h0czogNTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQmx1ZXRvb3RoIEhDSSBTb2NrZXQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLCBzcGVjaWZpY2FsbHkgaW4gdGhlIEJsdWV0b290aCBuZXR3b3JraW5nIGNvZGUuIEkmIzM5O20gc2VlaW5nIGFkZGl0aW9ucyBpbiBgaGNpX3NvY2tfc2VuZG1zZ2Agb2YgYHJjdV9yZWFkX2xvY2soKWAgYW5kIGByY3VfcmVhZF91bmxvY2soKWAgYXJvdW5kIHRoZSBkZXZpY2UmIzM5O3Mgb3BlcmF0aW9uYWwgY2hlY2suIEFuZCBpbiBgaGNpX2Rldl9jbG9zZV9zeW5jYCwgdGhlIGBmbHVzaF93b3JrYCBjYWxsIG9uIGB0eF93b3JrYCBpcyBiZWluZyByZXBsYWNlZCB3aXRoIGEgYGRpc2FibGVfd29ya19zeW5jYCwgYSBgc3luY2hyb25pemVfcmN1KClgIGlzIGFkZGVkLCBhbmQgdGhlbiBhbiBgZW5hYmxlX3dvcmtgLgoKSW5pdGlhbGx5LCBteSB0aG91Z2h0IHByb2Nlc3Mgd2VudCBzdHJhaWdodCB0byBhIHVzZS1hZnRlci1mcmVlIG9yIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLiBJdCBzZWVtcyBsaWtlIGBoY2lfc29ja19zZW5kbXNnYCBtaWdodCBoYXZlIGJlZW4gcXVldWluZyBzb21ldGhpbmcgdG8gYSBkZXZpY2UgdGhhdCB3YXMgaW4gdGhlIHByb2Nlc3Mgb2Ygc2h1dHRpbmcgZG93biB0aHJvdWdoIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBUaGUgYWRkaXRpb24gb2YgYHN5bmNocm9uaXplX3JjdSgpYCByZWFsbHkgc29saWRpZmllcyB0aGUgcmFjZSBjb25kaXRpb24gc3VzcGljaW9uLCBhcyBpdCYjMzk7cyBtZWFudCB0byB3YWl0IGZvciBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zIHRvIGNvbXBsZXRlLgoKU28sIHRoaXMgaXMgbGlrZWx5IGFib3V0IGRldmljZSBzaHV0ZG93biBzeW5jaHJvbml6YXRpb24sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeS4gV2FpdCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLCB0aGlzIGlzIGEgc3luY2hyb25pemF0aW9uIGlzc3VlLiBUaGUgcGF0Y2ggaXNuJiMzOTt0IGFib3V0IEtNU0FOIGFuZCBpdOKAmXMgcHVycG9zZSBpcyB0byBwcmV2ZW50IGEgdXNlLWFmdGVyLWZyZWUgb3IgZGF0YSBjb3JydXB0aW9uIGR1cmluZyBkZXZpY2Ugc2h1dGRvd24uIFRoaXMgaXNuJiMzOTt0IHJlbGF0ZWQgdG8gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgYW55IGtpbmQgb2YgaW5mb3JtYXRpb24gbGVhay4gSXQmIzM5O3MgZm9jdXNlZCBvbiBSQ1UgbG9ja2luZyBhbmQgd29ya3F1ZXVlIG1hbmFnZW1lbnQuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtLiBMb29raW5nIGF0IHRoZSBjb2RlIHNuaXBwZXRzIGFnYWluOiB0aGUgbG9jayBpbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIHRoZSBgZGlzYWJsZV93b3JrX3N5bmNgIGFuZCBgc3luY2hyb25pemVfcmN1YCBpbiBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gWXVwLCB0aGlzIGlzIGFsbCBhYm91dCBzeW5jaHJvbml6YXRpb24sIGRlZmluaXRlbHkgbm90IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBzeW5jaHJvbml6YXRpb24gaXNzdWUgKGxpa2VseSBhIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlKSBiZXR3ZWVuIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AuIEl0IGludHJvZHVjZXMgUkNVIHJlYWQgbG9ja3MgaW4gdGhlIHNlbmQgcGF0aCBhbmQgdXNlcyBgZGlzYWJsZV93b3JrX3N5bmNgIHdpdGggYHN5bmNocm9uaXplX3JjdWAgaW4gdGhlIGNsb3NlIHBhdGggdG8gZW5zdXJlIHNhZmUgdGVhcmRvd24uIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gY29uY3VycmVuY3kgYW5kIG9iamVjdCBsaWZldGltZSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IG1vbml0b3JlZCBieSBLQVNBTiAoZm9yIHVzZS1hZnRlci1mcmVlKSBhbmQgTE9DS0RFUCAoZm9yIGxvY2tpbmcgaXNzdWVzKS4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBvciBtb2RpZmljYXRpb25zIHRvIGJ1ZmZlciBoYW5kbGluZyB0aGF0IHdvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgc3luY2hyb25pemF0aW9uIGlzc3VlIChsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSkgYmV0d2VlbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBJdCBpbnRyb2R1Y2VzIFJDVSByZWFkIGxvY2tzIGluIHRoZSBzZW5kIHBhdGggYW5kIHVzZXMgYGRpc2FibGVfd29ya19zeW5jYCB3aXRoIGBzeW5jaHJvbml6ZV9yY3VgIGluIHRoZSBjbG9zZSBwYXRoIHRvIGVuc3VyZSBzYWZlIHRlYXJkb3duLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIGNvbmN1cnJlbmN5IGFuZCBvYmplY3QgbGlmZXRpbWUsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBtb25pdG9yZWQgYnkgS0FTQU4gKGZvciB1c2UtYWZ0ZXItZnJlZSkgYW5kIExPQ0tERVAgKGZvciBsb2NraW5nIGlzc3VlcykuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZSwgb3IgbW9kaWZpY2F0aW9ucyB0byBidWZmZXIgaGFuZGxpbmcgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDY6NDguNDg4NzQ2NzYxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1NTU3NjQzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoY2lfc29ja19zZW5kbXNnXCIsXG4gICAgXCJoY2lfZGV2X2Nsb3NlX3N5bmNcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUpIGJldHdlZW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gSXQgaW50cm9kdWNlcyBSQ1UgcmVhZCBsb2NrcyBpbiB0aGUgc2VuZCBwYXRoIGFuZCB1c2VzIGBkaXNhYmxlX3dvcmtfc3luY2Agd2l0aCBgc3luY2hyb25pemVfcmN1YCBpbiB0aGUgY2xvc2UgcGF0aCB0byBlbnN1cmUgc2FmZSB0ZWFyZG93bi4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgb2JqZWN0IGxpZmV0aW1lLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgbW9uaXRvcmVkIGJ5IEtBU0FOIChmb3IgdXNlLWFmdGVyLWZyZWUpIGFuZCBMT0NLREVQIChmb3IgbG9ja2luZyBpc3N1ZXMpLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG9yIG1vZGlmaWNhdGlvbnMgdG8gYnVmZmVyIGhhbmRsaW5nIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJsdWV0b290aCBzdWJzeXN0ZW0gYnkgYWRkaW5nIFJDVSBwcm90ZWN0aW9uIGluIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgbW9kaWZ5aW5nIHdvcmtxdWV1ZSBzeW5jaHJvbml6YXRpb24gKGBkaXNhYmxlX3dvcmtfc3luY2AgYW5kIGBzeW5jaHJvbml6ZV9yY3VgKSBpbiBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGR1cmluZyBkZXZpY2UgdGVhcmRvd24gYW5kIHNvY2tldCB0cmFuc21pc3Npb24sIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0Njo0OC40ODg3NTMxNTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNzg4MzcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYzZGQ2NDFlYjZiODk2OWE1NzBmOTFmNjlmMGNmZjQ3Nzc3NTlhOTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMTI6NDY6NDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXFxuaW5kZXggMDcwY2EzODhmOWFjZS4uODM0NWViYmJkOWQ1MyAxMDA2NDRcXG4tLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcXG4rKysgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcXG5AQCAtMTg1MCw5ICsxODUwLDEwIEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuIFxcdFxcdGdvdG8gZHJvcDtcXG4gXFx0fVxcbiBcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRpZiAoIXRlc3RfYml0KEhDSV9VUCwgXFx1MDAyNmhkZXYtXFx1MDAzZWZsYWdzKSkge1xcbiBcXHRcXHRlcnIgPSAtRU5FVERPV047XFxuLVxcdFxcdGdvdG8gZHJvcDtcXG4rXFx0XFx0Z290byBkcm9wX3JjdTtcXG4gXFx0fVxcbiBcXG4gXFx0aGNpX3NrYl9wa3RfdHlwZShza2IpID0gc2tiLVxcdTAwM2VkYXRhWzBdO1xcbkBAIC0xODcwLDcgKzE4NzEsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHRcXHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9JU09EQVRBX1BLVCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9EUlZfUEtUKSB7XFxuIFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuLVxcdFxcdFxcdGdvdG8gZHJvcDtcXG4rXFx0XFx0XFx0Z290byBkcm9wX3JjdTtcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmhkZXYtXFx1MDAzZXJhd19xLCBza2IpO1xcbkBAIC0xODg1LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHRcXHRcXHRcXHQgICBcXHUwMDI2aGNpX3NlY19maWx0ZXIub2NmX21hc2tbb2dmXSkpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAhY2FwYWJsZShDQVBfTkVUX1JBVykpIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVQRVJNO1xcbi1cXHRcXHRcXHRnb3RvIGRyb3A7XFxuK1xcdFxcdFxcdGdvdG8gZHJvcF9yY3U7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdC8qIFNpbmNlIHRoZSBvcGNvZGUgaGFzIGFscmVhZHkgYmVlbiBleHRyYWN0ZWQgaGVyZSwgc3RvcmVcXG5AQCAtMTkwOCwxNCArMTkwOSwxNCBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRpZiAoIWNhcGFibGUoQ0FQX05FVF9SQVcpKSB7XFxuIFxcdFxcdFxcdGVyciA9IC1FUEVSTTtcXG4tXFx0XFx0XFx0Z290byBkcm9wO1xcbitcXHRcXHRcXHRnb3RvIGRyb3BfcmN1O1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpZiAoaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9BQ0xEQVRBX1BLVCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9TQ09EQVRBX1BLVCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9JU09EQVRBX1BLVCkge1xcbiBcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbi1cXHRcXHRcXHRnb3RvIGRyb3A7XFxuK1xcdFxcdFxcdGdvdG8gZHJvcF9yY3U7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHNrYl9xdWV1ZV90YWlsKFxcdTAwMjZoZGV2LVxcdTAwM2VyYXdfcSwgc2tiKTtcXG5AQCAtMTkyMywxNCArMTkyNCwxNiBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHR9XFxuIFxcbiBcXHRlcnIgPSBsZW47XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRnb3RvIGRvbmU7XFxuIFxcbitkcm9wX3JjdTpcXG4rXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK2Ryb3A6XFxuK1xcdGtmcmVlX3NrYihza2IpO1xcbiBkb25lOlxcbiBcXHRyZWxlYXNlX3NvY2soc2spO1xcbiBcXHRyZXR1cm4gZXJyO1xcbi1cXG4tZHJvcDpcXG4tXFx0a2ZyZWVfc2tiKHNrYik7XFxuLVxcdGdvdG8gZG9uZTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBoY2lfc29ja19zZXRzb2Nrb3B0X29sZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcXG5pbmRleCBjOGQxNDEyOGMzNjNkLi5iYWQ4MzMxM2JiNWY5IDEwMDY0NFxcbi0tLSBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xcbisrKyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xcbkBAIC01NDcyLDkgKzU0NzIsMTEgQEAgaW50IGhjaV9kZXZfY2xvc2Vfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4gXFx0aGNpX2xlZHNfdXBkYXRlX3Bvd2VyZWQoaGRldiwgZmFsc2UpO1xcbiBcXG4gXFx0LyogRmx1c2ggUlggYW5kIFRYIHdvcmtzICovXFxuLVxcdGZsdXNoX3dvcmsoXFx1MDAyNmhkZXYtXFx1MDAzZXR4X3dvcmspO1xcbitcXHRkaXNhYmxlX3dvcmtfc3luYyhcXHUwMDI2aGRldi1cXHUwMDNldHhfd29yayk7XFxuIFxcdGZsdXNoX3dvcmsoXFx1MDAyNmhkZXYtXFx1MDAzZXJ4X3dvcmspO1xcbiBcXG4rXFx0c3luY2hyb25pemVfcmN1KCk7XFxuK1xcbiBcXHRpZiAoaGRldi1cXHUwMDNlZGlzY292X3RpbWVvdXQgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdGhkZXYtXFx1MDAzZWRpc2Nvdl90aW1lb3V0ID0gMDtcXG4gXFx0XFx0aGNpX2Rldl9jbGVhcl9mbGFnKGhkZXYsIEhDSV9ESVNDT1ZFUkFCTEUpO1xcbkBAIC01NTc2LDYgKzU1NzgsOCBAQCBpbnQgaGNpX2Rldl9jbG9zZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxcbiBcXHRiYWNweShcXHUwMDI2aGRldi1cXHUwMDNlcmFuZG9tX2FkZHIsIEJEQUREUl9BTlkpO1xcbiBcXHRoY2lfY29kZWNfbGlzdF9jbGVhcihcXHUwMDI2aGRldi1cXHUwMDNlbG9jYWxfY29kZWNzKTtcXG4gXFxuK1xcdGVuYWJsZV93b3JrKFxcdTAwMjZoZGV2LVxcdTAwM2V0eF93b3JrKTtcXG4rXFxuIFxcdGhjaV9kZXZfcHV0KGhkZXYpO1xcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ2OjQ5LjAyNzE3Nzg4N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI1MDQ5NTU4NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGNpX3NvY2tfc2VuZG1zZ1wiLFxuICAgIFwiaGNpX2Rldl9jbG9zZV9zeW5jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJsdWV0b290aCBzdWJzeXN0ZW0gYnkgYWRkaW5nIFJDVSBwcm90ZWN0aW9uIGluIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgbW9kaWZ5aW5nIHdvcmtxdWV1ZSBzeW5jaHJvbml6YXRpb24gKGBkaXNhYmxlX3dvcmtfc3luY2AgYW5kIGBzeW5jaHJvbml6ZV9yY3VgKSBpbiBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGR1cmluZyBkZXZpY2UgdGVhcmRvd24gYW5kIHNvY2tldCB0cmFuc21pc3Npb24sIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmM2RkNjQxZWI2Yjg5NjlhNTcwZjkxZjY5ZjBjZmY0Nzc3NzU5YTkwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTI6NDY6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbmluZGV4IDA3MGNhMzg4ZjlhY2UuLjgzNDVlYmJiZDlkNTMgMTAwNjQ0XG4tLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbisrKyBiL25ldC9ibHVldG9vdGgvaGNpX3NvY2suY1xuQEAgLTE4NTAsOSArMTg1MCwxMCBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHRnb3RvIGRyb3A7XG4gXHR9XG4gXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRpZiAoIXRlc3RfYml0KEhDSV9VUCwgXHUwMDI2aGRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0ZXJyID0gLUVORVRET1dOO1xuLVx0XHRnb3RvIGRyb3A7XG4rXHRcdGdvdG8gZHJvcF9yY3U7XG4gXHR9XG4gXG4gXHRoY2lfc2tiX3BrdF90eXBlKHNrYikgPSBza2ItXHUwMDNlZGF0YVswXTtcbkBAIC0xODcwLDcgKzE4NzEsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9JU09EQVRBX1BLVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfRFJWX1BLVCkge1xuIFx0XHRcdGVyciA9IC1FSU5WQUw7XG4tXHRcdFx0Z290byBkcm9wO1xuK1x0XHRcdGdvdG8gZHJvcF9yY3U7XG4gXHRcdH1cbiBcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2aGRldi1cdTAwM2VyYXdfcSwgc2tiKTtcbkBAIC0xODg1LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHRcdFx0ICAgXHUwMDI2aGNpX3NlY19maWx0ZXIub2NmX21hc2tbb2dmXSkpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIWNhcGFibGUoQ0FQX05FVF9SQVcpKSB7XG4gXHRcdFx0ZXJyID0gLUVQRVJNO1xuLVx0XHRcdGdvdG8gZHJvcDtcbitcdFx0XHRnb3RvIGRyb3BfcmN1O1xuIFx0XHR9XG4gXG4gXHRcdC8qIFNpbmNlIHRoZSBvcGNvZGUgaGFzIGFscmVhZHkgYmVlbiBleHRyYWN0ZWQgaGVyZSwgc3RvcmVcbkBAIC0xOTA4LDE0ICsxOTA5LDE0IEBAIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHR9IGVsc2Uge1xuIFx0XHRpZiAoIWNhcGFibGUoQ0FQX05FVF9SQVcpKSB7XG4gXHRcdFx0ZXJyID0gLUVQRVJNO1xuLVx0XHRcdGdvdG8gZHJvcDtcbitcdFx0XHRnb3RvIGRyb3BfcmN1O1xuIFx0XHR9XG4gXG4gXHRcdGlmIChoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0FDTERBVEFfUEtUIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9TQ09EQVRBX1BLVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfSVNPREFUQV9QS1QpIHtcbiBcdFx0XHRlcnIgPSAtRUlOVkFMO1xuLVx0XHRcdGdvdG8gZHJvcDtcbitcdFx0XHRnb3RvIGRyb3BfcmN1O1xuIFx0XHR9XG4gXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNmhkZXYtXHUwMDNlcmF3X3EsIHNrYik7XG5AQCAtMTkyMywxNCArMTkyNCwxNiBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0fVxuIFxuIFx0ZXJyID0gbGVuO1xuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRnb3RvIGRvbmU7XG4gXG4rZHJvcF9yY3U6XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbitkcm9wOlxuK1x0a2ZyZWVfc2tiKHNrYik7XG4gZG9uZTpcbiBcdHJlbGVhc2Vfc29jayhzayk7XG4gXHRyZXR1cm4gZXJyO1xuLVxuLWRyb3A6XG4tXHRrZnJlZV9za2Ioc2tiKTtcbi1cdGdvdG8gZG9uZTtcbiB9XG4gXG4gc3RhdGljIGludCBoY2lfc29ja19zZXRzb2Nrb3B0X29sZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuaW5kZXggYzhkMTQxMjhjMzYzZC4uYmFkODMzMTNiYjVmOSAxMDA2NDRcbi0tLSBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuKysrIGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXG5AQCAtNTQ3Miw5ICs1NDcyLDExIEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4gXHRoY2lfbGVkc191cGRhdGVfcG93ZXJlZChoZGV2LCBmYWxzZSk7XG4gXG4gXHQvKiBGbHVzaCBSWCBhbmQgVFggd29ya3MgKi9cbi1cdGZsdXNoX3dvcmsoXHUwMDI2aGRldi1cdTAwM2V0eF93b3JrKTtcbitcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNmhkZXYtXHUwMDNldHhfd29yayk7XG4gXHRmbHVzaF93b3JrKFx1MDAyNmhkZXYtXHUwMDNlcnhfd29yayk7XG4gXG4rXHRzeW5jaHJvbml6ZV9yY3UoKTtcbitcbiBcdGlmIChoZGV2LVx1MDAzZWRpc2Nvdl90aW1lb3V0IFx1MDAzZSAwKSB7XG4gXHRcdGhkZXYtXHUwMDNlZGlzY292X3RpbWVvdXQgPSAwO1xuIFx0XHRoY2lfZGV2X2NsZWFyX2ZsYWcoaGRldiwgSENJX0RJU0NPVkVSQUJMRSk7XG5AQCAtNTU3Niw2ICs1NTc4LDggQEAgaW50IGhjaV9kZXZfY2xvc2Vfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcbiBcdGJhY3B5KFx1MDAyNmhkZXYtXHUwMDNlcmFuZG9tX2FkZHIsIEJEQUREUl9BTlkpO1xuIFx0aGNpX2NvZGVjX2xpc3RfY2xlYXIoXHUwMDI2aGRldi1cdTAwM2Vsb2NhbF9jb2RlY3MpO1xuIFxuK1x0ZW5hYmxlX3dvcmsoXHUwMDI2aGRldi1cdTAwM2V0eF93b3JrKTtcbitcbiBcdGhjaV9kZXZfcHV0KGhkZXYpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0Njo0OS4wMjcxNzg4MjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDQ0NjIwMTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJsdWV0b290aCBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiB0aGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gYG5ldC9ibHVldG9vdGgvaGNpX3NvY2suY2AgYW5kIGBuZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNgLiBTZWVtcyBsaWtlIHNvbWVvbmUncyBiZWVuIGJ1c3kgd2l0aCBzb21lIGNvcmUgQmx1ZXRvb3RoIGludGVybmFscy4gU3BlY2lmaWNhbGx5LCBgaGNpX3NvY2tfc2VuZG1zZ2AgaGFzIGJlZW4gdXBkYXRlZCB3aXRoIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIGNhbGxzLCB3aGljaCByaW5ncyBhbGFybSBiZWxscyDigJMgdGhhdCdzIGFsbW9zdCBjZXJ0YWlubHkgdG8gYWRkcmVzcyBzb21lIGtpbmQgb2YgcG90ZW50aWFsIGRhdGEgcmFjZSBvciBwcm90ZWN0aW9uIGlzc3VlIHdoZW4gcmVhZGluZyBkYXRhIGZyb20gYW4gUkNVIHByb3RlY3RlZCBhcmVhLiBJJ20gZ3Vlc3NpbmcgYGhkZXZgIHN0YXRlIGlzIGludm9sdmVkLlxuXG5UaGVuLCBvdmVyIGluIGBoY2lfc3luYy5jYCwgdGhpbmdzIGdldCBldmVuIG1vcmUgaW50ZXJlc3RpbmcuIFRoZXkndmUgc3dhcHBlZCBvdXQgYGZsdXNoX3dvcmsoXHUwMDI2aGRldi1cdTAwM2V0eF93b3JrKWAgZm9yIGBkaXNhYmxlX3dvcmtfc3luYyhcdTAwMjZoZGV2LVx1MDAzZXR4X3dvcmspYCBhbmQgYWRkZWQgYHN5bmNocm9uaXplX3JjdSgpYCwgcGx1cyBhbiBgZW5hYmxlX3dvcmsoKWAgY2FsbCBhdCB0aGUgZW5kLiBUaGF0IGlzIGEgdmVyeSBzcGVjaWZpYyBwYXR0ZXJuISBUaGlzICpzY3JlYW1zKiB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbiB3aXRoIHRoZSBgdHhfd29ya2Agd29ya3F1ZXVlIGFuZCBwcm9iYWJseSB0aGUgc2h1dGRvd24gb2YgdGhlIGRldmljZS4gVGhlIGNoYW5nZSBmcm9tIGBmbHVzaF93b3JrYCB0byBgZGlzYWJsZV93b3JrX3N5bmNgIGlzIGtleSBoZXJlIHRvIGVuc3VyaW5nIHRoYXQgYW55IHdvcmsgcXVldWVkIHRvIHRoZSBgdHhfd29ya2Agd29ya3F1ZXVlIGFyZSBjb21wbGV0ZWx5IGZpbmlzaGVkIGJlZm9yZSB0aGUgZGV2aWNlIHNodXRkb3duIGNvbnRpbnVlcywgYW5kIHRoYXQgYW55IHJlZmVyZW5jZXMgZnJvbSB0aGUgd29ya3F1ZXVlIGNvZGUgdG8gdGhlIGBoZGV2YCBzdHJ1Y3R1cmUgb3IgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIGRvbmUgYmVmb3JlIHRoZXkgY2FuIGJlIGZyZWVkLiBUaGUgYHN5bmNocm9uaXplX3JjdSgpYCBjYWxsIGNvbmZpcm1zIG15IHN1c3BpY2lvbiDigJMgdGhleSdyZSBjbGVhbmluZyB1cCBSQ1UgcmVhZGVycyBiZWZvcmUgYWxsb3dpbmcgdGhlIGRldmljZSB0byBjb21wbGV0ZWx5IGNsb3NlLlxuXG5UaGUgcGF0Y2ggdG91Y2hlcyBib3RoIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AsIHdoaWNoIGFyZSBpbXBvcnRhbnQgdG8gcmVjb2duaXplLCBiZWNhdXNlIHRoZXkgYXJlIGV4cG9zZWQgdG8gdGhlIHVzZXIgc3BhY2UuIFNvIHRoaXMgaXMgdGhlIHNvcnQgb2YgY2hhbmdlIHRoYXQgY2FuIGhhdmUgZmFpcmx5IHdpZGVzcHJlYWQgaW1wYWN0LCBldmVuIGlmIGl0J3MgdGFyZ2V0ZWQgYW5kIHN1YnRsZS4gV2UncmUgbG9va2luZyBhdCBvcGVyYXRpb25zIHRoYXQgYXJlIGRpcmVjdGx5IHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIGFjdGlvbnM6IHNlbmRpbmcgYSBtZXNzYWdlIG9uIGFuIEhDSSBzb2NrZXQsIGFuZCBjbG9zaW5nIGFuIEhDSSBkZXZpY2UsIHJlc3BlY3RpdmVseS5cblxuUmlnaHQsIHRpbWUgdG8gY2hlY2sgdGhlIHByZXJlcXVpc2l0ZXMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYENPTkZJR19CVGAgaXMgY29ycmVjdGx5IGVuYWJsZWQsIGFuZCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMsIHByb2JhYmx5IHVuZGVyIGBuZXQvYmx1ZXRvb3RoL2AsIHRvIGJlIGNlcnRhaW4gaWYgdGhlcmUgYXJlIG1vcmUgcHJlY2lzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgbmVjZXNzYXJ5IG9yIGF0IGxlYXN0IGhpZ2hseSByZWxldmFudC4gSSdsbCBjaGVjayB0aGF0IHRvIGVuc3VyZSB0aGlzIHBhdGNoIGlzIHJlbGV2YW50IGFuZCBjb3JyZWN0IGZvciB0aGUgZ2l2ZW4gc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDE2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDY6NTYuMDcxODAzMzk0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MTU1Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYmx1ZXRvb3RoL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JsdWV0b290aC9LY29uZmlnLTUtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjY6bWVudWNvbmZpZyBCVFxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJCbHVldG9vdGggc3Vic3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNDEtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjQyOmNvbmZpZyBCVF9CUkVEUlxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy00My1cXHRib29sIFxcXCJCbHVldG9vdGggQ2xhc3NpYyAoQlIvRURSKSBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZz01Nj1zb3VyY2UgXFxcIm5ldC9ibHVldG9vdGgvaGlkcC9LY29uZmlnXFxcIlxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy01Ny1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6NTg6Y29uZmlnIEJUX0xFXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIkJsdWV0b290aCBMb3cgRW5lcmd5IChMRSkgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNjUtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjY2OmNvbmZpZyBCVF9MRV9MMkNBUF9FQ1JFRFxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy02Ny1cXHRib29sIFxcXCJCbHVldG9vdGggTDJDQVAgRW5oYW5jZWQgQ3JlZGl0IEZsb3cgQ29udHJvbFxcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy03Ni1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6Nzc6Y29uZmlnIEJUXzZMT1dQQU5cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctNzgtXFx0dHJpc3RhdGUgXFxcIkJsdWV0b290aCA2TG9XUEFOIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctODItXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjgzOmNvbmZpZyBCVF9MRURTXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctOTEtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjkyOmNvbmZpZyBCVF9NU0ZURVhUXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTkzLVxcdGJvb2wgXFxcIkVuYWJsZSBNaWNyb3NvZnQgZXh0ZW5zaW9uc1xcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy05OC1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6OTk6Y29uZmlnIEJUX0FPU1BFWFRcXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctMTAwLVxcdGJvb2wgXFxcIkVuYWJsZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QgZXh0ZW5zaW9uc1xcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMDUtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjEwNjpjb25maWcgQlRfREVCVUdGU1xcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiRXhwb3J0IEJsdWV0b290aCBpbnRlcm5hbHMgaW4gZGVidWdmc1xcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMTMtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjExNDpjb25maWcgQlRfU0VMRlRFU1RcXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctMTE1LVxcdGJvb2wgXFxcIkJsdWV0b290aCBzZWxmIHRlc3Rpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMjYtXFxubmV0L2JsdWV0b290aC9LY29uZmlnOjEyNzpjb25maWcgQlRfU0VMRlRFU1RfRUNESFxcbm5ldC9ibHVldG9vdGgvS2NvbmZpZy0xMjgtXFx0Ym9vbCBcXFwiRUNESCB0ZXN0IGNhc2VzXFxcIlxcbi0tXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTEzMy1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6MTM0OmNvbmZpZyBCVF9TRUxGVEVTVF9TTVBcXG5uZXQvYmx1ZXRvb3RoL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIlNNUCB0ZXN0IGNhc2VzXFxcIlxcbi0tXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTE0MC1cXG5uZXQvYmx1ZXRvb3RoL0tjb25maWc6MTQxOmNvbmZpZyBCVF9GRUFUVVJFX0RFQlVHXFxubmV0L2JsdWV0b290aC9LY29uZmlnLTE0Mi1cXHRib29sIFxcXCJFbmFibGUgcnVudGltZSBvcHRpb24gZm9yIGRlYnVnZ2luZyBzdGF0ZW1lbnRzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0Njo1Ni4xMjY5NjMyNDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc3OTM5MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgRm9jdXM6IEJUIENvbmZpZ3VyYXRpb24gYW5kIERldmljZSBDbG9zdXJlKipcblxuT2theSwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCByZXZvbHZlcyBhcm91bmQgYEJUYC4gIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byBmb2N1cyBvbiB0d28ga2V5IGZ1bmN0aW9uczogYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gTm93LCBpcyBgaGNpX2Rldl9jbG9zZV9zeW5jYCB0aGUgcmlnaHQgZnVuY3Rpb24gdG8gcmVhbGx5IGRpZyBpbnRvPyBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHRoZSBkZXZpY2UgY2xvc2luZywgd2hpY2ggaXMgZGVmaW5pdGVseSByZWxldmFudCB0byB1bmRlcnN0YW5kaW5nIHRoZSBsaWZlY3ljbGUsIGVzcGVjaWFsbHkgaWYgd2UncmUgbG9va2luZyBhdCBpc3N1ZXMgaW4gdGVhcmRvd24uIEkgdGhpbmsgdGhlIGtleSBoZXJlIGlzIHRoZSBmYWN0IHRoYXQgaXQgaXMgY2FsbGVkIHdoZW4gY2xvc2luZyB0aGUgZGV2aWNlLiBNYWtlcyBzZW5zZS4gQnV0IGp1c3QgdG8gYmUgc3VyZSwgYmVmb3JlIEkgZ28gZGVlcGVyIGRvd24gdGhhdCByYWJiaXQgaG9sZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYXJvdW5kIGl0IHRvIGVuc3VyZSB0aGlzIGlzIHRoZSBwcm9wZXIgZnVuY3Rpb24gdG8gc3BlbmQgbW9yZSB0aW1lIG9uLCBhbmQgdGhlcmUgYXJlbid0IG90aGVycyBJIG5lZWQgdG8gY29uc2lkZXIgYXQgdGhlIHNhbWUgdGltZS4gTGV0IG1lIHRyYWNlIGl0cyBjYWxscyBhbmQgY29uZmlybSBpdHMgcmVsZXZhbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTY0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDY6NTkuNjA0OTA0NTg3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDcxMTMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoY2lfZGV2X2Nsb3NlX3N5bmNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JsdWV0b290aC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JsdWV0b290aC9oY2lfY29ubi5jPTExOTY9c3RhdGljIHZvaWQgaGNpX2Nvbm5fdW5saW5rKHN0cnVjdCBoY2lfY29ubiAqY29ubilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX2Nvbm4uYy0xMjEwLVxcdFxcdFxcdC8qIElmIGhkZXYgaXMgZG93biBpdCBtZWFuc1xcbm5ldC9ibHVldG9vdGgvaGNpX2Nvbm4uYzoxMjExOlxcdFxcdFxcdCAqIGhjaV9kZXZfY2xvc2Vfc3luYy9oY2lfY29ubl9oYXNoX2ZsdXNoIGlzIGluIHByb2dyZXNzXFxubmV0L2JsdWV0b290aC9oY2lfY29ubi5jLTEyMTItXFx0XFx0XFx0ICogYW5kIGxpbmtzIGRvbid0IG5lZWQgdG8gYmUgY2xlYW51cCBhcyBhbGwgY29ubmVjdGlvbnNcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYz00OTE9aW50IGhjaV9kZXZfZG9fY2xvc2Uoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMtNDk4LVxcbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYzo0OTk6XFx0ZXJyID0gaGNpX2Rldl9jbG9zZV9zeW5jKGhkZXYpO1xcbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYy01MDAtXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmM9NTMxPXN0YXRpYyBpbnQgaGNpX2Rldl9kb19yZXNldChzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX2NvcmUuYy01MzgtXFxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jOjUzOTpcXHRyZXQgPSBoY2lfZGV2X2Nsb3NlX3N5bmMoaGRldik7XFxubmV0L2JsdWV0b290aC9oY2lfY29yZS5jLTU0MC1cXHRpZiAoIXJldClcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYz01NDA3PXN0YXRpYyBpbnQgaGNpX2Rldl9zaHV0ZG93bihzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01NDMxLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYzo1NDMyOmludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTU0MzMte1xcbi0tXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTU1OTM9c3RhdGljIGludCBoY2lfcG93ZXJfb25fc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01NjE2LVxcdFxcdGhjaV9kZXZfY2xlYXJfZmxhZyhoZGV2LCBIQ0lfQVVUT19PRkYpO1xcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYzo1NjE3OlxcdFxcdGhjaV9kZXZfY2xvc2Vfc3luYyhoZGV2KTtcXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTYxOC1cXHR9IGVsc2UgaWYgKGhjaV9kZXZfdGVzdF9mbGFnKGhkZXYsIEhDSV9BVVRPX09GRikpIHtcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYz01OTI1PXN0YXRpYyBpbnQgaGNpX2Rpc2Nvbm5lY3RfYWxsX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYsIHU4IHJlYXNvbilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01OTUzLSAqIERpc2Nvbm5lY3QgYWxsIGNvbm5lY3Rpb25zXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjU5NTQ6ICogaGNpX2Rldl9jbG9zZV9zeW5jXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTU5NTUtICovXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTU5NTY9c3RhdGljIGludCBoY2lfcG93ZXJfb2ZmX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTk4NS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmM6NTk4NjpcXHRlcnIgPSBoY2lfZGV2X2Nsb3NlX3N5bmMoaGRldik7XFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTU5ODctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ2OjU5LjcxNTYyNDEwNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NjUzNTA3MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJsdWV0b290aCBIQ0kgRGV2aWNlIFNodXRkb3duIGFuZCBTb2NrZXQgQ29tbXVuaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBCbHVldG9vdGggSENJIGRldmljZXMgYXJlIGNsb3NlZCBhbmQgaG93IHRoZSBzb2NrZXQgY29tbXVuaWNhdGlvbiB3b3JrcywgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZnVuY3Rpb25zIHRvIHRhcmdldC4gYGhjaV9kZXZfY2xvc2Vfc3luY2AgaXMgZGVmaW5pdGVseSBjYWxsZWQgYnkgdmFyaW91cyBmdW5jdGlvbnMgbGlrZSBgaGNpX2Rldl9kb19jbG9zZWAgYW5kIGBoY2lfcG93ZXJfb2ZmX3N5bmNgLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBpb2N0bHMgYW5kIG5ldGxpbmsgY29tbWFuZHMgdG8gc2h1dCBkb3duIHRoZSBIQ0kgZGV2aWNlLiBUaGF0IG1ha2VzIGl0IHBvdGVudGlhbGx5IGludGVyZXN0aW5nLlxuXG5Ob3csIGBoY2lfc29ja19zZW5kbXNnYCBoYW5kbGVzIHNlbmRpbmcgbWVzc2FnZXMgZm9yIGBBRl9CTFVFVE9PVEhgIHNvY2tldHMgd2l0aCBgQlRQUk9UT19IQ0lgLiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGVudHJ5IHBvaW50IHRvIGludmVzdGlnYXRlIGZ1cnRoZXIsIGJlaW5nIHRoZSBzdGFuZGFyZCBgc2VuZG1zZ2AgaGFuZGxlciBmb3IgSENJIHNvY2tldHMuIFNvLCBhcmUgYm90aCBpbnRlcmVzdGluZz9cblxuTGV0J3Mgc2VlLiBIYW5nIG9uLi4uIGBoY2lfZGV2X2Nsb3NlX3N5bmNgIGlzIG5vdCBzdGF0aWMsIGl0J3MgZGVmaW5lZCBpbiBgbmV0L2JsdWV0b290aC9oY2lfc3luYy5jYC4gYGhjaV9zb2NrX3NlbmRtc2dgIGlzIHN0YXRpYyBpbiBgbmV0L2JsdWV0b290aC9oY2lfc29jay5jYC4gQWgsIHllcywgY29uZmlybWVkOiBgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilgLlxuXG5TbywgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnQgZnVuY3Rpb25zLiBFdmVuIHRob3VnaCBgaGNpX3NvY2tfc2VuZG1zZ2AgaXMgc3RhdGljLCBpdCdzIGFzc2lnbmVkIHRvIGBwcm90b19vcHMuc2VuZG1zZ2AsIHdoaWNoIG1lYW5zIGl0IHdvbid0IGJlIGlubGluZWQuIEl0IGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0IG1lYW5zIHN5emthbGxlciBjYW4gcmVhY2ggaXQuXG5cblRvIGJlIHNhZmUsIEknbGwga2VlcCBib3RoIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgYGhjaV9kZXZfY2xvc2Vfc3luY2AgaW4gbWluZC4gSnVzdCBpbiBjYXNlIG9uZSBwcm92ZXMgbW9yZSB1c2VmdWwgdGhhbiB0aGUgb3RoZXIuIEknbGwgYWxzbyBjb25zaWRlciBgaGNpX2Rldl9kb19jbG9zZWAuIEkgdGhpbmsgYGhjaV9kZXZfY2xvc2Vfc3luY2AgaXMgcHJlZmVyYWJsZSBzaW5jZSBpdCBpcyBub24tc3RhdGljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjQzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ3OjA3LjU4MDk3NzYyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NjAyNjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhjaV9zb2NrX3NlbmRtc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JsdWV0b290aC9oY2lfc29jay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYz0xNzMyPXN0YXRpYyBpbnQgaGNpX2xvZ2dpbmdfZnJhbWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jLTE3OTctXFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jOjE3OTg6c3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMtMTc5OS1cXHRcXHRcXHQgICAgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYz0yMTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGhjaV9zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYy0yMTgxLVxcdC5nZXRuYW1lXFx0PSBoY2lfc29ja19nZXRuYW1lLFxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYzoyMTgyOlxcdC5zZW5kbXNnXFx0PSBoY2lfc29ja19zZW5kbXNnLFxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYy0yMTgzLVxcdC5yZWN2bXNnXFx0PSBoY2lfc29ja19yZWN2bXNnLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0NzowNy42NTc1ODUzNzNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjYzOTk1NDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJsdWV0b290aCBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBoY2lfc29ja19zZW5kbXNnYCBpc24ndCBpbmxpbmVkIOKAkyB3aGljaCBpcyBleHBlY3RlZCwgZ2l2ZW4gaXQncyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGFyZ2V0LiBHb29kLiBOb3csIHRoZSBtZWF0IG9mIGl0IHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiBvciBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbi4gSXQncyBkb2luZyB0aGlzIGJ5IGJyaW5naW5nIGluIFJDVSBwcm90ZWN0aW9uIHdpdGhpbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIHRoZW4gcHJvcGVybHkgc3luY2hyb25pemluZyBSQ1UgaW4gYGhjaV9kZXZfY2xvc2Vfc3luY2AuIEkgYWxzbyBzZWUgY2hhbmdlcyB3aXRoIHRoZSB3b3JrcXVldWUgc3luY2hyb25pemF0aW9uLCBzd2l0Y2hpbmcgZnJvbSBgZmx1c2hfd29ya2AgdG8gYGRpc2FibGVfd29ya19zeW5jYCBhbmQgaW50cm9kdWNpbmcgYGVuYWJsZV93b3JrYCBmb3IgYHR4X3dvcmtgLlxuXG5Gcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEFueSBtb2RpZmljYXRpb24gdG8gc3luY2hyb25pemF0aW9uIG9yIGRhdGEgYWNjZXNzIGlzIGEgZ29vZCBjYW5kaWRhdGUgdG8gcG9rZSBhdC4gR2l2ZW4gdGhhdCB0aGUgQmx1ZXRvb3RoIHN1YnN5c3RlbSAoYEJUYCBjb25maWcpIGlzIHRoZSByZWxldmFudCBjb250ZXh0IGFuZCB0aGUgdGFyZ2V0ZWQgZnVuY3Rpb25zIGFyZSBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLCBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGEgaGlnaCBwcmlvcml0eSBmb3IgaW52ZXN0aWdhdGlvbi5cblxuSSdsbCBkb3VibGUtY2hlY2sgdG8gY29uZmlybSB0aGF0IHRoZSBgQlRgIGNvbmZpZyBpcyB0aGUgcHJpbWFyeSBnYXRpbmcgZmFjdG9yLCBidXQgc28gZmFyLCB0aGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBjaGFuZ2Ugd29ydGggZm9jdXNpbmcgZnV6emluZyBlZmZvcnRzIG9uLiBUaGUgY2hhbmdlcyBoYXZlIGhpZ2ggcG90ZW50aWFsIG9mIGludHJvZHVjaW5nIHN1YnRsZSBidWdzLCBzbyB0aGlzIG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZCBpbW1lZGlhdGVseSFcblxuXG4iLCJJbnB1dFRva2VucyI6Njg0NywiT3V0cHV0VG9rZW5zIjoxMzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDc6MTMuOTIxNTgzMTc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MTQ3ODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhjaV9zb2NrX3NlbmRtc2dcIixcbiAgICBcImhjaV9kZXZfY2xvc2Vfc3luY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBCbHVldG9vdGggc3Vic3lzdGVtIGJ5IGFkZGluZyBSQ1UgcHJvdGVjdGlvbiBpbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIG1vZGlmeWluZyB3b3JrcXVldWUgc3luY2hyb25pemF0aW9uIChgZGlzYWJsZV93b3JrX3N5bmNgIGFuZCBgc3luY2hyb25pemVfcmN1YCkgaW4gYGhjaV9kZXZfY2xvc2Vfc3luY2AuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duIGFuZCBzb2NrZXQgdHJhbnNtaXNzaW9uLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhjaV9zb2NrX3NlbmRtc2dcIixcbiAgICBcImhjaV9kZXZfY2xvc2Vfc3luY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBCbHVldG9vdGggc3Vic3lzdGVtIGJ5IGFkZGluZyBSQ1UgcHJvdGVjdGlvbiBpbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIG1vZGlmeWluZyB3b3JrcXVldWUgc3luY2hyb25pemF0aW9uIChgZGlzYWJsZV93b3JrX3N5bmNgIGFuZCBgc3luY2hyb25pemVfcmN1YCkgaW4gYGhjaV9kZXZfY2xvc2Vfc3luY2AuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duIGFuZCBzb2NrZXQgdHJhbnNtaXNzaW9uLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDc6MTQuMDc2NzQxODU0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTY3NzU2MjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDc6MTQuMDc5NTc5NzYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg5NjQ5MTM4NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUpIGJldHdlZW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gSXQgaW50cm9kdWNlcyBSQ1UgcmVhZCBsb2NrcyBpbiB0aGUgc2VuZCBwYXRoIGFuZCB1c2VzIGBkaXNhYmxlX3dvcmtfc3luY2Agd2l0aCBgc3luY2hyb25pemVfcmN1YCBpbiB0aGUgY2xvc2UgcGF0aCB0byBlbnN1cmUgc2FmZSB0ZWFyZG93bi4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgb2JqZWN0IGxpZmV0aW1lLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgbW9uaXRvcmVkIGJ5IEtBU0FOIChmb3IgdXNlLWFmdGVyLWZyZWUpIGFuZCBMT0NLREVQIChmb3IgbG9ja2luZyBpc3N1ZXMpLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG9yIG1vZGlmaWNhdGlvbnMgdG8gYnVmZmVyIGhhbmRsaW5nIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjNkZDY0MWViNmI4OTY5YTU3MGY5MWY2OWYwY2ZmNDc3Nzc1OWE5MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDEyOjQ2OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG5pbmRleCAwNzBjYTM4OGY5YWNlLi44MzQ1ZWJiYmQ5ZDUzIDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG4rKysgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbkBAIC0xODUwLDkgKzE4NTAsMTAgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0Z290byBkcm9wO1xuIFx0fVxuIFxuK1x0cmN1X3JlYWRfbG9jaygpO1xuIFx0aWYgKCF0ZXN0X2JpdChIQ0lfVVAsIFx1MDAyNmhkZXYtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdGVyciA9IC1FTkVURE9XTjtcbi1cdFx0Z290byBkcm9wO1xuK1x0XHRnb3RvIGRyb3BfcmN1O1xuIFx0fVxuIFxuIFx0aGNpX3NrYl9wa3RfdHlwZShza2IpID0gc2tiLVx1MDAzZWRhdGFbMF07XG5AQCAtMTg3MCw3ICsxODcxLDcgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0ICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfSVNPREFUQV9QS1QgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0RSVl9QS1QpIHtcbiBcdFx0XHRlcnIgPSAtRUlOVkFMO1xuLVx0XHRcdGdvdG8gZHJvcDtcbitcdFx0XHRnb3RvIGRyb3BfcmN1O1xuIFx0XHR9XG4gXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNmhkZXYtXHUwMDNlcmF3X3EsIHNrYik7XG5AQCAtMTg4NSw3ICsxODg2LDcgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdFx0XHRcdCAgIFx1MDAyNmhjaV9zZWNfZmlsdGVyLm9jZl9tYXNrW29nZl0pKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICFjYXBhYmxlKENBUF9ORVRfUkFXKSkge1xuIFx0XHRcdGVyciA9IC1FUEVSTTtcbi1cdFx0XHRnb3RvIGRyb3A7XG4rXHRcdFx0Z290byBkcm9wX3JjdTtcbiBcdFx0fVxuIFxuIFx0XHQvKiBTaW5jZSB0aGUgb3Bjb2RlIGhhcyBhbHJlYWR5IGJlZW4gZXh0cmFjdGVkIGhlcmUsIHN0b3JlXG5AQCAtMTkwOCwxNCArMTkwOSwxNCBAQCBzdGF0aWMgaW50IGhjaV9zb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0fSBlbHNlIHtcbiBcdFx0aWYgKCFjYXBhYmxlKENBUF9ORVRfUkFXKSkge1xuIFx0XHRcdGVyciA9IC1FUEVSTTtcbi1cdFx0XHRnb3RvIGRyb3A7XG4rXHRcdFx0Z290byBkcm9wX3JjdTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAoaGNpX3NrYl9wa3RfdHlwZShza2IpICE9IEhDSV9BQ0xEQVRBX1BLVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhjaV9za2JfcGt0X3R5cGUoc2tiKSAhPSBIQ0lfU0NPREFUQV9QS1QgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBoY2lfc2tiX3BrdF90eXBlKHNrYikgIT0gSENJX0lTT0RBVEFfUEtUKSB7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRyb3A7XG4rXHRcdFx0Z290byBkcm9wX3JjdTtcbiBcdFx0fVxuIFxuIFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZoZGV2LVx1MDAzZXJhd19xLCBza2IpO1xuQEAgLTE5MjMsMTQgKzE5MjQsMTYgQEAgc3RhdGljIGludCBoY2lfc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbiBcdH1cbiBcbiBcdGVyciA9IGxlbjtcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0Z290byBkb25lO1xuIFxuK2Ryb3BfcmN1OlxuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4rZHJvcDpcbitcdGtmcmVlX3NrYihza2IpO1xuIGRvbmU6XG4gXHRyZWxlYXNlX3NvY2soc2spO1xuIFx0cmV0dXJuIGVycjtcbi1cbi1kcm9wOlxuLVx0a2ZyZWVfc2tiKHNrYik7XG4tXHRnb3RvIGRvbmU7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaGNpX3NvY2tfc2V0c29ja29wdF9vbGQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcbmluZGV4IGM4ZDE0MTI4YzM2M2QuLmJhZDgzMzEzYmI1ZjkgMTAwNjQ0XG4tLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcbisrKyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuQEAgLTU0NzIsOSArNTQ3MiwxMSBAQCBpbnQgaGNpX2Rldl9jbG9zZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0aGNpX2xlZHNfdXBkYXRlX3Bvd2VyZWQoaGRldiwgZmFsc2UpO1xuIFxuIFx0LyogRmx1c2ggUlggYW5kIFRYIHdvcmtzICovXG4tXHRmbHVzaF93b3JrKFx1MDAyNmhkZXYtXHUwMDNldHhfd29yayk7XG4rXHRkaXNhYmxlX3dvcmtfc3luYyhcdTAwMjZoZGV2LVx1MDAzZXR4X3dvcmspO1xuIFx0Zmx1c2hfd29yayhcdTAwMjZoZGV2LVx1MDAzZXJ4X3dvcmspO1xuIFxuK1x0c3luY2hyb25pemVfcmN1KCk7XG4rXG4gXHRpZiAoaGRldi1cdTAwM2VkaXNjb3ZfdGltZW91dCBcdTAwM2UgMCkge1xuIFx0XHRoZGV2LVx1MDAzZWRpc2Nvdl90aW1lb3V0ID0gMDtcbiBcdFx0aGNpX2Rldl9jbGVhcl9mbGFnKGhkZXYsIEhDSV9ESVNDT1ZFUkFCTEUpO1xuQEAgLTU1NzYsNiArNTU3OCw4IEBAIGludCBoY2lfZGV2X2Nsb3NlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4gXHRiYWNweShcdTAwMjZoZGV2LVx1MDAzZXJhbmRvbV9hZGRyLCBCREFERFJfQU5ZKTtcbiBcdGhjaV9jb2RlY19saXN0X2NsZWFyKFx1MDAyNmhkZXYtXHUwMDNlbG9jYWxfY29kZWNzKTtcbiBcbitcdGVuYWJsZV93b3JrKFx1MDAyNmhkZXYtXHUwMDNldHhfd29yayk7XG4rXG4gXHRoY2lfZGV2X3B1dChoZGV2KTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDc6MTQuMDc5NTgxODgzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NjQ4NTk3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCbHVldG9vdGggSENJIFNvY2tldCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYCwgc3BlY2lmaWNhbGx5IGluIHRoZSBCbHVldG9vdGggbmV0d29ya2luZyBjb2RlLiBJJ20gc2VlaW5nIGFkZGl0aW9ucyBpbiBgaGNpX3NvY2tfc2VuZG1zZ2Agb2YgYHJjdV9yZWFkX2xvY2soKWAgYW5kIGByY3VfcmVhZF91bmxvY2soKWAgYXJvdW5kIHRoZSBkZXZpY2UncyBvcGVyYXRpb25hbCBjaGVjay4gQW5kIGluIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLCB0aGUgYGZsdXNoX3dvcmtgIGNhbGwgb24gYHR4X3dvcmtgIGlzIGJlaW5nIHJlcGxhY2VkIHdpdGggYSBgZGlzYWJsZV93b3JrX3N5bmNgLCBhIGBzeW5jaHJvbml6ZV9yY3UoKWAgaXMgYWRkZWQsIGFuZCB0aGVuIGFuIGBlbmFibGVfd29ya2AuXG5cbkluaXRpYWxseSwgbXkgdGhvdWdodCBwcm9jZXNzIHdlbnQgc3RyYWlnaHQgdG8gYSB1c2UtYWZ0ZXItZnJlZSBvciBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gSXQgc2VlbXMgbGlrZSBgaGNpX3NvY2tfc2VuZG1zZ2AgbWlnaHQgaGF2ZSBiZWVuIHF1ZXVpbmcgc29tZXRoaW5nIHRvIGEgZGV2aWNlIHRoYXQgd2FzIGluIHRoZSBwcm9jZXNzIG9mIHNodXR0aW5nIGRvd24gdGhyb3VnaCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gVGhlIGFkZGl0aW9uIG9mIGBzeW5jaHJvbml6ZV9yY3UoKWAgcmVhbGx5IHNvbGlkaWZpZXMgdGhlIHJhY2UgY29uZGl0aW9uIHN1c3BpY2lvbiwgYXMgaXQncyBtZWFudCB0byB3YWl0IGZvciBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zIHRvIGNvbXBsZXRlLlxuXG5TbywgdGhpcyBpcyBsaWtlbHkgYWJvdXQgZGV2aWNlIHNodXRkb3duIHN5bmNocm9uaXphdGlvbiwgbm90IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBXYWl0LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSwgdGhpcyBpcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZS4gVGhlIHBhdGNoIGlzbid0IGFib3V0IEtNU0FOIGFuZCBpdOKAmXMgcHVycG9zZSBpcyB0byBwcmV2ZW50IGEgdXNlLWFmdGVyLWZyZWUgb3IgZGF0YSBjb3JydXB0aW9uIGR1cmluZyBkZXZpY2Ugc2h1dGRvd24uIFRoaXMgaXNuJ3QgcmVsYXRlZCB0byBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBhbnkga2luZCBvZiBpbmZvcm1hdGlvbiBsZWFrLiBJdCdzIGZvY3VzZWQgb24gUkNVIGxvY2tpbmcgYW5kIHdvcmtxdWV1ZSBtYW5hZ2VtZW50LlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0uIExvb2tpbmcgYXQgdGhlIGNvZGUgc25pcHBldHMgYWdhaW46IHRoZSBsb2NrIGluIGBoY2lfc29ja19zZW5kbXNnYCBhbmQgdGhlIGBkaXNhYmxlX3dvcmtfc3luY2AgYW5kIGBzeW5jaHJvbml6ZV9yY3VgIGluIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBZdXAsIHRoaXMgaXMgYWxsIGFib3V0IHN5bmNocm9uaXphdGlvbiwgZGVmaW5pdGVseSBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMywiT3V0cHV0VG9rZW5zIjoxNjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0NzoyMy4wNDQ0NDQ2NDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHN5bmNocm9uaXphdGlvbiBpc3N1ZSAobGlrZWx5IGEgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUpIGJldHdlZW4gYGhjaV9zb2NrX3NlbmRtc2dgIGFuZCBgaGNpX2Rldl9jbG9zZV9zeW5jYC4gSXQgaW50cm9kdWNlcyBSQ1UgcmVhZCBsb2NrcyBpbiB0aGUgc2VuZCBwYXRoIGFuZCB1c2VzIGBkaXNhYmxlX3dvcmtfc3luY2Agd2l0aCBgc3luY2hyb25pemVfcmN1YCBpbiB0aGUgY2xvc2UgcGF0aCB0byBlbnN1cmUgc2FmZSB0ZWFyZG93bi4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgb2JqZWN0IGxpZmV0aW1lLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgbW9uaXRvcmVkIGJ5IEtBU0FOIChmb3IgdXNlLWFmdGVyLWZyZWUpIGFuZCBMT0NLREVQIChmb3IgbG9ja2luZyBpc3N1ZXMpLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2Vyc3BhY2UsIG9yIG1vZGlmaWNhdGlvbnMgdG8gYnVmZmVyIGhhbmRsaW5nIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgc3luY2hyb25pemF0aW9uIGlzc3VlIChsaWtlbHkgYSByYWNlIGNvbmRpdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSkgYmV0d2VlbiBgaGNpX3NvY2tfc2VuZG1zZ2AgYW5kIGBoY2lfZGV2X2Nsb3NlX3N5bmNgLiBJdCBpbnRyb2R1Y2VzIFJDVSByZWFkIGxvY2tzIGluIHRoZSBzZW5kIHBhdGggYW5kIHVzZXMgYGRpc2FibGVfd29ya19zeW5jYCB3aXRoIGBzeW5jaHJvbml6ZV9yY3VgIGluIHRoZSBjbG9zZSBwYXRoIHRvIGVuc3VyZSBzYWZlIHRlYXJkb3duLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIGNvbmN1cnJlbmN5IGFuZCBvYmplY3QgbGlmZXRpbWUsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBtb25pdG9yZWQgYnkgS0FTQU4gKGZvciB1c2UtYWZ0ZXItZnJlZSkgYW5kIExPQ0tERVAgKGZvciBsb2NraW5nIGlzc3VlcykuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZSwgb3IgbW9kaWZpY2F0aW9ucyB0byBidWZmZXIgaGFuZGxpbmcgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbsck[1] Phase: Succeeded StartedAt: 2026-08-13 12:47:34 +0000 UTC FinishedAt: 2026-08-13 12:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-13 12:47:34 +0000 UTC FinishedAt: 2026-08-13 12:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2] Phase: Succeeded StartedAt: 2026-08-13 12:47:34 +0000 UTC FinishedAt: 2026-08-13 16:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-13 12:47:34 +0000 UTC FinishedAt: 2026-08-13 16:30:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-13 12:47:34 +0000 UTC FinishedAt: 2026-08-13 12:47:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-13 12:47:34 +0000 UTC FinishedAt: 2026-08-13 12:47:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowxbsck/series-workflowxbsck-convert-artifact-4250545656/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-13 12:47:44 +0000 UTC FinishedAt: 2026-08-13 13:07:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-13 12:47:44 +0000 UTC FinishedAt: 2026-08-13 13:07:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ebe0fe84-d74d-42b7-a3d5-f79aed3e33c3,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-workflowxbsck/series-workflowxbsck-convert-artifact-4250545656/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": "db82dc83-369b-421e-a9fc-e2e0adcd7970", "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-workflowxbsck/series-workflowxbsck-build-action-3587175086/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-13 12:47:44 +0000 UTC FinishedAt: 2026-08-13 13:07:34 +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:*ebe0fe84-d74d-42b7-a3d5-f79aed3e33c3,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-workflowxbsck/series-workflowxbsck-convert-artifact-4250545656/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": "db82dc83-369b-421e-a9fc-e2e0adcd7970", "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-workflowxbsck/series-workflowxbsck-build-action-3587175086/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-13 13:07:44 +0000 UTC FinishedAt: 2026-08-13 13:07:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-13 13:07:44 +0000 UTC FinishedAt: 2026-08-13 13:07:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-13 13:07:44 +0000 UTC FinishedAt: 2026-08-13 13:07:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-13 13:07:44 +0000 UTC FinishedAt: 2026-08-13 13:07:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowxbsck/series-workflowxbsck-convert-artifact-1270603871/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-13 13:07:54 +0000 UTC FinishedAt: 2026-08-13 13:09:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-13 13:07:54 +0000 UTC FinishedAt: 2026-08-13 13:09:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*db82dc83-369b-421e-a9fc-e2e0adcd7970,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-workflowxbsck/series-workflowxbsck-build-action-3587175086/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-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-13 13:09:47 +0000 UTC FinishedAt: 2026-08-13 13:09:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-13 13:09:47 +0000 UTC FinishedAt: 2026-08-13 13:09:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-13 13:09:47 +0000 UTC FinishedAt: 2026-08-13 13:26:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-13 13:09:47 +0000 UTC FinishedAt: 2026-08-13 13:26:43 +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:*ebe0fe84-d74d-42b7-a3d5-f79aed3e33c3,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-workflowxbsck/series-workflowxbsck-convert-artifact-1270603871/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": "e018eded-27e3-42c6-988a-10f1ca58855c", "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-workflowxbsck/series-workflowxbsck-build-action-2609671667/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-13 13:09:47 +0000 UTC FinishedAt: 2026-08-13 13:26:33 +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:*ebe0fe84-d74d-42b7-a3d5-f79aed3e33c3,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-workflowxbsck/series-workflowxbsck-convert-artifact-1270603871/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": "e018eded-27e3-42c6-988a-10f1ca58855c", "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-workflowxbsck/series-workflowxbsck-build-action-2609671667/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-13 13:26:43 +0000 UTC FinishedAt: 2026-08-13 13:26:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-13 13:26:43 +0000 UTC FinishedAt: 2026-08-13 13:26:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-13 13:26:43 +0000 UTC FinishedAt: 2026-08-13 13:28:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-13 13:26:43 +0000 UTC FinishedAt: 2026-08-13 13:28:34 +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:*e018eded-27e3-42c6-988a-10f1ca58855c,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-workflowxbsck/series-workflowxbsck-build-action-2609671667/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-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-13 13:28:44 +0000 UTC FinishedAt: 2026-08-13 16:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-13 13:28:44 +0000 UTC FinishedAt: 2026-08-13 16:30:07 +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":["hci_sock_sendmsg","hci_dev_close_sync"],"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:*db82dc83-369b-421e-a9fc-e2e0adcd7970,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e018eded-27e3-42c6-988a-10f1ca58855c,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-workflowxbsck/series-workflowxbsck-build-action-3587175086/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-workflowxbsck/series-workflowxbsck-build-action-2609671667/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-13 13:28:44 +0000 UTC FinishedAt: 2026-08-13 13:28:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-13 13:28:44 +0000 UTC FinishedAt: 2026-08-13 13:28:49 +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":["hci_sock_sendmsg","hci_dev_close_sync"],"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-workflowxbsck/series-workflowxbsck-convert-artifact-425419896/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-13 13:28:44 +0000 UTC FinishedAt: 2026-08-13 13:28:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-13 13:28:44 +0000 UTC FinishedAt: 2026-08-13 13:28:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-13 13:28:44 +0000 UTC FinishedAt: 2026-08-13 13:28:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-13 13:28:54 +0000 UTC FinishedAt: 2026-08-13 16:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbsck[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hci_sock_sendmsg","hci_dev_close_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BT"],"series_id":"436271ba-2cc1-4a81-a697-3083fe687e36","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-13 13:28:54 +0000 UTC FinishedAt: 2026-08-13 16:29:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*db82dc83-369b-421e-a9fc-e2e0adcd7970,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e018eded-27e3-42c6-988a-10f1ca58855c,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-workflowxbsck/series-workflowxbsck-build-action-3587175086/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-workflowxbsck/series-workflowxbsck-build-action-2609671667/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-workflowxbsck/series-workflowxbsck-convert-artifact-425419896/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,}