ZGlmZiAtLWdpdCBhL01hYy9Ub29scy9JREUvTW9kdWxlQnJvd3Nlci5weSBiL01hYy9Ub29scy9JREUvTW9kdWxlQnJvd3Nlci5weQppbmRleCBkNTE1OTAxLi40NTRjMDk5IDEwMDY0NAotLS0gYS9NYWMvVG9vbHMvSURFL01vZHVsZUJyb3dzZXIucHkKKysrIGIvTWFjL1Rvb2xzL0lERS9Nb2R1bGVCcm93c2VyLnB5CkBAIC0xNCw5ICsxNCw5IEBACiAJCQogCQkjc2VsZi53aW5kb3cuYmV2ZWxib3ggPSBXLkJldmVsQm94KCgwLCAwLCAwLCA1NikpCiAJCXNlbGYud2luZG93Lm9wZW5idXR0b24gPSBXLkJ1dHRvbigoMTAsIDgsIDgwLCAxNiksICJPcGVuIiwgc2VsZi5vcGVuYnV0dG9uaGl0KQotCQlzZWxmLndpbmRvdy5icm93c2VidXR0b24gPSBXLkJ1dHRvbigoMTAwLCA4LCA4MCwgMTYpLCAiQnJvd3NlySIsIHNlbGYuYnJvd3NlYnV0dG9uaGl0KQorCQlzZWxmLndpbmRvdy5icm93c2VidXR0b24gPSBXLkJ1dHRvbigoMTAwLCA4LCA4MCwgMTYpLCAiQnJvd3NliiIsIHNlbGYuYnJvd3NlYnV0dG9uaGl0KQogCQlzZWxmLndpbmRvdy5yZWxvYWRidXR0b24gPSBXLkJ1dHRvbigoMTAsIDMyLCA4MCwgMTYpLCAiUmVsb2FkIiwgc2VsZi5yZWxvYWRidXR0b25oaXQpCi0JCXNlbGYud2luZG93Lm9wZW5vdGhlcmJ1dHRvbiA9IFcuQnV0dG9uKCgxMDAsIDMyLCA4MCwgMTYpLCAiT3BlbiBvdGhlcskiLCBzZWxmLm9wZW5vdGhlcikKKwkJc2VsZi53aW5kb3cub3Blbm90aGVyYnV0dG9uID0gVy5CdXR0b24oKDEwMCwgMzIsIDgwLCAxNiksICJPcGVuIG90aGVyiiIsIHNlbGYub3Blbm90aGVyKQogCQkKIAkJc2VsZi53aW5kb3cub3BlbmJ1dHRvbi5lbmFibGUoMCkKIAkJc2VsZi53aW5kb3cucmVsb2FkYnV0dG9uLmVuYWJsZSgwKQpAQCAtODEsNyArODEsNyBAQAogCQkJCQlmaWxlLCBwYXRoLCBkZXNjcmlwdGlvbiA9IGltcC5maW5kX21vZHVsZShtb2RuYW1lKQogCQkJCWV4Y2VwdCBJbXBvcnRFcnJvcjoKIAkJCQkJVy5TZXRDdXJzb3IoImFycm93IikKLQkJCQkJVy5NZXNzYWdlKCJDYW7VdCBmaW5kIGZpbGUgZm9yIG1vZHVsZSDSJXPTLiIgCisJCQkJCVcuTWVzc2FnZSgiQ2FuuXQgZmluZCBmaWxlIGZvciBtb2R1bGUgsyVzsi4iIAogCQkJCQkJCSUgbW9kbmFtZSkKIAkJCQllbHNlOgogCQkJCQlzZWxmLm9wZW5zY3JpcHQocGF0aCwgbW9kbmFtZSkJCQkJCQpAQCAtOTMsNyArOTMsNyBAQAogCQllbGlmIHBhdGhbLTQ6XSBpbiBbJy5weWMnLCAnLnB5byddOgogCQkJVy5nZXRhcHBsaWNhdGlvbigpLm9wZW5zY3JpcHQocGF0aFs6LTFdLCBtb2RuYW1lPW1vZG5hbWUpCiAJCWVsc2U6Ci0JCQlXLk1lc3NhZ2UoIkNhbtV0IGVkaXQg0iVz0zsgaXQgbWlnaHQgYmUgYSBzaGFyZWQgbGlicmFyeSBvciBhIC5weWMgZmlsZS4iIAorCQkJVy5NZXNzYWdlKCJDYW65dCBlZGl0ILMlc7I7IGl0IG1pZ2h0IGJlIGEgc2hhcmVkIGxpYnJhcnkgb3IgYSAucHljIGZpbGUuIiAKIAkJCQkJJSBtb2RuYW1lKQogCQogCWRlZiBvcGVub3RoZXIoc2VsZik6CkBAIC0xMDYsOSArMTA2LDkgQEAKIAkJCQlmaWxlLCBwYXRoLCBkZXNjcmlwdGlvbiA9IGltcC5maW5kX21vZHVsZShtb2RuYW1lKQogCQkJZXhjZXB0IEltcG9ydEVycm9yOgogCQkJCWlmIG1vZG5hbWUgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotCQkJCQlhbGVydHRleHQgPSAi0iVz0yBpcyBhIGJ1aWx0aW4gbW9kdWxlLCB3aGljaCB5b3UgY2Fu1XQgZWRpdC4iICUgbW9kbmFtZQorCQkJCQlhbGVydHRleHQgPSAisyVzsiBpcyBhIGJ1aWx0aW4gbW9kdWxlLCB3aGljaCB5b3UgY2FuuXQgZWRpdC4iICUgbW9kbmFtZQogCQkJCWVsc2U6Ci0JCQkJCWFsZXJ0dGV4dCA9ICJObyBtb2R1bGUgbmFtZWQg0iVz0y4iICUgbW9kbmFtZQorCQkJCQlhbGVydHRleHQgPSAiTm8gbW9kdWxlIG5hbWVkILMlc7IuIiAlIG1vZG5hbWUKIAkJCQlyYWlzZSBXLkFsZXJ0RXJyb3IsIGFsZXJ0dGV4dAogCQkJc2VsZi5vcGVuc2NyaXB0KHBhdGgsIG1vZG5hbWUpCiAJCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvSURFL1B5QnJvd3Nlci5weSBiL01hYy9Ub29scy9JREUvUHlCcm93c2VyLnB5CmluZGV4IGQ2MmQyNTYuLjMxZTZjODYgMTAwNjQ0Ci0tLSBhL01hYy9Ub29scy9JREUvUHlCcm93c2VyLnB5CisrKyBiL01hYy9Ub29scy9JREUvUHlCcm93c2VyLnB5CkBAIC0zNiw3ICszNiw3IEBACiAJCQl2YWx1ZSA9IF9yZXByKHZhbHVlKQogCQkJJycgKyB2YWx1ZQkjIHRlc3QgdG8gc2VlIGlmIGl0IGlzIGEgc3RyaW5nLCBpbiBjYXNlIGEgX19yZXByX18gbWV0aG9kIGlzIGJ1Z2d5CiAJCWV4Y2VwdDoKLQkJCXZhbHVlID0gJ6WlpSBleGNlcHRpb24gaW4gcmVwcigpJworCQkJdmFsdWUgPSAngICAIGV4Y2VwdGlvbiBpbiByZXByKCknCiAJaWYgdHJ1bmN2YWx1ZToKIAkJcmV0dXJuIGtleSArICdcdCcgKyB2YWx1ZVs6MjU1XQogCXJldHVybiBrZXkgKyAnXHQnICsgdmFsdWUKQEAgLTM1OCw3ICszNTgsNyBAQAogZGVmIHVucGFja19vYmplY3Qob2JqZWN0LCBpbmRlbnQgPSAwKToKIAl0cCA9IHR5cGUob2JqZWN0KQogCWlmIHRwIGluIFNJTVBMRV9UWVBFUyBhbmQgdHAgaXMgbm90IHR5cGVzLk5vbmVUeXBlOgotCQlyYWlzZSBUeXBlRXJyb3IsICdjYW7VdCBicm93c2Ugc2ltcGxlIHR5cGU6ICVzJyAlIHRwLl9fbmFtZV9fCisJCXJhaXNlIFR5cGVFcnJvciwgJ2Nhbrl0IGJyb3dzZSBzaW1wbGUgdHlwZTogJXMnICUgdHAuX19uYW1lX18KIAllbGlmIHRwID09IHR5cGVzLkRpY3Rpb25hcnlUeXBlOgogCQlyZXR1cm4gdW5wYWNrX2RpY3Qob2JqZWN0LCBpbmRlbnQpCiAJZWxpZiB0cCBpbiAodHlwZXMuVHVwbGVUeXBlLCB0eXBlcy5MaXN0VHlwZSk6CmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvSURFL1B5Q29uc29sZS5weSBiL01hYy9Ub29scy9JREUvUHlDb25zb2xlLnB5CmluZGV4IGFkNzE5ODIuLjBkYmVhNzcgMTAwNjQ0Ci0tLSBhL01hYy9Ub29scy9JREUvUHlDb25zb2xlLnB5CisrKyBiL01hYy9Ub29scy9JREUvUHlDb25zb2xlLnB5CkBAIC0xNTYsOCArMTU2LDggQEAKIAlkZWYgbWFrZW5hbWVzcGFjZW1lbnUoc2VsZiwgKmFyZ3MpOgogCQlXLlNldEN1cnNvcignd2F0Y2gnKQogCQluYW1lc3BhY2VsaXN0ID0gc2VsZi5nZXRuYW1lc3BhY2VsaXN0KCkKLQkJc2VsZi5uYW1lc3BhY2VtZW51LnNldChbKCJDbGVhciB3aW5kb3ciLCBzZWxmLmNsZWFyYnVmZmVyKSwgKCJGb250IHNldHRpbmdzySIsIHNlbGYuZG9mb250c2V0dGluZ3MpLCAKLQkJCQlbIk5hbWVzcGFjZSJdICsgbmFtZXNwYWNlbGlzdCwgKCJCcm93c2UgbmFtZXNwYWNlySIsIHNlbGYuYnJvd3NlbmFtZXNwYWNlKV0pCisJCXNlbGYubmFtZXNwYWNlbWVudS5zZXQoWygiQ2xlYXIgd2luZG93Iiwgc2VsZi5jbGVhcmJ1ZmZlciksICgiRm9udCBzZXR0aW5nc4oiLCBzZWxmLmRvZm9udHNldHRpbmdzKSwgCisJCQkJWyJOYW1lc3BhY2UiXSArIG5hbWVzcGFjZWxpc3QsICgiQnJvd3NlIG5hbWVzcGFjZYoiLCBzZWxmLmJyb3dzZW5hbWVzcGFjZSldKQogCQljdXJyZW50bmFtZSA9IHNlbGYuY29uc29sZXRleHQuX25hbWVzcGFjZVsiX19uYW1lX18iXQogCQlmb3IgaSBpbiByYW5nZShsZW4obmFtZXNwYWNlbGlzdCkpOgogCQkJaWYgbmFtZXNwYWNlbGlzdFtpXVswXSA9PSBjdXJyZW50bmFtZToKQEAgLTI2NCw3ICsyNjQsNyBAQAogCQkJCXRhYmJhYmxlID0gMCkKIAkJc2VsZi53Lm91dHB1dHRleHQgPSBPdXRwdXRUZXh0V2lkZ2V0KCgtMSwgLTEsIC0xNCwgMSksIGluc2V0ID0gKDYsIDUpLCAKIAkJCQlmb250c2V0dGluZ3MgPSBzZWxmLmZvbnRzZXR0aW5ncywgdGFic2V0dGluZ3MgPSBzZWxmLnRhYnNldHRpbmdzLCByZWFkb25seSA9IDEpCi0JCW1lbnVpdGVtcyA9IFsoIkNsZWFyIHdpbmRvdyIsIHNlbGYuY2xlYXJidWZmZXIpLCAoIkZvbnQgc2V0dGluZ3PJIiwgc2VsZi5kb2ZvbnRzZXR0aW5ncyldCisJCW1lbnVpdGVtcyA9IFsoIkNsZWFyIHdpbmRvdyIsIHNlbGYuY2xlYXJidWZmZXIpLCAoIkZvbnQgc2V0dGluZ3OKIiwgc2VsZi5kb2ZvbnRzZXR0aW5ncyldCiAJCXNlbGYudy5wb3B1cG1lbnUgPSBXLlBvcHVwTWVudSgoLTE1LCAtMSwgMTYsIDE2KSwgbWVudWl0ZW1zKQogCQkKIAkJc2VsZi53Ll9iYXJ5ID0gVy5TY3JvbGxiYXIoKC0xNSwgMTQsIDE2LCAtMTQpLCBzZWxmLncub3V0cHV0dGV4dC52c2Nyb2xsLCBtYXggPSAzMjc2NykKZGlmZiAtLWdpdCBhL01hYy9Ub29scy9JREUvUHlEZWJ1Z2dlci5weSBiL01hYy9Ub29scy9JREUvUHlEZWJ1Z2dlci5weQppbmRleCBiMGQ0ZmI0Li40OGQ2ZmY4IDEwMDY0NAotLS0gYS9NYWMvVG9vbHMvSURFL1B5RGVidWdnZXIucHkKKysrIGIvTWFjL1Rvb2xzL0lERS9QeURlYnVnZ2VyLnB5CkBAIC03Miw3ICs3Miw3IEBACiAJCXNlbGYuYm90ZnJhbWUgPSBib3R0b21mcmFtZQogCQlpZiBydW5uaW5nOgogCQkJc2VsZi5zZXRfY29udGludWUoKQotCQkJc2VsZi5yZWFzb24gPSAnUnVubmluZ8knCisJCQlzZWxmLnJlYXNvbiA9ICdSdW5uaW5niicKIAkJCXNlbGYuc2V0c3RhdGUoJ3J1bm5pbmcnKQogCQllbHNlOgogCQkJc2VsZi5zZXRfc3RlcCgpCkBAIC0xODcsNyArMTg3LDcgQEAKIAlkZWYgbWFrZW9wdGlvbnNtZW51KHNlbGYpOgogCQlvcHRpb25zID0gWygnQ2xlYXIgYnJlYWtwb2ludHMnLCBzZWxmLncucGFuZXMuYm90dG9tLnNyYy5zb3VyY2UuY2xlYXJicmVha3BvaW50cyksIAogCQkJCSgnQ2xlYXIgYWxsIGJyZWFrcG9pbnRzJywgc2VsZi5jbGVhcl9hbGxfYnJlYWtzKSwKLQkJCQkoJ0VkaXQgYnJlYWtwb2ludHPJJywgc2VsZi5lZGl0X2JyZWFrcyksICctJywKKwkJCQkoJ0VkaXQgYnJlYWtwb2ludHOKJywgc2VsZi5lZGl0X2JyZWFrcyksICctJywKIAkJCQkoc2VsZi50cmFjZW1hZ2ljIGFuZCAKIAkJCQkJJ0Rpc2FibGUgX19tYWdpY19fIHRyYWNpbmcnIG9yICdFbmFibGUgX19tYWdpY19fIHRyYWNpbmcnLCBzZWxmLnRvZ2dsZW1hZ2ljKV0KIAkJc2VsZi53LnBhbmVzLmJvdHRvbS5zcmMub3B0aW9uc21lbnUuc2V0KG9wdGlvbnMpCkBAIC0zMTgsNyArMzE4LDcgQEAKIAkKIAlkZWYgcnVubmluZyhzZWxmKToKIAkJVy5TZXRDdXJzb3IoJ3dhdGNoJykKLQkJc2VsZi5yZWFzb24gPSAnUnVubmluZ8knCisJCXNlbGYucmVhc29uID0gJ1J1bm5pbmeKJwogCQlzZWxmLnNldHN0YXRlKCdydW5uaW5nJykKIAkJI3NlbGYudy5wYW5lcy5ib3R0b20uc3JjLnNvdXJjZS5zZXQoJycpCiAJCSNzZWxmLncucGFuZXMuYnJvd3NlcnBhbmVzLnN0YWNrbGlzdC5zdGFjay5zZXQoW10pCkBAIC0zNTAsNyArMzUwLDcgQEAKIAkJCQkJCXRyeToKIAkJCQkJCQlmLCBmaWxlbmFtZSwgKHN1ZmYsIG1vZGUsIGR1bW15KSA9IGltcC5maW5kX21vZHVsZShtb2RuYW1lKQogCQkJCQkJZXhjZXB0IEltcG9ydEVycm9yOgotCQkJCQkJCXNlbGYudy5wYW5lcy5ib3R0b20uc3JjLnNvdXJjZS5zZXQoJ2NhbtV0IGZpbmQgZmlsZScpCisJCQkJCQkJc2VsZi53LnBhbmVzLmJvdHRvbS5zcmMuc291cmNlLnNldCgnY2FuuXQgZmluZCBmaWxlJykKIAkJCQkJCWVsc2U6CiAJCQkJCQkJaWYgZjoKIAkJCQkJCQkJZi5jbG9zZSgpCkBAIC0zNjAsOSArMzYwLDkgQEAKIAkJCQkJCQkJZi5jbG9zZSgpCiAJCQkJCQkJCXNlbGYudy5wYW5lcy5ib3R0b20uc3JjLnNvdXJjZS5zZXQoZGF0YSwgZmlsZW5hbWUpCiAJCQkJCQkJZWxzZToKLQkJCQkJCQkJc2VsZi53LnBhbmVzLmJvdHRvbS5zcmMuc291cmNlLnNldCgnY2Fu1XQgZmluZCBmaWxlJykKKwkJCQkJCQkJc2VsZi53LnBhbmVzLmJvdHRvbS5zcmMuc291cmNlLnNldCgnY2FuuXQgZmluZCBmaWxlJykKIAkJCQkJZWxzZToKLQkJCQkJCXNlbGYudy5wYW5lcy5ib3R0b20uc3JjLnNvdXJjZS5zZXQoJ2NhbtV0IGZpbmQgZmlsZScpCisJCQkJCQlzZWxmLncucGFuZXMuYm90dG9tLnNyYy5zb3VyY2Uuc2V0KCdjYW65dCBmaW5kIGZpbGUnKQogCQkJCWVsc2U6CiAJCQkJCXNlbGYudy5wYW5lcy5ib3R0b20uc3JjLnNvdXJjZS5zZXQoZGF0YSwgZmlsZW5hbWUpCiAJCQlzZWxmLmZpbGUgPSBmaWxlbmFtZQpAQCAtNjgyLDcgKzY4Miw3IEBACiAJCXNlbGYudy5wYW5lcy5maWxlcyA9IFcuTGlzdChOb25lLCBjYWxsYmFjayA9IHNlbGYuZmlsZWhpdCkJCSMsIGZsYWdzID0gTGlzdHMubE9ubHlPbmUpCiAJCXNlbGYudy5wYW5lcy5nciA9IFcuR3JvdXAoTm9uZSkKIAkJc2VsZi53LnBhbmVzLmdyLmJyZWFrcyA9IFcuTGlzdCgoMCwgMCwgLTEzMCwgMCksIGNhbGxiYWNrID0gc2VsZi5saW5laGl0KQkjLCBmbGFncyA9IExpc3RzLmxPbmx5T25lKQotCQlzZWxmLncucGFuZXMuZ3Iub3BlbmJ1dHRvbiA9IFcuQnV0dG9uKCgtODAsIDQsIDAsIDE2KSwgJ1ZpZXfJJywgc2VsZi5vcGVuYnV0dG9uaGl0KQorCQlzZWxmLncucGFuZXMuZ3Iub3BlbmJ1dHRvbiA9IFcuQnV0dG9uKCgtODAsIDQsIDAsIDE2KSwgJ1ZpZXeKJywgc2VsZi5vcGVuYnV0dG9uaGl0KQogCQlzZWxmLncucGFuZXMuZ3IuZGVsZXRlYnV0dG9uID0gVy5CdXR0b24oKC04MCwgMjgsIDAsIDE2KSwgJ0RlbGV0ZScsIHNlbGYuZGVsZXRlYnV0dG9uaGl0KQogCQkKIAkJc2VsZi53LmJpbmQoJzxjbG9zZT4nLCBzZWxmLmNsb3NlKQpAQCAtODgwLDcgKzg4MCw3IEBACiAKIGRlZiBnZXRkZWJ1Z2dlcigpOgogCWlmIG5vdCBfX2RlYnVnX186Ci0JCXJhaXNlIFcuQWxlcnRFcnJvciwgIkNhbtV0IGRlYnVnIGluINJPcHRpbWl6ZSBieXRlY29kZdMgbW9kZS5ccihzZWUg0kRlZmF1bHQgc3RhcnR1cCBvcHRpb25z0yBpbiBFZGl0UHl0aG9uUHJlZmVyZW5jZXMpIgorCQlyYWlzZSBXLkFsZXJ0RXJyb3IsICJDYW65dCBkZWJ1ZyBpbiCzT3B0aW1pemUgYnl0ZWNvZGWyIG1vZGUuXHIoc2VlILNEZWZhdWx0IHN0YXJ0dXAgb3B0aW9uc7IgaW4gRWRpdFB5dGhvblByZWZlcmVuY2VzKSIKIAlnbG9iYWwgX2RlYnVnZ2VyCiAJaWYgX2RlYnVnZ2VyIGlzIE5vbmU6CiAJCV9kZWJ1Z2dlciA9IERlYnVnZ2VyKCkKZGlmZiAtLWdpdCBhL01hYy9Ub29scy9JREUvUHlEb2NTZWFyY2gucHkgYi9NYWMvVG9vbHMvSURFL1B5RG9jU2VhcmNoLnB5CmluZGV4IGNkMGZkY2UuLmY5NzUwMjYgMTAwNjQ0Ci0tLSBhL01hYy9Ub29scy9JREUvUHlEb2NTZWFyY2gucHkKKysrIGIvTWFjL1Rvb2xzL0lERS9QeURvY1NlYXJjaC5weQpAQCAtMTAxLDcgKzEwMSw3IEBACiBjbGFzcyBTdGF0dXM6CiAJCiAJZGVmIF9faW5pdF9fKHNlbGYpOgotCQlzZWxmLncgPSBXLkRpYWxvZygoNDQwLCA2NCksICJTZWFyY2hpbmfJIikKKwkJc2VsZi53ID0gVy5EaWFsb2coKDQ0MCwgNjQpLCAiU2VhcmNoaW5niiIpCiAJCXNlbGYudy5zZWFyY2hpbmcgPSBXLlRleHRCb3goKDQsIDQsIC00LCAxNiksICJEZXZEZXY6UHlQeURvYyAxLjUuMTpleHQ6cGFyc2VUdXBsZUFuZEtleXdvcmRzLmh0bWwiKQogCQlzZWxmLncuaGl0cyA9IFcuVGV4dEJveCgoNCwgMjQsIC00LCAxNiksICJIaXRzOiAwIikKIAkJc2VsZi53LmNhbmNlbHRpcCA9IFcuVGV4dEJveCgoNCwgNDQsIC00LCAxNiksICJUeXBlIGNtZC1wZXJpb2QgKC4pIHRvIGNhbmNlbC4iKQpkaWZmIC0tZ2l0IGEvTWFjL1Rvb2xzL0lERS9QeUVkaXQucHkgYi9NYWMvVG9vbHMvSURFL1B5RWRpdC5weQppbmRleCA4NTM2Yjk0Li44MDM5N2ExIDEwMDY0NAotLS0gYS9NYWMvVG9vbHMvSURFL1B5RWRpdC5weQorKysgYi9NYWMvVG9vbHMvSURFL1B5RWRpdC5weQpAQCAtMTg1LDEwICsxODUsMTAgQEAKIAkJc2VsZi5saW5lZmllbGQuYmluZCgiPGNsaWNrPiIsIHNlbGYuY2xpY2tsaW5lZmllbGQpCiAJCiAJZGVmIG1ha2VvcHRpb25zbWVudShzZWxmKToKLQkJbWVudWl0ZW1zID0gWygnRm9udCBzZXR0aW5nc8knLCBzZWxmLmRvbWVudV9mb250c2V0dGluZ3MpLCAKKwkJbWVudWl0ZW1zID0gWygnRm9udCBzZXR0aW5nc4onLCBzZWxmLmRvbWVudV9mb250c2V0dGluZ3MpLCAKIAkJCQkoJ1wwJyArIGNocihzZWxmLnJ1bl9hc19tYWluKSArICdSdW4gYXMgX19tYWluX18nLCBzZWxmLmRvbWVudV90b2dnbGVfcnVuX2FzX21haW4pLCAKIAkJCQkoJ01vZHVsYXJpemUnLCBzZWxmLmRvbWVudV9tb2R1bGFyaXplKSwKLQkJCQkoJ0Jyb3dzZSBuYW1lc3BhY2XJJywgc2VsZi5kb21lbnVfYnJvd3NlbmFtZXNwYWNlKSwgCisJCQkJKCdCcm93c2UgbmFtZXNwYWNliicsIHNlbGYuZG9tZW51X2Jyb3dzZW5hbWVzcGFjZSksIAogCQkJCSctJ10KIAkJaWYgc2VsZi5wcm9maWxpbmc6CiAJCQltZW51aXRlbXMgPSBtZW51aXRlbXMgKyBbKCdEaXNhYmxlIHByb2ZpbGVyJywgc2VsZi5kb21lbnVfdG9nZ2xlcHJvZmlsZXIpXQpAQCAtMTk3LDcgKzE5Nyw3IEBACiAJCWlmIHNlbGYuZWRpdGdyb3VwLmVkaXRvci5fZGVidWdnZXI6CiAJCQltZW51aXRlbXMgPSBtZW51aXRlbXMgKyBbKCdEaXNhYmxlIGRlYnVnZ2VyJywgc2VsZi5kb21lbnVfdG9nZ2xlZGVidWdnZXIpLAogCQkJCSgnQ2xlYXIgYnJlYWtwb2ludHMnLCBzZWxmLmRvbWVudV9jbGVhcmJyZWFrcG9pbnRzKSwKLQkJCQkoJ0VkaXQgYnJlYWtwb2ludHPJJywgc2VsZi5kb21lbnVfZWRpdGJyZWFrcG9pbnRzKV0KKwkJCQkoJ0VkaXQgYnJlYWtwb2ludHOKJywgc2VsZi5kb21lbnVfZWRpdGJyZWFrcG9pbnRzKV0KIAkJZWxzZToKIAkJCW1lbnVpdGVtcyA9IG1lbnVpdGVtcyArIFsoJ0VuYWJsZSBkZWJ1Z2dlcicsIHNlbGYuZG9tZW51X3RvZ2dsZWRlYnVnZ2VyKV0KIAkJc2VsZi5lZGl0Z3JvdXAub3B0aW9uc21lbnUuc2V0KG1lbnVpdGVtcykKQEAgLTIzNiw3ICsyMzYsNyBAQAogCWRlZiBkb21lbnVfbW9kdWxhcml6ZShzZWxmLCAqYXJncyk6CiAJCW1vZG5hbWUgPSBfZmlsZW5hbWVfYXNfbW9kbmFtZShzZWxmLnRpdGxlKQogCQlpZiBub3QgbW9kbmFtZToKLQkJCXJhaXNlIFcuQWxlcnRFcnJvciwgJ0NhbtV0IG1vZHVsYXJpemUg0iVz0ycgJSBzZWxmLnRpdGxlCisJCQlyYWlzZSBXLkFsZXJ0RXJyb3IsICdDYW65dCBtb2R1bGFyaXplILMlc7InICUgc2VsZi50aXRsZQogCQlydW5fYXNfbWFpbiA9IHNlbGYucnVuX2FzX21haW4KIAkJc2VsZi5ydW5fYXNfbWFpbiA9IDAKIAkJc2VsZi5ydW4oKQpAQCAtMzA1LDcgKzMwNSw3IEBACiAJCQlpbXBvcnQgRWFzeURpYWxvZ3MKIAkJCWltcG9ydCBRZAogCQkJUWQuSW5pdEN1cnNvcigpICMgWFhYIHNob3VsZCBiZSBkb25lIGJ5IGRpYWxvZwotCQkJc2F2ZSA9IEVhc3lEaWFsb2dzLkFza1llc05vQ2FuY2VsKCdTYXZlIHdpbmRvdyDSJXPTIGJlZm9yZSBjbG9zaW5nPycgJSBzZWxmLnRpdGxlLCAxKQorCQkJc2F2ZSA9IEVhc3lEaWFsb2dzLkFza1llc05vQ2FuY2VsKCdTYXZlIHdpbmRvdyCzJXOyIGJlZm9yZSBjbG9zaW5nPycgJSBzZWxmLnRpdGxlLCAxKQogCQkJaWYgc2F2ZSA+IDA6CiAJCQkJaWYgc2VsZi5kb21lbnVfc2F2ZSgpOgogCQkJCQlyZXR1cm4gMQpAQCAtMzY1LDcgKzM2NSw3IEBACiAJCQlpbXBvcnQgYnVpbGR0b29scwogCQlleGNlcHQgSW1wb3J0RXJyb3I6CiAJCQkjIG9ubHkgaGF2ZSBidWlsZHRvb2xzIGluIFB5dGhvbiA+PSAxLjUuMgotCQkJcmFpc2UgVy5BbGVydEVycm9yLCAi0lNhdmUgYXMgQXBwbGV00yBpcyBvbmx5IHN1cHBvcnRlZCBpblxyUHl0aG9uIDEuNS4yIGFuZCB1cC4iCisJCQlyYWlzZSBXLkFsZXJ0RXJyb3IsICKzU2F2ZSBhcyBBcHBsZXSyIGlzIG9ubHkgc3VwcG9ydGVkIGluXHJQeXRob24gMS41LjIgYW5kIHVwLiIKIAkJCiAJCWJ1aWxkdG9vbHMuREVCVUcgPSAwCSMgb3VjaC4KIAkJCkBAIC00NjgsMjMgKzQ2OCwyMyBAQAogCQkJCQljbGFzc25hbWUgPSBzdHJpbmcuc3BsaXQoc3RyaW5nLnN0cmlwKGxpbmVbNjpdKSlbMF0KIAkJCQkJY2xhc3NlbmQgPSBpZGVudGlmaWVSRV9tYXRjaChjbGFzc25hbWUpCiAJCQkJCWlmIGNsYXNzZW5kIDwgMToKLQkJCQkJCXJhaXNlIFcuQWxlcnRFcnJvciwgJ0NhbtV0IGZpbmQgYSBjbGFzcy4nCisJCQkJCQlyYWlzZSBXLkFsZXJ0RXJyb3IsICdDYW65dCBmaW5kIGEgY2xhc3MuJwogCQkJCQljbGFzc25hbWUgPSBjbGFzc25hbWVbOmNsYXNzZW5kXQogCQkJCQlicmVhawogCQkJCWVsaWYgbGluZSBhbmQgbGluZVswXSBub3QgaW4gJ1x0Iyc6Ci0JCQkJCXJhaXNlIFcuQWxlcnRFcnJvciwgJ0NhbtV0IGZpbmQgYSBjbGFzcy4nCisJCQkJCXJhaXNlIFcuQWxlcnRFcnJvciwgJ0Nhbrl0IGZpbmQgYSBjbGFzcy4nCiAJCQllbHNlOgotCQkJCXJhaXNlIFcuQWxlcnRFcnJvciwgJ0NhbtV0IGZpbmQgYSBjbGFzcy4nCisJCQkJcmFpc2UgVy5BbGVydEVycm9yLCAnQ2FuuXQgZmluZCBhIGNsYXNzLicKIAkJCWlmIGdsb2JhbHMuaGFzX2tleShjbGFzc25hbWUpOgogCQkJCWxvY2FscyA9IGdsb2JhbHNbY2xhc3NuYW1lXS5fX2RpY3RfXwogCQkJZWxzZToKLQkJCQlyYWlzZSBXLkFsZXJ0RXJyb3IsICdDYW7VdCBmaW5kIGNsYXNzINIlc9MuJyAlIGNsYXNzbmFtZQorCQkJCXJhaXNlIFcuQWxlcnRFcnJvciwgJ0Nhbrl0IGZpbmQgY2xhc3MgsyVzsi4nICUgY2xhc3NuYW1lCiAJCQkjIGRlZGVudCB0byB0b3AgbGV2ZWwKIAkJCWZvciBpIGluIHJhbmdlKGxlbihsaW5lcykpOgogCQkJCWxpbmVzW2ldID0gbGluZXNbaV1bMTpdCiAJCQlweXRleHQgPSBzdHJpbmcuam9pbihsaW5lcywgJ1xyJykKIAkJZWxpZiBpbmRlbnQgPiAwOgotCQkJcmFpc2UgVy5BbGVydEVycm9yLCAnQ2Fu1XQgcnVuIGluZGVudGVkIGNvZGUuJworCQkJcmFpc2UgVy5BbGVydEVycm9yLCAnQ2FuuXQgcnVuIGluZGVudGVkIGNvZGUuJwogCQkKIAkJIyBhZGQgIm5ld2xpbmVzIiB0byBmb29sIGNvbXBpbGUvZXhlYzogCiAJCSMgbm93IGEgdHJhY2ViYWNrIHdpbGwgZ2l2ZSB0aGUgcmlnaHQgbGluZSBudW1iZXIKQEAgLTY3NCw3ICs2NzQsNyBAQAogCQlzZWxmLmJ1dHRvbnMgPSBbCSgiRmluZCIsCQkiY21kZiIsCSBzZWxmLmZpbmQpLCAKIAkJCQkJKCJSZXBsYWNlIiwJICAgICAiY21kciIsCSBzZWxmLnJlcGxhY2UpLCAKIAkJCQkJKCJSZXBsYWNlIGFsbCIsCSBOb25lLCAgIHNlbGYucmVwbGFjZWFsbCksIAotCQkJCQkoIkRvbtV0IGZpbmQiLCAgImNtZGQiLAkgc2VsZi5kb250KSwgCisJCQkJCSgiRG9uuXQgZmluZCIsICAiY21kZCIsCSBzZWxmLmRvbnQpLCAKIAkJCQkJKCJDYW5jZWwiLAkgICAgICAiY21kLiIsCSBzZWxmLmNhbmNlbCkKIAkJCQldCiAJCWZvciBpIGluIHJhbmdlKGxlbihzZWxmLmJ1dHRvbnMpKToKQEAgLTY4Myw3ICs2ODMsNyBAQAogCQkJc2VsZi53W3RpdGxlXSA9IFcuQnV0dG9uKGJvdW5kcywgdGl0bGUsIGNhbGxiYWNrKQogCQkJaWYgc2hvcnRjdXQ6CiAJCQkJc2VsZi53LmJpbmQoc2hvcnRjdXQsIHNlbGYud1t0aXRsZV0ucHVzaCkKLQkJc2VsZi53LnNldGRlZmF1bHRidXR0b24oc2VsZi53WyJEb27VdCBmaW5kIl0pCisJCXNlbGYudy5zZXRkZWZhdWx0YnV0dG9uKHNlbGYud1siRG9uuXQgZmluZCJdKQogCQlzZWxmLncuZmluZC5lZGl0LmJpbmQoIjxrZXk+Iiwgc2VsZi5rZXkpCiAJCXNlbGYudy5iaW5kKCI8YWN0aXZhdGU+Iiwgc2VsZi5hY3RpdmF0ZSkKIAkJc2VsZi53LmJpbmQoIjxjbG9zZT4iLCBzZWxmLmNsb3NlKQpAQCAtNzE2LDExICs3MTYsMTEgQEAKIAkJCWVsc2U6CiAJCQkJZm9yIHRpdGxlLCBjbWQsIGNhbGwgaW4gc2VsZi5idXR0b25zWzotMl06CiAJCQkJCXNlbGYud1t0aXRsZV0uZW5hYmxlKDApCi0JCQkJc2VsZi53LnNldGRlZmF1bHRidXR0b24oc2VsZi53WyJEb27VdCBmaW5kIl0pCisJCQkJc2VsZi53LnNldGRlZmF1bHRidXR0b24oc2VsZi53WyJEb265dCBmaW5kIl0pCiAJCWVsc2U6CiAJCQlmb3IgdGl0bGUsIGNtZCwgY2FsbCBpbiBzZWxmLmJ1dHRvbnNbOi0yXToKIAkJCQlzZWxmLndbdGl0bGVdLmVuYWJsZSgwKQotCQkJc2VsZi53LnNldGRlZmF1bHRidXR0b24oc2VsZi53WyJEb27VdCBmaW5kIl0pCisJCQlzZWxmLncuc2V0ZGVmYXVsdGJ1dHRvbihzZWxmLndbIkRvbrl0IGZpbmQiXSkKIAkKIAlkZWYgZmluZChzZWxmKToKIAkJc2VsZi5nZXRwYXJtc2Zyb213aW5kb3coKQpAQCAtMTAxOSw3ICsxMDE5LDcgQEAKIAkJc2VsZi50ZW1wbGF0ZSA9ICIlcywgJWQgcG9pbnQiCiAJCXNlbGYuZm9udHNldHRpbmdzLCBzZWxmLnRhYnNldHRpbmdzLCBzZWxmLndpbmRvd3NpemUgPSBnZXRlZGl0b3JwcmVmcygpCiAJCXNlbGYudyA9IFcuRGlhbG9nKCgzMjgsIDEyMCksICJFZGl0b3IgZGVmYXVsdCBzZXR0aW5ncyIpCi0JCXNlbGYudy5zZXRmb250YnV0dG9uID0gVy5CdXR0b24oKDgsIDgsIDgwLCAxNiksICJTZXQgZm9udMkiLCBzZWxmLmRvZm9udCkKKwkJc2VsZi53LnNldGZvbnRidXR0b24gPSBXLkJ1dHRvbigoOCwgOCwgODAsIDE2KSwgIlNldCBmb250iiIsIHNlbGYuZG9mb250KQogCQlzZWxmLncuZm9udHRleHQgPSBXLlRleHRCb3goKDk4LCAxMCwgLTgsIDE0KSwgc2VsZi50ZW1wbGF0ZSAlIChzZWxmLmZvbnRzZXR0aW5nc1swXSwgc2VsZi5mb250c2V0dGluZ3NbMl0pKQogCQkKIAkJc2VsZi53LnBpY2tzaXplYnV0dG9uID0gVy5CdXR0b24oKDgsIDUwLCA4MCwgMTYpLCAiRnJvbnQgd2luZG93Iiwgc2VsZi5waWNrc2l6ZSkKZGlmZiAtLWdpdCBhL01hYy9Ub29scy9JREUvUHl0aG9uSURFTWFpbi5weSBiL01hYy9Ub29scy9JREUvUHl0aG9uSURFTWFpbi5weQppbmRleCBiNmY2MzdiLi41NDVjMDliIDEwMDY0NAotLS0gYS9NYWMvVG9vbHMvSURFL1B5dGhvbklERU1haW4ucHkKKysrIGIvTWFjL1Rvb2xzL0lERS9QeXRob25JREVNYWluLnB5CkBAIC0zOCwxMyArMzgsMTMgQEAKIAlkZWYgbWFrZXVzZXJtZW51cyhzZWxmKToKIAkJbSA9IFdhcHBsaWNhdGlvbi5NZW51KHNlbGYubWVudWJhciwgIkZpbGUiKQogCQluZXdpdGVtID0gRnJhbWVXb3JrLk1lbnVJdGVtKG0sICJOZXciLCAiTiIsICduZXcnKQotCQlvcGVuaXRlbSA9IEZyYW1lV29yay5NZW51SXRlbShtLCAiT3BlbskiLCAiTyIsICdvcGVuJykKKwkJb3Blbml0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIk9wZW6KIiwgIk8iLCAnb3BlbicpCiAJCUZyYW1lV29yay5TZXBhcmF0b3IobSkKIAkJY2xvc2VpdGVtID0gRnJhbWVXb3JrLk1lbnVJdGVtKG0sICJDbG9zZSIsICJXIiwgJ2Nsb3NlJykKIAkJc2F2ZWl0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIlNhdmUiLCAiUyIsICdzYXZlJykKLQkJc2F2ZWFzaXRlbSA9IEZyYW1lV29yay5NZW51SXRlbShtLCAiU2F2ZSBhc8kiLCBOb25lLCAnc2F2ZV9hcycpCisJCXNhdmVhc2l0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIlNhdmUgYXOKIiwgTm9uZSwgJ3NhdmVfYXMnKQogCQlGcmFtZVdvcmsuU2VwYXJhdG9yKG0pCi0JCXNhdmVhc2FwcGxldGl0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIlNhdmUgYXMgQXBwbGV0ySIsIE5vbmUsICdzYXZlX2FzX2FwcGxldCcpCisJCXNhdmVhc2FwcGxldGl0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIlNhdmUgYXMgQXBwbGV0iiIsIE5vbmUsICdzYXZlX2FzX2FwcGxldCcpCiAJCUZyYW1lV29yay5TZXBhcmF0b3IobSkKIAkJcXVpdGl0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIlF1aXQiLCAiUSIsICdxdWl0JykKIAkJCkBAIC01OSw3ICs1OSw3IEBACiAJCXNlbGFsbGl0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIlNlbGVjdCBhbGwiLCAiQSIsICJzZWxlY3RhbGwiKQogCQlzZWxsaW5laXRlbSA9IEZyYW1lV29yay5NZW51SXRlbShtLCAiU2VsZWN0IGxpbmUiLCAiTCIsICJzZWxlY3RsaW5lIikKIAkJRnJhbWVXb3JrLlNlcGFyYXRvcihtKQotCQlmaW5kaXRlbSA9IEZyYW1lV29yay5NZW51SXRlbShtLCAiRmluZMkiLCAiRiIsICJmaW5kIikKKwkJZmluZGl0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIkZpbmSKIiwgIkYiLCAiZmluZCIpCiAJCWZpbmRhZ2Fpbml0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIkZpbmQgYWdhaW4iLCAnRycsICJmaW5kbmV4dCIpCiAJCWVudGVyc2VsaXRlbSA9IEZyYW1lV29yay5NZW51SXRlbShtLCAiRW50ZXIgc2VhcmNoIHN0cmluZyIsICJFIiwgImVudGVyc2VhcmNoc3RyaW5nIikKIAkJcmVwbGFjZWl0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIlJlcGxhY2UiLCBOb25lLCAicmVwbGFjZSIpCkBAIC03MiwxMSArNzIsMTEgQEAKIAkJcnVuaXRlbSA9IEZyYW1lV29yay5NZW51SXRlbShtLCAiUnVuIHdpbmRvdyIsICJSIiwgJ3J1bicpCiAJCXJ1bnNlbGl0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIlJ1biBzZWxlY3Rpb24iLCBOb25lLCAncnVuc2VsZWN0aW9uJykKIAkJRnJhbWVXb3JrLlNlcGFyYXRvcihtKQotCQltb2RpdGVtID0gRnJhbWVXb3JrLk1lbnVJdGVtKG0sICJNb2R1bGUgYnJvd3NlcskiLCAiTSIsIHNlbGYuZG9tZW51X21vZHVsZWJyb3dzZXIpCisJCW1vZGl0ZW0gPSBGcmFtZVdvcmsuTWVudUl0ZW0obSwgIk1vZHVsZSBicm93c2VyiiIsICJNIiwgc2VsZi5kb21lbnVfbW9kdWxlYnJvd3NlcikKIAkJRnJhbWVXb3JrLlNlcGFyYXRvcihtKQogCQltbSA9IEZyYW1lV29yay5TdWJNZW51KG0sICJQcmVmZXJlbmNlcyIpCi0JCUZyYW1lV29yay5NZW51SXRlbShtbSwgIlNldCBTY3JpcHRzIGZvbGRlcskiLCBOb25lLCBzZWxmLmRvX3NldHNjcmlwdHNmb2xkZXIpCi0JCUZyYW1lV29yay5NZW51SXRlbShtbSwgIkVkaXRvciBkZWZhdWx0IHNldHRpbmdzySIsIE5vbmUsIHNlbGYuZG9fZWRpdG9ycHJlZnMpCisJCUZyYW1lV29yay5NZW51SXRlbShtbSwgIlNldCBTY3JpcHRzIGZvbGRlcooiLCBOb25lLCBzZWxmLmRvX3NldHNjcmlwdHNmb2xkZXIpCisJCUZyYW1lV29yay5NZW51SXRlbShtbSwgIkVkaXRvciBkZWZhdWx0IHNldHRpbmdziiIsIE5vbmUsIHNlbGYuZG9fZWRpdG9ycHJlZnMpCiAJCQogCQlzZWxmLm9wZW53aW5kb3dzbWVudSA9IFdhcHBsaWNhdGlvbi5NZW51KHNlbGYubWVudWJhciwgJ1dpbmRvd3MnKQogCQlzZWxmLm1ha2VvcGVud2luZG93c21lbnUoKQpAQCAtMTM5LDEwICsxMzksMTAgQEAKIAkJaWYgZnR5cGUgPT0gJ1RFWFQnOgogCQkJc2VsZi5vcGVuc2NyaXB0KHBhdGgpCiAJCWVsc2U6Ci0JCQlXLk1lc3NhZ2UoIkNhbtV0IG9wZW4gZmlsZSBvZiB0eXBlICclcycuIiAlIGZ0eXBlKQorCQkJVy5NZXNzYWdlKCJDYW65dCBvcGVuIGZpbGUgb2YgdHlwZSAnJXMnLiIgJSBmdHlwZSkKIAkKIAlkZWYgZ2V0YWJvdXR0ZXh0KHNlbGYpOgotCQlyZXR1cm4gIkFib3V0IFB5dGhvbiBJREXJIgorCQlyZXR1cm4gIkFib3V0IFB5dGhvbiBJREWKIgogCQogCWRlZiBkb19hYm91dChzZWxmLCBpZCwgaXRlbSwgd2luZG93LCBldmVudCk6CiAJCVNwbGFzaC5hYm91dCgpCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvSURFL1NwbGFzaC5weSBiL01hYy9Ub29scy9JREUvU3BsYXNoLnB5CmluZGV4IDE5ZjE2ZmMuLmQxOTczYjQgMTAwNjQ0Ci0tLSBhL01hYy9Ub29scy9JREUvU3BsYXNoLnB5CisrKyBiL01hYy9Ub29scy9JREUvU3BsYXNoLnB5CkBAIC03MCw3ICs3MCw3IEBACiAKIF9rZWVwc3BsYXNoc2NyZWVub3BlbiA9IDAKIAotYWJvdXR0ZXh0MSA9ICIiIlRoZSBQeXRob24gSW50ZWdyYXRlZCBEZXZlbG9wZW1lbnQgRW52aXJvbm1lbnQgZm9yIHRoZSBNYWNpbnRvc2iqCithYm91dHRleHQxID0gIiIiVGhlIFB5dGhvbiBJbnRlZ3JhdGVkIERldmVsb3BlbWVudCBFbnZpcm9ubWVudCBmb3IgdGhlIE1hY2ludG9zaIEKIFZlcnNpb246ICVzCiBDb3B5cmlnaHQgMTk5Ny05OCBKdXN0IHZhbiBSb3NzdW0sIExldHRlcnJvci4gPGp1c3RAbGV0dGVycm9yLmNvbT4KIApAQCAtODEsMTEgKzgxLDExIEBACiBTZWU6IDxodHRwOi8vd3d3LnB5dGhvbi5vcmcvPiBmb3IgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24uIiIiCiAKIGZsYXV3ZWt1bCA9IFsJJ0dvb2RkYXksIEJydWNlLicsIAotCQkJJ1doYXTVcyBuZXc/JywgCisJCQknV2hhdLlzIG5ldz8nLCAKIAkJCSdOdWRnZSwgbnVkZ2UsIHNheSBubyBtb3JlIScsIAotCQkJJ05vLCBubyBzaXIsIGl01XMgbm90IGRlYWQuIEl01XMgcmVzdGluZy4nLAorCQkJJ05vLCBubyBzaXIsIGl0uXMgbm90IGRlYWQuIEl0uXMgcmVzdGluZy4nLAogCQkJJ0FsYmF0cm9zIScsCi0JCQknSXTVcyAuIC4gLicsCisJCQknSXS5cyAuIC4gLicsCiAJCQknSXMgeW91ciBuYW1lIG5vdCBCcnVjZSwgdGhlbj8nLAogCQkJIiIiQnV0IE1yIEYuRy4gU3VwZXJtYW4gaGFzIGEgc2VjcmV0IGlkZW50aXR5IC4gLiAuIAogd2hlbiB0cm91YmxlIHN0cmlrZXMgYXQgYW55IHRpbWUgLiAuIC4gCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvSURFL1dhcHBsaWNhdGlvbi5weSBiL01hYy9Ub29scy9JREUvV2FwcGxpY2F0aW9uLnB5CmluZGV4IDhkYjlhMWEuLjEwYWMzZjEgMTAwNjQ0Ci0tLSBhL01hYy9Ub29scy9JREUvV2FwcGxpY2F0aW9uLnB5CisrKyBiL01hYy9Ub29scy9JREUvV2FwcGxpY2F0aW9uLnB5CkBAIC0zMjMsMTggKzMyMywxOCBAQAogCQkJCSMgWFhYIGFuZCB0aGF0J3MgdGhlIGxhc3QgdGhpbmcgd2Ugd2FudCBoZXJlLgogCQkJCWYsIGZpbGVuYW1lLCAoc3VmZiwgbW9kZSwgZHVtbXkpID0gaW1wLmZpbmRfbW9kdWxlKG1vZG5hbWUpCiAJCQlleGNlcHQgSW1wb3J0RXJyb3I6Ci0JCQkJcmFpc2UgVy5BbGVydEVycm9yLCAiQ2Fu1XQgZmluZCBmaWxlIGZvciDSJXPTIiAlIG1vZG5hbWUKKwkJCQlyYWlzZSBXLkFsZXJ0RXJyb3IsICJDYW65dCBmaW5kIGZpbGUgZm9yILMlc7IiICUgbW9kbmFtZQogCQkJZWxzZToKIAkJCQlpZiBub3QgZjoKLQkJCQkJcmFpc2UgVy5BbGVydEVycm9yLCAiQ2Fu1XQgZmluZCBmaWxlIGZvciDSJXPTIiAlIG1vZG5hbWUKKwkJCQkJcmFpc2UgVy5BbGVydEVycm9yLCAiQ2FuuXQgZmluZCBmaWxlIGZvciCzJXOyIiAlIG1vZG5hbWUKIAkJCQlmLmNsb3NlKCkKIAkJCWlmIHN1ZmYgPT0gJy5weSc6CiAJCQkJc2VsZi5vcGVuc2NyaXB0KGZpbGVuYW1lLCBsaW5lbm8sIGNoYXJvZmZzZXQpCiAJCQkJcmV0dXJuCiAJCQllbHNlOgotCQkJCXJhaXNlIFcuQWxlcnRFcnJvciwgIkNhbtV0IGZpbmQgZmlsZSBmb3Ig0iVz0yIgJSBtb2RuYW1lCisJCQkJcmFpc2UgVy5BbGVydEVycm9yLCAiQ2FuuXQgZmluZCBmaWxlIGZvciCzJXOyIiAlIG1vZG5hbWUKIAkJZWxzZToKLQkJCXJhaXNlIFcuQWxlcnRFcnJvciwgIkNhbtV0IGZpbmQgZmlsZSDUJXPVIiAlIGZpbGVuYW1lCisJCQlyYWlzZSBXLkFsZXJ0RXJyb3IsICJDYW65dCBmaW5kIGZpbGUgjCVzuSIgJSBmaWxlbmFtZQogCQlpZiBsaW5lbm8gaXMgbm90IE5vbmU6CiAJCQllZGl0b3Iuc2VsZWN0bGluZShsaW5lbm8sIGNoYXJvZmZzZXQpCiAJCXJldHVybiBlZGl0b3IKZGlmZiAtLWdpdCBhL01hYy9Ub29scy9JREUvV3RleHQucHkgYi9NYWMvVG9vbHMvSURFL1d0ZXh0LnB5CmluZGV4IDgyMWU0YzUuLmIzZmI2NmMgMTAwNjQ0Ci0tLSBhL01hYy9Ub29scy9JREUvV3RleHQucHkKKysrIGIvTWFjL1Rvb2xzL0lERS9XdGV4dC5weQpAQCAtODYyLDcgKzg2Miw3IEBACiAJCQlpZiBvbm9mZjoKIAkJCQlpZiBub3QgX19kZWJ1Z19fOgogCQkJCQlpbXBvcnQgVwotCQkJCQlyYWlzZSBXLkFsZXJ0RXJyb3IsICJDYW7VdCBkZWJ1ZyBpbiDST3B0aW1pemUgYnl0ZWNvZGXTIG1vZGUuXHIoc2VlINJEZWZhdWx0IHN0YXJ0dXAgb3B0aW9uc9MgaW4gRWRpdFB5dGhvblByZWZlcmVuY2VzKSIKKwkJCQkJcmFpc2UgVy5BbGVydEVycm9yLCAiQ2FuuXQgZGVidWcgaW4gs09wdGltaXplIGJ5dGVjb2RlsiBtb2RlLlxyKHNlZSCzRGVmYXVsdCBzdGFydHVwIG9wdGlvbnOyIGluIEVkaXRQeXRob25QcmVmZXJlbmNlcykiCiAJCQkJaW1wb3J0IFB5RGVidWdnZXIKIAkJCQlzZWxmLl9kZWJ1Z2dlciA9IFB5RGVidWdnZXIuZ2V0ZGVidWdnZXIoKQogCQkJCXNlbGYuX2RlYnVnZ2VyLnJlZ2lzdGVyX2VkaXRvcihzZWxmLCBzZWxmLmZpbGUpCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvSURFL1d0cmFjZWJhY2sucHkgYi9NYWMvVG9vbHMvSURFL1d0cmFjZWJhY2sucHkKaW5kZXggODJlNDg3Zi4uMWQ3YjdiYSAxMDA2NDQKLS0tIGEvTWFjL1Rvb2xzL0lERS9XdHJhY2ViYWNrLnB5CisrKyBiL01hYy9Ub29scy9JREUvV3RyYWNlYmFjay5weQpAQCAtNTcsNyArNTcsNyBAQAogCQkJZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKVsxXQogCQlpZiBsaW5lbm86CiAJCQljaGFybm8gPSBjaGFybm8gLSAxCi0JCQl0ZXh0ID0gc3RyKHZhbHVlKSArICdcckZpbGU6ICInICsgc3RyKGZpbGVuYW1lKSArICciLCBsaW5lICcgKyBzdHIobGluZW5vKSArICdcclxyJyArIGxpbmVbOmNoYXJub10gKyAipSIgKyBsaW5lW2NoYXJubzotMV0KKwkJCXRleHQgPSBzdHIodmFsdWUpICsgJ1xyRmlsZTogIicgKyBzdHIoZmlsZW5hbWUpICsgJyIsIGxpbmUgJyArIHN0cihsaW5lbm8pICsgJ1xyXHInICsgbGluZVs6Y2hhcm5vXSArICKAIiArIGxpbmVbY2hhcm5vOi0xXQogCQllbHNlOgogCQkJdGV4dCA9IHN0cih2YWx1ZSkgKyAnXHJGaWxlOiAiJyArIHN0cihmaWxlbmFtZSkgKyAnIicKIAkJc2VsZi5zeW50YXhkaWFsb2cgPSBXLk1vZGFsRGlhbG9nKCgzNjAsIDEyMCksICJTeW50YXggRXJyb3IiKQpAQCAtMTIzLDEwICsxMjMsMTAgQEAKIAkJc2VsZi53LmVkaXRidXR0b24gPSBXLkJ1dHRvbigoMTAsIC0zMCwgNjAsIDE2KSwgIkVkaXQiLCBzZWxmLmVkaXQpCiAJCXNlbGYudy5lZGl0YnV0dG9uLmVuYWJsZSgwKQogCQkKLQkJc2VsZi53LmJyb3dzZWxvY2Fsc2J1dHRvbiA9IFcuQnV0dG9uKCg4MCwgLTMwLCAxMDAsIDE2KSwgIkJyb3dzZSBsb2NhbHPJIiwgc2VsZi5icm93c2Vsb2NhbHMpCisJCXNlbGYudy5icm93c2Vsb2NhbHNidXR0b24gPSBXLkJ1dHRvbigoODAsIC0zMCwgMTAwLCAxNiksICJCcm93c2UgbG9jYWxziiIsIHNlbGYuYnJvd3NlbG9jYWxzKQogCQlzZWxmLncuYnJvd3NlbG9jYWxzYnV0dG9uLmVuYWJsZSgwKQogCQkKLQkJc2VsZi53LnBvc3Rtb3J0ZW1idXR0b24gPSBXLkJ1dHRvbigoMTkwLCAtMzAsIDEwMCwgMTYpLCAiUG9zdCBtb3J0ZW3JIiwgc2VsZi5wb3N0bW9ydGVtKQorCQlzZWxmLncucG9zdG1vcnRlbWJ1dHRvbiA9IFcuQnV0dG9uKCgxOTAsIC0zMCwgMTAwLCAxNiksICJQb3N0IG1vcnRlbYoiLCBzZWxmLnBvc3Rtb3J0ZW0pCiAJCQogCQlzZWxmLncuc2V0ZGVmYXVsdGJ1dHRvbihzZWxmLncuZWRpdGJ1dHRvbikKIAkJc2VsZi53LmJpbmQoImNtZGIiLCBzZWxmLncuYnJvd3NlbG9jYWxzYnV0dG9uLnB1c2gpCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvSURFL1d3aW5kb3dzLnB5IGIvTWFjL1Rvb2xzL0lERS9Xd2luZG93cy5weQppbmRleCA0YzE2Nzk0Li45OWE1ZmM4IDEwMDY0NAotLS0gYS9NYWMvVG9vbHMvSURFL1d3aW5kb3dzLnB5CisrKyBiL01hYy9Ub29scy9JREUvV3dpbmRvd3MucHkKQEAgLTU1Niw3ICs1NTYsNyBAQAogCQkJCXBhc3MKIAlpbXBvcnQgRWFzeURpYWxvZ3MKIAlpZiBFYXN5RGlhbG9ncy5Bc2tZZXNOb0NhbmNlbCgKLQkJCSJDYW7VdCBmaW5kIHdpbmRvdyBvciB3aWRnZXQgdG8gaW5zZXJ0IHRleHQgaW50bzsgY29weSB0byBjbGlwYm9hcmQgaW5zdGVhZD8iLCAKKwkJCSJDYW65dCBmaW5kIHdpbmRvdyBvciB3aWRnZXQgdG8gaW5zZXJ0IHRleHQgaW50bzsgY29weSB0byBjbGlwYm9hcmQgaW5zdGVhZD8iLCAKIAkJCTEpID09IDE6CiAJCWltcG9ydCBTY3JhcAogCQlTY3JhcC5aZXJvU2NyYXAoKQo=