Name: series-workfloww7tdm Phase: Succeeded StartedAt: 2026-08-24 09:53:19 +0000 UTC FinishedAt: 2026-08-24 13:48:02 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[0] Phase: Succeeded StartedAt: 2026-08-24 09:53:19 +0000 UTC FinishedAt: 2026-08-24 09:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[0].run-triage Phase: Succeeded StartedAt: 2026-08-24 09:53:19 +0000 UTC FinishedAt: 2026-08-24 09:55:34 +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": "4352b8aee98005853aa63f57d6377282de17a33f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OVERLAY_FS", "OVERLAY_FS_INDEX", "OVERLAY_FS_NFS_EXPORT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4352b8aee98005853aa63f57d6377282de17a33f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OVERLAY_FS", "OVERLAY_FS_INDEX", "OVERLAY_FS_NFS_EXPORT" ], "series_id": "942a680d-224a-4c12-b7a8-17ef4e85e0ff" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ovl_set_origin_fh", "ovl_get_index_name_fh" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI0IDA5OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09WRVJMQVlfRlMmIzM0OywKICAgICYjMzQ7T1ZFUkxBWV9GU19JTkRFWCYjMzQ7LAogICAgJiMzNDtPVkVSTEFZX0ZTX05GU19FWFBPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdmxfc2V0X29yaWdpbl9maCYjMzQ7LAogICAgJiMzNDtvdmxfZ2V0X2luZGV4X25hbWVfZmgmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBieSBhZGRpbmcgY2hlY2tzIGZvciBgZmggIT0gTlVMTGAgYmVmb3JlIGFjY2Vzc2luZyBgZmgtXHUwMDNlYnVmYCBhbmQgYGZoLVx1MDAzZWZiLmxlbmAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgZXhlY3V0aW9uIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgaW4gYG92bF9zZXRfb3JpZ2luX2ZoYCwgYG92bF9zZXRfdXBwZXJfZmhgLCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgd2hlbiBgZmhgIGlzIE5VTEwuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBvdmVybGF5ZnMgb3BlcmF0aW9ucyBsaWtlIGNvcHktdXAgYW5kIGluZGV4IGNyZWF0aW9uLiBUaGUgY2hhbmdlcyBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0IGFuZCBhcmUgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwOTo1NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc3NDYxZDZhYjJhMDBlNjNiOWExNzZmMjNjYzQ4MmJlNDIwMGVlYjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAwOTo1NDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvY29weV91cC5jIGIvZnMvb3ZlcmxheWZzL2NvcHlfdXAuY1xuaW5kZXggZTk2MzcwMWI0Yzg3Ny4uY2I2NjE5YjVmM2VlMSAxMDA2NDRcbi0tLSBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmNcbkBAIC00OTEsNyAmIzQzOzQ5MSw3IEBAIGludCBvdmxfc2V0X29yaWdpbl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLFxuIFx0LypcbiBcdCAqIERvIG5vdCBmYWlsIHdoZW4gdXBwZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCB4YXR0cnMuXG4gXHQgKi9cbi1cdGVyciA9IG92bF9jaGVja19zZXR4YXR0cihvZnMsIHVwcGVyLCBPVkxfWEFUVFJfT1JJR0lOLCBmaC1cdTAwM2VidWYsXG4mIzQzO1x0ZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoID8gZmgtXHUwMDNlYnVmIDogTlVMTCxcbiBcdFx0XHRcdCBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDAsIDApO1xuIFxuIFx0LyogSWdub3JlIC1FUEVSTSBmcm9tIHNldHRpbmcgXCYjMzQ7dXNlci4qXCYjMzQ7IG9uIHN5bWxpbmsvc3BlY2lhbCAqL1xuQEAgLTUwOSw3ICYjNDM7NTA5LDggQEAgc3RhdGljIGludCBvdmxfc2V0X3VwcGVyX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqdXBwZXIsXG4gXHRpZiAoSVNfRVJSKGZoKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoZmgpO1xuIFxuLVx0ZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUiwgZmgtXHUwMDNlYnVmLCBmaC1cdTAwM2VmYi5sZW4pO1xuJiM0MztcdGVyciA9IG92bF9zZXR4YXR0cihvZnMsIGluZGV4LCBPVkxfWEFUVFJfVVBQRVIsXG4mIzQzO1x0XHRmaCA/IGZoLVx1MDAzZWJ1ZiA6IE5VTEwsIGZoID8gZmgtXHUwMDNlZmIubGVuIDogMCk7XG4gXG4gXHRrZnJlZShmaCk7XG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9uYW1laS5jIGIvZnMvb3ZlcmxheWZzL25hbWVpLmNcbmluZGV4IGNhODk5ZmRmYWFmZDIuLjRhZTI2YzgyMGI1ODcgMTAwNjQ0XG4tLS0gYS9mcy9vdmVybGF5ZnMvbmFtZWkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvb3ZlcmxheWZzL25hbWVpLmNcbkBAIC03MzcsMTIgJiM0Mzs3MzcsMTQgQEAgaW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleClcbiBpbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcbiB7XG4gXHRjaGFyICpuLCAqcztcbiYjNDM7XHRzaXplX3QgbGVuID0gZmggPyBmaC1cdTAwM2VmYi5sZW4gOiAxO1xuJiM0MztcdGNvbnN0IGNoYXIgKmJ1ZiA9IGZoID8gZmgtXHUwMDNlYnVmIDogKGNvbnN0IHU4ICopXCYjMzQ7XCYjMzQ7O1xuIFxuLVx0biA9IGtjYWxsb2MoZmgtXHUwMDNlZmIubGVuLCAyLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRuID0ga2NhbGxvYyhsZW4sIDIsIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFuKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdHMgID0gYmluMmhleChuLCBmaC1cdTAwM2VidWYsIGZoLVx1MDAzZWZiLmxlbik7XG4mIzQzO1x0cyAgPSBiaW4yaGV4KG4sIGJ1ZiwgbGVuKTtcbiBcdCpuYW1lID0gKHN0cnVjdCBxc3RyKSBRU1RSX0lOSVQobiwgcyAtIG4pO1xuIFxuIFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09WRVJMQVlfRlMmIzM0OywKICAgICYjMzQ7T1ZFUkxBWV9GU19JTkRFWCYjMzQ7LAogICAgJiMzNDtPVkVSTEFZX0ZTX05GU19FWFBPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdmxfc2V0X29yaWdpbl9maCYjMzQ7LAogICAgJiMzNDtvdmxfZ2V0X2luZGV4X25hbWVfZmgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgaW4gYG92bF9zZXRfb3JpZ2luX2ZoYCwgYG92bF9zZXRfdXBwZXJfZmhgLCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgd2hlbiBgZmhgIGlzIE5VTEwuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBvdmVybGF5ZnMgb3BlcmF0aW9ucyBsaWtlIGNvcHktdXAgYW5kIGluZGV4IGNyZWF0aW9uLiBUaGUgY2hhbmdlcyBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0IGFuZCBhcmUgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc3NDYxZDZhYjJhMDBlNjNiOWExNzZmMjNjYzQ4MmJlNDIwMGVlYjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAwOTo1NDoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmMgYi9mcy9vdmVybGF5ZnMvY29weV91cC5jCmluZGV4IGU5NjM3MDFiNGM4NzcuLmNiNjYxOWI1ZjNlZTEgMTAwNjQ0Ci0tLSBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvb3ZlcmxheWZzL2NvcHlfdXAuYwpAQCAtNDkxLDcgJiM0Mzs0OTEsNyBAQCBpbnQgb3ZsX3NldF9vcmlnaW5fZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCwKIAkvKgogCSAqIERvIG5vdCBmYWlsIHdoZW4gdXBwZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCB4YXR0cnMuCiAJICovCi0JZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoLSZndDtidWYsCiYjNDM7CWVyciA9IG92bF9jaGVja19zZXR4YXR0cihvZnMsIHVwcGVyLCBPVkxfWEFUVFJfT1JJR0lOLCBmaCA/IGZoLSZndDtidWYgOiBOVUxMLAogCQkJCSBmaCA/IGZoLSZndDtmYi5sZW4gOiAwLCAwKTsKIAogCS8qIElnbm9yZSAtRVBFUk0gZnJvbSBzZXR0aW5nICYjMzQ7dXNlci4qJiMzNDsgb24gc3ltbGluay9zcGVjaWFsICovCkBAIC01MDksNyAmIzQzOzUwOSw4IEBAIHN0YXRpYyBpbnQgb3ZsX3NldF91cHBlcl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLAogCWlmIChJU19FUlIoZmgpKQogCQlyZXR1cm4gUFRSX0VSUihmaCk7CiAKLQllcnIgPSBvdmxfc2V0eGF0dHIob2ZzLCBpbmRleCwgT1ZMX1hBVFRSX1VQUEVSLCBmaC0mZ3Q7YnVmLCBmaC0mZ3Q7ZmIubGVuKTsKJiM0MzsJZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUiwKJiM0MzsJCWZoID8gZmgtJmd0O2J1ZiA6IE5VTEwsIGZoID8gZmgtJmd0O2ZiLmxlbiA6IDApOwogCiAJa2ZyZWUoZmgpOwogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvbmFtZWkuYyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jCmluZGV4IGNhODk5ZmRmYWFmZDIuLjRhZTI2YzgyMGI1ODcgMTAwNjQ0Ci0tLSBhL2ZzL292ZXJsYXlmcy9uYW1laS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jCkBAIC03MzcsMTIgJiM0Mzs3MzcsMTQgQEAgaW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleCkKIGludCBvdmxfZ2V0X2luZGV4X25hbWVfZmgoY29uc3Qgc3RydWN0IG92bF9maCAqZmgsIHN0cnVjdCBxc3RyICpuYW1lKQogewogCWNoYXIgKm4sICpzOwomIzQzOwlzaXplX3QgbGVuID0gZmggPyBmaC0mZ3Q7ZmIubGVuIDogMTsKJiM0MzsJY29uc3QgY2hhciAqYnVmID0gZmggPyBmaC0mZ3Q7YnVmIDogKGNvbnN0IHU4ICopJiMzNDsmIzM0OzsKIAotCW4gPSBrY2FsbG9jKGZoLSZndDtmYi5sZW4sIDIsIEdGUF9LRVJORUwpOwomIzQzOwluID0ga2NhbGxvYyhsZW4sIDIsIEdGUF9LRVJORUwpOwogCWlmICghbikKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlzICA9IGJpbjJoZXgobiwgZmgtJmd0O2J1ZiwgZmgtJmd0O2ZiLmxlbik7CiYjNDM7CXMgID0gYmluMmhleChuLCBidWYsIGxlbik7CiAJKm5hbWUgPSAoc3RydWN0IHFzdHIpIFFTVFJfSU5JVChuLCBzIC0gbik7CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzNAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDU2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE92ZXJsYXlGUyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBmcy9vdmVybGF5ZnMvY29weV91cC5jYCBhbmQgYGZzL292ZXJsYXlmcy9uYW1laS5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgc29tZSBudWxsIGNoZWNrcyByZWxhdGVkIHRvIGBmaGAgaW4gdGhyZWUgc3BlY2lmaWMgZnVuY3Rpb25zOiBgb3ZsX3NldF9vcmlnaW5fZmhgLCBgb3ZsX3NldF91cHBlcl9maGAsIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYC4gTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGNvZGUgY2hhbmdlcy4KCkluIGBvdmxfc2V0X29yaWdpbl9maGAsIHdlJiMzOTtyZSBub3cgZG9pbmcgYSBudWxsIGNoZWNrIG9uIGBmaGAgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQ6CmBgYGMKLQllcnIgPSBvdmxfY2hlY2tfc2V0eGF0dHIob2ZzLCB1cHBlciwgT1ZMX1hBVFRSX09SSUdJTiwgZmgtJmd0O2J1ZiwKJiM0MzsJZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoID8gZmgtJmd0O2J1ZiA6IE5VTEwsCiAJCQkJIGZoID8gZmgtJmd0O2ZiLmxlbiA6IDAsIDApOwpgYGAKTWFrZXMgc2Vuc2UuICBJZiBgZmhgIGlzIE5VTEwsIHRoZW4gYGZoLSZndDtidWZgIGFuZCBgZmgtJmd0O2ZiLmxlbmAgYXJlIG5vdCBkZXJlZmVyZW5jZWQuICBUaGlzIGlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgcHJhY3RpY2UuCgpUaGUgc2FtZSBwYXR0ZXJuIGlzIHJlcGVhdGVkIGluIGBvdmxfc2V0X3VwcGVyX2ZoYDoKYGBgYwotCWVyciA9IG92bF9zZXR4YXR0cihvZnMsIGluZGV4LCBPVkxfWEFUVFJfVVBQRVIsIGZoLSZndDtidWYsIGZoLSZndDtmYi5sZW4pOwomIzQzOwllcnIgPSBvdmxfc2V0eGF0dHIob2ZzLCBpbmRleCwgT1ZMX1hBVFRSX1VQUEVSLAomIzQzOwkJZmggPyBmaC0mZ3Q7YnVmIDogTlVMTCwgZmggPyBmaC0mZ3Q7ZmIubGVuIDogMCk7CmBgYApBZ2FpbiwgYSBudWxsIGNoZWNrIG9uIGBmaGAgYmVmb3JlIGFjY2Vzc2luZyBpdHMgbWVtYmVycy4gUHJldmVudGluZyBhIGxpa2VseSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuCgpGaW5hbGx5LCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCBpcyBhbHNvIGJlaW5nIGFkanVzdGVkOgpgYGBjCiAJY2hhciAqbiwgKnM7CiYjNDM7CXNpemVfdCBsZW4gPSBmaCA/IGZoLSZndDtmYi5sZW4gOiAxOwomIzQzOwljb25zdCBjaGFyICpidWYgPSBmaCA/IGZoLSZndDtidWYgOiAoY29uc3QgdTggKikmIzM0OyYjMzQ7OwogCi0JbiA9IGtjYWxsb2MoZmgtJmd0O2ZiLmxlbiwgMiwgR0ZQX0tFUk5FTCk7CiYjNDM7CW4gPSBrY2FsbG9jKGxlbiwgMiwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFuKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCXMgID0gYmluMmhleChuLCBmaC0mZ3Q7YnVmLCBmaC0mZ3Q7ZmIubGVuKTsKJiM0MzsJcyAgPSBiaW4yaGV4KG4sIGJ1ZiwgbGVuKTsKYGBgCgpIZXJlLCB3ZSYjMzk7cmUgbm90IG9ubHkgYWRkaW5nIHRoZSBudWxsIGNoZWNrLCBidXQgd2UmIzM5O3JlIGFsc28gbW9kaWZ5aW5nIHRoZSBsb2dpYyB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYGZoYCBpcyBOVUxMLiAgSW5zdGVhZCBvZiBwYXNzaW5nIGBmaC0mZ3Q7YnVmYCBhbmQgYGZoLSZndDtmYi5sZW5gIHdoaWNoIHdvdWxkIGRlcmVmZXJlbmNlIGEgTlVMTCBwb2ludGVyLCB3ZSBub3cgc3Vic3RpdHV0ZSBgTlVMTGAgKG9yIGEgcG9pbnRlciB0byBhbiBlbXB0eSBzdHJpbmcpIGFuZCBhIGxlbmd0aCBvZiAxIGluIHRoZSB0ZXJuYXJ5IGNvbmRpdGlvbmFsLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIGNyYXNoIGR1cmluZyBga2NhbGxvY2AgYW5kIGBiaW4yaGV4YCBjYWxscy4KClNvLCBmdW5jdGlvbmFsbHksIHRoaXMgbG9va3MgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBidWcgZml4LCBwcmV2ZW50aW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIHRoZXNlIHRocmVlIGZ1bmN0aW9ucy4gIE5vdywgSSBuZWVkIHRvIGNoZWNrIGhvdyByZWFjaGFibGUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhbmQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLiBPdmVybGF5ZnMgaXMgZW5hYmxlZCBieSBgQ09ORklHX09WRVJMQVlfRlNgLCBzbyBJIGtub3cgd2hlcmUgdG8gc3RhcnQgbG9va2luZy4gSSYjMzk7bGwgc2VhcmNoIGZvciB0aG9zZSBmdW5jdGlvbiBuYW1lcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHBhdGhzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDA5OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292bF9zZXRfb3JpZ2luX2ZofG92bF9zZXRfdXBwZXJfZmh8b3ZsX2dldF9pbmRleF9uYW1lX2ZoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL292ZXJsYXlmcy9jb3B5X3VwLmM9NDczPXN0cnVjdCBvdmxfZmggKm92bF9nZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqb3JpZ2luKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNDg1LVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo0ODY6aW50IG92bF9zZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTQ4Ny1cdFx0ICAgICAgc3RydWN0IGRlbnRyeSAqdXBwZXIpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01MDEtLyogU3RvcmUgZmlsZSBoYW5kbGUgb2YgQHVwcGVyIGRpciBpbiBAaW5kZXggZGlyIGVudHJ5ICovXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjUwMjpzdGF0aWMgaW50IG92bF9zZXRfdXBwZXJfZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcixcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTAzLVx0XHRcdCAgICBzdHJ1Y3QgZGVudHJ5ICppbmRleClcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTUyMj1zdGF0aWMgaW50IG92bF9jcmVhdGVfaW5kZXgoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCxcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU0Ni1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTQ3Olx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGZoLCBcdTAwMjZuYW1lKTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTQ4LVx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU1NS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTU2Olx0ZXJyID0gb3ZsX3NldF91cHBlcl9maChvZnMsIHVwcGVyLCB0ZW1wKTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTU3LVx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTY2MD1zdGF0aWMgaW50IG92bF9jb3B5X3VwX21ldGFkYXRhKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMsIHN0cnVjdCBkZW50cnkgKnRlbXApXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02ODktXHRpZiAoYy1cdTAwM2VvcmlnaW4pIHtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NjkwOlx0XHRlcnIgPSBvdmxfc2V0X29yaWdpbl9maChvZnMsIGMtXHUwMDNlb3JpZ2luX2ZoLCB0ZW1wKTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjkxLVx0XHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jPTYzNj1pbnQgb3ZsX3ZlcmlmeV9pbmRleChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmluZGV4KVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTczNi1cbmZzL292ZXJsYXlmcy9uYW1laS5jOjczNzppbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcbmZzL292ZXJsYXlmcy9uYW1laS5jLTczOC17XG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmM9NzY5PWludCBvdmxfZ2V0X2luZGV4X25hbWUoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICpvcmlnaW4sXG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzc4LVxuZnMvb3ZlcmxheWZzL25hbWVpLmM6Nzc5Olx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGZoLCBuYW1lKTtcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc4MC1cbi0tXG5mcy9vdmVybGF5ZnMvbmFtZWkuYz03ODY9c3RydWN0IGRlbnRyeSAqb3ZsX2dldF9pbmRleF9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBvdmxfZmggKmZoKVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTc5MS1cbmZzL292ZXJsYXlmcy9uYW1laS5jOjc5MjpcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgXHUwMDI2bmFtZSk7XG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03OTMtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jPTkyOT1zdGF0aWMgaW50IG92bF9maXhfb3JpZ2luKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTk0NS1cbmZzL292ZXJsYXlmcy9uYW1laS5jOjk0NjpcdGVyciA9IG92bF9zZXRfb3JpZ2luX2ZoKG9mcywgZmgsIHVwcGVyKTtcbmZzL292ZXJsYXlmcy9uYW1laS5jLTk0Ny1cdGlmICghZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaD03NDA9aW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleCk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NzQxOmludCBvdmxfZ2V0X2luZGV4X25hbWVfZmgoY29uc3Qgc3RydWN0IG92bF9maCAqZmgsIHN0cnVjdCBxc3RyICpuYW1lKTtcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaC03NDItaW50IG92bF9nZXRfaW5kZXhfbmFtZShzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKm9yaWdpbixcbi0tXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg9OTMxPXN0cnVjdCBvdmxfZmggKm92bF9nZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqb3JpZ2luKTtcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo5MzI6aW50IG92bF9zZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtOTMzLVx0XHQgICAgICBzdHJ1Y3QgZGVudHJ5ICp1cHBlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEyMAoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDIyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipPdmVybGF5RlMgRnVuY3Rpb25hbGl0eSBhbmQgRmlsZSBIYW5kbGVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoZXNlIGNoYW5nZXMsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGFsbCBjZW50ZXJlZCBhcm91bmQgT3ZlcmxheUZTLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgb3ZlcmxheWZzYCBjb2RlLiBUaGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIHNlZWluZyBhcmUgcmVhY2hhYmxlLCBhbmQgc2VlbSBpbnRlZ3JhbCB0byB0aGUgZnVuY3Rpb25hbGl0eS4gTm93LCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgYG92bF9zZXRfb3JpZ2luX2ZoYCBpcyBjYWxsZWQgZnJvbSB0d28gb3RoZXIgZnVuY3Rpb25zIEkga25vdyB3ZWxsLCBgb3ZsX2NvcHlfdXBfbWV0YWRhdGFgIGFuZCBgb3ZsX2ZpeF9vcmlnaW5gLiBgb3ZsX3NldF91cHBlcl9maGAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBjYWxsZWQgZnJvbSBgb3ZsX2NyZWF0ZV9pbmRleGAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSB0aGF0IGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBvdmxfY3JlYXRlX2luZGV4YCwgYG92bF9nZXRfaW5kZXhfbmFtZWAsIGFuZCBgb3ZsX2dldF9pbmRleF9maGAsIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHRoaXMgb25lLgoKVGhlIGNvbmZpZyByZXF1aXJlZCBpcyB0aGUgc3RhbmRhcmQgYE9WRVJMQVlfRlNgLCBzbyB0aGF0JiMzOTtzIGdvb2QuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgLiBXYWl0IGEgc2Vjb25k4oCmIGBvdmxfc2V0X3VwcGVyX2ZoYCBpcyBzdGF0aWM/IEhtbSwgdGhhdCBjb3VsZCBhZGQgYSBsYXllciBvZiBjb21wbGV4aXR5LgoKTGV0IG1lIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIGhvdyBhbGwgb2YgdGhpcyB0aWVzIHRvZ2V0aGVyIGJ5IGxvb2tpbmcgY2xvc2VyIGF0IGBvdmxfY3JlYXRlX2luZGV4YCwgYG92bF9jb3B5X3VwX21ldGFkYXRhYCwgYG92bF9maXhfb3JpZ2luYCwgYG92bF9nZXRfaW5kZXhfbmFtZWAsIGFuZCBgb3ZsX2dldF9pbmRleF9maGAuIFRoaXMgc2hvdWxkIGhlbHAgbWUgY29udGV4dHVhbGl6ZSB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwOTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvdmxfY3JlYXRlX2luZGV4fG92bF9jb3B5X3VwX21ldGFkYXRhfG92bF9maXhfb3JpZ2lufG92bF9nZXRfaW5kZXhfbmFtZXxvdmxfZ2V0X2luZGV4X2ZoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL292ZXJsYXlmcy9jb3B5X3VwLmM9NTAyPXN0YXRpYyBpbnQgb3ZsX3NldF91cHBlcl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLFxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTIxLSAqL1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo1MjI6c3RhdGljIGludCBvdmxfY3JlYXRlX2luZGV4KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTUyMy1cdFx0XHQgICAgc3RydWN0IGRlbnRyeSAqdXBwZXIpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01NDYtXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjU0NzpcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgXHUwMDI2bmFtZSk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU0OC1cdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz02NDA9c3RhdGljIGludCBvdmxfY29weV91cF9kYXRhKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMsIGNvbnN0IHN0cnVjdCBwYXRoICp0ZW1wKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjU5LVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo2NjA6c3RhdGljIGludCBvdmxfY29weV91cF9tZXRhZGF0YShzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjLCBzdHJ1Y3QgZGVudHJ5ICp0ZW1wKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NjEte1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9NzU5PXN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfd29ya2RpcihzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNzk2LVx0aWYgKFNfSVNESVIoYy1cdTAwM2VzdGF0Lm1vZGUpIFx1MDAyNlx1MDAyNiBjLVx1MDAzZWluZGV4ZWQpIHtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6Nzk3Olx0XHRlcnIgPSBvdmxfY3JlYXRlX2luZGV4KGMtXHUwMDNlZGVudHJ5LCBjLVx1MDAzZW9yaWdpbl9maCwgdGVtcCk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc5OC1cdFx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTgyMC1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODIxOlx0ZXJyID0gb3ZsX2NvcHlfdXBfbWV0YWRhdGEoYywgdGVtcCk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTgyMi1cdGlmICghZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9ODUzPXN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfdG1wZmlsZShzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODgyLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo4ODM6XHRlcnIgPSBvdmxfY29weV91cF9tZXRhZGF0YShjLCB0ZW1wKTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODg0LVx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTkzMz1zdGF0aWMgaW50IG92bF9kb19jb3B5X3VwKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05NjYtXHRcdGMtXHUwMDNlZGVzdGRpciA9IG92bF9pbmRleGRpcihjLVx1MDAzZWRlbnRyeS1cdTAwM2VkX3NiKTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6OTY3Olx0XHRlcnIgPSBvdmxfZ2V0X2luZGV4X25hbWUob2ZzLCBvcmlnaW4sIFx1MDAyNmMtXHUwMDNlZGVzdG5hbWUpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05NjgtXHRcdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2V4cG9ydC5jPTY4Nj1zdGF0aWMgc3RydWN0IGRlbnRyeSAqb3ZsX2xvd2VyX2ZoX3RvX2Qoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9vdmVybGF5ZnMvZXhwb3J0LmMtNzE3LVx0aWYgKG92bF9pbmRleGRpcihzYikpIHtcbmZzL292ZXJsYXlmcy9leHBvcnQuYzo3MTg6XHRcdGluZGV4ID0gb3ZsX2dldF9pbmRleF9maChvZnMsIGZoKTtcbmZzL292ZXJsYXlmcy9leHBvcnQuYy03MTktXHRcdGVyciA9IFBUUl9FUlIoaW5kZXgpO1xuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jPTYzNj1pbnQgb3ZsX3ZlcmlmeV9pbmRleChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmluZGV4KVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTczNi1cbmZzL292ZXJsYXlmcy9uYW1laS5jOjczNzppbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcbmZzL292ZXJsYXlmcy9uYW1laS5jLTczOC17XG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzY4LSAqL1xuZnMvb3ZlcmxheWZzL25hbWVpLmM6NzY5OmludCBvdmxfZ2V0X2luZGV4X25hbWUoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICpvcmlnaW4sXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03NzAtXHRcdCAgICAgICBzdHJ1Y3QgcXN0ciAqbmFtZSlcbi0tXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03NzgtXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo3Nzk6XHRlcnIgPSBvdmxfZ2V0X2luZGV4X25hbWVfZmgoZmgsIG5hbWUpO1xuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzgwLVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTc4NS0vKiBMb29rdXAgaW5kZXggYnkgZmlsZSBoYW5kbGUgZm9yIE5GUyBleHBvcnQgKi9cbmZzL292ZXJsYXlmcy9uYW1laS5jOjc4NjpzdHJ1Y3QgZGVudHJ5ICpvdmxfZ2V0X2luZGV4X2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IG92bF9maCAqZmgpXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03ODcte1xuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTc5MS1cbmZzL292ZXJsYXlmcy9uYW1laS5jOjc5MjpcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgXHUwMDI2bmFtZSk7XG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03OTMtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jPTgxNT1zdHJ1Y3QgZGVudHJ5ICpvdmxfbG9va3VwX2luZGV4KHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqdXBwZXIsXG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmMtODIzLVxuZnMvb3ZlcmxheWZzL25hbWVpLmM6ODI0Olx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lKG9mcywgb3JpZ2luLCBcdTAwMjZuYW1lKTtcbmZzL292ZXJsYXlmcy9uYW1laS5jLTgyNS1cdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmM9OTA1PWludCBvdmxfcGF0aF9uZXh0KGludCBpZHgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHBhdGggKnBhdGgsXG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmMtOTI4LS8qIEZpeCBtaXNzaW5nICYjMzk7b3JpZ2luJiMzOTsgeGF0dHIgKi9cbmZzL292ZXJsYXlmcy9uYW1laS5jOjkyOTpzdGF0aWMgaW50IG92bF9maXhfb3JpZ2luKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtOTMwLVx0XHRcdCAgc3RydWN0IGRlbnRyeSAqbG93ZXIsIHN0cnVjdCBkZW50cnkgKnVwcGVyKVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jPTEwOTI9c3RhdGljIGludCBvdmxfbG9va3VwX2xheWVycyhzdHJ1Y3Qgb3ZsX2xvb2t1cF9jdHggKmN0eCwgc3RydWN0IG92bF9sb29rdXBfZGF0YSAqZClcbi0tXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy0xMTgxLVx0XHRpZiAoY3R4LVx1MDAzZXVwcGVyZGVudHJ5IFx1MDAyNlx1MDAyNiAhY3R4LVx1MDAzZWN0ciBcdTAwMjZcdTAwMjYgIW9mcy1cdTAwM2Vub3hhdHRyIFx1MDAyNlx1MDAyNiBkLVx1MDAzZWlzX2Rpcikge1xuZnMvb3ZlcmxheWZzL25hbWVpLmM6MTE4MjpcdFx0XHRlcnIgPSBvdmxfZml4X29yaWdpbihvZnMsIGRlbnRyeSwgdGhpcywgY3R4LVx1MDAzZXVwcGVyZGVudHJ5KTtcbmZzL292ZXJsYXlmcy9uYW1laS5jLTExODMtXHRcdFx0aWYgKGVycikge1xuLS1cbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaD03NDA9aW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleCk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NzQxOmludCBvdmxfZ2V0X2luZGV4X25hbWVfZmgoY29uc3Qgc3RydWN0IG92bF9maCAqZmgsIHN0cnVjdCBxc3RyICpuYW1lKTtcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo3NDI6aW50IG92bF9nZXRfaW5kZXhfbmFtZShzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKm9yaWdpbixcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaC03NDMtXHRcdCAgICAgICBzdHJ1Y3QgcXN0ciAqbmFtZSk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NzQ0OnN0cnVjdCBkZW50cnkgKm92bF9nZXRfaW5kZXhfZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3Qgb3ZsX2ZoICpmaCk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtNzQ1LXN0cnVjdCBkZW50cnkgKm92bF9sb29rdXBfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcixcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jPTEwNzU9c3RhdGljIHZvaWQgb3ZsX2NsZWFudXBfaW5kZXgoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuLS1cbmZzL292ZXJsYXlmcy91dGlsLmMtMTA4Ni1cbmZzL292ZXJsYXlmcy91dGlsLmM6MTA4NzpcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZShvZnMsIGxvd2VyZGVudHJ5LCBcdTAwMjZuYW1lKTtcbmZzL292ZXJsYXlmcy91dGlsLmMtMTA4OC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg0NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcywgYXMgSSB1bmRlcnN0YW5kIGl0OgoKKipDb25zaWRlcmluZyBPdmVybGF5RlMgRnVuY3Rpb24gU2VsZWN0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZXNlIE92ZXJsYXlGUyBmdW5jdGlvbnMuIEkgc2VlIHRoYXQgYG92bF9zZXRfb3JpZ2luX2ZoYCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgYXJlIGRlZmluZWQgYXMgbm9uLXN0YXRpYy4gR29vZCB0byBrbm93LiBCdXQgSSYjMzk7bSBub3RpY2luZyBgb3ZsX3NldF91cHBlcl9maGAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGtleSBkaWZmZXJlbmNlLiBUaGF0IHByb2JhYmx5IG1lYW5zIEkgc2hvdWxkIGJlIGxlYW5pbmcgdG93YXJkcyB1c2luZyBgb3ZsX2NyZWF0ZV9pbmRleGAgaW5zdGVhZCwgZ2l2ZW4gaXRzIHNjb3BlLiBIYW5nIG9uIGEgc2Vjb25kLCB0aG91Z2jigKYgYG92bF9jcmVhdGVfaW5kZXhgIGlzIGFsc28gYSBzdGF0aWMgZnVuY3Rpb24hIE9rYXksIHRoYXQgdGhyb3dzIGEgd3JlbmNoIGluIG15IGluaXRpYWwgYXNzdW1wdGlvbi4gSSBuZWVkIHRvIGtlZXAgbG9va2luZy4KCkxldCYjMzk7cyBzaGlmdCBnZWFycyBhbmQgY2hlY2sgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zLiBQZXJoYXBzIEkgY2FuIGZpbmQgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIGJ5IGV4YW1pbmluZyBgb3ZsX2NvcHlfdXBfd29ya2RpcmAsIGBvdmxfY29weV91cF9tZXRhZGF0YWAsIG9yIG1heWJlIHRoZSBjb3JlIGBvdmxfZG9fY29weV91cGAgZnVuY3Rpb24uIEFoLCBoZXJlJiMzOTtzIGBvdmxfZG9fY29weV91cGAgYW5kLCB5ZXMsIGl0JiMzOTtzIGFsc28gc3RhdGljLiBBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGJhc2UgYG92bF9jb3B5X3VwYCBmdW5jdGlvbiBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3ZsX2NvcHlfdXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz0yNDU9c3RhdGljIGludCBvdmxfc3luY19maWxlKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMjU5LVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoyNjA6c3RhdGljIGludCBvdmxfY29weV91cF9maWxlKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0yNjEtXHRcdFx0ICAgIHN0cnVjdCBmaWxlICpuZXdfZmlsZSwgbG9mZl90IGxlbixcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTUyMj1zdGF0aWMgaW50IG92bF9jcmVhdGVfaW5kZXgoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCxcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU3Ny1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTc4OnN0cnVjdCBvdmxfY29weV91cF9jdHgge1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01NzktXHRzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQ7XG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01OTUtXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjU5NjpzdGF0aWMgaW50IG92bF9saW5rX3VwKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU5Ny17XG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02MzktXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjY0MDpzdGF0aWMgaW50IG92bF9jb3B5X3VwX2RhdGEoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYywgY29uc3Qgc3RydWN0IHBhdGggKnRlbXApXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTY0MS17XG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NTItXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjY1MzpcdGVyciA9IG92bF9jb3B5X3VwX2ZpbGUob2ZzLCBjLVx1MDAzZWRlbnRyeSwgbmV3X2ZpbGUsIGMtXHUwMDNlc3RhdC5zaXplLFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NTQtXHRcdFx0ICAgICAgICFjLVx1MDAzZW1ldGFkYXRhX2ZzeW5jKTtcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTY1OS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NjYwOnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfbWV0YWRhdGEoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYywgc3RydWN0IGRlbnRyeSAqdGVtcClcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjYxLXtcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTc1MT1ERUZJTkVfQ0xBU1MoY29weV91cF9jcmVkcywgY29uc3Qgc3RydWN0IGNyZWQgKixcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc1OC0gKi9cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NzU5OnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfd29ya2RpcihzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy03NjAte1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNzkwLVx0cGF0aC5kZW50cnkgPSB0ZW1wO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo3OTE6XHRlcnIgPSBvdmxfY29weV91cF9kYXRhKGMsIFx1MDAyNnBhdGgpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy03OTItXHRvdmxfc3RhcnRfd3JpdGUoYy1cdTAwM2VkZW50cnkpO1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODA0LVx0ICogbG9jayBvcmRlcmluZyB3aXRoIHNiX3dyaXRlcnMsIHdoaWNoIHNob3VsZG4mIzM5O3QgYmUgaGVsZCB3aGVuIGNhbGxpbmdcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODA1Olx0ICogb3ZsX2NvcHlfdXBfZGF0YSgpLCBzbyBsb2NrIHdvcmtkaXIgYW5kIGRlc3RkaXIgYW5kIG1ha2Ugc3VyZSB0aGF0XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTgwNi1cdCAqIHRlbXAgd2FzbiYjMzk7dCBtb3ZlZCBiZWZvcmUgY29weSB1cCBjb21wbGV0aW9uIG9yIGNsZWFudXAuXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjAtXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjgyMTpcdGVyciA9IG92bF9jb3B5X3VwX21ldGFkYXRhKGMsIHRlbXApO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjItXHRpZiAoIWVycilcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg1Mi0vKiBDb3B5dXAgdXNpbmcgT19UTVBGSUxFIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgY3Jvc3MgZGlyIGxvY2tpbmcgKi9cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODUzOnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfdG1wZmlsZShzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04NTQte1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODc0LVx0aWYgKCFjLVx1MDAzZW1ldGFjb3B5IFx1MDAyNlx1MDAyNiBjLVx1MDAzZXN0YXQuc2l6ZSkge1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo4NzU6XHRcdGVyciA9IG92bF9jb3B5X3VwX2ZpbGUob2ZzLCBjLVx1MDAzZWRlbnRyeSwgdG1wZmlsZSwgYy1cdTAwM2VzdGF0LnNpemUsXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg3Ni1cdFx0XHRcdCAgICAgICAhYy1cdTAwM2VtZXRhZGF0YV9mc3luYyk7XG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04ODItXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjg4MzpcdGVyciA9IG92bF9jb3B5X3VwX21ldGFkYXRhKGMsIHRlbXApO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04ODQtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtOTMyLSAqL1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo5MzM6c3RhdGljIGludCBvdmxfZG9fY29weV91cChzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05MzQte1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtOTc1LVx0XHQvKlxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo5NzY6XHRcdCAqIGMtXHUwMDNlZGVudHJ5LVx1MDAzZWRfbmFtZSBpcyBzdGFiaWx6ZWQgYnkgb3ZsX2NvcHlfdXBfc3RhcnQoKSxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtOTc3LVx0XHQgKiBiZWNhdXNlIGlmIHdlIGdvdCBoZXJlLCBpdCBtZWFucyB0aGF0IGMtXHUwMDNlZGVudHJ5IGhhcyBubyB1cHBlclxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05NzgtXHRcdCAqIGFsaWFzIGFuZCBjaGFuZ2luZyAtXHUwMDNlZF9uYW1lIG1lYW5zIGdvaW5nIHRocm91Z2ggb3ZsX3JlbmFtZSgpXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjk3OTpcdFx0ICogdGhhdCB3aWxsIGNhbGwgb3ZsX2NvcHlfdXAoKSBvbiBzb3VyY2UgYW5kIHRhcmdldCBkZW50cnkuXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk4MC1cdFx0ICovXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05OTQtXHRpZiAoU19JU1JFRyhjLVx1MDAzZXN0YXQubW9kZSkgXHUwMDI2XHUwMDI2IG9mcy1cdTAwM2V0bXBmaWxlKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo5OTU6XHRcdGVyciA9IG92bF9jb3B5X3VwX3RtcGZpbGUoYyk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk5Ni1cdGVsc2VcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6OTk3Olx0XHRlcnIgPSBvdmxfY29weV91cF93b3JrZGlyKGMpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05OTgtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9MTA1OT1zdGF0aWMgc3NpemVfdCBvdmxfZ2V0eGF0dHJfdmFsdWUoY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIGNoYXIgKm5hbWUsIGNoYXIgKip2YWx1ZSlcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEwODItLyogQ29weSB1cCBkYXRhIG9mIGFuIGlub2RlIHdoaWNoIHdhcyBjb3BpZWQgdXAgbWV0YWRhdGEgb25seSBpbiB0aGUgcGFzdC4gKi9cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTA4MzpzdGF0aWMgaW50IG92bF9jb3B5X3VwX21ldGFfaW5vZGVfZGF0YShzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMDg0LXtcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExMDEtXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjExMDI6XHRlcnIgPSBvdmxfY29weV91cF9kYXRhKGMsIFx1MDAyNnVwcGVycGF0aCk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExMDMtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTEzMS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTEzMjpzdGF0aWMgaW50IG92bF9jb3B5X3VwX29uZShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTEzMy1cdFx0XHQgICBpbnQgZmxhZ3MpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMTM3LVx0c3RydWN0IHBhdGggcGFyZW50cGF0aDtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTEzODpcdHN0cnVjdCBvdmxfY29weV91cF9jdHggY3R4ID0ge1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMTM5LVx0XHQucGFyZW50ID0gcGFyZW50LFxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTE5MC1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTE5MTpcdGVyciA9IG92bF9jb3B5X3VwX3N0YXJ0KGRlbnRyeSwgZmxhZ3MpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMTkyLVx0LyogZXJyIFx1MDAzYyAwOiBpbnRlcnJ1cHRlZCwgZXJyIFx1MDAzZSAwOiByYWNlZCB3aXRoIGFub3RoZXIgY29weS11cCAqL1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTIwMS1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IG92bF9kZW50cnlfbmVlZHNfZGF0YV9jb3B5X3VwX2xvY2tlZChkZW50cnksIGZsYWdzKSlcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTIwMjpcdFx0XHRlcnIgPSBvdmxfY29weV91cF9tZXRhX2lub2RlX2RhdGEoXHUwMDI2Y3R4KTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTIwMzpcdFx0b3ZsX2NvcHlfdXBfZW5kKGRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyMDQtXHR9XG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjA5LVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjEwOnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfZmxhZ3Moc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyMTEte1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI1MS1cdFx0d2l0aF9vdmxfY3JlZHMoZGVudHJ5LVx1MDAzZWRfc2IpXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyNTI6XHRcdFx0ZXJyID0gb3ZsX2NvcHlfdXBfb25lKHBhcmVudCwgbmV4dCwgZmxhZ3MpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjUzLVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9MTI3Nj1pbnQgb3ZsX21heWJlX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjgwLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjgxOlx0cmV0dXJuIG92bF9jb3B5X3VwX2ZsYWdzKGRlbnRyeSwgZmxhZ3MpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjgyLX1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI4My1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTI4NDppbnQgb3ZsX2NvcHlfdXBfd2l0aF9kYXRhKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI4NS17XG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyODY6XHRyZXR1cm4gb3ZsX2NvcHlfdXBfZmxhZ3MoZGVudHJ5LCBPX1dST05MWSk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyODctfVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjg4LVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjg5OmludCBvdmxfY29weV91cChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyOTAte1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjkxOlx0cmV0dXJuIG92bF9jb3B5X3VwX2ZsYWdzKGRlbnRyeSwgMCk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyOTItfVxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYz02OTE9c3RhdGljIGludCBvdmxfY3JlYXRlX29iamVjdChzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYy03MDAtXG5mcy9vdmVybGF5ZnMvZGlyLmM6NzAxOlx0ZXJyID0gb3ZsX2NvcHlfdXAoZGVudHJ5LVx1MDAzZWRfcGFyZW50KTtcbmZzL292ZXJsYXlmcy9kaXIuYy03MDItXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYz03Njc9c3RhdGljIGludCBvdmxfbGluayhzdHJ1Y3QgZGVudHJ5ICpvbGQsIHN0cnVjdCBpbm9kZSAqbmV3ZGlyLFxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYy03NzItXG5mcy9vdmVybGF5ZnMvZGlyLmM6NzczOlx0ZXJyID0gb3ZsX2NvcHlfdXAob2xkKTtcbmZzL292ZXJsYXlmcy9kaXIuYy03NzQtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYy03NzYtXG5mcy9vdmVybGF5ZnMvZGlyLmM6Nzc3Olx0ZXJyID0gb3ZsX2NvcHlfdXAobmV3LVx1MDAzZWRfcGFyZW50KTtcbmZzL292ZXJsYXlmcy9kaXIuYy03NzgtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYz05MzY9c3RhdGljIGludCBvdmxfZG9fcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgYm9vbCBpc19kaXIpXG4tLVxuZnMvb3ZlcmxheWZzL2Rpci5jLTk0OC1cbmZzL292ZXJsYXlmcy9kaXIuYzo5NDk6XHRlcnIgPSBvdmxfY29weV91cChkZW50cnktXHUwMDNlZF9wYXJlbnQpO1xuZnMvb3ZlcmxheWZzL2Rpci5jLTk1MC1cdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2Rpci5jPTExMzQ9c3RhdGljIGludCBvdmxfcmVuYW1lX3N0YXJ0KHN0cnVjdCBvdmxfcmVuYW1lZGF0YSAqb3ZscmQsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpXG4tLVxuZnMvb3ZlcmxheWZzL2Rpci5jLTExNzQtXG5mcy9vdmVybGF5ZnMvZGlyLmM6MTE3NTpcdGVyciA9IG92bF9jb3B5X3VwKG9sZCk7XG5mcy9vdmVybGF5ZnMvZGlyLmMtMTE3Ni1cdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2Rpci5jLTExNzgtXG5mcy9vdmVybGF5ZnMvZGlyLmM6MTE3OTpcdGVyciA9IG92bF9jb3B5X3VwKG5ldy1cdTAwM2VkX3BhcmVudCk7XG5mcy9vdmVybGF5ZnMvZGlyLmMtMTE4MC1cdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2Rpci5jLTExODMtXHRpZiAoIW92bHJkLVx1MDAzZW92ZXJ3cml0ZSkge1xuZnMvb3ZlcmxheWZzL2Rpci5jOjExODQ6XHRcdGVyciA9IG92bF9jb3B5X3VwKG5ldyk7XG5mcy9vdmVybGF5ZnMvZGlyLmMtMTE4NS1cdFx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvZGlyLmM9MTQyMz1zdGF0aWMgaW50IG92bF90bXBmaWxlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbi0tXG5mcy9vdmVybGF5ZnMvZGlyLmMtMTQzMi1cbmZzL292ZXJsYXlmcy9kaXIuYzoxNDMzOlx0ZXJyID0gb3ZsX2NvcHlfdXAoZGVudHJ5LVx1MDAzZWRfcGFyZW50KTtcbmZzL292ZXJsYXlmcy9kaXIuYy0xNDM0LVx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvZXhwb3J0LmM9MTk9c3RhdGljIGludCBvdmxfZW5jb2RlX21heWJlX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuLS1cbmZzL292ZXJsYXlmcy9leHBvcnQuYy0yNS1cbmZzL292ZXJsYXlmcy9leHBvcnQuYzoyNjpcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvZXhwb3J0LmMtMjctXHRpZiAoZXJyKSB7XG4tLVxuZnMvb3ZlcmxheWZzL2lub2RlLmM9MjE9aW50IG92bF9zZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4tLVxuZnMvb3ZlcmxheWZzL2lub2RlLmMtNDYtXHRpZiAoIWZ1bGxfY29weV91cClcbmZzL292ZXJsYXlmcy9pbm9kZS5jOjQ3Olx0XHRlcnIgPSBvdmxfY29weV91cChkZW50cnkpO1xuZnMvb3ZlcmxheWZzL2lub2RlLmMtNDgtXHRlbHNlXG5mcy9vdmVybGF5ZnMvaW5vZGUuYzo0OTpcdFx0ZXJyID0gb3ZsX2NvcHlfdXBfd2l0aF9kYXRhKGRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvaW5vZGUuYy01MC1cdGlmICghZXJyKSB7XG4tLVxuZnMvb3ZlcmxheWZzL2lub2RlLmM9NDg1PXN0YXRpYyBpbnQgb3ZsX3NldF9vcl9yZW1vdmVfYWNsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9vdmVybGF5ZnMvaW5vZGUuYy01MTMtXHRpZiAoIXVwcGVyZGVudHJ5KSB7XG5mcy9vdmVybGF5ZnMvaW5vZGUuYzo1MTQ6XHRcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvaW5vZGUuYy01MTUtXHRcdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2lub2RlLmM9NjUzPWludCBvdmxfZmlsZWF0dHJfc2V0KHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxuLS1cbmZzL292ZXJsYXlmcy9pbm9kZS5jLTY2MC1cbmZzL292ZXJsYXlmcy9pbm9kZS5jOjY2MTpcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvaW5vZGUuYy02NjItXHRpZiAoIWVycikge1xuLS1cbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaD01Mzg9c3RydWN0IGZpbGUgKm92bF9wYXRoX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIGludCBmbGFncyk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NTM5OmludCBvdmxfY29weV91cF9zdGFydChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncyk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NTQwOnZvaWQgb3ZsX2NvcHlfdXBfZW5kKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtNTQxLWJvb2wgb3ZsX2FscmVhZHlfY29waWVkX3VwKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IGZsYWdzKTtcbi0tXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg9OTIxPXZvaWQgb3ZsX2ZpbGVfZnJlZShzdHJ1Y3Qgb3ZsX2ZpbGUgKm9mKTtcbi0tXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtOTIzLS8qIGNvcHlfdXAuYyAqL1xuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjkyNDppbnQgb3ZsX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KTtcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo5MjU6aW50IG92bF9jb3B5X3VwX3dpdGhfZGF0YShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpO1xuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oLTkyNi1pbnQgb3ZsX21heWJlX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpO1xuLS1cbmZzL292ZXJsYXlmcy91dGlsLmM9NTM0PWJvb2wgb3ZsX2hhc191cHBlcmRhdGEoc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTU0Mi1cdCAqIFBhaXJzIHdpdGggc21wX3dtYigpIGluIG92bF9zZXRfdXBwZXJkYXRhKCkuIE1haW4gdXNlciBvZlxuZnMvb3ZlcmxheWZzL3V0aWwuYzo1NDM6XHQgKiBvdmxfaGFzX3VwcGVyZGF0YSgpIGlzIG92bF9jb3B5X3VwX21ldGFfaW5vZGVfZGF0YSgpLiBNYWtlIHN1cmVcbmZzL292ZXJsYXlmcy91dGlsLmMtNTQ0LVx0ICogaWYgc2V0dGluZyBvZiBPVkxfVVBQRVJEQVRBIGlzIHZpc2libGUsIHRoZW4gZWZmZWN0cyBvZiB3cml0ZXNcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jPTcwMT1ib29sIG92bF9hbHJlYWR5X2NvcGllZF91cChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncylcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTcyOS0gKi9cbmZzL292ZXJsYXlmcy91dGlsLmM6NzMwOmludCBvdmxfY29weV91cF9zdGFydChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncylcbmZzL292ZXJsYXlmcy91dGlsLmMtNzMxLXtcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTc1Mi1cbmZzL292ZXJsYXlmcy91dGlsLmM6NzUzOnZvaWQgb3ZsX2NvcHlfdXBfZW5kKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbmZzL292ZXJsYXlmcy91dGlsLmMtNzU0LXtcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jPTExNDU9aW50IG92bF9ubGlua19zdGFydChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4tLVxuZnMvb3ZlcmxheWZzL3V0aWwuYy0xMTY0LVx0ICogVE9ETzogaW1wbGVtZW50IG1ldGFkYXRhIG9ubHkgaW5kZXggY29weSB1cCB3aGVuIGNhbGxlZCB3aXRoXG5mcy9vdmVybGF5ZnMvdXRpbC5jOjExNjU6XHQgKiAgICAgICBvdmxfY29weV91cF9mbGFncyhkZW50cnksIE9fUEFUSCkuXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTExNjYtXHQgKi9cbmZzL292ZXJsYXlmcy91dGlsLmMtMTE2Ny1cdGlmIChvdmxfbmVlZF9pbmRleChkZW50cnkpIFx1MDAyNlx1MDAyNiAhb3ZsX2RlbnRyeV9oYXNfdXBwZXJfYWxpYXMoZGVudHJ5KSkge1xuZnMvb3ZlcmxheWZzL3V0aWwuYzoxMTY4Olx0XHRlcnIgPSBvdmxfY29weV91cChkZW50cnkpO1xuZnMvb3ZlcmxheWZzL3V0aWwuYy0xMTY5LVx0XHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy94YXR0cnMuYz0zNj1zdGF0aWMgaW50IG92bF94YXR0cl9zZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmZzL292ZXJsYXlmcy94YXR0cnMuYy01My1cdGlmICghdXBwZXJkZW50cnkpIHtcbmZzL292ZXJsYXlmcy94YXR0cnMuYzo1NDpcdFx0ZXJyID0gb3ZsX2NvcHlfdXAoZGVudHJ5KTtcbmZzL292ZXJsYXlmcy94YXR0cnMuYy01NS1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwOTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA3NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgT3ZlcmxheUZTIEZ1bmN0aW9uIEV4cG9ydHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uIG1vZGlmaWNhdGlvbnMgYW5kIGltbWVkaWF0ZWx5IG15IGJyYWluIGhvbmVzIGluIG9uIGBvdmxfc2V0X29yaWdpbl9maGAgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgLiBJIG5vdGljZSB0aGF0IHRoZXNlIGFyZSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYmVpbmcgYWx0ZXJlZC4gTm93LCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBpbmNsdWRlcyByZXZlYWxzIHRoYXQgYm90aCBhcmUgZXhwb3J0ZWQgaW4gYGZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaGAuIEFoYSwgc28gdGhleSYjMzk7cmUgZGVzaWduZWQgZm9yIGV4dGVybmFsIHVzZS4gSSBzZWUgdGhvc2UgYXJlIHVzZWQgaW4gYGZzL292ZXJsYXlmcy9jb3B5X3VwLmNgIGFuZCBgZnMvb3ZlcmxheWZzL25hbWVpLmNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhleSBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBmdW5jdGlvbmFsaXR5IHRoYXQgbmVlZHMgdG8gaW50ZXJmYWNlIHdpdGggdGhlIGZpbGVzeXN0ZW0uCgpgb3ZsX3NldF91cHBlcl9maGAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBzdGF0aWMsIHdoaWNoIGxpbWl0cyBpdHMgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaXRzIHJlbGV2YW5jZSB0byB0aGlzIHdpZGVyIGludmVzdGlnYXRpb24uCgpOb3csIGFyZSB0aGVzZSBnb29kIGZvY3VzIHN5bWJvbHM/IFllYWgsIHRoZXkgc2VlbSBkZWNlbnQuIFRoZXkmIzM5O3JlIHNwZWNpZmljIHRvIGluZGV4L2ZoIGhhbmRsaW5nIHdpdGhpbiBvdmVybGF5ZnMsIHNvIHRoZXkmIzM5O3JlIGZvY3VzZWQgZW5vdWdoIGFuZCBub3Qgc29tZSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBhIG1lc3MgdG8gdHJhY2UuCgpOZXh0IHN0ZXA6IENvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBXaGF0IGBDT05GSUdgIG9wdGlvbnMgYXJlIHJlbGV2YW50PyBXZWxsLCBvYnZpb3VzbHksIGBDT05GSUdfT1ZFUkxBWV9GU2AgaXMgdGhlIGJpZyBvbmUsIHRoZSBiYXNlLiBCdXQgZ2l2ZW4gdGhhdCB0aGVzZSBmdW5jdGlvbnMgZGVhbCB3aXRoIGluZGV4aW5nLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYENPTkZJR19PVkVSTEFZX0ZTX0lOREVYYC4gSSYjMzk7bGwgY3Jvc3MtcmVmZXJlbmNlIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGZzL292ZXJsYXlmc2AgZGlyZWN0b3J5IGp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7T1ZFUkxBWV9GU19JTkRFWCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL292ZXJsYXlmcy5yc3Q9NjQxPUVuYWJsZWQgd2l0aCB0aGUgbW91bnQgb3B0aW9uIG9yIG1vZHVsZSBvcHRpb24gXCYjMzQ7aW5kZXg9b25cJiMzNDsgb3Igd2l0aCB0aGVcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvb3ZlcmxheWZzLnJzdDo2NDI6a2VybmVsIGNvbmZpZyBvcHRpb24gQ09ORklHX09WRVJMQVlfRlNfSU5ERVg9eS5cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvb3ZlcmxheWZzLnJzdC02NDMtXG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz05ODI9Q09ORklHX09WRVJMQVlfRlM9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzo5ODM6Q09ORklHX09WRVJMQVlfRlNfSU5ERVg9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy05ODQtQ09ORklHX09WRVJMQVlfRlNfWElOT19BVVRPPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTEwMTM9Q09ORklHX09WRVJMQVlfRlM9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMDE0OkNPTkZJR19PVkVSTEFZX0ZTX0lOREVYPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTAxNS1DT05GSUdfT1ZFUkxBWV9GU19YSU5PX0FVVE89eVxuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnPTMxPWNvbmZpZyBPVkVSTEFZX0ZTX1JFRElSRUNUX0FMV0FZU19GT0xMT1dcbi0tXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy00NS1cbmZzL292ZXJsYXlmcy9LY29uZmlnOjQ2OmNvbmZpZyBPVkVSTEFZX0ZTX0lOREVYXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy00Ny1cdGJvb2wgXCYjMzQ7T3ZlcmxheWZzOiB0dXJuIG9uIGlub2RlcyBpbmRleCBmZWF0dXJlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5mcy9vdmVybGF5ZnMvS2NvbmZpZz02NT1jb25maWcgT1ZFUkxBWV9GU19ORlNfRVhQT1JUXG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctNjctXHRkZXBlbmRzIG9uIE9WRVJMQVlfRlNcbmZzL292ZXJsYXlmcy9LY29uZmlnOjY4Olx0ZGVwZW5kcyBvbiBPVkVSTEFZX0ZTX0lOREVYXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy02OS1cdGRlcGVuZHMgb24gIU9WRVJMQVlfRlNfTUVUQUNPUFlcbi0tXG5mcy9vdmVybGF5ZnMvcGFyYW1zLmM9Mjg9TU9EVUxFX1BBUk1fREVTQyh4aW5vX2F1dG8sXG4tLVxuZnMvb3ZlcmxheWZzL3BhcmFtcy5jLTMwLVxuZnMvb3ZlcmxheWZzL3BhcmFtcy5jOjMxOnN0YXRpYyBib29sIG92bF9pbmRleF9kZWYgPSBJU19FTkFCTEVEKENPTkZJR19PVkVSTEFZX0ZTX0lOREVYKTtcbmZzL292ZXJsYXlmcy9wYXJhbXMuYy0zMi1tb2R1bGVfcGFyYW1fbmFtZWQoaW5kZXgsIG92bF9pbmRleF9kZWYsIGJvb2wsIDA2NDQpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTE2OD1DT05GSUdfT1NGX1BBUlRJVElPTj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjoxNjk6Q09ORklHX09WRVJMQVlfRlNfSU5ERVg9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb24tMTcwLUNPTkZJR19PVkVSTEFZX0ZTX01FVEFDT1BZPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzNjkKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogMzMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoaXMgT3ZlcmxheUZTIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgaW5pdGlhbGx5LCBhZGRpbmcgYENPTkZJR19PVkVSTEFZX0ZTX0lOREVYYCBhbmQgYENPTkZJR19PVkVSTEFZX0ZTYCBsb29rcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBgb3ZsX3NldF9vcmlnaW5fZmhgIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCBmdW5jdGlvbnMsIGFuZCBtYWtlIHN1cmUgSSBkaWRuJiMzOTt0IG1pc3MgYW55IG90aGVycy4gSG1tbS4uLiB0aGlua2luZyBhYm91dCBpdCwgYENPTkZJR19PVkVSTEFZX0ZTX05GU19FWFBPUlRgIGlzIHByb2JhYmx5IHJlbGV2YW50IHRvbywgc2luY2UgSSByZWNhbGwgdGhhdCBgb3ZsX2dldF9pbmRleF9maGAgaXMgdXNlZCB3aGVuIGV4cG9ydGluZyBvdmVyIE5GUy4gQWxyaWdodCwgbGV0JiMzOTtzIGluY2x1ZGUgYE9WRVJMQVlfRlNgLCBgT1ZFUkxBWV9GU19JTkRFWGAsIGFuZCBgT1ZFUkxBWV9GU19ORlNfRVhQT1JUYCBpbiB0aGUgY29uZmlndXJhdGlvbi4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgcmVhc29uaW5nIGNvcnJlY3QuIFRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHdoZW4gdGhlIGZpbGUgaGFuZGxlLCBgZmhgLCBpcyBOVUxMLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgZHVyaW5nIG92ZXJsYXlmcyBvcGVyYXRpb25zIGxpa2UgY29weS11cCBhbmQgaW5kZXggY3JlYXRpb24uIEl0IGRlZmluaXRlbHkgc291bmRzIGxpa2UgdGhlIGNoYW5nZXMgaGF2ZSBhIHBvdGVudGlhbCBmdW5jdGlvbmFsIGltcGFjdCBhbmQgYXJlIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGBvdmxfc2V0X29yaWdpbl9maGAgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHN5bWJvbHMsIG9mIGNvdXJzZS4KCk9oLCB3YWl0LCBsZXQgbWUgcXVpY2tseSBkb3VibGUgY2hlY2sgc29tZXRoaW5nLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG5lZWQgdG8gaW5jbHVkZSBgb3ZsX3NldF91cHBlcl9maGAgaW4gdGhlICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDsuIFllcCwgaXQmIzM5O3Mgc3RhdGljIHdpdGhpbiBgZnMvb3ZlcmxheWZzL2NvcHlfdXAuY2AsIHNvIEkmIzM5O2xsIGxlYXZlIGl0IG91dC4KCkFscmlnaHQsIHRoYXQgY292ZXJzIGl0LiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwOTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1ZFUkxBWV9GUyYjMzQ7LAogICAgJiMzNDtPVkVSTEFZX0ZTX0lOREVYJiMzNDssCiAgICAmIzM0O09WRVJMQVlfRlNfTkZTX0VYUE9SVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292bF9zZXRfb3JpZ2luX2ZoJiMzNDssCiAgICAmIzM0O292bF9nZXRfaW5kZXhfbmFtZV9maCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiBgb3ZsX3NldF9vcmlnaW5fZmhgLCBgb3ZsX3NldF91cHBlcl9maGAsIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCB3aGVuIGBmaGAgaXMgTlVMTC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIG92ZXJsYXlmcyBvcGVyYXRpb25zIGxpa2UgY29weS11cCBhbmQgaW5kZXggY3JlYXRpb24uIFRoZSBjaGFuZ2VzIGhhdmUgZnVuY3Rpb25hbCBpbXBhY3QgYW5kIGFyZSB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPVkVSTEFZX0ZTJiMzNDssCiAgICAmIzM0O09WRVJMQVlfRlNfSU5ERVgmIzM0OywKICAgICYjMzQ7T1ZFUkxBWV9GU19ORlNfRVhQT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZsX3NldF9vcmlnaW5fZmgmIzM0OywKICAgICYjMzQ7b3ZsX2dldF9pbmRleF9uYW1lX2ZoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHdoZW4gYGZoYCBpcyBOVUxMLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgb3ZlcmxheWZzIG9wZXJhdGlvbnMgbGlrZSBjb3B5LXVwIGFuZCBpbmRleCBjcmVhdGlvbi4gVGhlIGNoYW5nZXMgaGF2ZSBmdW5jdGlvbmFsIGltcGFjdCBhbmQgYXJlIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDA5OjU1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGNoZWNrcyBmb3IgYGZoICE9IE5VTExgIGJlZm9yZSBhY2Nlc3NpbmcgYGZoLVx1MDAzZWJ1ZmAgYW5kIGBmaC1cdTAwM2VmYi5sZW5gLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGV4ZWN1dGlvbiAocGFnZSBmYXVsdHMpIG9yIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc3NDYxZDZhYjJhMDBlNjNiOWExNzZmMjNjYzQ4MmJlNDIwMGVlYjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAwOTo1NDoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmMgYi9mcy9vdmVybGF5ZnMvY29weV91cC5jCmluZGV4IGU5NjM3MDFiNGM4NzcuLmNiNjYxOWI1ZjNlZTEgMTAwNjQ0Ci0tLSBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvb3ZlcmxheWZzL2NvcHlfdXAuYwpAQCAtNDkxLDcgJiM0Mzs0OTEsNyBAQCBpbnQgb3ZsX3NldF9vcmlnaW5fZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCwKIAkvKgogCSAqIERvIG5vdCBmYWlsIHdoZW4gdXBwZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCB4YXR0cnMuCiAJICovCi0JZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoLSZndDtidWYsCiYjNDM7CWVyciA9IG92bF9jaGVja19zZXR4YXR0cihvZnMsIHVwcGVyLCBPVkxfWEFUVFJfT1JJR0lOLCBmaCA/IGZoLSZndDtidWYgOiBOVUxMLAogCQkJCSBmaCA/IGZoLSZndDtmYi5sZW4gOiAwLCAwKTsKIAogCS8qIElnbm9yZSAtRVBFUk0gZnJvbSBzZXR0aW5nICYjMzQ7dXNlci4qJiMzNDsgb24gc3ltbGluay9zcGVjaWFsICovCkBAIC01MDksNyAmIzQzOzUwOSw4IEBAIHN0YXRpYyBpbnQgb3ZsX3NldF91cHBlcl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLAogCWlmIChJU19FUlIoZmgpKQogCQlyZXR1cm4gUFRSX0VSUihmaCk7CiAKLQllcnIgPSBvdmxfc2V0eGF0dHIob2ZzLCBpbmRleCwgT1ZMX1hBVFRSX1VQUEVSLCBmaC0mZ3Q7YnVmLCBmaC0mZ3Q7ZmIubGVuKTsKJiM0MzsJZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUiwKJiM0MzsJCWZoID8gZmgtJmd0O2J1ZiA6IE5VTEwsIGZoID8gZmgtJmd0O2ZiLmxlbiA6IDApOwogCiAJa2ZyZWUoZmgpOwogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvbmFtZWkuYyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jCmluZGV4IGNhODk5ZmRmYWFmZDIuLjRhZTI2YzgyMGI1ODcgMTAwNjQ0Ci0tLSBhL2ZzL292ZXJsYXlmcy9uYW1laS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jCkBAIC03MzcsMTIgJiM0Mzs3MzcsMTQgQEAgaW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleCkKIGludCBvdmxfZ2V0X2luZGV4X25hbWVfZmgoY29uc3Qgc3RydWN0IG92bF9maCAqZmgsIHN0cnVjdCBxc3RyICpuYW1lKQogewogCWNoYXIgKm4sICpzOwomIzQzOwlzaXplX3QgbGVuID0gZmggPyBmaC0mZ3Q7ZmIubGVuIDogMTsKJiM0MzsJY29uc3QgY2hhciAqYnVmID0gZmggPyBmaC0mZ3Q7YnVmIDogKGNvbnN0IHU4ICopJiMzNDsmIzM0OzsKIAotCW4gPSBrY2FsbG9jKGZoLSZndDtmYi5sZW4sIDIsIEdGUF9LRVJORUwpOwomIzQzOwluID0ga2NhbGxvYyhsZW4sIDIsIEdGUF9LRVJORUwpOwogCWlmICghbikKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlzICA9IGJpbjJoZXgobiwgZmgtJmd0O2J1ZiwgZmgtJmd0O2ZiLmxlbik7CiYjNDM7CXMgID0gYmluMmhleChuLCBidWYsIGxlbik7CiAJKm5hbWUgPSAoc3RydWN0IHFzdHIpIFFTVFJfSU5JVChuLCBzIC0gbik7CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDA5OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MzEKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogODE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIFJlYXNvbmluZzogT3ZlcmxheUZTIE5VTEwgUG9pbnRlciBEZXJlZmVyZW5jZSBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBmcy9vdmVybGF5ZnMvY29weV91cC5jYCBhbmQgYGZzL292ZXJsYXlmcy9uYW1laS5jYC4gSXQmIzM5O3MgYWxsIGFib3V0IGFkZGluZyBOVUxMIGNoZWNrcyBmb3IgdGhlIGBmaGAgcG9pbnRlciwgd2hpY2ggaXMgYSBgc3RydWN0IG92bF9maGAuIFJpZ2h0LCBtYWtlcyBzZW5zZS4KCkluIGBvdmxfc2V0X29yaWdpbl9maGAgYW5kIGBvdmxfc2V0X3VwcGVyX2ZoYCwgdGhleSYjMzk7dmUgYWRkZWQgY29uZGl0aW9uYWwgY2hlY2tzIGxpa2UgYGZoID8gZmgtJmd0O2J1ZiA6IE5VTExgIGFuZCBgZmggPyBmaC0mZ3Q7ZmIubGVuIDogMGAuIEdvb2QsIHRoaXMgcHJldmVudHMgdGhlIGRyZWFkZWQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLiBTYW1lIGdvZXMgZm9yIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgLiBJbml0aWFsbHksIHRoZXJlIHdhcyBhIGRpcmVjdCBkZXJlZmVyZW5jZSBvZiBgZmhgIHRvIGFjY2VzcyBgLmZiLmxlbmAgYW5kIGAuYnVmYC4gTm93LCB0aGVyZSYjMzk7cyBhIGNvbmRpdGlvbmFsIGNoZWNrIGJlZm9yZSBhY2Nlc3NpbmcgdGhlbS4KClNwZWNpZmljYWxseSBpbiBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCwgaWYgYGZoYCBpcyBOVUxMLCBpdCYjMzk7cyBhbGxvY2F0aW5nIDIgYnl0ZXMsIGFuZCB0aGVuIHVzZXMgYSBgYmluMmhleGAgY2FsbCB3aXRoIGBidWYgPSAmIzM0OyYjMzQ7YCAoZW1wdHkgc3RyaW5nKSBhbmQgYGxlbiA9IDFgLiBIYW5nIG9uLi4udGhlIGVtcHR5IHN0cmluZyBgJiMzNDsmIzM0O2AgKmlzKiBhIDEtYnl0ZSBzdHJpbmcgY29udGFpbmluZyBqdXN0IGEgbnVsbCB0ZXJtaW5hdG9yLCBzbyB0aGUgY2FsbCB0byBgYmluMmhleGAgd2lsbCByZWFkIHRoYXQgb25lIG51bGwgYnl0ZSBhbmQgd3JpdGUgdG8gdGhlIGFsbG9jYXRlZCB0d28gYnl0ZXMuIFBlcmZlY3RseSB2YWxpZCBtZW1vcnkgYWNjZXNzIGFuZCBpbml0aWFsaXphdGlvbiwgcmVhbGx5LiBJdCB3aWxsIHdyaXRlIHR3byBieXRlcywgd2l0aCB0aGUgZmlyc3QgYnl0ZSBiZWluZyB6ZXJvLiBObyBpc3N1ZXMgdGhlcmUuCgpTbywgdGhlIHdob2xlIHBvaW50IGlzIHByZXZlbnRpbmcgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gS0FTQU4gd291bGQgcGljayB0aGF0IHVwLCBidXQgc3RhbmRhcmQga2VybmVsIGV4ZWN1dGlvbiAocGFnZSBmYXVsdHMpIHdvdWxkIGRvIGl0IHRvby4gVGhlcmUmIzM5O3Mgbm8gaW50cm9kdWN0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIHdpdGggdGhlc2UgY2hhbmdlcy4gVGhlIHBhdGNoIGFkZHMgb25seSBgaWYgKGZoKSAuLi5gIHRvIGVuc3VyZSBgZmhgIGlzIG5vdCBudWxsLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgaXMgKmFueSogdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzayBpbiB0aGlzIHBhdGNoLi4uIHRoZSBgZmhgIGlzIGEgcG9pbnRlciB0byBgc3RydWN0IG92bF9maGAuIElmIGl0JiMzOTtzIE5VTEwsIHdlIHVzZSBOVUxMLzAsIG9yICYjMzQ7JiMzNDsvMS4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW52b2x2ZWQuIFRoaXMgaXMgcHVyZWx5IGFib3V0IGF2b2lkaW5nIHRoZSBkZXJlZmVyZW5jZS4gVGhlIGJ1ZyBpcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4KClNvLCBJIHRoaW5rIEkgaGF2ZSBpdDogKipLTVNBTiBpcyBub3QgbmVlZGVkIGhlcmUuKiogVGhlIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggaXMgcmVsaWFibHkgY2F1Z2h0IGJ5IGV4aXN0aW5nIG1lY2hhbmlzbXMuIEl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBub3IgZG9lcyBpdCB0b3VjaCBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IG1pZ2h0IGhhcmJvciB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhlcmUmIzM5O3Mgbm90aGluZyBoZXJlIHRoYXQgd2FycmFudHMgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBUaGUgcGF0Y2ggaXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDA5OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ5IGFkZGluZyBjaGVja3MgZm9yIGBmaCAhPSBOVUxMYCBiZWZvcmUgYWNjZXNzaW5nIGBmaC1cdTAwM2VidWZgIGFuZCBgZmgtXHUwMDNlZmIubGVuYC4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBleGVjdXRpb24gKHBhZ2UgZmF1bHRzKSBvciBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGNoZWNrcyBmb3IgYGZoICE9IE5VTExgIGJlZm9yZSBhY2Nlc3NpbmcgYGZoLVx1MDAzZWJ1ZmAgYW5kIGBmaC1cdTAwM2VmYi5sZW5gLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGV4ZWN1dGlvbiAocGFnZSBmYXVsdHMpIG9yIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU0OjI5LjI4NTExMjgyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzkyOTU0MDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9WRVJMQVlfRlNcIixcbiAgICBcIk9WRVJMQVlfRlNfSU5ERVhcIixcbiAgICBcIk9WRVJMQVlfRlNfTkZTX0VYUE9SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm92bF9zZXRfb3JpZ2luX2ZoXCIsXG4gICAgXCJvdmxfZ2V0X2luZGV4X25hbWVfZmhcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ5IGFkZGluZyBjaGVja3MgZm9yIGBmaCAhPSBOVUxMYCBiZWZvcmUgYWNjZXNzaW5nIGBmaC1cXHUwMDNlYnVmYCBhbmQgYGZoLVxcdTAwM2VmYi5sZW5gLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGV4ZWN1dGlvbiAocGFnZSBmYXVsdHMpIG9yIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgaW4gYG92bF9zZXRfb3JpZ2luX2ZoYCwgYG92bF9zZXRfdXBwZXJfZmhgLCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgd2hlbiBgZmhgIGlzIE5VTEwuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBvdmVybGF5ZnMgb3BlcmF0aW9ucyBsaWtlIGNvcHktdXAgYW5kIGluZGV4IGNyZWF0aW9uLiBUaGUgY2hhbmdlcyBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0IGFuZCBhcmUgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDk6NTQ6MjkuMjg1MTE4MzY0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDU2OTI4MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NzQ2MWQ2YWIyYTAwZTYzYjlhMTc2ZjIzY2M0ODJiZTQyMDBlZWI0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDI0IDA5OjU0OjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmMgYi9mcy9vdmVybGF5ZnMvY29weV91cC5jXFxuaW5kZXggZTk2MzcwMWI0Yzg3Ny4uY2I2NjE5YjVmM2VlMSAxMDA2NDRcXG4tLS0gYS9mcy9vdmVybGF5ZnMvY29weV91cC5jXFxuKysrIGIvZnMvb3ZlcmxheWZzL2NvcHlfdXAuY1xcbkBAIC00OTEsNyArNDkxLDcgQEAgaW50IG92bF9zZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXFxuIFxcdC8qXFxuIFxcdCAqIERvIG5vdCBmYWlsIHdoZW4gdXBwZXIgZG9lc24ndCBzdXBwb3J0IHhhdHRycy5cXG4gXFx0ICovXFxuLVxcdGVyciA9IG92bF9jaGVja19zZXR4YXR0cihvZnMsIHVwcGVyLCBPVkxfWEFUVFJfT1JJR0lOLCBmaC1cXHUwMDNlYnVmLFxcbitcXHRlcnIgPSBvdmxfY2hlY2tfc2V0eGF0dHIob2ZzLCB1cHBlciwgT1ZMX1hBVFRSX09SSUdJTiwgZmggPyBmaC1cXHUwMDNlYnVmIDogTlVMTCxcXG4gXFx0XFx0XFx0XFx0IGZoID8gZmgtXFx1MDAzZWZiLmxlbiA6IDAsIDApO1xcbiBcXG4gXFx0LyogSWdub3JlIC1FUEVSTSBmcm9tIHNldHRpbmcgXFxcInVzZXIuKlxcXCIgb24gc3ltbGluay9zcGVjaWFsICovXFxuQEAgLTUwOSw3ICs1MDksOCBAQCBzdGF0aWMgaW50IG92bF9zZXRfdXBwZXJfZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcixcXG4gXFx0aWYgKElTX0VSUihmaCkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKGZoKTtcXG4gXFxuLVxcdGVyciA9IG92bF9zZXR4YXR0cihvZnMsIGluZGV4LCBPVkxfWEFUVFJfVVBQRVIsIGZoLVxcdTAwM2VidWYsIGZoLVxcdTAwM2VmYi5sZW4pO1xcbitcXHRlcnIgPSBvdmxfc2V0eGF0dHIob2ZzLCBpbmRleCwgT1ZMX1hBVFRSX1VQUEVSLFxcbitcXHRcXHRmaCA/IGZoLVxcdTAwM2VidWYgOiBOVUxMLCBmaCA/IGZoLVxcdTAwM2VmYi5sZW4gOiAwKTtcXG4gXFxuIFxcdGtmcmVlKGZoKTtcXG4gXFx0cmV0dXJuIGVycjtcXG5kaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL25hbWVpLmMgYi9mcy9vdmVybGF5ZnMvbmFtZWkuY1xcbmluZGV4IGNhODk5ZmRmYWFmZDIuLjRhZTI2YzgyMGI1ODcgMTAwNjQ0XFxuLS0tIGEvZnMvb3ZlcmxheWZzL25hbWVpLmNcXG4rKysgYi9mcy9vdmVybGF5ZnMvbmFtZWkuY1xcbkBAIC03MzcsMTIgKzczNywxNCBAQCBpbnQgb3ZsX3ZlcmlmeV9pbmRleChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmluZGV4KVxcbiBpbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcXG4ge1xcbiBcXHRjaGFyICpuLCAqcztcXG4rXFx0c2l6ZV90IGxlbiA9IGZoID8gZmgtXFx1MDAzZWZiLmxlbiA6IDE7XFxuK1xcdGNvbnN0IGNoYXIgKmJ1ZiA9IGZoID8gZmgtXFx1MDAzZWJ1ZiA6IChjb25zdCB1OCAqKVxcXCJcXFwiO1xcbiBcXG4tXFx0biA9IGtjYWxsb2MoZmgtXFx1MDAzZWZiLmxlbiwgMiwgR0ZQX0tFUk5FTCk7XFxuK1xcdG4gPSBrY2FsbG9jKGxlbiwgMiwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICghbilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRzICA9IGJpbjJoZXgobiwgZmgtXFx1MDAzZWJ1ZiwgZmgtXFx1MDAzZWZiLmxlbik7XFxuK1xcdHMgID0gYmluMmhleChuLCBidWYsIGxlbik7XFxuIFxcdCpuYW1lID0gKHN0cnVjdCBxc3RyKSBRU1RSX0lOSVQobiwgcyAtIG4pO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU0OjI5LjY5MTU1OTE5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQxOTU3MTMwMTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9WRVJMQVlfRlNcIixcbiAgICBcIk9WRVJMQVlfRlNfSU5ERVhcIixcbiAgICBcIk9WRVJMQVlfRlNfTkZTX0VYUE9SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm92bF9zZXRfb3JpZ2luX2ZoXCIsXG4gICAgXCJvdmxfZ2V0X2luZGV4X25hbWVfZmhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiBgb3ZsX3NldF9vcmlnaW5fZmhgLCBgb3ZsX3NldF91cHBlcl9maGAsIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCB3aGVuIGBmaGAgaXMgTlVMTC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIG92ZXJsYXlmcyBvcGVyYXRpb25zIGxpa2UgY29weS11cCBhbmQgaW5kZXggY3JlYXRpb24uIFRoZSBjaGFuZ2VzIGhhdmUgZnVuY3Rpb25hbCBpbXBhY3QgYW5kIGFyZSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NzQ2MWQ2YWIyYTAwZTYzYjlhMTc2ZjIzY2M0ODJiZTQyMDBlZWI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMDk6NTQ6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvY29weV91cC5jIGIvZnMvb3ZlcmxheWZzL2NvcHlfdXAuY1xuaW5kZXggZTk2MzcwMWI0Yzg3Ny4uY2I2NjE5YjVmM2VlMSAxMDA2NDRcbi0tLSBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmNcbisrKyBiL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmNcbkBAIC00OTEsNyArNDkxLDcgQEAgaW50IG92bF9zZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXG4gXHQvKlxuIFx0ICogRG8gbm90IGZhaWwgd2hlbiB1cHBlciBkb2Vzbid0IHN1cHBvcnQgeGF0dHJzLlxuIFx0ICovXG4tXHRlcnIgPSBvdmxfY2hlY2tfc2V0eGF0dHIob2ZzLCB1cHBlciwgT1ZMX1hBVFRSX09SSUdJTiwgZmgtXHUwMDNlYnVmLFxuK1x0ZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoID8gZmgtXHUwMDNlYnVmIDogTlVMTCxcbiBcdFx0XHRcdCBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDAsIDApO1xuIFxuIFx0LyogSWdub3JlIC1FUEVSTSBmcm9tIHNldHRpbmcgXCJ1c2VyLipcIiBvbiBzeW1saW5rL3NwZWNpYWwgKi9cbkBAIC01MDksNyArNTA5LDggQEAgc3RhdGljIGludCBvdmxfc2V0X3VwcGVyX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqdXBwZXIsXG4gXHRpZiAoSVNfRVJSKGZoKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoZmgpO1xuIFxuLVx0ZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUiwgZmgtXHUwMDNlYnVmLCBmaC1cdTAwM2VmYi5sZW4pO1xuK1x0ZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUixcbitcdFx0ZmggPyBmaC1cdTAwM2VidWYgOiBOVUxMLCBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDApO1xuIFxuIFx0a2ZyZWUoZmgpO1xuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvbmFtZWkuYyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jXG5pbmRleCBjYTg5OWZkZmFhZmQyLi40YWUyNmM4MjBiNTg3IDEwMDY0NFxuLS0tIGEvZnMvb3ZlcmxheWZzL25hbWVpLmNcbisrKyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jXG5AQCAtNzM3LDEyICs3MzcsMTQgQEAgaW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleClcbiBpbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcbiB7XG4gXHRjaGFyICpuLCAqcztcbitcdHNpemVfdCBsZW4gPSBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDE7XG4rXHRjb25zdCBjaGFyICpidWYgPSBmaCA/IGZoLVx1MDAzZWJ1ZiA6IChjb25zdCB1OCAqKVwiXCI7XG4gXG4tXHRuID0ga2NhbGxvYyhmaC1cdTAwM2VmYi5sZW4sIDIsIEdGUF9LRVJORUwpO1xuK1x0biA9IGtjYWxsb2MobGVuLCAyLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghbilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRzICA9IGJpbjJoZXgobiwgZmgtXHUwMDNlYnVmLCBmaC1cdTAwM2VmYi5sZW4pO1xuK1x0cyAgPSBiaW4yaGV4KG4sIGJ1ZiwgbGVuKTtcbiBcdCpuYW1lID0gKHN0cnVjdCBxc3RyKSBRU1RSX0lOSVQobiwgcyAtIG4pO1xuIFxuIFx0cmV0dXJuIDA7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwOTo1NDoyOS42OTE1Njg0NzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzM3ODMwOTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgT3ZlcmxheUZTIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvb3ZlcmxheWZzL2NvcHlfdXAuY2AgYW5kIGBmcy9vdmVybGF5ZnMvbmFtZWkuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgc29tZSBudWxsIGNoZWNrcyByZWxhdGVkIHRvIGBmaGAgaW4gdGhyZWUgc3BlY2lmaWMgZnVuY3Rpb25zOiBgb3ZsX3NldF9vcmlnaW5fZmhgLCBgb3ZsX3NldF91cHBlcl9maGAsIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYC4gTGV0J3MgYnJlYWsgZG93biB0aGUgY29kZSBjaGFuZ2VzLlxuXG5JbiBgb3ZsX3NldF9vcmlnaW5fZmhgLCB3ZSdyZSBub3cgZG9pbmcgYSBudWxsIGNoZWNrIG9uIGBmaGAgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQ6XG5gYGBjXG4tXHRlcnIgPSBvdmxfY2hlY2tfc2V0eGF0dHIob2ZzLCB1cHBlciwgT1ZMX1hBVFRSX09SSUdJTiwgZmgtXHUwMDNlYnVmLFxuK1x0ZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoID8gZmgtXHUwMDNlYnVmIDogTlVMTCxcbiBcdFx0XHRcdCBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDAsIDApO1xuYGBgXG5NYWtlcyBzZW5zZS4gIElmIGBmaGAgaXMgTlVMTCwgdGhlbiBgZmgtXHUwMDNlYnVmYCBhbmQgYGZoLVx1MDAzZWZiLmxlbmAgYXJlIG5vdCBkZXJlZmVyZW5jZWQuICBUaGlzIGlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgcHJhY3RpY2UuXG5cblRoZSBzYW1lIHBhdHRlcm4gaXMgcmVwZWF0ZWQgaW4gYG92bF9zZXRfdXBwZXJfZmhgOlxuYGBgY1xuLVx0ZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUiwgZmgtXHUwMDNlYnVmLCBmaC1cdTAwM2VmYi5sZW4pO1xuK1x0ZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUixcbitcdFx0ZmggPyBmaC1cdTAwM2VidWYgOiBOVUxMLCBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDApO1xuYGBgXG5BZ2FpbiwgYSBudWxsIGNoZWNrIG9uIGBmaGAgYmVmb3JlIGFjY2Vzc2luZyBpdHMgbWVtYmVycy4gUHJldmVudGluZyBhIGxpa2VseSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuXG5cbkZpbmFsbHksIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIGlzIGFsc28gYmVpbmcgYWRqdXN0ZWQ6XG5gYGBjXG4gXHRjaGFyICpuLCAqcztcbitcdHNpemVfdCBsZW4gPSBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDE7XG4rXHRjb25zdCBjaGFyICpidWYgPSBmaCA/IGZoLVx1MDAzZWJ1ZiA6IChjb25zdCB1OCAqKVwiXCI7XG4gXG4tXHRuID0ga2NhbGxvYyhmaC1cdTAwM2VmYi5sZW4sIDIsIEdGUF9LRVJORUwpO1xuK1x0biA9IGtjYWxsb2MobGVuLCAyLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghbilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRzICA9IGJpbjJoZXgobiwgZmgtXHUwMDNlYnVmLCBmaC1cdTAwM2VmYi5sZW4pO1xuK1x0cyAgPSBiaW4yaGV4KG4sIGJ1ZiwgbGVuKTtcbmBgYFxuXG5IZXJlLCB3ZSdyZSBub3Qgb25seSBhZGRpbmcgdGhlIG51bGwgY2hlY2ssIGJ1dCB3ZSdyZSBhbHNvIG1vZGlmeWluZyB0aGUgbG9naWMgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGBmaGAgaXMgTlVMTC4gIEluc3RlYWQgb2YgcGFzc2luZyBgZmgtXHUwMDNlYnVmYCBhbmQgYGZoLVx1MDAzZWZiLmxlbmAgd2hpY2ggd291bGQgZGVyZWZlcmVuY2UgYSBOVUxMIHBvaW50ZXIsIHdlIG5vdyBzdWJzdGl0dXRlIGBOVUxMYCAob3IgYSBwb2ludGVyIHRvIGFuIGVtcHR5IHN0cmluZykgYW5kIGEgbGVuZ3RoIG9mIDEgaW4gdGhlIHRlcm5hcnkgY29uZGl0aW9uYWwuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgY3Jhc2ggZHVyaW5nIGBrY2FsbG9jYCBhbmQgYGJpbjJoZXhgIGNhbGxzLlxuXG5TbywgZnVuY3Rpb25hbGx5LCB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYnVnIGZpeCwgcHJldmVudGluZyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiB0aGVzZSB0aHJlZSBmdW5jdGlvbnMuICBOb3csIEkgbmVlZCB0byBjaGVjayBob3cgcmVhY2hhYmxlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYW5kIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZC4gT3ZlcmxheWZzIGlzIGVuYWJsZWQgYnkgYENPTkZJR19PVkVSTEFZX0ZTYCwgc28gSSBrbm93IHdoZXJlIHRvIHN0YXJ0IGxvb2tpbmcuIEknbGwgc2VhcmNoIGZvciB0aG9zZSBmdW5jdGlvbiBuYW1lcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHBhdGhzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTM0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDk6NTQ6MzguNDI5NDAyMDAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDEzMTM0NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZsX3NldF9vcmlnaW5fZmh8b3ZsX3NldF91cHBlcl9maHxvdmxfZ2V0X2luZGV4X25hbWVfZmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz00NzM9c3RydWN0IG92bF9maCAqb3ZsX2dldF9vcmlnaW5fZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICpvcmlnaW4pXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTQ4NS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjQ4NjppbnQgb3ZsX3NldF9vcmlnaW5fZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCxcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTQ4Ny1cXHRcXHQgICAgICBzdHJ1Y3QgZGVudHJ5ICp1cHBlcilcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTAxLS8qIFN0b3JlIGZpbGUgaGFuZGxlIG9mIEB1cHBlciBkaXIgaW4gQGluZGV4IGRpciBlbnRyeSAqL1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTAyOnN0YXRpYyBpbnQgb3ZsX3NldF91cHBlcl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLFxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTAzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgZGVudHJ5ICppbmRleClcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9NTIyPXN0YXRpYyBpbnQgb3ZsX2NyZWF0ZV9pbmRleChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLFxcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01NDYtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo1NDc6XFx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGZoLCBcXHUwMDI2bmFtZSk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01NDgtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTU1LVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTU2OlxcdGVyciA9IG92bF9zZXRfdXBwZXJfZmgob2ZzLCB1cHBlciwgdGVtcCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01NTctXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9NjYwPXN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfbWV0YWRhdGEoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYywgc3RydWN0IGRlbnRyeSAqdGVtcClcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjg5LVxcdGlmIChjLVxcdTAwM2VvcmlnaW4pIHtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjY5MDpcXHRcXHRlcnIgPSBvdmxfc2V0X29yaWdpbl9maChvZnMsIGMtXFx1MDAzZW9yaWdpbl9maCwgdGVtcCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02OTEtXFx0XFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jPTYzNj1pbnQgb3ZsX3ZlcmlmeV9pbmRleChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmluZGV4KVxcbi0tXFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzM2LVxcbmZzL292ZXJsYXlmcy9uYW1laS5jOjczNzppbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03Mzgte1xcbi0tXFxuZnMvb3ZlcmxheWZzL25hbWVpLmM9NzY5PWludCBvdmxfZ2V0X2luZGV4X25hbWUoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICpvcmlnaW4sXFxuLS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03NzgtXFxuZnMvb3ZlcmxheWZzL25hbWVpLmM6Nzc5OlxcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgbmFtZSk7XFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzgwLVxcbi0tXFxuZnMvb3ZlcmxheWZzL25hbWVpLmM9Nzg2PXN0cnVjdCBkZW50cnkgKm92bF9nZXRfaW5kZXhfZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3Qgb3ZsX2ZoICpmaClcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc5MS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo3OTI6XFx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGZoLCBcXHUwMDI2bmFtZSk7XFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzkzLVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYz05Mjk9c3RhdGljIGludCBvdmxfZml4X29yaWdpbihzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTk0NS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo5NDY6XFx0ZXJyID0gb3ZsX3NldF9vcmlnaW5fZmgob2ZzLCBmaCwgdXBwZXIpO1xcbmZzL292ZXJsYXlmcy9uYW1laS5jLTk0Ny1cXHRpZiAoIWVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaD03NDA9aW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleCk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjc0MTppbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oLTc0Mi1pbnQgb3ZsX2dldF9pbmRleF9uYW1lKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqb3JpZ2luLFxcbi0tXFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oPTkzMT1zdHJ1Y3Qgb3ZsX2ZoICpvdmxfZ2V0X29yaWdpbl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKm9yaWdpbik7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjkzMjppbnQgb3ZsX3NldF9vcmlnaW5fZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCxcXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtOTMzLVxcdFxcdCAgICAgIHN0cnVjdCBkZW50cnkgKnVwcGVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDk6NTQ6NDAuODMwNzIxNTkzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ3NjM2MDgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipPdmVybGF5RlMgRnVuY3Rpb25hbGl0eSBhbmQgRmlsZSBIYW5kbGVzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGVzZSBjaGFuZ2VzLCBhbmQgaXQgbG9va3MgbGlrZSB0aGV5J3JlIGFsbCBjZW50ZXJlZCBhcm91bmQgT3ZlcmxheUZTLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgb3ZlcmxheWZzYCBjb2RlLiBUaGUga2V5IGZ1bmN0aW9ucyBJJ20gc2VlaW5nIGFyZSByZWFjaGFibGUsIGFuZCBzZWVtIGludGVncmFsIHRvIHRoZSBmdW5jdGlvbmFsaXR5LiBOb3csIGZyb20gd2hhdCBJIGNhbiB0ZWxsLCBgb3ZsX3NldF9vcmlnaW5fZmhgIGlzIGNhbGxlZCBmcm9tIHR3byBvdGhlciBmdW5jdGlvbnMgSSBrbm93IHdlbGwsIGBvdmxfY29weV91cF9tZXRhZGF0YWAgYW5kIGBvdmxfZml4X29yaWdpbmAuIGBvdmxfc2V0X3VwcGVyX2ZoYCwgb24gdGhlIG90aGVyIGhhbmQsIGlzIGNhbGxlZCBmcm9tIGBvdmxfY3JlYXRlX2luZGV4YCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoYXQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYG92bF9jcmVhdGVfaW5kZXhgLCBgb3ZsX2dldF9pbmRleF9uYW1lYCwgYW5kIGBvdmxfZ2V0X2luZGV4X2ZoYCwgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgdGhpcyBvbmUuXG5cblRoZSBjb25maWcgcmVxdWlyZWQgaXMgdGhlIHN0YW5kYXJkIGBPVkVSTEFZX0ZTYCwgc28gdGhhdCdzIGdvb2QuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgLiBXYWl0IGEgc2Vjb25k4oCmIGBvdmxfc2V0X3VwcGVyX2ZoYCBpcyBzdGF0aWM/IEhtbSwgdGhhdCBjb3VsZCBhZGQgYSBsYXllciBvZiBjb21wbGV4aXR5LlxuXG5MZXQgbWUgdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuIEkgc2hvdWxkIHByb2JhYmx5IHJlLWV4YW1pbmUgaG93IGFsbCBvZiB0aGlzIHRpZXMgdG9nZXRoZXIgYnkgbG9va2luZyBjbG9zZXIgYXQgYG92bF9jcmVhdGVfaW5kZXhgLCBgb3ZsX2NvcHlfdXBfbWV0YWRhdGFgLCBgb3ZsX2ZpeF9vcmlnaW5gLCBgb3ZsX2dldF9pbmRleF9uYW1lYCwgYW5kIGBvdmxfZ2V0X2luZGV4X2ZoYC4gVGhpcyBzaG91bGQgaGVscCBtZSBjb250ZXh0dWFsaXplIHRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTIwLCJPdXRwdXRUb2tlbnMiOjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU0OjQ3LjMwNzA4NTU3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzM4OTQzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZsX2NyZWF0ZV9pbmRleHxvdmxfY29weV91cF9tZXRhZGF0YXxvdmxfZml4X29yaWdpbnxvdmxfZ2V0X2luZGV4X25hbWV8b3ZsX2dldF9pbmRleF9maFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9vdmVybGF5ZnMvY29weV91cC5jPTUwMj1zdGF0aWMgaW50IG92bF9zZXRfdXBwZXJfZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcixcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTIxLSAqL1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTIyOnN0YXRpYyBpbnQgb3ZsX2NyZWF0ZV9pbmRleChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLFxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTIzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgZGVudHJ5ICp1cHBlcilcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTQ2LVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTQ3OlxcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgXFx1MDAyNm5hbWUpO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTQ4LVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTY0MD1zdGF0aWMgaW50IG92bF9jb3B5X3VwX2RhdGEoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYywgY29uc3Qgc3RydWN0IHBhdGggKnRlbXApXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTY1OS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjY2MDpzdGF0aWMgaW50IG92bF9jb3B5X3VwX21ldGFkYXRhKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMsIHN0cnVjdCBkZW50cnkgKnRlbXApXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NjEte1xcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz03NTk9c3RhdGljIGludCBvdmxfY29weV91cF93b3JrZGlyKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc5Ni1cXHRpZiAoU19JU0RJUihjLVxcdTAwM2VzdGF0Lm1vZGUpIFxcdTAwMjZcXHUwMDI2IGMtXFx1MDAzZWluZGV4ZWQpIHtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjc5NzpcXHRcXHRlcnIgPSBvdmxfY3JlYXRlX2luZGV4KGMtXFx1MDAzZWRlbnRyeSwgYy1cXHUwMDNlb3JpZ2luX2ZoLCB0ZW1wKTtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc5OC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjAtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo4MjE6XFx0ZXJyID0gb3ZsX2NvcHlfdXBfbWV0YWRhdGEoYywgdGVtcCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjItXFx0aWYgKCFlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTg1Mz1zdGF0aWMgaW50IG92bF9jb3B5X3VwX3RtcGZpbGUoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYylcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODgyLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODgzOlxcdGVyciA9IG92bF9jb3B5X3VwX21ldGFkYXRhKGMsIHRlbXApO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODg0LVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTkzMz1zdGF0aWMgaW50IG92bF9kb19jb3B5X3VwKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk2Ni1cXHRcXHRjLVxcdTAwM2VkZXN0ZGlyID0gb3ZsX2luZGV4ZGlyKGMtXFx1MDAzZWRlbnRyeS1cXHUwMDNlZF9zYik7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo5Njc6XFx0XFx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lKG9mcywgb3JpZ2luLCBcXHUwMDI2Yy1cXHUwMDNlZGVzdG5hbWUpO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtOTY4LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvZXhwb3J0LmM9Njg2PXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpvdmxfbG93ZXJfZmhfdG9fZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvb3ZlcmxheWZzL2V4cG9ydC5jLTcxNy1cXHRpZiAob3ZsX2luZGV4ZGlyKHNiKSkge1xcbmZzL292ZXJsYXlmcy9leHBvcnQuYzo3MTg6XFx0XFx0aW5kZXggPSBvdmxfZ2V0X2luZGV4X2ZoKG9mcywgZmgpO1xcbmZzL292ZXJsYXlmcy9leHBvcnQuYy03MTktXFx0XFx0ZXJyID0gUFRSX0VSUihpbmRleCk7XFxuLS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYz02MzY9aW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleClcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTczNi1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo3Mzc6aW50IG92bF9nZXRfaW5kZXhfbmFtZV9maChjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCwgc3RydWN0IHFzdHIgKm5hbWUpXFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzM4LXtcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc2OC0gKi9cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo3Njk6aW50IG92bF9nZXRfaW5kZXhfbmFtZShzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKm9yaWdpbixcXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03NzAtXFx0XFx0ICAgICAgIHN0cnVjdCBxc3RyICpuYW1lKVxcbi0tXFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzc4LVxcbmZzL292ZXJsYXlmcy9uYW1laS5jOjc3OTpcXHRlcnIgPSBvdmxfZ2V0X2luZGV4X25hbWVfZmgoZmgsIG5hbWUpO1xcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc4MC1cXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc4NS0vKiBMb29rdXAgaW5kZXggYnkgZmlsZSBoYW5kbGUgZm9yIE5GUyBleHBvcnQgKi9cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo3ODY6c3RydWN0IGRlbnRyeSAqb3ZsX2dldF9pbmRleF9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBvdmxfZmggKmZoKVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc4Ny17XFxuLS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03OTEtXFxuZnMvb3ZlcmxheWZzL25hbWVpLmM6NzkyOlxcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgXFx1MDAyNm5hbWUpO1xcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc5My1cXHRpZiAoZXJyKVxcbi0tXFxuZnMvb3ZlcmxheWZzL25hbWVpLmM9ODE1PXN0cnVjdCBkZW50cnkgKm92bF9sb29rdXBfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcixcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTgyMy1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo4MjQ6XFx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lKG9mcywgb3JpZ2luLCBcXHUwMDI2bmFtZSk7XFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtODI1LVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYz05MDU9aW50IG92bF9wYXRoX25leHQoaW50IGlkeCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgcGF0aCAqcGF0aCxcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTkyOC0vKiBGaXggbWlzc2luZyAnb3JpZ2luJyB4YXR0ciAqL1xcbmZzL292ZXJsYXlmcy9uYW1laS5jOjkyOTpzdGF0aWMgaW50IG92bF9maXhfb3JpZ2luKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTkzMC1cXHRcXHRcXHQgIHN0cnVjdCBkZW50cnkgKmxvd2VyLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcilcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jPTEwOTI9c3RhdGljIGludCBvdmxfbG9va3VwX2xheWVycyhzdHJ1Y3Qgb3ZsX2xvb2t1cF9jdHggKmN0eCwgc3RydWN0IG92bF9sb29rdXBfZGF0YSAqZClcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTExODEtXFx0XFx0aWYgKGN0eC1cXHUwMDNldXBwZXJkZW50cnkgXFx1MDAyNlxcdTAwMjYgIWN0eC1cXHUwMDNlY3RyIFxcdTAwMjZcXHUwMDI2ICFvZnMtXFx1MDAzZW5veGF0dHIgXFx1MDAyNlxcdTAwMjYgZC1cXHUwMDNlaXNfZGlyKSB7XFxuZnMvb3ZlcmxheWZzL25hbWVpLmM6MTE4MjpcXHRcXHRcXHRlcnIgPSBvdmxfZml4X29yaWdpbihvZnMsIGRlbnRyeSwgdGhpcywgY3R4LVxcdTAwM2V1cHBlcmRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtMTE4My1cXHRcXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg9NzQwPWludCBvdmxfdmVyaWZ5X2luZGV4KHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqaW5kZXgpO1xcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo3NDE6aW50IG92bF9nZXRfaW5kZXhfbmFtZV9maChjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCwgc3RydWN0IHFzdHIgKm5hbWUpO1xcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo3NDI6aW50IG92bF9nZXRfaW5kZXhfbmFtZShzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKm9yaWdpbixcXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtNzQzLVxcdFxcdCAgICAgICBzdHJ1Y3QgcXN0ciAqbmFtZSk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjc0NDpzdHJ1Y3QgZGVudHJ5ICpvdmxfZ2V0X2luZGV4X2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IG92bF9maCAqZmgpO1xcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaC03NDUtc3RydWN0IGRlbnRyeSAqb3ZsX2xvb2t1cF9pbmRleChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLFxcbi0tXFxuZnMvb3ZlcmxheWZzL3V0aWwuYz0xMDc1PXN0YXRpYyB2b2lkIG92bF9jbGVhbnVwX2luZGV4KHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4tLVxcbmZzL292ZXJsYXlmcy91dGlsLmMtMTA4Ni1cXG5mcy9vdmVybGF5ZnMvdXRpbC5jOjEwODc6XFx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lKG9mcywgbG93ZXJkZW50cnksIFxcdTAwMjZuYW1lKTtcXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTEwODgtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDk6NTQ6NDkuODQwOTg4NTE3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5NzUxMzMwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzLCBhcyBJIHVuZGVyc3RhbmQgaXQ6XG5cbioqQ29uc2lkZXJpbmcgT3ZlcmxheUZTIEZ1bmN0aW9uIFNlbGVjdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhlc2UgT3ZlcmxheUZTIGZ1bmN0aW9ucy4gSSBzZWUgdGhhdCBgb3ZsX3NldF9vcmlnaW5fZmhgIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCBhcmUgZGVmaW5lZCBhcyBub24tc3RhdGljLiBHb29kIHRvIGtub3cuIEJ1dCBJJ20gbm90aWNpbmcgYG92bF9zZXRfdXBwZXJfZmhgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBrZXkgZGlmZmVyZW5jZS4gVGhhdCBwcm9iYWJseSBtZWFucyBJIHNob3VsZCBiZSBsZWFuaW5nIHRvd2FyZHMgdXNpbmcgYG92bF9jcmVhdGVfaW5kZXhgIGluc3RlYWQsIGdpdmVuIGl0cyBzY29wZS4gSGFuZyBvbiBhIHNlY29uZCwgdGhvdWdo4oCmIGBvdmxfY3JlYXRlX2luZGV4YCBpcyBhbHNvIGEgc3RhdGljIGZ1bmN0aW9uISBPa2F5LCB0aGF0IHRocm93cyBhIHdyZW5jaCBpbiBteSBpbml0aWFsIGFzc3VtcHRpb24uIEkgbmVlZCB0byBrZWVwIGxvb2tpbmcuXG5cbkxldCdzIHNoaWZ0IGdlYXJzIGFuZCBjaGVjayBvdGhlciByZWxldmFudCBmdW5jdGlvbnMuIFBlcmhhcHMgSSBjYW4gZmluZCB3aGF0IEknbSBsb29raW5nIGZvciBieSBleGFtaW5pbmcgYG92bF9jb3B5X3VwX3dvcmtkaXJgLCBgb3ZsX2NvcHlfdXBfbWV0YWRhdGFgLCBvciBtYXliZSB0aGUgY29yZSBgb3ZsX2RvX2NvcHlfdXBgIGZ1bmN0aW9uLiBBaCwgaGVyZSdzIGBvdmxfZG9fY29weV91cGAgYW5kLCB5ZXMsIGl0J3MgYWxzbyBzdGF0aWMuIEFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBiYXNlIGBvdmxfY29weV91cGAgZnVuY3Rpb24gaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODQ2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU0OjU0LjQzODUwNDEwOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg5NzU1NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm92bF9jb3B5X3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL292ZXJsYXlmcy9jb3B5X3VwLmM9MjQ1PXN0YXRpYyBpbnQgb3ZsX3N5bmNfZmlsZShjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aClcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMjU5LVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MjYwOnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfZmlsZShzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTI2MS1cXHRcXHRcXHQgICAgc3RydWN0IGZpbGUgKm5ld19maWxlLCBsb2ZmX3QgbGVuLFxcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz01MjI9c3RhdGljIGludCBvdmxfY3JlYXRlX2luZGV4KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU3Ny1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjU3ODpzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4IHtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU3OS1cXHRzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQ7XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU5NS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjU5NjpzdGF0aWMgaW50IG92bF9saW5rX3VwKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01OTcte1xcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02MzktXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo2NDA6c3RhdGljIGludCBvdmxfY29weV91cF9kYXRhKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMsIGNvbnN0IHN0cnVjdCBwYXRoICp0ZW1wKVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjQxLXtcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjUyLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NjUzOlxcdGVyciA9IG92bF9jb3B5X3VwX2ZpbGUob2ZzLCBjLVxcdTAwM2VkZW50cnksIG5ld19maWxlLCBjLVxcdTAwM2VzdGF0LnNpemUsXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NTQtXFx0XFx0XFx0ICAgICAgICFjLVxcdTAwM2VtZXRhZGF0YV9mc3luYyk7XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTY1OS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjY2MDpzdGF0aWMgaW50IG92bF9jb3B5X3VwX21ldGFkYXRhKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMsIHN0cnVjdCBkZW50cnkgKnRlbXApXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NjEte1xcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz03NTE9REVGSU5FX0NMQVNTKGNvcHlfdXBfY3JlZHMsIGNvbnN0IHN0cnVjdCBjcmVkICosXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc1OC0gKi9cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjc1OTpzdGF0aWMgaW50IG92bF9jb3B5X3VwX3dvcmtkaXIoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYylcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc2MC17XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc5MC1cXHRwYXRoLmRlbnRyeSA9IHRlbXA7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo3OTE6XFx0ZXJyID0gb3ZsX2NvcHlfdXBfZGF0YShjLCBcXHUwMDI2cGF0aCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy03OTItXFx0b3ZsX3N0YXJ0X3dyaXRlKGMtXFx1MDAzZWRlbnRyeSk7XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTgwNC1cXHQgKiBsb2NrIG9yZGVyaW5nIHdpdGggc2Jfd3JpdGVycywgd2hpY2ggc2hvdWxkbid0IGJlIGhlbGQgd2hlbiBjYWxsaW5nXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo4MDU6XFx0ICogb3ZsX2NvcHlfdXBfZGF0YSgpLCBzbyBsb2NrIHdvcmtkaXIgYW5kIGRlc3RkaXIgYW5kIG1ha2Ugc3VyZSB0aGF0XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MDYtXFx0ICogdGVtcCB3YXNuJ3QgbW92ZWQgYmVmb3JlIGNvcHkgdXAgY29tcGxldGlvbiBvciBjbGVhbnVwLlxcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjAtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo4MjE6XFx0ZXJyID0gb3ZsX2NvcHlfdXBfbWV0YWRhdGEoYywgdGVtcCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjItXFx0aWYgKCFlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg1Mi0vKiBDb3B5dXAgdXNpbmcgT19UTVBGSUxFIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgY3Jvc3MgZGlyIGxvY2tpbmcgKi9cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjg1MzpzdGF0aWMgaW50IG92bF9jb3B5X3VwX3RtcGZpbGUoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYylcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg1NC17XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg3NC1cXHRpZiAoIWMtXFx1MDAzZW1ldGFjb3B5IFxcdTAwMjZcXHUwMDI2IGMtXFx1MDAzZXN0YXQuc2l6ZSkge1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODc1OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwX2ZpbGUob2ZzLCBjLVxcdTAwM2VkZW50cnksIHRtcGZpbGUsIGMtXFx1MDAzZXN0YXQuc2l6ZSxcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg3Ni1cXHRcXHRcXHRcXHQgICAgICAgIWMtXFx1MDAzZW1ldGFkYXRhX2ZzeW5jKTtcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODgyLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODgzOlxcdGVyciA9IG92bF9jb3B5X3VwX21ldGFkYXRhKGMsIHRlbXApO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODg0LVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTkzMi0gKi9cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjkzMzpzdGF0aWMgaW50IG92bF9kb19jb3B5X3VwKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05MzQte1xcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05NzUtXFx0XFx0LypcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjk3NjpcXHRcXHQgKiBjLVxcdTAwM2VkZW50cnktXFx1MDAzZWRfbmFtZSBpcyBzdGFiaWx6ZWQgYnkgb3ZsX2NvcHlfdXBfc3RhcnQoKSxcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk3Ny1cXHRcXHQgKiBiZWNhdXNlIGlmIHdlIGdvdCBoZXJlLCBpdCBtZWFucyB0aGF0IGMtXFx1MDAzZWRlbnRyeSBoYXMgbm8gdXBwZXJcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk3OC1cXHRcXHQgKiBhbGlhcyBhbmQgY2hhbmdpbmcgLVxcdTAwM2VkX25hbWUgbWVhbnMgZ29pbmcgdGhyb3VnaCBvdmxfcmVuYW1lKClcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjk3OTpcXHRcXHQgKiB0aGF0IHdpbGwgY2FsbCBvdmxfY29weV91cCgpIG9uIHNvdXJjZSBhbmQgdGFyZ2V0IGRlbnRyeS5cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk4MC1cXHRcXHQgKi9cXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtOTk0LVxcdGlmIChTX0lTUkVHKGMtXFx1MDAzZXN0YXQubW9kZSkgXFx1MDAyNlxcdTAwMjYgb2ZzLVxcdTAwM2V0bXBmaWxlKVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6OTk1OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwX3RtcGZpbGUoYyk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05OTYtXFx0ZWxzZVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6OTk3OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwX3dvcmtkaXIoYyk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05OTgtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9MTA1OT1zdGF0aWMgc3NpemVfdCBvdmxfZ2V0eGF0dHJfdmFsdWUoY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIGNoYXIgKm5hbWUsIGNoYXIgKip2YWx1ZSlcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTA4Mi0vKiBDb3B5IHVwIGRhdGEgb2YgYW4gaW5vZGUgd2hpY2ggd2FzIGNvcGllZCB1cCBtZXRhZGF0YSBvbmx5IGluIHRoZSBwYXN0LiAqL1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTA4MzpzdGF0aWMgaW50IG92bF9jb3B5X3VwX21ldGFfaW5vZGVfZGF0YShzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTA4NC17XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExMDEtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMTAyOlxcdGVyciA9IG92bF9jb3B5X3VwX2RhdGEoYywgXFx1MDAyNnVwcGVycGF0aCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMTAzLVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExMzEtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMTMyOnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfb25lKHN0cnVjdCBkZW50cnkgKnBhcmVudCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTEzMy1cXHRcXHRcXHQgICBpbnQgZmxhZ3MpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExMzctXFx0c3RydWN0IHBhdGggcGFyZW50cGF0aDtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjExMzg6XFx0c3RydWN0IG92bF9jb3B5X3VwX2N0eCBjdHggPSB7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMTM5LVxcdFxcdC5wYXJlbnQgPSBwYXJlbnQsXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExOTAtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMTkxOlxcdGVyciA9IG92bF9jb3B5X3VwX3N0YXJ0KGRlbnRyeSwgZmxhZ3MpO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTE5Mi1cXHQvKiBlcnIgXFx1MDAzYyAwOiBpbnRlcnJ1cHRlZCwgZXJyIFxcdTAwM2UgMDogcmFjZWQgd2l0aCBhbm90aGVyIGNvcHktdXAgKi9cXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTIwMS1cXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBvdmxfZGVudHJ5X25lZWRzX2RhdGFfY29weV91cF9sb2NrZWQoZGVudHJ5LCBmbGFncykpXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjAyOlxcdFxcdFxcdGVyciA9IG92bF9jb3B5X3VwX21ldGFfaW5vZGVfZGF0YShcXHUwMDI2Y3R4KTtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyMDM6XFx0XFx0b3ZsX2NvcHlfdXBfZW5kKGRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjA0LVxcdH1cXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTIwOS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyMTA6c3RhdGljIGludCBvdmxfY29weV91cF9mbGFncyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncylcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyMTEte1xcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjUxLVxcdFxcdHdpdGhfb3ZsX2NyZWRzKGRlbnRyeS1cXHUwMDNlZF9zYilcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyNTI6XFx0XFx0XFx0ZXJyID0gb3ZsX2NvcHlfdXBfb25lKHBhcmVudCwgbmV4dCwgZmxhZ3MpO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI1My1cXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9MTI3Nj1pbnQgb3ZsX21heWJlX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyODAtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjgxOlxcdHJldHVybiBvdmxfY29weV91cF9mbGFncyhkZW50cnksIGZsYWdzKTtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyODItfVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI4My1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyODQ6aW50IG92bF9jb3B5X3VwX3dpdGhfZGF0YShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjg1LXtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyODY6XFx0cmV0dXJuIG92bF9jb3B5X3VwX2ZsYWdzKGRlbnRyeSwgT19XUk9OTFkpO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI4Ny19XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjg4LVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTI4OTppbnQgb3ZsX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI5MC17XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjkxOlxcdHJldHVybiBvdmxfY29weV91cF9mbGFncyhkZW50cnksIDApO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI5Mi19XFxuLS1cXG5mcy9vdmVybGF5ZnMvZGlyLmM9NjkxPXN0YXRpYyBpbnQgb3ZsX2NyZWF0ZV9vYmplY3Qoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYy03MDAtXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjcwMTpcXHRlcnIgPSBvdmxfY29weV91cChkZW50cnktXFx1MDAzZWRfcGFyZW50KTtcXG5mcy9vdmVybGF5ZnMvZGlyLmMtNzAyLVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvZGlyLmM9NzY3PXN0YXRpYyBpbnQgb3ZsX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkLCBzdHJ1Y3QgaW5vZGUgKm5ld2RpcixcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYy03NzItXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjc3MzpcXHRlcnIgPSBvdmxfY29weV91cChvbGQpO1xcbmZzL292ZXJsYXlmcy9kaXIuYy03NzQtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYy03NzYtXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjc3NzpcXHRlcnIgPSBvdmxfY29weV91cChuZXctXFx1MDAzZWRfcGFyZW50KTtcXG5mcy9vdmVybGF5ZnMvZGlyLmMtNzc4LVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvZGlyLmM9OTM2PXN0YXRpYyBpbnQgb3ZsX2RvX3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGJvb2wgaXNfZGlyKVxcbi0tXFxuZnMvb3ZlcmxheWZzL2Rpci5jLTk0OC1cXG5mcy9vdmVybGF5ZnMvZGlyLmM6OTQ5OlxcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeS1cXHUwMDNlZF9wYXJlbnQpO1xcbmZzL292ZXJsYXlmcy9kaXIuYy05NTAtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYz0xMTM0PXN0YXRpYyBpbnQgb3ZsX3JlbmFtZV9zdGFydChzdHJ1Y3Qgb3ZsX3JlbmFtZWRhdGEgKm92bHJkLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KVxcbi0tXFxuZnMvb3ZlcmxheWZzL2Rpci5jLTExNzQtXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjExNzU6XFx0ZXJyID0gb3ZsX2NvcHlfdXAob2xkKTtcXG5mcy9vdmVybGF5ZnMvZGlyLmMtMTE3Ni1cXHRpZiAoZXJyKVxcbi0tXFxuZnMvb3ZlcmxheWZzL2Rpci5jLTExNzgtXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjExNzk6XFx0ZXJyID0gb3ZsX2NvcHlfdXAobmV3LVxcdTAwM2VkX3BhcmVudCk7XFxuZnMvb3ZlcmxheWZzL2Rpci5jLTExODAtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYy0xMTgzLVxcdGlmICghb3ZscmQtXFx1MDAzZW92ZXJ3cml0ZSkge1xcbmZzL292ZXJsYXlmcy9kaXIuYzoxMTg0OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwKG5ldyk7XFxuZnMvb3ZlcmxheWZzL2Rpci5jLTExODUtXFx0XFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYz0xNDIzPXN0YXRpYyBpbnQgb3ZsX3RtcGZpbGUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxcbi0tXFxuZnMvb3ZlcmxheWZzL2Rpci5jLTE0MzItXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjE0MzM6XFx0ZXJyID0gb3ZsX2NvcHlfdXAoZGVudHJ5LVxcdTAwM2VkX3BhcmVudCk7XFxuZnMvb3ZlcmxheWZzL2Rpci5jLTE0MzQtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9leHBvcnQuYz0xOT1zdGF0aWMgaW50IG92bF9lbmNvZGVfbWF5YmVfY29weV91cChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuLS1cXG5mcy9vdmVybGF5ZnMvZXhwb3J0LmMtMjUtXFxuZnMvb3ZlcmxheWZzL2V4cG9ydC5jOjI2OlxcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL2V4cG9ydC5jLTI3LVxcdGlmIChlcnIpIHtcXG4tLVxcbmZzL292ZXJsYXlmcy9pbm9kZS5jPTIxPWludCBvdmxfc2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuZnMvb3ZlcmxheWZzL2lub2RlLmMtNDYtXFx0aWYgKCFmdWxsX2NvcHlfdXApXFxuZnMvb3ZlcmxheWZzL2lub2RlLmM6NDc6XFx0XFx0ZXJyID0gb3ZsX2NvcHlfdXAoZGVudHJ5KTtcXG5mcy9vdmVybGF5ZnMvaW5vZGUuYy00OC1cXHRlbHNlXFxuZnMvb3ZlcmxheWZzL2lub2RlLmM6NDk6XFx0XFx0ZXJyID0gb3ZsX2NvcHlfdXBfd2l0aF9kYXRhKGRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL2lub2RlLmMtNTAtXFx0aWYgKCFlcnIpIHtcXG4tLVxcbmZzL292ZXJsYXlmcy9pbm9kZS5jPTQ4NT1zdGF0aWMgaW50IG92bF9zZXRfb3JfcmVtb3ZlX2FjbChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9vdmVybGF5ZnMvaW5vZGUuYy01MTMtXFx0aWYgKCF1cHBlcmRlbnRyeSkge1xcbmZzL292ZXJsYXlmcy9pbm9kZS5jOjUxNDpcXHRcXHRlcnIgPSBvdmxfY29weV91cChkZW50cnkpO1xcbmZzL292ZXJsYXlmcy9pbm9kZS5jLTUxNS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZnMvb3ZlcmxheWZzL2lub2RlLmM9NjUzPWludCBvdmxfZmlsZWF0dHJfc2V0KHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbi0tXFxuZnMvb3ZlcmxheWZzL2lub2RlLmMtNjYwLVxcbmZzL292ZXJsYXlmcy9pbm9kZS5jOjY2MTpcXHRlcnIgPSBvdmxfY29weV91cChkZW50cnkpO1xcbmZzL292ZXJsYXlmcy9pbm9kZS5jLTY2Mi1cXHRpZiAoIWVycikge1xcbi0tXFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oPTUzOD1zdHJ1Y3QgZmlsZSAqb3ZsX3BhdGhfb3Blbihjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwgaW50IGZsYWdzKTtcXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NTM5OmludCBvdmxfY29weV91cF9zdGFydChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncyk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjU0MDp2b2lkIG92bF9jb3B5X3VwX2VuZChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpO1xcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaC01NDEtYm9vbCBvdmxfYWxyZWFkeV9jb3BpZWRfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpO1xcbi0tXFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oPTkyMT12b2lkIG92bF9maWxlX2ZyZWUoc3RydWN0IG92bF9maWxlICpvZik7XFxuLS1cXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtOTIzLS8qIGNvcHlfdXAuYyAqL1xcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo5MjQ6aW50IG92bF9jb3B5X3VwKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjkyNTppbnQgb3ZsX2NvcHlfdXBfd2l0aF9kYXRhKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oLTkyNi1pbnQgb3ZsX21heWJlX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpO1xcbi0tXFxuZnMvb3ZlcmxheWZzL3V0aWwuYz01MzQ9Ym9vbCBvdmxfaGFzX3VwcGVyZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvb3ZlcmxheWZzL3V0aWwuYy01NDItXFx0ICogUGFpcnMgd2l0aCBzbXBfd21iKCkgaW4gb3ZsX3NldF91cHBlcmRhdGEoKS4gTWFpbiB1c2VyIG9mXFxuZnMvb3ZlcmxheWZzL3V0aWwuYzo1NDM6XFx0ICogb3ZsX2hhc191cHBlcmRhdGEoKSBpcyBvdmxfY29weV91cF9tZXRhX2lub2RlX2RhdGEoKS4gTWFrZSBzdXJlXFxuZnMvb3ZlcmxheWZzL3V0aWwuYy01NDQtXFx0ICogaWYgc2V0dGluZyBvZiBPVkxfVVBQRVJEQVRBIGlzIHZpc2libGUsIHRoZW4gZWZmZWN0cyBvZiB3cml0ZXNcXG4tLVxcbmZzL292ZXJsYXlmcy91dGlsLmM9NzAxPWJvb2wgb3ZsX2FscmVhZHlfY29waWVkX3VwKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IGZsYWdzKVxcbi0tXFxuZnMvb3ZlcmxheWZzL3V0aWwuYy03MjktICovXFxuZnMvb3ZlcmxheWZzL3V0aWwuYzo3MzA6aW50IG92bF9jb3B5X3VwX3N0YXJ0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IGZsYWdzKVxcbmZzL292ZXJsYXlmcy91dGlsLmMtNzMxLXtcXG4tLVxcbmZzL292ZXJsYXlmcy91dGlsLmMtNzUyLVxcbmZzL292ZXJsYXlmcy91dGlsLmM6NzUzOnZvaWQgb3ZsX2NvcHlfdXBfZW5kKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTc1NC17XFxuLS1cXG5mcy9vdmVybGF5ZnMvdXRpbC5jPTExNDU9aW50IG92bF9ubGlua19zdGFydChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuLS1cXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTExNjQtXFx0ICogVE9ETzogaW1wbGVtZW50IG1ldGFkYXRhIG9ubHkgaW5kZXggY29weSB1cCB3aGVuIGNhbGxlZCB3aXRoXFxuZnMvb3ZlcmxheWZzL3V0aWwuYzoxMTY1OlxcdCAqICAgICAgIG92bF9jb3B5X3VwX2ZsYWdzKGRlbnRyeSwgT19QQVRIKS5cXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTExNjYtXFx0ICovXFxuZnMvb3ZlcmxheWZzL3V0aWwuYy0xMTY3LVxcdGlmIChvdmxfbmVlZF9pbmRleChkZW50cnkpIFxcdTAwMjZcXHUwMDI2ICFvdmxfZGVudHJ5X2hhc191cHBlcl9hbGlhcyhkZW50cnkpKSB7XFxuZnMvb3ZlcmxheWZzL3V0aWwuYzoxMTY4OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL3V0aWwuYy0xMTY5LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMveGF0dHJzLmM9MzY9c3RhdGljIGludCBvdmxfeGF0dHJfc2V0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlub2RlICppbm9kZSwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmZzL292ZXJsYXlmcy94YXR0cnMuYy01My1cXHRpZiAoIXVwcGVyZGVudHJ5KSB7XFxuZnMvb3ZlcmxheWZzL3hhdHRycy5jOjU0OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL3hhdHRycy5jLTU1LVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU0OjU2LjEyODI2OTAyM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMTc1NjkxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE92ZXJsYXlGUyBGdW5jdGlvbiBFeHBvcnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucyBhbmQgaW1tZWRpYXRlbHkgbXkgYnJhaW4gaG9uZXMgaW4gb24gYG92bF9zZXRfb3JpZ2luX2ZoYCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAuIEkgbm90aWNlIHRoYXQgdGhlc2UgYXJlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBiZWluZyBhbHRlcmVkLiBOb3csIGEgcXVpY2sgY2hlY2sgb2YgdGhlIGluY2x1ZGVzIHJldmVhbHMgdGhhdCBib3RoIGFyZSBleHBvcnRlZCBpbiBgZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oYC4gQWhhLCBzbyB0aGV5J3JlIGRlc2lnbmVkIGZvciBleHRlcm5hbCB1c2UuIEkgc2VlIHRob3NlIGFyZSB1c2VkIGluIGBmcy9vdmVybGF5ZnMvY29weV91cC5jYCBhbmQgYGZzL292ZXJsYXlmcy9uYW1laS5jYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhleSBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBmdW5jdGlvbmFsaXR5IHRoYXQgbmVlZHMgdG8gaW50ZXJmYWNlIHdpdGggdGhlIGZpbGVzeXN0ZW0uXG5cbmBvdmxfc2V0X3VwcGVyX2ZoYCwgb24gdGhlIG90aGVyIGhhbmQsIGlzIHN0YXRpYywgd2hpY2ggbGltaXRzIGl0cyBzY29wZSwgYW5kIHRoZXJlZm9yZSBpdHMgcmVsZXZhbmNlIHRvIHRoaXMgd2lkZXIgaW52ZXN0aWdhdGlvbi5cblxuTm93LCBhcmUgdGhlc2UgZ29vZCBmb2N1cyBzeW1ib2xzPyBZZWFoLCB0aGV5IHNlZW0gZGVjZW50LiBUaGV5J3JlIHNwZWNpZmljIHRvIGluZGV4L2ZoIGhhbmRsaW5nIHdpdGhpbiBvdmVybGF5ZnMsIHNvIHRoZXkncmUgZm9jdXNlZCBlbm91Z2ggYW5kIG5vdCBzb21lIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGEgbWVzcyB0byB0cmFjZS5cblxuTmV4dCBzdGVwOiBDb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gV2hhdCBgQ09ORklHYCBvcHRpb25zIGFyZSByZWxldmFudD8gV2VsbCwgb2J2aW91c2x5LCBgQ09ORklHX09WRVJMQVlfRlNgIGlzIHRoZSBiaWcgb25lLCB0aGUgYmFzZS4gQnV0IGdpdmVuIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGRlYWwgd2l0aCBpbmRleGluZywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYENPTkZJR19PVkVSTEFZX0ZTX0lOREVYYC4gSSdsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBgZnMvb3ZlcmxheWZzYCBkaXJlY3RvcnkganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA3NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwOTo1NTowMi4xNDU4NDE0NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjgyODk3NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiT1ZFUkxBWV9GU19JTkRFWFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL292ZXJsYXlmcy5yc3Q9NjQxPUVuYWJsZWQgd2l0aCB0aGUgbW91bnQgb3B0aW9uIG9yIG1vZHVsZSBvcHRpb24gXFxcImluZGV4PW9uXFxcIiBvciB3aXRoIHRoZVxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvb3ZlcmxheWZzLnJzdDo2NDI6a2VybmVsIGNvbmZpZyBvcHRpb24gQ09ORklHX09WRVJMQVlfRlNfSU5ERVg9eS5cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL292ZXJsYXlmcy5yc3QtNjQzLVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz05ODI9Q09ORklHX09WRVJMQVlfRlM9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6OTgzOkNPTkZJR19PVkVSTEFZX0ZTX0lOREVYPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTk4NC1DT05GSUdfT1ZFUkxBWV9GU19YSU5PX0FVVE89eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xMDEzPUNPTkZJR19PVkVSTEFZX0ZTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjEwMTQ6Q09ORklHX09WRVJMQVlfRlNfSU5ERVg9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTAxNS1DT05GSUdfT1ZFUkxBWV9GU19YSU5PX0FVVE89eVxcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWc9MzE9Y29uZmlnIE9WRVJMQVlfRlNfUkVESVJFQ1RfQUxXQVlTX0ZPTExPV1xcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWctNDUtXFxuZnMvb3ZlcmxheWZzL0tjb25maWc6NDY6Y29uZmlnIE9WRVJMQVlfRlNfSU5ERVhcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy00Ny1cXHRib29sIFxcXCJPdmVybGF5ZnM6IHR1cm4gb24gaW5vZGVzIGluZGV4IGZlYXR1cmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnPTY1PWNvbmZpZyBPVkVSTEFZX0ZTX05GU19FWFBPUlRcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTY3LVxcdGRlcGVuZHMgb24gT1ZFUkxBWV9GU1xcbmZzL292ZXJsYXlmcy9LY29uZmlnOjY4OlxcdGRlcGVuZHMgb24gT1ZFUkxBWV9GU19JTkRFWFxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTY5LVxcdGRlcGVuZHMgb24gIU9WRVJMQVlfRlNfTUVUQUNPUFlcXG4tLVxcbmZzL292ZXJsYXlmcy9wYXJhbXMuYz0yOD1NT0RVTEVfUEFSTV9ERVNDKHhpbm9fYXV0byxcXG4tLVxcbmZzL292ZXJsYXlmcy9wYXJhbXMuYy0zMC1cXG5mcy9vdmVybGF5ZnMvcGFyYW1zLmM6MzE6c3RhdGljIGJvb2wgb3ZsX2luZGV4X2RlZiA9IElTX0VOQUJMRUQoQ09ORklHX09WRVJMQVlfRlNfSU5ERVgpO1xcbmZzL292ZXJsYXlmcy9wYXJhbXMuYy0zMi1tb2R1bGVfcGFyYW1fbmFtZWQoaW5kZXgsIG92bF9pbmRleF9kZWYsIGJvb2wsIDA2NDQpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb249MTY4PUNPTkZJR19PU0ZfUEFSVElUSU9OPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjoxNjk6Q09ORklHX09WRVJMQVlfRlNfSU5ERVg9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTE3MC1DT05GSUdfT1ZFUkxBWV9GU19NRVRBQ09QWT15XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU1OjAzLjc3NDEzNzQzOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzkyNzUwMzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgT3ZlcmxheUZTIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGluaXRpYWxseSwgYWRkaW5nIGBDT05GSUdfT1ZFUkxBWV9GU19JTkRFWGAgYW5kIGBDT05GSUdfT1ZFUkxBWV9GU2AgbG9va3MgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgYG92bF9zZXRfb3JpZ2luX2ZoYCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgZnVuY3Rpb25zLCBhbmQgbWFrZSBzdXJlIEkgZGlkbid0IG1pc3MgYW55IG90aGVycy4gSG1tbS4uLiB0aGlua2luZyBhYm91dCBpdCwgYENPTkZJR19PVkVSTEFZX0ZTX05GU19FWFBPUlRgIGlzIHByb2JhYmx5IHJlbGV2YW50IHRvbywgc2luY2UgSSByZWNhbGwgdGhhdCBgb3ZsX2dldF9pbmRleF9maGAgaXMgdXNlZCB3aGVuIGV4cG9ydGluZyBvdmVyIE5GUy4gQWxyaWdodCwgbGV0J3MgaW5jbHVkZSBgT1ZFUkxBWV9GU2AsIGBPVkVSTEFZX0ZTX0lOREVYYCwgYW5kIGBPVkVSTEFZX0ZTX05GU19FWFBPUlRgIGluIHRoZSBjb25maWd1cmF0aW9uLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgcmVhc29uaW5nIGNvcnJlY3QuIFRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHdoZW4gdGhlIGZpbGUgaGFuZGxlLCBgZmhgLCBpcyBOVUxMLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgZHVyaW5nIG92ZXJsYXlmcyBvcGVyYXRpb25zIGxpa2UgY29weS11cCBhbmQgaW5kZXggY3JlYXRpb24uIEl0IGRlZmluaXRlbHkgc291bmRzIGxpa2UgdGhlIGNoYW5nZXMgaGF2ZSBhIHBvdGVudGlhbCBmdW5jdGlvbmFsIGltcGFjdCBhbmQgYXJlIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGUgYG92bF9zZXRfb3JpZ2luX2ZoYCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgc3ltYm9scywgb2YgY291cnNlLlxuXG5PaCwgd2FpdCwgbGV0IG1lIHF1aWNrbHkgZG91YmxlIGNoZWNrIHNvbWV0aGluZy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBgb3ZsX3NldF91cHBlcl9maGAgaW4gdGhlIFwiRm9jdXNTeW1ib2xzXCIuIFllcCwgaXQncyBzdGF0aWMgd2l0aGluIGBmcy9vdmVybGF5ZnMvY29weV91cC5jYCwgc28gSSdsbCBsZWF2ZSBpdCBvdXQuXG5cbkFscmlnaHQsIHRoYXQgY292ZXJzIGl0LiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MzY5LCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwOTo1NToxMS41NjY4OTA4MjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTc5NTcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1ZFUkxBWV9GU1wiLFxuICAgIFwiT1ZFUkxBWV9GU19JTkRFWFwiLFxuICAgIFwiT1ZFUkxBWV9GU19ORlNfRVhQT1JUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwib3ZsX3NldF9vcmlnaW5fZmhcIixcbiAgICBcIm92bF9nZXRfaW5kZXhfbmFtZV9maFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHdoZW4gYGZoYCBpcyBOVUxMLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgb3ZlcmxheWZzIG9wZXJhdGlvbnMgbGlrZSBjb3B5LXVwIGFuZCBpbmRleCBjcmVhdGlvbi4gVGhlIGNoYW5nZXMgaGF2ZSBmdW5jdGlvbmFsIGltcGFjdCBhbmQgYXJlIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1ZFUkxBWV9GU1wiLFxuICAgIFwiT1ZFUkxBWV9GU19JTkRFWFwiLFxuICAgIFwiT1ZFUkxBWV9GU19ORlNfRVhQT1JUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwib3ZsX3NldF9vcmlnaW5fZmhcIixcbiAgICBcIm92bF9nZXRfaW5kZXhfbmFtZV9maFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHdoZW4gYGZoYCBpcyBOVUxMLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgb3ZlcmxheWZzIG9wZXJhdGlvbnMgbGlrZSBjb3B5LXVwIGFuZCBpbmRleCBjcmVhdGlvbi4gVGhlIGNoYW5nZXMgaGF2ZSBmdW5jdGlvbmFsIGltcGFjdCBhbmQgYXJlIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU1OjExLjY0ODY5MzExOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMjkzNjQ3MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwOTo1NToxMS42NDkyNjUwODlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTEwMjg3ODgzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ5IGFkZGluZyBjaGVja3MgZm9yIGBmaCAhPSBOVUxMYCBiZWZvcmUgYWNjZXNzaW5nIGBmaC1cXHUwMDNlYnVmYCBhbmQgYGZoLVxcdTAwM2VmYi5sZW5gLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGV4ZWN1dGlvbiAocGFnZSBmYXVsdHMpIG9yIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzc0NjFkNmFiMmEwMGU2M2I5YTE3NmYyM2NjNDgyYmU0MjAwZWViNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDA5OjU0OjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL2NvcHlfdXAuYyBiL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmNcbmluZGV4IGU5NjM3MDFiNGM4NzcuLmNiNjYxOWI1ZjNlZTEgMTAwNjQ0XG4tLS0gYS9mcy9vdmVybGF5ZnMvY29weV91cC5jXG4rKysgYi9mcy9vdmVybGF5ZnMvY29weV91cC5jXG5AQCAtNDkxLDcgKzQ5MSw3IEBAIGludCBvdmxfc2V0X29yaWdpbl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLFxuIFx0LypcbiBcdCAqIERvIG5vdCBmYWlsIHdoZW4gdXBwZXIgZG9lc24ndCBzdXBwb3J0IHhhdHRycy5cbiBcdCAqL1xuLVx0ZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoLVx1MDAzZWJ1ZixcbitcdGVyciA9IG92bF9jaGVja19zZXR4YXR0cihvZnMsIHVwcGVyLCBPVkxfWEFUVFJfT1JJR0lOLCBmaCA/IGZoLVx1MDAzZWJ1ZiA6IE5VTEwsXG4gXHRcdFx0XHQgZmggPyBmaC1cdTAwM2VmYi5sZW4gOiAwLCAwKTtcbiBcbiBcdC8qIElnbm9yZSAtRVBFUk0gZnJvbSBzZXR0aW5nIFwidXNlci4qXCIgb24gc3ltbGluay9zcGVjaWFsICovXG5AQCAtNTA5LDcgKzUwOSw4IEBAIHN0YXRpYyBpbnQgb3ZsX3NldF91cHBlcl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLFxuIFx0aWYgKElTX0VSUihmaCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGZoKTtcbiBcbi1cdGVyciA9IG92bF9zZXR4YXR0cihvZnMsIGluZGV4LCBPVkxfWEFUVFJfVVBQRVIsIGZoLVx1MDAzZWJ1ZiwgZmgtXHUwMDNlZmIubGVuKTtcbitcdGVyciA9IG92bF9zZXR4YXR0cihvZnMsIGluZGV4LCBPVkxfWEFUVFJfVVBQRVIsXG4rXHRcdGZoID8gZmgtXHUwMDNlYnVmIDogTlVMTCwgZmggPyBmaC1cdTAwM2VmYi5sZW4gOiAwKTtcbiBcbiBcdGtmcmVlKGZoKTtcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL25hbWVpLmMgYi9mcy9vdmVybGF5ZnMvbmFtZWkuY1xuaW5kZXggY2E4OTlmZGZhYWZkMi4uNGFlMjZjODIwYjU4NyAxMDA2NDRcbi0tLSBhL2ZzL292ZXJsYXlmcy9uYW1laS5jXG4rKysgYi9mcy9vdmVybGF5ZnMvbmFtZWkuY1xuQEAgLTczNywxMiArNzM3LDE0IEBAIGludCBvdmxfdmVyaWZ5X2luZGV4KHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqaW5kZXgpXG4gaW50IG92bF9nZXRfaW5kZXhfbmFtZV9maChjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCwgc3RydWN0IHFzdHIgKm5hbWUpXG4ge1xuIFx0Y2hhciAqbiwgKnM7XG4rXHRzaXplX3QgbGVuID0gZmggPyBmaC1cdTAwM2VmYi5sZW4gOiAxO1xuK1x0Y29uc3QgY2hhciAqYnVmID0gZmggPyBmaC1cdTAwM2VidWYgOiAoY29uc3QgdTggKilcIlwiO1xuIFxuLVx0biA9IGtjYWxsb2MoZmgtXHUwMDNlZmIubGVuLCAyLCBHRlBfS0VSTkVMKTtcbitcdG4gPSBrY2FsbG9jKGxlbiwgMiwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIW4pXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0cyAgPSBiaW4yaGV4KG4sIGZoLVx1MDAzZWJ1ZiwgZmgtXHUwMDNlZmIubGVuKTtcbitcdHMgID0gYmluMmhleChuLCBidWYsIGxlbik7XG4gXHQqbmFtZSA9IChzdHJ1Y3QgcXN0cikgUVNUUl9JTklUKG4sIHMgLSBuKTtcbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDk6NTU6MTEuNjQ5MjY3MjY5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDI4NzYyNjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIFJlYXNvbmluZzogT3ZlcmxheUZTIE5VTEwgUG9pbnRlciBEZXJlZmVyZW5jZSBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZnMvb3ZlcmxheWZzL2NvcHlfdXAuY2AgYW5kIGBmcy9vdmVybGF5ZnMvbmFtZWkuY2AuIEl0J3MgYWxsIGFib3V0IGFkZGluZyBOVUxMIGNoZWNrcyBmb3IgdGhlIGBmaGAgcG9pbnRlciwgd2hpY2ggaXMgYSBgc3RydWN0IG92bF9maGAuIFJpZ2h0LCBtYWtlcyBzZW5zZS5cblxuSW4gYG92bF9zZXRfb3JpZ2luX2ZoYCBhbmQgYG92bF9zZXRfdXBwZXJfZmhgLCB0aGV5J3ZlIGFkZGVkIGNvbmRpdGlvbmFsIGNoZWNrcyBsaWtlIGBmaCA/IGZoLVx1MDAzZWJ1ZiA6IE5VTExgIGFuZCBgZmggPyBmaC1cdTAwM2VmYi5sZW4gOiAwYC4gR29vZCwgdGhpcyBwcmV2ZW50cyB0aGUgZHJlYWRlZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFNhbWUgZ29lcyBmb3IgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAuIEluaXRpYWxseSwgdGhlcmUgd2FzIGEgZGlyZWN0IGRlcmVmZXJlbmNlIG9mIGBmaGAgdG8gYWNjZXNzIGAuZmIubGVuYCBhbmQgYC5idWZgLiBOb3csIHRoZXJlJ3MgYSBjb25kaXRpb25hbCBjaGVjayBiZWZvcmUgYWNjZXNzaW5nIHRoZW0uXG5cblNwZWNpZmljYWxseSBpbiBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCwgaWYgYGZoYCBpcyBOVUxMLCBpdCdzIGFsbG9jYXRpbmcgMiBieXRlcywgYW5kIHRoZW4gdXNlcyBhIGBiaW4yaGV4YCBjYWxsIHdpdGggYGJ1ZiA9IFwiXCJgIChlbXB0eSBzdHJpbmcpIGFuZCBgbGVuID0gMWAuIEhhbmcgb24uLi50aGUgZW1wdHkgc3RyaW5nIGBcIlwiYCAqaXMqIGEgMS1ieXRlIHN0cmluZyBjb250YWluaW5nIGp1c3QgYSBudWxsIHRlcm1pbmF0b3IsIHNvIHRoZSBjYWxsIHRvIGBiaW4yaGV4YCB3aWxsIHJlYWQgdGhhdCBvbmUgbnVsbCBieXRlIGFuZCB3cml0ZSB0byB0aGUgYWxsb2NhdGVkIHR3byBieXRlcy4gUGVyZmVjdGx5IHZhbGlkIG1lbW9yeSBhY2Nlc3MgYW5kIGluaXRpYWxpemF0aW9uLCByZWFsbHkuIEl0IHdpbGwgd3JpdGUgdHdvIGJ5dGVzLCB3aXRoIHRoZSBmaXJzdCBieXRlIGJlaW5nIHplcm8uIE5vIGlzc3VlcyB0aGVyZS5cblxuU28sIHRoZSB3aG9sZSBwb2ludCBpcyBwcmV2ZW50aW5nIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMuIEtBU0FOIHdvdWxkIHBpY2sgdGhhdCB1cCwgYnV0IHN0YW5kYXJkIGtlcm5lbCBleGVjdXRpb24gKHBhZ2UgZmF1bHRzKSB3b3VsZCBkbyBpdCB0b28uIFRoZXJlJ3Mgbm8gaW50cm9kdWN0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIHdpdGggdGhlc2UgY2hhbmdlcy4gVGhlIHBhdGNoIGFkZHMgb25seSBgaWYgKGZoKSAuLi5gIHRvIGVuc3VyZSBgZmhgIGlzIG5vdCBudWxsLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBpcyAqYW55KiB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrIGluIHRoaXMgcGF0Y2guLi4gdGhlIGBmaGAgaXMgYSBwb2ludGVyIHRvIGBzdHJ1Y3Qgb3ZsX2ZoYC4gSWYgaXQncyBOVUxMLCB3ZSB1c2UgTlVMTC8wLCBvciBcIlwiLzEuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGludm9sdmVkLiBUaGlzIGlzIHB1cmVseSBhYm91dCBhdm9pZGluZyB0aGUgZGVyZWZlcmVuY2UuIFRoZSBidWcgaXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuXG5cblNvLCBJIHRoaW5rIEkgaGF2ZSBpdDogKipLTVNBTiBpcyBub3QgbmVlZGVkIGhlcmUuKiogVGhlIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggaXMgcmVsaWFibHkgY2F1Z2h0IGJ5IGV4aXN0aW5nIG1lY2hhbmlzbXMuIEl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIG5vciBkb2VzIGl0IHRvdWNoIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgbWlnaHQgaGFyYm9yIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGVyZSdzIG5vdGhpbmcgaGVyZSB0aGF0IHdhcnJhbnRzIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIHBhdGNoIGlzIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTMxLCJPdXRwdXRUb2tlbnMiOjExNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU1OjIyLjY3ODAzMzAwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGNoZWNrcyBmb3IgYGZoICE9IE5VTExgIGJlZm9yZSBhY2Nlc3NpbmcgYGZoLVxcdTAwM2VidWZgIGFuZCBgZmgtXFx1MDAzZWZiLmxlbmAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgZXhlY3V0aW9uIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBieSBhZGRpbmcgY2hlY2tzIGZvciBgZmggIT0gTlVMTGAgYmVmb3JlIGFjY2Vzc2luZyBgZmgtXFx1MDAzZWJ1ZmAgYW5kIGBmaC1cXHUwMDNlZmIubGVuYC4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBleGVjdXRpb24gKHBhZ2UgZmF1bHRzKSBvciBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7tdm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-24 09:53:19 +0000 UTC FinishedAt: 2026-08-24 09:55:24 +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": "4352b8aee98005853aa63f57d6377282de17a33f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OVERLAY_FS", "OVERLAY_FS_INDEX", "OVERLAY_FS_NFS_EXPORT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4352b8aee98005853aa63f57d6377282de17a33f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OVERLAY_FS", "OVERLAY_FS_INDEX", "OVERLAY_FS_NFS_EXPORT" ], "series_id": "942a680d-224a-4c12-b7a8-17ef4e85e0ff" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ovl_set_origin_fh", "ovl_get_index_name_fh" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI0IDA5OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09WRVJMQVlfRlMmIzM0OywKICAgICYjMzQ7T1ZFUkxBWV9GU19JTkRFWCYjMzQ7LAogICAgJiMzNDtPVkVSTEFZX0ZTX05GU19FWFBPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdmxfc2V0X29yaWdpbl9maCYjMzQ7LAogICAgJiMzNDtvdmxfZ2V0X2luZGV4X25hbWVfZmgmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBieSBhZGRpbmcgY2hlY2tzIGZvciBgZmggIT0gTlVMTGAgYmVmb3JlIGFjY2Vzc2luZyBgZmgtXHUwMDNlYnVmYCBhbmQgYGZoLVx1MDAzZWZiLmxlbmAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgZXhlY3V0aW9uIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgaW4gYG92bF9zZXRfb3JpZ2luX2ZoYCwgYG92bF9zZXRfdXBwZXJfZmhgLCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgd2hlbiBgZmhgIGlzIE5VTEwuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBvdmVybGF5ZnMgb3BlcmF0aW9ucyBsaWtlIGNvcHktdXAgYW5kIGluZGV4IGNyZWF0aW9uLiBUaGUgY2hhbmdlcyBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0IGFuZCBhcmUgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwOTo1NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc3NDYxZDZhYjJhMDBlNjNiOWExNzZmMjNjYzQ4MmJlNDIwMGVlYjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAwOTo1NDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvY29weV91cC5jIGIvZnMvb3ZlcmxheWZzL2NvcHlfdXAuY1xuaW5kZXggZTk2MzcwMWI0Yzg3Ny4uY2I2NjE5YjVmM2VlMSAxMDA2NDRcbi0tLSBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmNcbkBAIC00OTEsNyAmIzQzOzQ5MSw3IEBAIGludCBvdmxfc2V0X29yaWdpbl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLFxuIFx0LypcbiBcdCAqIERvIG5vdCBmYWlsIHdoZW4gdXBwZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCB4YXR0cnMuXG4gXHQgKi9cbi1cdGVyciA9IG92bF9jaGVja19zZXR4YXR0cihvZnMsIHVwcGVyLCBPVkxfWEFUVFJfT1JJR0lOLCBmaC1cdTAwM2VidWYsXG4mIzQzO1x0ZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoID8gZmgtXHUwMDNlYnVmIDogTlVMTCxcbiBcdFx0XHRcdCBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDAsIDApO1xuIFxuIFx0LyogSWdub3JlIC1FUEVSTSBmcm9tIHNldHRpbmcgXCYjMzQ7dXNlci4qXCYjMzQ7IG9uIHN5bWxpbmsvc3BlY2lhbCAqL1xuQEAgLTUwOSw3ICYjNDM7NTA5LDggQEAgc3RhdGljIGludCBvdmxfc2V0X3VwcGVyX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqdXBwZXIsXG4gXHRpZiAoSVNfRVJSKGZoKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoZmgpO1xuIFxuLVx0ZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUiwgZmgtXHUwMDNlYnVmLCBmaC1cdTAwM2VmYi5sZW4pO1xuJiM0MztcdGVyciA9IG92bF9zZXR4YXR0cihvZnMsIGluZGV4LCBPVkxfWEFUVFJfVVBQRVIsXG4mIzQzO1x0XHRmaCA/IGZoLVx1MDAzZWJ1ZiA6IE5VTEwsIGZoID8gZmgtXHUwMDNlZmIubGVuIDogMCk7XG4gXG4gXHRrZnJlZShmaCk7XG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9uYW1laS5jIGIvZnMvb3ZlcmxheWZzL25hbWVpLmNcbmluZGV4IGNhODk5ZmRmYWFmZDIuLjRhZTI2YzgyMGI1ODcgMTAwNjQ0XG4tLS0gYS9mcy9vdmVybGF5ZnMvbmFtZWkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvb3ZlcmxheWZzL25hbWVpLmNcbkBAIC03MzcsMTIgJiM0Mzs3MzcsMTQgQEAgaW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleClcbiBpbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcbiB7XG4gXHRjaGFyICpuLCAqcztcbiYjNDM7XHRzaXplX3QgbGVuID0gZmggPyBmaC1cdTAwM2VmYi5sZW4gOiAxO1xuJiM0MztcdGNvbnN0IGNoYXIgKmJ1ZiA9IGZoID8gZmgtXHUwMDNlYnVmIDogKGNvbnN0IHU4ICopXCYjMzQ7XCYjMzQ7O1xuIFxuLVx0biA9IGtjYWxsb2MoZmgtXHUwMDNlZmIubGVuLCAyLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRuID0ga2NhbGxvYyhsZW4sIDIsIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFuKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdHMgID0gYmluMmhleChuLCBmaC1cdTAwM2VidWYsIGZoLVx1MDAzZWZiLmxlbik7XG4mIzQzO1x0cyAgPSBiaW4yaGV4KG4sIGJ1ZiwgbGVuKTtcbiBcdCpuYW1lID0gKHN0cnVjdCBxc3RyKSBRU1RSX0lOSVQobiwgcyAtIG4pO1xuIFxuIFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09WRVJMQVlfRlMmIzM0OywKICAgICYjMzQ7T1ZFUkxBWV9GU19JTkRFWCYjMzQ7LAogICAgJiMzNDtPVkVSTEFZX0ZTX05GU19FWFBPUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdmxfc2V0X29yaWdpbl9maCYjMzQ7LAogICAgJiMzNDtvdmxfZ2V0X2luZGV4X25hbWVfZmgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgaW4gYG92bF9zZXRfb3JpZ2luX2ZoYCwgYG92bF9zZXRfdXBwZXJfZmhgLCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgd2hlbiBgZmhgIGlzIE5VTEwuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBvdmVybGF5ZnMgb3BlcmF0aW9ucyBsaWtlIGNvcHktdXAgYW5kIGluZGV4IGNyZWF0aW9uLiBUaGUgY2hhbmdlcyBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0IGFuZCBhcmUgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc3NDYxZDZhYjJhMDBlNjNiOWExNzZmMjNjYzQ4MmJlNDIwMGVlYjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAwOTo1NDoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmMgYi9mcy9vdmVybGF5ZnMvY29weV91cC5jCmluZGV4IGU5NjM3MDFiNGM4NzcuLmNiNjYxOWI1ZjNlZTEgMTAwNjQ0Ci0tLSBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvb3ZlcmxheWZzL2NvcHlfdXAuYwpAQCAtNDkxLDcgJiM0Mzs0OTEsNyBAQCBpbnQgb3ZsX3NldF9vcmlnaW5fZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCwKIAkvKgogCSAqIERvIG5vdCBmYWlsIHdoZW4gdXBwZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCB4YXR0cnMuCiAJICovCi0JZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoLSZndDtidWYsCiYjNDM7CWVyciA9IG92bF9jaGVja19zZXR4YXR0cihvZnMsIHVwcGVyLCBPVkxfWEFUVFJfT1JJR0lOLCBmaCA/IGZoLSZndDtidWYgOiBOVUxMLAogCQkJCSBmaCA/IGZoLSZndDtmYi5sZW4gOiAwLCAwKTsKIAogCS8qIElnbm9yZSAtRVBFUk0gZnJvbSBzZXR0aW5nICYjMzQ7dXNlci4qJiMzNDsgb24gc3ltbGluay9zcGVjaWFsICovCkBAIC01MDksNyAmIzQzOzUwOSw4IEBAIHN0YXRpYyBpbnQgb3ZsX3NldF91cHBlcl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLAogCWlmIChJU19FUlIoZmgpKQogCQlyZXR1cm4gUFRSX0VSUihmaCk7CiAKLQllcnIgPSBvdmxfc2V0eGF0dHIob2ZzLCBpbmRleCwgT1ZMX1hBVFRSX1VQUEVSLCBmaC0mZ3Q7YnVmLCBmaC0mZ3Q7ZmIubGVuKTsKJiM0MzsJZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUiwKJiM0MzsJCWZoID8gZmgtJmd0O2J1ZiA6IE5VTEwsIGZoID8gZmgtJmd0O2ZiLmxlbiA6IDApOwogCiAJa2ZyZWUoZmgpOwogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvbmFtZWkuYyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jCmluZGV4IGNhODk5ZmRmYWFmZDIuLjRhZTI2YzgyMGI1ODcgMTAwNjQ0Ci0tLSBhL2ZzL292ZXJsYXlmcy9uYW1laS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jCkBAIC03MzcsMTIgJiM0Mzs3MzcsMTQgQEAgaW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleCkKIGludCBvdmxfZ2V0X2luZGV4X25hbWVfZmgoY29uc3Qgc3RydWN0IG92bF9maCAqZmgsIHN0cnVjdCBxc3RyICpuYW1lKQogewogCWNoYXIgKm4sICpzOwomIzQzOwlzaXplX3QgbGVuID0gZmggPyBmaC0mZ3Q7ZmIubGVuIDogMTsKJiM0MzsJY29uc3QgY2hhciAqYnVmID0gZmggPyBmaC0mZ3Q7YnVmIDogKGNvbnN0IHU4ICopJiMzNDsmIzM0OzsKIAotCW4gPSBrY2FsbG9jKGZoLSZndDtmYi5sZW4sIDIsIEdGUF9LRVJORUwpOwomIzQzOwluID0ga2NhbGxvYyhsZW4sIDIsIEdGUF9LRVJORUwpOwogCWlmICghbikKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlzICA9IGJpbjJoZXgobiwgZmgtJmd0O2J1ZiwgZmgtJmd0O2ZiLmxlbik7CiYjNDM7CXMgID0gYmluMmhleChuLCBidWYsIGxlbik7CiAJKm5hbWUgPSAoc3RydWN0IHFzdHIpIFFTVFJfSU5JVChuLCBzIC0gbik7CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzNAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDU2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE92ZXJsYXlGUyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBmcy9vdmVybGF5ZnMvY29weV91cC5jYCBhbmQgYGZzL292ZXJsYXlmcy9uYW1laS5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgc29tZSBudWxsIGNoZWNrcyByZWxhdGVkIHRvIGBmaGAgaW4gdGhyZWUgc3BlY2lmaWMgZnVuY3Rpb25zOiBgb3ZsX3NldF9vcmlnaW5fZmhgLCBgb3ZsX3NldF91cHBlcl9maGAsIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYC4gTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGNvZGUgY2hhbmdlcy4KCkluIGBvdmxfc2V0X29yaWdpbl9maGAsIHdlJiMzOTtyZSBub3cgZG9pbmcgYSBudWxsIGNoZWNrIG9uIGBmaGAgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQ6CmBgYGMKLQllcnIgPSBvdmxfY2hlY2tfc2V0eGF0dHIob2ZzLCB1cHBlciwgT1ZMX1hBVFRSX09SSUdJTiwgZmgtJmd0O2J1ZiwKJiM0MzsJZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoID8gZmgtJmd0O2J1ZiA6IE5VTEwsCiAJCQkJIGZoID8gZmgtJmd0O2ZiLmxlbiA6IDAsIDApOwpgYGAKTWFrZXMgc2Vuc2UuICBJZiBgZmhgIGlzIE5VTEwsIHRoZW4gYGZoLSZndDtidWZgIGFuZCBgZmgtJmd0O2ZiLmxlbmAgYXJlIG5vdCBkZXJlZmVyZW5jZWQuICBUaGlzIGlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgcHJhY3RpY2UuCgpUaGUgc2FtZSBwYXR0ZXJuIGlzIHJlcGVhdGVkIGluIGBvdmxfc2V0X3VwcGVyX2ZoYDoKYGBgYwotCWVyciA9IG92bF9zZXR4YXR0cihvZnMsIGluZGV4LCBPVkxfWEFUVFJfVVBQRVIsIGZoLSZndDtidWYsIGZoLSZndDtmYi5sZW4pOwomIzQzOwllcnIgPSBvdmxfc2V0eGF0dHIob2ZzLCBpbmRleCwgT1ZMX1hBVFRSX1VQUEVSLAomIzQzOwkJZmggPyBmaC0mZ3Q7YnVmIDogTlVMTCwgZmggPyBmaC0mZ3Q7ZmIubGVuIDogMCk7CmBgYApBZ2FpbiwgYSBudWxsIGNoZWNrIG9uIGBmaGAgYmVmb3JlIGFjY2Vzc2luZyBpdHMgbWVtYmVycy4gUHJldmVudGluZyBhIGxpa2VseSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuCgpGaW5hbGx5LCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCBpcyBhbHNvIGJlaW5nIGFkanVzdGVkOgpgYGBjCiAJY2hhciAqbiwgKnM7CiYjNDM7CXNpemVfdCBsZW4gPSBmaCA/IGZoLSZndDtmYi5sZW4gOiAxOwomIzQzOwljb25zdCBjaGFyICpidWYgPSBmaCA/IGZoLSZndDtidWYgOiAoY29uc3QgdTggKikmIzM0OyYjMzQ7OwogCi0JbiA9IGtjYWxsb2MoZmgtJmd0O2ZiLmxlbiwgMiwgR0ZQX0tFUk5FTCk7CiYjNDM7CW4gPSBrY2FsbG9jKGxlbiwgMiwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFuKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCXMgID0gYmluMmhleChuLCBmaC0mZ3Q7YnVmLCBmaC0mZ3Q7ZmIubGVuKTsKJiM0MzsJcyAgPSBiaW4yaGV4KG4sIGJ1ZiwgbGVuKTsKYGBgCgpIZXJlLCB3ZSYjMzk7cmUgbm90IG9ubHkgYWRkaW5nIHRoZSBudWxsIGNoZWNrLCBidXQgd2UmIzM5O3JlIGFsc28gbW9kaWZ5aW5nIHRoZSBsb2dpYyB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYGZoYCBpcyBOVUxMLiAgSW5zdGVhZCBvZiBwYXNzaW5nIGBmaC0mZ3Q7YnVmYCBhbmQgYGZoLSZndDtmYi5sZW5gIHdoaWNoIHdvdWxkIGRlcmVmZXJlbmNlIGEgTlVMTCBwb2ludGVyLCB3ZSBub3cgc3Vic3RpdHV0ZSBgTlVMTGAgKG9yIGEgcG9pbnRlciB0byBhbiBlbXB0eSBzdHJpbmcpIGFuZCBhIGxlbmd0aCBvZiAxIGluIHRoZSB0ZXJuYXJ5IGNvbmRpdGlvbmFsLiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsIGNyYXNoIGR1cmluZyBga2NhbGxvY2AgYW5kIGBiaW4yaGV4YCBjYWxscy4KClNvLCBmdW5jdGlvbmFsbHksIHRoaXMgbG9va3MgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBidWcgZml4LCBwcmV2ZW50aW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIHRoZXNlIHRocmVlIGZ1bmN0aW9ucy4gIE5vdywgSSBuZWVkIHRvIGNoZWNrIGhvdyByZWFjaGFibGUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhbmQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLiBPdmVybGF5ZnMgaXMgZW5hYmxlZCBieSBgQ09ORklHX09WRVJMQVlfRlNgLCBzbyBJIGtub3cgd2hlcmUgdG8gc3RhcnQgbG9va2luZy4gSSYjMzk7bGwgc2VhcmNoIGZvciB0aG9zZSBmdW5jdGlvbiBuYW1lcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHBhdGhzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDA5OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292bF9zZXRfb3JpZ2luX2ZofG92bF9zZXRfdXBwZXJfZmh8b3ZsX2dldF9pbmRleF9uYW1lX2ZoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL292ZXJsYXlmcy9jb3B5X3VwLmM9NDczPXN0cnVjdCBvdmxfZmggKm92bF9nZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqb3JpZ2luKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNDg1LVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo0ODY6aW50IG92bF9zZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTQ4Ny1cdFx0ICAgICAgc3RydWN0IGRlbnRyeSAqdXBwZXIpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01MDEtLyogU3RvcmUgZmlsZSBoYW5kbGUgb2YgQHVwcGVyIGRpciBpbiBAaW5kZXggZGlyIGVudHJ5ICovXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjUwMjpzdGF0aWMgaW50IG92bF9zZXRfdXBwZXJfZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcixcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTAzLVx0XHRcdCAgICBzdHJ1Y3QgZGVudHJ5ICppbmRleClcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTUyMj1zdGF0aWMgaW50IG92bF9jcmVhdGVfaW5kZXgoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCxcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU0Ni1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTQ3Olx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGZoLCBcdTAwMjZuYW1lKTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTQ4LVx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU1NS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTU2Olx0ZXJyID0gb3ZsX3NldF91cHBlcl9maChvZnMsIHVwcGVyLCB0ZW1wKTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTU3LVx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTY2MD1zdGF0aWMgaW50IG92bF9jb3B5X3VwX21ldGFkYXRhKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMsIHN0cnVjdCBkZW50cnkgKnRlbXApXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02ODktXHRpZiAoYy1cdTAwM2VvcmlnaW4pIHtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NjkwOlx0XHRlcnIgPSBvdmxfc2V0X29yaWdpbl9maChvZnMsIGMtXHUwMDNlb3JpZ2luX2ZoLCB0ZW1wKTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjkxLVx0XHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jPTYzNj1pbnQgb3ZsX3ZlcmlmeV9pbmRleChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmluZGV4KVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTczNi1cbmZzL292ZXJsYXlmcy9uYW1laS5jOjczNzppbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcbmZzL292ZXJsYXlmcy9uYW1laS5jLTczOC17XG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmM9NzY5PWludCBvdmxfZ2V0X2luZGV4X25hbWUoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICpvcmlnaW4sXG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzc4LVxuZnMvb3ZlcmxheWZzL25hbWVpLmM6Nzc5Olx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGZoLCBuYW1lKTtcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc4MC1cbi0tXG5mcy9vdmVybGF5ZnMvbmFtZWkuYz03ODY9c3RydWN0IGRlbnRyeSAqb3ZsX2dldF9pbmRleF9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBvdmxfZmggKmZoKVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTc5MS1cbmZzL292ZXJsYXlmcy9uYW1laS5jOjc5MjpcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgXHUwMDI2bmFtZSk7XG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03OTMtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jPTkyOT1zdGF0aWMgaW50IG92bF9maXhfb3JpZ2luKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTk0NS1cbmZzL292ZXJsYXlmcy9uYW1laS5jOjk0NjpcdGVyciA9IG92bF9zZXRfb3JpZ2luX2ZoKG9mcywgZmgsIHVwcGVyKTtcbmZzL292ZXJsYXlmcy9uYW1laS5jLTk0Ny1cdGlmICghZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaD03NDA9aW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleCk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NzQxOmludCBvdmxfZ2V0X2luZGV4X25hbWVfZmgoY29uc3Qgc3RydWN0IG92bF9maCAqZmgsIHN0cnVjdCBxc3RyICpuYW1lKTtcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaC03NDItaW50IG92bF9nZXRfaW5kZXhfbmFtZShzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKm9yaWdpbixcbi0tXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg9OTMxPXN0cnVjdCBvdmxfZmggKm92bF9nZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqb3JpZ2luKTtcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo5MzI6aW50IG92bF9zZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtOTMzLVx0XHQgICAgICBzdHJ1Y3QgZGVudHJ5ICp1cHBlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEyMAoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDIyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipPdmVybGF5RlMgRnVuY3Rpb25hbGl0eSBhbmQgRmlsZSBIYW5kbGVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoZXNlIGNoYW5nZXMsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGFsbCBjZW50ZXJlZCBhcm91bmQgT3ZlcmxheUZTLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgb3ZlcmxheWZzYCBjb2RlLiBUaGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIHNlZWluZyBhcmUgcmVhY2hhYmxlLCBhbmQgc2VlbSBpbnRlZ3JhbCB0byB0aGUgZnVuY3Rpb25hbGl0eS4gTm93LCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgYG92bF9zZXRfb3JpZ2luX2ZoYCBpcyBjYWxsZWQgZnJvbSB0d28gb3RoZXIgZnVuY3Rpb25zIEkga25vdyB3ZWxsLCBgb3ZsX2NvcHlfdXBfbWV0YWRhdGFgIGFuZCBgb3ZsX2ZpeF9vcmlnaW5gLiBgb3ZsX3NldF91cHBlcl9maGAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBjYWxsZWQgZnJvbSBgb3ZsX2NyZWF0ZV9pbmRleGAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSB0aGF0IGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBvdmxfY3JlYXRlX2luZGV4YCwgYG92bF9nZXRfaW5kZXhfbmFtZWAsIGFuZCBgb3ZsX2dldF9pbmRleF9maGAsIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHRoaXMgb25lLgoKVGhlIGNvbmZpZyByZXF1aXJlZCBpcyB0aGUgc3RhbmRhcmQgYE9WRVJMQVlfRlNgLCBzbyB0aGF0JiMzOTtzIGdvb2QuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgLiBXYWl0IGEgc2Vjb25k4oCmIGBvdmxfc2V0X3VwcGVyX2ZoYCBpcyBzdGF0aWM/IEhtbSwgdGhhdCBjb3VsZCBhZGQgYSBsYXllciBvZiBjb21wbGV4aXR5LgoKTGV0IG1lIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIGhvdyBhbGwgb2YgdGhpcyB0aWVzIHRvZ2V0aGVyIGJ5IGxvb2tpbmcgY2xvc2VyIGF0IGBvdmxfY3JlYXRlX2luZGV4YCwgYG92bF9jb3B5X3VwX21ldGFkYXRhYCwgYG92bF9maXhfb3JpZ2luYCwgYG92bF9nZXRfaW5kZXhfbmFtZWAsIGFuZCBgb3ZsX2dldF9pbmRleF9maGAuIFRoaXMgc2hvdWxkIGhlbHAgbWUgY29udGV4dHVhbGl6ZSB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwOTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvdmxfY3JlYXRlX2luZGV4fG92bF9jb3B5X3VwX21ldGFkYXRhfG92bF9maXhfb3JpZ2lufG92bF9nZXRfaW5kZXhfbmFtZXxvdmxfZ2V0X2luZGV4X2ZoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL292ZXJsYXlmcy9jb3B5X3VwLmM9NTAyPXN0YXRpYyBpbnQgb3ZsX3NldF91cHBlcl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLFxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTIxLSAqL1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo1MjI6c3RhdGljIGludCBvdmxfY3JlYXRlX2luZGV4KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTUyMy1cdFx0XHQgICAgc3RydWN0IGRlbnRyeSAqdXBwZXIpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01NDYtXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjU0NzpcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgXHUwMDI2bmFtZSk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU0OC1cdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz02NDA9c3RhdGljIGludCBvdmxfY29weV91cF9kYXRhKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMsIGNvbnN0IHN0cnVjdCBwYXRoICp0ZW1wKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjU5LVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo2NjA6c3RhdGljIGludCBvdmxfY29weV91cF9tZXRhZGF0YShzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjLCBzdHJ1Y3QgZGVudHJ5ICp0ZW1wKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NjEte1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9NzU5PXN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfd29ya2RpcihzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNzk2LVx0aWYgKFNfSVNESVIoYy1cdTAwM2VzdGF0Lm1vZGUpIFx1MDAyNlx1MDAyNiBjLVx1MDAzZWluZGV4ZWQpIHtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6Nzk3Olx0XHRlcnIgPSBvdmxfY3JlYXRlX2luZGV4KGMtXHUwMDNlZGVudHJ5LCBjLVx1MDAzZW9yaWdpbl9maCwgdGVtcCk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc5OC1cdFx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTgyMC1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODIxOlx0ZXJyID0gb3ZsX2NvcHlfdXBfbWV0YWRhdGEoYywgdGVtcCk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTgyMi1cdGlmICghZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9ODUzPXN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfdG1wZmlsZShzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODgyLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo4ODM6XHRlcnIgPSBvdmxfY29weV91cF9tZXRhZGF0YShjLCB0ZW1wKTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODg0LVx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTkzMz1zdGF0aWMgaW50IG92bF9kb19jb3B5X3VwKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05NjYtXHRcdGMtXHUwMDNlZGVzdGRpciA9IG92bF9pbmRleGRpcihjLVx1MDAzZWRlbnRyeS1cdTAwM2VkX3NiKTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6OTY3Olx0XHRlcnIgPSBvdmxfZ2V0X2luZGV4X25hbWUob2ZzLCBvcmlnaW4sIFx1MDAyNmMtXHUwMDNlZGVzdG5hbWUpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05NjgtXHRcdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2V4cG9ydC5jPTY4Nj1zdGF0aWMgc3RydWN0IGRlbnRyeSAqb3ZsX2xvd2VyX2ZoX3RvX2Qoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9vdmVybGF5ZnMvZXhwb3J0LmMtNzE3LVx0aWYgKG92bF9pbmRleGRpcihzYikpIHtcbmZzL292ZXJsYXlmcy9leHBvcnQuYzo3MTg6XHRcdGluZGV4ID0gb3ZsX2dldF9pbmRleF9maChvZnMsIGZoKTtcbmZzL292ZXJsYXlmcy9leHBvcnQuYy03MTktXHRcdGVyciA9IFBUUl9FUlIoaW5kZXgpO1xuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jPTYzNj1pbnQgb3ZsX3ZlcmlmeV9pbmRleChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmluZGV4KVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTczNi1cbmZzL292ZXJsYXlmcy9uYW1laS5jOjczNzppbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcbmZzL292ZXJsYXlmcy9uYW1laS5jLTczOC17XG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzY4LSAqL1xuZnMvb3ZlcmxheWZzL25hbWVpLmM6NzY5OmludCBvdmxfZ2V0X2luZGV4X25hbWUoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICpvcmlnaW4sXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03NzAtXHRcdCAgICAgICBzdHJ1Y3QgcXN0ciAqbmFtZSlcbi0tXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03NzgtXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo3Nzk6XHRlcnIgPSBvdmxfZ2V0X2luZGV4X25hbWVfZmgoZmgsIG5hbWUpO1xuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzgwLVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTc4NS0vKiBMb29rdXAgaW5kZXggYnkgZmlsZSBoYW5kbGUgZm9yIE5GUyBleHBvcnQgKi9cbmZzL292ZXJsYXlmcy9uYW1laS5jOjc4NjpzdHJ1Y3QgZGVudHJ5ICpvdmxfZ2V0X2luZGV4X2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IG92bF9maCAqZmgpXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03ODcte1xuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jLTc5MS1cbmZzL292ZXJsYXlmcy9uYW1laS5jOjc5MjpcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgXHUwMDI2bmFtZSk7XG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03OTMtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jPTgxNT1zdHJ1Y3QgZGVudHJ5ICpvdmxfbG9va3VwX2luZGV4KHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqdXBwZXIsXG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmMtODIzLVxuZnMvb3ZlcmxheWZzL25hbWVpLmM6ODI0Olx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lKG9mcywgb3JpZ2luLCBcdTAwMjZuYW1lKTtcbmZzL292ZXJsYXlmcy9uYW1laS5jLTgyNS1cdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmM9OTA1PWludCBvdmxfcGF0aF9uZXh0KGludCBpZHgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHBhdGggKnBhdGgsXG4tLVxuZnMvb3ZlcmxheWZzL25hbWVpLmMtOTI4LS8qIEZpeCBtaXNzaW5nICYjMzk7b3JpZ2luJiMzOTsgeGF0dHIgKi9cbmZzL292ZXJsYXlmcy9uYW1laS5jOjkyOTpzdGF0aWMgaW50IG92bF9maXhfb3JpZ2luKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtOTMwLVx0XHRcdCAgc3RydWN0IGRlbnRyeSAqbG93ZXIsIHN0cnVjdCBkZW50cnkgKnVwcGVyKVxuLS1cbmZzL292ZXJsYXlmcy9uYW1laS5jPTEwOTI9c3RhdGljIGludCBvdmxfbG9va3VwX2xheWVycyhzdHJ1Y3Qgb3ZsX2xvb2t1cF9jdHggKmN0eCwgc3RydWN0IG92bF9sb29rdXBfZGF0YSAqZClcbi0tXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy0xMTgxLVx0XHRpZiAoY3R4LVx1MDAzZXVwcGVyZGVudHJ5IFx1MDAyNlx1MDAyNiAhY3R4LVx1MDAzZWN0ciBcdTAwMjZcdTAwMjYgIW9mcy1cdTAwM2Vub3hhdHRyIFx1MDAyNlx1MDAyNiBkLVx1MDAzZWlzX2Rpcikge1xuZnMvb3ZlcmxheWZzL25hbWVpLmM6MTE4MjpcdFx0XHRlcnIgPSBvdmxfZml4X29yaWdpbihvZnMsIGRlbnRyeSwgdGhpcywgY3R4LVx1MDAzZXVwcGVyZGVudHJ5KTtcbmZzL292ZXJsYXlmcy9uYW1laS5jLTExODMtXHRcdFx0aWYgKGVycikge1xuLS1cbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaD03NDA9aW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleCk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NzQxOmludCBvdmxfZ2V0X2luZGV4X25hbWVfZmgoY29uc3Qgc3RydWN0IG92bF9maCAqZmgsIHN0cnVjdCBxc3RyICpuYW1lKTtcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo3NDI6aW50IG92bF9nZXRfaW5kZXhfbmFtZShzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKm9yaWdpbixcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaC03NDMtXHRcdCAgICAgICBzdHJ1Y3QgcXN0ciAqbmFtZSk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NzQ0OnN0cnVjdCBkZW50cnkgKm92bF9nZXRfaW5kZXhfZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3Qgb3ZsX2ZoICpmaCk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtNzQ1LXN0cnVjdCBkZW50cnkgKm92bF9sb29rdXBfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcixcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jPTEwNzU9c3RhdGljIHZvaWQgb3ZsX2NsZWFudXBfaW5kZXgoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuLS1cbmZzL292ZXJsYXlmcy91dGlsLmMtMTA4Ni1cbmZzL292ZXJsYXlmcy91dGlsLmM6MTA4NzpcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZShvZnMsIGxvd2VyZGVudHJ5LCBcdTAwMjZuYW1lKTtcbmZzL292ZXJsYXlmcy91dGlsLmMtMTA4OC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg0NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcywgYXMgSSB1bmRlcnN0YW5kIGl0OgoKKipDb25zaWRlcmluZyBPdmVybGF5RlMgRnVuY3Rpb24gU2VsZWN0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZXNlIE92ZXJsYXlGUyBmdW5jdGlvbnMuIEkgc2VlIHRoYXQgYG92bF9zZXRfb3JpZ2luX2ZoYCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgYXJlIGRlZmluZWQgYXMgbm9uLXN0YXRpYy4gR29vZCB0byBrbm93LiBCdXQgSSYjMzk7bSBub3RpY2luZyBgb3ZsX3NldF91cHBlcl9maGAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGtleSBkaWZmZXJlbmNlLiBUaGF0IHByb2JhYmx5IG1lYW5zIEkgc2hvdWxkIGJlIGxlYW5pbmcgdG93YXJkcyB1c2luZyBgb3ZsX2NyZWF0ZV9pbmRleGAgaW5zdGVhZCwgZ2l2ZW4gaXRzIHNjb3BlLiBIYW5nIG9uIGEgc2Vjb25kLCB0aG91Z2jigKYgYG92bF9jcmVhdGVfaW5kZXhgIGlzIGFsc28gYSBzdGF0aWMgZnVuY3Rpb24hIE9rYXksIHRoYXQgdGhyb3dzIGEgd3JlbmNoIGluIG15IGluaXRpYWwgYXNzdW1wdGlvbi4gSSBuZWVkIHRvIGtlZXAgbG9va2luZy4KCkxldCYjMzk7cyBzaGlmdCBnZWFycyBhbmQgY2hlY2sgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zLiBQZXJoYXBzIEkgY2FuIGZpbmQgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIGJ5IGV4YW1pbmluZyBgb3ZsX2NvcHlfdXBfd29ya2RpcmAsIGBvdmxfY29weV91cF9tZXRhZGF0YWAsIG9yIG1heWJlIHRoZSBjb3JlIGBvdmxfZG9fY29weV91cGAgZnVuY3Rpb24uIEFoLCBoZXJlJiMzOTtzIGBvdmxfZG9fY29weV91cGAgYW5kLCB5ZXMsIGl0JiMzOTtzIGFsc28gc3RhdGljLiBBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGJhc2UgYG92bF9jb3B5X3VwYCBmdW5jdGlvbiBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3ZsX2NvcHlfdXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz0yNDU9c3RhdGljIGludCBvdmxfc3luY19maWxlKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMjU5LVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoyNjA6c3RhdGljIGludCBvdmxfY29weV91cF9maWxlKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0yNjEtXHRcdFx0ICAgIHN0cnVjdCBmaWxlICpuZXdfZmlsZSwgbG9mZl90IGxlbixcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTUyMj1zdGF0aWMgaW50IG92bF9jcmVhdGVfaW5kZXgoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCxcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU3Ny1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTc4OnN0cnVjdCBvdmxfY29weV91cF9jdHgge1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01NzktXHRzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQ7XG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01OTUtXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjU5NjpzdGF0aWMgaW50IG92bF9saW5rX3VwKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU5Ny17XG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02MzktXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjY0MDpzdGF0aWMgaW50IG92bF9jb3B5X3VwX2RhdGEoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYywgY29uc3Qgc3RydWN0IHBhdGggKnRlbXApXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTY0MS17XG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NTItXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjY1MzpcdGVyciA9IG92bF9jb3B5X3VwX2ZpbGUob2ZzLCBjLVx1MDAzZWRlbnRyeSwgbmV3X2ZpbGUsIGMtXHUwMDNlc3RhdC5zaXplLFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NTQtXHRcdFx0ICAgICAgICFjLVx1MDAzZW1ldGFkYXRhX2ZzeW5jKTtcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTY1OS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NjYwOnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfbWV0YWRhdGEoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYywgc3RydWN0IGRlbnRyeSAqdGVtcClcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjYxLXtcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTc1MT1ERUZJTkVfQ0xBU1MoY29weV91cF9jcmVkcywgY29uc3Qgc3RydWN0IGNyZWQgKixcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc1OC0gKi9cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NzU5OnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfd29ya2RpcihzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy03NjAte1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNzkwLVx0cGF0aC5kZW50cnkgPSB0ZW1wO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo3OTE6XHRlcnIgPSBvdmxfY29weV91cF9kYXRhKGMsIFx1MDAyNnBhdGgpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy03OTItXHRvdmxfc3RhcnRfd3JpdGUoYy1cdTAwM2VkZW50cnkpO1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODA0LVx0ICogbG9jayBvcmRlcmluZyB3aXRoIHNiX3dyaXRlcnMsIHdoaWNoIHNob3VsZG4mIzM5O3QgYmUgaGVsZCB3aGVuIGNhbGxpbmdcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODA1Olx0ICogb3ZsX2NvcHlfdXBfZGF0YSgpLCBzbyBsb2NrIHdvcmtkaXIgYW5kIGRlc3RkaXIgYW5kIG1ha2Ugc3VyZSB0aGF0XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTgwNi1cdCAqIHRlbXAgd2FzbiYjMzk7dCBtb3ZlZCBiZWZvcmUgY29weSB1cCBjb21wbGV0aW9uIG9yIGNsZWFudXAuXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjAtXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjgyMTpcdGVyciA9IG92bF9jb3B5X3VwX21ldGFkYXRhKGMsIHRlbXApO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjItXHRpZiAoIWVycilcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg1Mi0vKiBDb3B5dXAgdXNpbmcgT19UTVBGSUxFIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgY3Jvc3MgZGlyIGxvY2tpbmcgKi9cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODUzOnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfdG1wZmlsZShzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04NTQte1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODc0LVx0aWYgKCFjLVx1MDAzZW1ldGFjb3B5IFx1MDAyNlx1MDAyNiBjLVx1MDAzZXN0YXQuc2l6ZSkge1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo4NzU6XHRcdGVyciA9IG92bF9jb3B5X3VwX2ZpbGUob2ZzLCBjLVx1MDAzZWRlbnRyeSwgdG1wZmlsZSwgYy1cdTAwM2VzdGF0LnNpemUsXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg3Ni1cdFx0XHRcdCAgICAgICAhYy1cdTAwM2VtZXRhZGF0YV9mc3luYyk7XG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04ODItXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjg4MzpcdGVyciA9IG92bF9jb3B5X3VwX21ldGFkYXRhKGMsIHRlbXApO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04ODQtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtOTMyLSAqL1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo5MzM6c3RhdGljIGludCBvdmxfZG9fY29weV91cChzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05MzQte1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtOTc1LVx0XHQvKlxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo5NzY6XHRcdCAqIGMtXHUwMDNlZGVudHJ5LVx1MDAzZWRfbmFtZSBpcyBzdGFiaWx6ZWQgYnkgb3ZsX2NvcHlfdXBfc3RhcnQoKSxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtOTc3LVx0XHQgKiBiZWNhdXNlIGlmIHdlIGdvdCBoZXJlLCBpdCBtZWFucyB0aGF0IGMtXHUwMDNlZGVudHJ5IGhhcyBubyB1cHBlclxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05NzgtXHRcdCAqIGFsaWFzIGFuZCBjaGFuZ2luZyAtXHUwMDNlZF9uYW1lIG1lYW5zIGdvaW5nIHRocm91Z2ggb3ZsX3JlbmFtZSgpXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjk3OTpcdFx0ICogdGhhdCB3aWxsIGNhbGwgb3ZsX2NvcHlfdXAoKSBvbiBzb3VyY2UgYW5kIHRhcmdldCBkZW50cnkuXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk4MC1cdFx0ICovXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05OTQtXHRpZiAoU19JU1JFRyhjLVx1MDAzZXN0YXQubW9kZSkgXHUwMDI2XHUwMDI2IG9mcy1cdTAwM2V0bXBmaWxlKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo5OTU6XHRcdGVyciA9IG92bF9jb3B5X3VwX3RtcGZpbGUoYyk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk5Ni1cdGVsc2VcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6OTk3Olx0XHRlcnIgPSBvdmxfY29weV91cF93b3JrZGlyKGMpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05OTgtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9MTA1OT1zdGF0aWMgc3NpemVfdCBvdmxfZ2V0eGF0dHJfdmFsdWUoY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIGNoYXIgKm5hbWUsIGNoYXIgKip2YWx1ZSlcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEwODItLyogQ29weSB1cCBkYXRhIG9mIGFuIGlub2RlIHdoaWNoIHdhcyBjb3BpZWQgdXAgbWV0YWRhdGEgb25seSBpbiB0aGUgcGFzdC4gKi9cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTA4MzpzdGF0aWMgaW50IG92bF9jb3B5X3VwX21ldGFfaW5vZGVfZGF0YShzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMDg0LXtcbi0tXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExMDEtXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjExMDI6XHRlcnIgPSBvdmxfY29weV91cF9kYXRhKGMsIFx1MDAyNnVwcGVycGF0aCk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExMDMtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTEzMS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTEzMjpzdGF0aWMgaW50IG92bF9jb3B5X3VwX29uZShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTEzMy1cdFx0XHQgICBpbnQgZmxhZ3MpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMTM3LVx0c3RydWN0IHBhdGggcGFyZW50cGF0aDtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTEzODpcdHN0cnVjdCBvdmxfY29weV91cF9jdHggY3R4ID0ge1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMTM5LVx0XHQucGFyZW50ID0gcGFyZW50LFxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTE5MC1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTE5MTpcdGVyciA9IG92bF9jb3B5X3VwX3N0YXJ0KGRlbnRyeSwgZmxhZ3MpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMTkyLVx0LyogZXJyIFx1MDAzYyAwOiBpbnRlcnJ1cHRlZCwgZXJyIFx1MDAzZSAwOiByYWNlZCB3aXRoIGFub3RoZXIgY29weS11cCAqL1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTIwMS1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IG92bF9kZW50cnlfbmVlZHNfZGF0YV9jb3B5X3VwX2xvY2tlZChkZW50cnksIGZsYWdzKSlcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTIwMjpcdFx0XHRlcnIgPSBvdmxfY29weV91cF9tZXRhX2lub2RlX2RhdGEoXHUwMDI2Y3R4KTtcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTIwMzpcdFx0b3ZsX2NvcHlfdXBfZW5kKGRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyMDQtXHR9XG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjA5LVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjEwOnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfZmxhZ3Moc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyMTEte1xuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI1MS1cdFx0d2l0aF9vdmxfY3JlZHMoZGVudHJ5LVx1MDAzZWRfc2IpXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyNTI6XHRcdFx0ZXJyID0gb3ZsX2NvcHlfdXBfb25lKHBhcmVudCwgbmV4dCwgZmxhZ3MpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjUzLVxuLS1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9MTI3Nj1pbnQgb3ZsX21heWJlX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpXG4tLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjgwLVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjgxOlx0cmV0dXJuIG92bF9jb3B5X3VwX2ZsYWdzKGRlbnRyeSwgZmxhZ3MpO1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjgyLX1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI4My1cbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTI4NDppbnQgb3ZsX2NvcHlfdXBfd2l0aF9kYXRhKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI4NS17XG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyODY6XHRyZXR1cm4gb3ZsX2NvcHlfdXBfZmxhZ3MoZGVudHJ5LCBPX1dST05MWSk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyODctfVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjg4LVxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjg5OmludCBvdmxfY29weV91cChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyOTAte1xuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjkxOlx0cmV0dXJuIG92bF9jb3B5X3VwX2ZsYWdzKGRlbnRyeSwgMCk7XG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyOTItfVxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYz02OTE9c3RhdGljIGludCBvdmxfY3JlYXRlX29iamVjdChzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYy03MDAtXG5mcy9vdmVybGF5ZnMvZGlyLmM6NzAxOlx0ZXJyID0gb3ZsX2NvcHlfdXAoZGVudHJ5LVx1MDAzZWRfcGFyZW50KTtcbmZzL292ZXJsYXlmcy9kaXIuYy03MDItXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYz03Njc9c3RhdGljIGludCBvdmxfbGluayhzdHJ1Y3QgZGVudHJ5ICpvbGQsIHN0cnVjdCBpbm9kZSAqbmV3ZGlyLFxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYy03NzItXG5mcy9vdmVybGF5ZnMvZGlyLmM6NzczOlx0ZXJyID0gb3ZsX2NvcHlfdXAob2xkKTtcbmZzL292ZXJsYXlmcy9kaXIuYy03NzQtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYy03NzYtXG5mcy9vdmVybGF5ZnMvZGlyLmM6Nzc3Olx0ZXJyID0gb3ZsX2NvcHlfdXAobmV3LVx1MDAzZWRfcGFyZW50KTtcbmZzL292ZXJsYXlmcy9kaXIuYy03NzgtXHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy9kaXIuYz05MzY9c3RhdGljIGludCBvdmxfZG9fcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgYm9vbCBpc19kaXIpXG4tLVxuZnMvb3ZlcmxheWZzL2Rpci5jLTk0OC1cbmZzL292ZXJsYXlmcy9kaXIuYzo5NDk6XHRlcnIgPSBvdmxfY29weV91cChkZW50cnktXHUwMDNlZF9wYXJlbnQpO1xuZnMvb3ZlcmxheWZzL2Rpci5jLTk1MC1cdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2Rpci5jPTExMzQ9c3RhdGljIGludCBvdmxfcmVuYW1lX3N0YXJ0KHN0cnVjdCBvdmxfcmVuYW1lZGF0YSAqb3ZscmQsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpXG4tLVxuZnMvb3ZlcmxheWZzL2Rpci5jLTExNzQtXG5mcy9vdmVybGF5ZnMvZGlyLmM6MTE3NTpcdGVyciA9IG92bF9jb3B5X3VwKG9sZCk7XG5mcy9vdmVybGF5ZnMvZGlyLmMtMTE3Ni1cdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2Rpci5jLTExNzgtXG5mcy9vdmVybGF5ZnMvZGlyLmM6MTE3OTpcdGVyciA9IG92bF9jb3B5X3VwKG5ldy1cdTAwM2VkX3BhcmVudCk7XG5mcy9vdmVybGF5ZnMvZGlyLmMtMTE4MC1cdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2Rpci5jLTExODMtXHRpZiAoIW92bHJkLVx1MDAzZW92ZXJ3cml0ZSkge1xuZnMvb3ZlcmxheWZzL2Rpci5jOjExODQ6XHRcdGVyciA9IG92bF9jb3B5X3VwKG5ldyk7XG5mcy9vdmVybGF5ZnMvZGlyLmMtMTE4NS1cdFx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvZGlyLmM9MTQyMz1zdGF0aWMgaW50IG92bF90bXBmaWxlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbi0tXG5mcy9vdmVybGF5ZnMvZGlyLmMtMTQzMi1cbmZzL292ZXJsYXlmcy9kaXIuYzoxNDMzOlx0ZXJyID0gb3ZsX2NvcHlfdXAoZGVudHJ5LVx1MDAzZWRfcGFyZW50KTtcbmZzL292ZXJsYXlmcy9kaXIuYy0xNDM0LVx0aWYgKGVycilcbi0tXG5mcy9vdmVybGF5ZnMvZXhwb3J0LmM9MTk9c3RhdGljIGludCBvdmxfZW5jb2RlX21heWJlX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuLS1cbmZzL292ZXJsYXlmcy9leHBvcnQuYy0yNS1cbmZzL292ZXJsYXlmcy9leHBvcnQuYzoyNjpcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvZXhwb3J0LmMtMjctXHRpZiAoZXJyKSB7XG4tLVxuZnMvb3ZlcmxheWZzL2lub2RlLmM9MjE9aW50IG92bF9zZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4tLVxuZnMvb3ZlcmxheWZzL2lub2RlLmMtNDYtXHRpZiAoIWZ1bGxfY29weV91cClcbmZzL292ZXJsYXlmcy9pbm9kZS5jOjQ3Olx0XHRlcnIgPSBvdmxfY29weV91cChkZW50cnkpO1xuZnMvb3ZlcmxheWZzL2lub2RlLmMtNDgtXHRlbHNlXG5mcy9vdmVybGF5ZnMvaW5vZGUuYzo0OTpcdFx0ZXJyID0gb3ZsX2NvcHlfdXBfd2l0aF9kYXRhKGRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvaW5vZGUuYy01MC1cdGlmICghZXJyKSB7XG4tLVxuZnMvb3ZlcmxheWZzL2lub2RlLmM9NDg1PXN0YXRpYyBpbnQgb3ZsX3NldF9vcl9yZW1vdmVfYWNsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9vdmVybGF5ZnMvaW5vZGUuYy01MTMtXHRpZiAoIXVwcGVyZGVudHJ5KSB7XG5mcy9vdmVybGF5ZnMvaW5vZGUuYzo1MTQ6XHRcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvaW5vZGUuYy01MTUtXHRcdGlmIChlcnIpXG4tLVxuZnMvb3ZlcmxheWZzL2lub2RlLmM9NjUzPWludCBvdmxfZmlsZWF0dHJfc2V0KHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxuLS1cbmZzL292ZXJsYXlmcy9pbm9kZS5jLTY2MC1cbmZzL292ZXJsYXlmcy9pbm9kZS5jOjY2MTpcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvaW5vZGUuYy02NjItXHRpZiAoIWVycikge1xuLS1cbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaD01Mzg9c3RydWN0IGZpbGUgKm92bF9wYXRoX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIGludCBmbGFncyk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NTM5OmludCBvdmxfY29weV91cF9zdGFydChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncyk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NTQwOnZvaWQgb3ZsX2NvcHlfdXBfZW5kKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7XG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtNTQxLWJvb2wgb3ZsX2FscmVhZHlfY29waWVkX3VwKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IGZsYWdzKTtcbi0tXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg9OTIxPXZvaWQgb3ZsX2ZpbGVfZnJlZShzdHJ1Y3Qgb3ZsX2ZpbGUgKm9mKTtcbi0tXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtOTIzLS8qIGNvcHlfdXAuYyAqL1xuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjkyNDppbnQgb3ZsX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KTtcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo5MjU6aW50IG92bF9jb3B5X3VwX3dpdGhfZGF0YShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpO1xuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oLTkyNi1pbnQgb3ZsX21heWJlX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpO1xuLS1cbmZzL292ZXJsYXlmcy91dGlsLmM9NTM0PWJvb2wgb3ZsX2hhc191cHBlcmRhdGEoc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTU0Mi1cdCAqIFBhaXJzIHdpdGggc21wX3dtYigpIGluIG92bF9zZXRfdXBwZXJkYXRhKCkuIE1haW4gdXNlciBvZlxuZnMvb3ZlcmxheWZzL3V0aWwuYzo1NDM6XHQgKiBvdmxfaGFzX3VwcGVyZGF0YSgpIGlzIG92bF9jb3B5X3VwX21ldGFfaW5vZGVfZGF0YSgpLiBNYWtlIHN1cmVcbmZzL292ZXJsYXlmcy91dGlsLmMtNTQ0LVx0ICogaWYgc2V0dGluZyBvZiBPVkxfVVBQRVJEQVRBIGlzIHZpc2libGUsIHRoZW4gZWZmZWN0cyBvZiB3cml0ZXNcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jPTcwMT1ib29sIG92bF9hbHJlYWR5X2NvcGllZF91cChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncylcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTcyOS0gKi9cbmZzL292ZXJsYXlmcy91dGlsLmM6NzMwOmludCBvdmxfY29weV91cF9zdGFydChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncylcbmZzL292ZXJsYXlmcy91dGlsLmMtNzMxLXtcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTc1Mi1cbmZzL292ZXJsYXlmcy91dGlsLmM6NzUzOnZvaWQgb3ZsX2NvcHlfdXBfZW5kKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbmZzL292ZXJsYXlmcy91dGlsLmMtNzU0LXtcbi0tXG5mcy9vdmVybGF5ZnMvdXRpbC5jPTExNDU9aW50IG92bF9ubGlua19zdGFydChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4tLVxuZnMvb3ZlcmxheWZzL3V0aWwuYy0xMTY0LVx0ICogVE9ETzogaW1wbGVtZW50IG1ldGFkYXRhIG9ubHkgaW5kZXggY29weSB1cCB3aGVuIGNhbGxlZCB3aXRoXG5mcy9vdmVybGF5ZnMvdXRpbC5jOjExNjU6XHQgKiAgICAgICBvdmxfY29weV91cF9mbGFncyhkZW50cnksIE9fUEFUSCkuXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTExNjYtXHQgKi9cbmZzL292ZXJsYXlmcy91dGlsLmMtMTE2Ny1cdGlmIChvdmxfbmVlZF9pbmRleChkZW50cnkpIFx1MDAyNlx1MDAyNiAhb3ZsX2RlbnRyeV9oYXNfdXBwZXJfYWxpYXMoZGVudHJ5KSkge1xuZnMvb3ZlcmxheWZzL3V0aWwuYzoxMTY4Olx0XHRlcnIgPSBvdmxfY29weV91cChkZW50cnkpO1xuZnMvb3ZlcmxheWZzL3V0aWwuYy0xMTY5LVx0XHRpZiAoZXJyKVxuLS1cbmZzL292ZXJsYXlmcy94YXR0cnMuYz0zNj1zdGF0aWMgaW50IG92bF94YXR0cl9zZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmZzL292ZXJsYXlmcy94YXR0cnMuYy01My1cdGlmICghdXBwZXJkZW50cnkpIHtcbmZzL292ZXJsYXlmcy94YXR0cnMuYzo1NDpcdFx0ZXJyID0gb3ZsX2NvcHlfdXAoZGVudHJ5KTtcbmZzL292ZXJsYXlmcy94YXR0cnMuYy01NS1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwOTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA3NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgT3ZlcmxheUZTIEZ1bmN0aW9uIEV4cG9ydHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uIG1vZGlmaWNhdGlvbnMgYW5kIGltbWVkaWF0ZWx5IG15IGJyYWluIGhvbmVzIGluIG9uIGBvdmxfc2V0X29yaWdpbl9maGAgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgLiBJIG5vdGljZSB0aGF0IHRoZXNlIGFyZSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYmVpbmcgYWx0ZXJlZC4gTm93LCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBpbmNsdWRlcyByZXZlYWxzIHRoYXQgYm90aCBhcmUgZXhwb3J0ZWQgaW4gYGZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaGAuIEFoYSwgc28gdGhleSYjMzk7cmUgZGVzaWduZWQgZm9yIGV4dGVybmFsIHVzZS4gSSBzZWUgdGhvc2UgYXJlIHVzZWQgaW4gYGZzL292ZXJsYXlmcy9jb3B5X3VwLmNgIGFuZCBgZnMvb3ZlcmxheWZzL25hbWVpLmNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhleSBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBmdW5jdGlvbmFsaXR5IHRoYXQgbmVlZHMgdG8gaW50ZXJmYWNlIHdpdGggdGhlIGZpbGVzeXN0ZW0uCgpgb3ZsX3NldF91cHBlcl9maGAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBzdGF0aWMsIHdoaWNoIGxpbWl0cyBpdHMgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaXRzIHJlbGV2YW5jZSB0byB0aGlzIHdpZGVyIGludmVzdGlnYXRpb24uCgpOb3csIGFyZSB0aGVzZSBnb29kIGZvY3VzIHN5bWJvbHM/IFllYWgsIHRoZXkgc2VlbSBkZWNlbnQuIFRoZXkmIzM5O3JlIHNwZWNpZmljIHRvIGluZGV4L2ZoIGhhbmRsaW5nIHdpdGhpbiBvdmVybGF5ZnMsIHNvIHRoZXkmIzM5O3JlIGZvY3VzZWQgZW5vdWdoIGFuZCBub3Qgc29tZSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBhIG1lc3MgdG8gdHJhY2UuCgpOZXh0IHN0ZXA6IENvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBXaGF0IGBDT05GSUdgIG9wdGlvbnMgYXJlIHJlbGV2YW50PyBXZWxsLCBvYnZpb3VzbHksIGBDT05GSUdfT1ZFUkxBWV9GU2AgaXMgdGhlIGJpZyBvbmUsIHRoZSBiYXNlLiBCdXQgZ2l2ZW4gdGhhdCB0aGVzZSBmdW5jdGlvbnMgZGVhbCB3aXRoIGluZGV4aW5nLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYENPTkZJR19PVkVSTEFZX0ZTX0lOREVYYC4gSSYjMzk7bGwgY3Jvc3MtcmVmZXJlbmNlIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGZzL292ZXJsYXlmc2AgZGlyZWN0b3J5IGp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7T1ZFUkxBWV9GU19JTkRFWCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL292ZXJsYXlmcy5yc3Q9NjQxPUVuYWJsZWQgd2l0aCB0aGUgbW91bnQgb3B0aW9uIG9yIG1vZHVsZSBvcHRpb24gXCYjMzQ7aW5kZXg9b25cJiMzNDsgb3Igd2l0aCB0aGVcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvb3ZlcmxheWZzLnJzdDo2NDI6a2VybmVsIGNvbmZpZyBvcHRpb24gQ09ORklHX09WRVJMQVlfRlNfSU5ERVg9eS5cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvb3ZlcmxheWZzLnJzdC02NDMtXG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz05ODI9Q09ORklHX09WRVJMQVlfRlM9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzo5ODM6Q09ORklHX09WRVJMQVlfRlNfSU5ERVg9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy05ODQtQ09ORklHX09WRVJMQVlfRlNfWElOT19BVVRPPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTEwMTM9Q09ORklHX09WRVJMQVlfRlM9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMDE0OkNPTkZJR19PVkVSTEFZX0ZTX0lOREVYPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTAxNS1DT05GSUdfT1ZFUkxBWV9GU19YSU5PX0FVVE89eVxuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnPTMxPWNvbmZpZyBPVkVSTEFZX0ZTX1JFRElSRUNUX0FMV0FZU19GT0xMT1dcbi0tXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy00NS1cbmZzL292ZXJsYXlmcy9LY29uZmlnOjQ2OmNvbmZpZyBPVkVSTEFZX0ZTX0lOREVYXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy00Ny1cdGJvb2wgXCYjMzQ7T3ZlcmxheWZzOiB0dXJuIG9uIGlub2RlcyBpbmRleCBmZWF0dXJlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5mcy9vdmVybGF5ZnMvS2NvbmZpZz02NT1jb25maWcgT1ZFUkxBWV9GU19ORlNfRVhQT1JUXG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctNjctXHRkZXBlbmRzIG9uIE9WRVJMQVlfRlNcbmZzL292ZXJsYXlmcy9LY29uZmlnOjY4Olx0ZGVwZW5kcyBvbiBPVkVSTEFZX0ZTX0lOREVYXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy02OS1cdGRlcGVuZHMgb24gIU9WRVJMQVlfRlNfTUVUQUNPUFlcbi0tXG5mcy9vdmVybGF5ZnMvcGFyYW1zLmM9Mjg9TU9EVUxFX1BBUk1fREVTQyh4aW5vX2F1dG8sXG4tLVxuZnMvb3ZlcmxheWZzL3BhcmFtcy5jLTMwLVxuZnMvb3ZlcmxheWZzL3BhcmFtcy5jOjMxOnN0YXRpYyBib29sIG92bF9pbmRleF9kZWYgPSBJU19FTkFCTEVEKENPTkZJR19PVkVSTEFZX0ZTX0lOREVYKTtcbmZzL292ZXJsYXlmcy9wYXJhbXMuYy0zMi1tb2R1bGVfcGFyYW1fbmFtZWQoaW5kZXgsIG92bF9pbmRleF9kZWYsIGJvb2wsIDA2NDQpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTE2OD1DT05GSUdfT1NGX1BBUlRJVElPTj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjoxNjk6Q09ORklHX09WRVJMQVlfRlNfSU5ERVg9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb24tMTcwLUNPTkZJR19PVkVSTEFZX0ZTX01FVEFDT1BZPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzNjkKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogMzMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoaXMgT3ZlcmxheUZTIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgaW5pdGlhbGx5LCBhZGRpbmcgYENPTkZJR19PVkVSTEFZX0ZTX0lOREVYYCBhbmQgYENPTkZJR19PVkVSTEFZX0ZTYCBsb29rcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBgb3ZsX3NldF9vcmlnaW5fZmhgIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCBmdW5jdGlvbnMsIGFuZCBtYWtlIHN1cmUgSSBkaWRuJiMzOTt0IG1pc3MgYW55IG90aGVycy4gSG1tbS4uLiB0aGlua2luZyBhYm91dCBpdCwgYENPTkZJR19PVkVSTEFZX0ZTX05GU19FWFBPUlRgIGlzIHByb2JhYmx5IHJlbGV2YW50IHRvbywgc2luY2UgSSByZWNhbGwgdGhhdCBgb3ZsX2dldF9pbmRleF9maGAgaXMgdXNlZCB3aGVuIGV4cG9ydGluZyBvdmVyIE5GUy4gQWxyaWdodCwgbGV0JiMzOTtzIGluY2x1ZGUgYE9WRVJMQVlfRlNgLCBgT1ZFUkxBWV9GU19JTkRFWGAsIGFuZCBgT1ZFUkxBWV9GU19ORlNfRVhQT1JUYCBpbiB0aGUgY29uZmlndXJhdGlvbi4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgcmVhc29uaW5nIGNvcnJlY3QuIFRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHdoZW4gdGhlIGZpbGUgaGFuZGxlLCBgZmhgLCBpcyBOVUxMLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgZHVyaW5nIG92ZXJsYXlmcyBvcGVyYXRpb25zIGxpa2UgY29weS11cCBhbmQgaW5kZXggY3JlYXRpb24uIEl0IGRlZmluaXRlbHkgc291bmRzIGxpa2UgdGhlIGNoYW5nZXMgaGF2ZSBhIHBvdGVudGlhbCBmdW5jdGlvbmFsIGltcGFjdCBhbmQgYXJlIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGBvdmxfc2V0X29yaWdpbl9maGAgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHN5bWJvbHMsIG9mIGNvdXJzZS4KCk9oLCB3YWl0LCBsZXQgbWUgcXVpY2tseSBkb3VibGUgY2hlY2sgc29tZXRoaW5nLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG5lZWQgdG8gaW5jbHVkZSBgb3ZsX3NldF91cHBlcl9maGAgaW4gdGhlICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDsuIFllcCwgaXQmIzM5O3Mgc3RhdGljIHdpdGhpbiBgZnMvb3ZlcmxheWZzL2NvcHlfdXAuY2AsIHNvIEkmIzM5O2xsIGxlYXZlIGl0IG91dC4KCkFscmlnaHQsIHRoYXQgY292ZXJzIGl0LiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwOTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1ZFUkxBWV9GUyYjMzQ7LAogICAgJiMzNDtPVkVSTEFZX0ZTX0lOREVYJiMzNDssCiAgICAmIzM0O09WRVJMQVlfRlNfTkZTX0VYUE9SVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292bF9zZXRfb3JpZ2luX2ZoJiMzNDssCiAgICAmIzM0O292bF9nZXRfaW5kZXhfbmFtZV9maCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiBgb3ZsX3NldF9vcmlnaW5fZmhgLCBgb3ZsX3NldF91cHBlcl9maGAsIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCB3aGVuIGBmaGAgaXMgTlVMTC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIG92ZXJsYXlmcyBvcGVyYXRpb25zIGxpa2UgY29weS11cCBhbmQgaW5kZXggY3JlYXRpb24uIFRoZSBjaGFuZ2VzIGhhdmUgZnVuY3Rpb25hbCBpbXBhY3QgYW5kIGFyZSB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPVkVSTEFZX0ZTJiMzNDssCiAgICAmIzM0O09WRVJMQVlfRlNfSU5ERVgmIzM0OywKICAgICYjMzQ7T1ZFUkxBWV9GU19ORlNfRVhQT1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZsX3NldF9vcmlnaW5fZmgmIzM0OywKICAgICYjMzQ7b3ZsX2dldF9pbmRleF9uYW1lX2ZoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHdoZW4gYGZoYCBpcyBOVUxMLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgb3ZlcmxheWZzIG9wZXJhdGlvbnMgbGlrZSBjb3B5LXVwIGFuZCBpbmRleCBjcmVhdGlvbi4gVGhlIGNoYW5nZXMgaGF2ZSBmdW5jdGlvbmFsIGltcGFjdCBhbmQgYXJlIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDA5OjU1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDk6NTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGNoZWNrcyBmb3IgYGZoICE9IE5VTExgIGJlZm9yZSBhY2Nlc3NpbmcgYGZoLVx1MDAzZWJ1ZmAgYW5kIGBmaC1cdTAwM2VmYi5sZW5gLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGV4ZWN1dGlvbiAocGFnZSBmYXVsdHMpIG9yIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc3NDYxZDZhYjJhMDBlNjNiOWExNzZmMjNjYzQ4MmJlNDIwMGVlYjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAwOTo1NDoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmMgYi9mcy9vdmVybGF5ZnMvY29weV91cC5jCmluZGV4IGU5NjM3MDFiNGM4NzcuLmNiNjYxOWI1ZjNlZTEgMTAwNjQ0Ci0tLSBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvb3ZlcmxheWZzL2NvcHlfdXAuYwpAQCAtNDkxLDcgJiM0Mzs0OTEsNyBAQCBpbnQgb3ZsX3NldF9vcmlnaW5fZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCwKIAkvKgogCSAqIERvIG5vdCBmYWlsIHdoZW4gdXBwZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCB4YXR0cnMuCiAJICovCi0JZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoLSZndDtidWYsCiYjNDM7CWVyciA9IG92bF9jaGVja19zZXR4YXR0cihvZnMsIHVwcGVyLCBPVkxfWEFUVFJfT1JJR0lOLCBmaCA/IGZoLSZndDtidWYgOiBOVUxMLAogCQkJCSBmaCA/IGZoLSZndDtmYi5sZW4gOiAwLCAwKTsKIAogCS8qIElnbm9yZSAtRVBFUk0gZnJvbSBzZXR0aW5nICYjMzQ7dXNlci4qJiMzNDsgb24gc3ltbGluay9zcGVjaWFsICovCkBAIC01MDksNyAmIzQzOzUwOSw4IEBAIHN0YXRpYyBpbnQgb3ZsX3NldF91cHBlcl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLAogCWlmIChJU19FUlIoZmgpKQogCQlyZXR1cm4gUFRSX0VSUihmaCk7CiAKLQllcnIgPSBvdmxfc2V0eGF0dHIob2ZzLCBpbmRleCwgT1ZMX1hBVFRSX1VQUEVSLCBmaC0mZ3Q7YnVmLCBmaC0mZ3Q7ZmIubGVuKTsKJiM0MzsJZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUiwKJiM0MzsJCWZoID8gZmgtJmd0O2J1ZiA6IE5VTEwsIGZoID8gZmgtJmd0O2ZiLmxlbiA6IDApOwogCiAJa2ZyZWUoZmgpOwogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvbmFtZWkuYyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jCmluZGV4IGNhODk5ZmRmYWFmZDIuLjRhZTI2YzgyMGI1ODcgMTAwNjQ0Ci0tLSBhL2ZzL292ZXJsYXlmcy9uYW1laS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jCkBAIC03MzcsMTIgJiM0Mzs3MzcsMTQgQEAgaW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleCkKIGludCBvdmxfZ2V0X2luZGV4X25hbWVfZmgoY29uc3Qgc3RydWN0IG92bF9maCAqZmgsIHN0cnVjdCBxc3RyICpuYW1lKQogewogCWNoYXIgKm4sICpzOwomIzQzOwlzaXplX3QgbGVuID0gZmggPyBmaC0mZ3Q7ZmIubGVuIDogMTsKJiM0MzsJY29uc3QgY2hhciAqYnVmID0gZmggPyBmaC0mZ3Q7YnVmIDogKGNvbnN0IHU4ICopJiMzNDsmIzM0OzsKIAotCW4gPSBrY2FsbG9jKGZoLSZndDtmYi5sZW4sIDIsIEdGUF9LRVJORUwpOwomIzQzOwluID0ga2NhbGxvYyhsZW4sIDIsIEdGUF9LRVJORUwpOwogCWlmICghbikKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlzICA9IGJpbjJoZXgobiwgZmgtJmd0O2J1ZiwgZmgtJmd0O2ZiLmxlbik7CiYjNDM7CXMgID0gYmluMmhleChuLCBidWYsIGxlbik7CiAJKm5hbWUgPSAoc3RydWN0IHFzdHIpIFFTVFJfSU5JVChuLCBzIC0gbik7CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDA5OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MzEKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogODE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIFJlYXNvbmluZzogT3ZlcmxheUZTIE5VTEwgUG9pbnRlciBEZXJlZmVyZW5jZSBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBmcy9vdmVybGF5ZnMvY29weV91cC5jYCBhbmQgYGZzL292ZXJsYXlmcy9uYW1laS5jYC4gSXQmIzM5O3MgYWxsIGFib3V0IGFkZGluZyBOVUxMIGNoZWNrcyBmb3IgdGhlIGBmaGAgcG9pbnRlciwgd2hpY2ggaXMgYSBgc3RydWN0IG92bF9maGAuIFJpZ2h0LCBtYWtlcyBzZW5zZS4KCkluIGBvdmxfc2V0X29yaWdpbl9maGAgYW5kIGBvdmxfc2V0X3VwcGVyX2ZoYCwgdGhleSYjMzk7dmUgYWRkZWQgY29uZGl0aW9uYWwgY2hlY2tzIGxpa2UgYGZoID8gZmgtJmd0O2J1ZiA6IE5VTExgIGFuZCBgZmggPyBmaC0mZ3Q7ZmIubGVuIDogMGAuIEdvb2QsIHRoaXMgcHJldmVudHMgdGhlIGRyZWFkZWQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLiBTYW1lIGdvZXMgZm9yIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgLiBJbml0aWFsbHksIHRoZXJlIHdhcyBhIGRpcmVjdCBkZXJlZmVyZW5jZSBvZiBgZmhgIHRvIGFjY2VzcyBgLmZiLmxlbmAgYW5kIGAuYnVmYC4gTm93LCB0aGVyZSYjMzk7cyBhIGNvbmRpdGlvbmFsIGNoZWNrIGJlZm9yZSBhY2Nlc3NpbmcgdGhlbS4KClNwZWNpZmljYWxseSBpbiBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCwgaWYgYGZoYCBpcyBOVUxMLCBpdCYjMzk7cyBhbGxvY2F0aW5nIDIgYnl0ZXMsIGFuZCB0aGVuIHVzZXMgYSBgYmluMmhleGAgY2FsbCB3aXRoIGBidWYgPSAmIzM0OyYjMzQ7YCAoZW1wdHkgc3RyaW5nKSBhbmQgYGxlbiA9IDFgLiBIYW5nIG9uLi4udGhlIGVtcHR5IHN0cmluZyBgJiMzNDsmIzM0O2AgKmlzKiBhIDEtYnl0ZSBzdHJpbmcgY29udGFpbmluZyBqdXN0IGEgbnVsbCB0ZXJtaW5hdG9yLCBzbyB0aGUgY2FsbCB0byBgYmluMmhleGAgd2lsbCByZWFkIHRoYXQgb25lIG51bGwgYnl0ZSBhbmQgd3JpdGUgdG8gdGhlIGFsbG9jYXRlZCB0d28gYnl0ZXMuIFBlcmZlY3RseSB2YWxpZCBtZW1vcnkgYWNjZXNzIGFuZCBpbml0aWFsaXphdGlvbiwgcmVhbGx5LiBJdCB3aWxsIHdyaXRlIHR3byBieXRlcywgd2l0aCB0aGUgZmlyc3QgYnl0ZSBiZWluZyB6ZXJvLiBObyBpc3N1ZXMgdGhlcmUuCgpTbywgdGhlIHdob2xlIHBvaW50IGlzIHByZXZlbnRpbmcgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gS0FTQU4gd291bGQgcGljayB0aGF0IHVwLCBidXQgc3RhbmRhcmQga2VybmVsIGV4ZWN1dGlvbiAocGFnZSBmYXVsdHMpIHdvdWxkIGRvIGl0IHRvby4gVGhlcmUmIzM5O3Mgbm8gaW50cm9kdWN0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIHdpdGggdGhlc2UgY2hhbmdlcy4gVGhlIHBhdGNoIGFkZHMgb25seSBgaWYgKGZoKSAuLi5gIHRvIGVuc3VyZSBgZmhgIGlzIG5vdCBudWxsLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgaXMgKmFueSogdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzayBpbiB0aGlzIHBhdGNoLi4uIHRoZSBgZmhgIGlzIGEgcG9pbnRlciB0byBgc3RydWN0IG92bF9maGAuIElmIGl0JiMzOTtzIE5VTEwsIHdlIHVzZSBOVUxMLzAsIG9yICYjMzQ7JiMzNDsvMS4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW52b2x2ZWQuIFRoaXMgaXMgcHVyZWx5IGFib3V0IGF2b2lkaW5nIHRoZSBkZXJlZmVyZW5jZS4gVGhlIGJ1ZyBpcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4KClNvLCBJIHRoaW5rIEkgaGF2ZSBpdDogKipLTVNBTiBpcyBub3QgbmVlZGVkIGhlcmUuKiogVGhlIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggaXMgcmVsaWFibHkgY2F1Z2h0IGJ5IGV4aXN0aW5nIG1lY2hhbmlzbXMuIEl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBub3IgZG9lcyBpdCB0b3VjaCBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IG1pZ2h0IGhhcmJvciB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhlcmUmIzM5O3Mgbm90aGluZyBoZXJlIHRoYXQgd2FycmFudHMgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBUaGUgcGF0Y2ggaXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDA5OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ5IGFkZGluZyBjaGVja3MgZm9yIGBmaCAhPSBOVUxMYCBiZWZvcmUgYWNjZXNzaW5nIGBmaC1cdTAwM2VidWZgIGFuZCBgZmgtXHUwMDNlZmIubGVuYC4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBleGVjdXRpb24gKHBhZ2UgZmF1bHRzKSBvciBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGNoZWNrcyBmb3IgYGZoICE9IE5VTExgIGJlZm9yZSBhY2Nlc3NpbmcgYGZoLVx1MDAzZWJ1ZmAgYW5kIGBmaC1cdTAwM2VmYi5sZW5gLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGV4ZWN1dGlvbiAocGFnZSBmYXVsdHMpIG9yIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU0OjI5LjI4NTExMjgyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzkyOTU0MDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9WRVJMQVlfRlNcIixcbiAgICBcIk9WRVJMQVlfRlNfSU5ERVhcIixcbiAgICBcIk9WRVJMQVlfRlNfTkZTX0VYUE9SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm92bF9zZXRfb3JpZ2luX2ZoXCIsXG4gICAgXCJvdmxfZ2V0X2luZGV4X25hbWVfZmhcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ5IGFkZGluZyBjaGVja3MgZm9yIGBmaCAhPSBOVUxMYCBiZWZvcmUgYWNjZXNzaW5nIGBmaC1cXHUwMDNlYnVmYCBhbmQgYGZoLVxcdTAwM2VmYi5sZW5gLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGV4ZWN1dGlvbiAocGFnZSBmYXVsdHMpIG9yIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgaW4gYG92bF9zZXRfb3JpZ2luX2ZoYCwgYG92bF9zZXRfdXBwZXJfZmhgLCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgd2hlbiBgZmhgIGlzIE5VTEwuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBvdmVybGF5ZnMgb3BlcmF0aW9ucyBsaWtlIGNvcHktdXAgYW5kIGluZGV4IGNyZWF0aW9uLiBUaGUgY2hhbmdlcyBoYXZlIGZ1bmN0aW9uYWwgaW1wYWN0IGFuZCBhcmUgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDk6NTQ6MjkuMjg1MTE4MzY0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDU2OTI4MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NzQ2MWQ2YWIyYTAwZTYzYjlhMTc2ZjIzY2M0ODJiZTQyMDBlZWI0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDI0IDA5OjU0OjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmMgYi9mcy9vdmVybGF5ZnMvY29weV91cC5jXFxuaW5kZXggZTk2MzcwMWI0Yzg3Ny4uY2I2NjE5YjVmM2VlMSAxMDA2NDRcXG4tLS0gYS9mcy9vdmVybGF5ZnMvY29weV91cC5jXFxuKysrIGIvZnMvb3ZlcmxheWZzL2NvcHlfdXAuY1xcbkBAIC00OTEsNyArNDkxLDcgQEAgaW50IG92bF9zZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXFxuIFxcdC8qXFxuIFxcdCAqIERvIG5vdCBmYWlsIHdoZW4gdXBwZXIgZG9lc24ndCBzdXBwb3J0IHhhdHRycy5cXG4gXFx0ICovXFxuLVxcdGVyciA9IG92bF9jaGVja19zZXR4YXR0cihvZnMsIHVwcGVyLCBPVkxfWEFUVFJfT1JJR0lOLCBmaC1cXHUwMDNlYnVmLFxcbitcXHRlcnIgPSBvdmxfY2hlY2tfc2V0eGF0dHIob2ZzLCB1cHBlciwgT1ZMX1hBVFRSX09SSUdJTiwgZmggPyBmaC1cXHUwMDNlYnVmIDogTlVMTCxcXG4gXFx0XFx0XFx0XFx0IGZoID8gZmgtXFx1MDAzZWZiLmxlbiA6IDAsIDApO1xcbiBcXG4gXFx0LyogSWdub3JlIC1FUEVSTSBmcm9tIHNldHRpbmcgXFxcInVzZXIuKlxcXCIgb24gc3ltbGluay9zcGVjaWFsICovXFxuQEAgLTUwOSw3ICs1MDksOCBAQCBzdGF0aWMgaW50IG92bF9zZXRfdXBwZXJfZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcixcXG4gXFx0aWYgKElTX0VSUihmaCkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKGZoKTtcXG4gXFxuLVxcdGVyciA9IG92bF9zZXR4YXR0cihvZnMsIGluZGV4LCBPVkxfWEFUVFJfVVBQRVIsIGZoLVxcdTAwM2VidWYsIGZoLVxcdTAwM2VmYi5sZW4pO1xcbitcXHRlcnIgPSBvdmxfc2V0eGF0dHIob2ZzLCBpbmRleCwgT1ZMX1hBVFRSX1VQUEVSLFxcbitcXHRcXHRmaCA/IGZoLVxcdTAwM2VidWYgOiBOVUxMLCBmaCA/IGZoLVxcdTAwM2VmYi5sZW4gOiAwKTtcXG4gXFxuIFxcdGtmcmVlKGZoKTtcXG4gXFx0cmV0dXJuIGVycjtcXG5kaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL25hbWVpLmMgYi9mcy9vdmVybGF5ZnMvbmFtZWkuY1xcbmluZGV4IGNhODk5ZmRmYWFmZDIuLjRhZTI2YzgyMGI1ODcgMTAwNjQ0XFxuLS0tIGEvZnMvb3ZlcmxheWZzL25hbWVpLmNcXG4rKysgYi9mcy9vdmVybGF5ZnMvbmFtZWkuY1xcbkBAIC03MzcsMTIgKzczNywxNCBAQCBpbnQgb3ZsX3ZlcmlmeV9pbmRleChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmluZGV4KVxcbiBpbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcXG4ge1xcbiBcXHRjaGFyICpuLCAqcztcXG4rXFx0c2l6ZV90IGxlbiA9IGZoID8gZmgtXFx1MDAzZWZiLmxlbiA6IDE7XFxuK1xcdGNvbnN0IGNoYXIgKmJ1ZiA9IGZoID8gZmgtXFx1MDAzZWJ1ZiA6IChjb25zdCB1OCAqKVxcXCJcXFwiO1xcbiBcXG4tXFx0biA9IGtjYWxsb2MoZmgtXFx1MDAzZWZiLmxlbiwgMiwgR0ZQX0tFUk5FTCk7XFxuK1xcdG4gPSBrY2FsbG9jKGxlbiwgMiwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICghbilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRzICA9IGJpbjJoZXgobiwgZmgtXFx1MDAzZWJ1ZiwgZmgtXFx1MDAzZWZiLmxlbik7XFxuK1xcdHMgID0gYmluMmhleChuLCBidWYsIGxlbik7XFxuIFxcdCpuYW1lID0gKHN0cnVjdCBxc3RyKSBRU1RSX0lOSVQobiwgcyAtIG4pO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU0OjI5LjY5MTU1OTE5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQxOTU3MTMwMTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9WRVJMQVlfRlNcIixcbiAgICBcIk9WRVJMQVlfRlNfSU5ERVhcIixcbiAgICBcIk9WRVJMQVlfRlNfTkZTX0VYUE9SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm92bF9zZXRfb3JpZ2luX2ZoXCIsXG4gICAgXCJvdmxfZ2V0X2luZGV4X25hbWVfZmhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiBgb3ZsX3NldF9vcmlnaW5fZmhgLCBgb3ZsX3NldF91cHBlcl9maGAsIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCB3aGVuIGBmaGAgaXMgTlVMTC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIG92ZXJsYXlmcyBvcGVyYXRpb25zIGxpa2UgY29weS11cCBhbmQgaW5kZXggY3JlYXRpb24uIFRoZSBjaGFuZ2VzIGhhdmUgZnVuY3Rpb25hbCBpbXBhY3QgYW5kIGFyZSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NzQ2MWQ2YWIyYTAwZTYzYjlhMTc2ZjIzY2M0ODJiZTQyMDBlZWI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMDk6NTQ6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvY29weV91cC5jIGIvZnMvb3ZlcmxheWZzL2NvcHlfdXAuY1xuaW5kZXggZTk2MzcwMWI0Yzg3Ny4uY2I2NjE5YjVmM2VlMSAxMDA2NDRcbi0tLSBhL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmNcbisrKyBiL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmNcbkBAIC00OTEsNyArNDkxLDcgQEAgaW50IG92bF9zZXRfb3JpZ2luX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXG4gXHQvKlxuIFx0ICogRG8gbm90IGZhaWwgd2hlbiB1cHBlciBkb2Vzbid0IHN1cHBvcnQgeGF0dHJzLlxuIFx0ICovXG4tXHRlcnIgPSBvdmxfY2hlY2tfc2V0eGF0dHIob2ZzLCB1cHBlciwgT1ZMX1hBVFRSX09SSUdJTiwgZmgtXHUwMDNlYnVmLFxuK1x0ZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoID8gZmgtXHUwMDNlYnVmIDogTlVMTCxcbiBcdFx0XHRcdCBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDAsIDApO1xuIFxuIFx0LyogSWdub3JlIC1FUEVSTSBmcm9tIHNldHRpbmcgXCJ1c2VyLipcIiBvbiBzeW1saW5rL3NwZWNpYWwgKi9cbkBAIC01MDksNyArNTA5LDggQEAgc3RhdGljIGludCBvdmxfc2V0X3VwcGVyX2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqdXBwZXIsXG4gXHRpZiAoSVNfRVJSKGZoKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoZmgpO1xuIFxuLVx0ZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUiwgZmgtXHUwMDNlYnVmLCBmaC1cdTAwM2VmYi5sZW4pO1xuK1x0ZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUixcbitcdFx0ZmggPyBmaC1cdTAwM2VidWYgOiBOVUxMLCBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDApO1xuIFxuIFx0a2ZyZWUoZmgpO1xuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvbmFtZWkuYyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jXG5pbmRleCBjYTg5OWZkZmFhZmQyLi40YWUyNmM4MjBiNTg3IDEwMDY0NFxuLS0tIGEvZnMvb3ZlcmxheWZzL25hbWVpLmNcbisrKyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jXG5AQCAtNzM3LDEyICs3MzcsMTQgQEAgaW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleClcbiBpbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcbiB7XG4gXHRjaGFyICpuLCAqcztcbitcdHNpemVfdCBsZW4gPSBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDE7XG4rXHRjb25zdCBjaGFyICpidWYgPSBmaCA/IGZoLVx1MDAzZWJ1ZiA6IChjb25zdCB1OCAqKVwiXCI7XG4gXG4tXHRuID0ga2NhbGxvYyhmaC1cdTAwM2VmYi5sZW4sIDIsIEdGUF9LRVJORUwpO1xuK1x0biA9IGtjYWxsb2MobGVuLCAyLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghbilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRzICA9IGJpbjJoZXgobiwgZmgtXHUwMDNlYnVmLCBmaC1cdTAwM2VmYi5sZW4pO1xuK1x0cyAgPSBiaW4yaGV4KG4sIGJ1ZiwgbGVuKTtcbiBcdCpuYW1lID0gKHN0cnVjdCBxc3RyKSBRU1RSX0lOSVQobiwgcyAtIG4pO1xuIFxuIFx0cmV0dXJuIDA7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwOTo1NDoyOS42OTE1Njg0NzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzM3ODMwOTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgT3ZlcmxheUZTIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvb3ZlcmxheWZzL2NvcHlfdXAuY2AgYW5kIGBmcy9vdmVybGF5ZnMvbmFtZWkuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgc29tZSBudWxsIGNoZWNrcyByZWxhdGVkIHRvIGBmaGAgaW4gdGhyZWUgc3BlY2lmaWMgZnVuY3Rpb25zOiBgb3ZsX3NldF9vcmlnaW5fZmhgLCBgb3ZsX3NldF91cHBlcl9maGAsIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYC4gTGV0J3MgYnJlYWsgZG93biB0aGUgY29kZSBjaGFuZ2VzLlxuXG5JbiBgb3ZsX3NldF9vcmlnaW5fZmhgLCB3ZSdyZSBub3cgZG9pbmcgYSBudWxsIGNoZWNrIG9uIGBmaGAgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQ6XG5gYGBjXG4tXHRlcnIgPSBvdmxfY2hlY2tfc2V0eGF0dHIob2ZzLCB1cHBlciwgT1ZMX1hBVFRSX09SSUdJTiwgZmgtXHUwMDNlYnVmLFxuK1x0ZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoID8gZmgtXHUwMDNlYnVmIDogTlVMTCxcbiBcdFx0XHRcdCBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDAsIDApO1xuYGBgXG5NYWtlcyBzZW5zZS4gIElmIGBmaGAgaXMgTlVMTCwgdGhlbiBgZmgtXHUwMDNlYnVmYCBhbmQgYGZoLVx1MDAzZWZiLmxlbmAgYXJlIG5vdCBkZXJlZmVyZW5jZWQuICBUaGlzIGlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgcHJhY3RpY2UuXG5cblRoZSBzYW1lIHBhdHRlcm4gaXMgcmVwZWF0ZWQgaW4gYG92bF9zZXRfdXBwZXJfZmhgOlxuYGBgY1xuLVx0ZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUiwgZmgtXHUwMDNlYnVmLCBmaC1cdTAwM2VmYi5sZW4pO1xuK1x0ZXJyID0gb3ZsX3NldHhhdHRyKG9mcywgaW5kZXgsIE9WTF9YQVRUUl9VUFBFUixcbitcdFx0ZmggPyBmaC1cdTAwM2VidWYgOiBOVUxMLCBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDApO1xuYGBgXG5BZ2FpbiwgYSBudWxsIGNoZWNrIG9uIGBmaGAgYmVmb3JlIGFjY2Vzc2luZyBpdHMgbWVtYmVycy4gUHJldmVudGluZyBhIGxpa2VseSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuXG5cbkZpbmFsbHksIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIGlzIGFsc28gYmVpbmcgYWRqdXN0ZWQ6XG5gYGBjXG4gXHRjaGFyICpuLCAqcztcbitcdHNpemVfdCBsZW4gPSBmaCA/IGZoLVx1MDAzZWZiLmxlbiA6IDE7XG4rXHRjb25zdCBjaGFyICpidWYgPSBmaCA/IGZoLVx1MDAzZWJ1ZiA6IChjb25zdCB1OCAqKVwiXCI7XG4gXG4tXHRuID0ga2NhbGxvYyhmaC1cdTAwM2VmYi5sZW4sIDIsIEdGUF9LRVJORUwpO1xuK1x0biA9IGtjYWxsb2MobGVuLCAyLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghbilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRzICA9IGJpbjJoZXgobiwgZmgtXHUwMDNlYnVmLCBmaC1cdTAwM2VmYi5sZW4pO1xuK1x0cyAgPSBiaW4yaGV4KG4sIGJ1ZiwgbGVuKTtcbmBgYFxuXG5IZXJlLCB3ZSdyZSBub3Qgb25seSBhZGRpbmcgdGhlIG51bGwgY2hlY2ssIGJ1dCB3ZSdyZSBhbHNvIG1vZGlmeWluZyB0aGUgbG9naWMgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGBmaGAgaXMgTlVMTC4gIEluc3RlYWQgb2YgcGFzc2luZyBgZmgtXHUwMDNlYnVmYCBhbmQgYGZoLVx1MDAzZWZiLmxlbmAgd2hpY2ggd291bGQgZGVyZWZlcmVuY2UgYSBOVUxMIHBvaW50ZXIsIHdlIG5vdyBzdWJzdGl0dXRlIGBOVUxMYCAob3IgYSBwb2ludGVyIHRvIGFuIGVtcHR5IHN0cmluZykgYW5kIGEgbGVuZ3RoIG9mIDEgaW4gdGhlIHRlcm5hcnkgY29uZGl0aW9uYWwuIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgY3Jhc2ggZHVyaW5nIGBrY2FsbG9jYCBhbmQgYGJpbjJoZXhgIGNhbGxzLlxuXG5TbywgZnVuY3Rpb25hbGx5LCB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYnVnIGZpeCwgcHJldmVudGluZyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiB0aGVzZSB0aHJlZSBmdW5jdGlvbnMuICBOb3csIEkgbmVlZCB0byBjaGVjayBob3cgcmVhY2hhYmxlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYW5kIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZC4gT3ZlcmxheWZzIGlzIGVuYWJsZWQgYnkgYENPTkZJR19PVkVSTEFZX0ZTYCwgc28gSSBrbm93IHdoZXJlIHRvIHN0YXJ0IGxvb2tpbmcuIEknbGwgc2VhcmNoIGZvciB0aG9zZSBmdW5jdGlvbiBuYW1lcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHBhdGhzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTM0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDk6NTQ6MzguNDI5NDAyMDAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDEzMTM0NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZsX3NldF9vcmlnaW5fZmh8b3ZsX3NldF91cHBlcl9maHxvdmxfZ2V0X2luZGV4X25hbWVfZmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz00NzM9c3RydWN0IG92bF9maCAqb3ZsX2dldF9vcmlnaW5fZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICpvcmlnaW4pXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTQ4NS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjQ4NjppbnQgb3ZsX3NldF9vcmlnaW5fZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCxcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTQ4Ny1cXHRcXHQgICAgICBzdHJ1Y3QgZGVudHJ5ICp1cHBlcilcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTAxLS8qIFN0b3JlIGZpbGUgaGFuZGxlIG9mIEB1cHBlciBkaXIgaW4gQGluZGV4IGRpciBlbnRyeSAqL1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTAyOnN0YXRpYyBpbnQgb3ZsX3NldF91cHBlcl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLFxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTAzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgZGVudHJ5ICppbmRleClcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9NTIyPXN0YXRpYyBpbnQgb3ZsX2NyZWF0ZV9pbmRleChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLFxcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01NDYtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo1NDc6XFx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGZoLCBcXHUwMDI2bmFtZSk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01NDgtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTU1LVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTU2OlxcdGVyciA9IG92bF9zZXRfdXBwZXJfZmgob2ZzLCB1cHBlciwgdGVtcCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01NTctXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9NjYwPXN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfbWV0YWRhdGEoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYywgc3RydWN0IGRlbnRyeSAqdGVtcClcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjg5LVxcdGlmIChjLVxcdTAwM2VvcmlnaW4pIHtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjY5MDpcXHRcXHRlcnIgPSBvdmxfc2V0X29yaWdpbl9maChvZnMsIGMtXFx1MDAzZW9yaWdpbl9maCwgdGVtcCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02OTEtXFx0XFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jPTYzNj1pbnQgb3ZsX3ZlcmlmeV9pbmRleChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmluZGV4KVxcbi0tXFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzM2LVxcbmZzL292ZXJsYXlmcy9uYW1laS5jOjczNzppbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSlcXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03Mzgte1xcbi0tXFxuZnMvb3ZlcmxheWZzL25hbWVpLmM9NzY5PWludCBvdmxfZ2V0X2luZGV4X25hbWUoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICpvcmlnaW4sXFxuLS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03NzgtXFxuZnMvb3ZlcmxheWZzL25hbWVpLmM6Nzc5OlxcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgbmFtZSk7XFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzgwLVxcbi0tXFxuZnMvb3ZlcmxheWZzL25hbWVpLmM9Nzg2PXN0cnVjdCBkZW50cnkgKm92bF9nZXRfaW5kZXhfZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3Qgb3ZsX2ZoICpmaClcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc5MS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo3OTI6XFx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGZoLCBcXHUwMDI2bmFtZSk7XFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzkzLVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYz05Mjk9c3RhdGljIGludCBvdmxfZml4X29yaWdpbihzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTk0NS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo5NDY6XFx0ZXJyID0gb3ZsX3NldF9vcmlnaW5fZmgob2ZzLCBmaCwgdXBwZXIpO1xcbmZzL292ZXJsYXlmcy9uYW1laS5jLTk0Ny1cXHRpZiAoIWVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaD03NDA9aW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleCk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjc0MTppbnQgb3ZsX2dldF9pbmRleF9uYW1lX2ZoKGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLCBzdHJ1Y3QgcXN0ciAqbmFtZSk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oLTc0Mi1pbnQgb3ZsX2dldF9pbmRleF9uYW1lKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqb3JpZ2luLFxcbi0tXFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oPTkzMT1zdHJ1Y3Qgb3ZsX2ZoICpvdmxfZ2V0X29yaWdpbl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKm9yaWdpbik7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjkzMjppbnQgb3ZsX3NldF9vcmlnaW5fZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCxcXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtOTMzLVxcdFxcdCAgICAgIHN0cnVjdCBkZW50cnkgKnVwcGVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDk6NTQ6NDAuODMwNzIxNTkzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ3NjM2MDgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipPdmVybGF5RlMgRnVuY3Rpb25hbGl0eSBhbmQgRmlsZSBIYW5kbGVzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGVzZSBjaGFuZ2VzLCBhbmQgaXQgbG9va3MgbGlrZSB0aGV5J3JlIGFsbCBjZW50ZXJlZCBhcm91bmQgT3ZlcmxheUZTLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgb3ZlcmxheWZzYCBjb2RlLiBUaGUga2V5IGZ1bmN0aW9ucyBJJ20gc2VlaW5nIGFyZSByZWFjaGFibGUsIGFuZCBzZWVtIGludGVncmFsIHRvIHRoZSBmdW5jdGlvbmFsaXR5LiBOb3csIGZyb20gd2hhdCBJIGNhbiB0ZWxsLCBgb3ZsX3NldF9vcmlnaW5fZmhgIGlzIGNhbGxlZCBmcm9tIHR3byBvdGhlciBmdW5jdGlvbnMgSSBrbm93IHdlbGwsIGBvdmxfY29weV91cF9tZXRhZGF0YWAgYW5kIGBvdmxfZml4X29yaWdpbmAuIGBvdmxfc2V0X3VwcGVyX2ZoYCwgb24gdGhlIG90aGVyIGhhbmQsIGlzIGNhbGxlZCBmcm9tIGBvdmxfY3JlYXRlX2luZGV4YCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoYXQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYG92bF9jcmVhdGVfaW5kZXhgLCBgb3ZsX2dldF9pbmRleF9uYW1lYCwgYW5kIGBvdmxfZ2V0X2luZGV4X2ZoYCwgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgdGhpcyBvbmUuXG5cblRoZSBjb25maWcgcmVxdWlyZWQgaXMgdGhlIHN0YW5kYXJkIGBPVkVSTEFZX0ZTYCwgc28gdGhhdCdzIGdvb2QuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgLiBXYWl0IGEgc2Vjb25k4oCmIGBvdmxfc2V0X3VwcGVyX2ZoYCBpcyBzdGF0aWM/IEhtbSwgdGhhdCBjb3VsZCBhZGQgYSBsYXllciBvZiBjb21wbGV4aXR5LlxuXG5MZXQgbWUgdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuIEkgc2hvdWxkIHByb2JhYmx5IHJlLWV4YW1pbmUgaG93IGFsbCBvZiB0aGlzIHRpZXMgdG9nZXRoZXIgYnkgbG9va2luZyBjbG9zZXIgYXQgYG92bF9jcmVhdGVfaW5kZXhgLCBgb3ZsX2NvcHlfdXBfbWV0YWRhdGFgLCBgb3ZsX2ZpeF9vcmlnaW5gLCBgb3ZsX2dldF9pbmRleF9uYW1lYCwgYW5kIGBvdmxfZ2V0X2luZGV4X2ZoYC4gVGhpcyBzaG91bGQgaGVscCBtZSBjb250ZXh0dWFsaXplIHRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTIwLCJPdXRwdXRUb2tlbnMiOjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU0OjQ3LjMwNzA4NTU3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzM4OTQzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZsX2NyZWF0ZV9pbmRleHxvdmxfY29weV91cF9tZXRhZGF0YXxvdmxfZml4X29yaWdpbnxvdmxfZ2V0X2luZGV4X25hbWV8b3ZsX2dldF9pbmRleF9maFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9vdmVybGF5ZnMvY29weV91cC5jPTUwMj1zdGF0aWMgaW50IG92bF9zZXRfdXBwZXJfZmgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcixcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTIxLSAqL1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTIyOnN0YXRpYyBpbnQgb3ZsX2NyZWF0ZV9pbmRleChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLFxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTIzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgZGVudHJ5ICp1cHBlcilcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTQ2LVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NTQ3OlxcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgXFx1MDAyNm5hbWUpO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNTQ4LVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTY0MD1zdGF0aWMgaW50IG92bF9jb3B5X3VwX2RhdGEoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYywgY29uc3Qgc3RydWN0IHBhdGggKnRlbXApXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTY1OS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjY2MDpzdGF0aWMgaW50IG92bF9jb3B5X3VwX21ldGFkYXRhKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMsIHN0cnVjdCBkZW50cnkgKnRlbXApXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NjEte1xcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz03NTk9c3RhdGljIGludCBvdmxfY29weV91cF93b3JrZGlyKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc5Ni1cXHRpZiAoU19JU0RJUihjLVxcdTAwM2VzdGF0Lm1vZGUpIFxcdTAwMjZcXHUwMDI2IGMtXFx1MDAzZWluZGV4ZWQpIHtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjc5NzpcXHRcXHRlcnIgPSBvdmxfY3JlYXRlX2luZGV4KGMtXFx1MDAzZWRlbnRyeSwgYy1cXHUwMDNlb3JpZ2luX2ZoLCB0ZW1wKTtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc5OC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjAtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo4MjE6XFx0ZXJyID0gb3ZsX2NvcHlfdXBfbWV0YWRhdGEoYywgdGVtcCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjItXFx0aWYgKCFlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTg1Mz1zdGF0aWMgaW50IG92bF9jb3B5X3VwX3RtcGZpbGUoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYylcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODgyLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODgzOlxcdGVyciA9IG92bF9jb3B5X3VwX21ldGFkYXRhKGMsIHRlbXApO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODg0LVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jPTkzMz1zdGF0aWMgaW50IG92bF9kb19jb3B5X3VwKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk2Ni1cXHRcXHRjLVxcdTAwM2VkZXN0ZGlyID0gb3ZsX2luZGV4ZGlyKGMtXFx1MDAzZWRlbnRyeS1cXHUwMDNlZF9zYik7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo5Njc6XFx0XFx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lKG9mcywgb3JpZ2luLCBcXHUwMDI2Yy1cXHUwMDNlZGVzdG5hbWUpO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtOTY4LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvZXhwb3J0LmM9Njg2PXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpvdmxfbG93ZXJfZmhfdG9fZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvb3ZlcmxheWZzL2V4cG9ydC5jLTcxNy1cXHRpZiAob3ZsX2luZGV4ZGlyKHNiKSkge1xcbmZzL292ZXJsYXlmcy9leHBvcnQuYzo3MTg6XFx0XFx0aW5kZXggPSBvdmxfZ2V0X2luZGV4X2ZoKG9mcywgZmgpO1xcbmZzL292ZXJsYXlmcy9leHBvcnQuYy03MTktXFx0XFx0ZXJyID0gUFRSX0VSUihpbmRleCk7XFxuLS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYz02MzY9aW50IG92bF92ZXJpZnlfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICppbmRleClcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTczNi1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo3Mzc6aW50IG92bF9nZXRfaW5kZXhfbmFtZV9maChjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCwgc3RydWN0IHFzdHIgKm5hbWUpXFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzM4LXtcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc2OC0gKi9cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo3Njk6aW50IG92bF9nZXRfaW5kZXhfbmFtZShzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKm9yaWdpbixcXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03NzAtXFx0XFx0ICAgICAgIHN0cnVjdCBxc3RyICpuYW1lKVxcbi0tXFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtNzc4LVxcbmZzL292ZXJsYXlmcy9uYW1laS5jOjc3OTpcXHRlcnIgPSBvdmxfZ2V0X2luZGV4X25hbWVfZmgoZmgsIG5hbWUpO1xcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc4MC1cXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc4NS0vKiBMb29rdXAgaW5kZXggYnkgZmlsZSBoYW5kbGUgZm9yIE5GUyBleHBvcnQgKi9cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo3ODY6c3RydWN0IGRlbnRyeSAqb3ZsX2dldF9pbmRleF9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBvdmxfZmggKmZoKVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc4Ny17XFxuLS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYy03OTEtXFxuZnMvb3ZlcmxheWZzL25hbWVpLmM6NzkyOlxcdGVyciA9IG92bF9nZXRfaW5kZXhfbmFtZV9maChmaCwgXFx1MDAyNm5hbWUpO1xcbmZzL292ZXJsYXlmcy9uYW1laS5jLTc5My1cXHRpZiAoZXJyKVxcbi0tXFxuZnMvb3ZlcmxheWZzL25hbWVpLmM9ODE1PXN0cnVjdCBkZW50cnkgKm92bF9sb29rdXBfaW5kZXgoc3RydWN0IG92bF9mcyAqb2ZzLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcixcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTgyMy1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYzo4MjQ6XFx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lKG9mcywgb3JpZ2luLCBcXHUwMDI2bmFtZSk7XFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtODI1LVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvbmFtZWkuYz05MDU9aW50IG92bF9wYXRoX25leHQoaW50IGlkeCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgcGF0aCAqcGF0aCxcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTkyOC0vKiBGaXggbWlzc2luZyAnb3JpZ2luJyB4YXR0ciAqL1xcbmZzL292ZXJsYXlmcy9uYW1laS5jOjkyOTpzdGF0aWMgaW50IG92bF9maXhfb3JpZ2luKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTkzMC1cXHRcXHRcXHQgIHN0cnVjdCBkZW50cnkgKmxvd2VyLCBzdHJ1Y3QgZGVudHJ5ICp1cHBlcilcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jPTEwOTI9c3RhdGljIGludCBvdmxfbG9va3VwX2xheWVycyhzdHJ1Y3Qgb3ZsX2xvb2t1cF9jdHggKmN0eCwgc3RydWN0IG92bF9sb29rdXBfZGF0YSAqZClcXG4tLVxcbmZzL292ZXJsYXlmcy9uYW1laS5jLTExODEtXFx0XFx0aWYgKGN0eC1cXHUwMDNldXBwZXJkZW50cnkgXFx1MDAyNlxcdTAwMjYgIWN0eC1cXHUwMDNlY3RyIFxcdTAwMjZcXHUwMDI2ICFvZnMtXFx1MDAzZW5veGF0dHIgXFx1MDAyNlxcdTAwMjYgZC1cXHUwMDNlaXNfZGlyKSB7XFxuZnMvb3ZlcmxheWZzL25hbWVpLmM6MTE4MjpcXHRcXHRcXHRlcnIgPSBvdmxfZml4X29yaWdpbihvZnMsIGRlbnRyeSwgdGhpcywgY3R4LVxcdTAwM2V1cHBlcmRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL25hbWVpLmMtMTE4My1cXHRcXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg9NzQwPWludCBvdmxfdmVyaWZ5X2luZGV4KHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqaW5kZXgpO1xcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo3NDE6aW50IG92bF9nZXRfaW5kZXhfbmFtZV9maChjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCwgc3RydWN0IHFzdHIgKm5hbWUpO1xcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo3NDI6aW50IG92bF9nZXRfaW5kZXhfbmFtZShzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKm9yaWdpbixcXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtNzQzLVxcdFxcdCAgICAgICBzdHJ1Y3QgcXN0ciAqbmFtZSk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjc0NDpzdHJ1Y3QgZGVudHJ5ICpvdmxfZ2V0X2luZGV4X2ZoKHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IG92bF9maCAqZmgpO1xcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaC03NDUtc3RydWN0IGRlbnRyeSAqb3ZsX2xvb2t1cF9pbmRleChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLFxcbi0tXFxuZnMvb3ZlcmxheWZzL3V0aWwuYz0xMDc1PXN0YXRpYyB2b2lkIG92bF9jbGVhbnVwX2luZGV4KHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4tLVxcbmZzL292ZXJsYXlmcy91dGlsLmMtMTA4Ni1cXG5mcy9vdmVybGF5ZnMvdXRpbC5jOjEwODc6XFx0ZXJyID0gb3ZsX2dldF9pbmRleF9uYW1lKG9mcywgbG93ZXJkZW50cnksIFxcdTAwMjZuYW1lKTtcXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTEwODgtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDk6NTQ6NDkuODQwOTg4NTE3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5NzUxMzMwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzLCBhcyBJIHVuZGVyc3RhbmQgaXQ6XG5cbioqQ29uc2lkZXJpbmcgT3ZlcmxheUZTIEZ1bmN0aW9uIFNlbGVjdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhlc2UgT3ZlcmxheUZTIGZ1bmN0aW9ucy4gSSBzZWUgdGhhdCBgb3ZsX3NldF9vcmlnaW5fZmhgIGFuZCBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCBhcmUgZGVmaW5lZCBhcyBub24tc3RhdGljLiBHb29kIHRvIGtub3cuIEJ1dCBJJ20gbm90aWNpbmcgYG92bF9zZXRfdXBwZXJfZmhgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBrZXkgZGlmZmVyZW5jZS4gVGhhdCBwcm9iYWJseSBtZWFucyBJIHNob3VsZCBiZSBsZWFuaW5nIHRvd2FyZHMgdXNpbmcgYG92bF9jcmVhdGVfaW5kZXhgIGluc3RlYWQsIGdpdmVuIGl0cyBzY29wZS4gSGFuZyBvbiBhIHNlY29uZCwgdGhvdWdo4oCmIGBvdmxfY3JlYXRlX2luZGV4YCBpcyBhbHNvIGEgc3RhdGljIGZ1bmN0aW9uISBPa2F5LCB0aGF0IHRocm93cyBhIHdyZW5jaCBpbiBteSBpbml0aWFsIGFzc3VtcHRpb24uIEkgbmVlZCB0byBrZWVwIGxvb2tpbmcuXG5cbkxldCdzIHNoaWZ0IGdlYXJzIGFuZCBjaGVjayBvdGhlciByZWxldmFudCBmdW5jdGlvbnMuIFBlcmhhcHMgSSBjYW4gZmluZCB3aGF0IEknbSBsb29raW5nIGZvciBieSBleGFtaW5pbmcgYG92bF9jb3B5X3VwX3dvcmtkaXJgLCBgb3ZsX2NvcHlfdXBfbWV0YWRhdGFgLCBvciBtYXliZSB0aGUgY29yZSBgb3ZsX2RvX2NvcHlfdXBgIGZ1bmN0aW9uLiBBaCwgaGVyZSdzIGBvdmxfZG9fY29weV91cGAgYW5kLCB5ZXMsIGl0J3MgYWxzbyBzdGF0aWMuIEFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBiYXNlIGBvdmxfY29weV91cGAgZnVuY3Rpb24gaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODQ2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU0OjU0LjQzODUwNDEwOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg5NzU1NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm92bF9jb3B5X3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL292ZXJsYXlmcy9jb3B5X3VwLmM9MjQ1PXN0YXRpYyBpbnQgb3ZsX3N5bmNfZmlsZShjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aClcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMjU5LVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MjYwOnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfZmlsZShzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTI2MS1cXHRcXHRcXHQgICAgc3RydWN0IGZpbGUgKm5ld19maWxlLCBsb2ZmX3QgbGVuLFxcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz01MjI9c3RhdGljIGludCBvdmxfY3JlYXRlX2luZGV4KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3Qgc3RydWN0IG92bF9maCAqZmgsXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU3Ny1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjU3ODpzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4IHtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU3OS1cXHRzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQ7XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTU5NS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjU5NjpzdGF0aWMgaW50IG92bF9saW5rX3VwKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy01OTcte1xcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02MzktXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo2NDA6c3RhdGljIGludCBvdmxfY29weV91cF9kYXRhKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMsIGNvbnN0IHN0cnVjdCBwYXRoICp0ZW1wKVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjQxLXtcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtNjUyLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6NjUzOlxcdGVyciA9IG92bF9jb3B5X3VwX2ZpbGUob2ZzLCBjLVxcdTAwM2VkZW50cnksIG5ld19maWxlLCBjLVxcdTAwM2VzdGF0LnNpemUsXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NTQtXFx0XFx0XFx0ICAgICAgICFjLVxcdTAwM2VtZXRhZGF0YV9mc3luYyk7XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTY1OS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjY2MDpzdGF0aWMgaW50IG92bF9jb3B5X3VwX21ldGFkYXRhKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMsIHN0cnVjdCBkZW50cnkgKnRlbXApXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy02NjEte1xcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYz03NTE9REVGSU5FX0NMQVNTKGNvcHlfdXBfY3JlZHMsIGNvbnN0IHN0cnVjdCBjcmVkICosXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc1OC0gKi9cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjc1OTpzdGF0aWMgaW50IG92bF9jb3B5X3VwX3dvcmtkaXIoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYylcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc2MC17XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTc5MC1cXHRwYXRoLmRlbnRyeSA9IHRlbXA7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo3OTE6XFx0ZXJyID0gb3ZsX2NvcHlfdXBfZGF0YShjLCBcXHUwMDI2cGF0aCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy03OTItXFx0b3ZsX3N0YXJ0X3dyaXRlKGMtXFx1MDAzZWRlbnRyeSk7XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTgwNC1cXHQgKiBsb2NrIG9yZGVyaW5nIHdpdGggc2Jfd3JpdGVycywgd2hpY2ggc2hvdWxkbid0IGJlIGhlbGQgd2hlbiBjYWxsaW5nXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo4MDU6XFx0ICogb3ZsX2NvcHlfdXBfZGF0YSgpLCBzbyBsb2NrIHdvcmtkaXIgYW5kIGRlc3RkaXIgYW5kIG1ha2Ugc3VyZSB0aGF0XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MDYtXFx0ICogdGVtcCB3YXNuJ3QgbW92ZWQgYmVmb3JlIGNvcHkgdXAgY29tcGxldGlvbiBvciBjbGVhbnVwLlxcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjAtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzo4MjE6XFx0ZXJyID0gb3ZsX2NvcHlfdXBfbWV0YWRhdGEoYywgdGVtcCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy04MjItXFx0aWYgKCFlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg1Mi0vKiBDb3B5dXAgdXNpbmcgT19UTVBGSUxFIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgY3Jvc3MgZGlyIGxvY2tpbmcgKi9cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjg1MzpzdGF0aWMgaW50IG92bF9jb3B5X3VwX3RtcGZpbGUoc3RydWN0IG92bF9jb3B5X3VwX2N0eCAqYylcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg1NC17XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg3NC1cXHRpZiAoIWMtXFx1MDAzZW1ldGFjb3B5IFxcdTAwMjZcXHUwMDI2IGMtXFx1MDAzZXN0YXQuc2l6ZSkge1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODc1OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwX2ZpbGUob2ZzLCBjLVxcdTAwM2VkZW50cnksIHRtcGZpbGUsIGMtXFx1MDAzZXN0YXQuc2l6ZSxcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTg3Ni1cXHRcXHRcXHRcXHQgICAgICAgIWMtXFx1MDAzZW1ldGFkYXRhX2ZzeW5jKTtcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODgyLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6ODgzOlxcdGVyciA9IG92bF9jb3B5X3VwX21ldGFkYXRhKGMsIHRlbXApO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtODg0LVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTkzMi0gKi9cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjkzMzpzdGF0aWMgaW50IG92bF9kb19jb3B5X3VwKHN0cnVjdCBvdmxfY29weV91cF9jdHggKmMpXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05MzQte1xcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05NzUtXFx0XFx0LypcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjk3NjpcXHRcXHQgKiBjLVxcdTAwM2VkZW50cnktXFx1MDAzZWRfbmFtZSBpcyBzdGFiaWx6ZWQgYnkgb3ZsX2NvcHlfdXBfc3RhcnQoKSxcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk3Ny1cXHRcXHQgKiBiZWNhdXNlIGlmIHdlIGdvdCBoZXJlLCBpdCBtZWFucyB0aGF0IGMtXFx1MDAzZWRlbnRyeSBoYXMgbm8gdXBwZXJcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk3OC1cXHRcXHQgKiBhbGlhcyBhbmQgY2hhbmdpbmcgLVxcdTAwM2VkX25hbWUgbWVhbnMgZ29pbmcgdGhyb3VnaCBvdmxfcmVuYW1lKClcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjk3OTpcXHRcXHQgKiB0aGF0IHdpbGwgY2FsbCBvdmxfY29weV91cCgpIG9uIHNvdXJjZSBhbmQgdGFyZ2V0IGRlbnRyeS5cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTk4MC1cXHRcXHQgKi9cXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtOTk0LVxcdGlmIChTX0lTUkVHKGMtXFx1MDAzZXN0YXQubW9kZSkgXFx1MDAyNlxcdTAwMjYgb2ZzLVxcdTAwM2V0bXBmaWxlKVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6OTk1OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwX3RtcGZpbGUoYyk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05OTYtXFx0ZWxzZVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6OTk3OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwX3dvcmtkaXIoYyk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy05OTgtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9MTA1OT1zdGF0aWMgc3NpemVfdCBvdmxfZ2V0eGF0dHJfdmFsdWUoY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIGNoYXIgKm5hbWUsIGNoYXIgKip2YWx1ZSlcXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTA4Mi0vKiBDb3B5IHVwIGRhdGEgb2YgYW4gaW5vZGUgd2hpY2ggd2FzIGNvcGllZCB1cCBtZXRhZGF0YSBvbmx5IGluIHRoZSBwYXN0LiAqL1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTA4MzpzdGF0aWMgaW50IG92bF9jb3B5X3VwX21ldGFfaW5vZGVfZGF0YShzdHJ1Y3Qgb3ZsX2NvcHlfdXBfY3R4ICpjKVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTA4NC17XFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExMDEtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMTAyOlxcdGVyciA9IG92bF9jb3B5X3VwX2RhdGEoYywgXFx1MDAyNnVwcGVycGF0aCk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMTAzLVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExMzEtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMTMyOnN0YXRpYyBpbnQgb3ZsX2NvcHlfdXBfb25lKHN0cnVjdCBkZW50cnkgKnBhcmVudCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTEzMy1cXHRcXHRcXHQgICBpbnQgZmxhZ3MpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExMzctXFx0c3RydWN0IHBhdGggcGFyZW50cGF0aDtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjExMzg6XFx0c3RydWN0IG92bF9jb3B5X3VwX2N0eCBjdHggPSB7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMTM5LVxcdFxcdC5wYXJlbnQgPSBwYXJlbnQsXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTExOTAtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMTkxOlxcdGVyciA9IG92bF9jb3B5X3VwX3N0YXJ0KGRlbnRyeSwgZmxhZ3MpO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTE5Mi1cXHQvKiBlcnIgXFx1MDAzYyAwOiBpbnRlcnJ1cHRlZCwgZXJyIFxcdTAwM2UgMDogcmFjZWQgd2l0aCBhbm90aGVyIGNvcHktdXAgKi9cXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTIwMS1cXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBvdmxfZGVudHJ5X25lZWRzX2RhdGFfY29weV91cF9sb2NrZWQoZGVudHJ5LCBmbGFncykpXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjAyOlxcdFxcdFxcdGVyciA9IG92bF9jb3B5X3VwX21ldGFfaW5vZGVfZGF0YShcXHUwMDI2Y3R4KTtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyMDM6XFx0XFx0b3ZsX2NvcHlfdXBfZW5kKGRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjA0LVxcdH1cXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTIwOS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyMTA6c3RhdGljIGludCBvdmxfY29weV91cF9mbGFncyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncylcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyMTEte1xcbi0tXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjUxLVxcdFxcdHdpdGhfb3ZsX2NyZWRzKGRlbnRyeS1cXHUwMDNlZF9zYilcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyNTI6XFx0XFx0XFx0ZXJyID0gb3ZsX2NvcHlfdXBfb25lKHBhcmVudCwgbmV4dCwgZmxhZ3MpO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI1My1cXG4tLVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM9MTI3Nj1pbnQgb3ZsX21heWJlX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpXFxuLS1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyODAtXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjgxOlxcdHJldHVybiBvdmxfY29weV91cF9mbGFncyhkZW50cnksIGZsYWdzKTtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jLTEyODItfVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI4My1cXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyODQ6aW50IG92bF9jb3B5X3VwX3dpdGhfZGF0YShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjg1LXtcXG5mcy9vdmVybGF5ZnMvY29weV91cC5jOjEyODY6XFx0cmV0dXJuIG92bF9jb3B5X3VwX2ZsYWdzKGRlbnRyeSwgT19XUk9OTFkpO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI4Ny19XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYy0xMjg4LVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmM6MTI4OTppbnQgb3ZsX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI5MC17XFxuZnMvb3ZlcmxheWZzL2NvcHlfdXAuYzoxMjkxOlxcdHJldHVybiBvdmxfY29weV91cF9mbGFncyhkZW50cnksIDApO1xcbmZzL292ZXJsYXlmcy9jb3B5X3VwLmMtMTI5Mi19XFxuLS1cXG5mcy9vdmVybGF5ZnMvZGlyLmM9NjkxPXN0YXRpYyBpbnQgb3ZsX2NyZWF0ZV9vYmplY3Qoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYy03MDAtXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjcwMTpcXHRlcnIgPSBvdmxfY29weV91cChkZW50cnktXFx1MDAzZWRfcGFyZW50KTtcXG5mcy9vdmVybGF5ZnMvZGlyLmMtNzAyLVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvZGlyLmM9NzY3PXN0YXRpYyBpbnQgb3ZsX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkLCBzdHJ1Y3QgaW5vZGUgKm5ld2RpcixcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYy03NzItXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjc3MzpcXHRlcnIgPSBvdmxfY29weV91cChvbGQpO1xcbmZzL292ZXJsYXlmcy9kaXIuYy03NzQtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYy03NzYtXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjc3NzpcXHRlcnIgPSBvdmxfY29weV91cChuZXctXFx1MDAzZWRfcGFyZW50KTtcXG5mcy9vdmVybGF5ZnMvZGlyLmMtNzc4LVxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMvZGlyLmM9OTM2PXN0YXRpYyBpbnQgb3ZsX2RvX3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGJvb2wgaXNfZGlyKVxcbi0tXFxuZnMvb3ZlcmxheWZzL2Rpci5jLTk0OC1cXG5mcy9vdmVybGF5ZnMvZGlyLmM6OTQ5OlxcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeS1cXHUwMDNlZF9wYXJlbnQpO1xcbmZzL292ZXJsYXlmcy9kaXIuYy05NTAtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYz0xMTM0PXN0YXRpYyBpbnQgb3ZsX3JlbmFtZV9zdGFydChzdHJ1Y3Qgb3ZsX3JlbmFtZWRhdGEgKm92bHJkLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KVxcbi0tXFxuZnMvb3ZlcmxheWZzL2Rpci5jLTExNzQtXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjExNzU6XFx0ZXJyID0gb3ZsX2NvcHlfdXAob2xkKTtcXG5mcy9vdmVybGF5ZnMvZGlyLmMtMTE3Ni1cXHRpZiAoZXJyKVxcbi0tXFxuZnMvb3ZlcmxheWZzL2Rpci5jLTExNzgtXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjExNzk6XFx0ZXJyID0gb3ZsX2NvcHlfdXAobmV3LVxcdTAwM2VkX3BhcmVudCk7XFxuZnMvb3ZlcmxheWZzL2Rpci5jLTExODAtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYy0xMTgzLVxcdGlmICghb3ZscmQtXFx1MDAzZW92ZXJ3cml0ZSkge1xcbmZzL292ZXJsYXlmcy9kaXIuYzoxMTg0OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwKG5ldyk7XFxuZnMvb3ZlcmxheWZzL2Rpci5jLTExODUtXFx0XFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9kaXIuYz0xNDIzPXN0YXRpYyBpbnQgb3ZsX3RtcGZpbGUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxcbi0tXFxuZnMvb3ZlcmxheWZzL2Rpci5jLTE0MzItXFxuZnMvb3ZlcmxheWZzL2Rpci5jOjE0MzM6XFx0ZXJyID0gb3ZsX2NvcHlfdXAoZGVudHJ5LVxcdTAwM2VkX3BhcmVudCk7XFxuZnMvb3ZlcmxheWZzL2Rpci5jLTE0MzQtXFx0aWYgKGVycilcXG4tLVxcbmZzL292ZXJsYXlmcy9leHBvcnQuYz0xOT1zdGF0aWMgaW50IG92bF9lbmNvZGVfbWF5YmVfY29weV91cChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuLS1cXG5mcy9vdmVybGF5ZnMvZXhwb3J0LmMtMjUtXFxuZnMvb3ZlcmxheWZzL2V4cG9ydC5jOjI2OlxcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL2V4cG9ydC5jLTI3LVxcdGlmIChlcnIpIHtcXG4tLVxcbmZzL292ZXJsYXlmcy9pbm9kZS5jPTIxPWludCBvdmxfc2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuZnMvb3ZlcmxheWZzL2lub2RlLmMtNDYtXFx0aWYgKCFmdWxsX2NvcHlfdXApXFxuZnMvb3ZlcmxheWZzL2lub2RlLmM6NDc6XFx0XFx0ZXJyID0gb3ZsX2NvcHlfdXAoZGVudHJ5KTtcXG5mcy9vdmVybGF5ZnMvaW5vZGUuYy00OC1cXHRlbHNlXFxuZnMvb3ZlcmxheWZzL2lub2RlLmM6NDk6XFx0XFx0ZXJyID0gb3ZsX2NvcHlfdXBfd2l0aF9kYXRhKGRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL2lub2RlLmMtNTAtXFx0aWYgKCFlcnIpIHtcXG4tLVxcbmZzL292ZXJsYXlmcy9pbm9kZS5jPTQ4NT1zdGF0aWMgaW50IG92bF9zZXRfb3JfcmVtb3ZlX2FjbChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9vdmVybGF5ZnMvaW5vZGUuYy01MTMtXFx0aWYgKCF1cHBlcmRlbnRyeSkge1xcbmZzL292ZXJsYXlmcy9pbm9kZS5jOjUxNDpcXHRcXHRlcnIgPSBvdmxfY29weV91cChkZW50cnkpO1xcbmZzL292ZXJsYXlmcy9pbm9kZS5jLTUxNS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZnMvb3ZlcmxheWZzL2lub2RlLmM9NjUzPWludCBvdmxfZmlsZWF0dHJfc2V0KHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbi0tXFxuZnMvb3ZlcmxheWZzL2lub2RlLmMtNjYwLVxcbmZzL292ZXJsYXlmcy9pbm9kZS5jOjY2MTpcXHRlcnIgPSBvdmxfY29weV91cChkZW50cnkpO1xcbmZzL292ZXJsYXlmcy9pbm9kZS5jLTY2Mi1cXHRpZiAoIWVycikge1xcbi0tXFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oPTUzOD1zdHJ1Y3QgZmlsZSAqb3ZsX3BhdGhfb3Blbihjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwgaW50IGZsYWdzKTtcXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmg6NTM5OmludCBvdmxfY29weV91cF9zdGFydChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncyk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjU0MDp2b2lkIG92bF9jb3B5X3VwX2VuZChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpO1xcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaC01NDEtYm9vbCBvdmxfYWxyZWFkeV9jb3BpZWRfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpO1xcbi0tXFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oPTkyMT12b2lkIG92bF9maWxlX2ZyZWUoc3RydWN0IG92bF9maWxlICpvZik7XFxuLS1cXG5mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgtOTIzLS8qIGNvcHlfdXAuYyAqL1xcbmZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaDo5MjQ6aW50IG92bF9jb3B5X3VwKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oOjkyNTppbnQgb3ZsX2NvcHlfdXBfd2l0aF9kYXRhKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oLTkyNi1pbnQgb3ZsX21heWJlX2NvcHlfdXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpO1xcbi0tXFxuZnMvb3ZlcmxheWZzL3V0aWwuYz01MzQ9Ym9vbCBvdmxfaGFzX3VwcGVyZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvb3ZlcmxheWZzL3V0aWwuYy01NDItXFx0ICogUGFpcnMgd2l0aCBzbXBfd21iKCkgaW4gb3ZsX3NldF91cHBlcmRhdGEoKS4gTWFpbiB1c2VyIG9mXFxuZnMvb3ZlcmxheWZzL3V0aWwuYzo1NDM6XFx0ICogb3ZsX2hhc191cHBlcmRhdGEoKSBpcyBvdmxfY29weV91cF9tZXRhX2lub2RlX2RhdGEoKS4gTWFrZSBzdXJlXFxuZnMvb3ZlcmxheWZzL3V0aWwuYy01NDQtXFx0ICogaWYgc2V0dGluZyBvZiBPVkxfVVBQRVJEQVRBIGlzIHZpc2libGUsIHRoZW4gZWZmZWN0cyBvZiB3cml0ZXNcXG4tLVxcbmZzL292ZXJsYXlmcy91dGlsLmM9NzAxPWJvb2wgb3ZsX2FscmVhZHlfY29waWVkX3VwKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IGZsYWdzKVxcbi0tXFxuZnMvb3ZlcmxheWZzL3V0aWwuYy03MjktICovXFxuZnMvb3ZlcmxheWZzL3V0aWwuYzo3MzA6aW50IG92bF9jb3B5X3VwX3N0YXJ0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IGZsYWdzKVxcbmZzL292ZXJsYXlmcy91dGlsLmMtNzMxLXtcXG4tLVxcbmZzL292ZXJsYXlmcy91dGlsLmMtNzUyLVxcbmZzL292ZXJsYXlmcy91dGlsLmM6NzUzOnZvaWQgb3ZsX2NvcHlfdXBfZW5kKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTc1NC17XFxuLS1cXG5mcy9vdmVybGF5ZnMvdXRpbC5jPTExNDU9aW50IG92bF9ubGlua19zdGFydChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuLS1cXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTExNjQtXFx0ICogVE9ETzogaW1wbGVtZW50IG1ldGFkYXRhIG9ubHkgaW5kZXggY29weSB1cCB3aGVuIGNhbGxlZCB3aXRoXFxuZnMvb3ZlcmxheWZzL3V0aWwuYzoxMTY1OlxcdCAqICAgICAgIG92bF9jb3B5X3VwX2ZsYWdzKGRlbnRyeSwgT19QQVRIKS5cXG5mcy9vdmVybGF5ZnMvdXRpbC5jLTExNjYtXFx0ICovXFxuZnMvb3ZlcmxheWZzL3V0aWwuYy0xMTY3LVxcdGlmIChvdmxfbmVlZF9pbmRleChkZW50cnkpIFxcdTAwMjZcXHUwMDI2ICFvdmxfZGVudHJ5X2hhc191cHBlcl9hbGlhcyhkZW50cnkpKSB7XFxuZnMvb3ZlcmxheWZzL3V0aWwuYzoxMTY4OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL3V0aWwuYy0xMTY5LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5mcy9vdmVybGF5ZnMveGF0dHJzLmM9MzY9c3RhdGljIGludCBvdmxfeGF0dHJfc2V0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlub2RlICppbm9kZSwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmZzL292ZXJsYXlmcy94YXR0cnMuYy01My1cXHRpZiAoIXVwcGVyZGVudHJ5KSB7XFxuZnMvb3ZlcmxheWZzL3hhdHRycy5jOjU0OlxcdFxcdGVyciA9IG92bF9jb3B5X3VwKGRlbnRyeSk7XFxuZnMvb3ZlcmxheWZzL3hhdHRycy5jLTU1LVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU0OjU2LjEyODI2OTAyM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMTc1NjkxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE92ZXJsYXlGUyBGdW5jdGlvbiBFeHBvcnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucyBhbmQgaW1tZWRpYXRlbHkgbXkgYnJhaW4gaG9uZXMgaW4gb24gYG92bF9zZXRfb3JpZ2luX2ZoYCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAuIEkgbm90aWNlIHRoYXQgdGhlc2UgYXJlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBiZWluZyBhbHRlcmVkLiBOb3csIGEgcXVpY2sgY2hlY2sgb2YgdGhlIGluY2x1ZGVzIHJldmVhbHMgdGhhdCBib3RoIGFyZSBleHBvcnRlZCBpbiBgZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oYC4gQWhhLCBzbyB0aGV5J3JlIGRlc2lnbmVkIGZvciBleHRlcm5hbCB1c2UuIEkgc2VlIHRob3NlIGFyZSB1c2VkIGluIGBmcy9vdmVybGF5ZnMvY29weV91cC5jYCBhbmQgYGZzL292ZXJsYXlmcy9uYW1laS5jYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhleSBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBmdW5jdGlvbmFsaXR5IHRoYXQgbmVlZHMgdG8gaW50ZXJmYWNlIHdpdGggdGhlIGZpbGVzeXN0ZW0uXG5cbmBvdmxfc2V0X3VwcGVyX2ZoYCwgb24gdGhlIG90aGVyIGhhbmQsIGlzIHN0YXRpYywgd2hpY2ggbGltaXRzIGl0cyBzY29wZSwgYW5kIHRoZXJlZm9yZSBpdHMgcmVsZXZhbmNlIHRvIHRoaXMgd2lkZXIgaW52ZXN0aWdhdGlvbi5cblxuTm93LCBhcmUgdGhlc2UgZ29vZCBmb2N1cyBzeW1ib2xzPyBZZWFoLCB0aGV5IHNlZW0gZGVjZW50LiBUaGV5J3JlIHNwZWNpZmljIHRvIGluZGV4L2ZoIGhhbmRsaW5nIHdpdGhpbiBvdmVybGF5ZnMsIHNvIHRoZXkncmUgZm9jdXNlZCBlbm91Z2ggYW5kIG5vdCBzb21lIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGEgbWVzcyB0byB0cmFjZS5cblxuTmV4dCBzdGVwOiBDb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gV2hhdCBgQ09ORklHYCBvcHRpb25zIGFyZSByZWxldmFudD8gV2VsbCwgb2J2aW91c2x5LCBgQ09ORklHX09WRVJMQVlfRlNgIGlzIHRoZSBiaWcgb25lLCB0aGUgYmFzZS4gQnV0IGdpdmVuIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGRlYWwgd2l0aCBpbmRleGluZywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYENPTkZJR19PVkVSTEFZX0ZTX0lOREVYYC4gSSdsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBgZnMvb3ZlcmxheWZzYCBkaXJlY3RvcnkganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA3NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwOTo1NTowMi4xNDU4NDE0NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjgyODk3NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiT1ZFUkxBWV9GU19JTkRFWFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL292ZXJsYXlmcy5yc3Q9NjQxPUVuYWJsZWQgd2l0aCB0aGUgbW91bnQgb3B0aW9uIG9yIG1vZHVsZSBvcHRpb24gXFxcImluZGV4PW9uXFxcIiBvciB3aXRoIHRoZVxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvb3ZlcmxheWZzLnJzdDo2NDI6a2VybmVsIGNvbmZpZyBvcHRpb24gQ09ORklHX09WRVJMQVlfRlNfSU5ERVg9eS5cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL292ZXJsYXlmcy5yc3QtNjQzLVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz05ODI9Q09ORklHX09WRVJMQVlfRlM9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6OTgzOkNPTkZJR19PVkVSTEFZX0ZTX0lOREVYPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTk4NC1DT05GSUdfT1ZFUkxBWV9GU19YSU5PX0FVVE89eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xMDEzPUNPTkZJR19PVkVSTEFZX0ZTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjEwMTQ6Q09ORklHX09WRVJMQVlfRlNfSU5ERVg9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTAxNS1DT05GSUdfT1ZFUkxBWV9GU19YSU5PX0FVVE89eVxcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWc9MzE9Y29uZmlnIE9WRVJMQVlfRlNfUkVESVJFQ1RfQUxXQVlTX0ZPTExPV1xcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWctNDUtXFxuZnMvb3ZlcmxheWZzL0tjb25maWc6NDY6Y29uZmlnIE9WRVJMQVlfRlNfSU5ERVhcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy00Ny1cXHRib29sIFxcXCJPdmVybGF5ZnM6IHR1cm4gb24gaW5vZGVzIGluZGV4IGZlYXR1cmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnPTY1PWNvbmZpZyBPVkVSTEFZX0ZTX05GU19FWFBPUlRcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTY3LVxcdGRlcGVuZHMgb24gT1ZFUkxBWV9GU1xcbmZzL292ZXJsYXlmcy9LY29uZmlnOjY4OlxcdGRlcGVuZHMgb24gT1ZFUkxBWV9GU19JTkRFWFxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTY5LVxcdGRlcGVuZHMgb24gIU9WRVJMQVlfRlNfTUVUQUNPUFlcXG4tLVxcbmZzL292ZXJsYXlmcy9wYXJhbXMuYz0yOD1NT0RVTEVfUEFSTV9ERVNDKHhpbm9fYXV0byxcXG4tLVxcbmZzL292ZXJsYXlmcy9wYXJhbXMuYy0zMC1cXG5mcy9vdmVybGF5ZnMvcGFyYW1zLmM6MzE6c3RhdGljIGJvb2wgb3ZsX2luZGV4X2RlZiA9IElTX0VOQUJMRUQoQ09ORklHX09WRVJMQVlfRlNfSU5ERVgpO1xcbmZzL292ZXJsYXlmcy9wYXJhbXMuYy0zMi1tb2R1bGVfcGFyYW1fbmFtZWQoaW5kZXgsIG92bF9pbmRleF9kZWYsIGJvb2wsIDA2NDQpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb249MTY4PUNPTkZJR19PU0ZfUEFSVElUSU9OPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjoxNjk6Q09ORklHX09WRVJMQVlfRlNfSU5ERVg9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTE3MC1DT05GSUdfT1ZFUkxBWV9GU19NRVRBQ09QWT15XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU1OjAzLjc3NDEzNzQzOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzkyNzUwMzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgT3ZlcmxheUZTIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGluaXRpYWxseSwgYWRkaW5nIGBDT05GSUdfT1ZFUkxBWV9GU19JTkRFWGAgYW5kIGBDT05GSUdfT1ZFUkxBWV9GU2AgbG9va3MgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgYG92bF9zZXRfb3JpZ2luX2ZoYCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgZnVuY3Rpb25zLCBhbmQgbWFrZSBzdXJlIEkgZGlkbid0IG1pc3MgYW55IG90aGVycy4gSG1tbS4uLiB0aGlua2luZyBhYm91dCBpdCwgYENPTkZJR19PVkVSTEFZX0ZTX05GU19FWFBPUlRgIGlzIHByb2JhYmx5IHJlbGV2YW50IHRvbywgc2luY2UgSSByZWNhbGwgdGhhdCBgb3ZsX2dldF9pbmRleF9maGAgaXMgdXNlZCB3aGVuIGV4cG9ydGluZyBvdmVyIE5GUy4gQWxyaWdodCwgbGV0J3MgaW5jbHVkZSBgT1ZFUkxBWV9GU2AsIGBPVkVSTEFZX0ZTX0lOREVYYCwgYW5kIGBPVkVSTEFZX0ZTX05GU19FWFBPUlRgIGluIHRoZSBjb25maWd1cmF0aW9uLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgcmVhc29uaW5nIGNvcnJlY3QuIFRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHdoZW4gdGhlIGZpbGUgaGFuZGxlLCBgZmhgLCBpcyBOVUxMLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgZHVyaW5nIG92ZXJsYXlmcyBvcGVyYXRpb25zIGxpa2UgY29weS11cCBhbmQgaW5kZXggY3JlYXRpb24uIEl0IGRlZmluaXRlbHkgc291bmRzIGxpa2UgdGhlIGNoYW5nZXMgaGF2ZSBhIHBvdGVudGlhbCBmdW5jdGlvbmFsIGltcGFjdCBhbmQgYXJlIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGUgYG92bF9zZXRfb3JpZ2luX2ZoYCBhbmQgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAgc3ltYm9scywgb2YgY291cnNlLlxuXG5PaCwgd2FpdCwgbGV0IG1lIHF1aWNrbHkgZG91YmxlIGNoZWNrIHNvbWV0aGluZy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBgb3ZsX3NldF91cHBlcl9maGAgaW4gdGhlIFwiRm9jdXNTeW1ib2xzXCIuIFllcCwgaXQncyBzdGF0aWMgd2l0aGluIGBmcy9vdmVybGF5ZnMvY29weV91cC5jYCwgc28gSSdsbCBsZWF2ZSBpdCBvdXQuXG5cbkFscmlnaHQsIHRoYXQgY292ZXJzIGl0LiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MzY5LCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwOTo1NToxMS41NjY4OTA4MjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTc5NTcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1ZFUkxBWV9GU1wiLFxuICAgIFwiT1ZFUkxBWV9GU19JTkRFWFwiLFxuICAgIFwiT1ZFUkxBWV9GU19ORlNfRVhQT1JUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwib3ZsX3NldF9vcmlnaW5fZmhcIixcbiAgICBcIm92bF9nZXRfaW5kZXhfbmFtZV9maFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHdoZW4gYGZoYCBpcyBOVUxMLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgb3ZlcmxheWZzIG9wZXJhdGlvbnMgbGlrZSBjb3B5LXVwIGFuZCBpbmRleCBjcmVhdGlvbi4gVGhlIGNoYW5nZXMgaGF2ZSBmdW5jdGlvbmFsIGltcGFjdCBhbmQgYXJlIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1ZFUkxBWV9GU1wiLFxuICAgIFwiT1ZFUkxBWV9GU19JTkRFWFwiLFxuICAgIFwiT1ZFUkxBWV9GU19ORlNfRVhQT1JUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwib3ZsX3NldF9vcmlnaW5fZmhcIixcbiAgICBcIm92bF9nZXRfaW5kZXhfbmFtZV9maFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIGBvdmxfc2V0X29yaWdpbl9maGAsIGBvdmxfc2V0X3VwcGVyX2ZoYCwgYW5kIGBvdmxfZ2V0X2luZGV4X25hbWVfZmhgIHdoZW4gYGZoYCBpcyBOVUxMLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgb3ZlcmxheWZzIG9wZXJhdGlvbnMgbGlrZSBjb3B5LXVwIGFuZCBpbmRleCBjcmVhdGlvbi4gVGhlIGNoYW5nZXMgaGF2ZSBmdW5jdGlvbmFsIGltcGFjdCBhbmQgYXJlIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU1OjExLjY0ODY5MzExOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMjkzNjQ3MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwOTo1NToxMS42NDkyNjUwODlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTEwMjg3ODgzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ5IGFkZGluZyBjaGVja3MgZm9yIGBmaCAhPSBOVUxMYCBiZWZvcmUgYWNjZXNzaW5nIGBmaC1cXHUwMDNlYnVmYCBhbmQgYGZoLVxcdTAwM2VmYi5sZW5gLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIGV4ZWN1dGlvbiAocGFnZSBmYXVsdHMpIG9yIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzc0NjFkNmFiMmEwMGU2M2I5YTE3NmYyM2NjNDgyYmU0MjAwZWViNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDA5OjU0OjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL2NvcHlfdXAuYyBiL2ZzL292ZXJsYXlmcy9jb3B5X3VwLmNcbmluZGV4IGU5NjM3MDFiNGM4NzcuLmNiNjYxOWI1ZjNlZTEgMTAwNjQ0XG4tLS0gYS9mcy9vdmVybGF5ZnMvY29weV91cC5jXG4rKysgYi9mcy9vdmVybGF5ZnMvY29weV91cC5jXG5AQCAtNDkxLDcgKzQ5MSw3IEBAIGludCBvdmxfc2V0X29yaWdpbl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIGNvbnN0IHN0cnVjdCBvdmxfZmggKmZoLFxuIFx0LypcbiBcdCAqIERvIG5vdCBmYWlsIHdoZW4gdXBwZXIgZG9lc24ndCBzdXBwb3J0IHhhdHRycy5cbiBcdCAqL1xuLVx0ZXJyID0gb3ZsX2NoZWNrX3NldHhhdHRyKG9mcywgdXBwZXIsIE9WTF9YQVRUUl9PUklHSU4sIGZoLVx1MDAzZWJ1ZixcbitcdGVyciA9IG92bF9jaGVja19zZXR4YXR0cihvZnMsIHVwcGVyLCBPVkxfWEFUVFJfT1JJR0lOLCBmaCA/IGZoLVx1MDAzZWJ1ZiA6IE5VTEwsXG4gXHRcdFx0XHQgZmggPyBmaC1cdTAwM2VmYi5sZW4gOiAwLCAwKTtcbiBcbiBcdC8qIElnbm9yZSAtRVBFUk0gZnJvbSBzZXR0aW5nIFwidXNlci4qXCIgb24gc3ltbGluay9zcGVjaWFsICovXG5AQCAtNTA5LDcgKzUwOSw4IEBAIHN0YXRpYyBpbnQgb3ZsX3NldF91cHBlcl9maChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIHN0cnVjdCBkZW50cnkgKnVwcGVyLFxuIFx0aWYgKElTX0VSUihmaCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGZoKTtcbiBcbi1cdGVyciA9IG92bF9zZXR4YXR0cihvZnMsIGluZGV4LCBPVkxfWEFUVFJfVVBQRVIsIGZoLVx1MDAzZWJ1ZiwgZmgtXHUwMDNlZmIubGVuKTtcbitcdGVyciA9IG92bF9zZXR4YXR0cihvZnMsIGluZGV4LCBPVkxfWEFUVFJfVVBQRVIsXG4rXHRcdGZoID8gZmgtXHUwMDNlYnVmIDogTlVMTCwgZmggPyBmaC1cdTAwM2VmYi5sZW4gOiAwKTtcbiBcbiBcdGtmcmVlKGZoKTtcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL25hbWVpLmMgYi9mcy9vdmVybGF5ZnMvbmFtZWkuY1xuaW5kZXggY2E4OTlmZGZhYWZkMi4uNGFlMjZjODIwYjU4NyAxMDA2NDRcbi0tLSBhL2ZzL292ZXJsYXlmcy9uYW1laS5jXG4rKysgYi9mcy9vdmVybGF5ZnMvbmFtZWkuY1xuQEAgLTczNywxMiArNzM3LDE0IEBAIGludCBvdmxfdmVyaWZ5X2luZGV4KHN0cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeSAqaW5kZXgpXG4gaW50IG92bF9nZXRfaW5kZXhfbmFtZV9maChjb25zdCBzdHJ1Y3Qgb3ZsX2ZoICpmaCwgc3RydWN0IHFzdHIgKm5hbWUpXG4ge1xuIFx0Y2hhciAqbiwgKnM7XG4rXHRzaXplX3QgbGVuID0gZmggPyBmaC1cdTAwM2VmYi5sZW4gOiAxO1xuK1x0Y29uc3QgY2hhciAqYnVmID0gZmggPyBmaC1cdTAwM2VidWYgOiAoY29uc3QgdTggKilcIlwiO1xuIFxuLVx0biA9IGtjYWxsb2MoZmgtXHUwMDNlZmIubGVuLCAyLCBHRlBfS0VSTkVMKTtcbitcdG4gPSBrY2FsbG9jKGxlbiwgMiwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIW4pXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0cyAgPSBiaW4yaGV4KG4sIGZoLVx1MDAzZWJ1ZiwgZmgtXHUwMDNlZmIubGVuKTtcbitcdHMgID0gYmluMmhleChuLCBidWYsIGxlbik7XG4gXHQqbmFtZSA9IChzdHJ1Y3QgcXN0cikgUVNUUl9JTklUKG4sIHMgLSBuKTtcbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDk6NTU6MTEuNjQ5MjY3MjY5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDI4NzYyNjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIFJlYXNvbmluZzogT3ZlcmxheUZTIE5VTEwgUG9pbnRlciBEZXJlZmVyZW5jZSBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZnMvb3ZlcmxheWZzL2NvcHlfdXAuY2AgYW5kIGBmcy9vdmVybGF5ZnMvbmFtZWkuY2AuIEl0J3MgYWxsIGFib3V0IGFkZGluZyBOVUxMIGNoZWNrcyBmb3IgdGhlIGBmaGAgcG9pbnRlciwgd2hpY2ggaXMgYSBgc3RydWN0IG92bF9maGAuIFJpZ2h0LCBtYWtlcyBzZW5zZS5cblxuSW4gYG92bF9zZXRfb3JpZ2luX2ZoYCBhbmQgYG92bF9zZXRfdXBwZXJfZmhgLCB0aGV5J3ZlIGFkZGVkIGNvbmRpdGlvbmFsIGNoZWNrcyBsaWtlIGBmaCA/IGZoLVx1MDAzZWJ1ZiA6IE5VTExgIGFuZCBgZmggPyBmaC1cdTAwM2VmYi5sZW4gOiAwYC4gR29vZCwgdGhpcyBwcmV2ZW50cyB0aGUgZHJlYWRlZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFNhbWUgZ29lcyBmb3IgYG92bF9nZXRfaW5kZXhfbmFtZV9maGAuIEluaXRpYWxseSwgdGhlcmUgd2FzIGEgZGlyZWN0IGRlcmVmZXJlbmNlIG9mIGBmaGAgdG8gYWNjZXNzIGAuZmIubGVuYCBhbmQgYC5idWZgLiBOb3csIHRoZXJlJ3MgYSBjb25kaXRpb25hbCBjaGVjayBiZWZvcmUgYWNjZXNzaW5nIHRoZW0uXG5cblNwZWNpZmljYWxseSBpbiBgb3ZsX2dldF9pbmRleF9uYW1lX2ZoYCwgaWYgYGZoYCBpcyBOVUxMLCBpdCdzIGFsbG9jYXRpbmcgMiBieXRlcywgYW5kIHRoZW4gdXNlcyBhIGBiaW4yaGV4YCBjYWxsIHdpdGggYGJ1ZiA9IFwiXCJgIChlbXB0eSBzdHJpbmcpIGFuZCBgbGVuID0gMWAuIEhhbmcgb24uLi50aGUgZW1wdHkgc3RyaW5nIGBcIlwiYCAqaXMqIGEgMS1ieXRlIHN0cmluZyBjb250YWluaW5nIGp1c3QgYSBudWxsIHRlcm1pbmF0b3IsIHNvIHRoZSBjYWxsIHRvIGBiaW4yaGV4YCB3aWxsIHJlYWQgdGhhdCBvbmUgbnVsbCBieXRlIGFuZCB3cml0ZSB0byB0aGUgYWxsb2NhdGVkIHR3byBieXRlcy4gUGVyZmVjdGx5IHZhbGlkIG1lbW9yeSBhY2Nlc3MgYW5kIGluaXRpYWxpemF0aW9uLCByZWFsbHkuIEl0IHdpbGwgd3JpdGUgdHdvIGJ5dGVzLCB3aXRoIHRoZSBmaXJzdCBieXRlIGJlaW5nIHplcm8uIE5vIGlzc3VlcyB0aGVyZS5cblxuU28sIHRoZSB3aG9sZSBwb2ludCBpcyBwcmV2ZW50aW5nIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMuIEtBU0FOIHdvdWxkIHBpY2sgdGhhdCB1cCwgYnV0IHN0YW5kYXJkIGtlcm5lbCBleGVjdXRpb24gKHBhZ2UgZmF1bHRzKSB3b3VsZCBkbyBpdCB0b28uIFRoZXJlJ3Mgbm8gaW50cm9kdWN0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIHdpdGggdGhlc2UgY2hhbmdlcy4gVGhlIHBhdGNoIGFkZHMgb25seSBgaWYgKGZoKSAuLi5gIHRvIGVuc3VyZSBgZmhgIGlzIG5vdCBudWxsLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBpcyAqYW55KiB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrIGluIHRoaXMgcGF0Y2guLi4gdGhlIGBmaGAgaXMgYSBwb2ludGVyIHRvIGBzdHJ1Y3Qgb3ZsX2ZoYC4gSWYgaXQncyBOVUxMLCB3ZSB1c2UgTlVMTC8wLCBvciBcIlwiLzEuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGludm9sdmVkLiBUaGlzIGlzIHB1cmVseSBhYm91dCBhdm9pZGluZyB0aGUgZGVyZWZlcmVuY2UuIFRoZSBidWcgaXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuXG5cblNvLCBJIHRoaW5rIEkgaGF2ZSBpdDogKipLTVNBTiBpcyBub3QgbmVlZGVkIGhlcmUuKiogVGhlIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggaXMgcmVsaWFibHkgY2F1Z2h0IGJ5IGV4aXN0aW5nIG1lY2hhbmlzbXMuIEl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIG5vciBkb2VzIGl0IHRvdWNoIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgbWlnaHQgaGFyYm9yIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGVyZSdzIG5vdGhpbmcgaGVyZSB0aGF0IHdhcnJhbnRzIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIHBhdGNoIGlzIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTMxLCJPdXRwdXRUb2tlbnMiOjExNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDA5OjU1OjIyLjY3ODAzMzAwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGNoZWNrcyBmb3IgYGZoICE9IE5VTExgIGJlZm9yZSBhY2Nlc3NpbmcgYGZoLVxcdTAwM2VidWZgIGFuZCBgZmgtXFx1MDAzZWZiLmxlbmAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgZXhlY3V0aW9uIChwYWdlIGZhdWx0cykgb3IgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBieSBhZGRpbmcgY2hlY2tzIGZvciBgZmggIT0gTlVMTGAgYmVmb3JlIGFjY2Vzc2luZyBgZmgtXFx1MDAzZWJ1ZmAgYW5kIGBmaC1cXHUwMDNlZmIubGVuYC4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBleGVjdXRpb24gKHBhZ2UgZmF1bHRzKSBvciBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7tdm[1] Phase: Succeeded StartedAt: 2026-08-24 09:55:34 +0000 UTC FinishedAt: 2026-08-24 09:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-24 09:55:34 +0000 UTC FinishedAt: 2026-08-24 09:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2] Phase: Succeeded StartedAt: 2026-08-24 09:55:34 +0000 UTC FinishedAt: 2026-08-24 13:48:02 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-24 09:55:34 +0000 UTC FinishedAt: 2026-08-24 13:48:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 09:55:34 +0000 UTC FinishedAt: 2026-08-24 09:55:44 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 09:55:34 +0000 UTC FinishedAt: 2026-08-24 09:55:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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-workfloww7tdm/series-workfloww7tdm-convert-artifact-3090779870/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 09:55:44 +0000 UTC FinishedAt: 2026-08-24 10:13:34 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 09:55:44 +0000 UTC FinishedAt: 2026-08-24 10:13:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9d7e323c-b2d3-45c9-aaef-7454f85a02f3,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-workfloww7tdm/series-workfloww7tdm-convert-artifact-3090779870/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": "42b21d21-fffb-4af7-814b-797f7d4e973a", "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-workfloww7tdm/series-workfloww7tdm-build-action-2377494468/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 09:55:44 +0000 UTC FinishedAt: 2026-08-24 10:13:24 +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:*9d7e323c-b2d3-45c9-aaef-7454f85a02f3,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-workfloww7tdm/series-workfloww7tdm-convert-artifact-3090779870/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": "42b21d21-fffb-4af7-814b-797f7d4e973a", "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-workfloww7tdm/series-workfloww7tdm-build-action-2377494468/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:13:34 +0000 UTC FinishedAt: 2026-08-24 10:13:34 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:13:34 +0000 UTC FinishedAt: 2026-08-24 10:13:34 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:13:34 +0000 UTC FinishedAt: 2026-08-24 10:13:47 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:13:34 +0000 UTC FinishedAt: 2026-08-24 10:13:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-workfloww7tdm/series-workfloww7tdm-convert-artifact-2394907793/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:13:47 +0000 UTC FinishedAt: 2026-08-24 10:16:19 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:13:48 +0000 UTC FinishedAt: 2026-08-24 10:16:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*42b21d21-fffb-4af7-814b-797f7d4e973a,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-workfloww7tdm/series-workfloww7tdm-build-action-2377494468/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-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:16:19 +0000 UTC FinishedAt: 2026-08-24 10:16:19 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:16:19 +0000 UTC FinishedAt: 2026-08-24 10:16:19 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:16:19 +0000 UTC FinishedAt: 2026-08-24 10:42:30 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:16:19 +0000 UTC FinishedAt: 2026-08-24 10:42:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9d7e323c-b2d3-45c9-aaef-7454f85a02f3,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-workfloww7tdm/series-workfloww7tdm-convert-artifact-2394907793/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": "16c2ee1b-18d3-4d31-a728-a3c88e8502a9", "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-workfloww7tdm/series-workfloww7tdm-build-action-1154896989/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:16:19 +0000 UTC FinishedAt: 2026-08-24 10:42:05 +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:*9d7e323c-b2d3-45c9-aaef-7454f85a02f3,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-workfloww7tdm/series-workfloww7tdm-convert-artifact-2394907793/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": "16c2ee1b-18d3-4d31-a728-a3c88e8502a9", "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-workfloww7tdm/series-workfloww7tdm-build-action-1154896989/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:42:30 +0000 UTC FinishedAt: 2026-08-24 10:42:30 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:42:30 +0000 UTC FinishedAt: 2026-08-24 10:42:30 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:42:30 +0000 UTC FinishedAt: 2026-08-24 10:44:45 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:42:30 +0000 UTC FinishedAt: 2026-08-24 10:44: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:*16c2ee1b-18d3-4d31-a728-a3c88e8502a9,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-workfloww7tdm/series-workfloww7tdm-build-action-1154896989/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-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:44:45 +0000 UTC FinishedAt: 2026-08-24 13:48:02 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:44:45 +0000 UTC FinishedAt: 2026-08-24 13:48:02 +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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"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:*42b21d21-fffb-4af7-814b-797f7d4e973a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*16c2ee1b-18d3-4d31-a728-a3c88e8502a9,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-workfloww7tdm/series-workfloww7tdm-build-action-2377494468/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-workfloww7tdm/series-workfloww7tdm-build-action-1154896989/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:44:45 +0000 UTC FinishedAt: 2026-08-24 10:45:09 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:44:45 +0000 UTC FinishedAt: 2026-08-24 10:45:00 +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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"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-workfloww7tdm/series-workfloww7tdm-convert-artifact-1289400774/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:44:45 +0000 UTC FinishedAt: 2026-08-24 10:44:45 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:44:45 +0000 UTC FinishedAt: 2026-08-24 10:44:45 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:44:45 +0000 UTC FinishedAt: 2026-08-24 10:44:45 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:45:09 +0000 UTC FinishedAt: 2026-08-24 13:48:02 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7tdm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"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":["ovl_set_origin_fh","ovl_get_index_name_fh"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4352b8aee98005853aa63f57d6377282de17a33f","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","OVERLAY_FS_INDEX","OVERLAY_FS_NFS_EXPORT"],"series_id":"942a680d-224a-4c12-b7a8-17ef4e85e0ff","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-08-24 10:45:09 +0000 UTC FinishedAt: 2026-08-24 13:47:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*42b21d21-fffb-4af7-814b-797f7d4e973a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*16c2ee1b-18d3-4d31-a728-a3c88e8502a9,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-workfloww7tdm/series-workfloww7tdm-build-action-2377494468/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-workfloww7tdm/series-workfloww7tdm-build-action-1154896989/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-workfloww7tdm/series-workfloww7tdm-convert-artifact-1289400774/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,}