Name: series-workflowfkgcg Phase: Succeeded StartedAt: 2026-07-02 08:40:56 +0000 UTC FinishedAt: 2026-07-02 10:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[0] Phase: Succeeded StartedAt: 2026-07-02 08:40:56 +0000 UTC FinishedAt: 2026-07-02 08:51:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 08:40:56 +0000 UTC FinishedAt: 2026-07-02 08:51:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AFS_FS" ], "series_id": "eb2df45b-1dc6-4afc-91a6-8ccf8afe0537" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "afs_d_revalidate", "afs_d_revalidate_rcu", "afs_unlink", "afs_rename", "afs_lookup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA4OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Fmc19kX3JldmFsaWRhdGUmIzM0OywKICAgICYjMzQ7YWZzX2RfcmV2YWxpZGF0ZV9yY3UmIzM0OywKICAgICYjMzQ7YWZzX3VubGluayYjMzQ7LAogICAgJiMzNDthZnNfcmVuYW1lJiMzNDssCiAgICAmIzM0O2Fmc19sb29rdXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zIHRvIHVzZSBgZF90aW1lYCBpbnN0ZWFkIG9mIGBkX2ZzZGF0YWAgZm9yIHN0b3JpbmcgdGhlIGRhdGEgdmVyc2lvbiwgYW5kIHVzZXMgYGRfZnNkYXRhYCB0byBibG9jayBsb29rdXBzIGFuZCByZXZhbGlkYXRpb25zIGR1cmluZyByZW5hbWUgYW5kIHVubGluayBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQUZTIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBoYW5kbGVzIGNvbmN1cnJlbmN5IGFuZCBWRlMgaW50ZXJhY3Rpb25zLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDg6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiZWNmNTQ5MjMwZjdjMDRlODZiOGRmOWYyYTZkYTNiMmFhMzRhMTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwODo1MDo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9hZnMvYWZzLmggYi9mcy9hZnMvYWZzLmhcbmluZGV4IGVjM2RiMDBiZDA4MTNjLi4wMTllNzdiMDg0NThlMyAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9hZnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvYWZzL2Fmcy5oXG5AQCAtMjYsNiAmIzQzOzI2LDEzIEBAIHR5cGVkZWYgdTY0XHRcdFx0YWZzX3ZvbGlkX3Q7XG4gdHlwZWRlZiB1NjRcdFx0XHRhZnNfdm5vZGVpZF90O1xuIHR5cGVkZWYgdTY0XHRcdFx0YWZzX2RhdGF2ZXJzaW9uX3Q7XG4gXG4mIzQzOy8qIFRoaXMgaXMgc3RvcmVkIGluIC1cdTAwM2VkX2ZzZGF0YSB0byBzdG9wIGRfcmV2YWxpZGF0ZSBsb29raW5nIGF0LFxuJiM0MzsgKiBhbmQgcG9zc2libHkgY2hhbmdpbmcsIC1cdTAwM2VkX3RpbWUgb24gYSBkZW50cnkgd2hpY2ggaXMgYmVpbmcgbW92ZWRcbiYjNDM7ICogYmV0d2VlbiBkaXJlY3RvcmllcywgYW5kIHRvIGJsb2NrIGxvb2t1cCBmb3IgZGVudHJ5IHRoYXQgaXNcbiYjNDM7ICogYmVpbmcgcmVtb3ZlZCB3aXRob3V0IHNpbGx5LXJlbmFtZS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgQUZTX0ZTREFUQV9CTE9DS0VEICgodm9pZCopMSlcbiYjNDM7XG4gdHlwZWRlZiBlbnVtIHtcbiBcdEFGU1ZMX1JXVk9MLFx0XHRcdC8qIHJlYWQvd3JpdGUgdm9sdW1lICovXG4gXHRBRlNWTF9ST1ZPTCxcdFx0XHQvKiByZWFkLW9ubHkgdm9sdW1lICovXG5kaWZmIC0tZ2l0IGEvZnMvYWZzL2Rpci5jIGIvZnMvYWZzL2Rpci5jXG5pbmRleCA0OThiOTljY2RmMGUyNy4uZTlhYWY2NjIxOGVhNmIgMTAwNjQ0XG4tLS0gYS9mcy9hZnMvZGlyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Fmcy9kaXIuY1xuQEAgLTc5NSw3ICYjNDM7Nzk1LDcgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqYWZzX2RvX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0XHRhZnNfZGlyX2l0ZXJhdGUoZGlyLCBcdTAwMjZjb29raWUtXHUwMDNlY3R4LCBOVUxMLCBcdTAwMjZkYXRhX3ZlcnNpb24pO1xuIFx0fVxuIFxuLVx0ZGVudHJ5LVx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylkYXRhX3ZlcnNpb247XG4mIzQzO1x0ZGVudHJ5LVx1MDAzZWRfdGltZSA9ICh1bnNpZ25lZCBsb25nKWRhdGFfdmVyc2lvbjtcbiBcbiBcdC8qIENoZWNrIHRvIHNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYW4gaW5vZGUgZm9yIHRoZSBwcmltYXJ5IGZpZC4gKi9cbiBcdGlub2RlID0gaWxvb2t1cDUoZGlyLVx1MDAzZWlfc2IsIGNvb2tpZS1cdTAwM2VmaWRzWzFdLnZub2RlLFxuQEAgLTg4Miw5ICYjNDM7ODgyLDkgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqYWZzX2RvX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0fVxuIFxuIFx0aWYgKG9wLVx1MDAzZWZpbGVbMF0uc2NiLmhhdmVfc3RhdHVzKVxuLVx0XHRkZW50cnktXHUwMDNlZF9mc2RhdGEgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKW9wLVx1MDAzZWZpbGVbMF0uc2NiLnN0YXR1cy5kYXRhX3ZlcnNpb247XG4mIzQzO1x0XHRkZW50cnktXHUwMDNlZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpb3AtXHUwMDNlZmlsZVswXS5zY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcbiBcdGVsc2Vcbi1cdFx0ZGVudHJ5LVx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylvcC1cdTAwM2VmaWxlWzBdLmR2X2JlZm9yZTtcbiYjNDM7XHRcdGRlbnRyeS1cdTAwM2VkX3RpbWUgPSAodW5zaWduZWQgbG9uZylvcC1cdTAwM2VmaWxlWzBdLmR2X2JlZm9yZTtcbiBcdHJldCA9IGFmc19wdXRfb3BlcmF0aW9uKG9wKTtcbiBvdXQ6XG4gXHRrZnJlZShjb29raWUpO1xuQEAgLTk5Nyw3ICYjNDM7OTk3LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmFmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbiBcdF9kZWJ1ZyhcJiMzNDtzcGxpY2UgJXBcJiMzNDssIGRlbnRyeS1cdTAwM2VkX2lub2RlKTtcbiBcdGQgPSBkX3NwbGljZV9hbGlhcyhpbm9kZSwgZGVudHJ5KTtcbiBcdGlmICghSVNfRVJSX09SX05VTEwoZCkpIHtcbi1cdFx0ZC1cdTAwM2VkX2ZzZGF0YSA9IGRlbnRyeS1cdTAwM2VkX2ZzZGF0YTtcbiYjNDM7XHRcdGQtXHUwMDNlZF90aW1lID0gZGVudHJ5LVx1MDAzZWRfdGltZTtcbiBcdFx0dHJhY2VfYWZzX2xvb2t1cChkdm5vZGUsIFx1MDAyNmQtXHUwMDNlZF9uYW1lLCBcdTAwMjZmaWQpO1xuIFx0fSBlbHNlIHtcbiBcdFx0dHJhY2VfYWZzX2xvb2t1cChkdm5vZGUsIFx1MDAyNmRlbnRyeS1cdTAwM2VkX25hbWUsIFx1MDAyNmZpZCk7XG5AQCAtMTAyMSwxMyAmIzQzOzEwMjEsMTcgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlX3JjdShzdHJ1Y3QgYWZzX3Zub2RlICpkdm5vZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdGlmICghYWZzX2NoZWNrX3ZhbGlkaXR5KGR2bm9kZSkpXG4gXHRcdHJldHVybiAtRUNISUxEO1xuIFxuJiM0MztcdC8qIEEgcmVuYW1lL3VubGluayBpcyBwZW5kaW5nICovXG4mIzQzO1x0aWYgKGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSlcbiYjNDM7XHRcdHJldHVybiAtRUNISUxEO1xuJiM0MztcbiBcdC8qIFdlIG9ubHkgbmVlZCB0byBpbnZhbGlkYXRlIGEgZGVudHJ5IGlmIHRoZSBzZXJ2ZXImIzM5O3MgY29weSBjaGFuZ2VkXG4gXHQgKiBiZWhpbmQgb3VyIGJhY2suICBJZiB3ZSBtYWRlIHRoZSBjaGFuZ2UsIGl0JiMzOTtzIG5vIHByb2JsZW0uICBOb3RlIHRoYXRcbiBcdCAqIG9uIGEgMzItYml0IHN5c3RlbSwgd2Ugb25seSBoYXZlIDMyIGJpdHMgaW4gdGhlIGRlbnRyeSB0byBzdG9yZSB0aGVcbiBcdCAqIHZlcnNpb24uXG4gXHQgKi9cbiBcdGRpcl92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGR2bm9kZS1cdTAwM2VzdGF0dXMuZGF0YV92ZXJzaW9uKTtcbi1cdGRlX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZGVudHJ5LVx1MDAzZWRfZnNkYXRhKTtcbiYjNDM7XHRkZV92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGRlbnRyeS1cdTAwM2VkX3RpbWUpO1xuIFx0aWYgKGRlX3ZlcnNpb24gIT0gZGlyX3ZlcnNpb24pIHtcbiBcdFx0ZGlyX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZHZub2RlLVx1MDAzZWludmFsaWRfYmVmb3JlKTtcbiBcdFx0aWYgKGRlX3ZlcnNpb24gLSBkaXJfdmVyc2lvbiBcdTAwM2MgMClcbkBAIC0xMDU2LDYgJiM0MzsxMDYwLDEwIEBAIHN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9kaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lLFxuIFx0aWYgKGZsYWdzIFx1MDAyNiBMT09LVVBfUkNVKVxuIFx0XHRyZXR1cm4gYWZzX2RfcmV2YWxpZGF0ZV9yY3UoZGlyLCBkZW50cnkpO1xuIFxuJiM0MztcdC8qIFdhaXQgZm9yIHJlbmFtZS91bmxpbmsgdG8gY29tcGxldGUgKi9cbiYjNDM7d2FpdF9mb3JfcmVuYW1lOlxuJiM0MztcdHdhaXRfdmFyX2V2ZW50KFx1MDAyNmRlbnRyeS1cdTAwM2VkX2ZzZGF0YSwgZGVudHJ5LVx1MDAzZWRfZnNkYXRhID09IE5VTEwpO1xuJiM0MztcbiBcdGlmIChkX3JlYWxseV9pc19wb3NpdGl2ZShkZW50cnkpKSB7XG4gXHRcdHZub2RlID0gQUZTX0ZTX0koZF9pbm9kZShkZW50cnkpKTtcbiBcdFx0X2VudGVyKFwmIzM0O3t2PXslbGx4OiVsbHV9IG49JXBkIGZsPSVseH0sXCYjMzQ7LFxuQEAgLTEwODcsNyAmIzQzOzEwOTUsNyBAQCBzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcbiBcdCAqIHZlcnNpb24uXG4gXHQgKi9cbiBcdGRpcl92ZXJzaW9uID0gZGlyLVx1MDAzZXN0YXR1cy5kYXRhX3ZlcnNpb247XG4tXHRkZV92ZXJzaW9uID0gKGxvbmcpZGVudHJ5LVx1MDAzZWRfZnNkYXRhO1xuJiM0MztcdGRlX3ZlcnNpb24gPSAobG9uZylkZW50cnktXHUwMDNlZF90aW1lO1xuIFx0aWYgKGRlX3ZlcnNpb24gPT0gKGxvbmcpZGlyX3ZlcnNpb24pXG4gXHRcdGdvdG8gb3V0X3ZhbGlkX25vdXBkYXRlO1xuIFxuQEAgLTExNDgsNyAmIzQzOzExNTYsMTMgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsXG4gXHR9XG4gXG4gb3V0X3ZhbGlkOlxuLVx0ZGVudHJ5LVx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylkaXJfdmVyc2lvbjtcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4mIzQzO1x0aWYgKGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4mIzQzO1x0XHRnb3RvIHdhaXRfZm9yX3JlbmFtZTtcbiYjNDM7XHR9XG4mIzQzO1x0ZGVudHJ5LVx1MDAzZWRfdGltZSA9ICh1bnNpZ25lZCBsb25nKWRpcl92ZXJzaW9uO1xuJiM0MztcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIG91dF92YWxpZF9ub3VwZGF0ZTpcbiBcdGtleV9wdXQoa2V5KTtcbiBcdF9sZWF2ZShcJiMzNDsgPSAxIFt2YWxpZF1cJiMzNDspO1xuQEAgLTE1MjMsOCAmIzQzOzE1MzcsNyBAQCBzdGF0aWMgdm9pZCBhZnNfdW5saW5rX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcbiBzdGF0aWMgdm9pZCBhZnNfdW5saW5rX3B1dChzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXG4ge1xuIFx0X2VudGVyKFwmIzM0O29wPSUwOHhcJiMzNDssIG9wLVx1MDAzZWRlYnVnX2lkKTtcbi1cdGlmIChvcC1cdTAwM2V1bmxpbmsubmVlZF9yZWhhc2ggXHUwMDI2XHUwMDI2IGFmc19vcF9lcnJvcihvcCkgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGFmc19vcF9lcnJvcihvcCkgIT0gLUVOT0VOVClcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlZGVudHJ5KTtcbiYjNDM7XHRzdG9yZV9yZWxlYXNlX3dha2VfdXAoXHUwMDI2b3AtXHUwMDNlZGVudHJ5LVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfdW5saW5rX29wZXJhdGlvbiA9IHtcbkBAIC0xNTc4LDExICYjNDM7MTU5MSw3IEBAIHN0YXRpYyBpbnQgYWZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0XHRhZnNfb3Bfc2V0X2Vycm9yKG9wLCBhZnNfc2lsbHlyZW5hbWUoZHZub2RlLCB2bm9kZSwgZGVudHJ5LCBvcC1cdTAwM2VrZXkpKTtcbiBcdFx0Z290byBlcnJvcjtcbiBcdH1cbi1cdGlmICghZF91bmhhc2hlZChkZW50cnkpKSB7XG4tXHRcdC8qIFByZXZlbnQgYSByYWNlIHdpdGggUkNVIGxvb2t1cC4gKi9cbi1cdFx0X19kX2Ryb3AoZGVudHJ5KTtcbi1cdFx0b3AtXHUwMDNldW5saW5rLm5lZWRfcmVoYXNoID0gdHJ1ZTtcbi1cdH1cbiYjNDM7XHRkZW50cnktXHUwMDNlZF9mc2RhdGEgPSBBRlNfRlNEQVRBX0JMT0NLRUQ7XG4gXHRzcGluX3VubG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcbiBcdG9wLVx1MDAzZWZpbGVbMV0udm5vZGUgPSB2bm9kZTtcbkBAIC0xODg5LDkgJiM0MzsxODk4LDEwIEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxuIFxuIFx0X2VudGVyKFwmIzM0O29wPSUwOHhcJiMzNDssIG9wLVx1MDAzZWRlYnVnX2lkKTtcbiBcbi1cdGlmIChvcC1cdTAwM2VyZW5hbWUucmVoYXNoKSB7XG4tXHRcdGRfcmVoYXNoKG9wLVx1MDAzZXJlbmFtZS5yZWhhc2gpO1xuLVx0XHRvcC1cdTAwM2VyZW5hbWUucmVoYXNoID0gTlVMTDtcbiYjNDM7XHRpZiAob3AtXHUwMDNlcmVuYW1lLnVuYmxvY2spIHtcbiYjNDM7XHRcdC8qIFJlbmFtZSBoYXMgZmluaXNoZWQsIHNvIHVubG9ja3MgbG9va3VwcyB0byB0YXJnZXQgKi9cbiYjNDM7XHRcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcdTAwMjZvcC1cdTAwM2VyZW5hbWUudW5ibG9jay1cdTAwM2VkX2ZzZGF0YSwgTlVMTCk7XG4mIzQzO1x0XHRvcC1cdTAwM2VyZW5hbWUudW5ibG9jayA9IE5VTEw7XG4gXHR9XG4gXG4gXHRmc2NhY2hlX2JlZ2luX3dyaXRlX29wZXJhdGlvbihcdTAwMjZvcmlnX2NyZXMsIGFmc192bm9kZV9jYWNoZShvcmlnX2R2bm9kZSkpO1xuQEAgLTE5MzUsNyAmIzQzOzE5NDUsNyBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2bmV3X2lub2RlLVx1MDAzZWlfbG9jayk7XG4gXHR9XG4gXG4tXHQvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJpZXMgdG8gcmVmbGVjdCB0aGVpclxuJiM0MztcdC8qIE5vdyB3ZSBjYW4gdXBkYXRlIGRfdGltZSBvbiB0aGUgZGVudHJpZXMgdG8gcmVmbGVjdCB0aGVpclxuIFx0ICogbmV3IHBhcmVudCYjMzk7cyBkYXRhX3ZlcnNpb24uXG4gXHQgKi9cbiBcdGFmc191cGRhdGVfZGVudHJ5X3ZlcnNpb24ob3AsIG5ld19kdnAsIG9wLVx1MDAzZWRlbnRyeSk7XG5AQCAtMTk3NCw2ICYjNDM7MTk4NCw5IEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZXhjaGFuZ2VfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxuIFxuIFx0XHRkX2V4Y2hhbmdlKG9sZF9kZW50cnksIG5ld19kZW50cnkpO1xuIFx0XHR1cF93cml0ZShcdTAwMjZvcmlnX2R2bm9kZS1cdTAwM2V2YWxpZGF0ZV9sb2NrKTtcbiYjNDM7XHQvKiBkZW50cnkgaGFzIGJlZW4gbW92ZWQsIHNvIGRfdmFsaWRhdGUgY2FuIHNhZmVseSBwcm9jZWVkICovXG4mIzQzO1x0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFx1MDAyNm9sZF9kZW50cnktXHUwMDNlZF9mc2RhdGEsIE5VTEwpO1xuJiM0MztcbiBcdH0gZWxzZSB7XG4gXHRcdGRvd25fd3JpdGUoXHUwMDI2b3JpZ19kdm5vZGUtXHUwMDNldmFsaWRhdGVfbG9jayk7XG4gXHRcdGlmICh0ZXN0X2JpdChBRlNfVk5PREVfRElSX1ZBTElELCBcdTAwMjZvcmlnX2R2bm9kZS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG5AQCAtMjAxMywxMSAmIzQzOzIwMjYsMTAgQEAgc3RhdGljIHZvaWQgYWZzX3JlbmFtZV9leGNoYW5nZV9lZGl0X2RpcihzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXG4gc3RhdGljIHZvaWQgYWZzX3JlbmFtZV9wdXQoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxuIHtcbiBcdF9lbnRlcihcJiMzNDtvcD0lMDh4XCYjMzQ7LCBvcC1cdTAwM2VkZWJ1Z19pZCk7XG4tXHRpZiAob3AtXHUwMDNlcmVuYW1lLnJlaGFzaClcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlcmVuYW1lLnJlaGFzaCk7XG4mIzQzO1x0aWYgKG9wLVx1MDAzZXJlbmFtZS51bmJsb2NrKVxuJiM0MztcdFx0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFx1MDAyNm9wLVx1MDAzZXJlbmFtZS51bmJsb2NrLVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbiYjNDM7XHRzdG9yZV9yZWxlYXNlX3dha2VfdXAoXHUwMDI2b3AtXHUwMDNlZGVudHJ5LVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbiBcdGRwdXQob3AtXHUwMDNlcmVuYW1lLnRtcCk7XG4tXHRpZiAoYWZzX29wX2Vycm9yKG9wKSlcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlZGVudHJ5KTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfcmVuYW1lX29wZXJhdGlvbiA9IHtcbkBAIC0yMTI1LDcgJiM0MzsyMTM3LDYgQEAgc3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXG4gXHRcdG9wLVx1MDAzZW9wc1x0XHQ9IFx1MDAyNmFmc19yZW5hbWVfbm9yZXBsYWNlX29wZXJhdGlvbjtcbiBcdH0gZWxzZSBpZiAoZmxhZ3MgXHUwMDI2IFJFTkFNRV9FWENIQU5HRSkge1xuIFx0XHRvcC1cdTAwM2VvcHNcdFx0PSBcdTAwMjZhZnNfcmVuYW1lX2V4Y2hhbmdlX29wZXJhdGlvbjtcbi1cdFx0ZF9kcm9wKG5ld19kZW50cnkpO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogSWYgd2UgbWlnaHQgZGlzcGxhY2UgdGhlIHRhcmdldCwgd2UgbWlnaHQgbmVlZCB0byBkbyBzaWxseVxuIFx0XHQgKiByZW5hbWUuXG5AQCAtMjEzOSwxNCAmIzQzOzIxNTAsMTIgQEAgc3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXG4gXHRcdCAqL1xuIFx0XHRpZiAoZF9pc19wb3NpdGl2ZShuZXdfZGVudHJ5KSBcdTAwMjZcdTAwMjYgIWRfaXNfZGlyKG5ld19kZW50cnkpKSB7XG4gXHRcdFx0LyogVG8gcHJldmVudCBhbnkgbmV3IHJlZmVyZW5jZXMgdG8gdGhlIHRhcmdldCBkdXJpbmdcbi1cdFx0XHQgKiB0aGUgcmVuYW1lLCB3ZSB1bmhhc2ggdGhlIGRlbnRyeSBpbiBhZHZhbmNlLlxuJiM0MztcdFx0XHQgKiB0aGUgcmVuYW1lLCB3ZSBzZXQgZF9mc2RhdGEgd2hpY2ggYWZzX2RfcmV2YWxpZGF0ZSB3aWxsIHdhaXQgZm9yLlxuJiM0MztcdFx0XHQgKiBkX2xvY2sgZW5zdXJlcyBkX2NvdW50KCkgYW5kIC1cdTAwM2VkX2ZzZGF0YSBhcmUgY29uc2lzdGVudC5cbiBcdFx0XHQgKi9cbi1cdFx0XHRpZiAoIWRfdW5oYXNoZWQobmV3X2RlbnRyeSkpIHtcbi1cdFx0XHRcdGRfZHJvcChuZXdfZGVudHJ5KTtcbi1cdFx0XHRcdG9wLVx1MDAzZXJlbmFtZS5yZWhhc2ggPSBuZXdfZGVudHJ5O1xuLVx0XHRcdH1cbi1cbiYjNDM7XHRcdFx0c3Bpbl9sb2NrKFx1MDAyNm5ld19kZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0XHRpZiAoZF9jb3VudChuZXdfZGVudHJ5KSBcdTAwM2UgMikge1xuJiM0MztcdFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNm5ld19kZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0XHRcdC8qIGNvcHkgdGhlIHRhcmdldCBkZW50cnkmIzM5O3MgbmFtZSAqL1xuIFx0XHRcdFx0b3AtXHUwMDNlcmVuYW1lLnRtcCA9IGRfYWxsb2MobmV3X2RlbnRyeS1cdTAwM2VkX3BhcmVudCxcbiBcdFx0XHRcdFx0XHRcdCBcdTAwMjZuZXdfZGVudHJ5LVx1MDAzZWRfbmFtZSk7XG5AQCAtMjE2NCwyMiAmIzQzOzIxNzMsMjcgQEAgc3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXG4gXHRcdFx0XHR9XG4gXG4gXHRcdFx0XHRvcC1cdTAwM2VkZW50cnlfMiA9IG9wLVx1MDAzZXJlbmFtZS50bXA7XG4tXHRcdFx0XHRvcC1cdTAwM2VyZW5hbWUucmVoYXNoID0gTlVMTDtcbiBcdFx0XHRcdG9wLVx1MDAzZXJlbmFtZS5uZXdfbmVnYXRpdmUgPSB0cnVlO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdC8qIEJsb2NrIGFueSBsb29rdXBzIHRvIHRhcmdldCB1bnRpbCB0aGUgcmVuYW1lIGNvbXBsZXRlcyAqL1xuJiM0MztcdFx0XHRcdG5ld19kZW50cnktXHUwMDNlZF9mc2RhdGEgPSBBRlNfRlNEQVRBX0JMT0NLRUQ7XG4mIzQzO1x0XHRcdFx0b3AtXHUwMDNlcmVuYW1lLnVuYmxvY2sgPSBuZXdfZGVudHJ5O1xuJiM0MztcdFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNm5ld19kZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdH1cbiBcbiBcdC8qIFRoaXMgYml0IGlzIHBvdGVudGlhbGx5IG5hc3R5IGFzIHRoZXJlJiMzOTtzIGEgcG90ZW50aWFsIHJhY2Ugd2l0aFxuLVx0ICogYWZzX2RfcmV2YWxpZGF0ZXssX3JjdX0oKS4gIFdlIGhhdmUgdG8gY2hhbmdlIGRfZnNkYXRhIG9uIHRoZSBkZW50cnlcbiYjNDM7XHQgKiBhZnNfZF9yZXZhbGlkYXRleyxfcmN1fSgpLiAgV2UgaGF2ZSB0byBjaGFuZ2UgZF90aW1lXyBvbiB0aGUgZGVudHJ5XG4gXHQgKiB0byByZWZsZWN0IGl0JiMzOTtzIG5ldyBwYXJlbnQmIzM5O3MgbmV3IGRhdGFfdmVyc2lvbiBhZnRlciB0aGUgb3AsIGJ1dFxuIFx0ICogZF9yZXZhbGlkYXRlIG1heSBzZWUgb2xkX2RlbnRyeSBiZXR3ZWVuIHRoZSBvcCBoYXZpbmcgdGFrZW4gcGxhY2VcbiBcdCAqIGFuZCB0aGUgdmVyc2lvbiBiZWluZyB1cGRhdGVkLlxuIFx0ICpcbi1cdCAqIFNvIGRyb3AgdGhlIG9sZF9kZW50cnkgZm9yIG5vdyB0byBtYWtlIG90aGVyIHRocmVhZHMgZ28gdGhyb3VnaFxuLVx0ICogbG9va3VwIGluc3RlYWQgLSB3aGljaCB3ZSBob2xkIGEgbG9jayBhZ2FpbnN0LlxuJiM0MztcdCAqIFNvIGJsb2NrIHJldmFsaWRhdGUgb24gdGhlIG9sZF9kZW50cnkgdW50aWwgdGhlIHJlbmFtZSBjb21wbGV0ZXMuXG4gXHQgKi9cbi1cdGRfZHJvcChvbGRfZGVudHJ5KTtcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2b2xkX2RlbnRyeS1cdTAwM2VkX2xvY2spO1xuJiM0MztcdG9sZF9kZW50cnktXHUwMDNlZF9mc2RhdGEgPSBBRlNfRlNEQVRBX0JMT0NLRUQ7XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2b2xkX2RlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFxuIFx0cmV0ID0gYWZzX2RvX3N5bmNfb3BlcmF0aW9uKG9wKTtcbiBcdGlmIChyZXQgPT0gLUVOT1RTVVBQKVxuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9pbnRlcm5hbC5oIGIvZnMvYWZzL2ludGVybmFsLmhcbmluZGV4IDBiNzJhODU2NjI5OTkyLi5hMGFmZTU1MmFlNjQ2YiAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9pbnRlcm5hbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9hZnMvaW50ZXJuYWwuaFxuQEAgLTkwMCwxMCAmIzQzOzkwMCw3IEBAIHN0cnVjdCBhZnNfb3BlcmF0aW9uIHtcbiBcdFx0XHRzdHJ1Y3QgYWZzX3N5bWxpbmsgKnN5bWxpbms7XG4gXHRcdH0gY3JlYXRlO1xuIFx0XHRzdHJ1Y3Qge1xuLVx0XHRcdGJvb2xcdG5lZWRfcmVoYXNoO1xuLVx0XHR9IHVubGluaztcbi1cdFx0c3RydWN0IHtcbi1cdFx0XHRzdHJ1Y3QgZGVudHJ5XHQqcmVoYXNoO1xuJiM0MztcdFx0XHRzdHJ1Y3QgZGVudHJ5XHQqdW5ibG9jaztcbiBcdFx0XHRzdHJ1Y3QgZGVudHJ5XHQqdG1wO1xuIFx0XHRcdHVuc2lnbmVkIGludFx0cmVuYW1lX2ZsYWdzO1xuIFx0XHRcdGJvb2xcdFx0bmV3X25lZ2F0aXZlO1xuQEAgLTE3NjQsMTcgJiM0MzsxNzYxLDE3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICpBRlNfVk5PREVfVE9fSShzdHJ1Y3QgYWZzX3Zub2RlICp2bm9kZSlcbiB9XG4gXG4gLypcbi0gKiBOb3RlIHRoYXQgYSBkZW50cnkgZ290IGNoYW5nZWQuICBXZSBuZWVkIHRvIHNldCBkX2ZzZGF0YSB0byB0aGUgZGF0YSB2ZXJzaW9uXG4mIzQzOyAqIE5vdGUgdGhhdCBhIGRlbnRyeSBnb3QgY2hhbmdlZC4gIFdlIG5lZWQgdG8gc2V0IGRfdGltZSB0byB0aGUgZGF0YSB2ZXJzaW9uXG4gICogbnVtYmVyIGRlcml2ZWQgZnJvbSB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uICBJdCBkb2VzbiYjMzk7dCBtYXR0ZXIgaWZcbi0gKiBkX2ZzZGF0YSBnb2VzIGJhY2t3YXJkcyBhcyB3ZSYjMzk7bGwganVzdCByZXZhbGlkYXRlLlxuJiM0MzsgKiBkX3RpbWUgZ29lcyBiYWNrd2FyZHMgYXMgd2UmIzM5O2xsIGp1c3QgcmV2YWxpZGF0ZS5cbiAgKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgYWZzX3VwZGF0ZV9kZW50cnlfdmVyc2lvbihzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3AsXG4gXHRcdFx0XHRcdCAgICAgc3RydWN0IGFmc192bm9kZV9wYXJhbSAqZGlyX3ZwLFxuIFx0XHRcdFx0XHQgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiB7XG4gXHRpZiAoIW9wLVx1MDAzZWN1bXVsX2Vycm9yLmVycm9yKVxuLVx0XHRkZW50cnktXHUwMDNlZF9mc2RhdGEgPVxuLVx0XHRcdCh2b2lkICopKHVuc2lnbmVkIGxvbmcpZGlyX3ZwLVx1MDAzZXNjYi5zdGF0dXMuZGF0YV92ZXJzaW9uO1xuJiM0MztcdFx0ZGVudHJ5LVx1MDAzZWRfdGltZSA9XG4mIzQzO1x0XHRcdCh1bnNpZ25lZCBsb25nKWRpcl92cC1cdTAwM2VzY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcbiB9XG4gXG4gLypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwODo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZnNfZF9yZXZhbGlkYXRlJiMzNDssCiAgICAmIzM0O2Fmc19kX3JldmFsaWRhdGVfcmN1JiMzNDssCiAgICAmIzM0O2Fmc191bmxpbmsmIzM0OywKICAgICYjMzQ7YWZzX3JlbmFtZSYjMzQ7LAogICAgJiMzNDthZnNfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB0byB1c2UgYGRfdGltZWAgaW5zdGVhZCBvZiBgZF9mc2RhdGFgIGZvciBzdG9yaW5nIHRoZSBkYXRhIHZlcnNpb24sIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3VwcyBhbmQgcmV2YWxpZGF0aW9ucyBkdXJpbmcgcmVuYW1lIGFuZCB1bmxpbmsgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGUyBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb25jdXJyZW5jeSBhbmQgVkZTIGludGVyYWN0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZWNmNTQ5MjMwZjdjMDRlODZiOGRmOWYyYTZkYTNiMmFhMzRhMTYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAwODo1MDo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2Fmcy9hZnMuaCBiL2ZzL2Fmcy9hZnMuaAppbmRleCBlYzNkYjAwYmQwODEzYy4uMDE5ZTc3YjA4NDU4ZTMgMTAwNjQ0Ci0tLSBhL2ZzL2Fmcy9hZnMuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9hZnMvYWZzLmgKQEAgLTI2LDYgJiM0MzsyNiwxMyBAQCB0eXBlZGVmIHU2NAkJCWFmc192b2xpZF90OwogdHlwZWRlZiB1NjQJCQlhZnNfdm5vZGVpZF90OwogdHlwZWRlZiB1NjQJCQlhZnNfZGF0YXZlcnNpb25fdDsKIAomIzQzOy8qIFRoaXMgaXMgc3RvcmVkIGluIC0mZ3Q7ZF9mc2RhdGEgdG8gc3RvcCBkX3JldmFsaWRhdGUgbG9va2luZyBhdCwKJiM0MzsgKiBhbmQgcG9zc2libHkgY2hhbmdpbmcsIC0mZ3Q7ZF90aW1lIG9uIGEgZGVudHJ5IHdoaWNoIGlzIGJlaW5nIG1vdmVkCiYjNDM7ICogYmV0d2VlbiBkaXJlY3RvcmllcywgYW5kIHRvIGJsb2NrIGxvb2t1cCBmb3IgZGVudHJ5IHRoYXQgaXMKJiM0MzsgKiBiZWluZyByZW1vdmVkIHdpdGhvdXQgc2lsbHktcmVuYW1lLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgQUZTX0ZTREFUQV9CTE9DS0VEICgodm9pZCopMSkKJiM0MzsKIHR5cGVkZWYgZW51bSB7CiAJQUZTVkxfUldWT0wsCQkJLyogcmVhZC93cml0ZSB2b2x1bWUgKi8KIAlBRlNWTF9ST1ZPTCwJCQkvKiByZWFkLW9ubHkgdm9sdW1lICovCmRpZmYgLS1naXQgYS9mcy9hZnMvZGlyLmMgYi9mcy9hZnMvZGlyLmMKaW5kZXggNDk4Yjk5Y2NkZjBlMjcuLmU5YWFmNjYyMThlYTZiIDEwMDY0NAotLS0gYS9mcy9hZnMvZGlyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYWZzL2Rpci5jCkBAIC03OTUsNyAmIzQzOzc5NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmFmc19kb19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAkJYWZzX2Rpcl9pdGVyYXRlKGRpciwgJmFtcDtjb29raWUtJmd0O2N0eCwgTlVMTCwgJmFtcDtkYXRhX3ZlcnNpb24pOwogCX0KIAotCWRlbnRyeS0mZ3Q7ZF9mc2RhdGEgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKWRhdGFfdmVyc2lvbjsKJiM0MzsJZGVudHJ5LSZndDtkX3RpbWUgPSAodW5zaWduZWQgbG9uZylkYXRhX3ZlcnNpb247CiAKIAkvKiBDaGVjayB0byBzZWUgaWYgd2UgYWxyZWFkeSBoYXZlIGFuIGlub2RlIGZvciB0aGUgcHJpbWFyeSBmaWQuICovCiAJaW5vZGUgPSBpbG9va3VwNShkaXItJmd0O2lfc2IsIGNvb2tpZS0mZ3Q7Zmlkc1sxXS52bm9kZSwKQEAgLTg4Miw5ICYjNDM7ODgyLDkgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqYWZzX2RvX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCX0KIAogCWlmIChvcC0mZ3Q7ZmlsZVswXS5zY2IuaGF2ZV9zdGF0dXMpCi0JCWRlbnRyeS0mZ3Q7ZF9mc2RhdGEgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKW9wLSZndDtmaWxlWzBdLnNjYi5zdGF0dXMuZGF0YV92ZXJzaW9uOwomIzQzOwkJZGVudHJ5LSZndDtkX3RpbWUgPSAodW5zaWduZWQgbG9uZylvcC0mZ3Q7ZmlsZVswXS5zY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjsKIAllbHNlCi0JCWRlbnRyeS0mZ3Q7ZF9mc2RhdGEgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKW9wLSZndDtmaWxlWzBdLmR2X2JlZm9yZTsKJiM0MzsJCWRlbnRyeS0mZ3Q7ZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpb3AtJmd0O2ZpbGVbMF0uZHZfYmVmb3JlOwogCXJldCA9IGFmc19wdXRfb3BlcmF0aW9uKG9wKTsKIG91dDoKIAlrZnJlZShjb29raWUpOwpAQCAtOTk3LDcgJiM0Mzs5OTcsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYWZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAogCV9kZWJ1ZygmIzM0O3NwbGljZSAlcCYjMzQ7LCBkZW50cnktJmd0O2RfaW5vZGUpOwogCWQgPSBkX3NwbGljZV9hbGlhcyhpbm9kZSwgZGVudHJ5KTsKIAlpZiAoIUlTX0VSUl9PUl9OVUxMKGQpKSB7Ci0JCWQtJmd0O2RfZnNkYXRhID0gZGVudHJ5LSZndDtkX2ZzZGF0YTsKJiM0MzsJCWQtJmd0O2RfdGltZSA9IGRlbnRyeS0mZ3Q7ZF90aW1lOwogCQl0cmFjZV9hZnNfbG9va3VwKGR2bm9kZSwgJmFtcDtkLSZndDtkX25hbWUsICZhbXA7ZmlkKTsKIAl9IGVsc2UgewogCQl0cmFjZV9hZnNfbG9va3VwKGR2bm9kZSwgJmFtcDtkZW50cnktJmd0O2RfbmFtZSwgJmFtcDtmaWQpOwpAQCAtMTAyMSwxMyAmIzQzOzEwMjEsMTcgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlX3JjdShzdHJ1Y3QgYWZzX3Zub2RlICpkdm5vZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAlpZiAoIWFmc19jaGVja192YWxpZGl0eShkdm5vZGUpKQogCQlyZXR1cm4gLUVDSElMRDsKIAomIzQzOwkvKiBBIHJlbmFtZS91bmxpbmsgaXMgcGVuZGluZyAqLwomIzQzOwlpZiAoZGVudHJ5LSZndDtkX2ZzZGF0YSkKJiM0MzsJCXJldHVybiAtRUNISUxEOwomIzQzOwogCS8qIFdlIG9ubHkgbmVlZCB0byBpbnZhbGlkYXRlIGEgZGVudHJ5IGlmIHRoZSBzZXJ2ZXImIzM5O3MgY29weSBjaGFuZ2VkCiAJICogYmVoaW5kIG91ciBiYWNrLiAgSWYgd2UgbWFkZSB0aGUgY2hhbmdlLCBpdCYjMzk7cyBubyBwcm9ibGVtLiAgTm90ZSB0aGF0CiAJICogb24gYSAzMi1iaXQgc3lzdGVtLCB3ZSBvbmx5IGhhdmUgMzIgYml0cyBpbiB0aGUgZGVudHJ5IHRvIHN0b3JlIHRoZQogCSAqIHZlcnNpb24uCiAJICovCiAJZGlyX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZHZub2RlLSZndDtzdGF0dXMuZGF0YV92ZXJzaW9uKTsKLQlkZV92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGRlbnRyeS0mZ3Q7ZF9mc2RhdGEpOwomIzQzOwlkZV92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGRlbnRyeS0mZ3Q7ZF90aW1lKTsKIAlpZiAoZGVfdmVyc2lvbiAhPSBkaXJfdmVyc2lvbikgewogCQlkaXJfdmVyc2lvbiA9IChsb25nKVJFQURfT05DRShkdm5vZGUtJmd0O2ludmFsaWRfYmVmb3JlKTsKIAkJaWYgKGRlX3ZlcnNpb24gLSBkaXJfdmVyc2lvbiAmbHQ7IDApCkBAIC0xMDU2LDYgJiM0MzsxMDYwLDEwIEBAIHN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9kaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lLAogCWlmIChmbGFncyAmYW1wOyBMT09LVVBfUkNVKQogCQlyZXR1cm4gYWZzX2RfcmV2YWxpZGF0ZV9yY3UoZGlyLCBkZW50cnkpOwogCiYjNDM7CS8qIFdhaXQgZm9yIHJlbmFtZS91bmxpbmsgdG8gY29tcGxldGUgKi8KJiM0Mzt3YWl0X2Zvcl9yZW5hbWU6CiYjNDM7CXdhaXRfdmFyX2V2ZW50KCZhbXA7ZGVudHJ5LSZndDtkX2ZzZGF0YSwgZGVudHJ5LSZndDtkX2ZzZGF0YSA9PSBOVUxMKTsKJiM0MzsKIAlpZiAoZF9yZWFsbHlfaXNfcG9zaXRpdmUoZGVudHJ5KSkgewogCQl2bm9kZSA9IEFGU19GU19JKGRfaW5vZGUoZGVudHJ5KSk7CiAJCV9lbnRlcigmIzM0O3t2PXslbGx4OiVsbHV9IG49JXBkIGZsPSVseH0sJiMzNDssCkBAIC0xMDg3LDcgJiM0MzsxMDk1LDcgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsCiAJICogdmVyc2lvbi4KIAkgKi8KIAlkaXJfdmVyc2lvbiA9IGRpci0mZ3Q7c3RhdHVzLmRhdGFfdmVyc2lvbjsKLQlkZV92ZXJzaW9uID0gKGxvbmcpZGVudHJ5LSZndDtkX2ZzZGF0YTsKJiM0MzsJZGVfdmVyc2lvbiA9IChsb25nKWRlbnRyeS0mZ3Q7ZF90aW1lOwogCWlmIChkZV92ZXJzaW9uID09IChsb25nKWRpcl92ZXJzaW9uKQogCQlnb3RvIG91dF92YWxpZF9ub3VwZGF0ZTsKIApAQCAtMTE0OCw3ICYjNDM7MTE1NiwxMyBAQCBzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSwKIAl9CiAKIG91dF92YWxpZDoKLQlkZW50cnktJmd0O2RfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylkaXJfdmVyc2lvbjsKJiM0MzsJc3Bpbl9sb2NrKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2spOwomIzQzOwlpZiAoZGVudHJ5LSZndDtkX2ZzZGF0YSkgewomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDtkZW50cnktJmd0O2RfbG9jayk7CiYjNDM7CQlnb3RvIHdhaXRfZm9yX3JlbmFtZTsKJiM0MzsJfQomIzQzOwlkZW50cnktJmd0O2RfdGltZSA9ICh1bnNpZ25lZCBsb25nKWRpcl92ZXJzaW9uOwomIzQzOwlzcGluX3VubG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIG91dF92YWxpZF9ub3VwZGF0ZToKIAlrZXlfcHV0KGtleSk7CiAJX2xlYXZlKCYjMzQ7ID0gMSBbdmFsaWRdJiMzNDspOwpAQCAtMTUyMyw4ICYjNDM7MTUzNyw3IEBAIHN0YXRpYyB2b2lkIGFmc191bmxpbmtfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKQogc3RhdGljIHZvaWQgYWZzX3VubGlua19wdXQoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKQogewogCV9lbnRlcigmIzM0O29wPSUwOHgmIzM0Oywgb3AtJmd0O2RlYnVnX2lkKTsKLQlpZiAob3AtJmd0O3VubGluay5uZWVkX3JlaGFzaCAmYW1wOyZhbXA7IGFmc19vcF9lcnJvcihvcCkgJmx0OyAwICZhbXA7JmFtcDsgYWZzX29wX2Vycm9yKG9wKSAhPSAtRU5PRU5UKQotCQlkX3JlaGFzaChvcC0mZ3Q7ZGVudHJ5KTsKJiM0MzsJc3RvcmVfcmVsZWFzZV93YWtlX3VwKCZhbXA7b3AtJmd0O2RlbnRyeS0mZ3Q7ZF9mc2RhdGEsIE5VTEwpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGFmc19vcGVyYXRpb25fb3BzIGFmc191bmxpbmtfb3BlcmF0aW9uID0gewpAQCAtMTU3OCwxMSAmIzQzOzE1OTEsNyBAQCBzdGF0aWMgaW50IGFmc191bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAkJYWZzX29wX3NldF9lcnJvcihvcCwgYWZzX3NpbGx5cmVuYW1lKGR2bm9kZSwgdm5vZGUsIGRlbnRyeSwgb3AtJmd0O2tleSkpOwogCQlnb3RvIGVycm9yOwogCX0KLQlpZiAoIWRfdW5oYXNoZWQoZGVudHJ5KSkgewotCQkvKiBQcmV2ZW50IGEgcmFjZSB3aXRoIFJDVSBsb29rdXAuICovCi0JCV9fZF9kcm9wKGRlbnRyeSk7Ci0JCW9wLSZndDt1bmxpbmsubmVlZF9yZWhhc2ggPSB0cnVlOwotCX0KJiM0MzsJZGVudHJ5LSZndDtkX2ZzZGF0YSA9IEFGU19GU0RBVEFfQkxPQ0tFRDsKIAlzcGluX3VubG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIAogCW9wLSZndDtmaWxlWzFdLnZub2RlID0gdm5vZGU7CkBAIC0xODg5LDkgJiM0MzsxODk4LDEwIEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKQogCiAJX2VudGVyKCYjMzQ7b3A9JTA4eCYjMzQ7LCBvcC0mZ3Q7ZGVidWdfaWQpOwogCi0JaWYgKG9wLSZndDtyZW5hbWUucmVoYXNoKSB7Ci0JCWRfcmVoYXNoKG9wLSZndDtyZW5hbWUucmVoYXNoKTsKLQkJb3AtJmd0O3JlbmFtZS5yZWhhc2ggPSBOVUxMOwomIzQzOwlpZiAob3AtJmd0O3JlbmFtZS51bmJsb2NrKSB7CiYjNDM7CQkvKiBSZW5hbWUgaGFzIGZpbmlzaGVkLCBzbyB1bmxvY2tzIGxvb2t1cHMgdG8gdGFyZ2V0ICovCiYjNDM7CQlzdG9yZV9yZWxlYXNlX3dha2VfdXAoJmFtcDtvcC0mZ3Q7cmVuYW1lLnVuYmxvY2stJmd0O2RfZnNkYXRhLCBOVUxMKTsKJiM0MzsJCW9wLSZndDtyZW5hbWUudW5ibG9jayA9IE5VTEw7CiAJfQogCiAJZnNjYWNoZV9iZWdpbl93cml0ZV9vcGVyYXRpb24oJmFtcDtvcmlnX2NyZXMsIGFmc192bm9kZV9jYWNoZShvcmlnX2R2bm9kZSkpOwpAQCAtMTkzNSw3ICYjNDM7MTk0NSw3IEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKQogCQlzcGluX3VubG9jaygmYW1wO25ld19pbm9kZS0mZ3Q7aV9sb2NrKTsKIAl9CiAKLQkvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJpZXMgdG8gcmVmbGVjdCB0aGVpcgomIzQzOwkvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX3RpbWUgb24gdGhlIGRlbnRyaWVzIHRvIHJlZmxlY3QgdGhlaXIKIAkgKiBuZXcgcGFyZW50JiMzOTtzIGRhdGFfdmVyc2lvbi4KIAkgKi8KIAlhZnNfdXBkYXRlX2RlbnRyeV92ZXJzaW9uKG9wLCBuZXdfZHZwLCBvcC0mZ3Q7ZGVudHJ5KTsKQEAgLTE5NzQsNiAmIzQzOzE5ODQsOSBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2V4Y2hhbmdlX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcCkKIAogCQlkX2V4Y2hhbmdlKG9sZF9kZW50cnksIG5ld19kZW50cnkpOwogCQl1cF93cml0ZSgmYW1wO29yaWdfZHZub2RlLSZndDt2YWxpZGF0ZV9sb2NrKTsKJiM0MzsJLyogZGVudHJ5IGhhcyBiZWVuIG1vdmVkLCBzbyBkX3ZhbGlkYXRlIGNhbiBzYWZlbHkgcHJvY2VlZCAqLwomIzQzOwlzdG9yZV9yZWxlYXNlX3dha2VfdXAoJmFtcDtvbGRfZGVudHJ5LSZndDtkX2ZzZGF0YSwgTlVMTCk7CiYjNDM7CiAJfSBlbHNlIHsKIAkJZG93bl93cml0ZSgmYW1wO29yaWdfZHZub2RlLSZndDt2YWxpZGF0ZV9sb2NrKTsKIAkJaWYgKHRlc3RfYml0KEFGU19WTk9ERV9ESVJfVkFMSUQsICZhbXA7b3JpZ19kdm5vZGUtJmd0O2ZsYWdzKSAmYW1wOyZhbXA7CkBAIC0yMDEzLDExICYjNDM7MjAyNiwxMCBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2V4Y2hhbmdlX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcCkKIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfcHV0KHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcCkKIHsKIAlfZW50ZXIoJiMzNDtvcD0lMDh4JiMzNDssIG9wLSZndDtkZWJ1Z19pZCk7Ci0JaWYgKG9wLSZndDtyZW5hbWUucmVoYXNoKQotCQlkX3JlaGFzaChvcC0mZ3Q7cmVuYW1lLnJlaGFzaCk7CiYjNDM7CWlmIChvcC0mZ3Q7cmVuYW1lLnVuYmxvY2spCiYjNDM7CQlzdG9yZV9yZWxlYXNlX3dha2VfdXAoJmFtcDtvcC0mZ3Q7cmVuYW1lLnVuYmxvY2stJmd0O2RfZnNkYXRhLCBOVUxMKTsKJiM0MzsJc3RvcmVfcmVsZWFzZV93YWtlX3VwKCZhbXA7b3AtJmd0O2RlbnRyeS0mZ3Q7ZF9mc2RhdGEsIE5VTEwpOwogCWRwdXQob3AtJmd0O3JlbmFtZS50bXApOwotCWlmIChhZnNfb3BfZXJyb3Iob3ApKQotCQlkX3JlaGFzaChvcC0mZ3Q7ZGVudHJ5KTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfcmVuYW1lX29wZXJhdGlvbiA9IHsKQEAgLTIxMjUsNyAmIzQzOzIxMzcsNiBAQCBzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpciwKIAkJb3AtJmd0O29wcwkJPSAmYW1wO2Fmc19yZW5hbWVfbm9yZXBsYWNlX29wZXJhdGlvbjsKIAl9IGVsc2UgaWYgKGZsYWdzICZhbXA7IFJFTkFNRV9FWENIQU5HRSkgewogCQlvcC0mZ3Q7b3BzCQk9ICZhbXA7YWZzX3JlbmFtZV9leGNoYW5nZV9vcGVyYXRpb247Ci0JCWRfZHJvcChuZXdfZGVudHJ5KTsKIAl9IGVsc2UgewogCQkvKiBJZiB3ZSBtaWdodCBkaXNwbGFjZSB0aGUgdGFyZ2V0LCB3ZSBtaWdodCBuZWVkIHRvIGRvIHNpbGx5CiAJCSAqIHJlbmFtZS4KQEAgLTIxMzksMTQgJiM0MzsyMTUwLDEyIEBAIHN0YXRpYyBpbnQgYWZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLAogCQkgKi8KIAkJaWYgKGRfaXNfcG9zaXRpdmUobmV3X2RlbnRyeSkgJmFtcDsmYW1wOyAhZF9pc19kaXIobmV3X2RlbnRyeSkpIHsKIAkJCS8qIFRvIHByZXZlbnQgYW55IG5ldyByZWZlcmVuY2VzIHRvIHRoZSB0YXJnZXQgZHVyaW5nCi0JCQkgKiB0aGUgcmVuYW1lLCB3ZSB1bmhhc2ggdGhlIGRlbnRyeSBpbiBhZHZhbmNlLgomIzQzOwkJCSAqIHRoZSByZW5hbWUsIHdlIHNldCBkX2ZzZGF0YSB3aGljaCBhZnNfZF9yZXZhbGlkYXRlIHdpbGwgd2FpdCBmb3IuCiYjNDM7CQkJICogZF9sb2NrIGVuc3VyZXMgZF9jb3VudCgpIGFuZCAtJmd0O2RfZnNkYXRhIGFyZSBjb25zaXN0ZW50LgogCQkJICovCi0JCQlpZiAoIWRfdW5oYXNoZWQobmV3X2RlbnRyeSkpIHsKLQkJCQlkX2Ryb3AobmV3X2RlbnRyeSk7Ci0JCQkJb3AtJmd0O3JlbmFtZS5yZWhhc2ggPSBuZXdfZGVudHJ5OwotCQkJfQotCiYjNDM7CQkJc3Bpbl9sb2NrKCZhbXA7bmV3X2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIAkJCWlmIChkX2NvdW50KG5ld19kZW50cnkpICZndDsgMikgewomIzQzOwkJCQlzcGluX3VubG9jaygmYW1wO25ld19kZW50cnktJmd0O2RfbG9jayk7CiAJCQkJLyogY29weSB0aGUgdGFyZ2V0IGRlbnRyeSYjMzk7cyBuYW1lICovCiAJCQkJb3AtJmd0O3JlbmFtZS50bXAgPSBkX2FsbG9jKG5ld19kZW50cnktJmd0O2RfcGFyZW50LAogCQkJCQkJCSAmYW1wO25ld19kZW50cnktJmd0O2RfbmFtZSk7CkBAIC0yMTY0LDIyICYjNDM7MjE3MywyNyBAQCBzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpciwKIAkJCQl9CiAKIAkJCQlvcC0mZ3Q7ZGVudHJ5XzIgPSBvcC0mZ3Q7cmVuYW1lLnRtcDsKLQkJCQlvcC0mZ3Q7cmVuYW1lLnJlaGFzaCA9IE5VTEw7CiAJCQkJb3AtJmd0O3JlbmFtZS5uZXdfbmVnYXRpdmUgPSB0cnVlOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCS8qIEJsb2NrIGFueSBsb29rdXBzIHRvIHRhcmdldCB1bnRpbCB0aGUgcmVuYW1lIGNvbXBsZXRlcyAqLwomIzQzOwkJCQluZXdfZGVudHJ5LSZndDtkX2ZzZGF0YSA9IEFGU19GU0RBVEFfQkxPQ0tFRDsKJiM0MzsJCQkJb3AtJmd0O3JlbmFtZS51bmJsb2NrID0gbmV3X2RlbnRyeTsKJiM0MzsJCQkJc3Bpbl91bmxvY2soJmFtcDtuZXdfZGVudHJ5LSZndDtkX2xvY2spOwogCQkJfQogCQl9CiAJfQogCiAJLyogVGhpcyBiaXQgaXMgcG90ZW50aWFsbHkgbmFzdHkgYXMgdGhlcmUmIzM5O3MgYSBwb3RlbnRpYWwgcmFjZSB3aXRoCi0JICogYWZzX2RfcmV2YWxpZGF0ZXssX3JjdX0oKS4gIFdlIGhhdmUgdG8gY2hhbmdlIGRfZnNkYXRhIG9uIHRoZSBkZW50cnkKJiM0MzsJICogYWZzX2RfcmV2YWxpZGF0ZXssX3JjdX0oKS4gIFdlIGhhdmUgdG8gY2hhbmdlIGRfdGltZV8gb24gdGhlIGRlbnRyeQogCSAqIHRvIHJlZmxlY3QgaXQmIzM5O3MgbmV3IHBhcmVudCYjMzk7cyBuZXcgZGF0YV92ZXJzaW9uIGFmdGVyIHRoZSBvcCwgYnV0CiAJICogZF9yZXZhbGlkYXRlIG1heSBzZWUgb2xkX2RlbnRyeSBiZXR3ZWVuIHRoZSBvcCBoYXZpbmcgdGFrZW4gcGxhY2UKIAkgKiBhbmQgdGhlIHZlcnNpb24gYmVpbmcgdXBkYXRlZC4KIAkgKgotCSAqIFNvIGRyb3AgdGhlIG9sZF9kZW50cnkgZm9yIG5vdyB0byBtYWtlIG90aGVyIHRocmVhZHMgZ28gdGhyb3VnaAotCSAqIGxvb2t1cCBpbnN0ZWFkIC0gd2hpY2ggd2UgaG9sZCBhIGxvY2sgYWdhaW5zdC4KJiM0MzsJICogU28gYmxvY2sgcmV2YWxpZGF0ZSBvbiB0aGUgb2xkX2RlbnRyeSB1bnRpbCB0aGUgcmVuYW1lIGNvbXBsZXRlcy4KIAkgKi8KLQlkX2Ryb3Aob2xkX2RlbnRyeSk7CiYjNDM7CXNwaW5fbG9jaygmYW1wO29sZF9kZW50cnktJmd0O2RfbG9jayk7CiYjNDM7CW9sZF9kZW50cnktJmd0O2RfZnNkYXRhID0gQUZTX0ZTREFUQV9CTE9DS0VEOwomIzQzOwlzcGluX3VubG9jaygmYW1wO29sZF9kZW50cnktJmd0O2RfbG9jayk7CiAKIAlyZXQgPSBhZnNfZG9fc3luY19vcGVyYXRpb24ob3ApOwogCWlmIChyZXQgPT0gLUVOT1RTVVBQKQpkaWZmIC0tZ2l0IGEvZnMvYWZzL2ludGVybmFsLmggYi9mcy9hZnMvaW50ZXJuYWwuaAppbmRleCAwYjcyYTg1NjYyOTk5Mi4uYTBhZmU1NTJhZTY0NmIgMTAwNjQ0Ci0tLSBhL2ZzL2Fmcy9pbnRlcm5hbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Fmcy9pbnRlcm5hbC5oCkBAIC05MDAsMTAgJiM0Mzs5MDAsNyBAQCBzdHJ1Y3QgYWZzX29wZXJhdGlvbiB7CiAJCQlzdHJ1Y3QgYWZzX3N5bWxpbmsgKnN5bWxpbms7CiAJCX0gY3JlYXRlOwogCQlzdHJ1Y3QgewotCQkJYm9vbAluZWVkX3JlaGFzaDsKLQkJfSB1bmxpbms7Ci0JCXN0cnVjdCB7Ci0JCQlzdHJ1Y3QgZGVudHJ5CSpyZWhhc2g7CiYjNDM7CQkJc3RydWN0IGRlbnRyeQkqdW5ibG9jazsKIAkJCXN0cnVjdCBkZW50cnkJKnRtcDsKIAkJCXVuc2lnbmVkIGludAlyZW5hbWVfZmxhZ3M7CiAJCQlib29sCQluZXdfbmVnYXRpdmU7CkBAIC0xNzY0LDE3ICYjNDM7MTc2MSwxNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpbm9kZSAqQUZTX1ZOT0RFX1RPX0koc3RydWN0IGFmc192bm9kZSAqdm5vZGUpCiB9CiAKIC8qCi0gKiBOb3RlIHRoYXQgYSBkZW50cnkgZ290IGNoYW5nZWQuICBXZSBuZWVkIHRvIHNldCBkX2ZzZGF0YSB0byB0aGUgZGF0YSB2ZXJzaW9uCiYjNDM7ICogTm90ZSB0aGF0IGEgZGVudHJ5IGdvdCBjaGFuZ2VkLiAgV2UgbmVlZCB0byBzZXQgZF90aW1lIHRvIHRoZSBkYXRhIHZlcnNpb24KICAqIG51bWJlciBkZXJpdmVkIGZyb20gdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uLiAgSXQgZG9lc24mIzM5O3QgbWF0dGVyIGlmCi0gKiBkX2ZzZGF0YSBnb2VzIGJhY2t3YXJkcyBhcyB3ZSYjMzk7bGwganVzdCByZXZhbGlkYXRlLgomIzQzOyAqIGRfdGltZSBnb2VzIGJhY2t3YXJkcyBhcyB3ZSYjMzk7bGwganVzdCByZXZhbGlkYXRlLgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQgYWZzX3VwZGF0ZV9kZW50cnlfdmVyc2lvbihzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3AsCiAJCQkJCSAgICAgc3RydWN0IGFmc192bm9kZV9wYXJhbSAqZGlyX3ZwLAogCQkJCQkgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIHsKIAlpZiAoIW9wLSZndDtjdW11bF9lcnJvci5lcnJvcikKLQkJZGVudHJ5LSZndDtkX2ZzZGF0YSA9Ci0JCQkodm9pZCAqKSh1bnNpZ25lZCBsb25nKWRpcl92cC0mZ3Q7c2NiLnN0YXR1cy5kYXRhX3ZlcnNpb247CiYjNDM7CQlkZW50cnktJmd0O2RfdGltZSA9CiYjNDM7CQkJKHVuc2lnbmVkIGxvbmcpZGlyX3ZwLSZndDtzY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjsKIH0KIAogLyoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDg6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3MwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFGUyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIEFuZHJldyBGaWxlIFN5c3RlbSBpbiB0aGUgTGludXgga2VybmVsLiBJdCYjMzk7cyB0d2Vha2luZyBob3cgYGRfZnNkYXRhYCBhbmQgYGRfdGltZWAgYXJlIGhhbmRsZWQgaW4gYGZzL2Fmcy9kaXIuY2AuIEJhc2ljYWxseSwgdGhleSYjMzk7cmUgaW50cm9kdWNpbmcgYEFGU19GU0RBVEFfQkxPQ0tFRGAgdG8gcHJldmVudCBgZF9yZXZhbGlkYXRlYCBmcm9tIG1lc3Npbmcgd2l0aCB0aGUgZGVudHJ5JiMzOTtzIGBkX3RpbWVgIHdoZW4gaXQmIzM5O3MgYmVpbmcgbW92ZWQgYmV0d2VlbiBkaXJlY3Rvcmllcy4gVGhlIHNhbWUgZmxhZyB3aWxsIGJsb2NrIGxvb2t1cHMgZm9yIGRlbnRyaWVzIHRoYXQgYXJlIGJlaW5nIHJlbW92ZWQgdGhlIHByb3BlciB3YXkuIFRoZSBwYXRjaCBzd2FwcyBgZF90aW1lYCBmb3IgYGRfZnNkYXRhYCB0byBzdG9yZSB0aGUgZGF0YSB2ZXJzaW9uIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3Vwcy9yZXZhbGlkYXRlcyBkdXJpbmcgcmVuYW1lL3VubGluayBvcGVyYXRpb25zLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgZnVuY3Rpb25hbD8gQ2FuIHdlIGFjdHVhbGx5ICpyZWFjaCogdGhlc2UgY2hhbmdlcz8mIzM0OyBBRlMgaXMgYSBuZXR3b3JrIGZpbGVzeXN0ZW0sIHNvIHdlIGNhbiBkZWZpbml0ZWx5IHRlc3QgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlua2luZyBhYm91dCBpdCwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGJ1cmllZCBkZWVwIGluIGNvcmUgZGlyZWN0b3J5IG9wZXJhdGlvbnMg4oCTIGxvb2t1cCwgcmV2YWxpZGF0ZSwgdW5saW5rLCByZW5hbWUuIFRob3NlIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgd2lsbCBiZSB0ZXN0ZWQgb2Z0ZW4uCgpOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIG1vc3Qgc3VzY2VwdGlibGUgdG8gZnV6emluZy4gSSBjYW4gc2VlIHRoZSBwYXRjaCBtb2RpZmllcyBzZXZlcmFsIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIG5hcnJvdyBpdCBkb3duIHRvIHRoZSBtb3N0IGltcG9ydGFudCB0YXJnZXRzLiBBZnRlciByZXZpZXdpbmcgdGhlIGNvZGUsIEkgdGhpbmsgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIGBhZnNfZF9yZXZhbGlkYXRlYCwgYGFmc19kX3JldmFsaWRhdGVfcmN1YCwgYGFmc191bmxpbmtgLCBhbmQgYGFmc19yZW5hbWVgLgoKRmluYWxseSwgYmVmb3JlIEkgZGlnIGluLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuIEkga25vdyBgQ09ORklHX0FGU19GU2AgaXMgdGhlIGtleSBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDg6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Fmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Fmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9hZnMvS2NvbmZpZzoyOmNvbmZpZyBBRlNfRlNcbmZzL2Fmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBbmRyZXcgRmlsZSBTeXN0ZW0gc3VwcG9ydCAoQUZTKVwmIzM0O1xuLS1cbmZzL2Fmcy9LY29uZmlnPTE3PWNvbmZpZyBBRlNfREVCVUdcbi0tXG5mcy9hZnMvS2NvbmZpZy0yNi1cbmZzL2Fmcy9LY29uZmlnOjI3OmNvbmZpZyBBRlNfRlNDQUNIRVxuZnMvYWZzL0tjb25maWctMjgtXHRib29sIFwmIzM0O1Byb3ZpZGUgQUZTIGNsaWVudCBjYWNoaW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwODo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzA1CgkJCQkJCQlvdXRwdXQ6IDY1CgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQUZTIENvbmZpZ3VyYXRpb24gJmFtcDsgQ29kZSBSZXZpZXcqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgYmV5b25kIHRoZSBvYnZpb3VzLCBgQ09ORklHX0FGU19GU2AuIFRoYXQmIzM5O3MgdGhlIG1haW4gZmxhZywgb2YgY291cnNlLCBidXQgZXhwZXJpZW5jZSB0ZWxscyBtZSBpdCYjMzk7cyBhbHdheXMgd29ydGggZG91YmxlLWNoZWNraW5nLgoKQWxyaWdodCwgdGhlIHBhdGNoIHRvdWNoZXMgYGZzL2Fmcy9kaXIuY2AsIGBmcy9hZnMvYWZzLmhgLCBhbmQgYGZzL2Fmcy9pbnRlcm5hbC5oYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgcmlnaHQgaW4gdGhlIGNvcmUgb2YgQUZTIGZ1bmN0aW9uYWxpdHkuIE5vIHN1cnByaXNlcyB0aGVyZS4KCk5vdywgbGV0JiMzOTtzIHNoaWZ0IGdlYXJzIGFuZCB2ZXJpZnkgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gYGZzL2Fmcy9kaXIuY2AuIEkmIzM5O2xsIHdhbnQgdG8gY2FyZWZ1bGx5IGV4YW1pbmUgdGhvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDg6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihzdGF0aWMgKT8oaW50fHZvaWR8c3RydWN0IGRlbnRyeSBcXCp8c3RydWN0IGlub2RlIFxcKikgYWZzXyhkX3JldmFsaWRhdGV8ZF9yZXZhbGlkYXRlX3JjdXx1bmxpbmt8cmVuYW1lKVxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Fmcy9kaXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9hZnMvZGlyLmM9MjU9c3RhdGljIGludCBhZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpO1xuZnMvYWZzL2Rpci5jOjI2OnN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsXG5mcy9hZnMvZGlyLmMtMjctXHRcdFx0ICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKTtcbi0tXG5mcy9hZnMvZGlyLmM9Mzg9c3RhdGljIGludCBhZnNfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7XG5mcy9hZnMvZGlyLmM6Mzk6c3RhdGljIGludCBhZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpO1xuZnMvYWZzL2Rpci5jLTQwLXN0YXRpYyBpbnQgYWZzX2xpbmsoc3RydWN0IGRlbnRyeSAqZnJvbSwgc3RydWN0IGlub2RlICpkaXIsXG4tLVxuZnMvYWZzL2Rpci5jPTQyPXN0YXRpYyBpbnQgYWZzX3N5bWxpbmsoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxuZnMvYWZzL2Rpci5jLTQzLVx0XHQgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb250ZW50KTtcbmZzL2Fmcy9kaXIuYzo0NDpzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpcixcbmZzL2Fmcy9kaXIuYy00NS1cdFx0ICAgICAgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwgc3RydWN0IGlub2RlICpuZXdfZGlyLFxuLS1cbmZzL2Fmcy9kaXIuYz05NTI9c3RhdGljIHN0cnVjdCBkZW50cnkgKmFmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9hZnMvZGlyLmMtMTAxMS0gKi9cbmZzL2Fmcy9kaXIuYzoxMDEyOnN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZV9yY3Uoc3RydWN0IGFmc192bm9kZSAqZHZub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG5mcy9hZnMvZGlyLmMtMTAxMy17XG4tLVxuZnMvYWZzL2Rpci5jLTEwNDgtICovXG5mcy9hZnMvZGlyLmM6MTA0OTpzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcbmZzL2Fmcy9kaXIuYy0xMDUwLVx0XHRcdCAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVuc2lnbmVkIGludCBmbGFncylcbi0tXG5mcy9hZnMvZGlyLmM9MTU0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGFmc19vcGVyYXRpb25fb3BzIGFmc191bmxpbmtfb3BlcmF0aW9uID0ge1xuLS1cbmZzL2Fmcy9kaXIuYy0xNTU0LSAqL1xuZnMvYWZzL2Rpci5jOjE1NTU6c3RhdGljIGludCBhZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG5mcy9hZnMvZGlyLmMtMTU1Ni17XG4tLVxuZnMvYWZzL2Rpci5jPTIwNjE9c3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfcmVuYW1lX2V4Y2hhbmdlX29wZXJhdGlvbiA9IHtcbi0tXG5mcy9hZnMvZGlyLmMtMjA3MS0gKi9cbmZzL2Fmcy9kaXIuYzoyMDcyOnN0YXRpYyBpbnQgYWZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLFxuZnMvYWZzL2Rpci5jLTIwNzMtXHRcdCAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksIHN0cnVjdCBpbm9kZSAqbmV3X2RpcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwODo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzU3CgkJCQkJCQlvdXRwdXQ6IDE1NAoJCQkJCQkJdGhvdWdodHM6IDM2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBBRlMgRGlyZWN0b3J5IE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBmdW5jdGlvbnMgbW9kaWZpZWQgaGVyZSDigJMgYGFmc19kX3JldmFsaWRhdGVgLCBgYWZzX2RfcmV2YWxpZGF0ZV9yY3VgLCBgYWZzX3VubGlua2AsIGFuZCBgYWZzX3JlbmFtZWAg4oCTIGFyZSBhbGwgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZy4gVGhleSByZXByZXNlbnQga2V5IGVudHJ5IHBvaW50cyB3aXRoaW4gdGhlIEFGUyBWRlMgb3BlcmF0aW9ucywgd2hpY2ggdGhpcyBwYXRjaCBpcyBkaXJlY3RseSBhbHRlcmluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLCBzbyBJJiMzOTtsbCBhbHNvIGluY2x1ZGUgYGFmc19sb29rdXBgLgoKVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSBjaGFuZ2luZyBob3cgdGhlIEFGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBtYW5hZ2UgY29uY3VycmVuY3kgYW5kIGludGVyYWN0IHdpdGggdGhlIFZGUyBsYXllci4gU3BlY2lmaWNhbGx5LCB0aGUgZGF0YSB2ZXJzaW9uIGlzIG1vdmluZyBmcm9tIGBkX2ZzZGF0YWAgdG8gYGRfdGltZWAsIGFuZCBgZF9mc2RhdGFgIGlzIG5vdyBiZWluZyB1c2VkIHRvIGJsb2NrIGxvb2t1cHMgYW5kIHJldmFsaWRhdGlvbnMgZHVyaW5nIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBvZiBBRlMsIHNvIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgYSBoaWdoIHJpc2suIEkgZXhwZWN0IGZ1enppbmcgdGhlc2UgZnVuY3Rpb25zIHdpbGwgcmV2ZWFsIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyByZWxhdGVkIHRvIHRoZXNlIG5ldyBsb2NraW5nIGNvbmRpdGlvbnMuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgb25seSBjb25maWd1cmF0aW9uIEkgbmVlZCBpcyBgQ09ORklHX0FGU19GU2AsIHdoaWNoIGlzIGdvb2QuIFRoYXQgc2ltcGxpZmllcyB0aGUgc2V0dXAuIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgc29saWQgc2V0IG9mIHRhcmdldHMgYW5kIGNvbmZpZ3MgdG8gbW92ZSBmb3J3YXJkIHdpdGggZnV6emluZy4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIGdldCBzdGFydGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA4OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZnNfZF9yZXZhbGlkYXRlJiMzNDssCiAgICAmIzM0O2Fmc19kX3JldmFsaWRhdGVfcmN1JiMzNDssCiAgICAmIzM0O2Fmc191bmxpbmsmIzM0OywKICAgICYjMzQ7YWZzX3JlbmFtZSYjMzQ7LAogICAgJiMzNDthZnNfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB0byB1c2UgYGRfdGltZWAgaW5zdGVhZCBvZiBgZF9mc2RhdGFgIGZvciBzdG9yaW5nIHRoZSBkYXRhIHZlcnNpb24sIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3VwcyBhbmQgcmV2YWxpZGF0aW9ucyBkdXJpbmcgcmVuYW1lIGFuZCB1bmxpbmsgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGUyBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb25jdXJyZW5jeSBhbmQgVkZTIGludGVyYWN0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZnNfZF9yZXZhbGlkYXRlJiMzNDssCiAgICAmIzM0O2Fmc19kX3JldmFsaWRhdGVfcmN1JiMzNDssCiAgICAmIzM0O2Fmc191bmxpbmsmIzM0OywKICAgICYjMzQ7YWZzX3JlbmFtZSYjMzQ7LAogICAgJiMzNDthZnNfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB0byB1c2UgYGRfdGltZWAgaW5zdGVhZCBvZiBgZF9mc2RhdGFgIGZvciBzdG9yaW5nIHRoZSBkYXRhIHZlcnNpb24sIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3VwcyBhbmQgcmV2YWxpZGF0aW9ucyBkdXJpbmcgcmVuYW1lIGFuZCB1bmxpbmsgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGUyBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb25jdXJyZW5jeSBhbmQgVkZTIGludGVyYWN0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6NTA6NTYuNDQxODM4NTc4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTMxNTY1MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWZzX2RfcmV2YWxpZGF0ZVwiLFxuICAgIFwiYWZzX2RfcmV2YWxpZGF0ZV9yY3VcIixcbiAgICBcImFmc191bmxpbmtcIixcbiAgICBcImFmc19yZW5hbWVcIixcbiAgICBcImFmc19sb29rdXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBRlMgZGlyZWN0b3J5IG9wZXJhdGlvbnMgdG8gdXNlIGBkX3RpbWVgIGluc3RlYWQgb2YgYGRfZnNkYXRhYCBmb3Igc3RvcmluZyB0aGUgZGF0YSB2ZXJzaW9uLCBhbmQgdXNlcyBgZF9mc2RhdGFgIHRvIGJsb2NrIGxvb2t1cHMgYW5kIHJldmFsaWRhdGlvbnMgZHVyaW5nIHJlbmFtZSBhbmQgdW5saW5rIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBBRlMgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGhhbmRsZXMgY29uY3VycmVuY3kgYW5kIFZGUyBpbnRlcmFjdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6NTA6NTYuNDQxODQ1NjM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzU1MzAwODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiZWNmNTQ5MjMwZjdjMDRlODZiOGRmOWYyYTZkYTNiMmFhMzRhMTYxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMDg6NTA6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvYWZzL2Fmcy5oIGIvZnMvYWZzL2Fmcy5oXFxuaW5kZXggZWMzZGIwMGJkMDgxM2MuLjAxOWU3N2IwODQ1OGUzIDEwMDY0NFxcbi0tLSBhL2ZzL2Fmcy9hZnMuaFxcbisrKyBiL2ZzL2Fmcy9hZnMuaFxcbkBAIC0yNiw2ICsyNiwxMyBAQCB0eXBlZGVmIHU2NFxcdFxcdFxcdGFmc192b2xpZF90O1xcbiB0eXBlZGVmIHU2NFxcdFxcdFxcdGFmc192bm9kZWlkX3Q7XFxuIHR5cGVkZWYgdTY0XFx0XFx0XFx0YWZzX2RhdGF2ZXJzaW9uX3Q7XFxuIFxcbisvKiBUaGlzIGlzIHN0b3JlZCBpbiAtXFx1MDAzZWRfZnNkYXRhIHRvIHN0b3AgZF9yZXZhbGlkYXRlIGxvb2tpbmcgYXQsXFxuKyAqIGFuZCBwb3NzaWJseSBjaGFuZ2luZywgLVxcdTAwM2VkX3RpbWUgb24gYSBkZW50cnkgd2hpY2ggaXMgYmVpbmcgbW92ZWRcXG4rICogYmV0d2VlbiBkaXJlY3RvcmllcywgYW5kIHRvIGJsb2NrIGxvb2t1cCBmb3IgZGVudHJ5IHRoYXQgaXNcXG4rICogYmVpbmcgcmVtb3ZlZCB3aXRob3V0IHNpbGx5LXJlbmFtZS5cXG4rICovXFxuKyNkZWZpbmUgQUZTX0ZTREFUQV9CTE9DS0VEICgodm9pZCopMSlcXG4rXFxuIHR5cGVkZWYgZW51bSB7XFxuIFxcdEFGU1ZMX1JXVk9MLFxcdFxcdFxcdC8qIHJlYWQvd3JpdGUgdm9sdW1lICovXFxuIFxcdEFGU1ZMX1JPVk9MLFxcdFxcdFxcdC8qIHJlYWQtb25seSB2b2x1bWUgKi9cXG5kaWZmIC0tZ2l0IGEvZnMvYWZzL2Rpci5jIGIvZnMvYWZzL2Rpci5jXFxuaW5kZXggNDk4Yjk5Y2NkZjBlMjcuLmU5YWFmNjYyMThlYTZiIDEwMDY0NFxcbi0tLSBhL2ZzL2Fmcy9kaXIuY1xcbisrKyBiL2ZzL2Fmcy9kaXIuY1xcbkBAIC03OTUsNyArNzk1LDcgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqYWZzX2RvX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbiBcXHRcXHRhZnNfZGlyX2l0ZXJhdGUoZGlyLCBcXHUwMDI2Y29va2llLVxcdTAwM2VjdHgsIE5VTEwsIFxcdTAwMjZkYXRhX3ZlcnNpb24pO1xcbiBcXHR9XFxuIFxcbi1cXHRkZW50cnktXFx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylkYXRhX3ZlcnNpb247XFxuK1xcdGRlbnRyeS1cXHUwMDNlZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpZGF0YV92ZXJzaW9uO1xcbiBcXG4gXFx0LyogQ2hlY2sgdG8gc2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBhbiBpbm9kZSBmb3IgdGhlIHByaW1hcnkgZmlkLiAqL1xcbiBcXHRpbm9kZSA9IGlsb29rdXA1KGRpci1cXHUwMDNlaV9zYiwgY29va2llLVxcdTAwM2VmaWRzWzFdLnZub2RlLFxcbkBAIC04ODIsOSArODgyLDkgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqYWZzX2RvX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbiBcXHR9XFxuIFxcbiBcXHRpZiAob3AtXFx1MDAzZWZpbGVbMF0uc2NiLmhhdmVfc3RhdHVzKVxcbi1cXHRcXHRkZW50cnktXFx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylvcC1cXHUwMDNlZmlsZVswXS5zY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcXG4rXFx0XFx0ZGVudHJ5LVxcdTAwM2VkX3RpbWUgPSAodW5zaWduZWQgbG9uZylvcC1cXHUwMDNlZmlsZVswXS5zY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRkZW50cnktXFx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylvcC1cXHUwMDNlZmlsZVswXS5kdl9iZWZvcmU7XFxuK1xcdFxcdGRlbnRyeS1cXHUwMDNlZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpb3AtXFx1MDAzZWZpbGVbMF0uZHZfYmVmb3JlO1xcbiBcXHRyZXQgPSBhZnNfcHV0X29wZXJhdGlvbihvcCk7XFxuIG91dDpcXG4gXFx0a2ZyZWUoY29va2llKTtcXG5AQCAtOTk3LDcgKzk5Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICphZnNfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuIFxcdF9kZWJ1ZyhcXFwic3BsaWNlICVwXFxcIiwgZGVudHJ5LVxcdTAwM2VkX2lub2RlKTtcXG4gXFx0ZCA9IGRfc3BsaWNlX2FsaWFzKGlub2RlLCBkZW50cnkpO1xcbiBcXHRpZiAoIUlTX0VSUl9PUl9OVUxMKGQpKSB7XFxuLVxcdFxcdGQtXFx1MDAzZWRfZnNkYXRhID0gZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YTtcXG4rXFx0XFx0ZC1cXHUwMDNlZF90aW1lID0gZGVudHJ5LVxcdTAwM2VkX3RpbWU7XFxuIFxcdFxcdHRyYWNlX2Fmc19sb29rdXAoZHZub2RlLCBcXHUwMDI2ZC1cXHUwMDNlZF9uYW1lLCBcXHUwMDI2ZmlkKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0dHJhY2VfYWZzX2xvb2t1cChkdm5vZGUsIFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbmFtZSwgXFx1MDAyNmZpZCk7XFxuQEAgLTEwMjEsMTMgKzEwMjEsMTcgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlX3JjdShzdHJ1Y3QgYWZzX3Zub2RlICpkdm5vZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4gXFx0aWYgKCFhZnNfY2hlY2tfdmFsaWRpdHkoZHZub2RlKSlcXG4gXFx0XFx0cmV0dXJuIC1FQ0hJTEQ7XFxuIFxcbitcXHQvKiBBIHJlbmFtZS91bmxpbmsgaXMgcGVuZGluZyAqL1xcbitcXHRpZiAoZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YSlcXG4rXFx0XFx0cmV0dXJuIC1FQ0hJTEQ7XFxuK1xcbiBcXHQvKiBXZSBvbmx5IG5lZWQgdG8gaW52YWxpZGF0ZSBhIGRlbnRyeSBpZiB0aGUgc2VydmVyJ3MgY29weSBjaGFuZ2VkXFxuIFxcdCAqIGJlaGluZCBvdXIgYmFjay4gIElmIHdlIG1hZGUgdGhlIGNoYW5nZSwgaXQncyBubyBwcm9ibGVtLiAgTm90ZSB0aGF0XFxuIFxcdCAqIG9uIGEgMzItYml0IHN5c3RlbSwgd2Ugb25seSBoYXZlIDMyIGJpdHMgaW4gdGhlIGRlbnRyeSB0byBzdG9yZSB0aGVcXG4gXFx0ICogdmVyc2lvbi5cXG4gXFx0ICovXFxuIFxcdGRpcl92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGR2bm9kZS1cXHUwMDNlc3RhdHVzLmRhdGFfdmVyc2lvbik7XFxuLVxcdGRlX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YSk7XFxuK1xcdGRlX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZGVudHJ5LVxcdTAwM2VkX3RpbWUpO1xcbiBcXHRpZiAoZGVfdmVyc2lvbiAhPSBkaXJfdmVyc2lvbikge1xcbiBcXHRcXHRkaXJfdmVyc2lvbiA9IChsb25nKVJFQURfT05DRShkdm5vZGUtXFx1MDAzZWludmFsaWRfYmVmb3JlKTtcXG4gXFx0XFx0aWYgKGRlX3ZlcnNpb24gLSBkaXJfdmVyc2lvbiBcXHUwMDNjIDApXFxuQEAgLTEwNTYsNiArMTA2MCwxMCBAQCBzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcXG4gXFx0aWYgKGZsYWdzIFxcdTAwMjYgTE9PS1VQX1JDVSlcXG4gXFx0XFx0cmV0dXJuIGFmc19kX3JldmFsaWRhdGVfcmN1KGRpciwgZGVudHJ5KTtcXG4gXFxuK1xcdC8qIFdhaXQgZm9yIHJlbmFtZS91bmxpbmsgdG8gY29tcGxldGUgKi9cXG4rd2FpdF9mb3JfcmVuYW1lOlxcbitcXHR3YWl0X3Zhcl9ldmVudChcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YSwgZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YSA9PSBOVUxMKTtcXG4rXFxuIFxcdGlmIChkX3JlYWxseV9pc19wb3NpdGl2ZShkZW50cnkpKSB7XFxuIFxcdFxcdHZub2RlID0gQUZTX0ZTX0koZF9pbm9kZShkZW50cnkpKTtcXG4gXFx0XFx0X2VudGVyKFxcXCJ7dj17JWxseDolbGx1fSBuPSVwZCBmbD0lbHh9LFxcXCIsXFxuQEAgLTEwODcsNyArMTA5NSw3IEBAIHN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9kaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lLFxcbiBcXHQgKiB2ZXJzaW9uLlxcbiBcXHQgKi9cXG4gXFx0ZGlyX3ZlcnNpb24gPSBkaXItXFx1MDAzZXN0YXR1cy5kYXRhX3ZlcnNpb247XFxuLVxcdGRlX3ZlcnNpb24gPSAobG9uZylkZW50cnktXFx1MDAzZWRfZnNkYXRhO1xcbitcXHRkZV92ZXJzaW9uID0gKGxvbmcpZGVudHJ5LVxcdTAwM2VkX3RpbWU7XFxuIFxcdGlmIChkZV92ZXJzaW9uID09IChsb25nKWRpcl92ZXJzaW9uKVxcbiBcXHRcXHRnb3RvIG91dF92YWxpZF9ub3VwZGF0ZTtcXG4gXFxuQEAgLTExNDgsNyArMTE1NiwxMyBAQCBzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcXG4gXFx0fVxcbiBcXG4gb3V0X3ZhbGlkOlxcbi1cXHRkZW50cnktXFx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylkaXJfdmVyc2lvbjtcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuK1xcdGlmIChkZW50cnktXFx1MDAzZWRfZnNkYXRhKSB7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuK1xcdFxcdGdvdG8gd2FpdF9mb3JfcmVuYW1lO1xcbitcXHR9XFxuK1xcdGRlbnRyeS1cXHUwMDNlZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpZGlyX3ZlcnNpb247XFxuK1xcdHNwaW5fdW5sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuIG91dF92YWxpZF9ub3VwZGF0ZTpcXG4gXFx0a2V5X3B1dChrZXkpO1xcbiBcXHRfbGVhdmUoXFxcIiA9IDEgW3ZhbGlkXVxcXCIpO1xcbkBAIC0xNTIzLDggKzE1MzcsNyBAQCBzdGF0aWMgdm9pZCBhZnNfdW5saW5rX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcXG4gc3RhdGljIHZvaWQgYWZzX3VubGlua19wdXQoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxcbiB7XFxuIFxcdF9lbnRlcihcXFwib3A9JTA4eFxcXCIsIG9wLVxcdTAwM2VkZWJ1Z19pZCk7XFxuLVxcdGlmIChvcC1cXHUwMDNldW5saW5rLm5lZWRfcmVoYXNoIFxcdTAwMjZcXHUwMDI2IGFmc19vcF9lcnJvcihvcCkgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IGFmc19vcF9lcnJvcihvcCkgIT0gLUVOT0VOVClcXG4tXFx0XFx0ZF9yZWhhc2gob3AtXFx1MDAzZWRlbnRyeSk7XFxuK1xcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcXHUwMDI2b3AtXFx1MDAzZWRlbnRyeS1cXHUwMDNlZF9mc2RhdGEsIE5VTEwpO1xcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGFmc19vcGVyYXRpb25fb3BzIGFmc191bmxpbmtfb3BlcmF0aW9uID0ge1xcbkBAIC0xNTc4LDExICsxNTkxLDcgQEAgc3RhdGljIGludCBhZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuIFxcdFxcdGFmc19vcF9zZXRfZXJyb3Iob3AsIGFmc19zaWxseXJlbmFtZShkdm5vZGUsIHZub2RlLCBkZW50cnksIG9wLVxcdTAwM2VrZXkpKTtcXG4gXFx0XFx0Z290byBlcnJvcjtcXG4gXFx0fVxcbi1cXHRpZiAoIWRfdW5oYXNoZWQoZGVudHJ5KSkge1xcbi1cXHRcXHQvKiBQcmV2ZW50IGEgcmFjZSB3aXRoIFJDVSBsb29rdXAuICovXFxuLVxcdFxcdF9fZF9kcm9wKGRlbnRyeSk7XFxuLVxcdFxcdG9wLVxcdTAwM2V1bmxpbmsubmVlZF9yZWhhc2ggPSB0cnVlO1xcbi1cXHR9XFxuK1xcdGRlbnRyeS1cXHUwMDNlZF9mc2RhdGEgPSBBRlNfRlNEQVRBX0JMT0NLRUQ7XFxuIFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuIFxcbiBcXHRvcC1cXHUwMDNlZmlsZVsxXS52bm9kZSA9IHZub2RlO1xcbkBAIC0xODg5LDkgKzE4OTgsMTAgQEAgc3RhdGljIHZvaWQgYWZzX3JlbmFtZV9lZGl0X2RpcihzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXFxuIFxcbiBcXHRfZW50ZXIoXFxcIm9wPSUwOHhcXFwiLCBvcC1cXHUwMDNlZGVidWdfaWQpO1xcbiBcXG4tXFx0aWYgKG9wLVxcdTAwM2VyZW5hbWUucmVoYXNoKSB7XFxuLVxcdFxcdGRfcmVoYXNoKG9wLVxcdTAwM2VyZW5hbWUucmVoYXNoKTtcXG4tXFx0XFx0b3AtXFx1MDAzZXJlbmFtZS5yZWhhc2ggPSBOVUxMO1xcbitcXHRpZiAob3AtXFx1MDAzZXJlbmFtZS51bmJsb2NrKSB7XFxuK1xcdFxcdC8qIFJlbmFtZSBoYXMgZmluaXNoZWQsIHNvIHVubG9ja3MgbG9va3VwcyB0byB0YXJnZXQgKi9cXG4rXFx0XFx0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFxcdTAwMjZvcC1cXHUwMDNlcmVuYW1lLnVuYmxvY2stXFx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcXG4rXFx0XFx0b3AtXFx1MDAzZXJlbmFtZS51bmJsb2NrID0gTlVMTDtcXG4gXFx0fVxcbiBcXG4gXFx0ZnNjYWNoZV9iZWdpbl93cml0ZV9vcGVyYXRpb24oXFx1MDAyNm9yaWdfY3JlcywgYWZzX3Zub2RlX2NhY2hlKG9yaWdfZHZub2RlKSk7XFxuQEAgLTE5MzUsNyArMTk0NSw3IEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bmV3X2lub2RlLVxcdTAwM2VpX2xvY2spO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJpZXMgdG8gcmVmbGVjdCB0aGVpclxcbitcXHQvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX3RpbWUgb24gdGhlIGRlbnRyaWVzIHRvIHJlZmxlY3QgdGhlaXJcXG4gXFx0ICogbmV3IHBhcmVudCdzIGRhdGFfdmVyc2lvbi5cXG4gXFx0ICovXFxuIFxcdGFmc191cGRhdGVfZGVudHJ5X3ZlcnNpb24ob3AsIG5ld19kdnAsIG9wLVxcdTAwM2VkZW50cnkpO1xcbkBAIC0xOTc0LDYgKzE5ODQsOSBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2V4Y2hhbmdlX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcXG4gXFxuIFxcdFxcdGRfZXhjaGFuZ2Uob2xkX2RlbnRyeSwgbmV3X2RlbnRyeSk7XFxuIFxcdFxcdHVwX3dyaXRlKFxcdTAwMjZvcmlnX2R2bm9kZS1cXHUwMDNldmFsaWRhdGVfbG9jayk7XFxuK1xcdC8qIGRlbnRyeSBoYXMgYmVlbiBtb3ZlZCwgc28gZF92YWxpZGF0ZSBjYW4gc2FmZWx5IHByb2NlZWQgKi9cXG4rXFx0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFxcdTAwMjZvbGRfZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YSwgTlVMTCk7XFxuK1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRkb3duX3dyaXRlKFxcdTAwMjZvcmlnX2R2bm9kZS1cXHUwMDNldmFsaWRhdGVfbG9jayk7XFxuIFxcdFxcdGlmICh0ZXN0X2JpdChBRlNfVk5PREVfRElSX1ZBTElELCBcXHUwMDI2b3JpZ19kdm5vZGUtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbkBAIC0yMDEzLDExICsyMDI2LDEwIEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZXhjaGFuZ2VfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxcbiBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX3B1dChzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXFxuIHtcXG4gXFx0X2VudGVyKFxcXCJvcD0lMDh4XFxcIiwgb3AtXFx1MDAzZWRlYnVnX2lkKTtcXG4tXFx0aWYgKG9wLVxcdTAwM2VyZW5hbWUucmVoYXNoKVxcbi1cXHRcXHRkX3JlaGFzaChvcC1cXHUwMDNlcmVuYW1lLnJlaGFzaCk7XFxuK1xcdGlmIChvcC1cXHUwMDNlcmVuYW1lLnVuYmxvY2spXFxuK1xcdFxcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcXHUwMDI2b3AtXFx1MDAzZXJlbmFtZS51bmJsb2NrLVxcdTAwM2VkX2ZzZGF0YSwgTlVMTCk7XFxuK1xcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcXHUwMDI2b3AtXFx1MDAzZWRlbnRyeS1cXHUwMDNlZF9mc2RhdGEsIE5VTEwpO1xcbiBcXHRkcHV0KG9wLVxcdTAwM2VyZW5hbWUudG1wKTtcXG4tXFx0aWYgKGFmc19vcF9lcnJvcihvcCkpXFxuLVxcdFxcdGRfcmVoYXNoKG9wLVxcdTAwM2VkZW50cnkpO1xcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGFmc19vcGVyYXRpb25fb3BzIGFmc19yZW5hbWVfb3BlcmF0aW9uID0ge1xcbkBAIC0yMTI1LDcgKzIxMzcsNiBAQCBzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpcixcXG4gXFx0XFx0b3AtXFx1MDAzZW9wc1xcdFxcdD0gXFx1MDAyNmFmc19yZW5hbWVfbm9yZXBsYWNlX29wZXJhdGlvbjtcXG4gXFx0fSBlbHNlIGlmIChmbGFncyBcXHUwMDI2IFJFTkFNRV9FWENIQU5HRSkge1xcbiBcXHRcXHRvcC1cXHUwMDNlb3BzXFx0XFx0PSBcXHUwMDI2YWZzX3JlbmFtZV9leGNoYW5nZV9vcGVyYXRpb247XFxuLVxcdFxcdGRfZHJvcChuZXdfZGVudHJ5KTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0LyogSWYgd2UgbWlnaHQgZGlzcGxhY2UgdGhlIHRhcmdldCwgd2UgbWlnaHQgbmVlZCB0byBkbyBzaWxseVxcbiBcXHRcXHQgKiByZW5hbWUuXFxuQEAgLTIxMzksMTQgKzIxNTAsMTIgQEAgc3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoZF9pc19wb3NpdGl2ZShuZXdfZGVudHJ5KSBcXHUwMDI2XFx1MDAyNiAhZF9pc19kaXIobmV3X2RlbnRyeSkpIHtcXG4gXFx0XFx0XFx0LyogVG8gcHJldmVudCBhbnkgbmV3IHJlZmVyZW5jZXMgdG8gdGhlIHRhcmdldCBkdXJpbmdcXG4tXFx0XFx0XFx0ICogdGhlIHJlbmFtZSwgd2UgdW5oYXNoIHRoZSBkZW50cnkgaW4gYWR2YW5jZS5cXG4rXFx0XFx0XFx0ICogdGhlIHJlbmFtZSwgd2Ugc2V0IGRfZnNkYXRhIHdoaWNoIGFmc19kX3JldmFsaWRhdGUgd2lsbCB3YWl0IGZvci5cXG4rXFx0XFx0XFx0ICogZF9sb2NrIGVuc3VyZXMgZF9jb3VudCgpIGFuZCAtXFx1MDAzZWRfZnNkYXRhIGFyZSBjb25zaXN0ZW50LlxcbiBcXHRcXHRcXHQgKi9cXG4tXFx0XFx0XFx0aWYgKCFkX3VuaGFzaGVkKG5ld19kZW50cnkpKSB7XFxuLVxcdFxcdFxcdFxcdGRfZHJvcChuZXdfZGVudHJ5KTtcXG4tXFx0XFx0XFx0XFx0b3AtXFx1MDAzZXJlbmFtZS5yZWhhc2ggPSBuZXdfZGVudHJ5O1xcbi1cXHRcXHRcXHR9XFxuLVxcbitcXHRcXHRcXHRzcGluX2xvY2soXFx1MDAyNm5ld19kZW50cnktXFx1MDAzZWRfbG9jayk7XFxuIFxcdFxcdFxcdGlmIChkX2NvdW50KG5ld19kZW50cnkpIFxcdTAwM2UgMikge1xcbitcXHRcXHRcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bmV3X2RlbnRyeS1cXHUwMDNlZF9sb2NrKTtcXG4gXFx0XFx0XFx0XFx0LyogY29weSB0aGUgdGFyZ2V0IGRlbnRyeSdzIG5hbWUgKi9cXG4gXFx0XFx0XFx0XFx0b3AtXFx1MDAzZXJlbmFtZS50bXAgPSBkX2FsbG9jKG5ld19kZW50cnktXFx1MDAzZWRfcGFyZW50LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNm5ld19kZW50cnktXFx1MDAzZWRfbmFtZSk7XFxuQEAgLTIxNjQsMjIgKzIxNzMsMjcgQEAgc3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXFxuIFxcdFxcdFxcdFxcdH1cXG4gXFxuIFxcdFxcdFxcdFxcdG9wLVxcdTAwM2VkZW50cnlfMiA9IG9wLVxcdTAwM2VyZW5hbWUudG1wO1xcbi1cXHRcXHRcXHRcXHRvcC1cXHUwMDNlcmVuYW1lLnJlaGFzaCA9IE5VTEw7XFxuIFxcdFxcdFxcdFxcdG9wLVxcdTAwM2VyZW5hbWUubmV3X25lZ2F0aXZlID0gdHJ1ZTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0LyogQmxvY2sgYW55IGxvb2t1cHMgdG8gdGFyZ2V0IHVudGlsIHRoZSByZW5hbWUgY29tcGxldGVzICovXFxuK1xcdFxcdFxcdFxcdG5ld19kZW50cnktXFx1MDAzZWRfZnNkYXRhID0gQUZTX0ZTREFUQV9CTE9DS0VEO1xcbitcXHRcXHRcXHRcXHRvcC1cXHUwMDNlcmVuYW1lLnVuYmxvY2sgPSBuZXdfZGVudHJ5O1xcbitcXHRcXHRcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bmV3X2RlbnRyeS1cXHUwMDNlZF9sb2NrKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuIFxcdC8qIFRoaXMgYml0IGlzIHBvdGVudGlhbGx5IG5hc3R5IGFzIHRoZXJlJ3MgYSBwb3RlbnRpYWwgcmFjZSB3aXRoXFxuLVxcdCAqIGFmc19kX3JldmFsaWRhdGV7LF9yY3V9KCkuICBXZSBoYXZlIHRvIGNoYW5nZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJ5XFxuK1xcdCAqIGFmc19kX3JldmFsaWRhdGV7LF9yY3V9KCkuICBXZSBoYXZlIHRvIGNoYW5nZSBkX3RpbWVfIG9uIHRoZSBkZW50cnlcXG4gXFx0ICogdG8gcmVmbGVjdCBpdCdzIG5ldyBwYXJlbnQncyBuZXcgZGF0YV92ZXJzaW9uIGFmdGVyIHRoZSBvcCwgYnV0XFxuIFxcdCAqIGRfcmV2YWxpZGF0ZSBtYXkgc2VlIG9sZF9kZW50cnkgYmV0d2VlbiB0aGUgb3AgaGF2aW5nIHRha2VuIHBsYWNlXFxuIFxcdCAqIGFuZCB0aGUgdmVyc2lvbiBiZWluZyB1cGRhdGVkLlxcbiBcXHQgKlxcbi1cXHQgKiBTbyBkcm9wIHRoZSBvbGRfZGVudHJ5IGZvciBub3cgdG8gbWFrZSBvdGhlciB0aHJlYWRzIGdvIHRocm91Z2hcXG4tXFx0ICogbG9va3VwIGluc3RlYWQgLSB3aGljaCB3ZSBob2xkIGEgbG9jayBhZ2FpbnN0LlxcbitcXHQgKiBTbyBibG9jayByZXZhbGlkYXRlIG9uIHRoZSBvbGRfZGVudHJ5IHVudGlsIHRoZSByZW5hbWUgY29tcGxldGVzLlxcbiBcXHQgKi9cXG4tXFx0ZF9kcm9wKG9sZF9kZW50cnkpO1xcbitcXHRzcGluX2xvY2soXFx1MDAyNm9sZF9kZW50cnktXFx1MDAzZWRfbG9jayk7XFxuK1xcdG9sZF9kZW50cnktXFx1MDAzZWRfZnNkYXRhID0gQUZTX0ZTREFUQV9CTE9DS0VEO1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2b2xkX2RlbnRyeS1cXHUwMDNlZF9sb2NrKTtcXG4gXFxuIFxcdHJldCA9IGFmc19kb19zeW5jX29wZXJhdGlvbihvcCk7XFxuIFxcdGlmIChyZXQgPT0gLUVOT1RTVVBQKVxcbmRpZmYgLS1naXQgYS9mcy9hZnMvaW50ZXJuYWwuaCBiL2ZzL2Fmcy9pbnRlcm5hbC5oXFxuaW5kZXggMGI3MmE4NTY2Mjk5OTIuLmEwYWZlNTUyYWU2NDZiIDEwMDY0NFxcbi0tLSBhL2ZzL2Fmcy9pbnRlcm5hbC5oXFxuKysrIGIvZnMvYWZzL2ludGVybmFsLmhcXG5AQCAtOTAwLDEwICs5MDAsNyBAQCBzdHJ1Y3QgYWZzX29wZXJhdGlvbiB7XFxuIFxcdFxcdFxcdHN0cnVjdCBhZnNfc3ltbGluayAqc3ltbGluaztcXG4gXFx0XFx0fSBjcmVhdGU7XFxuIFxcdFxcdHN0cnVjdCB7XFxuLVxcdFxcdFxcdGJvb2xcXHRuZWVkX3JlaGFzaDtcXG4tXFx0XFx0fSB1bmxpbms7XFxuLVxcdFxcdHN0cnVjdCB7XFxuLVxcdFxcdFxcdHN0cnVjdCBkZW50cnlcXHQqcmVoYXNoO1xcbitcXHRcXHRcXHRzdHJ1Y3QgZGVudHJ5XFx0KnVuYmxvY2s7XFxuIFxcdFxcdFxcdHN0cnVjdCBkZW50cnlcXHQqdG1wO1xcbiBcXHRcXHRcXHR1bnNpZ25lZCBpbnRcXHRyZW5hbWVfZmxhZ3M7XFxuIFxcdFxcdFxcdGJvb2xcXHRcXHRuZXdfbmVnYXRpdmU7XFxuQEAgLTE3NjQsMTcgKzE3NjEsMTcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKkFGU19WTk9ERV9UT19JKHN0cnVjdCBhZnNfdm5vZGUgKnZub2RlKVxcbiB9XFxuIFxcbiAvKlxcbi0gKiBOb3RlIHRoYXQgYSBkZW50cnkgZ290IGNoYW5nZWQuICBXZSBuZWVkIHRvIHNldCBkX2ZzZGF0YSB0byB0aGUgZGF0YSB2ZXJzaW9uXFxuKyAqIE5vdGUgdGhhdCBhIGRlbnRyeSBnb3QgY2hhbmdlZC4gIFdlIG5lZWQgdG8gc2V0IGRfdGltZSB0byB0aGUgZGF0YSB2ZXJzaW9uXFxuICAqIG51bWJlciBkZXJpdmVkIGZyb20gdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uLiAgSXQgZG9lc24ndCBtYXR0ZXIgaWZcXG4tICogZF9mc2RhdGEgZ29lcyBiYWNrd2FyZHMgYXMgd2UnbGwganVzdCByZXZhbGlkYXRlLlxcbisgKiBkX3RpbWUgZ29lcyBiYWNrd2FyZHMgYXMgd2UnbGwganVzdCByZXZhbGlkYXRlLlxcbiAgKi9cXG4gc3RhdGljIGlubGluZSB2b2lkIGFmc191cGRhdGVfZGVudHJ5X3ZlcnNpb24oc3RydWN0IGFmc19vcGVyYXRpb24gKm9wLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBhZnNfdm5vZGVfcGFyYW0gKmRpcl92cCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuIHtcXG4gXFx0aWYgKCFvcC1cXHUwMDNlY3VtdWxfZXJyb3IuZXJyb3IpXFxuLVxcdFxcdGRlbnRyeS1cXHUwMDNlZF9mc2RhdGEgPVxcbi1cXHRcXHRcXHQodm9pZCAqKSh1bnNpZ25lZCBsb25nKWRpcl92cC1cXHUwMDNlc2NiLnN0YXR1cy5kYXRhX3ZlcnNpb247XFxuK1xcdFxcdGRlbnRyeS1cXHUwMDNlZF90aW1lID1cXG4rXFx0XFx0XFx0KHVuc2lnbmVkIGxvbmcpZGlyX3ZwLVxcdTAwM2VzY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcXG4gfVxcbiBcXG4gLypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6NTA6NTYuNzE4MTMzMDc3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzAzNjg1MjgxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhZnNfZF9yZXZhbGlkYXRlXCIsXG4gICAgXCJhZnNfZF9yZXZhbGlkYXRlX3JjdVwiLFxuICAgIFwiYWZzX3VubGlua1wiLFxuICAgIFwiYWZzX3JlbmFtZVwiLFxuICAgIFwiYWZzX2xvb2t1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEFGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB0byB1c2UgYGRfdGltZWAgaW5zdGVhZCBvZiBgZF9mc2RhdGFgIGZvciBzdG9yaW5nIHRoZSBkYXRhIHZlcnNpb24sIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3VwcyBhbmQgcmV2YWxpZGF0aW9ucyBkdXJpbmcgcmVuYW1lIGFuZCB1bmxpbmsgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGUyBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb25jdXJyZW5jeSBhbmQgVkZTIGludGVyYWN0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJlY2Y1NDkyMzBmN2MwNGU4NmI4ZGY5ZjJhNmRhM2IyYWEzNGExNjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA4OjUwOjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYWZzL2Fmcy5oIGIvZnMvYWZzL2Fmcy5oXG5pbmRleCBlYzNkYjAwYmQwODEzYy4uMDE5ZTc3YjA4NDU4ZTMgMTAwNjQ0XG4tLS0gYS9mcy9hZnMvYWZzLmhcbisrKyBiL2ZzL2Fmcy9hZnMuaFxuQEAgLTI2LDYgKzI2LDEzIEBAIHR5cGVkZWYgdTY0XHRcdFx0YWZzX3ZvbGlkX3Q7XG4gdHlwZWRlZiB1NjRcdFx0XHRhZnNfdm5vZGVpZF90O1xuIHR5cGVkZWYgdTY0XHRcdFx0YWZzX2RhdGF2ZXJzaW9uX3Q7XG4gXG4rLyogVGhpcyBpcyBzdG9yZWQgaW4gLVx1MDAzZWRfZnNkYXRhIHRvIHN0b3AgZF9yZXZhbGlkYXRlIGxvb2tpbmcgYXQsXG4rICogYW5kIHBvc3NpYmx5IGNoYW5naW5nLCAtXHUwMDNlZF90aW1lIG9uIGEgZGVudHJ5IHdoaWNoIGlzIGJlaW5nIG1vdmVkXG4rICogYmV0d2VlbiBkaXJlY3RvcmllcywgYW5kIHRvIGJsb2NrIGxvb2t1cCBmb3IgZGVudHJ5IHRoYXQgaXNcbisgKiBiZWluZyByZW1vdmVkIHdpdGhvdXQgc2lsbHktcmVuYW1lLlxuKyAqL1xuKyNkZWZpbmUgQUZTX0ZTREFUQV9CTE9DS0VEICgodm9pZCopMSlcbitcbiB0eXBlZGVmIGVudW0ge1xuIFx0QUZTVkxfUldWT0wsXHRcdFx0LyogcmVhZC93cml0ZSB2b2x1bWUgKi9cbiBcdEFGU1ZMX1JPVk9MLFx0XHRcdC8qIHJlYWQtb25seSB2b2x1bWUgKi9cbmRpZmYgLS1naXQgYS9mcy9hZnMvZGlyLmMgYi9mcy9hZnMvZGlyLmNcbmluZGV4IDQ5OGI5OWNjZGYwZTI3Li5lOWFhZjY2MjE4ZWE2YiAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9kaXIuY1xuKysrIGIvZnMvYWZzL2Rpci5jXG5AQCAtNzk1LDcgKzc5NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmFmc19kb19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdFx0YWZzX2Rpcl9pdGVyYXRlKGRpciwgXHUwMDI2Y29va2llLVx1MDAzZWN0eCwgTlVMTCwgXHUwMDI2ZGF0YV92ZXJzaW9uKTtcbiBcdH1cbiBcbi1cdGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpZGF0YV92ZXJzaW9uO1xuK1x0ZGVudHJ5LVx1MDAzZWRfdGltZSA9ICh1bnNpZ25lZCBsb25nKWRhdGFfdmVyc2lvbjtcbiBcbiBcdC8qIENoZWNrIHRvIHNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYW4gaW5vZGUgZm9yIHRoZSBwcmltYXJ5IGZpZC4gKi9cbiBcdGlub2RlID0gaWxvb2t1cDUoZGlyLVx1MDAzZWlfc2IsIGNvb2tpZS1cdTAwM2VmaWRzWzFdLnZub2RlLFxuQEAgLTg4Miw5ICs4ODIsOSBAQCBzdGF0aWMgc3RydWN0IGlub2RlICphZnNfZG9fbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHR9XG4gXG4gXHRpZiAob3AtXHUwMDNlZmlsZVswXS5zY2IuaGF2ZV9zdGF0dXMpXG4tXHRcdGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpb3AtXHUwMDNlZmlsZVswXS5zY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcbitcdFx0ZGVudHJ5LVx1MDAzZWRfdGltZSA9ICh1bnNpZ25lZCBsb25nKW9wLVx1MDAzZWZpbGVbMF0uc2NiLnN0YXR1cy5kYXRhX3ZlcnNpb247XG4gXHRlbHNlXG4tXHRcdGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpb3AtXHUwMDNlZmlsZVswXS5kdl9iZWZvcmU7XG4rXHRcdGRlbnRyeS1cdTAwM2VkX3RpbWUgPSAodW5zaWduZWQgbG9uZylvcC1cdTAwM2VmaWxlWzBdLmR2X2JlZm9yZTtcbiBcdHJldCA9IGFmc19wdXRfb3BlcmF0aW9uKG9wKTtcbiBvdXQ6XG4gXHRrZnJlZShjb29raWUpO1xuQEAgLTk5Nyw3ICs5OTcsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYWZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0X2RlYnVnKFwic3BsaWNlICVwXCIsIGRlbnRyeS1cdTAwM2VkX2lub2RlKTtcbiBcdGQgPSBkX3NwbGljZV9hbGlhcyhpbm9kZSwgZGVudHJ5KTtcbiBcdGlmICghSVNfRVJSX09SX05VTEwoZCkpIHtcbi1cdFx0ZC1cdTAwM2VkX2ZzZGF0YSA9IGRlbnRyeS1cdTAwM2VkX2ZzZGF0YTtcbitcdFx0ZC1cdTAwM2VkX3RpbWUgPSBkZW50cnktXHUwMDNlZF90aW1lO1xuIFx0XHR0cmFjZV9hZnNfbG9va3VwKGR2bm9kZSwgXHUwMDI2ZC1cdTAwM2VkX25hbWUsIFx1MDAyNmZpZCk7XG4gXHR9IGVsc2Uge1xuIFx0XHR0cmFjZV9hZnNfbG9va3VwKGR2bm9kZSwgXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbmFtZSwgXHUwMDI2ZmlkKTtcbkBAIC0xMDIxLDEzICsxMDIxLDE3IEBAIHN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZV9yY3Uoc3RydWN0IGFmc192bm9kZSAqZHZub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHRpZiAoIWFmc19jaGVja192YWxpZGl0eShkdm5vZGUpKVxuIFx0XHRyZXR1cm4gLUVDSElMRDtcbiBcbitcdC8qIEEgcmVuYW1lL3VubGluayBpcyBwZW5kaW5nICovXG4rXHRpZiAoZGVudHJ5LVx1MDAzZWRfZnNkYXRhKVxuK1x0XHRyZXR1cm4gLUVDSElMRDtcbitcbiBcdC8qIFdlIG9ubHkgbmVlZCB0byBpbnZhbGlkYXRlIGEgZGVudHJ5IGlmIHRoZSBzZXJ2ZXIncyBjb3B5IGNoYW5nZWRcbiBcdCAqIGJlaGluZCBvdXIgYmFjay4gIElmIHdlIG1hZGUgdGhlIGNoYW5nZSwgaXQncyBubyBwcm9ibGVtLiAgTm90ZSB0aGF0XG4gXHQgKiBvbiBhIDMyLWJpdCBzeXN0ZW0sIHdlIG9ubHkgaGF2ZSAzMiBiaXRzIGluIHRoZSBkZW50cnkgdG8gc3RvcmUgdGhlXG4gXHQgKiB2ZXJzaW9uLlxuIFx0ICovXG4gXHRkaXJfdmVyc2lvbiA9IChsb25nKVJFQURfT05DRShkdm5vZGUtXHUwMDNlc3RhdHVzLmRhdGFfdmVyc2lvbik7XG4tXHRkZV92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSk7XG4rXHRkZV92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGRlbnRyeS1cdTAwM2VkX3RpbWUpO1xuIFx0aWYgKGRlX3ZlcnNpb24gIT0gZGlyX3ZlcnNpb24pIHtcbiBcdFx0ZGlyX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZHZub2RlLVx1MDAzZWludmFsaWRfYmVmb3JlKTtcbiBcdFx0aWYgKGRlX3ZlcnNpb24gLSBkaXJfdmVyc2lvbiBcdTAwM2MgMClcbkBAIC0xMDU2LDYgKzEwNjAsMTAgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsXG4gXHRpZiAoZmxhZ3MgXHUwMDI2IExPT0tVUF9SQ1UpXG4gXHRcdHJldHVybiBhZnNfZF9yZXZhbGlkYXRlX3JjdShkaXIsIGRlbnRyeSk7XG4gXG4rXHQvKiBXYWl0IGZvciByZW5hbWUvdW5saW5rIHRvIGNvbXBsZXRlICovXG4rd2FpdF9mb3JfcmVuYW1lOlxuK1x0d2FpdF92YXJfZXZlbnQoXHUwMDI2ZGVudHJ5LVx1MDAzZWRfZnNkYXRhLCBkZW50cnktXHUwMDNlZF9mc2RhdGEgPT0gTlVMTCk7XG4rXG4gXHRpZiAoZF9yZWFsbHlfaXNfcG9zaXRpdmUoZGVudHJ5KSkge1xuIFx0XHR2bm9kZSA9IEFGU19GU19JKGRfaW5vZGUoZGVudHJ5KSk7XG4gXHRcdF9lbnRlcihcInt2PXslbGx4OiVsbHV9IG49JXBkIGZsPSVseH0sXCIsXG5AQCAtMTA4Nyw3ICsxMDk1LDcgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsXG4gXHQgKiB2ZXJzaW9uLlxuIFx0ICovXG4gXHRkaXJfdmVyc2lvbiA9IGRpci1cdTAwM2VzdGF0dXMuZGF0YV92ZXJzaW9uO1xuLVx0ZGVfdmVyc2lvbiA9IChsb25nKWRlbnRyeS1cdTAwM2VkX2ZzZGF0YTtcbitcdGRlX3ZlcnNpb24gPSAobG9uZylkZW50cnktXHUwMDNlZF90aW1lO1xuIFx0aWYgKGRlX3ZlcnNpb24gPT0gKGxvbmcpZGlyX3ZlcnNpb24pXG4gXHRcdGdvdG8gb3V0X3ZhbGlkX25vdXBkYXRlO1xuIFxuQEAgLTExNDgsNyArMTE1NiwxMyBAQCBzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcbiBcdH1cbiBcbiBvdXRfdmFsaWQ6XG4tXHRkZW50cnktXHUwMDNlZF9mc2RhdGEgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKWRpcl92ZXJzaW9uO1xuK1x0c3Bpbl9sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuK1x0aWYgKGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSkge1xuK1x0XHRzcGluX3VubG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbitcdFx0Z290byB3YWl0X2Zvcl9yZW5hbWU7XG4rXHR9XG4rXHRkZW50cnktXHUwMDNlZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpZGlyX3ZlcnNpb247XG4rXHRzcGluX3VubG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbiBvdXRfdmFsaWRfbm91cGRhdGU6XG4gXHRrZXlfcHV0KGtleSk7XG4gXHRfbGVhdmUoXCIgPSAxIFt2YWxpZF1cIik7XG5AQCAtMTUyMyw4ICsxNTM3LDcgQEAgc3RhdGljIHZvaWQgYWZzX3VubGlua19lZGl0X2RpcihzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXG4gc3RhdGljIHZvaWQgYWZzX3VubGlua19wdXQoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxuIHtcbiBcdF9lbnRlcihcIm9wPSUwOHhcIiwgb3AtXHUwMDNlZGVidWdfaWQpO1xuLVx0aWYgKG9wLVx1MDAzZXVubGluay5uZWVkX3JlaGFzaCBcdTAwMjZcdTAwMjYgYWZzX29wX2Vycm9yKG9wKSBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgYWZzX29wX2Vycm9yKG9wKSAhPSAtRU5PRU5UKVxuLVx0XHRkX3JlaGFzaChvcC1cdTAwM2VkZW50cnkpO1xuK1x0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFx1MDAyNm9wLVx1MDAzZWRlbnRyeS1cdTAwM2VkX2ZzZGF0YSwgTlVMTCk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWZzX29wZXJhdGlvbl9vcHMgYWZzX3VubGlua19vcGVyYXRpb24gPSB7XG5AQCAtMTU3OCwxMSArMTU5MSw3IEBAIHN0YXRpYyBpbnQgYWZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0XHRhZnNfb3Bfc2V0X2Vycm9yKG9wLCBhZnNfc2lsbHlyZW5hbWUoZHZub2RlLCB2bm9kZSwgZGVudHJ5LCBvcC1cdTAwM2VrZXkpKTtcbiBcdFx0Z290byBlcnJvcjtcbiBcdH1cbi1cdGlmICghZF91bmhhc2hlZChkZW50cnkpKSB7XG4tXHRcdC8qIFByZXZlbnQgYSByYWNlIHdpdGggUkNVIGxvb2t1cC4gKi9cbi1cdFx0X19kX2Ryb3AoZGVudHJ5KTtcbi1cdFx0b3AtXHUwMDNldW5saW5rLm5lZWRfcmVoYXNoID0gdHJ1ZTtcbi1cdH1cbitcdGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSA9IEFGU19GU0RBVEFfQkxPQ0tFRDtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFxuIFx0b3AtXHUwMDNlZmlsZVsxXS52bm9kZSA9IHZub2RlO1xuQEAgLTE4ODksOSArMTg5OCwxMCBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcbiBcbiBcdF9lbnRlcihcIm9wPSUwOHhcIiwgb3AtXHUwMDNlZGVidWdfaWQpO1xuIFxuLVx0aWYgKG9wLVx1MDAzZXJlbmFtZS5yZWhhc2gpIHtcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlcmVuYW1lLnJlaGFzaCk7XG4tXHRcdG9wLVx1MDAzZXJlbmFtZS5yZWhhc2ggPSBOVUxMO1xuK1x0aWYgKG9wLVx1MDAzZXJlbmFtZS51bmJsb2NrKSB7XG4rXHRcdC8qIFJlbmFtZSBoYXMgZmluaXNoZWQsIHNvIHVubG9ja3MgbG9va3VwcyB0byB0YXJnZXQgKi9cbitcdFx0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFx1MDAyNm9wLVx1MDAzZXJlbmFtZS51bmJsb2NrLVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbitcdFx0b3AtXHUwMDNlcmVuYW1lLnVuYmxvY2sgPSBOVUxMO1xuIFx0fVxuIFxuIFx0ZnNjYWNoZV9iZWdpbl93cml0ZV9vcGVyYXRpb24oXHUwMDI2b3JpZ19jcmVzLCBhZnNfdm5vZGVfY2FjaGUob3JpZ19kdm5vZGUpKTtcbkBAIC0xOTM1LDcgKzE5NDUsNyBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2bmV3X2lub2RlLVx1MDAzZWlfbG9jayk7XG4gXHR9XG4gXG4tXHQvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJpZXMgdG8gcmVmbGVjdCB0aGVpclxuK1x0LyogTm93IHdlIGNhbiB1cGRhdGUgZF90aW1lIG9uIHRoZSBkZW50cmllcyB0byByZWZsZWN0IHRoZWlyXG4gXHQgKiBuZXcgcGFyZW50J3MgZGF0YV92ZXJzaW9uLlxuIFx0ICovXG4gXHRhZnNfdXBkYXRlX2RlbnRyeV92ZXJzaW9uKG9wLCBuZXdfZHZwLCBvcC1cdTAwM2VkZW50cnkpO1xuQEAgLTE5NzQsNiArMTk4NCw5IEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZXhjaGFuZ2VfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxuIFxuIFx0XHRkX2V4Y2hhbmdlKG9sZF9kZW50cnksIG5ld19kZW50cnkpO1xuIFx0XHR1cF93cml0ZShcdTAwMjZvcmlnX2R2bm9kZS1cdTAwM2V2YWxpZGF0ZV9sb2NrKTtcbitcdC8qIGRlbnRyeSBoYXMgYmVlbiBtb3ZlZCwgc28gZF92YWxpZGF0ZSBjYW4gc2FmZWx5IHByb2NlZWQgKi9cbitcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcdTAwMjZvbGRfZGVudHJ5LVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbitcbiBcdH0gZWxzZSB7XG4gXHRcdGRvd25fd3JpdGUoXHUwMDI2b3JpZ19kdm5vZGUtXHUwMDNldmFsaWRhdGVfbG9jayk7XG4gXHRcdGlmICh0ZXN0X2JpdChBRlNfVk5PREVfRElSX1ZBTElELCBcdTAwMjZvcmlnX2R2bm9kZS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG5AQCAtMjAxMywxMSArMjAyNiwxMCBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2V4Y2hhbmdlX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcbiBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX3B1dChzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXG4ge1xuIFx0X2VudGVyKFwib3A9JTA4eFwiLCBvcC1cdTAwM2VkZWJ1Z19pZCk7XG4tXHRpZiAob3AtXHUwMDNlcmVuYW1lLnJlaGFzaClcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlcmVuYW1lLnJlaGFzaCk7XG4rXHRpZiAob3AtXHUwMDNlcmVuYW1lLnVuYmxvY2spXG4rXHRcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcdTAwMjZvcC1cdTAwM2VyZW5hbWUudW5ibG9jay1cdTAwM2VkX2ZzZGF0YSwgTlVMTCk7XG4rXHRzdG9yZV9yZWxlYXNlX3dha2VfdXAoXHUwMDI2b3AtXHUwMDNlZGVudHJ5LVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbiBcdGRwdXQob3AtXHUwMDNlcmVuYW1lLnRtcCk7XG4tXHRpZiAoYWZzX29wX2Vycm9yKG9wKSlcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlZGVudHJ5KTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfcmVuYW1lX29wZXJhdGlvbiA9IHtcbkBAIC0yMTI1LDcgKzIxMzcsNiBAQCBzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpcixcbiBcdFx0b3AtXHUwMDNlb3BzXHRcdD0gXHUwMDI2YWZzX3JlbmFtZV9ub3JlcGxhY2Vfb3BlcmF0aW9uO1xuIFx0fSBlbHNlIGlmIChmbGFncyBcdTAwMjYgUkVOQU1FX0VYQ0hBTkdFKSB7XG4gXHRcdG9wLVx1MDAzZW9wc1x0XHQ9IFx1MDAyNmFmc19yZW5hbWVfZXhjaGFuZ2Vfb3BlcmF0aW9uO1xuLVx0XHRkX2Ryb3AobmV3X2RlbnRyeSk7XG4gXHR9IGVsc2Uge1xuIFx0XHQvKiBJZiB3ZSBtaWdodCBkaXNwbGFjZSB0aGUgdGFyZ2V0LCB3ZSBtaWdodCBuZWVkIHRvIGRvIHNpbGx5XG4gXHRcdCAqIHJlbmFtZS5cbkBAIC0yMTM5LDE0ICsyMTUwLDEyIEBAIHN0YXRpYyBpbnQgYWZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLFxuIFx0XHQgKi9cbiBcdFx0aWYgKGRfaXNfcG9zaXRpdmUobmV3X2RlbnRyeSkgXHUwMDI2XHUwMDI2ICFkX2lzX2RpcihuZXdfZGVudHJ5KSkge1xuIFx0XHRcdC8qIFRvIHByZXZlbnQgYW55IG5ldyByZWZlcmVuY2VzIHRvIHRoZSB0YXJnZXQgZHVyaW5nXG4tXHRcdFx0ICogdGhlIHJlbmFtZSwgd2UgdW5oYXNoIHRoZSBkZW50cnkgaW4gYWR2YW5jZS5cbitcdFx0XHQgKiB0aGUgcmVuYW1lLCB3ZSBzZXQgZF9mc2RhdGEgd2hpY2ggYWZzX2RfcmV2YWxpZGF0ZSB3aWxsIHdhaXQgZm9yLlxuK1x0XHRcdCAqIGRfbG9jayBlbnN1cmVzIGRfY291bnQoKSBhbmQgLVx1MDAzZWRfZnNkYXRhIGFyZSBjb25zaXN0ZW50LlxuIFx0XHRcdCAqL1xuLVx0XHRcdGlmICghZF91bmhhc2hlZChuZXdfZGVudHJ5KSkge1xuLVx0XHRcdFx0ZF9kcm9wKG5ld19kZW50cnkpO1xuLVx0XHRcdFx0b3AtXHUwMDNlcmVuYW1lLnJlaGFzaCA9IG5ld19kZW50cnk7XG4tXHRcdFx0fVxuLVxuK1x0XHRcdHNwaW5fbG9jayhcdTAwMjZuZXdfZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4gXHRcdFx0aWYgKGRfY291bnQobmV3X2RlbnRyeSkgXHUwMDNlIDIpIHtcbitcdFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNm5ld19kZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0XHRcdC8qIGNvcHkgdGhlIHRhcmdldCBkZW50cnkncyBuYW1lICovXG4gXHRcdFx0XHRvcC1cdTAwM2VyZW5hbWUudG1wID0gZF9hbGxvYyhuZXdfZGVudHJ5LVx1MDAzZWRfcGFyZW50LFxuIFx0XHRcdFx0XHRcdFx0IFx1MDAyNm5ld19kZW50cnktXHUwMDNlZF9uYW1lKTtcbkBAIC0yMTY0LDIyICsyMTczLDI3IEBAIHN0YXRpYyBpbnQgYWZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLFxuIFx0XHRcdFx0fVxuIFxuIFx0XHRcdFx0b3AtXHUwMDNlZGVudHJ5XzIgPSBvcC1cdTAwM2VyZW5hbWUudG1wO1xuLVx0XHRcdFx0b3AtXHUwMDNlcmVuYW1lLnJlaGFzaCA9IE5VTEw7XG4gXHRcdFx0XHRvcC1cdTAwM2VyZW5hbWUubmV3X25lZ2F0aXZlID0gdHJ1ZTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0LyogQmxvY2sgYW55IGxvb2t1cHMgdG8gdGFyZ2V0IHVudGlsIHRoZSByZW5hbWUgY29tcGxldGVzICovXG4rXHRcdFx0XHRuZXdfZGVudHJ5LVx1MDAzZWRfZnNkYXRhID0gQUZTX0ZTREFUQV9CTE9DS0VEO1xuK1x0XHRcdFx0b3AtXHUwMDNlcmVuYW1lLnVuYmxvY2sgPSBuZXdfZGVudHJ5O1xuK1x0XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2bmV3X2RlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0fVxuIFxuIFx0LyogVGhpcyBiaXQgaXMgcG90ZW50aWFsbHkgbmFzdHkgYXMgdGhlcmUncyBhIHBvdGVudGlhbCByYWNlIHdpdGhcbi1cdCAqIGFmc19kX3JldmFsaWRhdGV7LF9yY3V9KCkuICBXZSBoYXZlIHRvIGNoYW5nZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJ5XG4rXHQgKiBhZnNfZF9yZXZhbGlkYXRleyxfcmN1fSgpLiAgV2UgaGF2ZSB0byBjaGFuZ2UgZF90aW1lXyBvbiB0aGUgZGVudHJ5XG4gXHQgKiB0byByZWZsZWN0IGl0J3MgbmV3IHBhcmVudCdzIG5ldyBkYXRhX3ZlcnNpb24gYWZ0ZXIgdGhlIG9wLCBidXRcbiBcdCAqIGRfcmV2YWxpZGF0ZSBtYXkgc2VlIG9sZF9kZW50cnkgYmV0d2VlbiB0aGUgb3AgaGF2aW5nIHRha2VuIHBsYWNlXG4gXHQgKiBhbmQgdGhlIHZlcnNpb24gYmVpbmcgdXBkYXRlZC5cbiBcdCAqXG4tXHQgKiBTbyBkcm9wIHRoZSBvbGRfZGVudHJ5IGZvciBub3cgdG8gbWFrZSBvdGhlciB0aHJlYWRzIGdvIHRocm91Z2hcbi1cdCAqIGxvb2t1cCBpbnN0ZWFkIC0gd2hpY2ggd2UgaG9sZCBhIGxvY2sgYWdhaW5zdC5cbitcdCAqIFNvIGJsb2NrIHJldmFsaWRhdGUgb24gdGhlIG9sZF9kZW50cnkgdW50aWwgdGhlIHJlbmFtZSBjb21wbGV0ZXMuXG4gXHQgKi9cbi1cdGRfZHJvcChvbGRfZGVudHJ5KTtcbitcdHNwaW5fbG9jayhcdTAwMjZvbGRfZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4rXHRvbGRfZGVudHJ5LVx1MDAzZWRfZnNkYXRhID0gQUZTX0ZTREFUQV9CTE9DS0VEO1xuK1x0c3Bpbl91bmxvY2soXHUwMDI2b2xkX2RlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFxuIFx0cmV0ID0gYWZzX2RvX3N5bmNfb3BlcmF0aW9uKG9wKTtcbiBcdGlmIChyZXQgPT0gLUVOT1RTVVBQKVxuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9pbnRlcm5hbC5oIGIvZnMvYWZzL2ludGVybmFsLmhcbmluZGV4IDBiNzJhODU2NjI5OTkyLi5hMGFmZTU1MmFlNjQ2YiAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9pbnRlcm5hbC5oXG4rKysgYi9mcy9hZnMvaW50ZXJuYWwuaFxuQEAgLTkwMCwxMCArOTAwLDcgQEAgc3RydWN0IGFmc19vcGVyYXRpb24ge1xuIFx0XHRcdHN0cnVjdCBhZnNfc3ltbGluayAqc3ltbGluaztcbiBcdFx0fSBjcmVhdGU7XG4gXHRcdHN0cnVjdCB7XG4tXHRcdFx0Ym9vbFx0bmVlZF9yZWhhc2g7XG4tXHRcdH0gdW5saW5rO1xuLVx0XHRzdHJ1Y3Qge1xuLVx0XHRcdHN0cnVjdCBkZW50cnlcdCpyZWhhc2g7XG4rXHRcdFx0c3RydWN0IGRlbnRyeVx0KnVuYmxvY2s7XG4gXHRcdFx0c3RydWN0IGRlbnRyeVx0KnRtcDtcbiBcdFx0XHR1bnNpZ25lZCBpbnRcdHJlbmFtZV9mbGFncztcbiBcdFx0XHRib29sXHRcdG5ld19uZWdhdGl2ZTtcbkBAIC0xNzY0LDE3ICsxNzYxLDE3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICpBRlNfVk5PREVfVE9fSShzdHJ1Y3QgYWZzX3Zub2RlICp2bm9kZSlcbiB9XG4gXG4gLypcbi0gKiBOb3RlIHRoYXQgYSBkZW50cnkgZ290IGNoYW5nZWQuICBXZSBuZWVkIHRvIHNldCBkX2ZzZGF0YSB0byB0aGUgZGF0YSB2ZXJzaW9uXG4rICogTm90ZSB0aGF0IGEgZGVudHJ5IGdvdCBjaGFuZ2VkLiAgV2UgbmVlZCB0byBzZXQgZF90aW1lIHRvIHRoZSBkYXRhIHZlcnNpb25cbiAgKiBudW1iZXIgZGVyaXZlZCBmcm9tIHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi4gIEl0IGRvZXNuJ3QgbWF0dGVyIGlmXG4tICogZF9mc2RhdGEgZ29lcyBiYWNrd2FyZHMgYXMgd2UnbGwganVzdCByZXZhbGlkYXRlLlxuKyAqIGRfdGltZSBnb2VzIGJhY2t3YXJkcyBhcyB3ZSdsbCBqdXN0IHJldmFsaWRhdGUuXG4gICovXG4gc3RhdGljIGlubGluZSB2b2lkIGFmc191cGRhdGVfZGVudHJ5X3ZlcnNpb24oc3RydWN0IGFmc19vcGVyYXRpb24gKm9wLFxuIFx0XHRcdFx0XHQgICAgIHN0cnVjdCBhZnNfdm5vZGVfcGFyYW0gKmRpcl92cCxcbiBcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4ge1xuIFx0aWYgKCFvcC1cdTAwM2VjdW11bF9lcnJvci5lcnJvcilcbi1cdFx0ZGVudHJ5LVx1MDAzZWRfZnNkYXRhID1cbi1cdFx0XHQodm9pZCAqKSh1bnNpZ25lZCBsb25nKWRpcl92cC1cdTAwM2VzY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcbitcdFx0ZGVudHJ5LVx1MDAzZWRfdGltZSA9XG4rXHRcdFx0KHVuc2lnbmVkIGxvbmcpZGlyX3ZwLVx1MDAzZXNjYi5zdGF0dXMuZGF0YV92ZXJzaW9uO1xuIH1cbiBcbiAvKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6NTA6NTYuNzE4MTM0NTc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY1OTg2ODk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFGUyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBBbmRyZXcgRmlsZSBTeXN0ZW0gaW4gdGhlIExpbnV4IGtlcm5lbC4gSXQncyB0d2Vha2luZyBob3cgYGRfZnNkYXRhYCBhbmQgYGRfdGltZWAgYXJlIGhhbmRsZWQgaW4gYGZzL2Fmcy9kaXIuY2AuIEJhc2ljYWxseSwgdGhleSdyZSBpbnRyb2R1Y2luZyBgQUZTX0ZTREFUQV9CTE9DS0VEYCB0byBwcmV2ZW50IGBkX3JldmFsaWRhdGVgIGZyb20gbWVzc2luZyB3aXRoIHRoZSBkZW50cnkncyBgZF90aW1lYCB3aGVuIGl0J3MgYmVpbmcgbW92ZWQgYmV0d2VlbiBkaXJlY3Rvcmllcy4gVGhlIHNhbWUgZmxhZyB3aWxsIGJsb2NrIGxvb2t1cHMgZm9yIGRlbnRyaWVzIHRoYXQgYXJlIGJlaW5nIHJlbW92ZWQgdGhlIHByb3BlciB3YXkuIFRoZSBwYXRjaCBzd2FwcyBgZF90aW1lYCBmb3IgYGRfZnNkYXRhYCB0byBzdG9yZSB0aGUgZGF0YSB2ZXJzaW9uIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3Vwcy9yZXZhbGlkYXRlcyBkdXJpbmcgcmVuYW1lL3VubGluayBvcGVyYXRpb25zLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBmdW5jdGlvbmFsPyBDYW4gd2UgYWN0dWFsbHkgKnJlYWNoKiB0aGVzZSBjaGFuZ2VzP1wiIEFGUyBpcyBhIG5ldHdvcmsgZmlsZXN5c3RlbSwgc28gd2UgY2FuIGRlZmluaXRlbHkgdGVzdCB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaW5raW5nIGFib3V0IGl0LCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgYnVyaWVkIGRlZXAgaW4gY29yZSBkaXJlY3Rvcnkgb3BlcmF0aW9ucyDigJMgbG9va3VwLCByZXZhbGlkYXRlLCB1bmxpbmssIHJlbmFtZS4gVGhvc2UgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB3aWxsIGJlIHRlc3RlZCBvZnRlbi5cblxuTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBiZSBtb3N0IHN1c2NlcHRpYmxlIHRvIGZ1enppbmcuIEkgY2FuIHNlZSB0aGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBmdW5jdGlvbnMuIEkgbmVlZCB0byBuYXJyb3cgaXQgZG93biB0byB0aGUgbW9zdCBpbXBvcnRhbnQgdGFyZ2V0cy4gQWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb2RlLCBJIHRoaW5rIG15IGZvY3VzIHNob3VsZCBiZSBvbiBgYWZzX2RfcmV2YWxpZGF0ZWAsIGBhZnNfZF9yZXZhbGlkYXRlX3JjdWAsIGBhZnNfdW5saW5rYCwgYW5kIGBhZnNfcmVuYW1lYC5cblxuRmluYWxseSwgYmVmb3JlIEkgZGlnIGluLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuIEkga25vdyBgQ09ORklHX0FGU19GU2AgaXMgdGhlIGtleSBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NzMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwODo1MTowMy4zNzgwMDU0NTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyMjMwNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Fmcy9LY29uZmlnOjI6Y29uZmlnIEFGU19GU1xcbmZzL2Fmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFuZHJldyBGaWxlIFN5c3RlbSBzdXBwb3J0IChBRlMpXFxcIlxcbi0tXFxuZnMvYWZzL0tjb25maWc9MTc9Y29uZmlnIEFGU19ERUJVR1xcbi0tXFxuZnMvYWZzL0tjb25maWctMjYtXFxuZnMvYWZzL0tjb25maWc6Mjc6Y29uZmlnIEFGU19GU0NBQ0hFXFxuZnMvYWZzL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiUHJvdmlkZSBBRlMgY2xpZW50IGNhY2hpbmcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6NTE6MDMuNDM1MjM2MTAxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4NzExOTQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBRlMgQ29uZmlndXJhdGlvbiBcdTAwMjYgQ29kZSBSZXZpZXcqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGJleW9uZCB0aGUgb2J2aW91cywgYENPTkZJR19BRlNfRlNgLiBUaGF0J3MgdGhlIG1haW4gZmxhZywgb2YgY291cnNlLCBidXQgZXhwZXJpZW5jZSB0ZWxscyBtZSBpdCdzIGFsd2F5cyB3b3J0aCBkb3VibGUtY2hlY2tpbmcuXG5cbkFscmlnaHQsIHRoZSBwYXRjaCB0b3VjaGVzIGBmcy9hZnMvZGlyLmNgLCBgZnMvYWZzL2Fmcy5oYCwgYW5kIGBmcy9hZnMvaW50ZXJuYWwuaGAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgcmlnaHQgaW4gdGhlIGNvcmUgb2YgQUZTIGZ1bmN0aW9uYWxpdHkuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuTm93LCBsZXQncyBzaGlmdCBnZWFycyBhbmQgdmVyaWZ5IHRoZSBmdW5jdGlvbnMgd2l0aGluIGBmcy9hZnMvZGlyLmNgLiBJJ2xsIHdhbnQgdG8gY2FyZWZ1bGx5IGV4YW1pbmUgdGhvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MDUsIk91dHB1dFRva2VucyI6NjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwODo1MTowNy4xMjIzNTczNzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwMjYxNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fHZvaWR8c3RydWN0IGRlbnRyeSBcXFxcKnxzdHJ1Y3QgaW5vZGUgXFxcXCopIGFmc18oZF9yZXZhbGlkYXRlfGRfcmV2YWxpZGF0ZV9yY3V8dW5saW5rfHJlbmFtZSlcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZnMvZGlyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYWZzL2Rpci5jPTI1PXN0YXRpYyBpbnQgYWZzX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4KTtcXG5mcy9hZnMvZGlyLmM6MjY6c3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcXG5mcy9hZnMvZGlyLmMtMjctXFx0XFx0XFx0ICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKTtcXG4tLVxcbmZzL2Fmcy9kaXIuYz0zOD1zdGF0aWMgaW50IGFmc19ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTtcXG5mcy9hZnMvZGlyLmM6Mzk6c3RhdGljIGludCBhZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpO1xcbmZzL2Fmcy9kaXIuYy00MC1zdGF0aWMgaW50IGFmc19saW5rKHN0cnVjdCBkZW50cnkgKmZyb20sIHN0cnVjdCBpbm9kZSAqZGlyLFxcbi0tXFxuZnMvYWZzL2Rpci5jPTQyPXN0YXRpYyBpbnQgYWZzX3N5bWxpbmsoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxcbmZzL2Fmcy9kaXIuYy00My1cXHRcXHQgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb250ZW50KTtcXG5mcy9hZnMvZGlyLmM6NDQ6c3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXFxuZnMvYWZzL2Rpci5jLTQ1LVxcdFxcdCAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksIHN0cnVjdCBpbm9kZSAqbmV3X2RpcixcXG4tLVxcbmZzL2Fmcy9kaXIuYz05NTI9c3RhdGljIHN0cnVjdCBkZW50cnkgKmFmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmZzL2Fmcy9kaXIuYy0xMDExLSAqL1xcbmZzL2Fmcy9kaXIuYzoxMDEyOnN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZV9yY3Uoc3RydWN0IGFmc192bm9kZSAqZHZub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuZnMvYWZzL2Rpci5jLTEwMTMte1xcbi0tXFxuZnMvYWZzL2Rpci5jLTEwNDgtICovXFxuZnMvYWZzL2Rpci5jOjEwNDk6c3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsXFxuZnMvYWZzL2Rpci5jLTEwNTAtXFx0XFx0XFx0ICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxuZnMvYWZzL2Rpci5jPTE1NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfdW5saW5rX29wZXJhdGlvbiA9IHtcXG4tLVxcbmZzL2Fmcy9kaXIuYy0xNTU0LSAqL1xcbmZzL2Fmcy9kaXIuYzoxNTU1OnN0YXRpYyBpbnQgYWZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbmZzL2Fmcy9kaXIuYy0xNTU2LXtcXG4tLVxcbmZzL2Fmcy9kaXIuYz0yMDYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWZzX29wZXJhdGlvbl9vcHMgYWZzX3JlbmFtZV9leGNoYW5nZV9vcGVyYXRpb24gPSB7XFxuLS1cXG5mcy9hZnMvZGlyLmMtMjA3MS0gKi9cXG5mcy9hZnMvZGlyLmM6MjA3MjpzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpcixcXG5mcy9hZnMvZGlyLmMtMjA3My1cXHRcXHQgICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKm5ld19kaXIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA4OjUxOjA3LjE4NDM5MDc0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NzQzMDU3OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgQUZTIERpcmVjdG9yeSBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGZ1bmN0aW9ucyBtb2RpZmllZCBoZXJlIOKAkyBgYWZzX2RfcmV2YWxpZGF0ZWAsIGBhZnNfZF9yZXZhbGlkYXRlX3JjdWAsIGBhZnNfdW5saW5rYCwgYW5kIGBhZnNfcmVuYW1lYCDigJMgYXJlIGFsbCBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nLiBUaGV5IHJlcHJlc2VudCBrZXkgZW50cnkgcG9pbnRzIHdpdGhpbiB0aGUgQUZTIFZGUyBvcGVyYXRpb25zLCB3aGljaCB0aGlzIHBhdGNoIGlzIGRpcmVjdGx5IGFsdGVyaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZywgc28gSSdsbCBhbHNvIGluY2x1ZGUgYGFmc19sb29rdXBgLlxuXG5UaGlzIHBhdGNoIGlzIGVzc2VudGlhbGx5IGNoYW5naW5nIGhvdyB0aGUgQUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zIG1hbmFnZSBjb25jdXJyZW5jeSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgVkZTIGxheWVyLiBTcGVjaWZpY2FsbHksIHRoZSBkYXRhIHZlcnNpb24gaXMgbW92aW5nIGZyb20gYGRfZnNkYXRhYCB0byBgZF90aW1lYCwgYW5kIGBkX2ZzZGF0YWAgaXMgbm93IGJlaW5nIHVzZWQgdG8gYmxvY2sgbG9va3VwcyBhbmQgcmV2YWxpZGF0aW9ucyBkdXJpbmcgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG9mIEFGUywgc28gY29uY3VycmVuY3kgaXNzdWVzIGFyZSBhIGhpZ2ggcmlzay4gSSBleHBlY3QgZnV6emluZyB0aGVzZSBmdW5jdGlvbnMgd2lsbCByZXZlYWwgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIHJlbGF0ZWQgdG8gdGhlc2UgbmV3IGxvY2tpbmcgY29uZGl0aW9ucy5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgb25seSBjb25maWd1cmF0aW9uIEkgbmVlZCBpcyBgQ09ORklHX0FGU19GU2AsIHdoaWNoIGlzIGdvb2QuIFRoYXQgc2ltcGxpZmllcyB0aGUgc2V0dXAuIEkgdGhpbmsgSSd2ZSBnb3QgYSBzb2xpZCBzZXQgb2YgdGFyZ2V0cyBhbmQgY29uZmlncyB0byBtb3ZlIGZvcndhcmQgd2l0aCBmdXp6aW5nLiBUaW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NTcsIk91dHB1dFRva2VucyI6MTU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA4OjUxOjEzLjY1ODY5ODEzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYyODIyNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFmc19kX3JldmFsaWRhdGVcIixcbiAgICBcImFmc19kX3JldmFsaWRhdGVfcmN1XCIsXG4gICAgXCJhZnNfdW5saW5rXCIsXG4gICAgXCJhZnNfcmVuYW1lXCIsXG4gICAgXCJhZnNfbG9va3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zIHRvIHVzZSBgZF90aW1lYCBpbnN0ZWFkIG9mIGBkX2ZzZGF0YWAgZm9yIHN0b3JpbmcgdGhlIGRhdGEgdmVyc2lvbiwgYW5kIHVzZXMgYGRfZnNkYXRhYCB0byBibG9jayBsb29rdXBzIGFuZCByZXZhbGlkYXRpb25zIGR1cmluZyByZW5hbWUgYW5kIHVubGluayBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQUZTIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBoYW5kbGVzIGNvbmN1cnJlbmN5IGFuZCBWRlMgaW50ZXJhY3Rpb25zLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWZzX2RfcmV2YWxpZGF0ZVwiLFxuICAgIFwiYWZzX2RfcmV2YWxpZGF0ZV9yY3VcIixcbiAgICBcImFmc191bmxpbmtcIixcbiAgICBcImFmc19yZW5hbWVcIixcbiAgICBcImFmc19sb29rdXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBRlMgZGlyZWN0b3J5IG9wZXJhdGlvbnMgdG8gdXNlIGBkX3RpbWVgIGluc3RlYWQgb2YgYGRfZnNkYXRhYCBmb3Igc3RvcmluZyB0aGUgZGF0YSB2ZXJzaW9uLCBhbmQgdXNlcyBgZF9mc2RhdGFgIHRvIGJsb2NrIGxvb2t1cHMgYW5kIHJldmFsaWRhdGlvbnMgZHVyaW5nIHJlbmFtZSBhbmQgdW5saW5rIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBBRlMgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGhhbmRsZXMgY29uY3VycmVuY3kgYW5kIFZGUyBpbnRlcmFjdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkgcg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 08:40:56 +0000 UTC FinishedAt: 2026-07-02 08:51:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AFS_FS" ], "series_id": "eb2df45b-1dc6-4afc-91a6-8ccf8afe0537" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "afs_d_revalidate", "afs_d_revalidate_rcu", "afs_unlink", "afs_rename", "afs_lookup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA4OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Fmc19kX3JldmFsaWRhdGUmIzM0OywKICAgICYjMzQ7YWZzX2RfcmV2YWxpZGF0ZV9yY3UmIzM0OywKICAgICYjMzQ7YWZzX3VubGluayYjMzQ7LAogICAgJiMzNDthZnNfcmVuYW1lJiMzNDssCiAgICAmIzM0O2Fmc19sb29rdXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zIHRvIHVzZSBgZF90aW1lYCBpbnN0ZWFkIG9mIGBkX2ZzZGF0YWAgZm9yIHN0b3JpbmcgdGhlIGRhdGEgdmVyc2lvbiwgYW5kIHVzZXMgYGRfZnNkYXRhYCB0byBibG9jayBsb29rdXBzIGFuZCByZXZhbGlkYXRpb25zIGR1cmluZyByZW5hbWUgYW5kIHVubGluayBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQUZTIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBoYW5kbGVzIGNvbmN1cnJlbmN5IGFuZCBWRlMgaW50ZXJhY3Rpb25zLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDg6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiZWNmNTQ5MjMwZjdjMDRlODZiOGRmOWYyYTZkYTNiMmFhMzRhMTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwODo1MDo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9hZnMvYWZzLmggYi9mcy9hZnMvYWZzLmhcbmluZGV4IGVjM2RiMDBiZDA4MTNjLi4wMTllNzdiMDg0NThlMyAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9hZnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvYWZzL2Fmcy5oXG5AQCAtMjYsNiAmIzQzOzI2LDEzIEBAIHR5cGVkZWYgdTY0XHRcdFx0YWZzX3ZvbGlkX3Q7XG4gdHlwZWRlZiB1NjRcdFx0XHRhZnNfdm5vZGVpZF90O1xuIHR5cGVkZWYgdTY0XHRcdFx0YWZzX2RhdGF2ZXJzaW9uX3Q7XG4gXG4mIzQzOy8qIFRoaXMgaXMgc3RvcmVkIGluIC1cdTAwM2VkX2ZzZGF0YSB0byBzdG9wIGRfcmV2YWxpZGF0ZSBsb29raW5nIGF0LFxuJiM0MzsgKiBhbmQgcG9zc2libHkgY2hhbmdpbmcsIC1cdTAwM2VkX3RpbWUgb24gYSBkZW50cnkgd2hpY2ggaXMgYmVpbmcgbW92ZWRcbiYjNDM7ICogYmV0d2VlbiBkaXJlY3RvcmllcywgYW5kIHRvIGJsb2NrIGxvb2t1cCBmb3IgZGVudHJ5IHRoYXQgaXNcbiYjNDM7ICogYmVpbmcgcmVtb3ZlZCB3aXRob3V0IHNpbGx5LXJlbmFtZS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgQUZTX0ZTREFUQV9CTE9DS0VEICgodm9pZCopMSlcbiYjNDM7XG4gdHlwZWRlZiBlbnVtIHtcbiBcdEFGU1ZMX1JXVk9MLFx0XHRcdC8qIHJlYWQvd3JpdGUgdm9sdW1lICovXG4gXHRBRlNWTF9ST1ZPTCxcdFx0XHQvKiByZWFkLW9ubHkgdm9sdW1lICovXG5kaWZmIC0tZ2l0IGEvZnMvYWZzL2Rpci5jIGIvZnMvYWZzL2Rpci5jXG5pbmRleCA0OThiOTljY2RmMGUyNy4uZTlhYWY2NjIxOGVhNmIgMTAwNjQ0XG4tLS0gYS9mcy9hZnMvZGlyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Fmcy9kaXIuY1xuQEAgLTc5NSw3ICYjNDM7Nzk1LDcgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqYWZzX2RvX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0XHRhZnNfZGlyX2l0ZXJhdGUoZGlyLCBcdTAwMjZjb29raWUtXHUwMDNlY3R4LCBOVUxMLCBcdTAwMjZkYXRhX3ZlcnNpb24pO1xuIFx0fVxuIFxuLVx0ZGVudHJ5LVx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylkYXRhX3ZlcnNpb247XG4mIzQzO1x0ZGVudHJ5LVx1MDAzZWRfdGltZSA9ICh1bnNpZ25lZCBsb25nKWRhdGFfdmVyc2lvbjtcbiBcbiBcdC8qIENoZWNrIHRvIHNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYW4gaW5vZGUgZm9yIHRoZSBwcmltYXJ5IGZpZC4gKi9cbiBcdGlub2RlID0gaWxvb2t1cDUoZGlyLVx1MDAzZWlfc2IsIGNvb2tpZS1cdTAwM2VmaWRzWzFdLnZub2RlLFxuQEAgLTg4Miw5ICYjNDM7ODgyLDkgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqYWZzX2RvX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0fVxuIFxuIFx0aWYgKG9wLVx1MDAzZWZpbGVbMF0uc2NiLmhhdmVfc3RhdHVzKVxuLVx0XHRkZW50cnktXHUwMDNlZF9mc2RhdGEgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKW9wLVx1MDAzZWZpbGVbMF0uc2NiLnN0YXR1cy5kYXRhX3ZlcnNpb247XG4mIzQzO1x0XHRkZW50cnktXHUwMDNlZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpb3AtXHUwMDNlZmlsZVswXS5zY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcbiBcdGVsc2Vcbi1cdFx0ZGVudHJ5LVx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylvcC1cdTAwM2VmaWxlWzBdLmR2X2JlZm9yZTtcbiYjNDM7XHRcdGRlbnRyeS1cdTAwM2VkX3RpbWUgPSAodW5zaWduZWQgbG9uZylvcC1cdTAwM2VmaWxlWzBdLmR2X2JlZm9yZTtcbiBcdHJldCA9IGFmc19wdXRfb3BlcmF0aW9uKG9wKTtcbiBvdXQ6XG4gXHRrZnJlZShjb29raWUpO1xuQEAgLTk5Nyw3ICYjNDM7OTk3LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmFmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbiBcdF9kZWJ1ZyhcJiMzNDtzcGxpY2UgJXBcJiMzNDssIGRlbnRyeS1cdTAwM2VkX2lub2RlKTtcbiBcdGQgPSBkX3NwbGljZV9hbGlhcyhpbm9kZSwgZGVudHJ5KTtcbiBcdGlmICghSVNfRVJSX09SX05VTEwoZCkpIHtcbi1cdFx0ZC1cdTAwM2VkX2ZzZGF0YSA9IGRlbnRyeS1cdTAwM2VkX2ZzZGF0YTtcbiYjNDM7XHRcdGQtXHUwMDNlZF90aW1lID0gZGVudHJ5LVx1MDAzZWRfdGltZTtcbiBcdFx0dHJhY2VfYWZzX2xvb2t1cChkdm5vZGUsIFx1MDAyNmQtXHUwMDNlZF9uYW1lLCBcdTAwMjZmaWQpO1xuIFx0fSBlbHNlIHtcbiBcdFx0dHJhY2VfYWZzX2xvb2t1cChkdm5vZGUsIFx1MDAyNmRlbnRyeS1cdTAwM2VkX25hbWUsIFx1MDAyNmZpZCk7XG5AQCAtMTAyMSwxMyAmIzQzOzEwMjEsMTcgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlX3JjdShzdHJ1Y3QgYWZzX3Zub2RlICpkdm5vZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdGlmICghYWZzX2NoZWNrX3ZhbGlkaXR5KGR2bm9kZSkpXG4gXHRcdHJldHVybiAtRUNISUxEO1xuIFxuJiM0MztcdC8qIEEgcmVuYW1lL3VubGluayBpcyBwZW5kaW5nICovXG4mIzQzO1x0aWYgKGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSlcbiYjNDM7XHRcdHJldHVybiAtRUNISUxEO1xuJiM0MztcbiBcdC8qIFdlIG9ubHkgbmVlZCB0byBpbnZhbGlkYXRlIGEgZGVudHJ5IGlmIHRoZSBzZXJ2ZXImIzM5O3MgY29weSBjaGFuZ2VkXG4gXHQgKiBiZWhpbmQgb3VyIGJhY2suICBJZiB3ZSBtYWRlIHRoZSBjaGFuZ2UsIGl0JiMzOTtzIG5vIHByb2JsZW0uICBOb3RlIHRoYXRcbiBcdCAqIG9uIGEgMzItYml0IHN5c3RlbSwgd2Ugb25seSBoYXZlIDMyIGJpdHMgaW4gdGhlIGRlbnRyeSB0byBzdG9yZSB0aGVcbiBcdCAqIHZlcnNpb24uXG4gXHQgKi9cbiBcdGRpcl92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGR2bm9kZS1cdTAwM2VzdGF0dXMuZGF0YV92ZXJzaW9uKTtcbi1cdGRlX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZGVudHJ5LVx1MDAzZWRfZnNkYXRhKTtcbiYjNDM7XHRkZV92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGRlbnRyeS1cdTAwM2VkX3RpbWUpO1xuIFx0aWYgKGRlX3ZlcnNpb24gIT0gZGlyX3ZlcnNpb24pIHtcbiBcdFx0ZGlyX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZHZub2RlLVx1MDAzZWludmFsaWRfYmVmb3JlKTtcbiBcdFx0aWYgKGRlX3ZlcnNpb24gLSBkaXJfdmVyc2lvbiBcdTAwM2MgMClcbkBAIC0xMDU2LDYgJiM0MzsxMDYwLDEwIEBAIHN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9kaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lLFxuIFx0aWYgKGZsYWdzIFx1MDAyNiBMT09LVVBfUkNVKVxuIFx0XHRyZXR1cm4gYWZzX2RfcmV2YWxpZGF0ZV9yY3UoZGlyLCBkZW50cnkpO1xuIFxuJiM0MztcdC8qIFdhaXQgZm9yIHJlbmFtZS91bmxpbmsgdG8gY29tcGxldGUgKi9cbiYjNDM7d2FpdF9mb3JfcmVuYW1lOlxuJiM0MztcdHdhaXRfdmFyX2V2ZW50KFx1MDAyNmRlbnRyeS1cdTAwM2VkX2ZzZGF0YSwgZGVudHJ5LVx1MDAzZWRfZnNkYXRhID09IE5VTEwpO1xuJiM0MztcbiBcdGlmIChkX3JlYWxseV9pc19wb3NpdGl2ZShkZW50cnkpKSB7XG4gXHRcdHZub2RlID0gQUZTX0ZTX0koZF9pbm9kZShkZW50cnkpKTtcbiBcdFx0X2VudGVyKFwmIzM0O3t2PXslbGx4OiVsbHV9IG49JXBkIGZsPSVseH0sXCYjMzQ7LFxuQEAgLTEwODcsNyAmIzQzOzEwOTUsNyBAQCBzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcbiBcdCAqIHZlcnNpb24uXG4gXHQgKi9cbiBcdGRpcl92ZXJzaW9uID0gZGlyLVx1MDAzZXN0YXR1cy5kYXRhX3ZlcnNpb247XG4tXHRkZV92ZXJzaW9uID0gKGxvbmcpZGVudHJ5LVx1MDAzZWRfZnNkYXRhO1xuJiM0MztcdGRlX3ZlcnNpb24gPSAobG9uZylkZW50cnktXHUwMDNlZF90aW1lO1xuIFx0aWYgKGRlX3ZlcnNpb24gPT0gKGxvbmcpZGlyX3ZlcnNpb24pXG4gXHRcdGdvdG8gb3V0X3ZhbGlkX25vdXBkYXRlO1xuIFxuQEAgLTExNDgsNyAmIzQzOzExNTYsMTMgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsXG4gXHR9XG4gXG4gb3V0X3ZhbGlkOlxuLVx0ZGVudHJ5LVx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylkaXJfdmVyc2lvbjtcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4mIzQzO1x0aWYgKGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4mIzQzO1x0XHRnb3RvIHdhaXRfZm9yX3JlbmFtZTtcbiYjNDM7XHR9XG4mIzQzO1x0ZGVudHJ5LVx1MDAzZWRfdGltZSA9ICh1bnNpZ25lZCBsb25nKWRpcl92ZXJzaW9uO1xuJiM0MztcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIG91dF92YWxpZF9ub3VwZGF0ZTpcbiBcdGtleV9wdXQoa2V5KTtcbiBcdF9sZWF2ZShcJiMzNDsgPSAxIFt2YWxpZF1cJiMzNDspO1xuQEAgLTE1MjMsOCAmIzQzOzE1MzcsNyBAQCBzdGF0aWMgdm9pZCBhZnNfdW5saW5rX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcbiBzdGF0aWMgdm9pZCBhZnNfdW5saW5rX3B1dChzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXG4ge1xuIFx0X2VudGVyKFwmIzM0O29wPSUwOHhcJiMzNDssIG9wLVx1MDAzZWRlYnVnX2lkKTtcbi1cdGlmIChvcC1cdTAwM2V1bmxpbmsubmVlZF9yZWhhc2ggXHUwMDI2XHUwMDI2IGFmc19vcF9lcnJvcihvcCkgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGFmc19vcF9lcnJvcihvcCkgIT0gLUVOT0VOVClcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlZGVudHJ5KTtcbiYjNDM7XHRzdG9yZV9yZWxlYXNlX3dha2VfdXAoXHUwMDI2b3AtXHUwMDNlZGVudHJ5LVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfdW5saW5rX29wZXJhdGlvbiA9IHtcbkBAIC0xNTc4LDExICYjNDM7MTU5MSw3IEBAIHN0YXRpYyBpbnQgYWZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0XHRhZnNfb3Bfc2V0X2Vycm9yKG9wLCBhZnNfc2lsbHlyZW5hbWUoZHZub2RlLCB2bm9kZSwgZGVudHJ5LCBvcC1cdTAwM2VrZXkpKTtcbiBcdFx0Z290byBlcnJvcjtcbiBcdH1cbi1cdGlmICghZF91bmhhc2hlZChkZW50cnkpKSB7XG4tXHRcdC8qIFByZXZlbnQgYSByYWNlIHdpdGggUkNVIGxvb2t1cC4gKi9cbi1cdFx0X19kX2Ryb3AoZGVudHJ5KTtcbi1cdFx0b3AtXHUwMDNldW5saW5rLm5lZWRfcmVoYXNoID0gdHJ1ZTtcbi1cdH1cbiYjNDM7XHRkZW50cnktXHUwMDNlZF9mc2RhdGEgPSBBRlNfRlNEQVRBX0JMT0NLRUQ7XG4gXHRzcGluX3VubG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcbiBcdG9wLVx1MDAzZWZpbGVbMV0udm5vZGUgPSB2bm9kZTtcbkBAIC0xODg5LDkgJiM0MzsxODk4LDEwIEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxuIFxuIFx0X2VudGVyKFwmIzM0O29wPSUwOHhcJiMzNDssIG9wLVx1MDAzZWRlYnVnX2lkKTtcbiBcbi1cdGlmIChvcC1cdTAwM2VyZW5hbWUucmVoYXNoKSB7XG4tXHRcdGRfcmVoYXNoKG9wLVx1MDAzZXJlbmFtZS5yZWhhc2gpO1xuLVx0XHRvcC1cdTAwM2VyZW5hbWUucmVoYXNoID0gTlVMTDtcbiYjNDM7XHRpZiAob3AtXHUwMDNlcmVuYW1lLnVuYmxvY2spIHtcbiYjNDM7XHRcdC8qIFJlbmFtZSBoYXMgZmluaXNoZWQsIHNvIHVubG9ja3MgbG9va3VwcyB0byB0YXJnZXQgKi9cbiYjNDM7XHRcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcdTAwMjZvcC1cdTAwM2VyZW5hbWUudW5ibG9jay1cdTAwM2VkX2ZzZGF0YSwgTlVMTCk7XG4mIzQzO1x0XHRvcC1cdTAwM2VyZW5hbWUudW5ibG9jayA9IE5VTEw7XG4gXHR9XG4gXG4gXHRmc2NhY2hlX2JlZ2luX3dyaXRlX29wZXJhdGlvbihcdTAwMjZvcmlnX2NyZXMsIGFmc192bm9kZV9jYWNoZShvcmlnX2R2bm9kZSkpO1xuQEAgLTE5MzUsNyAmIzQzOzE5NDUsNyBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2bmV3X2lub2RlLVx1MDAzZWlfbG9jayk7XG4gXHR9XG4gXG4tXHQvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJpZXMgdG8gcmVmbGVjdCB0aGVpclxuJiM0MztcdC8qIE5vdyB3ZSBjYW4gdXBkYXRlIGRfdGltZSBvbiB0aGUgZGVudHJpZXMgdG8gcmVmbGVjdCB0aGVpclxuIFx0ICogbmV3IHBhcmVudCYjMzk7cyBkYXRhX3ZlcnNpb24uXG4gXHQgKi9cbiBcdGFmc191cGRhdGVfZGVudHJ5X3ZlcnNpb24ob3AsIG5ld19kdnAsIG9wLVx1MDAzZWRlbnRyeSk7XG5AQCAtMTk3NCw2ICYjNDM7MTk4NCw5IEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZXhjaGFuZ2VfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxuIFxuIFx0XHRkX2V4Y2hhbmdlKG9sZF9kZW50cnksIG5ld19kZW50cnkpO1xuIFx0XHR1cF93cml0ZShcdTAwMjZvcmlnX2R2bm9kZS1cdTAwM2V2YWxpZGF0ZV9sb2NrKTtcbiYjNDM7XHQvKiBkZW50cnkgaGFzIGJlZW4gbW92ZWQsIHNvIGRfdmFsaWRhdGUgY2FuIHNhZmVseSBwcm9jZWVkICovXG4mIzQzO1x0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFx1MDAyNm9sZF9kZW50cnktXHUwMDNlZF9mc2RhdGEsIE5VTEwpO1xuJiM0MztcbiBcdH0gZWxzZSB7XG4gXHRcdGRvd25fd3JpdGUoXHUwMDI2b3JpZ19kdm5vZGUtXHUwMDNldmFsaWRhdGVfbG9jayk7XG4gXHRcdGlmICh0ZXN0X2JpdChBRlNfVk5PREVfRElSX1ZBTElELCBcdTAwMjZvcmlnX2R2bm9kZS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG5AQCAtMjAxMywxMSAmIzQzOzIwMjYsMTAgQEAgc3RhdGljIHZvaWQgYWZzX3JlbmFtZV9leGNoYW5nZV9lZGl0X2RpcihzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXG4gc3RhdGljIHZvaWQgYWZzX3JlbmFtZV9wdXQoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxuIHtcbiBcdF9lbnRlcihcJiMzNDtvcD0lMDh4XCYjMzQ7LCBvcC1cdTAwM2VkZWJ1Z19pZCk7XG4tXHRpZiAob3AtXHUwMDNlcmVuYW1lLnJlaGFzaClcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlcmVuYW1lLnJlaGFzaCk7XG4mIzQzO1x0aWYgKG9wLVx1MDAzZXJlbmFtZS51bmJsb2NrKVxuJiM0MztcdFx0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFx1MDAyNm9wLVx1MDAzZXJlbmFtZS51bmJsb2NrLVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbiYjNDM7XHRzdG9yZV9yZWxlYXNlX3dha2VfdXAoXHUwMDI2b3AtXHUwMDNlZGVudHJ5LVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbiBcdGRwdXQob3AtXHUwMDNlcmVuYW1lLnRtcCk7XG4tXHRpZiAoYWZzX29wX2Vycm9yKG9wKSlcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlZGVudHJ5KTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfcmVuYW1lX29wZXJhdGlvbiA9IHtcbkBAIC0yMTI1LDcgJiM0MzsyMTM3LDYgQEAgc3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXG4gXHRcdG9wLVx1MDAzZW9wc1x0XHQ9IFx1MDAyNmFmc19yZW5hbWVfbm9yZXBsYWNlX29wZXJhdGlvbjtcbiBcdH0gZWxzZSBpZiAoZmxhZ3MgXHUwMDI2IFJFTkFNRV9FWENIQU5HRSkge1xuIFx0XHRvcC1cdTAwM2VvcHNcdFx0PSBcdTAwMjZhZnNfcmVuYW1lX2V4Y2hhbmdlX29wZXJhdGlvbjtcbi1cdFx0ZF9kcm9wKG5ld19kZW50cnkpO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogSWYgd2UgbWlnaHQgZGlzcGxhY2UgdGhlIHRhcmdldCwgd2UgbWlnaHQgbmVlZCB0byBkbyBzaWxseVxuIFx0XHQgKiByZW5hbWUuXG5AQCAtMjEzOSwxNCAmIzQzOzIxNTAsMTIgQEAgc3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXG4gXHRcdCAqL1xuIFx0XHRpZiAoZF9pc19wb3NpdGl2ZShuZXdfZGVudHJ5KSBcdTAwMjZcdTAwMjYgIWRfaXNfZGlyKG5ld19kZW50cnkpKSB7XG4gXHRcdFx0LyogVG8gcHJldmVudCBhbnkgbmV3IHJlZmVyZW5jZXMgdG8gdGhlIHRhcmdldCBkdXJpbmdcbi1cdFx0XHQgKiB0aGUgcmVuYW1lLCB3ZSB1bmhhc2ggdGhlIGRlbnRyeSBpbiBhZHZhbmNlLlxuJiM0MztcdFx0XHQgKiB0aGUgcmVuYW1lLCB3ZSBzZXQgZF9mc2RhdGEgd2hpY2ggYWZzX2RfcmV2YWxpZGF0ZSB3aWxsIHdhaXQgZm9yLlxuJiM0MztcdFx0XHQgKiBkX2xvY2sgZW5zdXJlcyBkX2NvdW50KCkgYW5kIC1cdTAwM2VkX2ZzZGF0YSBhcmUgY29uc2lzdGVudC5cbiBcdFx0XHQgKi9cbi1cdFx0XHRpZiAoIWRfdW5oYXNoZWQobmV3X2RlbnRyeSkpIHtcbi1cdFx0XHRcdGRfZHJvcChuZXdfZGVudHJ5KTtcbi1cdFx0XHRcdG9wLVx1MDAzZXJlbmFtZS5yZWhhc2ggPSBuZXdfZGVudHJ5O1xuLVx0XHRcdH1cbi1cbiYjNDM7XHRcdFx0c3Bpbl9sb2NrKFx1MDAyNm5ld19kZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0XHRpZiAoZF9jb3VudChuZXdfZGVudHJ5KSBcdTAwM2UgMikge1xuJiM0MztcdFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNm5ld19kZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0XHRcdC8qIGNvcHkgdGhlIHRhcmdldCBkZW50cnkmIzM5O3MgbmFtZSAqL1xuIFx0XHRcdFx0b3AtXHUwMDNlcmVuYW1lLnRtcCA9IGRfYWxsb2MobmV3X2RlbnRyeS1cdTAwM2VkX3BhcmVudCxcbiBcdFx0XHRcdFx0XHRcdCBcdTAwMjZuZXdfZGVudHJ5LVx1MDAzZWRfbmFtZSk7XG5AQCAtMjE2NCwyMiAmIzQzOzIxNzMsMjcgQEAgc3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXG4gXHRcdFx0XHR9XG4gXG4gXHRcdFx0XHRvcC1cdTAwM2VkZW50cnlfMiA9IG9wLVx1MDAzZXJlbmFtZS50bXA7XG4tXHRcdFx0XHRvcC1cdTAwM2VyZW5hbWUucmVoYXNoID0gTlVMTDtcbiBcdFx0XHRcdG9wLVx1MDAzZXJlbmFtZS5uZXdfbmVnYXRpdmUgPSB0cnVlO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdC8qIEJsb2NrIGFueSBsb29rdXBzIHRvIHRhcmdldCB1bnRpbCB0aGUgcmVuYW1lIGNvbXBsZXRlcyAqL1xuJiM0MztcdFx0XHRcdG5ld19kZW50cnktXHUwMDNlZF9mc2RhdGEgPSBBRlNfRlNEQVRBX0JMT0NLRUQ7XG4mIzQzO1x0XHRcdFx0b3AtXHUwMDNlcmVuYW1lLnVuYmxvY2sgPSBuZXdfZGVudHJ5O1xuJiM0MztcdFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNm5ld19kZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdH1cbiBcbiBcdC8qIFRoaXMgYml0IGlzIHBvdGVudGlhbGx5IG5hc3R5IGFzIHRoZXJlJiMzOTtzIGEgcG90ZW50aWFsIHJhY2Ugd2l0aFxuLVx0ICogYWZzX2RfcmV2YWxpZGF0ZXssX3JjdX0oKS4gIFdlIGhhdmUgdG8gY2hhbmdlIGRfZnNkYXRhIG9uIHRoZSBkZW50cnlcbiYjNDM7XHQgKiBhZnNfZF9yZXZhbGlkYXRleyxfcmN1fSgpLiAgV2UgaGF2ZSB0byBjaGFuZ2UgZF90aW1lXyBvbiB0aGUgZGVudHJ5XG4gXHQgKiB0byByZWZsZWN0IGl0JiMzOTtzIG5ldyBwYXJlbnQmIzM5O3MgbmV3IGRhdGFfdmVyc2lvbiBhZnRlciB0aGUgb3AsIGJ1dFxuIFx0ICogZF9yZXZhbGlkYXRlIG1heSBzZWUgb2xkX2RlbnRyeSBiZXR3ZWVuIHRoZSBvcCBoYXZpbmcgdGFrZW4gcGxhY2VcbiBcdCAqIGFuZCB0aGUgdmVyc2lvbiBiZWluZyB1cGRhdGVkLlxuIFx0ICpcbi1cdCAqIFNvIGRyb3AgdGhlIG9sZF9kZW50cnkgZm9yIG5vdyB0byBtYWtlIG90aGVyIHRocmVhZHMgZ28gdGhyb3VnaFxuLVx0ICogbG9va3VwIGluc3RlYWQgLSB3aGljaCB3ZSBob2xkIGEgbG9jayBhZ2FpbnN0LlxuJiM0MztcdCAqIFNvIGJsb2NrIHJldmFsaWRhdGUgb24gdGhlIG9sZF9kZW50cnkgdW50aWwgdGhlIHJlbmFtZSBjb21wbGV0ZXMuXG4gXHQgKi9cbi1cdGRfZHJvcChvbGRfZGVudHJ5KTtcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2b2xkX2RlbnRyeS1cdTAwM2VkX2xvY2spO1xuJiM0MztcdG9sZF9kZW50cnktXHUwMDNlZF9mc2RhdGEgPSBBRlNfRlNEQVRBX0JMT0NLRUQ7XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2b2xkX2RlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFxuIFx0cmV0ID0gYWZzX2RvX3N5bmNfb3BlcmF0aW9uKG9wKTtcbiBcdGlmIChyZXQgPT0gLUVOT1RTVVBQKVxuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9pbnRlcm5hbC5oIGIvZnMvYWZzL2ludGVybmFsLmhcbmluZGV4IDBiNzJhODU2NjI5OTkyLi5hMGFmZTU1MmFlNjQ2YiAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9pbnRlcm5hbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9hZnMvaW50ZXJuYWwuaFxuQEAgLTkwMCwxMCAmIzQzOzkwMCw3IEBAIHN0cnVjdCBhZnNfb3BlcmF0aW9uIHtcbiBcdFx0XHRzdHJ1Y3QgYWZzX3N5bWxpbmsgKnN5bWxpbms7XG4gXHRcdH0gY3JlYXRlO1xuIFx0XHRzdHJ1Y3Qge1xuLVx0XHRcdGJvb2xcdG5lZWRfcmVoYXNoO1xuLVx0XHR9IHVubGluaztcbi1cdFx0c3RydWN0IHtcbi1cdFx0XHRzdHJ1Y3QgZGVudHJ5XHQqcmVoYXNoO1xuJiM0MztcdFx0XHRzdHJ1Y3QgZGVudHJ5XHQqdW5ibG9jaztcbiBcdFx0XHRzdHJ1Y3QgZGVudHJ5XHQqdG1wO1xuIFx0XHRcdHVuc2lnbmVkIGludFx0cmVuYW1lX2ZsYWdzO1xuIFx0XHRcdGJvb2xcdFx0bmV3X25lZ2F0aXZlO1xuQEAgLTE3NjQsMTcgJiM0MzsxNzYxLDE3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICpBRlNfVk5PREVfVE9fSShzdHJ1Y3QgYWZzX3Zub2RlICp2bm9kZSlcbiB9XG4gXG4gLypcbi0gKiBOb3RlIHRoYXQgYSBkZW50cnkgZ290IGNoYW5nZWQuICBXZSBuZWVkIHRvIHNldCBkX2ZzZGF0YSB0byB0aGUgZGF0YSB2ZXJzaW9uXG4mIzQzOyAqIE5vdGUgdGhhdCBhIGRlbnRyeSBnb3QgY2hhbmdlZC4gIFdlIG5lZWQgdG8gc2V0IGRfdGltZSB0byB0aGUgZGF0YSB2ZXJzaW9uXG4gICogbnVtYmVyIGRlcml2ZWQgZnJvbSB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uICBJdCBkb2VzbiYjMzk7dCBtYXR0ZXIgaWZcbi0gKiBkX2ZzZGF0YSBnb2VzIGJhY2t3YXJkcyBhcyB3ZSYjMzk7bGwganVzdCByZXZhbGlkYXRlLlxuJiM0MzsgKiBkX3RpbWUgZ29lcyBiYWNrd2FyZHMgYXMgd2UmIzM5O2xsIGp1c3QgcmV2YWxpZGF0ZS5cbiAgKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgYWZzX3VwZGF0ZV9kZW50cnlfdmVyc2lvbihzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3AsXG4gXHRcdFx0XHRcdCAgICAgc3RydWN0IGFmc192bm9kZV9wYXJhbSAqZGlyX3ZwLFxuIFx0XHRcdFx0XHQgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiB7XG4gXHRpZiAoIW9wLVx1MDAzZWN1bXVsX2Vycm9yLmVycm9yKVxuLVx0XHRkZW50cnktXHUwMDNlZF9mc2RhdGEgPVxuLVx0XHRcdCh2b2lkICopKHVuc2lnbmVkIGxvbmcpZGlyX3ZwLVx1MDAzZXNjYi5zdGF0dXMuZGF0YV92ZXJzaW9uO1xuJiM0MztcdFx0ZGVudHJ5LVx1MDAzZWRfdGltZSA9XG4mIzQzO1x0XHRcdCh1bnNpZ25lZCBsb25nKWRpcl92cC1cdTAwM2VzY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcbiB9XG4gXG4gLypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwODo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZnNfZF9yZXZhbGlkYXRlJiMzNDssCiAgICAmIzM0O2Fmc19kX3JldmFsaWRhdGVfcmN1JiMzNDssCiAgICAmIzM0O2Fmc191bmxpbmsmIzM0OywKICAgICYjMzQ7YWZzX3JlbmFtZSYjMzQ7LAogICAgJiMzNDthZnNfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB0byB1c2UgYGRfdGltZWAgaW5zdGVhZCBvZiBgZF9mc2RhdGFgIGZvciBzdG9yaW5nIHRoZSBkYXRhIHZlcnNpb24sIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3VwcyBhbmQgcmV2YWxpZGF0aW9ucyBkdXJpbmcgcmVuYW1lIGFuZCB1bmxpbmsgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGUyBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb25jdXJyZW5jeSBhbmQgVkZTIGludGVyYWN0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZWNmNTQ5MjMwZjdjMDRlODZiOGRmOWYyYTZkYTNiMmFhMzRhMTYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAwODo1MDo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2Fmcy9hZnMuaCBiL2ZzL2Fmcy9hZnMuaAppbmRleCBlYzNkYjAwYmQwODEzYy4uMDE5ZTc3YjA4NDU4ZTMgMTAwNjQ0Ci0tLSBhL2ZzL2Fmcy9hZnMuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9hZnMvYWZzLmgKQEAgLTI2LDYgJiM0MzsyNiwxMyBAQCB0eXBlZGVmIHU2NAkJCWFmc192b2xpZF90OwogdHlwZWRlZiB1NjQJCQlhZnNfdm5vZGVpZF90OwogdHlwZWRlZiB1NjQJCQlhZnNfZGF0YXZlcnNpb25fdDsKIAomIzQzOy8qIFRoaXMgaXMgc3RvcmVkIGluIC0mZ3Q7ZF9mc2RhdGEgdG8gc3RvcCBkX3JldmFsaWRhdGUgbG9va2luZyBhdCwKJiM0MzsgKiBhbmQgcG9zc2libHkgY2hhbmdpbmcsIC0mZ3Q7ZF90aW1lIG9uIGEgZGVudHJ5IHdoaWNoIGlzIGJlaW5nIG1vdmVkCiYjNDM7ICogYmV0d2VlbiBkaXJlY3RvcmllcywgYW5kIHRvIGJsb2NrIGxvb2t1cCBmb3IgZGVudHJ5IHRoYXQgaXMKJiM0MzsgKiBiZWluZyByZW1vdmVkIHdpdGhvdXQgc2lsbHktcmVuYW1lLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgQUZTX0ZTREFUQV9CTE9DS0VEICgodm9pZCopMSkKJiM0MzsKIHR5cGVkZWYgZW51bSB7CiAJQUZTVkxfUldWT0wsCQkJLyogcmVhZC93cml0ZSB2b2x1bWUgKi8KIAlBRlNWTF9ST1ZPTCwJCQkvKiByZWFkLW9ubHkgdm9sdW1lICovCmRpZmYgLS1naXQgYS9mcy9hZnMvZGlyLmMgYi9mcy9hZnMvZGlyLmMKaW5kZXggNDk4Yjk5Y2NkZjBlMjcuLmU5YWFmNjYyMThlYTZiIDEwMDY0NAotLS0gYS9mcy9hZnMvZGlyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYWZzL2Rpci5jCkBAIC03OTUsNyAmIzQzOzc5NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmFmc19kb19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAkJYWZzX2Rpcl9pdGVyYXRlKGRpciwgJmFtcDtjb29raWUtJmd0O2N0eCwgTlVMTCwgJmFtcDtkYXRhX3ZlcnNpb24pOwogCX0KIAotCWRlbnRyeS0mZ3Q7ZF9mc2RhdGEgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKWRhdGFfdmVyc2lvbjsKJiM0MzsJZGVudHJ5LSZndDtkX3RpbWUgPSAodW5zaWduZWQgbG9uZylkYXRhX3ZlcnNpb247CiAKIAkvKiBDaGVjayB0byBzZWUgaWYgd2UgYWxyZWFkeSBoYXZlIGFuIGlub2RlIGZvciB0aGUgcHJpbWFyeSBmaWQuICovCiAJaW5vZGUgPSBpbG9va3VwNShkaXItJmd0O2lfc2IsIGNvb2tpZS0mZ3Q7Zmlkc1sxXS52bm9kZSwKQEAgLTg4Miw5ICYjNDM7ODgyLDkgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqYWZzX2RvX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCX0KIAogCWlmIChvcC0mZ3Q7ZmlsZVswXS5zY2IuaGF2ZV9zdGF0dXMpCi0JCWRlbnRyeS0mZ3Q7ZF9mc2RhdGEgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKW9wLSZndDtmaWxlWzBdLnNjYi5zdGF0dXMuZGF0YV92ZXJzaW9uOwomIzQzOwkJZGVudHJ5LSZndDtkX3RpbWUgPSAodW5zaWduZWQgbG9uZylvcC0mZ3Q7ZmlsZVswXS5zY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjsKIAllbHNlCi0JCWRlbnRyeS0mZ3Q7ZF9mc2RhdGEgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKW9wLSZndDtmaWxlWzBdLmR2X2JlZm9yZTsKJiM0MzsJCWRlbnRyeS0mZ3Q7ZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpb3AtJmd0O2ZpbGVbMF0uZHZfYmVmb3JlOwogCXJldCA9IGFmc19wdXRfb3BlcmF0aW9uKG9wKTsKIG91dDoKIAlrZnJlZShjb29raWUpOwpAQCAtOTk3LDcgJiM0Mzs5OTcsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYWZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAogCV9kZWJ1ZygmIzM0O3NwbGljZSAlcCYjMzQ7LCBkZW50cnktJmd0O2RfaW5vZGUpOwogCWQgPSBkX3NwbGljZV9hbGlhcyhpbm9kZSwgZGVudHJ5KTsKIAlpZiAoIUlTX0VSUl9PUl9OVUxMKGQpKSB7Ci0JCWQtJmd0O2RfZnNkYXRhID0gZGVudHJ5LSZndDtkX2ZzZGF0YTsKJiM0MzsJCWQtJmd0O2RfdGltZSA9IGRlbnRyeS0mZ3Q7ZF90aW1lOwogCQl0cmFjZV9hZnNfbG9va3VwKGR2bm9kZSwgJmFtcDtkLSZndDtkX25hbWUsICZhbXA7ZmlkKTsKIAl9IGVsc2UgewogCQl0cmFjZV9hZnNfbG9va3VwKGR2bm9kZSwgJmFtcDtkZW50cnktJmd0O2RfbmFtZSwgJmFtcDtmaWQpOwpAQCAtMTAyMSwxMyAmIzQzOzEwMjEsMTcgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlX3JjdShzdHJ1Y3QgYWZzX3Zub2RlICpkdm5vZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAlpZiAoIWFmc19jaGVja192YWxpZGl0eShkdm5vZGUpKQogCQlyZXR1cm4gLUVDSElMRDsKIAomIzQzOwkvKiBBIHJlbmFtZS91bmxpbmsgaXMgcGVuZGluZyAqLwomIzQzOwlpZiAoZGVudHJ5LSZndDtkX2ZzZGF0YSkKJiM0MzsJCXJldHVybiAtRUNISUxEOwomIzQzOwogCS8qIFdlIG9ubHkgbmVlZCB0byBpbnZhbGlkYXRlIGEgZGVudHJ5IGlmIHRoZSBzZXJ2ZXImIzM5O3MgY29weSBjaGFuZ2VkCiAJICogYmVoaW5kIG91ciBiYWNrLiAgSWYgd2UgbWFkZSB0aGUgY2hhbmdlLCBpdCYjMzk7cyBubyBwcm9ibGVtLiAgTm90ZSB0aGF0CiAJICogb24gYSAzMi1iaXQgc3lzdGVtLCB3ZSBvbmx5IGhhdmUgMzIgYml0cyBpbiB0aGUgZGVudHJ5IHRvIHN0b3JlIHRoZQogCSAqIHZlcnNpb24uCiAJICovCiAJZGlyX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZHZub2RlLSZndDtzdGF0dXMuZGF0YV92ZXJzaW9uKTsKLQlkZV92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGRlbnRyeS0mZ3Q7ZF9mc2RhdGEpOwomIzQzOwlkZV92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGRlbnRyeS0mZ3Q7ZF90aW1lKTsKIAlpZiAoZGVfdmVyc2lvbiAhPSBkaXJfdmVyc2lvbikgewogCQlkaXJfdmVyc2lvbiA9IChsb25nKVJFQURfT05DRShkdm5vZGUtJmd0O2ludmFsaWRfYmVmb3JlKTsKIAkJaWYgKGRlX3ZlcnNpb24gLSBkaXJfdmVyc2lvbiAmbHQ7IDApCkBAIC0xMDU2LDYgJiM0MzsxMDYwLDEwIEBAIHN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9kaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lLAogCWlmIChmbGFncyAmYW1wOyBMT09LVVBfUkNVKQogCQlyZXR1cm4gYWZzX2RfcmV2YWxpZGF0ZV9yY3UoZGlyLCBkZW50cnkpOwogCiYjNDM7CS8qIFdhaXQgZm9yIHJlbmFtZS91bmxpbmsgdG8gY29tcGxldGUgKi8KJiM0Mzt3YWl0X2Zvcl9yZW5hbWU6CiYjNDM7CXdhaXRfdmFyX2V2ZW50KCZhbXA7ZGVudHJ5LSZndDtkX2ZzZGF0YSwgZGVudHJ5LSZndDtkX2ZzZGF0YSA9PSBOVUxMKTsKJiM0MzsKIAlpZiAoZF9yZWFsbHlfaXNfcG9zaXRpdmUoZGVudHJ5KSkgewogCQl2bm9kZSA9IEFGU19GU19JKGRfaW5vZGUoZGVudHJ5KSk7CiAJCV9lbnRlcigmIzM0O3t2PXslbGx4OiVsbHV9IG49JXBkIGZsPSVseH0sJiMzNDssCkBAIC0xMDg3LDcgJiM0MzsxMDk1LDcgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsCiAJICogdmVyc2lvbi4KIAkgKi8KIAlkaXJfdmVyc2lvbiA9IGRpci0mZ3Q7c3RhdHVzLmRhdGFfdmVyc2lvbjsKLQlkZV92ZXJzaW9uID0gKGxvbmcpZGVudHJ5LSZndDtkX2ZzZGF0YTsKJiM0MzsJZGVfdmVyc2lvbiA9IChsb25nKWRlbnRyeS0mZ3Q7ZF90aW1lOwogCWlmIChkZV92ZXJzaW9uID09IChsb25nKWRpcl92ZXJzaW9uKQogCQlnb3RvIG91dF92YWxpZF9ub3VwZGF0ZTsKIApAQCAtMTE0OCw3ICYjNDM7MTE1NiwxMyBAQCBzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSwKIAl9CiAKIG91dF92YWxpZDoKLQlkZW50cnktJmd0O2RfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylkaXJfdmVyc2lvbjsKJiM0MzsJc3Bpbl9sb2NrKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2spOwomIzQzOwlpZiAoZGVudHJ5LSZndDtkX2ZzZGF0YSkgewomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDtkZW50cnktJmd0O2RfbG9jayk7CiYjNDM7CQlnb3RvIHdhaXRfZm9yX3JlbmFtZTsKJiM0MzsJfQomIzQzOwlkZW50cnktJmd0O2RfdGltZSA9ICh1bnNpZ25lZCBsb25nKWRpcl92ZXJzaW9uOwomIzQzOwlzcGluX3VubG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIG91dF92YWxpZF9ub3VwZGF0ZToKIAlrZXlfcHV0KGtleSk7CiAJX2xlYXZlKCYjMzQ7ID0gMSBbdmFsaWRdJiMzNDspOwpAQCAtMTUyMyw4ICYjNDM7MTUzNyw3IEBAIHN0YXRpYyB2b2lkIGFmc191bmxpbmtfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKQogc3RhdGljIHZvaWQgYWZzX3VubGlua19wdXQoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKQogewogCV9lbnRlcigmIzM0O29wPSUwOHgmIzM0Oywgb3AtJmd0O2RlYnVnX2lkKTsKLQlpZiAob3AtJmd0O3VubGluay5uZWVkX3JlaGFzaCAmYW1wOyZhbXA7IGFmc19vcF9lcnJvcihvcCkgJmx0OyAwICZhbXA7JmFtcDsgYWZzX29wX2Vycm9yKG9wKSAhPSAtRU5PRU5UKQotCQlkX3JlaGFzaChvcC0mZ3Q7ZGVudHJ5KTsKJiM0MzsJc3RvcmVfcmVsZWFzZV93YWtlX3VwKCZhbXA7b3AtJmd0O2RlbnRyeS0mZ3Q7ZF9mc2RhdGEsIE5VTEwpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGFmc19vcGVyYXRpb25fb3BzIGFmc191bmxpbmtfb3BlcmF0aW9uID0gewpAQCAtMTU3OCwxMSAmIzQzOzE1OTEsNyBAQCBzdGF0aWMgaW50IGFmc191bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAkJYWZzX29wX3NldF9lcnJvcihvcCwgYWZzX3NpbGx5cmVuYW1lKGR2bm9kZSwgdm5vZGUsIGRlbnRyeSwgb3AtJmd0O2tleSkpOwogCQlnb3RvIGVycm9yOwogCX0KLQlpZiAoIWRfdW5oYXNoZWQoZGVudHJ5KSkgewotCQkvKiBQcmV2ZW50IGEgcmFjZSB3aXRoIFJDVSBsb29rdXAuICovCi0JCV9fZF9kcm9wKGRlbnRyeSk7Ci0JCW9wLSZndDt1bmxpbmsubmVlZF9yZWhhc2ggPSB0cnVlOwotCX0KJiM0MzsJZGVudHJ5LSZndDtkX2ZzZGF0YSA9IEFGU19GU0RBVEFfQkxPQ0tFRDsKIAlzcGluX3VubG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIAogCW9wLSZndDtmaWxlWzFdLnZub2RlID0gdm5vZGU7CkBAIC0xODg5LDkgJiM0MzsxODk4LDEwIEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKQogCiAJX2VudGVyKCYjMzQ7b3A9JTA4eCYjMzQ7LCBvcC0mZ3Q7ZGVidWdfaWQpOwogCi0JaWYgKG9wLSZndDtyZW5hbWUucmVoYXNoKSB7Ci0JCWRfcmVoYXNoKG9wLSZndDtyZW5hbWUucmVoYXNoKTsKLQkJb3AtJmd0O3JlbmFtZS5yZWhhc2ggPSBOVUxMOwomIzQzOwlpZiAob3AtJmd0O3JlbmFtZS51bmJsb2NrKSB7CiYjNDM7CQkvKiBSZW5hbWUgaGFzIGZpbmlzaGVkLCBzbyB1bmxvY2tzIGxvb2t1cHMgdG8gdGFyZ2V0ICovCiYjNDM7CQlzdG9yZV9yZWxlYXNlX3dha2VfdXAoJmFtcDtvcC0mZ3Q7cmVuYW1lLnVuYmxvY2stJmd0O2RfZnNkYXRhLCBOVUxMKTsKJiM0MzsJCW9wLSZndDtyZW5hbWUudW5ibG9jayA9IE5VTEw7CiAJfQogCiAJZnNjYWNoZV9iZWdpbl93cml0ZV9vcGVyYXRpb24oJmFtcDtvcmlnX2NyZXMsIGFmc192bm9kZV9jYWNoZShvcmlnX2R2bm9kZSkpOwpAQCAtMTkzNSw3ICYjNDM7MTk0NSw3IEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKQogCQlzcGluX3VubG9jaygmYW1wO25ld19pbm9kZS0mZ3Q7aV9sb2NrKTsKIAl9CiAKLQkvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJpZXMgdG8gcmVmbGVjdCB0aGVpcgomIzQzOwkvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX3RpbWUgb24gdGhlIGRlbnRyaWVzIHRvIHJlZmxlY3QgdGhlaXIKIAkgKiBuZXcgcGFyZW50JiMzOTtzIGRhdGFfdmVyc2lvbi4KIAkgKi8KIAlhZnNfdXBkYXRlX2RlbnRyeV92ZXJzaW9uKG9wLCBuZXdfZHZwLCBvcC0mZ3Q7ZGVudHJ5KTsKQEAgLTE5NzQsNiAmIzQzOzE5ODQsOSBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2V4Y2hhbmdlX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcCkKIAogCQlkX2V4Y2hhbmdlKG9sZF9kZW50cnksIG5ld19kZW50cnkpOwogCQl1cF93cml0ZSgmYW1wO29yaWdfZHZub2RlLSZndDt2YWxpZGF0ZV9sb2NrKTsKJiM0MzsJLyogZGVudHJ5IGhhcyBiZWVuIG1vdmVkLCBzbyBkX3ZhbGlkYXRlIGNhbiBzYWZlbHkgcHJvY2VlZCAqLwomIzQzOwlzdG9yZV9yZWxlYXNlX3dha2VfdXAoJmFtcDtvbGRfZGVudHJ5LSZndDtkX2ZzZGF0YSwgTlVMTCk7CiYjNDM7CiAJfSBlbHNlIHsKIAkJZG93bl93cml0ZSgmYW1wO29yaWdfZHZub2RlLSZndDt2YWxpZGF0ZV9sb2NrKTsKIAkJaWYgKHRlc3RfYml0KEFGU19WTk9ERV9ESVJfVkFMSUQsICZhbXA7b3JpZ19kdm5vZGUtJmd0O2ZsYWdzKSAmYW1wOyZhbXA7CkBAIC0yMDEzLDExICYjNDM7MjAyNiwxMCBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2V4Y2hhbmdlX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcCkKIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfcHV0KHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcCkKIHsKIAlfZW50ZXIoJiMzNDtvcD0lMDh4JiMzNDssIG9wLSZndDtkZWJ1Z19pZCk7Ci0JaWYgKG9wLSZndDtyZW5hbWUucmVoYXNoKQotCQlkX3JlaGFzaChvcC0mZ3Q7cmVuYW1lLnJlaGFzaCk7CiYjNDM7CWlmIChvcC0mZ3Q7cmVuYW1lLnVuYmxvY2spCiYjNDM7CQlzdG9yZV9yZWxlYXNlX3dha2VfdXAoJmFtcDtvcC0mZ3Q7cmVuYW1lLnVuYmxvY2stJmd0O2RfZnNkYXRhLCBOVUxMKTsKJiM0MzsJc3RvcmVfcmVsZWFzZV93YWtlX3VwKCZhbXA7b3AtJmd0O2RlbnRyeS0mZ3Q7ZF9mc2RhdGEsIE5VTEwpOwogCWRwdXQob3AtJmd0O3JlbmFtZS50bXApOwotCWlmIChhZnNfb3BfZXJyb3Iob3ApKQotCQlkX3JlaGFzaChvcC0mZ3Q7ZGVudHJ5KTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfcmVuYW1lX29wZXJhdGlvbiA9IHsKQEAgLTIxMjUsNyAmIzQzOzIxMzcsNiBAQCBzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpciwKIAkJb3AtJmd0O29wcwkJPSAmYW1wO2Fmc19yZW5hbWVfbm9yZXBsYWNlX29wZXJhdGlvbjsKIAl9IGVsc2UgaWYgKGZsYWdzICZhbXA7IFJFTkFNRV9FWENIQU5HRSkgewogCQlvcC0mZ3Q7b3BzCQk9ICZhbXA7YWZzX3JlbmFtZV9leGNoYW5nZV9vcGVyYXRpb247Ci0JCWRfZHJvcChuZXdfZGVudHJ5KTsKIAl9IGVsc2UgewogCQkvKiBJZiB3ZSBtaWdodCBkaXNwbGFjZSB0aGUgdGFyZ2V0LCB3ZSBtaWdodCBuZWVkIHRvIGRvIHNpbGx5CiAJCSAqIHJlbmFtZS4KQEAgLTIxMzksMTQgJiM0MzsyMTUwLDEyIEBAIHN0YXRpYyBpbnQgYWZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLAogCQkgKi8KIAkJaWYgKGRfaXNfcG9zaXRpdmUobmV3X2RlbnRyeSkgJmFtcDsmYW1wOyAhZF9pc19kaXIobmV3X2RlbnRyeSkpIHsKIAkJCS8qIFRvIHByZXZlbnQgYW55IG5ldyByZWZlcmVuY2VzIHRvIHRoZSB0YXJnZXQgZHVyaW5nCi0JCQkgKiB0aGUgcmVuYW1lLCB3ZSB1bmhhc2ggdGhlIGRlbnRyeSBpbiBhZHZhbmNlLgomIzQzOwkJCSAqIHRoZSByZW5hbWUsIHdlIHNldCBkX2ZzZGF0YSB3aGljaCBhZnNfZF9yZXZhbGlkYXRlIHdpbGwgd2FpdCBmb3IuCiYjNDM7CQkJICogZF9sb2NrIGVuc3VyZXMgZF9jb3VudCgpIGFuZCAtJmd0O2RfZnNkYXRhIGFyZSBjb25zaXN0ZW50LgogCQkJICovCi0JCQlpZiAoIWRfdW5oYXNoZWQobmV3X2RlbnRyeSkpIHsKLQkJCQlkX2Ryb3AobmV3X2RlbnRyeSk7Ci0JCQkJb3AtJmd0O3JlbmFtZS5yZWhhc2ggPSBuZXdfZGVudHJ5OwotCQkJfQotCiYjNDM7CQkJc3Bpbl9sb2NrKCZhbXA7bmV3X2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIAkJCWlmIChkX2NvdW50KG5ld19kZW50cnkpICZndDsgMikgewomIzQzOwkJCQlzcGluX3VubG9jaygmYW1wO25ld19kZW50cnktJmd0O2RfbG9jayk7CiAJCQkJLyogY29weSB0aGUgdGFyZ2V0IGRlbnRyeSYjMzk7cyBuYW1lICovCiAJCQkJb3AtJmd0O3JlbmFtZS50bXAgPSBkX2FsbG9jKG5ld19kZW50cnktJmd0O2RfcGFyZW50LAogCQkJCQkJCSAmYW1wO25ld19kZW50cnktJmd0O2RfbmFtZSk7CkBAIC0yMTY0LDIyICYjNDM7MjE3MywyNyBAQCBzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpciwKIAkJCQl9CiAKIAkJCQlvcC0mZ3Q7ZGVudHJ5XzIgPSBvcC0mZ3Q7cmVuYW1lLnRtcDsKLQkJCQlvcC0mZ3Q7cmVuYW1lLnJlaGFzaCA9IE5VTEw7CiAJCQkJb3AtJmd0O3JlbmFtZS5uZXdfbmVnYXRpdmUgPSB0cnVlOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCS8qIEJsb2NrIGFueSBsb29rdXBzIHRvIHRhcmdldCB1bnRpbCB0aGUgcmVuYW1lIGNvbXBsZXRlcyAqLwomIzQzOwkJCQluZXdfZGVudHJ5LSZndDtkX2ZzZGF0YSA9IEFGU19GU0RBVEFfQkxPQ0tFRDsKJiM0MzsJCQkJb3AtJmd0O3JlbmFtZS51bmJsb2NrID0gbmV3X2RlbnRyeTsKJiM0MzsJCQkJc3Bpbl91bmxvY2soJmFtcDtuZXdfZGVudHJ5LSZndDtkX2xvY2spOwogCQkJfQogCQl9CiAJfQogCiAJLyogVGhpcyBiaXQgaXMgcG90ZW50aWFsbHkgbmFzdHkgYXMgdGhlcmUmIzM5O3MgYSBwb3RlbnRpYWwgcmFjZSB3aXRoCi0JICogYWZzX2RfcmV2YWxpZGF0ZXssX3JjdX0oKS4gIFdlIGhhdmUgdG8gY2hhbmdlIGRfZnNkYXRhIG9uIHRoZSBkZW50cnkKJiM0MzsJICogYWZzX2RfcmV2YWxpZGF0ZXssX3JjdX0oKS4gIFdlIGhhdmUgdG8gY2hhbmdlIGRfdGltZV8gb24gdGhlIGRlbnRyeQogCSAqIHRvIHJlZmxlY3QgaXQmIzM5O3MgbmV3IHBhcmVudCYjMzk7cyBuZXcgZGF0YV92ZXJzaW9uIGFmdGVyIHRoZSBvcCwgYnV0CiAJICogZF9yZXZhbGlkYXRlIG1heSBzZWUgb2xkX2RlbnRyeSBiZXR3ZWVuIHRoZSBvcCBoYXZpbmcgdGFrZW4gcGxhY2UKIAkgKiBhbmQgdGhlIHZlcnNpb24gYmVpbmcgdXBkYXRlZC4KIAkgKgotCSAqIFNvIGRyb3AgdGhlIG9sZF9kZW50cnkgZm9yIG5vdyB0byBtYWtlIG90aGVyIHRocmVhZHMgZ28gdGhyb3VnaAotCSAqIGxvb2t1cCBpbnN0ZWFkIC0gd2hpY2ggd2UgaG9sZCBhIGxvY2sgYWdhaW5zdC4KJiM0MzsJICogU28gYmxvY2sgcmV2YWxpZGF0ZSBvbiB0aGUgb2xkX2RlbnRyeSB1bnRpbCB0aGUgcmVuYW1lIGNvbXBsZXRlcy4KIAkgKi8KLQlkX2Ryb3Aob2xkX2RlbnRyeSk7CiYjNDM7CXNwaW5fbG9jaygmYW1wO29sZF9kZW50cnktJmd0O2RfbG9jayk7CiYjNDM7CW9sZF9kZW50cnktJmd0O2RfZnNkYXRhID0gQUZTX0ZTREFUQV9CTE9DS0VEOwomIzQzOwlzcGluX3VubG9jaygmYW1wO29sZF9kZW50cnktJmd0O2RfbG9jayk7CiAKIAlyZXQgPSBhZnNfZG9fc3luY19vcGVyYXRpb24ob3ApOwogCWlmIChyZXQgPT0gLUVOT1RTVVBQKQpkaWZmIC0tZ2l0IGEvZnMvYWZzL2ludGVybmFsLmggYi9mcy9hZnMvaW50ZXJuYWwuaAppbmRleCAwYjcyYTg1NjYyOTk5Mi4uYTBhZmU1NTJhZTY0NmIgMTAwNjQ0Ci0tLSBhL2ZzL2Fmcy9pbnRlcm5hbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Fmcy9pbnRlcm5hbC5oCkBAIC05MDAsMTAgJiM0Mzs5MDAsNyBAQCBzdHJ1Y3QgYWZzX29wZXJhdGlvbiB7CiAJCQlzdHJ1Y3QgYWZzX3N5bWxpbmsgKnN5bWxpbms7CiAJCX0gY3JlYXRlOwogCQlzdHJ1Y3QgewotCQkJYm9vbAluZWVkX3JlaGFzaDsKLQkJfSB1bmxpbms7Ci0JCXN0cnVjdCB7Ci0JCQlzdHJ1Y3QgZGVudHJ5CSpyZWhhc2g7CiYjNDM7CQkJc3RydWN0IGRlbnRyeQkqdW5ibG9jazsKIAkJCXN0cnVjdCBkZW50cnkJKnRtcDsKIAkJCXVuc2lnbmVkIGludAlyZW5hbWVfZmxhZ3M7CiAJCQlib29sCQluZXdfbmVnYXRpdmU7CkBAIC0xNzY0LDE3ICYjNDM7MTc2MSwxNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpbm9kZSAqQUZTX1ZOT0RFX1RPX0koc3RydWN0IGFmc192bm9kZSAqdm5vZGUpCiB9CiAKIC8qCi0gKiBOb3RlIHRoYXQgYSBkZW50cnkgZ290IGNoYW5nZWQuICBXZSBuZWVkIHRvIHNldCBkX2ZzZGF0YSB0byB0aGUgZGF0YSB2ZXJzaW9uCiYjNDM7ICogTm90ZSB0aGF0IGEgZGVudHJ5IGdvdCBjaGFuZ2VkLiAgV2UgbmVlZCB0byBzZXQgZF90aW1lIHRvIHRoZSBkYXRhIHZlcnNpb24KICAqIG51bWJlciBkZXJpdmVkIGZyb20gdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uLiAgSXQgZG9lc24mIzM5O3QgbWF0dGVyIGlmCi0gKiBkX2ZzZGF0YSBnb2VzIGJhY2t3YXJkcyBhcyB3ZSYjMzk7bGwganVzdCByZXZhbGlkYXRlLgomIzQzOyAqIGRfdGltZSBnb2VzIGJhY2t3YXJkcyBhcyB3ZSYjMzk7bGwganVzdCByZXZhbGlkYXRlLgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQgYWZzX3VwZGF0ZV9kZW50cnlfdmVyc2lvbihzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3AsCiAJCQkJCSAgICAgc3RydWN0IGFmc192bm9kZV9wYXJhbSAqZGlyX3ZwLAogCQkJCQkgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIHsKIAlpZiAoIW9wLSZndDtjdW11bF9lcnJvci5lcnJvcikKLQkJZGVudHJ5LSZndDtkX2ZzZGF0YSA9Ci0JCQkodm9pZCAqKSh1bnNpZ25lZCBsb25nKWRpcl92cC0mZ3Q7c2NiLnN0YXR1cy5kYXRhX3ZlcnNpb247CiYjNDM7CQlkZW50cnktJmd0O2RfdGltZSA9CiYjNDM7CQkJKHVuc2lnbmVkIGxvbmcpZGlyX3ZwLSZndDtzY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjsKIH0KIAogLyoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDg6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3MwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFGUyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIEFuZHJldyBGaWxlIFN5c3RlbSBpbiB0aGUgTGludXgga2VybmVsLiBJdCYjMzk7cyB0d2Vha2luZyBob3cgYGRfZnNkYXRhYCBhbmQgYGRfdGltZWAgYXJlIGhhbmRsZWQgaW4gYGZzL2Fmcy9kaXIuY2AuIEJhc2ljYWxseSwgdGhleSYjMzk7cmUgaW50cm9kdWNpbmcgYEFGU19GU0RBVEFfQkxPQ0tFRGAgdG8gcHJldmVudCBgZF9yZXZhbGlkYXRlYCBmcm9tIG1lc3Npbmcgd2l0aCB0aGUgZGVudHJ5JiMzOTtzIGBkX3RpbWVgIHdoZW4gaXQmIzM5O3MgYmVpbmcgbW92ZWQgYmV0d2VlbiBkaXJlY3Rvcmllcy4gVGhlIHNhbWUgZmxhZyB3aWxsIGJsb2NrIGxvb2t1cHMgZm9yIGRlbnRyaWVzIHRoYXQgYXJlIGJlaW5nIHJlbW92ZWQgdGhlIHByb3BlciB3YXkuIFRoZSBwYXRjaCBzd2FwcyBgZF90aW1lYCBmb3IgYGRfZnNkYXRhYCB0byBzdG9yZSB0aGUgZGF0YSB2ZXJzaW9uIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3Vwcy9yZXZhbGlkYXRlcyBkdXJpbmcgcmVuYW1lL3VubGluayBvcGVyYXRpb25zLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgZnVuY3Rpb25hbD8gQ2FuIHdlIGFjdHVhbGx5ICpyZWFjaCogdGhlc2UgY2hhbmdlcz8mIzM0OyBBRlMgaXMgYSBuZXR3b3JrIGZpbGVzeXN0ZW0sIHNvIHdlIGNhbiBkZWZpbml0ZWx5IHRlc3QgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlua2luZyBhYm91dCBpdCwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGJ1cmllZCBkZWVwIGluIGNvcmUgZGlyZWN0b3J5IG9wZXJhdGlvbnMg4oCTIGxvb2t1cCwgcmV2YWxpZGF0ZSwgdW5saW5rLCByZW5hbWUuIFRob3NlIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgd2lsbCBiZSB0ZXN0ZWQgb2Z0ZW4uCgpOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIG1vc3Qgc3VzY2VwdGlibGUgdG8gZnV6emluZy4gSSBjYW4gc2VlIHRoZSBwYXRjaCBtb2RpZmllcyBzZXZlcmFsIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIG5hcnJvdyBpdCBkb3duIHRvIHRoZSBtb3N0IGltcG9ydGFudCB0YXJnZXRzLiBBZnRlciByZXZpZXdpbmcgdGhlIGNvZGUsIEkgdGhpbmsgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIGBhZnNfZF9yZXZhbGlkYXRlYCwgYGFmc19kX3JldmFsaWRhdGVfcmN1YCwgYGFmc191bmxpbmtgLCBhbmQgYGFmc19yZW5hbWVgLgoKRmluYWxseSwgYmVmb3JlIEkgZGlnIGluLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuIEkga25vdyBgQ09ORklHX0FGU19GU2AgaXMgdGhlIGtleSBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDg6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Fmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Fmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9hZnMvS2NvbmZpZzoyOmNvbmZpZyBBRlNfRlNcbmZzL2Fmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBbmRyZXcgRmlsZSBTeXN0ZW0gc3VwcG9ydCAoQUZTKVwmIzM0O1xuLS1cbmZzL2Fmcy9LY29uZmlnPTE3PWNvbmZpZyBBRlNfREVCVUdcbi0tXG5mcy9hZnMvS2NvbmZpZy0yNi1cbmZzL2Fmcy9LY29uZmlnOjI3OmNvbmZpZyBBRlNfRlNDQUNIRVxuZnMvYWZzL0tjb25maWctMjgtXHRib29sIFwmIzM0O1Byb3ZpZGUgQUZTIGNsaWVudCBjYWNoaW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwODo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzA1CgkJCQkJCQlvdXRwdXQ6IDY1CgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQUZTIENvbmZpZ3VyYXRpb24gJmFtcDsgQ29kZSBSZXZpZXcqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgYmV5b25kIHRoZSBvYnZpb3VzLCBgQ09ORklHX0FGU19GU2AuIFRoYXQmIzM5O3MgdGhlIG1haW4gZmxhZywgb2YgY291cnNlLCBidXQgZXhwZXJpZW5jZSB0ZWxscyBtZSBpdCYjMzk7cyBhbHdheXMgd29ydGggZG91YmxlLWNoZWNraW5nLgoKQWxyaWdodCwgdGhlIHBhdGNoIHRvdWNoZXMgYGZzL2Fmcy9kaXIuY2AsIGBmcy9hZnMvYWZzLmhgLCBhbmQgYGZzL2Fmcy9pbnRlcm5hbC5oYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgcmlnaHQgaW4gdGhlIGNvcmUgb2YgQUZTIGZ1bmN0aW9uYWxpdHkuIE5vIHN1cnByaXNlcyB0aGVyZS4KCk5vdywgbGV0JiMzOTtzIHNoaWZ0IGdlYXJzIGFuZCB2ZXJpZnkgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gYGZzL2Fmcy9kaXIuY2AuIEkmIzM5O2xsIHdhbnQgdG8gY2FyZWZ1bGx5IGV4YW1pbmUgdGhvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDg6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihzdGF0aWMgKT8oaW50fHZvaWR8c3RydWN0IGRlbnRyeSBcXCp8c3RydWN0IGlub2RlIFxcKikgYWZzXyhkX3JldmFsaWRhdGV8ZF9yZXZhbGlkYXRlX3JjdXx1bmxpbmt8cmVuYW1lKVxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Fmcy9kaXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9hZnMvZGlyLmM9MjU9c3RhdGljIGludCBhZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpO1xuZnMvYWZzL2Rpci5jOjI2OnN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsXG5mcy9hZnMvZGlyLmMtMjctXHRcdFx0ICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKTtcbi0tXG5mcy9hZnMvZGlyLmM9Mzg9c3RhdGljIGludCBhZnNfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7XG5mcy9hZnMvZGlyLmM6Mzk6c3RhdGljIGludCBhZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpO1xuZnMvYWZzL2Rpci5jLTQwLXN0YXRpYyBpbnQgYWZzX2xpbmsoc3RydWN0IGRlbnRyeSAqZnJvbSwgc3RydWN0IGlub2RlICpkaXIsXG4tLVxuZnMvYWZzL2Rpci5jPTQyPXN0YXRpYyBpbnQgYWZzX3N5bWxpbmsoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxuZnMvYWZzL2Rpci5jLTQzLVx0XHQgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb250ZW50KTtcbmZzL2Fmcy9kaXIuYzo0NDpzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpcixcbmZzL2Fmcy9kaXIuYy00NS1cdFx0ICAgICAgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwgc3RydWN0IGlub2RlICpuZXdfZGlyLFxuLS1cbmZzL2Fmcy9kaXIuYz05NTI9c3RhdGljIHN0cnVjdCBkZW50cnkgKmFmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9hZnMvZGlyLmMtMTAxMS0gKi9cbmZzL2Fmcy9kaXIuYzoxMDEyOnN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZV9yY3Uoc3RydWN0IGFmc192bm9kZSAqZHZub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG5mcy9hZnMvZGlyLmMtMTAxMy17XG4tLVxuZnMvYWZzL2Rpci5jLTEwNDgtICovXG5mcy9hZnMvZGlyLmM6MTA0OTpzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcbmZzL2Fmcy9kaXIuYy0xMDUwLVx0XHRcdCAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVuc2lnbmVkIGludCBmbGFncylcbi0tXG5mcy9hZnMvZGlyLmM9MTU0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGFmc19vcGVyYXRpb25fb3BzIGFmc191bmxpbmtfb3BlcmF0aW9uID0ge1xuLS1cbmZzL2Fmcy9kaXIuYy0xNTU0LSAqL1xuZnMvYWZzL2Rpci5jOjE1NTU6c3RhdGljIGludCBhZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG5mcy9hZnMvZGlyLmMtMTU1Ni17XG4tLVxuZnMvYWZzL2Rpci5jPTIwNjE9c3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfcmVuYW1lX2V4Y2hhbmdlX29wZXJhdGlvbiA9IHtcbi0tXG5mcy9hZnMvZGlyLmMtMjA3MS0gKi9cbmZzL2Fmcy9kaXIuYzoyMDcyOnN0YXRpYyBpbnQgYWZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLFxuZnMvYWZzL2Rpci5jLTIwNzMtXHRcdCAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksIHN0cnVjdCBpbm9kZSAqbmV3X2RpcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwODo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzU3CgkJCQkJCQlvdXRwdXQ6IDE1NAoJCQkJCQkJdGhvdWdodHM6IDM2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBBRlMgRGlyZWN0b3J5IE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBmdW5jdGlvbnMgbW9kaWZpZWQgaGVyZSDigJMgYGFmc19kX3JldmFsaWRhdGVgLCBgYWZzX2RfcmV2YWxpZGF0ZV9yY3VgLCBgYWZzX3VubGlua2AsIGFuZCBgYWZzX3JlbmFtZWAg4oCTIGFyZSBhbGwgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZy4gVGhleSByZXByZXNlbnQga2V5IGVudHJ5IHBvaW50cyB3aXRoaW4gdGhlIEFGUyBWRlMgb3BlcmF0aW9ucywgd2hpY2ggdGhpcyBwYXRjaCBpcyBkaXJlY3RseSBhbHRlcmluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLCBzbyBJJiMzOTtsbCBhbHNvIGluY2x1ZGUgYGFmc19sb29rdXBgLgoKVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSBjaGFuZ2luZyBob3cgdGhlIEFGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBtYW5hZ2UgY29uY3VycmVuY3kgYW5kIGludGVyYWN0IHdpdGggdGhlIFZGUyBsYXllci4gU3BlY2lmaWNhbGx5LCB0aGUgZGF0YSB2ZXJzaW9uIGlzIG1vdmluZyBmcm9tIGBkX2ZzZGF0YWAgdG8gYGRfdGltZWAsIGFuZCBgZF9mc2RhdGFgIGlzIG5vdyBiZWluZyB1c2VkIHRvIGJsb2NrIGxvb2t1cHMgYW5kIHJldmFsaWRhdGlvbnMgZHVyaW5nIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBvZiBBRlMsIHNvIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgYSBoaWdoIHJpc2suIEkgZXhwZWN0IGZ1enppbmcgdGhlc2UgZnVuY3Rpb25zIHdpbGwgcmV2ZWFsIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyByZWxhdGVkIHRvIHRoZXNlIG5ldyBsb2NraW5nIGNvbmRpdGlvbnMuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgb25seSBjb25maWd1cmF0aW9uIEkgbmVlZCBpcyBgQ09ORklHX0FGU19GU2AsIHdoaWNoIGlzIGdvb2QuIFRoYXQgc2ltcGxpZmllcyB0aGUgc2V0dXAuIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgc29saWQgc2V0IG9mIHRhcmdldHMgYW5kIGNvbmZpZ3MgdG8gbW92ZSBmb3J3YXJkIHdpdGggZnV6emluZy4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIGdldCBzdGFydGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA4OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZnNfZF9yZXZhbGlkYXRlJiMzNDssCiAgICAmIzM0O2Fmc19kX3JldmFsaWRhdGVfcmN1JiMzNDssCiAgICAmIzM0O2Fmc191bmxpbmsmIzM0OywKICAgICYjMzQ7YWZzX3JlbmFtZSYjMzQ7LAogICAgJiMzNDthZnNfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB0byB1c2UgYGRfdGltZWAgaW5zdGVhZCBvZiBgZF9mc2RhdGFgIGZvciBzdG9yaW5nIHRoZSBkYXRhIHZlcnNpb24sIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3VwcyBhbmQgcmV2YWxpZGF0aW9ucyBkdXJpbmcgcmVuYW1lIGFuZCB1bmxpbmsgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGUyBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb25jdXJyZW5jeSBhbmQgVkZTIGludGVyYWN0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZnNfZF9yZXZhbGlkYXRlJiMzNDssCiAgICAmIzM0O2Fmc19kX3JldmFsaWRhdGVfcmN1JiMzNDssCiAgICAmIzM0O2Fmc191bmxpbmsmIzM0OywKICAgICYjMzQ7YWZzX3JlbmFtZSYjMzQ7LAogICAgJiMzNDthZnNfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB0byB1c2UgYGRfdGltZWAgaW5zdGVhZCBvZiBgZF9mc2RhdGFgIGZvciBzdG9yaW5nIHRoZSBkYXRhIHZlcnNpb24sIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3VwcyBhbmQgcmV2YWxpZGF0aW9ucyBkdXJpbmcgcmVuYW1lIGFuZCB1bmxpbmsgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGUyBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb25jdXJyZW5jeSBhbmQgVkZTIGludGVyYWN0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6NTA6NTYuNDQxODM4NTc4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTMxNTY1MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWZzX2RfcmV2YWxpZGF0ZVwiLFxuICAgIFwiYWZzX2RfcmV2YWxpZGF0ZV9yY3VcIixcbiAgICBcImFmc191bmxpbmtcIixcbiAgICBcImFmc19yZW5hbWVcIixcbiAgICBcImFmc19sb29rdXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBRlMgZGlyZWN0b3J5IG9wZXJhdGlvbnMgdG8gdXNlIGBkX3RpbWVgIGluc3RlYWQgb2YgYGRfZnNkYXRhYCBmb3Igc3RvcmluZyB0aGUgZGF0YSB2ZXJzaW9uLCBhbmQgdXNlcyBgZF9mc2RhdGFgIHRvIGJsb2NrIGxvb2t1cHMgYW5kIHJldmFsaWRhdGlvbnMgZHVyaW5nIHJlbmFtZSBhbmQgdW5saW5rIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBBRlMgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGhhbmRsZXMgY29uY3VycmVuY3kgYW5kIFZGUyBpbnRlcmFjdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6NTA6NTYuNDQxODQ1NjM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzU1MzAwODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiZWNmNTQ5MjMwZjdjMDRlODZiOGRmOWYyYTZkYTNiMmFhMzRhMTYxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMDg6NTA6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvYWZzL2Fmcy5oIGIvZnMvYWZzL2Fmcy5oXFxuaW5kZXggZWMzZGIwMGJkMDgxM2MuLjAxOWU3N2IwODQ1OGUzIDEwMDY0NFxcbi0tLSBhL2ZzL2Fmcy9hZnMuaFxcbisrKyBiL2ZzL2Fmcy9hZnMuaFxcbkBAIC0yNiw2ICsyNiwxMyBAQCB0eXBlZGVmIHU2NFxcdFxcdFxcdGFmc192b2xpZF90O1xcbiB0eXBlZGVmIHU2NFxcdFxcdFxcdGFmc192bm9kZWlkX3Q7XFxuIHR5cGVkZWYgdTY0XFx0XFx0XFx0YWZzX2RhdGF2ZXJzaW9uX3Q7XFxuIFxcbisvKiBUaGlzIGlzIHN0b3JlZCBpbiAtXFx1MDAzZWRfZnNkYXRhIHRvIHN0b3AgZF9yZXZhbGlkYXRlIGxvb2tpbmcgYXQsXFxuKyAqIGFuZCBwb3NzaWJseSBjaGFuZ2luZywgLVxcdTAwM2VkX3RpbWUgb24gYSBkZW50cnkgd2hpY2ggaXMgYmVpbmcgbW92ZWRcXG4rICogYmV0d2VlbiBkaXJlY3RvcmllcywgYW5kIHRvIGJsb2NrIGxvb2t1cCBmb3IgZGVudHJ5IHRoYXQgaXNcXG4rICogYmVpbmcgcmVtb3ZlZCB3aXRob3V0IHNpbGx5LXJlbmFtZS5cXG4rICovXFxuKyNkZWZpbmUgQUZTX0ZTREFUQV9CTE9DS0VEICgodm9pZCopMSlcXG4rXFxuIHR5cGVkZWYgZW51bSB7XFxuIFxcdEFGU1ZMX1JXVk9MLFxcdFxcdFxcdC8qIHJlYWQvd3JpdGUgdm9sdW1lICovXFxuIFxcdEFGU1ZMX1JPVk9MLFxcdFxcdFxcdC8qIHJlYWQtb25seSB2b2x1bWUgKi9cXG5kaWZmIC0tZ2l0IGEvZnMvYWZzL2Rpci5jIGIvZnMvYWZzL2Rpci5jXFxuaW5kZXggNDk4Yjk5Y2NkZjBlMjcuLmU5YWFmNjYyMThlYTZiIDEwMDY0NFxcbi0tLSBhL2ZzL2Fmcy9kaXIuY1xcbisrKyBiL2ZzL2Fmcy9kaXIuY1xcbkBAIC03OTUsNyArNzk1LDcgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqYWZzX2RvX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbiBcXHRcXHRhZnNfZGlyX2l0ZXJhdGUoZGlyLCBcXHUwMDI2Y29va2llLVxcdTAwM2VjdHgsIE5VTEwsIFxcdTAwMjZkYXRhX3ZlcnNpb24pO1xcbiBcXHR9XFxuIFxcbi1cXHRkZW50cnktXFx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylkYXRhX3ZlcnNpb247XFxuK1xcdGRlbnRyeS1cXHUwMDNlZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpZGF0YV92ZXJzaW9uO1xcbiBcXG4gXFx0LyogQ2hlY2sgdG8gc2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBhbiBpbm9kZSBmb3IgdGhlIHByaW1hcnkgZmlkLiAqL1xcbiBcXHRpbm9kZSA9IGlsb29rdXA1KGRpci1cXHUwMDNlaV9zYiwgY29va2llLVxcdTAwM2VmaWRzWzFdLnZub2RlLFxcbkBAIC04ODIsOSArODgyLDkgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqYWZzX2RvX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbiBcXHR9XFxuIFxcbiBcXHRpZiAob3AtXFx1MDAzZWZpbGVbMF0uc2NiLmhhdmVfc3RhdHVzKVxcbi1cXHRcXHRkZW50cnktXFx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylvcC1cXHUwMDNlZmlsZVswXS5zY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcXG4rXFx0XFx0ZGVudHJ5LVxcdTAwM2VkX3RpbWUgPSAodW5zaWduZWQgbG9uZylvcC1cXHUwMDNlZmlsZVswXS5zY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRkZW50cnktXFx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylvcC1cXHUwMDNlZmlsZVswXS5kdl9iZWZvcmU7XFxuK1xcdFxcdGRlbnRyeS1cXHUwMDNlZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpb3AtXFx1MDAzZWZpbGVbMF0uZHZfYmVmb3JlO1xcbiBcXHRyZXQgPSBhZnNfcHV0X29wZXJhdGlvbihvcCk7XFxuIG91dDpcXG4gXFx0a2ZyZWUoY29va2llKTtcXG5AQCAtOTk3LDcgKzk5Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICphZnNfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuIFxcdF9kZWJ1ZyhcXFwic3BsaWNlICVwXFxcIiwgZGVudHJ5LVxcdTAwM2VkX2lub2RlKTtcXG4gXFx0ZCA9IGRfc3BsaWNlX2FsaWFzKGlub2RlLCBkZW50cnkpO1xcbiBcXHRpZiAoIUlTX0VSUl9PUl9OVUxMKGQpKSB7XFxuLVxcdFxcdGQtXFx1MDAzZWRfZnNkYXRhID0gZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YTtcXG4rXFx0XFx0ZC1cXHUwMDNlZF90aW1lID0gZGVudHJ5LVxcdTAwM2VkX3RpbWU7XFxuIFxcdFxcdHRyYWNlX2Fmc19sb29rdXAoZHZub2RlLCBcXHUwMDI2ZC1cXHUwMDNlZF9uYW1lLCBcXHUwMDI2ZmlkKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0dHJhY2VfYWZzX2xvb2t1cChkdm5vZGUsIFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbmFtZSwgXFx1MDAyNmZpZCk7XFxuQEAgLTEwMjEsMTMgKzEwMjEsMTcgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlX3JjdShzdHJ1Y3QgYWZzX3Zub2RlICpkdm5vZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4gXFx0aWYgKCFhZnNfY2hlY2tfdmFsaWRpdHkoZHZub2RlKSlcXG4gXFx0XFx0cmV0dXJuIC1FQ0hJTEQ7XFxuIFxcbitcXHQvKiBBIHJlbmFtZS91bmxpbmsgaXMgcGVuZGluZyAqL1xcbitcXHRpZiAoZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YSlcXG4rXFx0XFx0cmV0dXJuIC1FQ0hJTEQ7XFxuK1xcbiBcXHQvKiBXZSBvbmx5IG5lZWQgdG8gaW52YWxpZGF0ZSBhIGRlbnRyeSBpZiB0aGUgc2VydmVyJ3MgY29weSBjaGFuZ2VkXFxuIFxcdCAqIGJlaGluZCBvdXIgYmFjay4gIElmIHdlIG1hZGUgdGhlIGNoYW5nZSwgaXQncyBubyBwcm9ibGVtLiAgTm90ZSB0aGF0XFxuIFxcdCAqIG9uIGEgMzItYml0IHN5c3RlbSwgd2Ugb25seSBoYXZlIDMyIGJpdHMgaW4gdGhlIGRlbnRyeSB0byBzdG9yZSB0aGVcXG4gXFx0ICogdmVyc2lvbi5cXG4gXFx0ICovXFxuIFxcdGRpcl92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGR2bm9kZS1cXHUwMDNlc3RhdHVzLmRhdGFfdmVyc2lvbik7XFxuLVxcdGRlX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YSk7XFxuK1xcdGRlX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZGVudHJ5LVxcdTAwM2VkX3RpbWUpO1xcbiBcXHRpZiAoZGVfdmVyc2lvbiAhPSBkaXJfdmVyc2lvbikge1xcbiBcXHRcXHRkaXJfdmVyc2lvbiA9IChsb25nKVJFQURfT05DRShkdm5vZGUtXFx1MDAzZWludmFsaWRfYmVmb3JlKTtcXG4gXFx0XFx0aWYgKGRlX3ZlcnNpb24gLSBkaXJfdmVyc2lvbiBcXHUwMDNjIDApXFxuQEAgLTEwNTYsNiArMTA2MCwxMCBAQCBzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcXG4gXFx0aWYgKGZsYWdzIFxcdTAwMjYgTE9PS1VQX1JDVSlcXG4gXFx0XFx0cmV0dXJuIGFmc19kX3JldmFsaWRhdGVfcmN1KGRpciwgZGVudHJ5KTtcXG4gXFxuK1xcdC8qIFdhaXQgZm9yIHJlbmFtZS91bmxpbmsgdG8gY29tcGxldGUgKi9cXG4rd2FpdF9mb3JfcmVuYW1lOlxcbitcXHR3YWl0X3Zhcl9ldmVudChcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YSwgZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YSA9PSBOVUxMKTtcXG4rXFxuIFxcdGlmIChkX3JlYWxseV9pc19wb3NpdGl2ZShkZW50cnkpKSB7XFxuIFxcdFxcdHZub2RlID0gQUZTX0ZTX0koZF9pbm9kZShkZW50cnkpKTtcXG4gXFx0XFx0X2VudGVyKFxcXCJ7dj17JWxseDolbGx1fSBuPSVwZCBmbD0lbHh9LFxcXCIsXFxuQEAgLTEwODcsNyArMTA5NSw3IEBAIHN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgaW5vZGUgKnBhcmVudF9kaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lLFxcbiBcXHQgKiB2ZXJzaW9uLlxcbiBcXHQgKi9cXG4gXFx0ZGlyX3ZlcnNpb24gPSBkaXItXFx1MDAzZXN0YXR1cy5kYXRhX3ZlcnNpb247XFxuLVxcdGRlX3ZlcnNpb24gPSAobG9uZylkZW50cnktXFx1MDAzZWRfZnNkYXRhO1xcbitcXHRkZV92ZXJzaW9uID0gKGxvbmcpZGVudHJ5LVxcdTAwM2VkX3RpbWU7XFxuIFxcdGlmIChkZV92ZXJzaW9uID09IChsb25nKWRpcl92ZXJzaW9uKVxcbiBcXHRcXHRnb3RvIG91dF92YWxpZF9ub3VwZGF0ZTtcXG4gXFxuQEAgLTExNDgsNyArMTE1NiwxMyBAQCBzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcXG4gXFx0fVxcbiBcXG4gb3V0X3ZhbGlkOlxcbi1cXHRkZW50cnktXFx1MDAzZWRfZnNkYXRhID0gKHZvaWQgKikodW5zaWduZWQgbG9uZylkaXJfdmVyc2lvbjtcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuK1xcdGlmIChkZW50cnktXFx1MDAzZWRfZnNkYXRhKSB7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuK1xcdFxcdGdvdG8gd2FpdF9mb3JfcmVuYW1lO1xcbitcXHR9XFxuK1xcdGRlbnRyeS1cXHUwMDNlZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpZGlyX3ZlcnNpb247XFxuK1xcdHNwaW5fdW5sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuIG91dF92YWxpZF9ub3VwZGF0ZTpcXG4gXFx0a2V5X3B1dChrZXkpO1xcbiBcXHRfbGVhdmUoXFxcIiA9IDEgW3ZhbGlkXVxcXCIpO1xcbkBAIC0xNTIzLDggKzE1MzcsNyBAQCBzdGF0aWMgdm9pZCBhZnNfdW5saW5rX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcXG4gc3RhdGljIHZvaWQgYWZzX3VubGlua19wdXQoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxcbiB7XFxuIFxcdF9lbnRlcihcXFwib3A9JTA4eFxcXCIsIG9wLVxcdTAwM2VkZWJ1Z19pZCk7XFxuLVxcdGlmIChvcC1cXHUwMDNldW5saW5rLm5lZWRfcmVoYXNoIFxcdTAwMjZcXHUwMDI2IGFmc19vcF9lcnJvcihvcCkgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IGFmc19vcF9lcnJvcihvcCkgIT0gLUVOT0VOVClcXG4tXFx0XFx0ZF9yZWhhc2gob3AtXFx1MDAzZWRlbnRyeSk7XFxuK1xcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcXHUwMDI2b3AtXFx1MDAzZWRlbnRyeS1cXHUwMDNlZF9mc2RhdGEsIE5VTEwpO1xcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGFmc19vcGVyYXRpb25fb3BzIGFmc191bmxpbmtfb3BlcmF0aW9uID0ge1xcbkBAIC0xNTc4LDExICsxNTkxLDcgQEAgc3RhdGljIGludCBhZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuIFxcdFxcdGFmc19vcF9zZXRfZXJyb3Iob3AsIGFmc19zaWxseXJlbmFtZShkdm5vZGUsIHZub2RlLCBkZW50cnksIG9wLVxcdTAwM2VrZXkpKTtcXG4gXFx0XFx0Z290byBlcnJvcjtcXG4gXFx0fVxcbi1cXHRpZiAoIWRfdW5oYXNoZWQoZGVudHJ5KSkge1xcbi1cXHRcXHQvKiBQcmV2ZW50IGEgcmFjZSB3aXRoIFJDVSBsb29rdXAuICovXFxuLVxcdFxcdF9fZF9kcm9wKGRlbnRyeSk7XFxuLVxcdFxcdG9wLVxcdTAwM2V1bmxpbmsubmVlZF9yZWhhc2ggPSB0cnVlO1xcbi1cXHR9XFxuK1xcdGRlbnRyeS1cXHUwMDNlZF9mc2RhdGEgPSBBRlNfRlNEQVRBX0JMT0NLRUQ7XFxuIFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuIFxcbiBcXHRvcC1cXHUwMDNlZmlsZVsxXS52bm9kZSA9IHZub2RlO1xcbkBAIC0xODg5LDkgKzE4OTgsMTAgQEAgc3RhdGljIHZvaWQgYWZzX3JlbmFtZV9lZGl0X2RpcihzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXFxuIFxcbiBcXHRfZW50ZXIoXFxcIm9wPSUwOHhcXFwiLCBvcC1cXHUwMDNlZGVidWdfaWQpO1xcbiBcXG4tXFx0aWYgKG9wLVxcdTAwM2VyZW5hbWUucmVoYXNoKSB7XFxuLVxcdFxcdGRfcmVoYXNoKG9wLVxcdTAwM2VyZW5hbWUucmVoYXNoKTtcXG4tXFx0XFx0b3AtXFx1MDAzZXJlbmFtZS5yZWhhc2ggPSBOVUxMO1xcbitcXHRpZiAob3AtXFx1MDAzZXJlbmFtZS51bmJsb2NrKSB7XFxuK1xcdFxcdC8qIFJlbmFtZSBoYXMgZmluaXNoZWQsIHNvIHVubG9ja3MgbG9va3VwcyB0byB0YXJnZXQgKi9cXG4rXFx0XFx0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFxcdTAwMjZvcC1cXHUwMDNlcmVuYW1lLnVuYmxvY2stXFx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcXG4rXFx0XFx0b3AtXFx1MDAzZXJlbmFtZS51bmJsb2NrID0gTlVMTDtcXG4gXFx0fVxcbiBcXG4gXFx0ZnNjYWNoZV9iZWdpbl93cml0ZV9vcGVyYXRpb24oXFx1MDAyNm9yaWdfY3JlcywgYWZzX3Zub2RlX2NhY2hlKG9yaWdfZHZub2RlKSk7XFxuQEAgLTE5MzUsNyArMTk0NSw3IEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bmV3X2lub2RlLVxcdTAwM2VpX2xvY2spO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJpZXMgdG8gcmVmbGVjdCB0aGVpclxcbitcXHQvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX3RpbWUgb24gdGhlIGRlbnRyaWVzIHRvIHJlZmxlY3QgdGhlaXJcXG4gXFx0ICogbmV3IHBhcmVudCdzIGRhdGFfdmVyc2lvbi5cXG4gXFx0ICovXFxuIFxcdGFmc191cGRhdGVfZGVudHJ5X3ZlcnNpb24ob3AsIG5ld19kdnAsIG9wLVxcdTAwM2VkZW50cnkpO1xcbkBAIC0xOTc0LDYgKzE5ODQsOSBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2V4Y2hhbmdlX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcXG4gXFxuIFxcdFxcdGRfZXhjaGFuZ2Uob2xkX2RlbnRyeSwgbmV3X2RlbnRyeSk7XFxuIFxcdFxcdHVwX3dyaXRlKFxcdTAwMjZvcmlnX2R2bm9kZS1cXHUwMDNldmFsaWRhdGVfbG9jayk7XFxuK1xcdC8qIGRlbnRyeSBoYXMgYmVlbiBtb3ZlZCwgc28gZF92YWxpZGF0ZSBjYW4gc2FmZWx5IHByb2NlZWQgKi9cXG4rXFx0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFxcdTAwMjZvbGRfZGVudHJ5LVxcdTAwM2VkX2ZzZGF0YSwgTlVMTCk7XFxuK1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRkb3duX3dyaXRlKFxcdTAwMjZvcmlnX2R2bm9kZS1cXHUwMDNldmFsaWRhdGVfbG9jayk7XFxuIFxcdFxcdGlmICh0ZXN0X2JpdChBRlNfVk5PREVfRElSX1ZBTElELCBcXHUwMDI2b3JpZ19kdm5vZGUtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbkBAIC0yMDEzLDExICsyMDI2LDEwIEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZXhjaGFuZ2VfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxcbiBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX3B1dChzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXFxuIHtcXG4gXFx0X2VudGVyKFxcXCJvcD0lMDh4XFxcIiwgb3AtXFx1MDAzZWRlYnVnX2lkKTtcXG4tXFx0aWYgKG9wLVxcdTAwM2VyZW5hbWUucmVoYXNoKVxcbi1cXHRcXHRkX3JlaGFzaChvcC1cXHUwMDNlcmVuYW1lLnJlaGFzaCk7XFxuK1xcdGlmIChvcC1cXHUwMDNlcmVuYW1lLnVuYmxvY2spXFxuK1xcdFxcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcXHUwMDI2b3AtXFx1MDAzZXJlbmFtZS51bmJsb2NrLVxcdTAwM2VkX2ZzZGF0YSwgTlVMTCk7XFxuK1xcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcXHUwMDI2b3AtXFx1MDAzZWRlbnRyeS1cXHUwMDNlZF9mc2RhdGEsIE5VTEwpO1xcbiBcXHRkcHV0KG9wLVxcdTAwM2VyZW5hbWUudG1wKTtcXG4tXFx0aWYgKGFmc19vcF9lcnJvcihvcCkpXFxuLVxcdFxcdGRfcmVoYXNoKG9wLVxcdTAwM2VkZW50cnkpO1xcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGFmc19vcGVyYXRpb25fb3BzIGFmc19yZW5hbWVfb3BlcmF0aW9uID0ge1xcbkBAIC0yMTI1LDcgKzIxMzcsNiBAQCBzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpcixcXG4gXFx0XFx0b3AtXFx1MDAzZW9wc1xcdFxcdD0gXFx1MDAyNmFmc19yZW5hbWVfbm9yZXBsYWNlX29wZXJhdGlvbjtcXG4gXFx0fSBlbHNlIGlmIChmbGFncyBcXHUwMDI2IFJFTkFNRV9FWENIQU5HRSkge1xcbiBcXHRcXHRvcC1cXHUwMDNlb3BzXFx0XFx0PSBcXHUwMDI2YWZzX3JlbmFtZV9leGNoYW5nZV9vcGVyYXRpb247XFxuLVxcdFxcdGRfZHJvcChuZXdfZGVudHJ5KTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0LyogSWYgd2UgbWlnaHQgZGlzcGxhY2UgdGhlIHRhcmdldCwgd2UgbWlnaHQgbmVlZCB0byBkbyBzaWxseVxcbiBcXHRcXHQgKiByZW5hbWUuXFxuQEAgLTIxMzksMTQgKzIxNTAsMTIgQEAgc3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoZF9pc19wb3NpdGl2ZShuZXdfZGVudHJ5KSBcXHUwMDI2XFx1MDAyNiAhZF9pc19kaXIobmV3X2RlbnRyeSkpIHtcXG4gXFx0XFx0XFx0LyogVG8gcHJldmVudCBhbnkgbmV3IHJlZmVyZW5jZXMgdG8gdGhlIHRhcmdldCBkdXJpbmdcXG4tXFx0XFx0XFx0ICogdGhlIHJlbmFtZSwgd2UgdW5oYXNoIHRoZSBkZW50cnkgaW4gYWR2YW5jZS5cXG4rXFx0XFx0XFx0ICogdGhlIHJlbmFtZSwgd2Ugc2V0IGRfZnNkYXRhIHdoaWNoIGFmc19kX3JldmFsaWRhdGUgd2lsbCB3YWl0IGZvci5cXG4rXFx0XFx0XFx0ICogZF9sb2NrIGVuc3VyZXMgZF9jb3VudCgpIGFuZCAtXFx1MDAzZWRfZnNkYXRhIGFyZSBjb25zaXN0ZW50LlxcbiBcXHRcXHRcXHQgKi9cXG4tXFx0XFx0XFx0aWYgKCFkX3VuaGFzaGVkKG5ld19kZW50cnkpKSB7XFxuLVxcdFxcdFxcdFxcdGRfZHJvcChuZXdfZGVudHJ5KTtcXG4tXFx0XFx0XFx0XFx0b3AtXFx1MDAzZXJlbmFtZS5yZWhhc2ggPSBuZXdfZGVudHJ5O1xcbi1cXHRcXHRcXHR9XFxuLVxcbitcXHRcXHRcXHRzcGluX2xvY2soXFx1MDAyNm5ld19kZW50cnktXFx1MDAzZWRfbG9jayk7XFxuIFxcdFxcdFxcdGlmIChkX2NvdW50KG5ld19kZW50cnkpIFxcdTAwM2UgMikge1xcbitcXHRcXHRcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bmV3X2RlbnRyeS1cXHUwMDNlZF9sb2NrKTtcXG4gXFx0XFx0XFx0XFx0LyogY29weSB0aGUgdGFyZ2V0IGRlbnRyeSdzIG5hbWUgKi9cXG4gXFx0XFx0XFx0XFx0b3AtXFx1MDAzZXJlbmFtZS50bXAgPSBkX2FsbG9jKG5ld19kZW50cnktXFx1MDAzZWRfcGFyZW50LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNm5ld19kZW50cnktXFx1MDAzZWRfbmFtZSk7XFxuQEAgLTIxNjQsMjIgKzIxNzMsMjcgQEAgc3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXFxuIFxcdFxcdFxcdFxcdH1cXG4gXFxuIFxcdFxcdFxcdFxcdG9wLVxcdTAwM2VkZW50cnlfMiA9IG9wLVxcdTAwM2VyZW5hbWUudG1wO1xcbi1cXHRcXHRcXHRcXHRvcC1cXHUwMDNlcmVuYW1lLnJlaGFzaCA9IE5VTEw7XFxuIFxcdFxcdFxcdFxcdG9wLVxcdTAwM2VyZW5hbWUubmV3X25lZ2F0aXZlID0gdHJ1ZTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0LyogQmxvY2sgYW55IGxvb2t1cHMgdG8gdGFyZ2V0IHVudGlsIHRoZSByZW5hbWUgY29tcGxldGVzICovXFxuK1xcdFxcdFxcdFxcdG5ld19kZW50cnktXFx1MDAzZWRfZnNkYXRhID0gQUZTX0ZTREFUQV9CTE9DS0VEO1xcbitcXHRcXHRcXHRcXHRvcC1cXHUwMDNlcmVuYW1lLnVuYmxvY2sgPSBuZXdfZGVudHJ5O1xcbitcXHRcXHRcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bmV3X2RlbnRyeS1cXHUwMDNlZF9sb2NrKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuIFxcdC8qIFRoaXMgYml0IGlzIHBvdGVudGlhbGx5IG5hc3R5IGFzIHRoZXJlJ3MgYSBwb3RlbnRpYWwgcmFjZSB3aXRoXFxuLVxcdCAqIGFmc19kX3JldmFsaWRhdGV7LF9yY3V9KCkuICBXZSBoYXZlIHRvIGNoYW5nZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJ5XFxuK1xcdCAqIGFmc19kX3JldmFsaWRhdGV7LF9yY3V9KCkuICBXZSBoYXZlIHRvIGNoYW5nZSBkX3RpbWVfIG9uIHRoZSBkZW50cnlcXG4gXFx0ICogdG8gcmVmbGVjdCBpdCdzIG5ldyBwYXJlbnQncyBuZXcgZGF0YV92ZXJzaW9uIGFmdGVyIHRoZSBvcCwgYnV0XFxuIFxcdCAqIGRfcmV2YWxpZGF0ZSBtYXkgc2VlIG9sZF9kZW50cnkgYmV0d2VlbiB0aGUgb3AgaGF2aW5nIHRha2VuIHBsYWNlXFxuIFxcdCAqIGFuZCB0aGUgdmVyc2lvbiBiZWluZyB1cGRhdGVkLlxcbiBcXHQgKlxcbi1cXHQgKiBTbyBkcm9wIHRoZSBvbGRfZGVudHJ5IGZvciBub3cgdG8gbWFrZSBvdGhlciB0aHJlYWRzIGdvIHRocm91Z2hcXG4tXFx0ICogbG9va3VwIGluc3RlYWQgLSB3aGljaCB3ZSBob2xkIGEgbG9jayBhZ2FpbnN0LlxcbitcXHQgKiBTbyBibG9jayByZXZhbGlkYXRlIG9uIHRoZSBvbGRfZGVudHJ5IHVudGlsIHRoZSByZW5hbWUgY29tcGxldGVzLlxcbiBcXHQgKi9cXG4tXFx0ZF9kcm9wKG9sZF9kZW50cnkpO1xcbitcXHRzcGluX2xvY2soXFx1MDAyNm9sZF9kZW50cnktXFx1MDAzZWRfbG9jayk7XFxuK1xcdG9sZF9kZW50cnktXFx1MDAzZWRfZnNkYXRhID0gQUZTX0ZTREFUQV9CTE9DS0VEO1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2b2xkX2RlbnRyeS1cXHUwMDNlZF9sb2NrKTtcXG4gXFxuIFxcdHJldCA9IGFmc19kb19zeW5jX29wZXJhdGlvbihvcCk7XFxuIFxcdGlmIChyZXQgPT0gLUVOT1RTVVBQKVxcbmRpZmYgLS1naXQgYS9mcy9hZnMvaW50ZXJuYWwuaCBiL2ZzL2Fmcy9pbnRlcm5hbC5oXFxuaW5kZXggMGI3MmE4NTY2Mjk5OTIuLmEwYWZlNTUyYWU2NDZiIDEwMDY0NFxcbi0tLSBhL2ZzL2Fmcy9pbnRlcm5hbC5oXFxuKysrIGIvZnMvYWZzL2ludGVybmFsLmhcXG5AQCAtOTAwLDEwICs5MDAsNyBAQCBzdHJ1Y3QgYWZzX29wZXJhdGlvbiB7XFxuIFxcdFxcdFxcdHN0cnVjdCBhZnNfc3ltbGluayAqc3ltbGluaztcXG4gXFx0XFx0fSBjcmVhdGU7XFxuIFxcdFxcdHN0cnVjdCB7XFxuLVxcdFxcdFxcdGJvb2xcXHRuZWVkX3JlaGFzaDtcXG4tXFx0XFx0fSB1bmxpbms7XFxuLVxcdFxcdHN0cnVjdCB7XFxuLVxcdFxcdFxcdHN0cnVjdCBkZW50cnlcXHQqcmVoYXNoO1xcbitcXHRcXHRcXHRzdHJ1Y3QgZGVudHJ5XFx0KnVuYmxvY2s7XFxuIFxcdFxcdFxcdHN0cnVjdCBkZW50cnlcXHQqdG1wO1xcbiBcXHRcXHRcXHR1bnNpZ25lZCBpbnRcXHRyZW5hbWVfZmxhZ3M7XFxuIFxcdFxcdFxcdGJvb2xcXHRcXHRuZXdfbmVnYXRpdmU7XFxuQEAgLTE3NjQsMTcgKzE3NjEsMTcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKkFGU19WTk9ERV9UT19JKHN0cnVjdCBhZnNfdm5vZGUgKnZub2RlKVxcbiB9XFxuIFxcbiAvKlxcbi0gKiBOb3RlIHRoYXQgYSBkZW50cnkgZ290IGNoYW5nZWQuICBXZSBuZWVkIHRvIHNldCBkX2ZzZGF0YSB0byB0aGUgZGF0YSB2ZXJzaW9uXFxuKyAqIE5vdGUgdGhhdCBhIGRlbnRyeSBnb3QgY2hhbmdlZC4gIFdlIG5lZWQgdG8gc2V0IGRfdGltZSB0byB0aGUgZGF0YSB2ZXJzaW9uXFxuICAqIG51bWJlciBkZXJpdmVkIGZyb20gdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uLiAgSXQgZG9lc24ndCBtYXR0ZXIgaWZcXG4tICogZF9mc2RhdGEgZ29lcyBiYWNrd2FyZHMgYXMgd2UnbGwganVzdCByZXZhbGlkYXRlLlxcbisgKiBkX3RpbWUgZ29lcyBiYWNrd2FyZHMgYXMgd2UnbGwganVzdCByZXZhbGlkYXRlLlxcbiAgKi9cXG4gc3RhdGljIGlubGluZSB2b2lkIGFmc191cGRhdGVfZGVudHJ5X3ZlcnNpb24oc3RydWN0IGFmc19vcGVyYXRpb24gKm9wLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBhZnNfdm5vZGVfcGFyYW0gKmRpcl92cCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuIHtcXG4gXFx0aWYgKCFvcC1cXHUwMDNlY3VtdWxfZXJyb3IuZXJyb3IpXFxuLVxcdFxcdGRlbnRyeS1cXHUwMDNlZF9mc2RhdGEgPVxcbi1cXHRcXHRcXHQodm9pZCAqKSh1bnNpZ25lZCBsb25nKWRpcl92cC1cXHUwMDNlc2NiLnN0YXR1cy5kYXRhX3ZlcnNpb247XFxuK1xcdFxcdGRlbnRyeS1cXHUwMDNlZF90aW1lID1cXG4rXFx0XFx0XFx0KHVuc2lnbmVkIGxvbmcpZGlyX3ZwLVxcdTAwM2VzY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcXG4gfVxcbiBcXG4gLypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6NTA6NTYuNzE4MTMzMDc3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzAzNjg1MjgxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhZnNfZF9yZXZhbGlkYXRlXCIsXG4gICAgXCJhZnNfZF9yZXZhbGlkYXRlX3JjdVwiLFxuICAgIFwiYWZzX3VubGlua1wiLFxuICAgIFwiYWZzX3JlbmFtZVwiLFxuICAgIFwiYWZzX2xvb2t1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEFGUyBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB0byB1c2UgYGRfdGltZWAgaW5zdGVhZCBvZiBgZF9mc2RhdGFgIGZvciBzdG9yaW5nIHRoZSBkYXRhIHZlcnNpb24sIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3VwcyBhbmQgcmV2YWxpZGF0aW9ucyBkdXJpbmcgcmVuYW1lIGFuZCB1bmxpbmsgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGUyBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb25jdXJyZW5jeSBhbmQgVkZTIGludGVyYWN0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJlY2Y1NDkyMzBmN2MwNGU4NmI4ZGY5ZjJhNmRhM2IyYWEzNGExNjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA4OjUwOjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYWZzL2Fmcy5oIGIvZnMvYWZzL2Fmcy5oXG5pbmRleCBlYzNkYjAwYmQwODEzYy4uMDE5ZTc3YjA4NDU4ZTMgMTAwNjQ0XG4tLS0gYS9mcy9hZnMvYWZzLmhcbisrKyBiL2ZzL2Fmcy9hZnMuaFxuQEAgLTI2LDYgKzI2LDEzIEBAIHR5cGVkZWYgdTY0XHRcdFx0YWZzX3ZvbGlkX3Q7XG4gdHlwZWRlZiB1NjRcdFx0XHRhZnNfdm5vZGVpZF90O1xuIHR5cGVkZWYgdTY0XHRcdFx0YWZzX2RhdGF2ZXJzaW9uX3Q7XG4gXG4rLyogVGhpcyBpcyBzdG9yZWQgaW4gLVx1MDAzZWRfZnNkYXRhIHRvIHN0b3AgZF9yZXZhbGlkYXRlIGxvb2tpbmcgYXQsXG4rICogYW5kIHBvc3NpYmx5IGNoYW5naW5nLCAtXHUwMDNlZF90aW1lIG9uIGEgZGVudHJ5IHdoaWNoIGlzIGJlaW5nIG1vdmVkXG4rICogYmV0d2VlbiBkaXJlY3RvcmllcywgYW5kIHRvIGJsb2NrIGxvb2t1cCBmb3IgZGVudHJ5IHRoYXQgaXNcbisgKiBiZWluZyByZW1vdmVkIHdpdGhvdXQgc2lsbHktcmVuYW1lLlxuKyAqL1xuKyNkZWZpbmUgQUZTX0ZTREFUQV9CTE9DS0VEICgodm9pZCopMSlcbitcbiB0eXBlZGVmIGVudW0ge1xuIFx0QUZTVkxfUldWT0wsXHRcdFx0LyogcmVhZC93cml0ZSB2b2x1bWUgKi9cbiBcdEFGU1ZMX1JPVk9MLFx0XHRcdC8qIHJlYWQtb25seSB2b2x1bWUgKi9cbmRpZmYgLS1naXQgYS9mcy9hZnMvZGlyLmMgYi9mcy9hZnMvZGlyLmNcbmluZGV4IDQ5OGI5OWNjZGYwZTI3Li5lOWFhZjY2MjE4ZWE2YiAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9kaXIuY1xuKysrIGIvZnMvYWZzL2Rpci5jXG5AQCAtNzk1LDcgKzc5NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmFmc19kb19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdFx0YWZzX2Rpcl9pdGVyYXRlKGRpciwgXHUwMDI2Y29va2llLVx1MDAzZWN0eCwgTlVMTCwgXHUwMDI2ZGF0YV92ZXJzaW9uKTtcbiBcdH1cbiBcbi1cdGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpZGF0YV92ZXJzaW9uO1xuK1x0ZGVudHJ5LVx1MDAzZWRfdGltZSA9ICh1bnNpZ25lZCBsb25nKWRhdGFfdmVyc2lvbjtcbiBcbiBcdC8qIENoZWNrIHRvIHNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYW4gaW5vZGUgZm9yIHRoZSBwcmltYXJ5IGZpZC4gKi9cbiBcdGlub2RlID0gaWxvb2t1cDUoZGlyLVx1MDAzZWlfc2IsIGNvb2tpZS1cdTAwM2VmaWRzWzFdLnZub2RlLFxuQEAgLTg4Miw5ICs4ODIsOSBAQCBzdGF0aWMgc3RydWN0IGlub2RlICphZnNfZG9fbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHR9XG4gXG4gXHRpZiAob3AtXHUwMDNlZmlsZVswXS5zY2IuaGF2ZV9zdGF0dXMpXG4tXHRcdGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpb3AtXHUwMDNlZmlsZVswXS5zY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcbitcdFx0ZGVudHJ5LVx1MDAzZWRfdGltZSA9ICh1bnNpZ25lZCBsb25nKW9wLVx1MDAzZWZpbGVbMF0uc2NiLnN0YXR1cy5kYXRhX3ZlcnNpb247XG4gXHRlbHNlXG4tXHRcdGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpb3AtXHUwMDNlZmlsZVswXS5kdl9iZWZvcmU7XG4rXHRcdGRlbnRyeS1cdTAwM2VkX3RpbWUgPSAodW5zaWduZWQgbG9uZylvcC1cdTAwM2VmaWxlWzBdLmR2X2JlZm9yZTtcbiBcdHJldCA9IGFmc19wdXRfb3BlcmF0aW9uKG9wKTtcbiBvdXQ6XG4gXHRrZnJlZShjb29raWUpO1xuQEAgLTk5Nyw3ICs5OTcsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYWZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0X2RlYnVnKFwic3BsaWNlICVwXCIsIGRlbnRyeS1cdTAwM2VkX2lub2RlKTtcbiBcdGQgPSBkX3NwbGljZV9hbGlhcyhpbm9kZSwgZGVudHJ5KTtcbiBcdGlmICghSVNfRVJSX09SX05VTEwoZCkpIHtcbi1cdFx0ZC1cdTAwM2VkX2ZzZGF0YSA9IGRlbnRyeS1cdTAwM2VkX2ZzZGF0YTtcbitcdFx0ZC1cdTAwM2VkX3RpbWUgPSBkZW50cnktXHUwMDNlZF90aW1lO1xuIFx0XHR0cmFjZV9hZnNfbG9va3VwKGR2bm9kZSwgXHUwMDI2ZC1cdTAwM2VkX25hbWUsIFx1MDAyNmZpZCk7XG4gXHR9IGVsc2Uge1xuIFx0XHR0cmFjZV9hZnNfbG9va3VwKGR2bm9kZSwgXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbmFtZSwgXHUwMDI2ZmlkKTtcbkBAIC0xMDIxLDEzICsxMDIxLDE3IEBAIHN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZV9yY3Uoc3RydWN0IGFmc192bm9kZSAqZHZub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHRpZiAoIWFmc19jaGVja192YWxpZGl0eShkdm5vZGUpKVxuIFx0XHRyZXR1cm4gLUVDSElMRDtcbiBcbitcdC8qIEEgcmVuYW1lL3VubGluayBpcyBwZW5kaW5nICovXG4rXHRpZiAoZGVudHJ5LVx1MDAzZWRfZnNkYXRhKVxuK1x0XHRyZXR1cm4gLUVDSElMRDtcbitcbiBcdC8qIFdlIG9ubHkgbmVlZCB0byBpbnZhbGlkYXRlIGEgZGVudHJ5IGlmIHRoZSBzZXJ2ZXIncyBjb3B5IGNoYW5nZWRcbiBcdCAqIGJlaGluZCBvdXIgYmFjay4gIElmIHdlIG1hZGUgdGhlIGNoYW5nZSwgaXQncyBubyBwcm9ibGVtLiAgTm90ZSB0aGF0XG4gXHQgKiBvbiBhIDMyLWJpdCBzeXN0ZW0sIHdlIG9ubHkgaGF2ZSAzMiBiaXRzIGluIHRoZSBkZW50cnkgdG8gc3RvcmUgdGhlXG4gXHQgKiB2ZXJzaW9uLlxuIFx0ICovXG4gXHRkaXJfdmVyc2lvbiA9IChsb25nKVJFQURfT05DRShkdm5vZGUtXHUwMDNlc3RhdHVzLmRhdGFfdmVyc2lvbik7XG4tXHRkZV92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSk7XG4rXHRkZV92ZXJzaW9uID0gKGxvbmcpUkVBRF9PTkNFKGRlbnRyeS1cdTAwM2VkX3RpbWUpO1xuIFx0aWYgKGRlX3ZlcnNpb24gIT0gZGlyX3ZlcnNpb24pIHtcbiBcdFx0ZGlyX3ZlcnNpb24gPSAobG9uZylSRUFEX09OQ0UoZHZub2RlLVx1MDAzZWludmFsaWRfYmVmb3JlKTtcbiBcdFx0aWYgKGRlX3ZlcnNpb24gLSBkaXJfdmVyc2lvbiBcdTAwM2MgMClcbkBAIC0xMDU2LDYgKzEwNjAsMTAgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsXG4gXHRpZiAoZmxhZ3MgXHUwMDI2IExPT0tVUF9SQ1UpXG4gXHRcdHJldHVybiBhZnNfZF9yZXZhbGlkYXRlX3JjdShkaXIsIGRlbnRyeSk7XG4gXG4rXHQvKiBXYWl0IGZvciByZW5hbWUvdW5saW5rIHRvIGNvbXBsZXRlICovXG4rd2FpdF9mb3JfcmVuYW1lOlxuK1x0d2FpdF92YXJfZXZlbnQoXHUwMDI2ZGVudHJ5LVx1MDAzZWRfZnNkYXRhLCBkZW50cnktXHUwMDNlZF9mc2RhdGEgPT0gTlVMTCk7XG4rXG4gXHRpZiAoZF9yZWFsbHlfaXNfcG9zaXRpdmUoZGVudHJ5KSkge1xuIFx0XHR2bm9kZSA9IEFGU19GU19JKGRfaW5vZGUoZGVudHJ5KSk7XG4gXHRcdF9lbnRlcihcInt2PXslbGx4OiVsbHV9IG49JXBkIGZsPSVseH0sXCIsXG5AQCAtMTA4Nyw3ICsxMDk1LDcgQEAgc3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsXG4gXHQgKiB2ZXJzaW9uLlxuIFx0ICovXG4gXHRkaXJfdmVyc2lvbiA9IGRpci1cdTAwM2VzdGF0dXMuZGF0YV92ZXJzaW9uO1xuLVx0ZGVfdmVyc2lvbiA9IChsb25nKWRlbnRyeS1cdTAwM2VkX2ZzZGF0YTtcbitcdGRlX3ZlcnNpb24gPSAobG9uZylkZW50cnktXHUwMDNlZF90aW1lO1xuIFx0aWYgKGRlX3ZlcnNpb24gPT0gKGxvbmcpZGlyX3ZlcnNpb24pXG4gXHRcdGdvdG8gb3V0X3ZhbGlkX25vdXBkYXRlO1xuIFxuQEAgLTExNDgsNyArMTE1NiwxMyBAQCBzdGF0aWMgaW50IGFmc19kX3JldmFsaWRhdGUoc3RydWN0IGlub2RlICpwYXJlbnRfZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcbiBcdH1cbiBcbiBvdXRfdmFsaWQ6XG4tXHRkZW50cnktXHUwMDNlZF9mc2RhdGEgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKWRpcl92ZXJzaW9uO1xuK1x0c3Bpbl9sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuK1x0aWYgKGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSkge1xuK1x0XHRzcGluX3VubG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbitcdFx0Z290byB3YWl0X2Zvcl9yZW5hbWU7XG4rXHR9XG4rXHRkZW50cnktXHUwMDNlZF90aW1lID0gKHVuc2lnbmVkIGxvbmcpZGlyX3ZlcnNpb247XG4rXHRzcGluX3VubG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbiBvdXRfdmFsaWRfbm91cGRhdGU6XG4gXHRrZXlfcHV0KGtleSk7XG4gXHRfbGVhdmUoXCIgPSAxIFt2YWxpZF1cIik7XG5AQCAtMTUyMyw4ICsxNTM3LDcgQEAgc3RhdGljIHZvaWQgYWZzX3VubGlua19lZGl0X2RpcihzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXG4gc3RhdGljIHZvaWQgYWZzX3VubGlua19wdXQoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxuIHtcbiBcdF9lbnRlcihcIm9wPSUwOHhcIiwgb3AtXHUwMDNlZGVidWdfaWQpO1xuLVx0aWYgKG9wLVx1MDAzZXVubGluay5uZWVkX3JlaGFzaCBcdTAwMjZcdTAwMjYgYWZzX29wX2Vycm9yKG9wKSBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgYWZzX29wX2Vycm9yKG9wKSAhPSAtRU5PRU5UKVxuLVx0XHRkX3JlaGFzaChvcC1cdTAwM2VkZW50cnkpO1xuK1x0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFx1MDAyNm9wLVx1MDAzZWRlbnRyeS1cdTAwM2VkX2ZzZGF0YSwgTlVMTCk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWZzX29wZXJhdGlvbl9vcHMgYWZzX3VubGlua19vcGVyYXRpb24gPSB7XG5AQCAtMTU3OCwxMSArMTU5MSw3IEBAIHN0YXRpYyBpbnQgYWZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0XHRhZnNfb3Bfc2V0X2Vycm9yKG9wLCBhZnNfc2lsbHlyZW5hbWUoZHZub2RlLCB2bm9kZSwgZGVudHJ5LCBvcC1cdTAwM2VrZXkpKTtcbiBcdFx0Z290byBlcnJvcjtcbiBcdH1cbi1cdGlmICghZF91bmhhc2hlZChkZW50cnkpKSB7XG4tXHRcdC8qIFByZXZlbnQgYSByYWNlIHdpdGggUkNVIGxvb2t1cC4gKi9cbi1cdFx0X19kX2Ryb3AoZGVudHJ5KTtcbi1cdFx0b3AtXHUwMDNldW5saW5rLm5lZWRfcmVoYXNoID0gdHJ1ZTtcbi1cdH1cbitcdGRlbnRyeS1cdTAwM2VkX2ZzZGF0YSA9IEFGU19GU0RBVEFfQkxPQ0tFRDtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFxuIFx0b3AtXHUwMDNlZmlsZVsxXS52bm9kZSA9IHZub2RlO1xuQEAgLTE4ODksOSArMTg5OCwxMCBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcbiBcbiBcdF9lbnRlcihcIm9wPSUwOHhcIiwgb3AtXHUwMDNlZGVidWdfaWQpO1xuIFxuLVx0aWYgKG9wLVx1MDAzZXJlbmFtZS5yZWhhc2gpIHtcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlcmVuYW1lLnJlaGFzaCk7XG4tXHRcdG9wLVx1MDAzZXJlbmFtZS5yZWhhc2ggPSBOVUxMO1xuK1x0aWYgKG9wLVx1MDAzZXJlbmFtZS51bmJsb2NrKSB7XG4rXHRcdC8qIFJlbmFtZSBoYXMgZmluaXNoZWQsIHNvIHVubG9ja3MgbG9va3VwcyB0byB0YXJnZXQgKi9cbitcdFx0c3RvcmVfcmVsZWFzZV93YWtlX3VwKFx1MDAyNm9wLVx1MDAzZXJlbmFtZS51bmJsb2NrLVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbitcdFx0b3AtXHUwMDNlcmVuYW1lLnVuYmxvY2sgPSBOVUxMO1xuIFx0fVxuIFxuIFx0ZnNjYWNoZV9iZWdpbl93cml0ZV9vcGVyYXRpb24oXHUwMDI2b3JpZ19jcmVzLCBhZnNfdm5vZGVfY2FjaGUob3JpZ19kdm5vZGUpKTtcbkBAIC0xOTM1LDcgKzE5NDUsNyBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2bmV3X2lub2RlLVx1MDAzZWlfbG9jayk7XG4gXHR9XG4gXG4tXHQvKiBOb3cgd2UgY2FuIHVwZGF0ZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJpZXMgdG8gcmVmbGVjdCB0aGVpclxuK1x0LyogTm93IHdlIGNhbiB1cGRhdGUgZF90aW1lIG9uIHRoZSBkZW50cmllcyB0byByZWZsZWN0IHRoZWlyXG4gXHQgKiBuZXcgcGFyZW50J3MgZGF0YV92ZXJzaW9uLlxuIFx0ICovXG4gXHRhZnNfdXBkYXRlX2RlbnRyeV92ZXJzaW9uKG9wLCBuZXdfZHZwLCBvcC1cdTAwM2VkZW50cnkpO1xuQEAgLTE5NzQsNiArMTk4NCw5IEBAIHN0YXRpYyB2b2lkIGFmc19yZW5hbWVfZXhjaGFuZ2VfZWRpdF9kaXIoc3RydWN0IGFmc19vcGVyYXRpb24gKm9wKVxuIFxuIFx0XHRkX2V4Y2hhbmdlKG9sZF9kZW50cnksIG5ld19kZW50cnkpO1xuIFx0XHR1cF93cml0ZShcdTAwMjZvcmlnX2R2bm9kZS1cdTAwM2V2YWxpZGF0ZV9sb2NrKTtcbitcdC8qIGRlbnRyeSBoYXMgYmVlbiBtb3ZlZCwgc28gZF92YWxpZGF0ZSBjYW4gc2FmZWx5IHByb2NlZWQgKi9cbitcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcdTAwMjZvbGRfZGVudHJ5LVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbitcbiBcdH0gZWxzZSB7XG4gXHRcdGRvd25fd3JpdGUoXHUwMDI2b3JpZ19kdm5vZGUtXHUwMDNldmFsaWRhdGVfbG9jayk7XG4gXHRcdGlmICh0ZXN0X2JpdChBRlNfVk5PREVfRElSX1ZBTElELCBcdTAwMjZvcmlnX2R2bm9kZS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG5AQCAtMjAxMywxMSArMjAyNiwxMCBAQCBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX2V4Y2hhbmdlX2VkaXRfZGlyKHN0cnVjdCBhZnNfb3BlcmF0aW9uICpvcClcbiBzdGF0aWMgdm9pZCBhZnNfcmVuYW1lX3B1dChzdHJ1Y3QgYWZzX29wZXJhdGlvbiAqb3ApXG4ge1xuIFx0X2VudGVyKFwib3A9JTA4eFwiLCBvcC1cdTAwM2VkZWJ1Z19pZCk7XG4tXHRpZiAob3AtXHUwMDNlcmVuYW1lLnJlaGFzaClcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlcmVuYW1lLnJlaGFzaCk7XG4rXHRpZiAob3AtXHUwMDNlcmVuYW1lLnVuYmxvY2spXG4rXHRcdHN0b3JlX3JlbGVhc2Vfd2FrZV91cChcdTAwMjZvcC1cdTAwM2VyZW5hbWUudW5ibG9jay1cdTAwM2VkX2ZzZGF0YSwgTlVMTCk7XG4rXHRzdG9yZV9yZWxlYXNlX3dha2VfdXAoXHUwMDI2b3AtXHUwMDNlZGVudHJ5LVx1MDAzZWRfZnNkYXRhLCBOVUxMKTtcbiBcdGRwdXQob3AtXHUwMDNlcmVuYW1lLnRtcCk7XG4tXHRpZiAoYWZzX29wX2Vycm9yKG9wKSlcbi1cdFx0ZF9yZWhhc2gob3AtXHUwMDNlZGVudHJ5KTtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfcmVuYW1lX29wZXJhdGlvbiA9IHtcbkBAIC0yMTI1LDcgKzIxMzcsNiBAQCBzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpcixcbiBcdFx0b3AtXHUwMDNlb3BzXHRcdD0gXHUwMDI2YWZzX3JlbmFtZV9ub3JlcGxhY2Vfb3BlcmF0aW9uO1xuIFx0fSBlbHNlIGlmIChmbGFncyBcdTAwMjYgUkVOQU1FX0VYQ0hBTkdFKSB7XG4gXHRcdG9wLVx1MDAzZW9wc1x0XHQ9IFx1MDAyNmFmc19yZW5hbWVfZXhjaGFuZ2Vfb3BlcmF0aW9uO1xuLVx0XHRkX2Ryb3AobmV3X2RlbnRyeSk7XG4gXHR9IGVsc2Uge1xuIFx0XHQvKiBJZiB3ZSBtaWdodCBkaXNwbGFjZSB0aGUgdGFyZ2V0LCB3ZSBtaWdodCBuZWVkIHRvIGRvIHNpbGx5XG4gXHRcdCAqIHJlbmFtZS5cbkBAIC0yMTM5LDE0ICsyMTUwLDEyIEBAIHN0YXRpYyBpbnQgYWZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLFxuIFx0XHQgKi9cbiBcdFx0aWYgKGRfaXNfcG9zaXRpdmUobmV3X2RlbnRyeSkgXHUwMDI2XHUwMDI2ICFkX2lzX2RpcihuZXdfZGVudHJ5KSkge1xuIFx0XHRcdC8qIFRvIHByZXZlbnQgYW55IG5ldyByZWZlcmVuY2VzIHRvIHRoZSB0YXJnZXQgZHVyaW5nXG4tXHRcdFx0ICogdGhlIHJlbmFtZSwgd2UgdW5oYXNoIHRoZSBkZW50cnkgaW4gYWR2YW5jZS5cbitcdFx0XHQgKiB0aGUgcmVuYW1lLCB3ZSBzZXQgZF9mc2RhdGEgd2hpY2ggYWZzX2RfcmV2YWxpZGF0ZSB3aWxsIHdhaXQgZm9yLlxuK1x0XHRcdCAqIGRfbG9jayBlbnN1cmVzIGRfY291bnQoKSBhbmQgLVx1MDAzZWRfZnNkYXRhIGFyZSBjb25zaXN0ZW50LlxuIFx0XHRcdCAqL1xuLVx0XHRcdGlmICghZF91bmhhc2hlZChuZXdfZGVudHJ5KSkge1xuLVx0XHRcdFx0ZF9kcm9wKG5ld19kZW50cnkpO1xuLVx0XHRcdFx0b3AtXHUwMDNlcmVuYW1lLnJlaGFzaCA9IG5ld19kZW50cnk7XG4tXHRcdFx0fVxuLVxuK1x0XHRcdHNwaW5fbG9jayhcdTAwMjZuZXdfZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4gXHRcdFx0aWYgKGRfY291bnQobmV3X2RlbnRyeSkgXHUwMDNlIDIpIHtcbitcdFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNm5ld19kZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0XHRcdC8qIGNvcHkgdGhlIHRhcmdldCBkZW50cnkncyBuYW1lICovXG4gXHRcdFx0XHRvcC1cdTAwM2VyZW5hbWUudG1wID0gZF9hbGxvYyhuZXdfZGVudHJ5LVx1MDAzZWRfcGFyZW50LFxuIFx0XHRcdFx0XHRcdFx0IFx1MDAyNm5ld19kZW50cnktXHUwMDNlZF9uYW1lKTtcbkBAIC0yMTY0LDIyICsyMTczLDI3IEBAIHN0YXRpYyBpbnQgYWZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLFxuIFx0XHRcdFx0fVxuIFxuIFx0XHRcdFx0b3AtXHUwMDNlZGVudHJ5XzIgPSBvcC1cdTAwM2VyZW5hbWUudG1wO1xuLVx0XHRcdFx0b3AtXHUwMDNlcmVuYW1lLnJlaGFzaCA9IE5VTEw7XG4gXHRcdFx0XHRvcC1cdTAwM2VyZW5hbWUubmV3X25lZ2F0aXZlID0gdHJ1ZTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0LyogQmxvY2sgYW55IGxvb2t1cHMgdG8gdGFyZ2V0IHVudGlsIHRoZSByZW5hbWUgY29tcGxldGVzICovXG4rXHRcdFx0XHRuZXdfZGVudHJ5LVx1MDAzZWRfZnNkYXRhID0gQUZTX0ZTREFUQV9CTE9DS0VEO1xuK1x0XHRcdFx0b3AtXHUwMDNlcmVuYW1lLnVuYmxvY2sgPSBuZXdfZGVudHJ5O1xuK1x0XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2bmV3X2RlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0fVxuIFxuIFx0LyogVGhpcyBiaXQgaXMgcG90ZW50aWFsbHkgbmFzdHkgYXMgdGhlcmUncyBhIHBvdGVudGlhbCByYWNlIHdpdGhcbi1cdCAqIGFmc19kX3JldmFsaWRhdGV7LF9yY3V9KCkuICBXZSBoYXZlIHRvIGNoYW5nZSBkX2ZzZGF0YSBvbiB0aGUgZGVudHJ5XG4rXHQgKiBhZnNfZF9yZXZhbGlkYXRleyxfcmN1fSgpLiAgV2UgaGF2ZSB0byBjaGFuZ2UgZF90aW1lXyBvbiB0aGUgZGVudHJ5XG4gXHQgKiB0byByZWZsZWN0IGl0J3MgbmV3IHBhcmVudCdzIG5ldyBkYXRhX3ZlcnNpb24gYWZ0ZXIgdGhlIG9wLCBidXRcbiBcdCAqIGRfcmV2YWxpZGF0ZSBtYXkgc2VlIG9sZF9kZW50cnkgYmV0d2VlbiB0aGUgb3AgaGF2aW5nIHRha2VuIHBsYWNlXG4gXHQgKiBhbmQgdGhlIHZlcnNpb24gYmVpbmcgdXBkYXRlZC5cbiBcdCAqXG4tXHQgKiBTbyBkcm9wIHRoZSBvbGRfZGVudHJ5IGZvciBub3cgdG8gbWFrZSBvdGhlciB0aHJlYWRzIGdvIHRocm91Z2hcbi1cdCAqIGxvb2t1cCBpbnN0ZWFkIC0gd2hpY2ggd2UgaG9sZCBhIGxvY2sgYWdhaW5zdC5cbitcdCAqIFNvIGJsb2NrIHJldmFsaWRhdGUgb24gdGhlIG9sZF9kZW50cnkgdW50aWwgdGhlIHJlbmFtZSBjb21wbGV0ZXMuXG4gXHQgKi9cbi1cdGRfZHJvcChvbGRfZGVudHJ5KTtcbitcdHNwaW5fbG9jayhcdTAwMjZvbGRfZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4rXHRvbGRfZGVudHJ5LVx1MDAzZWRfZnNkYXRhID0gQUZTX0ZTREFUQV9CTE9DS0VEO1xuK1x0c3Bpbl91bmxvY2soXHUwMDI2b2xkX2RlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFxuIFx0cmV0ID0gYWZzX2RvX3N5bmNfb3BlcmF0aW9uKG9wKTtcbiBcdGlmIChyZXQgPT0gLUVOT1RTVVBQKVxuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9pbnRlcm5hbC5oIGIvZnMvYWZzL2ludGVybmFsLmhcbmluZGV4IDBiNzJhODU2NjI5OTkyLi5hMGFmZTU1MmFlNjQ2YiAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9pbnRlcm5hbC5oXG4rKysgYi9mcy9hZnMvaW50ZXJuYWwuaFxuQEAgLTkwMCwxMCArOTAwLDcgQEAgc3RydWN0IGFmc19vcGVyYXRpb24ge1xuIFx0XHRcdHN0cnVjdCBhZnNfc3ltbGluayAqc3ltbGluaztcbiBcdFx0fSBjcmVhdGU7XG4gXHRcdHN0cnVjdCB7XG4tXHRcdFx0Ym9vbFx0bmVlZF9yZWhhc2g7XG4tXHRcdH0gdW5saW5rO1xuLVx0XHRzdHJ1Y3Qge1xuLVx0XHRcdHN0cnVjdCBkZW50cnlcdCpyZWhhc2g7XG4rXHRcdFx0c3RydWN0IGRlbnRyeVx0KnVuYmxvY2s7XG4gXHRcdFx0c3RydWN0IGRlbnRyeVx0KnRtcDtcbiBcdFx0XHR1bnNpZ25lZCBpbnRcdHJlbmFtZV9mbGFncztcbiBcdFx0XHRib29sXHRcdG5ld19uZWdhdGl2ZTtcbkBAIC0xNzY0LDE3ICsxNzYxLDE3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICpBRlNfVk5PREVfVE9fSShzdHJ1Y3QgYWZzX3Zub2RlICp2bm9kZSlcbiB9XG4gXG4gLypcbi0gKiBOb3RlIHRoYXQgYSBkZW50cnkgZ290IGNoYW5nZWQuICBXZSBuZWVkIHRvIHNldCBkX2ZzZGF0YSB0byB0aGUgZGF0YSB2ZXJzaW9uXG4rICogTm90ZSB0aGF0IGEgZGVudHJ5IGdvdCBjaGFuZ2VkLiAgV2UgbmVlZCB0byBzZXQgZF90aW1lIHRvIHRoZSBkYXRhIHZlcnNpb25cbiAgKiBudW1iZXIgZGVyaXZlZCBmcm9tIHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi4gIEl0IGRvZXNuJ3QgbWF0dGVyIGlmXG4tICogZF9mc2RhdGEgZ29lcyBiYWNrd2FyZHMgYXMgd2UnbGwganVzdCByZXZhbGlkYXRlLlxuKyAqIGRfdGltZSBnb2VzIGJhY2t3YXJkcyBhcyB3ZSdsbCBqdXN0IHJldmFsaWRhdGUuXG4gICovXG4gc3RhdGljIGlubGluZSB2b2lkIGFmc191cGRhdGVfZGVudHJ5X3ZlcnNpb24oc3RydWN0IGFmc19vcGVyYXRpb24gKm9wLFxuIFx0XHRcdFx0XHQgICAgIHN0cnVjdCBhZnNfdm5vZGVfcGFyYW0gKmRpcl92cCxcbiBcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4ge1xuIFx0aWYgKCFvcC1cdTAwM2VjdW11bF9lcnJvci5lcnJvcilcbi1cdFx0ZGVudHJ5LVx1MDAzZWRfZnNkYXRhID1cbi1cdFx0XHQodm9pZCAqKSh1bnNpZ25lZCBsb25nKWRpcl92cC1cdTAwM2VzY2Iuc3RhdHVzLmRhdGFfdmVyc2lvbjtcbitcdFx0ZGVudHJ5LVx1MDAzZWRfdGltZSA9XG4rXHRcdFx0KHVuc2lnbmVkIGxvbmcpZGlyX3ZwLVx1MDAzZXNjYi5zdGF0dXMuZGF0YV92ZXJzaW9uO1xuIH1cbiBcbiAvKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6NTA6NTYuNzE4MTM0NTc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY1OTg2ODk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFGUyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBBbmRyZXcgRmlsZSBTeXN0ZW0gaW4gdGhlIExpbnV4IGtlcm5lbC4gSXQncyB0d2Vha2luZyBob3cgYGRfZnNkYXRhYCBhbmQgYGRfdGltZWAgYXJlIGhhbmRsZWQgaW4gYGZzL2Fmcy9kaXIuY2AuIEJhc2ljYWxseSwgdGhleSdyZSBpbnRyb2R1Y2luZyBgQUZTX0ZTREFUQV9CTE9DS0VEYCB0byBwcmV2ZW50IGBkX3JldmFsaWRhdGVgIGZyb20gbWVzc2luZyB3aXRoIHRoZSBkZW50cnkncyBgZF90aW1lYCB3aGVuIGl0J3MgYmVpbmcgbW92ZWQgYmV0d2VlbiBkaXJlY3Rvcmllcy4gVGhlIHNhbWUgZmxhZyB3aWxsIGJsb2NrIGxvb2t1cHMgZm9yIGRlbnRyaWVzIHRoYXQgYXJlIGJlaW5nIHJlbW92ZWQgdGhlIHByb3BlciB3YXkuIFRoZSBwYXRjaCBzd2FwcyBgZF90aW1lYCBmb3IgYGRfZnNkYXRhYCB0byBzdG9yZSB0aGUgZGF0YSB2ZXJzaW9uIGFuZCB1c2VzIGBkX2ZzZGF0YWAgdG8gYmxvY2sgbG9va3Vwcy9yZXZhbGlkYXRlcyBkdXJpbmcgcmVuYW1lL3VubGluayBvcGVyYXRpb25zLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBmdW5jdGlvbmFsPyBDYW4gd2UgYWN0dWFsbHkgKnJlYWNoKiB0aGVzZSBjaGFuZ2VzP1wiIEFGUyBpcyBhIG5ldHdvcmsgZmlsZXN5c3RlbSwgc28gd2UgY2FuIGRlZmluaXRlbHkgdGVzdCB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaW5raW5nIGFib3V0IGl0LCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgYnVyaWVkIGRlZXAgaW4gY29yZSBkaXJlY3Rvcnkgb3BlcmF0aW9ucyDigJMgbG9va3VwLCByZXZhbGlkYXRlLCB1bmxpbmssIHJlbmFtZS4gVGhvc2UgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB3aWxsIGJlIHRlc3RlZCBvZnRlbi5cblxuTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBiZSBtb3N0IHN1c2NlcHRpYmxlIHRvIGZ1enppbmcuIEkgY2FuIHNlZSB0aGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBmdW5jdGlvbnMuIEkgbmVlZCB0byBuYXJyb3cgaXQgZG93biB0byB0aGUgbW9zdCBpbXBvcnRhbnQgdGFyZ2V0cy4gQWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb2RlLCBJIHRoaW5rIG15IGZvY3VzIHNob3VsZCBiZSBvbiBgYWZzX2RfcmV2YWxpZGF0ZWAsIGBhZnNfZF9yZXZhbGlkYXRlX3JjdWAsIGBhZnNfdW5saW5rYCwgYW5kIGBhZnNfcmVuYW1lYC5cblxuRmluYWxseSwgYmVmb3JlIEkgZGlnIGluLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuIEkga25vdyBgQ09ORklHX0FGU19GU2AgaXMgdGhlIGtleSBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NzMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwODo1MTowMy4zNzgwMDU0NTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyMjMwNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Fmcy9LY29uZmlnOjI6Y29uZmlnIEFGU19GU1xcbmZzL2Fmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFuZHJldyBGaWxlIFN5c3RlbSBzdXBwb3J0IChBRlMpXFxcIlxcbi0tXFxuZnMvYWZzL0tjb25maWc9MTc9Y29uZmlnIEFGU19ERUJVR1xcbi0tXFxuZnMvYWZzL0tjb25maWctMjYtXFxuZnMvYWZzL0tjb25maWc6Mjc6Y29uZmlnIEFGU19GU0NBQ0hFXFxuZnMvYWZzL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiUHJvdmlkZSBBRlMgY2xpZW50IGNhY2hpbmcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDg6NTE6MDMuNDM1MjM2MTAxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4NzExOTQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBRlMgQ29uZmlndXJhdGlvbiBcdTAwMjYgQ29kZSBSZXZpZXcqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGJleW9uZCB0aGUgb2J2aW91cywgYENPTkZJR19BRlNfRlNgLiBUaGF0J3MgdGhlIG1haW4gZmxhZywgb2YgY291cnNlLCBidXQgZXhwZXJpZW5jZSB0ZWxscyBtZSBpdCdzIGFsd2F5cyB3b3J0aCBkb3VibGUtY2hlY2tpbmcuXG5cbkFscmlnaHQsIHRoZSBwYXRjaCB0b3VjaGVzIGBmcy9hZnMvZGlyLmNgLCBgZnMvYWZzL2Fmcy5oYCwgYW5kIGBmcy9hZnMvaW50ZXJuYWwuaGAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgcmlnaHQgaW4gdGhlIGNvcmUgb2YgQUZTIGZ1bmN0aW9uYWxpdHkuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuTm93LCBsZXQncyBzaGlmdCBnZWFycyBhbmQgdmVyaWZ5IHRoZSBmdW5jdGlvbnMgd2l0aGluIGBmcy9hZnMvZGlyLmNgLiBJJ2xsIHdhbnQgdG8gY2FyZWZ1bGx5IGV4YW1pbmUgdGhvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MDUsIk91dHB1dFRva2VucyI6NjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwODo1MTowNy4xMjIzNTczNzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwMjYxNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fHZvaWR8c3RydWN0IGRlbnRyeSBcXFxcKnxzdHJ1Y3QgaW5vZGUgXFxcXCopIGFmc18oZF9yZXZhbGlkYXRlfGRfcmV2YWxpZGF0ZV9yY3V8dW5saW5rfHJlbmFtZSlcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZnMvZGlyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYWZzL2Rpci5jPTI1PXN0YXRpYyBpbnQgYWZzX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4KTtcXG5mcy9hZnMvZGlyLmM6MjY6c3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSxcXG5mcy9hZnMvZGlyLmMtMjctXFx0XFx0XFx0ICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKTtcXG4tLVxcbmZzL2Fmcy9kaXIuYz0zOD1zdGF0aWMgaW50IGFmc19ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTtcXG5mcy9hZnMvZGlyLmM6Mzk6c3RhdGljIGludCBhZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpO1xcbmZzL2Fmcy9kaXIuYy00MC1zdGF0aWMgaW50IGFmc19saW5rKHN0cnVjdCBkZW50cnkgKmZyb20sIHN0cnVjdCBpbm9kZSAqZGlyLFxcbi0tXFxuZnMvYWZzL2Rpci5jPTQyPXN0YXRpYyBpbnQgYWZzX3N5bWxpbmsoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxcbmZzL2Fmcy9kaXIuYy00My1cXHRcXHQgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb250ZW50KTtcXG5mcy9hZnMvZGlyLmM6NDQ6c3RhdGljIGludCBhZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXFxuZnMvYWZzL2Rpci5jLTQ1LVxcdFxcdCAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksIHN0cnVjdCBpbm9kZSAqbmV3X2RpcixcXG4tLVxcbmZzL2Fmcy9kaXIuYz05NTI9c3RhdGljIHN0cnVjdCBkZW50cnkgKmFmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmZzL2Fmcy9kaXIuYy0xMDExLSAqL1xcbmZzL2Fmcy9kaXIuYzoxMDEyOnN0YXRpYyBpbnQgYWZzX2RfcmV2YWxpZGF0ZV9yY3Uoc3RydWN0IGFmc192bm9kZSAqZHZub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuZnMvYWZzL2Rpci5jLTEwMTMte1xcbi0tXFxuZnMvYWZzL2Rpci5jLTEwNDgtICovXFxuZnMvYWZzL2Rpci5jOjEwNDk6c3RhdGljIGludCBhZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqcGFyZW50X2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsXFxuZnMvYWZzL2Rpci5jLTEwNTAtXFx0XFx0XFx0ICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxuZnMvYWZzL2Rpci5jPTE1NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBhZnNfb3BlcmF0aW9uX29wcyBhZnNfdW5saW5rX29wZXJhdGlvbiA9IHtcXG4tLVxcbmZzL2Fmcy9kaXIuYy0xNTU0LSAqL1xcbmZzL2Fmcy9kaXIuYzoxNTU1OnN0YXRpYyBpbnQgYWZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbmZzL2Fmcy9kaXIuYy0xNTU2LXtcXG4tLVxcbmZzL2Fmcy9kaXIuYz0yMDYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWZzX29wZXJhdGlvbl9vcHMgYWZzX3JlbmFtZV9leGNoYW5nZV9vcGVyYXRpb24gPSB7XFxuLS1cXG5mcy9hZnMvZGlyLmMtMjA3MS0gKi9cXG5mcy9hZnMvZGlyLmM6MjA3MjpzdGF0aWMgaW50IGFmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpcixcXG5mcy9hZnMvZGlyLmMtMjA3My1cXHRcXHQgICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKm5ld19kaXIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA4OjUxOjA3LjE4NDM5MDc0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NzQzMDU3OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgQUZTIERpcmVjdG9yeSBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGZ1bmN0aW9ucyBtb2RpZmllZCBoZXJlIOKAkyBgYWZzX2RfcmV2YWxpZGF0ZWAsIGBhZnNfZF9yZXZhbGlkYXRlX3JjdWAsIGBhZnNfdW5saW5rYCwgYW5kIGBhZnNfcmVuYW1lYCDigJMgYXJlIGFsbCBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nLiBUaGV5IHJlcHJlc2VudCBrZXkgZW50cnkgcG9pbnRzIHdpdGhpbiB0aGUgQUZTIFZGUyBvcGVyYXRpb25zLCB3aGljaCB0aGlzIHBhdGNoIGlzIGRpcmVjdGx5IGFsdGVyaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZywgc28gSSdsbCBhbHNvIGluY2x1ZGUgYGFmc19sb29rdXBgLlxuXG5UaGlzIHBhdGNoIGlzIGVzc2VudGlhbGx5IGNoYW5naW5nIGhvdyB0aGUgQUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zIG1hbmFnZSBjb25jdXJyZW5jeSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgVkZTIGxheWVyLiBTcGVjaWZpY2FsbHksIHRoZSBkYXRhIHZlcnNpb24gaXMgbW92aW5nIGZyb20gYGRfZnNkYXRhYCB0byBgZF90aW1lYCwgYW5kIGBkX2ZzZGF0YWAgaXMgbm93IGJlaW5nIHVzZWQgdG8gYmxvY2sgbG9va3VwcyBhbmQgcmV2YWxpZGF0aW9ucyBkdXJpbmcgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG9mIEFGUywgc28gY29uY3VycmVuY3kgaXNzdWVzIGFyZSBhIGhpZ2ggcmlzay4gSSBleHBlY3QgZnV6emluZyB0aGVzZSBmdW5jdGlvbnMgd2lsbCByZXZlYWwgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIHJlbGF0ZWQgdG8gdGhlc2UgbmV3IGxvY2tpbmcgY29uZGl0aW9ucy5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgb25seSBjb25maWd1cmF0aW9uIEkgbmVlZCBpcyBgQ09ORklHX0FGU19GU2AsIHdoaWNoIGlzIGdvb2QuIFRoYXQgc2ltcGxpZmllcyB0aGUgc2V0dXAuIEkgdGhpbmsgSSd2ZSBnb3QgYSBzb2xpZCBzZXQgb2YgdGFyZ2V0cyBhbmQgY29uZmlncyB0byBtb3ZlIGZvcndhcmQgd2l0aCBmdXp6aW5nLiBUaW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NTcsIk91dHB1dFRva2VucyI6MTU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA4OjUxOjEzLjY1ODY5ODEzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYyODIyNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFmc19kX3JldmFsaWRhdGVcIixcbiAgICBcImFmc19kX3JldmFsaWRhdGVfcmN1XCIsXG4gICAgXCJhZnNfdW5saW5rXCIsXG4gICAgXCJhZnNfcmVuYW1lXCIsXG4gICAgXCJhZnNfbG9va3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQUZTIGRpcmVjdG9yeSBvcGVyYXRpb25zIHRvIHVzZSBgZF90aW1lYCBpbnN0ZWFkIG9mIGBkX2ZzZGF0YWAgZm9yIHN0b3JpbmcgdGhlIGRhdGEgdmVyc2lvbiwgYW5kIHVzZXMgYGRfZnNkYXRhYCB0byBibG9jayBsb29rdXBzIGFuZCByZXZhbGlkYXRpb25zIGR1cmluZyByZW5hbWUgYW5kIHVubGluayBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQUZTIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBoYW5kbGVzIGNvbmN1cnJlbmN5IGFuZCBWRlMgaW50ZXJhY3Rpb25zLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWZzX2RfcmV2YWxpZGF0ZVwiLFxuICAgIFwiYWZzX2RfcmV2YWxpZGF0ZV9yY3VcIixcbiAgICBcImFmc191bmxpbmtcIixcbiAgICBcImFmc19yZW5hbWVcIixcbiAgICBcImFmc19sb29rdXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBRlMgZGlyZWN0b3J5IG9wZXJhdGlvbnMgdG8gdXNlIGBkX3RpbWVgIGluc3RlYWQgb2YgYGRfZnNkYXRhYCBmb3Igc3RvcmluZyB0aGUgZGF0YSB2ZXJzaW9uLCBhbmQgdXNlcyBgZF9mc2RhdGFgIHRvIGJsb2NrIGxvb2t1cHMgYW5kIHJldmFsaWRhdGlvbnMgZHVyaW5nIHJlbmFtZSBhbmQgdW5saW5rIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBBRlMgZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGhhbmRsZXMgY29uY3VycmVuY3kgYW5kIFZGUyBpbnRlcmFjdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkgcg[1] Phase: Succeeded StartedAt: 2026-07-02 08:51:25 +0000 UTC FinishedAt: 2026-07-02 08:51:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 08:51:25 +0000 UTC FinishedAt: 2026-07-02 08:51:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2] Phase: Succeeded StartedAt: 2026-07-02 08:51:25 +0000 UTC FinishedAt: 2026-07-02 10:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 08:51:25 +0000 UTC FinishedAt: 2026-07-02 10:44:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 08:51:25 +0000 UTC FinishedAt: 2026-07-02 08:52:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 08:51:25 +0000 UTC FinishedAt: 2026-07-02 08:51:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowfkgcg/series-workflowfkgcg-convert-artifact-1936564097/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 08:52:41 +0000 UTC FinishedAt: 2026-07-02 09:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 08:52:41 +0000 UTC FinishedAt: 2026-07-02 09:17:56 +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:*daf20e66-1447-4d7b-bf97-309572e4e7d6,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-workflowfkgcg/series-workflowfkgcg-convert-artifact-1936564097/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": "8a21136d-b4e8-479c-852f-3e9f85402a99", "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-workflowfkgcg/series-workflowfkgcg-build-action-3922001071/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 08:52:41 +0000 UTC FinishedAt: 2026-07-02 09:17:45 +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:*daf20e66-1447-4d7b-bf97-309572e4e7d6,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-workflowfkgcg/series-workflowfkgcg-convert-artifact-1936564097/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": "8a21136d-b4e8-479c-852f-3e9f85402a99", "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-workflowfkgcg/series-workflowfkgcg-build-action-3922001071/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 09:17:56 +0000 UTC FinishedAt: 2026-07-02 09:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 09:17:56 +0000 UTC FinishedAt: 2026-07-02 09:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 09:17:56 +0000 UTC FinishedAt: 2026-07-02 09:18:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 09:17:56 +0000 UTC FinishedAt: 2026-07-02 09:18:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowfkgcg/series-workflowfkgcg-convert-artifact-2771739732/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 09:18:17 +0000 UTC FinishedAt: 2026-07-02 09:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 09:18:17 +0000 UTC FinishedAt: 2026-07-02 09:20:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8a21136d-b4e8-479c-852f-3e9f85402a99,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-workflowfkgcg/series-workflowfkgcg-build-action-3922001071/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-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 09:20:30 +0000 UTC FinishedAt: 2026-07-02 09:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 09:20:30 +0000 UTC FinishedAt: 2026-07-02 09:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 09:20:30 +0000 UTC FinishedAt: 2026-07-02 09:55:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 09:20:30 +0000 UTC FinishedAt: 2026-07-02 09:55:24 +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:*daf20e66-1447-4d7b-bf97-309572e4e7d6,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-workflowfkgcg/series-workflowfkgcg-convert-artifact-2771739732/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": "b05160ba-964a-464a-b348-021addd882be", "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-workflowfkgcg/series-workflowfkgcg-build-action-2395854880/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 09:20:30 +0000 UTC FinishedAt: 2026-07-02 09:55:14 +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:*daf20e66-1447-4d7b-bf97-309572e4e7d6,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-workflowfkgcg/series-workflowfkgcg-convert-artifact-2771739732/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": "b05160ba-964a-464a-b348-021addd882be", "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-workflowfkgcg/series-workflowfkgcg-build-action-2395854880/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 09:55:24 +0000 UTC FinishedAt: 2026-07-02 09:55:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 09:55:24 +0000 UTC FinishedAt: 2026-07-02 09:55:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 09:55:24 +0000 UTC FinishedAt: 2026-07-02 09:57:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 09:55:24 +0000 UTC FinishedAt: 2026-07-02 09:57:35 +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:*b05160ba-964a-464a-b348-021addd882be,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-workflowfkgcg/series-workflowfkgcg-build-action-2395854880/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-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 09:57:45 +0000 UTC FinishedAt: 2026-07-02 10:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 09:57:45 +0000 UTC FinishedAt: 2026-07-02 10:44:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"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:*8a21136d-b4e8-479c-852f-3e9f85402a99,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b05160ba-964a-464a-b348-021addd882be,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-workflowfkgcg/series-workflowfkgcg-build-action-3922001071/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-workflowfkgcg/series-workflowfkgcg-build-action-2395854880/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 09:57:45 +0000 UTC FinishedAt: 2026-07-02 09:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 09:57:45 +0000 UTC FinishedAt: 2026-07-02 09:57:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"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-workflowfkgcg/series-workflowfkgcg-convert-artifact-1836807549/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 09:57:45 +0000 UTC FinishedAt: 2026-07-02 09:57:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 09:57:45 +0000 UTC FinishedAt: 2026-07-02 09:57:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 09:57:45 +0000 UTC FinishedAt: 2026-07-02 09:57:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 09:57:55 +0000 UTC FinishedAt: 2026-07-02 10:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkgcg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["afs_d_revalidate","afs_d_revalidate_rcu","afs_unlink","afs_rename","afs_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS"],"series_id":"eb2df45b-1dc6-4afc-91a6-8ccf8afe0537","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 09:57:55 +0000 UTC FinishedAt: 2026-07-02 10:44:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8a21136d-b4e8-479c-852f-3e9f85402a99,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b05160ba-964a-464a-b348-021addd882be,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-workflowfkgcg/series-workflowfkgcg-build-action-3922001071/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-workflowfkgcg/series-workflowfkgcg-build-action-2395854880/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-workflowfkgcg/series-workflowfkgcg-convert-artifact-1836807549/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,}