博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RCTF crypto100(1)
阅读量:6147 次
发布时间:2019-06-21

本文共 33930 字,大约阅读时间需要 113 分钟。

题面是一个文件,里面是用base64加密的字符串,如下所示:

IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN=IyAJCQkJRG9jdW1lbnRhdGlvbgkJCQkgICAgI0==IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyO=IyBBdXRob3I6ICAgVG9kZCBXaGl0ZW1hbk==IyBEYXRlOiAgICAgN3RoIE1heSwgMjAwM/==IyBWZXJpb246ICAgMS4xIyBIb21lcGFnZTogaHR0cDovL2hvbWUucGFjaWZpYy5uZXQuYXUvfnR3aGl0ZW1hL2Rlcy5odG1sI0==IyBNb2RpZmljYXRpb25zIHRvIDNkZXMgQ0JDIGNvZGUgYnkgTWF0dCBKb2huc3RvbiAyMDA0IDxtYXR0IGF0IHVjYyBhc24gYXU+I5==IyBUaGlzIGFsZ29yaXRobSBpcyBhIHB1cmUgcHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRoZSBERVMgYWxnb3JpdGhtLl==IyBJdCBpcyBpbiBwdXJlIHB5dGhvbiB0byBhdm9pZCBwb3J0YWJpbGl0eSBpc3N1ZXMsIHNpbmNlIG1vc3QgREVTID==IyBpbXBsZW1lbnRhdGlvbnMgYXJlIHByb2dyYW1tZWQgaW4gQyAoZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMpLn==I7==IyBUcmlwbGUgREVTIGNsYXNzIGlzIGFsc28gaW1wbGVtZW50ZWQsIHV0aWxpc2luZyB0aGUgREVTIGJhc2UuIFRyaXBsZSBERVN=IyBpcyBlaXRoZXIgREVTLUVERTMgd2l0aCBhIDI0IGJ5dGUga2V5LCBvciBERVMtRURFMiB3aXRoIGEgMTYgYnl0ZSBrZXkuI4==IyBTZWUgdGhlIFJFQURNRS50eHQgdGhhdCBzaG91bGQgY29tZSB3aXRoIHRoaXMgcHl0aG9uIG1vZHVsZSBmb3IgdGhlIyBpbXBsZW1lbnRhdGlvbiBtZXRob2RzIHVzZWQuIiIiQSBwdXJlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgREVTIGFuZCBUUklQTEUgREVTIGVuY3J5cHRpb24gYWxnb3JpdGhtc5==cHlEZXMuZGVzKGtleSwgW21vZGVdLCBbSVZdKY==cHlEZXMudHJpcGxlX2RlcyhrZXksIFttb2RlXSwgW0lWXSl=a2V5ICAtPiBTdHJpbmcgY29udGFpbmluZyB0aGUgZW5jcnlwdGlvbiBrZXkuIDggYnl0ZXMgZm9yIERFUywgMTYgb3IgMjQgYnl0ZXN=CWZvciBUcmlwbGUgREVTbW9kZSAtPiBPcHRpb25hbCBhcmd1bWVudCBmb3IgZW5jcnlwdGlvbiB0eXBlLCBjYW4gYmUgZWl0aGVyICAgICAgICBweURlcy5FQ0IgKEVsZWN0cm9uaWMgQ29kZSBCb29rKSBvciBweURlcy5DQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZyn=SVYgICAtPiBPcHRpb25hbCBhcmd1bWVudCwgbXVzdCBiZSBzdXBwbGllZCBpZiB1c2luZyBDQkMgbW9kZS4gTXVzdCBiZSA4IGJ5dGVzRXhhbXBsZTo=ZnJvbSBweURlcyBpbXBvcnQgKt==ZGF0YSA9ICJQbGVhc2UgZW5jcnlwdCBteSBzdHJpbmciayA9IGRlcygiREVTQ1JZUFQiLCAiICIsIENCQywgIlwwXDBcMFwwXDBcMFwwXDAiKZ==ZCA9IGsuZW5jcnlwdChkYXRhKV==cHJpbnQgIkVuY3lwdGVkIHN0cmluZzogIiArIGR=cHJpbnQgIkRlY3lwdGVkIHN0cmluZzogIiArIGsuZGVjcnlwdChkKf==U2VlIHRoZSBtb2R1bGUgc291cmNlIChweURlcy5weSkgZm9yIG1vcmUgZXhhbXBsZXMgb2YgdXNlLk==WW91IGNhbiBzbG8gcnVuIHRoZSBweURlcy5weSBmaWxlIHdpdGhvdXQgYW5kIGFyZ3VtZW50cyB0byBzZWUgYSBzaW1wbGUgdGVzdC5=Tm90ZTogVGhpcyBjb2RlIHdhcyBub3Qgd3JpdHRlbiBmb3IgaGlnaC1lbmQgc3lzdGVtcyBuZWVkaW5nIGEgZmFzdN==ICAgICAgaW1wbGVtZW50YXRpb24sIGJ1dCByYXRoZXIgYSBoYW5keSBwb3J0YWJsZSBzb2x1dGlvbiB3aXRoIHNtYWxsIHVzYWdlLg==IiIiIyBNb2RlcyBvZiBjcnlwdGluZyAvIGN5cGhlcmluZ1==RUNCID0JMH==Q0JDID0JMd==IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyO=IyAJCQkJICAgIERFUwkJCQkJICAgICM=IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyP=Y2xhc3MgZGVzOm==CSIiIkRFUyBlbmNyeXB0aW9uL2RlY3J5dHBpb24gY2xhc3M=CVN1cHBvcnRzIEVDQiAoRWxlY3Ryb25pYyBDb2RlIEJvb2spIGFuZCBDQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZykgbW9kZXMuCXB5RGVzLmRlcyhrZXksW21vZGVdLCBbSVZdKV==CWtleSAgLT4gVGhlIGVuY3J5cHRpb24ga2V5IHN0cmluZywgbXVzdCBiZSBleGFjdGx5IDggYnl0ZXM=CW1vZGUgLT4gT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gdHlwZSwgY2FuIGJlIGVpdGhlciBweURlcy5FQ0L=CQkoRWxlY3Ryb25pYyBDb2RlIEJvb2spLCBweURlcy5DQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZym=CUlWICAgLT4gT3B0aW9uYWwgc3RyaW5nIGFyZ3VtZW50LCBtdXN0IGJlIHN1cHBsaWVkIGlmIHVzaW5nIENCQyBtb2RlLl==CQlNdXN0IGJlIDggYnl0ZXMgaW4gbGVuZ3RoLv==CSIiIm==CSMgUGVybXV0YXRpb24gYW5kIHRyYW5zbGF0aW9uIHRhYmxlcyBmb3IgREVTCV9fcGMxID0gWzU2LCA0OCwgNDAsIDMyLCAyNCwgMTYsICA4LC==CQkgIDAsIDU3LCA0OSwgNDEsIDMzLCAyNSwgMTcsCQkgIDksICAxLCA1OCwgNTAsIDQyLCAzNCwgMjYsCQkgMTgsIDEwLCAgMiwgNTksIDUxLCA0MywgMzUsCQkgNjIsIDU0LCA0NiwgMzgsIDMwLCAyMiwgMTQsCQkgIDYsIDYxLCA1MywgNDUsIDM3LCAyOSwgMjEsCQkgMTMsICA1LCA2MCwgNTIsIDQ0LCAzNiwgMjgsCQkgMjAsIDEyLCAgNCwgMjcsIDE5LCAxMSwgIDM=CV3=CSMgbnVtYmVyIGxlZnQgcm90YXRpb25zIG9mIHBjMT==CV9fbGVmdF9yb3RhdGlvbnMgPSBbCQkxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAxCV1=CSMgcGVybXV0ZWQgY2hvaWNlIGtleSAodGFibGUgMil=CV9fcGMyID0gW/==CQkxMywgMTYsIDEwLCAyMywgIDAsICA0LG==CQkgMiwgMjcsIDE0LCAgNSwgMjAsICA5LE==CQkyMiwgMTgsIDExLCAgMywgMjUsICA3LD==CQkxNSwgIDYsIDI2LCAxOSwgMTIsICAxLB==CQk0MCwgNTEsIDMwLCAzNiwgNDYsIDU0LG==CQkyOSwgMzksIDUwLCA0NCwgMzIsIDQ3LG==CQk0MywgNDgsIDM4LCA1NSwgMzMsIDUyLG==CQk0NSwgNDEsIDQ5LCAzNSwgMjgsIDMxCV1=CSMgaW5pdGlhbCBwZXJtdXRhdGlvbiBJUJ==CV9faXAgPSBbNTcsIDQ5LCA0MSwgMzMsIDI1LCAxNywgOSwgIDEsCQk1OSwgNTEsIDQzLCAzNSwgMjcsIDE5LCAxMSwgMyy=CQk2MSwgNTMsIDQ1LCAzNywgMjksIDIxLCAxMywgNSx=CQk2MywgNTUsIDQ3LCAzOSwgMzEsIDIzLCAxNSwgNyx=CQk1NiwgNDgsIDQwLCAzMiwgMjQsIDE2LCA4LCAgMCx=CQk1OCwgNTAsIDQyLCAzNCwgMjYsIDE4LCAxMCwgMix=CQk2MCwgNTIsIDQ0LCAzNiwgMjgsIDIwLCAxMiwgNCw=CQk2MiwgNTQsIDQ2LCAzOCwgMzAsIDIyLCAxNCwgNo==CV3=CSMgRXhwYW5zaW9uIHRhYmxlIGZvciB0dXJuaW5nIDMyIGJpdCBibG9ja3MgaW50byA0OCBiaXRzCV9fZXhwYW5zaW9uX3RhYmxlID0gWz==CQkzMSwgIDAsICAxLCAgMiwgIDMsICA0LG==CQkgMywgIDQsICA1LCAgNiwgIDcsICA4LO==CQkgNywgIDgsICA5LCAxMCwgMTEsIDEyLF==CQkxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LE==CQkxNSwgMTYsIDE3LCAxOCwgMTksIDIwLH==CQkxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LN==CQkyMywgMjQsIDI1LCAyNiwgMjcsIDI4LA==CQkyNywgMjgsIDI5LCAzMCwgMzEsICAwCV0=CSMgVGhlIChpbilmYW1vdXMgUy1ib3hlcw==CV9fc2JveCA9IFs=CQkjIFMxCQlbMTQsIDQsIDEzLCAxLCAyLCAxNSwgMTEsIDgsIDMsIDEwLCA2LCAxMiwgNSwgOSwgMCwgNyw=CQkgMCwgMTUsIDcsIDQsIDE0LCAyLCAxMywgMSwgMTAsIDYsIDEyLCAxMSwgOSwgNSwgMywgOCw=CQkgNCwgMSwgMTQsIDgsIDEzLCA2LCAyLCAxMSwgMTUsIDEyLCA5LCA3LCAzLCAxMCwgNSwgMCw=CQkgMTUsIDEyLCA4LCAyLCA0LCA5LCAxLCA3LCA1LCAxMSwgMywgMTQsIDEwLCAwLCA2LCAxM10sCQkjIFMyCQlbMTUsIDEsIDgsIDE0LCA2LCAxMSwgMywgNCwgOSwgNywgMiwgMTMsIDEyLCAwLCA1LCAxMCw=CQkgMywgMTMsIDQsIDcsIDE1LCAyLCA4LCAxNCwgMTIsIDAsIDEsIDEwLCA2LCA5LCAxMSwgNSw=CQkgMCwgMTQsIDcsIDExLCAxMCwgNCwgMTMsIDEsIDUsIDgsIDEyLCA2LCA5LCAzLCAyLCAxNSw=CQkgMTMsIDgsIDEwLCAxLCAzLCAxNSwgNCwgMiwgMTEsIDYsIDcsIDEyLCAwLCA1LCAxNCwgOV0sCQkjIFMzCQlbMTAsIDAsIDksIDE0LCA2LCAzLCAxNSwgNSwgMSwgMTMsIDEyLCA3LCAxMSwgNCwgMiwgOCw=CQkgMTMsIDcsIDAsIDksIDMsIDQsIDYsIDEwLCAyLCA4LCA1LCAxNCwgMTIsIDExLCAxNSwgMSw=CQkgMTMsIDYsIDQsIDksIDgsIDE1LCAzLCAwLCAxMSwgMSwgMiwgMTIsIDUsIDEwLCAxNCwgNyw=CQkgMSwgMTAsIDEzLCAwLCA2LCA5LCA4LCA3LCA0LCAxNSwgMTQsIDMsIDExLCA1LCAyLCAxMl0sCQkjIFM0CQlbNywgMTMsIDE0LCAzLCAwLCA2LCA5LCAxMCwgMSwgMiwgOCwgNSwgMTEsIDEyLCA0LCAxNSw=CQkgMTMsIDgsIDExLCA1LCA2LCAxNSwgMCwgMywgNCwgNywgMiwgMTIsIDEsIDEwLCAxNCwgOSw=CQkgMTAsIDYsIDksIDAsIDEyLCAxMSwgNywgMTMsIDE1LCAxLCAzLCAxNCwgNSwgMiwgOCwgNCw=CQkgMywgMTUsIDAsIDYsIDEwLCAxLCAxMywgOCwgOSwgNCwgNSwgMTEsIDEyLCA3LCAyLCAxNF0sCQkjIFM1CQlbMiwgMTIsIDQsIDEsIDcsIDEwLCAxMSwgNiwgOCwgNSwgMywgMTUsIDEzLCAwLCAxNCwgOSw=CQkgMTQsIDExLCAyLCAxMiwgNCwgNywgMTMsIDEsIDUsIDAsIDE1LCAxMCwgMywgOSwgOCwgNiw=CQkgNCwgMiwgMSwgMTEsIDEwLCAxMywgNywgOCwgMTUsIDksIDEyLCA1LCA2LCAzLCAwLCAxNCw=CQkgMTEsIDgsIDEyLCA3LCAxLCAxNCwgMiwgMTMsIDYsIDE1LCAwLCA5LCAxMCwgNCwgNSwgM10sCQkjIFM2CQlbMTIsIDEsIDEwLCAxNSwgOSwgMiwgNiwgOCwgMCwgMTMsIDMsIDQsIDE0LCA3LCA1LCAxMSw=CQkgMTAsIDE1LCA0LCAyLCA3LCAxMiwgOSwgNSwgNiwgMSwgMTMsIDE0LCAwLCAxMSwgMywgOCw=CQkgOSwgMTQsIDE1LCA1LCAyLCA4LCAxMiwgMywgNywgMCwgNCwgMTAsIDEsIDEzLCAxMSwgNiw=CQkgNCwgMywgMiwgMTIsIDksIDUsIDE1LCAxMCwgMTEsIDE0LCAxLCA3LCA2LCAwLCA4LCAxM10sCQkjIFM3CQlbNCwgMTEsIDIsIDE0LCAxNSwgMCwgOCwgMTMsIDMsIDEyLCA5LCA3LCA1LCAxMCwgNiwgMSw=CQkgMTMsIDAsIDExLCA3LCA0LCA5LCAxLCAxMCwgMTQsIDMsIDUsIDEyLCAyLCAxNSwgOCwgNiw=CQkgMSwgNCwgMTEsIDEzLCAxMiwgMywgNywgMTQsIDEwLCAxNSwgNiwgOCwgMCwgNSwgOSwgMiw=CQkgNiwgMTEsIDEzLCA4LCAxLCA0LCAxMCwgNywgOSwgNSwgMCwgMTUsIDE0LCAyLCAzLCAxMl0sCQkjIFM4CQlbMTMsIDIsIDgsIDQsIDYsIDE1LCAxMSwgMSwgMTAsIDksIDMsIDE0LCA1LCAwLCAxMiwgNyw=CQkgMSwgMTUsIDEzLCA4LCAxMCwgMywgNywgNCwgMTIsIDUsIDYsIDExLCAwLCAxNCwgOSwgMiw=CQkgNywgMTEsIDQsIDEsIDksIDEyLCAxNCwgMiwgMCwgNiwgMTAsIDEzLCAxNSwgMywgNSwgOCw=CQkgMiwgMSwgMTQsIDcsIDQsIDEwLCA4LCAxMywgMTUsIDEyLCA5LCAwLCAzLCA1LCA2LCAxMV0sCV0=CSMgMzItYml0IHBlcm11dGF0aW9uIGZ1bmN0aW9uIFAgdXNlZCBvbiB0aGUgb3V0cHV0IG9mIHRoZSBTLWJveGVzCV9fcCA9IFs=CQkxNSwgNiwgMTksIDIwLCAyOCwgMTEsCQkyNywgMTYsIDAsIDE0LCAyMiwgMjUsCQk0LCAxNywgMzAsIDksIDEsIDcsCQkyMywxMywgMzEsIDI2LCAyLCA4LA==CQkxOCwgMTIsIDI5LCA1LCAyMSwgMTAsCQkzLCAyNA==CV0=CSMgZmluYWwgcGVybXV0YXRpb24gSVBeLTE=CV9fZnAgPSBbCQkzOSwgIDcsIDQ3LCAxNSwgNTUsIDIzLCA2MywgMzEsCQkzOCwgIDYsIDQ2LCAxNCwgNTQsIDIyLCA2MiwgMzAsCQkzNywgIDUsIDQ1LCAxMywgNTMsIDIxLCA2MSwgMjksCQkzNiwgIDQsIDQ0LCAxMiwgNTIsIDIwLCA2MCwgMjgsCQkzNSwgIDMsIDQzLCAxMSwgNTEsIDE5LCA1OSwgMjcsCQkzNCwgIDIsIDQyLCAxMCwgNTAsIDE4LCA1OCwgMjYsCQkzMywgIDEsIDQxLCAgOSwgNDksIDE3LCA1NywgMjUsCQkzMiwgIDAsIDQwLCAgOCwgNDgsIDE2LCA1NiwgMjQ=CV0=CSMgVHlwZSBvZiBjcnlwdGluZyBiZWluZyBkb25lCUVOQ1JZUFQgPQkweDAwCURFQ1JZUFQgPQkweDAxCSMgSW5pdGlhbGlzYXRpb24=CWRlZiBfX2luaXRfXyhzZWxmLCBrZXksIG1vZGU9RUNCLCBJVj1Ob25lKTo=CQlpZiBsZW4oa2V5KSAhPSA4Og==CQkJcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBERVMga2V5IHNpemUuIEtleSBtdXN0IGJlIGV4YWN0bHkgOCBieXRlcyBsb25nLiIpCQlzZWxmLmJsb2NrX3NpemUgPSA4CQlzZWxmLmtleV9zaXplID0gOA==CQlzZWxmLl9fcGFkZGluZyA9ICcnCQkjIFNldCB0aGUgcGFzc2VkIGluIHZhcmlhYmxlcw==CQlzZWxmLnNldE1vZGUobW9kZSk=CQlpZiBJVjo=CQkJc2VsZi5zZXRJVihJVik=CQlzZWxmLkwgPSBbXQ==CQlzZWxmLlIgPSBbXQ==CQlzZWxmLktuID0gWyBbMF0gKiA0OCBdICogMTYJIyAxNiA0OC1iaXQga2V5cyAoSzEgLSBLMTYpCQlzZWxmLmZpbmFsID0gW10=CQlzZWxmLnNldEtleShrZXkpCWRlZiBnZXRLZXkoc2VsZik6CQkiIiJnZXRLZXkoKSAtPiBzdHJpbmciIiI=CQlyZXR1cm4gc2VsZi5fX2tleQ==CWRlZiBzZXRLZXkoc2VsZiwga2V5KTo=CQkiIiJXaWxsIHNldCB0aGUgY3J5cHRpbmcga2V5IGZvciB0aGlzIG9iamVjdC4gTXVzdCBiZSA4IGJ5dGVzLiIiIg==CQlzZWxmLl9fa2V5ID0ga2V5CQlzZWxmLl9fY3JlYXRlX3N1Yl9rZXlzKCk=CWRlZiBnZXRNb2RlKHNlbGYpOg==CQkiIiJnZXRNb2RlKCkgLT4gcHlEZXMuRUNCIG9yIHB5RGVzLkNCQyIiIg==CQlyZXR1cm4gc2VsZi5fX21vZGU=CWRlZiBzZXRNb2RlKHNlbGYsIG1vZGUpOg==CQkiIiJTZXRzIHRoZSB0eXBlIG9mIGNyeXB0aW5nIG1vZGUsIHB5RGVzLkVDQiBvciBweURlcy5DQkMiIiI=CQlzZWxmLl9fbW9kZSA9IG1vZGU=CWRlZiBnZXRJVihzZWxmKTo=CQkiIiJnZXRJVigpIC0+IHN0cmluZyIiIg==CQlyZXR1cm4gc2VsZi5fX2l2CWRlZiBzZXRJVihzZWxmLCBJVik6CQkiIiJXaWxsIHNldCB0aGUgSW5pdGlhbCBWYWx1ZSwgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIENCQyBtb2RlIiIiCQlpZiBub3QgSVYgb3IgbGVuKElWKSAhPSBzZWxmLmJsb2NrX3NpemU6CQkJcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBJbml0aWFsIFZhbHVlIChJViksIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAiICsgc3RyKHNlbGYuYmxvY2tfc2l6ZSkgKyAiIGJ5dGVzIik=CQlzZWxmLl9faXYgPSBJVg==CWRlZiBnZXRQYWRkaW5nKHNlbGYpOg==CQkiIiJnZXRQYWRkaW5nKCkgLT4gc3RyaW5nIG9mIGxlbmd0aCAxLiBQYWRkaW5nIGNoYXJhY3Rlci4iIiI=CQlyZXR1cm4gc2VsZi5fX3BhZGRpbmc=CWRlZiBfX1N0cmluZ190b19CaXRMaXN0KHNlbGYsIGRhdGEpOg==CQkiIiJUdXJuIHRoZSBzdHJpbmcgZGF0YSwgaW50byBhIGxpc3Qgb2YgYml0cyAoMSwgMCkncyIiIg==CQlsID0gbGVuKGRhdGEpICogOA==CQlyZXN1bHQgPSBbMF0gKiBsCQlwb3MgPSAwCQlmb3IgYyBpbiBkYXRhOg==CQkJaSA9IDc=CQkJY2ggPSBvcmQoYyk=CQkJd2hpbGUgaSA+PSAwOg==CQkJCWlmIGNoICYgKDEgPDwgaSkgIT0gMDo=CQkJCQlyZXN1bHRbcG9zXSA9IDE=CQkJCWVsc2U6CQkJCQlyZXN1bHRbcG9zXSA9IDA=CQkJCXBvcyArPSAxCQkJCWkgLT0gMQ==CQlyZXR1cm4gcmVzdWx0CWRlZiBfX0JpdExpc3RfdG9fU3RyaW5nKHNlbGYsIGRhdGEpOg==CQkiIiJUdXJuIHRoZSBsaXN0IG9mIGJpdHMgLT4gZGF0YSwgaW50byBhIHN0cmluZyIiIg==CQlyZXN1bHQgPSAnJw==CQlwb3MgPSAwCQljID0gMA==CQl3aGlsZSBwb3MgPCBsZW4oZGF0YSk6CQkJYyArPSBkYXRhW3Bvc10gPDwgKDcgLSAocG9zICUgOCkpCQkJaWYgKHBvcyAlIDgpID09IDc6CQkJCXJlc3VsdCArPSBjaHIoYyk=CQkJCWMgPSAwCQkJcG9zICs9IDE=CQlyZXR1cm4gcmVzdWx0CWRlZiBfX3Blcm11dGF0ZShzZWxmLCB0YWJsZSwgYmxvY2spOg==CQkiIiJQZXJtdXRhdGUgdGhpcyBibG9jayB3aXRoIHRoZSBzcGVjaWZpZWQgdGFibGUiIiI=CQlyZXR1cm4gbWFwKGxhbWJkYSB4OiBibG9ja1t4XSwgdGFibGUpCQkJIyBUcmFuc2Zvcm0gdGhlIHNlY3JldCBrZXksIHNvIHRoYXQgaXQgaXMgcmVhZHkgZm9yIGRhdGEgcHJvY2Vzc2luZw==CSMgQ3JlYXRlIHRoZSAxNiBzdWJrZXlzLCBLWzFdIC0gS1sxNl0=CWRlZiBfX2NyZWF0ZV9zdWJfa2V5cyhzZWxmKTo=CQkiIiJDcmVhdGUgdGhlIDE2IHN1YmtleXMgS1sxXSB0byBLWzE2XSBmcm9tIHRoZSBnaXZlbiBrZXkiIiI=CQlrZXkgPSBzZWxmLl9fcGVybXV0YXRlKGRlcy5fX3BjMSwgc2VsZi5fX1N0cmluZ190b19CaXRMaXN0KHNlbGYuZ2V0S2V5KCkpKQ==CQlpID0gMA==CQkjIFNwbGl0IGludG8gTGVmdCBhbmQgUmlnaHQgc2VjdGlvbnM=CQlzZWxmLkwgPSBrZXlbOjI4XQ==CQlzZWxmLlIgPSBrZXlbMjg6XQ==CQl3aGlsZSBpIDwgMTY6CQkJaiA9IDA=CQkJIyBQZXJmb3JtIGNpcmN1bGFyIGxlZnQgc2hpZnRzCQkJd2hpbGUgaiA8IGRlcy5fX2xlZnRfcm90YXRpb25zW2ldOg==CQkJCXNlbGYuTC5hcHBlbmQoc2VsZi5MWzBdKQ==CQkJCWRlbCBzZWxmLkxbMF0=CQkJCXNlbGYuUi5hcHBlbmQoc2VsZi5SWzBdKQ==CQkJCWRlbCBzZWxmLlJbMF0=CQkJCWogKz0gMQ==CQkJIyBDcmVhdGUgb25lIG9mIHRoZSAxNiBzdWJrZXlzIHRocm91Z2ggcGMyIHBlcm11dGF0aW9uCQkJc2VsZi5LbltpXSA9IHNlbGYuX19wZXJtdXRhdGUoZGVzLl9fcGMyLCBzZWxmLkwgKyBzZWxmLlIpCQkJaSArPSAxCSMgTWFpbiBwYXJ0IG9mIHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobSwgdGhlIG51bWJlciBjcnVuY2hlciA6KQ==CWRlZiBfX2Rlc19jcnlwdChzZWxmLCBibG9jaywgY3J5cHRfdHlwZSk6CQkiIiJDcnlwdCB0aGUgYmxvY2sgb2YgZGF0YSB0aHJvdWdoIERFUyBiaXQtbWFuaXB1bGF0aW9uIiIiCQlibG9jayA9IHNlbGYuX19wZXJtdXRhdGUoZGVzLl9faXAsIGJsb2NrKQ==CQlzZWxmLkwgPSBibG9ja1s6MzJdCQlzZWxmLlIgPSBibG9ja1szMjpdCQkjIEVuY3J5cHRpb24gc3RhcnRzIGZyb20gS25bMV0gdGhyb3VnaCB0byBLblsxNl0=CQlpZiBjcnlwdF90eXBlID09IGRlcy5FTkNSWVBUOg==CQkJaXRlcmF0aW9uID0gMA==CQkJaXRlcmF0aW9uX2FkanVzdG1lbnQgPSAxCQkjIERlY3J5cHRpb24gc3RhcnRzIGZyb20gS25bMTZdIGRvd24gdG8gS25bMV0=CQllbHNlOg==CQkJaXRlcmF0aW9uID0gMTU=CQkJaXRlcmF0aW9uX2FkanVzdG1lbnQgPSAtMQ==CQlpID0gMA==CQl3aGlsZSBpIDwgMTY6CQkJIyBNYWtlIGEgY29weSBvZiBSW2ktMV0sIHRoaXMgd2lsbCBsYXRlciBiZWNvbWUgTFtpXQ==CQkJdGVtcFIgPSBzZWxmLlJbOl0=CQkJIyBQZXJtdXRhdGUgUltpIC0gMV0gdG8gc3RhcnQgY3JlYXRpbmcgUltpXQ==CQkJc2VsZi5SID0gc2VsZi5fX3Blcm11dGF0ZShkZXMuX19leHBhbnNpb25fdGFibGUsIHNlbGYuUik=CQkJIyBFeGNsdXNpdmUgb3IgUltpIC0gMV0gd2l0aCBLW2ldLCBjcmVhdGUgQlsxXSB0byBCWzhdIHdoaWxzdCBoZXJlCQkJc2VsZi5SID0gbWFwKGxhbWJkYSB4LCB5OiB4IF4geSwgc2VsZi5SLCBzZWxmLktuW2l0ZXJhdGlvbl0pCQkJQiA9IFtzZWxmLlJbOjZdLCBzZWxmLlJbNjoxMl0sIHNlbGYuUlsxMjoxOF0sIHNlbGYuUlsxODoyNF0sIHNlbGYuUlsyNDozMF0sIHNlbGYuUlszMDozNl0sIHNlbGYuUlszNjo0Ml0sIHNlbGYuUls0MjpdXQ==CQkJIyBPcHRpbWl6YXRpb246IFJlcGxhY2VkIGJlbG93IGNvbW1lbnRlZCBjb2RlIHdpdGggYWJvdmU=CQkJI2ogPSAwCQkJI0IgPSBbXQ==CQkJI3doaWxlIGogPCBsZW4oc2VsZi5SKTo=CQkJIwlzZWxmLlJbal0gPSBzZWxmLlJbal0gXiBzZWxmLktuW2l0ZXJhdGlvbl1bal0=CQkJIwlqICs9IDE=CQkJIwlpZiBqICUgNiA9PSAwOg==CQkJIwkJQi5hcHBlbmQoc2VsZi5SW2otNjpqXSk=CQkJIyBQZXJtdXRhdGUgQlsxXSB0byBCWzhdIHVzaW5nIHRoZSBTLUJveGVzCQkJaiA9IDA=CQkJQm4gPSBbMF0gKiAzMg==CQkJcG9zID0gMA==CQkJd2hpbGUgaiA8IDg6CQkJCSMgV29yayBvdXQgdGhlIG9mZnNldHM=CQkJCW0gPSAoQltqXVswXSA8PCAxKSArIEJbal1bNV0=CQkJCW4gPSAoQltqXVsxXSA8PCAzKSArIChCW2pdWzJdIDw8IDIpICsgKEJbal1bM10gPDwgMSkgKyBCW2pdWzRdCQkJCSMgRmluZCB0aGUgcGVybXV0YXRpb24gdmFsdWU=CQkJCXYgPSBkZXMuX19zYm94W2pdWyhtIDw8IDQpICsgbl0=CQkJCSMgVHVybiB2YWx1ZSBpbnRvIGJpdHMsIGFkZCBpdCB0byByZXN1bHQ6IEJuCQkJCUJuW3Bvc10gPSAodiAmIDgpID4+IDM=CQkJCUJuW3BvcyArIDFdID0gKHYgJiA0KSA+PiAyCQkJCUJuW3BvcyArIDJdID0gKHYgJiAyKSA+PiAxCQkJCUJuW3BvcyArIDNdID0gdiAmIDE=CQkJCXBvcyArPSA0CQkJCWogKz0gMQ==CQkJIyBQZXJtdXRhdGUgdGhlIGNvbmNhdGluYXRpb24gb2YgQlsxXSB0byBCWzhdIChCbik=CQkJc2VsZi5SID0gc2VsZi5fX3Blcm11dGF0ZShkZXMuX19wLCBCbik=CQkJIyBYb3Igd2l0aCBMW2kgLSAxXQ==CQkJc2VsZi5SID0gbWFwKGxhbWJkYSB4LCB5OiB4IF4geSwgc2VsZi5SLCBzZWxmLkwpCQkJIyBPcHRpbWl6YXRpb246IFRoaXMgbm93IHJlcGxhY2VzIHRoZSBiZWxvdyBjb21tZW50ZWQgY29kZQ==CQkJI2ogPSAwCQkJI3doaWxlIGogPCBsZW4oc2VsZi5SKTo=CQkJIwlzZWxmLlJbal0gPSBzZWxmLlJbal0gXiBzZWxmLkxbal0=CQkJIwlqICs9IDE=CQkJIyBMW2ldIGJlY29tZXMgUltpIC0gMV0=CQkJc2VsZi5MID0gdGVtcFI=CQkJaSArPSAxCQkJaXRlcmF0aW9uICs9IGl0ZXJhdGlvbl9hZGp1c3RtZW50CQkJIyBGaW5hbCBwZXJtdXRhdGlvbiBvZiBSWzE2XUxbMTZdCQlzZWxmLmZpbmFsID0gc2VsZi5fX3Blcm11dGF0ZShkZXMuX19mcCwgc2VsZi5SICsgc2VsZi5MKQ==CQlyZXR1cm4gc2VsZi5maW5hbA==CSMgRGF0YSB0byBiZSBlbmNyeXB0ZWQvZGVjcnlwdGVkCWRlZiBjcnlwdChzZWxmLCBkYXRhLCBjcnlwdF90eXBlKTo=CQkiIiJDcnlwdCB0aGUgZGF0YSBpbiBibG9ja3MsIHJ1bm5pbmcgaXQgdGhyb3VnaCBkZXNfY3J5cHQoKSIiIg==CQkjIEVycm9yIGNoZWNrIHRoZSBkYXRhCQlpZiBub3QgZGF0YTo=CQkJcmV0dXJuICcnCQlpZiBsZW4oZGF0YSkgJSBzZWxmLmJsb2NrX3NpemUgIT0gMDo=CQkJaWYgY3J5cHRfdHlwZSA9PSBkZXMuREVDUllQVDogIyBEZWNyeXB0aW9uIG11c3Qgd29yayBvbiA4IGJ5dGUgYmxvY2tzCQkJCXJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZGF0YSBsZW5ndGgsIGRhdGEgbXVzdCBiZSBhIG11bHRpcGxlIG9mICIgKyBzdHIoc2VsZi5ibG9ja19zaXplKSArICIgYnl0ZXNcbi4iKQ==CQkJaWYgbm90IHNlbGYuZ2V0UGFkZGluZygpOg==CQkJCXJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZGF0YSBsZW5ndGgsIGRhdGEgbXVzdCBiZSBhIG11bHRpcGxlIG9mICIgKyBzdHIoc2VsZi5ibG9ja19zaXplKSArICIgYnl0ZXNcbi4gVHJ5IHNldHRpbmcgdGhlIG9wdGlvbmFsIHBhZGRpbmcgY2hhcmFjdGVyIik=CQkJZWxzZTo=CQkJCWRhdGEgKz0gKHNlbGYuYmxvY2tfc2l6ZSAtIChsZW4oZGF0YSkgJSBzZWxmLmJsb2NrX3NpemUpKSAqIHNlbGYuZ2V0UGFkZGluZygpCQkJIyBwcmludCAiTGVuIG9mIGRhdGE6ICVmIiAlIChsZW4oZGF0YSkgLyBzZWxmLmJsb2NrX3NpemUpCQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkM6CQkJaWYgc2VsZi5nZXRJVigpOg==CQkJCWl2ID0gc2VsZi5fX1N0cmluZ190b19CaXRMaXN0KHNlbGYuZ2V0SVYoKSk=CQkJZWxzZTo=CQkJCXJhaXNlIFZhbHVlRXJyb3IoIkZvciBDQkMgbW9kZSwgeW91IG11c3Qgc3VwcGx5IHRoZSBJbml0aWFsIFZhbHVlIChJVikgZm9yIGNpcGhlcmluZyIpCQkjIFNwbGl0IHRoZSBkYXRhIGludG8gYmxvY2tzLCBjcnlwdGluZyBlYWNoIG9uZSBzZXBlcmF0ZWx5CQlpID0gMA==CQlkaWN0ID0ge30=CQlyZXN1bHQgPSBbXQ==CQkjY2FjaGVkID0gMA==CQkjbGluZXMgPSAwCQl3aGlsZSBpIDwgbGVuKGRhdGEpOg==CQkJIyBUZXN0IGNvZGUgZm9yIGNhY2hpbmcgZW5jcnlwdGlvbiByZXN1bHRzCQkJI2xpbmVzICs9IDE=CQkJI2lmIGRpY3QuaGFzX2tleShkYXRhW2k6aSs4XSk6CQkJCSNwcmludCAiQ2FjaGVkIHJlc3VsdCBmb3I6ICVzIiAlIGRhdGFbaTppKzhdCQkJIwljYWNoZWQgKz0gMQ==CQkJIwlyZXN1bHQuYXBwZW5kKGRpY3RbZGF0YVtpOmkrOF1dKQ==CQkJIwlpICs9IDg=CQkJIwljb250aW51ZQ==CQkJCQkJYmxvY2sgPSBzZWxmLl9fU3RyaW5nX3RvX0JpdExpc3QoZGF0YVtpOmkrOF0pCQkJIyBYb3Igd2l0aCBJViBpZiB1c2luZyBDQkMgbW9kZQ==CQkJaWYgc2VsZi5nZXRNb2RlKCkgPT0gQ0JDOg==CQkJCWlmIGNyeXB0X3R5cGUgPT0gZGVzLkVOQ1JZUFQ6CQkJCQlibG9jayA9IG1hcChsYW1iZGEgeCwgeTogeCBeIHksIGJsb2NrLCBpdik=CQkJCQkjaiA9IDA=CQkJCQkjd2hpbGUgaiA8IGxlbihibG9jayk6CQkJCQkjCWJsb2NrW2pdID0gYmxvY2tbal0gXiBpdltqXQ==CQkJCQkjCWogKz0gMQ==CQkJCXByb2Nlc3NlZF9ibG9jayA9IHNlbGYuX19kZXNfY3J5cHQoYmxvY2ssIGNyeXB0X3R5cGUpCQkJCWlmIGNyeXB0X3R5cGUgPT0gZGVzLkRFQ1JZUFQ6CQkJCQlwcm9jZXNzZWRfYmxvY2sgPSBtYXAobGFtYmRhIHgsIHk6IHggXiB5LCBwcm9jZXNzZWRfYmxvY2ssIGl2KQ==CQkJCQkjaiA9IDA=CQkJCQkjd2hpbGUgaiA8IGxlbihwcm9jZXNzZWRfYmxvY2spOg==CQkJCQkjCXByb2Nlc3NlZF9ibG9ja1tqXSA9IHByb2Nlc3NlZF9ibG9ja1tqXSBeIGl2W2pdCQkJCQkjCWogKz0gMQ==CQkJCQlpdiA9IGJsb2NrCQkJCWVsc2U6CQkJCQlpdiA9IHByb2Nlc3NlZF9ibG9jaw==CQkJZWxzZTo=CQkJCXByb2Nlc3NlZF9ibG9jayA9IHNlbGYuX19kZXNfY3J5cHQoYmxvY2ssIGNyeXB0X3R5cGUpCQkJIyBBZGQgdGhlIHJlc3VsdGluZyBjcnlwdGVkIGJsb2NrIHRvIG91ciBsaXN0CQkJI2QgPSBzZWxmLl9fQml0TGlzdF90b19TdHJpbmcocHJvY2Vzc2VkX2Jsb2NrKQ==CQkJI3Jlc3VsdC5hcHBlbmQoZCk=CQkJcmVzdWx0LmFwcGVuZChzZWxmLl9fQml0TGlzdF90b19TdHJpbmcocHJvY2Vzc2VkX2Jsb2NrKSk=CQkJI2RpY3RbZGF0YVtpOmkrOF1dID0gZA==CQkJaSArPSA4CQkjIHByaW50ICJMaW5lczogJWQsIGNhY2hlZDogJWQiICUgKGxpbmVzLCBjYWNoZWQpCQkjIFJlbW92ZSB0aGUgcGFkZGluZyBmcm9tIHRoZSBsYXN0IGJsb2NrCQlpZiBjcnlwdF90eXBlID09IGRlcy5ERUNSWVBUIGFuZCBzZWxmLmdldFBhZGRpbmcoKTo=CQkJI3ByaW50ICJSZW1vdmluZyBkZWNyeXB0IHBhZCI=CQkJcyA9IHJlc3VsdFstMV0=CQkJd2hpbGUgc1stMV0gPT0gc2VsZi5nZXRQYWRkaW5nKCk6CQkJCXMgPSBzWzotMV0=CQkJcmVzdWx0Wy0xXSA9IHM=CQkjIFJldHVybiB0aGUgZnVsbCBjcnlwdGVkIHN0cmluZw==CQlyZXR1cm4gJycuam9pbihyZXN1bHQpCWRlZiBlbmNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6CQkiIiJlbmNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRlCQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBlbmNyeXB0ZWQ=CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIERhdGEgZG9lcyBub3QgaGF2ZSB0byBiZSBhCQltdWx0aXBsZSBvZiA4IGJ5dGVzIGlmIHRoZSBwYWRkaW5nIGNoYXJhY3RlciBpcyBzdXBwbGllZCwgdGhlCQlkYXRhIHdpbGwgdGhlbiBiZSBwYWRkZWQgdG8gYSBtdWx0aXBsZSBvZiA4IGJ5dGVzIHdpdGggdGhpcw==CQlwYWQgY2hhcmFjdGVyLg==CQkiIiI=CQlzZWxmLl9fcGFkZGluZyA9IHBhZA==CQlyZXR1cm4gc2VsZi5jcnlwdChkYXRhLCBkZXMuRU5DUllQVCk=CWRlZiBkZWNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6CQkiIiJkZWNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGRlY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRlCQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBkZWNyeXB0ZWQ=CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIElmIHRoZSBvcHRpb25hbCBwYWRkaW5nIGNoYXJhY3Rlcg==CQlpcyBzdXBwbGllZCwgdGhlbiB0aGUgdW4tZW5jeXB0ZWQgZGF0YSB3aWxsIGhhdmUgdGhlIHBhZGRpbmcgY2hhcmFjdGVycw==CQlyZW1vdmVkIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGlzIHBhZCByZW1vdmFsIG9ubHkgb2NjdXJzIG9uIHRoZQ==CQlsYXN0IDggYnl0ZXMgb2YgdGhlIGRhdGEgKGxhc3QgZGF0YSBibG9jaykuCQkiIiI=CQlzZWxmLl9fcGFkZGluZyA9IHBhZA==CQlyZXR1cm4gc2VsZi5jcnlwdChkYXRhLCBkZXMuREVDUllQVCk=IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=IyAJCQkJVHJpcGxlIERFUwkJCQkgICAgIw==IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=Y2xhc3MgdHJpcGxlX2Rlczo=CSIiIlRyaXBsZSBERVMgZW5jcnlwdGlvbi9kZWNyeXRwaW9uIGNsYXNzCVRoaXMgYWxnb3JpdGhtIHVzZXMgdGhlIERFUy1FREUzICh3aGVuIGEgMjQgYnl0ZSBrZXkgaXMgc3VwcGxpZWQpIG9yCXRoZSBERVMtRURFMiAod2hlbiBhIDE2IGJ5dGUga2V5IGlzIHN1cHBsaWVkKSBlbmNyeXB0aW9uIG1ldGhvZHMuCVN1cHBvcnRzIEVDQiAoRWxlY3Ryb25pYyBDb2RlIEJvb2spIGFuZCBDQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZykgbW9kZXMuCXB5RGVzLmRlcyhrZXksIFttb2RlXSwgW0lWXSk=CWtleSAgLT4gVGhlIGVuY3J5cHRpb24ga2V5IHN0cmluZywgbXVzdCBiZSBlaXRoZXIgMTYgb3IgMjQgYnl0ZXMgbG9uZw==CW1vZGUgLT4gT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gdHlwZSwgY2FuIGJlIGVpdGhlciBweURlcy5FQ0I=CQkoRWxlY3Ryb25pYyBDb2RlIEJvb2spLCBweURlcy5DQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZyk=CUlWICAgLT4gT3B0aW9uYWwgc3RyaW5nIGFyZ3VtZW50LCBtdXN0IGJlIHN1cHBsaWVkIGlmIHVzaW5nIENCQyBtb2RlLg==CQlNdXN0IGJlIDggYnl0ZXMgaW4gbGVuZ3RoLg==CSIiIg==CWRlZiBfX2luaXRfXyhzZWxmLCBrZXksIG1vZGU9RUNCLCBJVj1Ob25lKTo=CQlzZWxmLmJsb2NrX3NpemUgPSA4CQlzZWxmLnNldE1vZGUobW9kZSk=CQlzZWxmLl9fcGFkZGluZyA9ICcnCQlzZWxmLl9faXYgPSBJVg==CQlzZWxmLnNldEtleShrZXkpCWRlZiBnZXRLZXkoc2VsZik6CQkiIiJnZXRLZXkoKSAtPiBzdHJpbmciIiI=CQlyZXR1cm4gc2VsZi5fX2tleQ==CWRlZiBzZXRLZXkoc2VsZiwga2V5KTo=CQkiIiJXaWxsIHNldCB0aGUgY3J5cHRpbmcga2V5IGZvciB0aGlzIG9iamVjdC4gRWl0aGVyIDE2IG9yIDI0IGJ5dGVzIGxvbmcuIiIiCQlzZWxmLmtleV9zaXplID0gMjQgICMgVXNlIERFUy1FREUzIG1vZGU=CQlpZiBsZW4oa2V5KSAhPSBzZWxmLmtleV9zaXplOg==CQkJaWYgbGVuKGtleSkgPT0gMTY6ICMgVXNlIERFUy1FREUyIG1vZGU=CQkJCXNlbGYua2V5X3NpemUgPSAxNg==CQkJZWxzZTo=CQkJCXJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdHJpcGxlIERFUyBrZXkgc2l6ZS4gS2V5IG11c3QgYmUgZWl0aGVyIDE2IG9yIDI0IGJ5dGVzIGxvbmciKQ==CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkMgYW5kIChub3Qgc2VsZi5nZXRJVigpIG9yIGxlbihzZWxmLmdldElWKCkpICE9IHNlbGYuYmxvY2tfc2l6ZSk6CQkJcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBJViwgbXVzdCBiZSA4IGJ5dGVzIGluIGxlbmd0aCIpICMjIFRPRE86IENoZWNrIHRoaXM=CQkjIG1vZGVzIGdldCBoYW5kbGVkIGxhdGVyLCBzaW5jZSBDQkMgZ29lcyBvbiB0b3Agb2YgdGhlIHRyaXBsZS1kZXM=CQlzZWxmLl9fa2V5MSA9IGRlcyhrZXlbOjhdKQ==CQlzZWxmLl9fa2V5MiA9IGRlcyhrZXlbODoxNl0pCQlpZiBzZWxmLmtleV9zaXplID09IDE2Og==CQkJc2VsZi5fX2tleTMgPSBzZWxmLl9fa2V5MQ==CQllbHNlOg==CQkJc2VsZi5fX2tleTMgPSBkZXMoa2V5WzE2Ol0pCQlzZWxmLl9fa2V5ID0ga2V5CWRlZiBnZXRNb2RlKHNlbGYpOg==CQkiIiJnZXRNb2RlKCkgLT4gcHlEZXMuRUNCIG9yIHB5RGVzLkNCQyIiIg==CQlyZXR1cm4gc2VsZi5fX21vZGU=CWRlZiBzZXRNb2RlKHNlbGYsIG1vZGUpOg==CQkiIiJTZXRzIHRoZSB0eXBlIG9mIGNyeXB0aW5nIG1vZGUsIHB5RGVzLkVDQiBvciBweURlcy5DQkMiIiI=CQlzZWxmLl9fbW9kZSA9IG1vZGU=CWRlZiBnZXRJVihzZWxmKTo=CQkiIiJnZXRJVigpIC0+IHN0cmluZyIiIg==CQlyZXR1cm4gc2VsZi5fX2l2CWRlZiBzZXRJVihzZWxmLCBJVik6CQkiIiJXaWxsIHNldCB0aGUgSW5pdGlhbCBWYWx1ZSwgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIENCQyBtb2RlIiIiCQlzZWxmLl9faXYgPSBJVg==CWRlZiB4b3JzdHIoIHNlbGYsIHgsIHkgKTo=CQkiIiJSZXR1cm5zIHRoZSBiaXR3aXNlIHhvciBvZiB0aGUgYnl0ZXMgaW4gdHdvIHN0cmluZ3MiIiI=CQlpZiBsZW4oeCkgIT0gbGVuKHkpOg==CQkJcmFpc2UgInN0cmluZyBsZW5ndGhzIGRpZmZlciAlZCAlZCIgJSAobGVuKHgpLCBsZW4oeSkpCQlyZXQgPSAnJw==CQlmb3IgaSBpbiByYW5nZShsZW4oeCkpOg==CQkJcmV0ICs9IGNocihvcmQoeFtpXSkgXiBvcmQoeVtpXSkpCQlyZXR1cm4gcmV0CWRlZiBlbmNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6CQkiIiJlbmNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRlCQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBlbmNyeXB0ZWQ=CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIERhdGEgZG9lcyBub3QgaGF2ZSB0byBiZSBhCQltdWx0aXBsZSBvZiA4IGJ5dGVzIGlmIHRoZSBwYWRkaW5nIGNoYXJhY3RlciBpcyBzdXBwbGllZCwgdGhlCQlkYXRhIHdpbGwgdGhlbiBiZSBwYWRkZWQgdG8gYSBtdWx0aXBsZSBvZiA4IGJ5dGVzIHdpdGggdGhpcw==CQlwYWQgY2hhcmFjdGVyLg==CQkiIiI=CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBFQ0I6CQkJIyBzaW1wbGU=CQkJZGF0YSA9IHNlbGYuX19rZXkxLmVuY3J5cHQoZGF0YSwgcGFkKQ==CQkJZGF0YSA9IHNlbGYuX19rZXkyLmRlY3J5cHQoZGF0YSk=CQkJcmV0dXJuIHNlbGYuX19rZXkzLmVuY3J5cHQoZGF0YSk=CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkM6CQkJcmFpc2UgIlRoaXMgY29kZSBoYXNuJ3QgYmVlbiB0ZXN0ZWQgeWV0Ig==CQkJaWYgbGVuKGRhdGEpICUgc2VsZi5ibG9ja19zaXplICE9IDA6CQkJCXJhaXNlICJDQkMgbW9kZSBuZWVkcyBkYXRhbGVuIHRvIGJlIGEgbXVsdGlwbGUgb2YgYmxvY2tzaXplIChpZ25vcmluZyBwYWRkaW5nIGZvciBub3cpIg==CQkJIyBzaW1wbGU=CQkJbGFzdGJsb2NrID0gc2VsZi5nZXRJVigpCQkJcmV0ZGF0YSA9ICcnCQkJZm9yIGkgaW4gcmFuZ2UoIDAsIGxlbihkYXRhKSwgc2VsZi5ibG9ja19zaXplICk6CQkJCXRoaXNibG9jayA9IGRhdGFbIGk6aStzZWxmLmJsb2NrX3NpemUgXQ==CQkJCSMgdGhlIFhPUiBmb3IgQ0JDCQkJCXRoaXNibG9jayA9IHNlbGYueG9yc3RyKCBsYXN0YmxvY2ssIHRoaXNibG9jayApCQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkxLmVuY3J5cHQodGhpc2Jsb2NrKQ==CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkyLmRlY3J5cHQodGhpc2Jsb2NrKQ==CQkJCWxhc3RibG9jayA9IHNlbGYuX19rZXkzLmVuY3J5cHQodGhpc2Jsb2NrKQ==CQkJCXJldGRhdGEgKz0gbGFzdGJsb2NrCQkJcmV0dXJuIHJldGRhdGE=CQlyYWlzZSAiTm90IHJlYWNoZWQiCWRlZiBkZWNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6CQkiIiJkZWNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGRlY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRlCQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBkZWNyeXB0ZWQ=CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIElmIHRoZSBvcHRpb25hbCBwYWRkaW5nIGNoYXJhY3Rlcg==CQlpcyBzdXBwbGllZCwgdGhlbiB0aGUgdW4tZW5jeXB0ZWQgZGF0YSB3aWxsIGhhdmUgdGhlIHBhZGRpbmcgY2hhcmFjdGVycw==CQlyZW1vdmVkIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGlzIHBhZCByZW1vdmFsIG9ubHkgb2NjdXJzIG9uIHRoZQ==CQlsYXN0IDggYnl0ZXMgb2YgdGhlIGRhdGEgKGxhc3QgZGF0YSBibG9jaykuCQkiIiI=CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBFQ0I6CQkJIyBzaW1wbGU=CQkJZGF0YSA9IHNlbGYuX19rZXkzLmRlY3J5cHQoZGF0YSk=CQkJZGF0YSA9IHNlbGYuX19rZXkyLmVuY3J5cHQoZGF0YSk=CQkJcmV0dXJuIHNlbGYuX19rZXkxLmRlY3J5cHQoZGF0YSwgcGFkKQ==CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkM6CQkJaWYgbGVuKGRhdGEpICUgc2VsZi5ibG9ja19zaXplICE9IDA6CQkJCXJhaXNlICJDYW4gb25seSBkZWNyeXB0IG11bHRpcGxlcyBvZiBibG9ja3NpemUiCQkJbGFzdGJsb2NrID0gc2VsZi5nZXRJVigpCQkJcmV0ZGF0YSA9ICcnCQkJZm9yIGkgaW4gcmFuZ2UoIDAsIGxlbihkYXRhKSwgc2VsZi5ibG9ja19zaXplICk6CQkJCSMgY2FuIEkgYXJyYW5nZSB0aGlzIGJldHRlcj8gcHJvYmFibHkuLi4=CQkJCWNpcGhlcmNodW5rID0gZGF0YVsgaTppK3NlbGYuYmxvY2tfc2l6ZSBdCQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkzLmRlY3J5cHQoY2lwaGVyY2h1bmspCQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkyLmVuY3J5cHQodGhpc2Jsb2NrKQ==CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkxLmRlY3J5cHQodGhpc2Jsb2NrKQ==CQkJCXJldGRhdGEgKz0gc2VsZi54b3JzdHIoIGxhc3RibG9jaywgdGhpc2Jsb2NrICk=CQkJCWxhc3RibG9jayA9IGNpcGhlcmNodW5rCQkJcmV0dXJuIHJldGRhdGE=CQlyYWlzZSAiTm90IHJlYWNoZWQiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=IyAJCQkJRXhhbXBsZXMJCQkJICAgICM=IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=ZGVmIGV4YW1wbGVfdHJpcGxlX2RlcygpOg==CWZyb20gdGltZSBpbXBvcnQgdGltZQ==CSMgVXRpbGl0eSBtb2R1bGU=CWZyb20gYmluYXNjaWkgaW1wb3J0IHVuaGV4bGlmeSBhcyB1bmhleA==CSMgZXhhbXBsZSBzaG93cyB0cmlwbGUtZGVzIGVuY3J5cHRpb24gdXNpbmcgdGhlIGRlcyBjbGFzcw==CXByaW50ICJFeGFtcGxlIG9mIHRyaXBsZSBERVMgZW5jcnlwdGlvbiBpbiBkZWZhdWx0IEVDQiBtb2RlIChERVMtRURFMylcbiI=CXByaW50ICJUcmlwbGUgZGVzIHVzaW5nIHRoZSBkZXMgY2xhc3MgKDMgdGltZXMpIg==CXQgPSB0aW1lKCk=CWsxID0gZGVzKHVuaGV4KCIxMzM0NTc3OTlCQkNERkYxIikpCWsyID0gZGVzKHVuaGV4KCIxMTIyMzM0NDU1NjY3Nzg4IikpCWszID0gZGVzKHVuaGV4KCI3NzY2MTEwMEREMjIzMzExIikpCWQgPSAiVHJpcGxlIERFUyB0ZXN0IHN0cmluZywgdG8gYmUgZW5jcnlwdGVkIGFuZCBkZWNyeXB0ZWQuLi4iCXByaW50ICJLZXkxOiAgICAgICVzIiAlIGsxLmdldEtleSgpCXByaW50ICJLZXkyOiAgICAgICVzIiAlIGsyLmdldEtleSgpCXByaW50ICJLZXkzOiAgICAgICVzIiAlIGszLmdldEtleSgpCXByaW50ICJEYXRhOiAgICAgICVzIiAlIGQ=CWUxID0gazEuZW5jcnlwdChkKQ==CWUyID0gazIuZGVjcnlwdChlMSk=CWUzID0gazMuZW5jcnlwdChlMik=CXByaW50ICJFbmNyeXB0ZWQ6ICIgKyBlMw==CWQzID0gazMuZGVjcnlwdChlMyk=CWQyID0gazIuZW5jcnlwdChkMyk=CWQxID0gazEuZGVjcnlwdChkMik=CXByaW50ICJEZWNyeXB0ZWQ6ICIgKyBkMQ==CXByaW50ICJERVMgdGltZSB0YWtlbjogJWYgKCVkIGNyeXB0IG9wZXJhdGlvbnMpIiAlICh0aW1lKCkgLSB0LCA2ICogKGxlbihkKSAvIDgpKQ==CXByaW50ICIiCSMgRXhhbXBsZSBiZWxvdyB1c2VzIHRoZSB0cmlwbGUtZGVzIGNsYXNzIHRvIGFjaGlldmUgdGhlIHNhbWUgYXMgYWJvdmU=CXByaW50ICJOb3cgdXNpbmcgdHJpcGxlIGRlcyBjbGFzcyI=CXQgPSB0aW1lKCk=CXQxID0gdHJpcGxlX2Rlcyh1bmhleCgiMTMzNDU3Nzk5QkJDREZGMTExMjIzMzQ0NTU2Njc3ODg3NzY2MTEwMEREMjIzMzExIikpCXByaW50ICJLZXk6ICAgICAgICVzIiAlIHQxLmdldEtleSgpCXByaW50ICJEYXRhOiAgICAgICVzIiAlIGQ=CXRkMSA9IHQxLmVuY3J5cHQoZCk=CXByaW50ICJFbmNyeXB0ZWQ6ICIgKyB0ZDE=CXRkMiA9IHQxLmRlY3J5cHQodGQxKQ==CXByaW50ICJEZWNyeXB0ZWQ6ICIgKyB0ZDI=CXByaW50ICJUcmlwbGUgREVTIHRpbWUgdGFrZW46ICVmICglZCBjcnlwdCBvcGVyYXRpb25zKSIgJSAodGltZSgpIC0gdCwgNiAqIChsZW4oZCkgLyA4KSk=ZGVmIGV4YW1wbGVfZGVzKCk6CWZyb20gdGltZSBpbXBvcnQgdGltZQ==CSMgZXhhbXBsZSBvZiBERVMgZW5jcnlwdGluZyBpbiBDQkMgbW9kZSB3aXRoIHRoZSBJViBvZiAiXDBcMFwwXDBcMFwwXDBcMCI=CXByaW50ICJFeGFtcGxlIG9mIERFUyBlbmNyeXB0aW9uIHVzaW5nIENCQyBtb2RlXG4iCXQgPSB0aW1lKCk=CWsgPSBkZXMoIkRFU0NSWVBUIiwgQ0JDLCAiXDBcMFwwXDBcMFwwXDBcMCIpCWRhdGEgPSAiREVTIGVuY3J5cHRpb24gYWxnb3JpdGhtIg==CXByaW50ICJLZXkgICAgICA6ICIgKyBrLmdldEtleSgpCXByaW50ICJEYXRhICAgICA6ICIgKyBkYXRhCWQgPSBrLmVuY3J5cHQoZGF0YSk=CXByaW50ICJFbmNyeXB0ZWQ6ICIgKyBkCWQgPSBrLmRlY3J5cHQoZCk=CXByaW50ICJEZWNyeXB0ZWQ6ICIgKyBkCXByaW50ICJERVMgdGltZSB0YWtlbjogJWYgKDYgY3J5cHQgb3BlcmF0aW9ucykiICUgKHRpbWUoKSAtIHQpCXByaW50ICIiZGVmIF9fdGVzdF9fKCk6CWV4YW1wbGVfZGVzKCk=CWV4YW1wbGVfdHJpcGxlX2RlcygpZGVmIF9fZnVsbHRlc3RfXygpOg==CSMgVGhpcyBzaG91bGQgbm90IHByb2R1Y2UgYW55IHVuZXhwZWN0ZWQgZXJyb3JzIG9yIGV4Y2VwdGlvbnM=CWZyb20gYmluYXNjaWkgaW1wb3J0IHVuaGV4bGlmeSBhcyB1bmhleA==CWZyb20gYmluYXNjaWkgaW1wb3J0IGhleGxpZnkgYXMgZG9oZXg=CV9fdGVzdF9fKCk=CXByaW50ICIiCWsgPSBkZXMoIlwwXDBcMFwwXDBcMFwwXDAiLCBDQkMsICJcMFwwXDBcMFwwXDBcMFwwIik=CWQgPSBrLmVuY3J5cHQoIkRFUyBlbmNyeXB0aW9uIGFsZ29yaXRobSIpCWlmIGsuZGVjcnlwdChkKSAhPSAiREVTIGVuY3J5cHRpb24gYWxnb3JpdGhtIjo=CQlwcmludCAiVGVzdCAxIEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=CWsgPSBkZXMoIlwwXDBcMFwwXDBcMFwwXDAiLCBDQkMsICJcMFwwXDBcMFwwXDBcMFwwIik=CWQgPSBrLmVuY3J5cHQoIkRlZmF1bHQgc3RyaW5nIG9mIHRleHQiLCAnKicpCWlmIGsuZGVjcnlwdChkLCAiKiIpICE9ICJEZWZhdWx0IHN0cmluZyBvZiB0ZXh0Ijo=CQlwcmludCAiVGVzdCAyIEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=CWsgPSBkZXMoIlxyXG5cdEFCQ1xyXG4iKQ==CWQgPSBrLmVuY3J5cHQoIlN0cmluZyB0byBQYWQiLCAnKicpCWlmIGsuZGVjcnlwdChkKSAhPSAiU3RyaW5nIHRvIFBhZCoqKiI6CQlwcmludCAiJyVzJyIgJSBrLmRlY3J5cHQoZCk=CQlwcmludCAiVGVzdCAzIEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=CWsgPSBkZXMoIlxyXG5cdEFCQ1xyXG4iKQ==CWQgPSBrLmVuY3J5cHQodW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpLCB1bmhleCgiNDQiKSk=CWlmIGsuZGVjcnlwdChkLCB1bmhleCgiNDQiKSkgIT0gdW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpOg==CQlwcmludCAiVGVzdCA0YSBFcnJvcjogVW5lbmN5cHRlZCBkYXRhIGJsb2NrIGRvZXMgbm90IG1hdGNoIHN0YXJ0IGRhdGEiCWlmIGsuZGVjcnlwdChkKSAhPSB1bmhleCgiMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwNDQiKTo=CQlwcmludCAiVGVzdCA0YiBFcnJvcjogVW5lbmN5cHRlZCBkYXRhIGJsb2NrIGRvZXMgbm90IG1hdGNoIHN0YXJ0IGRhdGEiCWsgPSB0cmlwbGVfZGVzKCJNeURlc0tleVxyXG5cdEFCQ1xyXG4wOTg3KjU0MyIpCWQgPSBrLmVuY3J5cHQodW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpKQ==CWlmIGsuZGVjcnlwdChkKSAhPSB1bmhleCgiMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwIik6CQlwcmludCAiVGVzdCA1IEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=CWsgPSB0cmlwbGVfZGVzKCJcclxuXHRBQkNcclxuMDk4Nyo1NDMiKQ==CWQgPSBrLmVuY3J5cHQodW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpKQ==CWlmIGsuZGVjcnlwdChkKSAhPSB1bmhleCgiMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwIik6CQlwcmludCAiVGVzdCA2IEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=ZGVmIF9fZmlsZXRlc3RfXygpOg==CWZyb20gdGltZSBpbXBvcnQgdGltZQ==CWYgPSBvcGVuKCJweURlcy5weSIsICJyYisiKQ==CWQgPSBmLnJlYWQoKQ==CWYuY2xvc2UoKQ==CXQgPSB0aW1lKCk=CWsgPSBkZXMoIk15REVTS2V5Iik=CWQgPSBrLmVuY3J5cHQoZCwgIiAiKQ==CWYgPSBvcGVuKCJweURlcy5weS5lbmMiLCAid2IrIik=CWYud3JpdGUoZCk=CWYuY2xvc2UoKQ==CWQgPSBrLmRlY3J5cHQoZCwgIiAiKQ==CWYgPSBvcGVuKCJweURlcy5weS5kZWMiLCAid2IrIik=CWYud3JpdGUoZCk=CWYuY2xvc2UoKQ==CXByaW50ICJERVMgZmlsZSB0ZXN0IHRpbWU6ICVmIiAlICh0aW1lKCkgLSB0KQ==ZGVmIF9fcHJvZmlsZV9fKCk6CWltcG9ydCBwcm9maWxlCXByb2ZpbGUucnVuKCdfX2Z1bGx0ZXN0X18oKScpCSNwcm9maWxlLnJ1bignX19maWxldGVzdF9fKCknKQ==aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzo=CV9fdGVzdF9fKCk=CSNfX2Z1bGx0ZXN0X18oKQ==CSNfX2ZpbGV0ZXN0X18oKQ==CSNfX3Byb2ZpbGVfXygp

