Name: series-workflowkwsbn Phase: Succeeded StartedAt: 2026-07-21 21:43:39 +0000 UTC FinishedAt: 2026-07-21 23:43:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[0] Phase: Succeeded StartedAt: 2026-07-21 21:43:39 +0000 UTC FinishedAt: 2026-07-21 22:11:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[0].run-triage Phase: Succeeded StartedAt: 2026-07-21 21:43:39 +0000 UTC FinishedAt: 2026-07-21 22:11:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3fe08b9796f36ef437ab9328e7dd1e5ff2d66603", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SYSCALL_USER_DISPATCH", "COMPAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3fe08b9796f36ef437ab9328e7dd1e5ff2d66603", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SYSCALL_USER_DISPATCH", "COMPAT" ], "series_id": "0d03e565-a631-4a6c-9fd9-fe3eb176ff38" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "arch_syscall_is_vdso_sigreturn", "user_enable_single_step", "user_disable_single_step" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIyOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NZU0NBTExfVVNFUl9ESVNQQVRDSCYjMzQ7LAogICAgJiMzNDtDT01QQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm4mIzM0OywKICAgICYjMzQ7dXNlcl9lbmFibGVfc2luZ2xlX3N0ZXAmIzM0OywKICAgICYjMzQ7dXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnZlcnRzIGFybTY0IHRvIHVzZSB0aGUgZ2VuZXJpYyBlbnRyeSBpbmZyYXN0cnVjdHVyZSBhbmQgYWRkcyBzdXBwb3J0IGZvciBTeXNjYWxsIFVzZXIgRGlzcGF0Y2guIFRoaXMgaW52b2x2ZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHN5c2NhbGwgZW50cnkvZXhpdCBwYXRocywgcHRyYWNlIHNpbmdsZS1zdGVwcGluZywgYW5kIFZEU08gc2lncmV0dXJuIGRldGVjdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMjoxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYzY2YwNGIxY2RlOTBkOTIwNGM2OTdjNTYyNTI0MTg3YTM5YzJkZjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAyMjoxMDozNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L0tjb25maWcgYi9hcmNoL2FybTY0L0tjb25maWdcbmluZGV4IGZiMTUwMzdiNWUzYzdlLi5lZmVmMDc4NTdkMzg4NCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9LY29uZmlnXG5AQCAtODcsNiAmIzQzOzg3LDcgQEAgY29uZmlnIEFSTTY0XG4gXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9TTVRcbiBcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX0NMVVNURVJcbiBcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX01DXG4mIzQzO1x0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXG4gXHRzZWxlY3QgQVJDSF9XQU5UX0JBVENIRURfVU5NQVBfVExCX0ZMVVNIXG4gXHRzZWxlY3QgQVJDSF9XQU5UX0NPTVBBVF9JUENfUEFSU0VfVkVSU0lPTiBpZiBDT01QQVRcbiBcdHNlbGVjdCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUXG5AQCAtMTI5LDkgJiM0MzsxMzAsOSBAQCBjb25maWcgQVJNNjRcbiBcdHNlbGVjdCBHRU5FUklDX0NQVV9ERVZJQ0VTXG4gXHRzZWxlY3QgR0VORVJJQ19DUFVfVlVMTkVSQUJJTElUSUVTXG4gXHRzZWxlY3QgR0VORVJJQ19FQVJMWV9JT1JFTUFQXG4mIzQzO1x0c2VsZWN0IEdFTkVSSUNfRU5UUllcbiBcdHNlbGVjdCBHRU5FUklDX0lETEVfUE9MTF9TRVRVUFxuIFx0c2VsZWN0IEdFTkVSSUNfSU9SRU1BUFxuLVx0c2VsZWN0IEdFTkVSSUNfSVJRX0VOVFJZXG4gXHRzZWxlY3QgR0VORVJJQ19JUlFfSVBJXG4gXHRzZWxlY3QgR0VORVJJQ19JUlFfS0VYRUNfQ0xFQVJfVk1fRk9SV0FSRFxuIFx0c2VsZWN0IEdFTkVSSUNfSVJRX1BST0JFXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbGYuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbmluZGV4IGQyNzc5ZDYwNGM3YmUyLi5hOGIyMzJjNWM2ZDlmOCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbkBAIC0yOTMsNiAmIzQzOzI5Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGFyY2hfY2hlY2tfZWxmKHZvaWQgKmVoZHIsIGJvb2wgaGFzX2ludGVycCxcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7ZXh0ZXJuIGJvb2wgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbiAjZW5kaWYgLyogIV9fQVNTRU1CTEVSX18gKi9cbiBcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxuaW5kZXggY2FiOGNkNzhmNjkzODUuLjJiMDUzYWNiZTEwZmVhIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxuQEAgLTMsMTQgJiM0MzszLDIxIEBAXG4gI2lmbmRlZiBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9IXG4gI2RlZmluZSBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9IXG4gXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cmFjZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdGhyZWFkX2luZm8uaFx1MDAzZVxuIFxuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vY29tcGF0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY3B1ZmVhdHVyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2RhaWZmbGFncy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2Zwc2ltZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL210ZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3N0YWNrdHJhY2UuaFx1MDAzZVxuIFxuJiM0MztlbnVtIHB0cmFjZV9zeXNjYWxsX2RpciB7XG4mIzQzO1x0UFRSQUNFX1NZU0NBTExfRU5URVIgPSAwLFxuJiM0MztcdFBUUkFDRV9TWVNDQUxMX0VYSVQsXG4mIzQzO307XG4mIzQzO1xuICNkZWZpbmUgQVJDSF9FWElUX1RPX1VTRVJfTU9ERV9XT1JLIChfVElGX01URV9BU1lOQ19GQVVMVCB8IF9USUZfRk9SRUlHTl9GUFNUQVRFKVxuIFxuIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBhcmNoX2V4aXRfdG9fdXNlcl9tb2RlX3dvcmsoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG5AQCAtNTQsNCAmIzQzOzYxLDc0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkKHZvaWQpXG4gXG4gI2RlZmluZSBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkIGFyY2hfaXJxZW50cnlfZXhpdF9uZWVkX3Jlc2NoZWRcbiBcbiYjNDM7c3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIHB0cmFjZV9zYXZlX3JlZyhzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICBlbnVtIHB0cmFjZV9zeXNjYWxsX2RpciBkaXIsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgaW50ICpyZWdubylcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFdlIGhhdmUgc29tZSBBQkkgd2VpcmRuZXNzIGhlcmUgaW4gdGhlIHdheSB0aGF0IHdlIGhhbmRsZSBzeXNjYWxsXG4mIzQzO1x0ICogZXhpdCBzdG9wcyBiZWNhdXNlIHdlIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoZSBzdG9wIGhhcyBiZWVuXG4mIzQzO1x0ICogc2lnbmFsbGVkIGZyb20gc3lzY2FsbCBlbnRyeSBvciBzeXNjYWxsIGV4aXQgYnkgY2xvYmJlcmluZyBhIGdlbmVyYWxcbiYjNDM7XHQgKiBwdXJwb3NlIHJlZ2lzdGVyIChpcC9yMTIgZm9yIEFBcmNoMzIsIHg3IGZvciBBQXJjaDY0KSBpbiB0aGUgdHJhY2VlXG4mIzQzO1x0ICogYW5kIHJlc3RvcmluZyBpdHMgb2xkIHZhbHVlIGFmdGVyIHRoZSBzdG9wLiBUaGlzIG1lYW5zIHRoYXQ6XG4mIzQzO1x0ICpcbiYjNDM7XHQgKiAtIEFueSB3cml0ZXMgYnkgdGhlIHRyYWNlciB0byB0aGlzIHJlZ2lzdGVyIGR1cmluZyB0aGUgc3RvcCBhcmVcbiYjNDM7XHQgKiAgIGlnbm9yZWQvZGlzY2FyZGVkLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogLSBUaGUgYWN0dWFsIHZhbHVlIG9mIHRoZSByZWdpc3RlciBpcyBub3QgYXZhaWxhYmxlIGR1cmluZyB0aGUgc3RvcCxcbiYjNDM7XHQgKiAgIHNvIHRoZSB0cmFjZXIgY2Fubm90IHNhdmUgaXQgYW5kIHJlc3RvcmUgaXQgbGF0ZXIuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiAtIFN5c2NhbGwgc3RvcHMgYmVoYXZlIGRpZmZlcmVudGx5IHRvIHNlY2NvbXAgYW5kIHBzZXVkby1zdGVwIHRyYXBzXG4mIzQzO1x0ICogICAodGhlIGxhdHRlciBkbyBub3Qgbm9iYmxlIGFueSByZWdpc3RlcnMpLlxuJiM0MztcdCAqL1xuJiM0MztcdCpyZWdubyA9IChpc19jb21wYXRfdGFzaygpID8gMTIgOiA3KTtcbiYjNDM7XHRzYXZlZF9yZWcgPSByZWdzLVx1MDAzZXJlZ3NbKnJlZ25vXTtcbiYjNDM7XHRyZWdzLVx1MDAzZXJlZ3NbKnJlZ25vXSA9IGRpcjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHNhdmVkX3JlZztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncylcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnO1xuJiM0MztcdGJvb2wgcGVybWl0O1xuJiM0MztcdGludCByZWdubztcbiYjNDM7XG4mIzQzO1x0c2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VOVEVSLCBcdTAwMjZyZWdubyk7XG4mIzQzO1x0cGVybWl0ID0gcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeShyZWdzKTtcbiYjNDM7XHRpZiAoIXBlcm1pdClcbiYjNDM7XHRcdGZvcmdldF9zeXNjYWxsKHJlZ3MpO1xuJiM0MztcdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4mIzQzO1xuJiM0MztcdHJldHVybiBwZXJtaXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzOyNkZWZpbmUgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfcGVybWl0X2VudHJ5IGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeVxuJiM0MztcbiYjNDM7c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIGludCBzdGVwKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4mIzQzO1x0aW50IHJlZ25vO1xuJiM0MztcbiYjNDM7XHRzYXZlZF9yZWcgPSBwdHJhY2Vfc2F2ZV9yZWcocmVncywgUFRSQUNFX1NZU0NBTExfRVhJVCwgXHUwMDI2cmVnbm8pO1xuJiM0MztcdGlmICghc3RlcCkge1xuJiM0MztcdFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMCk7XG4mIzQzO1x0XHRyZWdzLVx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRyZWdzLVx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xuJiM0MztcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBTaWduYWwgYSBwc2V1ZG8tc3RlcCBleGNlcHRpb24gc2luY2Ugd2UgYXJlIHN0ZXBwaW5nIGJ1dFxuJiM0MztcdFx0ICogdHJhY2VyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlZ2lzdGVycyBtYXkgaGF2ZSByZXdvdW5kIHRoZVxuJiM0MztcdFx0ICogc3RhdGUgbWFjaGluZS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjZGVmaW5lIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdFxuJiM0MztcbiAjZW5kaWYgLyogX0FTTV9BUk02NF9FTlRSWV9DT01NT05fSCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNjYWxsLmhcbmluZGV4IDVlNGM3ZmM0NGY3MzE1Li5lM2U3MTY1NzU4NDY0NiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c2NhbGwuaFxuQEAgLTgsNiAmIzQzOzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY3VhcGkvbGludXgvYXVkaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBhdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcnNlcS5oXHUwMDNlXG4gXG4gdHlwZWRlZiBsb25nICgqc3lzY2FsbF9mbl90KShjb25zdCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG4gXG5AQCAtMTE5LDggJiM0MzsxMjAsNCBAQCBzdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX2dldF9hcmNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcbiBcbiBcdHJldHVybiBBVURJVF9BUkNIX0FBUkNINjQ7XG4gfVxuLVxuLWludCBzeXNjYWxsX3RyYWNlX2VudGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi12b2lkIHN5c2NhbGxfdHJhY2VfZXhpdChzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG4tXG4gI2VuZGlmXHQvKiBfX0FTTV9TWVNDQUxMX0ggKi9cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcbmluZGV4IDVkN2ZlM2UxNTNjODUwLi4zZjYyMWJhMGY5NjEzNyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oXG5AQCAtNDYsNiAmIzQzOzQ2LDcgQEAgc3RydWN0IHRocmVhZF9pbmZvIHtcbiBcdHU2NFx0XHRcdG1wYW1fcGFydGlkX3BtZztcbiAjZW5kaWZcbiBcdHUzMlx0XHRcdGNwdTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nXHRcdHN5c2NhbGxfd29yazsgICAvKiBTWVNDQUxMX1dPUktfIGZsYWdzICovXG4gfTtcbiBcbiAjZGVmaW5lIHRocmVhZF9zYXZlZF9wYyh0c2spXHRcXFxuQEAgLTY4LDExICYjNDM7NjksNiBAQCB2b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7XG4gI2RlZmluZSBUSUZfVVBST0JFXHRcdDVcdC8qIHVwcm9iZSBicmVha3BvaW50IG9yIHNpbmdsZXN0ZXAgKi9cbiAjZGVmaW5lIFRJRl9NVEVfQVNZTkNfRkFVTFRcdDZcdC8qIE1URSBBc3luY2hyb25vdXMgVGFnIENoZWNrIEZhdWx0ICovXG4gI2RlZmluZSBUSUZfTk9USUZZX1NJR05BTFx0N1x0Lyogc2lnbmFsIG5vdGlmaWNhdGlvbnMgZXhpc3QgKi9cbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFXHQ4XHQvKiBzeXNjYWxsIHRyYWNlIGFjdGl2ZSAqL1xuLSNkZWZpbmUgVElGX1NZU0NBTExfQVVESVRcdDlcdC8qIHN5c2NhbGwgYXVkaXRpbmcgKi9cbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFUE9JTlRcdDEwXHQvKiBzeXNjYWxsIHRyYWNlcG9pbnQgZm9yIGZ0cmFjZSAqL1xuLSNkZWZpbmUgVElGX1NFQ0NPTVBcdFx0MTFcdC8qIHN5c2NhbGwgc2VjdXJlIGNvbXB1dGluZyAqL1xuLSNkZWZpbmUgVElGX1NZU0NBTExfRU1VXHRcdDEyXHQvKiBzeXNjYWxsIGVtdWxhdGlvbiBhY3RpdmUgKi9cbiAjZGVmaW5lIFRJRl9QQVRDSF9QRU5ESU5HXHQxM1x0LyogcGVuZGluZyBsaXZlIHBhdGNoaW5nIHVwZGF0ZSAqL1xuICNkZWZpbmUgVElGX01FTURJRVx0XHQxOFx0LyogaXMgdGVybWluYXRpbmcgZHVlIHRvIE9PTSBraWxsZXIgKi9cbiAjZGVmaW5lIFRJRl9GUkVFWkVcdFx0MTlcbkBAIC05NCwyNCAmIzQzOzkwLDE0IEBAIHZvaWQgYXJjaF9zZXR1cF9uZXdfZXhlYyh2b2lkKTtcbiAjZGVmaW5lIF9USUZfTkVFRF9SRVNDSEVEX0xBWllcdCgxIFx1MDAzY1x1MDAzYyBUSUZfTkVFRF9SRVNDSEVEX0xBWlkpXG4gI2RlZmluZSBfVElGX05PVElGWV9SRVNVTUVcdCgxIFx1MDAzY1x1MDAzYyBUSUZfTk9USUZZX1JFU1VNRSlcbiAjZGVmaW5lIF9USUZfRk9SRUlHTl9GUFNUQVRFXHQoMSBcdTAwM2NcdTAwM2MgVElGX0ZPUkVJR05fRlBTVEFURSlcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9UUkFDRVx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TWVNDQUxMX1RSQUNFKVxuLSNkZWZpbmUgX1RJRl9TWVNDQUxMX0FVRElUXHQoMSBcdTAwM2NcdTAwM2MgVElGX1NZU0NBTExfQVVESVQpXG4tI2RlZmluZSBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TWVNDQUxMX1RSQUNFUE9JTlQpXG4tI2RlZmluZSBfVElGX1NFQ0NPTVBcdFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TRUNDT01QKVxuLSNkZWZpbmUgX1RJRl9TWVNDQUxMX0VNVVx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TWVNDQUxMX0VNVSlcbiAjZGVmaW5lIF9USUZfUEFUQ0hfUEVORElOR1x0KDEgXHUwMDNjXHUwMDNjIFRJRl9QQVRDSF9QRU5ESU5HKVxuICNkZWZpbmUgX1RJRl9VUFJPQkVcdFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9VUFJPQkUpXG4tI2RlZmluZSBfVElGX1NJTkdMRVNURVBcdFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TSU5HTEVTVEVQKVxuICNkZWZpbmUgX1RJRl8zMkJJVFx0XHQoMSBcdTAwM2NcdTAwM2MgVElGXzMyQklUKVxuICNkZWZpbmUgX1RJRl9TVkVcdFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TVkUpXG4gI2RlZmluZSBfVElGX01URV9BU1lOQ19GQVVMVFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9NVEVfQVNZTkNfRkFVTFQpXG4gI2RlZmluZSBfVElGX05PVElGWV9TSUdOQUxcdCgxIFx1MDAzY1x1MDAzYyBUSUZfTk9USUZZX1NJR05BTClcbiAjZGVmaW5lIF9USUZfVFNDX1NJR1NFR1ZcdCgxIFx1MDAzY1x1MDAzYyBUSUZfVFNDX1NJR1NFR1YpXG4gXG4tI2RlZmluZSBfVElGX1NZU0NBTExfV09SS1x0KF9USUZfU1lTQ0FMTF9UUkFDRSB8IF9USUZfU1lTQ0FMTF9BVURJVCB8IFxcXG4tXHRcdFx0XHQgX1RJRl9TWVNDQUxMX1RSQUNFUE9JTlQgfCBfVElGX1NFQ0NPTVAgfCBcXFxuLVx0XHRcdFx0IF9USUZfU1lTQ0FMTF9FTVUpXG4tXG4gI2lmZGVmIENPTkZJR19TSEFET1dfQ0FMTF9TVEFDS1xuICNkZWZpbmUgSU5JVF9TQ1NcdFx0XHRcdFx0XHRcdFxcXG4gXHQuc2NzX2Jhc2VcdD0gaW5pdF9zaGFkb3dfY2FsbF9zdGFjayxcdFx0XHRcXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jXG5pbmRleCAyOTMwNzY0MmY0YzkwNC4uYzUzNjgzODM5MTU1MzYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jXG5AQCAtMzg1LDExICYjNDM7Mzg1LDE5IEBAIHZvaWQgdXNlcl9lbmFibGVfc2luZ2xlX3N0ZXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIFxuIFx0aWYgKCF0ZXN0X2FuZF9zZXRfdGlfdGhyZWFkX2ZsYWcodGksIFRJRl9TSU5HTEVTVEVQKSlcbiBcdFx0c2V0X3JlZ3Nfc3Bzcl9zcyh0YXNrX3B0X3JlZ3ModGFzaykpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEVuc3VyZSB0aGF0IHRoZSBnZW5lcmljIGVudHJ5IGNvZGUgdHJpZ2dlcnMgYSB0cmFwIG9uY2Ugc3RlcHBpbmdcbiYjNDM7XHQgKiBvdXQgb2YgYSBzeXN0ZW0gY2FsbCBwcmlvciB0byBleGVjdXRpbmcgYW55IHVzZXIgaW5zdHJ1Y3Rpb24sXG4mIzQzO1x0ICogYXMgdGhlIGdlbmVyaWMgZW50cnkgY29kZSBkb2VzIG5vdCBuYXRpdmVseSBjaGVjayBmb3IgVElGX1NJTkdMRVNURVAuXG4mIzQzO1x0ICovXG4mIzQzO1x0c2V0X3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfRVhJVF9UUkFQKTtcbiB9XG4gTk9LUFJPQkVfU1lNQk9MKHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKTtcbiBcbiB2b2lkIHVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXG4ge1xuIFx0Y2xlYXJfdGlfdGhyZWFkX2ZsYWcodGFza190aHJlYWRfaW5mbyh0YXNrKSwgVElGX1NJTkdMRVNURVApO1xuJiM0MztcdGNsZWFyX3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfRVhJVF9UUkFQKTtcbiB9XG4gTk9LUFJPQkVfU1lNQk9MKHVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uY1xuaW5kZXggY2ViNGViMTEyMzJhNjEuLjllYWM3NjgwNGJkOWFlIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL2VudHJ5LWNvbW1vbi5jXG5AQCAtNiw3ICYjNDM7Niw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY29udGV4dF90cmFja2luZy5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2VudHJ5LWNvbW1vbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2FzYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbmthZ2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpdmVwYXRjaC5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuY1xuaW5kZXggNTcwOWU5ZDNjMzIxYTUuLjYxYTY2ODY4Mjk0NzE1IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jXG5AQCAtOCw3ICYjNDM7OCw2IEBAXG4gICogQ29weXJpZ2h0IChDKSAyMDEyIEFSTSBMdGQuXG4gICovXG4gXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvYXVkaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBhdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC9zaWduYWwuaFx1MDAzZVxuQEAgLTE4LDcgJiM0MzsxNyw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc21wLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHJhY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzZXIuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlY2NvbXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlY3VyaXR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbml0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zaWduYWwuaFx1MDAzZVxuQEAgLTI4LDcgJiM0MzsyNiw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaHdfYnJlYWtwb2ludC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVnc2V0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lbGYuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3JzZXEuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9jb21wYXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jcHVmZWF0dXJlLmhcdTAwM2VcbkBAIC0zOCwxMyAmIzQzOzM1LDkgQEBcbiAjaW5jbHVkZSBcdTAwM2Nhc20vbXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vcG9pbnRlcl9hdXRoLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vc3RhY2t0cmFjZS5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjYXNtL3N5c2NhbGwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS90cmFwcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3N5c3RlbV9taXNjLmhcdTAwM2VcbiBcbi0jZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcbi0jaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvc3lzY2FsbHMuaFx1MDAzZVxuLVxuIHN0cnVjdCBwdF9yZWdzX29mZnNldCB7XG4gXHRjb25zdCBjaGFyICpuYW1lO1xuIFx0aW50IG9mZnNldDtcbkBAIC0yMzM5LDExNCAmIzQzOzIzMzIsNiBAQCBsb25nIGFyY2hfcHRyYWNlKHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQsIGxvbmcgcmVxdWVzdCxcbiBcdHJldHVybiBwdHJhY2VfcmVxdWVzdChjaGlsZCwgcmVxdWVzdCwgYWRkciwgZGF0YSk7XG4gfVxuIFxuLWVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIHtcbi1cdFBUUkFDRV9TWVNDQUxMX0VOVEVSID0gMCxcbi1cdFBUUkFDRV9TWVNDQUxMX0VYSVQsXG4tfTtcbi1cbi1zdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcgcHRyYWNlX3NhdmVfcmVnKHN0cnVjdCBwdF9yZWdzICpyZWdzLFxuLVx0XHRcdFx0XHRcdCAgICAgZW51bSBwdHJhY2Vfc3lzY2FsbF9kaXIgZGlyLFxuLVx0XHRcdFx0XHRcdCAgICAgaW50ICpyZWdubylcbi17XG4tXHR1bnNpZ25lZCBsb25nIHNhdmVkX3JlZztcbi1cbi1cdC8qXG4tXHQgKiBXZSBoYXZlIHNvbWUgQUJJIHdlaXJkbmVzcyBoZXJlIGluIHRoZSB3YXkgdGhhdCB3ZSBoYW5kbGUgc3lzY2FsbFxuLVx0ICogZXhpdCBzdG9wcyBiZWNhdXNlIHdlIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoZSBzdG9wIGhhcyBiZWVuXG4tXHQgKiBzaWduYWxsZWQgZnJvbSBzeXNjYWxsIGVudHJ5IG9yIHN5c2NhbGwgZXhpdCBieSBjbG9iYmVyaW5nIGEgZ2VuZXJhbFxuLVx0ICogcHVycG9zZSByZWdpc3RlciAoaXAvcjEyIGZvciBBQXJjaDMyLCB4NyBmb3IgQUFyY2g2NCkgaW4gdGhlIHRyYWNlZVxuLVx0ICogYW5kIHJlc3RvcmluZyBpdHMgb2xkIHZhbHVlIGFmdGVyIHRoZSBzdG9wLiBUaGlzIG1lYW5zIHRoYXQ6XG4tXHQgKlxuLVx0ICogLSBBbnkgd3JpdGVzIGJ5IHRoZSB0cmFjZXIgdG8gdGhpcyByZWdpc3RlciBkdXJpbmcgdGhlIHN0b3AgYXJlXG4tXHQgKiAgIGlnbm9yZWQvZGlzY2FyZGVkLlxuLVx0ICpcbi1cdCAqIC0gVGhlIGFjdHVhbCB2YWx1ZSBvZiB0aGUgcmVnaXN0ZXIgaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgdGhlIHN0b3AsXG4tXHQgKiAgIHNvIHRoZSB0cmFjZXIgY2Fubm90IHNhdmUgaXQgYW5kIHJlc3RvcmUgaXQgbGF0ZXIuXG4tXHQgKlxuLVx0ICogLSBTeXNjYWxsIHN0b3BzIGJlaGF2ZSBkaWZmZXJlbnRseSB0byBzZWNjb21wIGFuZCBwc2V1ZG8tc3RlcCB0cmFwc1xuLVx0ICogICAodGhlIGxhdHRlciBkbyBub3Qgbm9iYmxlIGFueSByZWdpc3RlcnMpLlxuLVx0ICovXG4tXHQqcmVnbm8gPSAoaXNfY29tcGF0X3Rhc2soKSA/IDEyIDogNyk7XG4tXHRzYXZlZF9yZWcgPSByZWdzLVx1MDAzZXJlZ3NbKnJlZ25vXTtcbi1cdHJlZ3MtXHUwMDNlcmVnc1sqcmVnbm9dID0gZGlyO1xuLVxuLVx0cmV0dXJuIHNhdmVkX3JlZztcbi19XG4tXG4tc3RhdGljIGludCByZXBvcnRfc3lzY2FsbF9lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi17XG4tXHR1bnNpZ25lZCBsb25nIHNhdmVkX3JlZztcbi1cdGludCByZWdubywgcmV0O1xuLVxuLVx0c2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VOVEVSLCBcdTAwMjZyZWdubyk7XG4tXHRyZXQgPSAhcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeShyZWdzKTtcbi1cdGlmIChyZXQpXG4tXHRcdGZvcmdldF9zeXNjYWxsKHJlZ3MpO1xuLVx0cmVncy1cdTAwM2VyZWdzW3JlZ25vXSA9IHNhdmVkX3JlZztcbi1cbi1cdHJldHVybiByZXQ7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIHJlcG9ydF9zeXNjYWxsX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4te1xuLVx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4tXHRpbnQgcmVnbm87XG4tXG4tXHRzYXZlZF9yZWcgPSBwdHJhY2Vfc2F2ZV9yZWcocmVncywgUFRSQUNFX1NZU0NBTExfRVhJVCwgXHUwMDI2cmVnbm8pO1xuLVx0aWYgKCF0ZXN0X3RocmVhZF9mbGFnKFRJRl9TSU5HTEVTVEVQKSkge1xuLVx0XHRwdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChyZWdzLCAwKTtcbi1cdFx0cmVncy1cdTAwM2VyZWdzW3JlZ25vXSA9IHNhdmVkX3JlZztcbi1cdH0gZWxzZSB7XG4tXHRcdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4tXG4tXHRcdC8qXG4tXHRcdCAqIFNpZ25hbCBhIHBzZXVkby1zdGVwIGV4Y2VwdGlvbiBzaW5jZSB3ZSBhcmUgc3RlcHBpbmcgYnV0XG4tXHRcdCAqIHRyYWNlciBtb2RpZmljYXRpb25zIHRvIHRoZSByZWdpc3RlcnMgbWF5IGhhdmUgcmV3b3VuZCB0aGVcbi1cdFx0ICogc3RhdGUgbWFjaGluZS5cbi1cdFx0ICovXG4tXHRcdHB0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MsIDEpO1xuLVx0fVxuLX1cbi1cbi1pbnQgc3lzY2FsbF90cmFjZV9lbnRlcihzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi17XG4tXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gcmVhZF90aHJlYWRfZmxhZ3MoKTtcbi1cdGludCByZXQ7XG4tXG4tXHRpZiAoZmxhZ3MgXHUwMDI2IChfVElGX1NZU0NBTExfRU1VIHwgX1RJRl9TWVNDQUxMX1RSQUNFKSkge1xuLVx0XHRyZXQgPSByZXBvcnRfc3lzY2FsbF9lbnRyeShyZWdzKTtcbi1cdFx0aWYgKHJldCB8fCAoZmxhZ3MgXHUwMDI2IF9USUZfU1lTQ0FMTF9FTVUpKVxuLVx0XHRcdHJldHVybiBOT19TWVNDQUxMO1xuLVx0fVxuLVxuLVx0LyogRG8gdGhlIHNlY3VyZSBjb21wdXRpbmcgYWZ0ZXIgcHRyYWNlOyBmYWlsdXJlcyBzaG91bGQgYmUgZmFzdC4gKi9cbi1cdGlmICghc2VjY29tcF9wZXJtaXRfc3lzY2FsbCgpKVxuLVx0XHRyZXR1cm4gTk9fU1lTQ0FMTDtcbi1cbi1cdGlmICh0ZXN0X3RocmVhZF9mbGFnKFRJRl9TWVNDQUxMX1RSQUNFUE9JTlQpKVxuLVx0XHR0cmFjZV9zeXNfZW50ZXIocmVncywgcmVncy1cdTAwM2VzeXNjYWxsbm8pO1xuLVxuLVx0YXVkaXRfc3lzY2FsbF9lbnRyeShyZWdzLVx1MDAzZXN5c2NhbGxubywgcmVncy1cdTAwM2VvcmlnX3gwLCByZWdzLVx1MDAzZXJlZ3NbMV0sXG4tXHRcdFx0ICAgIHJlZ3MtXHUwMDNlcmVnc1syXSwgcmVncy1cdTAwM2VyZWdzWzNdKTtcbi1cbi1cdHJldHVybiByZWdzLVx1MDAzZXN5c2NhbGxubztcbi19XG4tXG4tdm9pZCBzeXNjYWxsX3RyYWNlX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4te1xuLVx0dW5zaWduZWQgbG9uZyBmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7XG4tXG4tXHRhdWRpdF9zeXNjYWxsX2V4aXQocmVncyk7XG4tXG4tXHRpZiAoZmxhZ3MgXHUwMDI2IF9USUZfU1lTQ0FMTF9UUkFDRVBPSU5UKVxuLVx0XHR0cmFjZV9zeXNfZXhpdChyZWdzLCBzeXNjYWxsX2dldF9yZXR1cm5fdmFsdWUoY3VycmVudCwgcmVncykpO1xuLVxuLVx0aWYgKGZsYWdzIFx1MDAyNiAoX1RJRl9TWVNDQUxMX1RSQUNFIHwgX1RJRl9TSU5HTEVTVEVQKSlcbi1cdFx0cmVwb3J0X3N5c2NhbGxfZXhpdChyZWdzKTtcbi1cbi1cdHJzZXFfc3lzY2FsbChyZWdzKTtcbi19XG4tXG4gLypcbiAgKiBTUFNSX0VMeCBiaXRzIHdoaWNoIGFyZSBhbHdheXMgYXJjaGl0ZWN0dXJhbGx5IFJFUzAgcGVyIEFSTSBEREkgMDQ4N0QuYS5cbiAgKiBXZSBwZXJtaXQgdXNlcnNwYWNlIHRvIHNldCBTU0JTIChBQXJjaDY0IGJpdCAxMiwgQUFyY2gzMiBiaXQgMjMpIHdoaWNoIGlzXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuY1xuaW5kZXggMzhlNmZhMjA0YzE3YjUuLjA5M2VlYmI5ZDc2NGFjIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jXG5AQCAtOCw4ICYjNDM7OCw4IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY2FjaGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBhdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2VudHJ5LWNvbW1vbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lycS1lbnRyeS1jb21tb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2lnbmFsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcmVlemVyLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmNcbmluZGV4IDM1OGRkZmJmMTQwMWFjLi4yNTM1Y2FlOTQxM2Q4YSAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3N5c2NhbGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jXG5AQCAtMiw2ICYjNDM7Miw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbnRleHRfdHJhY2tpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9lbnRyeS1jb21tb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ub3NwZWMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cmFjZS5oXHUwMDNlXG5AQCAtNTQsMTUgJiM0Mzs1NSwxMSBAQCBzdGF0aWMgdm9pZCBpbnZva2Vfc3lzY2FsbChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgaW50IHNjbm8sXG4gXHRzeXNjYWxsX3NldF9yZXR1cm5fdmFsdWUoY3VycmVudCwgcmVncywgMCwgcmV0KTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBib29sIGhhc19zeXNjYWxsX3dvcmsodW5zaWduZWQgbG9uZyBmbGFncylcbi17XG4tXHRyZXR1cm4gdW5saWtlbHkoZmxhZ3MgXHUwMDI2IF9USUZfU1lTQ0FMTF9XT1JLKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsXG4tXHRcdFx0ICAgY29uc3Qgc3lzY2FsbF9mbl90IHN5c2NhbGxfdGFibGVbXSlcbiYjNDM7c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGVsMF9zdmNfY29tbW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgc2NubywgaW50IHNjX25yLFxuJiM0MztcdFx0XHRcdFx0ICAgY29uc3Qgc3lzY2FsbF9mbl90IHN5c2NhbGxfdGFibGVbXSlcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gcmVhZF90aHJlYWRfZmxhZ3MoKTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIHdvcms7XG4gXG4gXHRyZWdzLVx1MDAzZW9yaWdfeDAgPSByZWdzLVx1MDAzZXJlZ3NbMF07XG4gXHRyZWdzLVx1MDAzZXN5c2NhbGxubyA9IHNjbm87XG5AQCAtOTUsNyAmIzQzOzkyLDggQEAgc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdGlmIChoYXNfc3lzY2FsbF93b3JrKGZsYWdzKSkge1xuJiM0MztcdHdvcmsgPSBSRUFEX09OQ0UoY3VycmVudF90aHJlYWRfaW5mbygpLVx1MDAzZXN5c2NhbGxfd29yayk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KHdvcmsgXHUwMDI2IFNZU0NBTExfV09SS19FTlRFUikpIHtcbiBcdFx0LypcbiBcdFx0ICogVGhlIGRlLWZhY3RvIHN0YW5kYXJkIHdheSB0byBza2lwIGEgc3lzdGVtIGNhbGwgdXNpbmcgcHRyYWNlXG4gXHRcdCAqIGlzIHRvIHNldCB0aGUgc3lzdGVtIGNhbGwgdG8gLTEgKE5PX1NZU0NBTEwpIGFuZCBzZXQgeDAgdG8gYVxuQEAgLTExMywyNiAmIzQzOzExMSwxOCBAQCBzdGF0aWMgdm9pZCBlbDBfc3ZjX2NvbW1vbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IHNjbm8sIGludCBzY19ucixcbiBcdFx0ICovXG4gXHRcdGlmIChzY25vID09IE5PX1NZU0NBTEwpXG4gXHRcdFx0c3lzY2FsbF9zZXRfcmV0dXJuX3ZhbHVlKGN1cnJlbnQsIHJlZ3MsIC1FTk9TWVMsIDApO1xuLVx0XHRzY25vID0gc3lzY2FsbF90cmFjZV9lbnRlcihyZWdzKTtcbiYjNDM7XHRcdGlmICghc3lzY2FsbF90cmFjZV9lbnRlcihyZWdzLCB3b3JrLCBzY25vKSlcbiYjNDM7XHRcdFx0Z290byB0cmFjZV9leGl0O1xuJiM0MztcbiYjNDM7XHRcdC8qIFJlcmVhZCB0aGUgc3lzY2FsbCBudW1iZXIgYXMgaXQgbWlnaHQgaGF2ZSBiZWVuIG1vZGlmaWVkICovXG4mIzQzO1x0XHRzY25vID0gc3lzY2FsbF9nZXRfbnIoY3VycmVudCwgcmVncyk7XG4gXHRcdGlmIChzY25vID09IE5PX1NZU0NBTEwpXG4gXHRcdFx0Z290byB0cmFjZV9leGl0O1xuIFx0fVxuIFxuIFx0aW52b2tlX3N5c2NhbGwocmVncywgc2Nubywgc2NfbnIsIHN5c2NhbGxfdGFibGUpO1xuLVxuLVx0Lypcbi1cdCAqIFRoZSB0cmFjaW5nIHN0YXR1cyBtYXkgaGF2ZSBjaGFuZ2VkIHVuZGVyIG91ciBmZWV0LCBzbyB3ZSBoYXZlIHRvXG4tXHQgKiBjaGVjayBhZ2Fpbi4gSG93ZXZlciwgaWYgd2Ugd2VyZSB0cmFjaW5nIGVudHJ5LCB0aGVuIHdlIGFsd2F5cyB0cmFjZVxuLVx0ICogZXhpdCByZWdhcmRsZXNzLCBhcyB0aGUgb2xkIGVudHJ5IGFzc2VtYmx5IGRpZC5cbi1cdCAqL1xuLVx0aWYgKCFoYXNfc3lzY2FsbF93b3JrKGZsYWdzKSBcdTAwMjZcdTAwMjYgIUlTX0VOQUJMRUQoQ09ORklHX0RFQlVHX1JTRVEpKSB7XG4tXHRcdGZsYWdzID0gcmVhZF90aHJlYWRfZmxhZ3MoKTtcbi1cdFx0aWYgKCFoYXNfc3lzY2FsbF93b3JrKGZsYWdzKSBcdTAwMjZcdTAwMjYgIShmbGFncyBcdTAwMjYgX1RJRl9TSU5HTEVTVEVQKSlcbi1cdFx0XHRyZXR1cm47XG4tXHR9XG4tXG4gdHJhY2VfZXhpdDpcbi1cdHN5c2NhbGxfdHJhY2VfZXhpdChyZWdzKTtcbiYjNDM7XHRzeXNjYWxsX2V4aXRfdG9fdXNlcl9tb2RlX3dvcmsocmVncyk7XG4gfVxuIFxuIHZvaWQgZG9fZWwwX3N2YyhzdHJ1Y3QgcHRfcmVncyAqcmVncylcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmMgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmNcbmluZGV4IDU5MmRkODY2OGRlNDYzLi4zN2NkYzdjNzJlMTVjMyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jXG5AQCAtMzQzLDMgJiM0MzszNDMsMTkgQEAgaW50IGFyY2hfc2V0dXBfYWRkaXRpb25hbF9wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBpbnQgdXNlc19pbnRlcnApXG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiYjNDM7XG4mIzQzO2Jvb2wgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBsYW5kaW5nX3BhZDtcbiYjNDM7XG4mIzQzOyNpZmRlZiBDT05GSUdfQ09NUEFUXG4mIzQzO1x0aWYgKGlzX2NvbXBhdF90YXNrKCkpIHtcbiYjNDM7XHRcdHVuc2lnbmVkIGxvbmcgc2lncGFnZSA9ICh1bnNpZ25lZCBsb25nKWN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlY29udGV4dC5zaWdwYWdlO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybiByZWdzLVx1MDAzZXBjIFx1MDAzZT0gc2lncGFnZSBcdTAwMjZcdTAwMjYgcmVncy1cdTAwM2VwYyBcdTAwM2MgKHNpZ3BhZ2UgJiM0MzsgUEFHRV9TSVpFKTtcbiYjNDM7XHR9XG4mIzQzOyNlbmRpZlxuJiM0MztcdGxhbmRpbmdfcGFkID0gKHVuc2lnbmVkIGxvbmcpVkRTT19TWU1CT0woY3VycmVudC1cdTAwM2VtbS1cdTAwM2Vjb250ZXh0LnZkc28sIHNpZ3JldHVybl9sYW5kaW5nX3BhZCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWdzLVx1MDAzZXBjID09IGxhbmRpbmdfcGFkO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby9zaWdyZXR1cm4uUyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlNcbmluZGV4IDBlMTg3MjlhYmMzYjc4Li44ZDJkNDEzZmY0NWU4YiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlNcbkBAIC03Myw2ICYjNDM7NzMsNyBAQCBTWU1fQ09ERV9TVEFSVChfX2tlcm5lbF9ydF9zaWdyZXR1cm4pXG4gXHRtb3ZcdHg4LCAjX19OUl9ydF9zaWdyZXR1cm5cbiAvL1x0UExFQVNFIERPIE5PVCBNT0RJRllcbiBcdHN2Y1x0IzBcbiYjNDM7XHRTWU1fSU5ORVJfTEFCRUwoX19zaWdyZXR1cm5fbGFuZGluZ19wYWQsIFNZTV9MX0dMT0JBTClcbiAvL1x0UExFQVNFIERPIE5PVCBNT0RJRllcbiAvL1x0LmNmaV9lbmRwcm9jXG4gU1lNX0NPREVfRU5EKF9fa2VybmVsX3J0X3NpZ3JldHVybilcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlMgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlNcbmluZGV4IDUyMzE0YmUyOTE5MTIxLi5kYTYxZDZmYzZmZTlmMyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TXG5AQCAtMTEyLDMgJiM0MzsxMTIsNCBAQCBWRVJTSU9OXG4gICogTWFrZSB0aGUgc2lncmV0dXJuIGNvZGUgdmlzaWJsZSB0byB0aGUga2VybmVsLlxuICAqL1xuIFZEU09fc2lndHJhbXBcdFx0PSBfX2tlcm5lbF9ydF9zaWdyZXR1cm47XG4mIzQzO1ZEU09fc2lncmV0dXJuX2xhbmRpbmdfcGFkXHQ9IF9fc2lncmV0dXJuX2xhbmRpbmdfcGFkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIyOjEwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTWVNDQUxMX1VTRVJfRElTUEFUQ0gmIzM0OywKICAgICYjMzQ7Q09NUEFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuJiMzNDssCiAgICAmIzM0O3VzZXJfZW5hYmxlX3NpbmdsZV9zdGVwJiMzNDssCiAgICAmIzM0O3VzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb252ZXJ0cyBhcm02NCB0byB1c2UgdGhlIGdlbmVyaWMgZW50cnkgaW5mcmFzdHJ1Y3R1cmUgYW5kIGFkZHMgc3VwcG9ydCBmb3IgU3lzY2FsbCBVc2VyIERpc3BhdGNoLiBUaGlzIGludm9sdmVzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBzeXNjYWxsIGVudHJ5L2V4aXQgcGF0aHMsIHB0cmFjZSBzaW5nbGUtc3RlcHBpbmcsIGFuZCBWRFNPIHNpZ3JldHVybiBkZXRlY3Rpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYzY2YwNGIxY2RlOTBkOTIwNGM2OTdjNTYyNTI0MTg3YTM5YzJkZjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyMSAyMjoxMDozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvS2NvbmZpZyBiL2FyY2gvYXJtNjQvS2NvbmZpZwppbmRleCBmYjE1MDM3YjVlM2M3ZS4uZWZlZjA3ODU3ZDM4ODQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L0tjb25maWcKQEAgLTg3LDYgJiM0Mzs4Nyw3IEBAIGNvbmZpZyBBUk02NAogCXNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX1NNVAogCXNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX0NMVVNURVIKIAlzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9NQwomIzQzOwlzZWxlY3QgQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0gKIAlzZWxlY3QgQVJDSF9XQU5UX0JBVENIRURfVU5NQVBfVExCX0ZMVVNICiAJc2VsZWN0IEFSQ0hfV0FOVF9DT01QQVRfSVBDX1BBUlNFX1ZFUlNJT04gaWYgQ09NUEFUCiAJc2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQKQEAgLTEyOSw5ICYjNDM7MTMwLDkgQEAgY29uZmlnIEFSTTY0CiAJc2VsZWN0IEdFTkVSSUNfQ1BVX0RFVklDRVMKIAlzZWxlY3QgR0VORVJJQ19DUFVfVlVMTkVSQUJJTElUSUVTCiAJc2VsZWN0IEdFTkVSSUNfRUFSTFlfSU9SRU1BUAomIzQzOwlzZWxlY3QgR0VORVJJQ19FTlRSWQogCXNlbGVjdCBHRU5FUklDX0lETEVfUE9MTF9TRVRVUAogCXNlbGVjdCBHRU5FUklDX0lPUkVNQVAKLQlzZWxlY3QgR0VORVJJQ19JUlFfRU5UUlkKIAlzZWxlY3QgR0VORVJJQ19JUlFfSVBJCiAJc2VsZWN0IEdFTkVSSUNfSVJRX0tFWEVDX0NMRUFSX1ZNX0ZPUldBUkQKIAlzZWxlY3QgR0VORVJJQ19JUlFfUFJPQkUKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oCmluZGV4IGQyNzc5ZDYwNGM3YmUyLi5hOGIyMzJjNWM2ZDlmOCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbGYuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oCkBAIC0yOTMsNiAmIzQzOzI5Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGFyY2hfY2hlY2tfZWxmKHZvaWQgKmVoZHIsIGJvb2wgaGFzX2ludGVycCwKIAlyZXR1cm4gMDsKIH0KIAomIzQzO2V4dGVybiBib29sIGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CiAjZW5kaWYgLyogIV9fQVNTRU1CTEVSX18gKi8KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaAppbmRleCBjYWI4Y2Q3OGY2OTM4NS4uMmIwNTNhY2JlMTBmZWEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaApAQCAtMywxNCAmIzQzOzMsMjEgQEAKICNpZm5kZWYgX0FTTV9BUk02NF9FTlRSWV9DT01NT05fSAogI2RlZmluZSBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9ICiAKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHRyYWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdGhyZWFkX2luZm8uaCZndDsKIAomIzQzOyNpbmNsdWRlICZsdDthc20vY29tcGF0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2NwdWZlYXR1cmUuaCZndDsKICNpbmNsdWRlICZsdDthc20vZGFpZmZsYWdzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2Zwc2ltZC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9tdGUuaCZndDsKICNpbmNsdWRlICZsdDthc20vc3RhY2t0cmFjZS5oJmd0OwogCiYjNDM7ZW51bSBwdHJhY2Vfc3lzY2FsbF9kaXIgewomIzQzOwlQVFJBQ0VfU1lTQ0FMTF9FTlRFUiA9IDAsCiYjNDM7CVBUUkFDRV9TWVNDQUxMX0VYSVQsCiYjNDM7fTsKJiM0MzsKICNkZWZpbmUgQVJDSF9FWElUX1RPX1VTRVJfTU9ERV9XT1JLIChfVElGX01URV9BU1lOQ19GQVVMVCB8IF9USUZfRk9SRUlHTl9GUFNUQVRFKQogCiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV93b3JrKHN0cnVjdCBwdF9yZWdzICpyZWdzLApAQCAtNTQsNCAmIzQzOzYxLDc0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkKHZvaWQpCiAKICNkZWZpbmUgYXJjaF9pcnFlbnRyeV9leGl0X25lZWRfcmVzY2hlZCBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkCiAKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcgcHRyYWNlX3NhdmVfcmVnKHN0cnVjdCBwdF9yZWdzICpyZWdzLAomIzQzOwkJCQkJCSAgICAgZW51bSBwdHJhY2Vfc3lzY2FsbF9kaXIgZGlyLAomIzQzOwkJCQkJCSAgICAgaW50ICpyZWdubykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBXZSBoYXZlIHNvbWUgQUJJIHdlaXJkbmVzcyBoZXJlIGluIHRoZSB3YXkgdGhhdCB3ZSBoYW5kbGUgc3lzY2FsbAomIzQzOwkgKiBleGl0IHN0b3BzIGJlY2F1c2Ugd2UgaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhlIHN0b3AgaGFzIGJlZW4KJiM0MzsJICogc2lnbmFsbGVkIGZyb20gc3lzY2FsbCBlbnRyeSBvciBzeXNjYWxsIGV4aXQgYnkgY2xvYmJlcmluZyBhIGdlbmVyYWwKJiM0MzsJICogcHVycG9zZSByZWdpc3RlciAoaXAvcjEyIGZvciBBQXJjaDMyLCB4NyBmb3IgQUFyY2g2NCkgaW4gdGhlIHRyYWNlZQomIzQzOwkgKiBhbmQgcmVzdG9yaW5nIGl0cyBvbGQgdmFsdWUgYWZ0ZXIgdGhlIHN0b3AuIFRoaXMgbWVhbnMgdGhhdDoKJiM0MzsJICoKJiM0MzsJICogLSBBbnkgd3JpdGVzIGJ5IHRoZSB0cmFjZXIgdG8gdGhpcyByZWdpc3RlciBkdXJpbmcgdGhlIHN0b3AgYXJlCiYjNDM7CSAqICAgaWdub3JlZC9kaXNjYXJkZWQuCiYjNDM7CSAqCiYjNDM7CSAqIC0gVGhlIGFjdHVhbCB2YWx1ZSBvZiB0aGUgcmVnaXN0ZXIgaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgdGhlIHN0b3AsCiYjNDM7CSAqICAgc28gdGhlIHRyYWNlciBjYW5ub3Qgc2F2ZSBpdCBhbmQgcmVzdG9yZSBpdCBsYXRlci4KJiM0MzsJICoKJiM0MzsJICogLSBTeXNjYWxsIHN0b3BzIGJlaGF2ZSBkaWZmZXJlbnRseSB0byBzZWNjb21wIGFuZCBwc2V1ZG8tc3RlcCB0cmFwcwomIzQzOwkgKiAgICh0aGUgbGF0dGVyIGRvIG5vdCBub2JibGUgYW55IHJlZ2lzdGVycykuCiYjNDM7CSAqLwomIzQzOwkqcmVnbm8gPSAoaXNfY29tcGF0X3Rhc2soKSA/IDEyIDogNyk7CiYjNDM7CXNhdmVkX3JlZyA9IHJlZ3MtJmd0O3JlZ3NbKnJlZ25vXTsKJiM0MzsJcmVncy0mZ3Q7cmVnc1sqcmVnbm9dID0gZGlyOwomIzQzOwomIzQzOwlyZXR1cm4gc2F2ZWRfcmVnOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfcGVybWl0X2VudHJ5KHN0cnVjdCBwdF9yZWdzICpyZWdzKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7CiYjNDM7CWJvb2wgcGVybWl0OwomIzQzOwlpbnQgcmVnbm87CiYjNDM7CiYjNDM7CXNhdmVkX3JlZyA9IHB0cmFjZV9zYXZlX3JlZyhyZWdzLCBQVFJBQ0VfU1lTQ0FMTF9FTlRFUiwgJmFtcDtyZWdubyk7CiYjNDM7CXBlcm1pdCA9IHB0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkocmVncyk7CiYjNDM7CWlmICghcGVybWl0KQomIzQzOwkJZm9yZ2V0X3N5c2NhbGwocmVncyk7CiYjNDM7CXJlZ3MtJmd0O3JlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnOwomIzQzOwomIzQzOwlyZXR1cm4gcGVybWl0OwomIzQzO30KJiM0MzsKJiM0MzsjZGVmaW5lIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeSBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkKJiM0MzsKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChzdHJ1Y3QgcHRfcmVncyAqcmVncywKJiM0MzsJCQkJCQkJICAgIGludCBzdGVwKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7CiYjNDM7CWludCByZWdubzsKJiM0MzsKJiM0MzsJc2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VYSVQsICZhbXA7cmVnbm8pOwomIzQzOwlpZiAoIXN0ZXApIHsKJiM0MzsJCXB0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MsIDApOwomIzQzOwkJcmVncy0mZ3Q7cmVnc1tyZWdub10gPSBzYXZlZF9yZWc7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlyZWdzLSZndDtyZWdzW3JlZ25vXSA9IHNhdmVkX3JlZzsKJiM0MzsKJiM0MzsJCS8qCiYjNDM7CQkgKiBTaWduYWwgYSBwc2V1ZG8tc3RlcCBleGNlcHRpb24gc2luY2Ugd2UgYXJlIHN0ZXBwaW5nIGJ1dAomIzQzOwkJICogdHJhY2VyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlZ2lzdGVycyBtYXkgaGF2ZSByZXdvdW5kIHRoZQomIzQzOwkJICogc3RhdGUgbWFjaGluZS4KJiM0MzsJCSAqLwomIzQzOwkJcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7I2RlZmluZSBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0IGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQKJiM0MzsKICNlbmRpZiAvKiBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c2NhbGwuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oCmluZGV4IDVlNGM3ZmM0NGY3MzE1Li5lM2U3MTY1NzU4NDY0NiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNjYWxsLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNjYWxsLmgKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O3VhcGkvbGludXgvYXVkaXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jb21wYXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcnNlcS5oJmd0OwogCiB0eXBlZGVmIGxvbmcgKCpzeXNjYWxsX2ZuX3QpKGNvbnN0IHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKIApAQCAtMTE5LDggJiM0MzsxMjAsNCBAQCBzdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX2dldF9hcmNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKIAogCXJldHVybiBBVURJVF9BUkNIX0FBUkNINjQ7CiB9Ci0KLWludCBzeXNjYWxsX3RyYWNlX2VudGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKLXZvaWQgc3lzY2FsbF90cmFjZV9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKLQogI2VuZGlmCS8qIF9fQVNNX1NZU0NBTExfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oCmluZGV4IDVkN2ZlM2UxNTNjODUwLi4zZjYyMWJhMGY5NjEzNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaApAQCAtNDYsNiAmIzQzOzQ2LDcgQEAgc3RydWN0IHRocmVhZF9pbmZvIHsKIAl1NjQJCQltcGFtX3BhcnRpZF9wbWc7CiAjZW5kaWYKIAl1MzIJCQljcHU7CiYjNDM7CXVuc2lnbmVkIGxvbmcJCXN5c2NhbGxfd29yazsgICAvKiBTWVNDQUxMX1dPUktfIGZsYWdzICovCiB9OwogCiAjZGVmaW5lIHRocmVhZF9zYXZlZF9wYyh0c2spCVwKQEAgLTY4LDExICYjNDM7NjksNiBAQCB2b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7CiAjZGVmaW5lIFRJRl9VUFJPQkUJCTUJLyogdXByb2JlIGJyZWFrcG9pbnQgb3Igc2luZ2xlc3RlcCAqLwogI2RlZmluZSBUSUZfTVRFX0FTWU5DX0ZBVUxUCTYJLyogTVRFIEFzeW5jaHJvbm91cyBUYWcgQ2hlY2sgRmF1bHQgKi8KICNkZWZpbmUgVElGX05PVElGWV9TSUdOQUwJNwkvKiBzaWduYWwgbm90aWZpY2F0aW9ucyBleGlzdCAqLwotI2RlZmluZSBUSUZfU1lTQ0FMTF9UUkFDRQk4CS8qIHN5c2NhbGwgdHJhY2UgYWN0aXZlICovCi0jZGVmaW5lIFRJRl9TWVNDQUxMX0FVRElUCTkJLyogc3lzY2FsbCBhdWRpdGluZyAqLwotI2RlZmluZSBUSUZfU1lTQ0FMTF9UUkFDRVBPSU5UCTEwCS8qIHN5c2NhbGwgdHJhY2Vwb2ludCBmb3IgZnRyYWNlICovCi0jZGVmaW5lIFRJRl9TRUNDT01QCQkxMQkvKiBzeXNjYWxsIHNlY3VyZSBjb21wdXRpbmcgKi8KLSNkZWZpbmUgVElGX1NZU0NBTExfRU1VCQkxMgkvKiBzeXNjYWxsIGVtdWxhdGlvbiBhY3RpdmUgKi8KICNkZWZpbmUgVElGX1BBVENIX1BFTkRJTkcJMTMJLyogcGVuZGluZyBsaXZlIHBhdGNoaW5nIHVwZGF0ZSAqLwogI2RlZmluZSBUSUZfTUVNRElFCQkxOAkvKiBpcyB0ZXJtaW5hdGluZyBkdWUgdG8gT09NIGtpbGxlciAqLwogI2RlZmluZSBUSUZfRlJFRVpFCQkxOQpAQCAtOTQsMjQgJiM0Mzs5MCwxNCBAQCB2b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7CiAjZGVmaW5lIF9USUZfTkVFRF9SRVNDSEVEX0xBWlkJKDEgJmx0OyZsdDsgVElGX05FRURfUkVTQ0hFRF9MQVpZKQogI2RlZmluZSBfVElGX05PVElGWV9SRVNVTUUJKDEgJmx0OyZsdDsgVElGX05PVElGWV9SRVNVTUUpCiAjZGVmaW5lIF9USUZfRk9SRUlHTl9GUFNUQVRFCSgxICZsdDsmbHQ7IFRJRl9GT1JFSUdOX0ZQU1RBVEUpCi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9UUkFDRQkoMSAmbHQ7Jmx0OyBUSUZfU1lTQ0FMTF9UUkFDRSkKLSNkZWZpbmUgX1RJRl9TWVNDQUxMX0FVRElUCSgxICZsdDsmbHQ7IFRJRl9TWVNDQUxMX0FVRElUKQotI2RlZmluZSBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVAkoMSAmbHQ7Jmx0OyBUSUZfU1lTQ0FMTF9UUkFDRVBPSU5UKQotI2RlZmluZSBfVElGX1NFQ0NPTVAJCSgxICZsdDsmbHQ7IFRJRl9TRUNDT01QKQotI2RlZmluZSBfVElGX1NZU0NBTExfRU1VCSgxICZsdDsmbHQ7IFRJRl9TWVNDQUxMX0VNVSkKICNkZWZpbmUgX1RJRl9QQVRDSF9QRU5ESU5HCSgxICZsdDsmbHQ7IFRJRl9QQVRDSF9QRU5ESU5HKQogI2RlZmluZSBfVElGX1VQUk9CRQkJKDEgJmx0OyZsdDsgVElGX1VQUk9CRSkKLSNkZWZpbmUgX1RJRl9TSU5HTEVTVEVQCQkoMSAmbHQ7Jmx0OyBUSUZfU0lOR0xFU1RFUCkKICNkZWZpbmUgX1RJRl8zMkJJVAkJKDEgJmx0OyZsdDsgVElGXzMyQklUKQogI2RlZmluZSBfVElGX1NWRQkJKDEgJmx0OyZsdDsgVElGX1NWRSkKICNkZWZpbmUgX1RJRl9NVEVfQVNZTkNfRkFVTFQJKDEgJmx0OyZsdDsgVElGX01URV9BU1lOQ19GQVVMVCkKICNkZWZpbmUgX1RJRl9OT1RJRllfU0lHTkFMCSgxICZsdDsmbHQ7IFRJRl9OT1RJRllfU0lHTkFMKQogI2RlZmluZSBfVElGX1RTQ19TSUdTRUdWCSgxICZsdDsmbHQ7IFRJRl9UU0NfU0lHU0VHVikKIAotI2RlZmluZSBfVElGX1NZU0NBTExfV09SSwkoX1RJRl9TWVNDQUxMX1RSQUNFIHwgX1RJRl9TWVNDQUxMX0FVRElUIHwgXAotCQkJCSBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVCB8IF9USUZfU0VDQ09NUCB8IFwKLQkJCQkgX1RJRl9TWVNDQUxMX0VNVSkKLQogI2lmZGVmIENPTkZJR19TSEFET1dfQ0FMTF9TVEFDSwogI2RlZmluZSBJTklUX1NDUwkJCQkJCQlcCiAJLnNjc19iYXNlCT0gaW5pdF9zaGFkb3dfY2FsbF9zdGFjaywJCQlcCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jIGIvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYwppbmRleCAyOTMwNzY0MmY0YzkwNC4uYzUzNjgzODM5MTU1MzYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYwpAQCAtMzg1LDExICYjNDM7Mzg1LDE5IEBAIHZvaWQgdXNlcl9lbmFibGVfc2luZ2xlX3N0ZXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogCiAJaWYgKCF0ZXN0X2FuZF9zZXRfdGlfdGhyZWFkX2ZsYWcodGksIFRJRl9TSU5HTEVTVEVQKSkKIAkJc2V0X3JlZ3Nfc3Bzcl9zcyh0YXNrX3B0X3JlZ3ModGFzaykpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBFbnN1cmUgdGhhdCB0aGUgZ2VuZXJpYyBlbnRyeSBjb2RlIHRyaWdnZXJzIGEgdHJhcCBvbmNlIHN0ZXBwaW5nCiYjNDM7CSAqIG91dCBvZiBhIHN5c3RlbSBjYWxsIHByaW9yIHRvIGV4ZWN1dGluZyBhbnkgdXNlciBpbnN0cnVjdGlvbiwKJiM0MzsJICogYXMgdGhlIGdlbmVyaWMgZW50cnkgY29kZSBkb2VzIG5vdCBuYXRpdmVseSBjaGVjayBmb3IgVElGX1NJTkdMRVNURVAuCiYjNDM7CSAqLwomIzQzOwlzZXRfdGFza19zeXNjYWxsX3dvcmsodGFzaywgU1lTQ0FMTF9FWElUX1RSQVApOwogfQogTk9LUFJPQkVfU1lNQk9MKHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKTsKIAogdm9pZCB1c2VyX2Rpc2FibGVfc2luZ2xlX3N0ZXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogewogCWNsZWFyX3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odGFzayksIFRJRl9TSU5HTEVTVEVQKTsKJiM0MzsJY2xlYXJfdGFza19zeXNjYWxsX3dvcmsodGFzaywgU1lTQ0FMTF9FWElUX1RSQVApOwogfQogTk9LUFJPQkVfU1lNQk9MKHVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uYyBiL2FyY2gvYXJtNjQva2VybmVsL2VudHJ5LWNvbW1vbi5jCmluZGV4IGNlYjRlYjExMjMyYTYxLi45ZWFjNzY4MDRiZDlhZSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmMKQEAgLTYsNyAmIzQzOzYsNyBAQAogICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9jb250ZXh0X3RyYWNraW5nLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7bGludXgvaXJxLWVudHJ5LWNvbW1vbi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9lbnRyeS1jb21tb24uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rYXNhbi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2xpbmthZ2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9saXZlcGF0Y2guaCZndDsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jIGIvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMKaW5kZXggNTcwOWU5ZDNjMzIxYTUuLjYxYTY2ODY4Mjk0NzE1IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYwpAQCAtOCw3ICYjNDM7OCw2IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQVJNIEx0ZC4KICAqLwogCi0jaW5jbHVkZSAmbHQ7bGludXgvYXVkaXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jb21wYXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zY2hlZC9zaWduYWwuaCZndDsKQEAgLTE4LDcgJiM0MzsxNyw2IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvc21wLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHRyYWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdXNlci5oJmd0OwotI2luY2x1ZGUgJmx0O2xpbnV4L3NlY2NvbXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zZWN1cml0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2luaXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zaWduYWwuaCZndDsKQEAgLTI4LDcgJiM0MzsyNiw2IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaHdfYnJlYWtwb2ludC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZ3NldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2VsZi5oJmd0OwotI2luY2x1ZGUgJmx0O2xpbnV4L3JzZXEuaCZndDsKIAogI2luY2x1ZGUgJmx0O2FzbS9jb21wYXQuaCZndDsKICNpbmNsdWRlICZsdDthc20vY3B1ZmVhdHVyZS5oJmd0OwpAQCAtMzgsMTMgJiM0MzszNSw5IEBACiAjaW5jbHVkZSAmbHQ7YXNtL210ZS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9wb2ludGVyX2F1dGguaCZndDsKICNpbmNsdWRlICZsdDthc20vc3RhY2t0cmFjZS5oJmd0OwotI2luY2x1ZGUgJmx0O2FzbS9zeXNjYWxsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL3RyYXBzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL3N5c3RlbV9taXNjLmgmZ3Q7CiAKLSNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UUwotI2luY2x1ZGUgJmx0O3RyYWNlL2V2ZW50cy9zeXNjYWxscy5oJmd0OwotCiBzdHJ1Y3QgcHRfcmVnc19vZmZzZXQgewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJaW50IG9mZnNldDsKQEAgLTIzMzksMTE0ICYjNDM7MjMzMiw2IEBAIGxvbmcgYXJjaF9wdHJhY2Uoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwgbG9uZyByZXF1ZXN0LAogCXJldHVybiBwdHJhY2VfcmVxdWVzdChjaGlsZCwgcmVxdWVzdCwgYWRkciwgZGF0YSk7CiB9CiAKLWVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIHsKLQlQVFJBQ0VfU1lTQ0FMTF9FTlRFUiA9IDAsCi0JUFRSQUNFX1NZU0NBTExfRVhJVCwKLX07Ci0KLXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBwdHJhY2Vfc2F2ZV9yZWcoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCi0JCQkJCQkgICAgIGVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIGRpciwKLQkJCQkJCSAgICAgaW50ICpyZWdubykKLXsKLQl1bnNpZ25lZCBsb25nIHNhdmVkX3JlZzsKLQotCS8qCi0JICogV2UgaGF2ZSBzb21lIEFCSSB3ZWlyZG5lc3MgaGVyZSBpbiB0aGUgd2F5IHRoYXQgd2UgaGFuZGxlIHN5c2NhbGwKLQkgKiBleGl0IHN0b3BzIGJlY2F1c2Ugd2UgaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhlIHN0b3AgaGFzIGJlZW4KLQkgKiBzaWduYWxsZWQgZnJvbSBzeXNjYWxsIGVudHJ5IG9yIHN5c2NhbGwgZXhpdCBieSBjbG9iYmVyaW5nIGEgZ2VuZXJhbAotCSAqIHB1cnBvc2UgcmVnaXN0ZXIgKGlwL3IxMiBmb3IgQUFyY2gzMiwgeDcgZm9yIEFBcmNoNjQpIGluIHRoZSB0cmFjZWUKLQkgKiBhbmQgcmVzdG9yaW5nIGl0cyBvbGQgdmFsdWUgYWZ0ZXIgdGhlIHN0b3AuIFRoaXMgbWVhbnMgdGhhdDoKLQkgKgotCSAqIC0gQW55IHdyaXRlcyBieSB0aGUgdHJhY2VyIHRvIHRoaXMgcmVnaXN0ZXIgZHVyaW5nIHRoZSBzdG9wIGFyZQotCSAqICAgaWdub3JlZC9kaXNjYXJkZWQuCi0JICoKLQkgKiAtIFRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIHJlZ2lzdGVyIGlzIG5vdCBhdmFpbGFibGUgZHVyaW5nIHRoZSBzdG9wLAotCSAqICAgc28gdGhlIHRyYWNlciBjYW5ub3Qgc2F2ZSBpdCBhbmQgcmVzdG9yZSBpdCBsYXRlci4KLQkgKgotCSAqIC0gU3lzY2FsbCBzdG9wcyBiZWhhdmUgZGlmZmVyZW50bHkgdG8gc2VjY29tcCBhbmQgcHNldWRvLXN0ZXAgdHJhcHMKLQkgKiAgICh0aGUgbGF0dGVyIGRvIG5vdCBub2JibGUgYW55IHJlZ2lzdGVycykuCi0JICovCi0JKnJlZ25vID0gKGlzX2NvbXBhdF90YXNrKCkgPyAxMiA6IDcpOwotCXNhdmVkX3JlZyA9IHJlZ3MtJmd0O3JlZ3NbKnJlZ25vXTsKLQlyZWdzLSZndDtyZWdzWypyZWdub10gPSBkaXI7Ci0KLQlyZXR1cm4gc2F2ZWRfcmVnOwotfQotCi1zdGF0aWMgaW50IHJlcG9ydF9zeXNjYWxsX2VudHJ5KHN0cnVjdCBwdF9yZWdzICpyZWdzKQotewotCXVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnOwotCWludCByZWdubywgcmV0OwotCi0Jc2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VOVEVSLCAmYW1wO3JlZ25vKTsKLQlyZXQgPSAhcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeShyZWdzKTsKLQlpZiAocmV0KQotCQlmb3JnZXRfc3lzY2FsbChyZWdzKTsKLQlyZWdzLSZndDtyZWdzW3JlZ25vXSA9IHNhdmVkX3JlZzsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlcG9ydF9zeXNjYWxsX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCi17Ci0JdW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7Ci0JaW50IHJlZ25vOwotCi0Jc2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VYSVQsICZhbXA7cmVnbm8pOwotCWlmICghdGVzdF90aHJlYWRfZmxhZyhUSUZfU0lOR0xFU1RFUCkpIHsKLQkJcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMCk7Ci0JCXJlZ3MtJmd0O3JlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnOwotCX0gZWxzZSB7Ci0JCXJlZ3MtJmd0O3JlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnOwotCi0JCS8qCi0JCSAqIFNpZ25hbCBhIHBzZXVkby1zdGVwIGV4Y2VwdGlvbiBzaW5jZSB3ZSBhcmUgc3RlcHBpbmcgYnV0Ci0JCSAqIHRyYWNlciBtb2RpZmljYXRpb25zIHRvIHRoZSByZWdpc3RlcnMgbWF5IGhhdmUgcmV3b3VuZCB0aGUKLQkJICogc3RhdGUgbWFjaGluZS4KLQkJICovCi0JCXB0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MsIDEpOwotCX0KLX0KLQotaW50IHN5c2NhbGxfdHJhY2VfZW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCi17Ci0JdW5zaWduZWQgbG9uZyBmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7Ci0JaW50IHJldDsKLQotCWlmIChmbGFncyAmYW1wOyAoX1RJRl9TWVNDQUxMX0VNVSB8IF9USUZfU1lTQ0FMTF9UUkFDRSkpIHsKLQkJcmV0ID0gcmVwb3J0X3N5c2NhbGxfZW50cnkocmVncyk7Ci0JCWlmIChyZXQgfHwgKGZsYWdzICZhbXA7IF9USUZfU1lTQ0FMTF9FTVUpKQotCQkJcmV0dXJuIE5PX1NZU0NBTEw7Ci0JfQotCi0JLyogRG8gdGhlIHNlY3VyZSBjb21wdXRpbmcgYWZ0ZXIgcHRyYWNlOyBmYWlsdXJlcyBzaG91bGQgYmUgZmFzdC4gKi8KLQlpZiAoIXNlY2NvbXBfcGVybWl0X3N5c2NhbGwoKSkKLQkJcmV0dXJuIE5PX1NZU0NBTEw7Ci0KLQlpZiAodGVzdF90aHJlYWRfZmxhZyhUSUZfU1lTQ0FMTF9UUkFDRVBPSU5UKSkKLQkJdHJhY2Vfc3lzX2VudGVyKHJlZ3MsIHJlZ3MtJmd0O3N5c2NhbGxubyk7Ci0KLQlhdWRpdF9zeXNjYWxsX2VudHJ5KHJlZ3MtJmd0O3N5c2NhbGxubywgcmVncy0mZ3Q7b3JpZ194MCwgcmVncy0mZ3Q7cmVnc1sxXSwKLQkJCSAgICByZWdzLSZndDtyZWdzWzJdLCByZWdzLSZndDtyZWdzWzNdKTsKLQotCXJldHVybiByZWdzLSZndDtzeXNjYWxsbm87Ci19Ci0KLXZvaWQgc3lzY2FsbF90cmFjZV9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzKQotewotCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSByZWFkX3RocmVhZF9mbGFncygpOwotCi0JYXVkaXRfc3lzY2FsbF9leGl0KHJlZ3MpOwotCi0JaWYgKGZsYWdzICZhbXA7IF9USUZfU1lTQ0FMTF9UUkFDRVBPSU5UKQotCQl0cmFjZV9zeXNfZXhpdChyZWdzLCBzeXNjYWxsX2dldF9yZXR1cm5fdmFsdWUoY3VycmVudCwgcmVncykpOwotCi0JaWYgKGZsYWdzICZhbXA7IChfVElGX1NZU0NBTExfVFJBQ0UgfCBfVElGX1NJTkdMRVNURVApKQotCQlyZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MpOwotCi0JcnNlcV9zeXNjYWxsKHJlZ3MpOwotfQotCiAvKgogICogU1BTUl9FTHggYml0cyB3aGljaCBhcmUgYWx3YXlzIGFyY2hpdGVjdHVyYWxseSBSRVMwIHBlciBBUk0gRERJIDA0ODdELmEuCiAgKiBXZSBwZXJtaXQgdXNlcnNwYWNlIHRvIHNldCBTU0JTIChBQXJjaDY0IGJpdCAxMiwgQUFyY2gzMiBiaXQgMjMpIHdoaWNoIGlzCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuYyBiL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jCmluZGV4IDM4ZTZmYTIwNGMxN2I1Li4wOTNlZWJiOWQ3NjRhYyAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmMKQEAgLTgsOCAmIzQzOzgsOCBAQAogCiAjaW5jbHVkZSAmbHQ7bGludXgvY2FjaGUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jb21wYXQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZW50cnktY29tbW9uLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJybm8uaCZndDsKLSNpbmNsdWRlICZsdDtsaW51eC9pcnEtZW50cnktY29tbW9uLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2lnbmFsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZnJlZXplci5oJmd0OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jCmluZGV4IDM1OGRkZmJmMTQwMWFjLi4yNTM1Y2FlOTQxM2Q4YSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL3N5c2NhbGwuYwpAQCAtMiw2ICYjNDM7Miw3IEBACiAKICNpbmNsdWRlICZsdDtsaW51eC9jb21waWxlci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2NvbnRleHRfdHJhY2tpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZW50cnktY29tbW9uLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJybm8uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9ub3NwZWMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wdHJhY2UuaCZndDsKQEAgLTU0LDE1ICYjNDM7NTUsMTEgQEAgc3RhdGljIHZvaWQgaW52b2tlX3N5c2NhbGwoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGludCBzY25vLAogCXN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAwLCByZXQpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaGFzX3N5c2NhbGxfd29yayh1bnNpZ25lZCBsb25nIGZsYWdzKQotewotCXJldHVybiB1bmxpa2VseShmbGFncyAmYW1wOyBfVElGX1NZU0NBTExfV09SSyk7Ci19Ci0KLXN0YXRpYyB2b2lkIGVsMF9zdmNfY29tbW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgc2NubywgaW50IHNjX25yLAotCQkJICAgY29uc3Qgc3lzY2FsbF9mbl90IHN5c2NhbGxfdGFibGVbXSkKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsCiYjNDM7CQkJCQkgICBjb25zdCBzeXNjYWxsX2ZuX3Qgc3lzY2FsbF90YWJsZVtdKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSByZWFkX3RocmVhZF9mbGFncygpOwomIzQzOwl1bnNpZ25lZCBsb25nIHdvcms7CiAKIAlyZWdzLSZndDtvcmlnX3gwID0gcmVncy0mZ3Q7cmVnc1swXTsKIAlyZWdzLSZndDtzeXNjYWxsbm8gPSBzY25vOwpAQCAtOTUsNyAmIzQzOzkyLDggQEAgc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsCiAJCXJldHVybjsKIAl9CiAKLQlpZiAoaGFzX3N5c2NhbGxfd29yayhmbGFncykpIHsKJiM0MzsJd29yayA9IFJFQURfT05DRShjdXJyZW50X3RocmVhZF9pbmZvKCktJmd0O3N5c2NhbGxfd29yayk7CiYjNDM7CWlmICh1bmxpa2VseSh3b3JrICZhbXA7IFNZU0NBTExfV09SS19FTlRFUikpIHsKIAkJLyoKIAkJICogVGhlIGRlLWZhY3RvIHN0YW5kYXJkIHdheSB0byBza2lwIGEgc3lzdGVtIGNhbGwgdXNpbmcgcHRyYWNlCiAJCSAqIGlzIHRvIHNldCB0aGUgc3lzdGVtIGNhbGwgdG8gLTEgKE5PX1NZU0NBTEwpIGFuZCBzZXQgeDAgdG8gYQpAQCAtMTEzLDI2ICYjNDM7MTExLDE4IEBAIHN0YXRpYyB2b2lkIGVsMF9zdmNfY29tbW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgc2NubywgaW50IHNjX25yLAogCQkgKi8KIAkJaWYgKHNjbm8gPT0gTk9fU1lTQ0FMTCkKIAkJCXN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAtRU5PU1lTLCAwKTsKLQkJc2NubyA9IHN5c2NhbGxfdHJhY2VfZW50ZXIocmVncyk7CiYjNDM7CQlpZiAoIXN5c2NhbGxfdHJhY2VfZW50ZXIocmVncywgd29yaywgc2NubykpCiYjNDM7CQkJZ290byB0cmFjZV9leGl0OwomIzQzOwomIzQzOwkJLyogUmVyZWFkIHRoZSBzeXNjYWxsIG51bWJlciBhcyBpdCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQgKi8KJiM0MzsJCXNjbm8gPSBzeXNjYWxsX2dldF9ucihjdXJyZW50LCByZWdzKTsKIAkJaWYgKHNjbm8gPT0gTk9fU1lTQ0FMTCkKIAkJCWdvdG8gdHJhY2VfZXhpdDsKIAl9CiAKIAlpbnZva2Vfc3lzY2FsbChyZWdzLCBzY25vLCBzY19uciwgc3lzY2FsbF90YWJsZSk7Ci0KLQkvKgotCSAqIFRoZSB0cmFjaW5nIHN0YXR1cyBtYXkgaGF2ZSBjaGFuZ2VkIHVuZGVyIG91ciBmZWV0LCBzbyB3ZSBoYXZlIHRvCi0JICogY2hlY2sgYWdhaW4uIEhvd2V2ZXIsIGlmIHdlIHdlcmUgdHJhY2luZyBlbnRyeSwgdGhlbiB3ZSBhbHdheXMgdHJhY2UKLQkgKiBleGl0IHJlZ2FyZGxlc3MsIGFzIHRoZSBvbGQgZW50cnkgYXNzZW1ibHkgZGlkLgotCSAqLwotCWlmICghaGFzX3N5c2NhbGxfd29yayhmbGFncykgJmFtcDsmYW1wOyAhSVNfRU5BQkxFRChDT05GSUdfREVCVUdfUlNFUSkpIHsKLQkJZmxhZ3MgPSByZWFkX3RocmVhZF9mbGFncygpOwotCQlpZiAoIWhhc19zeXNjYWxsX3dvcmsoZmxhZ3MpICZhbXA7JmFtcDsgIShmbGFncyAmYW1wOyBfVElGX1NJTkdMRVNURVApKQotCQkJcmV0dXJuOwotCX0KLQogdHJhY2VfZXhpdDoKLQlzeXNjYWxsX3RyYWNlX2V4aXQocmVncyk7CiYjNDM7CXN5c2NhbGxfZXhpdF90b191c2VyX21vZGVfd29yayhyZWdzKTsKIH0KIAogdm9pZCBkb19lbDBfc3ZjKHN0cnVjdCBwdF9yZWdzICpyZWdzKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jIGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jCmluZGV4IDU5MmRkODY2OGRlNDYzLi4zN2NkYzdjNzJlMTVjMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28uYwpAQCAtMzQzLDMgJiM0MzszNDMsMTkgQEAgaW50IGFyY2hfc2V0dXBfYWRkaXRpb25hbF9wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBpbnQgdXNlc19pbnRlcnApCiAKIAlyZXR1cm4gcmV0OwogfQomIzQzOwomIzQzO2Jvb2wgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuKHN0cnVjdCBwdF9yZWdzICpyZWdzKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBsYW5kaW5nX3BhZDsKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHX0NPTVBBVAomIzQzOwlpZiAoaXNfY29tcGF0X3Rhc2soKSkgewomIzQzOwkJdW5zaWduZWQgbG9uZyBzaWdwYWdlID0gKHVuc2lnbmVkIGxvbmcpY3VycmVudC0mZ3Q7bW0tJmd0O2NvbnRleHQuc2lncGFnZTsKJiM0MzsKJiM0MzsJCXJldHVybiByZWdzLSZndDtwYyAmZ3Q7PSBzaWdwYWdlICZhbXA7JmFtcDsgcmVncy0mZ3Q7cGMgJmx0OyAoc2lncGFnZSAmIzQzOyBQQUdFX1NJWkUpOwomIzQzOwl9CiYjNDM7I2VuZGlmCiYjNDM7CWxhbmRpbmdfcGFkID0gKHVuc2lnbmVkIGxvbmcpVkRTT19TWU1CT0woY3VycmVudC0mZ3Q7bW0tJmd0O2NvbnRleHQudmRzbywgc2lncmV0dXJuX2xhbmRpbmdfcGFkKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlZ3MtJmd0O3BjID09IGxhbmRpbmdfcGFkOwomIzQzO30KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlMgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TCmluZGV4IDBlMTg3MjlhYmMzYjc4Li44ZDJkNDEzZmY0NWU4YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby9zaWdyZXR1cm4uUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TCkBAIC03Myw2ICYjNDM7NzMsNyBAQCBTWU1fQ09ERV9TVEFSVChfX2tlcm5lbF9ydF9zaWdyZXR1cm4pCiAJbW92CXg4LCAjX19OUl9ydF9zaWdyZXR1cm4KIC8vCVBMRUFTRSBETyBOT1QgTU9ESUZZCiAJc3ZjCSMwCiYjNDM7CVNZTV9JTk5FUl9MQUJFTChfX3NpZ3JldHVybl9sYW5kaW5nX3BhZCwgU1lNX0xfR0xPQkFMKQogLy8JUExFQVNFIERPIE5PVCBNT0RJRlkKIC8vCS5jZmlfZW5kcHJvYwogU1lNX0NPREVfRU5EKF9fa2VybmVsX3J0X3NpZ3JldHVybikKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuUyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuUwppbmRleCA1MjMxNGJlMjkxOTEyMS4uZGE2MWQ2ZmM2ZmU5ZjMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlMKQEAgLTExMiwzICYjNDM7MTEyLDQgQEAgVkVSU0lPTgogICogTWFrZSB0aGUgc2lncmV0dXJuIGNvZGUgdmlzaWJsZSB0byB0aGUga2VybmVsLgogICovCiBWRFNPX3NpZ3RyYW1wCQk9IF9fa2VybmVsX3J0X3NpZ3JldHVybjsKJiM0MztWRFNPX3NpZ3JldHVybl9sYW5kaW5nX3BhZAk9IF9fc2lncmV0dXJuX2xhbmRpbmdfcGFkOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Nzc1CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNjA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoOiBhcm02NCBTeXNjYWxsIEVudHJ5IENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgYXJtNjQgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgaG93IHN5c3RlbSBjYWxscyBhcmUgaGFuZGxlZC4gVGhlIHBhdGNoIGlzIGVuYWJsaW5nIGBBUkNIX1NVUFBPUlRTX1NZU0NBTExfVVNFUl9ESVNQQVRDSGAgYW5kIGBHRU5FUklDX0VOVFJZYCwgd2hpY2ggaXMgYSBzaWduaWZpY2FudCBzaGlmdCBpbiBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGV5IGFyZSBtb3ZpbmcgYXdheSBmcm9tIHRoZSBtb3JlIHNwZWNpZmljIGBHRU5FUklDX0lSUV9FTlRSWWAgaW4gZmF2b3Igb2YgdGhpcyBgR0VORVJJQ19FTlRSWWAgYXBwcm9hY2guIFRoaXMgcGF0Y2ggdG91Y2hlcyBhIHZhc3QgbnVtYmVyIG9mIGZpbGVzLCBpbmRpY2F0aW5nIGl0cyBicm9hZCBpbXBhY3QuIEkgY2FuIHNlZSBjaGFuZ2VzIGFjcm9zcyBpbmNsdWRlIGZpbGVzLCB0aGUgS2NvbmZpZywgYW5kIHRoZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBjZW50ZXIgYXJvdW5kIGBhcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmNgLCBwYXJ0aWN1bGFybHkgdGhlIGBlbDBfc3ZjX2NvbW1vbmAgZnVuY3Rpb24g4oCTIHRoZSBzeXNjYWxsIGVudHJ5IHBvaW50IOKAkyBhbmQgdGhlIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gIGZ1bmN0aW9uLiBJIHNlZSB0aGV5IGhhdmUgaW1wbGVtZW50ZWQgdGhpcyBuZXcgYGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybmAuIFRoaXMgaGFzIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgYXJjaGl0ZWN0dXJlIGNvZGUgKHN5c2NhbGwgZW50cnkvZXhpdCkuCgpUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBkb2luZyBpcyBmbGFnZ2luZyB0aGlzIGZvciBzZXJpb3VzIGZ1enppbmcuIFRoZSBzeXNjYWxsIGVudHJ5L2V4aXQgcGF0aCBpcyBhIGNyaXRpY2FsIHNlY3VyaXR5LXNlbnNpdGl2ZSBhcmVhLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcm9idXN0LgoKTGV0JiMzOTtzIHNlZS4gVGhpcyBgZWwwX3N2Y19jb21tb25gIGZ1bmN0aW9uLiBJdCYjMzk7cyB0aGUgcHJpbWFyeSBzeXNjYWxsIGVudHJ5IHBvaW50LCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgaG90LXBhdGggZnVuY3Rpb24uIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhcm5zIGFib3V0IGhvdC1wYXRoIGZ1bmN0aW9ucy4gYGVsMF9zdmNfY29tbW9uYCBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgb25lIHRoYXQgd2FzIGNoYW5nZWQuIEhtbSwgcGVyaGFwcyBJIHNob3VsZG4mIzM5O3QgbGlzdCBpdCBkaXJlY3RseSBiZWNhdXNlIGl0JiMzOTtzIHNvIGhvdC4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gZ2V0IGRpc3RyYWN0ZWQgd2l0aCBub2lzZSBpbiB0aGUgY2FsbGdyYXBoLgoKU28sIGxldCYjMzk7cyB6b29tIGluIG9uIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gLiBUaGlzIGxpa2VseSBnZXRzIGNhbGxlZCBkdXJpbmcgc3lzY2FsbCB1c2VyIGRpc3BhdGNoIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyBhIGB2ZHNvYCBzaWdyZXR1cm4uIExldCYjMzk7cyBjaGVjayBgS2NvbmZpZ2AgZm9yIGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIyOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NZU0NBTExfVVNFUl9ESVNQQVRDSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2NhbGwtdXNlci1kaXNwYXRjaC5yc3Q9NTI9Zm9sbG93aW5nIHByY3RsOlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjYWxsLXVzZXItZGlzcGF0Y2gucnN0LTUzLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjYWxsLXVzZXItZGlzcGF0Y2gucnN0OjU0OiAgcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgXHUwMDNjb3BcdTAwM2UsIFx1MDAzY29mZnNldFx1MDAzZSwgXHUwMDNjbGVuZ3RoXHUwMDNlLCBbc2VsZWN0b3JdKVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjYWxsLXVzZXItZGlzcGF0Y2gucnN0LTU1LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY2FsbC11c2VyLWRpc3BhdGNoLnJzdD04MT1BZGRpdGlvbmFsbHksIGEgdGFza3Mgc3lzY2FsbCB1c2VyIGRpc3BhdGNoIGNvbmZpZ3VyYXRpb24gY2FuIGJlIHBlZWtlZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjYWxsLXVzZXItZGlzcGF0Y2gucnN0OjgyOmFuZCBwb2tlZCB2aWEgdGhlIFBUUkFDRV8oR0VUfFNFVClfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRyBwdHJhY2VcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY2FsbC11c2VyLWRpc3BhdGNoLnJzdC04My1yZXF1ZXN0cy4gVGhpcyBpcyB1c2VmdWwgZm9yIGNoZWNrcG9pbnQvcmVzdGFydCBzb2Z0d2FyZS5cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0PTE0MDg9Q29udHJvbHMgd2hldGhlciB1c2Vyc3BhY2UgbWF5IGFybSBTeXNjYWxsIFVzZXIgRGlzcGF0Y2ggdmlhXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0OjE0MDk6YGBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCAuLi4pYGAgb3IgdGhlXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0OjE0MTA6YGBQVFJBQ0VfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9DT05GSUdgYCBwdHJhY2UgcmVxdWVzdDpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL2tlcm5lbC5yc3QtMTQxMS1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0LTE0MTctXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0OjE0MTg6T25seSBwcmVzZW50IHdoZW4gdGhlIGtlcm5lbCBpcyBidWlsdCB3aXRoIGBgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSGBgXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0LTE0MTktYW5kIGBgQ09ORklHX1BST0NfU1lTQ1RMYGAuXG4tLVxuYXJjaC9LY29uZmlnPTExMj1jb25maWcgR0VORVJJQ19FTlRSWVxuLS1cbmFyY2gvS2NvbmZpZy0xMTYtXG5hcmNoL0tjb25maWc6MTE3OmNvbmZpZyBBUkNIX1NVUFBPUlRTX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxuYXJjaC9LY29uZmlnLTExOC1cdGJvb2xcbmFyY2gvS2NvbmZpZy0xMTktXG5hcmNoL0tjb25maWc6MTIwOmNvbmZpZyBTWVNDQUxMX1VTRVJfRElTUEFUQ0hcbmFyY2gvS2NvbmZpZy0xMjEtXHRib29sIFwmIzM0O1N5c2NhbGwgVXNlciBEaXNwYXRjaFwmIzM0O1xuYXJjaC9LY29uZmlnOjEyMjpcdGRlcGVuZHMgb24gQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcbmFyY2gvS2NvbmZpZy0xMjMtXHRkZXBlbmRzIG9uIEdFTkVSSUNfRU5UUllcbi0tXG5hcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcbi0tXG5hcmNoL2FybTY0L0tjb25maWctODktXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9NQ1xuYXJjaC9hcm02NC9LY29uZmlnOjkwOlx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXG5hcmNoL2FybTY0L0tjb25maWctOTEtXHRzZWxlY3QgQVJDSF9XQU5UX0JBVENIRURfVU5NQVBfVExCX0ZMVVNIXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01OD1jb25maWcgWDg2XG4tLVxuYXJjaC94ODYvS2NvbmZpZy0zMzgtXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9NQ1x0XHRpZiBTTVBcbmFyY2gveDg2L0tjb25maWc6MzM5Olx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXG5hcmNoL3g4Ni9LY29uZmlnLTM0MC1cdHNlbGVjdCBIQVZFX1NJTkdMRV9GVFJBQ0VfRElSRUNUX09QU1x0aWYgWDg2XzY0IFx1MDAyNlx1MDAyNiBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuLS1cbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtMjktXHRcdFx0XHQgU1lTQ0FMTF9XT1JLX1NZU0NBTExfQVVESVQgfFx0XHRcXFxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaDozMDpcdFx0XHRcdCBTWVNDQUxMX1dPUktfU1lTQ0FMTF9VU0VSX0RJU1BBVENIIHxcdFxcXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTMxLVx0XHRcdFx0IFNZU0NBTExfV09SS19TWVNDQUxMX1JTRVFfU0xJQ0UpXG4tLVxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaC0zNy1cdFx0XHRcdCBTWVNDQUxMX1dPUktfU1lTQ0FMTF9BVURJVCB8XHRcdFxcXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oOjM4Olx0XHRcdFx0IFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0ggfFx0XFxcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtMzktXHRcdFx0XHQgU1lTQ0FMTF9XT1JLX1NZU0NBTExfRVhJVF9UUkFQKVxuLS1cbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmg9NjU9c3RhdGljIF9fYWx3YXlzX2lubGluZSBsb25nIHN5c2NhbGxfdHJhY2VfZW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgd29yayxcbi0tXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTcyLVx0ICovXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oOjczOlx0aWYgKHdvcmsgXHUwMDI2IFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0gpIHtcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtNzQtXHRcdGlmIChzeXNjYWxsX3VzZXJfZGlzcGF0Y2gocmVncykpXG4tLVxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaD0yNDQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHN5c2NhbGxfZXhpdF93b3JrKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHdvcmspXG4tLVxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaC0yNTMtXHQgKi9cbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmg6MjU0Olx0aWYgKHdvcmsgXHUwMDI2IFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0gpIHtcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtMjU1LVx0XHRpZiAoc3lzY2FsbF91c2VyX2Rpc3BhdGNoX2NsZWFyX29uX2Rpc3BhdGNoKCkpXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaC00LSAqL1xuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaDo1OiNpZm5kZWYgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9IXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oOjY6I2RlZmluZSBfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0hcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmgtNy1cbi0tXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oPTEyPXN0cnVjdCBwdF9yZWdzO1xuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaC0xMy1cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6MTQ6I2lmZGVmIENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmgtMTUtXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaD0yNz1pbnQgc2V0X3N5c2NhbGxfdXNlcl9kaXNwYXRjaCh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LFxuLS1cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmgtMzAtI2RlZmluZSBjbGVhcl9zeXNjYWxsX3dvcmtfc3lzY2FsbF91c2VyX2Rpc3BhdGNoKHRzaykgXFxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6MzE6XHRjbGVhcl90YXNrX3N5c2NhbGxfd29yayh0c2ssIFNZU0NBTExfVVNFUl9ESVNQQVRDSClcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmgtMzItXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaD02Nz1zdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX3VzZXJfZGlzcGF0Y2hfc2V0X2NvbmZpZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaC03Mi1cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6NzM6I2VuZGlmIC8qIENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0ggKi9cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmgtNzQtXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oOjc1OiNlbmRpZiAvKiBfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0ggKi9cbi0tXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaF90eXBlcy5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmg6MjojaWZuZGVmIF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfVFlQRVNfSFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaDozOiNkZWZpbmUgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9UWVBFU19IXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaF90eXBlcy5oLTQtXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaC02LVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaDo3OiNpZmRlZiBDT05GSUdfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaF90eXBlcy5oLTgtXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaD0xOD1zdHJ1Y3Qgc3lzY2FsbF91c2VyX2Rpc3BhdGNoIHt9O1xuLS1cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmgtMjEtXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaF90eXBlcy5oOjIyOiNlbmRpZiAvKiBfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX1RZUEVTX0ggKi9cbi0tXG5pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmg9NDE9ZW51bSBzeXNjYWxsX3dvcmtfYml0IHtcbi0tXG5pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmgtNDYtXHRTWVNDQUxMX1dPUktfQklUX1NZU0NBTExfQVVESVQsXG5pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmg6NDc6XHRTWVNDQUxMX1dPUktfQklUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCxcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaC00OC1cdFNZU0NBTExfV09SS19CSVRfU1lTQ0FMTF9FWElUX1RSQVAsXG4tLVxuaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oLTU2LSNkZWZpbmUgU1lTQ0FMTF9XT1JLX1NZU0NBTExfQVVESVRcdFx0QklUKFNZU0NBTExfV09SS19CSVRfU1lTQ0FMTF9BVURJVClcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaDo1NzojZGVmaW5lIFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcdEJJVChTWVNDQUxMX1dPUktfQklUX1NZU0NBTExfVVNFUl9ESVNQQVRDSClcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaC01OC0jZGVmaW5lIFNZU0NBTExfV09SS19TWVNDQUxMX0VYSVRfVFJBUFx0XHRCSVQoU1lTQ0FMTF9XT1JLX0JJVF9TWVNDQUxMX0VYSVRfVFJBUClcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaD0xMzQ9c3RydWN0IHByY3RsX21tX21hcCB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmgtMjY3LS8qIERpc3BhdGNoIHN5c2NhbGxzIHRvIGEgdXNlcnNwYWNlIGhhbmRsZXIgKi9cbmluY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oOjI2ODojZGVmaW5lIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hcdDU5XG5pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaC0yNjktIyBkZWZpbmUgUFJfU1lTX0RJU1BBVENIX09GRlx0XHQwXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cmFjZS5oPTExMD1zdHJ1Y3QgcHRyYWNlX3JzZXFfY29uZmlndXJhdGlvbiB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cmFjZS5oLTExNy1cbmluY2x1ZGUvdWFwaS9saW51eC9wdHJhY2UuaDoxMTg6I2RlZmluZSBQVFJBQ0VfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9DT05GSUcgMHg0MjEwXG5pbmNsdWRlL3VhcGkvbGludXgvcHRyYWNlLmg6MTE5OiNkZWZpbmUgUFRSQUNFX0dFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHIDB4NDIxMVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cmFjZS5oLTEyMC1cbi0tXG5rZXJuZWwvZW50cnkvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0dFTkVSSUNfU1lTQ0FMTCkgXHRcdCYjNDM7PSBzeXNjYWxsLWNvbW1vbi5vXG5rZXJuZWwvZW50cnkvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSClcdCYjNDM7PSBzeXNjYWxsX3VzZXJfZGlzcGF0Y2gub1xua2VybmVsL2VudHJ5L01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19WSVJUX1hGRVJfVE9fR1VFU1RfV09SSylcdCYjNDM7PSB2aXJ0Lm9cbi0tXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM9NzM9c3RhdGljIGludCB0YXNrX3NldF9zeXNjYWxsX3VzZXJfZGlzcGF0Y2goc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCB1bnNpZ25lZCBsb25nIG1vZGUsXG4tLVxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jLTEyOC1cdGlmIChtb2RlICE9IFBSX1NZU19ESVNQQVRDSF9PRkYpXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM6MTI5Olx0XHRzZXRfdGFza19zeXNjYWxsX3dvcmsodGFzaywgU1lTQ0FMTF9VU0VSX0RJU1BBVENIKTtcbmtlcm5lbC9lbnRyeS9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guYy0xMzAtXHRlbHNlXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM6MTMxOlx0XHRjbGVhcl90YXNrX3N5c2NhbGxfd29yayh0YXNrLCBTWVNDQUxMX1VTRVJfRElTUEFUQ0gpO1xua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jLTEzMi1cbi0tXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM9MTQyPWludCBzeXNjYWxsX3VzZXJfZGlzcGF0Y2hfZ2V0X2NvbmZpZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGxvbmcgc2l6ZSxcbi0tXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmMtMTUwLVxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jOjE1MTpcdGlmICh0ZXN0X3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfVVNFUl9ESVNQQVRDSCkpXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmMtMTUyLVx0XHRjZmcubW9kZSA9IFBSX1NZU19ESVNQQVRDSF9PTjtcbi0tXG5rZXJuZWwvcHRyYWNlLmM9MTE2Mj1pbnQgcHRyYWNlX3JlcXVlc3Qoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwgbG9uZyByZXF1ZXN0LFxuLS1cbmtlcm5lbC9wdHJhY2UuYy0xMzk3LVxua2VybmVsL3B0cmFjZS5jOjEzOTg6XHRjYXNlIFBUUkFDRV9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRzpcbmtlcm5lbC9wdHJhY2UuYy0xMzk5LVx0XHRyZXQgPSBzeXNjYWxsX3VzZXJfZGlzcGF0Y2hfc2V0X2NvbmZpZyhjaGlsZCwgYWRkciwgZGF0YXZwKTtcbi0tXG5rZXJuZWwvcHRyYWNlLmMtMTQwMS1cbmtlcm5lbC9wdHJhY2UuYzoxNDAyOlx0Y2FzZSBQVFJBQ0VfR0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9DT05GSUc6XG5rZXJuZWwvcHRyYWNlLmMtMTQwMy1cdFx0cmV0ID0gc3lzY2FsbF91c2VyX2Rpc3BhdGNoX2dldF9jb25maWcoY2hpbGQsIGFkZHIsIGRhdGF2cCk7XG4tLVxua2VybmVsL3N5cy5jPTI1MzQ9U1lTQ0FMTF9ERUZJTkU1KHByY3RsLCBpbnQsIG9wdGlvbiwgdW5zaWduZWQgbG9uZywgYXJnMiwgdW5zaWduZWQgbG9uZywgYXJnMyxcbi0tXG5rZXJuZWwvc3lzLmMtMjgwMS1cdFx0YnJlYWs7XG5rZXJuZWwvc3lzLmM6MjgwMjpcdGNhc2UgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSDpcbmtlcm5lbC9zeXMuYy0yODAzLVx0XHRlcnJvciA9IHNldF9zeXNjYWxsX3VzZXJfZGlzcGF0Y2goYXJnMiwgYXJnMywgYXJnNCxcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaD0xMzQ9c3RydWN0IHByY3RsX21tX21hcCB7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmgtMjU1LS8qIERpc3BhdGNoIHN5c2NhbGxzIHRvIGEgdXNlcnNwYWNlIGhhbmRsZXIgKi9cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oOjI1NjojZGVmaW5lIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hcdDU5XG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaC0yNTctIyBkZWZpbmUgUFJfU1lTX0RJU1BBVENIX09GRlx0XHQwXG4tLVxudG9vbHMvcGVyZi90cmFjZS9iZWF1dHkvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmg9MTM0PXN0cnVjdCBwcmN0bF9tbV9tYXAge1xuLS1cbnRvb2xzL3BlcmYvdHJhY2UvYmVhdXR5L2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oLTI2Ny0vKiBEaXNwYXRjaCBzeXNjYWxscyB0byBhIHVzZXJzcGFjZSBoYW5kbGVyICovXG50b29scy9wZXJmL3RyYWNlL2JlYXV0eS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaDoyNjg6I2RlZmluZSBQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXHQ1OVxudG9vbHMvcGVyZi90cmFjZS9iZWF1dHkvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmgtMjY5LSMgZGVmaW5lIFBSX1NZU19ESVNQQVRDSF9PRkZcdFx0MFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jPTE4PVRFU1QoZ2V0X3NldF9zdWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmMtMzktXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYzo0MDpcdHJldCA9IHN5c19wdHJhY2UoUFRSQUNFX0dFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHLCBjaGlsZCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jLTQxLVx0XHRcdCAodm9pZCAqKXNpemVvZihjb25maWcpLCBcdTAwMjZjb25maWcpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jLTUzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmM6NTQ6XHRyZXQgPSBzeXNfcHRyYWNlKFBUUkFDRV9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRywgY2hpbGQsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYy01NS1cdFx0XHQgKHZvaWQgKilzaXplb2YoY29uZmlnKSwgXHUwMDI2Y29uZmlnKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYy01OS1cdG1lbXNldChcdTAwMjZjb25maWcsIDEsIHNpemVvZihjb25maWcpKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jOjYwOlx0cmV0ID0gc3lzX3B0cmFjZShQVFJBQ0VfR0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9DT05GSUcsIGNoaWxkLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmMtNjEtXHRcdFx0ICh2b2lkICopc2l6ZW9mKGNvbmZpZyksIFx1MDAyNmNvbmZpZyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL2NvbmZpZzoxOkNPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0g9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmMtMjAtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX2JlbmNobWFyay5jOjIxOiNpZm5kZWYgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYzoyMjojIGRlZmluZSBQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXHQ1OVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYy0yMy0jIGRlZmluZSBQUl9TWVNfRElTUEFUQ0hfT0ZGXHQwXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYz0xMzY9aW50IG1haW4odm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX2JlbmNobWFyay5jLTE2Mi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmM6MTYzOlx0aWYgKHByY3RsKFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0gsIFBSX1NZU19ESVNQQVRDSF9PTixcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmMtMTY0LVx0XHQgIHN5c2NhbGxfZGlzcGF0Y2hlcl9zdGFydCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0xOC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjE5OiNpZm5kZWYgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MjA6IyBkZWZpbmUgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFx0NTlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTIxLSMgZGVmaW5lIFBSX1NZU19ESVNQQVRDSF9PRkZcdDBcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy00NS0gKlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6NDY6ICogLSBkaXNwYXRjaF90cmlnZ2VyX3NpZ3N5czogVmVyaWZ5IGlmIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0ggaXNcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTQ3LSAqICAgYWJsZSB0byB0cmlnZ2VyIFNJR1NZUyBvbiBhIHN5c2NhbGwuXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9NjU9VEVTVF9TSUdOQUwoZGlzcGF0Y2hfdHJpZ2dlcl9zaWdzeXMsIFNJR1NZUylcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy03My1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjc0Olx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX0VYQ0xVU0lWRV9PTiwgMCwgMCwgXHUwMDI2c2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTc1LVx0QVNTRVJUX0VRKDAsIHJldCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6NzY6XHRcdFRIX0xPRyhcJiMzNDtLZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBDT05GSUdfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTc3LVx0fVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jPTg4PXN0YXRpYyB2b2lkIHByY3RsX3ZhbGlkKHN0cnVjdCBfX3Rlc3RfbWV0YWRhdGEgKl9tZXRhZGF0YSxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy05MS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzo5MjpcdEVYUEVDVF9FUSgwLCBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBvcCwgb2ZmLCBzaXplLCBzZWwpKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTkzLX1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYz05NT1zdGF0aWMgdm9pZCBwcmN0bF9pbnZhbGlkKHN0cnVjdCBfX3Rlc3RfbWV0YWRhdGEgKl9tZXRhZGF0YSxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy05OC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzo5OTpcdEVYUEVDVF9FUSgtMSwgcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgb3AsIG9mZiwgc2l6ZSwgc2VsKSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0xMDAtXHRFWFBFQ1RfRVEoZXJyLCBlcnJubyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MjEwPVRFU1QoZGlzcGF0Y2hfYW5kX3JldHVybilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yMjMtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzoyMjQ6XHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfRVhDTFVTSVZFX09OLCAwLCAwLCBcdTAwMjZnbG9iX3NlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yMjUtXHRBU1NFUlRfRVEoMCwgcmV0KSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzoyMjY6XHRcdFRIX0xPRyhcJiMzNDtLZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBDT05GSUdfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTIyNy1cdH1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYz0yNTU9VEVTVF9TSUdOQUwoYmFkX3NlbGVjdG9yLCBTSUdTWVMpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMjc5LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MjgwOlx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX0VYQ0xVU0lWRV9PTiwgMCwgMCwgXHUwMDI2Z2xvYl9zZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMjgxLVx0QVNTRVJUX0VRKDAsIHJldCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MjgyOlx0XHRUSF9MT0coXCYjMzQ7S2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yODMtXHR9XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9Mjk4PVRFU1QoZGlzYWJsZV9kaXNwYXRjaClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMDMtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzozMDQ6XHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfRVhDTFVTSVZFX09OLCAwLCAwLCBcdTAwMjZzZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzA1LVx0QVNTRVJUX0VRKDAsIHJldCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MzA2Olx0XHRUSF9MT0coXCYjMzQ7S2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMDctXHR9XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzExLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MzEyOlx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX09GRiwgMCwgMCwgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMTMtXHRFWFBFQ1RfRVEoMCwgcmV0KSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MzI2PVRFU1QoZGlyZWN0X2Rpc3BhdGNoX3JhbmdlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTMzNS1cdCAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MzM2Olx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX0VYQ0xVU0lWRV9PTiwgMCwgLTFMLCBcdTAwMjZzZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzM3LVx0QVNTRVJUX0VRKDAsIHJldCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MzM4Olx0XHRUSF9MT0coXCYjMzQ7S2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMzktXHR9XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MzQ5PXN0YXRpYyB2b2lkIHRlc3RfcmFuZ2Uoc3RydWN0IF9fdGVzdF9tZXRhZGF0YSAqX21ldGFkYXRhLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTM1NC1cdFNZU0NBTExfRElTUEFUQ0hfT0ZGKGdsb2Jfc2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjM1NTpcdEVYUEVDVF9FUSgwLCBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBvcCwgb2ZmLCBzaXplLCBcdTAwMjZnbG9iX3NlbCkpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzU2LVx0U1lTQ0FMTF9ESVNQQVRDSF9PTihnbG9iX3NlbCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMjI6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwMDQKCQkJCQkJCW91dHB1dDogMTI2CgkJCQkJCQl0aG91Z2h0czogMjM5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU3lzY2FsbCBVc2VyIERpc3BhdGNoIFBhdGNoIGZvciBhcm02NCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBlbmFibGluZyBgU1lTQ0FMTF9VU0VSX0RJU1BBVENIYCBvbiBhcm02NC4gIFRoZSBtYWluIGRlcGVuZGVuY3kgaXMgdGhhdCBgQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hgIGlzIGVuYWJsZWQsIHdoaWNoIHRoaXMgcGF0Y2ggZG9lcy4gIENydWNpYWxseSwgaXQgYWxzbyBlbmFibGVzIGBHRU5FUklDX0VOVFJZYCB3aGljaCBpcyBlc3NlbnRpYWwgZm9yIHRoaXMgZmVhdHVyZS4gIEJlY2F1c2Ugb2YgdGhpcywgd2UgKm11c3QqIGVuc3VyZSB0aGF0IGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgIGlzIGV4cGxpY2l0bHkgZW5hYmxlZC4gIEFsc28sIHNpbmNlIGFybTY0IGlzIG5vdyB1c2luZyBgR0VORVJJQ19FTlRSWWAgdGhlIGNvbmZpZyBpcyBubyBsb25nZXIgbmVlZGVkLgoKTG9va2luZyBhdCB0aGUgY29kZSBjaGFuZ2VzLCB0aGUgaGVhcnQgb2YgdGhlIHN5c2NhbGwgZW50cnkgaXMgYGVsMF9zdmNfY29tbW9uYCwgYnV0IHRoYXQmIzM5O3MgYSAqaG90IHBhdGgqLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBub3QgdXNlZnVsIHRvIGRpcmVjdGx5IGZ1enouICBUaGUgcGF0Y2ggcmVwbGFjZXMgdHJhY2luZyB3aXRoIGBzeXNjYWxsX3RyYWNlX2VudGVyYCBhbmQgYHN5c2NhbGxfZXhpdF90b191c2VyX21vZGVfd29ya2AsIGFuZCB0aGUgcHRyYWNlIGxvZ2ljIGhhcyBjaGFuZ2VkIHRvIHJlcG9ydCBzeXNjYWxsIGVudHJ5IGFuZCBleGl0LgoKVGhlIGtleSBuZXcgZnVuY3Rpb24gaXMgYGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybmAgaW4gYGFyY2gvYXJtNjQva2VybmVsL3Zkc28uY2AuIFRoaXMgaXMgZXNzZW50aWFsIGJlY2F1c2UgaXQgY2hlY2tzIGlmIGEgc3lzY2FsbCBpcyBhIGBzaWdyZXR1cm5gLCB3aGljaCBpcyBoYW5kbGVkIGRpZmZlcmVudGx5IHVuZGVyIHN5c2NhbGwgdXNlciBkaXNwYXRjaC4gVGhpcyBmdW5jdGlvbiBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCkZ1cnRoZXJtb3JlLCBjaGFuZ2VzIHdlcmUgbWFkZSB0byBgdXNlcl9lbmFibGVfc2luZ2xlX3N0ZXBgIGFuZCBgdXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwYCBpbiBgYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuY2AuICBUaGVzZSBhcmVuJiMzOTt0IGhvdC1wYXRoIGZ1bmN0aW9ucywgYnV0IHRoZXkmIzM5O3JlIHN0aWxsIHJlbGV2YW50IHRvIHB0cmFjZSBhbmQgc2luZ2xlLXN0ZXBwaW5nLCBzbyB0aGV5IHNob3VsZCBiZSB0YXJnZXRlZCB0b28uCgpOb3csIGNvbmNlcm5pbmcgY29uZmlndXJhdGlvbnMsIGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgIGlzIGVzc2VudGlhbC4gV2Ugc2hvdWxkIGFsc28gaW5jbHVkZSBgQ09NUEFUYCBiZWNhdXNlIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gIHVzZXMgaXQuCgpTbywgaW4gY29uY2x1c2lvbiwgdGhlIGltcG9ydGFudCB0aGluZ3MgdG8gbG9vayBhdCBmb3IgZnV6emluZyBhcmU6CgoqICAgKipgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuYCoqOiAgVGhpcyBpcyB0aGUgc2luZ2xlIG1vc3QgaW1wb3J0YW50IGZ1bmN0aW9uIGFkZGVkIGFuZCBjZW50cmFsIHRvIGNvcnJlY3QgZnVuY3Rpb25hbGl0eS4KKiAgICoqYHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwYCoqOiAgUmVsZXZhbnQgdG8gcHRyYWNlIGFuZCBzaW5nbGUtc3RlcHBpbmcgaW50ZXJhY3Rpb24uCiogICAqKmB1c2VyX2Rpc2FibGVfc2luZ2xlX3N0ZXBgKio6ICBQYXJ0IG9mIHNpbmdsZSBzdGVwcGluZyBsb2dpYy4KCkFsc28gdGhlIGZvbGxvd2luZyBjb25maWdzIHNob3VsZCBiZSBleHBsaWNpdGx5IGVuYWJsZWQ6CgoqICAgKipgU1lTQ0FMTF9VU0VSX0RJU1BBVENIYCoqOiBSZXF1aXJlZCBmb3IgdGhpcyBwYXRjaCYjMzk7cyBjb3JlIGZ1bmN0aW9uYWxpdHkuCiogICAqKmBDT01QQVRgKio6IHRvIHRlc3QgdGhlIGNvbXBhdCBwYXRoIGluIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTWVNDQUxMX1VTRVJfRElTUEFUQ0gmIzM0OywKICAgICYjMzQ7Q09NUEFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuJiMzNDssCiAgICAmIzM0O3VzZXJfZW5hYmxlX3NpbmdsZV9zdGVwJiMzNDssCiAgICAmIzM0O3VzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb252ZXJ0cyBhcm02NCB0byB1c2UgdGhlIGdlbmVyaWMgZW50cnkgaW5mcmFzdHJ1Y3R1cmUgYW5kIGFkZHMgc3VwcG9ydCBmb3IgU3lzY2FsbCBVc2VyIERpc3BhdGNoLiBUaGlzIGludm9sdmVzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBzeXNjYWxsIGVudHJ5L2V4aXQgcGF0aHMsIHB0cmFjZSBzaW5nbGUtc3RlcHBpbmcsIGFuZCBWRFNPIHNpZ3JldHVybiBkZXRlY3Rpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NZU0NBTExfVVNFUl9ESVNQQVRDSCYjMzQ7LAogICAgJiMzNDtDT01QQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm4mIzM0OywKICAgICYjMzQ7dXNlcl9lbmFibGVfc2luZ2xlX3N0ZXAmIzM0OywKICAgICYjMzQ7dXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnZlcnRzIGFybTY0IHRvIHVzZSB0aGUgZ2VuZXJpYyBlbnRyeSBpbmZyYXN0cnVjdHVyZSBhbmQgYWRkcyBzdXBwb3J0IGZvciBTeXNjYWxsIFVzZXIgRGlzcGF0Y2guIFRoaXMgaW52b2x2ZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHN5c2NhbGwgZW50cnkvZXhpdCBwYXRocywgcHRyYWNlIHNpbmdsZS1zdGVwcGluZywgYW5kIFZEU08gc2lncmV0dXJuIGRldGVjdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIyOjEwOjM3LjY0ODcwNTk1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNDk0Mzg0MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNZU0NBTExfVVNFUl9ESVNQQVRDSFwiLFxuICAgIFwiQ09NUEFUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuXCIsXG4gICAgXCJ1c2VyX2VuYWJsZV9zaW5nbGVfc3RlcFwiLFxuICAgIFwidXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29udmVydHMgYXJtNjQgdG8gdXNlIHRoZSBnZW5lcmljIGVudHJ5IGluZnJhc3RydWN0dXJlIGFuZCBhZGRzIHN1cHBvcnQgZm9yIFN5c2NhbGwgVXNlciBEaXNwYXRjaC4gVGhpcyBpbnZvbHZlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgc3lzY2FsbCBlbnRyeS9leGl0IHBhdGhzLCBwdHJhY2Ugc2luZ2xlLXN0ZXBwaW5nLCBhbmQgVkRTTyBzaWdyZXR1cm4gZGV0ZWN0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMjoxMDozNy42NDg3MTE1MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTYzMzgyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYzY2YwNGIxY2RlOTBkOTIwNGM2OTdjNTYyNTI0MTg3YTM5YzJkZjFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMjI6MTA6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9LY29uZmlnIGIvYXJjaC9hcm02NC9LY29uZmlnXFxuaW5kZXggZmIxNTAzN2I1ZTNjN2UuLmVmZWYwNzg1N2QzODg0IDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQvS2NvbmZpZ1xcbisrKyBiL2FyY2gvYXJtNjQvS2NvbmZpZ1xcbkBAIC04Nyw2ICs4Nyw3IEBAIGNvbmZpZyBBUk02NFxcbiBcXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9TTVRcXG4gXFx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU0NIRURfQ0xVU1RFUlxcbiBcXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9NQ1xcbitcXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG4gXFx0c2VsZWN0IEFSQ0hfV0FOVF9CQVRDSEVEX1VOTUFQX1RMQl9GTFVTSFxcbiBcXHRzZWxlY3QgQVJDSF9XQU5UX0NPTVBBVF9JUENfUEFSU0VfVkVSU0lPTiBpZiBDT01QQVRcXG4gXFx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVRcXG5AQCAtMTI5LDkgKzEzMCw5IEBAIGNvbmZpZyBBUk02NFxcbiBcXHRzZWxlY3QgR0VORVJJQ19DUFVfREVWSUNFU1xcbiBcXHRzZWxlY3QgR0VORVJJQ19DUFVfVlVMTkVSQUJJTElUSUVTXFxuIFxcdHNlbGVjdCBHRU5FUklDX0VBUkxZX0lPUkVNQVBcXG4rXFx0c2VsZWN0IEdFTkVSSUNfRU5UUllcXG4gXFx0c2VsZWN0IEdFTkVSSUNfSURMRV9QT0xMX1NFVFVQXFxuIFxcdHNlbGVjdCBHRU5FUklDX0lPUkVNQVBcXG4tXFx0c2VsZWN0IEdFTkVSSUNfSVJRX0VOVFJZXFxuIFxcdHNlbGVjdCBHRU5FUklDX0lSUV9JUElcXG4gXFx0c2VsZWN0IEdFTkVSSUNfSVJRX0tFWEVDX0NMRUFSX1ZNX0ZPUldBUkRcXG4gXFx0c2VsZWN0IEdFTkVSSUNfSVJRX1BST0JFXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oXFxuaW5kZXggZDI3NzlkNjA0YzdiZTIuLmE4YjIzMmM1YzZkOWY4IDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oXFxuQEAgLTI5Myw2ICsyOTMsNyBAQCBzdGF0aWMgaW5saW5lIGludCBhcmNoX2NoZWNrX2VsZih2b2lkICplaGRyLCBib29sIGhhc19pbnRlcnAsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitleHRlcm4gYm9vbCBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm4oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbiAjZW5kaWYgLyogIV9fQVNTRU1CTEVSX18gKi9cXG4gXFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxcbmluZGV4IGNhYjhjZDc4ZjY5Mzg1Li4yYjA1M2FjYmUxMGZlYSAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oXFxuKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxcbkBAIC0zLDE0ICszLDIxIEBAXFxuICNpZm5kZWYgX0FTTV9BUk02NF9FTlRSWV9DT01NT05fSFxcbiAjZGVmaW5lIF9BU01fQVJNNjRfRU5UUllfQ09NTU9OX0hcXG4gXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHJhY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RocmVhZF9pbmZvLmhcXHUwMDNlXFxuIFxcbisjaW5jbHVkZSBcXHUwMDNjYXNtL2NvbXBhdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9kYWlmZmxhZ3MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9mcHNpbWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9tdGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9zdGFja3RyYWNlLmhcXHUwMDNlXFxuIFxcbitlbnVtIHB0cmFjZV9zeXNjYWxsX2RpciB7XFxuK1xcdFBUUkFDRV9TWVNDQUxMX0VOVEVSID0gMCxcXG4rXFx0UFRSQUNFX1NZU0NBTExfRVhJVCxcXG4rfTtcXG4rXFxuICNkZWZpbmUgQVJDSF9FWElUX1RPX1VTRVJfTU9ERV9XT1JLIChfVElGX01URV9BU1lOQ19GQVVMVCB8IF9USUZfRk9SRUlHTl9GUFNUQVRFKVxcbiBcXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGFyY2hfZXhpdF90b191c2VyX21vZGVfd29yayhzdHJ1Y3QgcHRfcmVncyAqcmVncyxcXG5AQCAtNTQsNCArNjEsNzQgQEAgc3RhdGljIGlubGluZSBib29sIGFyY2hfaXJxZW50cnlfZXhpdF9uZWVkX3Jlc2NoZWQodm9pZClcXG4gXFxuICNkZWZpbmUgYXJjaF9pcnFlbnRyeV9leGl0X25lZWRfcmVzY2hlZCBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkXFxuIFxcbitzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcgcHRyYWNlX3NhdmVfcmVnKHN0cnVjdCBwdF9yZWdzICpyZWdzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIGRpcixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBpbnQgKnJlZ25vKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnO1xcbitcXG4rXFx0LypcXG4rXFx0ICogV2UgaGF2ZSBzb21lIEFCSSB3ZWlyZG5lc3MgaGVyZSBpbiB0aGUgd2F5IHRoYXQgd2UgaGFuZGxlIHN5c2NhbGxcXG4rXFx0ICogZXhpdCBzdG9wcyBiZWNhdXNlIHdlIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoZSBzdG9wIGhhcyBiZWVuXFxuK1xcdCAqIHNpZ25hbGxlZCBmcm9tIHN5c2NhbGwgZW50cnkgb3Igc3lzY2FsbCBleGl0IGJ5IGNsb2JiZXJpbmcgYSBnZW5lcmFsXFxuK1xcdCAqIHB1cnBvc2UgcmVnaXN0ZXIgKGlwL3IxMiBmb3IgQUFyY2gzMiwgeDcgZm9yIEFBcmNoNjQpIGluIHRoZSB0cmFjZWVcXG4rXFx0ICogYW5kIHJlc3RvcmluZyBpdHMgb2xkIHZhbHVlIGFmdGVyIHRoZSBzdG9wLiBUaGlzIG1lYW5zIHRoYXQ6XFxuK1xcdCAqXFxuK1xcdCAqIC0gQW55IHdyaXRlcyBieSB0aGUgdHJhY2VyIHRvIHRoaXMgcmVnaXN0ZXIgZHVyaW5nIHRoZSBzdG9wIGFyZVxcbitcXHQgKiAgIGlnbm9yZWQvZGlzY2FyZGVkLlxcbitcXHQgKlxcbitcXHQgKiAtIFRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIHJlZ2lzdGVyIGlzIG5vdCBhdmFpbGFibGUgZHVyaW5nIHRoZSBzdG9wLFxcbitcXHQgKiAgIHNvIHRoZSB0cmFjZXIgY2Fubm90IHNhdmUgaXQgYW5kIHJlc3RvcmUgaXQgbGF0ZXIuXFxuK1xcdCAqXFxuK1xcdCAqIC0gU3lzY2FsbCBzdG9wcyBiZWhhdmUgZGlmZmVyZW50bHkgdG8gc2VjY29tcCBhbmQgcHNldWRvLXN0ZXAgdHJhcHNcXG4rXFx0ICogICAodGhlIGxhdHRlciBkbyBub3Qgbm9iYmxlIGFueSByZWdpc3RlcnMpLlxcbitcXHQgKi9cXG4rXFx0KnJlZ25vID0gKGlzX2NvbXBhdF90YXNrKCkgPyAxMiA6IDcpO1xcbitcXHRzYXZlZF9yZWcgPSByZWdzLVxcdTAwM2VyZWdzWypyZWdub107XFxuK1xcdHJlZ3MtXFx1MDAzZXJlZ3NbKnJlZ25vXSA9IGRpcjtcXG4rXFxuK1xcdHJldHVybiBzYXZlZF9yZWc7XFxuK31cXG4rXFxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XFxuK1xcdGJvb2wgcGVybWl0O1xcbitcXHRpbnQgcmVnbm87XFxuK1xcbitcXHRzYXZlZF9yZWcgPSBwdHJhY2Vfc2F2ZV9yZWcocmVncywgUFRSQUNFX1NZU0NBTExfRU5URVIsIFxcdTAwMjZyZWdubyk7XFxuK1xcdHBlcm1pdCA9IHB0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkocmVncyk7XFxuK1xcdGlmICghcGVybWl0KVxcbitcXHRcXHRmb3JnZXRfc3lzY2FsbChyZWdzKTtcXG4rXFx0cmVncy1cXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XFxuK1xcbitcXHRyZXR1cm4gcGVybWl0O1xcbit9XFxuK1xcbisjZGVmaW5lIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeSBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnlcXG4rXFxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgaW50IHN0ZXApXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XFxuK1xcdGludCByZWdubztcXG4rXFxuK1xcdHNhdmVkX3JlZyA9IHB0cmFjZV9zYXZlX3JlZyhyZWdzLCBQVFJBQ0VfU1lTQ0FMTF9FWElULCBcXHUwMDI2cmVnbm8pO1xcbitcXHRpZiAoIXN0ZXApIHtcXG4rXFx0XFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMCk7XFxuK1xcdFxcdHJlZ3MtXFx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRyZWdzLVxcdTAwM2VyZWdzW3JlZ25vXSA9IHNhdmVkX3JlZztcXG4rXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIFNpZ25hbCBhIHBzZXVkby1zdGVwIGV4Y2VwdGlvbiBzaW5jZSB3ZSBhcmUgc3RlcHBpbmcgYnV0XFxuK1xcdFxcdCAqIHRyYWNlciBtb2RpZmljYXRpb25zIHRvIHRoZSByZWdpc3RlcnMgbWF5IGhhdmUgcmV3b3VuZCB0aGVcXG4rXFx0XFx0ICogc3RhdGUgbWFjaGluZS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHB0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MsIDEpO1xcbitcXHR9XFxuK31cXG4rXFxuKyNkZWZpbmUgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdCBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0XFxuK1xcbiAjZW5kaWYgLyogX0FTTV9BUk02NF9FTlRSWV9DT01NT05fSCAqL1xcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c2NhbGwuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oXFxuaW5kZXggNWU0YzdmYzQ0ZjczMTUuLmUzZTcxNjU3NTg0NjQ2IDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oXFxuKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNjYWxsLmhcXG5AQCAtOCw2ICs4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY3VhcGkvbGludXgvYXVkaXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBhdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yc2VxLmhcXHUwMDNlXFxuIFxcbiB0eXBlZGVmIGxvbmcgKCpzeXNjYWxsX2ZuX3QpKGNvbnN0IHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcXG4gXFxuQEAgLTExOSw4ICsxMjAsNCBAQCBzdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX2dldF9hcmNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcXG4gXFxuIFxcdHJldHVybiBBVURJVF9BUkNIX0FBUkNINjQ7XFxuIH1cXG4tXFxuLWludCBzeXNjYWxsX3RyYWNlX2VudGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcXG4tdm9pZCBzeXNjYWxsX3RyYWNlX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi1cXG4gI2VuZGlmXFx0LyogX19BU01fU1lTQ0FMTF9IICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxcbmluZGV4IDVkN2ZlM2UxNTNjODUwLi4zZjYyMWJhMGY5NjEzNyAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcXG5AQCAtNDYsNiArNDYsNyBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8ge1xcbiBcXHR1NjRcXHRcXHRcXHRtcGFtX3BhcnRpZF9wbWc7XFxuICNlbmRpZlxcbiBcXHR1MzJcXHRcXHRcXHRjcHU7XFxuK1xcdHVuc2lnbmVkIGxvbmdcXHRcXHRzeXNjYWxsX3dvcms7ICAgLyogU1lTQ0FMTF9XT1JLXyBmbGFncyAqL1xcbiB9O1xcbiBcXG4gI2RlZmluZSB0aHJlYWRfc2F2ZWRfcGModHNrKVxcdFxcXFxcXG5AQCAtNjgsMTEgKzY5LDYgQEAgdm9pZCBhcmNoX3NldHVwX25ld19leGVjKHZvaWQpO1xcbiAjZGVmaW5lIFRJRl9VUFJPQkVcXHRcXHQ1XFx0LyogdXByb2JlIGJyZWFrcG9pbnQgb3Igc2luZ2xlc3RlcCAqL1xcbiAjZGVmaW5lIFRJRl9NVEVfQVNZTkNfRkFVTFRcXHQ2XFx0LyogTVRFIEFzeW5jaHJvbm91cyBUYWcgQ2hlY2sgRmF1bHQgKi9cXG4gI2RlZmluZSBUSUZfTk9USUZZX1NJR05BTFxcdDdcXHQvKiBzaWduYWwgbm90aWZpY2F0aW9ucyBleGlzdCAqL1xcbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFXFx0OFxcdC8qIHN5c2NhbGwgdHJhY2UgYWN0aXZlICovXFxuLSNkZWZpbmUgVElGX1NZU0NBTExfQVVESVRcXHQ5XFx0Lyogc3lzY2FsbCBhdWRpdGluZyAqL1xcbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFUE9JTlRcXHQxMFxcdC8qIHN5c2NhbGwgdHJhY2Vwb2ludCBmb3IgZnRyYWNlICovXFxuLSNkZWZpbmUgVElGX1NFQ0NPTVBcXHRcXHQxMVxcdC8qIHN5c2NhbGwgc2VjdXJlIGNvbXB1dGluZyAqL1xcbi0jZGVmaW5lIFRJRl9TWVNDQUxMX0VNVVxcdFxcdDEyXFx0Lyogc3lzY2FsbCBlbXVsYXRpb24gYWN0aXZlICovXFxuICNkZWZpbmUgVElGX1BBVENIX1BFTkRJTkdcXHQxM1xcdC8qIHBlbmRpbmcgbGl2ZSBwYXRjaGluZyB1cGRhdGUgKi9cXG4gI2RlZmluZSBUSUZfTUVNRElFXFx0XFx0MThcXHQvKiBpcyB0ZXJtaW5hdGluZyBkdWUgdG8gT09NIGtpbGxlciAqL1xcbiAjZGVmaW5lIFRJRl9GUkVFWkVcXHRcXHQxOVxcbkBAIC05NCwyNCArOTAsMTQgQEAgdm9pZCBhcmNoX3NldHVwX25ld19leGVjKHZvaWQpO1xcbiAjZGVmaW5lIF9USUZfTkVFRF9SRVNDSEVEX0xBWllcXHQoMSBcXHUwMDNjXFx1MDAzYyBUSUZfTkVFRF9SRVNDSEVEX0xBWlkpXFxuICNkZWZpbmUgX1RJRl9OT1RJRllfUkVTVU1FXFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX05PVElGWV9SRVNVTUUpXFxuICNkZWZpbmUgX1RJRl9GT1JFSUdOX0ZQU1RBVEVcXHQoMSBcXHUwMDNjXFx1MDAzYyBUSUZfRk9SRUlHTl9GUFNUQVRFKVxcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9UUkFDRVxcdCgxIFxcdTAwM2NcXHUwMDNjIFRJRl9TWVNDQUxMX1RSQUNFKVxcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9BVURJVFxcdCgxIFxcdTAwM2NcXHUwMDNjIFRJRl9TWVNDQUxMX0FVRElUKVxcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9UUkFDRVBPSU5UXFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX1NZU0NBTExfVFJBQ0VQT0lOVClcXG4tI2RlZmluZSBfVElGX1NFQ0NPTVBcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyBUSUZfU0VDQ09NUClcXG4tI2RlZmluZSBfVElGX1NZU0NBTExfRU1VXFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX1NZU0NBTExfRU1VKVxcbiAjZGVmaW5lIF9USUZfUEFUQ0hfUEVORElOR1xcdCgxIFxcdTAwM2NcXHUwMDNjIFRJRl9QQVRDSF9QRU5ESU5HKVxcbiAjZGVmaW5lIF9USUZfVVBST0JFXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX1VQUk9CRSlcXG4tI2RlZmluZSBfVElGX1NJTkdMRVNURVBcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyBUSUZfU0lOR0xFU1RFUClcXG4gI2RlZmluZSBfVElGXzMyQklUXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGXzMyQklUKVxcbiAjZGVmaW5lIF9USUZfU1ZFXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX1NWRSlcXG4gI2RlZmluZSBfVElGX01URV9BU1lOQ19GQVVMVFxcdCgxIFxcdTAwM2NcXHUwMDNjIFRJRl9NVEVfQVNZTkNfRkFVTFQpXFxuICNkZWZpbmUgX1RJRl9OT1RJRllfU0lHTkFMXFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX05PVElGWV9TSUdOQUwpXFxuICNkZWZpbmUgX1RJRl9UU0NfU0lHU0VHVlxcdCgxIFxcdTAwM2NcXHUwMDNjIFRJRl9UU0NfU0lHU0VHVilcXG4gXFxuLSNkZWZpbmUgX1RJRl9TWVNDQUxMX1dPUktcXHQoX1RJRl9TWVNDQUxMX1RSQUNFIHwgX1RJRl9TWVNDQUxMX0FVRElUIHwgXFxcXFxcbi1cXHRcXHRcXHRcXHQgX1RJRl9TWVNDQUxMX1RSQUNFUE9JTlQgfCBfVElGX1NFQ0NPTVAgfCBcXFxcXFxuLVxcdFxcdFxcdFxcdCBfVElGX1NZU0NBTExfRU1VKVxcbi1cXG4gI2lmZGVmIENPTkZJR19TSEFET1dfQ0FMTF9TVEFDS1xcbiAjZGVmaW5lIElOSVRfU0NTXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQuc2NzX2Jhc2VcXHQ9IGluaXRfc2hhZG93X2NhbGxfc3RhY2ssXFx0XFx0XFx0XFxcXFxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jIGIvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuY1xcbmluZGV4IDI5MzA3NjQyZjRjOTA0Li5jNTM2ODM4MzkxNTUzNiAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jXFxuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuY1xcbkBAIC0zODUsMTEgKzM4NSwxOSBAQCB2b2lkIHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcXG4gXFxuIFxcdGlmICghdGVzdF9hbmRfc2V0X3RpX3RocmVhZF9mbGFnKHRpLCBUSUZfU0lOR0xFU1RFUCkpXFxuIFxcdFxcdHNldF9yZWdzX3Nwc3Jfc3ModGFza19wdF9yZWdzKHRhc2spKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEVuc3VyZSB0aGF0IHRoZSBnZW5lcmljIGVudHJ5IGNvZGUgdHJpZ2dlcnMgYSB0cmFwIG9uY2Ugc3RlcHBpbmdcXG4rXFx0ICogb3V0IG9mIGEgc3lzdGVtIGNhbGwgcHJpb3IgdG8gZXhlY3V0aW5nIGFueSB1c2VyIGluc3RydWN0aW9uLFxcbitcXHQgKiBhcyB0aGUgZ2VuZXJpYyBlbnRyeSBjb2RlIGRvZXMgbm90IG5hdGl2ZWx5IGNoZWNrIGZvciBUSUZfU0lOR0xFU1RFUC5cXG4rXFx0ICovXFxuK1xcdHNldF90YXNrX3N5c2NhbGxfd29yayh0YXNrLCBTWVNDQUxMX0VYSVRfVFJBUCk7XFxuIH1cXG4gTk9LUFJPQkVfU1lNQk9MKHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKTtcXG4gXFxuIHZvaWQgdXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcXG4ge1xcbiBcXHRjbGVhcl90aV90aHJlYWRfZmxhZyh0YXNrX3RocmVhZF9pbmZvKHRhc2spLCBUSUZfU0lOR0xFU1RFUCk7XFxuK1xcdGNsZWFyX3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfRVhJVF9UUkFQKTtcXG4gfVxcbiBOT0tQUk9CRV9TWU1CT0wodXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uY1xcbmluZGV4IGNlYjRlYjExMjMyYTYxLi45ZWFjNzY4MDRiZDlhZSAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uY1xcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL2VudHJ5LWNvbW1vbi5jXFxuQEAgLTYsNyArNiw3IEBAXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbnRleHRfdHJhY2tpbmcuaFxcdTAwM2VcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lycS1lbnRyeS1jb21tb24uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2VudHJ5LWNvbW1vbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2FzYW4uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbmthZ2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpdmVwYXRjaC5oXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYyBiL2FyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jXFxuaW5kZXggNTcwOWU5ZDNjMzIxYTUuLjYxYTY2ODY4Mjk0NzE1IDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jXFxuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmNcXG5AQCAtOCw3ICs4LDYgQEBcXG4gICogQ29weXJpZ2h0IChDKSAyMDEyIEFSTSBMdGQuXFxuICAqL1xcbiBcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F1ZGl0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jb21wYXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQvc2lnbmFsLmhcXHUwMDNlXFxuQEAgLTE4LDcgKzE3LDYgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NtcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRyYWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2VyLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWNjb21wLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWN1cml0eS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5pdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2lnbmFsLmhcXHUwMDNlXFxuQEAgLTI4LDcgKzI2LDYgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2h3X2JyZWFrcG9pbnQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ3NldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZWxmLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9yc2VxLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2NvbXBhdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFxcdTAwM2VcXG5AQCAtMzgsMTMgKzM1LDkgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9tdGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9wb2ludGVyX2F1dGguaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9zdGFja3RyYWNlLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2Nhc20vc3lzY2FsbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3RyYXBzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vc3lzdGVtX21pc2MuaFxcdTAwM2VcXG4gXFxuLSNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UU1xcbi0jaW5jbHVkZSBcXHUwMDNjdHJhY2UvZXZlbnRzL3N5c2NhbGxzLmhcXHUwMDNlXFxuLVxcbiBzdHJ1Y3QgcHRfcmVnc19vZmZzZXQge1xcbiBcXHRjb25zdCBjaGFyICpuYW1lO1xcbiBcXHRpbnQgb2Zmc2V0O1xcbkBAIC0yMzM5LDExNCArMjMzMiw2IEBAIGxvbmcgYXJjaF9wdHJhY2Uoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwgbG9uZyByZXF1ZXN0LFxcbiBcXHRyZXR1cm4gcHRyYWNlX3JlcXVlc3QoY2hpbGQsIHJlcXVlc3QsIGFkZHIsIGRhdGEpO1xcbiB9XFxuIFxcbi1lbnVtIHB0cmFjZV9zeXNjYWxsX2RpciB7XFxuLVxcdFBUUkFDRV9TWVNDQUxMX0VOVEVSID0gMCxcXG4tXFx0UFRSQUNFX1NZU0NBTExfRVhJVCxcXG4tfTtcXG4tXFxuLXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBwdHJhY2Vfc2F2ZV9yZWcoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZW51bSBwdHJhY2Vfc3lzY2FsbF9kaXIgZGlyLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGludCAqcmVnbm8pXFxuLXtcXG4tXFx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XFxuLVxcbi1cXHQvKlxcbi1cXHQgKiBXZSBoYXZlIHNvbWUgQUJJIHdlaXJkbmVzcyBoZXJlIGluIHRoZSB3YXkgdGhhdCB3ZSBoYW5kbGUgc3lzY2FsbFxcbi1cXHQgKiBleGl0IHN0b3BzIGJlY2F1c2Ugd2UgaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhlIHN0b3AgaGFzIGJlZW5cXG4tXFx0ICogc2lnbmFsbGVkIGZyb20gc3lzY2FsbCBlbnRyeSBvciBzeXNjYWxsIGV4aXQgYnkgY2xvYmJlcmluZyBhIGdlbmVyYWxcXG4tXFx0ICogcHVycG9zZSByZWdpc3RlciAoaXAvcjEyIGZvciBBQXJjaDMyLCB4NyBmb3IgQUFyY2g2NCkgaW4gdGhlIHRyYWNlZVxcbi1cXHQgKiBhbmQgcmVzdG9yaW5nIGl0cyBvbGQgdmFsdWUgYWZ0ZXIgdGhlIHN0b3AuIFRoaXMgbWVhbnMgdGhhdDpcXG4tXFx0ICpcXG4tXFx0ICogLSBBbnkgd3JpdGVzIGJ5IHRoZSB0cmFjZXIgdG8gdGhpcyByZWdpc3RlciBkdXJpbmcgdGhlIHN0b3AgYXJlXFxuLVxcdCAqICAgaWdub3JlZC9kaXNjYXJkZWQuXFxuLVxcdCAqXFxuLVxcdCAqIC0gVGhlIGFjdHVhbCB2YWx1ZSBvZiB0aGUgcmVnaXN0ZXIgaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgdGhlIHN0b3AsXFxuLVxcdCAqICAgc28gdGhlIHRyYWNlciBjYW5ub3Qgc2F2ZSBpdCBhbmQgcmVzdG9yZSBpdCBsYXRlci5cXG4tXFx0ICpcXG4tXFx0ICogLSBTeXNjYWxsIHN0b3BzIGJlaGF2ZSBkaWZmZXJlbnRseSB0byBzZWNjb21wIGFuZCBwc2V1ZG8tc3RlcCB0cmFwc1xcbi1cXHQgKiAgICh0aGUgbGF0dGVyIGRvIG5vdCBub2JibGUgYW55IHJlZ2lzdGVycykuXFxuLVxcdCAqL1xcbi1cXHQqcmVnbm8gPSAoaXNfY29tcGF0X3Rhc2soKSA/IDEyIDogNyk7XFxuLVxcdHNhdmVkX3JlZyA9IHJlZ3MtXFx1MDAzZXJlZ3NbKnJlZ25vXTtcXG4tXFx0cmVncy1cXHUwMDNlcmVnc1sqcmVnbm9dID0gZGlyO1xcbi1cXG4tXFx0cmV0dXJuIHNhdmVkX3JlZztcXG4tfVxcbi1cXG4tc3RhdGljIGludCByZXBvcnRfc3lzY2FsbF9lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4te1xcbi1cXHR1bnNpZ25lZCBsb25nIHNhdmVkX3JlZztcXG4tXFx0aW50IHJlZ25vLCByZXQ7XFxuLVxcbi1cXHRzYXZlZF9yZWcgPSBwdHJhY2Vfc2F2ZV9yZWcocmVncywgUFRSQUNFX1NZU0NBTExfRU5URVIsIFxcdTAwMjZyZWdubyk7XFxuLVxcdHJldCA9ICFwdHJhY2VfcmVwb3J0X3N5c2NhbGxfcGVybWl0X2VudHJ5KHJlZ3MpO1xcbi1cXHRpZiAocmV0KVxcbi1cXHRcXHRmb3JnZXRfc3lzY2FsbChyZWdzKTtcXG4tXFx0cmVncy1cXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCByZXBvcnRfc3lzY2FsbF9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi17XFxuLVxcdHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnO1xcbi1cXHRpbnQgcmVnbm87XFxuLVxcbi1cXHRzYXZlZF9yZWcgPSBwdHJhY2Vfc2F2ZV9yZWcocmVncywgUFRSQUNFX1NZU0NBTExfRVhJVCwgXFx1MDAyNnJlZ25vKTtcXG4tXFx0aWYgKCF0ZXN0X3RocmVhZF9mbGFnKFRJRl9TSU5HTEVTVEVQKSkge1xcbi1cXHRcXHRwdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChyZWdzLCAwKTtcXG4tXFx0XFx0cmVncy1cXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHJlZ3MtXFx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xcbi1cXG4tXFx0XFx0LypcXG4tXFx0XFx0ICogU2lnbmFsIGEgcHNldWRvLXN0ZXAgZXhjZXB0aW9uIHNpbmNlIHdlIGFyZSBzdGVwcGluZyBidXRcXG4tXFx0XFx0ICogdHJhY2VyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlZ2lzdGVycyBtYXkgaGF2ZSByZXdvdW5kIHRoZVxcbi1cXHRcXHQgKiBzdGF0ZSBtYWNoaW5lLlxcbi1cXHRcXHQgKi9cXG4tXFx0XFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMSk7XFxuLVxcdH1cXG4tfVxcbi1cXG4taW50IHN5c2NhbGxfdHJhY2VfZW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLXtcXG4tXFx0dW5zaWduZWQgbG9uZyBmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7XFxuLVxcdGludCByZXQ7XFxuLVxcbi1cXHRpZiAoZmxhZ3MgXFx1MDAyNiAoX1RJRl9TWVNDQUxMX0VNVSB8IF9USUZfU1lTQ0FMTF9UUkFDRSkpIHtcXG4tXFx0XFx0cmV0ID0gcmVwb3J0X3N5c2NhbGxfZW50cnkocmVncyk7XFxuLVxcdFxcdGlmIChyZXQgfHwgKGZsYWdzIFxcdTAwMjYgX1RJRl9TWVNDQUxMX0VNVSkpXFxuLVxcdFxcdFxcdHJldHVybiBOT19TWVNDQUxMO1xcbi1cXHR9XFxuLVxcbi1cXHQvKiBEbyB0aGUgc2VjdXJlIGNvbXB1dGluZyBhZnRlciBwdHJhY2U7IGZhaWx1cmVzIHNob3VsZCBiZSBmYXN0LiAqL1xcbi1cXHRpZiAoIXNlY2NvbXBfcGVybWl0X3N5c2NhbGwoKSlcXG4tXFx0XFx0cmV0dXJuIE5PX1NZU0NBTEw7XFxuLVxcbi1cXHRpZiAodGVzdF90aHJlYWRfZmxhZyhUSUZfU1lTQ0FMTF9UUkFDRVBPSU5UKSlcXG4tXFx0XFx0dHJhY2Vfc3lzX2VudGVyKHJlZ3MsIHJlZ3MtXFx1MDAzZXN5c2NhbGxubyk7XFxuLVxcbi1cXHRhdWRpdF9zeXNjYWxsX2VudHJ5KHJlZ3MtXFx1MDAzZXN5c2NhbGxubywgcmVncy1cXHUwMDNlb3JpZ194MCwgcmVncy1cXHUwMDNlcmVnc1sxXSxcXG4tXFx0XFx0XFx0ICAgIHJlZ3MtXFx1MDAzZXJlZ3NbMl0sIHJlZ3MtXFx1MDAzZXJlZ3NbM10pO1xcbi1cXG4tXFx0cmV0dXJuIHJlZ3MtXFx1MDAzZXN5c2NhbGxubztcXG4tfVxcbi1cXG4tdm9pZCBzeXNjYWxsX3RyYWNlX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLXtcXG4tXFx0dW5zaWduZWQgbG9uZyBmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7XFxuLVxcbi1cXHRhdWRpdF9zeXNjYWxsX2V4aXQocmVncyk7XFxuLVxcbi1cXHRpZiAoZmxhZ3MgXFx1MDAyNiBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVClcXG4tXFx0XFx0dHJhY2Vfc3lzX2V4aXQocmVncywgc3lzY2FsbF9nZXRfcmV0dXJuX3ZhbHVlKGN1cnJlbnQsIHJlZ3MpKTtcXG4tXFxuLVxcdGlmIChmbGFncyBcXHUwMDI2IChfVElGX1NZU0NBTExfVFJBQ0UgfCBfVElGX1NJTkdMRVNURVApKVxcbi1cXHRcXHRyZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MpO1xcbi1cXG4tXFx0cnNlcV9zeXNjYWxsKHJlZ3MpO1xcbi19XFxuLVxcbiAvKlxcbiAgKiBTUFNSX0VMeCBiaXRzIHdoaWNoIGFyZSBhbHdheXMgYXJjaGl0ZWN0dXJhbGx5IFJFUzAgcGVyIEFSTSBEREkgMDQ4N0QuYS5cXG4gICogV2UgcGVybWl0IHVzZXJzcGFjZSB0byBzZXQgU1NCUyAoQUFyY2g2NCBiaXQgMTIsIEFBcmNoMzIgYml0IDIzKSB3aGljaCBpc1xcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuYyBiL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jXFxuaW5kZXggMzhlNmZhMjA0YzE3YjUuLjA5M2VlYmI5ZDc2NGFjIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jXFxuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmNcXG5AQCAtOCw4ICs4LDggQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jYWNoZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGF0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9lbnRyeS1jb21tb24uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnEtZW50cnktY29tbW9uLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NpZ25hbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZnJlZXplci5oXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmNcXG5pbmRleCAzNThkZGZiZjE0MDFhYy4uMjUzNWNhZTk0MTNkOGEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jXFxuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jXFxuQEAgLTIsNiArMiw3IEBAXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbnRleHRfdHJhY2tpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2VudHJ5LWNvbW1vbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25vc3BlYy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRyYWNlLmhcXHUwMDNlXFxuQEAgLTU0LDE1ICs1NSwxMSBAQCBzdGF0aWMgdm9pZCBpbnZva2Vfc3lzY2FsbChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgaW50IHNjbm8sXFxuIFxcdHN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAwLCByZXQpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIGJvb2wgaGFzX3N5c2NhbGxfd29yayh1bnNpZ25lZCBsb25nIGZsYWdzKVxcbi17XFxuLVxcdHJldHVybiB1bmxpa2VseShmbGFncyBcXHUwMDI2IF9USUZfU1lTQ0FMTF9XT1JLKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsXFxuLVxcdFxcdFxcdCAgIGNvbnN0IHN5c2NhbGxfZm5fdCBzeXNjYWxsX3RhYmxlW10pXFxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBlbDBfc3ZjX2NvbW1vbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IHNjbm8sIGludCBzY19ucixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3lzY2FsbF9mbl90IHN5c2NhbGxfdGFibGVbXSlcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gcmVhZF90aHJlYWRfZmxhZ3MoKTtcXG4rXFx0dW5zaWduZWQgbG9uZyB3b3JrO1xcbiBcXG4gXFx0cmVncy1cXHUwMDNlb3JpZ194MCA9IHJlZ3MtXFx1MDAzZXJlZ3NbMF07XFxuIFxcdHJlZ3MtXFx1MDAzZXN5c2NhbGxubyA9IHNjbm87XFxuQEAgLTk1LDcgKzkyLDggQEAgc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGhhc19zeXNjYWxsX3dvcmsoZmxhZ3MpKSB7XFxuK1xcdHdvcmsgPSBSRUFEX09OQ0UoY3VycmVudF90aHJlYWRfaW5mbygpLVxcdTAwM2VzeXNjYWxsX3dvcmspO1xcbitcXHRpZiAodW5saWtlbHkod29yayBcXHUwMDI2IFNZU0NBTExfV09SS19FTlRFUikpIHtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogVGhlIGRlLWZhY3RvIHN0YW5kYXJkIHdheSB0byBza2lwIGEgc3lzdGVtIGNhbGwgdXNpbmcgcHRyYWNlXFxuIFxcdFxcdCAqIGlzIHRvIHNldCB0aGUgc3lzdGVtIGNhbGwgdG8gLTEgKE5PX1NZU0NBTEwpIGFuZCBzZXQgeDAgdG8gYVxcbkBAIC0xMTMsMjYgKzExMSwxOCBAQCBzdGF0aWMgdm9pZCBlbDBfc3ZjX2NvbW1vbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IHNjbm8sIGludCBzY19ucixcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChzY25vID09IE5PX1NZU0NBTEwpXFxuIFxcdFxcdFxcdHN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAtRU5PU1lTLCAwKTtcXG4tXFx0XFx0c2NubyA9IHN5c2NhbGxfdHJhY2VfZW50ZXIocmVncyk7XFxuK1xcdFxcdGlmICghc3lzY2FsbF90cmFjZV9lbnRlcihyZWdzLCB3b3JrLCBzY25vKSlcXG4rXFx0XFx0XFx0Z290byB0cmFjZV9leGl0O1xcbitcXG4rXFx0XFx0LyogUmVyZWFkIHRoZSBzeXNjYWxsIG51bWJlciBhcyBpdCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQgKi9cXG4rXFx0XFx0c2NubyA9IHN5c2NhbGxfZ2V0X25yKGN1cnJlbnQsIHJlZ3MpO1xcbiBcXHRcXHRpZiAoc2NubyA9PSBOT19TWVNDQUxMKVxcbiBcXHRcXHRcXHRnb3RvIHRyYWNlX2V4aXQ7XFxuIFxcdH1cXG4gXFxuIFxcdGludm9rZV9zeXNjYWxsKHJlZ3MsIHNjbm8sIHNjX25yLCBzeXNjYWxsX3RhYmxlKTtcXG4tXFxuLVxcdC8qXFxuLVxcdCAqIFRoZSB0cmFjaW5nIHN0YXR1cyBtYXkgaGF2ZSBjaGFuZ2VkIHVuZGVyIG91ciBmZWV0LCBzbyB3ZSBoYXZlIHRvXFxuLVxcdCAqIGNoZWNrIGFnYWluLiBIb3dldmVyLCBpZiB3ZSB3ZXJlIHRyYWNpbmcgZW50cnksIHRoZW4gd2UgYWx3YXlzIHRyYWNlXFxuLVxcdCAqIGV4aXQgcmVnYXJkbGVzcywgYXMgdGhlIG9sZCBlbnRyeSBhc3NlbWJseSBkaWQuXFxuLVxcdCAqL1xcbi1cXHRpZiAoIWhhc19zeXNjYWxsX3dvcmsoZmxhZ3MpIFxcdTAwMjZcXHUwMDI2ICFJU19FTkFCTEVEKENPTkZJR19ERUJVR19SU0VRKSkge1xcbi1cXHRcXHRmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7XFxuLVxcdFxcdGlmICghaGFzX3N5c2NhbGxfd29yayhmbGFncykgXFx1MDAyNlxcdTAwMjYgIShmbGFncyBcXHUwMDI2IF9USUZfU0lOR0xFU1RFUCkpXFxuLVxcdFxcdFxcdHJldHVybjtcXG4tXFx0fVxcbi1cXG4gdHJhY2VfZXhpdDpcXG4tXFx0c3lzY2FsbF90cmFjZV9leGl0KHJlZ3MpO1xcbitcXHRzeXNjYWxsX2V4aXRfdG9fdXNlcl9tb2RlX3dvcmsocmVncyk7XFxuIH1cXG4gXFxuIHZvaWQgZG9fZWwwX3N2YyhzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jIGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jXFxuaW5kZXggNTkyZGQ4NjY4ZGU0NjMuLjM3Y2RjN2M3MmUxNWMzIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28uY1xcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28uY1xcbkBAIC0zNDMsMyArMzQzLDE5IEBAIGludCBhcmNoX3NldHVwX2FkZGl0aW9uYWxfcGFnZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgaW50IHVzZXNfaW50ZXJwKVxcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbitcXG4rYm9vbCBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm4oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBsYW5kaW5nX3BhZDtcXG4rXFxuKyNpZmRlZiBDT05GSUdfQ09NUEFUXFxuK1xcdGlmIChpc19jb21wYXRfdGFzaygpKSB7XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgc2lncGFnZSA9ICh1bnNpZ25lZCBsb25nKWN1cnJlbnQtXFx1MDAzZW1tLVxcdTAwM2Vjb250ZXh0LnNpZ3BhZ2U7XFxuK1xcbitcXHRcXHRyZXR1cm4gcmVncy1cXHUwMDNlcGMgXFx1MDAzZT0gc2lncGFnZSBcXHUwMDI2XFx1MDAyNiByZWdzLVxcdTAwM2VwYyBcXHUwMDNjIChzaWdwYWdlICsgUEFHRV9TSVpFKTtcXG4rXFx0fVxcbisjZW5kaWZcXG4rXFx0bGFuZGluZ19wYWQgPSAodW5zaWduZWQgbG9uZylWRFNPX1NZTUJPTChjdXJyZW50LVxcdTAwM2VtbS1cXHUwMDNlY29udGV4dC52ZHNvLCBzaWdyZXR1cm5fbGFuZGluZ19wYWQpO1xcbitcXG4rXFx0cmV0dXJuIHJlZ3MtXFx1MDAzZXBjID09IGxhbmRpbmdfcGFkO1xcbit9XFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlMgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TXFxuaW5kZXggMGUxODcyOWFiYzNiNzguLjhkMmQ0MTNmZjQ1ZThiIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlNcXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TXFxuQEAgLTczLDYgKzczLDcgQEAgU1lNX0NPREVfU1RBUlQoX19rZXJuZWxfcnRfc2lncmV0dXJuKVxcbiBcXHRtb3ZcXHR4OCwgI19fTlJfcnRfc2lncmV0dXJuXFxuIC8vXFx0UExFQVNFIERPIE5PVCBNT0RJRllcXG4gXFx0c3ZjXFx0IzBcXG4rXFx0U1lNX0lOTkVSX0xBQkVMKF9fc2lncmV0dXJuX2xhbmRpbmdfcGFkLCBTWU1fTF9HTE9CQUwpXFxuIC8vXFx0UExFQVNFIERPIE5PVCBNT0RJRllcXG4gLy9cXHQuY2ZpX2VuZHByb2NcXG4gU1lNX0NPREVfRU5EKF9fa2VybmVsX3J0X3NpZ3JldHVybilcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TIGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TXFxuaW5kZXggNTIzMTRiZTI5MTkxMjEuLmRhNjFkNmZjNmZlOWYzIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuU1xcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuU1xcbkBAIC0xMTIsMyArMTEyLDQgQEAgVkVSU0lPTlxcbiAgKiBNYWtlIHRoZSBzaWdyZXR1cm4gY29kZSB2aXNpYmxlIHRvIHRoZSBrZXJuZWwuXFxuICAqL1xcbiBWRFNPX3NpZ3RyYW1wXFx0XFx0PSBfX2tlcm5lbF9ydF9zaWdyZXR1cm47XFxuK1ZEU09fc2lncmV0dXJuX2xhbmRpbmdfcGFkXFx0PSBfX3NpZ3JldHVybl9sYW5kaW5nX3BhZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjI6MTA6MzguMDk4OTY2MjMxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzIwNDQxMTQ0MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1lTQ0FMTF9VU0VSX0RJU1BBVENIXCIsXG4gICAgXCJDT01QQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5cIixcbiAgICBcInVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwXCIsXG4gICAgXCJ1c2VyX2Rpc2FibGVfc2luZ2xlX3N0ZXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjb252ZXJ0cyBhcm02NCB0byB1c2UgdGhlIGdlbmVyaWMgZW50cnkgaW5mcmFzdHJ1Y3R1cmUgYW5kIGFkZHMgc3VwcG9ydCBmb3IgU3lzY2FsbCBVc2VyIERpc3BhdGNoLiBUaGlzIGludm9sdmVzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBzeXNjYWxsIGVudHJ5L2V4aXQgcGF0aHMsIHB0cmFjZSBzaW5nbGUtc3RlcHBpbmcsIGFuZCBWRFNPIHNpZ3JldHVybiBkZXRlY3Rpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjNjZjA0YjFjZGU5MGQ5MjA0YzY5N2M1NjI1MjQxODdhMzljMmRmMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDIyOjEwOjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9LY29uZmlnIGIvYXJjaC9hcm02NC9LY29uZmlnXG5pbmRleCBmYjE1MDM3YjVlM2M3ZS4uZWZlZjA3ODU3ZDM4ODQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L0tjb25maWdcbisrKyBiL2FyY2gvYXJtNjQvS2NvbmZpZ1xuQEAgLTg3LDYgKzg3LDcgQEAgY29uZmlnIEFSTTY0XG4gXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9TTVRcbiBcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX0NMVVNURVJcbiBcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX01DXG4rXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcbiBcdHNlbGVjdCBBUkNIX1dBTlRfQkFUQ0hFRF9VTk1BUF9UTEJfRkxVU0hcbiBcdHNlbGVjdCBBUkNIX1dBTlRfQ09NUEFUX0lQQ19QQVJTRV9WRVJTSU9OIGlmIENPTVBBVFxuIFx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVRcbkBAIC0xMjksOSArMTMwLDkgQEAgY29uZmlnIEFSTTY0XG4gXHRzZWxlY3QgR0VORVJJQ19DUFVfREVWSUNFU1xuIFx0c2VsZWN0IEdFTkVSSUNfQ1BVX1ZVTE5FUkFCSUxJVElFU1xuIFx0c2VsZWN0IEdFTkVSSUNfRUFSTFlfSU9SRU1BUFxuK1x0c2VsZWN0IEdFTkVSSUNfRU5UUllcbiBcdHNlbGVjdCBHRU5FUklDX0lETEVfUE9MTF9TRVRVUFxuIFx0c2VsZWN0IEdFTkVSSUNfSU9SRU1BUFxuLVx0c2VsZWN0IEdFTkVSSUNfSVJRX0VOVFJZXG4gXHRzZWxlY3QgR0VORVJJQ19JUlFfSVBJXG4gXHRzZWxlY3QgR0VORVJJQ19JUlFfS0VYRUNfQ0xFQVJfVk1fRk9SV0FSRFxuIFx0c2VsZWN0IEdFTkVSSUNfSVJRX1BST0JFXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbGYuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbmluZGV4IGQyNzc5ZDYwNGM3YmUyLi5hOGIyMzJjNWM2ZDlmOCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbkBAIC0yOTMsNiArMjkzLDcgQEAgc3RhdGljIGlubGluZSBpbnQgYXJjaF9jaGVja19lbGYodm9pZCAqZWhkciwgYm9vbCBoYXNfaW50ZXJwLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK2V4dGVybiBib29sIGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG4gI2VuZGlmIC8qICFfX0FTU0VNQkxFUl9fICovXG4gXG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcbmluZGV4IGNhYjhjZDc4ZjY5Mzg1Li4yYjA1M2FjYmUxMGZlYSAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcbisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcbkBAIC0zLDE0ICszLDIxIEBAXG4gI2lmbmRlZiBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9IXG4gI2RlZmluZSBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9IXG4gXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHRyYWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90aHJlYWRfaW5mby5oXHUwMDNlXG4gXG4rI2luY2x1ZGUgXHUwMDNjYXNtL2NvbXBhdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9kYWlmZmxhZ3MuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9mcHNpbWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9tdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9zdGFja3RyYWNlLmhcdTAwM2VcbiBcbitlbnVtIHB0cmFjZV9zeXNjYWxsX2RpciB7XG4rXHRQVFJBQ0VfU1lTQ0FMTF9FTlRFUiA9IDAsXG4rXHRQVFJBQ0VfU1lTQ0FMTF9FWElULFxuK307XG4rXG4gI2RlZmluZSBBUkNIX0VYSVRfVE9fVVNFUl9NT0RFX1dPUksgKF9USUZfTVRFX0FTWU5DX0ZBVUxUIHwgX1RJRl9GT1JFSUdOX0ZQU1RBVEUpXG4gXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGFyY2hfZXhpdF90b191c2VyX21vZGVfd29yayhzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbkBAIC01NCw0ICs2MSw3NCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9pcnFlbnRyeV9leGl0X25lZWRfcmVzY2hlZCh2b2lkKVxuIFxuICNkZWZpbmUgYXJjaF9pcnFlbnRyeV9leGl0X25lZWRfcmVzY2hlZCBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkXG4gXG4rc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIHB0cmFjZV9zYXZlX3JlZyhzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbitcdFx0XHRcdFx0XHQgICAgIGVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIGRpcixcbitcdFx0XHRcdFx0XHQgICAgIGludCAqcmVnbm8pXG4re1xuK1x0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4rXG4rXHQvKlxuK1x0ICogV2UgaGF2ZSBzb21lIEFCSSB3ZWlyZG5lc3MgaGVyZSBpbiB0aGUgd2F5IHRoYXQgd2UgaGFuZGxlIHN5c2NhbGxcbitcdCAqIGV4aXQgc3RvcHMgYmVjYXVzZSB3ZSBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGUgc3RvcCBoYXMgYmVlblxuK1x0ICogc2lnbmFsbGVkIGZyb20gc3lzY2FsbCBlbnRyeSBvciBzeXNjYWxsIGV4aXQgYnkgY2xvYmJlcmluZyBhIGdlbmVyYWxcbitcdCAqIHB1cnBvc2UgcmVnaXN0ZXIgKGlwL3IxMiBmb3IgQUFyY2gzMiwgeDcgZm9yIEFBcmNoNjQpIGluIHRoZSB0cmFjZWVcbitcdCAqIGFuZCByZXN0b3JpbmcgaXRzIG9sZCB2YWx1ZSBhZnRlciB0aGUgc3RvcC4gVGhpcyBtZWFucyB0aGF0OlxuK1x0ICpcbitcdCAqIC0gQW55IHdyaXRlcyBieSB0aGUgdHJhY2VyIHRvIHRoaXMgcmVnaXN0ZXIgZHVyaW5nIHRoZSBzdG9wIGFyZVxuK1x0ICogICBpZ25vcmVkL2Rpc2NhcmRlZC5cbitcdCAqXG4rXHQgKiAtIFRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIHJlZ2lzdGVyIGlzIG5vdCBhdmFpbGFibGUgZHVyaW5nIHRoZSBzdG9wLFxuK1x0ICogICBzbyB0aGUgdHJhY2VyIGNhbm5vdCBzYXZlIGl0IGFuZCByZXN0b3JlIGl0IGxhdGVyLlxuK1x0ICpcbitcdCAqIC0gU3lzY2FsbCBzdG9wcyBiZWhhdmUgZGlmZmVyZW50bHkgdG8gc2VjY29tcCBhbmQgcHNldWRvLXN0ZXAgdHJhcHNcbitcdCAqICAgKHRoZSBsYXR0ZXIgZG8gbm90IG5vYmJsZSBhbnkgcmVnaXN0ZXJzKS5cbitcdCAqL1xuK1x0KnJlZ25vID0gKGlzX2NvbXBhdF90YXNrKCkgPyAxMiA6IDcpO1xuK1x0c2F2ZWRfcmVnID0gcmVncy1cdTAwM2VyZWdzWypyZWdub107XG4rXHRyZWdzLVx1MDAzZXJlZ3NbKnJlZ25vXSA9IGRpcjtcbitcbitcdHJldHVybiBzYXZlZF9yZWc7XG4rfVxuK1xuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4re1xuK1x0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4rXHRib29sIHBlcm1pdDtcbitcdGludCByZWdubztcbitcbitcdHNhdmVkX3JlZyA9IHB0cmFjZV9zYXZlX3JlZyhyZWdzLCBQVFJBQ0VfU1lTQ0FMTF9FTlRFUiwgXHUwMDI2cmVnbm8pO1xuK1x0cGVybWl0ID0gcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeShyZWdzKTtcbitcdGlmICghcGVybWl0KVxuK1x0XHRmb3JnZXRfc3lzY2FsbChyZWdzKTtcbitcdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4rXG4rXHRyZXR1cm4gcGVybWl0O1xuK31cbitcbisjZGVmaW5lIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeSBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnlcbitcbitzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbitcdFx0XHRcdFx0XHRcdCAgICBpbnQgc3RlcClcbit7XG4rXHR1bnNpZ25lZCBsb25nIHNhdmVkX3JlZztcbitcdGludCByZWdubztcbitcbitcdHNhdmVkX3JlZyA9IHB0cmFjZV9zYXZlX3JlZyhyZWdzLCBQVFJBQ0VfU1lTQ0FMTF9FWElULCBcdTAwMjZyZWdubyk7XG4rXHRpZiAoIXN0ZXApIHtcbitcdFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMCk7XG4rXHRcdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4rXHR9IGVsc2Uge1xuK1x0XHRyZWdzLVx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xuK1xuK1x0XHQvKlxuK1x0XHQgKiBTaWduYWwgYSBwc2V1ZG8tc3RlcCBleGNlcHRpb24gc2luY2Ugd2UgYXJlIHN0ZXBwaW5nIGJ1dFxuK1x0XHQgKiB0cmFjZXIgbW9kaWZpY2F0aW9ucyB0byB0aGUgcmVnaXN0ZXJzIG1heSBoYXZlIHJld291bmQgdGhlXG4rXHRcdCAqIHN0YXRlIG1hY2hpbmUuXG4rXHRcdCAqL1xuK1x0XHRwdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChyZWdzLCAxKTtcbitcdH1cbit9XG4rXG4rI2RlZmluZSBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0IGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXRcbitcbiAjZW5kaWYgLyogX0FTTV9BUk02NF9FTlRSWV9DT01NT05fSCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNjYWxsLmhcbmluZGV4IDVlNGM3ZmM0NGY3MzE1Li5lM2U3MTY1NzU4NDY0NiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c2NhbGwuaFxuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjdWFwaS9saW51eC9hdWRpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGF0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JzZXEuaFx1MDAzZVxuIFxuIHR5cGVkZWYgbG9uZyAoKnN5c2NhbGxfZm5fdCkoY29uc3Qgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuIFxuQEAgLTExOSw4ICsxMjAsNCBAQCBzdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX2dldF9hcmNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcbiBcbiBcdHJldHVybiBBVURJVF9BUkNIX0FBUkNINjQ7XG4gfVxuLVxuLWludCBzeXNjYWxsX3RyYWNlX2VudGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi12b2lkIHN5c2NhbGxfdHJhY2VfZXhpdChzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG4tXG4gI2VuZGlmXHQvKiBfX0FTTV9TWVNDQUxMX0ggKi9cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcbmluZGV4IDVkN2ZlM2UxNTNjODUwLi4zZjYyMWJhMGY5NjEzNyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxuKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oXG5AQCAtNDYsNiArNDYsNyBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8ge1xuIFx0dTY0XHRcdFx0bXBhbV9wYXJ0aWRfcG1nO1xuICNlbmRpZlxuIFx0dTMyXHRcdFx0Y3B1O1xuK1x0dW5zaWduZWQgbG9uZ1x0XHRzeXNjYWxsX3dvcms7ICAgLyogU1lTQ0FMTF9XT1JLXyBmbGFncyAqL1xuIH07XG4gXG4gI2RlZmluZSB0aHJlYWRfc2F2ZWRfcGModHNrKVx0XFxcbkBAIC02OCwxMSArNjksNiBAQCB2b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7XG4gI2RlZmluZSBUSUZfVVBST0JFXHRcdDVcdC8qIHVwcm9iZSBicmVha3BvaW50IG9yIHNpbmdsZXN0ZXAgKi9cbiAjZGVmaW5lIFRJRl9NVEVfQVNZTkNfRkFVTFRcdDZcdC8qIE1URSBBc3luY2hyb25vdXMgVGFnIENoZWNrIEZhdWx0ICovXG4gI2RlZmluZSBUSUZfTk9USUZZX1NJR05BTFx0N1x0Lyogc2lnbmFsIG5vdGlmaWNhdGlvbnMgZXhpc3QgKi9cbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFXHQ4XHQvKiBzeXNjYWxsIHRyYWNlIGFjdGl2ZSAqL1xuLSNkZWZpbmUgVElGX1NZU0NBTExfQVVESVRcdDlcdC8qIHN5c2NhbGwgYXVkaXRpbmcgKi9cbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFUE9JTlRcdDEwXHQvKiBzeXNjYWxsIHRyYWNlcG9pbnQgZm9yIGZ0cmFjZSAqL1xuLSNkZWZpbmUgVElGX1NFQ0NPTVBcdFx0MTFcdC8qIHN5c2NhbGwgc2VjdXJlIGNvbXB1dGluZyAqL1xuLSNkZWZpbmUgVElGX1NZU0NBTExfRU1VXHRcdDEyXHQvKiBzeXNjYWxsIGVtdWxhdGlvbiBhY3RpdmUgKi9cbiAjZGVmaW5lIFRJRl9QQVRDSF9QRU5ESU5HXHQxM1x0LyogcGVuZGluZyBsaXZlIHBhdGNoaW5nIHVwZGF0ZSAqL1xuICNkZWZpbmUgVElGX01FTURJRVx0XHQxOFx0LyogaXMgdGVybWluYXRpbmcgZHVlIHRvIE9PTSBraWxsZXIgKi9cbiAjZGVmaW5lIFRJRl9GUkVFWkVcdFx0MTlcbkBAIC05NCwyNCArOTAsMTQgQEAgdm9pZCBhcmNoX3NldHVwX25ld19leGVjKHZvaWQpO1xuICNkZWZpbmUgX1RJRl9ORUVEX1JFU0NIRURfTEFaWVx0KDEgXHUwMDNjXHUwMDNjIFRJRl9ORUVEX1JFU0NIRURfTEFaWSlcbiAjZGVmaW5lIF9USUZfTk9USUZZX1JFU1VNRVx0KDEgXHUwMDNjXHUwMDNjIFRJRl9OT1RJRllfUkVTVU1FKVxuICNkZWZpbmUgX1RJRl9GT1JFSUdOX0ZQU1RBVEVcdCgxIFx1MDAzY1x1MDAzYyBUSUZfRk9SRUlHTl9GUFNUQVRFKVxuLSNkZWZpbmUgX1RJRl9TWVNDQUxMX1RSQUNFXHQoMSBcdTAwM2NcdTAwM2MgVElGX1NZU0NBTExfVFJBQ0UpXG4tI2RlZmluZSBfVElGX1NZU0NBTExfQVVESVRcdCgxIFx1MDAzY1x1MDAzYyBUSUZfU1lTQ0FMTF9BVURJVClcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9UUkFDRVBPSU5UXHQoMSBcdTAwM2NcdTAwM2MgVElGX1NZU0NBTExfVFJBQ0VQT0lOVClcbi0jZGVmaW5lIF9USUZfU0VDQ09NUFx0XHQoMSBcdTAwM2NcdTAwM2MgVElGX1NFQ0NPTVApXG4tI2RlZmluZSBfVElGX1NZU0NBTExfRU1VXHQoMSBcdTAwM2NcdTAwM2MgVElGX1NZU0NBTExfRU1VKVxuICNkZWZpbmUgX1RJRl9QQVRDSF9QRU5ESU5HXHQoMSBcdTAwM2NcdTAwM2MgVElGX1BBVENIX1BFTkRJTkcpXG4gI2RlZmluZSBfVElGX1VQUk9CRVx0XHQoMSBcdTAwM2NcdTAwM2MgVElGX1VQUk9CRSlcbi0jZGVmaW5lIF9USUZfU0lOR0xFU1RFUFx0XHQoMSBcdTAwM2NcdTAwM2MgVElGX1NJTkdMRVNURVApXG4gI2RlZmluZSBfVElGXzMyQklUXHRcdCgxIFx1MDAzY1x1MDAzYyBUSUZfMzJCSVQpXG4gI2RlZmluZSBfVElGX1NWRVx0XHQoMSBcdTAwM2NcdTAwM2MgVElGX1NWRSlcbiAjZGVmaW5lIF9USUZfTVRFX0FTWU5DX0ZBVUxUXHQoMSBcdTAwM2NcdTAwM2MgVElGX01URV9BU1lOQ19GQVVMVClcbiAjZGVmaW5lIF9USUZfTk9USUZZX1NJR05BTFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9OT1RJRllfU0lHTkFMKVxuICNkZWZpbmUgX1RJRl9UU0NfU0lHU0VHVlx0KDEgXHUwMDNjXHUwMDNjIFRJRl9UU0NfU0lHU0VHVilcbiBcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9XT1JLXHQoX1RJRl9TWVNDQUxMX1RSQUNFIHwgX1RJRl9TWVNDQUxMX0FVRElUIHwgXFxcbi1cdFx0XHRcdCBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVCB8IF9USUZfU0VDQ09NUCB8IFxcXG4tXHRcdFx0XHQgX1RJRl9TWVNDQUxMX0VNVSlcbi1cbiAjaWZkZWYgQ09ORklHX1NIQURPV19DQUxMX1NUQUNLXG4gI2RlZmluZSBJTklUX1NDU1x0XHRcdFx0XHRcdFx0XFxcbiBcdC5zY3NfYmFzZVx0PSBpbml0X3NoYWRvd19jYWxsX3N0YWNrLFx0XHRcdFxcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYyBiL2FyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmNcbmluZGV4IDI5MzA3NjQyZjRjOTA0Li5jNTM2ODM4MzkxNTUzNiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmNcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmNcbkBAIC0zODUsMTEgKzM4NSwxOSBAQCB2b2lkIHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcbiBcbiBcdGlmICghdGVzdF9hbmRfc2V0X3RpX3RocmVhZF9mbGFnKHRpLCBUSUZfU0lOR0xFU1RFUCkpXG4gXHRcdHNldF9yZWdzX3Nwc3Jfc3ModGFza19wdF9yZWdzKHRhc2spKTtcbitcbitcdC8qXG4rXHQgKiBFbnN1cmUgdGhhdCB0aGUgZ2VuZXJpYyBlbnRyeSBjb2RlIHRyaWdnZXJzIGEgdHJhcCBvbmNlIHN0ZXBwaW5nXG4rXHQgKiBvdXQgb2YgYSBzeXN0ZW0gY2FsbCBwcmlvciB0byBleGVjdXRpbmcgYW55IHVzZXIgaW5zdHJ1Y3Rpb24sXG4rXHQgKiBhcyB0aGUgZ2VuZXJpYyBlbnRyeSBjb2RlIGRvZXMgbm90IG5hdGl2ZWx5IGNoZWNrIGZvciBUSUZfU0lOR0xFU1RFUC5cbitcdCAqL1xuK1x0c2V0X3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfRVhJVF9UUkFQKTtcbiB9XG4gTk9LUFJPQkVfU1lNQk9MKHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKTtcbiBcbiB2b2lkIHVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXG4ge1xuIFx0Y2xlYXJfdGlfdGhyZWFkX2ZsYWcodGFza190aHJlYWRfaW5mbyh0YXNrKSwgVElGX1NJTkdMRVNURVApO1xuK1x0Y2xlYXJfdGFza19zeXNjYWxsX3dvcmsodGFzaywgU1lTQ0FMTF9FWElUX1RSQVApO1xuIH1cbiBOT0tQUk9CRV9TWU1CT0wodXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwKTtcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uYyBiL2FyY2gvYXJtNjQva2VybmVsL2VudHJ5LWNvbW1vbi5jXG5pbmRleCBjZWI0ZWIxMTIzMmE2MS4uOWVhYzc2ODA0YmQ5YWUgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uY1xuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmNcbkBAIC02LDcgKzYsNyBAQFxuICAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbnRleHRfdHJhY2tpbmcuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lycS1lbnRyeS1jb21tb24uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2VudHJ5LWNvbW1vbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2FzYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbmthZ2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpdmVwYXRjaC5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuY1xuaW5kZXggNTcwOWU5ZDNjMzIxYTUuLjYxYTY2ODY4Mjk0NzE1IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmNcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jXG5AQCAtOCw3ICs4LDYgQEBcbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQVJNIEx0ZC5cbiAgKi9cbiBcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9hdWRpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGF0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NjaGVkL3NpZ25hbC5oXHUwMDNlXG5AQCAtMTgsNyArMTcsNiBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NtcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRyYWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91c2VyLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9zZWNjb21wLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zZWN1cml0eS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2lnbmFsLmhcdTAwM2VcbkBAIC0yOCw3ICsyNiw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaHdfYnJlYWtwb2ludC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVnc2V0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lbGYuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3JzZXEuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9jb21wYXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jcHVmZWF0dXJlLmhcdTAwM2VcbkBAIC0zOCwxMyArMzUsOSBAQFxuICNpbmNsdWRlIFx1MDAzY2FzbS9tdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9wb2ludGVyX2F1dGguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9zdGFja3RyYWNlLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2Nhc20vc3lzY2FsbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3RyYXBzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vc3lzdGVtX21pc2MuaFx1MDAzZVxuIFxuLSNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UU1xuLSNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9zeXNjYWxscy5oXHUwMDNlXG4tXG4gc3RydWN0IHB0X3JlZ3Nfb2Zmc2V0IHtcbiBcdGNvbnN0IGNoYXIgKm5hbWU7XG4gXHRpbnQgb2Zmc2V0O1xuQEAgLTIzMzksMTE0ICsyMzMyLDYgQEAgbG9uZyBhcmNoX3B0cmFjZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCBsb25nIHJlcXVlc3QsXG4gXHRyZXR1cm4gcHRyYWNlX3JlcXVlc3QoY2hpbGQsIHJlcXVlc3QsIGFkZHIsIGRhdGEpO1xuIH1cbiBcbi1lbnVtIHB0cmFjZV9zeXNjYWxsX2RpciB7XG4tXHRQVFJBQ0VfU1lTQ0FMTF9FTlRFUiA9IDAsXG4tXHRQVFJBQ0VfU1lTQ0FMTF9FWElULFxuLX07XG4tXG4tc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIHB0cmFjZV9zYXZlX3JlZyhzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbi1cdFx0XHRcdFx0XHQgICAgIGVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIGRpcixcbi1cdFx0XHRcdFx0XHQgICAgIGludCAqcmVnbm8pXG4te1xuLVx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4tXG4tXHQvKlxuLVx0ICogV2UgaGF2ZSBzb21lIEFCSSB3ZWlyZG5lc3MgaGVyZSBpbiB0aGUgd2F5IHRoYXQgd2UgaGFuZGxlIHN5c2NhbGxcbi1cdCAqIGV4aXQgc3RvcHMgYmVjYXVzZSB3ZSBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGUgc3RvcCBoYXMgYmVlblxuLVx0ICogc2lnbmFsbGVkIGZyb20gc3lzY2FsbCBlbnRyeSBvciBzeXNjYWxsIGV4aXQgYnkgY2xvYmJlcmluZyBhIGdlbmVyYWxcbi1cdCAqIHB1cnBvc2UgcmVnaXN0ZXIgKGlwL3IxMiBmb3IgQUFyY2gzMiwgeDcgZm9yIEFBcmNoNjQpIGluIHRoZSB0cmFjZWVcbi1cdCAqIGFuZCByZXN0b3JpbmcgaXRzIG9sZCB2YWx1ZSBhZnRlciB0aGUgc3RvcC4gVGhpcyBtZWFucyB0aGF0OlxuLVx0ICpcbi1cdCAqIC0gQW55IHdyaXRlcyBieSB0aGUgdHJhY2VyIHRvIHRoaXMgcmVnaXN0ZXIgZHVyaW5nIHRoZSBzdG9wIGFyZVxuLVx0ICogICBpZ25vcmVkL2Rpc2NhcmRlZC5cbi1cdCAqXG4tXHQgKiAtIFRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIHJlZ2lzdGVyIGlzIG5vdCBhdmFpbGFibGUgZHVyaW5nIHRoZSBzdG9wLFxuLVx0ICogICBzbyB0aGUgdHJhY2VyIGNhbm5vdCBzYXZlIGl0IGFuZCByZXN0b3JlIGl0IGxhdGVyLlxuLVx0ICpcbi1cdCAqIC0gU3lzY2FsbCBzdG9wcyBiZWhhdmUgZGlmZmVyZW50bHkgdG8gc2VjY29tcCBhbmQgcHNldWRvLXN0ZXAgdHJhcHNcbi1cdCAqICAgKHRoZSBsYXR0ZXIgZG8gbm90IG5vYmJsZSBhbnkgcmVnaXN0ZXJzKS5cbi1cdCAqL1xuLVx0KnJlZ25vID0gKGlzX2NvbXBhdF90YXNrKCkgPyAxMiA6IDcpO1xuLVx0c2F2ZWRfcmVnID0gcmVncy1cdTAwM2VyZWdzWypyZWdub107XG4tXHRyZWdzLVx1MDAzZXJlZ3NbKnJlZ25vXSA9IGRpcjtcbi1cbi1cdHJldHVybiBzYXZlZF9yZWc7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcmVwb3J0X3N5c2NhbGxfZW50cnkoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4te1xuLVx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4tXHRpbnQgcmVnbm8sIHJldDtcbi1cbi1cdHNhdmVkX3JlZyA9IHB0cmFjZV9zYXZlX3JlZyhyZWdzLCBQVFJBQ0VfU1lTQ0FMTF9FTlRFUiwgXHUwMDI2cmVnbm8pO1xuLVx0cmV0ID0gIXB0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkocmVncyk7XG4tXHRpZiAocmV0KVxuLVx0XHRmb3JnZXRfc3lzY2FsbChyZWdzKTtcbi1cdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4tXG4tXHRyZXR1cm4gcmV0O1xuLX1cbi1cbi1zdGF0aWMgdm9pZCByZXBvcnRfc3lzY2FsbF9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuLXtcbi1cdHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnO1xuLVx0aW50IHJlZ25vO1xuLVxuLVx0c2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VYSVQsIFx1MDAyNnJlZ25vKTtcbi1cdGlmICghdGVzdF90aHJlYWRfZmxhZyhUSUZfU0lOR0xFU1RFUCkpIHtcbi1cdFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMCk7XG4tXHRcdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4tXHR9IGVsc2Uge1xuLVx0XHRyZWdzLVx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xuLVxuLVx0XHQvKlxuLVx0XHQgKiBTaWduYWwgYSBwc2V1ZG8tc3RlcCBleGNlcHRpb24gc2luY2Ugd2UgYXJlIHN0ZXBwaW5nIGJ1dFxuLVx0XHQgKiB0cmFjZXIgbW9kaWZpY2F0aW9ucyB0byB0aGUgcmVnaXN0ZXJzIG1heSBoYXZlIHJld291bmQgdGhlXG4tXHRcdCAqIHN0YXRlIG1hY2hpbmUuXG4tXHRcdCAqL1xuLVx0XHRwdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChyZWdzLCAxKTtcbi1cdH1cbi19XG4tXG4taW50IHN5c2NhbGxfdHJhY2VfZW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4te1xuLVx0dW5zaWduZWQgbG9uZyBmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7XG4tXHRpbnQgcmV0O1xuLVxuLVx0aWYgKGZsYWdzIFx1MDAyNiAoX1RJRl9TWVNDQUxMX0VNVSB8IF9USUZfU1lTQ0FMTF9UUkFDRSkpIHtcbi1cdFx0cmV0ID0gcmVwb3J0X3N5c2NhbGxfZW50cnkocmVncyk7XG4tXHRcdGlmIChyZXQgfHwgKGZsYWdzIFx1MDAyNiBfVElGX1NZU0NBTExfRU1VKSlcbi1cdFx0XHRyZXR1cm4gTk9fU1lTQ0FMTDtcbi1cdH1cbi1cbi1cdC8qIERvIHRoZSBzZWN1cmUgY29tcHV0aW5nIGFmdGVyIHB0cmFjZTsgZmFpbHVyZXMgc2hvdWxkIGJlIGZhc3QuICovXG4tXHRpZiAoIXNlY2NvbXBfcGVybWl0X3N5c2NhbGwoKSlcbi1cdFx0cmV0dXJuIE5PX1NZU0NBTEw7XG4tXG4tXHRpZiAodGVzdF90aHJlYWRfZmxhZyhUSUZfU1lTQ0FMTF9UUkFDRVBPSU5UKSlcbi1cdFx0dHJhY2Vfc3lzX2VudGVyKHJlZ3MsIHJlZ3MtXHUwMDNlc3lzY2FsbG5vKTtcbi1cbi1cdGF1ZGl0X3N5c2NhbGxfZW50cnkocmVncy1cdTAwM2VzeXNjYWxsbm8sIHJlZ3MtXHUwMDNlb3JpZ194MCwgcmVncy1cdTAwM2VyZWdzWzFdLFxuLVx0XHRcdCAgICByZWdzLVx1MDAzZXJlZ3NbMl0sIHJlZ3MtXHUwMDNlcmVnc1szXSk7XG4tXG4tXHRyZXR1cm4gcmVncy1cdTAwM2VzeXNjYWxsbm87XG4tfVxuLVxuLXZvaWQgc3lzY2FsbF90cmFjZV9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuLXtcbi1cdHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSByZWFkX3RocmVhZF9mbGFncygpO1xuLVxuLVx0YXVkaXRfc3lzY2FsbF9leGl0KHJlZ3MpO1xuLVxuLVx0aWYgKGZsYWdzIFx1MDAyNiBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVClcbi1cdFx0dHJhY2Vfc3lzX2V4aXQocmVncywgc3lzY2FsbF9nZXRfcmV0dXJuX3ZhbHVlKGN1cnJlbnQsIHJlZ3MpKTtcbi1cbi1cdGlmIChmbGFncyBcdTAwMjYgKF9USUZfU1lTQ0FMTF9UUkFDRSB8IF9USUZfU0lOR0xFU1RFUCkpXG4tXHRcdHJlcG9ydF9zeXNjYWxsX2V4aXQocmVncyk7XG4tXG4tXHRyc2VxX3N5c2NhbGwocmVncyk7XG4tfVxuLVxuIC8qXG4gICogU1BTUl9FTHggYml0cyB3aGljaCBhcmUgYWx3YXlzIGFyY2hpdGVjdHVyYWxseSBSRVMwIHBlciBBUk0gRERJIDA0ODdELmEuXG4gICogV2UgcGVybWl0IHVzZXJzcGFjZSB0byBzZXQgU1NCUyAoQUFyY2g2NCBiaXQgMTIsIEFBcmNoMzIgYml0IDIzKSB3aGljaCBpc1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmNcbmluZGV4IDM4ZTZmYTIwNGMxN2I1Li4wOTNlZWJiOWQ3NjRhYyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuY1xuQEAgLTgsOCArOCw4IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY2FjaGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBhdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZW50cnktY29tbW9uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zaWduYWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZyZWV6ZXIuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3N5c2NhbGwuYyBiL2FyY2gvYXJtNjQva2VybmVsL3N5c2NhbGwuY1xuaW5kZXggMzU4ZGRmYmYxNDAxYWMuLjI1MzVjYWU5NDEzZDhhIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmNcbkBAIC0yLDYgKzIsNyBAQFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jb250ZXh0X3RyYWNraW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9lbnRyeS1jb21tb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ub3NwZWMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cmFjZS5oXHUwMDNlXG5AQCAtNTQsMTUgKzU1LDExIEBAIHN0YXRpYyB2b2lkIGludm9rZV9zeXNjYWxsKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBpbnQgc2NubyxcbiBcdHN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAwLCByZXQpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGJvb2wgaGFzX3N5c2NhbGxfd29yayh1bnNpZ25lZCBsb25nIGZsYWdzKVxuLXtcbi1cdHJldHVybiB1bmxpa2VseShmbGFncyBcdTAwMjYgX1RJRl9TWVNDQUxMX1dPUkspO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBlbDBfc3ZjX2NvbW1vbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IHNjbm8sIGludCBzY19ucixcbi1cdFx0XHQgICBjb25zdCBzeXNjYWxsX2ZuX3Qgc3lzY2FsbF90YWJsZVtdKVxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBlbDBfc3ZjX2NvbW1vbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IHNjbm8sIGludCBzY19ucixcbitcdFx0XHRcdFx0ICAgY29uc3Qgc3lzY2FsbF9mbl90IHN5c2NhbGxfdGFibGVbXSlcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gcmVhZF90aHJlYWRfZmxhZ3MoKTtcbitcdHVuc2lnbmVkIGxvbmcgd29yaztcbiBcbiBcdHJlZ3MtXHUwMDNlb3JpZ194MCA9IHJlZ3MtXHUwMDNlcmVnc1swXTtcbiBcdHJlZ3MtXHUwMDNlc3lzY2FsbG5vID0gc2NubztcbkBAIC05NSw3ICs5Miw4IEBAIHN0YXRpYyB2b2lkIGVsMF9zdmNfY29tbW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgc2NubywgaW50IHNjX25yLFxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAoaGFzX3N5c2NhbGxfd29yayhmbGFncykpIHtcbitcdHdvcmsgPSBSRUFEX09OQ0UoY3VycmVudF90aHJlYWRfaW5mbygpLVx1MDAzZXN5c2NhbGxfd29yayk7XG4rXHRpZiAodW5saWtlbHkod29yayBcdTAwMjYgU1lTQ0FMTF9XT1JLX0VOVEVSKSkge1xuIFx0XHQvKlxuIFx0XHQgKiBUaGUgZGUtZmFjdG8gc3RhbmRhcmQgd2F5IHRvIHNraXAgYSBzeXN0ZW0gY2FsbCB1c2luZyBwdHJhY2VcbiBcdFx0ICogaXMgdG8gc2V0IHRoZSBzeXN0ZW0gY2FsbCB0byAtMSAoTk9fU1lTQ0FMTCkgYW5kIHNldCB4MCB0byBhXG5AQCAtMTEzLDI2ICsxMTEsMTggQEAgc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsXG4gXHRcdCAqL1xuIFx0XHRpZiAoc2NubyA9PSBOT19TWVNDQUxMKVxuIFx0XHRcdHN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAtRU5PU1lTLCAwKTtcbi1cdFx0c2NubyA9IHN5c2NhbGxfdHJhY2VfZW50ZXIocmVncyk7XG4rXHRcdGlmICghc3lzY2FsbF90cmFjZV9lbnRlcihyZWdzLCB3b3JrLCBzY25vKSlcbitcdFx0XHRnb3RvIHRyYWNlX2V4aXQ7XG4rXG4rXHRcdC8qIFJlcmVhZCB0aGUgc3lzY2FsbCBudW1iZXIgYXMgaXQgbWlnaHQgaGF2ZSBiZWVuIG1vZGlmaWVkICovXG4rXHRcdHNjbm8gPSBzeXNjYWxsX2dldF9ucihjdXJyZW50LCByZWdzKTtcbiBcdFx0aWYgKHNjbm8gPT0gTk9fU1lTQ0FMTClcbiBcdFx0XHRnb3RvIHRyYWNlX2V4aXQ7XG4gXHR9XG4gXG4gXHRpbnZva2Vfc3lzY2FsbChyZWdzLCBzY25vLCBzY19uciwgc3lzY2FsbF90YWJsZSk7XG4tXG4tXHQvKlxuLVx0ICogVGhlIHRyYWNpbmcgc3RhdHVzIG1heSBoYXZlIGNoYW5nZWQgdW5kZXIgb3VyIGZlZXQsIHNvIHdlIGhhdmUgdG9cbi1cdCAqIGNoZWNrIGFnYWluLiBIb3dldmVyLCBpZiB3ZSB3ZXJlIHRyYWNpbmcgZW50cnksIHRoZW4gd2UgYWx3YXlzIHRyYWNlXG4tXHQgKiBleGl0IHJlZ2FyZGxlc3MsIGFzIHRoZSBvbGQgZW50cnkgYXNzZW1ibHkgZGlkLlxuLVx0ICovXG4tXHRpZiAoIWhhc19zeXNjYWxsX3dvcmsoZmxhZ3MpIFx1MDAyNlx1MDAyNiAhSVNfRU5BQkxFRChDT05GSUdfREVCVUdfUlNFUSkpIHtcbi1cdFx0ZmxhZ3MgPSByZWFkX3RocmVhZF9mbGFncygpO1xuLVx0XHRpZiAoIWhhc19zeXNjYWxsX3dvcmsoZmxhZ3MpIFx1MDAyNlx1MDAyNiAhKGZsYWdzIFx1MDAyNiBfVElGX1NJTkdMRVNURVApKVxuLVx0XHRcdHJldHVybjtcbi1cdH1cbi1cbiB0cmFjZV9leGl0OlxuLVx0c3lzY2FsbF90cmFjZV9leGl0KHJlZ3MpO1xuK1x0c3lzY2FsbF9leGl0X3RvX3VzZXJfbW9kZV93b3JrKHJlZ3MpO1xuIH1cbiBcbiB2b2lkIGRvX2VsMF9zdmMoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jIGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jXG5pbmRleCA1OTJkZDg2NjhkZTQ2My4uMzdjZGM3YzcyZTE1YzMgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmNcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28uY1xuQEAgLTM0MywzICszNDMsMTkgQEAgaW50IGFyY2hfc2V0dXBfYWRkaXRpb25hbF9wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBpbnQgdXNlc19pbnRlcnApXG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbitcbitib29sIGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybihzdHJ1Y3QgcHRfcmVncyAqcmVncylcbit7XG4rXHR1bnNpZ25lZCBsb25nIGxhbmRpbmdfcGFkO1xuK1xuKyNpZmRlZiBDT05GSUdfQ09NUEFUXG4rXHRpZiAoaXNfY29tcGF0X3Rhc2soKSkge1xuK1x0XHR1bnNpZ25lZCBsb25nIHNpZ3BhZ2UgPSAodW5zaWduZWQgbG9uZyljdXJyZW50LVx1MDAzZW1tLVx1MDAzZWNvbnRleHQuc2lncGFnZTtcbitcbitcdFx0cmV0dXJuIHJlZ3MtXHUwMDNlcGMgXHUwMDNlPSBzaWdwYWdlIFx1MDAyNlx1MDAyNiByZWdzLVx1MDAzZXBjIFx1MDAzYyAoc2lncGFnZSArIFBBR0VfU0laRSk7XG4rXHR9XG4rI2VuZGlmXG4rXHRsYW5kaW5nX3BhZCA9ICh1bnNpZ25lZCBsb25nKVZEU09fU1lNQk9MKGN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlY29udGV4dC52ZHNvLCBzaWdyZXR1cm5fbGFuZGluZ19wYWQpO1xuK1xuK1x0cmV0dXJuIHJlZ3MtXHUwMDNlcGMgPT0gbGFuZGluZ19wYWQ7XG4rfVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlMgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TXG5pbmRleCAwZTE4NzI5YWJjM2I3OC4uOGQyZDQxM2ZmNDVlOGIgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TXG5AQCAtNzMsNiArNzMsNyBAQCBTWU1fQ09ERV9TVEFSVChfX2tlcm5lbF9ydF9zaWdyZXR1cm4pXG4gXHRtb3ZcdHg4LCAjX19OUl9ydF9zaWdyZXR1cm5cbiAvL1x0UExFQVNFIERPIE5PVCBNT0RJRllcbiBcdHN2Y1x0IzBcbitcdFNZTV9JTk5FUl9MQUJFTChfX3NpZ3JldHVybl9sYW5kaW5nX3BhZCwgU1lNX0xfR0xPQkFMKVxuIC8vXHRQTEVBU0UgRE8gTk9UIE1PRElGWVxuIC8vXHQuY2ZpX2VuZHByb2NcbiBTWU1fQ09ERV9FTkQoX19rZXJuZWxfcnRfc2lncmV0dXJuKVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuUyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuU1xuaW5kZXggNTIzMTRiZTI5MTkxMjEuLmRhNjFkNmZjNmZlOWYzIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlNcbkBAIC0xMTIsMyArMTEyLDQgQEAgVkVSU0lPTlxuICAqIE1ha2UgdGhlIHNpZ3JldHVybiBjb2RlIHZpc2libGUgdG8gdGhlIGtlcm5lbC5cbiAgKi9cbiBWRFNPX3NpZ3RyYW1wXHRcdD0gX19rZXJuZWxfcnRfc2lncmV0dXJuO1xuK1ZEU09fc2lncmV0dXJuX2xhbmRpbmdfcGFkXHQ9IF9fc2lncmV0dXJuX2xhbmRpbmdfcGFkO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjI6MTA6MzguMDk4OTY3NDcxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI1OTE0NTgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaDogYXJtNjQgU3lzY2FsbCBFbnRyeSBDaGFuZ2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGZ1bmRhbWVudGFsbHkgYWx0ZXJzIHRoZSBhcm02NCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSBob3cgc3lzdGVtIGNhbGxzIGFyZSBoYW5kbGVkLiBUaGUgcGF0Y2ggaXMgZW5hYmxpbmcgYEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIYCBhbmQgYEdFTkVSSUNfRU5UUllgLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IHNoaWZ0IGluIGhvdyB0aGUga2VybmVsIGludGVyYWN0cyB3aXRoIHVzZXItc3BhY2UgYXBwbGljYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZXkgYXJlIG1vdmluZyBhd2F5IGZyb20gdGhlIG1vcmUgc3BlY2lmaWMgYEdFTkVSSUNfSVJRX0VOVFJZYCBpbiBmYXZvciBvZiB0aGlzIGBHRU5FUklDX0VOVFJZYCBhcHByb2FjaC4gVGhpcyBwYXRjaCB0b3VjaGVzIGEgdmFzdCBudW1iZXIgb2YgZmlsZXMsIGluZGljYXRpbmcgaXRzIGJyb2FkIGltcGFjdC4gSSBjYW4gc2VlIGNoYW5nZXMgYWNyb3NzIGluY2x1ZGUgZmlsZXMsIHRoZSBLY29uZmlnLCBhbmQgdGhlIGNvcmUga2VybmVsIGNvbXBvbmVudHMuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gY2VudGVyIGFyb3VuZCBgYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jYCwgcGFydGljdWxhcmx5IHRoZSBgZWwwX3N2Y19jb21tb25gIGZ1bmN0aW9uIOKAkyB0aGUgc3lzY2FsbCBlbnRyeSBwb2ludCDigJMgYW5kIHRoZSBgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuYCBmdW5jdGlvbi4gSSBzZWUgdGhleSBoYXZlIGltcGxlbWVudGVkIHRoaXMgbmV3IGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gLiBUaGlzIGhhcyB0byBiZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIChzeXNjYWxsIGVudHJ5L2V4aXQpLlxuXG5UaGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIGZsYWdnaW5nIHRoaXMgZm9yIHNlcmlvdXMgZnV6emluZy4gVGhlIHN5c2NhbGwgZW50cnkvZXhpdCBwYXRoIGlzIGEgY3JpdGljYWwgc2VjdXJpdHktc2Vuc2l0aXZlIGFyZWEuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyByb2J1c3QuXG5cbkxldCdzIHNlZS4gVGhpcyBgZWwwX3N2Y19jb21tb25gIGZ1bmN0aW9uLiBJdCdzIHRoZSBwcmltYXJ5IHN5c2NhbGwgZW50cnkgcG9pbnQsIHdoaWNoIG1lYW5zIGl0J3MgZGVmaW5pdGVseSBhIGhvdC1wYXRoIGZ1bmN0aW9uLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YXJucyBhYm91dCBob3QtcGF0aCBmdW5jdGlvbnMuIGBlbDBfc3ZjX2NvbW1vbmAgaXMgdGhlIG1vc3QgaW1wb3J0YW50IG9uZSB0aGF0IHdhcyBjaGFuZ2VkLiBIbW0sIHBlcmhhcHMgSSBzaG91bGRuJ3QgbGlzdCBpdCBkaXJlY3RseSBiZWNhdXNlIGl0J3Mgc28gaG90LiBXZSBkb24ndCB3YW50IHRvIGdldCBkaXN0cmFjdGVkIHdpdGggbm9pc2UgaW4gdGhlIGNhbGxncmFwaC5cblxuU28sIGxldCdzIHpvb20gaW4gb24gYGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybmAuIFRoaXMgbGlrZWx5IGdldHMgY2FsbGVkIGR1cmluZyBzeXNjYWxsIHVzZXIgZGlzcGF0Y2ggdG8gZGV0ZXJtaW5lIGlmIGl0J3MgYSBgdmRzb2Agc2lncmV0dXJuLiBMZXQncyBjaGVjayBgS2NvbmZpZ2AgZm9yIGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Nzc1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjI6MTA6NDYuMzU4MTE1NjU4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzQwNTQzMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1lTQ0FMTF9VU0VSX0RJU1BBVENIXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY2FsbC11c2VyLWRpc3BhdGNoLnJzdD01Mj1mb2xsb3dpbmcgcHJjdGw6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjYWxsLXVzZXItZGlzcGF0Y2gucnN0LTUzLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY2FsbC11c2VyLWRpc3BhdGNoLnJzdDo1NDogIHByY3RsKFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0gsIFxcdTAwM2NvcFxcdTAwM2UsIFxcdTAwM2NvZmZzZXRcXHUwMDNlLCBcXHUwMDNjbGVuZ3RoXFx1MDAzZSwgW3NlbGVjdG9yXSlcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2NhbGwtdXNlci1kaXNwYXRjaC5yc3QtNTUtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2NhbGwtdXNlci1kaXNwYXRjaC5yc3Q9ODE9QWRkaXRpb25hbGx5LCBhIHRhc2tzIHN5c2NhbGwgdXNlciBkaXNwYXRjaCBjb25maWd1cmF0aW9uIGNhbiBiZSBwZWVrZWRcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2NhbGwtdXNlci1kaXNwYXRjaC5yc3Q6ODI6YW5kIHBva2VkIHZpYSB0aGUgUFRSQUNFXyhHRVR8U0VUKV9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHIHB0cmFjZVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY2FsbC11c2VyLWRpc3BhdGNoLnJzdC04My1yZXF1ZXN0cy4gVGhpcyBpcyB1c2VmdWwgZm9yIGNoZWNrcG9pbnQvcmVzdGFydCBzb2Z0d2FyZS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL2tlcm5lbC5yc3Q9MTQwOD1Db250cm9scyB3aGV0aGVyIHVzZXJzcGFjZSBtYXkgYXJtIFN5c2NhbGwgVXNlciBEaXNwYXRjaCB2aWFcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0OjE0MDk6YGBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCAuLi4pYGAgb3IgdGhlXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwva2VybmVsLnJzdDoxNDEwOmBgUFRSQUNFX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHYGAgcHRyYWNlIHJlcXVlc3Q6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwva2VybmVsLnJzdC0xNDExLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwva2VybmVsLnJzdC0xNDE3LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL2tlcm5lbC5yc3Q6MTQxODpPbmx5IHByZXNlbnQgd2hlbiB0aGUga2VybmVsIGlzIGJ1aWx0IHdpdGggYGBDT05GSUdfU1lTQ0FMTF9VU0VSX0RJU1BBVENIYGBcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0LTE0MTktYW5kIGBgQ09ORklHX1BST0NfU1lTQ1RMYGAuXFxuLS1cXG5hcmNoL0tjb25maWc9MTEyPWNvbmZpZyBHRU5FUklDX0VOVFJZXFxuLS1cXG5hcmNoL0tjb25maWctMTE2LVxcbmFyY2gvS2NvbmZpZzoxMTc6Y29uZmlnIEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXFxuYXJjaC9LY29uZmlnLTExOC1cXHRib29sXFxuYXJjaC9LY29uZmlnLTExOS1cXG5hcmNoL0tjb25maWc6MTIwOmNvbmZpZyBTWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG5hcmNoL0tjb25maWctMTIxLVxcdGJvb2wgXFxcIlN5c2NhbGwgVXNlciBEaXNwYXRjaFxcXCJcXG5hcmNoL0tjb25maWc6MTIyOlxcdGRlcGVuZHMgb24gQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG5hcmNoL0tjb25maWctMTIzLVxcdGRlcGVuZHMgb24gR0VORVJJQ19FTlRSWVxcbi0tXFxuYXJjaC9hcm02NC9LY29uZmlnPTI9Y29uZmlnIEFSTTY0XFxuLS1cXG5hcmNoL2FybTY0L0tjb25maWctODktXFx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU0NIRURfTUNcXG5hcmNoL2FybTY0L0tjb25maWc6OTA6XFx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXFxuYXJjaC9hcm02NC9LY29uZmlnLTkxLVxcdHNlbGVjdCBBUkNIX1dBTlRfQkFUQ0hFRF9VTk1BUF9UTEJfRkxVU0hcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NTg9Y29uZmlnIFg4Nlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0zMzgtXFx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU0NIRURfTUNcXHRcXHRpZiBTTVBcXG5hcmNoL3g4Ni9LY29uZmlnOjMzOTpcXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG5hcmNoL3g4Ni9LY29uZmlnLTM0MC1cXHRzZWxlY3QgSEFWRV9TSU5HTEVfRlRSQUNFX0RJUkVDVF9PUFNcXHRpZiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG4tLVxcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtMjktXFx0XFx0XFx0XFx0IFNZU0NBTExfV09SS19TWVNDQUxMX0FVRElUIHxcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaDozMDpcXHRcXHRcXHRcXHQgU1lTQ0FMTF9XT1JLX1NZU0NBTExfVVNFUl9ESVNQQVRDSCB8XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtMzEtXFx0XFx0XFx0XFx0IFNZU0NBTExfV09SS19TWVNDQUxMX1JTRVFfU0xJQ0UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTM3LVxcdFxcdFxcdFxcdCBTWVNDQUxMX1dPUktfU1lTQ0FMTF9BVURJVCB8XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmg6Mzg6XFx0XFx0XFx0XFx0IFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0ggfFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTM5LVxcdFxcdFxcdFxcdCBTWVNDQUxMX1dPUktfU1lTQ0FMTF9FWElUX1RSQVApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oPTY1PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgbG9uZyBzeXNjYWxsX3RyYWNlX2VudGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHdvcmssXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTcyLVxcdCAqL1xcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmg6NzM6XFx0aWYgKHdvcmsgXFx1MDAyNiBTWVNDQUxMX1dPUktfU1lTQ0FMTF9VU0VSX0RJU1BBVENIKSB7XFxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaC03NC1cXHRcXHRpZiAoc3lzY2FsbF91c2VyX2Rpc3BhdGNoKHJlZ3MpKVxcbi0tXFxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaD0yNDQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHN5c2NhbGxfZXhpdF93b3JrKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHdvcmspXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTI1My1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oOjI1NDpcXHRpZiAod29yayBcXHUwMDI2IFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0gpIHtcXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTI1NS1cXHRcXHRpZiAoc3lzY2FsbF91c2VyX2Rpc3BhdGNoX2NsZWFyX29uX2Rpc3BhdGNoKCkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTQtICovXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaDo1OiNpZm5kZWYgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9IXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaDo2OiNkZWZpbmUgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9IXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaC03LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaD0xMj1zdHJ1Y3QgcHRfcmVncztcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTEzLVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6MTQ6I2lmZGVmIENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTE1LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaD0yNz1pbnQgc2V0X3N5c2NhbGxfdXNlcl9kaXNwYXRjaCh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaC0zMC0jZGVmaW5lIGNsZWFyX3N5c2NhbGxfd29ya19zeXNjYWxsX3VzZXJfZGlzcGF0Y2godHNrKSBcXFxcXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaDozMTpcXHRjbGVhcl90YXNrX3N5c2NhbGxfd29yayh0c2ssIFNZU0NBTExfVVNFUl9ESVNQQVRDSClcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTMyLVxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaD02Nz1zdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX3VzZXJfZGlzcGF0Y2hfc2V0X2NvbmZpZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTcyLVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6NzM6I2VuZGlmIC8qIENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0ggKi9cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTc0LVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6NzU6I2VuZGlmIC8qIF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfSCAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaDoyOiNpZm5kZWYgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9UWVBFU19IXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaDozOiNkZWZpbmUgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9UWVBFU19IXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaC00LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaC02LVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmg6NzojaWZkZWYgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmgtOC1cXG4tLVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmg9MTg9c3RydWN0IHN5c2NhbGxfdXNlcl9kaXNwYXRjaCB7fTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmgtMjEtXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaDoyMjojZW5kaWYgLyogX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9UWVBFU19IICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmg9NDE9ZW51bSBzeXNjYWxsX3dvcmtfYml0IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaC00Ni1cXHRTWVNDQUxMX1dPUktfQklUX1NZU0NBTExfQVVESVQsXFxuaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oOjQ3OlxcdFNZU0NBTExfV09SS19CSVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILFxcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaC00OC1cXHRTWVNDQUxMX1dPUktfQklUX1NZU0NBTExfRVhJVF9UUkFQLFxcbi0tXFxuaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oLTU2LSNkZWZpbmUgU1lTQ0FMTF9XT1JLX1NZU0NBTExfQVVESVRcXHRcXHRCSVQoU1lTQ0FMTF9XT1JLX0JJVF9TWVNDQUxMX0FVRElUKVxcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaDo1NzojZGVmaW5lIFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXHRCSVQoU1lTQ0FMTF9XT1JLX0JJVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0gpXFxuaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oLTU4LSNkZWZpbmUgU1lTQ0FMTF9XT1JLX1NZU0NBTExfRVhJVF9UUkFQXFx0XFx0QklUKFNZU0NBTExfV09SS19CSVRfU1lTQ0FMTF9FWElUX1RSQVApXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaD0xMzQ9c3RydWN0IHByY3RsX21tX21hcCB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaC0yNjctLyogRGlzcGF0Y2ggc3lzY2FsbHMgdG8gYSB1c2Vyc3BhY2UgaGFuZGxlciAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oOjI2ODojZGVmaW5lIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXHQ1OVxcbmluY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oLTI2OS0jIGRlZmluZSBQUl9TWVNfRElTUEFUQ0hfT0ZGXFx0XFx0MFxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cmFjZS5oPTExMD1zdHJ1Y3QgcHRyYWNlX3JzZXFfY29uZmlndXJhdGlvbiB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvcHRyYWNlLmgtMTE3LVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHJhY2UuaDoxMTg6I2RlZmluZSBQVFJBQ0VfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9DT05GSUcgMHg0MjEwXFxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cmFjZS5oOjExOTojZGVmaW5lIFBUUkFDRV9HRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRyAweDQyMTFcXG5pbmNsdWRlL3VhcGkvbGludXgvcHRyYWNlLmgtMTIwLVxcbi0tXFxua2VybmVsL2VudHJ5L01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19HRU5FUklDX1NZU0NBTEwpIFxcdFxcdCs9IHN5c2NhbGwtY29tbW9uLm9cXG5rZXJuZWwvZW50cnkvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSClcXHQrPSBzeXNjYWxsX3VzZXJfZGlzcGF0Y2gub1xcbmtlcm5lbC9lbnRyeS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVklSVF9YRkVSX1RPX0dVRVNUX1dPUkspXFx0Kz0gdmlydC5vXFxuLS1cXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM9NzM9c3RhdGljIGludCB0YXNrX3NldF9zeXNjYWxsX3VzZXJfZGlzcGF0Y2goc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCB1bnNpZ25lZCBsb25nIG1vZGUsXFxuLS1cXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmMtMTI4LVxcdGlmIChtb2RlICE9IFBSX1NZU19ESVNQQVRDSF9PRkYpXFxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jOjEyOTpcXHRcXHRzZXRfdGFza19zeXNjYWxsX3dvcmsodGFzaywgU1lTQ0FMTF9VU0VSX0RJU1BBVENIKTtcXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmMtMTMwLVxcdGVsc2VcXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM6MTMxOlxcdFxcdGNsZWFyX3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfVVNFUl9ESVNQQVRDSCk7XFxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jLTEzMi1cXG4tLVxcbmtlcm5lbC9lbnRyeS9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guYz0xNDI9aW50IHN5c2NhbGxfdXNlcl9kaXNwYXRjaF9nZXRfY29uZmlnKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgdW5zaWduZWQgbG9uZyBzaXplLFxcbi0tXFxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jLTE1MC1cXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM6MTUxOlxcdGlmICh0ZXN0X3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfVVNFUl9ESVNQQVRDSCkpXFxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jLTE1Mi1cXHRcXHRjZmcubW9kZSA9IFBSX1NZU19ESVNQQVRDSF9PTjtcXG4tLVxcbmtlcm5lbC9wdHJhY2UuYz0xMTYyPWludCBwdHJhY2VfcmVxdWVzdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCBsb25nIHJlcXVlc3QsXFxuLS1cXG5rZXJuZWwvcHRyYWNlLmMtMTM5Ny1cXG5rZXJuZWwvcHRyYWNlLmM6MTM5ODpcXHRjYXNlIFBUUkFDRV9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRzpcXG5rZXJuZWwvcHRyYWNlLmMtMTM5OS1cXHRcXHRyZXQgPSBzeXNjYWxsX3VzZXJfZGlzcGF0Y2hfc2V0X2NvbmZpZyhjaGlsZCwgYWRkciwgZGF0YXZwKTtcXG4tLVxcbmtlcm5lbC9wdHJhY2UuYy0xNDAxLVxcbmtlcm5lbC9wdHJhY2UuYzoxNDAyOlxcdGNhc2UgUFRSQUNFX0dFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHOlxcbmtlcm5lbC9wdHJhY2UuYy0xNDAzLVxcdFxcdHJldCA9IHN5c2NhbGxfdXNlcl9kaXNwYXRjaF9nZXRfY29uZmlnKGNoaWxkLCBhZGRyLCBkYXRhdnApO1xcbi0tXFxua2VybmVsL3N5cy5jPTI1MzQ9U1lTQ0FMTF9ERUZJTkU1KHByY3RsLCBpbnQsIG9wdGlvbiwgdW5zaWduZWQgbG9uZywgYXJnMiwgdW5zaWduZWQgbG9uZywgYXJnMyxcXG4tLVxcbmtlcm5lbC9zeXMuYy0yODAxLVxcdFxcdGJyZWFrO1xcbmtlcm5lbC9zeXMuYzoyODAyOlxcdGNhc2UgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSDpcXG5rZXJuZWwvc3lzLmMtMjgwMy1cXHRcXHRlcnJvciA9IHNldF9zeXNjYWxsX3VzZXJfZGlzcGF0Y2goYXJnMiwgYXJnMywgYXJnNCxcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oPTEzND1zdHJ1Y3QgcHJjdGxfbW1fbWFwIHtcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oLTI1NS0vKiBEaXNwYXRjaCBzeXNjYWxscyB0byBhIHVzZXJzcGFjZSBoYW5kbGVyICovXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmg6MjU2OiNkZWZpbmUgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcdDU5XFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmgtMjU3LSMgZGVmaW5lIFBSX1NZU19ESVNQQVRDSF9PRkZcXHRcXHQwXFxuLS1cXG50b29scy9wZXJmL3RyYWNlL2JlYXV0eS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaD0xMzQ9c3RydWN0IHByY3RsX21tX21hcCB7XFxuLS1cXG50b29scy9wZXJmL3RyYWNlL2JlYXV0eS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaC0yNjctLyogRGlzcGF0Y2ggc3lzY2FsbHMgdG8gYSB1c2Vyc3BhY2UgaGFuZGxlciAqL1xcbnRvb2xzL3BlcmYvdHJhY2UvYmVhdXR5L2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oOjI2ODojZGVmaW5lIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXHQ1OVxcbnRvb2xzL3BlcmYvdHJhY2UvYmVhdXR5L2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oLTI2OS0jIGRlZmluZSBQUl9TWVNfRElTUEFUQ0hfT0ZGXFx0XFx0MFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmM9MTg9VEVTVChnZXRfc2V0X3N1ZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jLTM5LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jOjQwOlxcdHJldCA9IHN5c19wdHJhY2UoUFRSQUNFX0dFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHLCBjaGlsZCxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYy00MS1cXHRcXHRcXHQgKHZvaWQgKilzaXplb2YoY29uZmlnKSwgXFx1MDAyNmNvbmZpZyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYy01My1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYzo1NDpcXHRyZXQgPSBzeXNfcHRyYWNlKFBUUkFDRV9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRywgY2hpbGQsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmMtNTUtXFx0XFx0XFx0ICh2b2lkICopc2l6ZW9mKGNvbmZpZyksIFxcdTAwMjZjb25maWcpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmMtNTktXFx0bWVtc2V0KFxcdTAwMjZjb25maWcsIDEsIHNpemVvZihjb25maWcpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYzo2MDpcXHRyZXQgPSBzeXNfcHRyYWNlKFBUUkFDRV9HRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRywgY2hpbGQsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmMtNjEtXFx0XFx0XFx0ICh2b2lkICopc2l6ZW9mKGNvbmZpZyksIFxcdTAwMjZjb25maWcpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL2NvbmZpZzoxOkNPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0g9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYy0yMC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX2JlbmNobWFyay5jOjIxOiNpZm5kZWYgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmM6MjI6IyBkZWZpbmUgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcdDU5XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYy0yMy0jIGRlZmluZSBQUl9TWVNfRElTUEFUQ0hfT0ZGXFx0MFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYz0xMzY9aW50IG1haW4odm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmMtMTYyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmM6MTYzOlxcdGlmIChwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfT04sXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYy0xNjQtXFx0XFx0ICBzeXNjYWxsX2Rpc3BhdGNoZXJfc3RhcnQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0xOC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzoxOTojaWZuZGVmIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzoyMDojIGRlZmluZSBQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXFx0NTlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yMS0jIGRlZmluZSBQUl9TWVNfRElTUEFUQ0hfT0ZGXFx0MFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtNDUtICpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzo0NjogKiAtIGRpc3BhdGNoX3RyaWdnZXJfc2lnc3lzOiBWZXJpZnkgaWYgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCBpc1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTQ3LSAqICAgYWJsZSB0byB0cmlnZ2VyIFNJR1NZUyBvbiBhIHN5c2NhbGwuXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYz02NT1URVNUX1NJR05BTChkaXNwYXRjaF90cmlnZ2VyX3NpZ3N5cywgU0lHU1lTKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtNzMtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6NzQ6XFx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX0VYQ0xVU0lWRV9PTiwgMCwgMCwgXFx1MDAyNnNlbCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtNzUtXFx0QVNTRVJUX0VRKDAsIHJldCkge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjc2OlxcdFxcdFRIX0xPRyhcXFwiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTc3LVxcdH1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jPTg4PXN0YXRpYyB2b2lkIHByY3RsX3ZhbGlkKHN0cnVjdCBfX3Rlc3RfbWV0YWRhdGEgKl9tZXRhZGF0YSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTkxLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzo5MjpcXHRFWFBFQ1RfRVEoMCwgcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgb3AsIG9mZiwgc2l6ZSwgc2VsKSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtOTMtfVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9OTU9c3RhdGljIHZvaWQgcHJjdGxfaW52YWxpZChzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy05OC17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6OTk6XFx0RVhQRUNUX0VRKC0xLCBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBvcCwgb2ZmLCBzaXplLCBzZWwpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0xMDAtXFx0RVhQRUNUX0VRKGVyciwgZXJybm8pO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MjEwPVRFU1QoZGlzcGF0Y2hfYW5kX3JldHVybilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTIyMy1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzoyMjQ6XFx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX0VYQ0xVU0lWRV9PTiwgMCwgMCwgXFx1MDAyNmdsb2Jfc2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yMjUtXFx0QVNTRVJUX0VRKDAsIHJldCkge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjIyNjpcXHRcXHRUSF9MT0coXFxcIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yMjctXFx0fVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MjU1PVRFU1RfU0lHTkFMKGJhZF9zZWxlY3RvciwgU0lHU1lTKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMjc5LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjI4MDpcXHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfRVhDTFVTSVZFX09OLCAwLCAwLCBcXHUwMDI2Z2xvYl9zZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTI4MS1cXHRBU1NFUlRfRVEoMCwgcmV0KSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MjgyOlxcdFxcdFRIX0xPRyhcXFwiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTI4My1cXHR9XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYz0yOTg9VEVTVChkaXNhYmxlX2Rpc3BhdGNoKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzAzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjMwNDpcXHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfRVhDTFVTSVZFX09OLCAwLCAwLCBcXHUwMDI2c2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMDUtXFx0QVNTRVJUX0VRKDAsIHJldCkge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjMwNjpcXHRcXHRUSF9MT0coXFxcIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMDctXFx0fVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzExLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjMxMjpcXHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfT0ZGLCAwLCAwLCAwKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMTMtXFx0RVhQRUNUX0VRKDAsIHJldCkge1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MzI2PVRFU1QoZGlyZWN0X2Rpc3BhdGNoX3JhbmdlKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzM1LVxcdCAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjMzNjpcXHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfRVhDTFVTSVZFX09OLCAwLCAtMUwsIFxcdTAwMjZzZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTMzNy1cXHRBU1NFUlRfRVEoMCwgcmV0KSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MzM4OlxcdFxcdFRIX0xPRyhcXFwiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTMzOS1cXHR9XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYz0zNDk9c3RhdGljIHZvaWQgdGVzdF9yYW5nZShzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zNTQtXFx0U1lTQ0FMTF9ESVNQQVRDSF9PRkYoZ2xvYl9zZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjM1NTpcXHRFWFBFQ1RfRVEoMCwgcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgb3AsIG9mZiwgc2l6ZSwgXFx1MDAyNmdsb2Jfc2VsKSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzU2LVxcdFNZU0NBTExfRElTUEFUQ0hfT04oZ2xvYl9zZWwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMjoxMDo0OC4xOTIxNzQ3MDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTg3NTQ5NzE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU3lzY2FsbCBVc2VyIERpc3BhdGNoIFBhdGNoIGZvciBhcm02NCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGVuYWJsaW5nIGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgIG9uIGFybTY0LiAgVGhlIG1haW4gZGVwZW5kZW5jeSBpcyB0aGF0IGBBUkNIX1NVUFBPUlRTX1NZU0NBTExfVVNFUl9ESVNQQVRDSGAgaXMgZW5hYmxlZCwgd2hpY2ggdGhpcyBwYXRjaCBkb2VzLiAgQ3J1Y2lhbGx5LCBpdCBhbHNvIGVuYWJsZXMgYEdFTkVSSUNfRU5UUllgIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgdGhpcyBmZWF0dXJlLiAgQmVjYXVzZSBvZiB0aGlzLCB3ZSAqbXVzdCogZW5zdXJlIHRoYXQgYFNZU0NBTExfVVNFUl9ESVNQQVRDSGAgaXMgZXhwbGljaXRseSBlbmFibGVkLiAgQWxzbywgc2luY2UgYXJtNjQgaXMgbm93IHVzaW5nIGBHRU5FUklDX0VOVFJZYCB0aGUgY29uZmlnIGlzIG5vIGxvbmdlciBuZWVkZWQuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUgY2hhbmdlcywgdGhlIGhlYXJ0IG9mIHRoZSBzeXNjYWxsIGVudHJ5IGlzIGBlbDBfc3ZjX2NvbW1vbmAsIGJ1dCB0aGF0J3MgYSAqaG90IHBhdGgqLCBzbyBpdCdzIHByb2JhYmx5IG5vdCB1c2VmdWwgdG8gZGlyZWN0bHkgZnV6ei4gIFRoZSBwYXRjaCByZXBsYWNlcyB0cmFjaW5nIHdpdGggYHN5c2NhbGxfdHJhY2VfZW50ZXJgIGFuZCBgc3lzY2FsbF9leGl0X3RvX3VzZXJfbW9kZV93b3JrYCwgYW5kIHRoZSBwdHJhY2UgbG9naWMgaGFzIGNoYW5nZWQgdG8gcmVwb3J0IHN5c2NhbGwgZW50cnkgYW5kIGV4aXQuXG5cblRoZSBrZXkgbmV3IGZ1bmN0aW9uIGlzIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gIGluIGBhcmNoL2FybTY0L2tlcm5lbC92ZHNvLmNgLiBUaGlzIGlzIGVzc2VudGlhbCBiZWNhdXNlIGl0IGNoZWNrcyBpZiBhIHN5c2NhbGwgaXMgYSBgc2lncmV0dXJuYCwgd2hpY2ggaXMgaGFuZGxlZCBkaWZmZXJlbnRseSB1bmRlciBzeXNjYWxsIHVzZXIgZGlzcGF0Y2guIFRoaXMgZnVuY3Rpb24gaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbkZ1cnRoZXJtb3JlLCBjaGFuZ2VzIHdlcmUgbWFkZSB0byBgdXNlcl9lbmFibGVfc2luZ2xlX3N0ZXBgIGFuZCBgdXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwYCBpbiBgYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuY2AuICBUaGVzZSBhcmVuJ3QgaG90LXBhdGggZnVuY3Rpb25zLCBidXQgdGhleSdyZSBzdGlsbCByZWxldmFudCB0byBwdHJhY2UgYW5kIHNpbmdsZS1zdGVwcGluZywgc28gdGhleSBzaG91bGQgYmUgdGFyZ2V0ZWQgdG9vLlxuXG5Ob3csIGNvbmNlcm5pbmcgY29uZmlndXJhdGlvbnMsIGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgIGlzIGVzc2VudGlhbC4gV2Ugc2hvdWxkIGFsc28gaW5jbHVkZSBgQ09NUEFUYCBiZWNhdXNlIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gIHVzZXMgaXQuXG5cblNvLCBpbiBjb25jbHVzaW9uLCB0aGUgaW1wb3J0YW50IHRoaW5ncyB0byBsb29rIGF0IGZvciBmdXp6aW5nIGFyZTpcblxuKiAgICoqYGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybmAqKjogIFRoaXMgaXMgdGhlIHNpbmdsZSBtb3N0IGltcG9ydGFudCBmdW5jdGlvbiBhZGRlZCBhbmQgY2VudHJhbCB0byBjb3JyZWN0IGZ1bmN0aW9uYWxpdHkuXG4qICAgKipgdXNlcl9lbmFibGVfc2luZ2xlX3N0ZXBgKio6ICBSZWxldmFudCB0byBwdHJhY2UgYW5kIHNpbmdsZS1zdGVwcGluZyBpbnRlcmFjdGlvbi5cbiogICAqKmB1c2VyX2Rpc2FibGVfc2luZ2xlX3N0ZXBgKio6ICBQYXJ0IG9mIHNpbmdsZSBzdGVwcGluZyBsb2dpYy5cblxuQWxzbyB0aGUgZm9sbG93aW5nIGNvbmZpZ3Mgc2hvdWxkIGJlIGV4cGxpY2l0bHkgZW5hYmxlZDpcblxuKiAgICoqYFNZU0NBTExfVVNFUl9ESVNQQVRDSGAqKjogUmVxdWlyZWQgZm9yIHRoaXMgcGF0Y2gncyBjb3JlIGZ1bmN0aW9uYWxpdHkuXG4qICAgKipgQ09NUEFUYCoqOiB0byB0ZXN0IHRoZSBjb21wYXQgcGF0aCBpbiBgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwMDQsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMjoxMToxMC4wNjc2NzQ4NzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDAyMDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTWVNDQUxMX1VTRVJfRElTUEFUQ0hcIixcbiAgICBcIkNPTVBBVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVyblwiLFxuICAgIFwidXNlcl9lbmFibGVfc2luZ2xlX3N0ZXBcIixcbiAgICBcInVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnZlcnRzIGFybTY0IHRvIHVzZSB0aGUgZ2VuZXJpYyBlbnRyeSBpbmZyYXN0cnVjdHVyZSBhbmQgYWRkcyBzdXBwb3J0IGZvciBTeXNjYWxsIFVzZXIgRGlzcGF0Y2guIFRoaXMgaW52b2x2ZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHN5c2NhbGwgZW50cnkvZXhpdCBwYXRocywgcHRyYWNlIHNpbmdsZS1zdGVwcGluZywgYW5kIFZEU08gc2lncmV0dXJuIGRldGVjdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTWVNDQUxMX1VTRVJfRElTUEFUQ0hcIixcbiAgICBcIkNPTVBBVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVyblwiLFxuICAgIFwidXNlcl9lbmFibGVfc2luZ2xlX3N0ZXBcIixcbiAgICBcInVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnZlcnRzIGFybTY0IHRvIHVzZSB0aGUgZ2VuZXJpYyBlbnRyeSBpbmZyYXN0cnVjdHVyZSBhbmQgYWRkcyBzdXBwb3J0IGZvciBTeXNjYWxsIFVzZXIgRGlzcGF0Y2guIFRoaXMgaW52b2x2ZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHN5c2NhbGwgZW50cnkvZXhpdCBwYXRocywgcHRyYWNlIHNpbmdsZS1zdGVwcGluZywgYW5kIFZEU08gc2lncmV0dXJuIGRldGVjdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkwsbn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-21 21:43:39 +0000 UTC FinishedAt: 2026-07-21 22:11:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3fe08b9796f36ef437ab9328e7dd1e5ff2d66603", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SYSCALL_USER_DISPATCH", "COMPAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3fe08b9796f36ef437ab9328e7dd1e5ff2d66603", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SYSCALL_USER_DISPATCH", "COMPAT" ], "series_id": "0d03e565-a631-4a6c-9fd9-fe3eb176ff38" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "arch_syscall_is_vdso_sigreturn", "user_enable_single_step", "user_disable_single_step" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIyOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NZU0NBTExfVVNFUl9ESVNQQVRDSCYjMzQ7LAogICAgJiMzNDtDT01QQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm4mIzM0OywKICAgICYjMzQ7dXNlcl9lbmFibGVfc2luZ2xlX3N0ZXAmIzM0OywKICAgICYjMzQ7dXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnZlcnRzIGFybTY0IHRvIHVzZSB0aGUgZ2VuZXJpYyBlbnRyeSBpbmZyYXN0cnVjdHVyZSBhbmQgYWRkcyBzdXBwb3J0IGZvciBTeXNjYWxsIFVzZXIgRGlzcGF0Y2guIFRoaXMgaW52b2x2ZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHN5c2NhbGwgZW50cnkvZXhpdCBwYXRocywgcHRyYWNlIHNpbmdsZS1zdGVwcGluZywgYW5kIFZEU08gc2lncmV0dXJuIGRldGVjdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMjoxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYzY2YwNGIxY2RlOTBkOTIwNGM2OTdjNTYyNTI0MTg3YTM5YzJkZjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAyMjoxMDozNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L0tjb25maWcgYi9hcmNoL2FybTY0L0tjb25maWdcbmluZGV4IGZiMTUwMzdiNWUzYzdlLi5lZmVmMDc4NTdkMzg4NCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9LY29uZmlnXG5AQCAtODcsNiAmIzQzOzg3LDcgQEAgY29uZmlnIEFSTTY0XG4gXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9TTVRcbiBcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX0NMVVNURVJcbiBcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX01DXG4mIzQzO1x0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXG4gXHRzZWxlY3QgQVJDSF9XQU5UX0JBVENIRURfVU5NQVBfVExCX0ZMVVNIXG4gXHRzZWxlY3QgQVJDSF9XQU5UX0NPTVBBVF9JUENfUEFSU0VfVkVSU0lPTiBpZiBDT01QQVRcbiBcdHNlbGVjdCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUXG5AQCAtMTI5LDkgJiM0MzsxMzAsOSBAQCBjb25maWcgQVJNNjRcbiBcdHNlbGVjdCBHRU5FUklDX0NQVV9ERVZJQ0VTXG4gXHRzZWxlY3QgR0VORVJJQ19DUFVfVlVMTkVSQUJJTElUSUVTXG4gXHRzZWxlY3QgR0VORVJJQ19FQVJMWV9JT1JFTUFQXG4mIzQzO1x0c2VsZWN0IEdFTkVSSUNfRU5UUllcbiBcdHNlbGVjdCBHRU5FUklDX0lETEVfUE9MTF9TRVRVUFxuIFx0c2VsZWN0IEdFTkVSSUNfSU9SRU1BUFxuLVx0c2VsZWN0IEdFTkVSSUNfSVJRX0VOVFJZXG4gXHRzZWxlY3QgR0VORVJJQ19JUlFfSVBJXG4gXHRzZWxlY3QgR0VORVJJQ19JUlFfS0VYRUNfQ0xFQVJfVk1fRk9SV0FSRFxuIFx0c2VsZWN0IEdFTkVSSUNfSVJRX1BST0JFXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbGYuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbmluZGV4IGQyNzc5ZDYwNGM3YmUyLi5hOGIyMzJjNWM2ZDlmOCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbkBAIC0yOTMsNiAmIzQzOzI5Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGFyY2hfY2hlY2tfZWxmKHZvaWQgKmVoZHIsIGJvb2wgaGFzX2ludGVycCxcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7ZXh0ZXJuIGJvb2wgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbiAjZW5kaWYgLyogIV9fQVNTRU1CTEVSX18gKi9cbiBcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxuaW5kZXggY2FiOGNkNzhmNjkzODUuLjJiMDUzYWNiZTEwZmVhIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxuQEAgLTMsMTQgJiM0MzszLDIxIEBAXG4gI2lmbmRlZiBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9IXG4gI2RlZmluZSBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9IXG4gXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cmFjZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdGhyZWFkX2luZm8uaFx1MDAzZVxuIFxuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vY29tcGF0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY3B1ZmVhdHVyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2RhaWZmbGFncy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2Zwc2ltZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL210ZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3N0YWNrdHJhY2UuaFx1MDAzZVxuIFxuJiM0MztlbnVtIHB0cmFjZV9zeXNjYWxsX2RpciB7XG4mIzQzO1x0UFRSQUNFX1NZU0NBTExfRU5URVIgPSAwLFxuJiM0MztcdFBUUkFDRV9TWVNDQUxMX0VYSVQsXG4mIzQzO307XG4mIzQzO1xuICNkZWZpbmUgQVJDSF9FWElUX1RPX1VTRVJfTU9ERV9XT1JLIChfVElGX01URV9BU1lOQ19GQVVMVCB8IF9USUZfRk9SRUlHTl9GUFNUQVRFKVxuIFxuIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBhcmNoX2V4aXRfdG9fdXNlcl9tb2RlX3dvcmsoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG5AQCAtNTQsNCAmIzQzOzYxLDc0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkKHZvaWQpXG4gXG4gI2RlZmluZSBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkIGFyY2hfaXJxZW50cnlfZXhpdF9uZWVkX3Jlc2NoZWRcbiBcbiYjNDM7c3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIHB0cmFjZV9zYXZlX3JlZyhzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICBlbnVtIHB0cmFjZV9zeXNjYWxsX2RpciBkaXIsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgaW50ICpyZWdubylcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFdlIGhhdmUgc29tZSBBQkkgd2VpcmRuZXNzIGhlcmUgaW4gdGhlIHdheSB0aGF0IHdlIGhhbmRsZSBzeXNjYWxsXG4mIzQzO1x0ICogZXhpdCBzdG9wcyBiZWNhdXNlIHdlIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoZSBzdG9wIGhhcyBiZWVuXG4mIzQzO1x0ICogc2lnbmFsbGVkIGZyb20gc3lzY2FsbCBlbnRyeSBvciBzeXNjYWxsIGV4aXQgYnkgY2xvYmJlcmluZyBhIGdlbmVyYWxcbiYjNDM7XHQgKiBwdXJwb3NlIHJlZ2lzdGVyIChpcC9yMTIgZm9yIEFBcmNoMzIsIHg3IGZvciBBQXJjaDY0KSBpbiB0aGUgdHJhY2VlXG4mIzQzO1x0ICogYW5kIHJlc3RvcmluZyBpdHMgb2xkIHZhbHVlIGFmdGVyIHRoZSBzdG9wLiBUaGlzIG1lYW5zIHRoYXQ6XG4mIzQzO1x0ICpcbiYjNDM7XHQgKiAtIEFueSB3cml0ZXMgYnkgdGhlIHRyYWNlciB0byB0aGlzIHJlZ2lzdGVyIGR1cmluZyB0aGUgc3RvcCBhcmVcbiYjNDM7XHQgKiAgIGlnbm9yZWQvZGlzY2FyZGVkLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogLSBUaGUgYWN0dWFsIHZhbHVlIG9mIHRoZSByZWdpc3RlciBpcyBub3QgYXZhaWxhYmxlIGR1cmluZyB0aGUgc3RvcCxcbiYjNDM7XHQgKiAgIHNvIHRoZSB0cmFjZXIgY2Fubm90IHNhdmUgaXQgYW5kIHJlc3RvcmUgaXQgbGF0ZXIuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiAtIFN5c2NhbGwgc3RvcHMgYmVoYXZlIGRpZmZlcmVudGx5IHRvIHNlY2NvbXAgYW5kIHBzZXVkby1zdGVwIHRyYXBzXG4mIzQzO1x0ICogICAodGhlIGxhdHRlciBkbyBub3Qgbm9iYmxlIGFueSByZWdpc3RlcnMpLlxuJiM0MztcdCAqL1xuJiM0MztcdCpyZWdubyA9IChpc19jb21wYXRfdGFzaygpID8gMTIgOiA3KTtcbiYjNDM7XHRzYXZlZF9yZWcgPSByZWdzLVx1MDAzZXJlZ3NbKnJlZ25vXTtcbiYjNDM7XHRyZWdzLVx1MDAzZXJlZ3NbKnJlZ25vXSA9IGRpcjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHNhdmVkX3JlZztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncylcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnO1xuJiM0MztcdGJvb2wgcGVybWl0O1xuJiM0MztcdGludCByZWdubztcbiYjNDM7XG4mIzQzO1x0c2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VOVEVSLCBcdTAwMjZyZWdubyk7XG4mIzQzO1x0cGVybWl0ID0gcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeShyZWdzKTtcbiYjNDM7XHRpZiAoIXBlcm1pdClcbiYjNDM7XHRcdGZvcmdldF9zeXNjYWxsKHJlZ3MpO1xuJiM0MztcdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4mIzQzO1xuJiM0MztcdHJldHVybiBwZXJtaXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzOyNkZWZpbmUgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfcGVybWl0X2VudHJ5IGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeVxuJiM0MztcbiYjNDM7c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIGludCBzdGVwKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4mIzQzO1x0aW50IHJlZ25vO1xuJiM0MztcbiYjNDM7XHRzYXZlZF9yZWcgPSBwdHJhY2Vfc2F2ZV9yZWcocmVncywgUFRSQUNFX1NZU0NBTExfRVhJVCwgXHUwMDI2cmVnbm8pO1xuJiM0MztcdGlmICghc3RlcCkge1xuJiM0MztcdFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMCk7XG4mIzQzO1x0XHRyZWdzLVx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRyZWdzLVx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xuJiM0MztcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBTaWduYWwgYSBwc2V1ZG8tc3RlcCBleGNlcHRpb24gc2luY2Ugd2UgYXJlIHN0ZXBwaW5nIGJ1dFxuJiM0MztcdFx0ICogdHJhY2VyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlZ2lzdGVycyBtYXkgaGF2ZSByZXdvdW5kIHRoZVxuJiM0MztcdFx0ICogc3RhdGUgbWFjaGluZS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjZGVmaW5lIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdFxuJiM0MztcbiAjZW5kaWYgLyogX0FTTV9BUk02NF9FTlRSWV9DT01NT05fSCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNjYWxsLmhcbmluZGV4IDVlNGM3ZmM0NGY3MzE1Li5lM2U3MTY1NzU4NDY0NiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c2NhbGwuaFxuQEAgLTgsNiAmIzQzOzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY3VhcGkvbGludXgvYXVkaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBhdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcnNlcS5oXHUwMDNlXG4gXG4gdHlwZWRlZiBsb25nICgqc3lzY2FsbF9mbl90KShjb25zdCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG4gXG5AQCAtMTE5LDggJiM0MzsxMjAsNCBAQCBzdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX2dldF9hcmNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcbiBcbiBcdHJldHVybiBBVURJVF9BUkNIX0FBUkNINjQ7XG4gfVxuLVxuLWludCBzeXNjYWxsX3RyYWNlX2VudGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi12b2lkIHN5c2NhbGxfdHJhY2VfZXhpdChzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG4tXG4gI2VuZGlmXHQvKiBfX0FTTV9TWVNDQUxMX0ggKi9cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcbmluZGV4IDVkN2ZlM2UxNTNjODUwLi4zZjYyMWJhMGY5NjEzNyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oXG5AQCAtNDYsNiAmIzQzOzQ2LDcgQEAgc3RydWN0IHRocmVhZF9pbmZvIHtcbiBcdHU2NFx0XHRcdG1wYW1fcGFydGlkX3BtZztcbiAjZW5kaWZcbiBcdHUzMlx0XHRcdGNwdTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nXHRcdHN5c2NhbGxfd29yazsgICAvKiBTWVNDQUxMX1dPUktfIGZsYWdzICovXG4gfTtcbiBcbiAjZGVmaW5lIHRocmVhZF9zYXZlZF9wYyh0c2spXHRcXFxuQEAgLTY4LDExICYjNDM7NjksNiBAQCB2b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7XG4gI2RlZmluZSBUSUZfVVBST0JFXHRcdDVcdC8qIHVwcm9iZSBicmVha3BvaW50IG9yIHNpbmdsZXN0ZXAgKi9cbiAjZGVmaW5lIFRJRl9NVEVfQVNZTkNfRkFVTFRcdDZcdC8qIE1URSBBc3luY2hyb25vdXMgVGFnIENoZWNrIEZhdWx0ICovXG4gI2RlZmluZSBUSUZfTk9USUZZX1NJR05BTFx0N1x0Lyogc2lnbmFsIG5vdGlmaWNhdGlvbnMgZXhpc3QgKi9cbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFXHQ4XHQvKiBzeXNjYWxsIHRyYWNlIGFjdGl2ZSAqL1xuLSNkZWZpbmUgVElGX1NZU0NBTExfQVVESVRcdDlcdC8qIHN5c2NhbGwgYXVkaXRpbmcgKi9cbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFUE9JTlRcdDEwXHQvKiBzeXNjYWxsIHRyYWNlcG9pbnQgZm9yIGZ0cmFjZSAqL1xuLSNkZWZpbmUgVElGX1NFQ0NPTVBcdFx0MTFcdC8qIHN5c2NhbGwgc2VjdXJlIGNvbXB1dGluZyAqL1xuLSNkZWZpbmUgVElGX1NZU0NBTExfRU1VXHRcdDEyXHQvKiBzeXNjYWxsIGVtdWxhdGlvbiBhY3RpdmUgKi9cbiAjZGVmaW5lIFRJRl9QQVRDSF9QRU5ESU5HXHQxM1x0LyogcGVuZGluZyBsaXZlIHBhdGNoaW5nIHVwZGF0ZSAqL1xuICNkZWZpbmUgVElGX01FTURJRVx0XHQxOFx0LyogaXMgdGVybWluYXRpbmcgZHVlIHRvIE9PTSBraWxsZXIgKi9cbiAjZGVmaW5lIFRJRl9GUkVFWkVcdFx0MTlcbkBAIC05NCwyNCAmIzQzOzkwLDE0IEBAIHZvaWQgYXJjaF9zZXR1cF9uZXdfZXhlYyh2b2lkKTtcbiAjZGVmaW5lIF9USUZfTkVFRF9SRVNDSEVEX0xBWllcdCgxIFx1MDAzY1x1MDAzYyBUSUZfTkVFRF9SRVNDSEVEX0xBWlkpXG4gI2RlZmluZSBfVElGX05PVElGWV9SRVNVTUVcdCgxIFx1MDAzY1x1MDAzYyBUSUZfTk9USUZZX1JFU1VNRSlcbiAjZGVmaW5lIF9USUZfRk9SRUlHTl9GUFNUQVRFXHQoMSBcdTAwM2NcdTAwM2MgVElGX0ZPUkVJR05fRlBTVEFURSlcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9UUkFDRVx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TWVNDQUxMX1RSQUNFKVxuLSNkZWZpbmUgX1RJRl9TWVNDQUxMX0FVRElUXHQoMSBcdTAwM2NcdTAwM2MgVElGX1NZU0NBTExfQVVESVQpXG4tI2RlZmluZSBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TWVNDQUxMX1RSQUNFUE9JTlQpXG4tI2RlZmluZSBfVElGX1NFQ0NPTVBcdFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TRUNDT01QKVxuLSNkZWZpbmUgX1RJRl9TWVNDQUxMX0VNVVx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TWVNDQUxMX0VNVSlcbiAjZGVmaW5lIF9USUZfUEFUQ0hfUEVORElOR1x0KDEgXHUwMDNjXHUwMDNjIFRJRl9QQVRDSF9QRU5ESU5HKVxuICNkZWZpbmUgX1RJRl9VUFJPQkVcdFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9VUFJPQkUpXG4tI2RlZmluZSBfVElGX1NJTkdMRVNURVBcdFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TSU5HTEVTVEVQKVxuICNkZWZpbmUgX1RJRl8zMkJJVFx0XHQoMSBcdTAwM2NcdTAwM2MgVElGXzMyQklUKVxuICNkZWZpbmUgX1RJRl9TVkVcdFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9TVkUpXG4gI2RlZmluZSBfVElGX01URV9BU1lOQ19GQVVMVFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9NVEVfQVNZTkNfRkFVTFQpXG4gI2RlZmluZSBfVElGX05PVElGWV9TSUdOQUxcdCgxIFx1MDAzY1x1MDAzYyBUSUZfTk9USUZZX1NJR05BTClcbiAjZGVmaW5lIF9USUZfVFNDX1NJR1NFR1ZcdCgxIFx1MDAzY1x1MDAzYyBUSUZfVFNDX1NJR1NFR1YpXG4gXG4tI2RlZmluZSBfVElGX1NZU0NBTExfV09SS1x0KF9USUZfU1lTQ0FMTF9UUkFDRSB8IF9USUZfU1lTQ0FMTF9BVURJVCB8IFxcXG4tXHRcdFx0XHQgX1RJRl9TWVNDQUxMX1RSQUNFUE9JTlQgfCBfVElGX1NFQ0NPTVAgfCBcXFxuLVx0XHRcdFx0IF9USUZfU1lTQ0FMTF9FTVUpXG4tXG4gI2lmZGVmIENPTkZJR19TSEFET1dfQ0FMTF9TVEFDS1xuICNkZWZpbmUgSU5JVF9TQ1NcdFx0XHRcdFx0XHRcdFxcXG4gXHQuc2NzX2Jhc2VcdD0gaW5pdF9zaGFkb3dfY2FsbF9zdGFjayxcdFx0XHRcXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jXG5pbmRleCAyOTMwNzY0MmY0YzkwNC4uYzUzNjgzODM5MTU1MzYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jXG5AQCAtMzg1LDExICYjNDM7Mzg1LDE5IEBAIHZvaWQgdXNlcl9lbmFibGVfc2luZ2xlX3N0ZXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuIFxuIFx0aWYgKCF0ZXN0X2FuZF9zZXRfdGlfdGhyZWFkX2ZsYWcodGksIFRJRl9TSU5HTEVTVEVQKSlcbiBcdFx0c2V0X3JlZ3Nfc3Bzcl9zcyh0YXNrX3B0X3JlZ3ModGFzaykpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEVuc3VyZSB0aGF0IHRoZSBnZW5lcmljIGVudHJ5IGNvZGUgdHJpZ2dlcnMgYSB0cmFwIG9uY2Ugc3RlcHBpbmdcbiYjNDM7XHQgKiBvdXQgb2YgYSBzeXN0ZW0gY2FsbCBwcmlvciB0byBleGVjdXRpbmcgYW55IHVzZXIgaW5zdHJ1Y3Rpb24sXG4mIzQzO1x0ICogYXMgdGhlIGdlbmVyaWMgZW50cnkgY29kZSBkb2VzIG5vdCBuYXRpdmVseSBjaGVjayBmb3IgVElGX1NJTkdMRVNURVAuXG4mIzQzO1x0ICovXG4mIzQzO1x0c2V0X3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfRVhJVF9UUkFQKTtcbiB9XG4gTk9LUFJPQkVfU1lNQk9MKHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKTtcbiBcbiB2b2lkIHVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXG4ge1xuIFx0Y2xlYXJfdGlfdGhyZWFkX2ZsYWcodGFza190aHJlYWRfaW5mbyh0YXNrKSwgVElGX1NJTkdMRVNURVApO1xuJiM0MztcdGNsZWFyX3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfRVhJVF9UUkFQKTtcbiB9XG4gTk9LUFJPQkVfU1lNQk9MKHVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uY1xuaW5kZXggY2ViNGViMTEyMzJhNjEuLjllYWM3NjgwNGJkOWFlIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL2VudHJ5LWNvbW1vbi5jXG5AQCAtNiw3ICYjNDM7Niw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY29udGV4dF90cmFja2luZy5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2VudHJ5LWNvbW1vbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2FzYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbmthZ2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpdmVwYXRjaC5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuY1xuaW5kZXggNTcwOWU5ZDNjMzIxYTUuLjYxYTY2ODY4Mjk0NzE1IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jXG5AQCAtOCw3ICYjNDM7OCw2IEBAXG4gICogQ29weXJpZ2h0IChDKSAyMDEyIEFSTSBMdGQuXG4gICovXG4gXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvYXVkaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBhdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC9zaWduYWwuaFx1MDAzZVxuQEAgLTE4LDcgJiM0MzsxNyw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc21wLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHJhY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzZXIuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlY2NvbXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlY3VyaXR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbml0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zaWduYWwuaFx1MDAzZVxuQEAgLTI4LDcgJiM0MzsyNiw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaHdfYnJlYWtwb2ludC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVnc2V0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lbGYuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3JzZXEuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9jb21wYXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jcHVmZWF0dXJlLmhcdTAwM2VcbkBAIC0zOCwxMyAmIzQzOzM1LDkgQEBcbiAjaW5jbHVkZSBcdTAwM2Nhc20vbXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vcG9pbnRlcl9hdXRoLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vc3RhY2t0cmFjZS5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjYXNtL3N5c2NhbGwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS90cmFwcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3N5c3RlbV9taXNjLmhcdTAwM2VcbiBcbi0jZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcbi0jaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvc3lzY2FsbHMuaFx1MDAzZVxuLVxuIHN0cnVjdCBwdF9yZWdzX29mZnNldCB7XG4gXHRjb25zdCBjaGFyICpuYW1lO1xuIFx0aW50IG9mZnNldDtcbkBAIC0yMzM5LDExNCAmIzQzOzIzMzIsNiBAQCBsb25nIGFyY2hfcHRyYWNlKHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQsIGxvbmcgcmVxdWVzdCxcbiBcdHJldHVybiBwdHJhY2VfcmVxdWVzdChjaGlsZCwgcmVxdWVzdCwgYWRkciwgZGF0YSk7XG4gfVxuIFxuLWVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIHtcbi1cdFBUUkFDRV9TWVNDQUxMX0VOVEVSID0gMCxcbi1cdFBUUkFDRV9TWVNDQUxMX0VYSVQsXG4tfTtcbi1cbi1zdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcgcHRyYWNlX3NhdmVfcmVnKHN0cnVjdCBwdF9yZWdzICpyZWdzLFxuLVx0XHRcdFx0XHRcdCAgICAgZW51bSBwdHJhY2Vfc3lzY2FsbF9kaXIgZGlyLFxuLVx0XHRcdFx0XHRcdCAgICAgaW50ICpyZWdubylcbi17XG4tXHR1bnNpZ25lZCBsb25nIHNhdmVkX3JlZztcbi1cbi1cdC8qXG4tXHQgKiBXZSBoYXZlIHNvbWUgQUJJIHdlaXJkbmVzcyBoZXJlIGluIHRoZSB3YXkgdGhhdCB3ZSBoYW5kbGUgc3lzY2FsbFxuLVx0ICogZXhpdCBzdG9wcyBiZWNhdXNlIHdlIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoZSBzdG9wIGhhcyBiZWVuXG4tXHQgKiBzaWduYWxsZWQgZnJvbSBzeXNjYWxsIGVudHJ5IG9yIHN5c2NhbGwgZXhpdCBieSBjbG9iYmVyaW5nIGEgZ2VuZXJhbFxuLVx0ICogcHVycG9zZSByZWdpc3RlciAoaXAvcjEyIGZvciBBQXJjaDMyLCB4NyBmb3IgQUFyY2g2NCkgaW4gdGhlIHRyYWNlZVxuLVx0ICogYW5kIHJlc3RvcmluZyBpdHMgb2xkIHZhbHVlIGFmdGVyIHRoZSBzdG9wLiBUaGlzIG1lYW5zIHRoYXQ6XG4tXHQgKlxuLVx0ICogLSBBbnkgd3JpdGVzIGJ5IHRoZSB0cmFjZXIgdG8gdGhpcyByZWdpc3RlciBkdXJpbmcgdGhlIHN0b3AgYXJlXG4tXHQgKiAgIGlnbm9yZWQvZGlzY2FyZGVkLlxuLVx0ICpcbi1cdCAqIC0gVGhlIGFjdHVhbCB2YWx1ZSBvZiB0aGUgcmVnaXN0ZXIgaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgdGhlIHN0b3AsXG4tXHQgKiAgIHNvIHRoZSB0cmFjZXIgY2Fubm90IHNhdmUgaXQgYW5kIHJlc3RvcmUgaXQgbGF0ZXIuXG4tXHQgKlxuLVx0ICogLSBTeXNjYWxsIHN0b3BzIGJlaGF2ZSBkaWZmZXJlbnRseSB0byBzZWNjb21wIGFuZCBwc2V1ZG8tc3RlcCB0cmFwc1xuLVx0ICogICAodGhlIGxhdHRlciBkbyBub3Qgbm9iYmxlIGFueSByZWdpc3RlcnMpLlxuLVx0ICovXG4tXHQqcmVnbm8gPSAoaXNfY29tcGF0X3Rhc2soKSA/IDEyIDogNyk7XG4tXHRzYXZlZF9yZWcgPSByZWdzLVx1MDAzZXJlZ3NbKnJlZ25vXTtcbi1cdHJlZ3MtXHUwMDNlcmVnc1sqcmVnbm9dID0gZGlyO1xuLVxuLVx0cmV0dXJuIHNhdmVkX3JlZztcbi19XG4tXG4tc3RhdGljIGludCByZXBvcnRfc3lzY2FsbF9lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi17XG4tXHR1bnNpZ25lZCBsb25nIHNhdmVkX3JlZztcbi1cdGludCByZWdubywgcmV0O1xuLVxuLVx0c2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VOVEVSLCBcdTAwMjZyZWdubyk7XG4tXHRyZXQgPSAhcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeShyZWdzKTtcbi1cdGlmIChyZXQpXG4tXHRcdGZvcmdldF9zeXNjYWxsKHJlZ3MpO1xuLVx0cmVncy1cdTAwM2VyZWdzW3JlZ25vXSA9IHNhdmVkX3JlZztcbi1cbi1cdHJldHVybiByZXQ7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIHJlcG9ydF9zeXNjYWxsX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4te1xuLVx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4tXHRpbnQgcmVnbm87XG4tXG4tXHRzYXZlZF9yZWcgPSBwdHJhY2Vfc2F2ZV9yZWcocmVncywgUFRSQUNFX1NZU0NBTExfRVhJVCwgXHUwMDI2cmVnbm8pO1xuLVx0aWYgKCF0ZXN0X3RocmVhZF9mbGFnKFRJRl9TSU5HTEVTVEVQKSkge1xuLVx0XHRwdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChyZWdzLCAwKTtcbi1cdFx0cmVncy1cdTAwM2VyZWdzW3JlZ25vXSA9IHNhdmVkX3JlZztcbi1cdH0gZWxzZSB7XG4tXHRcdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4tXG4tXHRcdC8qXG4tXHRcdCAqIFNpZ25hbCBhIHBzZXVkby1zdGVwIGV4Y2VwdGlvbiBzaW5jZSB3ZSBhcmUgc3RlcHBpbmcgYnV0XG4tXHRcdCAqIHRyYWNlciBtb2RpZmljYXRpb25zIHRvIHRoZSByZWdpc3RlcnMgbWF5IGhhdmUgcmV3b3VuZCB0aGVcbi1cdFx0ICogc3RhdGUgbWFjaGluZS5cbi1cdFx0ICovXG4tXHRcdHB0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MsIDEpO1xuLVx0fVxuLX1cbi1cbi1pbnQgc3lzY2FsbF90cmFjZV9lbnRlcihzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi17XG4tXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gcmVhZF90aHJlYWRfZmxhZ3MoKTtcbi1cdGludCByZXQ7XG4tXG4tXHRpZiAoZmxhZ3MgXHUwMDI2IChfVElGX1NZU0NBTExfRU1VIHwgX1RJRl9TWVNDQUxMX1RSQUNFKSkge1xuLVx0XHRyZXQgPSByZXBvcnRfc3lzY2FsbF9lbnRyeShyZWdzKTtcbi1cdFx0aWYgKHJldCB8fCAoZmxhZ3MgXHUwMDI2IF9USUZfU1lTQ0FMTF9FTVUpKVxuLVx0XHRcdHJldHVybiBOT19TWVNDQUxMO1xuLVx0fVxuLVxuLVx0LyogRG8gdGhlIHNlY3VyZSBjb21wdXRpbmcgYWZ0ZXIgcHRyYWNlOyBmYWlsdXJlcyBzaG91bGQgYmUgZmFzdC4gKi9cbi1cdGlmICghc2VjY29tcF9wZXJtaXRfc3lzY2FsbCgpKVxuLVx0XHRyZXR1cm4gTk9fU1lTQ0FMTDtcbi1cbi1cdGlmICh0ZXN0X3RocmVhZF9mbGFnKFRJRl9TWVNDQUxMX1RSQUNFUE9JTlQpKVxuLVx0XHR0cmFjZV9zeXNfZW50ZXIocmVncywgcmVncy1cdTAwM2VzeXNjYWxsbm8pO1xuLVxuLVx0YXVkaXRfc3lzY2FsbF9lbnRyeShyZWdzLVx1MDAzZXN5c2NhbGxubywgcmVncy1cdTAwM2VvcmlnX3gwLCByZWdzLVx1MDAzZXJlZ3NbMV0sXG4tXHRcdFx0ICAgIHJlZ3MtXHUwMDNlcmVnc1syXSwgcmVncy1cdTAwM2VyZWdzWzNdKTtcbi1cbi1cdHJldHVybiByZWdzLVx1MDAzZXN5c2NhbGxubztcbi19XG4tXG4tdm9pZCBzeXNjYWxsX3RyYWNlX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4te1xuLVx0dW5zaWduZWQgbG9uZyBmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7XG4tXG4tXHRhdWRpdF9zeXNjYWxsX2V4aXQocmVncyk7XG4tXG4tXHRpZiAoZmxhZ3MgXHUwMDI2IF9USUZfU1lTQ0FMTF9UUkFDRVBPSU5UKVxuLVx0XHR0cmFjZV9zeXNfZXhpdChyZWdzLCBzeXNjYWxsX2dldF9yZXR1cm5fdmFsdWUoY3VycmVudCwgcmVncykpO1xuLVxuLVx0aWYgKGZsYWdzIFx1MDAyNiAoX1RJRl9TWVNDQUxMX1RSQUNFIHwgX1RJRl9TSU5HTEVTVEVQKSlcbi1cdFx0cmVwb3J0X3N5c2NhbGxfZXhpdChyZWdzKTtcbi1cbi1cdHJzZXFfc3lzY2FsbChyZWdzKTtcbi19XG4tXG4gLypcbiAgKiBTUFNSX0VMeCBiaXRzIHdoaWNoIGFyZSBhbHdheXMgYXJjaGl0ZWN0dXJhbGx5IFJFUzAgcGVyIEFSTSBEREkgMDQ4N0QuYS5cbiAgKiBXZSBwZXJtaXQgdXNlcnNwYWNlIHRvIHNldCBTU0JTIChBQXJjaDY0IGJpdCAxMiwgQUFyY2gzMiBiaXQgMjMpIHdoaWNoIGlzXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuY1xuaW5kZXggMzhlNmZhMjA0YzE3YjUuLjA5M2VlYmI5ZDc2NGFjIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jXG5AQCAtOCw4ICYjNDM7OCw4IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY2FjaGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBhdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2VudHJ5LWNvbW1vbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lycS1lbnRyeS1jb21tb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2lnbmFsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcmVlemVyLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmNcbmluZGV4IDM1OGRkZmJmMTQwMWFjLi4yNTM1Y2FlOTQxM2Q4YSAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3N5c2NhbGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jXG5AQCAtMiw2ICYjNDM7Miw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbnRleHRfdHJhY2tpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9lbnRyeS1jb21tb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ub3NwZWMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cmFjZS5oXHUwMDNlXG5AQCAtNTQsMTUgJiM0Mzs1NSwxMSBAQCBzdGF0aWMgdm9pZCBpbnZva2Vfc3lzY2FsbChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgaW50IHNjbm8sXG4gXHRzeXNjYWxsX3NldF9yZXR1cm5fdmFsdWUoY3VycmVudCwgcmVncywgMCwgcmV0KTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBib29sIGhhc19zeXNjYWxsX3dvcmsodW5zaWduZWQgbG9uZyBmbGFncylcbi17XG4tXHRyZXR1cm4gdW5saWtlbHkoZmxhZ3MgXHUwMDI2IF9USUZfU1lTQ0FMTF9XT1JLKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsXG4tXHRcdFx0ICAgY29uc3Qgc3lzY2FsbF9mbl90IHN5c2NhbGxfdGFibGVbXSlcbiYjNDM7c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGVsMF9zdmNfY29tbW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgc2NubywgaW50IHNjX25yLFxuJiM0MztcdFx0XHRcdFx0ICAgY29uc3Qgc3lzY2FsbF9mbl90IHN5c2NhbGxfdGFibGVbXSlcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gcmVhZF90aHJlYWRfZmxhZ3MoKTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIHdvcms7XG4gXG4gXHRyZWdzLVx1MDAzZW9yaWdfeDAgPSByZWdzLVx1MDAzZXJlZ3NbMF07XG4gXHRyZWdzLVx1MDAzZXN5c2NhbGxubyA9IHNjbm87XG5AQCAtOTUsNyAmIzQzOzkyLDggQEAgc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdGlmIChoYXNfc3lzY2FsbF93b3JrKGZsYWdzKSkge1xuJiM0MztcdHdvcmsgPSBSRUFEX09OQ0UoY3VycmVudF90aHJlYWRfaW5mbygpLVx1MDAzZXN5c2NhbGxfd29yayk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KHdvcmsgXHUwMDI2IFNZU0NBTExfV09SS19FTlRFUikpIHtcbiBcdFx0LypcbiBcdFx0ICogVGhlIGRlLWZhY3RvIHN0YW5kYXJkIHdheSB0byBza2lwIGEgc3lzdGVtIGNhbGwgdXNpbmcgcHRyYWNlXG4gXHRcdCAqIGlzIHRvIHNldCB0aGUgc3lzdGVtIGNhbGwgdG8gLTEgKE5PX1NZU0NBTEwpIGFuZCBzZXQgeDAgdG8gYVxuQEAgLTExMywyNiAmIzQzOzExMSwxOCBAQCBzdGF0aWMgdm9pZCBlbDBfc3ZjX2NvbW1vbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IHNjbm8sIGludCBzY19ucixcbiBcdFx0ICovXG4gXHRcdGlmIChzY25vID09IE5PX1NZU0NBTEwpXG4gXHRcdFx0c3lzY2FsbF9zZXRfcmV0dXJuX3ZhbHVlKGN1cnJlbnQsIHJlZ3MsIC1FTk9TWVMsIDApO1xuLVx0XHRzY25vID0gc3lzY2FsbF90cmFjZV9lbnRlcihyZWdzKTtcbiYjNDM7XHRcdGlmICghc3lzY2FsbF90cmFjZV9lbnRlcihyZWdzLCB3b3JrLCBzY25vKSlcbiYjNDM7XHRcdFx0Z290byB0cmFjZV9leGl0O1xuJiM0MztcbiYjNDM7XHRcdC8qIFJlcmVhZCB0aGUgc3lzY2FsbCBudW1iZXIgYXMgaXQgbWlnaHQgaGF2ZSBiZWVuIG1vZGlmaWVkICovXG4mIzQzO1x0XHRzY25vID0gc3lzY2FsbF9nZXRfbnIoY3VycmVudCwgcmVncyk7XG4gXHRcdGlmIChzY25vID09IE5PX1NZU0NBTEwpXG4gXHRcdFx0Z290byB0cmFjZV9leGl0O1xuIFx0fVxuIFxuIFx0aW52b2tlX3N5c2NhbGwocmVncywgc2Nubywgc2NfbnIsIHN5c2NhbGxfdGFibGUpO1xuLVxuLVx0Lypcbi1cdCAqIFRoZSB0cmFjaW5nIHN0YXR1cyBtYXkgaGF2ZSBjaGFuZ2VkIHVuZGVyIG91ciBmZWV0LCBzbyB3ZSBoYXZlIHRvXG4tXHQgKiBjaGVjayBhZ2Fpbi4gSG93ZXZlciwgaWYgd2Ugd2VyZSB0cmFjaW5nIGVudHJ5LCB0aGVuIHdlIGFsd2F5cyB0cmFjZVxuLVx0ICogZXhpdCByZWdhcmRsZXNzLCBhcyB0aGUgb2xkIGVudHJ5IGFzc2VtYmx5IGRpZC5cbi1cdCAqL1xuLVx0aWYgKCFoYXNfc3lzY2FsbF93b3JrKGZsYWdzKSBcdTAwMjZcdTAwMjYgIUlTX0VOQUJMRUQoQ09ORklHX0RFQlVHX1JTRVEpKSB7XG4tXHRcdGZsYWdzID0gcmVhZF90aHJlYWRfZmxhZ3MoKTtcbi1cdFx0aWYgKCFoYXNfc3lzY2FsbF93b3JrKGZsYWdzKSBcdTAwMjZcdTAwMjYgIShmbGFncyBcdTAwMjYgX1RJRl9TSU5HTEVTVEVQKSlcbi1cdFx0XHRyZXR1cm47XG4tXHR9XG4tXG4gdHJhY2VfZXhpdDpcbi1cdHN5c2NhbGxfdHJhY2VfZXhpdChyZWdzKTtcbiYjNDM7XHRzeXNjYWxsX2V4aXRfdG9fdXNlcl9tb2RlX3dvcmsocmVncyk7XG4gfVxuIFxuIHZvaWQgZG9fZWwwX3N2YyhzdHJ1Y3QgcHRfcmVncyAqcmVncylcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmMgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmNcbmluZGV4IDU5MmRkODY2OGRlNDYzLi4zN2NkYzdjNzJlMTVjMyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jXG5AQCAtMzQzLDMgJiM0MzszNDMsMTkgQEAgaW50IGFyY2hfc2V0dXBfYWRkaXRpb25hbF9wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBpbnQgdXNlc19pbnRlcnApXG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiYjNDM7XG4mIzQzO2Jvb2wgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBsYW5kaW5nX3BhZDtcbiYjNDM7XG4mIzQzOyNpZmRlZiBDT05GSUdfQ09NUEFUXG4mIzQzO1x0aWYgKGlzX2NvbXBhdF90YXNrKCkpIHtcbiYjNDM7XHRcdHVuc2lnbmVkIGxvbmcgc2lncGFnZSA9ICh1bnNpZ25lZCBsb25nKWN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlY29udGV4dC5zaWdwYWdlO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybiByZWdzLVx1MDAzZXBjIFx1MDAzZT0gc2lncGFnZSBcdTAwMjZcdTAwMjYgcmVncy1cdTAwM2VwYyBcdTAwM2MgKHNpZ3BhZ2UgJiM0MzsgUEFHRV9TSVpFKTtcbiYjNDM7XHR9XG4mIzQzOyNlbmRpZlxuJiM0MztcdGxhbmRpbmdfcGFkID0gKHVuc2lnbmVkIGxvbmcpVkRTT19TWU1CT0woY3VycmVudC1cdTAwM2VtbS1cdTAwM2Vjb250ZXh0LnZkc28sIHNpZ3JldHVybl9sYW5kaW5nX3BhZCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWdzLVx1MDAzZXBjID09IGxhbmRpbmdfcGFkO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby9zaWdyZXR1cm4uUyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlNcbmluZGV4IDBlMTg3MjlhYmMzYjc4Li44ZDJkNDEzZmY0NWU4YiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlNcbkBAIC03Myw2ICYjNDM7NzMsNyBAQCBTWU1fQ09ERV9TVEFSVChfX2tlcm5lbF9ydF9zaWdyZXR1cm4pXG4gXHRtb3ZcdHg4LCAjX19OUl9ydF9zaWdyZXR1cm5cbiAvL1x0UExFQVNFIERPIE5PVCBNT0RJRllcbiBcdHN2Y1x0IzBcbiYjNDM7XHRTWU1fSU5ORVJfTEFCRUwoX19zaWdyZXR1cm5fbGFuZGluZ19wYWQsIFNZTV9MX0dMT0JBTClcbiAvL1x0UExFQVNFIERPIE5PVCBNT0RJRllcbiAvL1x0LmNmaV9lbmRwcm9jXG4gU1lNX0NPREVfRU5EKF9fa2VybmVsX3J0X3NpZ3JldHVybilcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlMgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlNcbmluZGV4IDUyMzE0YmUyOTE5MTIxLi5kYTYxZDZmYzZmZTlmMyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TXG5AQCAtMTEyLDMgJiM0MzsxMTIsNCBAQCBWRVJTSU9OXG4gICogTWFrZSB0aGUgc2lncmV0dXJuIGNvZGUgdmlzaWJsZSB0byB0aGUga2VybmVsLlxuICAqL1xuIFZEU09fc2lndHJhbXBcdFx0PSBfX2tlcm5lbF9ydF9zaWdyZXR1cm47XG4mIzQzO1ZEU09fc2lncmV0dXJuX2xhbmRpbmdfcGFkXHQ9IF9fc2lncmV0dXJuX2xhbmRpbmdfcGFkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIyOjEwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTWVNDQUxMX1VTRVJfRElTUEFUQ0gmIzM0OywKICAgICYjMzQ7Q09NUEFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuJiMzNDssCiAgICAmIzM0O3VzZXJfZW5hYmxlX3NpbmdsZV9zdGVwJiMzNDssCiAgICAmIzM0O3VzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb252ZXJ0cyBhcm02NCB0byB1c2UgdGhlIGdlbmVyaWMgZW50cnkgaW5mcmFzdHJ1Y3R1cmUgYW5kIGFkZHMgc3VwcG9ydCBmb3IgU3lzY2FsbCBVc2VyIERpc3BhdGNoLiBUaGlzIGludm9sdmVzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBzeXNjYWxsIGVudHJ5L2V4aXQgcGF0aHMsIHB0cmFjZSBzaW5nbGUtc3RlcHBpbmcsIGFuZCBWRFNPIHNpZ3JldHVybiBkZXRlY3Rpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYzY2YwNGIxY2RlOTBkOTIwNGM2OTdjNTYyNTI0MTg3YTM5YzJkZjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyMSAyMjoxMDozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvS2NvbmZpZyBiL2FyY2gvYXJtNjQvS2NvbmZpZwppbmRleCBmYjE1MDM3YjVlM2M3ZS4uZWZlZjA3ODU3ZDM4ODQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L0tjb25maWcKQEAgLTg3LDYgJiM0Mzs4Nyw3IEBAIGNvbmZpZyBBUk02NAogCXNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX1NNVAogCXNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX0NMVVNURVIKIAlzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9NQwomIzQzOwlzZWxlY3QgQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0gKIAlzZWxlY3QgQVJDSF9XQU5UX0JBVENIRURfVU5NQVBfVExCX0ZMVVNICiAJc2VsZWN0IEFSQ0hfV0FOVF9DT01QQVRfSVBDX1BBUlNFX1ZFUlNJT04gaWYgQ09NUEFUCiAJc2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQKQEAgLTEyOSw5ICYjNDM7MTMwLDkgQEAgY29uZmlnIEFSTTY0CiAJc2VsZWN0IEdFTkVSSUNfQ1BVX0RFVklDRVMKIAlzZWxlY3QgR0VORVJJQ19DUFVfVlVMTkVSQUJJTElUSUVTCiAJc2VsZWN0IEdFTkVSSUNfRUFSTFlfSU9SRU1BUAomIzQzOwlzZWxlY3QgR0VORVJJQ19FTlRSWQogCXNlbGVjdCBHRU5FUklDX0lETEVfUE9MTF9TRVRVUAogCXNlbGVjdCBHRU5FUklDX0lPUkVNQVAKLQlzZWxlY3QgR0VORVJJQ19JUlFfRU5UUlkKIAlzZWxlY3QgR0VORVJJQ19JUlFfSVBJCiAJc2VsZWN0IEdFTkVSSUNfSVJRX0tFWEVDX0NMRUFSX1ZNX0ZPUldBUkQKIAlzZWxlY3QgR0VORVJJQ19JUlFfUFJPQkUKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oCmluZGV4IGQyNzc5ZDYwNGM3YmUyLi5hOGIyMzJjNWM2ZDlmOCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbGYuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oCkBAIC0yOTMsNiAmIzQzOzI5Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGFyY2hfY2hlY2tfZWxmKHZvaWQgKmVoZHIsIGJvb2wgaGFzX2ludGVycCwKIAlyZXR1cm4gMDsKIH0KIAomIzQzO2V4dGVybiBib29sIGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CiAjZW5kaWYgLyogIV9fQVNTRU1CTEVSX18gKi8KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaAppbmRleCBjYWI4Y2Q3OGY2OTM4NS4uMmIwNTNhY2JlMTBmZWEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaApAQCAtMywxNCAmIzQzOzMsMjEgQEAKICNpZm5kZWYgX0FTTV9BUk02NF9FTlRSWV9DT01NT05fSAogI2RlZmluZSBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9ICiAKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHRyYWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdGhyZWFkX2luZm8uaCZndDsKIAomIzQzOyNpbmNsdWRlICZsdDthc20vY29tcGF0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2NwdWZlYXR1cmUuaCZndDsKICNpbmNsdWRlICZsdDthc20vZGFpZmZsYWdzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2Zwc2ltZC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9tdGUuaCZndDsKICNpbmNsdWRlICZsdDthc20vc3RhY2t0cmFjZS5oJmd0OwogCiYjNDM7ZW51bSBwdHJhY2Vfc3lzY2FsbF9kaXIgewomIzQzOwlQVFJBQ0VfU1lTQ0FMTF9FTlRFUiA9IDAsCiYjNDM7CVBUUkFDRV9TWVNDQUxMX0VYSVQsCiYjNDM7fTsKJiM0MzsKICNkZWZpbmUgQVJDSF9FWElUX1RPX1VTRVJfTU9ERV9XT1JLIChfVElGX01URV9BU1lOQ19GQVVMVCB8IF9USUZfRk9SRUlHTl9GUFNUQVRFKQogCiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV93b3JrKHN0cnVjdCBwdF9yZWdzICpyZWdzLApAQCAtNTQsNCAmIzQzOzYxLDc0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkKHZvaWQpCiAKICNkZWZpbmUgYXJjaF9pcnFlbnRyeV9leGl0X25lZWRfcmVzY2hlZCBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkCiAKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcgcHRyYWNlX3NhdmVfcmVnKHN0cnVjdCBwdF9yZWdzICpyZWdzLAomIzQzOwkJCQkJCSAgICAgZW51bSBwdHJhY2Vfc3lzY2FsbF9kaXIgZGlyLAomIzQzOwkJCQkJCSAgICAgaW50ICpyZWdubykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBXZSBoYXZlIHNvbWUgQUJJIHdlaXJkbmVzcyBoZXJlIGluIHRoZSB3YXkgdGhhdCB3ZSBoYW5kbGUgc3lzY2FsbAomIzQzOwkgKiBleGl0IHN0b3BzIGJlY2F1c2Ugd2UgaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhlIHN0b3AgaGFzIGJlZW4KJiM0MzsJICogc2lnbmFsbGVkIGZyb20gc3lzY2FsbCBlbnRyeSBvciBzeXNjYWxsIGV4aXQgYnkgY2xvYmJlcmluZyBhIGdlbmVyYWwKJiM0MzsJICogcHVycG9zZSByZWdpc3RlciAoaXAvcjEyIGZvciBBQXJjaDMyLCB4NyBmb3IgQUFyY2g2NCkgaW4gdGhlIHRyYWNlZQomIzQzOwkgKiBhbmQgcmVzdG9yaW5nIGl0cyBvbGQgdmFsdWUgYWZ0ZXIgdGhlIHN0b3AuIFRoaXMgbWVhbnMgdGhhdDoKJiM0MzsJICoKJiM0MzsJICogLSBBbnkgd3JpdGVzIGJ5IHRoZSB0cmFjZXIgdG8gdGhpcyByZWdpc3RlciBkdXJpbmcgdGhlIHN0b3AgYXJlCiYjNDM7CSAqICAgaWdub3JlZC9kaXNjYXJkZWQuCiYjNDM7CSAqCiYjNDM7CSAqIC0gVGhlIGFjdHVhbCB2YWx1ZSBvZiB0aGUgcmVnaXN0ZXIgaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgdGhlIHN0b3AsCiYjNDM7CSAqICAgc28gdGhlIHRyYWNlciBjYW5ub3Qgc2F2ZSBpdCBhbmQgcmVzdG9yZSBpdCBsYXRlci4KJiM0MzsJICoKJiM0MzsJICogLSBTeXNjYWxsIHN0b3BzIGJlaGF2ZSBkaWZmZXJlbnRseSB0byBzZWNjb21wIGFuZCBwc2V1ZG8tc3RlcCB0cmFwcwomIzQzOwkgKiAgICh0aGUgbGF0dGVyIGRvIG5vdCBub2JibGUgYW55IHJlZ2lzdGVycykuCiYjNDM7CSAqLwomIzQzOwkqcmVnbm8gPSAoaXNfY29tcGF0X3Rhc2soKSA/IDEyIDogNyk7CiYjNDM7CXNhdmVkX3JlZyA9IHJlZ3MtJmd0O3JlZ3NbKnJlZ25vXTsKJiM0MzsJcmVncy0mZ3Q7cmVnc1sqcmVnbm9dID0gZGlyOwomIzQzOwomIzQzOwlyZXR1cm4gc2F2ZWRfcmVnOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfcGVybWl0X2VudHJ5KHN0cnVjdCBwdF9yZWdzICpyZWdzKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7CiYjNDM7CWJvb2wgcGVybWl0OwomIzQzOwlpbnQgcmVnbm87CiYjNDM7CiYjNDM7CXNhdmVkX3JlZyA9IHB0cmFjZV9zYXZlX3JlZyhyZWdzLCBQVFJBQ0VfU1lTQ0FMTF9FTlRFUiwgJmFtcDtyZWdubyk7CiYjNDM7CXBlcm1pdCA9IHB0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkocmVncyk7CiYjNDM7CWlmICghcGVybWl0KQomIzQzOwkJZm9yZ2V0X3N5c2NhbGwocmVncyk7CiYjNDM7CXJlZ3MtJmd0O3JlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnOwomIzQzOwomIzQzOwlyZXR1cm4gcGVybWl0OwomIzQzO30KJiM0MzsKJiM0MzsjZGVmaW5lIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeSBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkKJiM0MzsKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChzdHJ1Y3QgcHRfcmVncyAqcmVncywKJiM0MzsJCQkJCQkJICAgIGludCBzdGVwKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7CiYjNDM7CWludCByZWdubzsKJiM0MzsKJiM0MzsJc2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VYSVQsICZhbXA7cmVnbm8pOwomIzQzOwlpZiAoIXN0ZXApIHsKJiM0MzsJCXB0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MsIDApOwomIzQzOwkJcmVncy0mZ3Q7cmVnc1tyZWdub10gPSBzYXZlZF9yZWc7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlyZWdzLSZndDtyZWdzW3JlZ25vXSA9IHNhdmVkX3JlZzsKJiM0MzsKJiM0MzsJCS8qCiYjNDM7CQkgKiBTaWduYWwgYSBwc2V1ZG8tc3RlcCBleGNlcHRpb24gc2luY2Ugd2UgYXJlIHN0ZXBwaW5nIGJ1dAomIzQzOwkJICogdHJhY2VyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlZ2lzdGVycyBtYXkgaGF2ZSByZXdvdW5kIHRoZQomIzQzOwkJICogc3RhdGUgbWFjaGluZS4KJiM0MzsJCSAqLwomIzQzOwkJcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7I2RlZmluZSBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0IGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQKJiM0MzsKICNlbmRpZiAvKiBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c2NhbGwuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oCmluZGV4IDVlNGM3ZmM0NGY3MzE1Li5lM2U3MTY1NzU4NDY0NiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNjYWxsLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNjYWxsLmgKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O3VhcGkvbGludXgvYXVkaXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jb21wYXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcnNlcS5oJmd0OwogCiB0eXBlZGVmIGxvbmcgKCpzeXNjYWxsX2ZuX3QpKGNvbnN0IHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKIApAQCAtMTE5LDggJiM0MzsxMjAsNCBAQCBzdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX2dldF9hcmNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKIAogCXJldHVybiBBVURJVF9BUkNIX0FBUkNINjQ7CiB9Ci0KLWludCBzeXNjYWxsX3RyYWNlX2VudGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKLXZvaWQgc3lzY2FsbF90cmFjZV9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKLQogI2VuZGlmCS8qIF9fQVNNX1NZU0NBTExfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oCmluZGV4IDVkN2ZlM2UxNTNjODUwLi4zZjYyMWJhMGY5NjEzNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaApAQCAtNDYsNiAmIzQzOzQ2LDcgQEAgc3RydWN0IHRocmVhZF9pbmZvIHsKIAl1NjQJCQltcGFtX3BhcnRpZF9wbWc7CiAjZW5kaWYKIAl1MzIJCQljcHU7CiYjNDM7CXVuc2lnbmVkIGxvbmcJCXN5c2NhbGxfd29yazsgICAvKiBTWVNDQUxMX1dPUktfIGZsYWdzICovCiB9OwogCiAjZGVmaW5lIHRocmVhZF9zYXZlZF9wYyh0c2spCVwKQEAgLTY4LDExICYjNDM7NjksNiBAQCB2b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7CiAjZGVmaW5lIFRJRl9VUFJPQkUJCTUJLyogdXByb2JlIGJyZWFrcG9pbnQgb3Igc2luZ2xlc3RlcCAqLwogI2RlZmluZSBUSUZfTVRFX0FTWU5DX0ZBVUxUCTYJLyogTVRFIEFzeW5jaHJvbm91cyBUYWcgQ2hlY2sgRmF1bHQgKi8KICNkZWZpbmUgVElGX05PVElGWV9TSUdOQUwJNwkvKiBzaWduYWwgbm90aWZpY2F0aW9ucyBleGlzdCAqLwotI2RlZmluZSBUSUZfU1lTQ0FMTF9UUkFDRQk4CS8qIHN5c2NhbGwgdHJhY2UgYWN0aXZlICovCi0jZGVmaW5lIFRJRl9TWVNDQUxMX0FVRElUCTkJLyogc3lzY2FsbCBhdWRpdGluZyAqLwotI2RlZmluZSBUSUZfU1lTQ0FMTF9UUkFDRVBPSU5UCTEwCS8qIHN5c2NhbGwgdHJhY2Vwb2ludCBmb3IgZnRyYWNlICovCi0jZGVmaW5lIFRJRl9TRUNDT01QCQkxMQkvKiBzeXNjYWxsIHNlY3VyZSBjb21wdXRpbmcgKi8KLSNkZWZpbmUgVElGX1NZU0NBTExfRU1VCQkxMgkvKiBzeXNjYWxsIGVtdWxhdGlvbiBhY3RpdmUgKi8KICNkZWZpbmUgVElGX1BBVENIX1BFTkRJTkcJMTMJLyogcGVuZGluZyBsaXZlIHBhdGNoaW5nIHVwZGF0ZSAqLwogI2RlZmluZSBUSUZfTUVNRElFCQkxOAkvKiBpcyB0ZXJtaW5hdGluZyBkdWUgdG8gT09NIGtpbGxlciAqLwogI2RlZmluZSBUSUZfRlJFRVpFCQkxOQpAQCAtOTQsMjQgJiM0Mzs5MCwxNCBAQCB2b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7CiAjZGVmaW5lIF9USUZfTkVFRF9SRVNDSEVEX0xBWlkJKDEgJmx0OyZsdDsgVElGX05FRURfUkVTQ0hFRF9MQVpZKQogI2RlZmluZSBfVElGX05PVElGWV9SRVNVTUUJKDEgJmx0OyZsdDsgVElGX05PVElGWV9SRVNVTUUpCiAjZGVmaW5lIF9USUZfRk9SRUlHTl9GUFNUQVRFCSgxICZsdDsmbHQ7IFRJRl9GT1JFSUdOX0ZQU1RBVEUpCi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9UUkFDRQkoMSAmbHQ7Jmx0OyBUSUZfU1lTQ0FMTF9UUkFDRSkKLSNkZWZpbmUgX1RJRl9TWVNDQUxMX0FVRElUCSgxICZsdDsmbHQ7IFRJRl9TWVNDQUxMX0FVRElUKQotI2RlZmluZSBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVAkoMSAmbHQ7Jmx0OyBUSUZfU1lTQ0FMTF9UUkFDRVBPSU5UKQotI2RlZmluZSBfVElGX1NFQ0NPTVAJCSgxICZsdDsmbHQ7IFRJRl9TRUNDT01QKQotI2RlZmluZSBfVElGX1NZU0NBTExfRU1VCSgxICZsdDsmbHQ7IFRJRl9TWVNDQUxMX0VNVSkKICNkZWZpbmUgX1RJRl9QQVRDSF9QRU5ESU5HCSgxICZsdDsmbHQ7IFRJRl9QQVRDSF9QRU5ESU5HKQogI2RlZmluZSBfVElGX1VQUk9CRQkJKDEgJmx0OyZsdDsgVElGX1VQUk9CRSkKLSNkZWZpbmUgX1RJRl9TSU5HTEVTVEVQCQkoMSAmbHQ7Jmx0OyBUSUZfU0lOR0xFU1RFUCkKICNkZWZpbmUgX1RJRl8zMkJJVAkJKDEgJmx0OyZsdDsgVElGXzMyQklUKQogI2RlZmluZSBfVElGX1NWRQkJKDEgJmx0OyZsdDsgVElGX1NWRSkKICNkZWZpbmUgX1RJRl9NVEVfQVNZTkNfRkFVTFQJKDEgJmx0OyZsdDsgVElGX01URV9BU1lOQ19GQVVMVCkKICNkZWZpbmUgX1RJRl9OT1RJRllfU0lHTkFMCSgxICZsdDsmbHQ7IFRJRl9OT1RJRllfU0lHTkFMKQogI2RlZmluZSBfVElGX1RTQ19TSUdTRUdWCSgxICZsdDsmbHQ7IFRJRl9UU0NfU0lHU0VHVikKIAotI2RlZmluZSBfVElGX1NZU0NBTExfV09SSwkoX1RJRl9TWVNDQUxMX1RSQUNFIHwgX1RJRl9TWVNDQUxMX0FVRElUIHwgXAotCQkJCSBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVCB8IF9USUZfU0VDQ09NUCB8IFwKLQkJCQkgX1RJRl9TWVNDQUxMX0VNVSkKLQogI2lmZGVmIENPTkZJR19TSEFET1dfQ0FMTF9TVEFDSwogI2RlZmluZSBJTklUX1NDUwkJCQkJCQlcCiAJLnNjc19iYXNlCT0gaW5pdF9zaGFkb3dfY2FsbF9zdGFjaywJCQlcCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jIGIvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYwppbmRleCAyOTMwNzY0MmY0YzkwNC4uYzUzNjgzODM5MTU1MzYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYwpAQCAtMzg1LDExICYjNDM7Mzg1LDE5IEBAIHZvaWQgdXNlcl9lbmFibGVfc2luZ2xlX3N0ZXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogCiAJaWYgKCF0ZXN0X2FuZF9zZXRfdGlfdGhyZWFkX2ZsYWcodGksIFRJRl9TSU5HTEVTVEVQKSkKIAkJc2V0X3JlZ3Nfc3Bzcl9zcyh0YXNrX3B0X3JlZ3ModGFzaykpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBFbnN1cmUgdGhhdCB0aGUgZ2VuZXJpYyBlbnRyeSBjb2RlIHRyaWdnZXJzIGEgdHJhcCBvbmNlIHN0ZXBwaW5nCiYjNDM7CSAqIG91dCBvZiBhIHN5c3RlbSBjYWxsIHByaW9yIHRvIGV4ZWN1dGluZyBhbnkgdXNlciBpbnN0cnVjdGlvbiwKJiM0MzsJICogYXMgdGhlIGdlbmVyaWMgZW50cnkgY29kZSBkb2VzIG5vdCBuYXRpdmVseSBjaGVjayBmb3IgVElGX1NJTkdMRVNURVAuCiYjNDM7CSAqLwomIzQzOwlzZXRfdGFza19zeXNjYWxsX3dvcmsodGFzaywgU1lTQ0FMTF9FWElUX1RSQVApOwogfQogTk9LUFJPQkVfU1lNQk9MKHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKTsKIAogdm9pZCB1c2VyX2Rpc2FibGVfc2luZ2xlX3N0ZXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogewogCWNsZWFyX3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odGFzayksIFRJRl9TSU5HTEVTVEVQKTsKJiM0MzsJY2xlYXJfdGFza19zeXNjYWxsX3dvcmsodGFzaywgU1lTQ0FMTF9FWElUX1RSQVApOwogfQogTk9LUFJPQkVfU1lNQk9MKHVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uYyBiL2FyY2gvYXJtNjQva2VybmVsL2VudHJ5LWNvbW1vbi5jCmluZGV4IGNlYjRlYjExMjMyYTYxLi45ZWFjNzY4MDRiZDlhZSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmMKQEAgLTYsNyAmIzQzOzYsNyBAQAogICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9jb250ZXh0X3RyYWNraW5nLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7bGludXgvaXJxLWVudHJ5LWNvbW1vbi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9lbnRyeS1jb21tb24uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rYXNhbi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2xpbmthZ2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9saXZlcGF0Y2guaCZndDsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jIGIvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMKaW5kZXggNTcwOWU5ZDNjMzIxYTUuLjYxYTY2ODY4Mjk0NzE1IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYwpAQCAtOCw3ICYjNDM7OCw2IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQVJNIEx0ZC4KICAqLwogCi0jaW5jbHVkZSAmbHQ7bGludXgvYXVkaXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jb21wYXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zY2hlZC9zaWduYWwuaCZndDsKQEAgLTE4LDcgJiM0MzsxNyw2IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvc21wLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHRyYWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdXNlci5oJmd0OwotI2luY2x1ZGUgJmx0O2xpbnV4L3NlY2NvbXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zZWN1cml0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2luaXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zaWduYWwuaCZndDsKQEAgLTI4LDcgJiM0MzsyNiw2IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaHdfYnJlYWtwb2ludC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZ3NldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2VsZi5oJmd0OwotI2luY2x1ZGUgJmx0O2xpbnV4L3JzZXEuaCZndDsKIAogI2luY2x1ZGUgJmx0O2FzbS9jb21wYXQuaCZndDsKICNpbmNsdWRlICZsdDthc20vY3B1ZmVhdHVyZS5oJmd0OwpAQCAtMzgsMTMgJiM0MzszNSw5IEBACiAjaW5jbHVkZSAmbHQ7YXNtL210ZS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9wb2ludGVyX2F1dGguaCZndDsKICNpbmNsdWRlICZsdDthc20vc3RhY2t0cmFjZS5oJmd0OwotI2luY2x1ZGUgJmx0O2FzbS9zeXNjYWxsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL3RyYXBzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL3N5c3RlbV9taXNjLmgmZ3Q7CiAKLSNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UUwotI2luY2x1ZGUgJmx0O3RyYWNlL2V2ZW50cy9zeXNjYWxscy5oJmd0OwotCiBzdHJ1Y3QgcHRfcmVnc19vZmZzZXQgewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJaW50IG9mZnNldDsKQEAgLTIzMzksMTE0ICYjNDM7MjMzMiw2IEBAIGxvbmcgYXJjaF9wdHJhY2Uoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwgbG9uZyByZXF1ZXN0LAogCXJldHVybiBwdHJhY2VfcmVxdWVzdChjaGlsZCwgcmVxdWVzdCwgYWRkciwgZGF0YSk7CiB9CiAKLWVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIHsKLQlQVFJBQ0VfU1lTQ0FMTF9FTlRFUiA9IDAsCi0JUFRSQUNFX1NZU0NBTExfRVhJVCwKLX07Ci0KLXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBwdHJhY2Vfc2F2ZV9yZWcoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCi0JCQkJCQkgICAgIGVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIGRpciwKLQkJCQkJCSAgICAgaW50ICpyZWdubykKLXsKLQl1bnNpZ25lZCBsb25nIHNhdmVkX3JlZzsKLQotCS8qCi0JICogV2UgaGF2ZSBzb21lIEFCSSB3ZWlyZG5lc3MgaGVyZSBpbiB0aGUgd2F5IHRoYXQgd2UgaGFuZGxlIHN5c2NhbGwKLQkgKiBleGl0IHN0b3BzIGJlY2F1c2Ugd2UgaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhlIHN0b3AgaGFzIGJlZW4KLQkgKiBzaWduYWxsZWQgZnJvbSBzeXNjYWxsIGVudHJ5IG9yIHN5c2NhbGwgZXhpdCBieSBjbG9iYmVyaW5nIGEgZ2VuZXJhbAotCSAqIHB1cnBvc2UgcmVnaXN0ZXIgKGlwL3IxMiBmb3IgQUFyY2gzMiwgeDcgZm9yIEFBcmNoNjQpIGluIHRoZSB0cmFjZWUKLQkgKiBhbmQgcmVzdG9yaW5nIGl0cyBvbGQgdmFsdWUgYWZ0ZXIgdGhlIHN0b3AuIFRoaXMgbWVhbnMgdGhhdDoKLQkgKgotCSAqIC0gQW55IHdyaXRlcyBieSB0aGUgdHJhY2VyIHRvIHRoaXMgcmVnaXN0ZXIgZHVyaW5nIHRoZSBzdG9wIGFyZQotCSAqICAgaWdub3JlZC9kaXNjYXJkZWQuCi0JICoKLQkgKiAtIFRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIHJlZ2lzdGVyIGlzIG5vdCBhdmFpbGFibGUgZHVyaW5nIHRoZSBzdG9wLAotCSAqICAgc28gdGhlIHRyYWNlciBjYW5ub3Qgc2F2ZSBpdCBhbmQgcmVzdG9yZSBpdCBsYXRlci4KLQkgKgotCSAqIC0gU3lzY2FsbCBzdG9wcyBiZWhhdmUgZGlmZmVyZW50bHkgdG8gc2VjY29tcCBhbmQgcHNldWRvLXN0ZXAgdHJhcHMKLQkgKiAgICh0aGUgbGF0dGVyIGRvIG5vdCBub2JibGUgYW55IHJlZ2lzdGVycykuCi0JICovCi0JKnJlZ25vID0gKGlzX2NvbXBhdF90YXNrKCkgPyAxMiA6IDcpOwotCXNhdmVkX3JlZyA9IHJlZ3MtJmd0O3JlZ3NbKnJlZ25vXTsKLQlyZWdzLSZndDtyZWdzWypyZWdub10gPSBkaXI7Ci0KLQlyZXR1cm4gc2F2ZWRfcmVnOwotfQotCi1zdGF0aWMgaW50IHJlcG9ydF9zeXNjYWxsX2VudHJ5KHN0cnVjdCBwdF9yZWdzICpyZWdzKQotewotCXVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnOwotCWludCByZWdubywgcmV0OwotCi0Jc2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VOVEVSLCAmYW1wO3JlZ25vKTsKLQlyZXQgPSAhcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeShyZWdzKTsKLQlpZiAocmV0KQotCQlmb3JnZXRfc3lzY2FsbChyZWdzKTsKLQlyZWdzLSZndDtyZWdzW3JlZ25vXSA9IHNhdmVkX3JlZzsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlcG9ydF9zeXNjYWxsX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCi17Ci0JdW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7Ci0JaW50IHJlZ25vOwotCi0Jc2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VYSVQsICZhbXA7cmVnbm8pOwotCWlmICghdGVzdF90aHJlYWRfZmxhZyhUSUZfU0lOR0xFU1RFUCkpIHsKLQkJcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMCk7Ci0JCXJlZ3MtJmd0O3JlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnOwotCX0gZWxzZSB7Ci0JCXJlZ3MtJmd0O3JlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnOwotCi0JCS8qCi0JCSAqIFNpZ25hbCBhIHBzZXVkby1zdGVwIGV4Y2VwdGlvbiBzaW5jZSB3ZSBhcmUgc3RlcHBpbmcgYnV0Ci0JCSAqIHRyYWNlciBtb2RpZmljYXRpb25zIHRvIHRoZSByZWdpc3RlcnMgbWF5IGhhdmUgcmV3b3VuZCB0aGUKLQkJICogc3RhdGUgbWFjaGluZS4KLQkJICovCi0JCXB0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MsIDEpOwotCX0KLX0KLQotaW50IHN5c2NhbGxfdHJhY2VfZW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCi17Ci0JdW5zaWduZWQgbG9uZyBmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7Ci0JaW50IHJldDsKLQotCWlmIChmbGFncyAmYW1wOyAoX1RJRl9TWVNDQUxMX0VNVSB8IF9USUZfU1lTQ0FMTF9UUkFDRSkpIHsKLQkJcmV0ID0gcmVwb3J0X3N5c2NhbGxfZW50cnkocmVncyk7Ci0JCWlmIChyZXQgfHwgKGZsYWdzICZhbXA7IF9USUZfU1lTQ0FMTF9FTVUpKQotCQkJcmV0dXJuIE5PX1NZU0NBTEw7Ci0JfQotCi0JLyogRG8gdGhlIHNlY3VyZSBjb21wdXRpbmcgYWZ0ZXIgcHRyYWNlOyBmYWlsdXJlcyBzaG91bGQgYmUgZmFzdC4gKi8KLQlpZiAoIXNlY2NvbXBfcGVybWl0X3N5c2NhbGwoKSkKLQkJcmV0dXJuIE5PX1NZU0NBTEw7Ci0KLQlpZiAodGVzdF90aHJlYWRfZmxhZyhUSUZfU1lTQ0FMTF9UUkFDRVBPSU5UKSkKLQkJdHJhY2Vfc3lzX2VudGVyKHJlZ3MsIHJlZ3MtJmd0O3N5c2NhbGxubyk7Ci0KLQlhdWRpdF9zeXNjYWxsX2VudHJ5KHJlZ3MtJmd0O3N5c2NhbGxubywgcmVncy0mZ3Q7b3JpZ194MCwgcmVncy0mZ3Q7cmVnc1sxXSwKLQkJCSAgICByZWdzLSZndDtyZWdzWzJdLCByZWdzLSZndDtyZWdzWzNdKTsKLQotCXJldHVybiByZWdzLSZndDtzeXNjYWxsbm87Ci19Ci0KLXZvaWQgc3lzY2FsbF90cmFjZV9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzKQotewotCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSByZWFkX3RocmVhZF9mbGFncygpOwotCi0JYXVkaXRfc3lzY2FsbF9leGl0KHJlZ3MpOwotCi0JaWYgKGZsYWdzICZhbXA7IF9USUZfU1lTQ0FMTF9UUkFDRVBPSU5UKQotCQl0cmFjZV9zeXNfZXhpdChyZWdzLCBzeXNjYWxsX2dldF9yZXR1cm5fdmFsdWUoY3VycmVudCwgcmVncykpOwotCi0JaWYgKGZsYWdzICZhbXA7IChfVElGX1NZU0NBTExfVFJBQ0UgfCBfVElGX1NJTkdMRVNURVApKQotCQlyZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MpOwotCi0JcnNlcV9zeXNjYWxsKHJlZ3MpOwotfQotCiAvKgogICogU1BTUl9FTHggYml0cyB3aGljaCBhcmUgYWx3YXlzIGFyY2hpdGVjdHVyYWxseSBSRVMwIHBlciBBUk0gRERJIDA0ODdELmEuCiAgKiBXZSBwZXJtaXQgdXNlcnNwYWNlIHRvIHNldCBTU0JTIChBQXJjaDY0IGJpdCAxMiwgQUFyY2gzMiBiaXQgMjMpIHdoaWNoIGlzCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuYyBiL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jCmluZGV4IDM4ZTZmYTIwNGMxN2I1Li4wOTNlZWJiOWQ3NjRhYyAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmMKQEAgLTgsOCAmIzQzOzgsOCBAQAogCiAjaW5jbHVkZSAmbHQ7bGludXgvY2FjaGUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jb21wYXQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZW50cnktY29tbW9uLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJybm8uaCZndDsKLSNpbmNsdWRlICZsdDtsaW51eC9pcnEtZW50cnktY29tbW9uLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2lnbmFsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZnJlZXplci5oJmd0OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jCmluZGV4IDM1OGRkZmJmMTQwMWFjLi4yNTM1Y2FlOTQxM2Q4YSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL3N5c2NhbGwuYwpAQCAtMiw2ICYjNDM7Miw3IEBACiAKICNpbmNsdWRlICZsdDtsaW51eC9jb21waWxlci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2NvbnRleHRfdHJhY2tpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZW50cnktY29tbW9uLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJybm8uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9ub3NwZWMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wdHJhY2UuaCZndDsKQEAgLTU0LDE1ICYjNDM7NTUsMTEgQEAgc3RhdGljIHZvaWQgaW52b2tlX3N5c2NhbGwoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGludCBzY25vLAogCXN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAwLCByZXQpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaGFzX3N5c2NhbGxfd29yayh1bnNpZ25lZCBsb25nIGZsYWdzKQotewotCXJldHVybiB1bmxpa2VseShmbGFncyAmYW1wOyBfVElGX1NZU0NBTExfV09SSyk7Ci19Ci0KLXN0YXRpYyB2b2lkIGVsMF9zdmNfY29tbW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgc2NubywgaW50IHNjX25yLAotCQkJICAgY29uc3Qgc3lzY2FsbF9mbl90IHN5c2NhbGxfdGFibGVbXSkKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsCiYjNDM7CQkJCQkgICBjb25zdCBzeXNjYWxsX2ZuX3Qgc3lzY2FsbF90YWJsZVtdKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSByZWFkX3RocmVhZF9mbGFncygpOwomIzQzOwl1bnNpZ25lZCBsb25nIHdvcms7CiAKIAlyZWdzLSZndDtvcmlnX3gwID0gcmVncy0mZ3Q7cmVnc1swXTsKIAlyZWdzLSZndDtzeXNjYWxsbm8gPSBzY25vOwpAQCAtOTUsNyAmIzQzOzkyLDggQEAgc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsCiAJCXJldHVybjsKIAl9CiAKLQlpZiAoaGFzX3N5c2NhbGxfd29yayhmbGFncykpIHsKJiM0MzsJd29yayA9IFJFQURfT05DRShjdXJyZW50X3RocmVhZF9pbmZvKCktJmd0O3N5c2NhbGxfd29yayk7CiYjNDM7CWlmICh1bmxpa2VseSh3b3JrICZhbXA7IFNZU0NBTExfV09SS19FTlRFUikpIHsKIAkJLyoKIAkJICogVGhlIGRlLWZhY3RvIHN0YW5kYXJkIHdheSB0byBza2lwIGEgc3lzdGVtIGNhbGwgdXNpbmcgcHRyYWNlCiAJCSAqIGlzIHRvIHNldCB0aGUgc3lzdGVtIGNhbGwgdG8gLTEgKE5PX1NZU0NBTEwpIGFuZCBzZXQgeDAgdG8gYQpAQCAtMTEzLDI2ICYjNDM7MTExLDE4IEBAIHN0YXRpYyB2b2lkIGVsMF9zdmNfY29tbW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgc2NubywgaW50IHNjX25yLAogCQkgKi8KIAkJaWYgKHNjbm8gPT0gTk9fU1lTQ0FMTCkKIAkJCXN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAtRU5PU1lTLCAwKTsKLQkJc2NubyA9IHN5c2NhbGxfdHJhY2VfZW50ZXIocmVncyk7CiYjNDM7CQlpZiAoIXN5c2NhbGxfdHJhY2VfZW50ZXIocmVncywgd29yaywgc2NubykpCiYjNDM7CQkJZ290byB0cmFjZV9leGl0OwomIzQzOwomIzQzOwkJLyogUmVyZWFkIHRoZSBzeXNjYWxsIG51bWJlciBhcyBpdCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQgKi8KJiM0MzsJCXNjbm8gPSBzeXNjYWxsX2dldF9ucihjdXJyZW50LCByZWdzKTsKIAkJaWYgKHNjbm8gPT0gTk9fU1lTQ0FMTCkKIAkJCWdvdG8gdHJhY2VfZXhpdDsKIAl9CiAKIAlpbnZva2Vfc3lzY2FsbChyZWdzLCBzY25vLCBzY19uciwgc3lzY2FsbF90YWJsZSk7Ci0KLQkvKgotCSAqIFRoZSB0cmFjaW5nIHN0YXR1cyBtYXkgaGF2ZSBjaGFuZ2VkIHVuZGVyIG91ciBmZWV0LCBzbyB3ZSBoYXZlIHRvCi0JICogY2hlY2sgYWdhaW4uIEhvd2V2ZXIsIGlmIHdlIHdlcmUgdHJhY2luZyBlbnRyeSwgdGhlbiB3ZSBhbHdheXMgdHJhY2UKLQkgKiBleGl0IHJlZ2FyZGxlc3MsIGFzIHRoZSBvbGQgZW50cnkgYXNzZW1ibHkgZGlkLgotCSAqLwotCWlmICghaGFzX3N5c2NhbGxfd29yayhmbGFncykgJmFtcDsmYW1wOyAhSVNfRU5BQkxFRChDT05GSUdfREVCVUdfUlNFUSkpIHsKLQkJZmxhZ3MgPSByZWFkX3RocmVhZF9mbGFncygpOwotCQlpZiAoIWhhc19zeXNjYWxsX3dvcmsoZmxhZ3MpICZhbXA7JmFtcDsgIShmbGFncyAmYW1wOyBfVElGX1NJTkdMRVNURVApKQotCQkJcmV0dXJuOwotCX0KLQogdHJhY2VfZXhpdDoKLQlzeXNjYWxsX3RyYWNlX2V4aXQocmVncyk7CiYjNDM7CXN5c2NhbGxfZXhpdF90b191c2VyX21vZGVfd29yayhyZWdzKTsKIH0KIAogdm9pZCBkb19lbDBfc3ZjKHN0cnVjdCBwdF9yZWdzICpyZWdzKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jIGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jCmluZGV4IDU5MmRkODY2OGRlNDYzLi4zN2NkYzdjNzJlMTVjMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28uYwpAQCAtMzQzLDMgJiM0MzszNDMsMTkgQEAgaW50IGFyY2hfc2V0dXBfYWRkaXRpb25hbF9wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBpbnQgdXNlc19pbnRlcnApCiAKIAlyZXR1cm4gcmV0OwogfQomIzQzOwomIzQzO2Jvb2wgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuKHN0cnVjdCBwdF9yZWdzICpyZWdzKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgbG9uZyBsYW5kaW5nX3BhZDsKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHX0NPTVBBVAomIzQzOwlpZiAoaXNfY29tcGF0X3Rhc2soKSkgewomIzQzOwkJdW5zaWduZWQgbG9uZyBzaWdwYWdlID0gKHVuc2lnbmVkIGxvbmcpY3VycmVudC0mZ3Q7bW0tJmd0O2NvbnRleHQuc2lncGFnZTsKJiM0MzsKJiM0MzsJCXJldHVybiByZWdzLSZndDtwYyAmZ3Q7PSBzaWdwYWdlICZhbXA7JmFtcDsgcmVncy0mZ3Q7cGMgJmx0OyAoc2lncGFnZSAmIzQzOyBQQUdFX1NJWkUpOwomIzQzOwl9CiYjNDM7I2VuZGlmCiYjNDM7CWxhbmRpbmdfcGFkID0gKHVuc2lnbmVkIGxvbmcpVkRTT19TWU1CT0woY3VycmVudC0mZ3Q7bW0tJmd0O2NvbnRleHQudmRzbywgc2lncmV0dXJuX2xhbmRpbmdfcGFkKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlZ3MtJmd0O3BjID09IGxhbmRpbmdfcGFkOwomIzQzO30KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlMgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TCmluZGV4IDBlMTg3MjlhYmMzYjc4Li44ZDJkNDEzZmY0NWU4YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby9zaWdyZXR1cm4uUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TCkBAIC03Myw2ICYjNDM7NzMsNyBAQCBTWU1fQ09ERV9TVEFSVChfX2tlcm5lbF9ydF9zaWdyZXR1cm4pCiAJbW92CXg4LCAjX19OUl9ydF9zaWdyZXR1cm4KIC8vCVBMRUFTRSBETyBOT1QgTU9ESUZZCiAJc3ZjCSMwCiYjNDM7CVNZTV9JTk5FUl9MQUJFTChfX3NpZ3JldHVybl9sYW5kaW5nX3BhZCwgU1lNX0xfR0xPQkFMKQogLy8JUExFQVNFIERPIE5PVCBNT0RJRlkKIC8vCS5jZmlfZW5kcHJvYwogU1lNX0NPREVfRU5EKF9fa2VybmVsX3J0X3NpZ3JldHVybikKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuUyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuUwppbmRleCA1MjMxNGJlMjkxOTEyMS4uZGE2MWQ2ZmM2ZmU5ZjMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlMKQEAgLTExMiwzICYjNDM7MTEyLDQgQEAgVkVSU0lPTgogICogTWFrZSB0aGUgc2lncmV0dXJuIGNvZGUgdmlzaWJsZSB0byB0aGUga2VybmVsLgogICovCiBWRFNPX3NpZ3RyYW1wCQk9IF9fa2VybmVsX3J0X3NpZ3JldHVybjsKJiM0MztWRFNPX3NpZ3JldHVybl9sYW5kaW5nX3BhZAk9IF9fc2lncmV0dXJuX2xhbmRpbmdfcGFkOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAyMjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Nzc1CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNjA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoOiBhcm02NCBTeXNjYWxsIEVudHJ5IENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgYXJtNjQgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgaG93IHN5c3RlbSBjYWxscyBhcmUgaGFuZGxlZC4gVGhlIHBhdGNoIGlzIGVuYWJsaW5nIGBBUkNIX1NVUFBPUlRTX1NZU0NBTExfVVNFUl9ESVNQQVRDSGAgYW5kIGBHRU5FUklDX0VOVFJZYCwgd2hpY2ggaXMgYSBzaWduaWZpY2FudCBzaGlmdCBpbiBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGV5IGFyZSBtb3ZpbmcgYXdheSBmcm9tIHRoZSBtb3JlIHNwZWNpZmljIGBHRU5FUklDX0lSUV9FTlRSWWAgaW4gZmF2b3Igb2YgdGhpcyBgR0VORVJJQ19FTlRSWWAgYXBwcm9hY2guIFRoaXMgcGF0Y2ggdG91Y2hlcyBhIHZhc3QgbnVtYmVyIG9mIGZpbGVzLCBpbmRpY2F0aW5nIGl0cyBicm9hZCBpbXBhY3QuIEkgY2FuIHNlZSBjaGFuZ2VzIGFjcm9zcyBpbmNsdWRlIGZpbGVzLCB0aGUgS2NvbmZpZywgYW5kIHRoZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBjZW50ZXIgYXJvdW5kIGBhcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmNgLCBwYXJ0aWN1bGFybHkgdGhlIGBlbDBfc3ZjX2NvbW1vbmAgZnVuY3Rpb24g4oCTIHRoZSBzeXNjYWxsIGVudHJ5IHBvaW50IOKAkyBhbmQgdGhlIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gIGZ1bmN0aW9uLiBJIHNlZSB0aGV5IGhhdmUgaW1wbGVtZW50ZWQgdGhpcyBuZXcgYGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybmAuIFRoaXMgaGFzIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgYXJjaGl0ZWN0dXJlIGNvZGUgKHN5c2NhbGwgZW50cnkvZXhpdCkuCgpUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBkb2luZyBpcyBmbGFnZ2luZyB0aGlzIGZvciBzZXJpb3VzIGZ1enppbmcuIFRoZSBzeXNjYWxsIGVudHJ5L2V4aXQgcGF0aCBpcyBhIGNyaXRpY2FsIHNlY3VyaXR5LXNlbnNpdGl2ZSBhcmVhLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcm9idXN0LgoKTGV0JiMzOTtzIHNlZS4gVGhpcyBgZWwwX3N2Y19jb21tb25gIGZ1bmN0aW9uLiBJdCYjMzk7cyB0aGUgcHJpbWFyeSBzeXNjYWxsIGVudHJ5IHBvaW50LCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgaG90LXBhdGggZnVuY3Rpb24uIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhcm5zIGFib3V0IGhvdC1wYXRoIGZ1bmN0aW9ucy4gYGVsMF9zdmNfY29tbW9uYCBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgb25lIHRoYXQgd2FzIGNoYW5nZWQuIEhtbSwgcGVyaGFwcyBJIHNob3VsZG4mIzM5O3QgbGlzdCBpdCBkaXJlY3RseSBiZWNhdXNlIGl0JiMzOTtzIHNvIGhvdC4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gZ2V0IGRpc3RyYWN0ZWQgd2l0aCBub2lzZSBpbiB0aGUgY2FsbGdyYXBoLgoKU28sIGxldCYjMzk7cyB6b29tIGluIG9uIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gLiBUaGlzIGxpa2VseSBnZXRzIGNhbGxlZCBkdXJpbmcgc3lzY2FsbCB1c2VyIGRpc3BhdGNoIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyBhIGB2ZHNvYCBzaWdyZXR1cm4uIExldCYjMzk7cyBjaGVjayBgS2NvbmZpZ2AgZm9yIGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIyOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NZU0NBTExfVVNFUl9ESVNQQVRDSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2NhbGwtdXNlci1kaXNwYXRjaC5yc3Q9NTI9Zm9sbG93aW5nIHByY3RsOlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjYWxsLXVzZXItZGlzcGF0Y2gucnN0LTUzLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjYWxsLXVzZXItZGlzcGF0Y2gucnN0OjU0OiAgcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgXHUwMDNjb3BcdTAwM2UsIFx1MDAzY29mZnNldFx1MDAzZSwgXHUwMDNjbGVuZ3RoXHUwMDNlLCBbc2VsZWN0b3JdKVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjYWxsLXVzZXItZGlzcGF0Y2gucnN0LTU1LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY2FsbC11c2VyLWRpc3BhdGNoLnJzdD04MT1BZGRpdGlvbmFsbHksIGEgdGFza3Mgc3lzY2FsbCB1c2VyIGRpc3BhdGNoIGNvbmZpZ3VyYXRpb24gY2FuIGJlIHBlZWtlZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjYWxsLXVzZXItZGlzcGF0Y2gucnN0OjgyOmFuZCBwb2tlZCB2aWEgdGhlIFBUUkFDRV8oR0VUfFNFVClfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRyBwdHJhY2VcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY2FsbC11c2VyLWRpc3BhdGNoLnJzdC04My1yZXF1ZXN0cy4gVGhpcyBpcyB1c2VmdWwgZm9yIGNoZWNrcG9pbnQvcmVzdGFydCBzb2Z0d2FyZS5cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0PTE0MDg9Q29udHJvbHMgd2hldGhlciB1c2Vyc3BhY2UgbWF5IGFybSBTeXNjYWxsIFVzZXIgRGlzcGF0Y2ggdmlhXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0OjE0MDk6YGBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCAuLi4pYGAgb3IgdGhlXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0OjE0MTA6YGBQVFJBQ0VfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9DT05GSUdgYCBwdHJhY2UgcmVxdWVzdDpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL2tlcm5lbC5yc3QtMTQxMS1cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0LTE0MTctXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0OjE0MTg6T25seSBwcmVzZW50IHdoZW4gdGhlIGtlcm5lbCBpcyBidWlsdCB3aXRoIGBgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSGBgXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0LTE0MTktYW5kIGBgQ09ORklHX1BST0NfU1lTQ1RMYGAuXG4tLVxuYXJjaC9LY29uZmlnPTExMj1jb25maWcgR0VORVJJQ19FTlRSWVxuLS1cbmFyY2gvS2NvbmZpZy0xMTYtXG5hcmNoL0tjb25maWc6MTE3OmNvbmZpZyBBUkNIX1NVUFBPUlRTX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxuYXJjaC9LY29uZmlnLTExOC1cdGJvb2xcbmFyY2gvS2NvbmZpZy0xMTktXG5hcmNoL0tjb25maWc6MTIwOmNvbmZpZyBTWVNDQUxMX1VTRVJfRElTUEFUQ0hcbmFyY2gvS2NvbmZpZy0xMjEtXHRib29sIFwmIzM0O1N5c2NhbGwgVXNlciBEaXNwYXRjaFwmIzM0O1xuYXJjaC9LY29uZmlnOjEyMjpcdGRlcGVuZHMgb24gQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcbmFyY2gvS2NvbmZpZy0xMjMtXHRkZXBlbmRzIG9uIEdFTkVSSUNfRU5UUllcbi0tXG5hcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcbi0tXG5hcmNoL2FybTY0L0tjb25maWctODktXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9NQ1xuYXJjaC9hcm02NC9LY29uZmlnOjkwOlx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXG5hcmNoL2FybTY0L0tjb25maWctOTEtXHRzZWxlY3QgQVJDSF9XQU5UX0JBVENIRURfVU5NQVBfVExCX0ZMVVNIXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01OD1jb25maWcgWDg2XG4tLVxuYXJjaC94ODYvS2NvbmZpZy0zMzgtXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9NQ1x0XHRpZiBTTVBcbmFyY2gveDg2L0tjb25maWc6MzM5Olx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXG5hcmNoL3g4Ni9LY29uZmlnLTM0MC1cdHNlbGVjdCBIQVZFX1NJTkdMRV9GVFJBQ0VfRElSRUNUX09QU1x0aWYgWDg2XzY0IFx1MDAyNlx1MDAyNiBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuLS1cbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtMjktXHRcdFx0XHQgU1lTQ0FMTF9XT1JLX1NZU0NBTExfQVVESVQgfFx0XHRcXFxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaDozMDpcdFx0XHRcdCBTWVNDQUxMX1dPUktfU1lTQ0FMTF9VU0VSX0RJU1BBVENIIHxcdFxcXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTMxLVx0XHRcdFx0IFNZU0NBTExfV09SS19TWVNDQUxMX1JTRVFfU0xJQ0UpXG4tLVxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaC0zNy1cdFx0XHRcdCBTWVNDQUxMX1dPUktfU1lTQ0FMTF9BVURJVCB8XHRcdFxcXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oOjM4Olx0XHRcdFx0IFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0ggfFx0XFxcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtMzktXHRcdFx0XHQgU1lTQ0FMTF9XT1JLX1NZU0NBTExfRVhJVF9UUkFQKVxuLS1cbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmg9NjU9c3RhdGljIF9fYWx3YXlzX2lubGluZSBsb25nIHN5c2NhbGxfdHJhY2VfZW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgd29yayxcbi0tXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTcyLVx0ICovXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oOjczOlx0aWYgKHdvcmsgXHUwMDI2IFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0gpIHtcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtNzQtXHRcdGlmIChzeXNjYWxsX3VzZXJfZGlzcGF0Y2gocmVncykpXG4tLVxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaD0yNDQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHN5c2NhbGxfZXhpdF93b3JrKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHdvcmspXG4tLVxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaC0yNTMtXHQgKi9cbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmg6MjU0Olx0aWYgKHdvcmsgXHUwMDI2IFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0gpIHtcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtMjU1LVx0XHRpZiAoc3lzY2FsbF91c2VyX2Rpc3BhdGNoX2NsZWFyX29uX2Rpc3BhdGNoKCkpXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaC00LSAqL1xuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaDo1OiNpZm5kZWYgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9IXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oOjY6I2RlZmluZSBfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0hcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmgtNy1cbi0tXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oPTEyPXN0cnVjdCBwdF9yZWdzO1xuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaC0xMy1cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6MTQ6I2lmZGVmIENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmgtMTUtXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaD0yNz1pbnQgc2V0X3N5c2NhbGxfdXNlcl9kaXNwYXRjaCh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LFxuLS1cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmgtMzAtI2RlZmluZSBjbGVhcl9zeXNjYWxsX3dvcmtfc3lzY2FsbF91c2VyX2Rpc3BhdGNoKHRzaykgXFxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6MzE6XHRjbGVhcl90YXNrX3N5c2NhbGxfd29yayh0c2ssIFNZU0NBTExfVVNFUl9ESVNQQVRDSClcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmgtMzItXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaD02Nz1zdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX3VzZXJfZGlzcGF0Y2hfc2V0X2NvbmZpZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaC03Mi1cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6NzM6I2VuZGlmIC8qIENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0ggKi9cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmgtNzQtXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oOjc1OiNlbmRpZiAvKiBfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0ggKi9cbi0tXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaF90eXBlcy5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmg6MjojaWZuZGVmIF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfVFlQRVNfSFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaDozOiNkZWZpbmUgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9UWVBFU19IXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaF90eXBlcy5oLTQtXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaC02LVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaDo3OiNpZmRlZiBDT05GSUdfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaF90eXBlcy5oLTgtXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaD0xOD1zdHJ1Y3Qgc3lzY2FsbF91c2VyX2Rpc3BhdGNoIHt9O1xuLS1cbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmgtMjEtXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaF90eXBlcy5oOjIyOiNlbmRpZiAvKiBfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX1RZUEVTX0ggKi9cbi0tXG5pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmg9NDE9ZW51bSBzeXNjYWxsX3dvcmtfYml0IHtcbi0tXG5pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmgtNDYtXHRTWVNDQUxMX1dPUktfQklUX1NZU0NBTExfQVVESVQsXG5pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmg6NDc6XHRTWVNDQUxMX1dPUktfQklUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCxcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaC00OC1cdFNZU0NBTExfV09SS19CSVRfU1lTQ0FMTF9FWElUX1RSQVAsXG4tLVxuaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oLTU2LSNkZWZpbmUgU1lTQ0FMTF9XT1JLX1NZU0NBTExfQVVESVRcdFx0QklUKFNZU0NBTExfV09SS19CSVRfU1lTQ0FMTF9BVURJVClcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaDo1NzojZGVmaW5lIFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcdEJJVChTWVNDQUxMX1dPUktfQklUX1NZU0NBTExfVVNFUl9ESVNQQVRDSClcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaC01OC0jZGVmaW5lIFNZU0NBTExfV09SS19TWVNDQUxMX0VYSVRfVFJBUFx0XHRCSVQoU1lTQ0FMTF9XT1JLX0JJVF9TWVNDQUxMX0VYSVRfVFJBUClcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaD0xMzQ9c3RydWN0IHByY3RsX21tX21hcCB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmgtMjY3LS8qIERpc3BhdGNoIHN5c2NhbGxzIHRvIGEgdXNlcnNwYWNlIGhhbmRsZXIgKi9cbmluY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oOjI2ODojZGVmaW5lIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hcdDU5XG5pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaC0yNjktIyBkZWZpbmUgUFJfU1lTX0RJU1BBVENIX09GRlx0XHQwXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cmFjZS5oPTExMD1zdHJ1Y3QgcHRyYWNlX3JzZXFfY29uZmlndXJhdGlvbiB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cmFjZS5oLTExNy1cbmluY2x1ZGUvdWFwaS9saW51eC9wdHJhY2UuaDoxMTg6I2RlZmluZSBQVFJBQ0VfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9DT05GSUcgMHg0MjEwXG5pbmNsdWRlL3VhcGkvbGludXgvcHRyYWNlLmg6MTE5OiNkZWZpbmUgUFRSQUNFX0dFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHIDB4NDIxMVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cmFjZS5oLTEyMC1cbi0tXG5rZXJuZWwvZW50cnkvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0dFTkVSSUNfU1lTQ0FMTCkgXHRcdCYjNDM7PSBzeXNjYWxsLWNvbW1vbi5vXG5rZXJuZWwvZW50cnkvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSClcdCYjNDM7PSBzeXNjYWxsX3VzZXJfZGlzcGF0Y2gub1xua2VybmVsL2VudHJ5L01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19WSVJUX1hGRVJfVE9fR1VFU1RfV09SSylcdCYjNDM7PSB2aXJ0Lm9cbi0tXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM9NzM9c3RhdGljIGludCB0YXNrX3NldF9zeXNjYWxsX3VzZXJfZGlzcGF0Y2goc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCB1bnNpZ25lZCBsb25nIG1vZGUsXG4tLVxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jLTEyOC1cdGlmIChtb2RlICE9IFBSX1NZU19ESVNQQVRDSF9PRkYpXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM6MTI5Olx0XHRzZXRfdGFza19zeXNjYWxsX3dvcmsodGFzaywgU1lTQ0FMTF9VU0VSX0RJU1BBVENIKTtcbmtlcm5lbC9lbnRyeS9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guYy0xMzAtXHRlbHNlXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM6MTMxOlx0XHRjbGVhcl90YXNrX3N5c2NhbGxfd29yayh0YXNrLCBTWVNDQUxMX1VTRVJfRElTUEFUQ0gpO1xua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jLTEzMi1cbi0tXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM9MTQyPWludCBzeXNjYWxsX3VzZXJfZGlzcGF0Y2hfZ2V0X2NvbmZpZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGxvbmcgc2l6ZSxcbi0tXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmMtMTUwLVxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jOjE1MTpcdGlmICh0ZXN0X3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfVVNFUl9ESVNQQVRDSCkpXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmMtMTUyLVx0XHRjZmcubW9kZSA9IFBSX1NZU19ESVNQQVRDSF9PTjtcbi0tXG5rZXJuZWwvcHRyYWNlLmM9MTE2Mj1pbnQgcHRyYWNlX3JlcXVlc3Qoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwgbG9uZyByZXF1ZXN0LFxuLS1cbmtlcm5lbC9wdHJhY2UuYy0xMzk3LVxua2VybmVsL3B0cmFjZS5jOjEzOTg6XHRjYXNlIFBUUkFDRV9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRzpcbmtlcm5lbC9wdHJhY2UuYy0xMzk5LVx0XHRyZXQgPSBzeXNjYWxsX3VzZXJfZGlzcGF0Y2hfc2V0X2NvbmZpZyhjaGlsZCwgYWRkciwgZGF0YXZwKTtcbi0tXG5rZXJuZWwvcHRyYWNlLmMtMTQwMS1cbmtlcm5lbC9wdHJhY2UuYzoxNDAyOlx0Y2FzZSBQVFJBQ0VfR0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9DT05GSUc6XG5rZXJuZWwvcHRyYWNlLmMtMTQwMy1cdFx0cmV0ID0gc3lzY2FsbF91c2VyX2Rpc3BhdGNoX2dldF9jb25maWcoY2hpbGQsIGFkZHIsIGRhdGF2cCk7XG4tLVxua2VybmVsL3N5cy5jPTI1MzQ9U1lTQ0FMTF9ERUZJTkU1KHByY3RsLCBpbnQsIG9wdGlvbiwgdW5zaWduZWQgbG9uZywgYXJnMiwgdW5zaWduZWQgbG9uZywgYXJnMyxcbi0tXG5rZXJuZWwvc3lzLmMtMjgwMS1cdFx0YnJlYWs7XG5rZXJuZWwvc3lzLmM6MjgwMjpcdGNhc2UgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSDpcbmtlcm5lbC9zeXMuYy0yODAzLVx0XHRlcnJvciA9IHNldF9zeXNjYWxsX3VzZXJfZGlzcGF0Y2goYXJnMiwgYXJnMywgYXJnNCxcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaD0xMzQ9c3RydWN0IHByY3RsX21tX21hcCB7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmgtMjU1LS8qIERpc3BhdGNoIHN5c2NhbGxzIHRvIGEgdXNlcnNwYWNlIGhhbmRsZXIgKi9cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oOjI1NjojZGVmaW5lIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hcdDU5XG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaC0yNTctIyBkZWZpbmUgUFJfU1lTX0RJU1BBVENIX09GRlx0XHQwXG4tLVxudG9vbHMvcGVyZi90cmFjZS9iZWF1dHkvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmg9MTM0PXN0cnVjdCBwcmN0bF9tbV9tYXAge1xuLS1cbnRvb2xzL3BlcmYvdHJhY2UvYmVhdXR5L2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oLTI2Ny0vKiBEaXNwYXRjaCBzeXNjYWxscyB0byBhIHVzZXJzcGFjZSBoYW5kbGVyICovXG50b29scy9wZXJmL3RyYWNlL2JlYXV0eS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaDoyNjg6I2RlZmluZSBQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXHQ1OVxudG9vbHMvcGVyZi90cmFjZS9iZWF1dHkvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmgtMjY5LSMgZGVmaW5lIFBSX1NZU19ESVNQQVRDSF9PRkZcdFx0MFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jPTE4PVRFU1QoZ2V0X3NldF9zdWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmMtMzktXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYzo0MDpcdHJldCA9IHN5c19wdHJhY2UoUFRSQUNFX0dFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHLCBjaGlsZCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jLTQxLVx0XHRcdCAodm9pZCAqKXNpemVvZihjb25maWcpLCBcdTAwMjZjb25maWcpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jLTUzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmM6NTQ6XHRyZXQgPSBzeXNfcHRyYWNlKFBUUkFDRV9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRywgY2hpbGQsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYy01NS1cdFx0XHQgKHZvaWQgKilzaXplb2YoY29uZmlnKSwgXHUwMDI2Y29uZmlnKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYy01OS1cdG1lbXNldChcdTAwMjZjb25maWcsIDEsIHNpemVvZihjb25maWcpKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jOjYwOlx0cmV0ID0gc3lzX3B0cmFjZShQVFJBQ0VfR0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9DT05GSUcsIGNoaWxkLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmMtNjEtXHRcdFx0ICh2b2lkICopc2l6ZW9mKGNvbmZpZyksIFx1MDAyNmNvbmZpZyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL2NvbmZpZzoxOkNPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0g9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmMtMjAtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX2JlbmNobWFyay5jOjIxOiNpZm5kZWYgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYzoyMjojIGRlZmluZSBQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXHQ1OVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYy0yMy0jIGRlZmluZSBQUl9TWVNfRElTUEFUQ0hfT0ZGXHQwXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYz0xMzY9aW50IG1haW4odm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX2JlbmNobWFyay5jLTE2Mi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmM6MTYzOlx0aWYgKHByY3RsKFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0gsIFBSX1NZU19ESVNQQVRDSF9PTixcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmMtMTY0LVx0XHQgIHN5c2NhbGxfZGlzcGF0Y2hlcl9zdGFydCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0xOC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjE5OiNpZm5kZWYgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MjA6IyBkZWZpbmUgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFx0NTlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTIxLSMgZGVmaW5lIFBSX1NZU19ESVNQQVRDSF9PRkZcdDBcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy00NS0gKlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6NDY6ICogLSBkaXNwYXRjaF90cmlnZ2VyX3NpZ3N5czogVmVyaWZ5IGlmIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0ggaXNcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTQ3LSAqICAgYWJsZSB0byB0cmlnZ2VyIFNJR1NZUyBvbiBhIHN5c2NhbGwuXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9NjU9VEVTVF9TSUdOQUwoZGlzcGF0Y2hfdHJpZ2dlcl9zaWdzeXMsIFNJR1NZUylcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy03My1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjc0Olx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX0VYQ0xVU0lWRV9PTiwgMCwgMCwgXHUwMDI2c2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTc1LVx0QVNTRVJUX0VRKDAsIHJldCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6NzY6XHRcdFRIX0xPRyhcJiMzNDtLZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBDT05GSUdfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTc3LVx0fVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jPTg4PXN0YXRpYyB2b2lkIHByY3RsX3ZhbGlkKHN0cnVjdCBfX3Rlc3RfbWV0YWRhdGEgKl9tZXRhZGF0YSxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy05MS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzo5MjpcdEVYUEVDVF9FUSgwLCBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBvcCwgb2ZmLCBzaXplLCBzZWwpKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTkzLX1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYz05NT1zdGF0aWMgdm9pZCBwcmN0bF9pbnZhbGlkKHN0cnVjdCBfX3Rlc3RfbWV0YWRhdGEgKl9tZXRhZGF0YSxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy05OC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzo5OTpcdEVYUEVDVF9FUSgtMSwgcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgb3AsIG9mZiwgc2l6ZSwgc2VsKSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0xMDAtXHRFWFBFQ1RfRVEoZXJyLCBlcnJubyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MjEwPVRFU1QoZGlzcGF0Y2hfYW5kX3JldHVybilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yMjMtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzoyMjQ6XHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfRVhDTFVTSVZFX09OLCAwLCAwLCBcdTAwMjZnbG9iX3NlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yMjUtXHRBU1NFUlRfRVEoMCwgcmV0KSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzoyMjY6XHRcdFRIX0xPRyhcJiMzNDtLZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBDT05GSUdfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTIyNy1cdH1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYz0yNTU9VEVTVF9TSUdOQUwoYmFkX3NlbGVjdG9yLCBTSUdTWVMpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMjc5LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MjgwOlx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX0VYQ0xVU0lWRV9PTiwgMCwgMCwgXHUwMDI2Z2xvYl9zZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMjgxLVx0QVNTRVJUX0VRKDAsIHJldCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MjgyOlx0XHRUSF9MT0coXCYjMzQ7S2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yODMtXHR9XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9Mjk4PVRFU1QoZGlzYWJsZV9kaXNwYXRjaClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMDMtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzozMDQ6XHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfRVhDTFVTSVZFX09OLCAwLCAwLCBcdTAwMjZzZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzA1LVx0QVNTRVJUX0VRKDAsIHJldCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MzA2Olx0XHRUSF9MT0coXCYjMzQ7S2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMDctXHR9XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzExLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MzEyOlx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX09GRiwgMCwgMCwgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMTMtXHRFWFBFQ1RfRVEoMCwgcmV0KSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MzI2PVRFU1QoZGlyZWN0X2Rpc3BhdGNoX3JhbmdlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTMzNS1cdCAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MzM2Olx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX0VYQ0xVU0lWRV9PTiwgMCwgLTFMLCBcdTAwMjZzZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzM3LVx0QVNTRVJUX0VRKDAsIHJldCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MzM4Olx0XHRUSF9MT0coXCYjMzQ7S2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMzktXHR9XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MzQ5PXN0YXRpYyB2b2lkIHRlc3RfcmFuZ2Uoc3RydWN0IF9fdGVzdF9tZXRhZGF0YSAqX21ldGFkYXRhLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTM1NC1cdFNZU0NBTExfRElTUEFUQ0hfT0ZGKGdsb2Jfc2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjM1NTpcdEVYUEVDVF9FUSgwLCBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBvcCwgb2ZmLCBzaXplLCBcdTAwMjZnbG9iX3NlbCkpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzU2LVx0U1lTQ0FMTF9ESVNQQVRDSF9PTihnbG9iX3NlbCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMjI6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwMDQKCQkJCQkJCW91dHB1dDogMTI2CgkJCQkJCQl0aG91Z2h0czogMjM5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU3lzY2FsbCBVc2VyIERpc3BhdGNoIFBhdGNoIGZvciBhcm02NCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBlbmFibGluZyBgU1lTQ0FMTF9VU0VSX0RJU1BBVENIYCBvbiBhcm02NC4gIFRoZSBtYWluIGRlcGVuZGVuY3kgaXMgdGhhdCBgQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hgIGlzIGVuYWJsZWQsIHdoaWNoIHRoaXMgcGF0Y2ggZG9lcy4gIENydWNpYWxseSwgaXQgYWxzbyBlbmFibGVzIGBHRU5FUklDX0VOVFJZYCB3aGljaCBpcyBlc3NlbnRpYWwgZm9yIHRoaXMgZmVhdHVyZS4gIEJlY2F1c2Ugb2YgdGhpcywgd2UgKm11c3QqIGVuc3VyZSB0aGF0IGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgIGlzIGV4cGxpY2l0bHkgZW5hYmxlZC4gIEFsc28sIHNpbmNlIGFybTY0IGlzIG5vdyB1c2luZyBgR0VORVJJQ19FTlRSWWAgdGhlIGNvbmZpZyBpcyBubyBsb25nZXIgbmVlZGVkLgoKTG9va2luZyBhdCB0aGUgY29kZSBjaGFuZ2VzLCB0aGUgaGVhcnQgb2YgdGhlIHN5c2NhbGwgZW50cnkgaXMgYGVsMF9zdmNfY29tbW9uYCwgYnV0IHRoYXQmIzM5O3MgYSAqaG90IHBhdGgqLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBub3QgdXNlZnVsIHRvIGRpcmVjdGx5IGZ1enouICBUaGUgcGF0Y2ggcmVwbGFjZXMgdHJhY2luZyB3aXRoIGBzeXNjYWxsX3RyYWNlX2VudGVyYCBhbmQgYHN5c2NhbGxfZXhpdF90b191c2VyX21vZGVfd29ya2AsIGFuZCB0aGUgcHRyYWNlIGxvZ2ljIGhhcyBjaGFuZ2VkIHRvIHJlcG9ydCBzeXNjYWxsIGVudHJ5IGFuZCBleGl0LgoKVGhlIGtleSBuZXcgZnVuY3Rpb24gaXMgYGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybmAgaW4gYGFyY2gvYXJtNjQva2VybmVsL3Zkc28uY2AuIFRoaXMgaXMgZXNzZW50aWFsIGJlY2F1c2UgaXQgY2hlY2tzIGlmIGEgc3lzY2FsbCBpcyBhIGBzaWdyZXR1cm5gLCB3aGljaCBpcyBoYW5kbGVkIGRpZmZlcmVudGx5IHVuZGVyIHN5c2NhbGwgdXNlciBkaXNwYXRjaC4gVGhpcyBmdW5jdGlvbiBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCkZ1cnRoZXJtb3JlLCBjaGFuZ2VzIHdlcmUgbWFkZSB0byBgdXNlcl9lbmFibGVfc2luZ2xlX3N0ZXBgIGFuZCBgdXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwYCBpbiBgYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuY2AuICBUaGVzZSBhcmVuJiMzOTt0IGhvdC1wYXRoIGZ1bmN0aW9ucywgYnV0IHRoZXkmIzM5O3JlIHN0aWxsIHJlbGV2YW50IHRvIHB0cmFjZSBhbmQgc2luZ2xlLXN0ZXBwaW5nLCBzbyB0aGV5IHNob3VsZCBiZSB0YXJnZXRlZCB0b28uCgpOb3csIGNvbmNlcm5pbmcgY29uZmlndXJhdGlvbnMsIGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgIGlzIGVzc2VudGlhbC4gV2Ugc2hvdWxkIGFsc28gaW5jbHVkZSBgQ09NUEFUYCBiZWNhdXNlIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gIHVzZXMgaXQuCgpTbywgaW4gY29uY2x1c2lvbiwgdGhlIGltcG9ydGFudCB0aGluZ3MgdG8gbG9vayBhdCBmb3IgZnV6emluZyBhcmU6CgoqICAgKipgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuYCoqOiAgVGhpcyBpcyB0aGUgc2luZ2xlIG1vc3QgaW1wb3J0YW50IGZ1bmN0aW9uIGFkZGVkIGFuZCBjZW50cmFsIHRvIGNvcnJlY3QgZnVuY3Rpb25hbGl0eS4KKiAgICoqYHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwYCoqOiAgUmVsZXZhbnQgdG8gcHRyYWNlIGFuZCBzaW5nbGUtc3RlcHBpbmcgaW50ZXJhY3Rpb24uCiogICAqKmB1c2VyX2Rpc2FibGVfc2luZ2xlX3N0ZXBgKio6ICBQYXJ0IG9mIHNpbmdsZSBzdGVwcGluZyBsb2dpYy4KCkFsc28gdGhlIGZvbGxvd2luZyBjb25maWdzIHNob3VsZCBiZSBleHBsaWNpdGx5IGVuYWJsZWQ6CgoqICAgKipgU1lTQ0FMTF9VU0VSX0RJU1BBVENIYCoqOiBSZXF1aXJlZCBmb3IgdGhpcyBwYXRjaCYjMzk7cyBjb3JlIGZ1bmN0aW9uYWxpdHkuCiogICAqKmBDT01QQVRgKio6IHRvIHRlc3QgdGhlIGNvbXBhdCBwYXRoIGluIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTWVNDQUxMX1VTRVJfRElTUEFUQ0gmIzM0OywKICAgICYjMzQ7Q09NUEFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuJiMzNDssCiAgICAmIzM0O3VzZXJfZW5hYmxlX3NpbmdsZV9zdGVwJiMzNDssCiAgICAmIzM0O3VzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb252ZXJ0cyBhcm02NCB0byB1c2UgdGhlIGdlbmVyaWMgZW50cnkgaW5mcmFzdHJ1Y3R1cmUgYW5kIGFkZHMgc3VwcG9ydCBmb3IgU3lzY2FsbCBVc2VyIERpc3BhdGNoLiBUaGlzIGludm9sdmVzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBzeXNjYWxsIGVudHJ5L2V4aXQgcGF0aHMsIHB0cmFjZSBzaW5nbGUtc3RlcHBpbmcsIGFuZCBWRFNPIHNpZ3JldHVybiBkZXRlY3Rpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NZU0NBTExfVVNFUl9ESVNQQVRDSCYjMzQ7LAogICAgJiMzNDtDT01QQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm4mIzM0OywKICAgICYjMzQ7dXNlcl9lbmFibGVfc2luZ2xlX3N0ZXAmIzM0OywKICAgICYjMzQ7dXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnZlcnRzIGFybTY0IHRvIHVzZSB0aGUgZ2VuZXJpYyBlbnRyeSBpbmZyYXN0cnVjdHVyZSBhbmQgYWRkcyBzdXBwb3J0IGZvciBTeXNjYWxsIFVzZXIgRGlzcGF0Y2guIFRoaXMgaW52b2x2ZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHN5c2NhbGwgZW50cnkvZXhpdCBwYXRocywgcHRyYWNlIHNpbmdsZS1zdGVwcGluZywgYW5kIFZEU08gc2lncmV0dXJuIGRldGVjdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDIyOjEwOjM3LjY0ODcwNTk1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNDk0Mzg0MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNZU0NBTExfVVNFUl9ESVNQQVRDSFwiLFxuICAgIFwiQ09NUEFUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuXCIsXG4gICAgXCJ1c2VyX2VuYWJsZV9zaW5nbGVfc3RlcFwiLFxuICAgIFwidXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29udmVydHMgYXJtNjQgdG8gdXNlIHRoZSBnZW5lcmljIGVudHJ5IGluZnJhc3RydWN0dXJlIGFuZCBhZGRzIHN1cHBvcnQgZm9yIFN5c2NhbGwgVXNlciBEaXNwYXRjaC4gVGhpcyBpbnZvbHZlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgc3lzY2FsbCBlbnRyeS9leGl0IHBhdGhzLCBwdHJhY2Ugc2luZ2xlLXN0ZXBwaW5nLCBhbmQgVkRTTyBzaWdyZXR1cm4gZGV0ZWN0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMjoxMDozNy42NDg3MTE1MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTYzMzgyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYzY2YwNGIxY2RlOTBkOTIwNGM2OTdjNTYyNTI0MTg3YTM5YzJkZjFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMjI6MTA6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9LY29uZmlnIGIvYXJjaC9hcm02NC9LY29uZmlnXFxuaW5kZXggZmIxNTAzN2I1ZTNjN2UuLmVmZWYwNzg1N2QzODg0IDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQvS2NvbmZpZ1xcbisrKyBiL2FyY2gvYXJtNjQvS2NvbmZpZ1xcbkBAIC04Nyw2ICs4Nyw3IEBAIGNvbmZpZyBBUk02NFxcbiBcXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9TTVRcXG4gXFx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU0NIRURfQ0xVU1RFUlxcbiBcXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9NQ1xcbitcXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG4gXFx0c2VsZWN0IEFSQ0hfV0FOVF9CQVRDSEVEX1VOTUFQX1RMQl9GTFVTSFxcbiBcXHRzZWxlY3QgQVJDSF9XQU5UX0NPTVBBVF9JUENfUEFSU0VfVkVSU0lPTiBpZiBDT01QQVRcXG4gXFx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVRcXG5AQCAtMTI5LDkgKzEzMCw5IEBAIGNvbmZpZyBBUk02NFxcbiBcXHRzZWxlY3QgR0VORVJJQ19DUFVfREVWSUNFU1xcbiBcXHRzZWxlY3QgR0VORVJJQ19DUFVfVlVMTkVSQUJJTElUSUVTXFxuIFxcdHNlbGVjdCBHRU5FUklDX0VBUkxZX0lPUkVNQVBcXG4rXFx0c2VsZWN0IEdFTkVSSUNfRU5UUllcXG4gXFx0c2VsZWN0IEdFTkVSSUNfSURMRV9QT0xMX1NFVFVQXFxuIFxcdHNlbGVjdCBHRU5FUklDX0lPUkVNQVBcXG4tXFx0c2VsZWN0IEdFTkVSSUNfSVJRX0VOVFJZXFxuIFxcdHNlbGVjdCBHRU5FUklDX0lSUV9JUElcXG4gXFx0c2VsZWN0IEdFTkVSSUNfSVJRX0tFWEVDX0NMRUFSX1ZNX0ZPUldBUkRcXG4gXFx0c2VsZWN0IEdFTkVSSUNfSVJRX1BST0JFXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oXFxuaW5kZXggZDI3NzlkNjA0YzdiZTIuLmE4YjIzMmM1YzZkOWY4IDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oXFxuQEAgLTI5Myw2ICsyOTMsNyBAQCBzdGF0aWMgaW5saW5lIGludCBhcmNoX2NoZWNrX2VsZih2b2lkICplaGRyLCBib29sIGhhc19pbnRlcnAsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitleHRlcm4gYm9vbCBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm4oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbiAjZW5kaWYgLyogIV9fQVNTRU1CTEVSX18gKi9cXG4gXFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxcbmluZGV4IGNhYjhjZDc4ZjY5Mzg1Li4yYjA1M2FjYmUxMGZlYSAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oXFxuKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxcbkBAIC0zLDE0ICszLDIxIEBAXFxuICNpZm5kZWYgX0FTTV9BUk02NF9FTlRSWV9DT01NT05fSFxcbiAjZGVmaW5lIF9BU01fQVJNNjRfRU5UUllfQ09NTU9OX0hcXG4gXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHJhY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RocmVhZF9pbmZvLmhcXHUwMDNlXFxuIFxcbisjaW5jbHVkZSBcXHUwMDNjYXNtL2NvbXBhdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9kYWlmZmxhZ3MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9mcHNpbWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9tdGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9zdGFja3RyYWNlLmhcXHUwMDNlXFxuIFxcbitlbnVtIHB0cmFjZV9zeXNjYWxsX2RpciB7XFxuK1xcdFBUUkFDRV9TWVNDQUxMX0VOVEVSID0gMCxcXG4rXFx0UFRSQUNFX1NZU0NBTExfRVhJVCxcXG4rfTtcXG4rXFxuICNkZWZpbmUgQVJDSF9FWElUX1RPX1VTRVJfTU9ERV9XT1JLIChfVElGX01URV9BU1lOQ19GQVVMVCB8IF9USUZfRk9SRUlHTl9GUFNUQVRFKVxcbiBcXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGFyY2hfZXhpdF90b191c2VyX21vZGVfd29yayhzdHJ1Y3QgcHRfcmVncyAqcmVncyxcXG5AQCAtNTQsNCArNjEsNzQgQEAgc3RhdGljIGlubGluZSBib29sIGFyY2hfaXJxZW50cnlfZXhpdF9uZWVkX3Jlc2NoZWQodm9pZClcXG4gXFxuICNkZWZpbmUgYXJjaF9pcnFlbnRyeV9leGl0X25lZWRfcmVzY2hlZCBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkXFxuIFxcbitzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcgcHRyYWNlX3NhdmVfcmVnKHN0cnVjdCBwdF9yZWdzICpyZWdzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIGRpcixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBpbnQgKnJlZ25vKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnO1xcbitcXG4rXFx0LypcXG4rXFx0ICogV2UgaGF2ZSBzb21lIEFCSSB3ZWlyZG5lc3MgaGVyZSBpbiB0aGUgd2F5IHRoYXQgd2UgaGFuZGxlIHN5c2NhbGxcXG4rXFx0ICogZXhpdCBzdG9wcyBiZWNhdXNlIHdlIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoZSBzdG9wIGhhcyBiZWVuXFxuK1xcdCAqIHNpZ25hbGxlZCBmcm9tIHN5c2NhbGwgZW50cnkgb3Igc3lzY2FsbCBleGl0IGJ5IGNsb2JiZXJpbmcgYSBnZW5lcmFsXFxuK1xcdCAqIHB1cnBvc2UgcmVnaXN0ZXIgKGlwL3IxMiBmb3IgQUFyY2gzMiwgeDcgZm9yIEFBcmNoNjQpIGluIHRoZSB0cmFjZWVcXG4rXFx0ICogYW5kIHJlc3RvcmluZyBpdHMgb2xkIHZhbHVlIGFmdGVyIHRoZSBzdG9wLiBUaGlzIG1lYW5zIHRoYXQ6XFxuK1xcdCAqXFxuK1xcdCAqIC0gQW55IHdyaXRlcyBieSB0aGUgdHJhY2VyIHRvIHRoaXMgcmVnaXN0ZXIgZHVyaW5nIHRoZSBzdG9wIGFyZVxcbitcXHQgKiAgIGlnbm9yZWQvZGlzY2FyZGVkLlxcbitcXHQgKlxcbitcXHQgKiAtIFRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIHJlZ2lzdGVyIGlzIG5vdCBhdmFpbGFibGUgZHVyaW5nIHRoZSBzdG9wLFxcbitcXHQgKiAgIHNvIHRoZSB0cmFjZXIgY2Fubm90IHNhdmUgaXQgYW5kIHJlc3RvcmUgaXQgbGF0ZXIuXFxuK1xcdCAqXFxuK1xcdCAqIC0gU3lzY2FsbCBzdG9wcyBiZWhhdmUgZGlmZmVyZW50bHkgdG8gc2VjY29tcCBhbmQgcHNldWRvLXN0ZXAgdHJhcHNcXG4rXFx0ICogICAodGhlIGxhdHRlciBkbyBub3Qgbm9iYmxlIGFueSByZWdpc3RlcnMpLlxcbitcXHQgKi9cXG4rXFx0KnJlZ25vID0gKGlzX2NvbXBhdF90YXNrKCkgPyAxMiA6IDcpO1xcbitcXHRzYXZlZF9yZWcgPSByZWdzLVxcdTAwM2VyZWdzWypyZWdub107XFxuK1xcdHJlZ3MtXFx1MDAzZXJlZ3NbKnJlZ25vXSA9IGRpcjtcXG4rXFxuK1xcdHJldHVybiBzYXZlZF9yZWc7XFxuK31cXG4rXFxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XFxuK1xcdGJvb2wgcGVybWl0O1xcbitcXHRpbnQgcmVnbm87XFxuK1xcbitcXHRzYXZlZF9yZWcgPSBwdHJhY2Vfc2F2ZV9yZWcocmVncywgUFRSQUNFX1NZU0NBTExfRU5URVIsIFxcdTAwMjZyZWdubyk7XFxuK1xcdHBlcm1pdCA9IHB0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkocmVncyk7XFxuK1xcdGlmICghcGVybWl0KVxcbitcXHRcXHRmb3JnZXRfc3lzY2FsbChyZWdzKTtcXG4rXFx0cmVncy1cXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XFxuK1xcbitcXHRyZXR1cm4gcGVybWl0O1xcbit9XFxuK1xcbisjZGVmaW5lIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeSBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnlcXG4rXFxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgaW50IHN0ZXApXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XFxuK1xcdGludCByZWdubztcXG4rXFxuK1xcdHNhdmVkX3JlZyA9IHB0cmFjZV9zYXZlX3JlZyhyZWdzLCBQVFJBQ0VfU1lTQ0FMTF9FWElULCBcXHUwMDI2cmVnbm8pO1xcbitcXHRpZiAoIXN0ZXApIHtcXG4rXFx0XFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMCk7XFxuK1xcdFxcdHJlZ3MtXFx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRyZWdzLVxcdTAwM2VyZWdzW3JlZ25vXSA9IHNhdmVkX3JlZztcXG4rXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIFNpZ25hbCBhIHBzZXVkby1zdGVwIGV4Y2VwdGlvbiBzaW5jZSB3ZSBhcmUgc3RlcHBpbmcgYnV0XFxuK1xcdFxcdCAqIHRyYWNlciBtb2RpZmljYXRpb25zIHRvIHRoZSByZWdpc3RlcnMgbWF5IGhhdmUgcmV3b3VuZCB0aGVcXG4rXFx0XFx0ICogc3RhdGUgbWFjaGluZS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHB0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MsIDEpO1xcbitcXHR9XFxuK31cXG4rXFxuKyNkZWZpbmUgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdCBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0XFxuK1xcbiAjZW5kaWYgLyogX0FTTV9BUk02NF9FTlRSWV9DT01NT05fSCAqL1xcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c2NhbGwuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oXFxuaW5kZXggNWU0YzdmYzQ0ZjczMTUuLmUzZTcxNjU3NTg0NjQ2IDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oXFxuKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNjYWxsLmhcXG5AQCAtOCw2ICs4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY3VhcGkvbGludXgvYXVkaXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBhdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yc2VxLmhcXHUwMDNlXFxuIFxcbiB0eXBlZGVmIGxvbmcgKCpzeXNjYWxsX2ZuX3QpKGNvbnN0IHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcXG4gXFxuQEAgLTExOSw4ICsxMjAsNCBAQCBzdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX2dldF9hcmNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcXG4gXFxuIFxcdHJldHVybiBBVURJVF9BUkNIX0FBUkNINjQ7XFxuIH1cXG4tXFxuLWludCBzeXNjYWxsX3RyYWNlX2VudGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcXG4tdm9pZCBzeXNjYWxsX3RyYWNlX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi1cXG4gI2VuZGlmXFx0LyogX19BU01fU1lTQ0FMTF9IICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxcbmluZGV4IDVkN2ZlM2UxNTNjODUwLi4zZjYyMWJhMGY5NjEzNyAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcXG5AQCAtNDYsNiArNDYsNyBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8ge1xcbiBcXHR1NjRcXHRcXHRcXHRtcGFtX3BhcnRpZF9wbWc7XFxuICNlbmRpZlxcbiBcXHR1MzJcXHRcXHRcXHRjcHU7XFxuK1xcdHVuc2lnbmVkIGxvbmdcXHRcXHRzeXNjYWxsX3dvcms7ICAgLyogU1lTQ0FMTF9XT1JLXyBmbGFncyAqL1xcbiB9O1xcbiBcXG4gI2RlZmluZSB0aHJlYWRfc2F2ZWRfcGModHNrKVxcdFxcXFxcXG5AQCAtNjgsMTEgKzY5LDYgQEAgdm9pZCBhcmNoX3NldHVwX25ld19leGVjKHZvaWQpO1xcbiAjZGVmaW5lIFRJRl9VUFJPQkVcXHRcXHQ1XFx0LyogdXByb2JlIGJyZWFrcG9pbnQgb3Igc2luZ2xlc3RlcCAqL1xcbiAjZGVmaW5lIFRJRl9NVEVfQVNZTkNfRkFVTFRcXHQ2XFx0LyogTVRFIEFzeW5jaHJvbm91cyBUYWcgQ2hlY2sgRmF1bHQgKi9cXG4gI2RlZmluZSBUSUZfTk9USUZZX1NJR05BTFxcdDdcXHQvKiBzaWduYWwgbm90aWZpY2F0aW9ucyBleGlzdCAqL1xcbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFXFx0OFxcdC8qIHN5c2NhbGwgdHJhY2UgYWN0aXZlICovXFxuLSNkZWZpbmUgVElGX1NZU0NBTExfQVVESVRcXHQ5XFx0Lyogc3lzY2FsbCBhdWRpdGluZyAqL1xcbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFUE9JTlRcXHQxMFxcdC8qIHN5c2NhbGwgdHJhY2Vwb2ludCBmb3IgZnRyYWNlICovXFxuLSNkZWZpbmUgVElGX1NFQ0NPTVBcXHRcXHQxMVxcdC8qIHN5c2NhbGwgc2VjdXJlIGNvbXB1dGluZyAqL1xcbi0jZGVmaW5lIFRJRl9TWVNDQUxMX0VNVVxcdFxcdDEyXFx0Lyogc3lzY2FsbCBlbXVsYXRpb24gYWN0aXZlICovXFxuICNkZWZpbmUgVElGX1BBVENIX1BFTkRJTkdcXHQxM1xcdC8qIHBlbmRpbmcgbGl2ZSBwYXRjaGluZyB1cGRhdGUgKi9cXG4gI2RlZmluZSBUSUZfTUVNRElFXFx0XFx0MThcXHQvKiBpcyB0ZXJtaW5hdGluZyBkdWUgdG8gT09NIGtpbGxlciAqL1xcbiAjZGVmaW5lIFRJRl9GUkVFWkVcXHRcXHQxOVxcbkBAIC05NCwyNCArOTAsMTQgQEAgdm9pZCBhcmNoX3NldHVwX25ld19leGVjKHZvaWQpO1xcbiAjZGVmaW5lIF9USUZfTkVFRF9SRVNDSEVEX0xBWllcXHQoMSBcXHUwMDNjXFx1MDAzYyBUSUZfTkVFRF9SRVNDSEVEX0xBWlkpXFxuICNkZWZpbmUgX1RJRl9OT1RJRllfUkVTVU1FXFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX05PVElGWV9SRVNVTUUpXFxuICNkZWZpbmUgX1RJRl9GT1JFSUdOX0ZQU1RBVEVcXHQoMSBcXHUwMDNjXFx1MDAzYyBUSUZfRk9SRUlHTl9GUFNUQVRFKVxcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9UUkFDRVxcdCgxIFxcdTAwM2NcXHUwMDNjIFRJRl9TWVNDQUxMX1RSQUNFKVxcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9BVURJVFxcdCgxIFxcdTAwM2NcXHUwMDNjIFRJRl9TWVNDQUxMX0FVRElUKVxcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9UUkFDRVBPSU5UXFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX1NZU0NBTExfVFJBQ0VQT0lOVClcXG4tI2RlZmluZSBfVElGX1NFQ0NPTVBcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyBUSUZfU0VDQ09NUClcXG4tI2RlZmluZSBfVElGX1NZU0NBTExfRU1VXFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX1NZU0NBTExfRU1VKVxcbiAjZGVmaW5lIF9USUZfUEFUQ0hfUEVORElOR1xcdCgxIFxcdTAwM2NcXHUwMDNjIFRJRl9QQVRDSF9QRU5ESU5HKVxcbiAjZGVmaW5lIF9USUZfVVBST0JFXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX1VQUk9CRSlcXG4tI2RlZmluZSBfVElGX1NJTkdMRVNURVBcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyBUSUZfU0lOR0xFU1RFUClcXG4gI2RlZmluZSBfVElGXzMyQklUXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGXzMyQklUKVxcbiAjZGVmaW5lIF9USUZfU1ZFXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX1NWRSlcXG4gI2RlZmluZSBfVElGX01URV9BU1lOQ19GQVVMVFxcdCgxIFxcdTAwM2NcXHUwMDNjIFRJRl9NVEVfQVNZTkNfRkFVTFQpXFxuICNkZWZpbmUgX1RJRl9OT1RJRllfU0lHTkFMXFx0KDEgXFx1MDAzY1xcdTAwM2MgVElGX05PVElGWV9TSUdOQUwpXFxuICNkZWZpbmUgX1RJRl9UU0NfU0lHU0VHVlxcdCgxIFxcdTAwM2NcXHUwMDNjIFRJRl9UU0NfU0lHU0VHVilcXG4gXFxuLSNkZWZpbmUgX1RJRl9TWVNDQUxMX1dPUktcXHQoX1RJRl9TWVNDQUxMX1RSQUNFIHwgX1RJRl9TWVNDQUxMX0FVRElUIHwgXFxcXFxcbi1cXHRcXHRcXHRcXHQgX1RJRl9TWVNDQUxMX1RSQUNFUE9JTlQgfCBfVElGX1NFQ0NPTVAgfCBcXFxcXFxuLVxcdFxcdFxcdFxcdCBfVElGX1NZU0NBTExfRU1VKVxcbi1cXG4gI2lmZGVmIENPTkZJR19TSEFET1dfQ0FMTF9TVEFDS1xcbiAjZGVmaW5lIElOSVRfU0NTXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQuc2NzX2Jhc2VcXHQ9IGluaXRfc2hhZG93X2NhbGxfc3RhY2ssXFx0XFx0XFx0XFxcXFxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jIGIvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuY1xcbmluZGV4IDI5MzA3NjQyZjRjOTA0Li5jNTM2ODM4MzkxNTUzNiAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jXFxuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuY1xcbkBAIC0zODUsMTEgKzM4NSwxOSBAQCB2b2lkIHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcXG4gXFxuIFxcdGlmICghdGVzdF9hbmRfc2V0X3RpX3RocmVhZF9mbGFnKHRpLCBUSUZfU0lOR0xFU1RFUCkpXFxuIFxcdFxcdHNldF9yZWdzX3Nwc3Jfc3ModGFza19wdF9yZWdzKHRhc2spKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEVuc3VyZSB0aGF0IHRoZSBnZW5lcmljIGVudHJ5IGNvZGUgdHJpZ2dlcnMgYSB0cmFwIG9uY2Ugc3RlcHBpbmdcXG4rXFx0ICogb3V0IG9mIGEgc3lzdGVtIGNhbGwgcHJpb3IgdG8gZXhlY3V0aW5nIGFueSB1c2VyIGluc3RydWN0aW9uLFxcbitcXHQgKiBhcyB0aGUgZ2VuZXJpYyBlbnRyeSBjb2RlIGRvZXMgbm90IG5hdGl2ZWx5IGNoZWNrIGZvciBUSUZfU0lOR0xFU1RFUC5cXG4rXFx0ICovXFxuK1xcdHNldF90YXNrX3N5c2NhbGxfd29yayh0YXNrLCBTWVNDQUxMX0VYSVRfVFJBUCk7XFxuIH1cXG4gTk9LUFJPQkVfU1lNQk9MKHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKTtcXG4gXFxuIHZvaWQgdXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcXG4ge1xcbiBcXHRjbGVhcl90aV90aHJlYWRfZmxhZyh0YXNrX3RocmVhZF9pbmZvKHRhc2spLCBUSUZfU0lOR0xFU1RFUCk7XFxuK1xcdGNsZWFyX3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfRVhJVF9UUkFQKTtcXG4gfVxcbiBOT0tQUk9CRV9TWU1CT0wodXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uY1xcbmluZGV4IGNlYjRlYjExMjMyYTYxLi45ZWFjNzY4MDRiZDlhZSAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uY1xcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL2VudHJ5LWNvbW1vbi5jXFxuQEAgLTYsNyArNiw3IEBAXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbnRleHRfdHJhY2tpbmcuaFxcdTAwM2VcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lycS1lbnRyeS1jb21tb24uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2VudHJ5LWNvbW1vbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2FzYW4uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbmthZ2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpdmVwYXRjaC5oXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYyBiL2FyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jXFxuaW5kZXggNTcwOWU5ZDNjMzIxYTUuLjYxYTY2ODY4Mjk0NzE1IDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jXFxuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmNcXG5AQCAtOCw3ICs4LDYgQEBcXG4gICogQ29weXJpZ2h0IChDKSAyMDEyIEFSTSBMdGQuXFxuICAqL1xcbiBcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F1ZGl0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jb21wYXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQvc2lnbmFsLmhcXHUwMDNlXFxuQEAgLTE4LDcgKzE3LDYgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NtcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRyYWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2VyLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWNjb21wLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWN1cml0eS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5pdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2lnbmFsLmhcXHUwMDNlXFxuQEAgLTI4LDcgKzI2LDYgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2h3X2JyZWFrcG9pbnQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ3NldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZWxmLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9yc2VxLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2NvbXBhdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFxcdTAwM2VcXG5AQCAtMzgsMTMgKzM1LDkgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9tdGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9wb2ludGVyX2F1dGguaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9zdGFja3RyYWNlLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2Nhc20vc3lzY2FsbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3RyYXBzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vc3lzdGVtX21pc2MuaFxcdTAwM2VcXG4gXFxuLSNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UU1xcbi0jaW5jbHVkZSBcXHUwMDNjdHJhY2UvZXZlbnRzL3N5c2NhbGxzLmhcXHUwMDNlXFxuLVxcbiBzdHJ1Y3QgcHRfcmVnc19vZmZzZXQge1xcbiBcXHRjb25zdCBjaGFyICpuYW1lO1xcbiBcXHRpbnQgb2Zmc2V0O1xcbkBAIC0yMzM5LDExNCArMjMzMiw2IEBAIGxvbmcgYXJjaF9wdHJhY2Uoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwgbG9uZyByZXF1ZXN0LFxcbiBcXHRyZXR1cm4gcHRyYWNlX3JlcXVlc3QoY2hpbGQsIHJlcXVlc3QsIGFkZHIsIGRhdGEpO1xcbiB9XFxuIFxcbi1lbnVtIHB0cmFjZV9zeXNjYWxsX2RpciB7XFxuLVxcdFBUUkFDRV9TWVNDQUxMX0VOVEVSID0gMCxcXG4tXFx0UFRSQUNFX1NZU0NBTExfRVhJVCxcXG4tfTtcXG4tXFxuLXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBwdHJhY2Vfc2F2ZV9yZWcoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZW51bSBwdHJhY2Vfc3lzY2FsbF9kaXIgZGlyLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGludCAqcmVnbm8pXFxuLXtcXG4tXFx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XFxuLVxcbi1cXHQvKlxcbi1cXHQgKiBXZSBoYXZlIHNvbWUgQUJJIHdlaXJkbmVzcyBoZXJlIGluIHRoZSB3YXkgdGhhdCB3ZSBoYW5kbGUgc3lzY2FsbFxcbi1cXHQgKiBleGl0IHN0b3BzIGJlY2F1c2Ugd2UgaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhlIHN0b3AgaGFzIGJlZW5cXG4tXFx0ICogc2lnbmFsbGVkIGZyb20gc3lzY2FsbCBlbnRyeSBvciBzeXNjYWxsIGV4aXQgYnkgY2xvYmJlcmluZyBhIGdlbmVyYWxcXG4tXFx0ICogcHVycG9zZSByZWdpc3RlciAoaXAvcjEyIGZvciBBQXJjaDMyLCB4NyBmb3IgQUFyY2g2NCkgaW4gdGhlIHRyYWNlZVxcbi1cXHQgKiBhbmQgcmVzdG9yaW5nIGl0cyBvbGQgdmFsdWUgYWZ0ZXIgdGhlIHN0b3AuIFRoaXMgbWVhbnMgdGhhdDpcXG4tXFx0ICpcXG4tXFx0ICogLSBBbnkgd3JpdGVzIGJ5IHRoZSB0cmFjZXIgdG8gdGhpcyByZWdpc3RlciBkdXJpbmcgdGhlIHN0b3AgYXJlXFxuLVxcdCAqICAgaWdub3JlZC9kaXNjYXJkZWQuXFxuLVxcdCAqXFxuLVxcdCAqIC0gVGhlIGFjdHVhbCB2YWx1ZSBvZiB0aGUgcmVnaXN0ZXIgaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgdGhlIHN0b3AsXFxuLVxcdCAqICAgc28gdGhlIHRyYWNlciBjYW5ub3Qgc2F2ZSBpdCBhbmQgcmVzdG9yZSBpdCBsYXRlci5cXG4tXFx0ICpcXG4tXFx0ICogLSBTeXNjYWxsIHN0b3BzIGJlaGF2ZSBkaWZmZXJlbnRseSB0byBzZWNjb21wIGFuZCBwc2V1ZG8tc3RlcCB0cmFwc1xcbi1cXHQgKiAgICh0aGUgbGF0dGVyIGRvIG5vdCBub2JibGUgYW55IHJlZ2lzdGVycykuXFxuLVxcdCAqL1xcbi1cXHQqcmVnbm8gPSAoaXNfY29tcGF0X3Rhc2soKSA/IDEyIDogNyk7XFxuLVxcdHNhdmVkX3JlZyA9IHJlZ3MtXFx1MDAzZXJlZ3NbKnJlZ25vXTtcXG4tXFx0cmVncy1cXHUwMDNlcmVnc1sqcmVnbm9dID0gZGlyO1xcbi1cXG4tXFx0cmV0dXJuIHNhdmVkX3JlZztcXG4tfVxcbi1cXG4tc3RhdGljIGludCByZXBvcnRfc3lzY2FsbF9lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4te1xcbi1cXHR1bnNpZ25lZCBsb25nIHNhdmVkX3JlZztcXG4tXFx0aW50IHJlZ25vLCByZXQ7XFxuLVxcbi1cXHRzYXZlZF9yZWcgPSBwdHJhY2Vfc2F2ZV9yZWcocmVncywgUFRSQUNFX1NZU0NBTExfRU5URVIsIFxcdTAwMjZyZWdubyk7XFxuLVxcdHJldCA9ICFwdHJhY2VfcmVwb3J0X3N5c2NhbGxfcGVybWl0X2VudHJ5KHJlZ3MpO1xcbi1cXHRpZiAocmV0KVxcbi1cXHRcXHRmb3JnZXRfc3lzY2FsbChyZWdzKTtcXG4tXFx0cmVncy1cXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCByZXBvcnRfc3lzY2FsbF9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi17XFxuLVxcdHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnO1xcbi1cXHRpbnQgcmVnbm87XFxuLVxcbi1cXHRzYXZlZF9yZWcgPSBwdHJhY2Vfc2F2ZV9yZWcocmVncywgUFRSQUNFX1NZU0NBTExfRVhJVCwgXFx1MDAyNnJlZ25vKTtcXG4tXFx0aWYgKCF0ZXN0X3RocmVhZF9mbGFnKFRJRl9TSU5HTEVTVEVQKSkge1xcbi1cXHRcXHRwdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChyZWdzLCAwKTtcXG4tXFx0XFx0cmVncy1cXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHJlZ3MtXFx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xcbi1cXG4tXFx0XFx0LypcXG4tXFx0XFx0ICogU2lnbmFsIGEgcHNldWRvLXN0ZXAgZXhjZXB0aW9uIHNpbmNlIHdlIGFyZSBzdGVwcGluZyBidXRcXG4tXFx0XFx0ICogdHJhY2VyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlZ2lzdGVycyBtYXkgaGF2ZSByZXdvdW5kIHRoZVxcbi1cXHRcXHQgKiBzdGF0ZSBtYWNoaW5lLlxcbi1cXHRcXHQgKi9cXG4tXFx0XFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMSk7XFxuLVxcdH1cXG4tfVxcbi1cXG4taW50IHN5c2NhbGxfdHJhY2VfZW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLXtcXG4tXFx0dW5zaWduZWQgbG9uZyBmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7XFxuLVxcdGludCByZXQ7XFxuLVxcbi1cXHRpZiAoZmxhZ3MgXFx1MDAyNiAoX1RJRl9TWVNDQUxMX0VNVSB8IF9USUZfU1lTQ0FMTF9UUkFDRSkpIHtcXG4tXFx0XFx0cmV0ID0gcmVwb3J0X3N5c2NhbGxfZW50cnkocmVncyk7XFxuLVxcdFxcdGlmIChyZXQgfHwgKGZsYWdzIFxcdTAwMjYgX1RJRl9TWVNDQUxMX0VNVSkpXFxuLVxcdFxcdFxcdHJldHVybiBOT19TWVNDQUxMO1xcbi1cXHR9XFxuLVxcbi1cXHQvKiBEbyB0aGUgc2VjdXJlIGNvbXB1dGluZyBhZnRlciBwdHJhY2U7IGZhaWx1cmVzIHNob3VsZCBiZSBmYXN0LiAqL1xcbi1cXHRpZiAoIXNlY2NvbXBfcGVybWl0X3N5c2NhbGwoKSlcXG4tXFx0XFx0cmV0dXJuIE5PX1NZU0NBTEw7XFxuLVxcbi1cXHRpZiAodGVzdF90aHJlYWRfZmxhZyhUSUZfU1lTQ0FMTF9UUkFDRVBPSU5UKSlcXG4tXFx0XFx0dHJhY2Vfc3lzX2VudGVyKHJlZ3MsIHJlZ3MtXFx1MDAzZXN5c2NhbGxubyk7XFxuLVxcbi1cXHRhdWRpdF9zeXNjYWxsX2VudHJ5KHJlZ3MtXFx1MDAzZXN5c2NhbGxubywgcmVncy1cXHUwMDNlb3JpZ194MCwgcmVncy1cXHUwMDNlcmVnc1sxXSxcXG4tXFx0XFx0XFx0ICAgIHJlZ3MtXFx1MDAzZXJlZ3NbMl0sIHJlZ3MtXFx1MDAzZXJlZ3NbM10pO1xcbi1cXG4tXFx0cmV0dXJuIHJlZ3MtXFx1MDAzZXN5c2NhbGxubztcXG4tfVxcbi1cXG4tdm9pZCBzeXNjYWxsX3RyYWNlX2V4aXQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLXtcXG4tXFx0dW5zaWduZWQgbG9uZyBmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7XFxuLVxcbi1cXHRhdWRpdF9zeXNjYWxsX2V4aXQocmVncyk7XFxuLVxcbi1cXHRpZiAoZmxhZ3MgXFx1MDAyNiBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVClcXG4tXFx0XFx0dHJhY2Vfc3lzX2V4aXQocmVncywgc3lzY2FsbF9nZXRfcmV0dXJuX3ZhbHVlKGN1cnJlbnQsIHJlZ3MpKTtcXG4tXFxuLVxcdGlmIChmbGFncyBcXHUwMDI2IChfVElGX1NZU0NBTExfVFJBQ0UgfCBfVElGX1NJTkdMRVNURVApKVxcbi1cXHRcXHRyZXBvcnRfc3lzY2FsbF9leGl0KHJlZ3MpO1xcbi1cXG4tXFx0cnNlcV9zeXNjYWxsKHJlZ3MpO1xcbi19XFxuLVxcbiAvKlxcbiAgKiBTUFNSX0VMeCBiaXRzIHdoaWNoIGFyZSBhbHdheXMgYXJjaGl0ZWN0dXJhbGx5IFJFUzAgcGVyIEFSTSBEREkgMDQ4N0QuYS5cXG4gICogV2UgcGVybWl0IHVzZXJzcGFjZSB0byBzZXQgU1NCUyAoQUFyY2g2NCBiaXQgMTIsIEFBcmNoMzIgYml0IDIzKSB3aGljaCBpc1xcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuYyBiL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jXFxuaW5kZXggMzhlNmZhMjA0YzE3YjUuLjA5M2VlYmI5ZDc2NGFjIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jXFxuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmNcXG5AQCAtOCw4ICs4LDggQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jYWNoZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGF0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9lbnRyeS1jb21tb24uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnEtZW50cnktY29tbW9uLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NpZ25hbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZnJlZXplci5oXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmNcXG5pbmRleCAzNThkZGZiZjE0MDFhYy4uMjUzNWNhZTk0MTNkOGEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jXFxuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jXFxuQEAgLTIsNiArMiw3IEBAXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbnRleHRfdHJhY2tpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2VudHJ5LWNvbW1vbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25vc3BlYy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRyYWNlLmhcXHUwMDNlXFxuQEAgLTU0LDE1ICs1NSwxMSBAQCBzdGF0aWMgdm9pZCBpbnZva2Vfc3lzY2FsbChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgaW50IHNjbm8sXFxuIFxcdHN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAwLCByZXQpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIGJvb2wgaGFzX3N5c2NhbGxfd29yayh1bnNpZ25lZCBsb25nIGZsYWdzKVxcbi17XFxuLVxcdHJldHVybiB1bmxpa2VseShmbGFncyBcXHUwMDI2IF9USUZfU1lTQ0FMTF9XT1JLKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsXFxuLVxcdFxcdFxcdCAgIGNvbnN0IHN5c2NhbGxfZm5fdCBzeXNjYWxsX3RhYmxlW10pXFxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBlbDBfc3ZjX2NvbW1vbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IHNjbm8sIGludCBzY19ucixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3lzY2FsbF9mbl90IHN5c2NhbGxfdGFibGVbXSlcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gcmVhZF90aHJlYWRfZmxhZ3MoKTtcXG4rXFx0dW5zaWduZWQgbG9uZyB3b3JrO1xcbiBcXG4gXFx0cmVncy1cXHUwMDNlb3JpZ194MCA9IHJlZ3MtXFx1MDAzZXJlZ3NbMF07XFxuIFxcdHJlZ3MtXFx1MDAzZXN5c2NhbGxubyA9IHNjbm87XFxuQEAgLTk1LDcgKzkyLDggQEAgc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGhhc19zeXNjYWxsX3dvcmsoZmxhZ3MpKSB7XFxuK1xcdHdvcmsgPSBSRUFEX09OQ0UoY3VycmVudF90aHJlYWRfaW5mbygpLVxcdTAwM2VzeXNjYWxsX3dvcmspO1xcbitcXHRpZiAodW5saWtlbHkod29yayBcXHUwMDI2IFNZU0NBTExfV09SS19FTlRFUikpIHtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogVGhlIGRlLWZhY3RvIHN0YW5kYXJkIHdheSB0byBza2lwIGEgc3lzdGVtIGNhbGwgdXNpbmcgcHRyYWNlXFxuIFxcdFxcdCAqIGlzIHRvIHNldCB0aGUgc3lzdGVtIGNhbGwgdG8gLTEgKE5PX1NZU0NBTEwpIGFuZCBzZXQgeDAgdG8gYVxcbkBAIC0xMTMsMjYgKzExMSwxOCBAQCBzdGF0aWMgdm9pZCBlbDBfc3ZjX2NvbW1vbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IHNjbm8sIGludCBzY19ucixcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChzY25vID09IE5PX1NZU0NBTEwpXFxuIFxcdFxcdFxcdHN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAtRU5PU1lTLCAwKTtcXG4tXFx0XFx0c2NubyA9IHN5c2NhbGxfdHJhY2VfZW50ZXIocmVncyk7XFxuK1xcdFxcdGlmICghc3lzY2FsbF90cmFjZV9lbnRlcihyZWdzLCB3b3JrLCBzY25vKSlcXG4rXFx0XFx0XFx0Z290byB0cmFjZV9leGl0O1xcbitcXG4rXFx0XFx0LyogUmVyZWFkIHRoZSBzeXNjYWxsIG51bWJlciBhcyBpdCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQgKi9cXG4rXFx0XFx0c2NubyA9IHN5c2NhbGxfZ2V0X25yKGN1cnJlbnQsIHJlZ3MpO1xcbiBcXHRcXHRpZiAoc2NubyA9PSBOT19TWVNDQUxMKVxcbiBcXHRcXHRcXHRnb3RvIHRyYWNlX2V4aXQ7XFxuIFxcdH1cXG4gXFxuIFxcdGludm9rZV9zeXNjYWxsKHJlZ3MsIHNjbm8sIHNjX25yLCBzeXNjYWxsX3RhYmxlKTtcXG4tXFxuLVxcdC8qXFxuLVxcdCAqIFRoZSB0cmFjaW5nIHN0YXR1cyBtYXkgaGF2ZSBjaGFuZ2VkIHVuZGVyIG91ciBmZWV0LCBzbyB3ZSBoYXZlIHRvXFxuLVxcdCAqIGNoZWNrIGFnYWluLiBIb3dldmVyLCBpZiB3ZSB3ZXJlIHRyYWNpbmcgZW50cnksIHRoZW4gd2UgYWx3YXlzIHRyYWNlXFxuLVxcdCAqIGV4aXQgcmVnYXJkbGVzcywgYXMgdGhlIG9sZCBlbnRyeSBhc3NlbWJseSBkaWQuXFxuLVxcdCAqL1xcbi1cXHRpZiAoIWhhc19zeXNjYWxsX3dvcmsoZmxhZ3MpIFxcdTAwMjZcXHUwMDI2ICFJU19FTkFCTEVEKENPTkZJR19ERUJVR19SU0VRKSkge1xcbi1cXHRcXHRmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7XFxuLVxcdFxcdGlmICghaGFzX3N5c2NhbGxfd29yayhmbGFncykgXFx1MDAyNlxcdTAwMjYgIShmbGFncyBcXHUwMDI2IF9USUZfU0lOR0xFU1RFUCkpXFxuLVxcdFxcdFxcdHJldHVybjtcXG4tXFx0fVxcbi1cXG4gdHJhY2VfZXhpdDpcXG4tXFx0c3lzY2FsbF90cmFjZV9leGl0KHJlZ3MpO1xcbitcXHRzeXNjYWxsX2V4aXRfdG9fdXNlcl9tb2RlX3dvcmsocmVncyk7XFxuIH1cXG4gXFxuIHZvaWQgZG9fZWwwX3N2YyhzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jIGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jXFxuaW5kZXggNTkyZGQ4NjY4ZGU0NjMuLjM3Y2RjN2M3MmUxNWMzIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28uY1xcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28uY1xcbkBAIC0zNDMsMyArMzQzLDE5IEBAIGludCBhcmNoX3NldHVwX2FkZGl0aW9uYWxfcGFnZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgaW50IHVzZXNfaW50ZXJwKVxcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbitcXG4rYm9vbCBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm4oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBsYW5kaW5nX3BhZDtcXG4rXFxuKyNpZmRlZiBDT05GSUdfQ09NUEFUXFxuK1xcdGlmIChpc19jb21wYXRfdGFzaygpKSB7XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgc2lncGFnZSA9ICh1bnNpZ25lZCBsb25nKWN1cnJlbnQtXFx1MDAzZW1tLVxcdTAwM2Vjb250ZXh0LnNpZ3BhZ2U7XFxuK1xcbitcXHRcXHRyZXR1cm4gcmVncy1cXHUwMDNlcGMgXFx1MDAzZT0gc2lncGFnZSBcXHUwMDI2XFx1MDAyNiByZWdzLVxcdTAwM2VwYyBcXHUwMDNjIChzaWdwYWdlICsgUEFHRV9TSVpFKTtcXG4rXFx0fVxcbisjZW5kaWZcXG4rXFx0bGFuZGluZ19wYWQgPSAodW5zaWduZWQgbG9uZylWRFNPX1NZTUJPTChjdXJyZW50LVxcdTAwM2VtbS1cXHUwMDNlY29udGV4dC52ZHNvLCBzaWdyZXR1cm5fbGFuZGluZ19wYWQpO1xcbitcXG4rXFx0cmV0dXJuIHJlZ3MtXFx1MDAzZXBjID09IGxhbmRpbmdfcGFkO1xcbit9XFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlMgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TXFxuaW5kZXggMGUxODcyOWFiYzNiNzguLjhkMmQ0MTNmZjQ1ZThiIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlNcXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TXFxuQEAgLTczLDYgKzczLDcgQEAgU1lNX0NPREVfU1RBUlQoX19rZXJuZWxfcnRfc2lncmV0dXJuKVxcbiBcXHRtb3ZcXHR4OCwgI19fTlJfcnRfc2lncmV0dXJuXFxuIC8vXFx0UExFQVNFIERPIE5PVCBNT0RJRllcXG4gXFx0c3ZjXFx0IzBcXG4rXFx0U1lNX0lOTkVSX0xBQkVMKF9fc2lncmV0dXJuX2xhbmRpbmdfcGFkLCBTWU1fTF9HTE9CQUwpXFxuIC8vXFx0UExFQVNFIERPIE5PVCBNT0RJRllcXG4gLy9cXHQuY2ZpX2VuZHByb2NcXG4gU1lNX0NPREVfRU5EKF9fa2VybmVsX3J0X3NpZ3JldHVybilcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TIGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TXFxuaW5kZXggNTIzMTRiZTI5MTkxMjEuLmRhNjFkNmZjNmZlOWYzIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuU1xcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuU1xcbkBAIC0xMTIsMyArMTEyLDQgQEAgVkVSU0lPTlxcbiAgKiBNYWtlIHRoZSBzaWdyZXR1cm4gY29kZSB2aXNpYmxlIHRvIHRoZSBrZXJuZWwuXFxuICAqL1xcbiBWRFNPX3NpZ3RyYW1wXFx0XFx0PSBfX2tlcm5lbF9ydF9zaWdyZXR1cm47XFxuK1ZEU09fc2lncmV0dXJuX2xhbmRpbmdfcGFkXFx0PSBfX3NpZ3JldHVybl9sYW5kaW5nX3BhZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjI6MTA6MzguMDk4OTY2MjMxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzIwNDQxMTQ0MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1lTQ0FMTF9VU0VSX0RJU1BBVENIXCIsXG4gICAgXCJDT01QQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5cIixcbiAgICBcInVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwXCIsXG4gICAgXCJ1c2VyX2Rpc2FibGVfc2luZ2xlX3N0ZXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjb252ZXJ0cyBhcm02NCB0byB1c2UgdGhlIGdlbmVyaWMgZW50cnkgaW5mcmFzdHJ1Y3R1cmUgYW5kIGFkZHMgc3VwcG9ydCBmb3IgU3lzY2FsbCBVc2VyIERpc3BhdGNoLiBUaGlzIGludm9sdmVzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBzeXNjYWxsIGVudHJ5L2V4aXQgcGF0aHMsIHB0cmFjZSBzaW5nbGUtc3RlcHBpbmcsIGFuZCBWRFNPIHNpZ3JldHVybiBkZXRlY3Rpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjNjZjA0YjFjZGU5MGQ5MjA0YzY5N2M1NjI1MjQxODdhMzljMmRmMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDIyOjEwOjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9LY29uZmlnIGIvYXJjaC9hcm02NC9LY29uZmlnXG5pbmRleCBmYjE1MDM3YjVlM2M3ZS4uZWZlZjA3ODU3ZDM4ODQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L0tjb25maWdcbisrKyBiL2FyY2gvYXJtNjQvS2NvbmZpZ1xuQEAgLTg3LDYgKzg3LDcgQEAgY29uZmlnIEFSTTY0XG4gXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TQ0hFRF9TTVRcbiBcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX0NMVVNURVJcbiBcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX1NDSEVEX01DXG4rXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcbiBcdHNlbGVjdCBBUkNIX1dBTlRfQkFUQ0hFRF9VTk1BUF9UTEJfRkxVU0hcbiBcdHNlbGVjdCBBUkNIX1dBTlRfQ09NUEFUX0lQQ19QQVJTRV9WRVJTSU9OIGlmIENPTVBBVFxuIFx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVRcbkBAIC0xMjksOSArMTMwLDkgQEAgY29uZmlnIEFSTTY0XG4gXHRzZWxlY3QgR0VORVJJQ19DUFVfREVWSUNFU1xuIFx0c2VsZWN0IEdFTkVSSUNfQ1BVX1ZVTE5FUkFCSUxJVElFU1xuIFx0c2VsZWN0IEdFTkVSSUNfRUFSTFlfSU9SRU1BUFxuK1x0c2VsZWN0IEdFTkVSSUNfRU5UUllcbiBcdHNlbGVjdCBHRU5FUklDX0lETEVfUE9MTF9TRVRVUFxuIFx0c2VsZWN0IEdFTkVSSUNfSU9SRU1BUFxuLVx0c2VsZWN0IEdFTkVSSUNfSVJRX0VOVFJZXG4gXHRzZWxlY3QgR0VORVJJQ19JUlFfSVBJXG4gXHRzZWxlY3QgR0VORVJJQ19JUlFfS0VYRUNfQ0xFQVJfVk1fRk9SV0FSRFxuIFx0c2VsZWN0IEdFTkVSSUNfSVJRX1BST0JFXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbGYuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbmluZGV4IGQyNzc5ZDYwNGM3YmUyLi5hOGIyMzJjNWM2ZDlmOCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZWxmLmhcbkBAIC0yOTMsNiArMjkzLDcgQEAgc3RhdGljIGlubGluZSBpbnQgYXJjaF9jaGVja19lbGYodm9pZCAqZWhkciwgYm9vbCBoYXNfaW50ZXJwLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK2V4dGVybiBib29sIGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG4gI2VuZGlmIC8qICFfX0FTU0VNQkxFUl9fICovXG4gXG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcbmluZGV4IGNhYjhjZDc4ZjY5Mzg1Li4yYjA1M2FjYmUxMGZlYSAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcbisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcbkBAIC0zLDE0ICszLDIxIEBAXG4gI2lmbmRlZiBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9IXG4gI2RlZmluZSBfQVNNX0FSTTY0X0VOVFJZX0NPTU1PTl9IXG4gXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHRyYWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90aHJlYWRfaW5mby5oXHUwMDNlXG4gXG4rI2luY2x1ZGUgXHUwMDNjYXNtL2NvbXBhdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9kYWlmZmxhZ3MuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9mcHNpbWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9tdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9zdGFja3RyYWNlLmhcdTAwM2VcbiBcbitlbnVtIHB0cmFjZV9zeXNjYWxsX2RpciB7XG4rXHRQVFJBQ0VfU1lTQ0FMTF9FTlRFUiA9IDAsXG4rXHRQVFJBQ0VfU1lTQ0FMTF9FWElULFxuK307XG4rXG4gI2RlZmluZSBBUkNIX0VYSVRfVE9fVVNFUl9NT0RFX1dPUksgKF9USUZfTVRFX0FTWU5DX0ZBVUxUIHwgX1RJRl9GT1JFSUdOX0ZQU1RBVEUpXG4gXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGFyY2hfZXhpdF90b191c2VyX21vZGVfd29yayhzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbkBAIC01NCw0ICs2MSw3NCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9pcnFlbnRyeV9leGl0X25lZWRfcmVzY2hlZCh2b2lkKVxuIFxuICNkZWZpbmUgYXJjaF9pcnFlbnRyeV9leGl0X25lZWRfcmVzY2hlZCBhcmNoX2lycWVudHJ5X2V4aXRfbmVlZF9yZXNjaGVkXG4gXG4rc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIHB0cmFjZV9zYXZlX3JlZyhzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbitcdFx0XHRcdFx0XHQgICAgIGVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIGRpcixcbitcdFx0XHRcdFx0XHQgICAgIGludCAqcmVnbm8pXG4re1xuK1x0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4rXG4rXHQvKlxuK1x0ICogV2UgaGF2ZSBzb21lIEFCSSB3ZWlyZG5lc3MgaGVyZSBpbiB0aGUgd2F5IHRoYXQgd2UgaGFuZGxlIHN5c2NhbGxcbitcdCAqIGV4aXQgc3RvcHMgYmVjYXVzZSB3ZSBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGUgc3RvcCBoYXMgYmVlblxuK1x0ICogc2lnbmFsbGVkIGZyb20gc3lzY2FsbCBlbnRyeSBvciBzeXNjYWxsIGV4aXQgYnkgY2xvYmJlcmluZyBhIGdlbmVyYWxcbitcdCAqIHB1cnBvc2UgcmVnaXN0ZXIgKGlwL3IxMiBmb3IgQUFyY2gzMiwgeDcgZm9yIEFBcmNoNjQpIGluIHRoZSB0cmFjZWVcbitcdCAqIGFuZCByZXN0b3JpbmcgaXRzIG9sZCB2YWx1ZSBhZnRlciB0aGUgc3RvcC4gVGhpcyBtZWFucyB0aGF0OlxuK1x0ICpcbitcdCAqIC0gQW55IHdyaXRlcyBieSB0aGUgdHJhY2VyIHRvIHRoaXMgcmVnaXN0ZXIgZHVyaW5nIHRoZSBzdG9wIGFyZVxuK1x0ICogICBpZ25vcmVkL2Rpc2NhcmRlZC5cbitcdCAqXG4rXHQgKiAtIFRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIHJlZ2lzdGVyIGlzIG5vdCBhdmFpbGFibGUgZHVyaW5nIHRoZSBzdG9wLFxuK1x0ICogICBzbyB0aGUgdHJhY2VyIGNhbm5vdCBzYXZlIGl0IGFuZCByZXN0b3JlIGl0IGxhdGVyLlxuK1x0ICpcbitcdCAqIC0gU3lzY2FsbCBzdG9wcyBiZWhhdmUgZGlmZmVyZW50bHkgdG8gc2VjY29tcCBhbmQgcHNldWRvLXN0ZXAgdHJhcHNcbitcdCAqICAgKHRoZSBsYXR0ZXIgZG8gbm90IG5vYmJsZSBhbnkgcmVnaXN0ZXJzKS5cbitcdCAqL1xuK1x0KnJlZ25vID0gKGlzX2NvbXBhdF90YXNrKCkgPyAxMiA6IDcpO1xuK1x0c2F2ZWRfcmVnID0gcmVncy1cdTAwM2VyZWdzWypyZWdub107XG4rXHRyZWdzLVx1MDAzZXJlZ3NbKnJlZ25vXSA9IGRpcjtcbitcbitcdHJldHVybiBzYXZlZF9yZWc7XG4rfVxuK1xuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4re1xuK1x0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4rXHRib29sIHBlcm1pdDtcbitcdGludCByZWdubztcbitcbitcdHNhdmVkX3JlZyA9IHB0cmFjZV9zYXZlX3JlZyhyZWdzLCBQVFJBQ0VfU1lTQ0FMTF9FTlRFUiwgXHUwMDI2cmVnbm8pO1xuK1x0cGVybWl0ID0gcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeShyZWdzKTtcbitcdGlmICghcGVybWl0KVxuK1x0XHRmb3JnZXRfc3lzY2FsbChyZWdzKTtcbitcdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4rXG4rXHRyZXR1cm4gcGVybWl0O1xuK31cbitcbisjZGVmaW5lIGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX3Blcm1pdF9lbnRyeSBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnlcbitcbitzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgYXJjaF9wdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbitcdFx0XHRcdFx0XHRcdCAgICBpbnQgc3RlcClcbit7XG4rXHR1bnNpZ25lZCBsb25nIHNhdmVkX3JlZztcbitcdGludCByZWdubztcbitcbitcdHNhdmVkX3JlZyA9IHB0cmFjZV9zYXZlX3JlZyhyZWdzLCBQVFJBQ0VfU1lTQ0FMTF9FWElULCBcdTAwMjZyZWdubyk7XG4rXHRpZiAoIXN0ZXApIHtcbitcdFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMCk7XG4rXHRcdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4rXHR9IGVsc2Uge1xuK1x0XHRyZWdzLVx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xuK1xuK1x0XHQvKlxuK1x0XHQgKiBTaWduYWwgYSBwc2V1ZG8tc3RlcCBleGNlcHRpb24gc2luY2Ugd2UgYXJlIHN0ZXBwaW5nIGJ1dFxuK1x0XHQgKiB0cmFjZXIgbW9kaWZpY2F0aW9ucyB0byB0aGUgcmVnaXN0ZXJzIG1heSBoYXZlIHJld291bmQgdGhlXG4rXHRcdCAqIHN0YXRlIG1hY2hpbmUuXG4rXHRcdCAqL1xuK1x0XHRwdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChyZWdzLCAxKTtcbitcdH1cbit9XG4rXG4rI2RlZmluZSBhcmNoX3B0cmFjZV9yZXBvcnRfc3lzY2FsbF9leGl0IGFyY2hfcHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXRcbitcbiAjZW5kaWYgLyogX0FTTV9BUk02NF9FTlRSWV9DT01NT05fSCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNjYWxsLmhcbmluZGV4IDVlNGM3ZmM0NGY3MzE1Li5lM2U3MTY1NzU4NDY0NiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzY2FsbC5oXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c2NhbGwuaFxuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjdWFwaS9saW51eC9hdWRpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGF0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JzZXEuaFx1MDAzZVxuIFxuIHR5cGVkZWYgbG9uZyAoKnN5c2NhbGxfZm5fdCkoY29uc3Qgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuIFxuQEAgLTExOSw4ICsxMjAsNCBAQCBzdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX2dldF9hcmNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcbiBcbiBcdHJldHVybiBBVURJVF9BUkNIX0FBUkNINjQ7XG4gfVxuLVxuLWludCBzeXNjYWxsX3RyYWNlX2VudGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi12b2lkIHN5c2NhbGxfdHJhY2VfZXhpdChzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG4tXG4gI2VuZGlmXHQvKiBfX0FTTV9TWVNDQUxMX0ggKi9cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcbmluZGV4IDVkN2ZlM2UxNTNjODUwLi4zZjYyMWJhMGY5NjEzNyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxuKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oXG5AQCAtNDYsNiArNDYsNyBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8ge1xuIFx0dTY0XHRcdFx0bXBhbV9wYXJ0aWRfcG1nO1xuICNlbmRpZlxuIFx0dTMyXHRcdFx0Y3B1O1xuK1x0dW5zaWduZWQgbG9uZ1x0XHRzeXNjYWxsX3dvcms7ICAgLyogU1lTQ0FMTF9XT1JLXyBmbGFncyAqL1xuIH07XG4gXG4gI2RlZmluZSB0aHJlYWRfc2F2ZWRfcGModHNrKVx0XFxcbkBAIC02OCwxMSArNjksNiBAQCB2b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7XG4gI2RlZmluZSBUSUZfVVBST0JFXHRcdDVcdC8qIHVwcm9iZSBicmVha3BvaW50IG9yIHNpbmdsZXN0ZXAgKi9cbiAjZGVmaW5lIFRJRl9NVEVfQVNZTkNfRkFVTFRcdDZcdC8qIE1URSBBc3luY2hyb25vdXMgVGFnIENoZWNrIEZhdWx0ICovXG4gI2RlZmluZSBUSUZfTk9USUZZX1NJR05BTFx0N1x0Lyogc2lnbmFsIG5vdGlmaWNhdGlvbnMgZXhpc3QgKi9cbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFXHQ4XHQvKiBzeXNjYWxsIHRyYWNlIGFjdGl2ZSAqL1xuLSNkZWZpbmUgVElGX1NZU0NBTExfQVVESVRcdDlcdC8qIHN5c2NhbGwgYXVkaXRpbmcgKi9cbi0jZGVmaW5lIFRJRl9TWVNDQUxMX1RSQUNFUE9JTlRcdDEwXHQvKiBzeXNjYWxsIHRyYWNlcG9pbnQgZm9yIGZ0cmFjZSAqL1xuLSNkZWZpbmUgVElGX1NFQ0NPTVBcdFx0MTFcdC8qIHN5c2NhbGwgc2VjdXJlIGNvbXB1dGluZyAqL1xuLSNkZWZpbmUgVElGX1NZU0NBTExfRU1VXHRcdDEyXHQvKiBzeXNjYWxsIGVtdWxhdGlvbiBhY3RpdmUgKi9cbiAjZGVmaW5lIFRJRl9QQVRDSF9QRU5ESU5HXHQxM1x0LyogcGVuZGluZyBsaXZlIHBhdGNoaW5nIHVwZGF0ZSAqL1xuICNkZWZpbmUgVElGX01FTURJRVx0XHQxOFx0LyogaXMgdGVybWluYXRpbmcgZHVlIHRvIE9PTSBraWxsZXIgKi9cbiAjZGVmaW5lIFRJRl9GUkVFWkVcdFx0MTlcbkBAIC05NCwyNCArOTAsMTQgQEAgdm9pZCBhcmNoX3NldHVwX25ld19leGVjKHZvaWQpO1xuICNkZWZpbmUgX1RJRl9ORUVEX1JFU0NIRURfTEFaWVx0KDEgXHUwMDNjXHUwMDNjIFRJRl9ORUVEX1JFU0NIRURfTEFaWSlcbiAjZGVmaW5lIF9USUZfTk9USUZZX1JFU1VNRVx0KDEgXHUwMDNjXHUwMDNjIFRJRl9OT1RJRllfUkVTVU1FKVxuICNkZWZpbmUgX1RJRl9GT1JFSUdOX0ZQU1RBVEVcdCgxIFx1MDAzY1x1MDAzYyBUSUZfRk9SRUlHTl9GUFNUQVRFKVxuLSNkZWZpbmUgX1RJRl9TWVNDQUxMX1RSQUNFXHQoMSBcdTAwM2NcdTAwM2MgVElGX1NZU0NBTExfVFJBQ0UpXG4tI2RlZmluZSBfVElGX1NZU0NBTExfQVVESVRcdCgxIFx1MDAzY1x1MDAzYyBUSUZfU1lTQ0FMTF9BVURJVClcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9UUkFDRVBPSU5UXHQoMSBcdTAwM2NcdTAwM2MgVElGX1NZU0NBTExfVFJBQ0VQT0lOVClcbi0jZGVmaW5lIF9USUZfU0VDQ09NUFx0XHQoMSBcdTAwM2NcdTAwM2MgVElGX1NFQ0NPTVApXG4tI2RlZmluZSBfVElGX1NZU0NBTExfRU1VXHQoMSBcdTAwM2NcdTAwM2MgVElGX1NZU0NBTExfRU1VKVxuICNkZWZpbmUgX1RJRl9QQVRDSF9QRU5ESU5HXHQoMSBcdTAwM2NcdTAwM2MgVElGX1BBVENIX1BFTkRJTkcpXG4gI2RlZmluZSBfVElGX1VQUk9CRVx0XHQoMSBcdTAwM2NcdTAwM2MgVElGX1VQUk9CRSlcbi0jZGVmaW5lIF9USUZfU0lOR0xFU1RFUFx0XHQoMSBcdTAwM2NcdTAwM2MgVElGX1NJTkdMRVNURVApXG4gI2RlZmluZSBfVElGXzMyQklUXHRcdCgxIFx1MDAzY1x1MDAzYyBUSUZfMzJCSVQpXG4gI2RlZmluZSBfVElGX1NWRVx0XHQoMSBcdTAwM2NcdTAwM2MgVElGX1NWRSlcbiAjZGVmaW5lIF9USUZfTVRFX0FTWU5DX0ZBVUxUXHQoMSBcdTAwM2NcdTAwM2MgVElGX01URV9BU1lOQ19GQVVMVClcbiAjZGVmaW5lIF9USUZfTk9USUZZX1NJR05BTFx0KDEgXHUwMDNjXHUwMDNjIFRJRl9OT1RJRllfU0lHTkFMKVxuICNkZWZpbmUgX1RJRl9UU0NfU0lHU0VHVlx0KDEgXHUwMDNjXHUwMDNjIFRJRl9UU0NfU0lHU0VHVilcbiBcbi0jZGVmaW5lIF9USUZfU1lTQ0FMTF9XT1JLXHQoX1RJRl9TWVNDQUxMX1RSQUNFIHwgX1RJRl9TWVNDQUxMX0FVRElUIHwgXFxcbi1cdFx0XHRcdCBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVCB8IF9USUZfU0VDQ09NUCB8IFxcXG4tXHRcdFx0XHQgX1RJRl9TWVNDQUxMX0VNVSlcbi1cbiAjaWZkZWYgQ09ORklHX1NIQURPV19DQUxMX1NUQUNLXG4gI2RlZmluZSBJTklUX1NDU1x0XHRcdFx0XHRcdFx0XFxcbiBcdC5zY3NfYmFzZVx0PSBpbml0X3NoYWRvd19jYWxsX3N0YWNrLFx0XHRcdFxcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYyBiL2FyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmNcbmluZGV4IDI5MzA3NjQyZjRjOTA0Li5jNTM2ODM4MzkxNTUzNiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmNcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmNcbkBAIC0zODUsMTEgKzM4NSwxOSBAQCB2b2lkIHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcbiBcbiBcdGlmICghdGVzdF9hbmRfc2V0X3RpX3RocmVhZF9mbGFnKHRpLCBUSUZfU0lOR0xFU1RFUCkpXG4gXHRcdHNldF9yZWdzX3Nwc3Jfc3ModGFza19wdF9yZWdzKHRhc2spKTtcbitcbitcdC8qXG4rXHQgKiBFbnN1cmUgdGhhdCB0aGUgZ2VuZXJpYyBlbnRyeSBjb2RlIHRyaWdnZXJzIGEgdHJhcCBvbmNlIHN0ZXBwaW5nXG4rXHQgKiBvdXQgb2YgYSBzeXN0ZW0gY2FsbCBwcmlvciB0byBleGVjdXRpbmcgYW55IHVzZXIgaW5zdHJ1Y3Rpb24sXG4rXHQgKiBhcyB0aGUgZ2VuZXJpYyBlbnRyeSBjb2RlIGRvZXMgbm90IG5hdGl2ZWx5IGNoZWNrIGZvciBUSUZfU0lOR0xFU1RFUC5cbitcdCAqL1xuK1x0c2V0X3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfRVhJVF9UUkFQKTtcbiB9XG4gTk9LUFJPQkVfU1lNQk9MKHVzZXJfZW5hYmxlX3NpbmdsZV9zdGVwKTtcbiBcbiB2b2lkIHVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXG4ge1xuIFx0Y2xlYXJfdGlfdGhyZWFkX2ZsYWcodGFza190aHJlYWRfaW5mbyh0YXNrKSwgVElGX1NJTkdMRVNURVApO1xuK1x0Y2xlYXJfdGFza19zeXNjYWxsX3dvcmsodGFzaywgU1lTQ0FMTF9FWElUX1RSQVApO1xuIH1cbiBOT0tQUk9CRV9TWU1CT0wodXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwKTtcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uYyBiL2FyY2gvYXJtNjQva2VybmVsL2VudHJ5LWNvbW1vbi5jXG5pbmRleCBjZWI0ZWIxMTIzMmE2MS4uOWVhYzc2ODA0YmQ5YWUgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1jb21tb24uY1xuKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvZW50cnktY29tbW9uLmNcbkBAIC02LDcgKzYsNyBAQFxuICAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbnRleHRfdHJhY2tpbmcuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lycS1lbnRyeS1jb21tb24uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2VudHJ5LWNvbW1vbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2FzYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbmthZ2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpdmVwYXRjaC5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuY1xuaW5kZXggNTcwOWU5ZDNjMzIxYTUuLjYxYTY2ODY4Mjk0NzE1IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmNcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jXG5AQCAtOCw3ICs4LDYgQEBcbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQVJNIEx0ZC5cbiAgKi9cbiBcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9hdWRpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGF0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NjaGVkL3NpZ25hbC5oXHUwMDNlXG5AQCAtMTgsNyArMTcsNiBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NtcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRyYWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91c2VyLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9zZWNjb21wLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zZWN1cml0eS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2lnbmFsLmhcdTAwM2VcbkBAIC0yOCw3ICsyNiw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaHdfYnJlYWtwb2ludC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVnc2V0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lbGYuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3JzZXEuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9jb21wYXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jcHVmZWF0dXJlLmhcdTAwM2VcbkBAIC0zOCwxMyArMzUsOSBAQFxuICNpbmNsdWRlIFx1MDAzY2FzbS9tdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9wb2ludGVyX2F1dGguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9zdGFja3RyYWNlLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2Nhc20vc3lzY2FsbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3RyYXBzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vc3lzdGVtX21pc2MuaFx1MDAzZVxuIFxuLSNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UU1xuLSNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9zeXNjYWxscy5oXHUwMDNlXG4tXG4gc3RydWN0IHB0X3JlZ3Nfb2Zmc2V0IHtcbiBcdGNvbnN0IGNoYXIgKm5hbWU7XG4gXHRpbnQgb2Zmc2V0O1xuQEAgLTIzMzksMTE0ICsyMzMyLDYgQEAgbG9uZyBhcmNoX3B0cmFjZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCBsb25nIHJlcXVlc3QsXG4gXHRyZXR1cm4gcHRyYWNlX3JlcXVlc3QoY2hpbGQsIHJlcXVlc3QsIGFkZHIsIGRhdGEpO1xuIH1cbiBcbi1lbnVtIHB0cmFjZV9zeXNjYWxsX2RpciB7XG4tXHRQVFJBQ0VfU1lTQ0FMTF9FTlRFUiA9IDAsXG4tXHRQVFJBQ0VfU1lTQ0FMTF9FWElULFxuLX07XG4tXG4tc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIHB0cmFjZV9zYXZlX3JlZyhzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbi1cdFx0XHRcdFx0XHQgICAgIGVudW0gcHRyYWNlX3N5c2NhbGxfZGlyIGRpcixcbi1cdFx0XHRcdFx0XHQgICAgIGludCAqcmVnbm8pXG4te1xuLVx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4tXG4tXHQvKlxuLVx0ICogV2UgaGF2ZSBzb21lIEFCSSB3ZWlyZG5lc3MgaGVyZSBpbiB0aGUgd2F5IHRoYXQgd2UgaGFuZGxlIHN5c2NhbGxcbi1cdCAqIGV4aXQgc3RvcHMgYmVjYXVzZSB3ZSBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGUgc3RvcCBoYXMgYmVlblxuLVx0ICogc2lnbmFsbGVkIGZyb20gc3lzY2FsbCBlbnRyeSBvciBzeXNjYWxsIGV4aXQgYnkgY2xvYmJlcmluZyBhIGdlbmVyYWxcbi1cdCAqIHB1cnBvc2UgcmVnaXN0ZXIgKGlwL3IxMiBmb3IgQUFyY2gzMiwgeDcgZm9yIEFBcmNoNjQpIGluIHRoZSB0cmFjZWVcbi1cdCAqIGFuZCByZXN0b3JpbmcgaXRzIG9sZCB2YWx1ZSBhZnRlciB0aGUgc3RvcC4gVGhpcyBtZWFucyB0aGF0OlxuLVx0ICpcbi1cdCAqIC0gQW55IHdyaXRlcyBieSB0aGUgdHJhY2VyIHRvIHRoaXMgcmVnaXN0ZXIgZHVyaW5nIHRoZSBzdG9wIGFyZVxuLVx0ICogICBpZ25vcmVkL2Rpc2NhcmRlZC5cbi1cdCAqXG4tXHQgKiAtIFRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIHJlZ2lzdGVyIGlzIG5vdCBhdmFpbGFibGUgZHVyaW5nIHRoZSBzdG9wLFxuLVx0ICogICBzbyB0aGUgdHJhY2VyIGNhbm5vdCBzYXZlIGl0IGFuZCByZXN0b3JlIGl0IGxhdGVyLlxuLVx0ICpcbi1cdCAqIC0gU3lzY2FsbCBzdG9wcyBiZWhhdmUgZGlmZmVyZW50bHkgdG8gc2VjY29tcCBhbmQgcHNldWRvLXN0ZXAgdHJhcHNcbi1cdCAqICAgKHRoZSBsYXR0ZXIgZG8gbm90IG5vYmJsZSBhbnkgcmVnaXN0ZXJzKS5cbi1cdCAqL1xuLVx0KnJlZ25vID0gKGlzX2NvbXBhdF90YXNrKCkgPyAxMiA6IDcpO1xuLVx0c2F2ZWRfcmVnID0gcmVncy1cdTAwM2VyZWdzWypyZWdub107XG4tXHRyZWdzLVx1MDAzZXJlZ3NbKnJlZ25vXSA9IGRpcjtcbi1cbi1cdHJldHVybiBzYXZlZF9yZWc7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcmVwb3J0X3N5c2NhbGxfZW50cnkoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4te1xuLVx0dW5zaWduZWQgbG9uZyBzYXZlZF9yZWc7XG4tXHRpbnQgcmVnbm8sIHJldDtcbi1cbi1cdHNhdmVkX3JlZyA9IHB0cmFjZV9zYXZlX3JlZyhyZWdzLCBQVFJBQ0VfU1lTQ0FMTF9FTlRFUiwgXHUwMDI2cmVnbm8pO1xuLVx0cmV0ID0gIXB0cmFjZV9yZXBvcnRfc3lzY2FsbF9wZXJtaXRfZW50cnkocmVncyk7XG4tXHRpZiAocmV0KVxuLVx0XHRmb3JnZXRfc3lzY2FsbChyZWdzKTtcbi1cdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4tXG4tXHRyZXR1cm4gcmV0O1xuLX1cbi1cbi1zdGF0aWMgdm9pZCByZXBvcnRfc3lzY2FsbF9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuLXtcbi1cdHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnO1xuLVx0aW50IHJlZ25vO1xuLVxuLVx0c2F2ZWRfcmVnID0gcHRyYWNlX3NhdmVfcmVnKHJlZ3MsIFBUUkFDRV9TWVNDQUxMX0VYSVQsIFx1MDAyNnJlZ25vKTtcbi1cdGlmICghdGVzdF90aHJlYWRfZmxhZyhUSUZfU0lOR0xFU1RFUCkpIHtcbi1cdFx0cHRyYWNlX3JlcG9ydF9zeXNjYWxsX2V4aXQocmVncywgMCk7XG4tXHRcdHJlZ3MtXHUwMDNlcmVnc1tyZWdub10gPSBzYXZlZF9yZWc7XG4tXHR9IGVsc2Uge1xuLVx0XHRyZWdzLVx1MDAzZXJlZ3NbcmVnbm9dID0gc2F2ZWRfcmVnO1xuLVxuLVx0XHQvKlxuLVx0XHQgKiBTaWduYWwgYSBwc2V1ZG8tc3RlcCBleGNlcHRpb24gc2luY2Ugd2UgYXJlIHN0ZXBwaW5nIGJ1dFxuLVx0XHQgKiB0cmFjZXIgbW9kaWZpY2F0aW9ucyB0byB0aGUgcmVnaXN0ZXJzIG1heSBoYXZlIHJld291bmQgdGhlXG4tXHRcdCAqIHN0YXRlIG1hY2hpbmUuXG4tXHRcdCAqL1xuLVx0XHRwdHJhY2VfcmVwb3J0X3N5c2NhbGxfZXhpdChyZWdzLCAxKTtcbi1cdH1cbi19XG4tXG4taW50IHN5c2NhbGxfdHJhY2VfZW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4te1xuLVx0dW5zaWduZWQgbG9uZyBmbGFncyA9IHJlYWRfdGhyZWFkX2ZsYWdzKCk7XG4tXHRpbnQgcmV0O1xuLVxuLVx0aWYgKGZsYWdzIFx1MDAyNiAoX1RJRl9TWVNDQUxMX0VNVSB8IF9USUZfU1lTQ0FMTF9UUkFDRSkpIHtcbi1cdFx0cmV0ID0gcmVwb3J0X3N5c2NhbGxfZW50cnkocmVncyk7XG4tXHRcdGlmIChyZXQgfHwgKGZsYWdzIFx1MDAyNiBfVElGX1NZU0NBTExfRU1VKSlcbi1cdFx0XHRyZXR1cm4gTk9fU1lTQ0FMTDtcbi1cdH1cbi1cbi1cdC8qIERvIHRoZSBzZWN1cmUgY29tcHV0aW5nIGFmdGVyIHB0cmFjZTsgZmFpbHVyZXMgc2hvdWxkIGJlIGZhc3QuICovXG4tXHRpZiAoIXNlY2NvbXBfcGVybWl0X3N5c2NhbGwoKSlcbi1cdFx0cmV0dXJuIE5PX1NZU0NBTEw7XG4tXG4tXHRpZiAodGVzdF90aHJlYWRfZmxhZyhUSUZfU1lTQ0FMTF9UUkFDRVBPSU5UKSlcbi1cdFx0dHJhY2Vfc3lzX2VudGVyKHJlZ3MsIHJlZ3MtXHUwMDNlc3lzY2FsbG5vKTtcbi1cbi1cdGF1ZGl0X3N5c2NhbGxfZW50cnkocmVncy1cdTAwM2VzeXNjYWxsbm8sIHJlZ3MtXHUwMDNlb3JpZ194MCwgcmVncy1cdTAwM2VyZWdzWzFdLFxuLVx0XHRcdCAgICByZWdzLVx1MDAzZXJlZ3NbMl0sIHJlZ3MtXHUwMDNlcmVnc1szXSk7XG4tXG4tXHRyZXR1cm4gcmVncy1cdTAwM2VzeXNjYWxsbm87XG4tfVxuLVxuLXZvaWQgc3lzY2FsbF90cmFjZV9leGl0KHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuLXtcbi1cdHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSByZWFkX3RocmVhZF9mbGFncygpO1xuLVxuLVx0YXVkaXRfc3lzY2FsbF9leGl0KHJlZ3MpO1xuLVxuLVx0aWYgKGZsYWdzIFx1MDAyNiBfVElGX1NZU0NBTExfVFJBQ0VQT0lOVClcbi1cdFx0dHJhY2Vfc3lzX2V4aXQocmVncywgc3lzY2FsbF9nZXRfcmV0dXJuX3ZhbHVlKGN1cnJlbnQsIHJlZ3MpKTtcbi1cbi1cdGlmIChmbGFncyBcdTAwMjYgKF9USUZfU1lTQ0FMTF9UUkFDRSB8IF9USUZfU0lOR0xFU1RFUCkpXG4tXHRcdHJlcG9ydF9zeXNjYWxsX2V4aXQocmVncyk7XG4tXG4tXHRyc2VxX3N5c2NhbGwocmVncyk7XG4tfVxuLVxuIC8qXG4gICogU1BTUl9FTHggYml0cyB3aGljaCBhcmUgYWx3YXlzIGFyY2hpdGVjdHVyYWxseSBSRVMwIHBlciBBUk0gRERJIDA0ODdELmEuXG4gICogV2UgcGVybWl0IHVzZXJzcGFjZSB0byBzZXQgU1NCUyAoQUFyY2g2NCBiaXQgMTIsIEFBcmNoMzIgYml0IDIzKSB3aGljaCBpc1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmNcbmluZGV4IDM4ZTZmYTIwNGMxN2I1Li4wOTNlZWJiOWQ3NjRhYyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuY1xuQEAgLTgsOCArOCw4IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY2FjaGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBhdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZW50cnktY29tbW9uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zaWduYWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZyZWV6ZXIuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3N5c2NhbGwuYyBiL2FyY2gvYXJtNjQva2VybmVsL3N5c2NhbGwuY1xuaW5kZXggMzU4ZGRmYmYxNDAxYWMuLjI1MzVjYWU5NDEzZDhhIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC9zeXNjYWxsLmNcbkBAIC0yLDYgKzIsNyBAQFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jb250ZXh0X3RyYWNraW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9lbnRyeS1jb21tb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ub3NwZWMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cmFjZS5oXHUwMDNlXG5AQCAtNTQsMTUgKzU1LDExIEBAIHN0YXRpYyB2b2lkIGludm9rZV9zeXNjYWxsKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBpbnQgc2NubyxcbiBcdHN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAwLCByZXQpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGJvb2wgaGFzX3N5c2NhbGxfd29yayh1bnNpZ25lZCBsb25nIGZsYWdzKVxuLXtcbi1cdHJldHVybiB1bmxpa2VseShmbGFncyBcdTAwMjYgX1RJRl9TWVNDQUxMX1dPUkspO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBlbDBfc3ZjX2NvbW1vbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IHNjbm8sIGludCBzY19ucixcbi1cdFx0XHQgICBjb25zdCBzeXNjYWxsX2ZuX3Qgc3lzY2FsbF90YWJsZVtdKVxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBlbDBfc3ZjX2NvbW1vbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IHNjbm8sIGludCBzY19ucixcbitcdFx0XHRcdFx0ICAgY29uc3Qgc3lzY2FsbF9mbl90IHN5c2NhbGxfdGFibGVbXSlcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gcmVhZF90aHJlYWRfZmxhZ3MoKTtcbitcdHVuc2lnbmVkIGxvbmcgd29yaztcbiBcbiBcdHJlZ3MtXHUwMDNlb3JpZ194MCA9IHJlZ3MtXHUwMDNlcmVnc1swXTtcbiBcdHJlZ3MtXHUwMDNlc3lzY2FsbG5vID0gc2NubztcbkBAIC05NSw3ICs5Miw4IEBAIHN0YXRpYyB2b2lkIGVsMF9zdmNfY29tbW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBpbnQgc2NubywgaW50IHNjX25yLFxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAoaGFzX3N5c2NhbGxfd29yayhmbGFncykpIHtcbitcdHdvcmsgPSBSRUFEX09OQ0UoY3VycmVudF90aHJlYWRfaW5mbygpLVx1MDAzZXN5c2NhbGxfd29yayk7XG4rXHRpZiAodW5saWtlbHkod29yayBcdTAwMjYgU1lTQ0FMTF9XT1JLX0VOVEVSKSkge1xuIFx0XHQvKlxuIFx0XHQgKiBUaGUgZGUtZmFjdG8gc3RhbmRhcmQgd2F5IHRvIHNraXAgYSBzeXN0ZW0gY2FsbCB1c2luZyBwdHJhY2VcbiBcdFx0ICogaXMgdG8gc2V0IHRoZSBzeXN0ZW0gY2FsbCB0byAtMSAoTk9fU1lTQ0FMTCkgYW5kIHNldCB4MCB0byBhXG5AQCAtMTEzLDI2ICsxMTEsMTggQEAgc3RhdGljIHZvaWQgZWwwX3N2Y19jb21tb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBzY25vLCBpbnQgc2NfbnIsXG4gXHRcdCAqL1xuIFx0XHRpZiAoc2NubyA9PSBOT19TWVNDQUxMKVxuIFx0XHRcdHN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShjdXJyZW50LCByZWdzLCAtRU5PU1lTLCAwKTtcbi1cdFx0c2NubyA9IHN5c2NhbGxfdHJhY2VfZW50ZXIocmVncyk7XG4rXHRcdGlmICghc3lzY2FsbF90cmFjZV9lbnRlcihyZWdzLCB3b3JrLCBzY25vKSlcbitcdFx0XHRnb3RvIHRyYWNlX2V4aXQ7XG4rXG4rXHRcdC8qIFJlcmVhZCB0aGUgc3lzY2FsbCBudW1iZXIgYXMgaXQgbWlnaHQgaGF2ZSBiZWVuIG1vZGlmaWVkICovXG4rXHRcdHNjbm8gPSBzeXNjYWxsX2dldF9ucihjdXJyZW50LCByZWdzKTtcbiBcdFx0aWYgKHNjbm8gPT0gTk9fU1lTQ0FMTClcbiBcdFx0XHRnb3RvIHRyYWNlX2V4aXQ7XG4gXHR9XG4gXG4gXHRpbnZva2Vfc3lzY2FsbChyZWdzLCBzY25vLCBzY19uciwgc3lzY2FsbF90YWJsZSk7XG4tXG4tXHQvKlxuLVx0ICogVGhlIHRyYWNpbmcgc3RhdHVzIG1heSBoYXZlIGNoYW5nZWQgdW5kZXIgb3VyIGZlZXQsIHNvIHdlIGhhdmUgdG9cbi1cdCAqIGNoZWNrIGFnYWluLiBIb3dldmVyLCBpZiB3ZSB3ZXJlIHRyYWNpbmcgZW50cnksIHRoZW4gd2UgYWx3YXlzIHRyYWNlXG4tXHQgKiBleGl0IHJlZ2FyZGxlc3MsIGFzIHRoZSBvbGQgZW50cnkgYXNzZW1ibHkgZGlkLlxuLVx0ICovXG4tXHRpZiAoIWhhc19zeXNjYWxsX3dvcmsoZmxhZ3MpIFx1MDAyNlx1MDAyNiAhSVNfRU5BQkxFRChDT05GSUdfREVCVUdfUlNFUSkpIHtcbi1cdFx0ZmxhZ3MgPSByZWFkX3RocmVhZF9mbGFncygpO1xuLVx0XHRpZiAoIWhhc19zeXNjYWxsX3dvcmsoZmxhZ3MpIFx1MDAyNlx1MDAyNiAhKGZsYWdzIFx1MDAyNiBfVElGX1NJTkdMRVNURVApKVxuLVx0XHRcdHJldHVybjtcbi1cdH1cbi1cbiB0cmFjZV9leGl0OlxuLVx0c3lzY2FsbF90cmFjZV9leGl0KHJlZ3MpO1xuK1x0c3lzY2FsbF9leGl0X3RvX3VzZXJfbW9kZV93b3JrKHJlZ3MpO1xuIH1cbiBcbiB2b2lkIGRvX2VsMF9zdmMoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jIGIvYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jXG5pbmRleCA1OTJkZDg2NjhkZTQ2My4uMzdjZGM3YzcyZTE1YzMgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmNcbisrKyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28uY1xuQEAgLTM0MywzICszNDMsMTkgQEAgaW50IGFyY2hfc2V0dXBfYWRkaXRpb25hbF9wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBpbnQgdXNlc19pbnRlcnApXG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbitcbitib29sIGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybihzdHJ1Y3QgcHRfcmVncyAqcmVncylcbit7XG4rXHR1bnNpZ25lZCBsb25nIGxhbmRpbmdfcGFkO1xuK1xuKyNpZmRlZiBDT05GSUdfQ09NUEFUXG4rXHRpZiAoaXNfY29tcGF0X3Rhc2soKSkge1xuK1x0XHR1bnNpZ25lZCBsb25nIHNpZ3BhZ2UgPSAodW5zaWduZWQgbG9uZyljdXJyZW50LVx1MDAzZW1tLVx1MDAzZWNvbnRleHQuc2lncGFnZTtcbitcbitcdFx0cmV0dXJuIHJlZ3MtXHUwMDNlcGMgXHUwMDNlPSBzaWdwYWdlIFx1MDAyNlx1MDAyNiByZWdzLVx1MDAzZXBjIFx1MDAzYyAoc2lncGFnZSArIFBBR0VfU0laRSk7XG4rXHR9XG4rI2VuZGlmXG4rXHRsYW5kaW5nX3BhZCA9ICh1bnNpZ25lZCBsb25nKVZEU09fU1lNQk9MKGN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlY29udGV4dC52ZHNvLCBzaWdyZXR1cm5fbGFuZGluZ19wYWQpO1xuK1xuK1x0cmV0dXJuIHJlZ3MtXHUwMDNlcGMgPT0gbGFuZGluZ19wYWQ7XG4rfVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlMgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TXG5pbmRleCAwZTE4NzI5YWJjM2I3OC4uOGQyZDQxM2ZmNDVlOGIgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TXG5AQCAtNzMsNiArNzMsNyBAQCBTWU1fQ09ERV9TVEFSVChfX2tlcm5lbF9ydF9zaWdyZXR1cm4pXG4gXHRtb3ZcdHg4LCAjX19OUl9ydF9zaWdyZXR1cm5cbiAvL1x0UExFQVNFIERPIE5PVCBNT0RJRllcbiBcdHN2Y1x0IzBcbitcdFNZTV9JTk5FUl9MQUJFTChfX3NpZ3JldHVybl9sYW5kaW5nX3BhZCwgU1lNX0xfR0xPQkFMKVxuIC8vXHRQTEVBU0UgRE8gTk9UIE1PRElGWVxuIC8vXHQuY2ZpX2VuZHByb2NcbiBTWU1fQ09ERV9FTkQoX19rZXJuZWxfcnRfc2lncmV0dXJuKVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuUyBiL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuU1xuaW5kZXggNTIzMTRiZTI5MTkxMjEuLmRhNjFkNmZjNmZlOWYzIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TXG4rKysgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlNcbkBAIC0xMTIsMyArMTEyLDQgQEAgVkVSU0lPTlxuICAqIE1ha2UgdGhlIHNpZ3JldHVybiBjb2RlIHZpc2libGUgdG8gdGhlIGtlcm5lbC5cbiAgKi9cbiBWRFNPX3NpZ3RyYW1wXHRcdD0gX19rZXJuZWxfcnRfc2lncmV0dXJuO1xuK1ZEU09fc2lncmV0dXJuX2xhbmRpbmdfcGFkXHQ9IF9fc2lncmV0dXJuX2xhbmRpbmdfcGFkO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjI6MTA6MzguMDk4OTY3NDcxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI1OTE0NTgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaDogYXJtNjQgU3lzY2FsbCBFbnRyeSBDaGFuZ2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGZ1bmRhbWVudGFsbHkgYWx0ZXJzIHRoZSBhcm02NCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSBob3cgc3lzdGVtIGNhbGxzIGFyZSBoYW5kbGVkLiBUaGUgcGF0Y2ggaXMgZW5hYmxpbmcgYEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIYCBhbmQgYEdFTkVSSUNfRU5UUllgLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IHNoaWZ0IGluIGhvdyB0aGUga2VybmVsIGludGVyYWN0cyB3aXRoIHVzZXItc3BhY2UgYXBwbGljYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZXkgYXJlIG1vdmluZyBhd2F5IGZyb20gdGhlIG1vcmUgc3BlY2lmaWMgYEdFTkVSSUNfSVJRX0VOVFJZYCBpbiBmYXZvciBvZiB0aGlzIGBHRU5FUklDX0VOVFJZYCBhcHByb2FjaC4gVGhpcyBwYXRjaCB0b3VjaGVzIGEgdmFzdCBudW1iZXIgb2YgZmlsZXMsIGluZGljYXRpbmcgaXRzIGJyb2FkIGltcGFjdC4gSSBjYW4gc2VlIGNoYW5nZXMgYWNyb3NzIGluY2x1ZGUgZmlsZXMsIHRoZSBLY29uZmlnLCBhbmQgdGhlIGNvcmUga2VybmVsIGNvbXBvbmVudHMuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gY2VudGVyIGFyb3VuZCBgYXJjaC9hcm02NC9rZXJuZWwvc3lzY2FsbC5jYCwgcGFydGljdWxhcmx5IHRoZSBgZWwwX3N2Y19jb21tb25gIGZ1bmN0aW9uIOKAkyB0aGUgc3lzY2FsbCBlbnRyeSBwb2ludCDigJMgYW5kIHRoZSBgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuYCBmdW5jdGlvbi4gSSBzZWUgdGhleSBoYXZlIGltcGxlbWVudGVkIHRoaXMgbmV3IGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gLiBUaGlzIGhhcyB0byBiZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIGFyY2hpdGVjdHVyZSBjb2RlIChzeXNjYWxsIGVudHJ5L2V4aXQpLlxuXG5UaGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIGZsYWdnaW5nIHRoaXMgZm9yIHNlcmlvdXMgZnV6emluZy4gVGhlIHN5c2NhbGwgZW50cnkvZXhpdCBwYXRoIGlzIGEgY3JpdGljYWwgc2VjdXJpdHktc2Vuc2l0aXZlIGFyZWEuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyByb2J1c3QuXG5cbkxldCdzIHNlZS4gVGhpcyBgZWwwX3N2Y19jb21tb25gIGZ1bmN0aW9uLiBJdCdzIHRoZSBwcmltYXJ5IHN5c2NhbGwgZW50cnkgcG9pbnQsIHdoaWNoIG1lYW5zIGl0J3MgZGVmaW5pdGVseSBhIGhvdC1wYXRoIGZ1bmN0aW9uLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YXJucyBhYm91dCBob3QtcGF0aCBmdW5jdGlvbnMuIGBlbDBfc3ZjX2NvbW1vbmAgaXMgdGhlIG1vc3QgaW1wb3J0YW50IG9uZSB0aGF0IHdhcyBjaGFuZ2VkLiBIbW0sIHBlcmhhcHMgSSBzaG91bGRuJ3QgbGlzdCBpdCBkaXJlY3RseSBiZWNhdXNlIGl0J3Mgc28gaG90LiBXZSBkb24ndCB3YW50IHRvIGdldCBkaXN0cmFjdGVkIHdpdGggbm9pc2UgaW4gdGhlIGNhbGxncmFwaC5cblxuU28sIGxldCdzIHpvb20gaW4gb24gYGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybmAuIFRoaXMgbGlrZWx5IGdldHMgY2FsbGVkIGR1cmluZyBzeXNjYWxsIHVzZXIgZGlzcGF0Y2ggdG8gZGV0ZXJtaW5lIGlmIGl0J3MgYSBgdmRzb2Agc2lncmV0dXJuLiBMZXQncyBjaGVjayBgS2NvbmZpZ2AgZm9yIGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Nzc1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMjI6MTA6NDYuMzU4MTE1NjU4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzQwNTQzMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1lTQ0FMTF9VU0VSX0RJU1BBVENIXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY2FsbC11c2VyLWRpc3BhdGNoLnJzdD01Mj1mb2xsb3dpbmcgcHJjdGw6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjYWxsLXVzZXItZGlzcGF0Y2gucnN0LTUzLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY2FsbC11c2VyLWRpc3BhdGNoLnJzdDo1NDogIHByY3RsKFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0gsIFxcdTAwM2NvcFxcdTAwM2UsIFxcdTAwM2NvZmZzZXRcXHUwMDNlLCBcXHUwMDNjbGVuZ3RoXFx1MDAzZSwgW3NlbGVjdG9yXSlcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2NhbGwtdXNlci1kaXNwYXRjaC5yc3QtNTUtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2NhbGwtdXNlci1kaXNwYXRjaC5yc3Q9ODE9QWRkaXRpb25hbGx5LCBhIHRhc2tzIHN5c2NhbGwgdXNlciBkaXNwYXRjaCBjb25maWd1cmF0aW9uIGNhbiBiZSBwZWVrZWRcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2NhbGwtdXNlci1kaXNwYXRjaC5yc3Q6ODI6YW5kIHBva2VkIHZpYSB0aGUgUFRSQUNFXyhHRVR8U0VUKV9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHIHB0cmFjZVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY2FsbC11c2VyLWRpc3BhdGNoLnJzdC04My1yZXF1ZXN0cy4gVGhpcyBpcyB1c2VmdWwgZm9yIGNoZWNrcG9pbnQvcmVzdGFydCBzb2Z0d2FyZS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL2tlcm5lbC5yc3Q9MTQwOD1Db250cm9scyB3aGV0aGVyIHVzZXJzcGFjZSBtYXkgYXJtIFN5c2NhbGwgVXNlciBEaXNwYXRjaCB2aWFcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0OjE0MDk6YGBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCAuLi4pYGAgb3IgdGhlXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwva2VybmVsLnJzdDoxNDEwOmBgUFRSQUNFX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHYGAgcHRyYWNlIHJlcXVlc3Q6XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwva2VybmVsLnJzdC0xNDExLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwva2VybmVsLnJzdC0xNDE3LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL2tlcm5lbC5yc3Q6MTQxODpPbmx5IHByZXNlbnQgd2hlbiB0aGUga2VybmVsIGlzIGJ1aWx0IHdpdGggYGBDT05GSUdfU1lTQ0FMTF9VU0VSX0RJU1BBVENIYGBcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC9rZXJuZWwucnN0LTE0MTktYW5kIGBgQ09ORklHX1BST0NfU1lTQ1RMYGAuXFxuLS1cXG5hcmNoL0tjb25maWc9MTEyPWNvbmZpZyBHRU5FUklDX0VOVFJZXFxuLS1cXG5hcmNoL0tjb25maWctMTE2LVxcbmFyY2gvS2NvbmZpZzoxMTc6Y29uZmlnIEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXFxuYXJjaC9LY29uZmlnLTExOC1cXHRib29sXFxuYXJjaC9LY29uZmlnLTExOS1cXG5hcmNoL0tjb25maWc6MTIwOmNvbmZpZyBTWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG5hcmNoL0tjb25maWctMTIxLVxcdGJvb2wgXFxcIlN5c2NhbGwgVXNlciBEaXNwYXRjaFxcXCJcXG5hcmNoL0tjb25maWc6MTIyOlxcdGRlcGVuZHMgb24gQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG5hcmNoL0tjb25maWctMTIzLVxcdGRlcGVuZHMgb24gR0VORVJJQ19FTlRSWVxcbi0tXFxuYXJjaC9hcm02NC9LY29uZmlnPTI9Y29uZmlnIEFSTTY0XFxuLS1cXG5hcmNoL2FybTY0L0tjb25maWctODktXFx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU0NIRURfTUNcXG5hcmNoL2FybTY0L0tjb25maWc6OTA6XFx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXFxuYXJjaC9hcm02NC9LY29uZmlnLTkxLVxcdHNlbGVjdCBBUkNIX1dBTlRfQkFUQ0hFRF9VTk1BUF9UTEJfRkxVU0hcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NTg9Y29uZmlnIFg4Nlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0zMzgtXFx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfU0NIRURfTUNcXHRcXHRpZiBTTVBcXG5hcmNoL3g4Ni9LY29uZmlnOjMzOTpcXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG5hcmNoL3g4Ni9LY29uZmlnLTM0MC1cXHRzZWxlY3QgSEFWRV9TSU5HTEVfRlRSQUNFX0RJUkVDVF9PUFNcXHRpZiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG4tLVxcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtMjktXFx0XFx0XFx0XFx0IFNZU0NBTExfV09SS19TWVNDQUxMX0FVRElUIHxcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaDozMDpcXHRcXHRcXHRcXHQgU1lTQ0FMTF9XT1JLX1NZU0NBTExfVVNFUl9ESVNQQVRDSCB8XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmgtMzEtXFx0XFx0XFx0XFx0IFNZU0NBTExfV09SS19TWVNDQUxMX1JTRVFfU0xJQ0UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTM3LVxcdFxcdFxcdFxcdCBTWVNDQUxMX1dPUktfU1lTQ0FMTF9BVURJVCB8XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmg6Mzg6XFx0XFx0XFx0XFx0IFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0ggfFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTM5LVxcdFxcdFxcdFxcdCBTWVNDQUxMX1dPUktfU1lTQ0FMTF9FWElUX1RSQVApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oPTY1PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgbG9uZyBzeXNjYWxsX3RyYWNlX2VudGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHdvcmssXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTcyLVxcdCAqL1xcbmluY2x1ZGUvbGludXgvZW50cnktY29tbW9uLmg6NzM6XFx0aWYgKHdvcmsgXFx1MDAyNiBTWVNDQUxMX1dPUktfU1lTQ0FMTF9VU0VSX0RJU1BBVENIKSB7XFxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaC03NC1cXHRcXHRpZiAoc3lzY2FsbF91c2VyX2Rpc3BhdGNoKHJlZ3MpKVxcbi0tXFxuaW5jbHVkZS9saW51eC9lbnRyeS1jb21tb24uaD0yNDQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHN5c2NhbGxfZXhpdF93b3JrKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHdvcmspXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTI1My1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oOjI1NDpcXHRpZiAod29yayBcXHUwMDI2IFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0gpIHtcXG5pbmNsdWRlL2xpbnV4L2VudHJ5LWNvbW1vbi5oLTI1NS1cXHRcXHRpZiAoc3lzY2FsbF91c2VyX2Rpc3BhdGNoX2NsZWFyX29uX2Rpc3BhdGNoKCkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTQtICovXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaDo1OiNpZm5kZWYgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9IXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaDo2OiNkZWZpbmUgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9IXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaC03LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaD0xMj1zdHJ1Y3QgcHRfcmVncztcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTEzLVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6MTQ6I2lmZGVmIENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTE1LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaD0yNz1pbnQgc2V0X3N5c2NhbGxfdXNlcl9kaXNwYXRjaCh1bnNpZ25lZCBsb25nIG1vZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaC0zMC0jZGVmaW5lIGNsZWFyX3N5c2NhbGxfd29ya19zeXNjYWxsX3VzZXJfZGlzcGF0Y2godHNrKSBcXFxcXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaDozMTpcXHRjbGVhcl90YXNrX3N5c2NhbGxfd29yayh0c2ssIFNZU0NBTExfVVNFUl9ESVNQQVRDSClcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTMyLVxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guaD02Nz1zdGF0aWMgaW5saW5lIGludCBzeXNjYWxsX3VzZXJfZGlzcGF0Y2hfc2V0X2NvbmZpZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTcyLVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6NzM6I2VuZGlmIC8qIENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0ggKi9cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5oLTc0LVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmg6NzU6I2VuZGlmIC8qIF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfSCAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaDoyOiNpZm5kZWYgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9UWVBFU19IXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaDozOiNkZWZpbmUgX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9UWVBFU19IXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaC00LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaC02LVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmg6NzojaWZkZWYgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmgtOC1cXG4tLVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmg9MTg9c3RydWN0IHN5c2NhbGxfdXNlcl9kaXNwYXRjaCB7fTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbF91c2VyX2Rpc3BhdGNoX3R5cGVzLmgtMjEtXFxuaW5jbHVkZS9saW51eC9zeXNjYWxsX3VzZXJfZGlzcGF0Y2hfdHlwZXMuaDoyMjojZW5kaWYgLyogX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9UWVBFU19IICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmg9NDE9ZW51bSBzeXNjYWxsX3dvcmtfYml0IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaC00Ni1cXHRTWVNDQUxMX1dPUktfQklUX1NZU0NBTExfQVVESVQsXFxuaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oOjQ3OlxcdFNZU0NBTExfV09SS19CSVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILFxcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaC00OC1cXHRTWVNDQUxMX1dPUktfQklUX1NZU0NBTExfRVhJVF9UUkFQLFxcbi0tXFxuaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oLTU2LSNkZWZpbmUgU1lTQ0FMTF9XT1JLX1NZU0NBTExfQVVESVRcXHRcXHRCSVQoU1lTQ0FMTF9XT1JLX0JJVF9TWVNDQUxMX0FVRElUKVxcbmluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaDo1NzojZGVmaW5lIFNZU0NBTExfV09SS19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXHRCSVQoU1lTQ0FMTF9XT1JLX0JJVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0gpXFxuaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oLTU4LSNkZWZpbmUgU1lTQ0FMTF9XT1JLX1NZU0NBTExfRVhJVF9UUkFQXFx0XFx0QklUKFNZU0NBTExfV09SS19CSVRfU1lTQ0FMTF9FWElUX1RSQVApXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaD0xMzQ9c3RydWN0IHByY3RsX21tX21hcCB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaC0yNjctLyogRGlzcGF0Y2ggc3lzY2FsbHMgdG8gYSB1c2Vyc3BhY2UgaGFuZGxlciAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oOjI2ODojZGVmaW5lIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXHQ1OVxcbmluY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oLTI2OS0jIGRlZmluZSBQUl9TWVNfRElTUEFUQ0hfT0ZGXFx0XFx0MFxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cmFjZS5oPTExMD1zdHJ1Y3QgcHRyYWNlX3JzZXFfY29uZmlndXJhdGlvbiB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvcHRyYWNlLmgtMTE3LVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHJhY2UuaDoxMTg6I2RlZmluZSBQVFJBQ0VfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSF9DT05GSUcgMHg0MjEwXFxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cmFjZS5oOjExOTojZGVmaW5lIFBUUkFDRV9HRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRyAweDQyMTFcXG5pbmNsdWRlL3VhcGkvbGludXgvcHRyYWNlLmgtMTIwLVxcbi0tXFxua2VybmVsL2VudHJ5L01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19HRU5FUklDX1NZU0NBTEwpIFxcdFxcdCs9IHN5c2NhbGwtY29tbW9uLm9cXG5rZXJuZWwvZW50cnkvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSClcXHQrPSBzeXNjYWxsX3VzZXJfZGlzcGF0Y2gub1xcbmtlcm5lbC9lbnRyeS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVklSVF9YRkVSX1RPX0dVRVNUX1dPUkspXFx0Kz0gdmlydC5vXFxuLS1cXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM9NzM9c3RhdGljIGludCB0YXNrX3NldF9zeXNjYWxsX3VzZXJfZGlzcGF0Y2goc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCB1bnNpZ25lZCBsb25nIG1vZGUsXFxuLS1cXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmMtMTI4LVxcdGlmIChtb2RlICE9IFBSX1NZU19ESVNQQVRDSF9PRkYpXFxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jOjEyOTpcXHRcXHRzZXRfdGFza19zeXNjYWxsX3dvcmsodGFzaywgU1lTQ0FMTF9VU0VSX0RJU1BBVENIKTtcXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmMtMTMwLVxcdGVsc2VcXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM6MTMxOlxcdFxcdGNsZWFyX3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfVVNFUl9ESVNQQVRDSCk7XFxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jLTEzMi1cXG4tLVxcbmtlcm5lbC9lbnRyeS9zeXNjYWxsX3VzZXJfZGlzcGF0Y2guYz0xNDI9aW50IHN5c2NhbGxfdXNlcl9kaXNwYXRjaF9nZXRfY29uZmlnKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgdW5zaWduZWQgbG9uZyBzaXplLFxcbi0tXFxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jLTE1MC1cXG5rZXJuZWwvZW50cnkvc3lzY2FsbF91c2VyX2Rpc3BhdGNoLmM6MTUxOlxcdGlmICh0ZXN0X3Rhc2tfc3lzY2FsbF93b3JrKHRhc2ssIFNZU0NBTExfVVNFUl9ESVNQQVRDSCkpXFxua2VybmVsL2VudHJ5L3N5c2NhbGxfdXNlcl9kaXNwYXRjaC5jLTE1Mi1cXHRcXHRjZmcubW9kZSA9IFBSX1NZU19ESVNQQVRDSF9PTjtcXG4tLVxcbmtlcm5lbC9wdHJhY2UuYz0xMTYyPWludCBwdHJhY2VfcmVxdWVzdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCBsb25nIHJlcXVlc3QsXFxuLS1cXG5rZXJuZWwvcHRyYWNlLmMtMTM5Ny1cXG5rZXJuZWwvcHRyYWNlLmM6MTM5ODpcXHRjYXNlIFBUUkFDRV9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRzpcXG5rZXJuZWwvcHRyYWNlLmMtMTM5OS1cXHRcXHRyZXQgPSBzeXNjYWxsX3VzZXJfZGlzcGF0Y2hfc2V0X2NvbmZpZyhjaGlsZCwgYWRkciwgZGF0YXZwKTtcXG4tLVxcbmtlcm5lbC9wdHJhY2UuYy0xNDAxLVxcbmtlcm5lbC9wdHJhY2UuYzoxNDAyOlxcdGNhc2UgUFRSQUNFX0dFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHOlxcbmtlcm5lbC9wdHJhY2UuYy0xNDAzLVxcdFxcdHJldCA9IHN5c2NhbGxfdXNlcl9kaXNwYXRjaF9nZXRfY29uZmlnKGNoaWxkLCBhZGRyLCBkYXRhdnApO1xcbi0tXFxua2VybmVsL3N5cy5jPTI1MzQ9U1lTQ0FMTF9ERUZJTkU1KHByY3RsLCBpbnQsIG9wdGlvbiwgdW5zaWduZWQgbG9uZywgYXJnMiwgdW5zaWduZWQgbG9uZywgYXJnMyxcXG4tLVxcbmtlcm5lbC9zeXMuYy0yODAxLVxcdFxcdGJyZWFrO1xcbmtlcm5lbC9zeXMuYzoyODAyOlxcdGNhc2UgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSDpcXG5rZXJuZWwvc3lzLmMtMjgwMy1cXHRcXHRlcnJvciA9IHNldF9zeXNjYWxsX3VzZXJfZGlzcGF0Y2goYXJnMiwgYXJnMywgYXJnNCxcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oPTEzND1zdHJ1Y3QgcHJjdGxfbW1fbWFwIHtcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oLTI1NS0vKiBEaXNwYXRjaCBzeXNjYWxscyB0byBhIHVzZXJzcGFjZSBoYW5kbGVyICovXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmg6MjU2OiNkZWZpbmUgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcdDU5XFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmgtMjU3LSMgZGVmaW5lIFBSX1NZU19ESVNQQVRDSF9PRkZcXHRcXHQwXFxuLS1cXG50b29scy9wZXJmL3RyYWNlL2JlYXV0eS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaD0xMzQ9c3RydWN0IHByY3RsX21tX21hcCB7XFxuLS1cXG50b29scy9wZXJmL3RyYWNlL2JlYXV0eS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaC0yNjctLyogRGlzcGF0Y2ggc3lzY2FsbHMgdG8gYSB1c2Vyc3BhY2UgaGFuZGxlciAqL1xcbnRvb2xzL3BlcmYvdHJhY2UvYmVhdXR5L2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oOjI2ODojZGVmaW5lIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXHQ1OVxcbnRvb2xzL3BlcmYvdHJhY2UvYmVhdXR5L2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oLTI2OS0jIGRlZmluZSBQUl9TWVNfRElTUEFUQ0hfT0ZGXFx0XFx0MFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmM9MTg9VEVTVChnZXRfc2V0X3N1ZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jLTM5LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cmFjZS9nZXRfc2V0X3N1ZC5jOjQwOlxcdHJldCA9IHN5c19wdHJhY2UoUFRSQUNFX0dFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hfQ09ORklHLCBjaGlsZCxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYy00MS1cXHRcXHRcXHQgKHZvaWQgKilzaXplb2YoY29uZmlnKSwgXFx1MDAyNmNvbmZpZyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYy01My1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYzo1NDpcXHRyZXQgPSBzeXNfcHRyYWNlKFBUUkFDRV9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRywgY2hpbGQsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmMtNTUtXFx0XFx0XFx0ICh2b2lkICopc2l6ZW9mKGNvbmZpZyksIFxcdTAwMjZjb25maWcpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmMtNTktXFx0bWVtc2V0KFxcdTAwMjZjb25maWcsIDEsIHNpemVvZihjb25maWcpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHJhY2UvZ2V0X3NldF9zdWQuYzo2MDpcXHRyZXQgPSBzeXNfcHRyYWNlKFBUUkFDRV9HRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIX0NPTkZJRywgY2hpbGQsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRyYWNlL2dldF9zZXRfc3VkLmMtNjEtXFx0XFx0XFx0ICh2b2lkICopc2l6ZW9mKGNvbmZpZyksIFxcdTAwMjZjb25maWcpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL2NvbmZpZzoxOkNPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0g9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYy0yMC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX2JlbmNobWFyay5jOjIxOiNpZm5kZWYgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmM6MjI6IyBkZWZpbmUgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcdDU5XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYy0yMy0jIGRlZmluZSBQUl9TWVNfRElTUEFUQ0hfT0ZGXFx0MFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYz0xMzY9aW50IG1haW4odm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmMtMTYyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfYmVuY2htYXJrLmM6MTYzOlxcdGlmIChwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfT04sXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF9iZW5jaG1hcmsuYy0xNjQtXFx0XFx0ICBzeXNjYWxsX2Rpc3BhdGNoZXJfc3RhcnQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0xOC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzoxOTojaWZuZGVmIFBSX1NFVF9TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzoyMDojIGRlZmluZSBQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENIXFx0NTlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yMS0jIGRlZmluZSBQUl9TWVNfRElTUEFUQ0hfT0ZGXFx0MFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtNDUtICpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzo0NjogKiAtIGRpc3BhdGNoX3RyaWdnZXJfc2lnc3lzOiBWZXJpZnkgaWYgUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCBpc1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTQ3LSAqICAgYWJsZSB0byB0cmlnZ2VyIFNJR1NZUyBvbiBhIHN5c2NhbGwuXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYz02NT1URVNUX1NJR05BTChkaXNwYXRjaF90cmlnZ2VyX3NpZ3N5cywgU0lHU1lTKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtNzMtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6NzQ6XFx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX0VYQ0xVU0lWRV9PTiwgMCwgMCwgXFx1MDAyNnNlbCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtNzUtXFx0QVNTRVJUX0VRKDAsIHJldCkge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjc2OlxcdFxcdFRIX0xPRyhcXFwiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTc3LVxcdH1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jPTg4PXN0YXRpYyB2b2lkIHByY3RsX3ZhbGlkKHN0cnVjdCBfX3Rlc3RfbWV0YWRhdGEgKl9tZXRhZGF0YSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTkxLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzo5MjpcXHRFWFBFQ1RfRVEoMCwgcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgb3AsIG9mZiwgc2l6ZSwgc2VsKSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtOTMtfVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9OTU9c3RhdGljIHZvaWQgcHJjdGxfaW52YWxpZChzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy05OC17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6OTk6XFx0RVhQRUNUX0VRKC0xLCBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBvcCwgb2ZmLCBzaXplLCBzZWwpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0xMDAtXFx0RVhQRUNUX0VRKGVyciwgZXJybm8pO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MjEwPVRFU1QoZGlzcGF0Y2hfYW5kX3JldHVybilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTIyMy1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYzoyMjQ6XFx0cmV0ID0gcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgUFJfU1lTX0RJU1BBVENIX0VYQ0xVU0lWRV9PTiwgMCwgMCwgXFx1MDAyNmdsb2Jfc2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yMjUtXFx0QVNTRVJUX0VRKDAsIHJldCkge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjIyNjpcXHRcXHRUSF9MT0coXFxcIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0yMjctXFx0fVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MjU1PVRFU1RfU0lHTkFMKGJhZF9zZWxlY3RvciwgU0lHU1lTKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMjc5LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjI4MDpcXHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfRVhDTFVTSVZFX09OLCAwLCAwLCBcXHUwMDI2Z2xvYl9zZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTI4MS1cXHRBU1NFUlRfRVEoMCwgcmV0KSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MjgyOlxcdFxcdFRIX0xPRyhcXFwiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTI4My1cXHR9XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYz0yOTg9VEVTVChkaXNhYmxlX2Rpc3BhdGNoKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzAzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjMwNDpcXHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfRVhDTFVTSVZFX09OLCAwLCAwLCBcXHUwMDI2c2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMDUtXFx0QVNTRVJUX0VRKDAsIHJldCkge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjMwNjpcXHRcXHRUSF9MT0coXFxcIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IENPTkZJR19TWVNDQUxMX1VTRVJfRElTUEFUQ0hcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMDctXFx0fVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzExLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjMxMjpcXHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfT0ZGLCAwLCAwLCAwKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zMTMtXFx0RVhQRUNUX0VRKDAsIHJldCkge1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM9MzI2PVRFU1QoZGlyZWN0X2Rpc3BhdGNoX3JhbmdlKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzM1LVxcdCAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjMzNjpcXHRyZXQgPSBwcmN0bChQUl9TRVRfU1lTQ0FMTF9VU0VSX0RJU1BBVENILCBQUl9TWVNfRElTUEFUQ0hfRVhDTFVTSVZFX09OLCAwLCAtMUwsIFxcdTAwMjZzZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTMzNy1cXHRBU1NFUlRfRVEoMCwgcmV0KSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmM6MzM4OlxcdFxcdFRIX0xPRyhcXFwiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgQ09ORklHX1NZU0NBTExfVVNFUl9ESVNQQVRDSFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jLTMzOS1cXHR9XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYz0zNDk9c3RhdGljIHZvaWQgdGVzdF9yYW5nZShzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zeXNjYWxsX3VzZXJfZGlzcGF0Y2gvc3VkX3Rlc3QuYy0zNTQtXFx0U1lTQ0FMTF9ESVNQQVRDSF9PRkYoZ2xvYl9zZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2NhbGxfdXNlcl9kaXNwYXRjaC9zdWRfdGVzdC5jOjM1NTpcXHRFWFBFQ1RfRVEoMCwgcHJjdGwoUFJfU0VUX1NZU0NBTExfVVNFUl9ESVNQQVRDSCwgb3AsIG9mZiwgc2l6ZSwgXFx1MDAyNmdsb2Jfc2VsKSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc3lzY2FsbF91c2VyX2Rpc3BhdGNoL3N1ZF90ZXN0LmMtMzU2LVxcdFNZU0NBTExfRElTUEFUQ0hfT04oZ2xvYl9zZWwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMjoxMDo0OC4xOTIxNzQ3MDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTg3NTQ5NzE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU3lzY2FsbCBVc2VyIERpc3BhdGNoIFBhdGNoIGZvciBhcm02NCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGVuYWJsaW5nIGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgIG9uIGFybTY0LiAgVGhlIG1haW4gZGVwZW5kZW5jeSBpcyB0aGF0IGBBUkNIX1NVUFBPUlRTX1NZU0NBTExfVVNFUl9ESVNQQVRDSGAgaXMgZW5hYmxlZCwgd2hpY2ggdGhpcyBwYXRjaCBkb2VzLiAgQ3J1Y2lhbGx5LCBpdCBhbHNvIGVuYWJsZXMgYEdFTkVSSUNfRU5UUllgIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgdGhpcyBmZWF0dXJlLiAgQmVjYXVzZSBvZiB0aGlzLCB3ZSAqbXVzdCogZW5zdXJlIHRoYXQgYFNZU0NBTExfVVNFUl9ESVNQQVRDSGAgaXMgZXhwbGljaXRseSBlbmFibGVkLiAgQWxzbywgc2luY2UgYXJtNjQgaXMgbm93IHVzaW5nIGBHRU5FUklDX0VOVFJZYCB0aGUgY29uZmlnIGlzIG5vIGxvbmdlciBuZWVkZWQuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUgY2hhbmdlcywgdGhlIGhlYXJ0IG9mIHRoZSBzeXNjYWxsIGVudHJ5IGlzIGBlbDBfc3ZjX2NvbW1vbmAsIGJ1dCB0aGF0J3MgYSAqaG90IHBhdGgqLCBzbyBpdCdzIHByb2JhYmx5IG5vdCB1c2VmdWwgdG8gZGlyZWN0bHkgZnV6ei4gIFRoZSBwYXRjaCByZXBsYWNlcyB0cmFjaW5nIHdpdGggYHN5c2NhbGxfdHJhY2VfZW50ZXJgIGFuZCBgc3lzY2FsbF9leGl0X3RvX3VzZXJfbW9kZV93b3JrYCwgYW5kIHRoZSBwdHJhY2UgbG9naWMgaGFzIGNoYW5nZWQgdG8gcmVwb3J0IHN5c2NhbGwgZW50cnkgYW5kIGV4aXQuXG5cblRoZSBrZXkgbmV3IGZ1bmN0aW9uIGlzIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gIGluIGBhcmNoL2FybTY0L2tlcm5lbC92ZHNvLmNgLiBUaGlzIGlzIGVzc2VudGlhbCBiZWNhdXNlIGl0IGNoZWNrcyBpZiBhIHN5c2NhbGwgaXMgYSBgc2lncmV0dXJuYCwgd2hpY2ggaXMgaGFuZGxlZCBkaWZmZXJlbnRseSB1bmRlciBzeXNjYWxsIHVzZXIgZGlzcGF0Y2guIFRoaXMgZnVuY3Rpb24gaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbkZ1cnRoZXJtb3JlLCBjaGFuZ2VzIHdlcmUgbWFkZSB0byBgdXNlcl9lbmFibGVfc2luZ2xlX3N0ZXBgIGFuZCBgdXNlcl9kaXNhYmxlX3NpbmdsZV9zdGVwYCBpbiBgYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuY2AuICBUaGVzZSBhcmVuJ3QgaG90LXBhdGggZnVuY3Rpb25zLCBidXQgdGhleSdyZSBzdGlsbCByZWxldmFudCB0byBwdHJhY2UgYW5kIHNpbmdsZS1zdGVwcGluZywgc28gdGhleSBzaG91bGQgYmUgdGFyZ2V0ZWQgdG9vLlxuXG5Ob3csIGNvbmNlcm5pbmcgY29uZmlndXJhdGlvbnMsIGBTWVNDQUxMX1VTRVJfRElTUEFUQ0hgIGlzIGVzc2VudGlhbC4gV2Ugc2hvdWxkIGFsc28gaW5jbHVkZSBgQ09NUEFUYCBiZWNhdXNlIGBhcmNoX3N5c2NhbGxfaXNfdmRzb19zaWdyZXR1cm5gIHVzZXMgaXQuXG5cblNvLCBpbiBjb25jbHVzaW9uLCB0aGUgaW1wb3J0YW50IHRoaW5ncyB0byBsb29rIGF0IGZvciBmdXp6aW5nIGFyZTpcblxuKiAgICoqYGFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVybmAqKjogIFRoaXMgaXMgdGhlIHNpbmdsZSBtb3N0IGltcG9ydGFudCBmdW5jdGlvbiBhZGRlZCBhbmQgY2VudHJhbCB0byBjb3JyZWN0IGZ1bmN0aW9uYWxpdHkuXG4qICAgKipgdXNlcl9lbmFibGVfc2luZ2xlX3N0ZXBgKio6ICBSZWxldmFudCB0byBwdHJhY2UgYW5kIHNpbmdsZS1zdGVwcGluZyBpbnRlcmFjdGlvbi5cbiogICAqKmB1c2VyX2Rpc2FibGVfc2luZ2xlX3N0ZXBgKio6ICBQYXJ0IG9mIHNpbmdsZSBzdGVwcGluZyBsb2dpYy5cblxuQWxzbyB0aGUgZm9sbG93aW5nIGNvbmZpZ3Mgc2hvdWxkIGJlIGV4cGxpY2l0bHkgZW5hYmxlZDpcblxuKiAgICoqYFNZU0NBTExfVVNFUl9ESVNQQVRDSGAqKjogUmVxdWlyZWQgZm9yIHRoaXMgcGF0Y2gncyBjb3JlIGZ1bmN0aW9uYWxpdHkuXG4qICAgKipgQ09NUEFUYCoqOiB0byB0ZXN0IHRoZSBjb21wYXQgcGF0aCBpbiBgYXJjaF9zeXNjYWxsX2lzX3Zkc29fc2lncmV0dXJuYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwMDQsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQyMjoxMToxMC4wNjc2NzQ4NzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDAyMDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTWVNDQUxMX1VTRVJfRElTUEFUQ0hcIixcbiAgICBcIkNPTVBBVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVyblwiLFxuICAgIFwidXNlcl9lbmFibGVfc2luZ2xlX3N0ZXBcIixcbiAgICBcInVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnZlcnRzIGFybTY0IHRvIHVzZSB0aGUgZ2VuZXJpYyBlbnRyeSBpbmZyYXN0cnVjdHVyZSBhbmQgYWRkcyBzdXBwb3J0IGZvciBTeXNjYWxsIFVzZXIgRGlzcGF0Y2guIFRoaXMgaW52b2x2ZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHN5c2NhbGwgZW50cnkvZXhpdCBwYXRocywgcHRyYWNlIHNpbmdsZS1zdGVwcGluZywgYW5kIFZEU08gc2lncmV0dXJuIGRldGVjdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTWVNDQUxMX1VTRVJfRElTUEFUQ0hcIixcbiAgICBcIkNPTVBBVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFyY2hfc3lzY2FsbF9pc192ZHNvX3NpZ3JldHVyblwiLFxuICAgIFwidXNlcl9lbmFibGVfc2luZ2xlX3N0ZXBcIixcbiAgICBcInVzZXJfZGlzYWJsZV9zaW5nbGVfc3RlcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnZlcnRzIGFybTY0IHRvIHVzZSB0aGUgZ2VuZXJpYyBlbnRyeSBpbmZyYXN0cnVjdHVyZSBhbmQgYWRkcyBzdXBwb3J0IGZvciBTeXNjYWxsIFVzZXIgRGlzcGF0Y2guIFRoaXMgaW52b2x2ZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHN5c2NhbGwgZW50cnkvZXhpdCBwYXRocywgcHRyYWNlIHNpbmdsZS1zdGVwcGluZywgYW5kIFZEU08gc2lncmV0dXJuIGRldGVjdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkwsbn[1] Phase: Succeeded StartedAt: 2026-07-21 22:11:21 +0000 UTC FinishedAt: 2026-07-21 22:11:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-21 22:11:21 +0000 UTC FinishedAt: 2026-07-21 22:11:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[2] Phase: Succeeded StartedAt: 2026-07-21 22:11:21 +0000 UTC FinishedAt: 2026-07-21 23:43:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-21 22:11:21 +0000 UTC FinishedAt: 2026-07-21 23:43:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-21 22:11:21 +0000 UTC FinishedAt: 2026-07-21 22:11:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-21 22:11:21 +0000 UTC FinishedAt: 2026-07-21 22:11:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowkwsbn/series-workflowkwsbn-convert-artifact-2097308088/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-21 22:11:31 +0000 UTC FinishedAt: 2026-07-21 23:11:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-21 22:11:31 +0000 UTC FinishedAt: 2026-07-21 23:11:16 +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:*7abac6a4-2a13-4bfd-a083-44533af03e1d,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-workflowkwsbn/series-workflowkwsbn-convert-artifact-2097308088/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": "c21fc311-c1e0-4f1e-a19f-3fa842bf56f1", "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-workflowkwsbn/series-workflowkwsbn-build-action-187934574/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-21 22:11:31 +0000 UTC FinishedAt: 2026-07-21 23:11:06 +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:*7abac6a4-2a13-4bfd-a083-44533af03e1d,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-workflowkwsbn/series-workflowkwsbn-convert-artifact-2097308088/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": "c21fc311-c1e0-4f1e-a19f-3fa842bf56f1", "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-workflowkwsbn/series-workflowkwsbn-build-action-187934574/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-21 23:11:16 +0000 UTC FinishedAt: 2026-07-21 23:11:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-21 23:11:16 +0000 UTC FinishedAt: 2026-07-21 23:11:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-21 23:11:16 +0000 UTC FinishedAt: 2026-07-21 23:11:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-21 23:11:16 +0000 UTC FinishedAt: 2026-07-21 23:11:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowkwsbn/series-workflowkwsbn-convert-artifact-3354671135/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-21 23:11:26 +0000 UTC FinishedAt: 2026-07-21 23:42:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-21 23:11:26 +0000 UTC FinishedAt: 2026-07-21 23:42:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c21fc311-c1e0-4f1e-a19f-3fa842bf56f1,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-workflowkwsbn/series-workflowkwsbn-build-action-187934574/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": false },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-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Failed StartedAt: 2026-07-21 23:42:54 +0000 UTC FinishedAt: 2026-07-21 23:43:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkwsbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["arch_syscall_is_vdso_sigreturn","user_enable_single_step","user_disable_single_step"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","enable_configs":["SYSCALL_USER_DISPATCH","COMPAT"],"series_id":"0d03e565-a631-4a6c-9fd9-fe3eb176ff38","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Failed StartedAt: 2026-07-21 23:42:54 +0000 UTC FinishedAt: 2026-07-21 23:43:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}