ZGlmZiAtLWdpdCBhL05FV1MubWQgYi9ORVdTLm1kCmluZGV4IDBiYzlmZWMuLmMwNTI4YTMgMTAwNjQ0Ci0tLSBhL05FV1MubWQKKysrIGIvTkVXUy5tZApAQCAtMyw2ICszLDcgQEAKIAogKiBBZGQgYHppcF9zb3VyY2VfaXNfc2Vla2FibGUoKWAuCiAqIEltcHJvdmUgY29tcGF0aWJpbGl0eSB3aXRoIFdpbkFFUy4KKyogRml4IGVuY29kaW5nIGhhbmRsaW5nIGluIGB6aXBfbmFtZV9sb2NhdGUoKWAuCiAKIDEuOC4wIFsyMDIxLTA2LTE4XQogPT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9saWIvemlwX25hbWVfbG9jYXRlLmMgYi9saWIvemlwX25hbWVfbG9jYXRlLmMKaW5kZXggOGE4ODQwNC4uNWJmYjQxYyAxMDA2NDQKLS0tIGEvbGliL3ppcF9uYW1lX2xvY2F0ZS5jCisrKyBiL2xpYi96aXBfbmFtZV9sb2NhdGUuYwpAQCAtNDksNiArNDksNyBAQAogemlwX2ludDY0X3QKIF96aXBfbmFtZV9sb2NhdGUoemlwX3QgKnphLCBjb25zdCBjaGFyICpmbmFtZSwgemlwX2ZsYWdzX3QgZmxhZ3MsIHppcF9lcnJvcl90ICplcnJvcikgewogICAgIGludCAoKmNtcCkoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworICAgIHppcF9zdHJpbmdfdCAqc3RyID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpmbiwgKnA7CiAgICAgemlwX3VpbnQ2NF90IGk7CiAKQEAgLTYwLDcgKzYxLDE3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiAoWklQX0ZMX05PQ0FTRSB8IFpJUF9GTF9OT0RJUiB8IFpJUF9GTF9FTkNfQ1A0MzcpKSB7CisgICAgaWYgKChmbGFncyAmIChaSVBfRkxfRU5DX1VURl84IHwgWklQX0ZMX0VOQ19SQVcpKSA9PSAwICYmIGZuYW1lWzBdICE9ICdcMCcpIHsKKyAgICAgICAgaWYgKChzdHIgPSBfemlwX3N0cmluZ19uZXcoKGNvbnN0IHppcF91aW50OF90ICopZm5hbWUsIHN0cmxlbihmbmFtZSksIGZsYWdzLCBlcnJvcikpID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGZuYW1lID0gKGNvbnN0IGNoYXIgKilfemlwX3N0cmluZ19nZXQoc3RyLCBOVUxMLCAwLCBlcnJvcikpID09IE5VTEwpIHsKKyAgICAgICAgICAgIF96aXBfc3RyaW5nX2ZyZWUoc3RyKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChmbGFncyAmIChaSVBfRkxfTk9DQVNFIHwgWklQX0ZMX05PRElSIHwgWklQX0ZMX0VOQ19SQVcgfCBaSVBfRkxfRU5DX1NUUklDVCkpIHsKICAgICAgICAgLyogY2FuJ3QgdXNlIGhhc2ggdGFibGUgKi8KICAgICAgICAgY21wID0gKGZsYWdzICYgWklQX0ZMX05PQ0FTRSkgPyBzdHJjYXNlY21wIDogc3RyY21wOwogCkBAIC03OSwxNCArOTAsMTggQEAKIAogICAgICAgICAgICAgaWYgKGNtcChmbmFtZSwgZm4pID09IDApIHsKICAgICAgICAgICAgICAgICBfemlwX2Vycm9yX2NsZWFyKGVycm9yKTsKKyAgICAgICAgICAgICAgICBfemlwX3N0cmluZ19mcmVlKHN0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuICh6aXBfaW50NjRfdClpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgemlwX2Vycm9yX3NldChlcnJvciwgWklQX0VSX05PRU5ULCAwKTsKKyAgICAgICAgX3ppcF9zdHJpbmdfZnJlZShzdHIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZXR1cm4gX3ppcF9oYXNoX2xvb2t1cCh6YS0+bmFtZXMsIChjb25zdCB6aXBfdWludDhfdCAqKWZuYW1lLCBmbGFncywgZXJyb3IpOworICAgICAgICB6aXBfaW50NjRfdCByZXQgPSBfemlwX2hhc2hfbG9va3VwKHphLT5uYW1lcywgKGNvbnN0IHppcF91aW50OF90ICopZm5hbWUsIGZsYWdzLCBlcnJvcik7CisgICAgICAgIF96aXBfc3RyaW5nX2ZyZWUoc3RyKTsKKyAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9saWIvemlwaW50LmggYi9saWIvemlwaW50LmgKaW5kZXggNmEyNmRjMy4uZGM0ZWMyZiAxMDA2NDQKLS0tIGEvbGliL3ppcGludC5oCisrKyBiL2xpYi96aXBpbnQuaApAQCAtNjExLDEyICs2MTEsMTIgQEAKIHppcF9zb3VyY2VfdCAqX3ppcF9zb3VyY2VfemlwX25ldyh6aXBfdCAqLCB6aXBfdWludDY0X3QsIHppcF9mbGFnc190LCB6aXBfdWludDY0X3QsIHppcF91aW50NjRfdCwgY29uc3QgY2hhciAqLCB6aXBfZXJyb3JfdCAqZXJyb3IpOwogCiBpbnQgX3ppcF9zdGF0X21lcmdlKHppcF9zdGF0X3QgKmRzdCwgY29uc3QgemlwX3N0YXRfdCAqc3JjLCB6aXBfZXJyb3JfdCAqZXJyb3IpOwotaW50IF96aXBfc3RyaW5nX2VxdWFsKGNvbnN0IHppcF9zdHJpbmdfdCAqLCBjb25zdCB6aXBfc3RyaW5nX3QgKik7Ci12b2lkIF96aXBfc3RyaW5nX2ZyZWUoemlwX3N0cmluZ190ICopOwotemlwX3VpbnQzMl90IF96aXBfc3RyaW5nX2NyYzMyKGNvbnN0IHppcF9zdHJpbmdfdCAqKTsKLWNvbnN0IHppcF91aW50OF90ICpfemlwX3N0cmluZ19nZXQoemlwX3N0cmluZ190ICosIHppcF91aW50MzJfdCAqLCB6aXBfZmxhZ3NfdCwgemlwX2Vycm9yX3QgKik7Ci16aXBfdWludDE2X3QgX3ppcF9zdHJpbmdfbGVuZ3RoKGNvbnN0IHppcF9zdHJpbmdfdCAqKTsKLXppcF9zdHJpbmdfdCAqX3ppcF9zdHJpbmdfbmV3KGNvbnN0IHppcF91aW50OF90ICosIHppcF91aW50MTZfdCwgemlwX2ZsYWdzX3QsIHppcF9lcnJvcl90ICopOworaW50IF96aXBfc3RyaW5nX2VxdWFsKGNvbnN0IHppcF9zdHJpbmdfdCAqYSwgY29uc3QgemlwX3N0cmluZ190ICpiKTsKK3ZvaWQgX3ppcF9zdHJpbmdfZnJlZSh6aXBfc3RyaW5nX3QgKnN0cmluZyk7Cit6aXBfdWludDMyX3QgX3ppcF9zdHJpbmdfY3JjMzIoY29uc3QgemlwX3N0cmluZ190ICpzdHJpbmcpOworY29uc3QgemlwX3VpbnQ4X3QgKl96aXBfc3RyaW5nX2dldCh6aXBfc3RyaW5nX3QgKnN0cmluZywgemlwX3VpbnQzMl90ICpsZW5wLCB6aXBfZmxhZ3NfdCBmbGFncywgemlwX2Vycm9yX3QgKmVycm9yKTsKK3ppcF91aW50MTZfdCBfemlwX3N0cmluZ19sZW5ndGgoY29uc3QgemlwX3N0cmluZ190ICpzdHJpbmcpOworemlwX3N0cmluZ190ICpfemlwX3N0cmluZ19uZXcoY29uc3QgemlwX3VpbnQ4X3QgKnJhdywgemlwX3VpbnQxNl90IGxlbmd0aCwgemlwX2ZsYWdzX3QgZmxhZ3MsIHppcF9lcnJvcl90ICplcnJvcik7CiBpbnQgX3ppcF9zdHJpbmdfd3JpdGUoemlwX3QgKnphLCBjb25zdCB6aXBfc3RyaW5nX3QgKnN0cmluZyk7CiBib29sIF96aXBfd2luemlwX2Flc19kZWNyeXB0KHppcF93aW56aXBfYWVzX3QgKmN0eCwgemlwX3VpbnQ4X3QgKmRhdGEsIHppcF91aW50NjRfdCBsZW5ndGgpOwogYm9vbCBfemlwX3dpbnppcF9hZXNfZW5jcnlwdCh6aXBfd2luemlwX2Flc190ICpjdHgsIHppcF91aW50OF90ICpkYXRhLCB6aXBfdWludDY0X3QgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL21hbi96aXBfbmFtZV9sb2NhdGUubWRvYyBiL21hbi96aXBfbmFtZV9sb2NhdGUubWRvYwppbmRleCA2ZmZlNWMzLi45OGMxZGNlIDEwMDY0NAotLS0gYS9tYW4vemlwX25hbWVfbG9jYXRlLm1kb2MKKysrIGIvbWFuL3ppcF9uYW1lX2xvY2F0ZS5tZG9jCkBAIC0yOSw3ICsyOSw3IEBACiAuXCIgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTgogLlwiIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLlwiCi0uRGQgU2VwdGVtYmVyIDIyLCAyMDIwCisuRGQgTWFyY2ggMTUsIDIwMjIKIC5EdCBaSVBfTkFNRV9MT0NBVEUgMwogLk9zCiAuU2ggTkFNRQpAQCAtNTEsMTIgKzUxLDI5IEBACiBJZgogLkFyIGFyY2hpdmUKIGRvZXMgbm90IGNvbnRhaW4gYSBmaWxlIHdpdGggdGhhdCBuYW1lLCBcLTEgaXMgcmV0dXJuZWQuCisuUHAKK0lmIG5laXRoZXIKKy5EdiBaSVBfRkxfRU5DX1JBVworbm9yCisuRHYgWklQX0ZMX0VOQ19TVFJJQ1QKK2FyZSBzcGVjaWZpZWQsIGd1ZXNzIHRoZSBlbmNvZGluZyBvZiB0aGUgbmFtZSBpbiB0aGUgWklQIGFyY2hpdmUgYW5kIGNvbnZlcnQgaXQKK3RvIFVURi04LCBpZiBuZWNlc3NhcnksIGJlZm9yZSBjb21wYXJpbmcuCisuUHAKK0lmIG5laXRoZXIKKy5EdiBaSVBfRkxfRU5DX0NQNDM3Citub3IKKy5EdiBaSVBfRkxfRU5DX1VURl84CithcmUgc3BlY2lmaWVkLCBndWVzcyB0aGUgZW5jb2Rpbmcgb2YKKy5BciBmbmFtZSAuCisuUHAKK09ubHkgQ1AtNDM3IGFuZCBVVEYtOCBhcmUgcmVjb2duaXplZC4KKy5QcAogVGhlCiAuRmEgZmxhZ3MKIGFyZSBzcGVjaWZpZWQgYnkKIC5FbSBvciBOcyBObyAnaW5nCiB0aGUgZm9sbG93aW5nIHZhbHVlcywgb3IgMCBmb3Igbm9uZSBvZiB0aGVtLgotLkJsIC10YWcgLW9mZnNldCBpbmRlbnQgLXdpZHRoIFpJUF9GTF9OT0NBU0UKKy5CbCAtdGFnIC1vZmZzZXQgaW5kZW50IC13aWR0aCBaSVBfRkxfRU5DX1NUUklDVAogLkl0IER2IFpJUF9GTF9OT0NBU0UKIElnbm9yZSBjYXNlIGRpc3RpbmN0aW9ucy4KIChXaWxsIG9ubHkgd29yayB3ZWxsIGlmIHRoZSBmaWxlIG5hbWVzIGFyZSBBU0NJSS4pCkBAIC02OCwxOCArODUsMjQgQEAKIFdpdGggdGhpcyBmbGFnLAogLkZuIHppcF9uYW1lX2xvY2F0ZQogd2lsbCBiZSBzbG93IGZvciBhcmNoaXZlcyB3aXRoIG1hbnkgZmlsZXMuCi0uSXQgRHYgWklQX0ZMX0VOQ19SQVcKLUNvbXBhcmUgYWdhaW5zdCB0aGUgdW5tb2RpZmllZCBuYW1lcyBhcyBpdCBpcyBpbiB0aGUgWklQIGFyY2hpdmUuCiAuSXQgRHYgWklQX0ZMX0VOQ19HVUVTUwotKERlZmF1bHQuKQotR3Vlc3MgdGhlIGVuY29kaW5nIG9mIHRoZSBuYW1lIGluIHRoZSBaSVAgYXJjaGl2ZSBhbmQgY29udmVydCBpdAotdG8gVVRGLTgsIGlmIG5lY2Vzc2FyeSwgYmVmb3JlIGNvbXBhcmluZy4KLShPbmx5IENQLTQzNyBhbmQgVVRGLTggYXJlIHJlY29nbml6ZWQuKQorVGhpcyBmbGFnIGhhcyBubyBlZmZlY3QgKGl0cyB2YWx1ZSBpcyAwKTsgaXQgY2FuIGJlIHVzZWQgdG8gZXhwbGljaXRseSBkZW5vdGUgdGhlIGFic2VuY2Ugb2YgZW5jb2RpbmcgZmxhZ3MuCisuSXQgRHYgWklQX0ZMX0VOQ19SQVcKK0NvbXBhcmUKKy5BciBmbmFtZQorYWdhaW5zdCB0aGUgdW5tb2RpZmllZCBuYW1lcyBhcyB0aGV5IGFyZSBpbiB0aGUgWklQIGFyY2hpdmUsIHdpdGhvdXQgY29udmVydGluZyB0aGVtIHRvIFVURi04LgogLkl0IER2IFpJUF9GTF9FTkNfU1RSSUNUCiBGb2xsb3cgdGhlIFpJUCBzcGVjaWZpY2F0aW9uIGFuZCBleHBlY3QgQ1AtNDM3IGVuY29kZWQgbmFtZXMgaW4KIHRoZSBaSVAgYXJjaGl2ZSAoZXhjZXB0IGlmIHRoZXkgYXJlIGV4cGxpY2l0bHkgbWFya2VkIGFzIFVURi04KS4KLUNvbnZlcnQgaXQgdG8gVVRGLTggYmVmb3JlIGNvbXBhcmluZy4KK0NvbnZlcnQgdGhlbSB0byBVVEYtOCBiZWZvcmUgY29tcGFyaW5nLgorLkl0IER2IFpJUF9GTF9FTkNfQ1A0MzcKKy5BciBmbmFtZQoraXMgZW5jb2RlZCBhcyBDUC00MzcuCisuSXQgRHYgWklQX0ZMX0VOQ19VVEZfOAorLkFyIGZuYW1lCitpcyBlbmNvZGVkIGFzIFVURi04LgogLkVsCisuUHAKIC5FbSBOb3RlIDoKIEFTQ0lJIGlzIGEgc3Vic2V0IG9mIGJvdGggQ1AtNDM3IGFuZCBVVEYtOC4KIC5TaCBSRVRVUk4gVkFMVUVTCmRpZmYgLS1naXQgYS9tYW4vemlwdG9vbC5tZG9jIGIvbWFuL3ppcHRvb2wubWRvYwppbmRleCA3NTFlZWIwLi5kN2VlMzQwIDEwMDY0NAotLS0gYS9tYW4vemlwdG9vbC5tZG9jCisrKyBiL21hbi96aXB0b29sLm1kb2MKQEAgLTI5LDcgKzI5LDcgQEAKIC5cIiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOCiAuXCIgSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAuXCIKLS5EZCBEZWNlbWJlciAxOCwgMjAxNworLkRkIE1hcmNoIDE1LCAyMDIyCiAuRHQgWklQVE9PTCAxCiAuT3MKIC5TaCBOQU1FCkBAIC0yNTcsOSArMjU3LDE0IEBACiAuQXIgaW5kZXggLgogLkVsCiAuU3MgRmxhZ3MKLVNvbWUgY29tbWFuZHMgdGFrZSBmbGFnIGFyZ3VtZW50cy4KK1NvbWUgY29tbWFuZHMgdGFrZSBmbGFnIGFyZ3VtZW50cy4gRWFjaCBjaGFyYWN0ZXIgaW4gdGhlIGFyZ3VtZW50IHNldHMgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZy4gVXNlIDAgb3IgdGhlIGVtcHR5IHN0cmluZyBmb3Igbm8gZmxhZ3MuCisuUHAKIFN1cHBvcnRlZCBmbGFncyBhcmU6CiAuQmwgLXRhZyAtd2lkdGggTU1NIC1jb21wYWN0IC1vZmZzZXQgaW5kZW50CisuSXQgQXIgNAorLkR2IFpJUF9GTF9FTkNfQ1A0MzcKKy5JdCBBciA4CisuRHYgWklQX0ZMX0VOQ19VVEZfOAogLkl0IEFyIEMKIC5EdiBaSVBfRkxfTk9DQVNFCiAuSXQgQXIgYwpAQCAtMjY4LDYgKzI3MywxMCBAQAogLkR2IFpJUF9GTF9OT0RJUgogLkl0IEFyIGwKIC5EdiBaSVBfRkxfTE9DQUwKKy5JdCBBciByCisuRHYgWklQX0ZMX0VOQ19SQVcKKy5JdCBBciBzCisuRHYgWklQX0ZMX0VOQ19TVFJJQ1QKIC5JdCBBciB1CiAuRHYgWklQX0ZMX1VOQ0hBTkdFRAogLkVsCmRpZmYgLS1naXQgYS9yZWdyZXNzL25hbWVfbG9jYXRlLWNwNDM3LnRlc3QgYi9yZWdyZXNzL25hbWVfbG9jYXRlLWNwNDM3LnRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMxNWUwNAotLS0gL2Rldi9udWxsCisrKyBiL3JlZ3Jlc3MvbmFtZV9sb2NhdGUtY3A0MzcudGVzdApAQCAtMCwwICsxLDkgQEAKK2Rlc2NyaXB0aW9uIHRlc3RzIGZvciB2YXJpb3VzIGVuY29kaW5nIGZsYWdzIGZvciB6aXBfbmFtZV9sb2NhdGUKK2FyZ3MgdGVzdC56aXAgIG5hbWVfbG9jYXRlICKRkpOUlZaXmJmam5ydnp+gIiAwICBuYW1lX2xvY2F0ZSAikZKTlJWWl5iZmpucnZ6foCIgNCAgbmFtZV9sb2NhdGUgIpGSk5SVlpeYmZqbnJ2en6AiIDggIG5hbWVfbG9jYXRlICKRkpOUlZaXmJmam5ydnp+gIiByICBuYW1lX2xvY2F0ZSAikZKTlJWWl5iZmpucnZ6foCIgcworcmV0dXJuIDAKK2ZpbGUgdGVzdC56aXAgdGVzdC1jcDQzNy56aXAgdGVzdC1jcDQzNy56aXAKK3N0ZG91dCBuYW1lICeRkpOUlZaXmJmam5ydnp+gJyB1c2luZyBmbGFncyAnMCcgZm91bmQgYXQgaW5kZXggOQorc3Rkb3V0IG5hbWUgJ5GSk5SVlpeYmZqbnJ2en6AnIHVzaW5nIGZsYWdzICc0JyBmb3VuZCBhdCBpbmRleCA5CitzdGRvdXQgbmFtZSAnkZKTlJWWl5iZmpucnZ6foCcgdXNpbmcgZmxhZ3MgJ3InIGZvdW5kIGF0IGluZGV4IDkKK3N0ZG91dCBuYW1lICeRkpOUlZaXmJmam5ydnp+gJyB1c2luZyBmbGFncyAncycgZm91bmQgYXQgaW5kZXggOQorc3RkZXJyIGNhbid0IGZpbmQgZW50cnkgd2l0aCBuYW1lICeRkpOUlZaXmJmam5ydnp+gJyB1c2luZyBmbGFncyAnOCcKZGlmZiAtLWdpdCBhL3JlZ3Jlc3MvbmFtZV9sb2NhdGUtdXRmOC50ZXN0IGIvcmVncmVzcy9uYW1lX2xvY2F0ZS11dGY4LnRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMwZjcwOQotLS0gL2Rldi9udWxsCisrKyBiL3JlZ3Jlc3MvbmFtZV9sb2NhdGUtdXRmOC50ZXN0CkBAIC0wLDAgKzEsOSBAQAorZGVzY3JpcHRpb24gdGVzdHMgZm9yIHZhcmlvdXMgZW5jb2RpbmcgZmxhZ3MgZm9yIHppcF9uYW1lX2xvY2F0ZQorYXJncyB0ZXN0LnppcCAgbmFtZV9sb2NhdGUgIsOmw4bDtMO2w7LDu8O5w7/DlsOcwqLCo8Kl4oKnxpLDoSIgMCAgbmFtZV9sb2NhdGUgIsOmw4bDtMO2w7LDu8O5w7/DlsOcwqLCo8Kl4oKnxpLDoSIgNCAgbmFtZV9sb2NhdGUgIsOmw4bDtMO2w7LDu8O5w7/DlsOcwqLCo8Kl4oKnxpLDoSIgOCAgbmFtZV9sb2NhdGUgIsOmw4bDtMO2w7LDu8O5w7/DlsOcwqLCo8Kl4oKnxpLDoSIgciAgbmFtZV9sb2NhdGUgIsOmw4bDtMO2w7LDu8O5w7/DlsOcwqLCo8Kl4oKnxpLDoSIgcworcmV0dXJuIDAKK2ZpbGUgdGVzdC56aXAgdGVzdC1jcDQzNy56aXAgdGVzdC1jcDQzNy56aXAKK3N0ZG91dCBuYW1lICfDpsOGw7TDtsOyw7vDucO/w5bDnMKiwqPCpeKCp8aSw6EnIHVzaW5nIGZsYWdzICcwJyBmb3VuZCBhdCBpbmRleCA5CitzdGRvdXQgbmFtZSAnw6bDhsO0w7bDssO7w7nDv8OWw5zCosKjwqXigqfGksOhJyB1c2luZyBmbGFncyAnOCcgZm91bmQgYXQgaW5kZXggOQorc3Rkb3V0IG5hbWUgJ8Omw4bDtMO2w7LDu8O5w7/DlsOcwqLCo8Kl4oKnxpLDoScgdXNpbmcgZmxhZ3MgJ3MnIGZvdW5kIGF0IGluZGV4IDkKK3N0ZGVyciBjYW4ndCBmaW5kIGVudHJ5IHdpdGggbmFtZSAnw6bDhsO0w7bDssO7w7nDv8OWw5zCosKjwqXigqfGksOhJyB1c2luZyBmbGFncyAnNCcKK3N0ZGVyciBjYW4ndCBmaW5kIGVudHJ5IHdpdGggbmFtZSAnw6bDhsO0w7bDssO7w7nDv8OWw5zCosKjwqXigqfGksOhJyB1c2luZyBmbGFncyAncicKZGlmZiAtLWdpdCBhL3NyYy96aXB0b29sLmMgYi9zcmMvemlwdG9vbC5jCmluZGV4IGRiNmYzZTMuLjk4NjFkYTMgMTAwNjQ0Ci0tLSBhL3NyYy96aXB0b29sLmMKKysrIGIvc3JjL3ppcHRvb2wuYwpAQCAtNjI2LDYgKzYyNiwxNCBAQAogICAgICAgICBmbGFncyB8PSBaSVBfRkxfTE9DQUw7CiAgICAgaWYgKHN0cmNocihhcmcsICd1JykgIT0gTlVMTCkKICAgICAgICAgZmxhZ3MgfD0gWklQX0ZMX1VOQ0hBTkdFRDsKKyAgICBpZiAoc3RyY2hyKGFyZywgJzgnKSAhPSBOVUxMKQorICAgICAgICBmbGFncyB8PSBaSVBfRkxfRU5DX1VURl84OworICAgIGlmIChzdHJjaHIoYXJnLCAnNCcpICE9IE5VTEwpCisgICAgICAgIGZsYWdzIHw9IFpJUF9GTF9FTkNfQ1A0Mzc7CisgICAgaWYgKHN0cmNocihhcmcsICdyJykgIT0gTlVMTCkKKyAgICAgICAgZmxhZ3MgfD0gWklQX0ZMX0VOQ19SQVc7CisgICAgaWYgKHN0cmNocihhcmcsICdzJykgIT0gTlVMTCkKKyAgICAgICAgZmxhZ3MgfD0gWklQX0ZMX0VOQ19TVFJJQ1Q7CiAgICAgcmV0dXJuIGZsYWdzOwogfQogCkBAIC04MjQsMTAgKzgzMiwxNCBAQAogICAgIH0KICAgICBmcHJpbnRmKG91dCwgIlxuU3VwcG9ydGVkIGZsYWdzIGFyZTpcbiIKICAgICAgICAgICAgICAgICAgIlx0MFx0KG5vIGZsYWdzKVxuIgorICAgICAgICAgICAgICAgICAiXHQ0XHRaSVBfRkxfRU5DX0NQNDM3XG4iCisgICAgICAgICAgICAgICAgICJcdDhcdFpJUF9GTF9FTkNfVVRGXzhcbiIKICAgICAgICAgICAgICAgICAgIlx0Q1x0WklQX0ZMX05PQ0FTRVxuIgogICAgICAgICAgICAgICAgICAiXHRjXHRaSVBfRkxfQ0VOVFJBTFxuIgogICAgICAgICAgICAgICAgICAiXHRkXHRaSVBfRkxfTk9ESVJcbiIKICAgICAgICAgICAgICAgICAgIlx0bFx0WklQX0ZMX0xPQ0FMXG4iCisgICAgICAgICAgICAgICAgICJcdHJcdFpJUF9GTF9FTkNfUkFXXG4iCisgICAgICAgICAgICAgICAgICJcdHNcdFpJUF9GTF9FTkNfU1RSSUNUXG4iCiAgICAgICAgICAgICAgICAgICJcdHVcdFpJUF9GTF9VTkNIQU5HRURcbiIpOwogICAgIGZwcmludGYob3V0LCAiXG5TdXBwb3J0ZWQgY29tcHJlc3Npb24gbWV0aG9kcyBhcmU6XG4iCiAgICAgICAgICAgICAgICAgICJcdGRlZmF1bHRcbiIpOwo=