ZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGx1Z2luL25ldHJ3LnZpbSBiL3J1bnRpbWUvYXV0b2xvYWQvbmV0cncudmltCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIHJ1bnRpbWUvcGx1Z2luL25ldHJ3LnZpbQpyZW5hbWUgdG8gcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KaW5kZXggODVkN2RmNy4uZTA3N2UyNSAxMDA2NDQKLS0tIGEvcnVudGltZS9wbHVnaW4vbmV0cncudmltCisrKyBiL3J1bnRpbWUvYXV0b2xvYWQvbmV0cncudmltCkBAIC0xLDMzICsxLDI1IEBACiAiIG5ldHJ3LnZpbTogSGFuZGxlcyBmaWxlIHRyYW5zZmVyIGFuZCByZW1vdGUgZGlyZWN0b3J5IGxpc3RpbmcgYWNyb3NzIGEgbmV0d29yawotIiBMYXN0IENoYW5nZToJQXVnIDEyLCAyMDA1CisiICAgICAgICAgICAgQVVUT0xPQUQgUE9SVElPTgorIiBMYXN0IENoYW5nZToJQXVnIDE2LCAyMDA1CiAiIE1haW50YWluZXI6CUNoYXJsZXMgRSBDYW1wYmVsbCwgSnIgPGRyY2hpcE5PU1BBTSBhdCBjYW1wYmVsbGZhbWlseSBkb3QgYml6PgotIiBWZXJzaW9uOgk2MQotIiBMaWNlbnNlOglWaW0gTGljZW5zZSAgKHNlZSB2aW0ncyA6aGVscCBsaWNlbnNlKQotIiBDb3B5cmlnaHQ6ICAgIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLgorIiBWZXJzaW9uOgk2MworIiBHZXRMYXRlc3RWaW1TY3JpcHRzOiAxMDc1IDEgOkF1dG9JbnN0YWxsOiBuZXRydy52aW0KKyIgQ29weXJpZ2h0OiAgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4ge3t7MQogIiAgICAgICAgICAgICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gdXNlIGFuZCBkaXN0cmlidXRlIHRoaXMgY29kZSwKICIgICAgICAgICAgICAgICB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgcHJvdmlkZWQgdGhhdCB0aGlzIGNvcHlyaWdodAogIiAgICAgICAgICAgICAgIG5vdGljZSBpcyBjb3BpZWQgd2l0aCBpdC4gTGlrZSBhbnl0aGluZyBlbHNlIHRoYXQncyBmcmVlLAotIiAgICAgICAgICAgICAgIG5ldHJ3LnZpbSBpcyBwcm92aWRlZCAqYXMgaXMqIGFuZCBjb21lcyB3aXRoIG5vCi0iICAgICAgICAgICAgICAgd2FycmFudHkgb2YgYW55IGtpbmQsIGVpdGhlciBleHByZXNzZWQgb3IgaW1wbGllZC4gSW4gbm8KLSIgICAgICAgICAgICAgICBldmVudCB3aWxsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMKLSIgICAgICAgICAgICAgICByZXN1bHRpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCisiICAgICAgICAgICAgICAgbmV0cncudmltIGlzIHByb3ZpZGVkICphcyBpcyogYW5kIGNvbWVzIHdpdGggbm8gd2FycmFudHkKKyIgICAgICAgICAgICAgICBvZiBhbnkga2luZCwgZWl0aGVyIGV4cHJlc3NlZCBvciBpbXBsaWVkLiBCeSB1c2luZyB0aGlzCisiICAgICAgICAgICAgICAgcGx1Z2luLCB5b3UgYWdyZWUgdGhhdCBpbiBubyBldmVudCB3aWxsIHRoZSBjb3B5cmlnaHQKKyIgICAgICAgICAgICAgICBob2xkZXIgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyByZXN1bHRpbmcgZnJvbSB0aGUgdXNlCisiICAgICAgICAgICAgICAgb2YgdGhpcyBzb2Z0d2FyZS4KICIKLSIgIEJ1dCBiZSBkb2VycyBvZiB0aGUgV29yZCwgYW5kIG5vdCBvbmx5IGhlYXJlcnMsIGRlbHVkaW5nIHlvdXIgb3duIHNlbHZlcworIiAgQnV0IGJlIGRvZXJzIG9mIHRoZSBXb3JkLCBhbmQgbm90IG9ubHkgaGVhcmVycywgZGVsdWRpbmcgeW91ciBvd24gc2VsdmVzIHt7ezEKICIgIChKYW1lcyAxOjIyIFJTVikKICIgPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCi0iIEdldExhdGVzdFZpbVNjcmlwdHM6IDEwNzUgMSA6QXV0b0luc3RhbGw6IG5ldHJ3LnZpbQotCi0iIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiBMb2FkIE9uY2U6IHt7ezEKLWlmIGV4aXN0cygiZzpsb2FkZWRfbmV0cnciKSB8fCAmY3AKLSAgZmluaXNoCi1lbmRpZgotbGV0IGc6bG9hZGVkX25ldHJ3ICA9ICJ2NjEiCi1pZiB2OnZlcnNpb24gPCA3MDAKLSBsZXQgbG9hZGVkX2V4cGxvcmVyID0gMQotZW5kaWYKIGxldCBzOmtlZXBjcG89ICZjcG8KIHNldCBjcG8mdmltCisiIGNhbGwgRGVjaG8oImRvaW5nIGF1dG9sb2FkL25ldHJ3LnZpbSIpCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIERlZmF1bHQgdmFsdWVzIGZvciBnbG9iYWwgbmV0cncgdmFyaWFibGVzIHt7ezEKQEAgLTIxNCw0NyArMjA2LDkgQEAKICBsZXQgczpuZXRyd19yY3Btb2RlICAgID0gJycKIGVuZGlmCiAKLSIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0iIFRyYW5zcGFyZW5jeSBTdXBwb3J0OiB7e3sxCi0gIiBGaWxlIEV4cGxvcmVyOiB7e3syCi1pZiB2ZXJzaW9uID49IDYwMAotIGF1Z3JvdXAgRmlsZUV4cGxvcmVyCi0gIGF1IQotICBhdSBCdWZFbnRlciAqIGNhbGwgPFNJRD5Mb2NhbEJyb3dzZShleHBhbmQoIjxhbWF0Y2g+IikpCi0gYXVncm91cCBFTkQKLSAiIE5ldHdvcmsgSGFuZGxlcjoge3t7MgotIGF1Z3JvdXAgTmV0d29yawotICBhdSEKLSAgaWYgaGFzKCJ3aW4zMiIpIHx8IGhhcygid2luOTUiKSB8fCBoYXMoIndpbjY0IikgfHwgaGFzKCJ3aW4xNiIpCi0gICBhdSBCdWZSZWFkQ21kICBmaWxlOi8vKgkJZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUHJlICIuZXhwYW5kKCI8YW1hdGNoPiIpfGV4ZSAnZSAnLnN1YnN0aXR1dGUoZXhwYW5kKCI8YW1hdGNoPiIpLCJmaWxlOi8qIiwiIiwiIil8ZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUG9zdCAiLmV4cGFuZCgiPGFtYXRjaD4iKQotICBlbHNlCi0gICBhdSBCdWZSZWFkQ21kICBmaWxlOi8vLyoJCWV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFByZSAiLmV4cGFuZCgiPGFtYXRjaD4iKXxleGUgJ2UgLycuc3Vic3RpdHV0ZShleHBhbmQoIjxhbWF0Y2g+IiksImZpbGU6LyoiLCIiLCIiKXxleGUgInNpbGVudCBkb2F1IEJ1ZlJlYWRQb3N0ICIuZXhwYW5kKCI8YW1hdGNoPiIpCi0gICBhdSBCdWZSZWFkQ21kICBmaWxlOi8vbG9jYWxob3N0LyoJZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUHJlICIuZXhwYW5kKCI8YW1hdGNoPiIpfGV4ZSAnZSAvJy5zdWJzdGl0dXRlKGV4cGFuZCgiPGFtYXRjaD4iKSwiZmlsZTovKiIsIiIsIiIpfGV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFBvc3QgIi5leHBhbmQoIjxhbWF0Y2g+IikKLSAgZW5kaWYKLSAgYXUgQnVmUmVhZENtZCAgIGZ0cDovLyoscmNwOi8vKixzY3A6Ly8qLGh0dHA6Ly8qLGRhdjovLyoscnN5bmM6Ly8qLHNmdHA6Ly8qCWV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFByZSAiLmV4cGFuZCgiPGFtYXRjaD4iKXxleGUgIk5yZWFkIDByICIuZXhwYW5kKCI8YW1hdGNoPiIpfGV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFBvc3QgIi5leHBhbmQoIjxhbWF0Y2g+IikKLSAgYXUgRmlsZVJlYWRDbWQgIGZ0cDovLyoscmNwOi8vKixzY3A6Ly8qLGh0dHA6Ly8qLGRhdjovLyoscnN5bmM6Ly8qLHNmdHA6Ly8qCWV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFByZSAiLmV4cGFuZCgiPGFtYXRjaD4iKXxleGUgIk5yZWFkICIgICAuZXhwYW5kKCI8YW1hdGNoPiIpfGV4ZSAic2lsZW50IGRvYXUgRmlsZVJlYWRQb3N0ICIuZXhwYW5kKCI8YW1hdGNoPiIpCi0gIGF1IEJ1ZldyaXRlQ21kICBmdHA6Ly8qLHJjcDovLyosc2NwOi8vKixkYXY6Ly8qLHJzeW5jOi8vKixzZnRwOi8vKiAgICAJZXhlICJzaWxlbnQgZG9hdSBCdWZXcml0ZVByZSAiLmV4cGFuZCgiPGFtYXRjaD4iKXxleGUgIk53cml0ZSAiIC5leHBhbmQoIjxhbWF0Y2g+Iil8ZXhlICJzaWxlbnQgZG9hdSBCdWZXcml0ZVBvc3QgIi5leHBhbmQoIjxhbWF0Y2g+IikKLSAgYXUgRmlsZVdyaXRlQ21kIGZ0cDovLyoscmNwOi8vKixzY3A6Ly8qLGRhdjovLyoscnN5bmM6Ly8qLHNmdHA6Ly8qICAgIAlleGUgInNpbGVudCBkb2F1IEJ1ZldyaXRlUHJlICIuZXhwYW5kKCI8YW1hdGNoPiIpfGV4ZSAiJ1ssJ11Od3JpdGUgIiAuZXhwYW5kKCI8YW1hdGNoPiIpfGV4ZSAic2lsZW50IGRvYXUgRmlsZVdyaXRlUG9zdCAiLmV4cGFuZCgiPGFtYXRjaD4iKQotIGF1Z3JvdXAgRU5ECi1lbmRpZgotCi0iIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiBDb21tYW5kczogOk5yZWFkLCA6TndyaXRlLCA6TmV0VXNlclBhc3Mge3t7MQotY29tISAtbmFyZ3M9KgkJTnJlYWQJCWNhbGwgczpOZXRTYXZlUG9zbigpPGJhcj5jYWxsIHM6TmV0UmVhZCg8Zi1hcmdzPik8YmFyPmNhbGwgczpOZXRSZXN0b3JlUG9zbigpCi1jb20hIC1yYW5nZT0lIC1uYXJncz0qCU53cml0ZQkJY2FsbCBzOk5ldFNhdmVQb3NuKCk8YmFyPjxsaW5lMT4sPGxpbmUyPmNhbGwgczpOZXRXcml0ZSg8Zi1hcmdzPik8YmFyPmNhbGwgczpOZXRSZXN0b3JlUG9zbigpCi1jb20hIC1uYXJncz0qCQlOZXRVc2VyUGFzcwljYWxsIE5ldFVzZXJQYXNzKDxmLWFyZ3M+KQotCi0iIENvbW1hbmRzOiA6RXhwbG9yZSwgOlNleHBsb3JlLCBIZXhwbG9yZSwgVmV4cGxvcmUge3t7MQotY29tISAtbmFyZ3M9PyAtYmFyIC1iYW5nIC1jb3VudD0wICAJRXhwbG9yZQkJY2FsbCBzOkV4cGxvcmUoPGNvdW50PiwwLDArPGJhbmc+MCw8cS1hcmdzPikKLWNvbSEgLW5hcmdzPT8gLWJhciAtYmFuZyAtY291bnQ9MCAgCVNleHBsb3JlCWNhbGwgczpFeHBsb3JlKDxjb3VudD4sMSwwKzxiYW5nPjAsPHEtYXJncz4pCi1jb20hIC1uYXJncz0/IC1iYXIgLWJhbmcgLWNvdW50PTAgIAlIZXhwbG9yZQljYWxsIHM6RXhwbG9yZSg8Y291bnQ+LDEsMis8YmFuZz4wLDxxLWFyZ3M+KQotY29tISAtbmFyZ3M9PyAtYmFyIC1iYW5nIC1jb3VudD0wICAJVmV4cGxvcmUJY2FsbCBzOkV4cGxvcmUoPGNvdW50PiwxLDQrPGJhbmc+MCw8cS1hcmdzPikKLWNvbSEgLW5hcmdzPT8gLWJhciAtYmFuZyAgIAkJTmV4cGxvcmUJY2FsbCBzOkV4cGxvcmUoLTEsMCwwLDxxLWFyZ3M+KQotY29tISAtbmFyZ3M9PyAtYmFyIC1iYW5nICAgCQlQZXhwbG9yZQljYWxsIHM6RXhwbG9yZSgtMiwwLDAsPHEtYXJncz4pCi0KICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIE5ldFNhdmVQb3NuOiBzYXZlcyBwb3NpdGlvbiBvZiBjdXJzb3Igb24gc2NyZWVuIHt7ezEKLWZ1biEgczpOZXRTYXZlUG9zbigpCitmdW4hIG5ldHJ3I05ldFNhdmVQb3NuKCkKICIgIGNhbGwgRGZ1bmMoIk5ldFNhdmVQb3NuKCkiKQogICAiIFNhdmUgY3VycmVudCBsaW5lIGFuZCBjb2x1bW4KICAgbGV0IHc6bmV0cndfd2lubnI9IHdpbm5yKCkKQEAgLTI2NSwxMyArMjE5LDEzIEBACiAgIG5vcm0hIEgwCiAgIGxldCB3Om5ldHJ3X2hsaW5lPSBsaW5lKCIuIikKIAotICBjYWxsIHM6TmV0UmVzdG9yZVBvc24oKQorICBjYWxsIG5ldHJ3I05ldFJlc3RvcmVQb3NuKCkKICIgIGNhbGwgRHJldCgiTmV0U2F2ZVBvc24gOiB3aW5ucj0iLnc6bmV0cndfd2lubnIuIiBsaW5lPSIudzpuZXRyd19saW5lLiIgY29sPSIudzpuZXRyd19jb2wuIiBobGluZT0iLnc6bmV0cndfaGxpbmUpCiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgTmV0UmVzdG9yZVBvc246IHJlc3RvcmVzIHRoZSBjdXJzb3IgYW5kIGZpbGUgcG9zaXRpb24gYXMgc2F2ZWQgYnkgTmV0U2F2ZVBvc24oKSB7e3sxCi1mdW4hIDxTSUQ+TmV0UmVzdG9yZVBvc24oKQorZnVuISBuZXRydyNOZXRSZXN0b3JlUG9zbigpCiAiICBjYWxsIERmdW5jKCJOZXRSZXN0b3JlUG9zbigpIHdpbm5yPSIudzpuZXRyd193aW5uci4iIGxpbmU9Ii53Om5ldHJ3X2xpbmUuIiBjb2w9Ii53Om5ldHJ3X2NvbC4iIGhsaW5lPSIudzpuZXRyd19obGluZSkKICAgbGV0IGVpa2VlcD0gJmVpCiAgIHNldCBlaT1hbGwKQEAgLTI5OSw3ICsyNTMsNyBAQAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRSZWFkOiByZXNwb25zaWJsZSBmb3IgcmVhZGluZyBhIGZpbGUgb3ZlciB0aGUgbmV0IHt7ezEKLWZ1biEgczpOZXRSZWFkKC4uLikKK2Z1biEgbmV0cncjTmV0UmVhZCguLi4pCiAiICBjYWxsIERmdW5jKCJOZXRSZWFkKGE6MTwiLmE6MS4iPikiKQogIAogICAiIHNhdmUgb3B0aW9ucwpAQCAtMzIxLDYgKzI3NSwxMiBAQAogIAogICAiIGdldCBuYW1lIG9mIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHNldCB1cCBzaGVsbC1xdW90aW5nIGNoYXJhY3RlcgogICBsZXQgdG1wZmlsZT0gdGVtcG5hbWUoKQorICBpZiAhaXNkaXJlY3Rvcnkoc3Vic3RpdHV0ZSh0bXBmaWxlLCdbXi9dXCskJywnJywnZScpKQorICAgZWNob2hsIEVycm9yIHwgZWNobyAiKioqbmV0cncqKiogeW91ciAiLnN1YnN0aXR1dGUodG1wZmlsZSwnW14vXVwrJCcsJycsJ2UnKS4iIGRpcmVjdG9yeSBpcyBtaXNzaW5nISIKKyAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKKyIgICBjYWxsIERyZXQoIk5ldFJlYWQiKQorICAgcmV0dXJuCisgIGVuZGlmCiAgCiAiICBjYWxsIERlY2hvKCJpY2hvaWNlPSIuaWNob2ljZS4iIHJlYWRjbWQ8Ii5yZWFkY21kLiI+IikKICAgd2hpbGUgaWNob2ljZSA8PSBhOjAKQEAgLTU4MSw2ICs1NDEsNyBAQAogICAgIGVsc2UKICAgICAgcHV0ID0nZ2V0ICcubmV0cndfZm5hbWUuJyAnLnRtcGZpbGUKICAgICBlbmRpZgorICAgIHB1dCA9J3F1aXQnCiAgCiAgICAgIiBwZXJmb3JtIGNhZGF2ZXIgb3BlcmF0aW9uOgogICAgIG5vcm0hIDFHZGQKQEAgLTc2MCw3ICs3MjEsNyBAQAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRXcml0ZTogcmVzcG9uc2libGUgZm9yIHdyaXRpbmcgYSBmaWxlIG92ZXIgdGhlIG5ldCB7e3sxCi1mdW4hIHM6TmV0V3JpdGUoLi4uKSByYW5nZQorZnVuISBuZXRydyNOZXRXcml0ZSguLi4pIHJhbmdlCiAiICBjYWxsIERmdW5jKCJOZXRXcml0ZShhOjA9Ii5hOjAuIikiKQogIAogICAiIG9wdGlvbiBoYW5kbGluZwpAQCAtNzY5LDYgKzczMCwxMiBAQAogIAogICAiIEdldCBUZW1wb3JhcnkgRmlsZW5hbWUKICAgbGV0IHRtcGZpbGU9IHRlbXBuYW1lKCkKKyAgaWYgIWlzZGlyZWN0b3J5KHN1YnN0aXR1dGUodG1wZmlsZSwnW14vXVwrJCcsJycsJ2UnKSkKKyAgIGVjaG9obCBFcnJvciB8IGVjaG8gIioqKm5ldHJ3KioqIHlvdXIgIi5zdWJzdGl0dXRlKHRtcGZpbGUsJ1teL11cKyQnLCcnLCdlJykuIiBkaXJlY3RvcnkgaXMgbWlzc2luZyEiCisgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCisiICAgY2FsbCBEcmV0KCJOZXRSZWFkIikKKyAgIHJldHVybgorICBlbmRpZgogIAogICBpZiBhOjAgPT0gMAogICAgbGV0IGljaG9pY2UgPSAwCkBAIC0xMDQ5LDcgKzEwMTYsNyBAQAogIiAgb2YgdGhlIGNvbnRlbnRzIG9mIGEgcmVtb3RlIGRpcmVjdG9yeS4gIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUKICIgIGc6bmV0cndfbGlzdF9jbWQgaGFzIGEgc3RyaW5nLCBIT1NUTkFNRSwgdGhhdCBuZWVkcyB0byBiZSBzdWJzdGl0dXRlZAogIiAgd2l0aCB0aGUgcmVxdWVzdGVkIHJlbW90ZSBob3N0bmFtZSBmaXJzdC4KLWZ1biEgPFNJRD5OZXRCcm93c2UoZGlybmFtZSkKK2Z1biEgczpOZXRCcm93c2UoZGlybmFtZSkKICIgIGNhbGwgRGZ1bmMoIk5ldEJyb3dzZShkaXJuYW1lPCIuYTpkaXJuYW1lLiI+KSBsb25nbGlzdD0iLmc6bmV0cndfbG9uZ2xpc3QpCiAKICAgaWYgZXhpc3RzKCJzOm5ldHJ3X3NraXBicm93c2UiKQpAQCAtMTE2MCw3ICsxMTI3LDcgQEAKICIgICBjYWxsIERlY2hvKCJleGUgZmlsZSAubWV0aG9kLiI6Ly8iLnVzZXIubWFjaGluZS4iLyIuZXNjYXBlKHBhdGgsczpuZXRyd19jZF9lc2NhcGUpKQogICAgZXhlICJmaWxlICIubWV0aG9kLiI6Ly8iLnVzZXIubWFjaGluZS4iLyIuZXNjYXBlKHBhdGgsczpuZXRyd19jZF9lc2NhcGUpCiAgICBleGUgInNpbGVudCBkb2F1IEJ1ZlJlYWRQcmUgIi5mbmFtZQotICAgc2lsZW50IGNhbGwgczpOZXRSZWFkKG1ldGhvZC4iOi8vIi51c2VyLm1hY2hpbmUuIi8iLnBhdGgpCisgICBzaWxlbnQgY2FsbCBuZXRydyNOZXRSZWFkKG1ldGhvZC4iOi8vIi51c2VyLm1hY2hpbmUuIi8iLnBhdGgpCiAgICBleGUgInNpbGVudCBkb2F1IEJ1ZlJlYWRQb3N0ICIuZm5hbWUKICAgIGtlZXBqdW1wcyAxZAogCkBAIC0xMjcxLDcgKzEyMzgsNyBAQAogICBpZiBtZXRob2QgPT0gImZ0cCIKICAgICIgdXNlIGZ0cCB0byBnZXQgcmVtb3RlIGZpbGUgbGlzdGluZwogIiAgIGNhbGwgRGVjaG8oInVzZSBmdHAgdG8gZ2V0IHJlbW90ZSBmaWxlIGxpc3RpbmciKQotICAgY2FsbCBOZXRCcm93c2VGdHBDbWQocGF0aCxsaXN0Y21kKQorICAgY2FsbCBzOk5ldEJyb3dzZUZ0cENtZChwYXRoLGxpc3RjbWQpCiAgICBrZWVwanVtcHMgMWQKIAogICAgaWYgIWc6bmV0cndfbG9uZ2xpc3QKQEAgLTEzOTAsNyArMTM1Nyw3IEBACiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIE5ldEJyb3dzZUNoZ0Rpcjoge3t7MgotZnVuISA8U0lEPk5ldEJyb3dzZUNoZ0RpcihkaXJuYW1lLG5ld2RpcikKK2Z1biEgczpOZXRCcm93c2VDaGdEaXIoZGlybmFtZSxuZXdkaXIpCiAiICBjYWxsIERmdW5jKCJOZXRCcm93c2VDaGdEaXIoZGlybmFtZTwiLmE6ZGlybmFtZS4iPiBuZXdkaXI8Ii5hOm5ld2Rpci4iPikiKQogCiAgIGxldCBkaXJuYW1lPSBhOmRpcm5hbWUKQEAgLTE0MzMsNyArMTQwMCw3IEBACiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiICBOZXRHZXRXb3JkOiBpdCBnZXRzIHRoZSBkaXJlY3RvcnkgbmFtZWQgdW5kZXIgdGhlIGN1cnNvcgotZnVuISA8U0lEPk5ldEdldFdvcmQoKQorZnVuISBzOk5ldEdldFdvcmQoKQogIiAgY2FsbCBEZnVuYygiTmV0R2V0V29yZCgpIGxpbmUjIi5saW5lKCIuIikpCiAgIGNhbGwgczpVc2VCdWZXaW5WYXJzKCkKIApAQCAtMTQ3MCw3ICsxNDM3LDcgQEAKIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgTmV0QnJvd3NlUm06IHJlbW92ZS9kZWxldGUgYSByZW1vdGUgZmlsZSBvciBkaXJlY3Rvcnkge3t7MgotZnVuISA8U0lEPk5ldEJyb3dzZVJtKHVzcmhvc3QscGF0aCkgcmFuZ2UKK2Z1biEgczpOZXRCcm93c2VSbSh1c3Job3N0LHBhdGgpIHJhbmdlCiAiICBjYWxsIERmdW5jKCJOZXRCcm93c2VSbSh1c3Job3N0PCIuYTp1c3Job3N0LiI+IHBhdGg8Ii5hOnBhdGguIj4pIikKICIgIGNhbGwgRGVjaG8oImZpcnN0bGluZT0iLmE6Zmlyc3RsaW5lLiIgbGFzdGxpbmU9Ii5hOmxhc3RsaW5lKQogCkBAIC0xNTAzLDcgKzE0NzAsNyBAQAogICAgIGlmIGFsbCB8fCBvayA9fiAneVwlW2VzXScgfHwgb2sgPT0gIiIKICAgICAgaWYgZXhpc3RzKCJ3Om5ldHJ3X21ldGhvZCIpICYmICh3Om5ldHJ3X21ldGhvZCA9PSAyIHx8IHc6bmV0cndfbWV0aG9kID09IDMpCiAgICAgICBzaWxlbnQhIGtlZXBqdW1wcyAuLCRkCi0gICAgICBjYWxsIE5ldEJyb3dzZUZ0cENtZChhOnBhdGgsImRlbGV0ZSAiLnJtZmlsZSkKKyAgICAgIGNhbGwgczpOZXRCcm93c2VGdHBDbWQoYTpwYXRoLCJkZWxldGUgIi5ybWZpbGUpCiAgICAgIGVsc2UKICAgICAgIGxldCBuZXRyd19ybV9jbWQ9IHN1YnN0aXR1dGUoZzpuZXRyd19ybV9jbWQsJ0hPU1ROQU1FJyxhOnVzcmhvc3QsJycpLicgIicuZXNjYXBlKGE6cGF0aC5ybWZpbGUsczpuZXRyd19jZF9lc2NhcGUpLiciJwogIiAgICAgIGNhbGwgRGVjaG8oImF0dGVtcHQgdG8gcmVtb3ZlIGZpbGU6IHN5c3RlbSgiLm5ldHJ3X3JtX2NtZC4iKSIpCkBAIC0xNTI4LDcgKzE0OTUsNyBAQAogCiAgICAgaWYgYWxsIHx8IG9rID1+ICd5XCVbZXNdJyB8fCBvayA9PSAiIgogICAgICBpZiBleGlzdHMoInc6bmV0cndfbWV0aG9kIikgJiYgKHc6bmV0cndfbWV0aG9kID09IDIgfHwgdzpuZXRyd19tZXRob2QgPT0gMykKLSAgICAgIGNhbGwgTmV0QnJvd3NlRnRwQ21kKGE6cGF0aCwicm1kaXIgIi5ybWZpbGUpCisgICAgICBjYWxsIHM6TmV0QnJvd3NlRnRwQ21kKGE6cGF0aCwicm1kaXIgIi5ybWZpbGUpCiAgICAgIGVsc2UKICAgICAgIGxldCBybWZpbGUgICAgICAgICA9IGE6cGF0aC5ybWZpbGUKICAgICAgIGxldCBuZXRyd19ybWRpcl9jbWQ9IHN1YnN0aXR1dGUoZzpuZXRyd19ybWRpcl9jbWQsJ0hPU1ROQU1FJyxhOnVzcmhvc3QsJycpLicgJy4iJyIuJyInLnJtZmlsZS4nIicuIiciCkBAIC0xNTY4LDcgKzE1MzUsNyBAQAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRCcm93c2VSZW5hbWU6IHJlbmFtZSBhIHJlbW90ZSBmaWxlIG9yIGRpcmVjdG9yeSB7e3syCi1mdW4hIDxTSUQ+TmV0QnJvd3NlUmVuYW1lKHVzcmhvc3QscGF0aCkgcmFuZ2UKK2Z1biEgczpOZXRCcm93c2VSZW5hbWUodXNyaG9zdCxwYXRoKSByYW5nZQogIiAgY2FsbCBEZnVuYygiTmV0QnJvd3NlUmVuYW1lKHVzcmhvc3Q8Ii5hOnVzcmhvc3QuIj4gcGF0aDwiLmE6cGF0aC4iPikiKQogCiAgICIgcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIG11bHRpcGxlIGZpbGVzL2RpcmVjdG9yaWVzCkBAIC0xNTg4LDcgKzE1NTUsNyBAQAogICAgY2FsbCBpbnB1dHJlc3RvcmUoKQogCiAgICBpZiBleGlzdHMoInc6bmV0cndfbWV0aG9kIikgJiYgKHc6bmV0cndfbWV0aG9kID09IDIgfHwgdzpuZXRyd19tZXRob2QgPT0gMykKLSAgICBjYWxsIE5ldEJyb3dzZUZ0cENtZChhOnBhdGgsInJlbmFtZSAiLm9sZG5hbWUuIiAiLm5ld25hbWUpCisgICAgY2FsbCBzOk5ldEJyb3dzZUZ0cENtZChhOnBhdGgsInJlbmFtZSAiLm9sZG5hbWUuIiAiLm5ld25hbWUpCiAgICBlbHNlCiAgICAgbGV0IG9sZG5hbWU9IGE6cGF0aC5vbGRuYW1lCiAgICAgbGV0IG5ld25hbWU9IGE6cGF0aC5uZXduYW1lCkBAIC0xNjA4LDcgKzE1NzUsNyBAQAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRSZWZyZXNoOiB7e3syCi1mdW4hIDxTSUQ+TmV0UmVmcmVzaChkaXJuYW1lKQorZnVuISBzOk5ldFJlZnJlc2goZGlybmFtZSkKICIgIGNhbGwgRGZ1bmMoIk5ldFJlZnJlc2goZGlybmFtZTwiLmE6ZGlybmFtZS4iPikiKQogICBzZXQgbWEKICAgJWQKQEAgLTE2NDEsMTIgKzE2MDgsMTIgQEAKICAgIGV4ZSAoZzpuZXRyd19hbHRvPyAiYmVsICIgOiAiYWJvICIpLmc6bmV0cndfd2luc2l6ZS4id2luY21kIHMiCiAgICBjYWxsIHM6Q29weVdpblZhcnMoKQogICAgZXhlICJub3JtISAwIgotICAgY2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoYjpuZXRyd19jdXJkaXIsPFNJRD5OZXRHZXRXb3JkKCkpKQorICAgY2FsbCBzOkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoYjpuZXRyd19jdXJkaXIsPFNJRD5OZXRHZXRXb3JkKCkpKQogICBlbHNlCiAgICBleGUgKGc6bmV0cndfYWx0dj8gInJpZ2h0YiAiIDogImxlZnRhICIpLmc6bmV0cndfd2luc2l6ZS4id2luY21kIHYiCiAgICBjYWxsIHM6Q29weVdpblZhcnMoKQogICAgZXhlICJub3JtISAwIgotICAgY2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoYjpuZXRyd19jdXJkaXIsPFNJRD5OZXRHZXRXb3JkKCkpKQorICAgY2FsbCBzOkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoYjpuZXRyd19jdXJkaXIsPFNJRD5OZXRHZXRXb3JkKCkpKQogICBlbmRpZgogCiAiICBjYWxsIERyZXQoIk5ldFNwbGl0IikKQEAgLTE2NTUsNyArMTYyMiw3IEBACiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRCcm93c2VYOiAgYWxsb3dzIHVzZXJzIHRvIHdyaXRlIGN1c3RvbSBmdW5jdGlvbnMgdG8gb3BlcmF0ZSBvbiB7e3syCiAiICAgICAgICAgICAgICBmaWxlcyBnaXZlbiB0aGVpciBleHRlbnNpb24uICBQYXNzZXMgMD1sb2NhbCwgMT1yZW1vdGUKLWZ1biEgPFNJRD5OZXRCcm93c2VYKGZuYW1lLHJlbW90ZSkKK2Z1biEgczpOZXRCcm93c2VYKGZuYW1lLHJlbW90ZSkKICIgIGNhbGwgRGZ1bmMoIk5ldEJyb3dzZVgoIi5hOmZuYW1lLiIgcmVtb3RlPSIuYTpyZW1vdGUuIikiKQogCiAgICIgc2V0IHVwIHRoZSBmaWxlbmFtZQpAQCAtMTczMCw3ICsxNjk3LDcgQEAKICIgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGEgbG9uZyBsaXN0aW5nIHdpbGwgYmUgcmVjZWl2ZWQuICBTaXplLCB0aW1lLAogIiAgYW5kIHJldmVyc2Ugc29ydHMgd2lsbCBiZSByZXF1ZXN0ZWQgb2YgdGhlIHNlcnZlciBidXQgbm90IG90aGVyd2lzZQogIiAgZW5mb3JjZWQgaGVyZS4KLWZ1biEgTmV0QnJvd3NlRnRwQ21kKHBhdGgsY21kKQorZnVuISBzOk5ldEJyb3dzZUZ0cENtZChwYXRoLGNtZCkKICIgIGNhbGwgRGZ1bmMoIk5ldEJyb3dzZUZ0cENtZChwYXRoPCIuYTpwYXRoLiI+IGNtZDwiLmE6Y21kLiI+KSBuZXRyd19tZXRob2Q9Ii53Om5ldHJ3X21ldGhvZCkKIAogICAiIGJlY2F1c2UgV2luWFggZnRwIHVzZXMgdW5peCBzdHlsZSBpbnB1dApAQCAtMTgxMyw3ICsxNzgwLDcgQEAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIE5ldHJ3TGlzdEhpZGU6IHVzZXMgW3JhbmdlXWd+Li4ufmQgdG8gZGVsZXRlIGZpbGVzIHRoYXQgbWF0Y2ggY29tbWEge3t7MgogIiBzZXBhcmF0ZWQgcGF0dGVybnMgZ2l2ZW4gaW4gZzpuZXRyd19saXN0X2hpZGUKLWZ1biEgPFNJRD5OZXRyd0xpc3RIaWRlKCkKK2Z1biEgczpOZXRyd0xpc3RIaWRlKCkKICIgIGNhbGwgRGZ1bmMoIk5ldHJ3TGlzdEhpZGUoKSBsaXN0aGlkZTwiLmc6bmV0cndfbGlzdF9oaWRlLiI+IikKIAogICBsZXQgbGlzdGhpZGU9IGc6bmV0cndfbGlzdF9oaWRlCkBAIC0xODQwLDcgKzE4MDcsNyBAQAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRIaWRlRWRpdDogYWxsb3dzIHVzZXIgdG8gZWRpdCB0aGUgZmlsZS9kaXJlY3RvcnkgaGlkaW5nIGxpc3QKLWZ1biEgPFNJRD5OZXRIaWRlRWRpdChtb2RlKQorZnVuISBzOk5ldEhpZGVFZGl0KG1vZGUpCiAiICBjYWxsIERmdW5jKCJOZXRIaWRlRWRpdChtb2RlPSIuYTptb2RlLiIpIikKIAogICBjYWxsIGlucHV0c2F2ZSgpCkBAIC0xODYwLDcgKzE4MjcsNyBAQAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRTb3J0U2VxdWVuY2U6IGFsbG93cyB1c2VyIHRvIGVkaXQgdGhlIHNvcnRpbmcgc2VxdWVuY2UKLWZ1biEgPFNJRD5OZXRTb3J0U2VxdWVuY2UobW9kZSkKK2Z1biEgczpOZXRTb3J0U2VxdWVuY2UobW9kZSkKICIgIGNhbGwgRGZ1bmMoIk5ldFNvcnRTZXF1ZW5jZShtb2RlPSIuYTptb2RlLiIpIikKIAogICBjYWxsIGlucHV0c2F2ZSgpCkBAIC0xODgwLDkgKzE4NDcsOSBAQAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiAgTmV0TG9uZ0xpc3Q6IHt7ezIKLWZ1biEgPFNJRD5OZXRMb25nTGlzdChtb2RlKQorZnVuISBzOk5ldExvbmdMaXN0KG1vZGUpCiAiICBjYWxsIERmdW5jKCJOZXRMb25nTGlzdChtb2RlPSIuYTptb2RlLiIpIG5ldHJ3X2xvbmdsaXN0PSIuZzpuZXRyd19sb25nbGlzdCkKLSAgY2FsbCBzOk5ldFNhdmVQb3NuKCkKKyAgY2FsbCBuZXRydyNOZXRTYXZlUG9zbigpCiAKICAgaWYgZzpuZXRyd19sb25nbGlzdCAhPSAwCiAgICAiIHR1cm4gbG9uZyBsaXN0aW5nIG9mZgpAQCAtMTkwNSwxMCArMTg3MiwxMCBAQAogICBpZiBhOm1vZGUgPT0gMAogICAgc2lsZW50IGNhbGwgPFNJRD5OZXRCcm93c2UoPFNJRD5OZXRCcm93c2VDaGdEaXIoZXhwYW5kKCIlIiksIi4vIikpCiAgIGVsc2UKLSAgIHNpbGVudCBjYWxsIDxTSUQ+TG9jYWxCcm93c2UoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciwiLi8iKSkKKyAgIHNpbGVudCBjYWxsIHM6TG9jYWxCcm93c2UoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciwiLi8iKSkKICAgZW5kaWYKIAotICBjYWxsIHM6TmV0UmVzdG9yZVBvc24oKQorICBjYWxsIG5ldHJ3I05ldFJlc3RvcmVQb3NuKCkKIAogIiAgY2FsbCBEcmV0KCJOZXRMb25nTGlzdCA6IGc6bmV0cndfbG9uZ2xpc3Q9Ii5nOm5ldHJ3X2xvbmdsaXN0KQogZW5kZnVuCkBAIC0xOTMzLDcgKzE5MDAsNyBAQAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRNYWtlRGlyOiB0aGlzIGZ1bmN0aW9uIG1ha2VzIGEgZGlyZWN0b3J5IChib3RoIGxvY2FsIGFuZCByZW1vdGUpIHt7ezIKLWZ1biEgPFNJRD5OZXRNYWtlRGlyKHVzcmhvc3QpCitmdW4hIHM6TmV0TWFrZURpcih1c3Job3N0KQogIiAgY2FsbCBEZnVuYygiTmV0TWFrZURpcih1c3Job3N0PCIuYTp1c3Job3N0LiI+KSIpCiAKICAgIiBnZXQgbmFtZSBvZiBuZXcgZGlyZWN0b3J5IGZyb20gdXNlci4gIEEgYmFyZSA8Q1I+IHdpbGwgc2tpcC4KQEAgLTIwMzMsNyArMjAwMCw3IEBACiAiICAgIDM6IChMb2NhbEJyb3dzZSkgcmVjb3JkIGN1cnJlbnQgZGlyZWN0b3J5IGhpc3RvcnkKICIgICAgNDogKHVzZXI6IDx1PikgICBnbyB1cCAgIChwcmV2aW91cykgYm9va21hcmsKICIgICAgNTogKHVzZXI6IDxVPikgICBnbyBkb3duIChuZXh0KSAgICAgYm9va21hcmsKLWZ1biEgPFNJRD5OZXRCb29rbWFya0RpcihjaGcsY3VyZGlyKQorZnVuISBzOk5ldEJvb2ttYXJrRGlyKGNoZyxjdXJkaXIpCiAiICBjYWxsIERmdW5jKCJOZXRCb29rbWFya0RpcihjaGc9Ii5hOmNoZy4iIGN1cmRpcjwiLmE6Y3VyZGlyLiI+KSBjbnQ9Ii52OmNvdW50KQogICBpZiBleGlzdHMoInc6bmV0cndfYmFubmVyY250IikgJiYgbGluZSgiLiIpIDw9IHc6bmV0cndfYmFubmVyY250CiAgICAiIGxvb2tzIGxpa2UgYSAiYiIgd2FzIHByZXNzZWQgd2hpbGUgaW4gdGhlIGJhbm5lciByZWdpb24KQEAgLTIxMzksMjMgKzIxMDYsMjYgQEAKICIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0iIExvY2FsQnJvd3NlOiBzdXBwb3J0cyBsb2NhbCBmaWxlL2RpcmVjdG9yeSBicm93c2luZyB7e3syCi1mdW4hIDxTSUQ+TG9jYWxCcm93c2UoZGlybmFtZSkKLQotIiAgbGV0IGRpcm5hbWU9IChhOmRpcm5hbWUgPT0gIiIpPyBleHBhbmQoIiU6cCIpIDogYTpkaXJuYW1lCi0gIGlmICFpc2RpcmVjdG9yeShhOmRpcm5hbWUpCi0gICAiIG5vdCBhIGRpcmVjdG9yeSwgaWdub3JlIGl0Ci0gICByZXR1cm4KKyIgTG9jYWxCcm93c2U6IHt7ezIKK2Z1biEgczpMb2NhbEJyb3dzZShkaXJuYW1lKQorICAiIHVuZm9ydHVuYXRlIGludGVyYWN0aW9uIC0tIGRlYnVnZ2luZyBjYWxscyBjYW4ndCBiZSB1c2VkIGhlcmU7CisgICIgdGhlIEJ1ZkVudGVyIGV2ZW50IGNhdXNlcyB0cmlnZ2VyaW5nIHdoZW4gYXR0ZW1wdHMgdG8gd3JpdGUgdG8KKyAgIiB0aGUgREJHIGJ1ZmZlciBhcmUgbWFkZS4KKyAgaWYgaXNkaXJlY3RvcnkoYTpkaXJuYW1lKQorICAgY2FsbCBuZXRydyNEaXJCcm93c2UoYTpkaXJuYW1lKQogICBlbmRpZgorICAiIG5vdCBhIGRpcmVjdG9yeSwgaWdub3JlIGl0CitlbmRmdW4KIAotICAiIHVuZm9ydHVuYXRlIGludGVyYWN0aW9uIC0tIHdoZW4gcHV0dGluZyBkZWJ1Z2dpbmcgY2FsbHMKLSAgIiBhYm92ZSBvbmUgY2FuIG5vIGxvbmdlciBlbnRlciB0aGUgREJHIGJ1ZmZlci4KLSIgIGNhbGwgRGZ1bmMoIkxvY2FsQnJvd3NlKGRpcm5hbWU8Ii5hOmRpcm5hbWUuIj4pIGJ1ZiMiLmJ1Zm5yKCIlIikuIiB3aW5ucj0iLndpbm5yKCkuIiBzb3J0Ynk9Ii5nOm5ldHJ3X3NvcnRfYnkpCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBEaXJCcm93c2U6IHN1cHBvcnRzIGxvY2FsIGZpbGUvZGlyZWN0b3J5IGJyb3dzaW5nIHt7ezIKK2Z1biEgbmV0cncjRGlyQnJvd3NlKGRpcm5hbWUpCisiICBjYWxsIERmdW5jKCJEaXJCcm93c2UoZGlybmFtZTwiLmE6ZGlybmFtZS4iPikgYnVmIyIuYnVmbnIoIiUiKS4iIHdpbm5yPSIud2lubnIoKS4iIHNvcnRieT0iLmc6bmV0cndfc29ydF9ieSkKICIgIGNhbGwgRHJlZGlyKCJscyEiKQogCiAgIGlmIGV4aXN0cygiczpuZXRyd19za2lwYnJvd3NlIikKICAgIHVubGV0IHM6bmV0cndfc2tpcGJyb3dzZQotIiAgIGNhbGwgRHJldCgiTmV0QnJvd3NlIikKKyIgICBjYWxsIERyZXQoIkRpckJyb3dzZSIpCiAgICByZXR1cm4KICAgZW5kaWYKIApAQCAtMjE2NCw3ICsyMTM0LDcgQEAKICAgICBlY2hvaGwgRXJyb3IgfCBlY2hvICIqKipuZXRydyoqKiB2aW0gdmVyc2lvbjwiLnY6dmVyc2lvbi4iPiB0b28gb2xkIGZvciBicm93c2luZyB3aXRoIG5ldHJ3IiB8IGVjaG9obCBOb25lCiAgICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQogICAgZW5kaWYKLSIgICBjYWxsIERyZXQoIkxvY2FsQnJvd3NlIDogdmltIHZlcnNpb248Ii52OnZlcnNpb24uIj4gdG9vIG9sZCIpCisiICAgY2FsbCBEcmV0KCJEaXJCcm93c2UgOiB2aW0gdmVyc2lvbjwiLnY6dmVyc2lvbi4iPiB0b28gb2xkIikKICAgIHJldHVybgogICBlbmRpZgogCkBAIC0yMTc4LDcgKzIxNDgsNyBAQAogICBjYWxsIHM6VXNlQnVmV2luVmFycygpCiAKICAgIiBmaW5kIGJ1ZmZlciBudW1iZXIgb2YgYnVmZmVyIG5hbWVkIHByZWNpc2VseSB0aGUgc2FtZSBhcyBhOmRpcm5hbWUKLSAgbGV0IGJ1Zm51bT0gYnVmbnIoYTpkaXJuYW1lKQorICBsZXQgYnVmbnVtPSBidWZucihlc2NhcGUoYTpkaXJuYW1lLCdcJykpCiAiICBjYWxsIERlY2hvKCJmaW5kYnVmOiBidWZudW09Ii5idWZudW0pCiAgIGlmIGJ1Zm51bSA+IDAgJiYgYnVmbmFtZShidWZudW0pICE9IGE6ZGlybmFtZQogICAgbGV0IGlidWY9IDEKQEAgLTIyMTMsOSArMjE4Myw5IEBACiAgICAgaWYgZ2V0bGluZSgyKSA9fiAnXiIgRGlyZWN0b3J5IExpc3RpbmcgJwogICAgICBpZiAhZzpuZXRyd19rZWVwZGlyCiAiICAgICAgY2FsbCBEZWNobygiY2hhbmdlIGRpcmVjdG9yeTogY2QgIi5iOm5ldHJ3X2N1cmRpcikKLSAgICAgIGV4ZSAnY2QgJy5iOm5ldHJ3X2N1cmRpcgorICAgICAgZXhlICdjZCAnLmVzY2FwZShiOm5ldHJ3X2N1cmRpcixzOm5ldHJ3X2NkX2VzY2FwZSkKICAgICAgZW5kaWYKLSIgICAgIGNhbGwgRHJldCgiTG9jYWxCcm93c2UgOiByZXVzaW5nIGJ1ZmZlciMiLmJ1Zm51bS4iPCIuYTpkaXJuYW1lLiI+IikKKyIgICAgIGNhbGwgRHJldCgiRGlyQnJvd3NlIDogcmV1c2luZyBidWZmZXIjIi5idWZudW0uIjwiLmE6ZGlybmFtZS4iPiIpCiAgICAgIHJldHVybgogICAgIGVuZGlmCiAgICBlbmRpZgpAQCAtMjIyMyw3ICsyMTkzLDExIEBACiAgIGxldCBzOmxhc3Rfc29ydF9ieT0gZzpuZXRyd19zb3J0X2J5CiAKICAgIiBnZXQgdGhlIG5ldyBkaXJlY3RvcnkgbmFtZQotICBsZXQgYjpuZXRyd19jdXJkaXI9IHN1YnN0aXR1dGUoYTpkaXJuYW1lLCdcXCcsJy8nLCdnZScpCisgIGlmIGhhcygid2luMzIiKSB8fCBoYXMoIndpbjk1IikgfHwgaGFzKCJ3aW42NCIpIHx8IGhhcygid2luMTYiKQorICAgbGV0IGI6bmV0cndfY3VyZGlyPSBzdWJzdGl0dXRlKGE6ZGlybmFtZSwnXFwnLCcvJywnZ2UnKQorICBlbHNlCisgICBsZXQgYjpuZXRyd19jdXJkaXI9IGE6ZGlybmFtZQorICBlbmRpZgogICBpZiBiOm5ldHJ3X2N1cmRpciA9fiAnWy9cXF0kJwogICAgbGV0IGI6bmV0cndfY3VyZGlyPSBzdWJzdGl0dXRlKGI6bmV0cndfY3VyZGlyLCdbL1xcXSQnLCcnLCdlJykKICAgZW5kaWYKQEAgLTIyMzMsMTQgKzIyMDcsMTQgQEAKICAgaWYgIWc6bmV0cndfa2VlcGRpcgogIiAgIGNhbGwgRGVjaG8oImNoYW5nZSBkaXJlY3Rvcnk6IGNkICIuYjpuZXRyd19jdXJkaXIpCiAgICB0cnkKLSAgICBleGUgJ2NkICcuYjpuZXRyd19jdXJkaXIKKyAgICBleGUgJ2NkICcuZXNjYXBlKGI6bmV0cndfY3VyZGlyLHM6bmV0cndfY2RfZXNjYXBlKQogICAgY2F0Y2ggL15WaW1cJSgoXGFcKylcKVw9OkU0NzIvCiAgICAgZWNob2hsIEVycm9yIHwgZWNobyAiKioqbmV0cncqKiogdW5hYmxlIHRvIGNoYW5nZSBkaXJlY3RvcnkgdG8gPCIuYjpuZXRyd19jdXJkaXIuIj4gKHBlcm1pc3Npb25zPykiIHwgZWNob2hsIE5vbmUKICAgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCiAgICAgaWYgZXhpc3RzKCJ3Om5ldHJ3X3BydmRpciIpCiAgICAgIGxldCBiOm5ldHJ3X2N1cmRpcj0gdzpuZXRyd19wcnZkaXIKICAgICBlbHNlCi0iICAgICBjYWxsIERyZXQoIkxvY2FsQnJvd3NlIDogcmV1c2luZyBidWZmZXIjIi5idWZudW0uIjwiLmE6ZGlybmFtZS4iPiIpCisiICAgICBjYWxsIERyZXQoIkRpckJyb3dzZSA6IHJldXNpbmcgYnVmZmVyIyIuYnVmbnVtLiI8Ii5hOmRpcm5hbWUuIj4iKQogICAgICByZXR1cm4KICAgICBlbmRpZgogICAgZW5kdHJ5CkBAIC0yMjUwLDcgKzIyMjQsNyBAQAogICBleGUgJ3NpbGVudCEgZmlsZSAnLmVzY2FwZShiOm5ldHJ3X2N1cmRpcixzOm5ldHJ3X2NkX2VzY2FwZSkKIAogICAiIG1ha2UgdGhpcyBidWZmZXIgbW9kaWZpYWJsZSBhbmQgaGlkZGVuCi0gIHNldGxvY2FsIG1hIGhpZGRlbiBub251CisgIHNldGxvY2FsIG1hIGhpZGRlbiBub251IGJ0PW5vZmlsZQogICBpZiB2OnZlcnNpb24gPCA3MDAKICAgIHNpbGVudCEgJWQKICAgZWxzZQpAQCAtMjI3OCw3ICsyMjUyLDcgQEAKICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbwkJOmNhbGwgPFNJRD5OZXRTcGxpdCgyKTxjcj4KICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcAkJOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbFByZXZpZXcoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciw8U0lEPk5ldEdldFdvcmQoKSwxKSk8Y3I+CiAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHEJCTo8Yy11PmNhbGwgPFNJRD5OZXRCb29rbWFya0RpcigyLGI6bmV0cndfY3VyZGlyKTxjcj4KLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcgkJOmxldCBnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uPSAoZzpuZXRyd19zb3J0X2RpcmVjdGlvbiA9fiAnbicpPyAncicgOiAnbic8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGI6bmV0cndfY3VyZGlyLCcuLycpKTxjcj4KKyAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcgkJOmxldCBnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uPSAoZzpuZXRyd19zb3J0X2RpcmVjdGlvbiA9fiAnbicpPyAncicgOiAnbic8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbFJlZnJlc2goPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciwnLi8nKSk8Y3I+CiAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHMJCTpjYWxsIDxTSUQ+TmV0U2F2ZVdvcmRQb3NuKCk8YmFyPmxldCBnOm5ldHJ3X3NvcnRfYnk9IChnOm5ldHJ3X3NvcnRfYnkgPX4gJ24nKT8gJ3RpbWUnIDogKGc6bmV0cndfc29ydF9ieSA9fiAndCcpPyAnc2l6ZScgOiAnbmFtZSc8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGI6bmV0cndfY3VyZGlyLCcuLycpKTxiYXI+Y2FsbCA8U0lEPk5ldFJlc3RvcmVXb3JkUG9zbigpPGNyPgogICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBTCQk6Y2FsbCA8U0lEPk5ldFNvcnRTZXF1ZW5jZSgxKTxjcj4KICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gdQkJOjxjLXU+Y2FsbCA8U0lEPk5ldEJvb2ttYXJrRGlyKDQsZXhwYW5kKCIlIikpPGNyPgpAQCAtMjM0Miw3ICsyMzE2LDcgQEAKICIgIGNhbGwgRGVjaG8oImJhbm5lcmNudD0iLnc6bmV0cndfYmFubmVyY250KQogCiAgICIgZ2VuZXJhdGUgdGhlIHJlcXVlc3RlZCBkaXJlY3RvcnkgbGlzdGluZwotICBjYWxsIExvY2FsQnJvd3NlTGlzdCgpCisgIGNhbGwgczpMb2NhbEJyb3dzZUxpc3QoKQogCiAgICIgc2V0IHVwIHN5bnRheCBoaWdobGlnaHRpbmcKICAgaWYgaGFzKCJzeW50YXgiKQpAQCAtMjM5OSwxMiArMjM3MywxMiBAQAogICAgbGV0ICZhdXRvY2hkaXI9IGtlZXBfYXV0b2NoZGlyCiAgIGVuZGlmCiAKLSIgIGNhbGwgRHJldCgiTG9jYWxCcm93c2UgOiBmaWxlPCIuZXhwYW5kKCIlOnAiKS4iPiBidWZuYW1lPCIuYnVmbmFtZSgiJSIpLiI+IikKKyIgIGNhbGwgRHJldCgiRGlyQnJvd3NlIDogZmlsZTwiLmV4cGFuZCgiJTpwIikuIj4gYnVmbmFtZTwiLmJ1Zm5hbWUoIiUiKS4iPiIpCiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgIExvY2FsQnJvd3NlTGlzdDogZG9lcyB0aGUgam9iIG9mICJscyIgZm9yIGxvY2FsIGRpcmVjdG9yaWVzIHt7ezIKLWZ1biEgTG9jYWxCcm93c2VMaXN0KCkKK2Z1biEgczpMb2NhbEJyb3dzZUxpc3QoKQogIiAgY2FsbCBEZnVuYygiTG9jYWxCcm93c2VMaXN0KCkgYjpuZXRyd19jdXJkaXI8Ii5iOm5ldHJ3X2N1cmRpci4iPiIpCiAKICAgIiBnZXQgdGhlIGxpc3Qgb2YgZmlsZXMgY29udGFpbmVkIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQpAQCAtMjUwNCw3ICsyNDc4LDcgQEAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiICBMb2NhbEJyb3dzZUNoZ0RpcjogY29uc3RydWN0cyBhIG5ldyBkaXJlY3RvcnkgYmFzZWQgb24gdGhlIGN1cnJlbnQge3t7MgogIiAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgYSBuZXcgZGlyZWN0b3J5IG5hbWUKLWZ1biEgPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihkaXJuYW1lLG5ld2RpciwuLi4pCitmdW4hIHM6TG9jYWxCcm93c2VDaGdEaXIoZGlybmFtZSxuZXdkaXIsLi4uKQogIiAgY2FsbCBEZnVuYygiTG9jYWxCcm93c2VDaGdEaXIoZGlybmFtZTwiLmE6ZGlybmFtZS4iPiBuZXdkaXI8Ii5hOm5ld2Rpci4iPikgYTowPSIuYTowKQogCiAgIGxldCBkaXJuYW1lPSBzdWJzdGl0dXRlKGE6ZGlybmFtZSwnXFwnLCcnLCdnZScpCkBAIC0yNTQ5LDcgKzI1MjMsNyBAQAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBMb2NhbEJyb3dzZVJtOiB7e3syCi1mdW4hIDxTSUQ+TG9jYWxCcm93c2VSbShwYXRoKSByYW5nZQorZnVuISBzOkxvY2FsQnJvd3NlUm0ocGF0aCkgcmFuZ2UKICIgIGNhbGwgRGZ1bmMoIkxvY2FsQnJvd3NlUm0ocGF0aDwiLmE6cGF0aC4iPikiKQogIiAgY2FsbCBEZWNobygiZmlyc3RsaW5lPSIuYTpmaXJzdGxpbmUuIiBsYXN0bGluZT0iLmE6bGFzdGxpbmUpCiAKQEAgLTI2NTYsNyArMjYzMCw3IEBACiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIExvY2FsQnJvd3NlUmVuYW1lOiByZW5hbWUgYSByZW1vdGUgZmlsZSBvciBkaXJlY3Rvcnkge3t7MgotZnVuISA8U0lEPkxvY2FsQnJvd3NlUmVuYW1lKHBhdGgpIHJhbmdlCitmdW4hIHM6TG9jYWxCcm93c2VSZW5hbWUocGF0aCkgcmFuZ2UKICIgIGNhbGwgRGZ1bmMoIkxvY2FsQnJvd3NlUmVuYW1lKHBhdGg8Ii5hOnBhdGguIj4pIikKIAogICAiIHByZXBhcmF0aW9uIGZvciByZW1vdmluZyBtdWx0aXBsZSBmaWxlcy9kaXJlY3RvcmllcwpAQCAtMjcwMSw3ICsyNjc1LDcgQEAKIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgTG9jYWxQcmV2aWV3OiB7e3syCi1mdW4hIDxTSUQ+TG9jYWxQcmV2aWV3KHBhdGgpIHJhbmdlCitmdW4hIHM6TG9jYWxQcmV2aWV3KHBhdGgpIHJhbmdlCiAiICBjYWxsIERmdW5jKCJMb2NhbFByZXZpZXcocGF0aDwiLmE6cGF0aC4iPikiKQogICBpZiBoYXMoInF1aWNrZml4IikKICAgIGlmICFpc2RpcmVjdG9yeShhOnBhdGgpCkBAIC0yNzE5LDExICsyNjkzLDExIEBACiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIExvY2FsUmVmcmVzaDoge3t7MgotZnVuISA8U0lEPkxvY2FsUmVmcmVzaChkaXJuYW1lKQorZnVuISBzOkxvY2FsUmVmcmVzaChkaXJuYW1lKQogIiAgY2FsbCBEZnVuYygiTG9jYWxSZWZyZXNoKGRpcm5hbWU8Ii5hOmRpcm5hbWUuIj4pIikKICAgc2V0IG1hCiAgICVkCi0gIGNhbGwgPFNJRD5Mb2NhbEJyb3dzZShhOmRpcm5hbWUpCisgIGNhbGwgczpMb2NhbEJyb3dzZShhOmRpcm5hbWUpCiAgIHJlZHJhdyEKICIgIGNhbGwgRHJldCgiTG9jYWxSZWZyZXNoIikKIGVuZGZ1bgpAQCAtMjczNCw3ICsyNzA4LDcgQEAKICIgICAgICAgICAgICAgICAgICAgICAgYmVlbiBtb2RpZmllZAogIiAgICAgICAgICBkb3NwbGl0PT0xOiB0aGUgd2luZG93IHdpbGwgYmUgc3BsaXQgYmVmb3JlIHJ1bm5pbmcgdGhlIGxvY2FsCiAiICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIKLWZ1biEgczpFeHBsb3JlKGluZHgsZG9zcGxpdCxzdHlsZSwuLi4pCitmdW4hIG5ldHJ3I0V4cGxvcmUoaW5keCxkb3NwbGl0LHN0eWxlLC4uLikKICIgIGNhbGwgRGZ1bmMoIkV4cGxvcmUoaW5keD0iLmE6aW5keC4iIGRvc3BsaXQ9Ii5hOmRvc3BsaXQuIiBzdHlsZT0iLmE6c3R5bGUuIikiKQogCiAgICIgaWYgZG9zcGxpdCBvciBmaWxlIGhhcyBiZWVuIG1vZGlmaWVkCkBAIC0yODcyLDcgKzI4NDYsNyBAQAogIiBOZXRHZXRjd2Q6IGdldCB0aGUgY3VycmVudCBkaXJlY3RvcnkuIHt7ezIKICIgICBDaGFuZ2UgYmFja3NsYXNoZXMgdG8gZm9yd2FyZCBzbGFzaGVzLCBpZiBhbnkuCiAiICAgSWYgZG9lc2MgaXMgdHJ1ZSwgZXNjYXBlIGNlcnRhaW4gdHJvdWJsZXNvbWUgY2hhcmFjdGVycwotZnVuISA8U0lEPk5ldEdldGN3ZChkb2VzYykKK2Z1biEgczpOZXRHZXRjd2QoZG9lc2MpCiAiICBjYWxsIERmdW5jKCJOZXRHZXRjd2QoZG9lc2M9Ii5hOmRvZXNjLiIpIikKICAgbGV0IGN1cmRpcj0gc3Vic3RpdHV0ZShnZXRjd2QoKSwnXFwnLCcvJywnZ2UnKQogICBpZiBjdXJkaXIgIX4gJ1tcL10kJwpAQCAtMzIwMiw3ICszMTc2LDcgQEAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIE5ldFNvcnQ6IFBpZXQgRGVscG9ydCdzIEJJU29ydDIoKSBmdW5jdGlvbiwgbW9kaWZpZWQgdG8gdGFrZSBhIHJhbmdlIHt7ezEKIGlmIHY6dmVyc2lvbiA8IDcwMAotIGZ1biEgPFNJRD5OZXRTb3J0KCkgcmFuZ2UKKyBmdW4hIHM6TmV0U29ydCgpIHJhbmdlCiAiICIgIGNhbGwgRGZ1bmMoIk5ldFNvcnQoKSIpCiAgCiAgIGxldCBpID0gYTpmaXJzdGxpbmUgKyAxCkBAIC0zMjUwLDcgKzMyMjQsNyBAQAogIiAgICAgICAgICBpbiB0aGUgZzpuZXRyd19zb3J0X3NlcXVlbmNlLiAgSXQgYXBwbGllcyBhIHN1YnN0aXR1dGUgdG8gYW55CiAiICAgICAgICAgICJmaWxlcyIgdGhhdCBzYXRpc2Z5IGVhY2ggcGF0dGVybiwgcHV0dGluZyB0aGUgcHJpb3JpdHkgLyBpbgogIiAgICAgICAgICBmcm9udC4gIEFuICIqIiBwYXR0ZXJuIGhhbmRsZXMgdGhlIGRlZmF1bHQgcHJpb3JpdHkuCi1mdW4hIDxTSUQ+U2V0U29ydCgpCitmdW4hIHM6U2V0U29ydCgpCiAiICBjYWxsIERmdW5jKCJTZXRTb3J0KCkgYmFubmVyY250PSIudzpuZXRyd19iYW5uZXJjbnQpCiAgIGlmIGc6bmV0cndfbG9uZ2xpc3QKICAgIGxldCBzZXFsaXN0ICA9IHN1YnN0aXR1dGUoZzpuZXRyd19zb3J0X3NlcXVlbmNlLCdcJCcsJ1xcJShcdFxcfFwkXFwpJywnZ2UnKQpAQCAtMzM3MSw4ICszMzQ1LDExIEBACiAiICBjYWxsIERyZXQoIlVzZUJ1ZldpblZhcnMiKQogZW5kZnVuCiAKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIFNldHRpbmdzIFJlc3RvcmF0aW9uOiB7e3sxCiBsZXQgJmNwbz0gczprZWVwY3BvCiB1bmxldCBzOmtlZXBjcG8KKwogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgTW9kZWxpbmVzOiB7e3sxCiAiIHZpbTp0cz04IGZkbT1tYXJrZXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggZjk4YmQ5My4uNjFhMjJkZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTQ2ODMsNyArNDY4MywyMSBAQAogCQkJe25hbWV9IGNhbiBhbHNvIGJlIGEgRGljdGlvbmFyeSBlbnRyeSB0aGF0IGlzIGEKIAkJCUZ1bmNyZWY6ID4KIAkJCQk6ZnVuY3Rpb24gZGljdC5pbml0Ci08CQkJCQkJCSpFMTI0KiAqRTEyNSoKKzwKKwkJCQkJCQkqOmZ1bmN0aW9uLXZlcmJvc2UqCitXaGVuICd2ZXJib3NlJyBpcyBub24temVybywgbGlzdGluZyBhIGZ1bmN0aW9uIHdpbGwgYWxzbyBkaXNwbGF5IHdoZXJlIGl0IHdhcworbGFzdCBkZWZpbmVkLiBFeGFtcGxlOiA+CisKKyAgICA6dmVyYm9zZSBmdW5jdGlvbiBTZXRGaWxlVHlwZVNICisJZnVuY3Rpb24gU2V0RmlsZVR5cGVTSChuYW1lKQorCSAgICBMYXN0IHNldCBmcm9tIC91c3Ivc2hhcmUvdmltL3ZpbS03LjAvZmlsZXR5cGUudmltCis8CitXaGVuIHRoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZCBieSBoYW5kIHRoZXJlIGlzIG5vICJMYXN0IHNldCIgbWVzc2FnZS4gIFdoZW4KK3RoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZCB3aGlsZSBleGVjdXRpbmcgYSBmdW5jdGlvbiwgdXNlciBjb21tYW5kIG9yCithdXRvY29tbWFuZCwgdGhlIHNjcmlwdCBpbiB3aGljaCBpdCB3YXMgZGVmaW5lZCBpcyByZXBvcnRlZC4KK3tub3QgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aG91dCB0aGUgK2V2YWwgZmVhdHVyZX0KKworIAkJCQkJCQkqRTEyNCogKkUxMjUqCiA6ZnVbbmN0aW9uXVshXSB7bmFtZX0oW2FyZ3VtZW50c10pIFtyYW5nZV0gW2Fib3J0XSBbZGljdF0KIAkJCURlZmluZSBhIG5ldyBmdW5jdGlvbiBieSB0aGUgbmFtZSB7bmFtZX0uICBUaGUgbmFtZQogCQkJbXVzdCBiZSBtYWRlIG9mIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCAnXycsIGFuZApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvbWFwLnR4dCBiL3J1bnRpbWUvZG9jL21hcC50eHQKaW5kZXggZGUyOWYwZi4uYTEzNWE0OCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvbWFwLnR4dAorKysgYi9ydW50aW1lL2RvYy9tYXAudHh0CkBAIC0xLDQgKzEsNCBAQAotKm1hcC50eHQqICAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEp1bCAyMQorKm1hcC50eHQqICAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEF1ZyAxNgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtODY4LDYgKzg2OCwyMCBAQAogCiA6Y29tW21hbmRdIHtjbWR9CUxpc3QgdGhlIHVzZXItZGVmaW5lZCBjb21tYW5kcyB0aGF0IHN0YXJ0IHdpdGgge2NtZH0KIAorCQkJCQkJCSo6Y29tbWFuZC12ZXJib3NlKgorV2hlbiAndmVyYm9zZScgaXMgbm9uLXplcm8sIGxpc3RpbmcgYSBjb21tYW5kIHdpbGwgYWxzbyBkaXNwbGF5IHdoZXJlIGl0IHdhcworbGFzdCBkZWZpbmVkLiBFeGFtcGxlOiA+CisKKyAgICA6dmVyYm9zZSBjb21tYW5kIFRPaHRtbAorCU5hbWUgICAgICAgIEFyZ3MgUmFuZ2UgQ29tcGxldGUgIERlZmluaXRpb24KKwlUT2h0bWwgICAgICAwICAgICUgICAgICAgICAgICAgICA6Y2FsbCBDb252ZXJ0MkhUTUwoPGxpbmUxPiwgPGxpbmUyPikKKwkgICAgTGFzdCBzZXQgZnJvbSAvdXNyL3NoYXJlL3ZpbS92aW0tNy4wL3BsdWdpbi90b2h0bWwudmltCis8CitXaGVuIHRoZSBjb21tYW5kIHdhcyBkZWZpbmVkIGJ5IGhhbmQgdGhlcmUgaXMgbm8gIkxhc3Qgc2V0IiBtZXNzYWdlLiAgV2hlbiB0aGUKK2NvbW1hbmQgd2FzIGRlZmluZWQgd2hpbGUgZXhlY3V0aW5nIGEgZnVuY3Rpb24sIHVzZXIgY29tbWFuZCBvciBhdXRvY29tbWFuZCwKK3RoZSBzY3JpcHQgaW4gd2hpY2ggaXQgd2FzIGRlZmluZWQgaXMgcmVwb3J0ZWQuCit7bm90IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGhvdXQgdGhlICtldmFsIGZlYXR1cmV9CisKIAkJCQkJCQkqRTE3NCogKkUxODIqCiA6Y29tW21hbmRdWyFdIFt7YXR0cn0uLi5dIHtjbWR9IHtyZXB9CiAJCQlEZWZpbmUgYSB1c2VyIGNvbW1hbmQuICBUaGUgbmFtZSBvZiB0aGUgY29tbWFuZCBpcwpAQCAtMTA2OSw4ICsxMDgzLDcgQEAKIGlzIGEgc3BlY2lhbCBmb3JtIDxmLWFyZ3M+ICgiZnVuY3Rpb24gYXJncyIpLiAgVGhpcyBzcGxpdHMgdGhlIGNvbW1hbmQKIGFyZ3VtZW50cyBhdCBzcGFjZXMgYW5kIFRhYnMsIHF1b3RlcyBlYWNoIGFyZ3VtZW50IGluZGl2aWR1YWxseSwgYW5kIHRoZQogPGYtYXJncz4gc2VxdWVuY2UgaXMgcmVwbGFjZWQgYnkgdGhlIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHF1b3RlZCBhcmd1bWVudHMuCi1TZWUgdGhlIE15Y21kIGV4YW1wbGUgYmVsb3cuICBXaGVuIHRoZXJlIGlzIG5vIGFyZ3VtZW50LCA8Zi1hcmdzPiBhbHNvIGhhcyBubwotYXJndW1lbnQuCitTZWUgdGhlIE15Y21kIGV4YW1wbGUgYmVsb3cuICBJZiBubyBhcmd1bWVudHMgYXJlIGdpdmVuIDxmLWFyZ3M+IGlzIHJlbW92ZWQuIAogCiBFeGFtcGxlcyA+CiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dCBiL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dAppbmRleCA0Y2M1OWMzLi4wMDcxODgzIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9waV9uZXRydy50eHQKKysrIGIvcnVudGltZS9kb2MvcGlfbmV0cncudHh0CkBAIC0xLDQgKzEsNCBAQAotKnBpX25ldHJ3LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjAuICBMYXN0IGNoYW5nZTogQXVnIDExLCAyMDA1CisqcGlfbmV0cncudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMC4gIExhc3QgY2hhbmdlOiBBdWcgMTUsIDIwMDUKIAogCiAJCVZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLgpAQCAtMTEsNiArMTEsMTMgQEAKIDAuIENvbnRlbnRzCQkJCQkJKm5ldHJ3LWNvbnRlbnRzKgogCiAxLiAgTmV0cncgUmVmZXJlbmNlLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctcmVmfAorICAgICAgQ09OVFJPTExJTkcgRVhURVJOQUwgQVBQTElDVElPTlMuLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWV4dGVybmFwcHwKKyAgICAgIFJFQURJTkcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1yZWFkfAorICAgICAgV1JJVElORy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXdyaXRlfAorICAgICAgRElSRUNUT1JZIExJU1RJTkcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWRpcmxpc3R8CisgICAgICBDSEFOR0lORyBUSEUgVVNFUklEIEFORCBQQVNTV09SRC4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctY2hndXB8CisgICAgICBWQVJJQUJMRVMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctdmFyaWFibGVzfAorICAgICAgUEFUSFMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXBhdGh8CiAyLiAgTmV0d29yay1PcmllbnRlZCBGaWxlIFRyYW5zZmVyLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cncteGZlcnwKICAgICAgIE5FVFJDLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1uZXRyY3wKICAgICAgIFBBU1NXT1JELi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1wYXNzd2R8CkBAIC01Myw4ICs2MCwxMCBAQAogMTAuIEhpc3RvcnkuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWhpc3Rvcnl8CiAxMS4gQ3JlZGl0cy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctY3JlZGl0c3wKIAotVGhlIGZ1bmN0aW9uYWxpdHkgbWVudGlvbmVkIGhlcmUgaXMgZG9uZSB2aWEgdXNpbmcgfHN0YW5kYXJkLXBsdWdpbnwKLXRlY2huaXF1ZXMuICBUaGlzIHBsdWdpbiBpcyBvbmx5IGF2YWlsYWJsZSBpZgorVGhlIE5ldHJ3IHBsdWdpbiBpcyBnZW5lcmFsbHkgc291cmNlZCBhdXRvbWF0aWNhbGx5IGFzIGl0IGlzIGEKK3xzdGFuZGFyZC1wbHVnaW58LiAgVGhhdCBzYWlkLCB0byBtYWtlIHVzZSBvZiBuZXRydywgb25lIG11c3QKK2hhdmUgcGx1Z2lucyBhdmFpbGFibGUgd2hpY2ggY2FuIGJlIGRvbmUgd2l0aCB0aGUgZm9sbG93aW5nCit0d28gbGluZXMgaW4geW91ciA8LnZpbXJjPjoKIAogCXNldCBub2NwICAgICAgICAgICAgICAgICAgICAiICdjb21wYXRpYmxlJyBpcyBub3Qgc2V0CiAJZmlsZXR5cGUgcGx1Z2luIG9uICAgICAgICAgICIgcGx1Z2lucyBhcmUgZW5hYmxlZApAQCAtNjksNjIgKzc4LDUxIEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDEuIE5ldHJ3IFJlZmVyZW5jZQkJCQkJCSpuZXRydy1yZWYqCiAKLSAgICBPUFRJT05TCi0JbGV0IGc6bmV0cndfZnRwID0wIHVzZSBmdHAgKGRlZmF1bHQpCQkgICAgICh1aWQgcGFzc3dvcmQpCi0JCQk9MSB1c2UgYWx0ZXJuYXRlIGZ0cCBtZXRob2QJKHVzZXIgdWlkIHBhc3N3b3JkKQotCSAgSWYgeW91J3JlIGhhdmluZyB0cm91YmxlIHdpdGggZnRwLCB0cnkgY2hhbmdpbmcgdGhlIHZhbHVlCi0JICBvZiB0aGlzIHZhcmlhYmxlIGluIHlvdXIgPC52aW1yYz4gdG8gY2hhbmdlIG1ldGhvZHMKK0NPTlRST0xMSU5HIEVYVEVSTkFMIEFQUExJQ1RJT05TCQkJKm5ldHJ3LWV4dGVybmFwcCoKIAotCWxldCBnOm5ldHJ3X2lnbm9yZW5ldHJjPSAxCi0JICBJZiB5b3UgaGF2ZSBhIDwubmV0cmM+IGZpbGUgYnV0IGl0IGRvZXNuJ3Qgd29yayBhbmQgeW91Ci0JICB3YW50IGl0IGlnbm9yZWQsIHRoZW4gc2V0IHRoaXMgdmFyaWFibGUgYXMgc2hvd24uICBJdHMgbWVyZQotCSAgZXhpc3RlbmNlIGlzIGVub3VnaCB0byBjYXVzZSA8Lm5ldHJjPiB0byBiZSBpZ25vcmVkLgorCVByb3RvY29sICBWYXJpYWJsZQkgICAgRGVmYXVsdCBWYWx1ZQorCS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tCisJICAgZGF2OiAgICAqZzpuZXRyd19kYXZfY21kKiAgPSAiY2FkYXZlciIKKwkgZmV0Y2g6ICAqZzpuZXRyd19mZXRjaF9jbWQqICA9ICJmZXRjaCAtbyIKKwkgICBmdHA6ICAgICpnOm5ldHJ3X2Z0cF9jbWQqICA9ICJmdHAiCisgICAgICAgICAgaHR0cDogICAqZzpuZXRyd19odHRwX2NtZCogID0gImZldGNoIC1vIiAgICBpZiBmZXRjaCBpcyBhdmFpbGFibGUKKwkgIGh0dHA6ICAgIGc6bmV0cndfaHR0cF9jbWQgICA9ICJ3Z2V0IC1xIC1PIiAgSWYgd2dldCAgaXMgYXZhaWxhYmxlCisJICAgcmNwOiAgICAqZzpuZXRyd19yY3BfY21kKiAgPSAicmNwIgorCSByc3luYzogICpnOm5ldHJ3X3JzeW5jX2NtZCogID0gInJzeW5jIC1hIgorCSAgIHNjcDogICAgKmc6bmV0cndfc2NwX2NtZCogID0gInNjcCAtcSIKKwkgIHNmdHA6ICAgKmc6bmV0cndfc2Z0cF9jbWQqICA9ICJzZnRwIgogCi0JQ29udHJvbGxpbmcgRXh0ZXJuYWwgQXBwbGljYXRpb25zCQkqbmV0cnctZXh0ZXJuYXBwKgotCi0JIFByb3RvY29sICBWYXJpYWJsZQkgICAgIERlZmF1bHQgVmFsdWUKLQkgLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0KLQkgICAgZGF2OiAgICAqZzpuZXRyd19kYXZfY21kKiAgPSAiY2FkYXZlciIKLQkgIGZldGNoOiAgKmc6bmV0cndfZmV0Y2hfY21kKiAgPSAiZmV0Y2ggLW8iCi0JICAgIGZ0cDogICAgKmc6bmV0cndfZnRwX2NtZCogID0gImZ0cCIKLSAgICAgICAgICAgaHR0cDogICAqZzpuZXRyd19odHRwX2NtZCogID0gImZldGNoIC1vIiAgICBpZiBmZXRjaCBpcyBhdmFpbGFibGUKLQkgICBodHRwOiAgICBnOm5ldHJ3X2h0dHBfY21kICAgPSAid2dldCAtcSAtTyIgIElmIHdnZXQgIGlzIGF2YWlsYWJsZQotCSAgICByY3A6ICAgICpnOm5ldHJ3X3JjcF9jbWQqICA9ICJyY3AiCi0JICByc3luYzogICpnOm5ldHJ3X3JzeW5jX2NtZCogID0gInJzeW5jIC1hIgotCSAgICBzY3A6ICAgICpnOm5ldHJ3X3NjcF9jbWQqICA9ICJzY3AgLXEiCi0JICAgc2Z0cDogICAqZzpuZXRyd19zZnRwX2NtZCogID0gInNmdHAiCi0KLSAgICBSRUFESU5HCQkJCQkqbmV0cnctcmVhZCogKm5ldHJ3LW5yZWFkKgorUkVBRElORwkJCQkJCSpuZXRydy1yZWFkKiAqbmV0cnctbnJlYWQqCiAJOk5yZWFkID8JCQkJCWdpdmUgaGVscAogCTpOcmVhZCAibWFjaGluZTpwYXRoIgkJCQl1c2VzIHJjcAotCTpOcmVhZCAibWFjaGluZSBwYXRoIgkJCQl1c2VzIGZ0cCAgIHdpdGggPC5uZXRyYz4KKwk6TnJlYWQgIm1hY2hpbmUgcGF0aCIJCQkJdXNlcyBmdHAgdy8gPC5uZXRyYz4KIAk6TnJlYWQgIm1hY2hpbmUgaWQgcGFzc3dvcmQgcGF0aCIJCXVzZXMgZnRwCiAJOk5yZWFkICJkYXY6Ly9tYWNoaW5lWzpwb3J0XS9wYXRoIgkJdXNlcyBjYWRhdmVyCiAJOk5yZWFkICJmZXRjaDovL1t1c2VyQF1tYWNoaW5lL3BhdGgiCQl1c2VzIGZldGNoCi0JOk5yZWFkICJmdHA6Ly9bdXNlckBdbWFjaGluZVtbOiNdcG9ydF0vcGF0aCIJdXNlcyBmdHAgICBhdXRvZGV0ZWN0cyA8Lm5ldHJjPgorCTpOcmVhZCAiZnRwOi8vW3VzZXJAXW1hY2hpbmVbWzojXXBvcnRdL3BhdGgiCXVzZXMgZnRwIHcvIDwubmV0cmM+CiAJOk5yZWFkICJodHRwOi8vW3VzZXJAXW1hY2hpbmUvcGF0aCIJCXVzZXMgaHR0cCAgdXNlcyB3Z2V0CiAJOk5yZWFkICJyY3A6Ly9bdXNlckBdbWFjaGluZS9wYXRoIgkJdXNlcyByY3AKIAk6TnJlYWQgInJzeW5jOi8vW3VzZXJAXW1hY2hpbmVbOnBvcnRdL3BhdGgiCXVzZXMgcnN5bmMKIAk6TnJlYWQgInNjcDovL1t1c2VyQF1tYWNoaW5lW1s6I11wb3J0XS9wYXRoIgl1c2VzIHNjcAogCTpOcmVhZCAic2Z0cDovL1t1c2VyQF1tYWNoaW5lL3BhdGgiCQl1c2VzIHNmdHAKIAotICAgIFdSSVRJTkcJCQkJCSpuZXRydy13cml0ZSogKm5ldHJ3LW53cml0ZSoKK1dSSVRJTkcJCQkJCQkqbmV0cnctd3JpdGUqICpuZXRydy1ud3JpdGUqCiAJOk53cml0ZSA/ICAgIAkJCQkJZ2l2ZSBoZWxwCiAJOk53cml0ZSAibWFjaGluZTpwYXRoIgkJCQl1c2VzIHJjcAotCTpOd3JpdGUgIm1hY2hpbmUgcGF0aCIJCQkJdXNlcyBmdHAgICB3aXRoIDwubmV0cmM+CisJOk53cml0ZSAibWFjaGluZSBwYXRoIgkJCQl1c2VzIGZ0cCB3LyA8Lm5ldHJjPgogCTpOd3JpdGUgIm1hY2hpbmUgaWQgcGFzc3dvcmQgcGF0aCIJCXVzZXMgZnRwCiAJOk53cml0ZSAiZGF2Oi8vbWFjaGluZVs6cG9ydF0vcGF0aCIJCXVzZXMgY2FkYXZlcgotCTpOd3JpdGUgImZ0cDovL1t1c2VyQF1tYWNoaW5lW1s6I11wb3J0XS9wYXRoIgl1c2VzIGZ0cCAgIGF1dG9kZXRlY3RzIDwubmV0cmM+CisJOk53cml0ZSAiZnRwOi8vW3VzZXJAXW1hY2hpbmVbWzojXXBvcnRdL3BhdGgiCXVzZXMgZnRwIHcvIDwubmV0cmM+CiAJOk53cml0ZSAicmNwOi8vW3VzZXJAXW1hY2hpbmUvcGF0aCIJCXVzZXMgcmNwCiAJOk53cml0ZSAicnN5bmM6Ly9bdXNlckBdbWFjaGluZVs6cG9ydF0vcGF0aCIJdXNlcyByc3luYwogCTpOd3JpdGUgInNjcDovL1t1c2VyQF1tYWNoaW5lW1s6I11wb3J0XS9wYXRoIgl1c2VzIHNjcAogCTpOd3JpdGUgInNmdHA6Ly9bdXNlckBdbWFjaGluZS9wYXRoIgkJdXNlcyBzZnRwCiAJaHR0cDogbm90IHN1cHBvcnRlZCEKIAotICAgIERJUkVDVE9SWSBMSVNUSU5HCitESVJFQ1RPUlkgTElTVElORwkJCQkJKm5ldHJ3LWRpcmxpc3QqCiAJOk5yZWFkIFtwcm90b2NvbF06Ly9bdXNlcl1AaG9zdG5hbWUvcGF0aC8KIAotICAgIFVTRVIgQU5EIFBBU1NXT1JEIENIQU5HSU5HCisgQ0hBTkdJTkcgVVNFUklEIEFORCBQQVNTV09SRAkJCQkqbmV0cnctY2hndXAqCiAJQXR0ZW1wdHMgdG8gdXNlIGZ0cCB3aWxsIHByb21wdCB5b3UgZm9yIGEgdXNlci1pZCBhbmQgYSBwYXNzd29yZC4KIAlUaGVzZSB3aWxsIGJlIHNhdmVkIGluIGc6bmV0cndfdWlkIGFuZCBnOm5ldHJ3X3Bhc3N3ZCBTdWJzZXF1ZW50IHVzZXMKIAlvZiBmdHAgd2lsbCByZS11c2UgdGhvc2UuICBJZiB5b3UgbmVlZCB0byB1c2UgYSBkaWZmZXJlbnQgdXNlciBpZApAQCAtMTM1LDU5ICsxMzMsNjEgQEAKIAk6Y2FsbCBOZXRVc2VyUGFzcygidWlkIikJCS0tIHByb21wdHMgZm9yIHBhc3N3b3JkCiAJOmNhbGwgTmV0VXNlclBhc3MoInVpZCIsInBhc3N3b3JkIikJLS0gc2V0cyBnbG9iYWwgdWlkIGFuZCBwYXNzd29yZAogCi0gICAgVkFSSUFCTEVTCQkJCQkJKm5ldHJ3LXZhcmlhYmxlcyoKLQkqYjpuZXRyd19sYXN0ZmlsZSoKLQkgICAgICAgICAgICAgICAgICBsYXN0IGZpbGUgTmV0d29yay1yZWFkL3dyaXR0ZW4gcmV0YWluZWQgb24KLQkJCSAgYSBwZXItYnVmZmVyIGJhc2lzCQkoc3VwcG9ydHMgcGxhaW4gOk53ICkKLQkqczpuZXRyd19saW5lKgotCSAgICAgICAgICAgICAgICAgIGR1cmluZyA6TncvTmV0V3JpdGUsIGhvbGRzIGN1cnJlbnQgbGluZSBudW1iZXIKLQkqczpuZXRyd19jb2wqCi0JICAgICAgICAgICAgICAgICAgZHVyaW5nIDpOdy9OZXRXcml0ZSwgaG9sZHMgY3VycmVudCBjb2x1bW4gbnVtYmVyCi0JCQkgIHM6bmV0cndfbGluZSBhbmQgczpuZXRyd19jb2wgYXJlIHVzZWQgdG8KLQkJCSAgcmVzdG9yZSB0aGUgY3Vyc29yIHBvc2l0aW9uIG9uIHdyaXRlcwotCSpnOm5ldHJ3X2Z0cCoKLQkgICAgICAgICAgICAgICAgICAgICBpZiBpdCBkb2Vzbid0IGV4aXN0LCB1c2UgZGVmYXVsdCBmdHAKLQkJCSAgPTAgdXNlIGRlZmF1bHQgZnRwCQkgICAgICAgKHVpZCBwYXNzd29yZCkKLQkJCSAgPTEgdXNlIGFsdGVybmF0ZSBmdHAgbWV0aG9kCSAgKHVzZXIgdWlkIHBhc3N3b3JkKQotCSpnOm5ldHJ3X2Z0cG1vZGUqCi0JICAgICAgICAgICAgICAgICAgPSJiaW5hcnkiCQkJCSAgICAoZGVmYXVsdCkKLQkJCSAgPSJhc2NpaSIKLQkqZzpuZXRyd191aWQqCi0JICAgICAgICAgICAgICAgICAgICAgKGZ0cCkgdXNlci1pZCwgICAgICByZXRhaW5lZCBvbiBhIHBlci1zZXNzaW9uIGJhc2lzCi0JKmc6bmV0cndfcGFzc3dkKgotCSAgICAgICAgICAgICAgICAgICAgIChmdHApIHBhc3N3b3JkLCAgICAgcmV0YWluZWQgb24gYSBwZXItc2Vzc2lvbiBiYXNpcwotCSpnOm5ldHJ3X3dpbjk1ZnRwKgotCSAgICAgICAgICAgICAgICAgID0xIGlmIHVzaW5nIFdpbjk1LCB3aWxsIHJlbW92ZSBmb3VyIHRyYWlsaW5nIGJsYW5rCi0JICAgICAgICAgICAgICAgICAgICAgbGluZXMgdGhhdCBvL3MncyBmdHAgInByb3ZpZGVzIiBvbiB0cmFuc2ZlcnMKLQkJCSAgPTAgZm9yY2Ugbm9ybWFsIGZ0cCBiZWhhdmlvciAobm8gdHJhaWxpbmcgbGluZQotCQkJICAgICByZW1vdmFsKQotCSpnOm5ldHJ3X2N5Z3dpbioKLQkgICAgICAgICAgICAgICAgICA9MSBhc3N1bWUgc2NwIHVuZGVyIHdpbmRvd3MgaXMgZnJvbSBjeWd3aW4KLQkgICAgICAgICAgICAgICAgICAgICBBbHNvIHBlcm1pdHMgbmV0d29yayBicm93c2luZyB0byB1c2UKLQkJCSAgICAgbHMgd2l0aCB0aW1lIGFuZCBzaXplIHNvcnRpbmcKLQkJCQkJCQkgKGRlZmF1bHQgaWYgd2luZG93cykKLQkJCSAgPTAgYXNzdW1lIFdpbmRvd3MnIHNjcCBhY2NlcHRzIHdpbmRvd3Mtc3R5bGUgcGF0aHMKLQkJCSAgICAgTmV0d29yayBicm93c2luZyB1c2VzIGRpciBpbnN0ZWFkIG9mIGxzCi0JCQkgIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgaWYgeW91J3JlIHVzaW5nIHVuaXgKLQkqZzpuZXRyd191c2VfbnRfcmNwKgotCSAgICAgICAgICAgICAgICAgID0wIGRvbid0IHVzZSB0aGUgcmNwIG9mIFdpbk5ULCBXaW4yMDAwIGFuZCBXaW5YUAotCQkJICA9MSB1c2UgV2luTlQncyByY3AgaW4gYmluYXJ5IG1vZGUgICAgICAgICAoZGVmYXVsdCkKK1ZBUklBQkxFUwkJCQkJCSpuZXRydy12YXJpYWJsZXMqCisgKmI6bmV0cndfbGFzdGZpbGUqCWxhc3QgZmlsZSBOZXR3b3JrLXJlYWQvd3JpdHRlbiByZXRhaW5lZCBvbiBhIHBlci1idWZmZXIKKwkJCWJhc2lzCQkoc3VwcG9ydHMgcGxhaW4gOk53ICkKIAotICAgIFBBVEhTCQkJCQkJCSpuZXRydy1wYXRoKgorICpzOm5ldHJ3X2xpbmUqCQlkdXJpbmcgOk53L05ldFdyaXRlLCBob2xkcyBjdXJyZW50IGxpbmUgbnVtYmVyCisgKnM6bmV0cndfY29sKgkJZHVyaW5nIDpOdy9OZXRXcml0ZSwgaG9sZHMgY3VycmVudCBjb2x1bW4gbnVtYmVyCisJCQlzOm5ldHJ3X2xpbmUgYW5kIHM6bmV0cndfY29sIGFyZSB1c2VkIHRvCisJCQlyZXN0b3JlIHRoZSBjdXJzb3IgcG9zaXRpb24gb24gd3JpdGVzCiAKLQlQYXRocyB0byBmaWxlcyBhcmUgZ2VuZXJhbGx5IHVzZXItZGlyZWN0b3J5IHJlbGF0aXZlIGZvciBtb3N0IHByb3RvY29scy4KLQlJdCBpcyBwb3NzaWJsZSB0aGF0IHNvbWUgcHJvdG9jb2wgd2lsbCBtYWtlIHBhdGhzIHJlbGF0aXZlIHRvIHNvbWUKLQlhc3NvY2lhdGVkIGRpcmVjdG9yeSwgaG93ZXZlci4KKyAqZzpuZXRyd19mdHAqCQlpZiBpdCBkb2Vzbid0IGV4aXN0LCB1c2UgZGVmYXVsdCBmdHAKKwkJCT0wIHVzZSBkZWZhdWx0IGZ0cAkJICAgICAgICh1aWQgcGFzc3dvcmQpCisJCQk9MSB1c2UgYWx0ZXJuYXRlIGZ0cCBtZXRob2QJICAodXNlciB1aWQgcGFzc3dvcmQpCisJCQlJZiB5b3UncmUgaGF2aW5nIHRyb3VibGUgd2l0aCBmdHAsIHRyeSBjaGFuZ2luZyB0aGUKKwkJCXZhbHVlIG9mIHRoaXMgdmFyaWFibGUgdG8gc2VlIGlmIHRoZSBhbHRlcm5hdGUgZnRwCisJCQltZXRob2Qgd29ya3MgZm9yIHlvdXIgc2V0dXAuCiAKLQkJZXhhbXBsZTogIHZpbSBzY3A6Ly91c2VyQGhvc3Qvc29tZWZpbGUKLQkJZXhhbXBsZTogIHZpbSBzY3A6Ly91c2VyQGhvc3Qvc3ViZGlyMS9zdWJkaXIyL3NvbWVmaWxlCisgKmc6bmV0cndfZnRwbW9kZSoJPSJiaW5hcnkiCQkJCSAgICAoZGVmYXVsdCkKKwkJCT0iYXNjaWkiCiAKLQl3aGVyZSAic29tZWZpbGUiIGlzIHRoZSAidXNlciIncyBob21lIGRpcmVjdG9yeS4gIElmIHlvdSB3aXNoIHRvIGdldCBhCi0JZmlsZSB1c2luZyByb290LXJlbGF0aXZlIHBhdGhzLCB1c2UgdGhlIGZ1bGwgcGF0aDoKKyAqZzpuZXRyd19pZ25vcmVuZXRyYyoJPTAgKGRlZmF1bHQpCisgCQkJPTEgSWYgeW91IGhhdmUgYSA8Lm5ldHJjPiBmaWxlIGJ1dCBpdCBkb2Vzbid0IHdvcmsgYW5kCisJCQkgICB5b3Ugd2FudCBpdCBpZ25vcmVkLCB0aGVuIHNldCB0aGlzIHZhcmlhYmxlIGFzIHNob3duLgogCi0JCWV4YW1wbGU6ICB2aW0gc2NwOi8vdXNlckBob3N0Ly9zb21lZmlsZQotCQlleGFtcGxlOiAgdmltIHNjcDovL3VzZXJAaG9zdC8vc3ViZGlyMS9zdWJkaXIyL3NvbWVmaWxlCisgKmc6bmV0cndfdWlkKgkJKGZ0cCkgdXNlci1pZCwgICAgICByZXRhaW5lZCBvbiBhIHBlci1zZXNzaW9uIGJhc2lzCisgKmc6bmV0cndfcGFzc3dkKgkoZnRwKSBwYXNzd29yZCwgICAgIHJldGFpbmVkIG9uIGEgcGVyLXNlc3Npb24gYmFzaXMKIAorICpnOm5ldHJ3X3dpbjk1ZnRwKgk9MSBpZiB1c2luZyBXaW45NSwgd2lsbCByZW1vdmUgZm91ciB0cmFpbGluZyBibGFuaworCQkJICAgbGluZXMgdGhhdCBvL3MncyBmdHAgInByb3ZpZGVzIiBvbiB0cmFuc2ZlcnMKKwkJCT0wIGZvcmNlIG5vcm1hbCBmdHAgYmVoYXZpb3IgKG5vIHRyYWlsaW5nIGxpbmUgcmVtb3ZhbCkKKworICpnOm5ldHJ3X2N5Z3dpbioJPTEgYXNzdW1lIHNjcCB1bmRlciB3aW5kb3dzIGlzIGZyb20gY3lnd2luLiBBbHNvCisJCQkgICBwZXJtaXRzIG5ldHdvcmsgYnJvd3NpbmcgdG8gdXNlIGxzIHdpdGggdGltZSBhbmQKKwkJCSAgIHNpemUgc29ydGluZyAoZGVmYXVsdCBpZiB3aW5kb3dzKQorCQkJPTAgYXNzdW1lIFdpbmRvd3MnIHNjcCBhY2NlcHRzIHdpbmRvd3Mtc3R5bGUgcGF0aHMKKwkJCSAgIE5ldHdvcmsgYnJvd3NpbmcgdXNlcyBkaXIgaW5zdGVhZCBvZiBscworCQkJVGhpcyBvcHRpb24gaXMgaWdub3JlZCBpZiB5b3UncmUgdXNpbmcgdW5peAorCisgKmc6bmV0cndfdXNlX250X3JjcCoJPTAgZG9uJ3QgdXNlIHRoZSByY3Agb2YgV2luTlQsIFdpbjIwMDAgYW5kIFdpblhQCisJCQk9MSB1c2UgV2luTlQncyByY3AgaW4gYmluYXJ5IG1vZGUgICAgICAgICAoZGVmYXVsdCkKKworUEFUSFMJCQkJCQkJCSpuZXRydy1wYXRoKgorCitQYXRocyB0byBmaWxlcyBhcmUgZ2VuZXJhbGx5IHVzZXItZGlyZWN0b3J5IHJlbGF0aXZlIGZvciBtb3N0IHByb3RvY29scy4KK0l0IGlzIHBvc3NpYmxlIHRoYXQgc29tZSBwcm90b2NvbCB3aWxsIG1ha2UgcGF0aHMgcmVsYXRpdmUgdG8gc29tZQorYXNzb2NpYXRlZCBkaXJlY3RvcnksIGhvd2V2ZXIuCis+CisJZXhhbXBsZTogIHZpbSBzY3A6Ly91c2VyQGhvc3Qvc29tZWZpbGUKKwlleGFtcGxlOiAgdmltIHNjcDovL3VzZXJAaG9zdC9zdWJkaXIxL3N1YmRpcjIvc29tZWZpbGUKKzwKK3doZXJlICJzb21lZmlsZSIgaXMgdGhlICJ1c2VyIidzIGhvbWUgZGlyZWN0b3J5LiAgSWYgeW91IHdpc2ggdG8gZ2V0IGEKK2ZpbGUgdXNpbmcgcm9vdC1yZWxhdGl2ZSBwYXRocywgdXNlIHRoZSBmdWxsIHBhdGg6Cis+CisJZXhhbXBsZTogIHZpbSBzY3A6Ly91c2VyQGhvc3QvL3NvbWVmaWxlCisJZXhhbXBsZTogIHZpbSBzY3A6Ly91c2VyQGhvc3QvL3N1YmRpcjEvc3ViZGlyMi9zb21lZmlsZQorPAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDIuIE5ldHdvcmstT3JpZW50ZWQgRmlsZSBUcmFuc2ZlcgkJCQkqbmV0cncteGZlcioKQEAgLTM5MSw2ICszOTEsOSBAQAogCQllZmZlY3RpdmVseSByZW1vdmUgdGhlIHVzZXItaWQgYW5kIHBhc3N3b3JkIGJ5IHVzaW5nICIiCiAJCXN0cmluZ3MuCiAKKzpOZXRyd1NldHRpbmdzICBUaGlzIGNvbW1hbmQgaXMgZGVzcmliZWQgaW4gfG5ldHJ3LXNldHRpbmdzfCAtLSB1c2VkIHRvCisgICAgICAgICAgICAgICAgZGlzcGxheSBuZXRydyBzZXR0aW5ncyBhbmQgY2hhbmdlIG5ldHJ3IGJlaGF2aW9yCisKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiA2LiBWYXJpYWJsZXMgYW5kIE9wdGlvbnMgICAgICAgCQkJKm5ldHJ3LW9wdGlvbnMqICpuZXRydy12YXIqCkBAIC01OTYsNiArNTk5LDcgQEAKICAgICAgOlZleHBsb3JlWyFdIFtkaXJdIFZlcnRpY2FsIFNwbGl0ICYgRXhwbG9yZS4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWV4cGxvcmV8CiAgICAgIDpQZXhwbG9yZVshXSBbZGlyXSBWZXJ0aWNhbCBTcGxpdCAmIEV4cGxvcmUuLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1leHBsb3JlfAogICAgICA6TmV4cGxvcmVbIV0gW2Rpcl0gVmVydGljYWwgU3BsaXQgJiBFeHBsb3JlLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctZXhwbG9yZXwKKyAgICAgOk5ldHJ3U2V0dGluZ3MuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctc2V0dGluZ3N8CiAKIFFVSUNLIFJFRkVSRU5DRSBDT01NQU5EUyBUQUJMRSAgICAgCQkJKm5ldHJ3LWJyb3dzZS1jbWRzKgogPgpAQCAtNjI3LDEwNyArNjMxLDEwMiBAQAogCiBORVRSVyBCUk9XU0VSIFZBUklBQkxFUwkJCQkJKm5ldHJ3LWJyb3dzZS12YXIqCiA+Ci0JLS0tCQkJCS0tLS0tLS0tLS0tCi0JVmFyCQkJCUV4cGxhbmF0aW9uCi0JLS0tCQkJCS0tLS0tLS0tLS0tCi08CSpnOm5ldHJ3X2FsdG8qCQkJY2hhbmdlIGZyb20gYWJvdmUgc3BsaXR0aW5nIHRvCi0JCQkJCWJlbG93IHNwbGl0dGluZyBieSBzZXR0aW5nIHRoaXMKLQkJCQkJdmFyaWFibGUgKHNlZSB8bmV0cnctb3wpCi0JCQkJCSBkZWZhdWx0OiA9MAorICAgLS0tCQkJCS0tLS0tLS0tLS0tCisgICBWYXIJCQkJRXhwbGFuYXRpb24KKyAgIC0tLQkJCQktLS0tLS0tLS0tLQorPCAqZzpuZXRyd19hbHRvKgkJY2hhbmdlIGZyb20gYWJvdmUgc3BsaXR0aW5nIHRvIGJlbG93IHNwbGl0dGluZworCQkJCWJ5IHNldHRpbmcgdGhpcyB2YXJpYWJsZSAoc2VlIHxuZXRydy1vfCkKKwkJCQkgZGVmYXVsdDogPTAKIAotCSpnOm5ldHJ3X2FsdHYqCQkJY2hhbmdlIGZyb20gbGVmdCBzcGxpdHRpbmcgdG8KLQkJCQkJcmlnaHQgc3BsaXR0aW5nIGJ5IHNldHRpbmcgdGhpcwotCQkJCQl2YXJpYWJsZSAoc2VlIHxuZXRydy12fCkKLQkJCQkJIGRlZmF1bHQ6ID0wCisgICpnOm5ldHJ3X2FsdHYqCQljaGFuZ2UgZnJvbSBsZWZ0IHNwbGl0dGluZyB0byByaWdodCBzcGxpdHRpbmcKKyAJCQkJYnkgc2V0dGluZyB0aGlzIHZhcmlhYmxlIChzZWUgfG5ldHJ3LXZ8KQorCQkJCSBkZWZhdWx0OiA9MAogCi0JKmc6bmV0cndfZnRwX2Jyb3dzZV9yZWplY3QqCWZ0cCBjYW4gcHJvZHVjZSBhIG51bWJlciBvZiBlcnJvcnMKLQkJCQkJYW5kIHdhcm5pbmdzIHRoYXQgY2FuIHNob3cgdXAgYXMKLQkJCQkJImRpcmVjdG9yaWVzIiBhbmQgImZpbGVzIiBpbiB0aGUKLQkJCQkJbGlzdGluZy4gIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvCi0JCQkJCXJlbW92ZSBzdWNoIGVtYmVkZGVkIG1lc3NhZ2VzLiAgQnkKLQkJCQkJZGVmYXVsdCBpdHMgdmFsdWUgaXM6Ci0JCQkJCSAnXnRvdGFsXHNcK1xkXCskXHwKLQkJCQkJIF5Ucnlpbmdcc1wrXGRcKy4qJFx8Ci0JCQkJCSBeS0VSQkVST1NfVlxkIHJlamVjdGVkXHwKLQkJCQkJIF5TZWN1cml0eSBleHRlbnNpb25zIG5vdFx8Ci0JCQkJCSBObyBzdWNoIGZpbGVcfAotCQkJCQkgOiBjb25uZWN0IHRvIGFkZHJlc3MgWzAtOWEtZkEtRjpdKgotCQkJCQkgOiBObyByb3V0ZSB0byBob3N0JCcKKyAgKmc6bmV0cndfZnRwX2Jyb3dzZV9yZWplY3QqCWZ0cCBjYW4gcHJvZHVjZSBhIG51bWJlciBvZiBlcnJvcnMgYW5kIHdhcm5pbmdzCisJCQkJdGhhdCBjYW4gc2hvdyB1cCBhcyAiZGlyZWN0b3JpZXMiIGFuZCAiZmlsZXMiCisJCQkJaW4gdGhlIGxpc3RpbmcuICBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0bworCQkJCXJlbW92ZSBzdWNoIGVtYmVkZGVkIG1lc3NhZ2VzLiAgQnkgZGVmYXVsdCBpdHMKKwkJCQl2YWx1ZSBpczoKKwkJCQkgJ150b3RhbFxzXCtcZFwrJFx8CisJCQkJIF5Ucnlpbmdcc1wrXGRcKy4qJFx8CisJCQkJIF5LRVJCRVJPU19WXGQgcmVqZWN0ZWRcfAorCQkJCSBeU2VjdXJpdHkgZXh0ZW5zaW9ucyBub3RcfAorCQkJCSBObyBzdWNoIGZpbGVcfAorCQkJCSA6IGNvbm5lY3QgdG8gYWRkcmVzcyBbMC05YS1mQS1GOl0qCisJCQkJIDogTm8gcm91dGUgdG8gaG9zdCQnCiAKLQkqZzpuZXRyd19zc2hfYnJvd3NlX3JlamVjdCoJc3NoIGNhbiBzb21ldGltZXMgcHJvZHVjZSB1bndhbnRlZAotCQkJCQlsaW5lcy9tZXNzYWdlcy9iYW5uZXJzL2FuZCB3aGF0bm90Ci0JCQkJCXRoYXQgb25lIGRvZXNuJ3Qgd2FudCBtYXNxdWVyYWRpbmcKLQkJCQkJYXMgImRpcmVjdG9yaWVzIiBhbmQgImZpbGVzIi4gIFVzZQotCQkJCQl0aGlzIHBhdHRlcm4gdG8gcmVtb3ZlIHN1Y2ggZW1iZWRkZWQKLQkJCQkJbWVzc2FnZXMuICBCeSBkZWZhdWx0IGl0cyB2YWx1ZSBpczoKKyAgKmc6bmV0cndfc3NoX2Jyb3dzZV9yZWplY3QqCXNzaCBjYW4gc29tZXRpbWVzIHByb2R1Y2UgdW53YW50ZWQgbGluZXMsCisJCQkJbWVzc2FnZXMsIGJhbm5lcnMsIGFuZCB3aGF0bm90IHRoYXQgb25lIGRvZXNuJ3QKKwkJCQl3YW50IG1hc3F1ZXJhZGluZyBhcyAiZGlyZWN0b3JpZXMiIGFuZCAiZmlsZXMiLgorCQkJCVVzZSB0aGlzIHBhdHRlcm4gdG8gcmVtb3ZlIHN1Y2ggZW1iZWRkZWQKKwkJCQltZXNzYWdlcy4gIEJ5IGRlZmF1bHQgaXRzIHZhbHVlIGlzOgogIAkJCQkJICdedG90YWxcc1wrXGRcKyQnCiAKLQkqZzpuZXRyd19rZWVwZGlyKgkJPTEgKGRlZmF1bHQpIGtlZXAgY3VycmVudCBkaXJlY3RvcnkKLQkJCQkJaW1tdW5lIGZyb20gdGhlIGJyb3dzaW5nIGRpcmVjdG9yeS4KLQkJCQkJPTAga2VlcCB0aGUgY3VycmVudCBkaXJlY3RvcnkgdGhlCi0JCQkJCXNhbWUgYXMgdGhlIGJyb3dzaW5nIGRpcmVjdG9yeS4KLQkJCQkJVGhlIGJyb3dzaW5nIGRpcmVjdG9yeSBpcyBjb250YWluZWQgaW4KLQkJCQkJYjpuZXRyd19jdXJkaXIKKyAgKmc6bmV0cndfa2VlcGRpcioJCT0xIChkZWZhdWx0KSBrZWVwIGN1cnJlbnQgZGlyZWN0b3J5IGltbXVuZSBmcm9tCisJCQkJICAgdGhlIGJyb3dzaW5nIGRpcmVjdG9yeS4KKwkJCQk9MCBrZWVwIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB0aGUgc2FtZSBhcyB0aGUKKwkJCQkgICBicm93c2luZyBkaXJlY3RvcnkuCisJCQkJVGhlIGN1cnJlbnQgYnJvd3NpbmcgZGlyZWN0b3J5IGlzIGNvbnRhaW5lZCBpbgorCQkJCWI6bmV0cndfY3VyZGlyCiAKLQkqZzpuZXRyd19saXN0X2NtZCoJCWNvbW1hbmQgZm9yIGxpc3RpbmcgcmVtb3RlIGRpcmVjdG9yaWVzCi0JCQkJCSBkZWZhdWx0OiAoaWYgc3NoIGlzIGV4ZWN1dGFibGUpCi0JCQkJCSAgICAgICAgICAic3NoIEhPU1ROQU1FIGxzIC1GTGEiCisgICpnOm5ldHJ3X2xpc3RfY21kKgkJY29tbWFuZCBmb3IgbGlzdGluZyByZW1vdGUgZGlyZWN0b3JpZXMKKwkJCQkgZGVmYXVsdDogKGlmIHNzaCBpcyBleGVjdXRhYmxlKQorCQkJCSAgICAgICAgICAic3NoIEhPU1ROQU1FIGxzIC1GTGEiCiAKLQkqZzpuZXRyd19sb25nbGlzdCoJCWlmID0xLCB0aGVuIGxvbmcgbGlzdGluZyB3aWxsIGJlIGRlZmF1bHQKKyAgKmc6bmV0cndfbG9uZ2xpc3QqCQlpZiA9MSwgdGhlbiBsb25nIGxpc3Rpbmcgd2lsbCBiZSBkZWZhdWx0CiAKLQkqZzpuZXRyd19mdHBfbGlzdF9jbWQqCQlvcHRpb25zIGZvciBwYXNzaW5nIGFsb25nIHRvIGZ0cCBmb3IKLQkJCQkJZGlyZWN0b3J5IGxpc3RpbmcuICBEZWZhdWx0czoKLQkJCQkJIHVuaXggb3IgZzpuZXRyd19jeWd3aW4gc2V0OiA6ICJscyAtbEYiCi0JCQkJCSBvdGhlcndpc2UgICAgICAgICAgICAgICAgICAgICAiZGlyIgorICAqZzpuZXRyd19mdHBfbGlzdF9jbWQqCW9wdGlvbnMgZm9yIHBhc3NpbmcgYWxvbmcgdG8gZnRwIGZvciBkaXJlY3RvcnkKKwkJCQlsaXN0aW5nLiAgRGVmYXVsdHM6CisJCQkJIHVuaXggb3IgZzpuZXRyd19jeWd3aW4gc2V0OiA6ICJscyAtbEYiCisJCQkJIG90aGVyd2lzZSAgICAgICAgICAgICAgICAgICAgICJkaXIiCiAKLQkqZzpuZXRyd19saXN0X2hpZGUqCQljb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwYXR0ZXJucyBmb3IKLQkJCQkJaGlkaW5nIGZpbGVzCi0JCQkJCSBkZWZhdWx0OiAiIgorICAqZzpuZXRyd19saXN0X2hpZGUqCQljb21tYSBzZXBhcmF0ZWQgcGF0dGVybiBsaXN0IGZvciBoaWRpbmcgZmlsZXMKKwkJCQkgZGVmYXVsdDogIiIKIAotCSpnOm5ldHJ3X2xvY2FsX21rZGlyKgkJY29tbWFuZCBmb3IgbWFraW5nIGEgbG9jYWwgZGlyZWN0b3J5Ci0JCQkJCSBkZWZhdWx0OiAic3NoIEhPU1ROQU1FIG1rZGlyIgorICAqZzpuZXRyd19sb2NhbF9ta2RpcioJCWNvbW1hbmQgZm9yIG1ha2luZyBhIGxvY2FsIGRpcmVjdG9yeQorCQkJCSBkZWZhdWx0OiAic3NoIEhPU1ROQU1FIG1rZGlyIgogCi0JKmc6bmV0cndfbG9jYWxfcm1kaXIqCQlyZW1vdmUgZGlyZWN0b3J5IGNvbW1hbmQgKHJtZGlyKQotCQkJCQkgZGVmYXVsdDogInJtZGlyIgorICAqZzpuZXRyd19sb2NhbF9ybWRpcioJCXJlbW92ZSBkaXJlY3RvcnkgY29tbWFuZCAocm1kaXIpCisJCQkJIGRlZmF1bHQ6ICJybWRpciIKIAotCSpnOm5ldHJ3X21heGZpbGVuYW1lbGVuKgk9MzIgYnkgZGVmYXVsdCwgc2VsZWN0ZWQgc28gYXMgdG8gbWFrZQotCQkJCQlsb25nIGxpc3RpbmdzIGZpdCBvbiA4MCBjb2x1bW4gZGlzcGxheXMuCi0JCQkJCUlmIHlvdXIgc2NyZWVuIGlzIHdpZGVyLCBhbmQgeW91IGhhdmUKLQkJCQkJZmlsZS9kaXJlY3RvcnkgbmFtZXMgbG9uZ2VyIHRoYW4gMzIgYnl0ZXMsCi0JCQkJCXlvdSBtYXkgc2V0IHRoaXMgb3B0aW9uIHRvIGtlZXAgbGlzdGluZ3MKLQkJCQkJY29sdW1uYXIuCisgICpnOm5ldHJ3X21heGZpbGVuYW1lbGVuKgk9MzIgYnkgZGVmYXVsdCwgc2VsZWN0ZWQgc28gYXMgdG8gbWFrZSBsb25nCisJCQkJICAgIGxpc3RpbmdzIGZpdCBvbiA4MCBjb2x1bW4gZGlzcGxheXMuCisJCQkJSWYgeW91ciBzY3JlZW4gaXMgd2lkZXIsIGFuZCB5b3UgaGF2ZSBmaWxlCisJCQkJb3IgZGlyZWN0b3J5IG5hbWVzIGxvbmdlciB0aGFuIDMyIGJ5dGVzLAorCQkJCXlvdSBtYXkgc2V0IHRoaXMgb3B0aW9uIHRvIGtlZXAgbGlzdGluZ3MKKwkJCQljb2x1bW5hci4KIAotCSpnOm5ldHJ3X21rZGlyX2NtZCoJCWNvbW1hbmQgZm9yIG1ha2luZyBhIHJlbW90ZSBkaXJlY3RvcnkKLQkJCQkJIGRlZmF1bHQ6ICJzc2ggSE9TVE5BTUUgbWtkaXIiCisgICpnOm5ldHJ3X21rZGlyX2NtZCoJCWNvbW1hbmQgZm9yIG1ha2luZyBhIHJlbW90ZSBkaXJlY3RvcnkKKwkJCQkgZGVmYXVsdDogInNzaCBIT1NUTkFNRSBta2RpciIKIAotCSpnOm5ldHJ3X3JtX2NtZCoJCWNvbW1hbmQgZm9yIHJlbW92aW5nIGZpbGVzCi0JCQkJCSBkZWZhdWx0OiAic3NoIEhPU1ROQU1FIHJtIgorICAqZzpuZXRyd19ybV9jbWQqCQljb21tYW5kIGZvciByZW1vdmluZyBmaWxlcworCQkJCSBkZWZhdWx0OiAic3NoIEhPU1ROQU1FIHJtIgogCi0JKmc6bmV0cndfcm1kaXJfY21kKgkJY29tbWFuZCBmb3IgcmVtb3ZpbmcgZGlyZWN0b3JpZXMKLQkJCQkJIGRlZmF1bHQ6ICJzc2ggSE9TVE5BTUUgcm1kaXIiCisgICpnOm5ldHJ3X3JtZGlyX2NtZCoJCWNvbW1hbmQgZm9yIHJlbW92aW5nIGRpcmVjdG9yaWVzCisJCQkJIGRlZmF1bHQ6ICJzc2ggSE9TVE5BTUUgcm1kaXIiCiAKLQkqZzpuZXRyd19ybWZfY21kKgkJIGNvbW1hbmQgZm9yIHJlbW92aW5nIHNvZnRsaW5rcwotCQkJCQkgZGVmYXVsdDogInNzaCBIT1NUTkFNRSBybSAtZiIKKyAgKmc6bmV0cndfcm1mX2NtZCoJCSBjb21tYW5kIGZvciByZW1vdmluZyBzb2Z0bGlua3MKKwkJCQkgZGVmYXVsdDogInNzaCBIT1NUTkFNRSBybSAtZiIKIAotCSpnOm5ldHJ3X2hpZGUqCQkJaWYgdHJ1ZSwgdGhlIGhpZGluZyBsaXN0IGlzIHVzZWQKLQkJCQkJIGRlZmF1bHQ6ID0wCisgICpnOm5ldHJ3X2hpZGUqCQkJaWYgdHJ1ZSwgdGhlIGhpZGluZyBsaXN0IGlzIHVzZWQKKwkJCQkgZGVmYXVsdDogPTAKIAotCSpnOm5ldHJ3X3NvcnRfYnkqCQlzb3J0IGJ5ICJuYW1lIiwgInRpbWUiLCBvciAic2l6ZSIKLQkJCQkJIGRlZmF1bHQ6ICJuYW1lIgorICAqZzpuZXRyd19zb3J0X2J5KgkJc29ydCBieSAibmFtZSIsICJ0aW1lIiwgb3IgInNpemUiCisJCQkJIGRlZmF1bHQ6ICJuYW1lIgogCi0JKmc6bmV0cndfc29ydF9kaXJlY3Rpb24qCXNvcnRpbmcgZGlyZWN0aW9uOiAibm9ybWFsIiBvciAicmV2ZXJzZSIKLQkJCQkJIGRlZmF1bHQ6ICJub3JtYWwiCisgICpnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uKglzb3J0aW5nIGRpcmVjdGlvbjogIm5vcm1hbCIgb3IgInJldmVyc2UiCisJCQkJIGRlZmF1bHQ6ICJub3JtYWwiCiAKLQkqZzpuZXRyd19zb3J0X3NlcXVlbmNlKgkJd2hlbiBzb3J0aW5nIGJ5IG5hbWUsIGZpcnN0IHNvcnQgYnkgdGhlCi0JCQkJCWNvbW1hLXNlcGFyYXRlZCBwYXR0ZXJuIHNlcXVlbmNlCi0JCQkJCSBkZWZhdWx0OiAnW1wvXSQsKixcLmJhayQsXC5vJCxcLmgkLAotCQkJCQkgICAgICAgICAgIFwuaW5mbyQsXC5zd3AkLFwub2JqJCcKKyAgKmc6bmV0cndfc29ydF9zZXF1ZW5jZSoJd2hlbiBzb3J0aW5nIGJ5IG5hbWUsIGZpcnN0IHNvcnQgYnkgdGhlCisJCQkJY29tbWEtc2VwYXJhdGVkIHBhdHRlcm4gc2VxdWVuY2UKKwkJCQkgZGVmYXVsdDogJ1tcL10kLCosXC5iYWskLFwubyQsXC5oJCwKKwkJCQkgICAgICAgICAgIFwuaW5mbyQsXC5zd3AkLFwub2JqJCcKIAotCSpnOm5ldHJ3X3RpbWVmbXQqCQlzcGVjaWZ5IGZvcm1hdCBzdHJpbmcgdG8gc3RyZnRpbWUoKSAoJWMpCi0JCQkJCSBkZWZhdWx0OiAiJWMiCisgICpnOm5ldHJ3X3RpbWVmbXQqCQlzcGVjaWZ5IGZvcm1hdCBzdHJpbmcgdG8gc3RyZnRpbWUoKSAoJWMpCisJCQkJIGRlZmF1bHQ6ICIlYyIKIAotCSpnOm5ldHJ3X3dpbnNpemUqCQlzcGVjaWZ5IGluaXRpYWwgc2l6ZSBvZiBuZXcgby92IHdpbmRvd3MKLQkJCQkJIGRlZmF1bHQ6ICIiCisgICpnOm5ldHJ3X3dpbnNpemUqCQlzcGVjaWZ5IGluaXRpYWwgc2l6ZSBvZiBuZXcgby92IHdpbmRvd3MKKwkJCQkgZGVmYXVsdDogIiIKIAogSU5UUk9EVUNUSU9OIFRPIERJUkVDVE9SWSBCUk9XU0lORwkJCSpuZXRydy1icm93c2UtaW50cm8qCiAKQEAgLTEwMTEsMTIgKzEwMTAsMjAgQEAKIENVU1RPTUlaSU5HIEJST1dTSU5HIFdJVEggQSBVU0VSIEZVTkNUSU9OCQkqbmV0cncteCogKm5ldHJ3LWhhbmRsZXIqCiAKIE9uZSBtYXkgImVudGVyIiBhIGZpbGUgd2l0aCBhIHNwZWNpYWwgaGFuZGxlciwgdGhlcmVieSBmaXJpbmcgdXAgYSBicm93c2VyIG9yCi1vdGhlciBhcHBsaWNhdGlvbiwgZm9yIGV4YW1wbGUsIG9uIGEgZmlsZSBieSBoaXR0aW5nIHRoZSAieCIga2V5LiAgUHJlc3VtYWJseQotb25lIGNvdWxkIHdyaXRlIGhhbmRsZXJzIHRoYXQgd291bGQgc3RhcnQgT3Blbk9mZmljZSBwcm9ncmFtcyAob293cml0ZXIpLCBldGMsCi1iYXNlZCBvbiB0aGUgZmlsZSdzIGV4dGVuc2lvbiBjb3VwbGVkIHdpdGggdGhlIHVzZXIncyBoaXR0aW5nIHRoZSAieCIga2V5IGF0b3AKLXRoZSBmaWxlLgorb3RoZXIgYXBwbGljYXRpb24sIGZvciBleGFtcGxlLCBvbiBhIGZpbGUgYnkgaGl0dGluZyB0aGUgIngiIGtleS4gIFRoZSBzcGVjaWFsCitoYW5kbGVyIHZhcmllczoKIAotVGhlIE5ldHJ3IGV4ZWN1dG9yIGFwcGxpZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gdG8gYSBmaWxlLCBiYXNlZCBvbiBpdHMKKyAgKiBmb3IgV2luZG93cyAzMiBvciA2NCwgdGhlIHVybCBhbmQgRmlsZVByb3RvY29sSGFuZGxlciBkbGxzIGFyZSB1c2VkLiAgCisgICogZm9yIEtERSAod2l0aCBrZm1jbGllbnQpOiBrZm1jbGllbnQgaXMgdXNlZC4KKyAgKiBmb3IgR25vbWUgKHdpdGggZ25vbWUtb3Blbik6IGdub21lLW9wZW4gaXMgdXNlZC4KKyAgKiBvdGhlcndpc2UgdGhlIE5ldHJ3RmlsZUhhbmRsZXIgcGx1Z2luIGlzIHVzZWQuCisKK1RoZSBmaWxlJ3Mgc3VmZml4IGlzIHVzZWQgYnkgdGhlc2UgdmFyaW91cyBhcHByb2FjaGVzIHRvIGRldGVybWluZSBhbgorYXBwcm9wcmlhdGUgYXBwbGljYXRpb24gdG8gdXNlIHRvICJoYW5kbGUiIHRoZXNlIGZpbGVzLiAgU3VjaCB0aGluZ3MKK2FzIE9wZW5PZmZpY2UgKCouc2Z4KSwgdmlzdWFsaXphdGlvbiAoKi5qcGcsICouZ2lmLCBldGMpLCBhbmQgUG9zdFNjcmlwdAorKCoucHMsICouZXBzKSBjYW4gYmUgaGFuZGxlZC4KKworVGhlIE5ldHJ3RmlsZUhhbmRsZXIgYXBwbGllcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiB0byBhIGZpbGUsIGJhc2VkIG9uIGl0cwogZXh0ZW5zaW9uLiAgT2YgY291cnNlLCB0aGUgaGFuZGxlciBmdW5jdGlvbiBtdXN0IGV4aXN0IGZvciBpdCB0byBiZSBjYWxsZWQhCiA+CiAgRXguIG15cGdtLmh0bWwgICB4IC0+CkBAIC0xMDI1LDYgKzEwMzIsMTEgQEAKIFNlZSB0aGUgPHBsdWdpbi9OZXRyd0ZpbGVIYW5kbGVycy52aW0+IGZvciBhbiBleGFtcGxlIG9mIGhvdyB0byBoYW5kbGUgYW4gaHRtbAogZmlsZSB3aXRoIG1vemlsbGEuCiAKK09uZSBtYXkgd3JpdGUgY3VzdG9tIE5ldHJ3RmlsZUhhbmRsZXJzOyBwbGVhc2UgbG9vayBhdCB0aGUKK3BsdWdpbi9OZXRyd0ZpbGVIYW5kbGVycy52aW0gc2NyaXB0IGZvciBleGFtcGxlcy4gIElmIGl0cyBsaWtlbHkgdG8gYmUKK2dlbmVyYWxseSB1c2VmdWwsIHBsZWFzZSBmZWVsIGZyZWUgdG8gZm9yd2FyZCBhIGNvcHkgdG8gbWUgZm9yIGZ1dHVyZQoraW5jbHVzaW9uIGluIHRoZSBkaXN0cmlidXRpb24uCisKIAogTUFLSU5HIFRIRSBCUk9XU0lORyBESVJFQ1RPUlkgVEhFIENVUlJFTlQgRElSRUNUT1JZCSpuZXRydy1jKiAqbmV0cnctY3VyZGlyKgogCkBAIC0xMDc4LDYgKzEwOTAsMTYgQEAKIHRoZSBhc3NvY2lhdGVkIHNlY3VyaXR5IGlzc3Vlcy4KIAogCitORVRSVyBTRVRUSU5HUwkJCQkJCSpuZXRydy1zZXR0aW5ncyoKKworV2l0aCB0aGUgTmV0cndTZXR0aW5ncy52aW0gcGx1Z2luLCA+CisJOk5ldHJ3U2V0dGluZ3MKK3dpbGwgYnJpbmcgdXAgYSB3aW5kb3cgd2l0aCB0aGUgbWFueSB2YXJpYWJsZXMgdGhhdCBuZXRydyB1c2VzIGZvciBpdHMKK3NldHRpbmdzLiAgWW91IG1heSBjaGFuZ2UgYW55IG9mIHRoZWlyIHZhbHVlczsgd2hlbiB5b3Ugc2F2ZSB0aGUgZmlsZSwKK3RoZSBzZXR0aW5ncyB0aGVyZWluIHdpbGwgYmUgdXNlZC4gIE9uZSBtYXkgYWxzbyBwcmVzcyAiPyIgb24gYW55IG9mCit0aGUgbGluZXMgZm9yIGhlbHAgb24gd2hhdCBlYWNoIG9mIHRoZSB2YXJpYWJsZXMgZG8uCisKKwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiA4LiBQcm9ibGVtcyBhbmQgRml4ZXMJCQkJCQkqbmV0cnctcHJvYmxlbXMqCiAKQEAgLTExOTUsNiArMTIxNywxMyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAxMC4gSGlzdG9yeQkJCQkJCSpuZXRydy1oaXN0b3J5KgogCisJdjYzOiAqIG5ldHJ3IG5vdyB0YWtlcyBhZHZhbnRhZ2Ugb2YgYXV0b2xvYWQgKGFuZCByZXF1aXJlcyA3LjApCisJICAgICAqIEJ1Z2ZpeCAtIHVzaW5nIHIgKHRvIHJldmVyc2Ugc29ydCkgd29ya2luZyBhZ2FpbgorCXY2MjogKiBCdWdmaXggLSBzcGFjZXMgYWxsb3dlZCBhZ2FpbiBpbiBkaXJlY3RvcnkgbmFtZXMgd2l0aAorCSAgICAgICBnOm5ldHJ3X2tlZXBkaXI9MC4gIEluIGZhY3QsIEkndmUgdGVzdGVkIG5ldHJ3IChhZ2FpbikKKwkgICAgICAgd2l0aCBtb3N0IEFOU0kgcHVuY3R1YXRpb24gbWFya3MgZm9yIGRpcmVjdG9yeSBuYW1lcy4KKwkgICAgICogQnVnZml4IC0gTmV0cndTZXR0aW5ncyBnYXZlIGVycm9ycyB3aGVuIGc6bmV0cndfc2lsZW50CisJICAgICAgIGhhZCBub3QgYmUgc2V0LgogCXY2MTogKiBkb2N1bWVudCB1cGdyYWRlIC0tIG5ldHJ3IHZhcmlhYmxlLWJhc2VkIHNldHRpbmdzIGFsbCBzaG91bGQKIAkgICAgICAgaGF2ZSB0YWdzLiAgU3VwcG9ydHMgTmV0cndTZXR0aW5ncyBjb21tYW5kLgogCSAgICAgKiBzZXZlcmFsIGltcG9ydGFudCB2YXJpYWJsZXMgYXJlIHdpbmRvdy1vcmllbnRlZC4gIE5ldHJ3IGhhcwpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvc3BlbGwudHh0IGIvcnVudGltZS9kb2Mvc3BlbGwudHh0CmluZGV4IDA1MjUyOTEuLjkyOWMxMDYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3NwZWxsLnR4dAorKysgYi9ydW50aW1lL2RvYy9zcGVsbC50eHQKQEAgLTEsNCArMSw0IEBACi0qc3BlbGwudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBBdWcgMTUKKypzcGVsbC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEF1ZyAxNgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xOTUsNiArMTk1LDcgQEAKICdzcGVsbGZpbGUnIGFyZSBvbmx5IHVzZWQgd2hlbiBhbGwgZW50cmllcyBpbiAic3BlbGxsYW5nIiBzcGVjaWZ5IHRoZSBzYW1lCiByZWdpb24gKG5vdCBjb3VudGluZyBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlaXIgLnNwbCBuYW1lKS4KIAorCQkJCQkJCSpzcGVsbC1nZXJtYW4qCiBTcGVjaWZpYyBleGNlcHRpb246IEZvciBHZXJtYW4gdGhlc2Ugc3BlY2lhbCByZWdpb25zIGFyZSB1c2VkOgogCWRlCQlhbGwgR2VybWFuIHdvcmRzIGFjY2VwdGVkCiAJZGVfZGUJCW9sZCBhbmQgbmV3IHNwZWxsaW5nCkBAIC0yMDMsNiArMjA0LDE2IEBACiAJZGVfYXQJCUF1c3RyaWEKIAlkZV9jaAkJU3dpdHplcmxhbmQKIAorCQkJCQkJCSpzcGVsbC15aWRkaXNoKgorWWlkZGlzaCByZXF1aXJlcyB1c2luZyAidXRmLTgiIGVuY29kaW5nLCBiZWNhdXNlIG9mIHRoZSBzcGVjaWFsIGNoYXJhY3RlcnMKK3VzZWQuICBJZiB5b3UgYXJlIHVzaW5nIGxhdGluMSBWaW0gd2lsbCB1c2UgdHJhbnNsaXRlcmF0ZWQgKHJvbWFuaXplZCkgWWlkZGlzaAoraW5zdGVhZC4gIElmIHlvdSB3YW50IHRvIHVzZSB0cmFuc2xpdGVyYXRlZCBZaWRkaXNoIHdpdGggdXRmLTggdXNlICJ5aS10ciIuCitJbiBhIHRhYmxlOgorCSdlbmNvZGluZycJJ3NwZWxsbGFuZycKKwl1dGYtOAkJeWkJCVlpZGRpc2gKKwlsYXRpbjEJCXlpCQl0cmFuc2xpdGVyYXRlZCBZaWRkaXNoCisJdXRmLTgJCXlpLXRyCQl0cmFuc2xpdGVyYXRlZCBZaWRkaXNoCisKIAogU1BFTEwgRklMRVMJCQkJCQkqc3BlbGwtbG9hZCoKIApAQCAtOTAxLDkgKzkxMiwxMSBAQAogYnkgcmVtb3ZpbmcgYSBmZXcgbGV0dGVycywgaW5zZXJ0aW5nIHNvbWV0aGluZyBvciBib3RoLiAgSXQgY2FuIGFsc28gYmUgdXNlZnVsCiB0byByZXN0cmljdCBjb25jYXRlbmF0aW9uIHRvIHdvcmRzIHRoYXQgbWF0Y2ggYSBwYXR0ZXJuLiAgRm9yIHRoaXMgcHVycG9zZSBDTVAKIGl0ZW1zIGNhbiBiZSB1c2VkLiAgVGhleSBsb29rIGxpa2UgdGhpczoKLQlDTVAge2ZsYWd9IHtzdHJpcH0ge2FkZH0ge2NvbmR9IHtjb25kMn0KKwlDTVAge2ZsYWd9IHtmbGFnc30ge3N0cmlwfSB7YWRkfSB7Y29uZH0ge2NvbmQyfQogCiAJe2ZsYWd9CQl0aGUgZmxhZywgYXMgdXNlZCBpbiBDT01QT1VOREZMQUdTIGZvciB0aGUgbGVhZCB3b3JkCisJe2ZsYWdzfQkJYWNjZXB0ZWQgZmxhZ3MgZm9yIHRoZSBmb2xsb3dpbmcgd29yZCAoJy4nIHRvIGFjY2VwdAorCQkJYWxsKQogCXtzdHJpcH0JCXRleHQgdG8gcmVtb3ZlIGZyb20gdGhlIGVuZCBvZiB0aGUgbGVhZCB3b3JkICh6ZXJvCiAJCQlmb3Igbm8gc3RyaXBwaW5nKQogCXthZGR9CQl0ZXh0IHRvIGluc2VydCBiZXR3ZWVuIHRoZSB3b3JkcyAoemVybyBmb3Igbm8KQEAgLTkxMSw5ICs5MjQsOSBAQAogCXtjb25kfQkJY29uZGl0aW9uIHRvIG1hdGNoIGF0IHRoZSBlbmQgb2YgdGhlIGxlYWQgd29yZAogCXtjb25kMn0JCWNvbmRpdGlvbiB0byBtYXRjaCBhdCB0aGUgc3RhcnQgb2YgdGhlIGZvbGxvd2luZyB3b3JkCiAKLVRoaXMgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyB3aGF0IGlzIHVzZWQgZm9yIFNGWCBhbmQgUEZYIGl0ZW1zLCBleGNlcHQgdGhlcmUKLWlzIGFuIGV4dHJhIGNvbmRpdGlvbi4gIEV4YW1wbGU6Ci0JQ01QIGYgMCAtIC4gLiB+CitUaGlzIGlzIHRoZSBzYW1lIGFzIHdoYXQgaXMgdXNlZCBmb3IgU0ZYIGFuZCBQRlggaXRlbXMsIHdpdGggdGhlIGV4dHJhIHtmbGFnc30KK2FuZCB7Y29uZDJ9IGZpZWxkcy4gIEV4YW1wbGU6CisJQ01QIGYgbXJ0IDAgLSAuIC4gfgogCiBXaGVuIHVzZWQgd2l0aCB0aGUgZm9vZCBhbmQgZGlzaCB3b3JkIGxpc3QgYWJvdmUsIHRoaXMgbWVhbnMgdGhhdCBhIGRhc2ggaXMKIGluc2VydGVkIGFmdGVyIGVhY2ggZm9vZCBpdGVtLiAgVGh1cyB5b3UgZ2V0ICJvbmlvbi1zb3VwIiBhbmQKQEAgLTkyNCw3ICs5MzcsNyBAQAogCiBXaGVuIHRoZXJlIGFyZSBubyBDTVAgaXRlbXMgZm9yIGEgY29tcG91bmQgZmxhZywgdGhlbiBhbGwgd29yZHMgd2lsbCBiZQogY29uY2F0ZW5hdGVkLCBhcyBpZiB0aGVyZSB3YXMgYW4gaXRlbToKLQlDTVAge2ZsYWd9IDAgMCAuIC4KKwlDTVAge2ZsYWd9IC4gMCAwIC4gLgogCiAKIFJFUExBQ0VNRU5UUwkJCQkJCSpzcGVsbC1hZmZpeC1SRVAqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90YWdzIGIvcnVudGltZS9kb2MvdGFncwppbmRleCAxOGY2MDg4Li4xMThlMzI0IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWdzCisrKyBiL3J1bnRpbWUvZG9jL3RhZ3MKQEAgLTE4MjcsNiArMTgyNyw3IEBACiA6Y29tbWFuZAltYXAudHh0CS8qOmNvbW1hbmQqCiA6Y29tbWFuZC1jb21wbGV0aW9uCW1hcC50eHQJLyo6Y29tbWFuZC1jb21wbGV0aW9uKgogOmNvbW1hbmQtY29tcGxldGlvbi1jdXN0b20JbWFwLnR4dAkvKjpjb21tYW5kLWNvbXBsZXRpb24tY3VzdG9tKgorOmNvbW1hbmQtdmVyYm9zZQltYXAudHh0CS8qOmNvbW1hbmQtdmVyYm9zZSoKIDpjb21tZW50CWV2YWwudHh0CS8qOmNvbW1lbnQqCiA6Y29tcAlxdWlja2ZpeC50eHQJLyo6Y29tcCoKIDpjb21waWxlcglxdWlja2ZpeC50eHQJLyo6Y29tcGlsZXIqCkBAIC0xOTgyLDYgKzE5ODMsNyBAQAogOmZvcglldmFsLnR4dAkvKjpmb3IqCiA6ZnUJZXZhbC50eHQJLyo6ZnUqCiA6ZnVuY3Rpb24JZXZhbC50eHQJLyo6ZnVuY3Rpb24qCis6ZnVuY3Rpb24tdmVyYm9zZQlldmFsLnR4dAkvKjpmdW5jdGlvbi12ZXJib3NlKgogOmcJcmVwZWF0LnR4dAkvKjpnKgogOmdsb2JhbAlyZXBlYXQudHh0CS8qOmdsb2JhbCoKIDpnbwltb3Rpb24udHh0CS8qOmdvKgpAQCAtNTAwNiw2ICs1MDA4LDcgQEAKIGc6bmV0cndfZnRwbW9kZQlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2Z0cG1vZGUqCiBnOm5ldHJ3X2hpZGUJcGlfbmV0cncudHh0CS8qZzpuZXRyd19oaWRlKgogZzpuZXRyd19odHRwX2NtZAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2h0dHBfY21kKgorZzpuZXRyd19pZ25vcmVuZXRyYwlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2lnbm9yZW5ldHJjKgogZzpuZXRyd19rZWVwZGlyCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfa2VlcGRpcioKIGc6bmV0cndfbGlzdF9jbWQJcGlfbmV0cncudHh0CS8qZzpuZXRyd19saXN0X2NtZCoKIGc6bmV0cndfbGlzdF9oaWRlCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfbGlzdF9oaWRlKgpAQCAtNTIwOCw2ICs1MjExLDcgQEAKIGhlYnJldy50eHQJaGVicmV3LnR4dAkvKmhlYnJldy50eHQqCiBoZWxwCXZhcmlvdXMudHh0CS8qaGVscCoKIGhlbHAtY29udGV4dAloZWxwLnR4dAkvKmhlbHAtY29udGV4dCoKK2hlbHAtdGFncwl0YWdzCTEKIGhlbHAtdHJhbnNsYXRlZAl2YXJpb3VzLnR4dAkvKmhlbHAtdHJhbnNsYXRlZCoKIGhlbHAteHRlcm0td2luZG93CXZhcmlvdXMudHh0CS8qaGVscC14dGVybS13aW5kb3cqCiBoZWxwLnR4dAloZWxwLnR4dAkvKmhlbHAudHh0KgpAQCAtNTc5MCw2ICs1Nzk0LDcgQEAKIG5ldHJ3LWJyb3dzZS12YXIJcGlfbmV0cncudHh0CS8qbmV0cnctYnJvd3NlLXZhcioKIG5ldHJ3LWMJcGlfbmV0cncudHh0CS8qbmV0cnctYyoKIG5ldHJ3LWNhZGF2ZXIJcGlfbmV0cncudHh0CS8qbmV0cnctY2FkYXZlcioKK25ldHJ3LWNoZ3VwCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWNoZ3VwKgogbmV0cnctY29udGVudHMJcGlfbmV0cncudHh0CS8qbmV0cnctY29udGVudHMqCiBuZXRydy1jcglwaV9uZXRydy50eHQJLypuZXRydy1jcioKIG5ldHJ3LWNyZWRpdHMJcGlfbmV0cncudHh0CS8qbmV0cnctY3JlZGl0cyoKQEAgLTU3OTksNiArNTgwNCw3IEBACiBuZXRydy1kZWJ1ZwlwaV9uZXRydy50eHQJLypuZXRydy1kZWJ1ZyoKIG5ldHJ3LWRlbGV0ZQlwaV9uZXRydy50eHQJLypuZXRydy1kZWxldGUqCiBuZXRydy1kaXIJcGlfbmV0cncudHh0CS8qbmV0cnctZGlyKgorbmV0cnctZGlybGlzdAlwaV9uZXRydy50eHQJLypuZXRydy1kaXJsaXN0KgogbmV0cnctZG93bmRpcglwaV9uZXRydy50eHQJLypuZXRydy1kb3duZGlyKgogbmV0cnctZWRpdGhpZGUJcGlfbmV0cncudHh0CS8qbmV0cnctZWRpdGhpZGUqCiBuZXRydy1leAlwaV9uZXRydy50eHQJLypuZXRydy1leCoKQEAgLTU4NDYsNiArNTg1Miw3IEBACiBuZXRydy1yZW5hbWUJcGlfbmV0cncudHh0CS8qbmV0cnctcmVuYW1lKgogbmV0cnctcmV2ZXJzZQlwaV9uZXRydy50eHQJLypuZXRydy1yZXZlcnNlKgogbmV0cnctcwlwaV9uZXRydy50eHQJLypuZXRydy1zKgorbmV0cnctc2V0dGluZ3MJcGlfbmV0cncudHh0CS8qbmV0cnctc2V0dGluZ3MqCiBuZXRydy1zZXhwbG9yZQlwaV9uZXRydy50eHQJLypuZXRydy1zZXhwbG9yZSoKIG5ldHJ3LXNvcnQJcGlfbmV0cncudHh0CS8qbmV0cnctc29ydCoKIG5ldHJ3LXNvcnRzZXF1ZW5jZQlwaV9uZXRydy50eHQJLypuZXRydy1zb3J0c2VxdWVuY2UqCkBAIC02Mzc1LDYgKzYzODIsNyBAQAogc3BlY2lhbC1idWZmZXJzCXdpbmRvd3MudHh0CS8qc3BlY2lhbC1idWZmZXJzKgogc3BlZWQtdXAJdGlwcy50eHQJLypzcGVlZC11cCoKIHNwZWxsCXNwZWxsLnR4dAkvKnNwZWxsKgorc3BlbGwtQ01QCXNwZWxsLnR4dAkvKnNwZWxsLUNNUCoKIHNwZWxsLUNPTVBPVU5ERkxBRwlzcGVsbC50eHQJLypzcGVsbC1DT01QT1VOREZMQUcqCiBzcGVsbC1DT01QT1VOREZMQUdTCXNwZWxsLnR4dAkvKnNwZWxsLUNPTVBPVU5ERkxBR1MqCiBzcGVsbC1DT01QT1VORE1JTglzcGVsbC50eHQJLypzcGVsbC1DT01QT1VORE1JTioKQEAgLTYzOTgsNyArNjQwNiw5IEBACiBzcGVsbC1hZmZpeC1tYnl0ZQlzcGVsbC50eHQJLypzcGVsbC1hZmZpeC1tYnl0ZSoKIHNwZWxsLWFmZml4LXZpbQlzcGVsbC50eHQJLypzcGVsbC1hZmZpeC12aW0qCiBzcGVsbC1kaWMtZm9ybWF0CXNwZWxsLnR4dAkvKnNwZWxsLWRpYy1mb3JtYXQqCitzcGVsbC1kb3VibGUtc2NvcmluZwlzcGVsbC50eHQJLypzcGVsbC1kb3VibGUtc2NvcmluZyoKIHNwZWxsLWZpbGUtZm9ybWF0CXNwZWxsLnR4dAkvKnNwZWxsLWZpbGUtZm9ybWF0Kgorc3BlbGwtZ2VybWFuCXNwZWxsLnR4dAkvKnNwZWxsLWdlcm1hbioKIHNwZWxsLWxvYWQJc3BlbGwudHh0CS8qc3BlbGwtbG9hZCoKIHNwZWxsLW1pZHdvcmQJc3BlbGwudHh0CS8qc3BlbGwtbWlkd29yZCoKIHNwZWxsLW1rc3BlbGwJc3BlbGwudHh0CS8qc3BlbGwtbWtzcGVsbCoKQEAgLTY0MDYsNiArNjQxNiw3IEBACiBzcGVsbC1yZW1hcmtzCXNwZWxsLnR4dAkvKnNwZWxsLXJlbWFya3MqCiBzcGVsbC1zeW50YXgJc3BlbGwudHh0CS8qc3BlbGwtc3ludGF4Kgogc3BlbGwtd29yZGxpc3QtZm9ybWF0CXNwZWxsLnR4dAkvKnNwZWxsLXdvcmRsaXN0LWZvcm1hdCoKK3NwZWxsLXlpZGRpc2gJc3BlbGwudHh0CS8qc3BlbGwteWlkZGlzaCoKIHNwZWxsLnR4dAlzcGVsbC50eHQJLypzcGVsbC50eHQqCiBzcGVsbGJhZHdvcmQoKQlldmFsLnR4dAkvKnNwZWxsYmFkd29yZCgpKgogc3BlbGxzdWdnZXN0KCkJZXZhbC50eHQJLypzcGVsbHN1Z2dlc3QoKSoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RvZG8udHh0IGIvcnVudGltZS9kb2MvdG9kby50eHQKaW5kZXggMWY4MmVjYy4uMjQzNDkyMyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdG9kby50eHQKKysrIGIvcnVudGltZS9kb2MvdG9kby50eHQKQEAgLTEsNCArMSw0IEBACi0qdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgQXVnIDE1CisqdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgQXVnIDE2CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTMxLDkgKzMxLDExIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBLbm93biBidWdzIGFuZCBjdXJyZW50IHdvcmsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogU3BlbGxpbmc6Ci0tIHN1Z2dlc3Rpb25zIGZvciBjb21wb3VuZCB3b3Jkcy4KLS0gSW1wbGVtZW50IG11bHRpcGxlIGZsYWdzIGZvciBjb21wb3VuZCB3b3Jkcy4gIEF3YWl0IGNvbW1lbnRzIGZyb20gb3RoZXIKLSAgc3BlbGwgY2hlY2tpbmcgYXV0aG9ycy4KKy0gUHJlZmVyIFNwZWxsQmFkIG92ZXIgU3BlbGxDYXAgaGlnaGxpZ2h0aW5nLgorLSBBZGQgbGltaXQgZm9yIG51bWJlciBvZiBzdWdnZXN0aW9ucyB0byAnc3BlbGxzdWdnZXN0Jz8KKy0gQ1RSTC1YIHMgaW4gSW5zZXJ0IG1vZGU6IG1vdmUgY3Vyc29yIGJhY2sgdG8gYWZ0ZXIgYmFkbHkgc3BlbGxlZCB3b3JkPworLSBJbXBsZW1lbnQgbXVsdGlwbGUgZmxhZ3MgZm9yIGNvbXBvdW5kIHdvcmRzIGFuZCBDTVAgaXRlbS4KKyAgQXdhaXQgY29tbWVudHMgZnJvbSBvdGhlciBzcGVsbCBjaGVja2luZyBhdXRob3JzLgogCiBNYWMgdW5pY29kZSBwYXRjaCAoRGEgV29vbiBKdW5nKToKIC0gc2VsZWN0aW5nIHByb3BvcnRpb25hbCBmb250IGJyZWFrcyBkaXNwbGF5CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKaW5kZXggYTFjNTM3Zi4uZGNlNTFiZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBBdWcgMTUKKyp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBBdWcgMTYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTU2MSw4ICs1NjEsOCBAQAogCiBXaGVuICd2ZXJib3NlJyBpcyBzZXQgdGhlIG91dHB1dCBvZiAiOmhpZ2hsaWdodCIgd2lsbCBzaG93IHdoZXJlIGEgaGlnaGxpZ2h0CiBpdGVtIHdhcyBsYXN0IHNldC4KLVdoZW4gJ3ZlcmJvc2UnIGlzIHNldCB0aGUgb3V0cHV0IG9mICI6bWFwIiB3aWxsIHNob3cgd2hlcmUgYSBrZXkgbWFwIHdhcwotbGFzdCBkZWZpbmVkLiAoWWVnYXBwYW4gTGFrc2htYW5hbikKK1doZW4gJ3ZlcmJvc2UnIGlzIHNldCB0aGUgb3V0cHV0IG9mICI6bWFwIiwgIjpjb21tYW5kIiBhbmQgIjpmdW5jdGlvbiIKK2NvbW1hbmRzIHdpbGwgc2hvdyB3aGVyZSBpdCB3YXMgbGFzdCBkZWZpbmVkLiAoWWVnYXBwYW4gTGFrc2htYW5hbikKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBJTVBST1ZFTUVOVFMJCQkJCQkqaW1wcm92ZW1lbnRzLTcqCkBAIC0xMjkyLDQgKzEyOTIsOSBAQAogYW5kICdlbmNvZGluZycgaXMgInV0Zi04IiB3b3VsZCBtYXRjaCB0aGUgcGF0dGVybiBqdXN0IGJlZm9yZSBpdCBpbmNvcnJlY3RseS4KIEFmZmVjdGVkIHNlYXJjaHBhaXIoJy9cKicsICcnLCAnXCovJykuCiAKK0ZvciB0aGUgRmluZC9SZXBsYWNlIGRpYWxvZyBpdCB3YXMgcG9zc2libGUgdGhhdCBub3QgZmluZGluZyB0aGUgdGV4dCByZXN1bHRlZAoraW4gYW4gZXJyb3IgbWVzc2FnZSB3aGlsZSByZWRyYXdpbmcsIHdoaWNoIGNsZWFyZWQgdGhlIHN5bnRheCBoaWdobGlnaHRpbmcKK3doaWxlIGl0IHdhcyBiZWluZyB1c2VkLCByZXN1bHRpbmcgaW4gYSBjcmFzaC4gIE5vdyBkb24ndCBjbGVhciBzeW50YXgKK2hpZ2hsaWdodGluZywgZGlzYWJsZSBpdCB3aXRoIGJfc3luX2Vycm9yLgorCiAgdmltOnR3PTc4OnRzPTg6ZnQ9aGVscDpub3JsOgpkaWZmIC0tZ2l0IGEvcnVudGltZS9maWxldHlwZS52aW0gYi9ydW50aW1lL2ZpbGV0eXBlLnZpbQppbmRleCA1NjBjNDc5Li45NmMwNmU0IDEwMDY0NAotLS0gYS9ydW50aW1lL2ZpbGV0eXBlLnZpbQorKysgYi9ydW50aW1lL2ZpbGV0eXBlLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIHN1cHBvcnQgZmlsZSB0byBkZXRlY3QgZmlsZSB0eXBlcwogIgogIiBNYWludGFpbmVyOglCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgotIiBMYXN0IENoYW5nZToJMjAwNSBBdWcgMTUKKyIgTGFzdCBDaGFuZ2U6CTIwMDUgQXVnIDE2CiAKICIgTGlzdGVuIHZlcnkgY2FyZWZ1bGx5LCBJIHdpbGwgc2F5IHRoaXMgb25seSBvbmNlCiBpZiBleGlzdHMoImRpZF9sb2FkX2ZpbGV0eXBlcyIpCkBAIC0xODMzLDcgKzE4MzMsNyBAQAogZnVuISBzOkZUeSgpCiAgIGxldCBuID0gMQogICB3aGlsZSBuIDwgMTAgJiYgbiA8IGxpbmUoIiQiKQotICAgIGlmIGdldGxpbmUobikgPX4gJ15ccypcKCNcfGNsYXNzXD5cKScKKyAgICBpZiBnZXRsaW5lKG4pID1+ICdeXHMqXCgjXHxjbGFzc1w+XCknICYmIGdldGxpbmUobikgIX4gJ15ccyojXHMqaW5jbHVkZScKICAgICAgIHNldGYgcmFjYwogICAgICAgcmV0dXJuCiAgICAgZW5kaWYKZGlmZiAtLWdpdCBhL3J1bnRpbWUvbWVudS52aW0gYi9ydW50aW1lL21lbnUudmltCmluZGV4IDUyNjA3MjMuLmY0ZWQxYjUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvbWVudS52aW0KKysrIGIvcnVudGltZS9tZW51LnZpbQpAQCAtMiw3ICsyLDcgQEAKICIgWW91IGNhbiBhbHNvIHVzZSB0aGlzIGFzIGEgc3RhcnQgZm9yIHlvdXIgb3duIHNldCBvZiBtZW51cy4KICIKICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CTIwMDUgSnVsIDMwCisiIExhc3QgQ2hhbmdlOgkyMDA1IEF1ZyAxNgogCiAiIE5vdGUgdGhhdCAiOmFuIiAoc2hvcnQgZm9yICI6YW5vcmVtZW51IikgaXMgb2Z0ZW4gdXNlZCB0byBtYWtlIGEgbWVudSB3b3JrCiAiIGluIGFsbCBtb2RlcyBhbmQgYXZvaWQgc2lkZSBlZmZlY3RzIGZyb20gbWFwcGluZ3MgZGVmaW5lZCBieSB0aGUgdXNlci4KQEAgLTE5OCwxMCArMTk4LDEwIEBACiBpZiBoYXMoIndpbjMyIikgIHx8IGhhcygid2luMTYiKSB8fCBoYXMoImd1aV9ndGsiKSB8fCBoYXMoImd1aV9rZGUiKSB8fCBoYXMoImd1aV9tb3RpZiIpCiAgIGFuIDIwLjQxMAkgJkVkaXQuJkZpbmRcLlwuXC4JCQk6cHJvbXB0ZmluZDxDUj4KICAgdnVubWVudQkgJkVkaXQuJkZpbmRcLlwuXC4KLSAgdm5vcmVtZW51CSAmRWRpdC4mRmluZFwuXC5cLgkJCXk6cHJvbXB0ZmluZCA8Qy1SPiI8Q1I+CisgIHZub3JlbWVudSA8c2lsZW50PgkgJkVkaXQuJkZpbmRcLlwuXC4JCQl5OmNhbGwgPFNJRD5GaXhGVGV4dCgpPENSPjpwcm9tcHRmaW5kIDxDLVI+IjxDUj4KICAgYW4gMjAuNDIwCSAmRWRpdC5GaW5kXCBhbmRcIFJlcCZsYWNlXC5cLlwuCTpwcm9tcHRyZXBsPENSPgogICB2dW5tZW51CSAmRWRpdC5GaW5kXCBhbmRcIFJlcCZsYWNlXC5cLlwuCi0gIHZub3JlbWVudQkgJkVkaXQuRmluZFwgYW5kXCBSZXAmbGFjZVwuXC5cLgl5OnByb21wdHJlcGwgPEMtUj4iPENSPgorICB2bm9yZW1lbnUgPHNpbGVudD4JICZFZGl0LkZpbmRcIGFuZFwgUmVwJmxhY2VcLlwuXC4JeTpjYWxsIDxTSUQ+Rml4RlRleHQoKTxDUj46cHJvbXB0cmVwbCA8Qy1SPiI8Q1I+CiBlbHNlCiAgIGFuIDIwLjQxMAkgJkVkaXQuJkZpbmQ8VGFiPi8JCQkvCiAgIGFuIDIwLjQyMAkgJkVkaXQuRmluZFwgYW5kXCBSZXAmbGFjZTxUYWI+OiVzCTolcy8KQEAgLTIxMiw2ICsyMTIsMTEgQEAKIGFuIDIwLjQyNQkgJkVkaXQuLVNFUDMtCQkJCTxOb3A+CiBhbiAyMC40MzAJICZFZGl0LlNldHRpbmdzXCAmV2luZG93CQk6b3B0aW9uczxDUj4KIAorZnVuISBzOkZpeEZUZXh0KCkKKyAgIiBGaXggdGV4dCBpbiBuYW1lbGVzcyByZWdpc3RlciB0byBiZSB1c2VkIHdpdGggOnByb21wdGZpbmQuCisgIGxldCBAIiA9IHN1YnN0aXR1dGUoQCIsICJbXHJcbl0iLCAnXFxuJywgJ2cnKQorZW5kZnVuCisKICIgRWRpdC9HbG9iYWwgU2V0dGluZ3MKIGFuIDIwLjQ0MC4xMDAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuVG9nZ2xlXCBQYXR0ZXJuXCAmSGlnaGxpZ2h0PFRhYj46c2V0XCBobHMhCTpzZXQgaGxzISBobHM/PENSPgogYW4gMjAuNDQwLjExMCAmRWRpdC4mR2xvYmFsXCBTZXR0aW5ncy5Ub2dnbGVcICZJZ25vcmUtY2FzZTxUYWI+OnNldFwgaWMhCTpzZXQgaWMhIGljPzxDUj4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGx1Z2luL05ldHJ3RmlsZUhhbmRsZXJzLnZpbSBiL3J1bnRpbWUvcGx1Z2luL05ldHJ3RmlsZUhhbmRsZXJzLnZpbQppbmRleCA5YjljZDIwLi4yYWExZDliIDEwMDY0NAotLS0gYS9ydW50aW1lL3BsdWdpbi9OZXRyd0ZpbGVIYW5kbGVycy52aW0KKysrIGIvcnVudGltZS9wbHVnaW4vTmV0cndGaWxlSGFuZGxlcnMudmltCkBAIC0xLDI1ICsxLDI4IEBACiAiIE5ldHJ3RmlsZUhhbmRsZXJzOiBjb250YWlucyB2YXJpb3VzIGV4dGVuc2lvbi1iYXNlZCBmaWxlIGhhbmRsZXJzIGZvcgogIiAgICAgICAgICAgICAgICAgICAgbmV0cncncyBicm93c2VycycgeCBjb21tYW5kICgiZVhlY3V0ZSBsYXVuY2hlciIpCiAiIEF1dGhvcjoJQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuCi0iIERhdGU6CQlBdWcgMDgsIDIwMDUKLSIgVmVyc2lvbjoJNWEJTk9UIFJFTEVBU0VECi0iIENvcHlyaWdodDogICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDUgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuCisiIERhdGU6CQlBdWcgMTUsIDIwMDUKKyIgVmVyc2lvbjoJNgorIiBDb3B5cmlnaHQ6ICAgIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiB7e3sxCiAiICAgICAgICAgICAgICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCB0byB1c2UgYW5kIGRpc3RyaWJ1dGUgdGhpcyBjb2RlLAogIiAgICAgICAgICAgICAgIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0CiAiICAgICAgICAgICAgICAgbm90aWNlIGlzIGNvcGllZCB3aXRoIGl0LiBMaWtlIGFueXRoaW5nIGVsc2UgdGhhdCdzIGZyZWUsCi0iICAgICAgICAgICAgICAgbmV0cncudmltIGlzIHByb3ZpZGVkICphcyBpcyogYW5kIGNvbWVzIHdpdGggbm8KKyIgICAgICAgICAgICAgICBOZXRyd0ZpbGVIYW5kbGVycy52aW0gaXMgcHJvdmlkZWQgKmFzIGlzKiBhbmQgY29tZXMgd2l0aCBubwogIiAgICAgICAgICAgICAgIHdhcnJhbnR5IG9mIGFueSBraW5kLCBlaXRoZXIgZXhwcmVzc2VkIG9yIGltcGxpZWQuIEluIG5vCiAiICAgICAgICAgICAgICAgZXZlbnQgd2lsbCB0aGUgY29weXJpZ2h0IGhvbGRlciBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCiAiICAgICAgICAgICAgICAgcmVzdWx0aW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgorIgorIiBSb20gNjoyMyAoV0VCKSBGb3IgdGhlIHdhZ2VzIG9mIHNpbiBpcyBkZWF0aCwgYnV0IHRoZSBmcmVlIGdpZnQgb2YgR29kIHt7ezEKKyIgICAgICAgICAgICAgICAgaXMgZXRlcm5hbCBsaWZlIGluIENocmlzdCBKZXN1cyBvdXIgTG9yZC4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgTG9hZCBPbmNlOiB7e3sxCi1pZiBleGlzdHMoImc6bG9hZGVkX25ldHJ3ZmlsZWhhbmRsZXJzIikgfHwgJmNwCitpZiBleGlzdHMoImc6bG9hZGVkX05ldHJ3RmlsZUhhbmRsZXJzIikgfHwgJmNwCiAgZmluaXNoCiBlbmRpZgogbGV0IHM6a2VlcGNwbz0gJmNwbwogc2V0IGNwbyZ2aW0KLWxldCBnOmxvYWRlZF9uZXRyd2ZpbGVoYW5kbGVycz0gInY1YSIKK2xldCBnOmxvYWRlZF9OZXRyd0ZpbGVIYW5kbGVycz0gInY2IgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRyd0ZpbGVIYW5kbGVyX2h0bWw6IGhhbmRsZXMgaHRtbCB3aGVuIHRoZSB1c2VyIGhpdHMgIngiIHdoZW4gdGhlIHt7ezEKQEAgLTE3NCwyMSArMTc3LDYgQEAKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiBOZXRyd0ZpbGVIYW5kbGVyX3N4dzogdmlzdWFsaXplIHN4dyBmaWxlcyB7e3sxCi1mdW4hIE5ldHJ3RmlsZUhhbmRsZXJfc3h3KHN4dykKLSIgICIgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl9zeHcoc3h3PCIuYTpzeHcuIj4pIikKLSAgaWYgZXhlY3V0YWJsZSgiZ3MiKQotICAgZXhlICdzaWxlbnQhICFncyAiJy5hOnN4dy4nIicKLSAgZWxzZQotIiAgICIgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX3N4dyAwIikKLSAgIHJldHVybiAwCi0gIGVuZGlmCi0KLSIgICIgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX3N4dyAxIikKLSAgcmV0dXJuIDEKLWVuZGZ1bgotCi0iIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRyd0ZpbGVIYW5kbGVyX2RvYzogdmlzdWFsaXplIGRvYyBmaWxlcyB7e3sxCiBmdW4hIE5ldHJ3RmlsZUhhbmRsZXJfZG9jKGRvYykKICIgICIgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl9kb2MoZG9jPCIuYTpkb2MuIj4pIikKZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGx1Z2luL05ldHJ3UGx1Z2luLnZpbSBiL3J1bnRpbWUvcGx1Z2luL05ldHJ3UGx1Z2luLnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWY1YWJkCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9wbHVnaW4vTmV0cndQbHVnaW4udmltCkBAIC0wLDAgKzEsMTU2IEBACisiIG5ldHJ3LnZpbTogSGFuZGxlcyBmaWxlIHRyYW5zZmVyIGFuZCByZW1vdGUgZGlyZWN0b3J5IGxpc3RpbmcgYWNyb3NzIGEgbmV0d29yaworIiAgICAgICAgICAgIFBMVUdJTiBQT1JUSU9OCisiIExhc3QgQ2hhbmdlOglBdWcgMTYsIDIwMDUKKyIgTWFpbnRhaW5lcjoJQ2hhcmxlcyBFIENhbXBiZWxsLCBKciA8ZHJjaGlwTk9TUEFNIGF0IGNhbXBiZWxsZmFtaWx5IGRvdCBiaXo+CisiIFZlcnNpb246CTYzCisiIExpY2Vuc2U6CVZpbSBMaWNlbnNlICAoc2VlIHZpbSdzIDpoZWxwIGxpY2Vuc2UpCisiIEdldExhdGVzdFZpbVNjcmlwdHM6IDEwNzUgMSA6QXV0b0luc3RhbGw6IG5ldHJ3LnZpbQorIiBDb3B5cmlnaHQ6ICAgIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiB7e3sxCisiICAgICAgICAgICAgICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCB0byB1c2UgYW5kIGRpc3RyaWJ1dGUgdGhpcyBjb2RlLAorIiAgICAgICAgICAgICAgIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0CisiICAgICAgICAgICAgICAgbm90aWNlIGlzIGNvcGllZCB3aXRoIGl0LiBMaWtlIGFueXRoaW5nIGVsc2UgdGhhdCdzIGZyZWUsCisiICAgICAgICAgICAgICAgbmV0cncudmltIGlzIHByb3ZpZGVkICphcyBpcyogYW5kIGNvbWVzIHdpdGggbm8gd2FycmFudHkKKyIgICAgICAgICAgICAgICBvZiBhbnkga2luZCwgZWl0aGVyIGV4cHJlc3NlZCBvciBpbXBsaWVkLiBCeSB1c2luZyB0aGlzCisiICAgICAgICAgICAgICAgcGx1Z2luLCB5b3UgYWdyZWUgdGhhdCBpbiBubyBldmVudCB3aWxsIHRoZSBjb3B5cmlnaHQKKyIgICAgICAgICAgICAgICBob2xkZXIgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyByZXN1bHRpbmcgZnJvbSB0aGUgdXNlCisiICAgICAgICAgICAgICAgb2YgdGhpcyBzb2Z0d2FyZS4KKyIKKyIgIEJ1dCBiZSBkb2VycyBvZiB0aGUgV29yZCwgYW5kIG5vdCBvbmx5IGhlYXJlcnMsIGRlbHVkaW5nIHlvdXIgb3duIHNlbHZlcyB7e3sxCisiICAoSmFtZXMgMToyMiBSU1YpCisiID0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBMb2FkIE9uY2U6IHt7ezEKK2lmIGV4aXN0cygiZzpsb2FkZWRfbmV0cnciKSB8fCAmY3AKKyAgZmluaXNoCitlbmRpZgoraWYgdjp2ZXJzaW9uIDwgNjAwCisgZWNob2VyciAiKioqbmV0cncqKiogZG9lc24ndCBzdXBwb3J0IFZpbSB2ZXJzaW9uICIudjp2ZXJzaW9uCisgZmluaXNoCitlbmRpZgorbGV0IGc6bG9hZGVkX25ldHJ3ICA9ICJ2NjMiCitpZiB2OnZlcnNpb24gPCA3MDAKKyBsZXQgbG9hZGVkX2V4cGxvcmVyID0gMQorZW5kaWYKK2xldCBzOmtlZXBjcG89ICZjcG8KK3NldCBjcG8mdmltCisKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIFB1YmxpYyBJbnRlcmZhY2U6IHt7ezEKKworIiBMb2NhbCBCcm93c2luZzoge3t7MgorYXVncm91cCBGaWxlRXhwbG9yZXIKKyBhdSEKKyBhdSBCdWZFbnRlciAqIGNhbGwgczpMb2NhbEJyb3dzZShleHBhbmQoIjxhbWF0Y2g+IikpCithdWdyb3VwIEVORAorCisiIE5ldHdvcmsgQnJvd3NpbmcgUmVhZGluZyBXcml0aW5nOiB7e3syCithdWdyb3VwIE5ldHdvcmsKKyBhdSEKKyBpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikKKyAgYXUgQnVmUmVhZENtZCAgZmlsZTovLyoJCWV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFByZSAiLmV4cGFuZCgiPGFtYXRjaD4iKXxleGUgJ2UgJy5zdWJzdGl0dXRlKGV4cGFuZCgiPGFtYXRjaD4iKSwiZmlsZTovKiIsIiIsIiIpfGV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFBvc3QgIi5leHBhbmQoIjxhbWF0Y2g+IikKKyBlbHNlCisgIGF1IEJ1ZlJlYWRDbWQgIGZpbGU6Ly8vKgkJZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUHJlICIuZXhwYW5kKCI8YW1hdGNoPiIpfGV4ZSAnZSAvJy5zdWJzdGl0dXRlKGV4cGFuZCgiPGFtYXRjaD4iKSwiZmlsZTovKiIsIiIsIiIpfGV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFBvc3QgIi5leHBhbmQoIjxhbWF0Y2g+IikKKyAgYXUgQnVmUmVhZENtZCAgZmlsZTovL2xvY2FsaG9zdC8qCWV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFByZSAiLmV4cGFuZCgiPGFtYXRjaD4iKXxleGUgJ2UgLycuc3Vic3RpdHV0ZShleHBhbmQoIjxhbWF0Y2g+IiksImZpbGU6LyoiLCIiLCIiKXxleGUgInNpbGVudCBkb2F1IEJ1ZlJlYWRQb3N0ICIuZXhwYW5kKCI8YW1hdGNoPiIpCisgZW5kaWYKKyBhdSBCdWZSZWFkQ21kICAgZnRwOi8vKixyY3A6Ly8qLHNjcDovLyosaHR0cDovLyosZGF2Oi8vKixyc3luYzovLyosc2Z0cDovLyoJZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUHJlICIuZXhwYW5kKCI8YW1hdGNoPiIpfGV4ZSAiTnJlYWQgMHIgIi5leHBhbmQoIjxhbWF0Y2g+Iil8ZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUG9zdCAiLmV4cGFuZCgiPGFtYXRjaD4iKQorIGF1IEZpbGVSZWFkQ21kICBmdHA6Ly8qLHJjcDovLyosc2NwOi8vKixodHRwOi8vKixkYXY6Ly8qLHJzeW5jOi8vKixzZnRwOi8vKglleGUgInNpbGVudCBkb2F1IEJ1ZlJlYWRQcmUgIi5leHBhbmQoIjxhbWF0Y2g+Iil8ZXhlICJOcmVhZCAiICAgLmV4cGFuZCgiPGFtYXRjaD4iKXxleGUgInNpbGVudCBkb2F1IEZpbGVSZWFkUG9zdCAiLmV4cGFuZCgiPGFtYXRjaD4iKQorIGF1IEJ1ZldyaXRlQ21kICBmdHA6Ly8qLHJjcDovLyosc2NwOi8vKixkYXY6Ly8qLHJzeW5jOi8vKixzZnRwOi8vKiAgICAJZXhlICJzaWxlbnQgZG9hdSBCdWZXcml0ZVByZSAiLmV4cGFuZCgiPGFtYXRjaD4iKXxleGUgIk53cml0ZSAiIC5leHBhbmQoIjxhbWF0Y2g+Iil8ZXhlICJzaWxlbnQgZG9hdSBCdWZXcml0ZVBvc3QgIi5leHBhbmQoIjxhbWF0Y2g+IikKKyBhdSBGaWxlV3JpdGVDbWQgZnRwOi8vKixyY3A6Ly8qLHNjcDovLyosZGF2Oi8vKixyc3luYzovLyosc2Z0cDovLyogICAgCWV4ZSAic2lsZW50IGRvYXUgQnVmV3JpdGVQcmUgIi5leHBhbmQoIjxhbWF0Y2g+Iil8ZXhlICInWywnXU53cml0ZSAiIC5leHBhbmQoIjxhbWF0Y2g+Iil8ZXhlICJzaWxlbnQgZG9hdSBGaWxlV3JpdGVQb3N0ICIuZXhwYW5kKCI8YW1hdGNoPiIpCithdWdyb3VwIEVORAorCisiIENvbW1hbmRzOiA6TnJlYWQsIDpOd3JpdGUsIDpOZXRVc2VyUGFzcyB7e3syCitjb20hIC1uYXJncz0qCQlOcmVhZAkJY2FsbCBuZXRydyNOZXRTYXZlUG9zbigpPGJhcj5jYWxsIG5ldHJ3I05ldFJlYWQoPGYtYXJncz4pPGJhcj5jYWxsIG5ldHJ3I05ldFJlc3RvcmVQb3NuKCkKK2NvbSEgLXJhbmdlPSUgLW5hcmdzPSoJTndyaXRlCQljYWxsIG5ldHJ3I05ldFNhdmVQb3NuKCk8YmFyPjxsaW5lMT4sPGxpbmUyPmNhbGwgbmV0cncjTmV0V3JpdGUoPGYtYXJncz4pPGJhcj5jYWxsIG5ldHJ3I05ldFJlc3RvcmVQb3NuKCkKK2NvbSEgLW5hcmdzPSoJCU5ldFVzZXJQYXNzCWNhbGwgTmV0VXNlclBhc3MoPGYtYXJncz4pCisKKyIgQ29tbWFuZHM6IDpFeHBsb3JlLCA6U2V4cGxvcmUsIEhleHBsb3JlLCBWZXhwbG9yZSB7e3syCitjb20hIC1uYXJncz0/IC1iYXIgLWJhbmcgLWNvdW50PTAgIAlFeHBsb3JlCQljYWxsIG5ldHJ3I0V4cGxvcmUoPGNvdW50PiwwLDArPGJhbmc+MCw8cS1hcmdzPikKK2NvbSEgLW5hcmdzPT8gLWJhciAtYmFuZyAtY291bnQ9MCAgCVNleHBsb3JlCWNhbGwgbmV0cncjRXhwbG9yZSg8Y291bnQ+LDEsMCs8YmFuZz4wLDxxLWFyZ3M+KQorY29tISAtbmFyZ3M9PyAtYmFyIC1iYW5nIC1jb3VudD0wICAJSGV4cGxvcmUJY2FsbCBuZXRydyNFeHBsb3JlKDxjb3VudD4sMSwyKzxiYW5nPjAsPHEtYXJncz4pCitjb20hIC1uYXJncz0/IC1iYXIgLWJhbmcgLWNvdW50PTAgIAlWZXhwbG9yZQljYWxsIG5ldHJ3I0V4cGxvcmUoPGNvdW50PiwxLDQrPGJhbmc+MCw8cS1hcmdzPikKK2NvbSEgLW5hcmdzPT8gLWJhciAtYmFuZyAgIAkJTmV4cGxvcmUJY2FsbCBuZXRydyNFeHBsb3JlKC0xLDAsMCw8cS1hcmdzPikKK2NvbSEgLW5hcmdzPT8gLWJhciAtYmFuZyAgIAkJUGV4cGxvcmUJY2FsbCBuZXRydyNFeHBsb3JlKC0yLDAsMCw8cS1hcmdzPikKKworIiBDb21tYW5kczogTmV0cndTZXR0aW5ncyB7e3syCitjb20hIC1uYXJncz0wIE5ldHJ3U2V0dGluZ3MgOmNhbGwgTmV0cndTZXR0aW5ncyNOZXRyd1NldHRpbmdzKCkKKworIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIgTG9jYWxCcm93c2U6IHt7ezIKK2Z1biEgczpMb2NhbEJyb3dzZShkaXJuYW1lKQorICAiIHVuZm9ydHVuYXRlIGludGVyYWN0aW9uIC0tIGRlYnVnZ2luZyBjYWxscyBjYW4ndCBiZSB1c2VkIGhlcmU7CisgICIgdGhlIEJ1ZkVudGVyIGV2ZW50IGNhdXNlcyB0cmlnZ2VyaW5nIHdoZW4gYXR0ZW1wdHMgdG8gd3JpdGUgdG8KKyAgIiB0aGUgREJHIGJ1ZmZlciBhcmUgbWFkZS4KKyAgaWYgaXNkaXJlY3RvcnkoYTpkaXJuYW1lKQorICAgY2FsbCBuZXRydyNEaXJCcm93c2UoYTpkaXJuYW1lKQorICBlbmRpZgorICAiIG5vdCBhIGRpcmVjdG9yeSwgaWdub3JlIGl0CitlbmRmdW4KKworIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIgTmV0cndTdGF0dXNMaW5lOiB7e3sxCitmdW4hIE5ldHJ3U3RhdHVzTGluZSgpCisiICBsZXQgZzpzdGxtc2c9ICJYYnVmbnI9Ii53Om5ldHJ3X2V4cGxvcmVfYnVmbnIuIiBidWZucj0iLmJ1Zm5yKCIuIikuIiBYbGluZSMiLnc6bmV0cndfZXhwbG9yZV9saW5lLiIgbGluZSMiLmxpbmUoIi4iKQorICBpZiAhZXhpc3RzKCJ3Om5ldHJ3X2V4cGxvcmVfYnVmbnIiKSB8fCB3Om5ldHJ3X2V4cGxvcmVfYnVmbnIgIT0gYnVmbnIoIi4iKSB8fCAhZXhpc3RzKCJ3Om5ldHJ3X2V4cGxvcmVfbGluZSIpIHx8IHc6bmV0cndfZXhwbG9yZV9saW5lICE9IGxpbmUoIi4iKSB8fCAhZXhpc3RzKCJ3Om5ldHJ3X2V4cGxvcmVfbGlzdCIpCisgICBsZXQgJnN0bD0gczpuZXRyd19leHBsb3JlX3N0bAorICAgaWYgZXhpc3RzKCJ3Om5ldHJ3X2V4cGxvcmVfYnVmbnIiKXx1bmxldCB3Om5ldHJ3X2V4cGxvcmVfYnVmbnJ8ZW5kaWYKKyAgIGlmIGV4aXN0cygidzpuZXRyd19leHBsb3JlX2xpbmUiKXx1bmxldCB3Om5ldHJ3X2V4cGxvcmVfbGluZXxlbmRpZgorICAgcmV0dXJuICIiCisgIGVsc2UKKyAgIHJldHVybiAiTWF0Y2ggIi53Om5ldHJ3X2V4cGxvcmVfbXRjaGNudC4iIG9mICIudzpuZXRyd19leHBsb3JlX2xpc3RsZW4KKyAgZW5kaWYKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBOZXRVc2VyUGFzczogc2V0IHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmb3Igc3Vic2VxdWVudCBmdHAgdHJhbnNmZXIge3t7MQorIiAgIFVzYWdlOiAgOmNhbGwgTmV0VXNlclBhc3MoKQkJCS0tIHdpbGwgcHJvbXB0IGZvciB1c2VyaWQgYW5kIHBhc3N3b3JkCisiCSAgICA6Y2FsbCBOZXRVc2VyUGFzcygidWlkIikJCS0tIHdpbGwgcHJvbXB0IGZvciBwYXNzd29yZAorIgkgICAgOmNhbGwgTmV0VXNlclBhc3MoInVpZCIsInBhc3N3b3JkIikgLS0gc2V0cyBnbG9iYWwgdXNlcmlkIGFuZCBwYXNzd29yZAorZnVuISBOZXRVc2VyUGFzcyguLi4pCisKKyAiIGdldC9zZXQgdXNlcmlkCisgaWYgYTowID09IDAKKyIgIGNhbGwgRGZ1bmMoIk5ldFVzZXJQYXNzKGE6MDwiLmE6MC4iPikiKQorICBpZiAhZXhpc3RzKCJnOm5ldHJ3X3VpZCIpIHx8IGc6bmV0cndfdWlkID09ICIiCisgICAiIHZpYSBwcm9tcHQKKyAgIGxldCBnOm5ldHJ3X3VpZD0gaW5wdXQoJ0VudGVyIHVzZXJuYW1lOiAnKQorICBlbmRpZgorIGVsc2UJIiBmcm9tIGNvbW1hbmQgbGluZQorIiAgY2FsbCBEZnVuYygiTmV0VXNlclBhc3MoYToxPCIuYToxLiI+KSB7IikKKyAgbGV0IGc6bmV0cndfdWlkPSBhOjEKKyBlbmRpZgorCisgIiBnZXQgcGFzc3dvcmQKKyBpZiBhOjAgPD0gMSAiIHZpYSBwcm9tcHQKKyIgIGNhbGwgRGVjaG8oImE6MD0iLmE6MC4iIGNhc2UgPD0xOiIpCisgIGxldCBnOm5ldHJ3X3Bhc3N3ZD0gaW5wdXRzZWNyZXQoIkVudGVyIFBhc3N3b3JkOiAiKQorIGVsc2UgIiBmcm9tIGNvbW1hbmQgbGluZQorIiAgY2FsbCBEZWNobygiYTowPSIuYTowLiIgY2FzZSA+MTogYToyPCIuYToyLiI+IikKKyAgbGV0IGc6bmV0cndfcGFzc3dkPWE6MgorIGVuZGlmCisiICBjYWxsIERyZXQoIk5ldFVzZXJQYXNzIikKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBOZXRSZWFkRml4dXA6IHRoaXMgc29ydCBvZiBmdW5jdGlvbiBpcyB0eXBpY2FsbHkgd3JpdHRlbiBieSB0aGUgdXNlciB7e3sxCisiICAgICAgICAgICAgICAgdG8gaGFuZGxlIGV4dHJhIGp1bmsgdGhhdCB0aGVpciBzeXN0ZW0ncyBmdHAgZHVtcHMKKyIgICAgICAgICAgICAgICBpbnRvIHRoZSB0cmFuc2Zlci4gIFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYXMgYW4KKyIgICAgICAgICAgICAgICBleGFtcGxlIGFuZCBhcyBhIGZpeCBmb3IgYSBXaW5kb3dzIDk1IHByb2JsZW06IGluIG15CisiICAgICAgICAgICAgICAgZXhwZXJpZW5jZSwgd2luOTUncyBmdHAgYWx3YXlzIGR1bXBlZCBmb3VyIGJsYW5rIGxpbmVzCisiICAgICAgICAgICAgICAgYXQgdGhlIGVuZCBvZiB0aGUgdHJhbnNmZXIuCitpZiBoYXMoIndpbjk1IikgJiYgZzpuZXRyd193aW45NWZ0cAorIGZ1biEgTmV0UmVhZEZpeHVwKG1ldGhvZCwgbGluZTEsIGxpbmUyKQorIiAgIGNhbGwgRGZ1bmMoIk5ldFJlYWRGaXh1cChtZXRob2Q8Ii5hOm1ldGhvZC4iPiBsaW5lMT0iLmE6bGluZTEuIiBsaW5lMj0iLmE6bGluZTIuIikiKQorICAgaWYgbWV0aG9kID09IDMgICAiIGZ0cCAobm8gPC5uZXRyYz4pCisgICAgbGV0IGZvdXJibGFua2xpbmVzPSBsaW5lMiAtIDMKKyAgICBzaWxlbnQgZm91cmJsYW5rbGluZXMuIiwiLmxpbmUyLiJnL15ccyovZCIKKyAgIGVuZGlmCisiICAgY2FsbCBEcmV0KCJOZXRSZWFkRml4dXAiKQorIGVuZGZ1bgorZW5kaWYKKworbGV0ICZjcG89IHM6a2VlcGNwbwordW5sZXQgczprZWVwY3BvCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBNb2RlbGluZXM6IHt7ezEKKyIgdmltOnRzPTggZmRtPW1hcmtlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9wbHVnaW4vTmV0cndTZXR0aW5ncy52aW0gYi9ydW50aW1lL3BsdWdpbi9OZXRyd1NldHRpbmdzLnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWNkY2QyCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9wbHVnaW4vTmV0cndTZXR0aW5ncy52aW0KQEAgLTAsMCArMSwxNTcgQEAKKyIgTmV0cndTZXR0aW5ncy52aW06IG1ha2VzIG5ldHJ3IHNldHRpbmdzIHNpbXBsZXIKKyIgTGFzdCBDaGFuZ2U6CUF1ZyAxNiwgMjAwNQorIiBNYWludGFpbmVyOglDaGFybGVzIEUgQ2FtcGJlbGwsIEpyIDxkcmNoaXBOT1NQQU0gYXQgY2FtcGJlbGxmYW1pbHkgZG90IGJpej4KKyIgVmVyc2lvbjoJCTMKKyIgQ29weXJpZ2h0OiAgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4ge3t7MQorIiAgICAgICAgICAgICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gdXNlIGFuZCBkaXN0cmlidXRlIHRoaXMgY29kZSwKKyIgICAgICAgICAgICAgICB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgcHJvdmlkZWQgdGhhdCB0aGlzIGNvcHlyaWdodAorIiAgICAgICAgICAgICAgIG5vdGljZSBpcyBjb3BpZWQgd2l0aCBpdC4gTGlrZSBhbnl0aGluZyBlbHNlIHRoYXQncyBmcmVlLAorIiAgICAgICAgICAgICAgIE5ldHJ3U2V0dGluZ3MudmltIGlzIHByb3ZpZGVkICphcyBpcyogYW5kIGNvbWVzIHdpdGggbm8KKyIgICAgICAgICAgICAgICB3YXJyYW50eSBvZiBhbnkga2luZCwgZWl0aGVyIGV4cHJlc3NlZCBvciBpbXBsaWVkLiBCeSB1c2luZworIiAgICAgICAgICAgICAgIHRoaXMgcGx1Z2luLCB5b3UgYWdyZWUgdGhhdCBpbiBubyBldmVudCB3aWxsIHRoZSBjb3B5cmlnaHQKKyIgICAgICAgICAgICAgICBob2xkZXIgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyByZXN1bHRpbmcgZnJvbSB0aGUgdXNlCisiICAgICAgICAgICAgICAgb2YgdGhpcyBzb2Z0d2FyZS4KKyIKKyIgTWF0IDQ6MjMgKFdFQikgSmVzdXMgd2VudCBhYm91dCBpbiBhbGwgR2FsaWxlZSwgdGVhY2hpbmcgaW4gdGhlaXIge3t7MQorIiAgICAgICAgICAgICAgICBzeW5hZ29ndWVzLCBwcmVhY2hpbmcgdGhlIGdvc3BlbCBvZiB0aGUga2luZ2RvbSwgYW5kIGhlYWxpbmcKKyIgICAgICAgICAgICAgICAgZXZlcnkgZGlzZWFzZSBhbmQgZXZlcnkgc2lja25lc3MgYW1vbmcgdGhlIHBlb3BsZS4KKyIgTG9hZCBPbmNlOiB7e3sxCitpZiBleGlzdHMoImc6bG9hZGVkX05ldHJ3U2V0dGluZ3MiKSB8fCAmY3AKKyAgZmluaXNoCitlbmRpZgorbGV0IGc6bG9hZGVkX05ldHJ3U2V0dGluZ3MgID0gInYzIgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBOZXRyd1NldHRpbmdzOiB7e3sxCitmdW4hIE5ldHJ3U2V0dGluZ3MjTmV0cndTZXR0aW5ncygpCisgICIgdGhpcyBjYWxsIGlzIGhlcmUgbGFyZ2VseSBqdXN0IHRvIGluc3VyZSB0aGF0IG5ldHJ3IGhhcyBiZWVuIGxvYWRlZAorICBjYWxsIG5ldHJ3I05ldFNhdmVQb3NuKCkKKworICBhYm92ZSB3aW5jbWQgcworICBlbmV3CisgIHNldGxvY2FsIG5vc3dhcGZpbGUgYmg9d2lwZQorICBzZXQgZnQ9dmltCisgIGZpbGUgTmV0cndcIFNldHRpbmdzCisKKyAgIiB0aGVzZSB2YXJpYWJsZXMgaGF2ZSB0aGUgZm9sbG93aW5nIGRlZmF1bHQgZWZmZWN0cyB3aGVuIHRoZXkgZG9uJ3QKKyAgIiBleGlzdCAoaWUuIGhhdmUgbm90IGJlZW4gc2V0IGJ5IHRoZSB1c2VyIGluIGhpcy9oZXIgLnZpbXJjKQorICBpZiAhZXhpc3RzKCJnOm5ldHJ3X2xvbmdsaXN0IikKKyAgIGxldCBnOm5ldHJ3X2xvbmdsaXN0PSAwCisgICBsZXQgZzpuZXRyd19saXN0X2NtZD0gInNzaCBIT1NUTkFNRSBscyAtRkxhIgorICBlbmRpZgorICBpZiAhZXhpc3RzKCJnOm5ldHJ3X3NpbGVudCIpCisgICBsZXQgZzpuZXRyd19zaWxlbnQ9IDAKKyAgZW5kaWYKKyAgaWYgIWV4aXN0cygiZzpuZXRyd191c2VfbnRfcmNwIikKKyAgIGxldCBnOm5ldHJ3X3VzZV9udF9yY3A9IDAKKyAgZW5kaWYKKyAgaWYgIWV4aXN0cygiZzpuZXRyd19mdHAiKQorICAgbGV0IGc6bmV0cndfZnRwPSAwCisgIGVuZGlmCisgIGlmICFleGlzdHMoImc6bmV0cndfaWdub3JlbmV0cmMiKQorICAgbGV0IGc6bmV0cndfaWdub3JlbmV0cmM9IDAKKyAgZW5kaWYKKworICBwdXQgPScrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKKyAgcHV0ID0nKyBOZXRyd1NldHRpbmdzOiAgKGJ5IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiknCisgIHB1dCA9JysgIFByZXNzID8gd2l0aCBjdXJzb3IgYXRvcCBhbnkgbGluZSBmb3IgaGVscCAgJworICBwdXQgPScrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKKyAgbGV0IHM6bmV0cndfc2V0dGluZ3Nfc3RvcD0gbGluZSgiLiIpCisKKyAgcHV0ID0nJworICBwdXQgPScrIE5ldHJ3IFByb3RvY29sIENvbW1hbmRzJworICBwdXQgPSAnbGV0IGc6bmV0cndfZGF2X2NtZCAgICAgICAgICAgPSAnLmc6bmV0cndfZGF2X2NtZAorICBwdXQgPSAnbGV0IGc6bmV0cndfZmV0Y2hfY21kICAgICAgICAgPSAnLmc6bmV0cndfZmV0Y2hfY21kCisgIHB1dCA9ICdsZXQgZzpuZXRyd19mdHBfY21kICAgICAgICAgICA9ICcuZzpuZXRyd19mdHBfY21kCisgIHB1dCA9ICdsZXQgZzpuZXRyd19odHRwX2NtZCAgICAgICAgICA9ICcuZzpuZXRyd19odHRwX2NtZAorICBwdXQgPSAnbGV0IGc6bmV0cndfcmNwX2NtZCAgICAgICAgICAgPSAnLmc6bmV0cndfcmNwX2NtZAorICBwdXQgPSAnbGV0IGc6bmV0cndfcnN5bmNfY21kICAgICAgICAgPSAnLmc6bmV0cndfcnN5bmNfY21kCisgIHB1dCA9ICdsZXQgZzpuZXRyd19zY3BfY21kICAgICAgICAgICA9ICcuZzpuZXRyd19zY3BfY21kCisgIHB1dCA9ICdsZXQgZzpuZXRyd19zZnRwX2NtZCAgICAgICAgICA9ICcuZzpuZXRyd19zZnRwX2NtZAorICBsZXQgczpuZXRyd19wcm90b2NvbF9zdG9wPSBsaW5lKCIuIikKKyAgcHV0ID0gJycKKworICBwdXQgPScrTmV0cncgVHJhbnNmZXIgQ29udHJvbCcKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X2N5Z3dpbiAgICAgICAgICAgID0gJy5nOm5ldHJ3X2N5Z3dpbgorICBwdXQgPSAnbGV0IGc6bmV0cndfZnRwICAgICAgICAgICAgICAgPSAnLmc6bmV0cndfZnRwCisgIHB1dCA9ICdsZXQgZzpuZXRyd19mdHBtb2RlICAgICAgICAgICA9ICcuZzpuZXRyd19mdHBtb2RlCisgIHB1dCA9ICdsZXQgZzpuZXRyd19pZ25vcmVuZXRyYyAgICAgICA9ICcuZzpuZXRyd19pZ25vcmVuZXRyYworICBwdXQgPSAnbGV0IGc6bmV0cndfdXNlX250X3JjcCAgICAgICAgPSAnLmc6bmV0cndfdXNlX250X3JjcAorICBwdXQgPSAnbGV0IGc6bmV0cndfd2luOTVmdHAgICAgICAgICAgPSAnLmc6bmV0cndfd2luOTVmdHAKKyAgbGV0IHM6bmV0cndfeGZlcl9zdG9wPSBsaW5lKCIuIikKKworICBwdXQgPSAnJworICBwdXQgPScrIE5ldHJ3IEJyb3dzZXIgQ29udHJvbCcKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X2FsdG8gICAgICAgICAgICAgID0gJy5nOm5ldHJ3X2FsdG8KKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X2FsdHYgICAgICAgICAgICAgID0gJy5nOm5ldHJ3X2FsdHYKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X2Rpcmhpc3RtYXggICAgICAgID0gJy5nOm5ldHJ3X2Rpcmhpc3RtYXgKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X2Z0cF9icm93c2VfcmVqZWN0ID0gJy5nOm5ldHJ3X2Z0cF9icm93c2VfcmVqZWN0CisgIHB1dCA9ICdsZXQgZzpuZXRyd19mdHBfbGlzdF9jbWQgICAgICA9ICcuZzpuZXRyd19mdHBfbGlzdF9jbWQKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X2hpZGUgICAgICAgICAgICAgID0gJy5nOm5ldHJ3X2hpZGUKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X2tlZXBkaXIgICAgICAgICAgID0gJy5nOm5ldHJ3X2tlZXBkaXIKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X2xpc3RfY21kICAgICAgICAgID0gJy5nOm5ldHJ3X2xpc3RfY21kCisgIHB1dCA9ICdsZXQgZzpuZXRyd19saXN0X2NtZCAgICAgICAgICA9ICcuZzpuZXRyd19saXN0X2NtZAorICBwdXQgPSAnbGV0IGc6bmV0cndfbGlzdF9oaWRlICAgICAgICAgPSAnLmc6bmV0cndfbGlzdF9oaWRlCisgIHB1dCA9ICdsZXQgZzpuZXRyd19sb2NhbF9ta2RpciAgICAgICA9ICcuZzpuZXRyd19sb2NhbF9ta2RpcgorICBwdXQgPSAnbGV0IGc6bmV0cndfbG9jYWxfcm1kaXIgICAgICAgPSAnLmc6bmV0cndfbG9jYWxfcm1kaXIKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X2xvbmdsaXN0ICAgICAgICAgID0gJy5nOm5ldHJ3X2xvbmdsaXN0CisgIHB1dCA9ICdsZXQgZzpuZXRyd19tYXhmaWxlbmFtZWxlbiAgICA9ICcuZzpuZXRyd19tYXhmaWxlbmFtZWxlbgorICBwdXQgPSAnbGV0IGc6bmV0cndfbWtkaXJfY21kICAgICAgICAgPSAnLmc6bmV0cndfbWtkaXJfY21kCisgIHB1dCA9ICdsZXQgZzpuZXRyd19yZW5hbWVfY21kICAgICAgICA9ICcuZzpuZXRyd19yZW5hbWVfY21kCisgIHB1dCA9ICdsZXQgZzpuZXRyd19ybV9jbWQgICAgICAgICAgICA9ICcuZzpuZXRyd19ybV9jbWQKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X3JtZGlyX2NtZCAgICAgICAgID0gJy5nOm5ldHJ3X3JtZGlyX2NtZAorICBwdXQgPSAnbGV0IGc6bmV0cndfcm1mX2NtZCAgICAgICAgICAgPSAnLmc6bmV0cndfcm1mX2NtZAorICBwdXQgPSAnbGV0IGc6bmV0cndfc2lsZW50ICAgICAgICAgICAgPSAnLmc6bmV0cndfc2lsZW50CisgIHB1dCA9ICdsZXQgZzpuZXRyd19zb3J0X2J5ICAgICAgICAgICA9ICcuZzpuZXRyd19zb3J0X2J5CisgIHB1dCA9ICdsZXQgZzpuZXRyd19zb3J0X2RpcmVjdGlvbiAgICA9ICcuZzpuZXRyd19zb3J0X2RpcmVjdGlvbgorICBwdXQgPSAnbGV0IGc6bmV0cndfc29ydF9zZXF1ZW5jZSAgICAgPSAnLmc6bmV0cndfc29ydF9zZXF1ZW5jZQorICBwdXQgPSAnbGV0IGc6bmV0cndfc3NoX2Jyb3dzZV9yZWplY3QgPSAnLmc6bmV0cndfc3NoX2Jyb3dzZV9yZWplY3QKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X3RpbWVmbXQgICAgICAgICAgID0gJy5nOm5ldHJ3X3RpbWVmbXQKKyAgcHV0ID0gJ2xldCBnOm5ldHJ3X3dpbnNpemUgICAgICAgICAgID0gJy5nOm5ldHJ3X3dpbnNpemUKKworICBwdXQgPScnCisgIHB1dCA9JysgRm9yIGhlbHAsIHBsYWNlIGN1cnNvciBvbiBsaW5lIGFuZCBwcmVzcyA/JworCisgIDFkCisgIHNpbGVudCAlcy9eKy8iL2UKKyAgcmVzIDk5CisgIHNpbGVudCAlcy89IFwoW14wLTldLipcKSQvPSAnXDEnL2UKKyAgc2lsZW50ICVzLz0gJC89ICcnL2UKKyAgMQorCisgIHNldCBub21vZAorCisgIG1hcCA8YnVmZmVyPiA8c2lsZW50PiA/IDpjYWxsIE5ldHJ3U2V0dGluZ0hlbHAoKTxjcj4KKyAgbGV0IHRtcGZpbGU9IHRlbXBuYW1lKCkKKyAgZXhlICdhdSBCdWZXcml0ZUNtZAlOZXRyd1wgU2V0dGluZ3MJc2lsZW50IHchICcudG1wZmlsZS4nfHNvICcudG1wZmlsZS4nfGNhbGwgZGVsZXRlKCInLnRtcGZpbGUuJyIpfHNldCBub21vZCcKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBOZXRyd1NldHRpbmdIZWxwOiB7e3syCitmdW4hIE5ldHJ3U2V0dGluZ0hlbHAoKQorIiAgY2FsbCBEZnVuYygiTmV0cndTZXR0aW5nSGVscCgpIikKKyAgbGV0IGN1cmxpbmUgPSBnZXRsaW5lKCIuIikKKyAgaWYgY3VybGluZSA9fiAnPScKKyAgIGxldCB2YXJoZWxwID0gc3Vic3RpdHV0ZShjdXJsaW5lLCdeXHMqbGV0ICcsJycsJ2UnKQorICAgbGV0IHZhcmhlbHAgPSBzdWJzdGl0dXRlKHZhcmhlbHAsJ1xzKj0uKiQnLCcnLCdlJykKKyIgICBjYWxsIERlY2hvKCJ0cnlpbmcgaGVscCAiLnZhcmhlbHApCisgICB0cnkKKyAgICBleGUgImhlICIudmFyaGVscAorICAgY2F0Y2ggL15WaW1cJSgoXGFcKylcKVw9OkUxNDkvCisgICAJZWNobyAiKioqc29ycnkqKiogbm8gaGVscCBhdmFpbGFibGUgZm9yIDwiLnZhcmhlbHAuIj4iCisgICBlbmR0cnkKKyAgZWxzZWlmIGxpbmUoIi4iKSA8IHM6bmV0cndfc2V0dGluZ3Nfc3RvcAorICAgaGUgbmV0cnctc2V0dGluZ3MKKyAgZWxzZWlmIGxpbmUoIi4iKSA8IHM6bmV0cndfcHJvdG9jb2xfc3RvcAorICAgaGUgbmV0cnctZXh0ZXJuYXBwCisgIGVsc2VpZiBsaW5lKCIuIikgPCBzOm5ldHJ3X3hmZXJfc3RvcAorICAgaGUgbmV0cnctdmFyaWFibGVzCisgIGVsc2UKKyAgIGhlIG5ldHJ3LWJyb3dzZS12YXIKKyAgZW5kaWYKKyIgIGNhbGwgRHJldCgiTmV0cndTZXR0aW5nSGVscCIpCitlbmRmdW4KKworIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIgTW9kZWxpbmVzOiB7e3sxCisiIHZpbTp0cz04IGZkbT1tYXJrZXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvYWYvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL2FmL21haW4uYWFwCmluZGV4IGQzOTNjNWYuLmVjNTM4MjUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvYWYvbWFpbi5hYXAKKysrIGIvcnVudGltZS9zcGVsbC9hZi9tYWluLmFhcApAQCAtMTEsMTEgKzExLDExIEBACiAKIGFsbDogJFNQRUxMRElSL2FmLmxhdGluMS5zcGwgJFNQRUxMRElSL2FmLnV0Zi04LnNwbCAuLi9SRUFETUVfYWYudHh0CiAKLSRTUEVMTERJUi9hZi5sYXRpbjEuc3BsIDogJFZJTSAkRklMRVMKKyRTUEVMTERJUi9hZi5sYXRpbjEuc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgZW52IExBTkc9YWZfWkEuSVNPODg1OS0xCiAJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2FmIGFmX1pBIiAtYyBxCiAKLSRTUEVMTERJUi9hZi51dGYtOC5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2FmLnV0Zi04LnNwbCA6ICRGSUxFUwogICAgICAgICA6c3lzIGVudiBMQU5HPWFmX1pBLlVURi04CiAJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2FmIGFmX1pBIiAtYyBxCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvYmcvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL2JnL21haW4uYWFwCmluZGV4IDc4NDk1MjYuLjVkOTg0YmUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvYmcvbWFpbi5hYXAKKysrIGIvcnVudGltZS9zcGVsbC9iZy9tYWluLmFhcApAQCAtMSw0ICsxLDQgQEAKLSMgQWFwIHJlY2lwZSBmb3IgQ3plY2ggVmltIHNwZWxsIGZpbGVzLgorIyBBYXAgcmVjaXBlIGZvciBCdWxnYXJpYW4gVmltIHNwZWxsIGZpbGVzLgogCiAjIFVzZSBhIGZyZXNobHkgY29tcGlsZWQgVmltIGlmIGl0IGV4aXN0cy4KIEBpZiBvcy5wYXRoLmV4aXN0cygnLi4vLi4vLi4vc3JjL3ZpbScpOgpAQCAtMTEsMTQgKzExLDE1IEBACiAKIGFsbDogJFNQRUxMRElSL2JnLmNwMTI1MS5zcGwgJFNQRUxMRElSL2JnLnV0Zi04LnNwbCAuLi9SRUFETUVfYmcudHh0CiAKLSRTUEVMTERJUi9iZy5jcDEyNTEuc3BsIDogJFZJTSAkRklMRVMKKyRTUEVMTERJUi9iZy5jcDEyNTEuc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgZW52IExBTkc9YmdfQkcuQ1AxMjUxICRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2JnIGJnX0JHIiAtYyBxCiAKLSRTUEVMTERJUi9iZy51dGYtOC5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2JnLnV0Zi04LnNwbCA6ICRGSUxFUwogICAgICAgICA6c3lzIGVudiBMQU5HPWJnX0JHLlVURi04ICRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2JnIGJnX0JHIiAtYyBxCiAKIC4uL1JFQURNRV9iZy50eHQ6IFJFQURNRV9iZ19CRy50eHQKICAgICAgICAgOmNvcHkgJHNvdXJjZSAkdGFyZ2V0CisgICAgICAgIDpzeXMgJFZJTSAkdGFyZ2V0IC1lIC1jICJzZXQgZmY9dW5peCIgLWMgd3EKIAogIwogIyBGZXRjaGluZyB0aGUgZmlsZXMgZnJvbSBPcGVuT2ZmaWNlLm9yZy4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvY2EvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL2NhL21haW4uYWFwCmluZGV4IGIyZjczNTAuLjIxODJmMjkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvY2EvbWFpbi5hYXAKKysrIGIvcnVudGltZS9zcGVsbC9jYS9tYWluLmFhcApAQCAtMTEsMTEgKzExLDExIEBACiAKIGFsbDogJFNQRUxMRElSL2NhLmxhdGluMS5zcGwgJFNQRUxMRElSL2NhLnV0Zi04LnNwbCAuLi9SRUFETUVfY2EudHh0CiAKLSRTUEVMTERJUi9jYS5sYXRpbjEuc3BsIDogJFZJTSAkRklMRVMKKyRTUEVMTERJUi9jYS5sYXRpbjEuc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgZW52IExBTkc9Y2FfRVMuSVNPODg1OS0xCiAJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2NhIGNhX0VTIiAtYyBxCiAKLSRTUEVMTERJUi9jYS51dGYtOC5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2NhLnV0Zi04LnNwbCA6ICRGSUxFUwogICAgICAgICA6c3lzIGVudiBMQU5HPWNhX0VTLlVURi04CiAJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2NhIGNhX0VTIiAtYyBxCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvY3MvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL2NzL21haW4uYWFwCmluZGV4IDVlYWQ2ZDAuLjUzYWU0NmYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvY3MvbWFpbi5hYXAKKysrIGIvcnVudGltZS9zcGVsbC9jcy9tYWluLmFhcApAQCAtMTIsMTMgKzEyLDEzIEBACiBhbGw6ICRTUEVMTERJUi9jcy5pc28tODg1OS0yLnNwbCAkU1BFTExESVIvY3MudXRmLTguc3BsIFwKICAgICAgICAgJFNQRUxMRElSL2NzLmNwMTI1MC5zcGwgLi4vUkVBRE1FX2NzLnR4dAogCi0kU1BFTExESVIvY3MuaXNvLTg4NTktMi5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2NzLmlzby04ODU5LTIuc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgZW52IExBTkc9Y3NfQ1ouSVNPODg1OS0yICRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2NzIGNzX0NaIiAtYyBxCiAKLSRTUEVMTERJUi9jcy51dGYtOC5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2NzLnV0Zi04LnNwbCA6ICRGSUxFUwogICAgICAgICA6c3lzIGVudiBMQU5HPWNzX0NaLlVURi04ICRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2NzIGNzX0NaIiAtYyBxCiAKLSRTUEVMTERJUi9jcy5jcDEyNTAuc3BsIDogJFZJTSAkRklMRVMKKyRTUEVMTERJUi9jcy5jcDEyNTAuc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgJFZJTSAtdSBOT05FIC1lIC1jICJzZXQgZW5jPWNwMTI1MCIgLWMgIm1rc3BlbGwhICRTUEVMTERJUi9jcyBjc19DWiIgLWMgcQogCiAuLi9SRUFETUVfY3MudHh0OiBSRUFETUVfY3NfQ1oudHh0CmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL2RhL2RhX0RLLmRpZmYgYi9ydW50aW1lL3NwZWxsL2RhL2RhX0RLLmRpZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZjYjhkMwotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvc3BlbGwvZGEvZGFfREsuZGlmZgpAQCAtMCwwICsxLDE2IEBACisqKiogZGFfREsub3JpZy5hZmYJU3VuIEF1ZyAxNCAyMDowNDozMSAyMDA1CistLS0gZGFfREsuYWZmCU1vbiBBdWcgMTUgMTQ6MDM6MDYgMjAwNQorKioqKioqKioqKioqKioqCisqKiogNiw3ICoqKioKKy0tLSA2LDE2IC0tLS0KKyAgCisrIEZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KKysgTE9XICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worKyBVUFAgIMDBwsPExcbHyMnKy8zNzs/Q0dLT1NXW2Nna29zd3t//CisrIAorKyBTT0ZPRlJPTSBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3//AwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d6/CisrIFNPRk9UTyAgIGViY3RlZmdoZWprbG5uZXBrcnN0ZXZ2a2VzZWJjdGVmZ2hlamtsbm5lcGtyc3RldnZrZXNlZWVlZWVlY2VlZWVlZWVlZG5lZWVlZWVlZWVlZXBzZWVlZWVlZWVjZWVlZWVlZWVkbmVlZWVlZWVlZWVlcD8KKysgCisrIE1JRFdPUkQJJy0KKysgCisgICMgRm9yYW5zdGlsbGluZyBhZiB1LQpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9kYS9tYWluLmFhcCBiL3J1bnRpbWUvc3BlbGwvZGEvbWFpbi5hYXAKaW5kZXggNTNlMzcxNi4uYjg0YTgwZiAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9kYS9tYWluLmFhcAorKysgYi9ydW50aW1lL3NwZWxsL2RhL21haW4uYWFwCkBAIC0xLDQgKzEsNCBAQAotIyBBYXAgcmVjaXBlIGZvciBGcmVuY2ggVmltIHNwZWxsIGZpbGVzLgorIyBBYXAgcmVjaXBlIGZvciBEYW5pc2ggVmltIHNwZWxsIGZpbGVzLgogCiAjIFVzZSBhIGZyZXNobHkgY29tcGlsZWQgVmltIGlmIGl0IGV4aXN0cy4KIEBpZiBvcy5wYXRoLmV4aXN0cygnLi4vLi4vLi4vc3JjL3ZpbScpOgpAQCAtMTEsMTEgKzExLDExIEBACiAKIGFsbDogJFNQRUxMRElSL2RhLmxhdGluMS5zcGwgJFNQRUxMRElSL2RhLnV0Zi04LnNwbCAuLi9SRUFETUVfZGEudHh0CiAKLSRTUEVMTERJUi9kYS5sYXRpbjEuc3BsIDogJFZJTSAkRklMRVMKKyRTUEVMTERJUi9kYS5sYXRpbjEuc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgZW52IExBTkc9ZGFfREsuSVNPODg1OS0xCiAJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2RhIGRhX0RLIiAtYyBxCiAKLSRTUEVMTERJUi9kYS51dGYtOC5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2RhLnV0Zi04LnNwbCA6ICRGSUxFUwogICAgICAgICA6c3lzIGVudiBMQU5HPWRhX0RLLlVURi04CiAJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2RhIGRhX0RLIiAtYyBxCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZGUvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL2RlL21haW4uYWFwCmluZGV4IGRmNjA4ZTEuLjcxOGU3OGMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvZGUvbWFpbi5hYXAKKysrIGIvcnVudGltZS9zcGVsbC9kZS9tYWluLmFhcApAQCAtMzIsMTEgKzMyLDExIEBACiAKIGFsbDogJFNQRUxMRElSL2RlLmxhdGluMS5zcGwgJFNQRUxMRElSL2RlLnV0Zi04LnNwbCAuLi9SRUFETUVfZGUudHh0CiAKLSRTUEVMTERJUi9kZS5sYXRpbjEuc3BsIDogJFZJTSAkRklMRVMKKyRTUEVMTERJUi9kZS5sYXRpbjEuc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgZW52IExBTkc9ZGVfREUuSVNPODg1OS0xCiAJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2RlICRERV9SRUdJT05TIiAtYyBxCiAKLSRTUEVMTERJUi9kZS51dGYtOC5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2RlLnV0Zi04LnNwbCA6ICRGSUxFUwogICAgICAgICA6c3lzIGVudiBMQU5HPWRlX0RFLlVURi04CiAJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2RlICRERV9SRUdJT05TIiAtYyBxCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZWwvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL2VsL21haW4uYWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZmEwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3NwZWxsL2VsL21haW4uYWFwCkBAIC0wLDAgKzEsNzggQEAKKyMgQWFwIHJlY2lwZSBmb3IgR3JlZWsgVmltIHNwZWxsIGZpbGVzLgorCisjIFVzZSBhIGZyZXNobHkgY29tcGlsZWQgVmltIGlmIGl0IGV4aXN0cy4KK0BpZiBvcy5wYXRoLmV4aXN0cygnLi4vLi4vLi4vc3JjL3ZpbScpOgorICAgIFZJTSA9IC4uLy4uLy4uL3NyYy92aW0KK0BlbHNlOgorICAgIDpwcm9nc2VhcmNoIFZJTSB2aW0KKworU1BFTExESVIgPSAuLgorRklMRVMgICAgPSBlbF9HUi5hZmYgZWxfR1IuZGljCisKK2FsbDogJFNQRUxMRElSL2VsLmlzby04ODU5LTcuc3BsICRTUEVMTERJUi9lbC51dGYtOC5zcGwgLi4vUkVBRE1FX2VsLnR4dAorCiskU1BFTExESVIvZWwuaXNvLTg4NTktNy5zcGwgOiAkRklMRVMKKyAgICAgICAgOnN5cyBlbnYgTEFORz1lbF9HUi5JU084ODU5LTcKKwkJJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvZWwgZWxfR1IiIC1jIHEKKworJFNQRUxMRElSL2VsLnV0Zi04LnNwbCA6ICRGSUxFUworICAgICAgICA6c3lzIGVudiBMQU5HPWVsX0dSLlVURi04CisJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2VsIGVsX0dSIiAtYyBxCisKKy4uL1JFQURNRV9lbC50eHQgOiBSRUFETUVfZWxfR1IudHh0CisgICAgICAgIDpjb3B5ICRzb3VyY2UgJHRhcmdldAorCisjCisjIEZldGNoaW5nIHRoZSBmaWxlcyBmcm9tIE9wZW5PZmZpY2Uub3JnLgorIworT09ESVIgPSBodHRwOi8vZnRwLnNlcnZpY2VzLm9wZW5vZmZpY2Uub3JnL3B1Yi9PcGVuT2ZmaWNlLm9yZy9jb250cmliL2RpY3Rpb25hcmllcworOmF0dHIge2ZldGNoID0gJE9PRElSLyVmaWxlJX0gZWxfR1IuemlwCisKKyMgVGhlIGZpbGVzIGRvbid0IGRlcGVuZCBvbiB0aGUgLnppcCBmaWxlIHNvIHRoYXQgd2UgY2FuIGRlbGV0ZSBpdC4KKyMgT25seSBkb3dubG9hZCB0aGUgemlwIGZpbGUgaWYgdGhlIHRhcmdldHMgZG9uJ3QgZXhpc3QuCitlbF9HUi5hZmYgZWxfR1IuZGljOiB7YnVpbGRjaGVjaz19CisgICAgICAgIDphc3NlcnRwa2cgdW56aXAgcGF0Y2gKKyAgICAgICAgOmZldGNoIGVsX0dSLnppcAorICAgICAgICA6c3lzICRVTlpJUCBlbF9HUi56aXAKKyAgICAgICAgOmRlbGV0ZSBlbF9HUi56aXAKKyAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnZWxfR1Iub3JpZy5hZmYnKToKKyAgICAgICAgICAgIDpjb3B5IGVsX0dSLmFmZiBlbF9HUi5vcmlnLmFmZgorICAgICAgICBAaWYgbm90IG9zLnBhdGguZXhpc3RzKCdlbF9HUi5vcmlnLmRpYycpOgorICAgICAgICAgICAgOmNvcHkgZWxfR1IuZGljIGVsX0dSLm9yaWcuZGljCisgICAgICAgIEBpZiBvcy5wYXRoLmV4aXN0cygnZWxfR1IuZGlmZicpOgorICAgICAgICAgICAgOnN5cyBwYXRjaCA8ZWxfR1IuZGlmZgorCisKKyMgR2VuZXJhdGUgZGlmZiBmaWxlcywgc28gdGhhdCBvdGhlcnMgY2FuIGdldCB0aGUgT3Blbk9mZmljZSBmaWxlcyBhbmQgYXBwbHkKKyMgdGhlIGRpZmZzIHRvIGdldCB0aGUgVmltIHZlcnNpb25zLgorCitkaWZmOgorICAgICAgICA6YXNzZXJ0cGtnIGRpZmYKKyAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBlbF9HUi5vcmlnLmFmZiBlbF9HUi5hZmYgPmVsX0dSLmRpZmYKKyAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBlbF9HUi5vcmlnLmRpYyBlbF9HUi5kaWMgPj5lbF9HUi5kaWZmCisKKworIyBDaGVjayBmb3IgdXBkYXRlZCBPcGVuT2ZmaWNlIHNwZWxsIGZpbGVzLiAgV2hlbiB0aGVyZSBhcmUgY2hhbmdlcyB0aGUKKyMgIi5uZXcuYWZmIiBhbmQgIi5uZXcuZGljIiBmaWxlcyBhcmUgbGVmdCBiZWhpbmQgZm9yIG1hbnVhbCBpbnNwZWN0aW9uLgorCitjaGVjazoKKyAgICAgICAgOmFzc2VydHBrZyB1bnppcCBkaWZmCisgICAgICAgIDpmZXRjaCBlbF9HUi56aXAKKyAgICAgICAgOm1rZGlyIHRtcAorICAgICAgICA6Y2QgdG1wCisgICAgICAgIEB0cnk6CisgICAgICAgICAgICBAaW1wb3J0IHN0YXQKKyAgICAgICAgICAgIDpzeXMgJFVOWklQIC4uL2VsX0dSLnppcAorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vZWxfR1Iub3JpZy5hZmYgZWxfR1IuYWZmID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IGVsX0dSLmFmZiAuLi9lbF9HUi5uZXcuYWZmCisgICAgICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAuLi9lbF9HUi5vcmlnLmRpYyBlbF9HUi5kaWMgPmQKKyAgICAgICAgICAgIEBpZiBvcy5zdGF0KCdkJylbc3RhdC5TVF9TSVpFXSA+IDA6CisgICAgICAgICAgICAgICAgOmNvcHkgZWxfR1IuZGljIC4uL2VsX0dSLm5ldy5kaWMKKyAgICAgICAgQGZpbmFsbHk6CisgICAgICAgICAgICA6Y2QgLi4KKyAgICAgICAgICAgIDpkZWxldGUge3J9e2Z9e3F9IHRtcAorICAgICAgICAgICAgOmRlbGV0ZSBlbF9HUi56aXAKKworCisjIHZpbTogc2V0IHN0cz00IHN3PTQgOgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9lbi5hc2NpaS5zcGwgYi9ydW50aW1lL3NwZWxsL2VuLmFzY2lpLnNwbAppbmRleCBjNzdlZjlhLi45ZDJiMDY4IDEwMDY0NAotLS0gYS9ydW50aW1lL3NwZWxsL2VuLmFzY2lpLnNwbAorKysgYi9ydW50aW1lL3NwZWxsL2VuLmFzY2lpLnNwbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL2VuLmxhdGluMS5zcGwgYi9ydW50aW1lL3NwZWxsL2VuLmxhdGluMS5zcGwKaW5kZXggODUxZjcxNC4uOTViNTM2MyAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9lbi5sYXRpbjEuc3BsCisrKyBiL3J1bnRpbWUvc3BlbGwvZW4ubGF0aW4xLnNwbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL2VuLnV0Zi04LnNwbCBiL3J1bnRpbWUvc3BlbGwvZW4udXRmLTguc3BsCmluZGV4IGQ2Yjc4MzYuLjhiMmVkYzYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvZW4udXRmLTguc3BsCisrKyBiL3J1bnRpbWUvc3BlbGwvZW4udXRmLTguc3BsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZW4vZW5fQVUuZGlmZiBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fQVUuZGlmZgppbmRleCBjMGVlNjJkLi4yZDZlNDJjIDEwMDY0NAotLS0gYS9ydW50aW1lL3NwZWxsL2VuL2VuX0FVLmRpZmYKKysrIGIvcnVudGltZS9zcGVsbC9lbi9lbl9BVS5kaWZmCkBAIC0yMzUyLDcgKzIzNTIsNyBAQAogISBTRlggMyBvIGlzdCdzIG8KICEgU0ZYIDMgMCBpc3QncyBbXmVveV0KICoqKiBlbl9BVS5vcmlnLmRpYwlGcmkgQXByIDE1IDEzOjIwOjM2IDIwMDUKLS0tLSBlbl9BVS5kaWMJU3VuIEp1bCAgMyAxNzoxMTowNyAyMDA1CistLS0gZW5fQVUuZGljCVR1ZSBBdWcgMTYgMTc6MDM6NDQgMjAwNQogKioqKioqKioqKioqKioqCiAqKiogOTEyLDkxNCAqKioqCiAgIEFsYXNrYS9NCkBAIC0yNjAzLDI1ICsyNjAzLDI2IEBACiAgIFZpbG5pdXMvTQogISB2aW0vTQogICB2aW5haWdyZXR0ZS9NUwotLS0tIDQzNzQyLDQzNzQ0IC0tLS0KKy0tLSA0Mzc0Miw0Mzc0NSAtLS0tCiAgIFZpbG5pdXMvTQogISBWaW0vTQorISB2aW0vPwogICB2aW5haWdyZXR0ZS9NUwogKioqKioqKioqKioqKioqCiAqKiogNDU0OTQsNDU0OTYgKioqKgogICB5aXBwZWUKIC0geS9LCiAgIFlNQ0EKLS0tLSA0NTQ4Nyw0NTQ4OCAtLS0tCistLS0gNDU0ODgsNDU0ODkgLS0tLQogKioqKioqKioqKioqKioqCiAqKiogNDU1ODYsNDU1ODggKioqKgogICB6YXAvU0dSRAogLSB6L2QKICAgWmVhbGFuZGVycwotLS0tIDQ1NTc4LDQ1NTc5IC0tLS0KKy0tLSA0NTU3OSw0NTU4MCAtLS0tCiAqKioqKioqKioqKioqKioKICoqKiA0NTY1NSAqKioqCi0tLS0gNDU2NDYsNDU2NTMgLS0tLQorLS0tIDQ1NjQ3LDQ1NjU0IC0tLS0KICAgenltdXJneS9TCiArIG5kCiArIHRoZSB0aGUvIQpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9lbi9lbl9DQS5kaWZmIGIvcnVudGltZS9zcGVsbC9lbi9lbl9DQS5kaWZmCmluZGV4IDkwNGUwYzYuLmM2MzE5Y2UgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvZW4vZW5fQ0EuZGlmZgorKysgYi9ydW50aW1lL3NwZWxsL2VuL2VuX0NBLmRpZmYKQEAgLTE2NSw3ICsxNjUsNyBAQAogISBTRlggRyAgIDAgICAgIGluZyAgICAgICAgW15lXQogICAKICoqKiBlbl9DQS5vcmlnLmRpYwlTYXQgQXByIDE2IDE0OjQwOjA2IDIwMDUKLS0tLSBlbl9DQS5kaWMJU3VuIEp1bCAgMyAxNzowOTo0MCAyMDA1CistLS0gZW5fQ0EuZGljCVR1ZSBBdWcgMTYgMTc6MDM6NTUgMjAwNQogKioqKioqKioqKioqKioqCiAqKiogNDYsNDggKioqKgogICBSL0cKQEAgLTQwNSw2ICs0MDUsMTUgQEAKICsgTW9vbGVuYWFyL00KICAgQnJlc2VuaGFtL00KICoqKioqKioqKioqKioqKgorKioqIDQwNDU1LDQwNDU3ICoqKioKKyAgcHJvbmVuZXNzL01TCishIHRyYW5zbAorICBDb25jaGl0YS9NCistLS0gNDA0NTQsNDA0NTYgLS0tLQorICBwcm9uZW5lc3MvTVMKKyEgdHJhbnNsLgorICBDb25jaGl0YS9NCisqKioqKioqKioqKioqKioKICoqKiA1MDI3Miw1MDI3MyAqKioqCiAtLS0gNTAyNzEsNTAyNzMgLS0tLQogICBEdXRjaC9NCkBAIC00MTUsMTkgKzQyNCwyMCBAQAogICBoYXRjaGVyeS9NUwogISB2aW0vU00KICAgY29tcGF0cmlvdC9NUwotLS0tIDUyNTY1LDUyNTY3IC0tLS0KKy0tLSA1MjU2NSw1MjU2OCAtLS0tCiAgIGhhdGNoZXJ5L01TCiAhIFZpbS9TTQorISB2aW0vPwogICBjb21wYXRyaW90L01TCiAqKioqKioqKioqKioqKioKICoqKiA1MzQ5MCw1MzQ5MSAqKioqCi0tLS0gNTM0OTAsNTM0OTIgLS0tLQorLS0tIDUzNDkxLDUzNDkzIC0tLS0KICAgdW5zZWFyY2hhYmxlCiArIHNlYXJjaGFibGUKICAgZmVsaWNpdG91cy9JWQogKioqKioqKioqKioqKioqCiAqKiogNjIzNDEgKioqKgotLS0tIDYyMzQyLDYyMzQ5IC0tLS0KKy0tLSA2MjM0Myw2MjM1MCAtLS0tCiAgIGRhdGEvTQogKyBldCBhbC4KICsgdGhlIHRoZS8hCmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL2VuL2VuX0dCLmRpZmYgYi9ydW50aW1lL3NwZWxsL2VuL2VuX0dCLmRpZmYKaW5kZXggNjAzMmMyNS4uNzE0MDc3ZCAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9lbi9lbl9HQi5kaWZmCisrKyBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fR0IuZGlmZgpAQCAtMjM1Niw3ICsyMzU2LDcgQEAKICEgU0ZYIDMgbyBpc3QncyBvCiAhIFNGWCAzIDAgaXN0J3MgW15lb3ldCiAqKiogZW5fR0Iub3JpZy5kaWMJU3VuIEp1bCAgMyAxODowNTowNyAyMDA1Ci0tLS0gZW5fR0IuZGljCVN1biBKdWwgIDMgMTg6MTk6MjUgMjAwNQorLS0tIGVuX0dCLmRpYwlUdWUgQXVnIDE2IDE3OjA1OjE4IDIwMDUKICoqKioqKioqKioqKioqKgogKioqIDYzMCw2MzIgKioqKgogICBCeXJuZS9NCkBAIC0yNDgyLDcgKzI0ODIsNyBAQAogICB2aW5kYWxvby9TCiAtLS0gMzA3NjAsMzA3NjMgLS0tLQogICB2aWxsZWluL1NNCi0hIHZpbS9NPworISB2aW0vPwogISBWaW0vTQogICB2aW5kYWxvby9TCiAqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZW4vZW5fTlouZGlmZiBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fTlouZGlmZgppbmRleCA0ZTI4ZmZmLi4zZWVlNzE4IDEwMDY0NAotLS0gYS9ydW50aW1lL3NwZWxsL2VuL2VuX05aLmRpZmYKKysrIGIvcnVudGltZS9zcGVsbC9lbi9lbl9OWi5kaWZmCkBAIC0yMzUzLDcgKzIzNTMsNyBAQAogISBTRlggMyBvIGlzdCdzIG8KICEgU0ZYIDMgMCBpc3QncyBbXmVveV0KICoqKiBlbl9OWi5vcmlnLmRpYwlGcmkgQXByIDE1IDEzOjIwOjM2IDIwMDUKLS0tLSBlbl9OWi5kaWMJU3VuIEp1bCAgMyAxNzoxMTozNCAyMDA1CistLS0gZW5fTlouZGljCVR1ZSBBdWcgMTYgMTc6MDU6MjggMjAwNQogKioqKioqKioqKioqKioqCiAqKiogNCw2ICoqKioKICAgMlpCCkBAIC0yNTkxLDgyICsyNTkxLDgzIEBACiAgIFZpbG5pdXMvTQogISB2aW0vTQogICB2aW5haWdyZXR0ZS9NUwotLS0tIDQ0MzEzLDQ0MzE1IC0tLS0KKy0tLSA0NDMxMyw0NDMxNiAtLS0tCiAgIFZpbG5pdXMvTQogISBWaW0vTQorISB2aW0vPwogICB2aW5haWdyZXR0ZS9NUwogKioqKioqKioqKioqKioqCiAqKiogNDU5MDYsNDU5MDggKioqKgogICB5J2FsbAogLSBwcmV5L00KICAgeWFjaHQvTTVTbUdECi0tLS0gNDU4ODUsNDU4ODYgLS0tLQorLS0tIDQ1ODg2LDQ1ODg3IC0tLS0KICoqKioqKioqKioqKioqKgogKioqIDQ2MTk4LDQ2MjAwICoqKioKICAgcmF0YS9NCiAtIGtha2EvTQogICB3YWthL00KLS0tLSA0NjE3Niw0NjE3NyAtLS0tCistLS0gNDYxNzcsNDYxNzggLS0tLQogKioqKioqKioqKioqKioqCiAqKiogNDYyMTYsNDYyMTggKioqKgogICBqYW5kYWwvTVMKIC0gU3dhbm5kcmkvTQogICBob29uL01TCi0tLS0gNDYxOTMsNDYxOTQgLS0tLQorLS0tIDQ2MTk0LDQ2MTk1IC0tLS0KICoqKioqKioqKioqKioqKgogKioqIDQ2MjQyLDQ2MjQ0ICoqKioKICAgSW52ZXJjYXJnaWxsL00KIC0gVGUKICAgQWxleGFuZHJhL00KLS0tLSA0NjIxOCw0NjIxOSAtLS0tCistLS0gNDYyMTksNDYyMjAgLS0tLQogKioqKioqKioqKioqKioqCiAqKiogNDYyNjEsNDYyNjMgKioqKgogICBLYXdlcmF1L00KIC0gS2VyaWtlcmkvTQogICBMeXR0ZWx0b24vTQotLS0tIDQ2MjM2LDQ2MjM3IC0tLS0KKy0tLSA0NjIzNyw0NjIzOCAtLS0tCiAqKioqKioqKioqKioqKioKICoqKiA0NjQ5MSw0NjQ5MyAqKioqCiAgIFdhaWFuYWthcnVhCiAtIEhha2F0ZXJlCiAgIFN3aW4KLS0tLSA0NjQ2NSw0NjQ2NiAtLS0tCistLS0gNDY0NjYsNDY0NjcgLS0tLQogKioqKioqKioqKioqKioqCiAqKiogNDY2OTAsNDY2OTIgKioqKgogICBPbWFyYW1hL00KIC0gV2FpcmFyYXBhL00KICAgS2lsZGEvTQotLS0tIDQ2NjYzLDQ2NjY0IC0tLS0KKy0tLSA0NjY2NCw0NjY2NSAtLS0tCiAqKioqKioqKioqKioqKioKICoqKiA0NjcxMSw0NjcxMyAqKioqCiAgIFdlbGxzZm9yZC9NCiAtIEFrYXJvYS9NCiAgIEF2b25oZWFkL00KLS0tLSA0NjY4Myw0NjY4NCAtLS0tCistLS0gNDY2ODQsNDY2ODUgLS0tLQogKioqKioqKioqKioqKioqCiAqKiogNDY4MzgsNDY4NDAgKioqKgogICBCYWxsYW50eW5lJ3MKIC0gREIKICAgTW9udGVpdGgncwotLS0tIDQ2ODA5LDQ2ODEwIC0tLS0KKy0tLSA0NjgxMCw0NjgxMSAtLS0tCiAqKioqKioqKioqKioqKioKICoqKiA0NjkyMCw0NjkyMiAqKioqCiAgIEVnbW9udC9NCiAtIFdhaXRha2kvTQogICBrYXRpcG8vTQotLS0tIDQ2ODkwLDQ2ODkxIC0tLS0KKy0tLSA0Njg5MSw0Njg5MiAtLS0tCiAqKioqKioqKioqKioqKioKICoqKiA0Njk1Niw0Njk1OCAqKioqCiAgIFN1bm55c2lkZS9NCiAtIFdhaXJhdS9NCiAgIFdhaWtvcm9wdXB1Ci0tLS0gNDY5MjUsNDY5MjYgLS0tLQorLS0tIDQ2OTI2LDQ2OTI3IC0tLS0KICoqKioqKioqKioqKioqKgogKioqIDQ3MTQxLDQ3MTQyICoqKioKICAgQnVya2luYQogISBGYXNvL00KIFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLS0tIDQ3MTA5LDQ3MTE3IC0tLS0KKy0tLSA0NzExMCw0NzExOCAtLS0tCiAgIEJ1cmtpbmEKICEgRmFzby9NCiAhIG5kCmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL2VuL2VuX1VTLmRpZmYgYi9ydW50aW1lL3NwZWxsL2VuL2VuX1VTLmRpZmYKaW5kZXggOTlkZGYwYS4uMTcwNTFkYyAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9lbi9lbl9VUy5kaWZmCisrKyBiL3J1bnRpbWUvc3BlbGwvZW4vZW5fVVMuZGlmZgpAQCAtMTcyLDcgKzE3Miw3IEBACiArIFJFUCBpZSB5CiAgIFJFUCBpIGVlCiAqKiogZW5fVVMub3JpZy5kaWMJRnJpIEFwciAxNSAxMzoyMDozNiAyMDA1Ci0tLS0gZW5fVVMuZGljCVN1biBKdWwgIDMgMTY6NTk6MjggMjAwNQorLS0tIGVuX1VTLmRpYwlUdWUgQXVnIDE2IDE3OjAzOjMxIDIwMDUKICoqKioqKioqKioqKioqKgogKioqIDU5NDQsNTk0NiAqKioqCiAgIGJrCkBAIC00NjcsNiArNDY3LDE1IEBACiAhIHNpbmdzCiAgIHN5YmFyaXRlL01TCiAqKioqKioqKioqKioqKioKKyoqKiA1NjkwNiw1NjkwOCAqKioqCisgIHRyYW5zaXQvU0dWTUQKKyEgdHJhbnNsCisgIHRyYW5zbGF0YWJpbGl0eS9NCistLS0gNTY5MDUsNTY5MDcgLS0tLQorICB0cmFuc2l0L1NHVk1ECishIHRyYW5zbC4KKyAgdHJhbnNsYXRhYmlsaXR5L00KKyoqKioqKioqKioqKioqKgogKioqIDU3NzI4LDU3NzMwICoqKioKICAgVFgKICEgdC9YVEpCRwpAQCAtNTAxLDE2ICs1MTAsMTcgQEAKICAgdmkvTURSCiAhIHZpbS9NUwogICB2aW5haWdyZXR0ZS9NUwotLS0tIDU5NTM3LDU5NTM5IC0tLS0KKy0tLSA1OTUzNyw1OTU0MCAtLS0tCiAgIHZpL01EUgogISBWaW0vTVMKKyEgdmltLz8KICAgdmluYWlncmV0dGUvTVMKICoqKioqKioqKioqKioqKgogKioqIDYxNTM0LDYxNTM2ICoqKioKICAgV1dXCiAhIHcvWFRKR1YKICAgV1kKLS0tLSA2MTUzMyw2MTUzNiAtLS0tCistLS0gNjE1MzQsNjE1MzcgLS0tLQogICBXV1cKICEgd2VucwogISB3aW5ncwpAQCAtNTIwLDE5ICs1MzAsMTkgQEAKICAgeWV3L1NNCiAtIHkvRgogICBZZ2dkcmFzaWwvTQotLS0tIDYxNzUwLDYxNzUxIC0tLS0KKy0tLSA2MTc1MSw2MTc1MiAtLS0tCiAqKioqKioqKioqKioqKioKICoqKiA2MjA1OCw2MjA2MCAqKioqCiAgIFpzaWdtb25keS9NCiAhIHovVEdKCiAgIFp1YmVuZWxnZW51YmkvTQotLS0tIDYyMDU3LDYyMDU5IC0tLS0KKy0tLSA2MjA1OCw2MjA2MCAtLS0tCiAgIFpzaWdtb25keS9NCiAhIHppbmdzCiAgIFp1YmVuZWxnZW51YmkvTQogKioqKioqKioqKioqKioqCiAqKiogNjIwNzcgKioqKgotLS0tIDYyMDc2LDYyMDgzIC0tLS0KKy0tLSA2MjA3Nyw2MjA4NCAtLS0tCiAgIHp5bXVyZ3kvUwogKyBuZAogKyB0aGUgdGhlLyEKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZW4vbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL2VuL21haW4uYWFwCmluZGV4IDM3YTllZDEuLjllNGI5OGUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvZW4vbWFpbi5hYXAKKysrIGIvcnVudGltZS9zcGVsbC9lbi9tYWluLmFhcApAQCAtMTYsMTcgKzE2LDE3IEBACiBhbGw6ICRTUEVMTERJUi9lbi5sYXRpbjEuc3BsICRTUEVMTERJUi9lbi51dGYtOC5zcGwgXAogICAgICAgICAkU1BFTExESVIvZW4uYXNjaWkuc3BsIC4uL1JFQURNRV9lbi50eHQKIAotJFNQRUxMRElSL2VuLmxhdGluMS5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2VuLmxhdGluMS5zcGwgOiAkRklMRVMKICAgICAgICAgOnN5cyBlbnYgTEFORz1lbl9VUy5JU084ODU5LTEKIAkJJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvZW4KICAgICAgICAgICAgICAgICAgICAgICAgIGVuX1VTIGVuX0FVIGVuX0NBIGVuX0dCIGVuX05aIiAtYyBxCiAKLSRTUEVMTERJUi9lbi51dGYtOC5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2VuLnV0Zi04LnNwbCA6ICRGSUxFUwogICAgICAgICA6c3lzIGVudiBMQU5HPWVuX1VTLlVURi04CiAJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2VuCiAgICAgICAgICAgICAgICAgICAgICAgICBlbl9VUyBlbl9BVSBlbl9DQSBlbl9HQiBlbl9OWiIgLWMgcQogCi0kU1BFTExESVIvZW4uYXNjaWkuc3BsIDogJFZJTSAkRklMRVMKKyRTUEVMTERJUi9lbi5hc2NpaS5zcGwgOiAkRklMRVMKICAgICAgICAgOnN5cyAkVklNIC11IE5PTkUgLWUgLWMgIm1rc3BlbGwhIC1hc2NpaSAkU1BFTExESVIvZW4KICAgICAgICAgICAgICAgICAgICAgICAgIGVuX1VTIGVuX0FVIGVuX0NBIGVuX0dCIGVuX05aIiAtYyBxCiAgCmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL2VvL2VvX2wzLmRpZmYgYi9ydW50aW1lL3NwZWxsL2VvL2VvX2wzLmRpZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvc3BlbGwvZW8vZW9fbDMuZGlmZgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9lby9tYWluLmFhcCBiL3J1bnRpbWUvc3BlbGwvZW8vbWFpbi5hYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTliNzU1NQotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvc3BlbGwvZW8vbWFpbi5hYXAKQEAgLTAsMCArMSw4MCBAQAorIyBBYXAgcmVjaXBlIGZvciBFc3BlcmFudG8gVmltIHNwZWxsIGZpbGVzLgorCisjIFVzZSBhIGZyZXNobHkgY29tcGlsZWQgVmltIGlmIGl0IGV4aXN0cy4KK0BpZiBvcy5wYXRoLmV4aXN0cygnLi4vLi4vLi4vc3JjL3ZpbScpOgorICAgIFZJTSA9IC4uLy4uLy4uL3NyYy92aW0KK0BlbHNlOgorICAgIDpwcm9nc2VhcmNoIFZJTSB2aW0KKworU1BFTExESVIgPSAuLgorRklMRVMgICAgPSBlb19sMy5hZmYgZW9fbDMuZGljCisKK2FsbDogJFNQRUxMRElSL2VvLmlzby04ODU5LTMuc3BsICRTUEVMTERJUi9lby51dGYtOC5zcGwgLi4vUkVBRE1FX2VvLnR4dAorCiskU1BFTExESVIvZW8uaXNvLTg4NTktMy5zcGwgOiAkRklMRVMKKyAgICAgICAgOnN5cyAkVklNIC11IE5PTkUgLWUgLWMgInNldCBlbmM9aXNvLTg4NTktMyIKKyAgICAgICAgICAgICAgICAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2VvIGVvX2wzIiAtYyBxCisKKyRTUEVMTERJUi9lby51dGYtOC5zcGwgOiAkRklMRVMKKyAgICAgICAgOnN5cyAkVklNIC11IE5PTkUgLWUgLWMgInNldCBlbmM9dXRmLTgiCisgICAgICAgICAgICAgICAgLWMgIm1rc3BlbGwhICRTUEVMTERJUi9lbyBlb19sMyIgLWMgcQorCisuLi9SRUFETUVfZW8udHh0IDogUkVBRE1FX2VvX2wzLnR4dAorICAgICAgICA6Y29weSAkc291cmNlICR0YXJnZXQKKyAgICAgICAgIyBmaXggbWlzc2luZyBuZXdsaW5lCisgICAgICAgIDpzeXMgJFZJTSAkdGFyZ2V0IC1lIC1jICJzZXQgZmY9dW5peCIgLWMgd3EKKworIworIyBGZXRjaGluZyB0aGUgZmlsZXMgZnJvbSBPcGVuT2ZmaWNlLm9yZy4KKyMKK09PRElSID0gaHR0cDovL2Z0cC5zZXJ2aWNlcy5vcGVub2ZmaWNlLm9yZy9wdWIvT3Blbk9mZmljZS5vcmcvY29udHJpYi9kaWN0aW9uYXJpZXMKKzphdHRyIHtmZXRjaCA9ICRPT0RJUi8lZmlsZSV9IGVvLnppcAorCisjIFRoZSBmaWxlcyBkb24ndCBkZXBlbmQgb24gdGhlIC56aXAgZmlsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgaXQuCisjIE9ubHkgZG93bmxvYWQgdGhlIHppcCBmaWxlIGlmIHRoZSB0YXJnZXRzIGRvbid0IGV4aXN0LgorZW9fbDMuYWZmIGVvX2wzLmRpYzoge2J1aWxkY2hlY2s9fQorICAgICAgICA6YXNzZXJ0cGtnIHVuemlwIHBhdGNoCisgICAgICAgIDpmZXRjaCBlby56aXAKKyAgICAgICAgOnN5cyAkVU5aSVAgZW8uemlwCisgICAgICAgIDpkZWxldGUgZW8uemlwCisgICAgICAgIEBpZiBub3Qgb3MucGF0aC5leGlzdHMoJ2VvX2wzLm9yaWcuYWZmJyk6CisgICAgICAgICAgICA6Y29weSBlb19sMy5hZmYgZW9fbDMub3JpZy5hZmYKKyAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnZW9fbDMub3JpZy5kaWMnKToKKyAgICAgICAgICAgIDpjb3B5IGVvX2wzLmRpYyBlb19sMy5vcmlnLmRpYworICAgICAgICBAaWYgb3MucGF0aC5leGlzdHMoJ2VvX2wzLmRpZmYnKToKKyAgICAgICAgICAgIDpzeXMgcGF0Y2ggPGVvX2wzLmRpZmYKKworCisjIEdlbmVyYXRlIGRpZmYgZmlsZXMsIHNvIHRoYXQgb3RoZXJzIGNhbiBnZXQgdGhlIE9wZW5PZmZpY2UgZmlsZXMgYW5kIGFwcGx5CisjIHRoZSBkaWZmcyB0byBnZXQgdGhlIFZpbSB2ZXJzaW9ucy4KKworZGlmZjoKKyAgICAgICAgOmFzc2VydHBrZyBkaWZmCisgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgZW9fbDMub3JpZy5hZmYgZW9fbDMuYWZmID5lb19sMy5kaWZmCisgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgZW9fbDMub3JpZy5kaWMgZW9fbDMuZGljID4+ZW9fbDMuZGlmZgorCisKKyMgQ2hlY2sgZm9yIHVwZGF0ZWQgT3Blbk9mZmljZSBzcGVsbCBmaWxlcy4gIFdoZW4gdGhlcmUgYXJlIGNoYW5nZXMgdGhlCisjICIubmV3LmFmZiIgYW5kICIubmV3LmRpYyIgZmlsZXMgYXJlIGxlZnQgYmVoaW5kIGZvciBtYW51YWwgaW5zcGVjdGlvbi4KKworY2hlY2s6CisgICAgICAgIDphc3NlcnRwa2cgdW56aXAgZGlmZgorICAgICAgICA6ZmV0Y2ggZW8uemlwCisgICAgICAgIDpta2RpciB0bXAKKyAgICAgICAgOmNkIHRtcAorICAgICAgICBAdHJ5OgorICAgICAgICAgICAgQGltcG9ydCBzdGF0CisgICAgICAgICAgICA6c3lzICRVTlpJUCAuLi9lby56aXAKKyAgICAgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC4uL2VvX2wzLm9yaWcuYWZmIGVvX2wzLmFmZiA+ZAorICAgICAgICAgICAgQGlmIG9zLnN0YXQoJ2QnKVtzdGF0LlNUX1NJWkVdID4gMDoKKyAgICAgICAgICAgICAgICA6Y29weSBlb19sMy5hZmYgLi4vZW9fbDMubmV3LmFmZgorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vZW9fbDMub3JpZy5kaWMgZW9fbDMuZGljID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IGVvX2wzLmRpYyAuLi9lb19sMy5uZXcuZGljCisgICAgICAgIEBmaW5hbGx5OgorICAgICAgICAgICAgOmNkIC4uCisgICAgICAgICAgICA6ZGVsZXRlIHtyfXtmfXtxfSB0bXAKKyAgICAgICAgICAgIDpkZWxldGUgZW8uemlwCisKKworIyB2aW06IHNldCBzdHM9NCBzdz00IDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZm8vZm9fRk8uZGlmZiBiL3J1bnRpbWUvc3BlbGwvZm8vZm9fRk8uZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTJiZWZlCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9zcGVsbC9mby9mb19GTy5kaWZmCkBAIC0wLDAgKzEsMTQgQEAKKyoqKiBmb19GTy5vcmlnLmFmZglUdWUgQXVnIDE2IDE3OjM5OjIyIDIwMDUKKy0tLSBmb19GTy5hZmYJVHVlIEF1ZyAxNiAxNzo0MTowMCAyMDA1CisqKioqKioqKioqKioqKioKKyoqKiA2ICoqKioKKy0tLSA2LDE0IC0tLS0KKyAgCisrIEZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KKysgTE9XICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/worKyBVUFAgIMDBwsPExcbHyMnKy8zNzs/Q0dLT1NXW2Nna29zd3t//CisrIAorKyBTT0ZPRlJPTSBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3//AwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d6/CisrIFNPRk9UTyAgIGViY3RlZmdoZWprbG5uZXBrcnN0ZXZ2a2VzZWJjdGVmZ2hlamtsbm5lcGtyc3RldnZrZXNlZWVlZWVlY2VlZWVlZWVlZG5lZWVlZWVlZWVlZXBzZWVlZWVlZWVjZWVlZWVlZWVkbmVlZWVlZWVlZWVlcD8KKysgCisrIE1JRFdPUkQJJy0KZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZm8vbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL2ZvL21haW4uYWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0OGQ0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3NwZWxsL2ZvL21haW4uYWFwCkBAIC0wLDAgKzEsNzggQEAKKyMgQWFwIHJlY2lwZSBmb3IgRmFyb2VzZSBWaW0gc3BlbGwgZmlsZXMuCisKKyMgVXNlIGEgZnJlc2hseSBjb21waWxlZCBWaW0gaWYgaXQgZXhpc3RzLgorQGlmIG9zLnBhdGguZXhpc3RzKCcuLi8uLi8uLi9zcmMvdmltJyk6CisgICAgVklNID0gLi4vLi4vLi4vc3JjL3ZpbQorQGVsc2U6CisgICAgOnByb2dzZWFyY2ggVklNIHZpbQorCitTUEVMTERJUiA9IC4uCitGSUxFUyAgICA9IGZvX0ZPLmFmZiBmb19GTy5kaWMKKworYWxsOiAkU1BFTExESVIvZm8ubGF0aW4xLnNwbCAkU1BFTExESVIvZm8udXRmLTguc3BsIC4uL1JFQURNRV9mby50eHQKKworJFNQRUxMRElSL2ZvLmxhdGluMS5zcGwgOiAkRklMRVMKKyAgICAgICAgOnN5cyBlbnYgTEFORz1mb19GTy5JU084ODU5LTEKKwkJJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvZm8gZm9fRk8iIC1jIHEKKworJFNQRUxMRElSL2ZvLnV0Zi04LnNwbCA6ICRGSUxFUworICAgICAgICA6c3lzIGVudiBMQU5HPWZvX0ZPLlVURi04CisJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2ZvIGZvX0ZPIiAtYyBxCisKKy4uL1JFQURNRV9mby50eHQgOiBSRUFETUVfZm9fRk8udHh0IENvcHlyaWdodAorICAgICAgICA6Y2F0ICRzb3VyY2UgPiEgJHRhcmdldAorCisjCisjIEZldGNoaW5nIHRoZSBmaWxlcyBmcm9tIE9wZW5PZmZpY2Uub3JnLgorIworT09ESVIgPSBodHRwOi8vZnRwLnNlcnZpY2VzLm9wZW5vZmZpY2Uub3JnL3B1Yi9PcGVuT2ZmaWNlLm9yZy9jb250cmliL2RpY3Rpb25hcmllcworOmF0dHIge2ZldGNoID0gJE9PRElSLyVmaWxlJX0gZm9fRk8uemlwCisKKyMgVGhlIGZpbGVzIGRvbid0IGRlcGVuZCBvbiB0aGUgLnppcCBmaWxlIHNvIHRoYXQgd2UgY2FuIGRlbGV0ZSBpdC4KKyMgT25seSBkb3dubG9hZCB0aGUgemlwIGZpbGUgaWYgdGhlIHRhcmdldHMgZG9uJ3QgZXhpc3QuCitmb19GTy5hZmYgZm9fRk8uZGljOiB7YnVpbGRjaGVjaz19CisgICAgICAgIDphc3NlcnRwa2cgdW56aXAgcGF0Y2gKKyAgICAgICAgOmZldGNoIGZvX0ZPLnppcAorICAgICAgICA6c3lzICRVTlpJUCBmb19GTy56aXAKKyAgICAgICAgOmRlbGV0ZSBmb19GTy56aXAKKyAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnZm9fRk8ub3JpZy5hZmYnKToKKyAgICAgICAgICAgIDpjb3B5IGZvX0ZPLmFmZiBmb19GTy5vcmlnLmFmZgorICAgICAgICBAaWYgbm90IG9zLnBhdGguZXhpc3RzKCdmb19GTy5vcmlnLmRpYycpOgorICAgICAgICAgICAgOmNvcHkgZm9fRk8uZGljIGZvX0ZPLm9yaWcuZGljCisgICAgICAgIEBpZiBvcy5wYXRoLmV4aXN0cygnZm9fRk8uZGlmZicpOgorICAgICAgICAgICAgOnN5cyBwYXRjaCA8Zm9fRk8uZGlmZgorCisKKyMgR2VuZXJhdGUgZGlmZiBmaWxlcywgc28gdGhhdCBvdGhlcnMgY2FuIGdldCB0aGUgT3Blbk9mZmljZSBmaWxlcyBhbmQgYXBwbHkKKyMgdGhlIGRpZmZzIHRvIGdldCB0aGUgVmltIHZlcnNpb25zLgorCitkaWZmOgorICAgICAgICA6YXNzZXJ0cGtnIGRpZmYKKyAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBmb19GTy5vcmlnLmFmZiBmb19GTy5hZmYgPmZvX0ZPLmRpZmYKKyAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBmb19GTy5vcmlnLmRpYyBmb19GTy5kaWMgPj5mb19GTy5kaWZmCisKKworIyBDaGVjayBmb3IgdXBkYXRlZCBPcGVuT2ZmaWNlIHNwZWxsIGZpbGVzLiAgV2hlbiB0aGVyZSBhcmUgY2hhbmdlcyB0aGUKKyMgIi5uZXcuYWZmIiBhbmQgIi5uZXcuZGljIiBmaWxlcyBhcmUgbGVmdCBiZWhpbmQgZm9yIG1hbnVhbCBpbnNwZWN0aW9uLgorCitjaGVjazoKKyAgICAgICAgOmFzc2VydHBrZyB1bnppcCBkaWZmCisgICAgICAgIDpmZXRjaCBmb19GTy56aXAKKyAgICAgICAgOm1rZGlyIHRtcAorICAgICAgICA6Y2QgdG1wCisgICAgICAgIEB0cnk6CisgICAgICAgICAgICBAaW1wb3J0IHN0YXQKKyAgICAgICAgICAgIDpzeXMgJFVOWklQIC4uL2ZvX0ZPLnppcAorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vZm9fRk8ub3JpZy5hZmYgZm9fRk8uYWZmID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IGZvX0ZPLmFmZiAuLi9mb19GTy5uZXcuYWZmCisgICAgICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAuLi9mb19GTy5vcmlnLmRpYyBmb19GTy5kaWMgPmQKKyAgICAgICAgICAgIEBpZiBvcy5zdGF0KCdkJylbc3RhdC5TVF9TSVpFXSA+IDA6CisgICAgICAgICAgICAgICAgOmNvcHkgZm9fRk8uZGljIC4uL2ZvX0ZPLm5ldy5kaWMKKyAgICAgICAgQGZpbmFsbHk6CisgICAgICAgICAgICA6Y2QgLi4KKyAgICAgICAgICAgIDpkZWxldGUge3J9e2Z9e3F9IHRtcAorICAgICAgICAgICAgOmRlbGV0ZSBmb19GTy56aXAKKworCisjIHZpbTogc2V0IHN0cz00IHN3PTQgOgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9mci9tYWluLmFhcCBiL3J1bnRpbWUvc3BlbGwvZnIvbWFpbi5hYXAKaW5kZXggOWU1MTAzOS4uZTc0MjQzMiAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9mci9tYWluLmFhcAorKysgYi9ydW50aW1lL3NwZWxsL2ZyL21haW4uYWFwCkBAIC0xMSwxMSArMTEsMTEgQEAKIAogYWxsOiAkU1BFTExESVIvZnIubGF0aW4xLnNwbCAkU1BFTExESVIvZnIudXRmLTguc3BsIC4uL1JFQURNRV9mci50eHQKIAotJFNQRUxMRElSL2ZyLmxhdGluMS5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2ZyLmxhdGluMS5zcGwgOiAkRklMRVMKICAgICAgICAgOnN5cyBlbnYgTEFORz1mcl9GUi5JU084ODU5LTEKIAkJJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvZnIgZnJfRlIiIC1jIHEKIAotJFNQRUxMRElSL2ZyLnV0Zi04LnNwbCA6ICRWSU0gJEZJTEVTCiskU1BFTExESVIvZnIudXRmLTguc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgZW52IExBTkc9ZnJfRlIuVVRGLTgKIAkJJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvZnIgZnJfRlIiIC1jIHEKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9nbC9nbF9FUy5kaWZmIGIvcnVudGltZS9zcGVsbC9nbC9nbF9FUy5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkZGNmNzgKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3NwZWxsL2dsL2dsX0VTLmRpZmYKQEAgLTAsMCArMSwxNSBAQAorKioqIGdsX0VTLm9yaWcuYWZmCVR1ZSBBdWcgMTYgMTc6NTU6MzggMjAwNQorLS0tIGdsX0VTLmFmZglUdWUgQXVnIDE2IDE3OjU3OjAzIDIwMDUKKyoqKioqKioqKioqKioqKgorKioqIDIsMyAqKioqCistLS0gMiwxMSAtLS0tCisgIFRSWSDh6e3z+mVzaWFucnRvbGNkdWdtcGhiZnbxCisrIAorKyBGT0wgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//CisrIExPVyAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KKysgVVBQICDAwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d7f/worKyAKKysgU09GT0ZST00gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWuDh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbY2drb3N3evworKyBTT0ZPVE8gICBlYmN0ZWZnaGVqa2xubmVwa3JzdGV2dmtlc2ViY3RlZmdoZWprbG5uZXBrcnN0ZXZ2a2VzZWVlZWVlZWNlZWVlZWVlZWRuZWVlZWVlZWVlZWVwc2VlZWVlZWVlY2VlZWVlZWVlZG5lZWVlZWVlZWVlZXA/CisrIAorICAjIENPTVBPVU5ETUlOIDMKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZ2wvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL2dsL21haW4uYWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmYzAxMmEKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3NwZWxsL2dsL21haW4uYWFwCkBAIC0wLDAgKzEsNzggQEAKKyMgQWFwIHJlY2lwZSBmb3IgR2FsaWNpYW4gKFNwYWluKSBWaW0gc3BlbGwgZmlsZXMuCisKKyMgVXNlIGEgZnJlc2hseSBjb21waWxlZCBWaW0gaWYgaXQgZXhpc3RzLgorQGlmIG9zLnBhdGguZXhpc3RzKCcuLi8uLi8uLi9zcmMvdmltJyk6CisgICAgVklNID0gLi4vLi4vLi4vc3JjL3ZpbQorQGVsc2U6CisgICAgOnByb2dzZWFyY2ggVklNIHZpbQorCitTUEVMTERJUiA9IC4uCitGSUxFUyAgICA9IGdsX0VTLmFmZiBnbF9FUy5kaWMKKworYWxsOiAkU1BFTExESVIvZ2wubGF0aW4xLnNwbCAkU1BFTExESVIvZ2wudXRmLTguc3BsIC4uL1JFQURNRV9nbC50eHQKKworJFNQRUxMRElSL2dsLmxhdGluMS5zcGwgOiAkRklMRVMKKyAgICAgICAgOnN5cyBlbnYgTEFORz1nbF9FUy5JU084ODU5LTEKKwkJJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvZ2wgZ2xfRVMiIC1jIHEKKworJFNQRUxMRElSL2dsLnV0Zi04LnNwbCA6ICRGSUxFUworICAgICAgICA6c3lzIGVudiBMQU5HPWdsX0VTLlVURi04CisJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2dsIGdsX0VTIiAtYyBxCisKKy4uL1JFQURNRV9nbC50eHQgOiBSRUFETUVfZ2xfRVMudHh0CisgICAgICAgIDpjb3B5ICRzb3VyY2UgJHRhcmdldAorCisjCisjIEZldGNoaW5nIHRoZSBmaWxlcyBmcm9tIE9wZW5PZmZpY2Uub3JnLgorIworT09ESVIgPSBodHRwOi8vZnRwLnNlcnZpY2VzLm9wZW5vZmZpY2Uub3JnL3B1Yi9PcGVuT2ZmaWNlLm9yZy9jb250cmliL2RpY3Rpb25hcmllcworOmF0dHIge2ZldGNoID0gJE9PRElSLyVmaWxlJX0gZ2xfRVMuemlwCisKKyMgVGhlIGZpbGVzIGRvbid0IGRlcGVuZCBvbiB0aGUgLnppcCBmaWxlIHNvIHRoYXQgd2UgY2FuIGRlbGV0ZSBpdC4KKyMgT25seSBkb3dubG9hZCB0aGUgemlwIGZpbGUgaWYgdGhlIHRhcmdldHMgZG9uJ3QgZXhpc3QuCitnbF9FUy5hZmYgZ2xfRVMuZGljOiB7YnVpbGRjaGVjaz19CisgICAgICAgIDphc3NlcnRwa2cgdW56aXAgcGF0Y2gKKyAgICAgICAgOmZldGNoIGdsX0VTLnppcAorICAgICAgICA6c3lzICRVTlpJUCBnbF9FUy56aXAKKyAgICAgICAgOmRlbGV0ZSBnbF9FUy56aXAKKyAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnZ2xfRVMub3JpZy5hZmYnKToKKyAgICAgICAgICAgIDpjb3B5IGdsX0VTLmFmZiBnbF9FUy5vcmlnLmFmZgorICAgICAgICBAaWYgbm90IG9zLnBhdGguZXhpc3RzKCdnbF9FUy5vcmlnLmRpYycpOgorICAgICAgICAgICAgOmNvcHkgZ2xfRVMuZGljIGdsX0VTLm9yaWcuZGljCisgICAgICAgIEBpZiBvcy5wYXRoLmV4aXN0cygnZ2xfRVMuZGlmZicpOgorICAgICAgICAgICAgOnN5cyBwYXRjaCA8Z2xfRVMuZGlmZgorCisKKyMgR2VuZXJhdGUgZGlmZiBmaWxlcywgc28gdGhhdCBvdGhlcnMgY2FuIGdldCB0aGUgT3Blbk9mZmljZSBmaWxlcyBhbmQgYXBwbHkKKyMgdGhlIGRpZmZzIHRvIGdldCB0aGUgVmltIHZlcnNpb25zLgorCitkaWZmOgorICAgICAgICA6YXNzZXJ0cGtnIGRpZmYKKyAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBnbF9FUy5vcmlnLmFmZiBnbF9FUy5hZmYgPmdsX0VTLmRpZmYKKyAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBnbF9FUy5vcmlnLmRpYyBnbF9FUy5kaWMgPj5nbF9FUy5kaWZmCisKKworIyBDaGVjayBmb3IgdXBkYXRlZCBPcGVuT2ZmaWNlIHNwZWxsIGZpbGVzLiAgV2hlbiB0aGVyZSBhcmUgY2hhbmdlcyB0aGUKKyMgIi5uZXcuYWZmIiBhbmQgIi5uZXcuZGljIiBmaWxlcyBhcmUgbGVmdCBiZWhpbmQgZm9yIG1hbnVhbCBpbnNwZWN0aW9uLgorCitjaGVjazoKKyAgICAgICAgOmFzc2VydHBrZyB1bnppcCBkaWZmCisgICAgICAgIDpmZXRjaCBnbF9FUy56aXAKKyAgICAgICAgOm1rZGlyIHRtcAorICAgICAgICA6Y2QgdG1wCisgICAgICAgIEB0cnk6CisgICAgICAgICAgICBAaW1wb3J0IHN0YXQKKyAgICAgICAgICAgIDpzeXMgJFVOWklQIC4uL2dsX0VTLnppcAorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vZ2xfRVMub3JpZy5hZmYgZ2xfRVMuYWZmID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IGdsX0VTLmFmZiAuLi9nbF9FUy5uZXcuYWZmCisgICAgICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAuLi9nbF9FUy5vcmlnLmRpYyBnbF9FUy5kaWMgPmQKKyAgICAgICAgICAgIEBpZiBvcy5zdGF0KCdkJylbc3RhdC5TVF9TSVpFXSA+IDA6CisgICAgICAgICAgICAgICAgOmNvcHkgZ2xfRVMuZGljIC4uL2dsX0VTLm5ldy5kaWMKKyAgICAgICAgQGZpbmFsbHk6CisgICAgICAgICAgICA6Y2QgLi4KKyAgICAgICAgICAgIDpkZWxldGUge3J9e2Z9e3F9IHRtcAorICAgICAgICAgICAgOmRlbGV0ZSBnbF9FUy56aXAKKworCisjIHZpbTogc2V0IHN0cz00IHN3PTQgOgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9oZS9tYWluLmFhcCBiL3J1bnRpbWUvc3BlbGwvaGUvbWFpbi5hYXAKaW5kZXggNGRiOTMwYi4uNzE1ODUxNyAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9oZS9tYWluLmFhcAorKysgYi9ydW50aW1lL3NwZWxsL2hlL21haW4uYWFwCkBAIC0xMSwxMSArMTEsMTEgQEAKIAogYWxsOiAkU1BFTExESVIvaGUudXRmLTguc3BsICRTUEVMTERJUi9oZS5pc28tODg1OS04LnNwbCAuLi9SRUFETUVfaGUudHh0CiAKLSRTUEVMTERJUi9oZS51dGYtOC5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2hlLnV0Zi04LnNwbCA6ICRGSUxFUwogICAgICAgICA6c3lzIGVudiBMQU5HPWhlX0lMLlVURi04CiAJCSRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2hlIGhlX0lMIiAtYyBxCiAKLSRTUEVMTERJUi9oZS5pc28tODg1OS04LnNwbCA6ICRWSU0gJEZJTEVTCiskU1BFTExESVIvaGUuaXNvLTg4NTktOC5zcGwgOiAkRklMRVMKICAgICAgICAgOnN5cyAkVklNIC11IE5PTkUgLWUgLWMgInNldCBlbmM9aXNvLTg4NTktOCIKICAgICAgICAgICAgICAgICAgICAgICAgIC1jICJta3NwZWxsISAkU1BFTExESVIvaGUgaGVfSUwiIC1jIHEKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9oci9tYWluLmFhcCBiL3J1bnRpbWUvc3BlbGwvaHIvbWFpbi5hYXAKaW5kZXggZjI3MmI4Ny4uNjk5ZDYxZiAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9oci9tYWluLmFhcAorKysgYi9ydW50aW1lL3NwZWxsL2hyL21haW4uYWFwCkBAIC0xLDQgKzEsNCBAQAotIyBBYXAgcmVjaXBlIGZvciBQb2xpc2ggVmltIHNwZWxsIGZpbGVzLgorIyBBYXAgcmVjaXBlIGZvciBDcm9hdGlhbiBWaW0gc3BlbGwgZmlsZXMuCiAKICMgVXNlIGEgZnJlc2hseSBjb21waWxlZCBWaW0gaWYgaXQgZXhpc3RzLgogQGlmIG9zLnBhdGguZXhpc3RzKCcuLi8uLi8uLi9zcmMvdmltJyk6CkBAIC0xMiwxMyArMTIsMTMgQEAKIGFsbDogJFNQRUxMRElSL2hyLmlzby04ODU5LTIuc3BsICRTUEVMTERJUi9wbC51dGYtOC5zcGwgXAogICAgICAgICAkU1BFTExESVIvaHIuY3AxMjUwLnNwbCAuLi9SRUFETUVfcGwudHh0CiAKLSRTUEVMTERJUi9oci5pc28tODg1OS0yLnNwbCA6ICRWSU0gJEZJTEVTCiskU1BFTExESVIvaHIuaXNvLTg4NTktMi5zcGwgOiAkRklMRVMKICAgICAgICAgOnN5cyBlbnYgTEFORz1ocl9IUi5JU084ODU5LTIgJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvaHIgaHJfSFIiIC1jIHEKIAotJFNQRUxMRElSL2hyLnV0Zi04LnNwbCA6ICRWSU0gJEZJTEVTCiskU1BFTExESVIvaHIudXRmLTguc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgZW52IExBTkc9aHJfSFIuVVRGLTggJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvaHIgaHJfSFIiIC1jIHEKIAotJFNQRUxMRElSL2hyLmNwMTI1MC5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2hyLmNwMTI1MC5zcGwgOiAkRklMRVMKICAgICAgICAgOnN5cyAkVklNIC11IE5PTkUgLWUgLWMgInNldCBlbmM9Y3AxMjUwIiAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2hyIGhyX0hSIiAtYyBxCiAKIC4uL1JFQURNRV9oci50eHQ6IFJFQURNRV9ocl9IUi50eHQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvaHUvaHVfSFUuZGlmZiBiL3J1bnRpbWUvc3BlbGwvaHUvaHVfSFUuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTIyYzc5Ci0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9zcGVsbC9odS9odV9IVS5kaWZmCkBAIC0wLDAgKzEsMTI4IEBACisqKiogaHVfSFUub3JpZy5hZmYJVHVlIEF1ZyAxNiAxODoyMToxMCAyMDA1CistLS0gaHVfSFUuYWZmCVR1ZSBBdWcgMTYgMTk6NDI6MzQgMjAwNQorKioqKioqKioqKioqKioqCisqKiogNTcsNjIgKioqKgorICAKKyEgTkFNRSBNYWd5YXIgSXNwZWxsIGhlbHllc+1y4XNpIHN683ThcgorISBMQU5HIGh1X0hVCishIEhPTUUgaHR0cDovL21hZ3lhcmlzcGVsbC5zb3VyY2Vmb3JnZS5uZXQKKyEgVkVSU0lPTiBNYWd5YXIgMC45OS40LjIKKyAgU0VUIElTTzg4NTktMgorLS0tIDU3LDYyIC0tLS0KKyAgCishICNOQU1FIE1hZ3lhciBJc3BlbGwgaGVseWVz7XLhc2kgc3rzdOFyCishICNMQU5HIGh1X0hVCishICNIT01FIGh0dHA6Ly9tYWd5YXJpc3BlbGwuc291cmNlZm9yZ2UubmV0CishICNWRVJTSU9OIE1hZ3lhciAwLjk5LjQuMgorICBTRVQgSVNPODg1OS0yCisqKioqKioqKioqKioqKioKKyoqKiA2NSw3NyAqKioqCisgIENPTVBPVU5ERkxBRyBZCishIENPTVBPVU5EV09SRCAyIHkKKyEgQ09NUE9VTkRTWUxMQUJMRSA2IGHhZelp7W/z9vV1+vz7CishIFNZTExBQkxFTlVNIGtsbWMKKyEgQ09NUE9VTkRGSVJTVCB2CishIENPTVBPVU5ETEFTVCB4CishIEZPUkJJRERFTldPUkQgdworISBPTkxZUk9PVCB1CishIEFDQ0VOVCDh6e3z9vX6/PsgYWVpb29vdXV1CishIENIRUNLTlVNCishIFdPUkRDSEFSUyAtLqclsDAxMjM0NTY3ODkKKyEgSFVfS09UT0hBTkdaTyBaCisgIAorLS0tIDY1LDgwIC0tLS0KKyAgQ09NUE9VTkRGTEFHIFkKKyEgI0NPTVBPVU5EV09SRCAyIHkKKyEgI0NPTVBPVU5EU1lMTEFCTEUgNiBh4WXpae1v8/b1dfr8+worISAjU1lMTEFCTEVOVU0ga2xtYworISAjQ09NUE9VTkRGSVJTVCB2CishICNDT01QT1VORExBU1QgeAorISAjRk9SQklEREVOV09SRCB3CishIEJBRCB3CishICNPTkxZUk9PVCB1CishICNBQ0NFTlQg4ent8/b1+vz7IGFlaW9vb3V1dQorISAjQ0hFQ0tOVU0KKyEgI1dPUkRDSEFSUyAtLqclsDAxMjM0NTY3ODkKKyEgI0hVX0tPVE9IQU5HWk8gWgorISAKKyEgUEZYUE9TVFBPTkUKKyAgCisqKioqKioqKioqKioqKioKKyoqKiAxNzMsMjQxICoqKioKKyAgCistICMgY2hhcmFjdGVyIGNvbnZlcnNpb24gdGFibGUKKy0gIyAoSFRNTCBsYXRpbi0xIGVudGl0aWVzIC0+IGxhdGluLTIpCistICMgbm90IGltcGxlbWVudGVkIHlldAorLSAKKy0gQ0hSIEhUTUwgMzUKKy0gQ0hSIEhUTUwgJmN1cnJlbjsgpAorLSBDSFIgSFRNTCAmZGVnOyCwCistIENIUiBIVE1MICZhY3V0ZTsgtAorLSBDSFIgSFRNTCAmY2VkaWw7ILgKKy0gQ0hSIEhUTUwgJkFhY3V0ZTsgwQorLSBDSFIgSFRNTCAmQWNpcmM7IMIKKy0gQ0hSIEhUTUwgJkF1bWw7IMQKKy0gQ0hSIEhUTUwgJkNjZWRpbDsgxworLSBDSFIgSFRNTCAmRWFjdXRlOyDJCistIENIUiBIVE1MICZFdW1sOyDLCistIENIUiBIVE1MICZJYWN1dGU7IM0KKy0gQ0hSIEhUTUwgJkljaXJjOyDOCistIENIUiBIVE1MICZPYWN1dGU7INMKKy0gQ0hSIEhUTUwgJk9jaXJjOyDUCistIENIUiBIVE1MICZPdW1sOyDWCistIENIUiBIVE1MICZ0aW1lczsg1worLSBDSFIgSFRNTCAmVWFjdXRlOyDaCistIENIUiBIVE1MICZVdW1sOyDcCistIENIUiBIVE1MICZZYWN1dGU7IN0KKy0gQ0hSIEhUTUwgJnN6bGlnOyDfCistIENIUiBIVE1MICZhYWN1dGU7IOEKKy0gQ0hSIEhUTUwgJmFjaXJjOyDiCistIENIUiBIVE1MICZhdW1sOyDkCistIENIUiBIVE1MICZjY2VkaWw7IOcKKy0gQ0hSIEhUTUwgJmVhY3V0ZTsg6QorLSBDSFIgSFRNTCAmZXVtbDsg6worLSBDSFIgSFRNTCAmaWFjdXRlOyDtCistIENIUiBIVE1MICZpY2lyYzsg7gorLSBDSFIgSFRNTCAmb2FjdXRlOyDzCistIENIUiBIVE1MICZvY2lyYzsg9AorLSBDSFIgSFRNTCAmb3VtbDsg9gorLSBDSFIgSFRNTCAmZGl2aWRlOyD3CistIENIUiBIVE1MICZ1YWN1dGU7IPoKKy0gQ0hSIEhUTUwgJnV1bWw7IPwKKy0gQ0hSIEhUTUwgJnlhY3V0ZTsg/QorLSAKKy0gIyBjaGFyYWN0ZXIgY29udmVyc2lvbiB0YWJsZQorLSAjIChQcvNzeulreS1jb2RlIC0+IGxhdGluLTIpCistICMgbm90IGltcGxlbWVudGVkIHlldAorLSAKKy0gQ0hSIDEyMyAyMAorLSBDSFIgMTIzIGExIOEKKy0gQ0hSIDEyMyBlMSDpCistIENIUiAxMjMgZTIg6worLSBDSFIgMTIzIGkxIO0KKy0gQ0hSIDEyMyBvMSDzCistIENIUiAxMjMgbzIg9gorLSBDSFIgMTIzIG8zIPUKKy0gQ0hSIDEyMyB1MSD6CistIENIUiAxMjMgdTIg/AorLSBDSFIgMTIzIHUzIPsKKy0gQ0hSIDEyMyBBMSDBCistIENIUiAxMjMgRTEgyQorLSBDSFIgMTIzIEUyIMsKKy0gQ0hSIDEyMyBJMSDNCistIENIUiAxMjMgTzEg0worLSBDSFIgMTIzIE8yINYKKy0gQ0hSIDEyMyBPMyDVCistIENIUiAxMjMgVTEg2gorLSBDSFIgMTIzIFUyINwKKy0gQ0hSIDEyMyBVMyDbCistIAorICBTRlggeiBZIDYKKy0tLSAxNzYsMTc3IC0tLS0KKyoqKioqKioqKioqKioqKgorKioqIDE3Njc4LDE3NjgxICoqKioKKyAgUEZYIEQgICAwICAgIGxlZyAgICAgICAgICAuCistIAorLSAgICAxCistIAorLS0tIDE3NjE0IC0tLS0KZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvaHUvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL2h1L21haW4uYWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OTBiMWUKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3NwZWxsL2h1L21haW4uYWFwCkBAIC0wLDAgKzEsODEgQEAKKyMgQWFwIHJlY2lwZSBmb3IgSHVuZ2FyaWFuIFZpbSBzcGVsbCBmaWxlcy4KKworIyBVc2UgYSBmcmVzaGx5IGNvbXBpbGVkIFZpbSBpZiBpdCBleGlzdHMuCitAaWYgb3MucGF0aC5leGlzdHMoJy4uLy4uLy4uL3NyYy92aW0nKToKKyAgICBWSU0gPSAuLi8uLi8uLi9zcmMvdmltCitAZWxzZToKKyAgICA6cHJvZ3NlYXJjaCBWSU0gdmltCisKK1NQRUxMRElSID0gLi4KK0ZJTEVTICAgID0gaHVfSFUuYWZmIGh1X0hVLmRpYworCithbGw6ICRTUEVMTERJUi9odS5pc28tODg1OS0yLnNwbCAkU1BFTExESVIvaHUudXRmLTguc3BsIFwKKyAgICAgICAgJFNQRUxMRElSL2h1LmNwMTI1MC5zcGwgLi4vUkVBRE1FX2h1LnR4dAorCiskU1BFTExESVIvaHUuaXNvLTg4NTktMi5zcGwgOiAkRklMRVMKKyAgICAgICAgOnN5cyBlbnYgTEFORz1odV9IVS5JU084ODU5LTIgJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvaHUgaHVfSFUiIC1jIHEKKworJFNQRUxMRElSL2h1LnV0Zi04LnNwbCA6ICRGSUxFUworICAgICAgICA6c3lzIGVudiBMQU5HPWh1X0hVLlVURi04ICRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL2h1IGh1X0hVIiAtYyBxCisKKyRTUEVMTERJUi9odS5jcDEyNTAuc3BsIDogJEZJTEVTCisgICAgICAgIDpzeXMgJFZJTSAtdSBOT05FIC1lIC1jICJzZXQgZW5jPWNwMTI1MCIgLWMgIm1rc3BlbGwhICRTUEVMTERJUi9odSBodV9IVSIgLWMgcQorCisuLi9SRUFETUVfaHUudHh0OiBSRUFETUVfaHVfSFUudHh0CisgICAgICAgIDpjb3B5ICRzb3VyY2UgJHRhcmdldAorCisjCisjIEZldGNoaW5nIHRoZSBmaWxlcyBmcm9tIE9wZW5PZmZpY2Uub3JnLgorIworT09ESVIgPSBodHRwOi8vZnRwLnNlcnZpY2VzLm9wZW5vZmZpY2Uub3JnL3B1Yi9PcGVuT2ZmaWNlLm9yZy9jb250cmliL2RpY3Rpb25hcmllcworOmF0dHIge2ZldGNoID0gJE9PRElSLyVmaWxlJX0gaHVfSFUuemlwCisKKyMgVGhlIGZpbGVzIGRvbid0IGRlcGVuZCBvbiB0aGUgLnppcCBmaWxlIHNvIHRoYXQgd2UgY2FuIGRlbGV0ZSBpdC4KKyMgT25seSBkb3dubG9hZCB0aGUgemlwIGZpbGUgaWYgdGhlIHRhcmdldHMgZG9uJ3QgZXhpc3QuCisjIFRoaXMgaXMgYSBiaXQgdHJpY2t5LCBzaW5jZSB0aGUgZmlsZSBuYW1lIGluY2x1ZGVzIHRoZSBkYXRlLgoraHVfSFUuYWZmIGh1X0hVLmRpYzoge2J1aWxkY2hlY2s9fQorICAgICAgICA6YXNzZXJ0cGtnIHVuemlwIHBhdGNoCisgICAgICAgIDpmZXRjaCBodV9IVS56aXAKKyAgICAgICAgOnN5cyAkVU5aSVAgaHVfSFUuemlwCisgICAgICAgIDpkZWxldGUgaHVfSFUuemlwCisgICAgICAgIEBpZiBub3Qgb3MucGF0aC5leGlzdHMoJ2h1X0hVLm9yaWcuYWZmJyk6CisgICAgICAgICAgICA6Y29weSBodV9IVS5hZmYgaHVfSFUub3JpZy5hZmYKKyAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnaHVfSFUub3JpZy5kaWMnKToKKyAgICAgICAgICAgIDpjb3B5IGh1X0hVLmRpYyBodV9IVS5vcmlnLmRpYworICAgICAgICBAaWYgb3MucGF0aC5leGlzdHMoJ2h1X0hVLmRpZmYnKToKKyAgICAgICAgICAgIDpzeXMgcGF0Y2ggPGh1X0hVLmRpZmYKKworCisjIEdlbmVyYXRlIGRpZmYgZmlsZXMsIHNvIHRoYXQgb3RoZXJzIGNhbiBnZXQgdGhlIE9wZW5PZmZpY2UgZmlsZXMgYW5kIGFwcGx5CisjIHRoZSBkaWZmcyB0byBnZXQgdGhlIFZpbSB2ZXJzaW9ucy4KKworZGlmZjoKKyAgICAgICAgOmFzc2VydHBrZyBkaWZmCisgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgaHVfSFUub3JpZy5hZmYgaHVfSFUuYWZmID5odV9IVS5kaWZmCisgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgaHVfSFUub3JpZy5kaWMgaHVfSFUuZGljID4+aHVfSFUuZGlmZgorCisKKyMgQ2hlY2sgZm9yIHVwZGF0ZWQgT3Blbk9mZmljZSBzcGVsbCBmaWxlcy4gIFdoZW4gdGhlcmUgYXJlIGNoYW5nZXMgdGhlCisjICIubmV3LmFmZiIgYW5kICIubmV3LmRpYyIgZmlsZXMgYXJlIGxlZnQgYmVoaW5kIGZvciBtYW51YWwgaW5zcGVjdGlvbi4KKworY2hlY2s6CisgICAgICAgIDphc3NlcnRwa2cgdW56aXAgZGlmZgorICAgICAgICA6ZmV0Y2ggaHVfSFUuemlwCisgICAgICAgIDpta2RpciB0bXAKKyAgICAgICAgOmNkIHRtcAorICAgICAgICBAdHJ5OgorICAgICAgICAgICAgQGltcG9ydCBzdGF0CisgICAgICAgICAgICA6c3lzICRVTlpJUCAuLi9odV9IVS56aXAKKyAgICAgICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC4uL2h1X0hVLm9yaWcuYWZmIGh1X0hVLmFmZiA+ZAorICAgICAgICAgICAgQGlmIG9zLnN0YXQoJ2QnKVtzdGF0LlNUX1NJWkVdID4gMDoKKyAgICAgICAgICAgICAgICA6Y29weSBodV9IVS5hZmYgLi4vaHVfSFUubmV3LmFmZgorICAgICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLi4vaHVfSFUub3JpZy5kaWMgaHVfSFUuZGljID5kCisgICAgICAgICAgICBAaWYgb3Muc3RhdCgnZCcpW3N0YXQuU1RfU0laRV0gPiAwOgorICAgICAgICAgICAgICAgIDpjb3B5IGh1X0hVLmRpYyAuLi9odV9IVS5uZXcuZGljCisgICAgICAgIEBmaW5hbGx5OgorICAgICAgICAgICAgOmNkIC4uCisgICAgICAgICAgICA6ZGVsZXRlIHtyfXtmfXtxfSB0bXAKKyAgICAgICAgICAgIDpkZWxldGUgaHVfSFUuemlwCisKKworIyB2aW06IHNldCBzdHM9NCBzdz00IDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvaXQvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL2l0L21haW4uYWFwCmluZGV4IGVmNTQxYzQuLmVhY2VkNjggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvaXQvbWFpbi5hYXAKKysrIGIvcnVudGltZS9zcGVsbC9pdC9tYWluLmFhcApAQCAtMSw0ICsxLDQgQEAKLSMgQWFwIHJlY2lwZSBmb3IgRnJlbmNoIFZpbSBzcGVsbCBmaWxlcy4KKyMgQWFwIHJlY2lwZSBmb3IgSXRhbGlhbiBWaW0gc3BlbGwgZmlsZXMuCiAKICMgVXNlIGEgZnJlc2hseSBjb21waWxlZCBWaW0gaWYgaXQgZXhpc3RzLgogQGlmIG9zLnBhdGguZXhpc3RzKCcuLi8uLi8uLi9zcmMvdmltJyk6CkBAIC0xMSwxMSArMTEsMTEgQEAKIAogYWxsOiAkU1BFTExESVIvaXQubGF0aW4xLnNwbCAkU1BFTExESVIvaXQudXRmLTguc3BsIC4uL1JFQURNRV9pdC50eHQKIAotJFNQRUxMRElSL2l0LmxhdGluMS5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL2l0LmxhdGluMS5zcGwgOiAkRklMRVMKICAgICAgICAgOnN5cyBlbnYgTEFORz1pdF9JVC5JU084ODU5LTEKIAkJJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvaXQgaXRfSVQiIC1jIHEKIAotJFNQRUxMRElSL2l0LnV0Zi04LnNwbCA6ICRWSU0gJEZJTEVTCiskU1BFTExESVIvaXQudXRmLTguc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgZW52IExBTkc9aXRfSVQuVVRGLTgKIAkJJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvaXQgaXRfSVQiIC1jIHEKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9tYWluLmFhcCBiL3J1bnRpbWUvc3BlbGwvbWFpbi5hYXAKaW5kZXggNjg4NjRiOC4uMWUzN2MxYyAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9tYWluLmFhcAorKysgYi9ydW50aW1lL3NwZWxsL21haW4uYWFwCkBAIC0xLDEwICsxLDIyIEBACi0jICJhYXAiOiBnZW5lcmF0ZSBhbGwgdGhlIC5zcGwgZmlsZXMKLSMgImFhcCBkaWZmIiBjcmVhdGUgYWxsIHRoZSBkaWZmIGZpbGVzCisjIFRvcGxldmVsIEFhcCByZWNpcGUgZm9yIFZpbSBzcGVsbCBmaWxlcworIworIyBVc2FnZToKKyMgYWFwICAgICAgICBnZW5lcmF0ZSBhbGwgdGhlIC5zcGwgZmlsZXMKKyMgYWFwIGRpZmYgICBjcmVhdGUgYWxsIHRoZSBkaWZmIGZpbGVzCiAKLUxBTkcgPSBhZiBiZyBjYSBjcyBkYSBkZSBlbiBmciBoZSBociBpdCBubCBueSBwbCBzayB5aQorTEFORyA9IGFmIGJnIGNhIGNzIGRhIGRlIGVsIGVuIGVvIGZyIGZvIGdsIGhlIGhyIGl0IG5sIG55IHBsIHNrIHlpCisKKyMgVE9ETzoKKyMgRmlubmlzaCBkb2Vzbid0IHdvcmssIHRoZSBkaWN0aW9uYXJ5IGZpX0ZJLnppcCBmaWxlIGNvbnRhaW5zIGh5cGhlbmF0aW9uLi4uCiAKIGRpZmY6ICQqTEFORy9kaWZmCiAgICAgICAgIDpwcmludCBkb25lCiAKIEBmb3IgbCBpbiBzdHJpbmcuc3BsaXQoX25vLkxBTkcpOgogICAgICAgICA6Y2hpbGQgJGwvbWFpbi5hYXAKKworIyBUaGUgZXhpc3RpbmcgLnNwbCBmaWxlcyBuZWVkIHRvIGJlIGdlbmVyYXRlZCB3aGVuIHRoZSBzcGVsbCBmaWxlIGZvcm1hdAorIyBjaGFuZ2VzLiAgRGVwZW5kaW5nIG9uIHRoZSBWaW0gZXhlY3V0YWJsZSBkb2VzIHRoYXQsIGJ1dCByZXN1bHRzIGluIGRvaW5nIGl0CisjIG11Y2ggdG9vIG9mdGVuLiAgR2VuZXJhdGUgYSBkdW1teSAuc3BsIGZpbGUgYW5kIGNoZWNrIGlmIGl0IGNoYW5nZWQuCis6Y2hpbGQgY2hlY2svbWFpbi5hYXAKKyouc3BsOiBjaGVjay9jaGVjay5sYXRpbjEuc3BsCmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL25sL21haW4uYWFwIGIvcnVudGltZS9zcGVsbC9ubC9tYWluLmFhcAppbmRleCAwMmFlNDlkLi5lMjMxMTEzIDEwMDY0NAotLS0gYS9ydW50aW1lL3NwZWxsL25sL21haW4uYWFwCisrKyBiL3J1bnRpbWUvc3BlbGwvbmwvbWFpbi5hYXAKQEAgLTExLDExICsxMSwxMSBAQAogCiBhbGw6ICRTUEVMTERJUi9ubC5sYXRpbjEuc3BsICRTUEVMTERJUi9ubC51dGYtOC5zcGwgLi4vUkVBRE1FX25sLnR4dAogCi0kU1BFTExESVIvbmwubGF0aW4xLnNwbCA6ICRWSU0gJEZJTEVTCiskU1BFTExESVIvbmwubGF0aW4xLnNwbCA6ICRGSUxFUwogICAgICAgICA6c3lzIGVudiBMQU5HPW5sX05MLklTTzg4NTktMQogCQkkVklNIC11IE5PTkUgLWUgLWMgIm1rc3BlbGwhICRTUEVMTERJUi9ubCBubF9OTCIgLWMgcQogCi0kU1BFTExESVIvbmwudXRmLTguc3BsIDogJFZJTSAkRklMRVMKKyRTUEVMTERJUi9ubC51dGYtOC5zcGwgOiAkRklMRVMKICAgICAgICAgOnN5cyBlbnYgTEFORz1ubF9OTC5VVEYtOAogCQkkVklNIC11IE5PTkUgLWUgLWMgIm1rc3BlbGwhICRTUEVMTERJUi9ubCBubF9OTCIgLWMgcQogCmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL255L21haW4uYWFwIGIvcnVudGltZS9zcGVsbC9ueS9tYWluLmFhcAppbmRleCBlN2ZjYmY3Li5iNzNiNTBjIDEwMDY0NAotLS0gYS9ydW50aW1lL3NwZWxsL255L21haW4uYWFwCisrKyBiL3J1bnRpbWUvc3BlbGwvbnkvbWFpbi5hYXAKQEAgLTEsNCArMSw0IEBACi0jIEFhcCByZWNpcGUgZm9yIER1dGNoIFZpbSBzcGVsbCBmaWxlcy4KKyMgQWFwIHJlY2lwZSBmb3IgQ2hpY2hld2EgVmltIHNwZWxsIGZpbGVzLgogCiAjIFVzZSBhIGZyZXNobHkgY29tcGlsZWQgVmltIGlmIGl0IGV4aXN0cy4KIEBpZiBvcy5wYXRoLmV4aXN0cygnLi4vLi4vLi4vc3JjL3ZpbScpOgpAQCAtMTIsMTUgKzEyLDE1IEBACiBhbGw6ICRTUEVMTERJUi9ueS5pc28tODg1OS0xNC5zcGwgJFNQRUxMRElSL255LnV0Zi04LnNwbCBcCiAgICAgICAgICRTUEVMTERJUi9ueS5hc2NpaS5zcGwgLi4vUkVBRE1FX255LnR4dAogCi0kU1BFTExESVIvbnkuaXNvLTg4NTktMTQuc3BsIDogJFZJTSAkRklMRVMKKyRTUEVMTERJUi9ueS5pc28tODg1OS0xNC5zcGwgOiAkRklMRVMKICAgICAgICAgOnN5cyAkVklNIC11IE5PTkUgLWUgLWMgInNldCBlbmM9aXNvLTg4NTktMTQiIAogICAgICAgICAgICAgICAgIC1jICJta3NwZWxsISAkU1BFTExESVIvbnkgbnlfTVciIC1jIHEKIAotJFNQRUxMRElSL255LnV0Zi04LnNwbCA6ICRWSU0gJEZJTEVTCiskU1BFTExESVIvbnkudXRmLTguc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgJFZJTSAtdSBOT05FIC1lIC1jICJzZXQgZW5jPXV0Zi04IgogICAgICAgICAgICAgICAgIC1jICJta3NwZWxsISAkU1BFTExESVIvbnkgbnlfTVciIC1jIHEKIAotJFNQRUxMRElSL255LmFzY2lpLnNwbCA6ICRWSU0gJEZJTEVTCiskU1BFTExESVIvbnkuYXNjaWkuc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAtYXNjaWkgJFNQRUxMRElSL255IG55X01XIiAtYyBxCiAgCiAuLi9SRUFETUVfbnkudHh0IDogUkVBRE1FX255X01XLnR4dApkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9wbC9tYWluLmFhcCBiL3J1bnRpbWUvc3BlbGwvcGwvbWFpbi5hYXAKaW5kZXggZTMzYWNmOC4uZWIyMWM1ZSAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9wbC9tYWluLmFhcAorKysgYi9ydW50aW1lL3NwZWxsL3BsL21haW4uYWFwCkBAIC0xMiwxMyArMTIsMTMgQEAKIGFsbDogJFNQRUxMRElSL3BsLmlzby04ODU5LTIuc3BsICRTUEVMTERJUi9wbC51dGYtOC5zcGwgXAogICAgICAgICAkU1BFTExESVIvcGwuY3AxMjUwLnNwbCAuLi9SRUFETUVfcGwudHh0CiAKLSRTUEVMTERJUi9wbC5pc28tODg1OS0yLnNwbCA6ICRWSU0gJEZJTEVTCiskU1BFTExESVIvcGwuaXNvLTg4NTktMi5zcGwgOiAkRklMRVMKICAgICAgICAgOnN5cyBlbnYgTEFORz1wbF9QTC5JU084ODU5LTIgJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvcGwgcGxfUEwiIC1jIHEKIAotJFNQRUxMRElSL3BsLnV0Zi04LnNwbCA6ICRWSU0gJEZJTEVTCiskU1BFTExESVIvcGwudXRmLTguc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgZW52IExBTkc9cGxfUEwuVVRGLTggJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvcGwgcGxfUEwiIC1jIHEKIAotJFNQRUxMRElSL3BsLmNwMTI1MC5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL3BsLmNwMTI1MC5zcGwgOiAkRklMRVMKICAgICAgICAgOnN5cyAkVklNIC11IE5PTkUgLWUgLWMgInNldCBlbmM9Y3AxMjUwIiAtYyAibWtzcGVsbCEgJFNQRUxMRElSL3BsIHBsX1BMIiAtYyBxCiAKIC4uL1JFQURNRV9wbC50eHQ6IFJFQURNRV9wbF9QTC50eHQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvc2svbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL3NrL21haW4uYWFwCmluZGV4IGIxOGQxOTUuLmRiOTczNTUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvc2svbWFpbi5hYXAKKysrIGIvcnVudGltZS9zcGVsbC9zay9tYWluLmFhcApAQCAtMSw0ICsxLDQgQEAKLSMgQWFwIHJlY2lwZSBmb3IgQ3plY2ggVmltIHNwZWxsIGZpbGVzLgorIyBBYXAgcmVjaXBlIGZvciBTbG92YWsgVmltIHNwZWxsIGZpbGVzLgogCiAjIFVzZSBhIGZyZXNobHkgY29tcGlsZWQgVmltIGlmIGl0IGV4aXN0cy4KIEBpZiBvcy5wYXRoLmV4aXN0cygnLi4vLi4vLi4vc3JjL3ZpbScpOgpAQCAtMTIsMTMgKzEyLDEzIEBACiBhbGw6ICRTUEVMTERJUi9zay5pc28tODg1OS0yLnNwbCAkU1BFTExESVIvc2sudXRmLTguc3BsIFwKICAgICAgICAgJFNQRUxMRElSL3NrLmNwMTI1MC5zcGwgLi4vUkVBRE1FX3NrLnR4dAogCi0kU1BFTExESVIvc2suaXNvLTg4NTktMi5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL3NrLmlzby04ODU5LTIuc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgZW52IExBTkc9c2tfU0suSVNPODg1OS0yICRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL3NrIHNrX1NLIiAtYyBxCiAKLSRTUEVMTERJUi9zay51dGYtOC5zcGwgOiAkVklNICRGSUxFUworJFNQRUxMRElSL3NrLnV0Zi04LnNwbCA6ICRGSUxFUwogICAgICAgICA6c3lzIGVudiBMQU5HPXNrX1NLLlVURi04ICRWSU0gLXUgTk9ORSAtZSAtYyAibWtzcGVsbCEgJFNQRUxMRElSL3NrIHNrX1NLIiAtYyBxCiAKLSRTUEVMTERJUi9zay5jcDEyNTAuc3BsIDogJFZJTSAkRklMRVMKKyRTUEVMTERJUi9zay5jcDEyNTAuc3BsIDogJEZJTEVTCiAgICAgICAgIDpzeXMgJFZJTSAtdSBOT05FIC1lIC1jICJzZXQgZW5jPWNwMTI1MCIgLWMgIm1rc3BlbGwhICRTUEVMTERJUi9zayBza19TSyIgLWMgcQogCiAuLi9SRUFETUVfc2sudHh0OiBSRUFETUVfc2tfU0sudHh0CmRpZmYgLS1naXQgImEvcnVudGltZS9zcGVsbC95aS9cMDQxeWkuZGlmZiIgImIvcnVudGltZS9zcGVsbC95aS9cMDQxeWkuZGlmZiIKaW5kZXggMDBlYzEwNC4uNDg0ZGM2OSAxMDA2NDQKLS0tICJhL3J1bnRpbWUvc3BlbGwveWkvXDA0MXlpLmRpZmYiCisrKyAiYi9ydW50aW1lL3NwZWxsL3lpL1wwNDF5aS5kaWZmIgpAQCAtMSw3ICsxLDggQEAKLSoqKiB3b3JkbGlzdC51dGY4LnR4dAlUaHUgQXVnIDExIDE3OjU1OjE1IDIwMDUKLS0tLSB5aS5kaWMJVGh1IEF1ZyAxMSAxNzo1NjoyOCAyMDA1CisqKiogd29yZGxpc3QudXRmOC50eHQJVGh1IEF1ZyAxMSAxOTo0OToyMiAyMDA1CistLS0geWkuZGljCVRodSBBdWcgMTEgMTk6NDk6MjMgMjAwNQogKioqKioqKioqKioqKioqCi0qKiogMSAqKioqCi0tLS0gMSwyIC0tLS0KLSsgOTk5OTkKKyoqKiAxLDIgKioqKgorLS0tIDEsMyAtLS0tCisrIDk5OTk5OQogICDXkteo15XXoNeY16LXnNei157Xoteg15gKKyAg15PXltep15DWuNeR16LXoNeT15nXp9ehCmRpZmYgLS1naXQgImEvcnVudGltZS9zcGVsbC95aS9cMDQxeWlfdHIuZGlmZiIgImIvcnVudGltZS9zcGVsbC95aS9cMDQxeWlfdHIuZGlmZiIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ4MTgzZgotLS0gL2Rldi9udWxsCisrKyAiYi9ydW50aW1lL3NwZWxsL3lpL1wwNDF5aV90ci5kaWZmIgpAQCAtMCwwICsxLDggQEAKKyoqKiB3b3JkbGlzdC50eHQJVHVlIEF1ZyAxNiAxMDo0NjoyNiAyMDA1CistLS0geWlfdHIuZGljCVR1ZSBBdWcgMTYgMTA6NDY6NDIgMjAwNQorKioqKioqKioqKioqKioqCisqKiogMSwyICoqKioKKy0tLSAxLDMgLS0tLQorKyA4NDYwOAorICBncnVudGVsZW1lbnQKKyAgZHpob2JlbmRpa3MKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwveWkvUkVBRE1FLnR4dCBiL3J1bnRpbWUvc3BlbGwveWkvUkVBRE1FLnR4dAppbmRleCBkYjQzMjkzLi4wOWFmNzM5IDEwMDY0NAotLS0gYS9ydW50aW1lL3NwZWxsL3lpL1JFQURNRS50eHQKKysrIGIvcnVudGltZS9zcGVsbC95aS9SRUFETUUudHh0CkBAIC0zLDQgKzMsNyBAQAogVGhlIHdvcmQgbGlzdCB3YXMgcHJvdmlkZWQgYnkgUmFwaGFlbCBGaW5rZWwuICBJdCBpcyB0aGUgc2FtZSBvbmUgdGhhdCBpcyB1c2VkCiBieSB1c3BlbGwuCiAKK1RoZXJlIGFsc28gaXMgYSByb21hbml6ZWQgKHRyYW5zbGl0ZXJhdGVkKSB3b3JkIGxpc3QuICBUaGlzIGlzIHVzZWQgZm9yCitsYXRpbjEuICBUbyB1c2UgdGhpcyBsaXN0IHdoZW4gJ2VuY29kaW5nJyBpcyB1dGYtOCB1c2UgIjpzZXQgc3BlbGxsYW5nPXlpLXRyIi4KKwogQ29weXJpZ2h0IFJhcGhhZWwgRmlua2VsLiAgSW5jbHVkZWQgd2l0aCBwZXJtaXNzaW9uIGluIFZpbS4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwveWkvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL3lpL21haW4uYWFwCmluZGV4IDMxZDA1N2UuLjhhOThjZTAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwveWkvbWFpbi5hYXAKKysrIGIvcnVudGltZS9zcGVsbC95aS9tYWluLmFhcApAQCAtMSw0ICsxLDQgQEAKLSMgQWFwIHJlY2lwZSBmb3IgSGVicmV3IFZpbSBzcGVsbCBmaWxlcy4KKyMgQWFwIHJlY2lwZSBmb3IgWWlkZGlzaCBWaW0gc3BlbGwgZmlsZXMuCiAKICMgVXNlIGEgZnJlc2hseSBjb21waWxlZCBWaW0gaWYgaXQgZXhpc3RzLgogQGlmIG9zLnBhdGguZXhpc3RzKCcuLi8uLi8uLi9zcmMvdmltJyk6CkBAIC02LDE2ICs2LDI3IEBACiBAZWxzZToKICAgICA6cHJvZ3NlYXJjaCBWSU0gdmltCiAKLVNQRUxMRElSICA9IC4uCi1GSUxFUyAgICAgPSB5aS5kaWMgeWkuYWZmCi1XT1JERklMRSAgPSB3b3JkbGlzdC51dGY4LnR4dAorU1BFTExESVIgICAgPSAuLgorRklMRVMgICAgICAgPSB5aS5kaWMgeWkuYWZmCitXT1JERklMRSAgICA9IHdvcmRsaXN0LnV0ZjgudHh0CitGSUxFU19UUiAgICA9IHlpX3RyLmRpYyB5aV90ci5hZmYKK1dPUkRGSUxFX1RSID0gd29yZGxpc3QudHh0CiAKLWFsbDogJFNQRUxMRElSL3lpLnV0Zi04LnNwbCAuLi9SRUFETUVfeWkudHh0CithbGw6ICRTUEVMTERJUi95aS51dGYtOC5zcGwgJFNQRUxMRElSL3lpLXRyLnV0Zi04LnNwbCBcCisgICAgICAgICRTUEVMTERJUi95aS5sYXRpbjEuc3BsIC4uL1JFQURNRV95aS50eHQKIAotJFNQRUxMRElSL3lpLnV0Zi04LnNwbCA6ICRWSU0gJEZJTEVTCiskU1BFTExESVIveWkudXRmLTguc3BsIDogJEZJTEVTCiAgICAgOnN5cyAkVklNIC11IE5PTkUgLWUgLWMgInNldCBlbmM9dXRmLTgiCiAgICAgICAgICAgICAtYyAibWtzcGVsbCEgJFNQRUxMRElSL3lpIHlpIiAtYyBxCiAKKyRTUEVMTERJUi95aS10ci51dGYtOC5zcGwgOiAkRklMRVNfVFIKKyAgICA6c3lzICRWSU0gLXUgTk9ORSAtZSAtYyAic2V0IGVuYz11dGYtOCIKKyAgICAgICAgICAgIC1jICJta3NwZWxsISAkU1BFTExESVIveWktdHIgeWlfdHIiIC1jIHEKKworJFNQRUxMRElSL3lpLmxhdGluMS5zcGwgOiAkRklMRVNfVFIKKyAgICA6c3lzICRWSU0gLXUgTk9ORSAtZSAtYyAic2V0IGVuYz1sYXRpbjEiCisgICAgICAgICAgICAtYyAibWtzcGVsbCEgJFNQRUxMRElSL3lpIHlpX3RyIiAtYyBxCisKIC4uL1JFQURNRV95aS50eHQgOiBSRUFETUUudHh0CiAgICAgOmNvcHkgJHNvdXJjZSAkdGFyZ2V0CiAKQEAgLTIzLDcgKzM0LDcgQEAKICMgRmV0Y2ggdGhlIHdvcmQgbGlzdCB3aGVuIG5lZWRlZC4KICMKIFVSTERJUiA9IGh0dHA6Ly93d3cuY3MudWt5LmVkdS9+cmFwaGFlbC95aWRkaXNoCi06YXR0ciB7ZmV0Y2ggPSAkVVJMRElSLyVmaWxlJX0gJFdPUkRGSUxFCis6YXR0ciB7ZmV0Y2ggPSAkVVJMRElSLyVmaWxlJX0gJFdPUkRGSUxFICRXT1JERklMRV9UUgogCiAjIFdlIHVzZSB0aGUgd29yZCBsaXN0IGFzIGEgLmRpYyBmaWxlLCBzbyB0aGF0IHdlIGNhbiB1c2UgYW4gYWZmaXggZmlsZSB0bwogIyBkZWZpbmUgYSBmZXcgZXh0cmEgdGhpbmdzLgpAQCAtMzUsMTMgKzQ2LDIwIEBACiAgICAgICAgIEBpZiBvcy5wYXRoLmV4aXN0cygneWkuZGlmZicpOgogICAgICAgICAgICAgOnN5cyBwYXRjaCA8IHlpLmRpZmYKIAotZGlmZjoKKyRGSUxFU19UUjoge2J1aWxkY2hlY2s9fQorICAgICAgICA6YXNzZXJ0cGtnIHBhdGNoCisgICAgICAgIDpmZXRjaCAkV09SREZJTEVfVFIKKyAgICAgICAgOmNvcHkgJFdPUkRGSUxFX1RSIHlpX3RyLmRpYworICAgICAgICA6dG91Y2gge2ZvcmNlfSB5aV90ci5hZmYKKyAgICAgICAgQGlmIG9zLnBhdGguZXhpc3RzKCd5aV90ci5kaWZmJyk6CisgICAgICAgICAgICA6c3lzIHBhdGNoIDwgeWlfdHIuZGlmZgorCitkaWZmIHt2aXJ0dWFsfToKICAgICA6YXNzZXJ0cGtnIGRpZmYKLSAgICA6ZGVsZXRlIHlpLmRpZmYKICAgICAjIFVzaW5nIGEgY29udGV4dCBvZiB0d28gbGluZXMgdG8gd29yayBhcm91bmQgYSBidWcgaW4gRnJlZUJTRCBwYXRjaC4KLSAgICA6c3lzIHtmb3JjZX0gZGlmZiAtYSAtQyAyICRXT1JERklMRSB5aS5kaWMgPnlpLmRpZmYKLSAgICA6c3lzIHtmb3JjZX0gZGlmZiAtYSAtTiAtQyAxIC9kZXYvbnVsbCB5aS5hZmYgPj55aS5kaWZmCi0KLQorICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDIgJFdPUkRGSUxFIHlpLmRpYyA+IHlpLmRpZmYKKyAgICA6c3lzIHtmb3JjZX0gZGlmZiAtYSAtTiAtQyAxIC9kZXYvbnVsbCB5aS5hZmYgPj4geWkuZGlmZgorICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDIgJFdPUkRGSUxFX1RSIHlpX3RyLmRpYyA+IHlpX3RyLmRpZmYKKyAgICA6c3lzIHtmb3JjZX0gZGlmZiAtYSAtTiAtQyAxIC9kZXYvbnVsbCB5aV90ci5hZmYgPj4geWlfdHIuZGlmZgogCiAjIHZpbTogc2V0IHN0cz00IHN3PTQgOgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC95aS95aS5kaWZmIGIvcnVudGltZS9zcGVsbC95aS95aS5kaWZmCmluZGV4IDAyMGYyZGMuLjQ1YTJkOTAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwveWkveWkuZGlmZgorKysgYi9ydW50aW1lL3NwZWxsL3lpL3lpLmRpZmYKQEAgLTEsMTggKzEsMTkgQEAKLSoqKiB3b3JkbGlzdC51dGY4LnR4dAlUaHUgQXVnIDExIDE4OjQwOjExIDIwMDUKLS0tLSB5aS5kaWMJVGh1IEF1ZyAxMSAxOTo0ODo1MyAyMDA1CisqKiogd29yZGxpc3QudXRmOC50eHQJVGh1IEF1ZyAxMSAxOTo0OToyMiAyMDA1CistLS0geWkuZGljCVRodSBBdWcgMTEgMTk6NDk6MjMgMjAwNQogKioqKioqKioqKioqKioqCiAqKiogMSwyICoqKioKIC0tLSAxLDMgLS0tLQogKyA5OTk5OTkKICAg15LXqNeV16DXmNei15zXotee16LXoNeYCiAgINeT15bXqdeQ1rjXkdei16DXk9eZ16fXoQotKioqIC9kZXYvbnVsbAlUaHUgQXVnIDExIDE5OjQ4OjIzIDIwMDUKLS0tLSB5aS5hZmYJVGh1IEF1ZyAxMSAxODo1MDo0NSAyMDA1CisqKiogL2Rldi9udWxsCVR1ZSBBdWcgMTYgMTA6NDQ6MDAgMjAwNQorLS0tIHlpLmFmZglNb24gQXVnIDE1IDIzOjA2OjAwIDIwMDUKICoqKioqKioqKioqKioqKgogKioqIDAgKioqKgotLS0tIDEsNSAtLS0tCistLS0gMSw2IC0tLS0KICsgU0VUIFVURi04CiArIAotKyBSRVAgMgorKyBSRVAgMwogKyBSRVAg15XXlSDXsAogKyBSRVAg15nXmSDXsgorKyBSRVAg15XXmSDXsQpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC95aS95aV90ci5kaWZmIGIvcnVudGltZS9zcGVsbC95aS95aV90ci5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMjZhN2IKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3NwZWxsL3lpL3lpX3RyLmRpZmYKQEAgLTAsMCArMSwxOCBAQAorKioqIHdvcmRsaXN0LnR4dAlUdWUgQXVnIDE2IDEwOjQ2OjI2IDIwMDUKKy0tLSB5aV90ci5kaWMJVHVlIEF1ZyAxNiAxMDo0Njo0MiAyMDA1CisqKioqKioqKioqKioqKioKKyoqKiAxLDIgKioqKgorLS0tIDEsMyAtLS0tCisrIDg0NjA4CisgIGdydW50ZWxlbWVudAorICBkemhvYmVuZGlrcworKioqIC9kZXYvbnVsbAlUdWUgQXVnIDE2IDEwOjQ0OjAwIDIwMDUKKy0tLSB5aV90ci5hZmYJVHVlIEF1ZyAxNiAxMDo0ODowMSAyMDA1CisqKioqKioqKioqKioqKioKKyoqKiAwICoqKioKKy0tLSAxLDUgLS0tLQorKyBTRVQgSVNPODg1OS0xCisrIAorKyBGT0wgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//CisrIExPVyAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KKysgVVBQICDAwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d7f/wpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvc2gudmltIGIvcnVudGltZS9zeW50YXgvc2gudmltCmluZGV4IDFiNmRlZTQuLmE0OWRmM2YgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3NoLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9zaC52aW0KQEAgLTIsOCArMiw4IEBACiAiIExhbmd1YWdlOgkJc2hlbGwgKHNoKSBLb3JuIHNoZWxsIChrc2gpIGJhc2ggKHNoKQogIiBNYWludGFpbmVyOgkJRHIuIENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiAgPE5kck9jaGlwU0BQY2FtcGJlbGxBZmFtaWx5Lk1iaXo+CiAiIFByZXZpb3VzIE1haW50YWluZXI6CUxlbm5hcnQgU2NodWx0eiA8TGVubmFydC5TY2h1bHR6QGVjbXdmLmludD4KLSIgTGFzdCBDaGFuZ2U6CQlKdWwgMDEsIDIwMDUKLSIgVmVyc2lvbjoJCTc1CisiIExhc3QgQ2hhbmdlOgkJQXVnIDE2LCAyMDA1CisiIFZlcnNpb246CQk3NgogIiBVUkw6CQlodHRwOi8vd3d3LmVyb2xzLmNvbS9hc3Ryb25hdXQvdmltL2luZGV4Lmh0bWwjdmltbGlua3Nfc3ludGF4CiAiCiAiIFVzaW5nIHRoZSBmb2xsb3dpbmcgVklNIHZhcmlhYmxlczoge3t7MQpAQCAtNzMsNyArNzMsNyBAQAogc3luIGNsdXN0ZXIgc2hDb21tYW5kU3ViTGlzdAljb250YWlucz1zaEFyaXRobWV0aWMsc2hEZXJlZixzaERlcmVmU2ltcGxlLHNoTnVtYmVyLHNoT3BlcmF0b3Isc2hQb3NuUGFybSxzaFNwZWNpYWwsc2hFeFNpbmdsZVF1b3RlLHNoU2luZ2xlUXVvdGUsc2hEb3VibGVRdW90ZSxzaFN0YXRlbWVudCxzaFZhcmlhYmxlLHNoU3ViU2gsc2hBbGlhcyxzaFRlc3QKIHN5biBjbHVzdGVyIHNoQ3VybHlMaXN0CWNvbnRhaW5zPXNoTnVtYmVyLHNoQ29tbWEsc2hEZXJlZixzaERlcmVmU2ltcGxlLHNoRGVyZWZTcGVjaWFsCiBzeW4gY2x1c3RlciBzaERibFF1b3RlTGlzdAljb250YWlucz1zaENvbW1hbmRTdWIsc2hEZXJlZixzaERlcmVmU2ltcGxlLHNoU3BlY2lhbCxzaFBvc25QYXJtCi1zeW4gY2x1c3RlciBzaERlcmVmTGlzdAljb250YWlucz1zaERlcmVmLHNoRGVyZWZTaW1wbGUsc2hEZXJlZlZhcixzaERlcmVmU3BlY2lhbCxzaERlcmVmV29yZEVycm9yCitzeW4gY2x1c3RlciBzaERlcmVmTGlzdAljb250YWlucz1zaERlcmVmLHNoRGVyZWZTaW1wbGUsc2hEZXJlZlZhcixzaERlcmVmU3BlY2lhbCxzaERlcmVmV29yZEVycm9yLHNoRGVyZWZQUFMKIHN5biBjbHVzdGVyIHNoRGVyZWZWYXJMaXN0CWNvbnRhaW5zPXNoRGVyZWZPcCxzaERlcmVmVmFyQXJyYXksc2hEZXJlZk9wRXJyb3IKIHN5biBjbHVzdGVyIHNoRWNob0xpc3QJY29udGFpbnM9c2hBcml0aG1ldGljLHNoQ29tbWFuZFN1YixzaERlcmVmLHNoRGVyZWZTaW1wbGUsc2hFeHByLHNoRXhTaW5nbGVRdW90ZSxzaFNpbmdsZVF1b3RlLHNoRG91YmxlUXVvdGUsc2hTcGVjaWFsCiBzeW4gY2x1c3RlciBzaEV4cHJMaXN0MQljb250YWlucz1zaENoYXJDbGFzcyxzaE51bWJlcixzaE9wZXJhdG9yLHNoRXhTaW5nbGVRdW90ZSxzaFNpbmdsZVF1b3RlLHNoRG91YmxlUXVvdGUsc2hTcGVjaWFsLHNoRXhwcixzaERibEJyYWNlLHNoRGVyZWYsc2hEZXJlZlNpbXBsZQpAQCAtMzY4LDI0ICszNjgsMjUgQEAKIGlmIGV4aXN0cygiYjppc19iYXNoIikgfHwgZXhpc3RzKCJiOmlzX2tvcm5zaGVsbCIpCiAgc3luIG1hdGNoICBzaERlcmVmT3AJY29udGFpbmVkCSIjXHsxLDJ9IgluZXh0Z3JvdXA9QHNoRGVyZWZQYXR0ZXJuTGlzdAogIHN5biBtYXRjaCAgc2hEZXJlZk9wCWNvbnRhaW5lZAkiJVx7MSwyfSIJbmV4dGdyb3VwPUBzaERlcmVmUGF0dGVybkxpc3QKLSBzeW4gbWF0Y2ggIHNoRGVyZWZQYXR0ZXJuCWNvbnRhaW5lZAkiW157fV1cKyIJY29udGFpbnM9c2hEZXJlZixzaERlcmVmU2ltcGxlLHNoRGVyZWZQYXR0ZXJuLHNoRGVyZWZTdHJpbmcsc2hDb21tYW5kU3ViIG5leHRncm91cD1zaERlcmVmUGF0dGVybgorIHN5biBtYXRjaCAgc2hEZXJlZlBhdHRlcm4JY29udGFpbmVkCSJbXnt9XVwrIgljb250YWlucz1zaERlcmVmLHNoRGVyZWZTaW1wbGUsc2hEZXJlZlBhdHRlcm4sc2hEZXJlZlN0cmluZyxzaENvbW1hbmRTdWIsc2hEZXJlZkVzY2FwZSBuZXh0Z3JvdXA9c2hEZXJlZlBhdHRlcm4KICBzeW4gcmVnaW9uIHNoRGVyZWZQYXR0ZXJuCWNvbnRhaW5lZAlzdGFydD0ieyIgZW5kPSJ9Igljb250YWlucz1zaERlcmVmLHNoRGVyZWZTaW1wbGUsc2hEZXJlZlN0cmluZyxzaENvbW1hbmRTdWIgbmV4dGdyb3VwPXNoRGVyZWZQYXR0ZXJuCisgc3luIG1hdGNoICBzaERlcmVmRXNjYXBlCWNvbnRhaW5lZAknXCUoXFxcXFwpKlxcLicKIGVuZGlmCiBzeW4gcmVnaW9uIHNoRGVyZWZTdHJpbmcJY29udGFpbmVkCW1hdGNoZ3JvdXA9c2hPcGVyYXRvciBzdGFydD0rJysgZW5kPSsnKwkJY29udGFpbnM9c2hTdHJpbmdTcGVjaWFsCiBzeW4gcmVnaW9uIHNoRGVyZWZTdHJpbmcJY29udGFpbmVkCW1hdGNoZ3JvdXA9c2hPcGVyYXRvciBzdGFydD0rIisgc2tpcD0rXFwiKyBlbmQ9KyIrCWNvbnRhaW5zPUBzaERibFF1b3RlTGlzdCxzaFN0cmluZ1NwZWNpYWwKIHN5biBtYXRjaCAgc2hEZXJlZlN0cmluZwljb250YWluZWQJIlxcWyInXSIKIAotIgliYXNoIDogJHtwYXJhbWV0ZXI6b2Zmc2V0fQotIgliYXNoIDogJHtwYXJhbWV0ZXI6b2Zmc2V0Omxlbmd0aH0KLSIJYmFzaCA6ICR7cGFyYW1ldGVyLy9wYXR0ZXJuL3N0cmluZ30KLSIJYmFzaCA6ICR7cGFyYW1ldGVyLy9wYXR0ZXJufQogaWYgZXhpc3RzKCJiOmlzX2Jhc2giKQorICIgYmFzaCA6ICR7cGFyYW1ldGVyOm9mZnNldH0KKyAiIGJhc2ggOiAke3BhcmFtZXRlcjpvZmZzZXQ6bGVuZ3RofQogIHN5biByZWdpb24gc2hEZXJlZk9wCWNvbnRhaW5lZAlzdGFydD0iOlskWzphbG51bTpdX10ibWU9ZS0xIGVuZD0iOiJtZT1lLTEgZW5kPSJ9Im1lPWUtMSBjb250YWlucz1Ac2hDb21tYW5kU3ViTGlzdCBuZXh0Z3JvdXA9c2hEZXJlZlBPTAotIHN5biBtYXRjaCAgc2hEZXJlZlBPTAljb250YWluZWQJIjpbXn1dXHsxLH0iCWNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0Ci0gc3luIG1hdGNoICBzaERlcmVmT3AJY29udGFpbmVkCSIvXHsxLDJ9IgluZXh0Z3JvdXA9c2hEZXJlZlBhdAotIHN5biBtYXRjaCAgc2hEZXJlZlBhdAljb250YWluZWQJIlteL31dXHsxLH0iCW5leHRncm91cD1zaERlcmVmUGF0U3RyaW5nT3AKLSBzeW4gbWF0Y2ggIHNoRGVyZWZQYXRTdHJpbmdPcAljb250YWluZWQJIi8iCW5leHRncm91cD1zaERlcmVmUGF0U3RyaW5nCi0gc3luIG1hdGNoICBzaERlcmVmUGF0U3RyaW5nCWNvbnRhaW5lZAkiW159XVx7MSx9IgorIHN5biBtYXRjaCAgc2hEZXJlZlBPTAljb250YWluZWQJIjpbXn1dXCsiCWNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0CisKKyAiIGJhc2ggOiAke3BhcmFtZXRlci8vcGF0dGVybi9zdHJpbmd9CisgIiBiYXNoIDogJHtwYXJhbWV0ZXIvL3BhdHRlcm59Cisgc3luIG1hdGNoICBzaERlcmVmUFBTCWNvbnRhaW5lZAknL1x7MSwyfScJbmV4dGdyb3VwPXNoRGVyZWZQUFNsZWZ0Cisgc3luIHJlZ2lvbiBzaERlcmVmUFBTbGVmdAljb250YWluZWQJc3RhcnQ9Jy4nCXNraXA9QFwlKFxcXClcL0AgbWF0Y2hncm91cD1zaERlcmVmT3AgZW5kPScvJyBuZXh0Z3JvdXA9c2hEZXJlZlBQU3JpZ2h0IGNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0Cisgc3luIHJlZ2lvbiBzaERlcmVmUFBTcmlnaHQJY29udGFpbmVkCXN0YXJ0PScuJwllbmQ9J1x6ZX0nCWNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0CiBlbmRpZgogCiAiIFVzZWZ1bCBzaCBLZXl3b3Jkczoge3t7MQpAQCAtNDQxLDkgKzQ0Miw4IEBACiBoaSBkZWYgbGluayBzaENtZFN1YlJlZ2lvbglzaFNoZWxsVmFyaWFibGVzCiBoaSBkZWYgbGluayBzaENvbG9uCXNoU3RhdGVtZW50CiBoaSBkZWYgbGluayBzaERlcmVmT3AJc2hPcGVyYXRvcgotaGkgZGVmIGxpbmsgc2hEZXJlZlBhdFN0cmluZ09wCXNoRGVyZWZPcAotaGkgZGVmIGxpbmsgc2hEZXJlZlBhdFN0cmluZwlzaERlcmVmUGF0dGVybgogaGkgZGVmIGxpbmsgc2hEZXJlZlBPTAlzaERlcmVmT3AKK2hpIGRlZiBsaW5rIHNoRGVyZWZQUFMJc2hEZXJlZk9wCiBoaSBkZWYgbGluayBzaERlcmVmCXNoU2hlbGxWYXJpYWJsZXMKIGhpIGRlZiBsaW5rIHNoRGVyZWZTaW1wbGUJc2hEZXJlZgogaGkgZGVmIGxpbmsgc2hEZXJlZlNwZWNpYWwJc2hEZXJlZgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvdGV4LnZpbSBiL3J1bnRpbWUvc3ludGF4L3RleC52aW0KaW5kZXggZmI3YTdlNC4uYjE4ZDkwOCAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvdGV4LnZpbQorKysgYi9ydW50aW1lL3N5bnRheC90ZXgudmltCkBAIC0xLDggKzEsOCBAQAogIiBWaW0gc3ludGF4IGZpbGUKICIgTGFuZ3VhZ2U6CVRlWAogIiBNYWludGFpbmVyOglEci4gQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIDxOZHJjaGlwT0BTY2FtcGJlbGxQZmFtaWx5LkFiaXpNPgotIiBMYXN0IENoYW5nZToJQXVnIDExLCAyMDA1Ci0iIFZlcnNpb246CTI4CisiIExhc3QgQ2hhbmdlOglBdWcgMTUsIDIwMDUKKyIgVmVyc2lvbjoJMjkKICIgVVJMOgkJaHR0cDovL215c2l0ZS52ZXJpem9uLm5ldC9hc3Ryb25hdXQvdmltL2luZGV4Lmh0bWwjdmltbGlua3Nfc3ludGF4CiAiCiAiIE5vdGVzOiB7e3sxCkBAIC0xMDIsNyArMTAyLDcgQEAKIGVuZGlmCiBzeW4gY2x1c3RlciB0ZXhFbnZHcm91cAkJY29udGFpbnM9dGV4TWF0Y2hlcix0ZXhNYXRoRGVsaW0sdGV4U3BlY2lhbENoYXIsdGV4U3RhdGVtZW50CiBzeW4gY2x1c3RlciB0ZXhGb2xkR3JvdXAJY29udGFpbnM9dGV4QWNjZW50LHRleEJhZE1hdGgsdGV4Q29tbWVudCx0ZXhEZWZDbWQsdGV4RGVsaW1pdGVyLHRleERvY1R5cGUsdGV4SW5wdXQsdGV4SW5wdXRGaWxlLHRleExlbmd0aCx0ZXhMaWdhdHVyZSx0ZXhNYXRjaGVyLHRleE1hdGhab25lVix0ZXhNYXRoWm9uZVcsdGV4TWF0aFpvbmVYLHRleE1hdGhab25lWSx0ZXhNYXRoWm9uZVosdGV4TmV3Q21kLHRleE5ld0Vudix0ZXhPbmx5TWF0aCx0ZXhPcHRpb24sdGV4UGFyZW4sdGV4UmVmWm9uZSx0ZXhTZWN0aW9uLHRleFNlY3Rpb25NYXJrZXIsdGV4U2VjdGlvblpvbmUsdGV4U3BhY2VDb2RlLHRleFNwZWNpYWxDaGFyLHRleFN0YXRlbWVudCx0ZXhTdHJpbmcsdGV4VHlwZVNpemUsdGV4VHlwZVN0eWxlLHRleFpvbmUsQHRleE1hdGhab25lcyx0ZXhUaXRsZSx0ZXhBYnN0cmFjdAotc3luIGNsdXN0ZXIgdGV4TWF0Y2hHcm91cAljb250YWlucz10ZXhBY2NlbnQsdGV4QmFkTWF0aCx0ZXhDb21tZW50LHRleERlZkNtZCx0ZXhEZWxpbWl0ZXIsdGV4RG9jVHlwZSx0ZXhJbnB1dCx0ZXhMZW5ndGgsdGV4TGlnYXR1cmUsdGV4TWF0Y2hlcix0ZXhOZXdDbWQsdGV4TmV3RW52LHRleE9ubHlNYXRoLHRleFBhcmVuLHRleFJlZlpvbmUsdGV4U2VjdGlvbix0ZXhTcGVjaWFsQ2hhcix0ZXhTdGF0ZW1lbnQsdGV4U3RyaW5nLHRleFR5cGVTaXplLHRleFR5cGVTdHlsZSx0ZXhab25lLHRleElucHV0RmlsZSx0ZXhPcHRpb24KK3N5biBjbHVzdGVyIHRleE1hdGNoR3JvdXAJY29udGFpbnM9dGV4QWNjZW50LHRleEJhZE1hdGgsdGV4Q29tbWVudCx0ZXhEZWZDbWQsdGV4RGVsaW1pdGVyLHRleERvY1R5cGUsdGV4SW5wdXQsdGV4TGVuZ3RoLHRleExpZ2F0dXJlLHRleE1hdGNoZXIsdGV4TmV3Q21kLHRleE5ld0Vudix0ZXhPbmx5TWF0aCx0ZXhQYXJlbix0ZXhSZWZab25lLHRleFNlY3Rpb24sdGV4U3BlY2lhbENoYXIsdGV4U3RhdGVtZW50LHRleFN0cmluZyx0ZXhUeXBlU2l6ZSx0ZXhUeXBlU3R5bGUsdGV4Wm9uZSx0ZXhJbnB1dEZpbGUsdGV4T3B0aW9uLEBTcGVsbAogc3luIGNsdXN0ZXIgdGV4UmVmR3JvdXAJCWNvbnRhaW5zPXRleE1hdGNoZXIsdGV4Q29tbWVudCx0ZXhEZWxpbWl0ZXIKIGlmICFleGlzdHMoInRleF9ub19tYXRoIikKICBzeW4gY2x1c3RlciB0ZXhNYXRoWm9uZXMJY29udGFpbnM9dGV4TWF0aFpvbmVWLHRleE1hdGhab25lVyx0ZXhNYXRoWm9uZVgsdGV4TWF0aFpvbmVZLHRleE1hdGhab25lWgpAQCAtMTE0LDYgKzExNCwxNiBAQAogICBzeW4gY2x1c3RlciB0ZXhNYXRoTWF0Y2hHcm91cAlhZGQ9dGV4TWF0aEVycm9yCiAgIHN5biBjbHVzdGVyIHRleE1hdGhab25lR3JvdXAJYWRkPXRleE1hdGhFcnJvcgogIGVuZGlmCisgc3luIGNsdXN0ZXIgdGV4TWF0aFpvbmVHcm91cCBhZGQ9QE5vU3BlbGwKKyAiIGZvbGxvd2luZyB1c2VkIGluIHRoZSBccGFydCBcY2hhcHRlciBcc2VjdGlvbiBcc3Vic2VjdGlvbiBcc3Vic3Vic2VjdGlvbgorICIgXHBhcmFncmFwaCBcc3VicGFyYWdyYXBoIFxhdXRob3IgXHRpdGxlIGhpZ2hsaWdodGluZworIHN5biBjbHVzdGVyIHRleERvY0dyb3VwCQljb250YWlucz10ZXhQYXJ0Wm9uZSxAdGV4UGFydEdyb3VwCisgc3luIGNsdXN0ZXIgdGV4UGFydEdyb3VwCQljb250YWlucz10ZXhDaGFwdGVyWm9uZSx0ZXhTZWN0aW9uWm9uZSx0ZXhQYXJhWm9uZQorIHN5biBjbHVzdGVyIHRleENoYXB0ZXJHcm91cAkJY29udGFpbnM9dGV4U2VjdGlvblpvbmUsdGV4UGFyYVpvbmUKKyBzeW4gY2x1c3RlciB0ZXhTZWN0aW9uR3JvdXAJCWNvbnRhaW5zPXRleFN1YlNlY3Rpb25ab25lLHRleFBhcmFab25lCisgc3luIGNsdXN0ZXIgdGV4U3ViU2VjdGlvbkdyb3VwCQljb250YWlucz10ZXhTdWJTdWJTZWN0aW9uWm9uZSx0ZXhQYXJhWm9uZQorIHN5biBjbHVzdGVyIHRleFN1YlN1YlNlY3Rpb25Hcm91cAljb250YWlucz10ZXhQYXJhWm9uZQorIHN5biBjbHVzdGVyIHRleFBhcmFHcm91cAkJY29udGFpbnM9dGV4U3ViUGFyYVpvbmUKIGVuZGlmCiAKICIgVHJ5IHRvIGZsYWcge30gYW5kICgpIG1pc21hdGNoZXM6IHt7ezEKQEAgLTI0NiwyOSArMjU2LDI3IEBACiAKICIgU2VjdGlvbnMsIHN1YnNlY3Rpb25zLCBldGM6IHt7ezEKIGlmIGc6dGV4X2ZvbGRfZW5hYmxlZCAmJiBoYXMoImZvbGRpbmciKQotIHN5biBjbHVzdGVyIHRleERvY0dyb3VwCQljb250YWlucz10ZXhQYXJ0Wm9uZSxAdGV4UGFydEdyb3VwCi0gc3luIGNsdXN0ZXIgdGV4UGFydEdyb3VwCQljb250YWlucz10ZXhDaGFwdGVyWm9uZSx0ZXhTZWN0aW9uWm9uZSx0ZXhQYXJhWm9uZQotIHN5biBjbHVzdGVyIHRleENoYXB0ZXJHcm91cAkJY29udGFpbnM9dGV4U2VjdGlvblpvbmUsdGV4UGFyYVpvbmUKLSBzeW4gY2x1c3RlciB0ZXhTZWN0aW9uR3JvdXAJCWNvbnRhaW5zPXRleFN1YlNlY3Rpb25ab25lLHRleFBhcmFab25lCi0gc3luIGNsdXN0ZXIgdGV4U3ViU2VjdGlvbkdyb3VwCQljb250YWlucz10ZXhTdWJTdWJTZWN0aW9uWm9uZSx0ZXhQYXJhWm9uZQotIHN5biBjbHVzdGVyIHRleFN1YlN1YlNlY3Rpb25Hcm91cAljb250YWlucz10ZXhQYXJhWm9uZQotIHN5biBjbHVzdGVyIHRleFBhcmFHcm91cAkJY29udGFpbnM9dGV4U3ViUGFyYVpvbmUKLQotIHN5biByZWdpb24gdGV4RG9jWm9uZQkJCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0nXFxiZWdpblxzKntccypkb2N1bWVudFxzKn0nIGVuZD0nXFxlbmRccyp7XHMqZG9jdW1lbnRccyp9Jwlmb2xkIGtlZXBlbmQgY29udGFpbnM9QHRleEZvbGRHcm91cCxAdGV4RG9jR3JvdXAKLSBzeW4gcmVnaW9uIHRleFBhcnRab25lCQkJbWF0Y2hncm91cD10ZXhTZWN0aW9uIHN0YXJ0PSdcXHBhcnRcPicJCWVuZD0nXG5cemVccypcXHBhcnRcPicJCWZvbGQga2VlcGVuZCBjb250YWlucz1AdGV4Rm9sZEdyb3VwLEB0ZXhQYXJ0R3JvdXAKLSBzeW4gcmVnaW9uIHRleENoYXB0ZXJab25lCQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9J1xcY2hhcHRlclw+JwllbmQ9J1xuXHplXHMqXFxjaGFwdGVyXD4nCWZvbGQga2VlcGVuZCBjb250YWlucz1AdGV4Rm9sZEdyb3VwLEB0ZXhDaGFwdGVyR3JvdXAKLSBzeW4gcmVnaW9uIHRleFNlY3Rpb25ab25lCQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9J1xcc2VjdGlvblw+JwllbmQ9J1xuXHplXHMqXFxzZWN0aW9uXD4nCWZvbGQga2VlcGVuZCBjb250YWlucz1AdGV4Rm9sZEdyb3VwLEB0ZXhTZWN0aW9uR3JvdXAKLSBzeW4gcmVnaW9uIHRleFN1YlNlY3Rpb25ab25lCQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9J1xcc3Vic2VjdGlvblw+JwllbmQ9J1xuXHplXHMqXFxzdWJzZWN0aW9uXD4nCWZvbGQga2VlcGVuZCBjb250YWlucz1AdGV4Rm9sZEdyb3VwLEB0ZXhTdWJTZWN0aW9uR3JvdXAKLSBzeW4gcmVnaW9uIHRleFN1YlN1YlNlY3Rpb25ab25lCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0nXFxzdWJzdWJzZWN0aW9uXD4nCWVuZD0nXG5cemVccypcXHN1YnN1YnNlY3Rpb25cPicJZm9sZCBrZWVwZW5kIGNvbnRhaW5zPUB0ZXhGb2xkR3JvdXAsQHRleFN1YlN1YlNlY3Rpb25Hcm91cAotIHN5biByZWdpb24gdGV4UGFyYVpvbmUJCQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9J1xccGFyYWdyYXBoXD4nCWVuZD0nXG5cemVccypcXHBhcmFncmFwaFw+Jwlmb2xkIGtlZXBlbmQgY29udGFpbnM9QHRleEZvbGRHcm91cCxAdGV4UGFyYUdyb3VwCi0gc3luIHJlZ2lvbiB0ZXhTdWJQYXJhWm9uZQkJbWF0Y2hncm91cD10ZXhTZWN0aW9uIHN0YXJ0PSdcXHN1YnBhcmFncmFwaFw+JwllbmQ9J1xuXHplXHMqXFxzdWJwYXJhZ3JhcGhcPicJZm9sZCBrZWVwZW5kIGNvbnRhaW5zPUB0ZXhGb2xkR3JvdXAKLSBzeW4gcmVnaW9uIHRleFRpdGxlCQkJbWF0Y2hncm91cD10ZXhTZWN0aW9uIHN0YXJ0PSdcXFwlKGF1dGhvclx8dGl0bGVcKVw+XHMqeycgZW5kPSd9JwkJZm9sZCBjb250YWlucz1AdGV4Rm9sZEdyb3VwCi0gc3luIHJlZ2lvbiB0ZXhBYnN0cmFjdAkJCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0nXFxiZWdpblxzKntccyphYnN0cmFjdFxzKn0nIGVuZD0nXFxlbmRccyp7XHMqYWJzdHJhY3Rccyp9Jwlmb2xkIGNvbnRhaW5zPUB0ZXhGb2xkR3JvdXAKKyBzeW4gcmVnaW9uIHRleERvY1pvbmUJCQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9J1xcYmVnaW5ccyp7XHMqZG9jdW1lbnRccyp9JyBlbmQ9J1xcZW5kXHMqe1xzKmRvY3VtZW50XHMqfScJZm9sZCBrZWVwZW5kIGNvbnRhaW5zPUB0ZXhGb2xkR3JvdXAsQHRleERvY0dyb3VwLEBTcGVsbAorIHN5biByZWdpb24gdGV4UGFydFpvbmUJCQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9J1xccGFydFw+JwkJCSBlbmQ9J1xuXHplXHMqXFxwYXJ0XD4nCQlmb2xkIGtlZXBlbmQgY29udGFpbnM9QHRleEZvbGRHcm91cCxAdGV4UGFydEdyb3VwLEBTcGVsbAorIHN5biByZWdpb24gdGV4Q2hhcHRlclpvbmUJCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0nXFxjaGFwdGVyXD4nCQkgZW5kPSdcblx6ZVxzKlxcY2hhcHRlclw+Jwlmb2xkIGtlZXBlbmQgY29udGFpbnM9QHRleEZvbGRHcm91cCxAdGV4Q2hhcHRlckdyb3VwLEBTcGVsbAorIHN5biByZWdpb24gdGV4U2VjdGlvblpvbmUJCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0nXFxzZWN0aW9uXD4nCQkgZW5kPSdcblx6ZVxzKlxcc2VjdGlvblw+Jwlmb2xkIGtlZXBlbmQgY29udGFpbnM9QHRleEZvbGRHcm91cCxAdGV4U2VjdGlvbkdyb3VwLEBTcGVsbAorIHN5biByZWdpb24gdGV4U3ViU2VjdGlvblpvbmUJCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0nXFxzdWJzZWN0aW9uXD4nCQkgZW5kPSdcblx6ZVxzKlxcc3Vic2VjdGlvblw+Jwlmb2xkIGtlZXBlbmQgY29udGFpbnM9QHRleEZvbGRHcm91cCxAdGV4U3ViU2VjdGlvbkdyb3VwLEBTcGVsbAorIHN5biByZWdpb24gdGV4U3ViU3ViU2VjdGlvblpvbmUJbWF0Y2hncm91cD10ZXhTZWN0aW9uIHN0YXJ0PSdcXHN1YnN1YnNlY3Rpb25cPicJCWVuZD0nXG5cemVccypcXHN1YnN1YnNlY3Rpb25cPicJZm9sZCBrZWVwZW5kIGNvbnRhaW5zPUB0ZXhGb2xkR3JvdXAsQHRleFN1YlN1YlNlY3Rpb25Hcm91cCxAU3BlbGwKKyBzeW4gcmVnaW9uIHRleFBhcmFab25lCQkJbWF0Y2hncm91cD10ZXhTZWN0aW9uIHN0YXJ0PSdcXHBhcmFncmFwaFw+JwkJIGVuZD0nXG5cemVccypcXHBhcmFncmFwaFw+Jwlmb2xkIGtlZXBlbmQgY29udGFpbnM9QHRleEZvbGRHcm91cCxAdGV4UGFyYUdyb3VwLEBTcGVsbAorIHN5biByZWdpb24gdGV4U3ViUGFyYVpvbmUJCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0nXFxzdWJwYXJhZ3JhcGhcPicJCSBlbmQ9J1xuXHplXHMqXFxzdWJwYXJhZ3JhcGhcPicJZm9sZCBrZWVwZW5kIGNvbnRhaW5zPUB0ZXhGb2xkR3JvdXAsQFNwZWxsCisgc3luIHJlZ2lvbiB0ZXhUaXRsZQkJCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0nXFxcJShhdXRob3JcfHRpdGxlXClcPlxzKnsnIGVuZD0nfScJCWZvbGQgY29udGFpbnM9QHRleEZvbGRHcm91cCxAU3BlbGwKKyBzeW4gcmVnaW9uIHRleEFic3RyYWN0CQkJbWF0Y2hncm91cD10ZXhTZWN0aW9uIHN0YXJ0PSdcXGJlZ2luXHMqe1xzKmFic3RyYWN0XHMqfScgZW5kPSdcXGVuZFxzKntccyphYnN0cmFjdFxzKn0nCWZvbGQgY29udGFpbnM9QHRleEZvbGRHcm91cCxAU3BlbGwKIGVsc2UKLSBzeW4gbWF0Y2ggdGV4U2VjdGlvbgkJCSJcXFwoc3ViXCkqc2VjdGlvblwqXD1cPiIKLSBzeW4gbWF0Y2ggdGV4U2VjdGlvbgkJCSJcXFwocGFydFx8Y2hhcHRlclx8cGFyYWdyYXBoXHxzdWJwYXJhZ3JhcGhcKVw+IgotIHN5biByZWdpb24gdGV4VGl0bGUJCQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9J1xcXCUoYXV0aG9yXHx0aXRsZVwpXD5ccypcemV7JyBlbmQ9J30nCQljb250YWlucz1AdGV4Rm9sZEdyb3VwCi0gc3luIG1hdGNoIHRleFNlY3Rpb24JCQkiXFxiZWdpblxzKntccyphYnN0cmFjdFxzKn1cfFxcZW5kXHMqe1xzKmFic3RyYWN0XHMqfSIKKyBzeW4gcmVnaW9uIHRleERvY1pvbmUJCQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9J1xcYmVnaW5ccyp7XHMqZG9jdW1lbnRccyp9JyBlbmQ9J1xcZW5kXHMqe1xzKmRvY3VtZW50XHMqfScJa2VlcGVuZCBjb250YWlucz1AdGV4Rm9sZEdyb3VwLEB0ZXhEb2NHcm91cCxAU3BlbGwKKyBzeW4gcmVnaW9uIHRleFBhcnRab25lCQkJbWF0Y2hncm91cD10ZXhTZWN0aW9uIHN0YXJ0PSdcXHBhcnRcPicJCQkgZW5kPSdcblx6ZVxzKlxccGFydFw+JwkJa2VlcGVuZCBjb250YWlucz1AdGV4Rm9sZEdyb3VwLEB0ZXhQYXJ0R3JvdXAsQFNwZWxsCisgc3luIHJlZ2lvbiB0ZXhDaGFwdGVyWm9uZQkJbWF0Y2hncm91cD10ZXhTZWN0aW9uIHN0YXJ0PSdcXGNoYXB0ZXJcPicJCSBlbmQ9J1xuXHplXHMqXFxjaGFwdGVyXD4nCWtlZXBlbmQgY29udGFpbnM9QHRleEZvbGRHcm91cCxAdGV4Q2hhcHRlckdyb3VwLEBTcGVsbAorIHN5biByZWdpb24gdGV4U2VjdGlvblpvbmUJCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0nXFxzZWN0aW9uXD4nCQkgZW5kPSdcblx6ZVxzKlxcc2VjdGlvblw+JwlrZWVwZW5kIGNvbnRhaW5zPUB0ZXhGb2xkR3JvdXAsQHRleFNlY3Rpb25Hcm91cCxAU3BlbGwKKyBzeW4gcmVnaW9uIHRleFN1YlNlY3Rpb25ab25lCQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9J1xcc3Vic2VjdGlvblw+JwkJIGVuZD0nXG5cemVccypcXHN1YnNlY3Rpb25cPicJa2VlcGVuZCBjb250YWlucz1AdGV4Rm9sZEdyb3VwLEB0ZXhTdWJTZWN0aW9uR3JvdXAsQFNwZWxsCisgc3luIHJlZ2lvbiB0ZXhTdWJTdWJTZWN0aW9uWm9uZQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9J1xcc3Vic3Vic2VjdGlvblw+JwkJZW5kPSdcblx6ZVxzKlxcc3Vic3Vic2VjdGlvblw+JwlrZWVwZW5kIGNvbnRhaW5zPUB0ZXhGb2xkR3JvdXAsQHRleFN1YlN1YlNlY3Rpb25Hcm91cCxAU3BlbGwKKyBzeW4gcmVnaW9uIHRleFBhcmFab25lCQkJbWF0Y2hncm91cD10ZXhTZWN0aW9uIHN0YXJ0PSdcXHBhcmFncmFwaFw+JwkJIGVuZD0nXG5cemVccypcXHBhcmFncmFwaFw+JwlrZWVwZW5kIGNvbnRhaW5zPUB0ZXhGb2xkR3JvdXAsQHRleFBhcmFHcm91cCxAU3BlbGwKKyBzeW4gcmVnaW9uIHRleFN1YlBhcmFab25lCQltYXRjaGdyb3VwPXRleFNlY3Rpb24gc3RhcnQ9J1xcc3VicGFyYWdyYXBoXD4nCQkgZW5kPSdcblx6ZVxzKlxcc3VicGFyYWdyYXBoXD4nCWtlZXBlbmQgY29udGFpbnM9QHRleEZvbGRHcm91cCxAU3BlbGwKKyBzeW4gcmVnaW9uIHRleFRpdGxlCQkJbWF0Y2hncm91cD10ZXhTZWN0aW9uIHN0YXJ0PSdcXFwlKGF1dGhvclx8dGl0bGVcKVw+XHMqeycgZW5kPSd9JwkJCWNvbnRhaW5zPUB0ZXhGb2xkR3JvdXAsQFNwZWxsCisgc3luIHJlZ2lvbiB0ZXhBYnN0cmFjdAkJCW1hdGNoZ3JvdXA9dGV4U2VjdGlvbiBzdGFydD0nXFxiZWdpblxzKntccyphYnN0cmFjdFxzKn0nIGVuZD0nXFxlbmRccyp7XHMqYWJzdHJhY3Rccyp9Jwljb250YWlucz1AdGV4Rm9sZEdyb3VwLEBTcGVsbAogZW5kaWYKIAogIiBCYWQgTWF0aCAobWlzbWF0Y2hlZCk6IHt7ezEKQEAgLTM3MCw3ICszNzgsNyBAQAogIiBTZXBhcmF0ZSBsaW5lcyB1c2VkIGZvciB2ZXJiYCBhbmQgdmVyYiMgc28gdGhhdCB0aGUgZW5kIGNvbmRpdGlvbnMge3t7MQogIiB3aWxsIGFwcHJvcHJpYXRlbHkgdGVybWluYXRlLiAgSWRlYWxseSB2aW0gd291bGQgbGV0IG1lIHNhdmUgYQogIiBjaGFyYWN0ZXIgZnJvbSB0aGUgc3RhcnQgcGF0dGVybiBhbmQgcmUtdXNlIGl0IGluIHRoZSBlbmQtcGF0dGVybi4KLXN5biByZWdpb24gdGV4Wm9uZQkJc3RhcnQ9IlxcYmVnaW57dmVyYmF0aW19IgkJZW5kPSJcXGVuZHt2ZXJiYXRpbX1cfCVzdG9wem9uZVw+Igorc3luIHJlZ2lvbiB0ZXhab25lCQlzdGFydD0iXFxiZWdpbnt2ZXJiYXRpbX0iCQllbmQ9IlxcZW5ke3ZlcmJhdGltfVx8JXN0b3B6b25lXD4iCWNvbnRhaW5zPUBTcGVsbAogaWYgdmVyc2lvbiA8IDYwMAogIHN5biByZWdpb24gdGV4Wm9uZQkJc3RhcnQ9IlxcdmVyYlwqXD1gIgkJCWVuZD0iYFx8JXN0b3B6b25lXD4iCiAgc3luIHJlZ2lvbiB0ZXhab25lCQlzdGFydD0iXFx2ZXJiXCpcPSMiCQkJZW5kPSIjXHwlc3RvcHpvbmVcPiIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0gYi9ydW50aW1lL3N5bnRheC92aW0udmltCmluZGV4IGY4OTVkZjcuLjllNzlhYWIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0KKysrIGIvcnVudGltZS9zeW50YXgvdmltLnZpbQpAQCAtMSw4ICsxLDggQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglWaW0gNy4wIHNjcmlwdAogIiBNYWludGFpbmVyOglEci4gQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIDxOZHJPY2hpcFNAUGNhbXBiZWxsQWZhbWlseS5NYml6PgotIiBMYXN0IENoYW5nZToJQXVndXN0IDAyLCAyMDA1Ci0iIFZlcnNpb246CTcuMC0xMQorIiBMYXN0IENoYW5nZToJQXVnIDE2LCAyMDA1CisiIFZlcnNpb246CTcuMC0xMwogIiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBrZXl3b3JkIGxpc3RzOiB7e3sxCiAKICIgUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkIHt7ezIKQEAgLTE2LDcgKzE2LDcgQEAKIHN5biBjbHVzdGVyIHZpbUNvbW1lbnRHcm91cAljb250YWlucz12aW1Ub2RvLEBTcGVsbAogCiAiIHJlZ3VsYXIgdmltIGNvbW1hbmRzIHt7ezIKLXN5biBrZXl3b3JkIHZpbUNvbW1hbmQgY29udGFpbmVkCWFiW2JyZXZpYXRlXSBhYmNbbGVhcl0gYWJvW3ZlbGVmdF0gYWxbbF0gYXJnYVtkZF0gYXJnZFtlbGV0ZV0gYXJnZG8gYXJnZVtkaXRdIGFyZ2dbbG9iYWxdIGFyZ2xbb2NhbF0gYXJbZ3NdIGFyZ3VbbWVudF0gYXNbY2lpXSBiYWRbZF0gYmFbbGxdIGJkW2VsZXRlXSBiZSBiZWxbb3dyaWdodF0gYmZbaXJzdF0gYmxbYXN0XSBibVtvZGlmaWVkXSBibltleHRdIGJOW2V4dF0gYm9bdHJpZ2h0XSBicFtyZXZpb3VzXSBicmVhW2tdIGJyZWFrYVtkZF0gYnJlYWtkW2VsXSBicmVha2xbaXN0XSBicltld2luZF0gYnJvW3dzZV0gYnVmZG8gYlt1ZmZlcl0gYnVmZmVycyBidW5bbG9hZF0gYndbaXBlb3V0XSBjYVtiYnJldl0gY2FiY1tsZWFyXSBjYWRbZGZpbGVdIGNhbFtsXSBjYXRbY2hdIGNiW3VmZmVyXSBjYyBjY2xbb3NlXSBjZCBjZVtudGVyXSBjZXhbcHJdIGNmW2lsZV0gY2ZpcltzdF0gY2dbZXRmaWxlXSBjW2hhbmdlXSBjaGFuZ2VzIGNoZFtpcl0gY2hlW2NrcGF0aF0gY2hlY2t0W2ltZV0gY2xhW3N0XSBjbFtpc3RdIGNsb1tzZV0gY21hcGNbbGVhcl0gY25ld1tlcl0gY25bZXh0XSBjTltleHRdIGNuZltpbGVdIGNOZltpbGVdIGNub3JlYVtiYnJldl0gY29sW2Rlcl0gY29sb1tyc2NoZW1lXSBjb21jW2xlYXJdIGNvbXBbaWxlcl0gY29uZltpcm1dIGNvblt0aW51ZV0gY29wZVtuXSBjb1tweV0gY3BmW2lsZV0gY3BbcmV2aW91c10gY3FbdWl0XSBjcltld2luZF0gY3VuYVtiYnJldl0gY3Vbbm1hcF0gY3dbaW5kb3ddIGRlYnVnZ1tyZWVkeV0gZGVsY1tvbW1hbmRdIGRbZWxldGVdIERlbGV0ZUZpcnN0IGRlbGZbdW5jdGlvbl0gZGVsbVthcmtzXSBkaWZmZ1tldF0gZGlmZm9mZiBkaWZmcGF0Y2ggZGlmZnB1W3RdIGRpZmZzcGxpdCBkaWZmdGhpcyBkaWZmdVtwZGF0ZV0gZGlnW3JhcGhzXSBkaVtzcGxheV0gZGpbdW1wXSBkbFtpc3RdIGRyW29wXSBkc1tlYXJjaF0gZHNwW2xpdF0gZWNob2VbcnJdIGVjaG9tW3NnXSBlY2hvbiBlW2RpdF0gZWxbc2VdIGVsc2VpW2ZdIGVtW2VudV0gZW1lbnUqIGVuZGZvW3JdIGVuZGZbdW5jdGlvbl0gZW5bZGlmXSBlbmR0W3J5XSBlbmR3W2hpbGVdIGVuZVt3XSBleCBleGlbdF0gZXh1W3NhZ2VdIGZbaWxlXSBmaWxlcyBmaWxldHlwZSBmaW5hW2xseV0gZmluW2RdIGZpbmlbc2hdIGZpcltzdF0gZml4W2RlbF0gZm9bbGRdIGZvbGRjW2xvc2VdIGZvbGRkb2NbbG9zZWRdIGZvbGRkW29vcGVuXSBmb2xkb1twZW5dIGZvciBmdVtuY3Rpb25dIGdbbG9iYWxdIGdvW3RvXSBncltlcF0gZ3JlcGFbZGRdIGhhW3JkY29weV0gaFtlbHBdIGhlbHBmW2luZF0gaGVscGdbcmVwXSBoZWxwdFthZ3NdIGhpZFtlXSBoaXNbdG9yeV0gSSBpYVtiYnJldl0gaWFiY1tsZWFyXSBpZiBpalt1bXBdIGlsW2lzdF0gaW1hcGNbbGVhcl0gaW5vcmVhW2JicmV2XSBpc1tlYXJjaF0gaXNwW2xpdF0gaXVuYVtiYnJldl0gaXVbbm1hcF0galtvaW5dIGp1W21wc10gayBrZWVwYWx0IGtlZXBqW3VtcHNdIGtlZVtwbWFya3NdIGxhbltndWFnZV0gbGFbc3RdIGxjW2RdIGxjaFtkaXJdIGxlW2Z0XSBsZWZ0YVtib3ZlXSBsW2lzdF0gbG1bYXBdIGxtYXBjW2xlYXJdIGxuW29yZW1hcF0gbG9bYWR2aWV3XSBsb2Nba21hcmtzXSBsb2Nrdlthcl0gbHMgbHVbbm1hcF0gbWFrW2VdIG1hW3JrXSBtYXJrcyBtYXRbY2hdIG1lbnV0W3JhbnNsYXRlXSBta1tleHJjXSBta3NbZXNzaW9uXSBta3NwW2VsbF0gbWt2aWVbd10gbWt2W2ltcmNdIG1vZFtlXSBtW292ZV0gbXpmW2lsZV0gbXpbc2NoZW1lXSBuYmtleSBuZXcgbltleHRdIE5bZXh0XSBubWFwY1tsZWFyXSBub2hbbHNlYXJjaF0gbm9yZWFbYmJyZXZdIE5yZWFkIG51W21iZXJdIG51blttYXBdIE53IG9tYXBjW2xlYXJdIG9uW2x5XSBvW3Blbl0gb3B0W2lvbnNdIG91W25tYXBdIHBjW2xvc2VdIHBlZFtpdF0gcGVbcmxdIHBlcmxkW29dIHBvW3BdIHBvcHUgcG9wdVtwXSBwcFtvcF0gcHJlW3NlcnZlXSBwcmV2W2lvdXNdIHBbcmludF0gUFtyaW50XSBwcm9mZFtlbF0gcHJvZltpbGVdIHByb21wdCBwcm9tcHRmW2luZF0gcHJvbXB0cltlcGxdIHBzW2VhcmNoXSBwdGFbZ10gcHRmW2lyc3RdIHB0alt1bXBdIHB0bFthc3RdIHB0bltleHRdIHB0TltleHRdIHB0cFtyZXZpb3VzXSBwdHJbZXdpbmRdIHB0c1tlbGVjdF0gcHVbdF0gcHdbZF0gcHlmW2lsZV0gcHlbdGhvbl0gcWFbbGxdIHFbdWl0XSBxdWl0YVtsbF0gcltlYWRdIHJlY1tvdmVyXSByZWRpW3JdIHJlZFtvXSByZWRyW2F3XSByZWRyYXdzW3RhdHVzXSByZWdbaXN0ZXJzXSByZXNbaXplXSByZXRbYWJdIHJldHVbcm5dIHJld1tpbmRdIHJpW2dodF0gcmlnaHRiW2Vsb3ddIHJ1Ylt5XSBydWJ5ZFtvXSBydWJ5ZltpbGVdIHJ1W250aW1lXSBydltpbWluZm9dIHNhbFtsXSBzYW5bZGJveF0gc2Fbcmd1bWVudF0gc2F2W2Vhc10gc2JhW2xsXSBzYmZbaXJzdF0gc2JsW2FzdF0gc2JtW29kaWZpZWRdIHNibltleHRdIHNiTltleHRdIHNicFtyZXZpb3VzXSBzYnJbZXdpbmRdIHNiW3VmZmVyXSBzY3JpcHRlW25jb2RpbmddIHNjcmlwW3RuYW1lc10gc2VbdF0gc2V0ZltpbGV0eXBlXSBzZXRnW2xvYmFsXSBzZXRsW29jYWxdIHNmW2luZF0gc2ZpcltzdF0gc2hbZWxsXSBzaWduIHNpbFtlbnRdIHNpbVthbHRdIHNsYVtzdF0gc2xbZWVwXSBzbVthZ2ljXSBzbltleHRdIHNOW2V4dF0gc25pW2ZmXSBzbm9bbWFnaWNdIHNvclt0XSBzb1t1cmNlXSBzcGVsbGRbdW1wXSBzcGVbbGxnb29kXSBzcGVsbHJbZXBhbGxdIHNwZWxsd1tyb25nXSBzcFtsaXRdIHNwcltldmlvdXNdIHNyZVt3aW5kXSBzdGFbZ10gc3Rhclt0aW5zZXJ0XSBzdGFydHJbZXBsYWNlXSBzdGpbdW1wXSBzdFtvcF0gc3RvcGlbbnNlcnRdIHN0c1tlbGVjdF0gc3VuW2hpZGVdIHN1c1twZW5kXSBzdltpZXddIHN5bmNiaW5kIHQgdGFbZ10gdGFncyB0Y1tsXSB0Y2xkW29dIHRjbGZbaWxlXSB0ZVthcm9mZl0gdGZbaXJzdF0gdGhlIHRoW3Jvd10gdGpbdW1wXSB0bFthc3RdIHRtIHRtW2VudV0gdG5bZXh0XSB0TltleHRdIHRvW3BsZWZ0XSB0cFtyZXZpb3VzXSB0cltld2luZF0gdHJ5IHRzW2VsZWN0XSB0dSB0dVtubWVudV0gdW5hW2JicmV2aWF0ZV0gdVtuZG9dIHVuaFtpZGVdIHVubG9bY2t2YXJdIHVubVthcF0gdXBbZGF0ZV0gdmVyYltvc2VdIHZlW3JzaW9uXSB2ZXJ0W2ljYWxdIHZbZ2xvYmFsXSB2aWVbd10gdmltW2dyZXBdIHZpbWdyZXBhW2RkXSB2aVtzdWFsXSB2aXVbc2FnZV0gdm1hcGNbbGVhcl0gdm5lW3ddIHZzW3BsaXRdIHZ1W25tYXBdIHdhW2xsXSB3aFtpbGVdIHdpbmNbbWRdIHdpbmRvIHdpbnBbb3NdIHdpbltzaXplXSB3bltleHRdIHdOW2V4dF0gd3BbcmV2aW91c10gd3Egd3FhW2xsXSB3W3JpdGVdIHdzW3ZlcmJdIHd2W2ltaW5mb10gWCB4YVtsbF0geFtpdF0geVthbmtdIAorc3luIGtleXdvcmQgdmltQ29tbWFuZCBjb250YWluZWQJYWJbYnJldmlhdGVdIGFiY1tsZWFyXSBhYm9bdmVsZWZ0XSBhbFtsXSBhcmdhW2RkXSBhcmdkW2VsZXRlXSBhcmdkbyBhcmdlW2RpdF0gYXJnZ1tsb2JhbF0gYXJnbFtvY2FsXSBhcltnc10gYXJndVttZW50XSBhc1tjaWldIGJhZFtkXSBiYVtsbF0gYmRbZWxldGVdIGJlIGJlbFtvd3JpZ2h0XSBiZltpcnN0XSBibFthc3RdIGJtW29kaWZpZWRdIGJuW2V4dF0gYk5bZXh0XSBib1t0cmlnaHRdIGJwW3JldmlvdXNdIGJyZWFba10gYnJlYWthW2RkXSBicmVha2RbZWxdIGJyZWFrbFtpc3RdIGJyW2V3aW5kXSBicm9bd3NlXSBidWZkbyBiW3VmZmVyXSBidWZmZXJzIGJ1bltsb2FkXSBid1tpcGVvdXRdIGNhW2JicmV2XSBjYWJjW2xlYXJdIGNhZFtkZmlsZV0gY2FsW2xdIGNhdFtjaF0gY2JbdWZmZXJdIGNjIGNjbFtvc2VdIGNkIGNlW250ZXJdIGNleFtwcl0gY2ZbaWxlXSBjZmlyW3N0XSBjZ1tldGZpbGVdIGNbaGFuZ2VdIGNoYW5nZXMgY2hkW2lyXSBjaGVbY2twYXRoXSBjaGVja3RbaW1lXSBjbGFbc3RdIGNsW2lzdF0gY2xvW3NlXSBjbWFwY1tsZWFyXSBjbmV3W2VyXSBjbltleHRdIGNOW2V4dF0gY25mW2lsZV0gY05mW2lsZV0gY25vcmVhW2JicmV2XSBjb2xbZGVyXSBjb2xvW3JzY2hlbWVdIGNvbWNbbGVhcl0gY29tcFtpbGVyXSBjb25mW2lybV0gY29uW3RpbnVlXSBjb3BlW25dIGNvW3B5XSBjcGZbaWxlXSBjcFtyZXZpb3VzXSBjcVt1aXRdIGNyW2V3aW5kXSBjdW5hW2JicmV2XSBjdVtubWFwXSBjd1tpbmRvd10gZGVidWdnW3JlZWR5XSBkZWxjW29tbWFuZF0gZFtlbGV0ZV0gRGVsZXRlRmlyc3QgZGVsZlt1bmN0aW9uXSBkZWxtW2Fya3NdIGRpZmZnW2V0XSBkaWZmb2ZmIGRpZmZwYXRjaCBkaWZmcHVbdF0gZGlmZnNwbGl0IGRpZmZ0aGlzIGRpZmZ1W3BkYXRlXSBkaWdbcmFwaHNdIGRpW3NwbGF5XSBkalt1bXBdIGRsW2lzdF0gZHJbb3BdIGRzW2VhcmNoXSBkc3BbbGl0XSBlY2hvZVtycl0gZWNob21bc2ddIGVjaG9uIGVbZGl0XSBlbFtzZV0gZWxzZWlbZl0gZW1bZW51XSBlbWVudSogZW5kZm9bcl0gZW5kZlt1bmN0aW9uXSBlbltkaWZdIGVuZHRbcnldIGVuZHdbaGlsZV0gZW5lW3ddIGV4IGV4aVt0XSBFeHBsb3JlIGV4dVtzYWdlXSBmW2lsZV0gZmlsZXMgZmlsZXR5cGUgZmluYVtsbHldIGZpbltkXSBmaW5pW3NoXSBmaXJbc3RdIGZpeFtkZWxdIGZvW2xkXSBmb2xkY1tsb3NlXSBmb2xkZG9jW2xvc2VkXSBmb2xkZFtvb3Blbl0gZm9sZG9bcGVuXSBmb3IgZnVbbmN0aW9uXSBnW2xvYmFsXSBnb1t0b10gZ3JbZXBdIGdyZXBhW2RkXSBoYVtyZGNvcHldIGhbZWxwXSBoZWxwZltpbmRdIGhlbHBnW3JlcF0gaGVscHRbYWdzXSBIZXhwbG9yZSBoaWRbZV0gaGlzW3RvcnldIEkgaWFbYmJyZXZdIGlhYmNbbGVhcl0gaWYgaWpbdW1wXSBpbFtpc3RdIGltYXBjW2xlYXJdIGlub3JlYVtiYnJldl0gaXNbZWFyY2hdIGlzcFtsaXRdIGl1bmFbYmJyZXZdIGl1W25tYXBdIGpbb2luXSBqdVttcHNdIGsga2VlcGFsdCBrZWVwalt1bXBzXSBrZWVbcG1hcmtzXSBsYW5bZ3VhZ2VdIGxhW3N0XSBsY1tkXSBsY2hbZGlyXSBsZVtmdF0gbGVmdGFbYm92ZV0gbFtpc3RdIGxtW2FwXSBsbWFwY1tsZWFyXSBsbltvcmVtYXBdIGxvW2Fkdmlld10gbG9jW2ttYXJrc10gbG9ja3ZbYXJdIGxzIGx1W25tYXBdIG1ha1tlXSBtYVtya10gbWFya3MgbWF0W2NoXSBtZW51dFtyYW5zbGF0ZV0gbWtbZXhyY10gbWtzW2Vzc2lvbl0gbWtzcFtlbGxdIG1rdmllW3ddIG1rdltpbXJjXSBtb2RbZV0gbVtvdmVdIG16ZltpbGVdIG16W3NjaGVtZV0gbmJrZXkgbmV3IG5bZXh0XSBOW2V4dF0gbm1hcGNbbGVhcl0gbm9oW2xzZWFyY2hdIG5vcmVhW2JicmV2XSBOcmVhZCBudVttYmVyXSBudW5bbWFwXSBOdyBvbWFwY1tsZWFyXSBvbltseV0gb1twZW5dIG9wdFtpb25zXSBvdVtubWFwXSBwY1tsb3NlXSBwZWRbaXRdIHBlW3JsXSBwZXJsZFtvXSBwb1twXSBwb3B1IHBvcHVbcF0gcHBbb3BdIHByZVtzZXJ2ZV0gcHJldltpb3VzXSBwW3JpbnRdIFBbcmludF0gcHJvZmRbZWxdIHByb2ZbaWxlXSBwcm9tcHQgcHJvbXB0ZltpbmRdIHByb21wdHJbZXBsXSBwc1tlYXJjaF0gcHRhW2ddIHB0ZltpcnN0XSBwdGpbdW1wXSBwdGxbYXN0XSBwdG5bZXh0XSBwdE5bZXh0XSBwdHBbcmV2aW91c10gcHRyW2V3aW5kXSBwdHNbZWxlY3RdIHB1W3RdIHB3W2RdIHB5ZltpbGVdIHB5W3Rob25dIHFhW2xsXSBxW3VpdF0gcXVpdGFbbGxdIHJbZWFkXSByZWNbb3Zlcl0gcmVkaVtyXSByZWRbb10gcmVkclthd10gcmVkcmF3c1t0YXR1c10gcmVnW2lzdGVyc10gcmVzW2l6ZV0gcmV0W2FiXSByZXR1W3JuXSByZXdbaW5kXSByaVtnaHRdIHJpZ2h0YltlbG93XSBydWJbeV0gcnVieWRbb10gcnVieWZbaWxlXSBydVtudGltZV0gcnZbaW1pbmZvXSBzYWxbbF0gc2FuW2Rib3hdIHNhW3JndW1lbnRdIHNhdltlYXNdIHNiYVtsbF0gc2JmW2lyc3RdIHNibFthc3RdIHNibVtvZGlmaWVkXSBzYm5bZXh0XSBzYk5bZXh0XSBzYnBbcmV2aW91c10gc2JyW2V3aW5kXSBzYlt1ZmZlcl0gc2NyaXB0ZVtuY29kaW5nXSBzY3JpcFt0bmFtZXNdIHNlW3RdIHNldGZbaWxldHlwZV0gc2V0Z1tsb2JhbF0gc2V0bFtvY2FsXSBTZXhwbG9yZSBzZltpbmRdIHNmaXJbc3RdIHNoW2VsbF0gc2lnbiBzaWxbZW50XSBzaW1bYWx0XSBzbGFbc3RdIHNsW2VlcF0gc21bYWdpY10gc25bZXh0XSBzTltleHRdIHNuaVtmZl0gc25vW21hZ2ljXSBzb3JbdF0gc29bdXJjZV0gc3BlbGxkW3VtcF0gc3BlW2xsZ29vZF0gc3BlbGxyW2VwYWxsXSBzcGVsbHdbcm9uZ10gc3BbbGl0XSBzcHJbZXZpb3VzXSBzcmVbd2luZF0gc3RhW2ddIHN0YXJbdGluc2VydF0gc3RhcnRyW2VwbGFjZV0gc3RqW3VtcF0gc3Rbb3BdIHN0b3BpW25zZXJ0XSBzdHNbZWxlY3RdIHN1bltoaWRlXSBzdXNbcGVuZF0gc3ZbaWV3XSBzeW5jYmluZCB0IHRhW2ddIHRhZ3MgdGNbbF0gdGNsZFtvXSB0Y2xmW2lsZV0gdGVbYXJvZmZdIHRmW2lyc3RdIHRoZSB0aFtyb3ddIHRqW3VtcF0gdGxbYXN0XSB0bSB0bVtlbnVdIHRuW2V4dF0gdE5bZXh0XSB0b1twbGVmdF0gdHBbcmV2aW91c10gdHJbZXdpbmRdIHRyeSB0c1tlbGVjdF0gdHUgdHVbbm1lbnVdIHVuYVtiYnJldmlhdGVdIHVbbmRvXSB1bmhbaWRlXSB1bmxvW2NrdmFyXSB1bm1bYXBdIHVwW2RhdGVdIHZlcmJbb3NlXSB2ZVtyc2lvbl0gdmVydFtpY2FsXSBWZXhwbG9yZSB2W2dsb2JhbF0gdmllW3ddIHZpbVtncmVwXSB2aW1ncmVwYVtkZF0gdmlbc3VhbF0gdml1W3NhZ2VdIHZtYXBjW2xlYXJdIHZuZVt3XSB2c1twbGl0XSB2dVtubWFwXSB3YVtsbF0gd2hbaWxlXSB3aW5jW21kXSB3aW5kbyB3aW5wW29zXSB3aW5bc2l6ZV0gd25bZXh0XSB3TltleHRdIHdwW3JldmlvdXNdIHdxIHdxYVtsbF0gd1tyaXRlXSB3c1t2ZXJiXSB3dltpbWluZm9dIFggeGFbbGxdIHhbaXRdIHlbYW5rXSAKIHN5biBtYXRjaCAgIHZpbUNvbW1hbmQgY29udGFpbmVkCSJcPHpbLSteLj1dIgogCiAiIHZpbU9wdGlvbnMgYXJlIGNhdWdodCBvbmx5IHdoZW4gY29udGFpbmVkIGluIGEgdmltU2V0IHt7ezIKQEAgLTU1LDcgKzU1LDcgQEAKIHN5biBjYXNlIG1hdGNoCiAKICIgRnVuY3Rpb24gTmFtZXMge3t7Mgotc3luIGtleXdvcmQgdmltRnVuY05hbWUgY29udGFpbmVkCWFkZCBhcHBlbmQgYXJnYyBhcmdpZHggYXJndiBicm93c2UgYnJvd3NlZGlyIGJ1ZmV4aXN0cyBidWZsaXN0ZWQgYnVmbG9hZGVkIGJ1Zm5hbWUgYnVmbnIgYnVmd2lubnIgYnl0ZTJsaW5lIGJ5dGVpZHggY2FsbCBjaGFyMm5yIGNpbmRlbnQgY29sIGNvbmZpcm0gY29weSBjb3VudCBjc2NvcGVfY29ubmVjdGlvbiBjdXJzb3IgZGVlcGNvcHkgZGVsZXRlIGRpZF9maWxldHlwZSBkaWZmX2ZpbGxlciBkaWZmX2hsSUQgZW1wdHkgZXNjYXBlIGV2YWwgZXZlbnRoYW5kbGVyIGV4ZWN1dGFibGUgZXhpc3RzIGV4cGFuZCBleHByOCBleHRlbmQgZmlsZXJlYWRhYmxlIGZpbGV3cml0YWJsZSBmaWx0ZXIgZmluZGRpciBmaW5kZmlsZSBmbmFtZW1vZGlmeSBmb2xkY2xvc2VkIGZvbGRjbG9zZWRlbmQgZm9sZGxldmVsIGZvbGR0ZXh0IGZvbGR0ZXh0cmVzdWx0IGZvcmVncm91bmQgZnVuY3Rpb24gZ2FyYmFnZWNvbGxlY3QgZ2V0IGdldGJ1ZmxpbmUgZ2V0YnVmdmFyIGdldGNoYXIgZ2V0Y2hhcm1vZCBnZXRjbWRsaW5lIGdldGNtZHBvcyBnZXRjd2QgZ2V0Zm9udG5hbWUgZ2V0ZnBlcm0gZ2V0ZnNpemUgZ2V0ZnRpbWUgZ2V0ZnR5cGUgZ2V0bGluZSBnZXRxZmxpc3QgZ2V0cmVnIGdldHJlZ3R5cGUgZ2V0d2lucG9zeCBnZXR3aW5wb3N5IGdldHdpbnZhciBnbG9iIGdsb2JwYXRoIGhhcyBoYXNfa2V5IGhhc21hcHRvIGhpc3RhZGQgaGlzdGRlbCBoaXN0Z2V0IGhpc3RuciBobGV4aXN0cyBobElEIGhvc3RuYW1lIGljb252IGluZGVudCBpbmRleCBpbnB1dCBpbnB1dGRpYWxvZyBpbnB1dHJlc3RvcmUgaW5wdXRzYXZlIGlucHV0c2VjcmV0IGluc2VydCBpc2RpcmVjdG9yeSBpc2xvY2tlZCBpdGVtcyBqb2luIGtleXMgbGVuIGxpYmNhbGwgbGliY2FsbG5yIGxpbmUgbGluZTJieXRlIGxpc3BpbmRlbnQgbG9jYWx0aW1lIG1hcCBtYXBhcmcgbWFwY2hlY2sgbWF0Y2ggbWF0Y2hlbmQgbWF0Y2hsaXN0IG1hdGNoc3RyIG1heCBtaW4gbWtkaXIgbW9kZSBuZXh0bm9uYmxhbmsgbnIyY2hhciBwcmV2bm9uYmxhbmsgcHJpbnRmIHJhbmdlIHJlYWRmaWxlIHJlbW90ZV9leHByIHJlbW90ZV9mb3JlZ3JvdW5kIHJlbW90ZV9wZWVrIHJlbW90ZV9yZWFkIHJlbW90ZV9zZW5kIHJlbW92ZSByZW5hbWUgcmVwZWF0IHJlc29sdmUgcmV2ZXJzZSBzZWFyY2ggc2VhcmNocGFpciBzZXJ2ZXIyY2xpZW50IHNlcnZlcmxpc3Qgc2V0YnVmdmFyIHNldGNtZHBvcyBzZXRsaW5lIHNldHFmbGlzdCBzZXRyZWcgc2V0d2ludmFyIHNpbXBsaWZ5IHNvcnQgc291bmRmb2xkIHNwZWxsYmFkd29yZCBzcGVsbHN1Z2dlc3Qgc3BsaXQgc3RyZnRpbWUgc3RyaWR4IHN0cmluZyBzdHJsZW4gc3RycGFydCBzdHJyaWR4IHN0cnRyYW5zIHN1Ym1hdGNoIHN1YnN0aXR1dGUgc3luSUQgc3luSURhdHRyIHN5bklEdHJhbnMgc3lzdGVtIHRhZ2xpc3QgdGVtcG5hbWUgdG9sb3dlciB0b3VwcGVyIHRyIHR5cGUgdmFsdWVzIHZpcnRjb2wgdmlzdWFsbW9kZSB3aW5idWZuciB3aW5jb2wgd2luaGVpZ2h0IHdpbmxpbmUgd2lubnIgd2lucmVzdGNtZCB3aW53aWR0aCB3cml0ZWZpbGUgCitzeW4ga2V5d29yZCB2aW1GdW5jTmFtZSBjb250YWluZWQJYWRkIGFwcGVuZCBhcmdjIGFyZ2lkeCBhcmd2IGJyb3dzZSBicm93c2VkaXIgYnVmZXhpc3RzIGJ1Zmxpc3RlZCBidWZsb2FkZWQgYnVmbmFtZSBidWZuciBidWZ3aW5uciBieXRlMmxpbmUgYnl0ZWlkeCBjYWxsIGNoYXIybnIgY2luZGVudCBjb2wgY29tcGxldGVfYWRkIGNvbXBsZXRlX2NoZWNrIGNvbmZpcm0gY29weSBjb3VudCBjc2NvcGVfY29ubmVjdGlvbiBjdXJzb3IgZGVlcGNvcHkgZGVsZXRlIGRpZF9maWxldHlwZSBkaWZmX2ZpbGxlciBkaWZmX2hsSUQgZW1wdHkgZXNjYXBlIGV2YWwgZXZlbnRoYW5kbGVyIGV4ZWN1dGFibGUgZXhpc3RzIGV4cGFuZCBleHByOCBleHRlbmQgZmlsZXJlYWRhYmxlIGZpbGV3cml0YWJsZSBmaWx0ZXIgZmluZGRpciBmaW5kZmlsZSBmbmFtZW1vZGlmeSBmb2xkY2xvc2VkIGZvbGRjbG9zZWRlbmQgZm9sZGxldmVsIGZvbGR0ZXh0IGZvbGR0ZXh0cmVzdWx0IGZvcmVncm91bmQgZnVuY3Rpb24gZ2FyYmFnZWNvbGxlY3QgZ2V0IGdldGJ1ZmxpbmUgZ2V0YnVmdmFyIGdldGNoYXIgZ2V0Y2hhcm1vZCBnZXRjbWRsaW5lIGdldGNtZHBvcyBnZXRjd2QgZ2V0Zm9udG5hbWUgZ2V0ZnBlcm0gZ2V0ZnNpemUgZ2V0ZnRpbWUgZ2V0ZnR5cGUgZ2V0bGluZSBnZXRxZmxpc3QgZ2V0cmVnIGdldHJlZ3R5cGUgZ2V0d2lucG9zeCBnZXR3aW5wb3N5IGdldHdpbnZhciBnbG9iIGdsb2JwYXRoIGhhcyBoYXNfa2V5IGhhc21hcHRvIGhpc3RhZGQgaGlzdGRlbCBoaXN0Z2V0IGhpc3RuciBobGV4aXN0cyBobElEIGhvc3RuYW1lIGljb252IGluZGVudCBpbmRleCBpbnB1dCBpbnB1dGRpYWxvZyBpbnB1dHJlc3RvcmUgaW5wdXRzYXZlIGlucHV0c2VjcmV0IGluc2VydCBpc2RpcmVjdG9yeSBpc2xvY2tlZCBpdGVtcyBqb2luIGtleXMgbGVuIGxpYmNhbGwgbGliY2FsbG5yIGxpbmUgbGluZTJieXRlIGxpc3BpbmRlbnQgbG9jYWx0aW1lIG1hcCBtYXBhcmcgbWFwY2hlY2sgbWF0Y2ggbWF0Y2hlbmQgbWF0Y2hsaXN0IG1hdGNoc3RyIG1heCBtaW4gbWtkaXIgbW9kZSBuZXh0bm9uYmxhbmsgbnIyY2hhciBwcmV2bm9uYmxhbmsgcHJpbnRmIHJhbmdlIHJlYWRmaWxlIHJlbW90ZV9leHByIHJlbW90ZV9mb3JlZ3JvdW5kIHJlbW90ZV9wZWVrIHJlbW90ZV9yZWFkIHJlbW90ZV9zZW5kIHJlbW92ZSByZW5hbWUgcmVwZWF0IHJlc29sdmUgcmV2ZXJzZSBzZWFyY2ggc2VhcmNocGFpciBzZXJ2ZXIyY2xpZW50IHNlcnZlcmxpc3Qgc2V0YnVmdmFyIHNldGNtZHBvcyBzZXRsaW5lIHNldHFmbGlzdCBzZXRyZWcgc2V0d2ludmFyIHNpbXBsaWZ5IHNvcnQgc291bmRmb2xkIHNwZWxsYmFkd29yZCBzcGVsbHN1Z2dlc3Qgc3BsaXQgc3RyZnRpbWUgc3RyaWR4IHN0cmluZyBzdHJsZW4gc3RycGFydCBzdHJyaWR4IHN0cnRyYW5zIHN1Ym1hdGNoIHN1YnN0aXR1dGUgc3luSUQgc3luSURhdHRyIHN5bklEdHJhbnMgc3lzdGVtIHRhZ2xpc3QgdGVtcG5hbWUgdG9sb3dlciB0b3VwcGVyIHRyIHR5cGUgdmFsdWVzIHZpcnRjb2wgdmlzdWFsbW9kZSB3aW5idWZuciB3aW5jb2wgd2luaGVpZ2h0IHdpbmxpbmUgd2lubnIgd2lucmVzdGNtZCB3aW53aWR0aCB3cml0ZWZpbGUgCiAKICItLS0gc3ludGF4IGFib3ZlIGdlbmVyYXRlZCBieSBta3ZpbXZpbSAtLS0KICIgU3BlY2lhbCBWaW0gSGlnaGxpZ2h0aW5nIChub3QgYXV0b21hdGljKSB7e3sxCkBAIC0xMjMsNyArMTIzLDcgQEAKIAogIiBPcGVyYXRvcnM6IHt7ezIKICIgPT09PT09PT09Ci1zeW4gY2x1c3RlciB2aW1PcGVyR3JvdXAJY29udGFpbnM9dmltT3Blcix2aW1PcGVyUGFyZW4sdmltTnVtYmVyLHZpbVN0cmluZyx2aW1PcGVyT2sKK3N5biBjbHVzdGVyIHZpbU9wZXJHcm91cAljb250YWlucz12aW1PcGVyLHZpbU9wZXJQYXJlbix2aW1OdW1iZXIsdmltU3RyaW5nLHZpbU9wZXJPayx2aW1SZWdpc3Rlcgogc3luIG1hdGNoICB2aW1PcGVyCSJcKD09XHwhPVx8Pj1cfDw9XHw9XH5cfCFcflx8Plx8PFx8PVwpWz8jXVx7MCwyfSIJc2tpcHdoaXRlIG5leHRncm91cD12aW1TdHJpbmcsdmltU3BlY0ZpbGUKIHN5biBtYXRjaCAgdmltT3BlcgkifHxcfCYmXHxbLSsuXSIJc2tpcHdoaXRlIG5leHRncm91cD12aW1TdHJpbmcsdmltU3BlY0ZpbGUKIHN5biByZWdpb24gdmltT3BlclBhcmVuIG9uZWxpbmUJbWF0Y2hncm91cD12aW1PcGVyIHN0YXJ0PSIoIiBlbmQ9IikiIGNvbnRhaW5zPUB2aW1PcGVyR3JvdXAKQEAgLTE5Myw4ICsxOTMsOCBAQAogc3luIHJlZ2lvbiB2aW1QYXRSZWdpb24JY29udGFpbmVkIHRyYW5zcGFyZW50IG1hdGNoZ3JvdXA9dmltUGF0U2VwUiBzdGFydD0iXFxbeiVdXD0oIiBlbmQ9IlxcKSIJY29udGFpbnM9QHZpbVN1YnN0TGlzdCBvbmVsaW5lCiBzeW4gbWF0Y2ggIHZpbU5vdFBhdFNlcAljb250YWluZWQJIlxcXFwiCiBzeW4gY2x1c3RlciB2aW1TdHJpbmdHcm91cAljb250YWlucz12aW1Fc2NhcGVCcmFjZSx2aW1QYXRTZXAsdmltTm90UGF0U2VwLHZpbVBhdFNlcEVycix2aW1QYXRTZXBab25lCi1zeW4gcmVnaW9uIHZpbVN0cmluZwlvbmVsaW5lIGtlZXBlbmQJc3RhcnQ9K1teOmEtekEtWj4hXFxdIitsYz0xIHNraXA9K1xcXFxcfFxcIisgZW5kPSsiKwljb250YWlucz1AdmltU3RyaW5nR3JvdXAKLXN5biByZWdpb24gdmltU3RyaW5nCW9uZWxpbmUga2VlcGVuZAlzdGFydD0rW146YS16QS1aPiFcXF0nK2xjPTEgZW5kPSsnKwljb250YWlucz1AdmltU3RyaW5nR3JvdXAKK3N5biByZWdpb24gdmltU3RyaW5nCW9uZWxpbmUga2VlcGVuZAlzdGFydD0rW146YS16QS1aPiFcXEBdIitsYz0xIHNraXA9K1xcXFxcfFxcIisgZW5kPSsiKwljb250YWlucz1AdmltU3RyaW5nR3JvdXAKK3N5biByZWdpb24gdmltU3RyaW5nCW9uZWxpbmUga2VlcGVuZAlzdGFydD0rW146YS16QS1aPiFcXEBdJytsYz0xIGVuZD0rJysJY29udGFpbnM9QHZpbVN0cmluZ0dyb3VwCiBzeW4gcmVnaW9uIHZpbVN0cmluZwlvbmVsaW5lCXN0YXJ0PSs9IStsYz0xCXNraXA9K1xcXFxcfFxcISsgZW5kPSshKwljb250YWlucz1AdmltU3RyaW5nR3JvdXAKIHN5biByZWdpb24gdmltU3RyaW5nCW9uZWxpbmUJc3RhcnQ9Ij0rImxjPTEJc2tpcD0iXFxcXFx8XFwrIiBlbmQ9IisiCWNvbnRhaW5zPUB2aW1TdHJpbmdHcm91cAogc3luIHJlZ2lvbiB2aW1TdHJpbmcJb25lbGluZQlzdGFydD0iXHMvXHMqXEEibGM9MSBza2lwPSJcXFxcXHxcXCsiIGVuZD0iLyIJY29udGFpbnM9QHZpbVN0cmluZ0dyb3VwCkBAIC0yMzIsMjEgKzIzMiwyMSBAQAogc3luIG1hdGNoICB2aW1NYXJrTnVtYmVyCSJbLStdXGRcKyIJCW5leHRncm91cD12aW1TdWJzdCBjb250YWluZWQgY29udGFpbnM9dmltT3Blcgogc3luIG1hdGNoICB2aW1QbGFpbk1hcmsgY29udGFpbmVkCSInW2EtekEtWjAtOV0iCiAKLXN5biBtYXRjaCAgdmltUmVnaXN0ZXIJJ1teKCw7Ll0iW2EtekEtWjAtOS4lIzpfXC0vXVteYS16QS1aXyJdJ2xjPTEsbWU9ZS0xCi1zeW4gbWF0Y2ggIHZpbVJlZ2lzdGVyCSdcPG5vcm1cc1wrIlthLXpBLVowLTldJ2xjPTUKLXN5biBtYXRjaCAgdmltUmVnaXN0ZXIJJ1w8bm9ybWFsXHNcKyJbYS16QS1aMC05XSdsYz03CitzeW4gbWF0Y2ggIHZpbVJlZ2lzdGVyCSdbXiw7XVx6cyJbYS16QS1aMC05LiUjOl9cLS9dW15hLXpBLVpfIl1cemUnCitzeW4gbWF0Y2ggIHZpbVJlZ2lzdGVyCSdcPG5vcm1cc1wrXHpzIlthLXpBLVowLTldJworc3luIG1hdGNoICB2aW1SZWdpc3RlcgknXDxub3JtYWxcc1wrXHpzIlthLXpBLVowLTldJwogc3luIG1hdGNoICB2aW1SZWdpc3RlcgknQCInCiBzeW4gbWF0Y2ggIHZpbVBsYWluUmVnaXN0ZXIgY29udGFpbmVkCSciW2EtekEtWjAtOVwtOi4lIyorPV0nCiAKLXN5biBtYXRjaCAgdmltQWRkcmVzcwkiLFsuJF0ibGM9MQlza2lwd2hpdGUgbmV4dGdyb3VwPXZpbVN1YnN0MQotc3luIG1hdGNoICB2aW1BZGRyZXNzCSIlXGEibWU9ZS0xCXNraXB3aGl0ZSBuZXh0Z3JvdXA9dmltU3RyaW5nLHZpbVN1YnN0MQorc3luIG1hdGNoICB2aW1BZGRyZXNzCSIsXHpzWy4kXSIJc2tpcHdoaXRlIG5leHRncm91cD12aW1TdWJzdDEKK3N5biBtYXRjaCAgdmltQWRkcmVzcwkiJVx6ZVxhIglza2lwd2hpdGUgbmV4dGdyb3VwPXZpbVN0cmluZyx2aW1TdWJzdDEKIAogc3luIG1hdGNoICB2aW1GaWx0ZXIgY29udGFpbmVkCSJeIS5cey19XCh8XHwkXCkiCQljb250YWlucz12aW1TcGVjRmlsZQogc3luIG1hdGNoICB2aW1GaWx0ZXIgY29udGFpbmVkCSJcQSEuXHstfVwofFx8JFwpIm1zPXMrMQljb250YWlucz12aW1TcGVjRmlsZQogCiAiIENvbXBsZXggcmVwZWF0cyAoOmggY29tcGxleC1yZXBlYXQpIHt7ezIKICJzeW4gbWF0Y2ggIHZpbUNtcGx4UmVwZWF0CSdbXmEtekEtWl8vXFwoKV1xWzAtOWEtekEtWiJdJ2xjPTEKLXN5biBtYXRjaCAgdmltQ21wbHhSZXBlYXQJJ0BbMC05YS16Ii49QDpdXHplXCgkXHxbXmEtekEtWl1cKScKKyJzeW4gbWF0Y2ggIHZpbUNtcGx4UmVwZWF0CSdAWzAtOWEteiIuPUA6XVx6ZVwoJFx8W15hLXpBLVpdXCknCiAKICIgU2V0IGNvbW1hbmQgYW5kIGFzc29jaWF0ZWQgc2V0LW9wdGlvbnMgKHZpbU9wdGlvbnMpIHdpdGggY29tbWVudCB7e3syCiBzeW4gcmVnaW9uIHZpbVNldAkJbWF0Y2hncm91cD12aW1Db21tYW5kIHN0YXJ0PSJcPHNldGxvY2FsXHxzZXRcPiIgZW5kPSJ8Im1lPWUtMSBlbmQ9IiQiIG1hdGNoZ3JvdXA9dmltTm90YXRpb24gZW5kPSI8W2NDXVtyUl0+IiBrZWVwZW5kIGNvbnRhaW5zPXZpbVNldEVxdWFsLHZpbU9wdGlvbix2aW1FcnJTZXR0aW5nLHZpbUNvbW1lbnQsdmltU2V0U3RyaW5nLHZpbVNldE1vZApkaWZmIC0tZ2l0IGEvc3JjL2V2YWwuYyBiL3NyYy9ldmFsLmMKaW5kZXggY2Q3MDZiNC4uMmRiYmIyMiAxMDA2NDQKLS0tIGEvc3JjL2V2YWwuYworKysgYi9zcmMvZXZhbC5jCkBAIC0xMTk1OSwxOCArMTE5NTksMjQgQEAKIAljaGFyX3UJKnM7CiAJaW50CXNhdmVkX2RpZF9lbXNnID0gZGlkX2Vtc2c7CiAJY2hhcgkqZm10OworCXZhX2xpc3QJYXA7IC8qIGR1bW15ICovCisKKyMgaWZkZWYgTElOVAorCS8qIGF2b2lkIHdhcm5pbmcgZm9yICJhcCIgdXNlZCBiZWZvcmUgc2V0OyBpdCBpcyB1bnVzZWQuICovCisJdmFfc3RhcnQoYXAsIHJldHR2KTsKKyMgZW5kaWYKIAogCS8qIEdldCB0aGUgcmVxdWlyZWQgbGVuZ3RoLCBhbGxvY2F0ZSB0aGUgYnVmZmVyIGFuZCBkbyBpdCBmb3IgcmVhbC4gKi8KIAlkaWRfZW1zZyA9IEZBTFNFOwogCWZtdCA9IChjaGFyICopZ2V0X3R2X3N0cmluZ19idWYoJmFyZ3ZhcnNbMF0sIGJ1Zik7Ci0JbGVuID0gdmltX3ZzbnByaW50ZihOVUxMLCAwLCBmbXQsIE5VTEwsIGFyZ3ZhcnMgKyAxKTsKKwlsZW4gPSB2aW1fdnNucHJpbnRmKE5VTEwsIDAsIGZtdCwgYXAsIGFyZ3ZhcnMgKyAxKTsKIAlpZiAoIWRpZF9lbXNnKQogCXsKIAkgICAgcyA9IGFsbG9jKGxlbiArIDEpOwogCSAgICBpZiAocyAhPSBOVUxMKQogCSAgICB7CiAJCXJldHR2LT52dmFsLnZfc3RyaW5nID0gczsKLQkJKHZvaWQpdmltX3ZzbnByaW50ZigoY2hhciAqKXMsIGxlbiArIDEsIGZtdCwgTlVMTCwgYXJndmFycyArIDEpOworCQkodm9pZCl2aW1fdnNucHJpbnRmKChjaGFyICopcywgbGVuICsgMSwgZm10LCBhcCwgYXJndmFycyArIDEpOwogCSAgICB9CiAJfQogCWRpZF9lbXNnIHw9IHNhdmVkX2RpZF9lbXNnOwpAQCAtMTc0ODIsNiArMTc0ODgsMTAgQEAKIAlNU0dfUFVUUygiLi4uIik7CiAgICAgfQogICAgIG1zZ19wdXRjaGFyKCcpJyk7CisjaWZkZWYgRkVBVF9FVkFMCisgICAgaWYgKHBfdmVyYm9zZSA+IDApCisJbGFzdF9zZXRfbXNnKGZwLT51Zl9zY3JpcHRfSUQpOworI2VuZGlmCiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvZXhfZG9jbWQuYyBiL3NyYy9leF9kb2NtZC5jCmluZGV4IDBmNTM2MGYuLjZlNmUyOTcgMTAwNjQ0Ci0tLSBhL3NyYy9leF9kb2NtZC5jCisrKyBiL3NyYy9leF9kb2NtZC5jCkBAIC01MTE3LDYgKzUxMTcsMTAgQEAKIAkgICAgbXNnX291dHRyYW5zKElPYnVmZik7CiAKIAkgICAgbXNnX291dHRyYW5zX3NwZWNpYWwoY21kLT51Y19yZXAsIEZBTFNFKTsKKyNpZmRlZiBGRUFUX0VWQUwKKwkgICAgaWYgKHBfdmVyYm9zZSA+IDApCisJCWxhc3Rfc2V0X21zZyhjbWQtPnVjX3NjcmlwdElEKTsKKyNlbmRpZgogCSAgICBvdXRfZmx1c2goKTsKIAkgICAgdWlfYnJlYWtjaGVjaygpOwogCSAgICBpZiAoZ290X2ludCkKZGlmZiAtLWdpdCBhL3NyYy9ndWkuYyBiL3NyYy9ndWkuYwppbmRleCBmMGQ2NWVlLi5jN2Y4NzJlIDEwMDY0NAotLS0gYS9zcmMvZ3VpLmMKKysrIGIvc3JjL2d1aS5jCkBAIC00NTkwLDYgKzQ1OTAsNyBAQAogICAgIGludAkJdHlwZSA9IChmbGFncyAmIEZSRF9UWVBFX01BU0spOwogICAgIGNoYXJfdQkqcDsKICAgICByZWdtYXRjaF9UCXJlZ21hdGNoOworICAgIGludAkJc2F2ZV9kaWRfZW1zZyA9IGRpZF9lbXNnOwogCiAgICAgZ2FfaW5pdDIoJmdhLCAxLCAxMDApOwogICAgIGlmICh0eXBlID09IEZSRF9SRVBMQUNFQUxMKQpAQCAtNDY2Niw2ICs0NjY3LDEwIEBACiAJbXNnX3Njcm9sbCA9IGk7CSAgICAvKiBkb24ndCBsZXQgYW4gZXJyb3IgbWVzc2FnZSBzZXQgbXNnX3Njcm9sbCAqLwogICAgIH0KIAorICAgIC8qIERvbid0IHdhbnQgdG8gcGFzcyBkaWRfZW1zZyB0byBvdGhlciBjb2RlLCBpdCBtYXkgY2F1c2UgZGlzYWJsaW5nCisgICAgICogc3ludGF4IEhMIGlmIHdlIHdlcmUgYnVzeSByZWRyYXdpbmcuICovCisgICAgZGlkX2Vtc2cgPSBzYXZlX2RpZF9lbXNnOworCiAgICAgaWYgKFN0YXRlICYgKE5PUk1BTCB8IElOU0VSVCkpCiAgICAgewogCWd1aV91cGRhdGVfc2NyZWVuKCk7CQkvKiB1cGRhdGUgdGhlIHNjcmVlbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL21lc3NhZ2UuYyBiL3NyYy9tZXNzYWdlLmMKaW5kZXggMmIzYWRjZi4uY2NhOGE1MiAxMDA2NDQKLS0tIGEvc3JjL21lc3NhZ2UuYworKysgYi9zcmMvbWVzc2FnZS5jCkBAIC0zODAwLDcgKzM4MDAsNyBAQAogICogV2hlbiB2YV9saXN0IGlzIG5vdCBzdXBwb3J0ZWQgd2Ugb25seSBkZWZpbmUgdmltX3NucHJpbnRmKCkuCiAgKgogICogdmltX3ZzbnByaW50ZigpIGNhbiBiZSBpbnZva2VkIHdpdGggZWl0aGVyICJ2YV9saXN0IiBvciBhIGxpc3Qgb2YKLSAqICJ0eXB2YWxfVCIuICBUaGUgb3RoZXIgbXVzdCBiZSBOVUxMLgorICogInR5cHZhbF9UIi4gIFdoZW4gdGhlIGxhdHRlciBpcyBub3QgdXNlZCBpdCBtdXN0IGJlIE5VTEwuCiAgKi8KIAogLyogV2hlbiBnZW5lcmF0aW5nIHByb3RvdHlwZXMgYWxsIG9mIHRoaXMgaXMgc2tpcHBlZCwgY3Byb3RvIGRvZXNuJ3QKQEAgLTM5MzcsNyArMzkzNyw3IEBACiAJCSAgICBnZXRfYV9hcmcoYXJnX2lkeCk7CiAjZWxzZQogIyBpZiBkZWZpbmVkKEZFQVRfRVZBTCkKLQkJICAgIGFwID09IE5VTEwgPyB0dl9ucih0dnMsICZhcmdfaWR4KSA6CisJCSAgICB0dnMgIT0gTlVMTCA/IHR2X25yKHR2cywgJmFyZ19pZHgpIDoKICMgZW5kaWYKIAkJCXZhX2FyZyhhcCwgaW50KTsKICNlbmRpZgpAQCAtMzk3NCw3ICszOTc0LDcgQEAKIAkJCWdldF9hX2FyZyhhcmdfaWR4KTsKICNlbHNlCiAjIGlmIGRlZmluZWQoRkVBVF9FVkFMKQotCQkJYXAgPT0gTlVMTCA/IHR2X25yKHR2cywgJmFyZ19pZHgpIDoKKwkJCXR2cyAhPSBOVUxMID8gdHZfbnIodHZzLCAmYXJnX2lkeCkgOgogIyBlbmRpZgogCQkJICAgIHZhX2FyZyhhcCwgaW50KTsKICNlbmRpZgpAQCAtNDA1MCw3ICs0MDUwLDcgQEAKIAkJCSAgICBnZXRfYV9hcmcoYXJnX2lkeCk7CiAjZWxzZQogIyBpZiBkZWZpbmVkKEZFQVRfRVZBTCkKLQkJCSAgICBhcCA9PSBOVUxMID8gdHZfbnIodHZzLCAmYXJnX2lkeCkgOgorCQkJICAgIHR2cyAhPSBOVUxMID8gdHZfbnIodHZzLCAmYXJnX2lkeCkgOgogIyBlbmRpZgogCQkJCXZhX2FyZyhhcCwgaW50KTsKICNlbmRpZgpAQCAtNDA2Niw3ICs0MDY2LDcgQEAKIAkJCQkoY2hhciAqKWdldF9hX2FyZyhhcmdfaWR4KTsKICNlbHNlCiAjIGlmIGRlZmluZWQoRkVBVF9FVkFMKQotCQkJCWFwID09IE5VTEwgPyB0dl9zdHIodHZzLCAmYXJnX2lkeCkgOgorCQkJCXR2cyAhPSBOVUxMID8gdHZfc3RyKHR2cywgJmFyZ19pZHgpIDoKICMgZW5kaWYKIAkJCQkgICAgdmFfYXJnKGFwLCBjaGFyICopOwogI2VuZGlmCkBAIC00MTI3LDEwICs0MTI3LDEwIEBACiAJCQlsZW5ndGhfbW9kaWZpZXIgPSAnXDAnOwogCQkJcHRyX2FyZyA9CiAjaWZuZGVmIEhBVkVfU1REQVJHX0gKLQkJCQkgICAgKHZvaWQgKilnZXRfYV9hcmcoYXJnX2lkeCk7CisJCQkJICh2b2lkICopZ2V0X2FfYXJnKGFyZ19pZHgpOwogI2Vsc2UKICMgaWYgZGVmaW5lZChGRUFUX0VWQUwpCi0JCQkJICAgIGFwID09IE5VTEwgPyAodm9pZCAqKXR2X3N0cih0dnMsICZhcmdfaWR4KSA6CisJCQkJIHR2cyAhPSBOVUxMID8gKHZvaWQgKil0dl9zdHIodHZzLCAmYXJnX2lkeCkgOgogIyBlbmRpZgogCQkJCQl2YV9hcmcoYXAsIHZvaWQgKik7CiAjZW5kaWYKQEAgLTQxNTAsNyArNDE1MCw3IEBACiAJCQkJCWdldF9hX2FyZyhhcmdfaWR4KTsKICNlbHNlCiAjIGlmIGRlZmluZWQoRkVBVF9FVkFMKQotCQkJCQlhcCA9PSBOVUxMID8gdHZfbnIodHZzLCAmYXJnX2lkeCkgOgorCQkJCQl0dnMgIT0gTlVMTCA/IHR2X25yKHR2cywgJmFyZ19pZHgpIDoKICMgZW5kaWYKIAkJCQkJICAgIHZhX2FyZyhhcCwgaW50KTsKICNlbmRpZgpAQCAtNDE2NSw3ICs0MTY1LDcgQEAKIAkJCQkJZ2V0X2FfYXJnKGFyZ19pZHgpOwogI2Vsc2UKICMgaWYgZGVmaW5lZChGRUFUX0VWQUwpCi0JCQkJCWFwID09IE5VTEwgPyB0dl9ucih0dnMsICZhcmdfaWR4KSA6CisJCQkJCXR2cyAhPSBOVUxMID8gdHZfbnIodHZzLCAmYXJnX2lkeCkgOgogIyBlbmRpZgogCQkJCQkgICAgdmFfYXJnKGFwLCBsb25nIGludCk7CiAjZW5kaWYKQEAgLTQxODgsNyArNDE4OCw3IEBACiAJCQkJCSAgICBnZXRfYV9hcmcoYXJnX2lkeCk7CiAjZWxzZQogIyBpZiBkZWZpbmVkKEZFQVRfRVZBTCkKLQkJCQkJICAgIGFwID09IE5VTEwgPyB0dl9ucih0dnMsICZhcmdfaWR4KSA6CisJCQkJCSAgICB0dnMgIT0gTlVMTCA/IHR2X25yKHR2cywgJmFyZ19pZHgpIDoKICMgZW5kaWYKIAkJCQkJCXZhX2FyZyhhcCwgdW5zaWduZWQgaW50KTsKICNlbmRpZgpAQCAtNDIwMSw3ICs0MjAxLDcgQEAKIAkJCQkJICAgIGdldF9hX2FyZyhhcmdfaWR4KTsKICNlbHNlCiAjIGlmIGRlZmluZWQoRkVBVF9FVkFMKQotCQkJCQkgICAgYXAgPT0gTlVMTCA/IHR2X25yKHR2cywgJmFyZ19pZHgpIDoKKwkJCQkJICAgIHR2cyAhPSBOVUxMID8gdHZfbnIodHZzLCAmYXJnX2lkeCkgOgogIyBlbmRpZgogCQkJCQkJdmFfYXJnKGFwLCB1bnNpZ25lZCBsb25nIGludCk7CiAjZW5kaWYKQEAgLTQ0ODQsNyArNDQ4NCw3IEBACiAgICAgfQogCiAjaWZkZWYgSEFWRV9TVERBUkdfSAotICAgIGlmIChhcCA9PSBOVUxMICYmIHR2c1thcmdfaWR4IC0gMV0udl90eXBlICE9IFZBUl9VTktOT1dOKQorICAgIGlmICh0dnMgIT0gTlVMTCAmJiB0dnNbYXJnX2lkeCAtIDFdLnZfdHlwZSAhPSBWQVJfVU5LTk9XTikKIAlFTVNHKF8oIkU3Njc6IFRvbyBtYW55IGFyZ3VtZW50cyB0byBwcmludGYoKSIpKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9zcmMvcmVnZXhwLmMgYi9zcmMvcmVnZXhwLmMKaW5kZXggMWZmNWEwNi4uZjhiODYxNiAxMDA2NDQKLS0tIGEvc3JjL3JlZ2V4cC5jCisrKyBiL3NyYy9yZWdleHAuYwpAQCAtMzE3Nyw3ICszMTc3LDcgQEAKICAgICAgKiBjYW4ndCBnbyBiZWZvcmUgbGluZSAxICovCiAgICAgaWYgKHJlZ19maXJzdGxudW0gKyBsbnVtIDwgMSkKIAlyZXR1cm4gTlVMTDsKLSAgICBpZiAocmVnX2ZpcnN0bG51bSArIGxudW0gPiByZWdfYnVmLT5iX21sLm1sX2xpbmVfY291bnQpCisgICAgaWYgKGxudW0gPiByZWdfbWF4bGluZSkKIAkvKiBNdXN0IGhhdmUgbWF0Y2hlZCB0aGUgIlxuIiBpbiB0aGUgbGFzdCBsaW5lLiAqLwogCXJldHVybiAoY2hhcl91ICopIiI7CiAgICAgcmV0dXJuIG1sX2dldF9idWYocmVnX2J1ZiwgcmVnX2ZpcnN0bG51bSArIGxudW0sIEZBTFNFKTsKZGlmZiAtLWdpdCBhL3NyYy9zY3JlZW4uYyBiL3NyYy9zY3JlZW4uYwppbmRleCA2NTYyZDY1Li5iM2RiZTAxIDEwMDY0NAotLS0gYS9zcmMvc2NyZWVuLmMKKysrIGIvc3JjL3NjcmVlbi5jCkBAIC0yNTk0LDcgKzI1OTQsNyBAQAogICAgIGV4dHJhX2NoZWNrID0gMDsKICNlbmRpZgogI2lmZGVmIEZFQVRfU1lOX0hMCi0gICAgaWYgKHN5bnRheF9wcmVzZW50KHdwLT53X2J1ZmZlcikpCisgICAgaWYgKHN5bnRheF9wcmVzZW50KHdwLT53X2J1ZmZlcikgJiYgIXdwLT53X2J1ZmZlci0+Yl9zeW5fZXJyb3IpCiAgICAgewogCS8qIFByZXBhcmUgZm9yIHN5bnRheCBoaWdobGlnaHRpbmcgaW4gdGhpcyBsaW5lLiAgV2hlbiB0aGVyZSBpcyBhbgogCSAqIGVycm9yLCBzdG9wIHN5bnRheCBoaWdobGlnaHRpbmcuICovCkBAIC0yNjAyLDcgKzI2MDIsNyBAQAogCWRpZF9lbXNnID0gRkFMU0U7CiAJc3ludGF4X3N0YXJ0KHdwLCBsbnVtKTsKIAlpZiAoZGlkX2Vtc2cpCi0JICAgIHN5bnRheF9jbGVhcih3cC0+d19idWZmZXIpOworCSAgICB3cC0+d19idWZmZXItPmJfc3luX2Vycm9yID0gVFJVRTsKIAllbHNlCiAJewogCSAgICBkaWRfZW1zZyA9IHNhdmVfZGlkX2Vtc2c7CkBAIC0zNjQzLDcgKzM2NDMsMTAgQEAKIAkJCQkJICAgICAgIGhhc19zcGVsbCA/ICZjYW5fc3BlbGwgOiBOVUxMKTsKIAogCQkgICAgaWYgKGRpZF9lbXNnKQotCQkJc3ludGF4X2NsZWFyKHdwLT53X2J1ZmZlcik7CisJCSAgICB7CisJCQl3cC0+d19idWZmZXItPmJfc3luX2Vycm9yID0gVFJVRTsKKwkJCWhhc19zeW50YXggPSBGQUxTRTsKKwkJICAgIH0KIAkJICAgIGVsc2UKIAkJCWRpZF9lbXNnID0gc2F2ZV9kaWRfZW1zZzsKIApkaWZmIC0tZ2l0IGEvc3JjL3NwZWxsLmMgYi9zcmMvc3BlbGwuYwppbmRleCAxMTRlM2YyLi5hM2ZjMjRmIDEwMDY0NAotLS0gYS9zcmMvc3BlbGwuYworKysgYi9zcmMvc3BlbGwuYwpAQCAtNTEsMTYgKzUxLDIxIEBACiAgKi8KIAogLyogVXNlIFNQRUxMX1BSSU5UVFJFRSBmb3IgZGVidWdnaW5nOiBkdW1wIHRoZSB3b3JkIHRyZWUgYWZ0ZXIgYWRkaW5nIGEgd29yZC4KLSAqIE9ubHkgdXNlIGl0IGZvciBzbWFsbCB3b3JkIGxpc3RzIQotICogU1BFTExfQ09NUFJFU1NfQ05UIGlzIGluIGhvdyBtYW55IHdvcmRzIHdlIGNvbXByZXNzIHRoZSB0cmVlIHRvIGxpbWl0IHRoZQotICogYW1vdW50IG9mIG1lbW9yeSB1c2VkIChlc3AuIGZvciBJdGFsaWFuKS4gKi8KKyAqIE9ubHkgdXNlIGl0IGZvciBzbWFsbCB3b3JkIGxpc3RzISAqLwogI2lmIDAKICMgZGVmaW5lIFNQRUxMX1BSSU5UVFJFRQotIyBkZWZpbmUgU1BFTExfQ09NUFJFU1NfQ05UIDEKLSNlbHNlCi0jIGRlZmluZSBTUEVMTF9DT01QUkVTU19DTlQgMTAwMDAwMAogI2VuZGlmCiAKKy8qIFNQRUxMX0NPTVBSRVNTX0NOVCBpcyBhZnRlciBob3cgbWFueSBhbGxvY2F0ZWQgYmxvY2tzIHdlIGNvbXByZXNzIHRoZSB0cmVlCisgKiB0byBsaW1pdCB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIChlc3AuIGZvciBJdGFsaWFuIGFuZCBIdW5nYXJpYW4pLiAgVGhlCisgKiBhbW91bnQgb2YgbWVtb3J5IHVzZWQgZm9yIG5vZGVzIHRoZW4gaXMgU1BFTExfQ09NUFJFU1NfQ05UIHRpbWVzCisgKiBTQkxPQ0tTSVpFLgorICogVGhlbiBjb21wcmVzcyBhZ2FpbiBhZnRlciBhbGxvY2F0aW5nIFNQRUxMX0NPTVBSRVNTX0lOQyBtb3JlIGJsb2NrcyBvcgorICogYWRkaW5nIFNQRUxMX0NPTVBSRVNTX0FEREVEIHdvcmRzIGFuZCBydW5uaW5nIG91dCBvZiBtZW1vcnkgYWdhaW4uICAqLworI2RlZmluZSBTUEVMTF9DT01QUkVTU19DTlQgMzAwMDAKKyNkZWZpbmUgU1BFTExfQ09NUFJFU1NfSU5DIDEwMAorI2RlZmluZSBTUEVMTF9DT01QUkVTU19BRERFRCA1MDAwMDAKKwogLyoKICAqIFVzZSB0aGlzIHRvIGFkanVzdCB0aGUgc2NvcmUgYWZ0ZXIgZmluZGluZyBzdWdnZXN0aW9ucywgYmFzZWQgb24gdGhlCiAgKiBzdWdnZXN0ZWQgd29yZCBzb3VuZGluZyBsaWtlIHRoZSBiYWQgd29yZC4gIFRoaXMgaXMgbXVjaCBmYXN0ZXIgdGhhbiBkb2luZwpAQCAtNTk0LDggKzU5OSw5IEBACiAgICAgY2hhcl91CXRzX2ZpZHg7CS8qIGluZGV4IGluIGZ3b3JkW10sIGNhc2UtZm9sZGVkIGJhZCB3b3JkICovCiAgICAgY2hhcl91CXRzX2ZpZHh0cnk7CS8qIHRzX2ZpZHggYXQgd2hpY2ggYnl0ZXMgbWF5IGJlIGNoYW5nZWQgKi8KICAgICBjaGFyX3UJdHNfdHdvcmRsZW47CS8qIHZhbGlkIGxlbmd0aCBvZiB0d29yZFtdICovCi0gICAgY2hhcl91CXRzX3ByZWZpeGRlcHRoOwkvKiBzdGFjayBkZXB0aCBmb3IgZW5kIG9mIHByZWZpeCBvciBQUkVGSVhUUkVFCi0JCQkJICogb3IgTk9QUkVGSVggKi8KKyAgICBjaGFyX3UJdHNfcHJlZml4ZGVwdGg7CS8qIHN0YWNrIGRlcHRoIGZvciBlbmQgb2YgcHJlZml4IG9yCisJCQkJICogUEZEX1BSRUZJWFRSRUUgb3IgUEZEX05PUFJFRklYIG9yCisJCQkJICogUEZEX0NPTVBPVU5EICovCiAjaWZkZWYgRkVBVF9NQllURQogICAgIGNoYXJfdQl0c190Y2hhcmxlbjsJLyogbnVtYmVyIG9mIGJ5dGVzIGluIHR3b3JkIGNoYXJhY3RlciAqLwogICAgIGNoYXJfdQl0c190Y2hhcmlkeDsJLyogY3VycmVudCBieXRlIGluZGV4IGluIHR3b3JkIGNoYXJhY3RlciAqLwpAQCAtNjEzLDggKzYxOSw5IEBACiAjZGVmaW5lIERJRkZfSU5TRVJUCTIJLyogaW5zZXJ0aW5nIGNoYXJhY3RlciAqLwogCiAvKiBzcGVjaWFsIHZhbHVlcyB0c19wcmVmaXhkZXB0aCAqLwotI2RlZmluZSBQUkVGSVhUUkVFCTB4ZmUJLyogd2Fsa2luZyB0aHJvdWdoIHRoZSBwcmVmaXggdHJlZSAqLwotI2RlZmluZSBOT1BSRUZJWAkweGZmCS8qIG5vdCB1c2luZyBwcmVmaXhlcyAqLworI2RlZmluZSBQRkRfQ09NUE9VTkQJMHhmZAkvKiBwcmVmaXhlZCBpcyBhIGNvbXBvdW5kIHdvcmQgKi8KKyNkZWZpbmUgUEZEX1BSRUZJWFRSRUUJMHhmZQkvKiB3YWxraW5nIHRocm91Z2ggdGhlIHByZWZpeCB0cmVlICovCisjZGVmaW5lIFBGRF9OT1BSRUZJWAkweGZmCS8qIG5vdCB1c2luZyBwcmVmaXhlcyAqLwogCiAvKiBtb2RlIHZhbHVlcyBmb3IgZmluZF93b3JkICovCiAjZGVmaW5lIEZJTkRfRk9MRFdPUkQJICAgIDAJLyogZmluZCB3b3JkIGNhc2UtZm9sZGVkICovCkBAIC02MjcsNiArNjM0LDcgQEAKIHN0YXRpYyB2b2lkIHNsYW5nX2ZyZWUgX19BUkdTKChzbGFuZ19UICpscCkpOwogc3RhdGljIHZvaWQgc2xhbmdfY2xlYXIgX19BUkdTKChzbGFuZ19UICpscCkpOwogc3RhdGljIHZvaWQgZmluZF93b3JkIF9fQVJHUygobWF0Y2hpbmZfVCAqbWlwLCBpbnQgbW9kZSkpOworc3RhdGljIGludCBjYW5fY29tcG91bmQgX19BUkdTKChzbGFuZ19UICpzbGFuZywgaW50IGZsYWdzKSk7CiBzdGF0aWMgaW50IHZhbGlkX3dvcmRfcHJlZml4IF9fQVJHUygoaW50IHRvdHByZWZjbnQsIGludCBhcnJpZHgsIGludCBmbGFncywgY2hhcl91ICp3b3JkLCBzbGFuZ19UICpzbGFuZywgaW50IGNvbmRfcmVxKSk7CiBzdGF0aWMgdm9pZCBmaW5kX3ByZWZpeCBfX0FSR1MoKG1hdGNoaW5mX1QgKm1pcCkpOwogc3RhdGljIGludCBmb2xkX21vcmUgX19BUkdTKChtYXRjaGluZl9UICptaXApKTsKQEAgLTc0MCw2ICs3NDgsNyBAQAogCiBzdGF0aWMgY2hhciAqZV9mb3JtYXQgPSBOXygiRTc1OTogRm9ybWF0IGVycm9yIGluIHNwZWxsIGZpbGUiKTsKIHN0YXRpYyBjaGFyICplX3NwZWxsX3RydW5jID0gTl8oIkU3NTg6IFRydW5jYXRlZCBzcGVsbCBmaWxlIik7CitzdGF0aWMgY2hhciAqZV9hZmZ0cmFpbGluZyA9IE5fKCJUcmFpbGluZyB0ZXh0IGluICVzIGxpbmUgJWQ6ICVzIik7CiBzdGF0aWMgY2hhciAqbXNnX2NvbXByZXNzaW5nID0gTl8oIkNvbXByZXNzaW5nIHdvcmQgdHJlZS4uLiIpOwogCiAvKgpAQCAtMTE1Niw4ICsxMTY1LDcgQEAKIAogCQkvKiBUaGUgd29yZCBkb2Vzbid0IGVuZCBvciBpdCBjb21lcyBhZnRlciBhbm90aGVyOiBpdCBtdXN0CiAJCSAqIGhhdmUgYSBjb21wb3VuZCBmbGFnLiAqLwotCQkvKiBUT0RPOiBjaGVjayBtb3JlIGZsYWdzICovCi0JCWlmICgqc2xhbmctPnNsX2NvbXBmbGFncyAhPSAoKHVuc2lnbmVkKWZsYWdzID4+IDI0KSkKKwkJaWYgKCFjYW5fY29tcG91bmQoc2xhbmcsIGZsYWdzKSkKIAkJICAgIGNvbnRpbnVlOwogCSAgICB9CiAKQEAgLTEyMzEsNiArMTIzOSwxOSBAQAogfQogCiAvKgorICogUmV0dXJuIFRSVUUgaWYgImZsYWdzIiBoYXMgYSB2YWxpZCBjb21wb3VuZCBmbGFnLgorICogVE9ETzogY2hlY2sgZmxhZ3MgaW4gYSBtb3JlIGFkdmFuY2VkIHdheS4KKyAqLworICAgIHN0YXRpYyBpbnQKK2Nhbl9jb21wb3VuZChzbGFuZywgZmxhZ3MpCisgICAgc2xhbmdfVAkqc2xhbmc7CisgICAgaW50CQlmbGFnczsKK3sKKyAgICByZXR1cm4gc2xhbmctPnNsX2NvbXBmbGFncyAhPSBOVUxMCisJCQkgICAmJiAqc2xhbmctPnNsX2NvbXBmbGFncyA9PSAoKHVuc2lnbmVkKWZsYWdzID4+IDI0KTsKK30KKworLyoKICAqIFJldHVybiBub24temVybyBpZiB0aGUgcHJlZml4IGluZGljYXRlZCBieSAiYXJyaWR4IiBtYXRjaGVzIHdpdGggdGhlIHByZWZpeAogICogSUQgaW4gImZsYWdzIiBmb3IgdGhlIHdvcmQgIndvcmQiLgogICogVGhlIFdGX1JBUkVQRlggZmxhZyBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuIHZhbHVlIGZvciBhIHJhcmUgcHJlZml4LgpAQCAtMzMyNCwxNyArMzM0NSwxOSBAQAogewogICAgIHdvcmRub2RlX1QJKnNpX2ZvbGRyb290OwkvKiB0cmVlIHdpdGggY2FzZS1mb2xkZWQgd29yZHMgKi8KICAgICBsb25nCXNpX2ZvbGR3Y291bnQ7CS8qIG5yIG9mIHdvcmRzIGluIHNpX2ZvbGRyb290ICovCi0gICAgaW50CQlzaV9mb2xkX2FkZGVkOwkvKiBuciBvZiB3b3JkcyBhZGRlZCBzaW5jZSBjb21wcmVzc2luZyAqLwogCiAgICAgd29yZG5vZGVfVAkqc2lfa2VlcHJvb3Q7CS8qIHRyZWUgd2l0aCBrZWVwLWNhc2Ugd29yZHMgKi8KICAgICBsb25nCXNpX2tlZXB3Y291bnQ7CS8qIG5yIG9mIHdvcmRzIGluIHNpX2tlZXByb290ICovCi0gICAgaW50CQlzaV9rZWVwX2FkZGVkOwkvKiBuciBvZiB3b3JkcyBhZGRlZCBzaW5jZSBjb21wcmVzc2luZyAqLwogCiAgICAgd29yZG5vZGVfVAkqc2lfcHJlZnJvb3Q7CS8qIHRyZWUgd2l0aCBwb3N0cG9uZWQgcHJlZml4ZXMgKi8KIAogICAgIHNibG9ja19UCSpzaV9ibG9ja3M7CS8qIG1lbW9yeSBibG9ja3MgdXNlZCAqLworICAgIGxvbmcJc2lfYmxvY2tzX2NudDsJLyogbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQgKi8KKyAgICBsb25nCXNpX2NvbXByZXNzX2NudDsgICAgLyogd29yZHMgdG8gYWRkIGJlZm9yZSBsb3dlcmluZworCQkJCSAgICAgICBjb21wcmVzc2lvbiBsaW1pdCAqLwogICAgIHdvcmRub2RlX1QJKnNpX2ZpcnN0X2ZyZWU7IC8qIExpc3Qgb2Ygbm9kZXMgdGhhdCBoYXZlIGJlZW4gZnJlZWQgZHVyaW5nCiAJCQkJICAgY29tcHJlc3Npb24sIGxpbmtlZCBieSAid25fY2hpbGQiIGZpZWxkLiAqLworICAgIGxvbmcJc2lfZnJlZV9jb3VudDsJLyogbnVtYmVyIG9mIG5vZGVzIGluIHNpX2ZpcnN0X2ZyZWUgKi8KICNpZmRlZiBTUEVMTF9QUklOVFRSRUUKICAgICBpbnQJCXNpX3dvcmRub2RlX25yOwkvKiBzZXF1ZW5jZSBuciBmb3Igbm9kZXMgKi8KICNlbmRpZgpAQCAtMzgwMSw4ICszODI0LDcgQEAKIAkJLyogTXlzcGVsbCBhbGxvd3MgZXh0cmEgdGV4dCBhZnRlciB0aGUgaXRlbSwgYnV0IHRoYXQgbWlnaHQKIAkJICogbWVhbiBtaXN0YWtlcyBnbyB1bm5vdGljZWQuICBSZXF1aXJlIGEgY29tbWVudC1zdGFydGVyLiAqLwogCQlpZiAoaXRlbWNudCA+IGxhc3RpICYmICppdGVtc1tsYXN0aV0gIT0gJyMnKQotCQkgICAgc21zZygoY2hhcl91ICopXygiVHJhaWxpbmcgdGV4dCBpbiAlcyBsaW5lICVkOiAlcyIpLAotCQkJCQkJICAgZm5hbWUsIGxudW0sIGl0ZW1zW2xhc3RpXSk7CisJCSAgICBzbXNnKChjaGFyX3UgKilfKGVfYWZmdHJhaWxpbmcpLCBmbmFtZSwgbG51bSwgaXRlbXNbbGFzdGldKTsKIAogCQkvKiBOZXcgaXRlbSBmb3IgYW4gYWZmaXggbGV0dGVyLiAqLwogCQktLWFmZl90b2RvOwpAQCAtMzk4Myw5ICs0MDA1LDEzIEBACiAJCSAgICBzbXNnKChjaGFyX3UgKilfKCJFeHBlY3RlZCBSRVAgY291bnQgaW4gJXMgbGluZSAlZCIpLAogCQkJCQkJCQkgZm5hbWUsIGxudW0pOwogCSAgICB9Ci0JICAgIGVsc2UgaWYgKFNUUkNNUChpdGVtc1swXSwgIlJFUCIpID09IDAgJiYgaXRlbWNudCA9PSAzKQorCSAgICBlbHNlIGlmIChTVFJDTVAoaXRlbXNbMF0sICJSRVAiKSA9PSAwICYmIGl0ZW1jbnQgPj0gMykKIAkgICAgewogCQkvKiBSRVAgaXRlbSAqLworCQkvKiBNeXNwZWxsIGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCB3ZSByZXF1aXJlIGl0IHN0YXJ0cyB3aXRoCisJCSAqICMgdG8gZGV0ZWN0IG1pc3Rha2VzLiAqLworCQlpZiAoaXRlbWNudCA+IDMgJiYgaXRlbXNbM11bMF0gIT0gJyMnKQorCQkgICAgc21zZygoY2hhcl91ICopXyhlX2FmZnRyYWlsaW5nKSwgZm5hbWUsIGxudW0sIGl0ZW1zWzNdKTsKIAkJaWYgKGRvX3JlcCkKIAkJICAgIGFkZF9mcm9tdG8oc3BpbiwgJnNwaW4tPnNpX3JlcCwgaXRlbXNbMV0sIGl0ZW1zWzJdKTsKIAkgICAgfQpAQCAtNDExOSw5ICs0MTQ1LDYgQEAKIAkgICAgc21zZygoY2hhcl91ICopXygiQ09NUE9VTkRGTEFHKFMpIHZhbHVlIGRpZmZlcnMgZnJvbSB3aGF0IGlzIHVzZWQgaW4gYW5vdGhlciAuYWZmIGZpbGUiKSk7CiAJZWxzZQogCSAgICBzcGluLT5zaV9jb21wZmxhZ3MgPSBhZmYtPmFmX2NvbXBmbGFnczsKLQotCWlmIChhZmYtPmFmX3BmeHBvc3Rwb25lKQotCSAgICBzbXNnKChjaGFyX3UgKilfKCJDYW5ub3QgdXNlIGJvdGggUEZYUE9TVFBPTkUgYW5kIENPTVBPVU5ERkxBRyhTKSIpKTsKICAgICB9CiAKICAgICB2aW1fZnJlZShwYyk7CkBAIC00NDEyLDEwICs0NDM1LDMyIEBACiAJICAgIGlmIChhZmZpbGUtPmFmX3BmeHBvc3Rwb25lKQogCQkvKiBOZWVkIHRvIHN0b3JlIHRoZSBsaXN0IG9mIHByZWZpeCBJRHMgd2l0aCB0aGUgd29yZC4gKi8KIAkJc3RvcmVfYWZmbGlzdCA9IGdldF9wZnhsaXN0KHNwaW4sIGFmZmlsZSwgYWZmbGlzdCk7Ci0JICAgIGVsc2UgaWYgKHNwaW4tPnNpX2NvbXBmbGFncykKLQkJLyogTmVlZCB0byBzdG9yZSB0aGUgbGlzdCBvZiBhZmZpeCBJRHMgZm9yIGNvbXBvdW5kaW5nIHdpdGgKLQkJICogdGhlIHdvcmQuICovCi0JCXN0b3JlX2FmZmxpc3QgPSBnZXRfY29tcGZsYWdzKHNwaW4sIGFmZmxpc3QpOworCisJICAgIGlmIChzcGluLT5zaV9jb21wZmxhZ3MpCisJICAgIHsKKwkJLyogTmVlZCB0byBzdG9yZSB0aGUgbGlzdCBvZiBjb21wb3VuZCBmbGFncyB3aXRoIHRoZSB3b3JkLiAqLworCQlwID0gZ2V0X2NvbXBmbGFncyhzcGluLCBhZmZsaXN0KTsKKwkJaWYgKHAgIT0gTlVMTCkKKwkJeworCQkgICAgaWYgKHN0b3JlX2FmZmxpc3QgIT0gTlVMTCkKKwkJICAgIHsKKwkJCWNoYXJfdSAqczsKKworCQkJLyogQ29uY2F0ZW5hdGUgdGhlIHByZWZpeCBJRHMgd2l0aCB0aGUgY29tcG91bmQgZmxhZ3MuCisJCQkgKi8KKwkJCXMgPSBnZXRyb29tKHNwaW4sIFNUUkxFTihzdG9yZV9hZmZsaXN0KQorCQkJCQkJICAgICAgKyBTVFJMRU4ocCkgKyAxLCBGQUxTRSk7CisJCQlpZiAocyAhPSBOVUxMKQorCQkJeworCQkJICAgIFNUUkNQWShzLCBzdG9yZV9hZmZsaXN0KTsKKwkJCSAgICBTVFJDQVQocywgcCk7CisJCQkgICAgc3RvcmVfYWZmbGlzdCA9IHM7CisJCQl9CisJCSAgICB9CisJCSAgICBlbHNlCisJCQlzdG9yZV9hZmZsaXN0ID0gcDsKKwkJfQorCSAgICB9CiAJfQogCiAJLyogQWRkIHRoZSB3b3JkIHRvIHRoZSB3b3JkIHRyZWUocykuICovCkBAIC00OTM4LDYgKzQ5ODMsNyBAQAogCWJsLT5zYl9uZXh0ID0gc3Bpbi0+c2lfYmxvY2tzOwogCXNwaW4tPnNpX2Jsb2NrcyA9IGJsOwogCWJsLT5zYl91c2VkID0gMDsKKwkrK3NwaW4tPnNpX2Jsb2Nrc19jbnQ7CiAgICAgfQogCiAgICAgcCA9IGJsLT5zYl9kYXRhICsgYmwtPnNiX3VzZWQ7CkBAIC00OTk2LDcgKzUwNDIsOCBAQAogICogdXNlZnVsIHdoZW4gdGhlIHdvcmQgY2FuIGFsc28gYmUgdXNlZCB3aXRoIGFsbCBjYXBzIChubyBXRl9GSVhDQVAgZmxhZykgYW5kCiAgKiB1c2VkIHRvIGZpbmQgc3VnZ2VzdGlvbnMuCiAgKiBGb3IgYSBrZWVwLWNhc2Ugd29yZCBhbHNvIHN0b3JlIGl0IGluIHRoZSBrZWVwLWNhc2UgdHJlZS4KLSAqIFdoZW4gInBmeGxpc3QiIGlzIG5vdCBOVUxMIHN0b3JlIHRoZSB3b3JkIGZvciBlYWNoIHBvc3Rwb25lZCBwcmVmaXggSUQuCisgKiBXaGVuICJwZnhsaXN0IiBpcyBub3QgTlVMTCBzdG9yZSB0aGUgd29yZCBmb3IgZWFjaCBwb3N0cG9uZWQgcHJlZml4IElEIGFuZAorICogY29tcG91bmQgZmxhZy4KICAqLwogICAgIHN0YXRpYyBpbnQKIHN0b3JlX3dvcmQoc3Bpbiwgd29yZCwgZmxhZ3MsIHJlZ2lvbiwgcGZ4bGlzdCkKQEAgLTUxNTgsMjkgKzUyMDUsMzggQEAKICAgICAvKiBjb3VudCBuciBvZiB3b3JkcyBhZGRlZCBzaW5jZSBsYXN0IG1lc3NhZ2UgKi8KICAgICArK3NwaW4tPnNpX21zZ19jb3VudDsKIAorICAgIGlmIChzcGluLT5zaV9jb21wcmVzc19jbnQgPiAxKQorICAgIHsKKwlpZiAoLS1zcGluLT5zaV9jb21wcmVzc19jbnQgPT0gMSkKKwkgICAgLyogRGlkIGVub3VnaCB3b3JkcyB0byBsb3dlciB0aGUgYmxvY2sgY291bnQgbGltaXQuICovCisJICAgIHNwaW4tPnNpX2Jsb2Nrc19jbnQgKz0gU1BFTExfQ09NUFJFU1NfSU5DOworICAgIH0KKwogICAgIC8qCi0gICAgICogRXZlcnkgc28gbWFueSB3b3JkcyBjb21wcmVzcyB0aGUgdHJlZSwgc28gdGhhdCB3ZSBkb24ndCB1c2UgdG9vIG11Y2gKLSAgICAgKiBtZW1vcnkuCisgICAgICogV2hlbiB3ZSBoYXZlIGFsbG9jYXRlZCBsb3RzIG9mIG1lbW9yeSB3ZSBuZWVkIHRvIGNvbXByZXNzIHRoZSB3b3JkIHRyZWUKKyAgICAgKiB0byBmcmVlIHVwIHNvbWUgcm9vbS4gIEJ1dCBjb21wcmVzc2lvbiBpcyBzbG93LCBhbmQgd2UgbWlnaHQgYWN0dWFsbHkKKyAgICAgKiBuZWVkIHRoYXQgcm9vbSwgdGh1cyBvbmx5IGNvbXByZXNzIGluIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9uczoKKyAgICAgKiAxLiBXaGVuIG5vdCBjb21wcmVzc2VkIGJlZm9yZSAoc2lfY29tcHJlc3NfY250ID09IDApOiB3aGVuIHVzaW5nCisgICAgICogICAgU1BFTExfQ09NUFJFU1NfQ05UIGJsb2Nrcy4KKyAgICAgKiAyLiBXaGVuIGNvbXByZXNzZWQgYmVmb3JlIGFuZCB1c2VkIFNQRUxMX0NPTVBSRVNTX0lOQyBibG9ja3MgYmVmb3JlCisgICAgICogICAgYWRkaW5nIFNQRUxMX0NPTVBSRVNTX0FEREVEIHdvcmRzIChzaV9jb21wcmVzc19jbnQgPiAxKS4KKyAgICAgKiAzLiBXaGVuIGNvbXByZXNzZWQgYmVmb3JlLCBhZGRlZCBTUEVMTF9DT01QUkVTU19BRERFRCB3b3JkcworICAgICAqICAgIChzaV9jb21wcmVzc19jbnQgPT0gMSkgYW5kIHRoZSBudW1iZXIgb2YgZnJlZSBub2RlcyBkcm9wcyBiZWxvdyB0aGUKKyAgICAgKiAgICBtYXhpbXVtIHdvcmQgbGVuZ3RoLgogICAgICAqLwotICAgIGkgPSBGQUxTRTsKLSAgICBpZiAocm9vdCA9PSBzcGluLT5zaV9mb2xkcm9vdCkKKyNpZm5kZWYgU1BFTExfUFJJTlRUUkVFCisgICAgaWYgKHNwaW4tPnNpX2NvbXByZXNzX2NudCA9PSAxCisJICAgID8gc3Bpbi0+c2lfZnJlZV9jb3VudCA8IE1BWFdMRU4KKwkgICAgOiBzcGluLT5zaV9ibG9ja3NfY250ID49IFNQRUxMX0NPTVBSRVNTX0NOVCkKKyNlbmRpZgogICAgIHsKLQlpZiAoKytzcGluLT5zaV9mb2xkX2FkZGVkID49IFNQRUxMX0NPTVBSRVNTX0NOVCkKLQl7Ci0JICAgIGkgPSBUUlVFOwotCSAgICBzcGluLT5zaV9mb2xkX2FkZGVkID0gMDsKLQl9Ci0gICAgfQotICAgIGVsc2UgaWYgKHJvb3QgPT0gc3Bpbi0+c2lfa2VlcHJvb3QpCi0gICAgewotCWlmICgrK3NwaW4tPnNpX2tlZXBfYWRkZWQgPj0gU1BFTExfQ09NUFJFU1NfQ05UKQotCXsKLQkgICAgaSA9IFRSVUU7Ci0JICAgIHNwaW4tPnNpX2tlZXBfYWRkZWQgPSAwOwotCX0KLSAgICB9Ci0gICAgaWYgKGkpCi0gICAgeworCS8qIERlY3JlbWVudCB0aGUgYmxvY2sgY291bnRlci4gIFRoZSBlZmZlY3QgaXMgdGhhdCB3ZSBjb21wcmVzcyBhZ2FpbgorCSAqIHdoZW4gdGhlIGZyZWVkIHVwIHJvb20gaGFzIGJlZW4gdXNlZCBhbmQgYW5vdGhlciBTUEVMTF9DT01QUkVTU19JTkMKKwkgKiBibG9ja3MgaGF2ZSBiZWVuIGFsbG9jYXRlZC4gIFVubGVzcyBTUEVMTF9DT01QUkVTU19BRERFRCB3b3JkcyBoYXZlCisJICogYmVlbiBhZGRlZCwgdGhlbiB0aGUgbGltaXQgaXMgcHV0IGJhY2sgYWdhaW4uICovCisJc3Bpbi0+c2lfYmxvY2tzX2NudCAtPSBTUEVMTF9DT01QUkVTU19JTkM7CisJc3Bpbi0+c2lfY29tcHJlc3NfY250ID0gU1BFTExfQ09NUFJFU1NfQURERUQ7CisKIAlpZiAoc3Bpbi0+c2lfdmVyYm9zZSkKIAl7CiAJICAgIG1zZ19zdGFydCgpOwpAQCAtNTE5MCw3ICs1MjQ2LDEyIEBACiAJICAgIG1zZ19jb2wgPSAwOwogCSAgICBvdXRfZmx1c2goKTsKIAl9Ci0Jd29yZHRyZWVfY29tcHJlc3Moc3Bpbiwgcm9vdCk7CisKKwkvKiBDb21wcmVzcyBib3RoIHRyZWVzLiAgRWl0aGVyIHRoZXkgYm90aCBoYXZlIG1hbnkgbm9kZXMsIHdoaWNoIG1ha2VzCisJICogY29tcHJlc3Npb24gdXNlZnVsLCBvciBvbmUgb2YgdGhlbSBpcyBzbWFsbCwgd2hpY2ggbWVhbnMKKwkgKiBjb21wcmVzc2lvbiBnb2VzIGZhc3QuICovCisJd29yZHRyZWVfY29tcHJlc3Moc3Bpbiwgc3Bpbi0+c2lfZm9sZHJvb3QpOworCXdvcmR0cmVlX2NvbXByZXNzKHNwaW4sIHNwaW4tPnNpX2tlZXByb290KTsKICAgICB9CiAKICAgICByZXR1cm4gT0s7CkBAIC01MjEzLDYgKzUyNzQsNyBAQAogCW4gPSBzcGluLT5zaV9maXJzdF9mcmVlOwogCXNwaW4tPnNpX2ZpcnN0X2ZyZWUgPSBuLT53bl9jaGlsZDsKIAl2aW1fbWVtc2V0KG4sIDAsIHNpemVvZih3b3Jkbm9kZV9UKSk7CisJLS1zcGluLT5zaV9mcmVlX2NvdW50OwogICAgIH0KICNpZmRlZiBTUEVMTF9QUklOVFRSRUUKICAgICBuLT53bl9uciA9ICsrc3Bpbi0+c2lfd29yZG5vZGVfbnI7CkBAIC01MjUyLDYgKzUzMTQsNyBAQAogewogICAgIG4tPnduX2NoaWxkID0gc3Bpbi0+c2lfZmlyc3RfZnJlZTsKICAgICBzcGluLT5zaV9maXJzdF9mcmVlID0gbjsKKyAgICArK3NwaW4tPnNpX2ZyZWVfY291bnQ7CiB9CiAKIC8qCkBAIC01MjgyLDYgKzUzNDUsOCBAQAogCQl2ZXJib3NlX2VudGVyKCk7CiAJICAgIGlmICh0b3QgPiAxMDAwMDAwKQogCQlwZXJjID0gKHRvdCAtIG4pIC8gKHRvdCAvIDEwMCk7CisJICAgIGVsc2UgaWYgKHRvdCA9PSAwKQorCQlwZXJjID0gMDsKIAkgICAgZWxzZQogCQlwZXJjID0gKHRvdCAtIG4pICogMTAwIC8gdG90OwogCSAgICBzbXNnKChjaGFyX3UgKilfKCJDb21wcmVzc2VkICVkIG9mICVkIG5vZGVzOyAlZCUlIHJlbWFpbmluZyIpLApAQCAtNTMyMyw3ICs1Mzg4LDcgQEAKICAgICAgKiBOb3RlIHRoYXQgd2l0aCAiY2hpbGQiIHdlIG1lYW4gbm90IGp1c3QgdGhlIG5vZGUgdGhhdCBpcyBwb2ludGVkIHRvLAogICAgICAqIGJ1dCB0aGUgd2hvbGUgbGlzdCBvZiBzaWJsaW5ncywgb2Ygd2hpY2ggdGhlIG5vZGUgaXMgdGhlIGZpcnN0LgogICAgICAqLwotICAgIGZvciAobnAgPSBub2RlOyBucCAhPSBOVUxMOyBucCA9IG5wLT53bl9zaWJsaW5nKQorICAgIGZvciAobnAgPSBub2RlOyBucCAhPSBOVUxMICYmICFnb3RfaW50OyBucCA9IG5wLT53bl9zaWJsaW5nKQogICAgIHsKIAkrK2xlbjsKIAlpZiAoKGNoaWxkID0gbnAtPnduX2NoaWxkKSAhPSBOVUxMKQpAQCAtNTM5OCw2ICs1NDYzLDkgQEAKICAgICBub2RlLT53bl91MS5oYXNoa2V5WzRdID0gbiA9PSAwID8gMSA6IG47CiAgICAgbm9kZS0+d25fdTEuaGFzaGtleVs1XSA9IE5VTDsKIAorICAgIC8qIENoZWNrIGZvciBDVFJMLUMgcHJlc3NlZCBub3cgYW5kIHRoZW4uICovCisgICAgZmFzdF9icmVha2NoZWNrKCk7CisKICAgICByZXR1cm4gY29tcHJlc3NlZDsKIH0KIApAQCAtNzYwNCw2ICs3NjcyLDggQEAKICAgICBmcm9tdG9fVAkqZnRwOwogICAgIGludAkJZmwgPSAwLCB0bDsKICAgICBpbnQJCXJlcGV4dHJhID0gMDsJICAgIC8qIGV4dHJhIGJ5dGVzIGluIGZ3b3JkW10gZnJvbSBSRVAgaXRlbSAqLworICAgIHNsYW5nX1QJKnNsYW5nOworICAgIGludAkJZndvcmRfZW5kczsKIAogICAgIC8qIFdlIG1ha2UgYSBjb3B5IG9mIHRoZSBjYXNlLWZvbGRlZCBiYWQgd29yZCwgc28gdGhhdCB3ZSBjYW4gbW9kaWZ5IGl0CiAgICAgICogdG8gZmluZCBtYXRjaGVzIChlc3AuIFJFUCBpdGVtcykuICBBcHBlbmQgc29tZSBtb3JlIHRleHQsIGNoYW5naW5nCkBAIC03NjE2LDYgKzc2ODYsOCBAQAogICAgIGZvciAobHAgPSBMQU5HUF9FTlRSWShjdXJ3aW4tPndfYnVmZmVyLT5iX2xhbmdwLCAwKTsKIAkJCQkJCSAgIGxwLT5scF9zbGFuZyAhPSBOVUxMOyArK2xwKQogICAgIHsKKwlzbGFuZyA9IGxwLT5scF9zbGFuZzsKKwogCS8qCiAJICogR28gdGhyb3VnaCB0aGUgd2hvbGUgY2FzZS1mb2xkIHRyZWUsIHRyeSBjaGFuZ2VzIGF0IGVhY2ggbm9kZS4KIAkgKiAidHdvcmRbXSIgY29udGFpbnMgdGhlIHdvcmQgY29sbGVjdGVkIGZyb20gbm9kZXMgaW4gdGhlIHRyZWUuCkBAIC03NjM5LDIyICs3NzExLDIyIEBACiAJICogV2hlbiB0aGVyZSBhcmUgcG9zdHBvbmVkIHByZWZpeGVzIHdlIG5lZWQgdG8gdXNlIHRoZXNlIGZpcnN0LiAgQXQKIAkgKiB0aGUgZW5kIG9mIHRoZSBwcmVmaXggd2UgY29udGludWUgaW4gdGhlIGNhc2UtZm9sZCB0cmVlLgogCSAqLwotCWZieXRzID0gbHAtPmxwX3NsYW5nLT5zbF9mYnl0czsKLQlmaWR4cyA9IGxwLT5scF9zbGFuZy0+c2xfZmlkeHM7Ci0JcGJ5dHMgPSBscC0+bHBfc2xhbmctPnNsX3BieXRzOwotCXBpZHhzID0gbHAtPmxwX3NsYW5nLT5zbF9waWR4czsKKwlmYnl0cyA9IHNsYW5nLT5zbF9mYnl0czsKKwlmaWR4cyA9IHNsYW5nLT5zbF9maWR4czsKKwlwYnl0cyA9IHNsYW5nLT5zbF9wYnl0czsKKwlwaWR4cyA9IHNsYW5nLT5zbF9waWR4czsKIAlpZiAocGJ5dHMgIT0gTlVMTCkKIAl7CiAJICAgIGJ5dHMgPSBwYnl0czsKIAkgICAgaWR4cyA9IHBpZHhzOwotCSAgICBzcC0+dHNfcHJlZml4ZGVwdGggPSBQUkVGSVhUUkVFOworCSAgICBzcC0+dHNfcHJlZml4ZGVwdGggPSBQRkRfUFJFRklYVFJFRTsKIAkgICAgc3AtPnRzX3N0YXRlID0gU1RBVEVfTk9QUkVGSVg7CS8qIHRyeSB3aXRob3V0IHByZWZpeCBmaXJzdCAqLwogCX0KIAllbHNlCiAJewogCSAgICBieXRzID0gZmJ5dHM7CiAJICAgIGlkeHMgPSBmaWR4czsKLQkgICAgc3AtPnRzX3ByZWZpeGRlcHRoID0gTk9QUkVGSVg7CisJICAgIHNwLT50c19wcmVmaXhkZXB0aCA9IFBGRF9OT1BSRUZJWDsKIAl9CiAKIAkvKgpAQCAtNzY3OSw3ICs3NzUxLDcgQEAKIAkJbGVuID0gYnl0c1thcnJpZHhdOwkgICAgLyogYnl0ZXMgaW4gdGhpcyBub2RlICovCiAJCWFycmlkeCArPSBzcC0+dHNfY3VyaTsJICAgIC8qIGluZGV4IG9mIGN1cnJlbnQgYnl0ZSAqLwogCi0JCWlmIChzcC0+dHNfcHJlZml4ZGVwdGggPT0gUFJFRklYVFJFRSkKKwkJaWYgKHNwLT50c19wcmVmaXhkZXB0aCA9PSBQRkRfUFJFRklYVFJFRSkKIAkJewogCQkgICAgLyogU2tpcCBvdmVyIHRoZSBOVUwgYnl0ZXMsIHdlIHVzZSB0aGVtIGxhdGVyLiAqLwogCQkgICAgZm9yIChuID0gMDsgbiA8IGxlbiAmJiBieXRzW2FycmlkeCArIG5dID09IDA7ICsrbikKQEAgLTc3NDMsNyArNzgxNSwxNyBAQAogCiAJCWZsYWdzID0gKGludClpZHhzW2FycmlkeF07CiAKLQkJaWYgKHNwLT50c19wcmVmaXhkZXB0aCA8IE1BWFdMRU4pCisJCWlmIChzcC0+dHNfcHJlZml4ZGVwdGggPT0gUEZEX0NPTVBPVU5EKQorCQl7CisJCSAgICAvKiBUaGVyZSB3YXMgYSBjb21wb3VuZCB3b3JkIGJlZm9yZSB0aGlzIHdvcmQuICBJZiB0aGlzCisJCSAgICAgKiB3b3JkIGRvZXMgbm90IHN1cHBvcnQgY29tcG91bmRpbmcgdGhlbiBnaXZlIHVwCisJCSAgICAgKiAoc3BsaXR0aW5nIGlzIHRyaWVkIGZvciB0aGUgd29yZCB3aXRob3V0IGNvbXBvdW5kCisJCSAgICAgKiBmbGFnKS4gKi8KKwkJICAgIGlmIChzcC0+dHNfdHdvcmRsZW4gLSBzcGxpdG9mZiA8IHNsYW5nLT5zbF9jb21wbWlubGVuCisJCQkJCSAgICAgICB8fCAhY2FuX2NvbXBvdW5kKHNsYW5nLCBmbGFncykpCisJCQlicmVhazsKKwkJfQorCQllbHNlIGlmIChzcC0+dHNfcHJlZml4ZGVwdGggPCBNQVhXTEVOKQogCQl7CiAJCSAgICAvKiBUaGVyZSB3YXMgYSBwcmVmaXggYmVmb3JlIHRoZSB3b3JkLiAgQ2hlY2sgdGhhdCB0aGUKIAkJICAgICAqIHByZWZpeCBjYW4gYmUgdXNlZCB3aXRoIHRoaXMgd29yZC4gKi8KQEAgLTc3NTYsMTAgKzc4MzgsOCBAQAogCQkJOwogCQkgICAgaWYgKGMgPiAwKQogCQkgICAgewotCQkJLyogVGhlIHByZWZpeCBJRCBpcyBzdG9yZWQgdGhyZWUgYnl0ZXMgYWJvdmUgdGhlCi0JCQkgKiBmbGFncy4gKi8KIAkJCWMgPSB2YWxpZF93b3JkX3ByZWZpeChjLCBuLCBmbGFncywKLQkJCQkgICAgICAgdHdvcmQgKyBzcGxpdG9mZiwgbHAtPmxwX3NsYW5nLCBGQUxTRSk7CisJCQkJCSAgICAgIHR3b3JkICsgc3BsaXRvZmYsIHNsYW5nLCBGQUxTRSk7CiAJCQlpZiAoYyA9PSAwKQogCQkJICAgIGJyZWFrOwogCkBAIC03Nzc2LDcgKzc4NTYsNyBAQAogCQl0d29yZFtzcC0+dHNfdHdvcmRsZW5dID0gTlVMOwogCQlpZiAoZmxhZ3MgJiBXRl9LRUVQQ0FQKQogCQkgICAgLyogTXVzdCBmaW5kIHRoZSB3b3JkIGluIHRoZSBrZWVwLWNhc2UgdHJlZS4gKi8KLQkJICAgIGZpbmRfa2VlcGNhcF93b3JkKGxwLT5scF9zbGFuZywgdHdvcmQgKyBzcGxpdG9mZiwKKwkJICAgIGZpbmRfa2VlcGNhcF93b3JkKHNsYW5nLCB0d29yZCArIHNwbGl0b2ZmLAogCQkJCQkJCXByZXdvcmQgKyBwcmV3b3JkbGVuKTsKIAkJZWxzZQogCQl7CkBAIC03ODE4LDkgKzc4OTgsOSBAQAogCQkJCQkgY2FwdHlwZShwcmV3b3JkICsgcHJld29yZGxlbiwgTlVMTCkpKQogCQkgICAgbmV3c2NvcmUgKz0gU0NPUkVfSUNBU0U7CiAKLQkJaWYgKChmd29yZFtzcC0+dHNfZmlkeF0gPT0gTlVMCi0JCQkgICAgICAgfHwgIXNwZWxsX2lzd29yZHAoZndvcmQgKyBzcC0+dHNfZmlkeCwgY3VyYnVmKSkKLQkJCSYmIHNwLT50c19maWR4ID49IHNwLT50c19maWR4dHJ5KQorCQlmd29yZF9lbmRzID0gKGZ3b3JkW3NwLT50c19maWR4XSA9PSBOVUwKKwkJCSAgICAgICB8fCAhc3BlbGxfaXN3b3JkcChmd29yZCArIHNwLT50c19maWR4LCBjdXJidWYpKTsKKwkJaWYgKGZ3b3JkX2VuZHMgJiYgc3AtPnRzX2ZpZHggPj0gc3AtPnRzX2ZpZHh0cnkpCiAJCXsKIAkJICAgIC8qIFRoZSBiYWR3b3JkIGFsc28gZW5kczogYWRkIHN1Z2dlc3Rpb25zLiAgR2l2ZSBhIHBlbmFsdHkKIAkJICAgICAqIHdoZW4gY2hhbmdpbmcgbm9uLXdvcmQgY2hhciB0byB3b3JkIGNoYXIsIGUuZy4sICJ0aGVzLCIKQEAgLTc4NDksMTcgKzc5MjksMzggQEAKIAkJCSAgICBzcC0+dHNfZmlkeCAtIHJlcGV4dHJhLAogCQkJCQkgICBzcC0+dHNfc2NvcmUgKyBuZXdzY29yZSwgMCwgRkFMU0UpOwogCQl9Ci0JCWVsc2UgaWYgKHNwLT50c19maWR4ID49IHNwLT50c19maWR4dHJ5CisJCWVsc2UgaWYgKChzcC0+dHNfZmlkeCA+PSBzcC0+dHNfZmlkeHRyeSB8fCBmd29yZF9lbmRzKQogI2lmZGVmIEZFQVRfTUJZVEUKIAkJCS8qIERvbid0IHNwbGl0IGhhbGZ3YXkgYSBjaGFyYWN0ZXIuICovCiAJCQkmJiAoIWhhc19tYnl0ZSB8fCBzcC0+dHNfdGNoYXJsZW4gPT0gMCkKICNlbmRpZgogCQkJKQogCQl7Ci0JCSAgICAvKiBUaGUgd29yZCBpbiB0aGUgdHJlZSBlbmRzIGJ1dCB0aGUgYmFkd29yZAotCQkgICAgICogY29udGludWVzOiB0cnkgaW5zZXJ0aW5nIGEgc3BhY2UgYW5kIGNoZWNrIHRoYXQgYSB2YWxpZAotCQkgICAgICogd29yZHMgc3RhcnRzIGF0IGZ3b3JkW3NwLT50c19maWR4XS4gKi8KLQkJICAgIGlmICh0cnlfZGVlcGVyKHN1LCBzdGFjaywgZGVwdGgsIG5ld3Njb3JlICsgU0NPUkVfU1BMSVQpKQorCQkgICAgaW50CSAgICB0cnlfY29tcG91bmQ7CisKKwkJICAgIC8qIEdldCBoZXJlIGluIHR3byBzaXR1YXRpb25zOgorCQkgICAgICogMS4gVGhlIHdvcmQgaW4gdGhlIHRyZWUgZW5kcyBidXQgdGhlIGJhZHdvcmQgY29udGludWVzOgorCQkgICAgICogICAgSWYgdGhlIHdvcmQgYWxsb3dzIGNvbXBvdW5kaW5nIHRyeSB0aGF0LiAgT3RoZXJ3aXNlCisJCSAgICAgKiAgICB0cnkgYSBzcGxpdCBieSBpbnNlcnRpbmcgYSBzcGFjZS4gIEZvciBib3RoIGNoZWNrCisJCSAgICAgKiAgICB0aGF0IGEgdmFsaWQgd29yZHMgc3RhcnRzIGF0IGZ3b3JkW3NwLT50c19maWR4XS4KKwkJICAgICAqIDIuIFRoZSBiYWR3b3JkIGRvZXMgZW5kLCBidXQgaXQgd2FzIGR1ZSB0byBhIGNoYW5nZQorCQkgICAgICogICAgKGUuZy4sIGEgc3dhcCkuICBObyBuZWVkIHRvIHNwbGl0LCBidXQgZG8gY2hlY2sgdGhhdAorCQkgICAgICogICAgdGhlIGZvbGxvd2luZyB3b3JkIGlzIHZhbGlkLgorCQkgICAgICovCisJCSAgICBpZiAoIWZ3b3JkX2VuZHMKKwkJCSAgICAmJiBzcGVsbF9pc3dvcmRwKGZ3b3JkICsgc3AtPnRzX2ZpZHgsIGN1cmJ1ZikKKwkJCSAgICAmJiBzcC0+dHNfdHdvcmRsZW4gLSBzcGxpdG9mZgorCQkJCQkJICAgICAgPj0gc2xhbmctPnNsX2NvbXBtaW5sZW4KKwkJCSAgICAmJiBjYW5fY29tcG91bmQoc2xhbmcsIGZsYWdzKSkKKwkJCXRyeV9jb21wb3VuZCA9IFRSVUU7CisJCSAgICBlbHNlCisJCSAgICB7CisJCQl0cnlfY29tcG91bmQgPSBGQUxTRTsKKwkJCWlmICghZndvcmRfZW5kcykKKwkJCSAgICBuZXdzY29yZSArPSBTQ09SRV9TUExJVDsKKwkJICAgIH0KKworCQkgICAgaWYgKHRyeV9kZWVwZXIoc3UsIHN0YWNrLCBkZXB0aCwgbmV3c2NvcmUpKQogCQkgICAgewogCQkJLyogU2F2ZSB0aGluZ3MgdG8gYmUgcmVzdG9yZWQgYXQgU1RBVEVfU1BMSVRVTkRPLiAqLwogCQkJc3AtPnRzX3NhdmVfcHJld29yZGxlbiA9IHByZXdvcmRsZW47CkBAIC03ODcwLDI4ICs3OTcxLDQ5IEBACiAJCQkrK2RlcHRoOwogCQkJc3AgPSAmc3RhY2tbZGVwdGhdOwogCi0JCQkvKiBBcHBlbmQgYSBzcGFjZSB0byBwcmV3b3JkLiAqLwotCQkJU1RSQ0FUKHByZXdvcmQsICIgIik7CisJCQkvKiBBcHBlbmQgYSBzcGFjZSB0byBwcmV3b3JkIHdoZW4gc3BsaXR0aW5nLiAqLworCQkJaWYgKCF0cnlfY29tcG91bmQgJiYgIWZ3b3JkX2VuZHMpCisJCQkgICAgU1RSQ0FUKHByZXdvcmQsICIgIik7CiAJCQlwcmV3b3JkbGVuID0gU1RSTEVOKHByZXdvcmQpOwogCQkJc3BsaXRvZmYgPSBzcC0+dHNfdHdvcmRsZW47CiAKIAkJCS8qIElmIHRoZSBiYWR3b3JkIGhhcyBhIG5vbi13b3JkIGNoYXJhY3RlciBhdCB0aGlzCiAJCQkgKiBwb3NpdGlvbiBza2lwIGl0LiAgVGhhdCBtZWFucyByZXBsYWNpbmcgdGhlCi0JCQkgKiBub24td29yZCBjaGFyYWN0ZXIgd2l0aCBhIHNwYWNlLiAqLwotCQkJaWYgKCFzcGVsbF9pc3dvcmRwX25tdyhmd29yZCArIHNwLT50c19maWR4KSkKKwkJCSAqIG5vbi13b3JkIGNoYXJhY3RlciB3aXRoIGEgc3BhY2UuICBBbHdheXMgc2tpcCBhCisJCQkgKiBjaGFyYWN0ZXIgd2hlbiB0aGUgd29yZCBlbmRzLiAqLworCQkJaWYgKCghdHJ5X2NvbXBvdW5kCisJCQkJICAgJiYgIXNwZWxsX2lzd29yZHBfbm13KGZ3b3JkICsgc3AtPnRzX2ZpZHgpKQorCQkJCXx8IGZ3b3JkX2VuZHMpCiAJCQl7Ci0JCQkgICAgc3AtPnRzX3Njb3JlIC09IFNDT1JFX1NQTElUIC0gU0NPUkVfU1VCU1Q7CisJCQkgICAgaW50CSAgICBsOworCiAjaWZkZWYgRkVBVF9NQllURQogCQkJICAgIGlmIChoYXNfbWJ5dGUpCi0JCQkJc3AtPnRzX2ZpZHggKz0gTUJfQllURTJMRU4oZndvcmRbc3AtPnRzX2ZpZHhdKTsKKwkJCQlsID0gTUJfQllURTJMRU4oZndvcmRbc3AtPnRzX2ZpZHhdKTsKIAkJCSAgICBlbHNlCiAjZW5kaWYKLQkJCQkrK3NwLT50c19maWR4OworCQkJCWwgPSAxOworCQkJICAgIGlmIChmd29yZF9lbmRzKQorCQkJICAgIHsKKwkJCQkvKiBDb3B5IHRoZSBza2lwcGVkIGNoYXJhY3RlciB0byBwcmV3b3JkLiAqLworCQkJCW1jaF9tZW1tb3ZlKHByZXdvcmQgKyBwcmV3b3JkbGVuLAorCQkJCQkJICAgICAgZndvcmQgKyBzcC0+dHNfZmlkeCwgbCk7CisJCQkJcHJld29yZGxlbiArPSBsOworCQkJCXByZXdvcmRbcHJld29yZGxlbl0gPSBOVUw7CisJCQkgICAgfQorCQkJICAgIGVsc2UKKwkJCQlzcC0+dHNfc2NvcmUgLT0gU0NPUkVfU1BMSVQgLSBTQ09SRV9TVUJTVDsKKwkJCSAgICBzcC0+dHNfZmlkeCArPSBsOwogCQkJfQogCisJCQkvKiBzZXQgZmxhZyB0byBjaGVjayBjb21wb3VuZCBmbGFnIG9uIGZvbGxvd2luZyB3b3JkICovCisJCQlpZiAodHJ5X2NvbXBvdW5kKQorCQkJICAgIHNwLT50c19wcmVmaXhkZXB0aCA9IFBGRF9DT01QT1VORDsKKwkJCWVsc2UKKwkJCSAgICBzcC0+dHNfcHJlZml4ZGVwdGggPSBQRkRfTk9QUkVGSVg7CisKIAkJCS8qIHNldCBzdS0+c3VfYmFkZmxhZ3MgdG8gdGhlIGNhcHMgdHlwZSBhdCB0aGlzCiAJCQkgKiBwb3NpdGlvbiAqLwotCiAjaWZkZWYgRkVBVF9NQllURQogCQkJaWYgKGhhc19tYnl0ZSkKIAkJCSAgICBuID0gbm9mb2xkX2xlbihmd29yZCwgc3AtPnRzX2ZpZHgsIHN1LT5zdV9iYWRwdHIpOwpAQCAtNzkwOCwxMCArODAzMCwxMCBAQAogCQlicmVhazsKIAogCSAgICBjYXNlIFNUQVRFX1NQTElUVU5ETzoKLQkJLyogVW5kbyB0aGUgY2hhbmdlcyBkb25lIGZvciB3b3JkIHNwbGl0LiAqLworCQkvKiBVbmRvIHRoZSBjaGFuZ2VzIGRvbmUgZm9yIHdvcmQgc3BsaXQgb3IgY29tcG91bmQgd29yZC4gKi8KIAkJc3UtPnN1X2JhZGZsYWdzID0gc3AtPnRzX3NhdmVfYmFkZmxhZ3M7CiAJCXNwbGl0b2ZmID0gc3AtPnRzX3NhdmVfc3BsaXRvZmY7Ci0JCXByZXdvcmRsZW4gPSAgc3AtPnRzX3NhdmVfcHJld29yZGxlbjsKKwkJcHJld29yZGxlbiA9IHNwLT50c19zYXZlX3ByZXdvcmRsZW47CiAKIAkJLyogQ29udGludWUgbG9va2luZyBmb3IgTlVMIGJ5dGVzLiAqLwogCQlzcC0+dHNfc3RhdGUgPSBTVEFURV9TVEFSVDsKQEAgLTgwMTgsOCArODE0MCw4IEBACiAKIAkJCQkgICAgLyogRm9yIGEgc2ltaWxhciBjaGFyYWN0ZXIgYWRqdXN0IHNjb3JlCiAJCQkJICAgICAqIGZyb20gU0NPUkVfU1VCU1QgdG8gU0NPUkVfU0lNSUxBUi4gKi8KLQkJCQkgICAgZWxzZSBpZiAobHAtPmxwX3NsYW5nLT5zbF9oYXNfbWFwCi0JCQkJCSAgICAmJiBzaW1pbGFyX2NoYXJzKGxwLT5scF9zbGFuZywKKwkJCQkgICAgZWxzZSBpZiAoc2xhbmctPnNsX2hhc19tYXAKKwkJCQkJICAgICYmIHNpbWlsYXJfY2hhcnMoc2xhbmcsCiAJCQkJCQltYl9wdHIyY2hhcih0d29yZAogCQkJCQkJICAgICsgc3AtPnRzX3R3b3JkbGVuCiAJCQkJCQkJICAgLSBzcC0+dHNfdGNoYXJsZW4pLApAQCAtODA2NCw4ICs4MTg2LDggQEAKIAkJCSAgICAgKiBXZSBkbyB0aGlzIGFmdGVyIGNhbGxpbmcgdHJ5X2RlZXBlcigpIGJlY2F1c2UKIAkJCSAgICAgKiBpdCdzIHNsb3cuICovCiAJCQkgICAgaWYgKG5ld3Njb3JlICE9IDAKLQkJCQkgICAgJiYgbHAtPmxwX3NsYW5nLT5zbF9oYXNfbWFwCi0JCQkJICAgICYmIHNpbWlsYXJfY2hhcnMobHAtPmxwX3NsYW5nLAorCQkJCSAgICAmJiBzbGFuZy0+c2xfaGFzX21hcAorCQkJCSAgICAmJiBzaW1pbGFyX2NoYXJzKHNsYW5nLAogCQkJCQkJICAgYywgZndvcmRbc3AtPnRzX2ZpZHggLSAxXSkpCiAJCQkJc3AtPnRzX3Njb3JlIC09IFNDT1JFX1NVQlNUIC0gU0NPUkVfU0lNSUxBUjsKIAkJCX0KQEAgLTg0MzIsNyArODU1NCw3IEBACiAJCS8qIENoZWNrIGlmIG1hdGNoaW5nIHdpdGggUkVQIGl0ZW1zIGZyb20gdGhlIC5hZmYgZmlsZSB3b3VsZAogCQkgKiB3b3JrLiAgUXVpY2tseSBza2lwIGlmIHRoZXJlIGFyZSBubyBSRVAgaXRlbXMgb3IgdGhlIHNjb3JlCiAJCSAqIGlzIGdvaW5nIHRvIGJlIHRvbyBoaWdoIGFueXdheS4gKi8KLQkJZ2FwID0gJmxwLT5scF9zbGFuZy0+c2xfcmVwOworCQlnYXAgPSAmc2xhbmctPnNsX3JlcDsKIAkJaWYgKGdhcC0+Z2FfbGVuID09IDAKIAkJCSAgICAgICB8fCBzcC0+dHNfc2NvcmUgKyBTQ09SRV9SRVAgPj0gc3UtPnN1X21heHNjb3JlKQogCQl7CkBAIC04NDQyLDcgKzg1NjQsNyBAQAogCiAJCS8qIFVzZSB0aGUgZmlyc3QgYnl0ZSB0byBxdWlja2x5IGZpbmQgdGhlIGZpcnN0IGVudHJ5IHRoYXQKIAkJICogbWF5IG1hdGNoLiAgSWYgdGhlIGluZGV4IGlzIC0xIHRoZXJlIGlzIG5vbmUuICovCi0JCXNwLT50c19jdXJpID0gbHAtPmxwX3NsYW5nLT5zbF9yZXBfZmlyc3RbZndvcmRbc3AtPnRzX2ZpZHhdXTsKKwkJc3AtPnRzX2N1cmkgPSBzbGFuZy0+c2xfcmVwX2ZpcnN0W2Z3b3JkW3NwLT50c19maWR4XV07CiAJCWlmIChzcC0+dHNfY3VyaSA8IDApCiAJCXsKIAkJICAgIHNwLT50c19zdGF0ZSA9IFNUQVRFX0ZJTkFMOwpAQCAtODQ1OCw3ICs4NTgwLDcgQEAKIAkJICogd29yZCBpcyB2YWxpZC4gKi8KIAkJcCA9IGZ3b3JkICsgc3AtPnRzX2ZpZHg7CiAKLQkJZ2FwID0gJmxwLT5scF9zbGFuZy0+c2xfcmVwOworCQlnYXAgPSAmc2xhbmctPnNsX3JlcDsKIAkJd2hpbGUgKHNwLT50c19jdXJpIDwgZ2FwLT5nYV9sZW4pCiAJCXsKIAkJICAgIGZ0cCA9IChmcm9tdG9fVCAqKWdhcC0+Z2FfZGF0YSArIHNwLT50c19jdXJpKys7CkBAIC04NTAwLDggKzg2MjIsNyBAQAogCiAJICAgIGNhc2UgU1RBVEVfUkVQX1VORE86CiAJCS8qIFVuZG8gYSBSRVAgcmVwbGFjZW1lbnQgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lLiAqLwotCQlmdHAgPSAoZnJvbXRvX1QgKilscC0+bHBfc2xhbmctPnNsX3JlcC5nYV9kYXRhCi0JCQkJCQkJICAgICsgc3AtPnRzX2N1cmkgLSAxOworCQlmdHAgPSAoZnJvbXRvX1QgKilzbGFuZy0+c2xfcmVwLmdhX2RhdGEgKyBzcC0+dHNfY3VyaSAtIDE7CiAJCWZsID0gU1RSTEVOKGZ0cC0+ZnRfZnJvbSk7CiAJCXRsID0gU1RSTEVOKGZ0cC0+ZnRfdG8pOwogCQlwID0gZndvcmQgKyBzcC0+dHNfZmlkeDsKQEAgLTg1MTgsNyArODYzOSw3IEBACiAJCS8qIERpZCBhbGwgcG9zc2libGUgc3RhdGVzIGF0IHRoaXMgbGV2ZWwsIGdvIHVwIG9uZSBsZXZlbC4gKi8KIAkJLS1kZXB0aDsKIAotCQlpZiAoZGVwdGggPj0gMCAmJiBzdGFja1tkZXB0aF0udHNfcHJlZml4ZGVwdGggPT0gUFJFRklYVFJFRSkKKwkJaWYgKGRlcHRoID49IDAgJiYgc3RhY2tbZGVwdGhdLnRzX3ByZWZpeGRlcHRoID09IFBGRF9QUkVGSVhUUkVFKQogCQl7CiAJCSAgICAvKiBDb250aW51ZSBpbiBvciBnbyBiYWNrIHRvIHRoZSBwcmVmaXggdHJlZS4gKi8KIAkJICAgIGJ5dHMgPSBwYnl0czsKZGlmZiAtLWdpdCBhL3NyYy9zdHJ1Y3RzLmggYi9zcmMvc3RydWN0cy5oCmluZGV4IGFmODU5YmYuLjU0NzM1MTAgMTAwNjQ0Ci0tLSBhL3NyYy9zdHJ1Y3RzLmgKKysrIGIvc3JjL3N0cnVjdHMuaApAQCAtMTQzMiw2ICsxNDMyLDcgQEAKICNpZmRlZiBGRUFUX1NZTl9ITAogICAgIGhhc2h0YWJfVAliX2tleXd0YWI7CQkvKiBzeW50YXgga2V5d29yZHMgaGFzaCB0YWJsZSAqLwogICAgIGhhc2h0YWJfVAliX2tleXd0YWJfaWM7CQkvKiBpZGVtLCBpZ25vcmUgY2FzZSAqLworICAgIGludAkJYl9zeW5fZXJyb3I7CQkvKiBUUlVFIHdoZW4gZXJyb3Igb2NjdXJlZCBpbiBITCAqLwogICAgIGludAkJYl9zeW5faWM7CQkvKiBpZ25vcmUgY2FzZSBmb3IgOnN5biBjbWRzICovCiAgICAgaW50CQliX3N5bl9zcGVsbDsJCS8qIFNZTlNQTF8gdmFsdWVzICovCiAgICAgZ2FycmF5X1QJYl9zeW5fcGF0dGVybnM7CQkvKiB0YWJsZSBmb3Igc3ludGF4IHBhdHRlcm5zICovCmRpZmYgLS1naXQgYS9zcmMvc3ludGF4LmMgYi9zcmMvc3ludGF4LmMKaW5kZXggNGM0Y2JhZC4uYWEzOTNkNyAxMDA2NDQKLS0tIGEvc3JjL3N5bnRheC5jCisrKyBiL3NyYy9zeW50YXguYwpAQCAtMzE4Miw2ICszMTgyLDcgQEAKIHsKICAgICBpbnQgaTsKIAorICAgIGJ1Zi0+Yl9zeW5fZXJyb3IgPSBGQUxTRTsJICAgIC8qIGNsZWFyIHByZXZpb3VzIGVycm9yICovCiAgICAgYnVmLT5iX3N5bl9pYyA9IEZBTFNFOwkgICAgLyogVXNlIGNhc2UsIGJ5IGRlZmF1bHQgKi8KICAgICBidWYtPmJfc3luX3NwZWxsID0gU1lOU1BMX0RFRkFVTFQ7IC8qIGRlZmF1bHQgc3BlbGwgY2hlY2tpbmcgKi8KICAgICBidWYtPmJfc3luX2NvbnRhaW5lZGluID0gRkFMU0U7CmRpZmYgLS1naXQgYS9zcmMvdmVyc2lvbi5oIGIvc3JjL3ZlcnNpb24uaAppbmRleCA0YjY5NzM1Li45NDcyNmM2IDEwMDY0NAotLS0gYS9zcmMvdmVyc2lvbi5oCisrKyBiL3NyYy92ZXJzaW9uLmgKQEAgLTM2LDUgKzM2LDUgQEAKICNkZWZpbmUgVklNX1ZFUlNJT05fTk9ET1QJInZpbTcwYWEiCiAjZGVmaW5lIFZJTV9WRVJTSU9OX1NIT1JUCSI3LjBhYSIKICNkZWZpbmUgVklNX1ZFUlNJT05fTUVESVVNCSI3LjBhYSBBTFBIQSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgQXVnIDE1KSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBBdWcgMTUsIGNvbXBpbGVkICIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgQXVnIDE2KSIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBBdWcgMTYsIGNvbXBpbGVkICIK