于是解密之后发现和python的一个官方文档相同。这个时候思路就开始跑偏了。。。当时自己想的是比较这两个文件,结果就是越来越偏。

看了别人的writeup之后才搞清楚base64原来有这么多的奥秘在里面。。。

事实上,这个题目利用的是base64加密后的字符串来藏字符。如果base64字符串后面有==时,说明前一个字符的后四位是任意的,既可以写入信息的。如果是=结尾的,前一个字符的后两位是任意的,可以写入信息。
然后还有一个地方在于base64的字符集,要对之前和之后的位置进行异或,再将其拼接起来,就是01字符串,转成字符串得flag。。。
代码:

import base64f=open("C:\\Users\\wangchong\\Desktop\\wangchong\\crypto100\\timian.txt")index='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'line=f.readline()while line:    line2=base64.b64encode(base64.b64decode(line))    line=line[0:len(line)-1]    if(line[-1]==line[-2]=='='):        x=line[-3]        x1=line2[-3]        res=str(bin((index.find(x))^(index.find(x1)))).replace('0b','00')[-4:]        if(len(res)==3):           res='0'+res        print (str(res)),                elif(line[-1]=='=' and line[-2]!='='):        x=line[-2]        x1=line2[-2]        print str(bin((index.find(x))^(index.find(x1)))).replace('0b','00')[-2:],    line=f.readline()

结果如下:

将这些字符拼接到一起转字符串,得到:

转载于:https://www.cnblogs.com/lightspeedsmallson/p/5173965.html

你可能感兴趣的文章
DropDownList 控制日期控件显示格式
查看>>
RecycleView设置顶部分割线(记录一个坑)
查看>>
【设计模式系列】单例模式的7种写法
查看>>
汉字转拼音 (转)
查看>>
Machine Learning Techniques -6-Support Vector Regression
查看>>
会计基础_001
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
Jenkins持续集成环境部署
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
摄像机与绕任意轴旋转
查看>>
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>