ZGlmZiAtLWdpdCBhL2RvYy9SRUFETUUubWQgYi9kb2MvUkVBRE1FLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mzc4ZTk3Li4wMDAwMDAwCi0tLSBhL2RvYy9SRUFETUUubWQKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0KLQotPGgxPlRoZSB0cmlxIGFwcGxpY2F0aW9uPC9oMT4KLQotVGhlIHRyaXEgYXBwbGljYXRpb24KLT09PT09PT09PT09PT09PT09PT09Ci0KLQotQ29weXJpZ2h0IKkgMjAxMCBUcmlmb3JrIEEvUwotCi1fX1ZlcnNpb246X18gPz8KLQotCi0KLV9fQXV0aG9yczpfXyBLcmVzdGVuIEtyYWIgVGhvcnVwIChbYGtyYWJAdHJpZm9yay5jb21gXShtYWlsdG86a3JhYkB0cmlmb3JrLmNvbSkpLgotCi08aDIgY2xhc3M9ImluZGV4dGl0bGUiPk1vZHVsZXM8L2gyPgotCi0KLQotPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIHN1bW1hcnk9Imxpc3Qgb2YgbW9kdWxlcyI+Ci08dHI+PHRkPjxhIGhyZWY9ImNlbGwubWQiIGNsYXNzPSJtb2R1bGUiPmNlbGw8L2E+PC90ZD48L3RyPgotPHRyPjx0ZD48YSBocmVmPSJwZGljdF9zdGF0ZW0ubWQiIGNsYXNzPSJtb2R1bGUiPnBkaWN0X3N0YXRlbTwvYT48L3RkPjwvdHI+Ci08dHI+PHRkPjxhIGhyZWY9InRyaXEubWQiIGNsYXNzPSJtb2R1bGUiPnRyaXE8L2E+PC90ZD48L3RyPgotPHRyPjx0ZD48YSBocmVmPSJ0cmlxX2FwcC5tZCIgY2xhc3M9Im1vZHVsZSI+dHJpcV9hcHA8L2E+PC90ZD48L3RyPgotPHRyPjx0ZD48YSBocmVmPSJ0cmlxX2RvbS5tZCIgY2xhc3M9Im1vZHVsZSI+dHJpcV9kb208L2E+PC90ZD48L3RyPgotPHRyPjx0ZD48YSBocmVmPSJ0cmlxX3N0YXRlbS5tZCIgY2xhc3M9Im1vZHVsZSI+dHJpcV9zdGF0ZW08L2E+PC90ZD48L3RyPgotPHRyPjx0ZD48YSBocmVmPSJ0cmlxX3N1cC5tZCIgY2xhc3M9Im1vZHVsZSI+dHJpcV9zdXA8L2E+PC90ZD48L3RyPgotPHRyPjx0ZD48YSBocmVmPSJ0cmlxX3Rlc3RzLm1kIiBjbGFzcz0ibW9kdWxlIj50cmlxX3Rlc3RzPC9hPjwvdGQ+PC90cj48L3RhYmxlPgotCmRpZmYgLS1naXQgYS9kb2MvdHJpcS5tZCBiL2RvYy90cmlxLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2FkYTBmLi4wMDAwMDAwCi0tLSBhL2RvYy90cmlxLm1kCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLU1vZHVsZSB0cmlxCi09PT09PT09PT09PQotCi0KLTxoMT5Nb2R1bGUgdHJpcTwvaDE+Ci0KLSogW0Z1bmN0aW9uIEluZGV4XSgjaW5kZXgpCi0qIFtGdW5jdGlvbiBEZXRhaWxzXSgjZnVuY3Rpb25zKQotCi0KLQotCi0KLQotPGgyPjxhIG5hbWU9ImluZGV4Ij5GdW5jdGlvbiBJbmRleDwvYT48L2gyPgotCi0KLQotPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMiIgc3VtbWFyeT0iZnVuY3Rpb24gaW5kZXgiPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNjaGVjay0xIj5jaGVjay8xPC9hPjwvdGQ+PHRkPgotUnVuIFF1aWNrQ2hlY2suPC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNjaGVjay0yIj5jaGVjay8yPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjY2hlY2stMyI+Y2hlY2svMzwvYT48L3RkPjx0ZD4KLVJ1biBRdWlja0NoZWNrIG9uIGEgcHJvcGVydHksIHNwZWNpZnlpbmcgYSBzcGVjaWZpYyBleGFtcGxlIHRvIHRlc3QuPC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNjb3VudGVyZXhhbXBsZS0wIj5jb3VudGVyZXhhbXBsZS8wPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjY291bnRlcmV4YW1wbGUtMSI+Y291bnRlcmV4YW1wbGUvMTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI2ZhaWxzLTEiPmZhaWxzLzE8L2E+PC90ZD48dGQ+Ci1BIFByb3BlcnR5IHdoaWNoIHN1Y2NlZWRzIHdoZW4gaXRzIGFyZ3VtZW50IGZhaWxzLCBhbmQgZmFpbHMKLWlmIHRoZSBhcmd1bWVudCBzdWNjZWVkcy48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI21vZHVsZS0xIj5tb2R1bGUvMTwvYT48L3RkPjx0ZD4KLVJ1biBRdWlja0NoZWNrIG9uIGFsbCBwcm9wZXJ0aWVzIGluIGEgbW9kdWxlLjwvdGQ+PC90cj48L3RhYmxlPgotCi0KLTxhIG5hbWU9ImZ1bmN0aW9ucyI+PC9hPgotCi0KLTxoMj5GdW5jdGlvbiBEZXRhaWxzPC9oMj4KLQotCi08YSBuYW1lPSJjaGVjay0xIj48L2E+Ci0KLQotPGgzPmNoZWNrLzE8L2gzPgotCi0KLQotCi0KLTx0dD5jaGVjayhNb2R1bGU6OmF0b20oKSB8IDxhIGhyZWY9IiN0eXBlLXByb3BlcnR5Ij5wcm9wZXJ0eSgpPC9hPikgLT4gYW55KCk8L3R0PgotCi0KLQotCi1SdW4gUXVpY2tDaGVjay4gIElmIGFyZ3VtZW50IGlzIGFuIGF0b20sIGl0IHJ1bnMgdHJpcTptb2R1bGUvMQotY2hlY2tpbmcgYWxsIHRoZSBwcm9wZXJ0aWVzIGluIHNhaWQgbW9kdWxlOyBvdGhlcndpc2UgaWYgdGhlCi1hcmd1bWVudCBpcyBhIHByb3BlcnR5LCBpdCBydW5zIFF1aWNrQ2hlY2sgb24gc2FpZCBwcm9wZXJ0eS4KLQotPGEgbmFtZT0iY2hlY2stMiI+PC9hPgotCi0KLTxoMz5jaGVjay8yPC9oMz4KLQotCi0KLQotCi1gY2hlY2soTW9kdWxlLCBSdW5JdGVycykgLT4gYW55KClgCi0KLQotPGEgbmFtZT0iY2hlY2stMyI+PC9hPgotCi0KLTxoMz5jaGVjay8zPC9oMz4KLQotCi0KLQotCi08dHQ+Y2hlY2soUHJvcGVydHk6OjxhIGhyZWY9IiN0eXBlLXByb3BlcnR5Ij5wcm9wZXJ0eSgpPC9hPiwgQ291bnRlcmV4YW1wbGU6OlthbnkoKV0sIFJ1bkl0ZXJzOjppbnRlZ2VyKCkpIC0+IGFueSgpPC90dD4KLQotCi0KLQotUnVuIFF1aWNrQ2hlY2sgb24gYSBwcm9wZXJ0eSwgc3BlY2lmeWluZyBhIHNwZWNpZmljIGV4YW1wbGUgdG8gdGVzdC4KLVRoZSBleGFtcGxlIGNhbiBiZSBvYnRhaW5lZCBieSBjYWxsaW5nIFtgY291bnRlcmV4YW1wbGUvMGBdKCNjb3VudGVyZXhhbXBsZS0wKS4KLQotPGEgbmFtZT0iY291bnRlcmV4YW1wbGUtMCI+PC9hPgotCi0KLTxoMz5jb3VudGVyZXhhbXBsZS8wPC9oMz4KLQotCi0KLQotCi1gY291bnRlcmV4YW1wbGUoKSAtPiBhbnkoKWAKLQotCi08YSBuYW1lPSJjb3VudGVyZXhhbXBsZS0xIj48L2E+Ci0KLQotPGgzPmNvdW50ZXJleGFtcGxlLzE8L2gzPgotCi0KLQotCi0KLWBjb3VudGVyZXhhbXBsZShQcm9wKSAtPiBhbnkoKWAKLQotCi08YSBuYW1lPSJmYWlscy0xIj48L2E+Ci0KLQotPGgzPmZhaWxzLzE8L2gzPgotCi0KLQotCi0KLTx0dD5mYWlscyhQcm9wOjo8YSBocmVmPSIjdHlwZS1wcm9wZXJ0eSI+cHJvcGVydHkoKTwvYT4pIC0+IDxhIGhyZWY9IiN0eXBlLXByb3BlcnR5Ij5wcm9wZXJ0eSgpPC9hPjwvdHQ+Ci0KLQotCi0KLUEgUHJvcGVydHkgd2hpY2ggc3VjY2VlZHMgd2hlbiBpdHMgYXJndW1lbnQgZmFpbHMsIGFuZCBmYWlscwotaWYgdGhlIGFyZ3VtZW50IHN1Y2NlZWRzLiAgVGhpcyBpcyB2ZXJ5IGhhbmR5IGZvciBwcm9wZXJ0aWVzCi10aGF0IF9zaG91bGQgZmFpbF8uCi0KLTxhIG5hbWU9Im1vZHVsZS0xIj48L2E+Ci0KLQotPGgzPm1vZHVsZS8xPC9oMz4KLQotCi0KLQotCi08dHQ+bW9kdWxlKE1vZHVsZTo6YXRvbSgpKSAtPiB0cnVlIHwgYW55KCk8L3R0PgotCi0KLQotCi1SdW4gUXVpY2tDaGVjayBvbiBhbGwgcHJvcGVydGllcyBpbiBhIG1vZHVsZS4KLUlmIGFsbCBjaGVja3Mgc3VjY2VlZCwgdHJ1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlIHJldHVybiB0aGUKLXJlc3VsdCBvZiB0aGUgZmlyc3QgY2hlY2sgdGhhdCBmYWlscy4KLQotCi1fR2VuZXJhdGVkIGJ5IEVEb2MsIE5vdiA3IDIwMTAsIDExOjM5OjQ2Ll8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2MvdHJpcV9hcHAubWQgYi9kb2MvdHJpcV9hcHAubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjY2UyNDMuLjAwMDAwMDAKLS0tIGEvZG9jL3RyaXFfYXBwLm1kCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotTW9kdWxlIHRyaXFfYXBwCi09PT09PT09PT09PT09PT0KLQotCi08aDE+TW9kdWxlIHRyaXFfYXBwPC9oMT4KLQotKiBbRGVzY3JpcHRpb25dKCNkZXNjcmlwdGlvbikKLQotCi0uCi0KLQotCi1Db3B5cmlnaHQgqSAyMDEwIFRyaWZvcmsgQS9TCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLAotCi1fX0JlaGF2aW91cnM6X18gW2BhcHBsaWNhdGlvbmBdKGFwcGxpY2F0aW9uLm1kKS4KLQotX19BdXRob3JzOl9fIEtyZXN0ZW4gS3JhYiBUaG9ydXAgKFtga3JhYkB0cmlmb3JrLmNvbWBdKG1haWx0bzprcmFiQHRyaWZvcmsuY29tKSkuCi0KLV9HZW5lcmF0ZWQgYnkgRURvYywgTm92IDcgMjAxMCwgMTE6Mzk6NDYuXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy90cmlxX2RvbS5tZCBiL2RvYy90cmlxX2RvbS5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAyM2M5NS4uMDAwMDAwMAotLS0gYS9kb2MvdHJpcV9kb20ubWQKKysrIC9kZXYvbnVsbApAQCAtMSw1ODQgKzAsMCBAQAotTW9kdWxlIHRyaXFfZG9tCi09PT09PT09PT09PT09PT0KLQotCi08aDE+TW9kdWxlIHRyaXFfZG9tPC9oMT4KLQotKiBbRGF0YSBUeXBlc10oI3R5cGVzKQotKiBbRnVuY3Rpb24gSW5kZXhdKCNpbmRleCkKLSogW0Z1bmN0aW9uIERldGFpbHNdKCNmdW5jdGlvbnMpCi0KLQotCi0KLQotCi08aDI+PGEgbmFtZT0idHlwZXMiPkRhdGEgVHlwZXM8L2E+PC9oMj4KLQotCi08YSBuYW1lPSJ0eXBlLWRvbWFpbiI+PC9hPgotCi0KLTxoMyBjbGFzcz0idHlwZWRlY2wiPmRvbWFpbigpPC9oMz4KLQotPGI+YWJzdHJhY3QgZGF0YXR5cGU8L2I+OiA8dHQ+ZG9tYWluKFQpPC90dD4KLQotRG9tYWluIG9mIHZhbHVlcyBvZiB0eXBlIFQuCi0KLTxhIG5hbWU9InR5cGUtcGlja19mdW4iPjwvYT4KLQotCi08aDMgY2xhc3M9InR5cGVkZWNsIj5waWNrX2Z1bigpPC9oMz4KLQotPGI+YWJzdHJhY3QgZGF0YXR5cGU8L2I+OiA8dHQ+cGlja19mdW4oVCk8L3R0PgotCi1QaWNrcyBtZW1iZXJzIG9mIHRoZSBgZG9tYWluKFQpYC4KLVJldHVybiBwYWlyIG9mIGB7ZG9tYWluKFQpLFR9YDsgdGhlICJvdXRwdXQgZG9tYWluIiBpcyB3aGF0IHdpbGwKLWJlIHVzZWQgZm9yIHNocmlua2luZyB0aGUgdmFsdWUuCi08YSBuYW1lPSJ0eXBlLXNocmlua19mdW4iPjwvYT4KLQotCi08aDMgY2xhc3M9InR5cGVkZWNsIj5zaHJpbmtfZnVuKCk8L2gzPgotCi08Yj5hYnN0cmFjdCBkYXRhdHlwZTwvYj46IDx0dD5zaHJpbmtfZnVuKFQpPC90dD4KLQotU2hyaW5rcyBtZW1iZXJzIG9mIHRoZSBgZG9tYWluKFQpYC4KLVJldHVybiBwYWlyIG9mIGB7ZG9tYWluKFQpLFR9YDsgdGhlICJvdXRwdXQgZG9tYWluIiBpcyB3aGF0IHdpbGwKLWJlIHVzZWQgZm9yIGZ1cnRoZXIgc2hyaW5raW5nIHRoZSB2YWx1ZS4KLQotPGgyPjxhIG5hbWU9ImluZGV4Ij5GdW5jdGlvbiBJbmRleDwvYT48L2gyPgotCi0KLQotPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMiIgc3VtbWFyeT0iZnVuY3Rpb24gaW5kZXgiPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNhbnktMCI+YW55LzA8L2E+PC90ZD48dGQ+PC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNhdG9tLTAiPmF0b20vMDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI2F0b20tMSI+YXRvbS8xPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjYmluYXJ5LTAiPmJpbmFyeS8wPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjYmluYXJ5LTEiPmJpbmFyeS8xPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjYm9vbC0wIj5ib29sLzA8L2E+PC90ZD48dGQ+VGhlIGRvbWFpbiBvZiBib29sZWFucy48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI2NoYXItMCI+Y2hhci8wPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjY2hvb3NlLTIiPmNob29zZS8yPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjZG9tYWluLTMiPmRvbWFpbi8zPC9hPjwvdGQ+PHRkPkNyZWF0ZSBjdXN0b20gZG9tYWluLjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjZWxlbWVudHMtMSI+ZWxlbWVudHMvMTwvYT48L3RkPjx0ZD5HZW5lcmF0ZXMgYSBtZW1iZXIgb2YgdGhlIGxpc3QgPGNvZGU+TDwvY29kZT4uPC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNldmFsLTEiPmV2YWwvMTwvYT48L3RkPjx0ZD5FdmFsdWF0ZSA8Y29kZT5Cb2R5PC9jb2RlPi48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI2V2YWwtMiI+ZXZhbC8yPC9hPjwvdGQ+PHRkPkV2YWx1YXRlIDxjb2RlPkJvZHk8L2NvZGU+LCByZXBsYWNpbmcgb2NjdXJyZW5jZXMgb2YgPGNvZGU+e2NhbGwsTSxGLEF9PC9jb2RlPiBhbmQgPGNvZGU+e3ZhcixOfTwvY29kZT4uPC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNmcmVxdWVuY3ktMSI+ZnJlcXVlbmN5LzE8L2E+PC90ZD48dGQ+Q2hvb3NlIGRvbWFpbiBmcm9tIGxpc3QgW3tXZWlnaHQsIERvbWFpbn0sIC4uLl0uPC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNpbnQtMCI+aW50LzA8L2E+PC90ZD48dGQ+VGhlIGRvbWFpbiBvZiBpbnRlZ2Vycy48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI2xpc3QtMSI+bGlzdC8xPC9hPjwvdGQ+PHRkPgotUmV0dXJucyB0aGUgZG9tYWluIG9mIGxpc3RzIG9mIHRoZSBhcmd1bWVudC48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI25vbl9lbXB0eS0xIj5ub25fZW1wdHkvMTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI29uZW9mLTEiPm9uZW9mLzE8L2E+PC90ZD48dGQ+PC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNvcGVuLTEiPm9wZW4vMTwvYT48L3RkPjx0ZD5PcGVuIGEgYm94LCB5aWVsZGluZyBhIGRvbWFpbiB3aGljaCBhbHdheXMgZ2VuZXJhdGVzIHRoZSBzYW1lIHZhbHVlLjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjcGVlay0xIj5wZWVrLzE8L2E+PC90ZD48dGQ+PC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNwaWNrLTIiPnBpY2svMjwvYT48L3RkPjx0ZD5UaGUgaGVhcnQgb2YgdGhlIHJhbmRvbSBzdHJ1Y3R1cmUgZ2VuZXJhdG9yOyBwaWNrIGEgdmFsdWUgZnJvbSB0aGUgZG9tYWluLjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjcmVhbC0wIj5yZWFsLzA8L2E+PC90ZD48dGQ+VGhlIGRvbWFpbiBvZiBmbG9hdHMuPC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNyZXNpemUtMiI+cmVzaXplLzI8L2E+PC90ZD48dGQ+PC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNyZXR1cm4tMSI+cmV0dXJuLzE8L2E+PC90ZD48dGQ+UmV0dXJucyB0aGUgZG9tYWluIGNvbnRhaW5pbmcgZXhhY3RseSA8Y29kZT5WYWx1ZTwvY29kZT4uPC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNzYW1wbGUtMSI+c2FtcGxlLzE8L2E+PC90ZD48dGQ+Ci1HZW5lcmF0ZSBhIHNhbXBsZSBvZiBvdXRwdXQgdmFsdWVzIGZyb20gYSBnZW5lcmF0b3IuPC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNzYW1wbGVzaHJpbmstMSI+c2FtcGxlc2hyaW5rLzE8L2E+PC90ZD48dGQ+UHJpbnQgYSB2YWx1ZSBnZW5lcmF0ZWQgYnkgPGNvZGU+RG9tYWluPC9jb2RlPiwgZm9sbG93ZWQgYnkgYSBzYW1wbGUgb2Ygc2hyaW5raW5ncy48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI3NlYWwtMSI+c2VhbC8xPC9hPjwvdGQ+PHRkPkdldCB0aGUgZG9tYWluIG9mIGJveGVzIG9mIFQuPC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNzaHJpbmstMiI+c2hyaW5rLzI8L2E+PC90ZD48dGQ+VGhlIHNocmlua2luZyBzdGVwIGZ1bmN0aW9uIHVzZWQgaW50ZXJuYWxseSBpbiBUcmlxLjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjc2hyaW5rX3dpdGhvdXRfZHVwbGljYXRlcy0xIj5zaHJpbmtfd2l0aG91dF9kdXBsaWNhdGVzLzE8L2E+PC90ZD48dGQ+PC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNzaXplZC0xIj5zaXplZC8xPC9hPjwvdGQ+PHRkPlN1cHBvcnQgZnVuY3Rpb24gZm9yIHRoZSA/U0laRUQgbWFjcm8uPC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiN0dXBsZS0xIj50dXBsZS8xPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48YSBocmVmPSIjdmVjdG9yLTIiPnZlY3Rvci8yPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj48L3RhYmxlPgotCi0KLTxhIG5hbWU9ImZ1bmN0aW9ucyI+PC9hPgotCi0KLTxoMj5GdW5jdGlvbiBEZXRhaWxzPC9oMj4KLQotCi08YSBuYW1lPSJhbnktMCI+PC9hPgotCi0KLTxoMz5hbnkvMDwvaDM+Ci0KLQotCi0KLQotYGFueSgpIC0+IGFueSgpYAotCi0KLTxhIG5hbWU9ImF0b20tMCI+PC9hPgotCi0KLTxoMz5hdG9tLzA8L2gzPgotCi0KLQotCi0KLWBhdG9tKCkgLT4gYW55KClgCi0KLQotPGEgbmFtZT0iYXRvbS0xIj48L2E+Ci0KLQotPGgzPmF0b20vMTwvaDM+Ci0KLQotCi0KLQotYGF0b20oU2l6ZSkgLT4gYW55KClgCi0KLQotPGEgbmFtZT0iYmluYXJ5LTAiPjwvYT4KLQotCi08aDM+YmluYXJ5LzA8L2gzPgotCi0KLQotCi0KLWBiaW5hcnkoKSAtPiBhbnkoKWAKLQotCi08YSBuYW1lPSJiaW5hcnktMSI+PC9hPgotCi0KLTxoMz5iaW5hcnkvMTwvaDM+Ci0KLQotCi0KLQotYGJpbmFyeShTaXplKSAtPiBhbnkoKWAKLQotCi08YSBuYW1lPSJib29sLTAiPjwvYT4KLQotCi08aDM+Ym9vbC8wPC9oMz4KLQotCi0KLQotCi08dHQ+Ym9vbCgpIC0+IDxhIGhyZWY9IiN0eXBlLWRvbWFpbiI+ZG9tYWluKHRydWUgfCBmYWxzZSk8L2E+PC90dD4KLQotCi0KLVRoZSBkb21haW4gb2YgYm9vbGVhbnMuICBTaHJpbmtzIHRvIGZhbHNlLgotPGEgbmFtZT0iY2hhci0wIj48L2E+Ci0KLQotPGgzPmNoYXIvMDwvaDM+Ci0KLQotCi0KLQotYGNoYXIoKSAtPiBhbnkoKWAKLQotCi08YSBuYW1lPSJjaG9vc2UtMiI+PC9hPgotCi0KLTxoMz5jaG9vc2UvMjwvaDM+Ci0KLQotCi0KLQotYGNob29zZShNLCBOKSAtPiBhbnkoKWAKLQotCi08YSBuYW1lPSJkb21haW4tMyI+PC9hPgotCi0KLTxoMz5kb21haW4vMzwvaDM+Ci0KLQotCi0KLQotPHR0PmRvbWFpbihOYW1lOjphbnkoKSwgUGlja0Z1bjo6PGEgaHJlZj0iI3R5cGUtcGlja19mdW4iPnBpY2tfZnVuKFQpPC9hPiwgU2hyaW5rRnVuOjo8YSBocmVmPSIjdHlwZS1zaHJpbmtfZnVuIj5zaHJpbmtfZnVuKFQpPC9hPikgLT4gPGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oVCk8L2E+PC90dD4KLQotCi0KLQotCi1DcmVhdGUgY3VzdG9tIGRvbWFpbi4gIAotVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhIGN1c3RvbSBkb21haW4gd2l0aCBpdCdzIG93biAgCi1zaHJpbmtpbmcgbG9naWMuICBGb3IgaW5zdGFuY2UsIHRoZSBldmVuIG51bWJlcnMgY2FuIGJlIHNwZWNpZmllZCB0aHVzOgotCi0KLTxwcmU+ZXZlbigpIC0+Ci1kb21haW4oZXZlbiwKLWZ1bihTZWxmLFNpemUpIC0+Ci1WYWx1ZSA9IChyYW5kb206dW5pZm9ybShTaXplKSAqIDIpIGRpdiAyLAote1NlbGYsIFZhbHVlfQotZW5kLAotZnVuKFNlbGYsVmFsdWUpIHdoZW4gVmFsdWU+MCAtPgote1NlbGYsIFZhbHVlLTJ9OwotKFNlbGYsXywwKSAtPgotezAsIDB9Ci1lbmQpLjwvcHJlPgotCi0KLQotCi1UaGUgZG9tYWluIGl0c2VsZiAoYFNlbGZgIGluIHRoZSBhYm92ZSBjb2RlKSBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50ICAKLXRvIGVhY2ggaW52b2NhdGlvbiBvZiBib3RoIHRoZSBwaWNraW5nIGFuZCB0aGUgc2hyaW5raW5nIGZ1bmN0aW9ucy4KLQotQm90aCB0aGUgcGlja2luZyBhbmQgdGhlIHNocmlua2luZyBmdW5jdGlvbiBtdXN0IHJldHVybiBhIDItdHVwbGUgb2YKLXRoZSBkb21haW4gb2YgdGhlIHJlc3VsdGluZyB2YWx1ZSwgYW5kIHRoZSB2YWx1ZSBpdHNlbGYuCi0KLTxhIG5hbWU9ImVsZW1lbnRzLTEiPjwvYT4KLQotCi08aDM+ZWxlbWVudHMvMTwvaDM+Ci0KLQotCi0KLQotPHR0PmVsZW1lbnRzKEw6OlthbnkoKV0pIC0+IDxhIGhyZWY9IiN0eXBlLWRvbWFpbiI+ZG9tYWluKGFueSgpKTwvYT48L3R0PgotCi0KLQotR2VuZXJhdGVzIGEgbWVtYmVyIG9mIHRoZSBsaXN0IGBMYC4gIFNocmlua3MgdG93YXJkcyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgbGlzdC4KLTxhIG5hbWU9ImV2YWwtMSI+PC9hPgotCi0KLTxoMz5ldmFsLzE8L2gzPgotCi0KLQotCi0KLTx0dD5ldmFsKEJvZHk6OmFueSgpKSAtPiBhbnkoKTwvdHQ+Ci0KLQotCi1FcXVpdmFsZW50IHRvIFtgZXZhbChbXSwgQm9keSlgXSgjZXZhbC0yKS4KLQotCi0KLUV2YWx1YXRlIGBCb2R5YC4gIE9jY3VycmVuY2VzIG9mIGB7Y2FsbCxNLEYsQX1gCi1pcyByZXBsYWNlZCBieSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgYGVybGFuZzphcHBseShNLEYsQSlgLCBhbmQKLW9jY3VycmVuY2VzIG9mIGB7dmFyLE5hbWV9YCBpbiBgQm9keWAgYXJlIG5vdCBzdWJzdGl0dXRlZC4KLQotVGhpcyBpcyBhIHBsYWluIGZ1bmN0aW9uLCBub3QgYSBjb21waWxlX3RyYW5zZm9ybSBvciBhbnl0aGluZyBsaWtlIHRoYXQsCi1zbyBuZXN0ZWQgZnVuY3Rpb25zIGFyZSBub3QgdHJhdmVyc2VkIGluIHRoZSBzdWJzdGl0dXRpb24uICBIb3dldmVyLCBuZXN0ZWQKLW9jY3VycmVuY2VzIG9mIGB7Y2FsbCxNLEYsQX1gIGFyZSBzdWJzdGl0dXRlZCBhcyBvbmUgd291bGQgdGhpbms6Ci1kZXB0aCBmaXJzdCwgbGVmdC10by1yaWdodC4KLQotPGEgbmFtZT0iZXZhbC0yIj48L2E+Ci0KLQotPGgzPmV2YWwvMjwvaDM+Ci0KLQotCi0KLQotPHR0PmV2YWwoUHJvcExpc3Q6Olt7YXRvbSgpLCBhbnkoKX1dLCBCb2R5OjphbnkoKSkgLT4gYW55KCk8L3R0PgotCi0KLQotCi0KLUV2YWx1YXRlIGBCb2R5YCwgcmVwbGFjaW5nIG9jY3VycmVuY2VzIG9mIGB7Y2FsbCxNLEYsQX1gIGFuZCBge3ZhcixOfWAuCi1PY2N1cnJlbmNlcyBvZiBge2NhbGwsTSxGLEF9YCBpcyByZXBsYWNlZCBieSBgZXJsYW5nOmFwcGx5KE0sRixBKWAsIGFuZAotYHt2YXIsTmFtZX1gIGlzIHJlcGxhY2VkIGJ5IHRoZSB2YWx1ZSB3aXRoIGtleSBgTmFtZWAgaW4gYFByb3BMaXN0YC4KLQotCi0KLUV4Y2VwdGlvbnMgaGFwcGVuaW5nIHdoZW4gY2FsbGluZyBgZXJsYW5nOmFwcGx5LzNgIGFyZSBub3QgY2F1Z2h0LgotSWYgYE5hbWVgIGlzIHVuYm91bmQgaS5lLiwgYE5hbWVgIGRvZXMgbm90IGFwcGVhciBpbiBgUHJvcExpc3RgIG9yIGlmCi1gTmFtZWAgaXMgbm90IGFuIGF0b20sIGB7dmFyLE5hbWV9YCBpcyB1bmNoYW5nZWQuCi0KLVRoaXMgaXMgYSBwbGFpbiBmdW5jdGlvbiwgbm90IGEgY29tcGlsZV90cmFuc2Zvcm0gb3IgYW55dGhpbmcgbGlrZSB0aGF0LAotc28gbmVzdGVkIGZ1bmN0aW9ucyBhcmUgbm90IHRyYXZlcnNlZCBpbiB0aGUgc3Vic3RpdHV0aW9uLiAgSG93ZXZlciwgbmVzdGVkCi1vY2N1cnJlbmNlcyBvZiBge2NhbGwsTSxGLEF9YCBhcmUgc3Vic3RpdHV0ZWQgYXMgb25lIHdvdWxkIHRoaW5rOgotZGVwdGggZmlyc3QsIGxlZnQtdG8tcmlnaHQuCi0KLTxhIG5hbWU9ImZyZXF1ZW5jeS0xIj48L2E+Ci0KLQotPGgzPmZyZXF1ZW5jeS8xPC9oMz4KLQotCi0KLQotCi1gZnJlcXVlbmN5KEdlbkxpc3QpIC0+IGFueSgpYAotCi0KLQotQ2hvb3NlIGRvbWFpbiBmcm9tIGxpc3QgW3tXZWlnaHQsIERvbWFpbn0sIC4uLl0KLTxhIG5hbWU9ImludC0wIj48L2E+Ci0KLQotPGgzPmludC8wPC9oMz4KLQotCi0KLQotCi08dHQ+aW50KCkgLT4gPGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oaW50ZWdlcigpKTwvYT48L3R0PgotCi0KLQotVGhlIGRvbWFpbiBvZiBpbnRlZ2Vycy4KLTxhIG5hbWU9Imxpc3QtMSI+PC9hPgotCi0KLTxoMz5saXN0LzE8L2gzPgotCi0KLQotCi0KLTx0dD5saXN0KEVsZW1Eb206OjxhIGhyZWY9IiN0eXBlLWRvbWFpbiI+ZG9tYWluKFQpPC9hPikgLT4gPGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oW1RdKTwvYT48L3R0PgotCi0KLQotCi1SZXR1cm5zIHRoZSBkb21haW4gb2YgbGlzdHMgb2YgdGhlIGFyZ3VtZW50LgotRm9yIGV4YW1wbGUsIGBsaXN0KGludCgpKWAgeWllbGRzIHRoZSBkb21haW4gb2YgbGlzdHMgb2YgaW50ZWdlcnMuCi0KLTxhIG5hbWU9Im5vbl9lbXB0eS0xIj48L2E+Ci0KLQotPGgzPm5vbl9lbXB0eS8xPC9oMz4KLQotCi0KLQotCi1gbm9uX2VtcHR5KD9ET00pIC0+IGFueSgpYAotCi0KLTxhIG5hbWU9Im9uZW9mLTEiPjwvYT4KLQotCi08aDM+b25lb2YvMTwvaDM+Ci0KLQotCi0KLQotYG9uZW9mKERvbUxpc3QpIC0+IGFueSgpYAotCi0KLTxhIG5hbWU9Im9wZW4tMSI+PC9hPgotCi0KLTxoMz5vcGVuLzE8L2gzPgotCi0KLQotCi0KLTx0dD5vcGVuKD9CT1g6OjxhIGhyZWY9IiN0eXBlLWJveCI+Ym94KFQpPC9hPikgLT4gPGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oVCk8L2E+PC90dD4KLQotCi0KLU9wZW4gYSBib3gsIHlpZWxkaW5nIGEgZG9tYWluIHdoaWNoIGFsd2F5cyBnZW5lcmF0ZXMgdGhlIHNhbWUgdmFsdWUuCi08YSBuYW1lPSJwZWVrLTEiPjwvYT4KLQotCi08aDM+cGVlay8xPC9oMz4KLQotCi0KLQotCi1gcGVlayg/Qk9YKSAtPiBhbnkoKWAKLQotCi08YSBuYW1lPSJwaWNrLTIiPjwvYT4KLQotCi08aDM+cGljay8yPC9oMz4KLQotCi0KLQotCi08dHQ+cGljayhEb206OjxhIGhyZWY9IiN0eXBlLWRvbWFpbiI+ZG9tYWluKFQpPC9hPiwgU2FtcGxlU2l6ZTo6PGEgaHJlZj0iI3R5cGUtcG9zX2ludGVnZXIiPnBvc19pbnRlZ2VyKCk8L2E+KSAtPiB7PGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oVCk8L2E+LCBUfTwvdHQ+Ci0KLQotCi1UaGUgaGVhcnQgb2YgdGhlIHJhbmRvbSBzdHJ1Y3R1cmUgZ2VuZXJhdG9yOyBwaWNrIGEgdmFsdWUgZnJvbSB0aGUgZG9tYWluLgotUmV0dXJucyBhIHBhaXIgb2YgYHtkb21haW4oVCksIFR9YCB3aGVyZSB0aGUgZmlyc3QgY29tcG9uZW50IGRlc2NyaWJlcwotdGhlIHN0cnVjdHVyZSBvZiB0aGUgcGlja2VkIHZhbHVlLgotPGEgbmFtZT0icmVhbC0wIj48L2E+Ci0KLQotPGgzPnJlYWwvMDwvaDM+Ci0KLQotCi0KLQotPHR0PnJlYWwoKSAtPiA8YSBocmVmPSIjdHlwZS1kb21haW4iPmRvbWFpbihmbG9hdCgpKTwvYT48L3R0PgotCi0KLQotVGhlIGRvbWFpbiBvZiBmbG9hdHMuCi08YSBuYW1lPSJyZXNpemUtMiI+PC9hPgotCi0KLTxoMz5yZXNpemUvMjwvaDM+Ci0KLQotCi0KLQotYHJlc2l6ZShTeiwgRG9tKSAtPiBhbnkoKWAKLQotCi08YSBuYW1lPSJyZXR1cm4tMSI+PC9hPgotCi0KLTxoMz5yZXR1cm4vMTwvaDM+Ci0KLQotCi0KLQotPHR0PnJldHVybihWYWx1ZTo6VHlwZSkgLT4gPGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oVHlwZSk8L2E+PC90dD4KLQotCi0KLVJldHVybnMgdGhlIGRvbWFpbiBjb250YWluaW5nIGV4YWN0bHkgYFZhbHVlYC4KLVRyaXEgdXNlcyBpbnRlcm5hbGx5IHJlY29yZHMgb2YgdHlwZSBgQGA7IGFuZCBzbyB0byBhdm9pZAotaW50ZXJwcmV0YXRpb24gb2Ygc3VjaCB2YWx1ZXMgeW91IGNhbiB3cmFwIGl0IHdpdGggdGhpcy4gIFRoaXMgd291bGQKLWJlIHRoZSBjYXNlIGlmIHlvdSBoYXZlIGNvbnN0YW50cyBpbiB5b3VyIGRvbWFpbnMgY29udGFpbiB0aGUgYXRvbSBgQGAuCi1JLmUuLCB0aGUgZm9sbG93aW5nIHdvdWxkIGJyZWFrIGJlY2F1c2UgVHJpcSB0cmllcyB0byBpbnRlcnByZXQgdGhlIGBAYDoKLQotPHByZT4/Rk9SQUxMKFgsIFtpbnQoKSwgeydAJywgNH1dLAotW0ludFZhbCwgeydAJywgNH1dID0gWAotKTwvcHJlPgotCi1UbyBmaXggaXQsIGRvIGxpa2UgdGhpczoKLQotPHByZT4/Rk9SQUxMKFgsIFtpbnQoKSwgcmV0dXJuKHsnQCcsIDR9KV0sCi1bSW50VmFsLCB7J0AnLCA0fV0gPSBYCi0pPC9wcmU+Ci0KLTxhIG5hbWU9InNhbXBsZS0xIj48L2E+Ci0KLQotPGgzPnNhbXBsZS8xPC9oMz4KLQotCi0KLQotCi08dHQ+c2FtcGxlKERvbTo6PGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oVCk8L2E+KSAtPiBbVF08L3R0PgotCi0KLQotCi1HZW5lcmF0ZSBhIHNhbXBsZSBvZiBvdXRwdXQgdmFsdWVzIGZyb20gYSBnZW5lcmF0b3IuCi0KLTxhIG5hbWU9InNhbXBsZXNocmluay0xIj48L2E+Ci0KLQotPGgzPnNhbXBsZXNocmluay8xPC9oMz4KLQotCi0KLQotCi08dHQ+c2FtcGxlc2hyaW5rKERvbWFpbjo6PGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oYW55KCkpPC9hPikgLT4gb2s8L3R0PgotCi0KLQotCi0KLVByaW50IGEgdmFsdWUgZ2VuZXJhdGVkIGJ5IGBEb21haW5gLCBmb2xsb3dlZCBieSBhIHNhbXBsZSBvZiBzaHJpbmtpbmdzLiAgCi1Gb3IgZWFjaCBsaW5lIG9mIHN1Y2Nlc3NpdmUgb3V0cHV0LCBpdCBwcmludHMgdXAgdG8gZml2ZSBzYW1wbGVzIG9mICAKLXNocmlua2luZy4gIFRoZSBmaXJzdCB2YWx1ZSBvbiBlYWNoIGxpa2UgaXMgdXNlZCBhcyB0aGUgdGFyZ2V0IGZvciB0aGUgbmV4dCAgCi1yb3VuZCBvZiBzaHJpbmtpbmcuCi0KLQotPHByZT4gMT4gc2FtcGxlc2hyaW5rKGxpc3QoaW50KCkpKS4KLVstMiwtOCwyXQotW1stMSwtOCwyXSxbMCwtOCwyXSxbLTEsLTcsMl0sWy0yLC04LDFdLFstMSwtOCwxXV0KLVtbMCwtOCwyXSxbMCwtNiwxXSxbLTEsLTcsMl0sWzAsLTcsMl1dCi1bWzAsLTgsMF0sWzAsLTcsMF0sWzAsLTcsMl0sWzAsLTgsMV0sWzAsLTUsMl0sWzAsLTcsMV1dCi1bWzAsLTcsMF0sWzAsLTUsMF1dCi1bWzAsLTUsMF0sWzAsLTYsMF1dCi1bWzAsLTQsMF0sWzAsLTMsMF1dCi1bWzAsLTIsMF0sWzAsLTMsMF0sWzAsLTEsMF1dCi1bWzAsLTEsMF1dCi1bWzAsMCwwXV0KLVtbMCwwXV0KLVtbMF1dCi1bW11dCi1vazwvcHJlPgotCi08YSBuYW1lPSJzZWFsLTEiPjwvYT4KLQotCi08aDM+c2VhbC8xPC9oMz4KLQotCi0KLQotCi08dHQ+c2VhbChEb206OjxhIGhyZWY9IiN0eXBlLWRvbWFpbiI+ZG9tYWluKFQpPC9hPikgLT4gPGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oPGEgaHJlZj0iI3R5cGUtYm94Ij5ib3goVCk8L2E+KTwvYT48L3R0PgotCi0KLQotR2V0IHRoZSBkb21haW4gb2YgYm94ZXMgb2YgVAotPGEgbmFtZT0ic2hyaW5rLTIiPjwvYT4KLQotCi08aDM+c2hyaW5rLzI8L2gzPgotCi0KLQotCi0KLTx0dD5zaHJpbmsoRG9tYWluOjo8YSBocmVmPSIjdHlwZS1kb21haW4iPmRvbWFpbihUKTwvYT4sIFZhbHVlOjpUKSAtPiB7PGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oVCk8L2E+LCBUfTwvdHQ+Ci0KLQotCi0KLQotVGhlIHNocmlua2luZyBzdGVwIGZ1bmN0aW9uIHVzZWQgaW50ZXJuYWxseSBpbiBUcmlxLgotCi0KLQotUGVyZm9ybXMgb25lIHNpbmdsZSBzdGVwIG9mIHNocmlua2luZy4gIElmIHVuc3VjY2Vzc2Z1bCwgIAotaS5lLiB2YWx1ZSBjb3VuZCBub3QgYmUgc2hydW5rLCB0aGUgb3V0cHV0IGlzIGVxdWFsIHRvIHRoZSBpbnB1dC4KLQotVGFrZXMgYSBgRG9tYWluYCBhbmQgYSBgVmFsdWVgIGZyb20gc2FpZCBkb21haW4sIGFuZCBzaHJpbmtzCi10aGUgdmFsdWUgd2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiB0aGUgZG9tYWluLiAgVGhlIHJlc3VsdCBpcwotYSB0dXBsZSBvZiBhIChwb3NzaWJseSBzbWFsbGVyKSBvdXRwdXQgZG9tYWluLCBhbmQgdGhlCi1zaHJ1bmtlbiB2YWx1ZS4KLQotPGEgbmFtZT0ic2hyaW5rX3dpdGhvdXRfZHVwbGljYXRlcy0xIj48L2E+Ci0KLQotPGgzPnNocmlua193aXRob3V0X2R1cGxpY2F0ZXMvMTwvaDM+Ci0KLQotCi0KLQotYHNocmlua193aXRob3V0X2R1cGxpY2F0ZXMoRG9tKSAtPiBhbnkoKWAKLQotCi08YSBuYW1lPSJzaXplZC0xIj48L2E+Ci0KLQotPGgzPnNpemVkLzE8L2gzPgotCi0KLQotCi0KLTx0dD5zaXplZChGdW46OjxhIGhyZWY9IiN0eXBlLWZ1biI+J2Z1bicoKGludGVnZXIoKSkgLT4gPGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oVCk8L2E+KTwvYT4pIC0+IDxhIGhyZWY9IiN0eXBlLWRvbWFpbiI+ZG9tYWluKFQpPC9hPjwvdHQ+Ci0KLQotCi1TdXBwb3J0IGZ1bmN0aW9uIGZvciB0aGUgP1NJWkVEIG1hY3JvLgotPGEgbmFtZT0idHVwbGUtMSI+PC9hPgotCi0KLTxoMz50dXBsZS8xPC9oMz4KLQotCi0KLQotCi08dHQ+dHVwbGUoRWxlbURvbTo6PGEgaHJlZj0iI3R5cGUtZG9tYWluIj5kb21haW4oRWxlbVR5cGU6OmFueSgpKTwvYT4pIC0+IDxhIGhyZWY9IiN0eXBlLWRvbWFpbiI+ZG9tYWluKHR1cGxlKEVsZW1UeXBlKSk8L2E+PC90dD4KLQotCi08YSBuYW1lPSJ2ZWN0b3ItMiI+PC9hPgotCi0KLTxoMz52ZWN0b3IvMjwvaDM+Ci0KLQotCi0KLQotYHZlY3RvcihTaXplLCBFbGVtRG9tKSAtPiBhbnkoKWAKLQotCi0KLV9HZW5lcmF0ZWQgYnkgRURvYywgTm92IDcgMjAxMCwgMTE6Mzk6NDYuXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy90cmlxX3N0YXRlbS5tZCBiL2RvYy90cmlxX3N0YXRlbS5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VlZjA2OS4uMDAwMDAwMAotLS0gYS9kb2MvdHJpcV9zdGF0ZW0ubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotTW9kdWxlIHRyaXFfc3RhdGVtCi09PT09PT09PT09PT09PT09PT0KLQotCi08aDE+TW9kdWxlIHRyaXFfc3RhdGVtPC9oMT4KLQotKiBbRnVuY3Rpb24gSW5kZXhdKCNpbmRleCkKLSogW0Z1bmN0aW9uIERldGFpbHNdKCNmdW5jdGlvbnMpCi0KLQotCi0KLQotCi08aDI+PGEgbmFtZT0iaW5kZXgiPkZ1bmN0aW9uIEluZGV4PC9hPjwvaDI+Ci0KLQotCi08dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIiBzdW1tYXJ5PSJmdW5jdGlvbiBpbmRleCI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI2NvbW1hbmRzLTEiPmNvbW1hbmRzLzE8L2E+PC90ZD48dGQ+PC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGhyZWY9IiNwcm9wX3N0YXRlbS0xIj5wcm9wX3N0YXRlbS8xPC9hPjwvdGQ+PHRkPkJvaWxlci1wbGF0ZSBwcm9wZXJ0eSBmb3IgdGVzdGluZyBzdGF0ZSBtYWNoaW5lcy48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI3J1bl9jb21tYW5kcy0yIj5ydW5fY29tbWFuZHMvMjwvYT48L3RkPjx0ZD48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI3J1bl9jb21tYW5kcy0zIj5ydW5fY29tbWFuZHMvMzwvYT48L3RkPjx0ZD48L3RkPjwvdHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI3N0YXRlX2FmdGVyLTIiPnN0YXRlX2FmdGVyLzI8L2E+PC90ZD48dGQ+RXZhbHVhdGUgY29tbWFuZCBsaXN0LCBhbmQgcmV0dXJuIGZpbmFsIHN0YXRlLjwvdGQ+PC90cj48L3RhYmxlPgotCi0KLTxhIG5hbWU9ImZ1bmN0aW9ucyI+PC9hPgotCi0KLTxoMj5GdW5jdGlvbiBEZXRhaWxzPC9oMj4KLQotCi08YSBuYW1lPSJjb21tYW5kcy0xIj48L2E+Ci0KLQotPGgzPmNvbW1hbmRzLzE8L2gzPgotCi0KLQotCi0KLWBjb21tYW5kcyhNb2R1bGUpIC0+IGFueSgpYAotCi0KLTxhIG5hbWU9InByb3Bfc3RhdGVtLTEiPjwvYT4KLQotCi08aDM+cHJvcF9zdGF0ZW0vMTwvaDM+Ci0KLQotCi0KLQotYHByb3Bfc3RhdGVtKE1vZHVsZSkgLT4gYW55KClgCi0KLQotCi1Cb2lsZXItcGxhdGUgcHJvcGVydHkgZm9yIHRlc3Rpbmcgc3RhdGUgbWFjaGluZXMuCi0KLTxwcmU+Ci1wcm9wX3N0YXRlbShNb2R1bGUpIC0+Ci0/Rk9SQUxMKENvbW1hbmRzLCBjb21tYW5kcyhNb2R1bGUpLAotYmVnaW4KLXtfLF8sb2t9ID0gcnVuX2NvbW1hbmRzKE1vZHVsZSwgQ29tbWFuZHMpLAotdHJ1ZQotZW5kKS4KLTwvcHJlPgotCi08YSBuYW1lPSJydW5fY29tbWFuZHMtMiI+PC9hPgotCi0KLTxoMz5ydW5fY29tbWFuZHMvMjwvaDM+Ci0KLQotCi0KLQotYHJ1bl9jb21tYW5kcyhNb2R1bGUsIENvbW1hbmRzKSAtPiBhbnkoKWAKLQotCi08YSBuYW1lPSJydW5fY29tbWFuZHMtMyI+PC9hPgotCi0KLTxoMz5ydW5fY29tbWFuZHMvMzwvaDM+Ci0KLQotCi0KLQotYHJ1bl9jb21tYW5kcyhNb2R1bGUsIENvbW1hbmRzLCBFbnYpIC0+IGFueSgpYAotCi0KLTxhIG5hbWU9InN0YXRlX2FmdGVyLTIiPjwvYT4KLQotCi08aDM+c3RhdGVfYWZ0ZXIvMjwvaDM+Ci0KLQotCi0KLQotYHN0YXRlX2FmdGVyKE1vZHVsZSwgQ29tbWFuZHMpIC0+IGFueSgpYAotCi0KLQotCi0KLUV2YWx1YXRlIGNvbW1hbmQgbGlzdCwgYW5kIHJldHVybiBmaW5hbCBzdGF0ZS4KLQotR2l2ZW4gYSBgTW9kdWxlYCBhbmQgYENvbW1hbmRzYCwgYSB2YWx1ZSBwaWNrZWQgZnJvbSB0aGUgZG9tYWluCi1gdHJpcV9zdGF0ZW06Y29tbWFuZHMoTW9kdWxlKWAKLQotX0dlbmVyYXRlZCBieSBFRG9jLCBOb3YgNyAyMDEwLCAxMTozOTo0Ni5fClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3RyaXFfc3VwLm1kIGIvZG9jL3RyaXFfc3VwLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmMwNDAwLi4wMDAwMDAwCi0tLSBhL2RvYy90cmlxX3N1cC5tZAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLU1vZHVsZSB0cmlxX3N1cAotPT09PT09PT09PT09PT09Ci0KLQotPGgxPk1vZHVsZSB0cmlxX3N1cDwvaDE+Ci0KLSogW0Z1bmN0aW9uIEluZGV4XSgjaW5kZXgpCi0qIFtGdW5jdGlvbiBEZXRhaWxzXSgjZnVuY3Rpb25zKQotCi0KLQotCi0KLQotQ29weXJpZ2h0IKkgMjAxMCBUcmlmb3JrIEEvUwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1fX0JlaGF2aW91cnM6X18gW2BzdXBlcnZpc29yYF0oc3VwZXJ2aXNvci5tZCkuCi0KLV9fQXV0aG9yczpfXyBLcmVzdGVuIEtyYWIgVGhvcnVwIChbYGtyYWJAdHJpZm9yay5jb21gXShtYWlsdG86a3JhYkB0cmlmb3JrLmNvbSkpLgotCi08aDI+PGEgbmFtZT0iaW5kZXgiPkZ1bmN0aW9uIEluZGV4PC9hPjwvaDI+Ci0KLQotCi08dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIiBzdW1tYXJ5PSJmdW5jdGlvbiBpbmRleCI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PGEgaHJlZj0iI3N0YXJ0X2xpbmstMCI+c3RhcnRfbGluay8wPC9hPjwvdGQ+PHRkPgotU3RhcnRzIHRoZSBzdXBlcnZpc29yLjwvdGQ+PC90cj48L3RhYmxlPgotCi0KLTxhIG5hbWU9ImZ1bmN0aW9ucyI+PC9hPgotCi0KLTxoMj5GdW5jdGlvbiBEZXRhaWxzPC9oMj4KLQotCi08YSBuYW1lPSJzdGFydF9saW5rLTAiPjwvYT4KLQotCi08aDM+c3RhcnRfbGluay8wPC9oMz4KLQotCi0KLQotCi08dHQ+c3RhcnRfbGluaygpIC0+IHtvaywgUGlkfSB8IGlnbm9yZSB8IHtlcnJvciwgRXJyb3J9PC90dD4KLQotCi0KLQotU3RhcnRzIHRoZSBzdXBlcnZpc29yCi0KLQotX0dlbmVyYXRlZCBieSBFRG9jLCBOb3YgNyAyMDEwLCAxMTozOTo0Ni5fClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=