ZGlmZiAtLWdpdCBhL01hYy9MaWIvdG9vbGJveC9BcHBsZVNjcmlwdF9TdWl0ZS5weSBiL01hYy9MaWIvdG9vbGJveC9BcHBsZVNjcmlwdF9TdWl0ZS5weQppbmRleCBiMDc1NWIxLi4yYmZmNDUxIDEwMDY0NAotLS0gYS9NYWMvTGliL3Rvb2xib3gvQXBwbGVTY3JpcHRfU3VpdGUucHkKKysrIGIvTWFjL0xpYi90b29sYm94L0FwcGxlU2NyaXB0X1N1aXRlLnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiU3VpdGUgQXBwbGVTY3JpcHQgU3VpdGU6IEdvb2RpZXMgZm9yIEd1c3RhdgogTGV2ZWwgMSwgdmVyc2lvbiAxCiAKLUdlbmVyYXRlZCBmcm9tIE1vZXM6U3lzdGVtIGZvbGRlcjpFeHRlbnNpb25zOlNjcmlwdGluZyBBZGRpdGlvbnM6RGlhbGVjdHM6RW5nbGlzaCBEaWFsZWN0CitHZW5lcmF0ZWQgZnJvbSBmbGFwOlN5c3RlZW1tYXA6RXh0ZW5zaWVzOlNjcmlwdC1leHRyYSdzOkRpYWxlY3RlbjpFbmdlbHMgZGlhbGVjdAogQUVURS9BRVVUIHJlc291cmNlIHZlcnNpb24gMS8wLCBsYW5ndWFnZSAwLCBzY3JpcHQgMAogIiIiCiAKQEAgLTQ1LDcgKzQ1LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTY1LDcgKzY1LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTg0LDcgKzg0LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTEwMyw3ICsxMDMsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMTIyLDcgKzEyMiw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0xNDMsNyArMTQzLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTE2Myw3ICsxNjMsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMTgzLDcgKzE4Myw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yMDMsNyArMjAzLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTIyMyw3ICsyMjMsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMjU1LDcgKzI1NSw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yOTQsNyArMjk0LDcgQEAKIAl9CiAKIAlkZWYgQ2FsbF9hNV9zdWJyb3V0aW5lKHNlbGYsIF9vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIkNhbGylc3Vicm91dGluZTogQSBzdWJyb3V0aW5lIGNhbGwKKwkJIiIiQ2FsbIBzdWJyb3V0aW5lOiBBIHN1YnJvdXRpbmUgY2FsbAogCQlSZXF1aXJlZCBhcmd1bWVudDogYW55dGhpbmcKIAkJS2V5d29yZCBhcmd1bWVudCBhdDogYSBwcmVwb3NpdGlvbgogCQlLZXl3b3JkIGFyZ3VtZW50IF9mcm9tOiBhIHByZXBvc2l0aW9uCkBAIC0zMzksNyArMzM5LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTM2MCwxMyArMzYwLDEzIEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCiAKIAlkZWYgX2FkXyhzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIirTogSW5lcXVhbGl0eQorCQkiIiKCOiBJbmVxdWFsaXR5CiAJCVJlcXVpcmVkIGFyZ3VtZW50OiBhbiBBRSBvYmplY3QgcmVmZXJlbmNlCiAJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKIAkJUmV0dXJuczogYW55dGhpbmcKQEAgLTM4MSw3ICszODEsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtNDAyLDcgKzQwMiw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC00MjMsNyArNDIzLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTQ0NCwxMyArNDQ0LDEzIEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCiAKIAlkZWYgX2Q2XyhzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIi1jogRGl2aXNpb24KKwkJIiIi9zogRGl2aXNpb24KIAkJUmVxdWlyZWQgYXJndW1lbnQ6IGFuIEFFIG9iamVjdCByZWZlcmVuY2UKIAkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQogCQlSZXR1cm5zOiBhbnl0aGluZwpAQCAtNDY1LDcgKzQ2NSw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC00ODYsNyArNDg2LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTUwNyw3ICs1MDcsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtNTI4LDcgKzUyOCw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC01NDksMTMgKzU0OSwxMyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQogCiAJZGVmIF9iM18oc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIrM6IEdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bworCQkiIiKEOiBHcmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8KIAkJUmVxdWlyZWQgYXJndW1lbnQ6IGFuIEFFIG9iamVjdCByZWZlcmVuY2UKIAkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQogCQlSZXR1cm5zOiBhbnl0aGluZwpAQCAtNTcwLDcgKzU3MCw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC01OTEsMTMgKzU5MSwxMyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQogCiAJZGVmIF9iMl8oc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIrI6IExlc3MgdGhhbiBvciBlcXVhbCB0bworCQkiIiK+OiBMZXNzIHRoYW4gb3IgZXF1YWwgdG8KIAkJUmVxdWlyZWQgYXJndW1lbnQ6IGFuIEFFIG9iamVjdCByZWZlcmVuY2UKIAkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQogCQlSZXR1cm5zOiBhbnl0aGluZwpAQCAtNjEyLDcgKzYxMiw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC02MzMsNyArNjMzLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTY1NCw3ICs2NTQsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtNjc1LDcgKzY3NSw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC02OTYsNyArNjk2LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTcxNyw3ICs3MTcsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtNzM4LDcgKzczOCw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC03NTksNyArNzU5LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTc4MCw3ICs3ODAsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtODAxLDcgKzgwMSw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCmRpZmYgLS1naXQgYS9NYWMvTGliL3Rvb2xib3gvRmluZGVyXzdfMF9TdWl0ZS5weSBiL01hYy9MaWIvdG9vbGJveC9GaW5kZXJfN18wX1N1aXRlLnB5CmluZGV4IDExNTU3OTUuLmI2MjgyZGQgMTAwNjQ0Ci0tLSBhL01hYy9MaWIvdG9vbGJveC9GaW5kZXJfN18wX1N1aXRlLnB5CisrKyBiL01hYy9MaWIvdG9vbGJveC9GaW5kZXJfN18wX1N1aXRlLnB5CkBAIC0yNiw3ICsyNiw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC01MSw3ICs1MSw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC03Niw3ICs3Niw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC05NSw3ICs5NSw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0xMjAsNyArMTIwLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTE0NSw3ICsxNDUsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMTY0LDcgKzE2NCw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0xODMsNyArMTgzLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTIwOCw3ICsyMDgsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMjMzLDcgKzIzMyw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yNTksNyArMjU5LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTI3OCw3ICsyNzgsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMzAzLDcgKzMwMyw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCmRpZmYgLS1naXQgYS9NYWMvTGliL3Rvb2xib3gvRmluZGVyX1N1aXRlLnB5IGIvTWFjL0xpYi90b29sYm94L0ZpbmRlcl9TdWl0ZS5weQppbmRleCAzMjA4ZWFlLi43NDZkZTM2IDEwMDY0NAotLS0gYS9NYWMvTGliL3Rvb2xib3gvRmluZGVyX1N1aXRlLnB5CisrKyBiL01hYy9MaWIvdG9vbGJveC9GaW5kZXJfU3VpdGUucHkKQEAgLTEsNyArMSw3IEBACiAiIiJTdWl0ZSBGaW5kZXIgU3VpdGU6IE9iamVjdHMgYW5kIEV2ZW50cyBmb3IgdGhlIEZpbmRlcgogTGV2ZWwgMSwgdmVyc2lvbiAxCiAKLUdlbmVyYXRlZCBmcm9tIE1vZXM6U3lzdGVtIGZvbGRlcjpFeHRlbnNpb25zOkZpbmRlciBTY3JpcHRpbmcgRXh0ZW5zaW9uCitHZW5lcmF0ZWQgZnJvbSBmbGFwOlN5c3RlZW1tYXA6RXh0ZW5zaWVzOkZpbmRlciBTY3JpcHQtZXh0ZW5zaWUKIEFFVEUvQUVVVCByZXNvdXJjZSB2ZXJzaW9uIDAvMTQ0LCBsYW5ndWFnZSAwLCBzY3JpcHQgMAogIiIiCiAKQEAgLTQzLDE0ICs0MywxNCBAQAogCQlfY29kZSA9ICdmbmRyJwogCQlfc3ViY29kZSA9ICdmY2x1JwogCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX2NsZWFuX3VwKQogCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CiAKLQkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfY2xlYW5fdXApCiAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTY5LDE0ICs2OSwxNCBAQAogCQlfY29kZSA9ICdmbmRyJwogCQlfc3ViY29kZSA9ICdnc3RsJwogCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX2NvbXB1dGVyKQogCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CiAKLQkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfY29tcHV0ZXIpCiAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTg5LDM0ICs4OSwzNCBAQAogCQlfY29kZSA9ICdmbmRyJwogCQlfc3ViY29kZSA9ICdlamN0JwogCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCiAJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKIAotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwogCiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCiAKIAlkZWYgZW1wdHkoc2VsZiwgX29iamVjdD1Ob25lLCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKIAkJIiIiZW1wdHk6IEVtcHR5IHRoZSB0cmFzaAotCQlSZXF1aXJlZCBhcmd1bWVudDog0mVtcHR50yBhbmQg0mVtcHR5IHRyYXNo0yBib3RoIGRvIHRoZSBzYW1lIHRoaW5nCisJCVJlcXVpcmVkIGFyZ3VtZW50OiCzZW1wdHmyIGFuZCCzZW1wdHkgdHJhc2iyIGJvdGggZG8gdGhlIHNhbWUgdGhpbmcKIAkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQogCQkiIiIKIAkJX2NvZGUgPSAnZm5kcicKIAkJX3N1YmNvZGUgPSAnZW1wdCcKIAorCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwogCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CiAKLQkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKIAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMTI5LDE0ICsxMjksMTQgQEAKIAkJX2NvZGUgPSAnZm5kcicKIAkJX3N1YmNvZGUgPSAnZmVyYScKIAorCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwogCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CiAKLQkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKIAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMTU1LDE0ICsxNTUsMTQgQEAKIAkJX2NvZGUgPSAnZm5kcicKIAkJX3N1YmNvZGUgPSAncHR3eScKIAorCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9wdXRfYXdheSkKIAkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAogCi0JCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX3B1dF9hd2F5KQogCiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0xNzQsMTQgKzE3NCwxNCBAQAogCQlfY29kZSA9ICdmbmRyJwogCQlfc3ViY29kZSA9ICdyZXN0JwogCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCiAJCWlmIF9ub19vYmplY3QgIT0gTm9uZTogcmFpc2UgVHlwZUVycm9yLCAnTm8gZGlyZWN0IGFyZyBleHBlY3RlZCcKIAotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwogCiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0xOTQsMTQgKzE5NCwxNCBAQAogCQlfY29kZSA9ICdtaXNjJwogCQlfc3ViY29kZSA9ICdtdmlzJwogCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCiAJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKIAotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwogCiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yMTQsMTQgKzIxNCwxNCBAQAogCQlfY29kZSA9ICdtaXNjJwogCQlfc3ViY29kZSA9ICdzbGN0JwogCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCiAJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKIAotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwogCiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yMzMsMTQgKzIzMywxNCBAQAogCQlfY29kZSA9ICdmbmRyJwogCQlfc3ViY29kZSA9ICdzaHV0JwogCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCiAJCWlmIF9ub19vYmplY3QgIT0gTm9uZTogcmFpc2UgVHlwZUVycm9yLCAnTm8gZGlyZWN0IGFyZyBleHBlY3RlZCcKIAotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwogCiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yNTIsMTQgKzI1MiwxNCBAQAogCQlfY29kZSA9ICdmbmRyJwogCQlfc3ViY29kZSA9ICdzbm96JwogCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCiAJCWlmIF9ub19vYmplY3QgIT0gTm9uZTogcmFpc2UgVHlwZUVycm9yLCAnTm8gZGlyZWN0IGFyZyBleHBlY3RlZCcKIAotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwogCiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yNzgsMTQgKzI3OCwxNCBAQAogCQlfY29kZSA9ICdEQVRBJwogCQlfc3ViY29kZSA9ICdTT1JUJwogCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX3NvcnQpCiAJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKIAotCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9zb3J0KQogCiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yOTgsMTQgKzI5OCwxNCBAQAogCQlfY29kZSA9ICdmbmRyJwogCQlfc3ViY29kZSA9ICdmdXBkJwogCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCiAJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKIAotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwogCiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCmRpZmYgLS1naXQgYS9NYWMvTGliL3Rvb2xib3gvTWV0cm93ZXJrc19TaGVsbF9TdWl0ZS5weSBiL01hYy9MaWIvdG9vbGJveC9NZXRyb3dlcmtzX1NoZWxsX1N1aXRlLnB5CmluZGV4IDMyZjQ1ZjMuLjQ2MzcwNjYgMTAwNjQ0Ci0tLSBhL01hYy9MaWIvdG9vbGJveC9NZXRyb3dlcmtzX1NoZWxsX1N1aXRlLnB5CisrKyBiL01hYy9MaWIvdG9vbGJveC9NZXRyb3dlcmtzX1NoZWxsX1N1aXRlLnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiU3VpdGUgTWV0cm93ZXJrcyBTaGVsbCBTdWl0ZTogRXZlbnRzIHN1cHBvcnRlZCBieSB0aGUgTWV0cm93ZXJrcyBQcm9qZWN0IFNoZWxsCiBMZXZlbCAxLCB2ZXJzaW9uIDEKIAotR2VuZXJhdGVkIGZyb20gU2FwOkNvZGV3YXJyaW9yNzpNZXRyb3dlcmtzIENvZGVXYXJyaW9yOkNvZGVXYXJyaW9yIElERSAxLjMKK0dlbmVyYXRlZCBmcm9tIGZsYXA6Q1c5IEdvbGQ6TWV0cm93ZXJrcyBDb2RlV2FycmlvcjpDb2RlV2FycmlvciBJREUgMS42LjMKIEFFVEUvQUVVVCByZXNvdXJjZSB2ZXJzaW9uIDEvMCwgbGFuZ3VhZ2UgMCwgc2NyaXB0IDAKICIiIgogCkBAIC0yMyw2ICsyMyw4IEBACiAJJ2RlZmluaXRpb24nIDogJ0VyRGYnLAkjIAogCSdsaW5rZXJfZXJyb3InIDogJ0VyTEUnLAkjIAogCSdsaW5rZXJfd2FybmluZycgOiAnRXJMVycsCSMgCisJJ2ZpbmRfcmVzdWx0JyA6ICdFckZuJywJIyAKKwknYnJvd3Nlcl9lcnJvcicgOiAnRXJCcicsCSMgCiB9CiAKIF9FbnVtX01vZGUgPSB7CkBAIC00Miw4ICs0NCwxMyBAQAogCiBfRW51bV9QUHJtID0gewogCSdhYnNvbHV0ZScgOiAnQWJzbycsCSMgQW4gYWJzb2x1dGUgcGF0aCBuYW1lLCBpbmNsdWRpbmcgdm9sdW1lIG5hbWUuCi0JJ3Byb2plY3RfcmVsYXRpdmUnIDogJ1BSZWwnLAkjIEEgcGF0aCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwcm9qZWN01XMgZm9sZGVyLgotCSdzaGVsbF9yZWxhdGl2ZScgOiAnU1JlbCcsCSMgQSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBDb2RlV2FycmlvcqogZm9sZGVyLgorCSdwcm9qZWN0X3JlbGF0aXZlJyA6ICdQUmVsJywJIyBBIHBhdGggcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcHJvamVjdLlzIGZvbGRlci4KKwknc2hlbGxfcmVsYXRpdmUnIDogJ1NSZWwnLAkjIEEgcGF0aCByZWxhdGl2ZSB0byB0aGUgQ29kZVdhcnJpb3KBIGZvbGRlci4KK30KKworX0VudW1fUmVmUCA9IHsKKwknVGhpbmtfUmVmZXJlbmNlJyA6ICdEYW5SJywJIyAKKwknUXVpY2tWaWV3JyA6ICdBTFRWJywJIyAKIH0KIAogY2xhc3MgTWV0cm93ZXJrc19TaGVsbF9TdWl0ZToKQEAgLTY5LDcgKzc2LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTk1LDcgKzEwMiw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0xMTQsNyArMTIxLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTE0MCw3ICsxNDcsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMTY2LDcgKzE3Myw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0xOTEsNyArMTk4LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTIxMiw3ICsyMTksNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMjMyLDcgKzIzOSw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yNTksNyArMjY2LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTI4NSw3ICsyOTIsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMzA1LDcgKzMxMiw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0zMjUsNyArMzMyLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTM0NSw3ICszNTIsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMzY1LDcgKzM3Miw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0zODYsNyArMzkzLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTQxMSw3ICs0MTgsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtNDM5LDcgKzQ0NiwzMyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJX2FyZ21hcF9QcmVwcm9jZXNzID0geworCQknRXh0ZXJuYWxFZGl0b3InIDogJ0VycnMnLAorCX0KKworCWRlZiBQcmVwcm9jZXNzKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJQcmVwcm9jZXNzOiBQcmVwcm9jZXNzZXMgdGhlIHNwZWNpZmllZCBmaWxlKHMpCisJCVJlcXVpcmVkIGFyZ3VtZW50OiB1bmRvY3VtZW50ZWQsIHR5cGVjb2RlICdhbGlzJworCQlLZXl3b3JkIGFyZ3VtZW50IEV4dGVybmFsRWRpdG9yOiB1bmRvY3VtZW50ZWQsIHR5cGVjb2RlICdib29sJworCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IEVycm9ycyBmb3IgZWFjaCBwcmVwcm9jZXNzZWQgZmlsZQorCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnUHJlUCcKKworCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9QcmVwcm9jZXNzKQorCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC00NTgsNyArNDkxLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTQ3OSw3ICs1MTIsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtNDk4LDcgKzUzMSw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC01MjUsNyArNTU4LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTU0NSw3ICs1NzgsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtNTcxLDcgKzYwNCw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC01OTcsNyArNjMwLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTYyMiw3ICs2NTUsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtNjQ3LDcgKzY4MCw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC02NjgsNyArNzAxLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTY5Myw3ICs3MjYsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtNzA5LDEyICs3NDIsNDUgQEAKICMgICAgICAgIHByb3BlcnR5ICdtb2RlJyAoJ01vZGUnKSAnTW9kZScgLS0gJ1RoZSBkb2N1bWVudFwzMjVzIG9wZW4gbW9kZScgW2VudW1dCiAjICAgICAgICBwcm9wZXJ0eSAnZGlzayBmaWxlJyAoJ2ZpbGUnKSAnZnNzICcgLS0gJ1RoZSBkb2N1bWVudFwzMjVzIGxvY2F0aW9uIG9uIGRpc2snIFtdCiAKKyMgICAgQ2xhc3MgJ0VkaXRvcicgKCdFRFRSJykgLS0gJycKKyMgICAgICAgIHByb3BlcnR5ICdTeW50YXggY29sb3JpbmcnICgnRUQwMScpICdib29sJyAtLSAnTWFyayBrZXl3b3JkcyBhbmQgY29tbWVudHMgd2l0aCBjb2xvci4nIFttdXRhYmxlXQorIyAgICAgICAgcHJvcGVydHkgJ1RleHQgY29sb3InICgnRUQwMicpICdjUkdCJyAtLSAnVGhlIGNvbG9yIGZvciBvcmRpbmFyeSB0ZXh0LicgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnQ29tbWVudCBjb2xvcicgKCdFRDAzJykgJ2NSR0InIC0tICdUaGUgY29sb3IgZm9yIGNvbW1lbnRzLicgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnS2V5d29yZCBjb2xvcicgKCdFRDA0JykgJ2NSR0InIC0tICdUaGUgY29sb3IgZm9yIGxhbmd1YWdlIGtleXdvcmRzLicgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnU3RyaW5nIGNvbG9yJyAoJ0VEMDUnKSAnY1JHQicgLS0gJ1RoZSBjb2xvciBmb3Igc3RyaW5ncy4nIFttdXRhYmxlXQorIyAgICAgICAgcHJvcGVydHkgJ0N1c3RvbSBjb2xvcicgKCdFRDA2JykgJ2NSR0InIC0tICdUaGUgY29sb3IgZm9yIGN1c3RvbSBrZXl3b3Jkcy4nIFttdXRhYmxlXQorIyAgICAgICAgcHJvcGVydHkgJ0ZsYXNoIGRlbGF5JyAoJ0VEMDcnKSAnbG9uZycgLS0gJ1RoZSBhbW91bnQgb2YgdGltZSwgaW4gc2l4dGlldGhzIG9mIGEgc2Vjb25kLCB0aGUgZWRpdG9yIGhpZ2hsaWdodHMgYSBtYXRjaGluZyBicmFja2V0LicgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnRHluYW1pYyBzY3JvbGwnICgnRUQwOCcpICdib29sJyAtLSAnRGlzcGxheSBhIHdpbmRvd1wzMjVzIGNvbnRlbnRzIGFzIHlvdSBtb3ZlIHRoZSBzY3JvbGwgYm94LicgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnQmFsYW5jZScgKCdFRDA5JykgJ2Jvb2wnIC0tICdGbGFzaCB0aGUgbWF0Y2hpbmcgb3BlbmluZyBicmFja2V0IHdoZW4geW91IHR5cGUgYSBjbG9zaW5nIGJyYWNrZXQuJyBbbXV0YWJsZV0KKyMgICAgICAgIHByb3BlcnR5ICdSZW1lbWJlciBmb250JyAoJ0VEMTAnKSAnYm9vbCcgLS0gJ0Rpc3BsYXkgYSBzb3VyY2UgZmlsZSB3aXRoIGl0cyBvd24gZm9udCBzZXR0aW5ncy4nIFttdXRhYmxlXQorIyAgICAgICAgcHJvcGVydHkgJ1JlbWVtYmVyIHdpbmRvdycgKCdFRDExJykgJ2Jvb2wnIC0tICdSZXN0b3JlIHRoZSBsYXN0IHNpemUgYW5kIHBvc2l0aW9uIGZvciBhIHNvdXJjZSBmaWxlIHdpbmRvdyB3aGVuIHlvdSBvcGVuIGl0LicgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnUmVtZW1iZXIgc2VsZWN0aW9uJyAoJ0VEMTInKSAnYm9vbCcgLS0gJ1Jlc3RvcmUgdGhlIHByZXZpb3VzIHNlbGVjdGlvbiBpbiBhIGZpbGUgd2hlbiB5b3Ugb3BlbiBpdC4nIFttdXRhYmxlXQorIyAgICAgICAgcHJvcGVydHkgJ1NhdmUgb24gdXBkYXRlJyAoJ0VEMTMnKSAnYm9vbCcgLS0gJ1NhdmUgYWxsIGVkaXRvciB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2hlbiB5b3UgY2hvb3NlIHRoZSBVcGRhdGUgY29tbWFuZC4nIFttdXRhYmxlXQorIyAgICAgICAgcHJvcGVydHkgJ1Byb2plY3RvciBhd2FyZScgKCdFRDE0JykgJ2Jvb2wnIC0tICJIb25vciBNUFcgUHJvamVjdG9yXDMyNXMgJ0NLSUQnIHJlc291cmNlcyBpbiB0ZXh0IGZpbGVzLiIgW211dGFibGVdCisKICMgICAgQ2xhc3MgJ0Vycm9yIEluZm9ybWF0aW9uJyAoJ0Vyck0nKSAtLSAnRGVzY3JpYmVzIGEgc2luZ2xlIGVycm9yIG9yIHdhcm5pbmcgZnJvbSB0aGUgY29tcGlsZXIgb3IgdGhlIGxpbmtlci4nCiAjICAgICAgICBwcm9wZXJ0eSAna2luZCcgKCdFcnJUJykgJ0VyclQnIC0tICdUaGUgdHlwZSBvZiBlcnJvciBvciB3YXJuaW5nLicgW2VudW1dCiAjICAgICAgICBwcm9wZXJ0eSAnbWVzc2FnZScgKCdFcnJTJykgJ1RFWFQnIC0tICdUaGUgZXJyb3Igb3Igd2FybmluZyBtZXNzYWdlLicgW10KICMgICAgICAgIHByb3BlcnR5ICdkaXNrIGZpbGUnICgnZmlsZScpICdmc3MgJyAtLSAnVGhlIGZpbGUgd2hlcmUgdGhlIGVycm9yIG9jY3VycmVkLiAgTWF5IG5vdCBiZSByZXR1cm5lZCBmb3IgY2VydGFpbiBraW5kcyBvZiBlcnJvcnMgKGVnLCBsaW5rIGVycm9ycykuJyBbXQogIyAgICAgICAgcHJvcGVydHkgJ2xpbmUnICgnRXJyTCcpICdsb25nJyAtLSAnVGhlIGxpbmUgaW4gdGhlIGZpbGUgd2hlcmUgdGhlIGVycm9yIG9jY3VycmVkLiAgTWF5IG5vdCBiZSByZXR1cm5lZCBmb3IgY2VydGFpbiBraW5kcyBvZiBlcnJvcnMgKGVnLCBsaW5rIGVycm9ycykuJyBbXQogCisjICAgIENsYXNzICdFeHRyYXMnICgnRVhUUicpIC0tICcnCisjICAgICAgICBwcm9wZXJ0eSAnQ29tcGxldGlvbiBzb3VuZCcgKCdFWDAxJykgJ2Jvb2wnIC0tICdQbGF5IGEgc291bmQgd2hlbiBmaW5pc2hlZCBhIEJyaW5nIFVwIFRvIERhdGUgb3IgTWFrZSBjb21tYW5kLicgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnU3VjY2VzcyBzb3VuZCcgKCdFWDAyJykgJ1RFWFQnIC0tICdUaGUgc291bmQgQ29kZVdhcnJpb3IgcGxheXMgd2hlbiBpdCBzdWNjZXNzZnVsbHkgZmluaXNoZXMgYSBCcmluZyBVcCBUbyBEYXRlIG9yIE1ha2UgY29tbWFuZC4nIFttdXRhYmxlXQorIyAgICAgICAgcHJvcGVydHkgJ0ZhaWx1cmUgc291bmQnICgnRVgwMycpICdURVhUJyAtLSAnVGhlIHNvdW5kIENvZGVXYXJyaW9yIHBsYXlzIHdoZW4gaXQgY2Fubm90IGZpbmlzaCBhIEJyaW5nIFVwIFRvIERhdGUgb3IgTWFrZSBjb21tYW5kLicgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnTW9kaWZpY2F0aW9uIGRhdGUgY2FjaGluZycgKCdFWDA0JykgJ2Jvb2wnIC0tICcnIFttdXRhYmxlXQorIyAgICAgICAgcHJvcGVydHkgJ0dlbmVyYXRlIE1hcCcgKCdFWDA1JykgJ2Jvb2wnIC0tICdHZW5lcmF0ZSBhIFBhc2NhbCBNYWtlIG1hcCBmaWxlLicgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnU3RvcmUgYW5hbHlzaXMgcmVzdWx0cycgKCdFWDA2JykgJ2Jvb2wnIC0tICcnIFttdXRhYmxlXQorIyAgICAgICAgcHJvcGVydHkgJ0Z1bGwgc2NyZWVuIHpvb20nICgnRVgwNycpICdib29sJyAtLSAnWm9vbSB3aW5kb3dzIHRvIHRoZSBmdWxsIHNjcmVlbiB3aWR0aC4nIFttdXRhYmxlXQorIyAgICAgICAgcHJvcGVydHkgJ0V4dGVybmFsIHJlZmVyZW5jZScgKCdFWDA4JykgJ1JlZlAnIC0tICdXaGljaCBvbi1saW5lIGZ1bmN0aW9uIHJlZmVyZW5jZSB0byB1c2UuJyBbbXV0YWJsZSBlbnVtXQorIyAgICAgICAgcHJvcGVydHkgJ0Jyb3dzZXIgYWN0aXZlJyAoJ0VYMDknKSAnYm9vbCcgLS0gJ0FsbG93IHRoZSBjb2xsZWN0aW9uIG9mIGJyb3dzZXIgaW5mb3JtYXRpb24uJyBbbXV0YWJsZV0KKworIyAgICBDbGFzcyAnRm9udCcgKCdtRk5UJykgLS0gJycKKyMgICAgICAgIHByb3BlcnR5ICdBdXRvIGluZGVudCcgKCdGTjAxJykgJ2Jvb2wnIC0tICdJbmRlbnQgbmV3IGxpbmVzIGF1dG9tYXRpY2FsbHkuJyBbbXV0YWJsZV0KKyMgICAgICAgIHByb3BlcnR5ICdUYWIgc2l6ZScgKCdGTjAyJykgJ3Nob3InIC0tICcnIFtdCisjICAgICAgICBwcm9wZXJ0eSAnVGV4dCBmb250JyAoJ3B0eGYnKSAnVEVYVCcgLS0gJ1RoZSBmb250IHVzZWQgaW4gZWRpdGluZyB3aW5kb3dzLicgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnVGV4dCBzaXplJyAoJ3B0cHMnKSAnc2hvcicgLS0gJ1RoZSBzaXplIG9mIHRoZSB0ZXh0IGluIGFuIGVkaXRpbmcgd2luZG93LicgW211dGFibGVdCisKICMgICAgQ2xhc3MgJ0Z1bmN0aW9uIEluZm9ybWF0aW9uJyAoJ0ZEZWYnKSAtLSAnRGVzY3JpYmVzIHRoZSBsb2NhdGlvbiBvZiBhbnkgZnVuY3Rpb24gb3IgZ2xvYmFsIGRhdGEgZGVmaW5pdGlvbiB3aXRoaW4gdGhlIGN1cnJlbnQgcHJvamVjdC4nCiAjICAgICAgICBwcm9wZXJ0eSAnZGlzayBmaWxlJyAoJ2ZpbGUnKSAnZnNzICcgLS0gJ1RoZSBsb2NhdGlvbiBvbiBkaXNrIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGRlZmluaXRpb24uJyBbXQogIyAgICAgICAgcHJvcGVydHkgJ2xpbmUnICgnRXJyTCcpICdsb25nJyAtLSAnVGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBkZWZpbml0aW9uIGJlZ2lucy4nIFtdCkBAIC03MzMsNiArNzk5LDcgQEAKICMgICAgICAgIHByb3BlcnR5ICd1cCB0byBkYXRlJyAoJ1VwVEQnKSAnYm9vbCcgLS0gJ0hhcyB0aGUgZmlsZSBiZWVuIGNvbXBpbGVkIHNpbmNlIGl0cyBsYXN0IG1vZGlmaWNhdGlvbiA/JyBbXQogIyAgICAgICAgcHJvcGVydHkgJ3N5bWJvbHMnICgnU3ltRycpICdib29sJyAtLSAnQXJlIGRlYnVnZ2luZyBzeW1ib2xzIGdlbmVyYXRlZCBmb3IgdGhpcyBmaWxlID8nIFttdXRhYmxlXQogIyAgICAgICAgcHJvcGVydHkgJ3dlYWsgbGluaycgKCdXZWFrJykgJ2Jvb2wnIC0tICdJcyB0aGlzIGZpbGUgaW1wb3J0ZWQgd2Vha2x5IGludG8gdGhlIHByb2plY3QgPyBbUG93ZXJQQyBvbmx5XScgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnaW5pdGlhbGl6ZSBiZWZvcmUnICgnQmZvcicpICdib29sJyAtLSAnSW50aWFpbGl6ZSB0aGUgc2hhcmVkIGxpYnJhcnkgYmVmb3JlIHRoZSBtYWluIGFwcGxpY2F0aW9uLicgW211dGFibGVdCiAKICMgICAgQ2xhc3MgJ1NlZ21lbnQnICgnU2VnICcpIC0tICdBIHNlZ21lbnQgb3IgZ3JvdXAgaW4gdGhlIHByb2plY3QnCiAjICAgICAgICBwcm9wZXJ0eSAnbmFtZScgKCdwbmFtJykgJ1RFWFQnIC0tICcnIFttdXRhYmxlXQpAQCAtNzQ1LDMgKzgxMiwxMyBAQAogCiAjICAgIENsYXNzICdUYXJnZXQnICgnVEFSRycpIC0tICdDb250YWlucyB0aGUgZGVmaW5pdGlvbnMgb2YgYSBwcm9qZWN0XDMyNXMgdGFyZ2V0LicKICMgICAgICAgIHByb3BlcnR5ICdDdXJyZW50IFRhcmdldCcgKCdUQTAxJykgJ1RFWFQnIC0tICdUaGUgbmFtZSBvZiB0aGUgY3VycmVudCB0YXJnZXQuJyBbbXV0YWJsZV0KKyMgICAgICAgIHByb3BlcnR5ICdNYXBwaW5ncycgKCdUQTA4JykgJ1RJbmYnIC0tICcnIFttdXRhYmxlIGxpc3RdCisKKyMgICAgQ2xhc3MgJ1RhcmdldCBJbmZvcm1hdGlvbicgKCdUSW5mJykgLS0gJycKKyMgICAgICAgIHByb3BlcnR5ICdGaWxlIFR5cGUnICgnUFIwNCcpICdURVhUJyAtLSAnJyBbbXV0YWJsZV0KKyMgICAgICAgIHByb3BlcnR5ICdFeHRlbnNpb24nICgnVEEwMicpICdURVhUJyAtLSAnJyBbbXV0YWJsZV0KKyMgICAgICAgIHByb3BlcnR5ICdQcmVjb21waWxlZCcgKCdUQTAzJykgJ2Jvb2wnIC0tICcnIFttdXRhYmxlXQorIyAgICAgICAgcHJvcGVydHkgJ1Jlc291cmNlIEZpbGUnICgnVEEwNCcpICdib29sJyAtLSAnJyBbbXV0YWJsZV0KKyMgICAgICAgIHByb3BlcnR5ICdMYXVuY2hhYmxlJyAoJ1RBMDUnKSAnYm9vbCcgLS0gJycgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnSWdub3JlZCBieSBNYWtlJyAoJ1RBMDYnKSAnYm9vbCcgLS0gJycgW211dGFibGVdCisjICAgICAgICBwcm9wZXJ0eSAnQ29tcGlsZXInICgnVEEwNycpICdURVhUJyAtLSAnJyBbbXV0YWJsZV0KZGlmZiAtLWdpdCBhL01hYy9MaWIvdG9vbGJveC9SZXF1aXJlZF9TdWl0ZS5weSBiL01hYy9MaWIvdG9vbGJveC9SZXF1aXJlZF9TdWl0ZS5weQppbmRleCA2NzE0NWI3Li4xYjI3YjZhIDEwMDY0NAotLS0gYS9NYWMvTGliL3Rvb2xib3gvUmVxdWlyZWRfU3VpdGUucHkKKysrIGIvTWFjL0xpYi90b29sYm94L1JlcXVpcmVkX1N1aXRlLnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiU3VpdGUgUmVxdWlyZWQgU3VpdGU6IFRlcm1zIHRoYXQgZXZlcnkgYXBwbGljYXRpb24gc2hvdWxkIHN1cHBvcnQKIExldmVsIDEsIHZlcnNpb24gMQogCi1HZW5lcmF0ZWQgZnJvbSBNb2VzOlN5c3RlbSBmb2xkZXI6RXh0ZW5zaW9uczpTY3JpcHRpbmcgQWRkaXRpb25zOkRpYWxlY3RzOkVuZ2xpc2ggRGlhbGVjdAorR2VuZXJhdGVkIGZyb20gZmxhcDpTeXN0ZWVtbWFwOkV4dGVuc2llczpTY3JpcHQtZXh0cmEnczpEaWFsZWN0ZW46RW5nZWxzIGRpYWxlY3QKIEFFVEUvQUVVVCByZXNvdXJjZSB2ZXJzaW9uIDEvMCwgbGFuZ3VhZ2UgMCwgc2NyaXB0IDAKICIiIgogCkBAIC0yNyw3ICsyNyw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC00Nyw3ICs0Nyw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC02Niw3ICs2Niw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC04NSw3ICs4NSw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCmRpZmYgLS1naXQgYS9NYWMvTGliL3Rvb2xib3gvU3RhbmRhcmRfU3VpdGUucHkgYi9NYWMvTGliL3Rvb2xib3gvU3RhbmRhcmRfU3VpdGUucHkKaW5kZXggMGZkZDdiMi4uZDMwZTFkYyAxMDA2NDQKLS0tIGEvTWFjL0xpYi90b29sYm94L1N0YW5kYXJkX1N1aXRlLnB5CisrKyBiL01hYy9MaWIvdG9vbGJveC9TdGFuZGFyZF9TdWl0ZS5weQpAQCAtMSw3ICsxLDcgQEAKICIiIlN1aXRlIFN0YW5kYXJkIFN1aXRlOiBDb21tb24gdGVybXMgZm9yIG1vc3QgYXBwbGljYXRpb25zCiBMZXZlbCAxLCB2ZXJzaW9uIDEKIAotR2VuZXJhdGVkIGZyb20gTW9lczpTeXN0ZW0gZm9sZGVyOkV4dGVuc2lvbnM6U2NyaXB0aW5nIEFkZGl0aW9uczpEaWFsZWN0czpFbmdsaXNoIERpYWxlY3QKK0dlbmVyYXRlZCBmcm9tIGZsYXA6U3lzdGVlbW1hcDpFeHRlbnNpZXM6U2NyaXB0LWV4dHJhJ3M6RGlhbGVjdGVuOkVuZ2VscyBkaWFsZWN0CiBBRVRFL0FFVVQgcmVzb3VyY2UgdmVyc2lvbiAxLzAsIGxhbmd1YWdlIDAsIHNjcmlwdCAwCiAiIiIKIApAQCAtNTEsNyArNTEsNyBAQAogCQlSZXF1aXJlZCBhcmd1bWVudDogdGhlIG9iamVjdCBjbGFzcyBhYm91dCB3aGljaCBpbmZvcm1hdGlvbiBpcyByZXF1ZXN0ZWQKIAkJS2V5d29yZCBhcmd1bWVudCBfaW46IHRoZSBodW1hbiBsYW5ndWFnZSBhbmQgc2NyaXB0IHN5c3RlbSBpbiB3aGljaCB0byByZXR1cm4gaW5mb3JtYXRpb24KIAkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQlSZXR1cm5zOiBhIHJlY29yZCBjb250YWluaW5nIHRoZSBvYmplY3TVcyBwcm9wZXJ0aWVzIGFuZCBlbGVtZW50cworCQlSZXR1cm5zOiBhIHJlY29yZCBjb250YWluaW5nIHRoZSBvYmplY3S5cyBwcm9wZXJ0aWVzIGFuZCBlbGVtZW50cwogCQkiIiIKIAkJX2NvZGUgPSAnY29yZScKIAkJX3N1YmNvZGUgPSAncW9iaicKQEAgLTYzLDcgKzYzLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTkxLDcgKzkxLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTExNyw3ICsxMTcsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMTQzLDcgKzE0Myw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0xNjMsNyArMTYzLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTE4OSw3ICsxODksNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMjE1LDcgKzIxNSw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yMzYsNyArMjM2LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTI2Nyw3ICsyNjcsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMjkzLDcgKzI5Myw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0zMTMsNyArMzEzLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTMzMyw3ICszMzMsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMzU4LDcgKzM1OCw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0zODUsNyArMzg1LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTQxMSw3ICs0MTEsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpkaWZmIC0tZ2l0IGEvTWFjL0xpYi90b29sYm94L1N0YW5kYXJkX1VSTF9zdWl0ZS5weSBiL01hYy9MaWIvdG9vbGJveC9TdGFuZGFyZF9VUkxfc3VpdGUucHkKaW5kZXggZjk5N2M5MS4uYjkxMDhmNCAxMDA2NDQKLS0tIGEvTWFjL0xpYi90b29sYm94L1N0YW5kYXJkX1VSTF9zdWl0ZS5weQorKysgYi9NYWMvTGliL3Rvb2xib3gvU3RhbmRhcmRfVVJMX3N1aXRlLnB5CkBAIC00LDcgKzQsNyBAQAogCiBMZXZlbCAxLCB2ZXJzaW9uIDEKIAotR2VuZXJhdGVkIGZyb20gZmxhcDpQcm9ncmFtbWEnczpOZXRzY2FwZSAyLjBiNSBGb2xkZXI6TmV0c2NhcGUgMi4wYjUKK0dlbmVyYXRlZCBmcm9tIGZsYXA6UHJvZ3JhbW1hJ3M6TmV0c2NhcGUgTmF2aWdhdG9ygSBGb2xkZXI6TmV0c2NhcGUgTmF2aWdhdG9ygSAzLjAKIEFFVEUvQUVVVCByZXNvdXJjZSB2ZXJzaW9uIDEvMCwgbGFuZ3VhZ2UgMCwgc2NyaXB0IDAKICIiIgogCkBAIC00MCw3ICs0MCw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCmRpZmYgLS1naXQgYS9NYWMvTGliL3Rvb2xib3gvV1dXX1N1aXRlLnB5IGIvTWFjL0xpYi90b29sYm94L1dXV19TdWl0ZS5weQppbmRleCBlMTRkNDFmLi4wMWJhMzlmIDEwMDY0NAotLS0gYS9NYWMvTGliL3Rvb2xib3gvV1dXX1N1aXRlLnB5CisrKyBiL01hYy9MaWIvdG9vbGJveC9XV1dfU3VpdGUucHkKQEAgLTEsNyArMSw3IEBACiAiIiJTdWl0ZSBXb3JsZFdpZGVXZWIgc3VpdGUsIGFzIGRlZmluZWQgaW4gU3B5Z2xhc3Mgc3BlYy46IAogTGV2ZWwgMSwgdmVyc2lvbiAxCiAKLUdlbmVyYXRlZCBmcm9tIGZsYXA6UHJvZ3JhbW1hJ3M6TmV0c2NhcGUgMi4wYjUgRm9sZGVyOk5ldHNjYXBlIDIuMGI1CitHZW5lcmF0ZWQgZnJvbSBmbGFwOlByb2dyYW1tYSdzOk5ldHNjYXBlIE5hdmlnYXRvcoEgRm9sZGVyOk5ldHNjYXBlIE5hdmlnYXRvcoEgMy4wCiBBRVRFL0FFVVQgcmVzb3VyY2UgdmVyc2lvbiAxLzAsIGxhbmd1YWdlIDAsIHNjcmlwdCAwCiAiIiIKIApAQCAtNDMsNyArNDMsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtNzMsNyArNzMsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtOTksNyArOTksNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMTI0LDcgKzEyNCw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0xNDUsNyArMTQ1LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTE2NSw3ICsxNjUsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMTg1LDcgKzE4NSw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yMDYsNyArMjA2LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTIyNiw3ICsyMjYsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMjQ2LDcgKzI0Niw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0yNzQsNyArMjc0LDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTMwMCw3ICszMDAsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtMzI2LDcgKzMyNiw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCkBAIC0zNTIsNyArMzUyLDcgQEAKIAkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCiAJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgTWFjT1MuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKIAkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KQEAgLTM3OCw3ICszNzgsNyBAQAogCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKIAkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBNYWNPUy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQogCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQpAQCAtNDA0LDcgKzQwNCw3IEBACiAJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAogCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIE1hY09TLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCiAJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCg==