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AAAAAL8CAAASAAAAAAAAAAAAAAAAAAAAAAAAAKMAAAASAAAAAAAAAAAAAAAAAAAAAAAAACcBAAASAAAAAAAAAAAAAAAAAAAAAAAAAEsDAAASAAAAAAAAAAAAAAAAAAAAAAAAAEoCAAASAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAASAAAAAAAAAAAAAAAAAAAAAAAAAK8CAAASAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAASAAAAAAAAAAAAAAAAAAAAAAAAAFcLAAASAAAAAAAAAAAAAAAAAAAAAAAAAI4AAAASAAAAAAAAAAAAAAAAAAAAAAAAALcCAAASAAAAAAAAAAAAAAAAAAAAAAAAAIcEAAASAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAASAAAAAAAAAAAAAAAAAAAAAAAAAD0BAAASAAAAAAAAAAAAAAAAAAAAAAAAAIoAAAASAAAAAAAAAAAAAAAAAAAAAAAAADQCAAASAAAAAAAAAAAAAAAAAAAAAAAAAOgBAAASAAAAAAAAAAAAAAAAAAAAAAAAAHkBAAASAAAAAAAAAAAAAAAAAAAAAAAAAIkAAAASAAAAAAAAAAAAAAAAAAAAAAAAAGoDAAASAAAAAAAAAAAAAAAAAAAAAAAAABsBAAASAAAAAAAAAAAAAAAAAAAAAAAAAAcCAAASAAAAAAAAAAAAAAAAAAAAAAAAAMEBAAASAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAASAAAAAAAAAAAAAAAAAAAAAAAAABcCAAASAAAAAAAAAAAAAAAAAAAAAAAAAM4BAAASAAAAAAAAAAAAAAAAAAAAAAAAAFoDAAASAAAAAAAAAAAAAAAAAAAAAAAAAJ0AAAASAAAAAAAAAAAAAAAAAAAAAAAAAEYBAAASAAAAAAAAAAAAAAAAAAAAAAAAALwBAAASAAAAAAAAAAAAAAAAAAAAAAAAACcAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAA4CAAASAAAAAAAAAAAAAAAAAAAAAAAAAG8AAAASAAAAAAAAAAAAAAAAAAAAAAAAAO0CAAASAAAAAAAAAAAAAAAAAAAAAAAAAJADAAASAAAAAAAAAAAAAAAAAAAAAAAAAAkBAAASAAAAAAAAAAAAAAAAAAAAAAAAANUAAAASAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAASAAAAAAAAAAAAAAAAAAAAAAAAAIgBAAASAAAAAAAAAAAAAAAAAAAAAAAAAF8CAAASAAAAAAAAAAAAAAAAAAAAAAAAAO4AAAASAAAAAAAAAAAAAAAAAAAAAAAAAFEDAAASAAAAAAAAAAAAAAAAAAAAAAAAALMAAAASAAAAAAAAAAAAAAAAAAAAAAAAAMcBAAASAAAAAAAAAAAAAAAAAAAAAAAAAIMDAAASAAAAAAAAAAAAAAAAAAAAAAAAAPkCAAASAAAAAAAAAAAAAAAAAAAAAAAAAJIAAAASAAAAAAAAAAAAAAAAAAAAAAAAAJ8BAAASAAAAAAAAAAAAAAAAAAAAAAAAAIABAAASAAAAAAAAAAAAAAAAAAAAAAAAAAECAAASAAAAAAAAAAAAAAAAAAAAAAAAAMcAAAASAAAAAAAAAAAAAAAAAAAAAAAAAG0CAAASAAAAAAAAAAAAAAAAAAAAAAAAAGUBAAASAAAAAAAAAAAAAAAAAAAAAAAAABQDAAASAAAAAAAAAAAAAAAAAAAAAAAAABEBAAASAAAAAAAAAAAAAAAAAAAAAAAAADUDAAASAAAAAAAAAAAAAAAAAAAAAAAAAC8BAAASAAAAAAAAAAAAAAAAAAAAAAAAAJYBAAASAAAAAAAAAAAAAAAAAAAAAAAAAJABAAASAAAAAAAAAAAAAAAAAAAAAAAAACEBAAASAAAAAAAAAAAAAAAAAAAAAAAAALUBAAASAAAAAAAAAAAAAAAAAAAAAAAAADYAAAAgAAAAAAAAAAAAAAAAAAAAAAAAANMCAAASAAAAAAAAAAAAAAAAAAAAAAAAAK4BAAASAAAAAAAAAAAAAAAAAAAAAAAAAK4AAAASAAAAAAAAAAAAAAAAAAAAAAAAAFcCAAASAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAASAAAAAAAAAAAAAAAAAAAAAAAAANoCAAASAAAAAAAAAAAAAAAAAAAAAAAAAGYCAAASAAAAAAAAAAAAAAAAAAAAAAAAAJgAAAASAAAAAAAAAAAAAAAAAAAAAAAAAK0AAAASAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAASAAAAAAAAAAAAAAAAAAAAAAAAAMYCAAASAAAAAAAAAAAAAAAAAAAAAAAAAB8CAAASAAAAAAAAAAAAAAAAAAAAAAAAAEoAAAAgAAAAAAAAAAAAAAAAAAAA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YWNrX2Noa19mYWlsAHJlYWxsb2MAY2xvY2sAc3RkaW4AbWVtY2hyAHN0cnBicmsAdG9sb3dlcgBwb3BlbgBzdHJmdGltZQBta3N0ZW1wAHN0cnRvZABnbXRpbWUAc3RydG9rAGZlb2YAZmdldHMAdW5nZXRjAHRtcGZpbGUAbG9jYWxlY29udgBzdHJzdHIAc3RyY3NwbgBfX2Vycm5vX2xvY2F0aW9uAGZzZWVrAG1lbWNtcABjbGVhcmVycgBfc2V0am1wAF9fZnByaW50Zl9jaGsAc3Rkb3V0AGZwdXRjAF9faXNvYzk5X2ZzY2FuZgBmcHV0cwBmY2xvc2UAc3RydG91bABtYWxsb2MAc3RyY2F0AF9fc3RybmNweV9jaGsAb3BlbmRpcgBfX2N0eXBlX2JfbG9jAGdldGVudgBzdGRlcnIAc3lzdGVtAHJlYWRsaW5rAGZyZW9wZW4Ac3RybmNhdABwY2xvc2UAZndyaXRlAGZyZWFkAHJlbmFtZQBhdG9pAGxvY2FsdGltZQBkaWZmdGltZQBzdHJjaHIAbWt0aW1lAF9fY3R5cGVfdG91cHBlcl9sb2MAX19zdHJjcHlfY2hrAF9fY3R5cGVfdG9sb3dlcl9sb2MAc2V0dmJ1ZgBfX3NwcmludGZfY2hrAHVuYW1lAF9JT19nZXRjAHN0cmNtcABzdHJlcnJvcgBfX2xpYmNfc3RhcnRfbWFpbgBmZXJyb3IAc3RyY29sbABmcmVlAF9feHN0YXQAb3Nfc3RhdABfX2xpYmNfY3N1X2ZpbmkAbHVhb3Blbl9pbwBsdWFfY2hlY2tzdGFjawBsdWFfZ2V0dG9wAGx1YV90b2ludGVnZXIAb3Nfcm1kaXIAbHVhTF9vcGVubGliAGx1YUxfd2hlcmUAbHVhX3NldHRvcABsdWFfZ2V0bG9jYWwAbHVhX2dldHN0YWNrAGx1YV90b2Jvb2xlYW4AbHVhTF9jYWxsbWV0YQBsdWFfdG91c2VyZGF0YQBsdWFMX2FyZ2Vycm9yAGx1YV9wdXNoY2Nsb3N1cmUAYnVpbHRpbl9zY3JpcHRzAGx1YV9jbG9zZQBsdWFfcGNhbGwAbHVhX25leHQAbHVhX3RvbHN0cmluZwBfZWRhdGEAbHVhX2VxdWFsAGx1YV95aWVsZABsdWFfcmVwbGFjZQBsdWFfZ2V0aW5mbwBsdWFfaWRlbnQAb3NfbWtkaXIAbHVhTF9jaGVja29wdGlvbgBsdWFfc2V0bGV2ZWwAbHVhTF9yZWYAbHVhX2NyZWF0ZXRhYmxlAGx1YV9wdXNodmZzdHJpbmcAbHVhX3Jhd3NldABsdWFMX2NoZWNrbnVtYmVyAGx1YV9nZXRob29rAGx1YV94bW92ZQBsdWFMX29wdGxzdHJpbmcAbHVhTF9vcHRudW1iZXIAbHVhTF9wdXNocmVzdWx0AGx1YV9yYXdnZXRpAGx1YUxfcmVnaXN0ZXIAbHVhX3NldGxvY2FsAGx1YUxfb3BlbmxpYnMAbHVhb3Blbl9kZWJ1ZwBsdWFfY2FsbABsdWFfc2V0ZmllbGQAbHVhX2djAGx1YV9sZXNzdGhhbgBsdWFfcHVzaGludGVnZXIAbHVhb3Blbl9tYXRoAGx1YV9pc251bWJlcgBsdWFfcHVzaHRocmVhZABsdWFfb2JqbGVuAGx1YW9wZW5fc3RyaW5nAGx1YUxfY2hlY2tsc3RyaW5nAGx1YUxfcHJlcGJ1ZmZlcgBsdWFfc2V0YWxsb2NmAGx1YV9wdXNodmFsdWUAbHVhX3B1c2hmc3RyaW5nAGx1YV9nZXR0YWJsZQBfX2RhdGFfc3RhcnQAb3NfbWF0Y2huYW1lAGx1YUxfbmV3c3RhdGUAbHVhX2dldGZlbnYAcGF0aF9pc2Fic29sdXRlAGx1YV9sb2FkAGx1YV9uZXd1c2VyZGF0YQBsdWFMX2NoZWNraW50ZWdlcgBsdWFfc2V0bWV0YXRhYmxlAGx1YV9yYXdzZXRpAGRvX2lzZmlsZQBvc19tYXRjaG5leHQAbHVhX2R1bXAAbHVhX25ld3N0YXRlAHN0cmluZ19lbmRzd2l0aABsdWFfdG9udW1iZXIAb3NfbWF0Y2hpc2ZpbGUAX0lPX3N0ZGluX3VzZWQAbHVhX2dldHVwdmFsdWUAbHVhX3B1c2hudW1iZXIAbHVhX3NldHRhYmxlAG9zX3V1aWQAbHVhX3B1c2hib29sZWFuAGx1YV90b3BvaW50ZXIAb3NfZ2V0dmVyc2lvbgBsdWFMX29wdGludGVnZXIAbHVhTF9jaGVja3N0YWNrAF9fbGliY19jc3VfaW5pdABsdWFfYXRwYW5pYwBsdWFMX2NoZWNrdHlwZQBsdWFfc2V0ZmVudgBsdWFfcHVzaGxpZ2h0dXNlcmRhdGEAbHVhX2dldGFsbG9jZgBsdWFMX2NoZWNrdWRhdGEAX2VuZABvc19wYXRoc2VhcmNoAGx1YV9yYXdnZXQAbHVhTF9nc3ViAGx1YV9wdXNobHN0cmluZwBsdWFfaXNjZnVuY3Rpb24AbHVhTF9hZGRzdHJpbmcAbHVhX2luc2VydABvc19jb3B5ZmlsZQBsdWFfcmVtb3ZlAGx1YUxfY2hlY2thbnkAbHVhX25ld3RocmVhZABsdWFfcmF3ZXF1YWwAX19ic3Nfc3RhcnQAb3NfaXNkaXIAb3NfaXM2NGJpdABsdWFfZXJyb3IAb3NfbWF0Y2hkb25lAHByZW1ha2VfaW5pdABsdWFMX2FkZGxzdHJpbmcAbHVhTF9nZXRtZXRhZmllbGQAbHVhX3NldGhvb2sAbHVhX3RvdGhyZWFkAGx1YW9wZW5fb3MAbHVhX3R5cGVuYW1lAGx1YUxfZXJyb3IAbHVhX2lzdXNlcmRhdGEAbHVhX3RvY2Z1bmN0aW9uAG9zX21hdGNoc3RhcnQAbHVhb3Blbl9wYWNrYWdlAGx1YV9wdXNobmlsAGx1YUxfZmluZHRhYmxlAHByZW1ha2VfZXhlY3V0ZQBsdWFMX2xvYWRzdHJpbmcAbHVhb3Blbl90YWJsZQBsdWFMX3R5cGVycm9yAGx1YV9jcGNhbGwAbHVhTF9hZGR2YWx1ZQBsdWFfY29uY2F0AGx1YW9wZW5fYmFzZQBsdWFMX2xvYWRidWZmZXIAbHVhX3R5cGUAbHVhX3N0YXR1cwBsdWFMX25ld21ldGF0YWJsZQBsdWFfcmVzdW1lAGx1YUxfdW5yZWYAbHVhX3B1c2hzdHJpbmcAbHVhTF9idWZmaW5pdABsdWFfZ2V0bWV0YXRhYmxlAGx1YV9nZXRob29rY291bnQAbHVhX3NldHVwdmFsdWUAbHVhTF9sb2FkZmlsZQBsdWFfZ2V0ZmllbGQAb3NfZ2V0Y3dkAG9zX2lzZmlsZQBsdWFfZ2V0aG9va21hc2sAb3NfY2hkaXIAbHVhX2lzc3RyaW5nAHByZW1ha2VfbG9jYXRlAEdMSUJDXzIuMi41AEdMSUJDXzIuMTEAR0xJQkNfMi4zLjQAR0xJQkNfMi40AEdMSUJDXzIuNwBHTElCQ18yLjMAAAACAAMAAwADAAMABAADAAMAAAADAAUAAwADAAMAAwADAAQAAwADAAQAAwADAAMAAwADAAYAAwADAAMAAwAEAAMAAwADAAMAAwAEAAMABAADAAMABAADAAQAAwADAAMABAADAAMAAwADAAQAAwADAAMABAADAAMAAAADAAQAAwADAAMABwAEAAMAAwADAAMABAADAAMAAwAEAAMAAwADAAcACAADAAgAAwADAAkAAwADAAMAAwAAAAMAAwAEAAMABAADAAMABAAEAAMAAwAIAAAABAADAAcABAADAAMABwACAAIACAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAMAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAEAAQC8AAAAEAAAACAAAAB1GmkJAAAHAJ0LAAAAAAAAAQABAAEAAAAQAAAAIAAAAHUaaQkAAAQAnQsAAAAAAAABAAYA5AAAABAAAAAAAAAAkZGWBgAACQCpCwAAEAAAAHQZaQkAAAgAtAsAABAAAAAUaWkNAAAGAMALAAAQAAAAF2lpDQAABQDKCwAAEAAAAHUaaQkAAAMAnQsAABAAAAATaWkNAAACANQLAAAAAAAA+B9lAAAAAAAGAAAAPAAAAAAAAAAAAAAAUCVlAAAAAAAFAAAAoQAAAAAAAAAAAAAAWCVlAAAAAAAFAAAAjgAAAAAAAAAAAAAAYCVlAAAAAAAFAAAArwAAAAAAAAAAAAAAGCBlAAAAAAAHAAAAAQAAAAAAAAAAAAAAICBlAAAAAAAHAAAAAgAAAAAAAAAAAAAAKCBlAAAAAAAHAAAAAwAAAAAAAAAAAAAAMCBlAAAAAAAHAAAABAAAAAAAAAAAAAAAOCBlAAAAAAAHAAAABQAAAAAAAAAAAAAAQCBlAAAAAAAHAAAABgAAAAAAAAAAAAAASCBlAAAAAAAHAAAABwAAAAAAAAAAAAAAUCBlAAAAAAAHAAAACAAAAAAAAAAAAAAAWCBlAAAAAAAHAAAACgAAAAAAAAAAAAAAYCBlAAAAAAAHAAAACwAAAAAAAAAAAAAAaCBlAAAAAAAHAAAADAAAAAAAAAAAAAAAcCBlAAAAAAAHAAAADQAAAAAAAAAAAAAAeCBlAAAAAAAHAAAADgAAAAAAAAAAAAAAgCBlAAAAAAAHAAAADwAAAAAAAAAAAAAAiCBlAAAAAAAHAAAAEAAAAAAAAAAAAAAAkCBlAAAAAAAHAAAAEQAAAAAAAAAAAAAAmCBlAAAAAAAHAAAAEgAAAAAAAAAAAAAAoCBlAAAAAAAHAAAAEwAAAAAAAAAAAAAAqCBlAAAAAAAHAAAAFAAAAAAAAAAAAAAAsCBlAAAAAAAHAAAAFQAAAAAAAAAAAAAAuCBlAAAAAAAHAAAAFgAAAAAAAAAAAAAAwCBlAAAAAAAHAAAAFwAAAAAAAAAAAAAAyCBlAAAAAAAHAAAAGAAAAAAAAAAAAAAA0CBlAAAAAAAHAAAAGQAAAAAAAAAAAAAA2CBlAAAAAAAHAAAAGgAAAAAAAAAAAAAA4CBlAAAAAAAHAAAAGwAAAAAAAAAAAAAA6CBlAAAAAAAHAAAAHAAAAAAAAAAAAAAA8CBlAAAAAAAHAAAAHQAAAAAAAAAAAAAA+CBlAAAAAAAHAAAAHgAAAAAAAAAAAAAAACFlAAAAAAAHAAAAHwAAAAAAAAAAAAAACCFlAAAAAAAHAAAAIAAAAAAAAAAAAAAAECFlAAAAAAAHAAAAIQAAAAAAAAAAAAAAGCFlAAAAAAAHAAAAIgAAAAAAAAAAAAAAICFlAAAAAAAHAAAAIwAAAAAAAAAAAAAAKCFlAAAAAAAHAAAAJAAAAAAAAAAAAAAAMCFlAAAAAAAHAAAAJQAAAAAAAAAAAAAAOCFlAAAAAAAHAAAAJgAAAAAAAAAAAAAAQCFlAAAAAAAHAAAAJwAAAAAAAAAAAAAASCFlAAAAAAAHAAAAKAAAAAAAAAAAAAAAUCFlAAAAAAAHAAAAKQAAAAAAAAAAAAAAWCFlAAAAAAAHAAAA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JABoAwAAAOmw/////yVi5CQAaAQAAADpoP////8lWuQkAGgFAAAA6ZD/////JVLkJABoBgAAAOmA/////yVK5CQAaAcAAADpcP////8lQuQkAGgIAAAA6WD/////JTrkJABoCQAAAOlQ/////yUy5CQAaAoAAADpQP////8lKuQkAGgLAAAA6TD/////JSLkJABoDAAAAOkg/////yUa5CQAaA0AAADpEP////8lEuQkAGgOAAAA6QD/////JQrkJABoDwAAAOnw/v///yUC5CQAaBAAAADp4P7///8l+uMkAGgRAAAA6dD+////JfLjJABoEgAAAOnA/v///yXq4yQAaBMAAADpsP7///8l4uMkAGgUAAAA6aD+////JdrjJABoFQAAAOmQ/v///yXS4yQAaBYAAADpgP7///8lyuMkAGgXAAAA6XD+////JcLjJABoGAAAAOlg/v///yW64yQAaBkAAADpUP7///8lsuMkAGgaAAAA6UD+////JarjJABoGwAAAOkw/v///yWi4yQAaBwAAADpIP7///8lmuMkAGgdAAAA6RD+////JZLjJABoHgAAAOkA/v///yWK4yQAaB8AAADp8P3///8lguMkAGggAAAA6eD9////JXrjJABoIQAAAOnQ/f///yVy4yQAaCIAAADpwP3///8lauMkAGgjAAAA6bD9////JWLjJABoJAAAAOmg/f///yVa4yQAaCUAAADpkP3///8lUuMkAGgmAAAA6YD9////JUrjJABoJwAAAOlw/f///yVC4yQAaCgAAADpYP3///8lOuMkAGgpAAAA6VD9////JTLjJABoKgAAAOlA/f///yUq4yQAaCsAAADpMP3///8lIuMkAGgsAAAA6SD9////JRrjJABoLQAAAOkQ/f///yUS4yQAaC4AAADpAP3///8lCuMkAGgvAAAA6fD8////JQLjJABoMAAAAOng/P///yX64iQAaDEAAADp0Pz///8l8uIkAGgyAAAA6cD8////JeriJABoMwAAAOmw/P///yXi4iQAaDQAAADpoPz///8l2uIkAGg1AAAA6ZD8////JdLiJABoNgAAAOmA/P///yXK4iQAaDcAAADpcPz///8lwuIkAGg4AAAA6WD8////JbriJABoOQAAAOlQ/P///yWy4iQAaDoAAADpQPz///8lquIkAGg7AAAA6TD8////JaLiJABoPAAAAOkg/P///yWa4iQAaD0AAADpEPz///8lkuIkAGg+AAAA6QD8////JYriJABoPwAAAOnw+////yWC4iQAaEAAAADp4Pv///8leuIkAGhBAAAA6dD7////JXLiJABoQgAAAOnA+////yVq4iQAaEMAAADpsPv///8lYuIkAGhEAAAA6aD7////JVriJABoRQAAAOmQ+////yVS4iQAaEYAAADpgPv///8lSuIkAGhHAAAA6XD7////JULiJABoSAAAAOlg+////yU64iQAaEkAAADpUPv///8lMuIkAGhKAAAA6UD7////JSriJABoSwAAAOkw+////yUi4iQAaEwAAADpIPv///8lGuIkAGhNAAAA6RD7////JRLiJABoTgAAAOkA+////yUK4iQAaE8AAADp8Pr///8lAuIkAGhQAAAA6eD6////JfrhJABoUQAAAOnQ+v///yXy4SQAaFIAAADpwPr///8l6uEkAGhTAAAA6bD6////JeLhJABoVAAAAOmg+v///yXa4SQAaFUAAADpkPr///8l0uEkAGhWAAAA6YD6////JcrhJABoVwAAAOlw+v///yXC4SQAaFgAAADpYPr///8luuEkAGhZAAAA6VD6////JbLhJABoWgAAAOlA+v///yWq4SQAaFsAAADpMPr///8louEkAGhcAAAA6SD6////JZrhJABoXQAAAOkQ+v///yWS4SQAaF4AAADpAPr///8liuEkAGhfAAAA6fD5////JYLhJABoYAAAAOng+f///yV64SQAaGEAAADp0Pn///8lcuEkAGhiAAAA6cD5////JWrhJABoYwAAAOmw+f///yVi4SQAaGQAAADpoPn///8lWuEkAGhlAAAA6ZD5////JVLhJABoZgAAAOmA+f///yVK4SQAaGcAAADpcPn///8lQuEkAGhoAAAA6WD5////JTrhJABoaQAAAOlQ+f///yUy4SQAaGoAAADpQPn///8lKuEkAGhrAAAA6TD5////JSLhJABobAAAAOkg+f///yUa4SQAaG0AAADpEPn///8lEuEkAGhuAAAA6QD5//9BVUGJ/UFUSYn0VVNR6HMzAABIicNIicfoR5gAAEiJ3+jhDAAASYs0JEiJ34nF6C4PAAC6gJlBAL7u2P//SInf6DcdAACF7XUQTIni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AACJ7kiJ3+gS/f//8g8QBCRIg8QYW13DVYn1U0iJ+0iD7BjyDxEEJOj66v//hcDyDxAEJH4QSIPEGEiJ34nuW13phP///0iDxBhbXcNBVFWJ9VNIifvod+z//0iFwEmJxHUdie5Iid/oAuv//4XAdQ+6AwAAAInuSInf6J78//9bXUyJ4EFcw0FUSYnUVYn1U0iJ++iO6v//hcB+DkiJ34nuW11BXOmi////W11MieBBXMNBVEmJ1FUx7VNIifvocfH//4XAdEhMieZIid/oPu7//77+////SInf6Knw//+Dzv9Iid/oPOr//4XAdQ++/f///0iJ3+i76P//6xK+/v///0iJ370BAAAA6OHo//9biehdQVzDVY2GDycAAEiJ/VOJ80iD7Bg9DycAAHcTSIlUJAjocej//0iLVCQIjVwYAYneSInv6Gf///8x0oXAdCGJ3kiJ7+io6f//ugEAAAC+AQAAAEiJ7+jQ8///ugEAAABIg8QYidBbXcNBV0FWSYPO/0FVQYnNQVRVU0iJ+1VIidXoa+n//74uAAAASInv6I7O//9IhcBJicR1EjHATInxSInv8q5I99FMjWQN/02J50iJ7kiJ30kp70yJ+ujs7P//vv7///9Iid/oqO///4PO/0iJ3+g76f//hcB1T0iJ377+////6Lrn//9BgDwkLroBAAAASInfQQ9F1TH26NPv//9MifpIie5Iid/onez//0iJ377+////6NTo//++/P///0iJ3+ic8P//6x+Dzv9Iid/o3ej//4P4BXQPvv3///9Iid/oW+f//+sfvv7///9Iid9JjWwkAeiB5///QYA8JC4PhB7///8x7VtbSInoXUFcQV1BXkFfw0FXSIX2QVZBVUFUSYnUVYnNU0iJ+0FVSYn1dQ7p8wAAAEH/xkiDwBDrBkiJ0EUx9kiDOAB167kBAAAAul94RAC+8Nj//0iJ3+ij/v//g87/TInqSInf6EPu//+Dzv9Iid/oNej//4P4BXRSvv7///9Iid/os+b//0SJ8UyJ6r7u2P//SInf6GX+//9IhcB0EkyJ6r5neEQASInfMcDoHvj//4PO/0iJ3+jL5///TInqvv3///9Iid/ot+///0iJ377+////6Jvm//+J7kiJ3/fW6L7m///rPESJ/kiJ30H/xuiS5///6wNFMfZBOe586EmLdCQIiepIid/ooez//0mLFCREie5Iid9Jg8QQ6GLv///rD0GJ70G9/v///0H330Ep7UmDPCQAdb5BXEiJ34nuW11BXEFdQV5BX/fW6enl//8xyem3/v//U0iJ++iZ9f//hcB0DoN7CAF+CEiJ3+h99v//SI1DGFvDQVVMja8YIAAAQVRMjSQWVUiJ9VNIiftQ6x5MOStyCEiJ3+i4////SIsDilUASP/FiBBI/8BIiQNMOeV13VhbXUFcQV3DSYn4McBIifdIg8n/8q5MicdI99FIjVH/6Z7///9TSIn76Bb1//+LcwhIi3sQ6P3y///HQwgBAAAAW8NBV0mJz0iDyf9BVkFVSYnVQVRJifxIiddVU0iJ80iB7DggAABkSIsEJSgAAABIiYQkKCAAADHASI1sJBDyrkiNRRhMiWQkIMdEJBgAAAAASPfRTI1x/0iJRCQQ6ypIicJIid5Iie9IKdpIiUQkCOgN////TIn+SInv6Ef///9Ii0QkCEqNHDBMie5Iid/oHND//0iFwHXGSIneSInv6CP///9Iie/oOP///zHSg87/TInn6PPn//9Ii5QkKCAAAGRIMxQlKAAAAHQF6M/K//9IgcQ4IAAAW11BXEFdQV5BX8NVg87/U0iJ+0iD7BhIi28QSI1UJAhIie/orOf//0iLE0iJxkiLTCQISInYSCnQSAUYIAAASDnBdxxIidfzpL7+////SInvSItEJAhIAQPoDeT//+stSInf6MPz//+FwHQNvv7///9Iie/oW+T//4tDCP/AiUMI/8h+CEiJ3+iU9P//SIPEGFtdw0iNRhhIiX4Qx0YIAAAAAEiJBsNBVY2GDycAAEFUPQ8nAABVifVTSIn7UXcJ6Jnj//+NbCgBg87/SInf6Afl//+FwHUTvv7///9Iid9Bg8z/6ILj///rZTHSie5Iid/ocuv//4PO/0iJ3+iE5v//vv7///9JicVIid9BicToVuP//0WF7XQbRInqie5Iid/oQuv//zHSie5Iid/oQ+3//+sOie5Iid/oDOf//0SNYAFEieKJ7kiJ3+gm7f//WltdRIngQVxBXcNBVIXSQYnUVVN4T42GDycAAEiJ/YnzPQ8nAAB3Cejh4v//jVwYAYneSInvMdLo3Or//0SJ4oneSInv6Nzs//9JY/RIie/otef//4neSInvMdJbXUFc6cHs//9bXUFcw0FWQVVBVFVIifVTSIn7SIHsICAAAGRIiwQlKAAAAEiJhCQYIAAAMcDod+L//0iF7USNYAHHRCQIAAAAAHUgugYAAAC+hXhEAEiJ3+hq5///SIsF/7AkAEiJRCQQ6zFIieq+jHhEAEiJ3zHA6Pzn//++8JxEAEiJ7+iBzP//SIXASIlEJBBEieK+knhEAHReSIt8JBDoRcv//4P4I3Uhx0QkCAEAAABIi3wkEOguy///g/j/dGSD+Ap17OnhAAAAg/gbdVVIhe10UEiLVCQQvleWQQBIie/o08j//0iFwEiJRCQQdRhEieK+kHhEAEiJ3+is8f//QYnF6YsAAABIi3wkEOjXyv//g/j/dAWD+Bt17MdEJAgAAAAASIt0JBCJx+jZyv//MdKDzv9Iid/o6OT//0iNVCQISInBvgNnQABIid/ov+3//0iLfCQQQYnF6PrG//9Ihe1BicZ0CkiLfCQQ6GjH//9FhfZEieZIid90Eug74f//RInivnOiRADpav///+hj4f//SIuUJBggAABkSDMUJSgAAABEieh0FusPSIt8JBDoNMr//+kQ////6FrH//9IgcQgIAAAW11BXEFdQV7DSIPsGEiJNCRIiVQkCL4UZkAASIni6Cjt//9Ig8QYw0mJ+DHASIn3SIPJ//KuTInHSPfRSI1R/0iJ8enB////UzH2v1lmQADoMsgAAEiFwEiJw3QNvi9mQABIicfoOOD//0iJ2FvDU0iJ++hx4P//SInficZb6Q9NAABTSIn76Jjn//+FwHQISInf6CTl//+4AQAAAFvDVVNIiftR6Avg//++AQAAAEiJ30iJxeis4f//g/gGdBS6l3hEAL4BAAAASInf6Hvy///rEb4BAAAASInf6LLh//+FwHXbSInfvgEAAADoUuH//7oBAAAASInuSInf6Fnf//9aW7gBAAAAXcNTSIn76Iz///9Iid+6AQAAAL4Wg0AA6Ebm//+4AQAAAFvDU74BAAAASIn76In0//9Iid/op9///41w/zHJg8r/SInf6GHr//8x9oXASInfQA+UxuiU5v//SInfvgEAAADo8N///0iJ31vpcd///1O+AgAAAEiJ++g99P//SInfvgIAAADoY9///0iJ374BAAAA6L/f//+Dyv+5AQAAADH2SInf6AHr//8x9oXASInfQA+Uxug05v//SInfvgEAAADoxt///0iJ31vpEd///1O6BQAAAEiJ+74BAAAA6KXz//9Iid++7dj//+hL4P//SInfvgEAAADoPuD//0iJ3+iv4///uAMAAABbw1W6AQAAAL4CAAAAU0iJ+0FQ6J31//++AQAAAEiJ30iJxei83v//vgEAAABIid/olOD//4XAdCiF7X4kie5Iid/otu///74BAAAASInf6N3f//++AgAAAEiJ3+g27P//XkiJ31td6fPr//9BV7oFAAAAvgEAAABBVkFVQVRVU0iJ+0FT6PTy//+6AQAAAL4CAAAASInf6Bn1//++AwAAAEiJ30iJxeio3///hcB/D74BAAAASInf6Afi///rDb4DAAAASInf6K70//85xUGJxX9vQYnEQSnsQf/ERYXkfxtBWkiJ376teEQAMcBbXUFcQV1BXkFf6X3v//9EieZIid/oz9z//4XAdNaJ6r4BAAAASInf6Mjl//9FMfZEjX0B6xC+AQAAAEiJ30n/xuiv5f//QY0ELkONFDdEOeh84+sDRTHkQVlbXUSJ4EFcQV1BXkFfw1O+AQAAAEiJ++hO8v//SInfvgEAAADo5N7//0iJ34nG6O/e//9Iid9IicboueL//7gBAAAAW8NBVLoKAAAAvgIAAABVU0iJ+0iD7BDoD/T//4P4CkiJxXU0vgEAAABIid/o9vH//74BAAAASInf6NTe//+FwA+EqQAAAL4BAAAASInf6Pff///pjQAAADHSvgEAAABIid/o5/H//0mJxI1F/oP4InYSush4RAC+AgAAAEiJ3+gs7///SI10JAiJ6kyJ5+hkx///TDtkJAhIicV0UuhlyP//SIsI6whI/8JIiVQkCEiLVCQIigIPtvD2RHEBIHXnhMB1K0iF7XgH8kgPKsXrFUiJ6IPlAUjR6EgJ6PJIDyrA8g9YwEiJ3+hH4f//6whIid/oKeH//0iDxBC4AQAAAFtdQVzDVb4CAAAAU0iJ+1Hotd3//7oFAAAAicW+AQAAAEiJ3+jL8P//g/0FdBaF7XQSutp4RAC+AgAAAEiJ3+hs7v//uvB4RAC+AQAAAEiJ3+gA8///hcB0D778eEQASInfMcDohu3//0iJ374CAAAA6OTb//9Iid++AQAAAOhQ5v//Wlu4AQAAAF3DVYn1vgEAAABTSIn7SIHsiAAAAGRIiwQlKAAAAEiJRCR4McDoFt3//4P4BnUSvgEAAABIid/o4dz//+mOAAAAhe10FLoBAAAAvgEAAABIid/oSvL//+sNvgEAAABIid/oAPL//4XAicV5ErogeUQAvgEAAABIid/oqO3//0iJ4onuSInf6NwuAACFwHUSujt5RAC+AQAAAEiJ3+iF7f//SInivleORABIid/onjUAAIPO/0iJ3+iE3P//hcB1D4nqvkl5RABIid/oluz//0iLRCR4ZEgzBCUoAAAAdAXoScH//0iBxIgAAABbXcNTugUAAABIifu+AgAAAOhp7///MfZIid/o9/7//74CAAAASInf6AXc//++AQAAAEiJ3+hj3P//hcB0Pr4BAAAASInf6Ird//8PV8lmDy7Beih1JkiJ3+i14f//vv7///9Iid/o49r//77+////SInf6HHl//8xwOs4vv7///9Iid/o+Nv//4XAdBG+e3lEAEiJ3zHA6N7r///rEb7+////SInf6D7l//+FwHTeuAEAAABbw0FUVVNIifvoFtr//74BAAAASInficXohNv//4P4BHUoMdK+AQAAAEiJ3+hp3f//gDgjdRT/zUiJ30hj9ejd3v//uAEAAADrO74BAAAASInf6HDw//+FwESNZAUAeAk56EGJ7EQPTuBFheR/ErqveUQAvgEAAABIid/oB+z//4noRCngW11BXMNVU0iJ+1a+AgAAAOgt8P//SInFugUAAABIid//xb4BAAAA6Bru//9IY/VIid/oZN7//4nqSInfvgEAAADoZOH//0iJ34PO/+jL2v//g/gBGcBf99Bbg+ACXcNTugUAAABIifu+AQAAAOjU7f//SInfvu3Y///oetr//0iJ374BAAAA6G3a//9Iid8x9ugF3v//uAMAAABbw1O6BQAAAEiJ+74BAAAA6Jbt//9Iid++AgAAAOi87f//SInfvgMAAADor+3//0iJ374DAAAA6NXY//9Iid++AQAAAOh04v//uAEAAABbw1O6BQAAAEiJ+74BAAAA6Ejt//9Iid++AgAAAOhu7f//SInfvgIAAADolNj//0iJ374BAAAA6Fng//+4AQAAAFvDU74BAAAASIn76D/t//9Iid++AgAAAOgy7f//SInfugIAAAC+AQAAAOhk2v//SInficboSd///7gBAAAAW8NBVUFUVb0BAAAAU0iJ+0FS6CDY//+6p3pEAL7u2P//SInfQYnF6Ivf///phwAAAIPO/0iJ3+hV2f//ie5Iid/oS9n//7oBAAAAvgEAAABIid/oc+P//zHSg87/SInf6Ejb//9IhcBJicR1F0FZSInfvsJ5RAAxwFtdQVxBXelV6f//g/0BfhFIizVRpiQAvwkAAADoN7///0iLNUCmJABMief/xeh2vv//vv7///9Iid/ojNf//0Q57Q+OcP///0iLNRmmJAC/CgAAAOj/vv//QVhbXUFcMcBBXcNVvgIAAABTSIn7VUiJ1brteUQA6Lbr//++AQAAAEiJ3+iP2P//Mfa6AQAAAEiJ3+i64v//g87/SInf6JjY//+FwHUKSMdFAAAAAADrPoPO/0iJ3+j02P//hcB0IEiJ374DAAAA6J3X//9Iid9Iieq+AwAAAFtbXelU2v//vgd6RABIid8xwOhx6P//QVtbMcBdw0FUMckx0r4BAAAAVVNIifvo6ev//0iJ30mJxOio1v//TInmSInficXo9/P//4XAdAhIid/oF+T//0iJ34PK/zH26Bbi//9Iid/oetb//1sp6F1BXMNTvgEAAABIifvopPr//4PO/0iJ3+gD2P//hcB0D77u2P//SInf6KPX///rC4PO/0iJ3+gW3///uAEAAABbw1Mx0kiJ+74DAAAA6Pri//9Iid9IY/DoFtv//7gBAAAAW8NBVLkwfkQAuix6RAC+AQAAAFVTSIn76JDr//8x0khj6L4CAAAASInf6MTs//9EiyStcH5EAInCSInfRInm6Kbi//9Bg/wDicV0CEGD/AV1M+slMdK+BAAAAEiJ3+iH4v//8g8qyPIPKsXyD1kNjP0DAPIPWMHrEInGSInf6J/c///rDPIPKsBIid/oa9r//1tduAEAAABBXMNTugUAAABIifu+AQAAAOgO6v//vgIAAABIid/oZ9X//74BAAAASInf6N/i//+FwLoCAAAAdQ1Iid/oD9r//7oBAAAAidBbw1NIifNIg8SAZEiLBCUoAAAASIlEJHgxwEg593RDSIn36N7h//+FwHQNMdL/yA+Vwo1UEgHrLEiJ4jH2SInf6JQoAACFwLoCAAAAfxZIid/o39T//4P4ARnSg+IC/8LrAjHSidBIi1QkeGRIMxQlKAAAAHQF6CS7//9Ig+yAW8NBVUFUQYnUVUiJ9VNIiftBVehr////RInmSInvTGPo6I/T//+FwHUNvjR6RABIid/oIeb//0GD/QF0GUqLFO2AfEQAvlF6RABIid8xwOgq2v//63BEieJIie5Iid/ow9P//0iJ7kiJ3+j40///RInmSInv6EhAAACD+AF3N0iJ7+gv1P//jXABSInfQYnE6CDT//+FwHUNvmx6RABIid/osuX//0SJ4kiJ3kiJ7+hz0///6xS6AQAAAEiJ3kiJ7+hh0///QYPM/0SJ4EFcW11BXEFdw1W+AQAAAFNIiftR6F3Y//9IhcBIicV1ErqHekQAvgEAAABIid/oGeb//0iJ7kiJ3+h4/v//SJhIid9IizTFgHxEAOgA2f//Wlu4AQAAAF3DVb7t2P//U0iJ+0FQ6AzY//9Iid9IicXodNP//0iJ7onCSInf6LP+//+FwInFeT6Dzv9Iid/oSNX//4XAdCe+AQAAAEiJ3+hr5P//vv7///9Iid/ortP//74CAAAASInf6Ovg//9Iid/oq+D//15biehdw1W+AQAAAFNIiftBUuiZ1///SIXASInFdRK6h3pEAL4BAAAASInf6FXl//9Iid/o6tL//41Q/0iJ7kiJ3+go/v//hcCJxXkeMfZIid/o2dn//77+////SInf6DXT//+4AgAAAOscvgEAAABIid/ouNn//4nuSInf99boFdP//41FAUFZW13DVb4BAAAAU1NIifvoYef//7qlekQAvgEAAABIid/o4un//4XAD4XAAAAAvgEAAABIid/o3dP//4P4AXQ3fwaFwHRY62qD+AN0B4P4BHVg6xS+AQAAADHSSInf6K7V//9IicbrLL4BAAAASInf6IDT///rd74BAAAASInf6GzV//++mnpEAIXAuJ96RABID0TwSInf6GbX///rULoDAAAAvq2gRABIid/oAdf//+s8vgEAAABIid/oe9b//74BAAAASInfSInF6EnT//9Iid+JxuhU0///SInpSInCvrB6RABIid8xwOh11///QVtbuAEAAABdw1O+AQAAAEiJ++hv5v//vgEAAABIid/o3dT//4XAdSdIid+6t3pEAL4CAAAAMcnopub//0iJ30iJwr7ikEQAWzHA6f/i//9Iid9b6VTR//9TvgEAAABIifvoIOb//74BAAAASInf6MTZ//+FwHUKSInf6ADW///rErrweEQAvgEAAABIid/oIuj//7gBAAAAW8NVvgEAAABTSIn7UOgP0f//MfZIid/oT9///74BAAAASInf6EDU//+FwA+ErgAAAL4BAAAASInf6FPS////yHUzMdIx9kiJ3+gE2f//g87/SInf6BXS//9Iid++AQAAAOi71///vu3Y//9Iid/oWtr//+tdvgEAAABIid/oHdn//4XAdRS6yXpEAL4BAAAASInf6N/i///rK77t2P//SInf6EzY//+Dzv9Iid/ot9P//77+////icVIid/oYND//4XtdMG+AQAAAEiJ3+jN2P//vgIAAABIid/ou9r//11buAEAAABdw1Mx0jHJSIn7vgEAAADoUOX//0iJ30iJxuhr7f//hcC6AQAAAHQaSInf6NHU//++/v///0iJ3+hn0P//ugIAAACJ0FvDVbrjekQAvgIAAABTSIn7UTHJ6Afl//+6BgAAAL4BAAAASInfSInF6GPk//++AwAAAEiJ3+i8z///MdJIiem+TH9AAEiJ3+j/2///hcC6AQAAAHQaSInf6F/U//++/v///0iJ3+j1z///ugIAAACJ0FpbXcNVvgEAAABTSIn7SIPsGEiNVCQI6F3k//8xyUiJwr4CAAAASInfSInF6H3k//9Ii1QkCEiJwUiJ7kiJ3+hU7v//hcC6AQAAAHQaSInf6PbT//++/v///0iJ3+iMz///ugIAAABIg8QYidBbXcNTvu7Y//9IifvoVND//0iJ37rrekQAvu7Y///oPtj//0iJ37qgfEQAvut6RADo+uj//0iJ37oHAAAAvu56RADo2tP//0iJ37rqlkEAvu7Y///oCNj//0iJ3zHSvgx9QADoJdX//0iJ37oBAAAAvmZ9QADoE9X//0iJ37r2ekQAvv7////o1df//0iJ3zHSviyBQADo8tT//0iJ37oBAAAAvpV3QADo4NT//0iJ37r3ekQAvv7////ootf//7oBAAAASInfMfboe9b//0iJ34PO/+iMz///SInfvv7////oq9j//0iJ37oCAAAAvv16RADoKdP//0iJ37oAe0QAvv7////oV9f//0iJ37oBAAAAvpSFQADocdT//0iJ37oHe0QAvu7Y///oM9f//0iJ37oQfEQAvg+HRADo7+f//7gCAAAAW8NmkFVTUUiLB0hjzvfWjRwySItAGEiNLIiJ2JmJ0DHYKdA9//8BAH4OSIt/GL6YfkQA6J1kAACLRQCN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i0wkCEUxwInCvggAAADrOEiJ1uhL9///QYtMJAiJwr4HAAAASInf6Ef0///rIkiJ1uiI9///QYtMJAxBi1QkCEGJwL4JAAAASInf6HLz//9Iid9Iie5bXUFc6UTx//9BVI1C/1WZifW+MgAAAPf+g/n/U0iJ+0SNYAG4AAAAAA9EyEGB/P8BAAB/D0WJ4InqQLYi6Crz///rIYnqviIAAABFMcDoGfP//0iLQxhEieZIid+LUAjoIPD////FiWs8W11BXMMPHwBBVFWJ9b4CAAAAU0iJ++i+0f//ugYAAAC+AQAAAEiJ30mJxOitz///vgEAAABIid/oorz//4XAdAQxwOs6he1EieK+AQAAAEiJ33QH6IPJ///rBejEyf//SIXAdNxIicZIid/oLcD//4nuSInf99boMLv//41FAVtdQVzDU74DAAAASIn76H7P//9Iid8x9lvpa////74BAAAA6WH///9TvgIAAABIifvo/rv//4P4BXQWhcB0ErraeEQAvgIAAABIid/oycz//0iJ374CAAAA6Ga6//9Iid++AQAAAOjSxP//SInficboT8H//7gBAAAAW8NQvvDY///oirv//7gBAAAAWsNTugUAAABIifu+AgAAAOi9zv//vgIAAABIid/oFrr//74BAAAASInf6A3F//+FwHUNvnt5RABIid/ojcv//7gBAAAAW8NTvgEAAABIifvosM7//74BAAAASInf6FTC//+FwHUISInf6JC+//+4AQAAAFvDVUiJ9Uhj8lNIiftR6KG+//9BWEiJ30iJ6r7+////W13p58L//1VIifVIidZTSIn7QVHo5r7//0FaSInfSInqvv7///9bXenBwv//VUiJ1VNTSIn7SIn3SDnzdRxIid++/v///+inuv//vv3///9Iid/oh7n//+sNugEAAABIid7oorj//0FbSInfSInqvv7///9bXelzwv//UL4BAAAA6OzB//+4AQAAAFrDQVRVU0iJ+0iB7BABAABkSIsEJSgAAABIiYQkCAEAADHASI1sJA5IizWYhyQAv6CBRADovp///0iLFX+HJAC++gAAAEiJ7+jKoP//SIXAdBG+rIFEAEiJ7+j4oP//hcB1GzHASIuUJAgBAABkSDMUJSgAAAAPhIAAAADreTHASIPJ/0iJ7/KuSInuSInfSPfRSI1R/7mygUQA6I3X//+FwHQyTIslHIckADHSg87/SInf6Mu7//9MieZIicfoNJ///0iLNf2GJAC/CgAAAOjTn///6xIxyTHSMfZIid/o88P//4XAdbwx9kiJ3+gouP//6TH////oe57//0iBxBABAABbXUFcw1VIifW+AQAAAFNIiftBUehuuf//g/gIdRjHRQABAAAASInfvgEAAABBWFtd6WG8///HRQAAAAAASInYWVtdw0FWQVVBVFVTSIn7SIHskAAAAEiNdCQMZEiLBCUoAAAASImEJIgAAAAxwOiS////i3QkDEiJ30mJxIPGAuhKuf//hcB0IIt0JAxIid+DxgLomrr//77+////SInficXocLf//+sJMe1MOeNAD5TFSInf6FC3//+LdCQMOfB1CTHSvluSRADrHP/GSInf6Ce5//+FwA+EkwEAALoBAAAAvhV/QgBIid9BvgEAAADoK7z//7oQAAAAvsOBRABIid/oGbz//+kzAQAAQYP9DH5VRYX2dFCNdQtIjVQkEEyJ50Ux9uiECgAAhcAPhA0BAAC6BQAAAL7UgUQASInf6Ny7//9Eie3rAv/FjXUKSI1UJBBMiefoUwoAAIXAdepFMfbp2AAAALoCAAAAvtqBRABIid/op7v//0iNVCQQvt2BRABMiefoCxEAAEiNVCRIMcC+4YFEAEiJ3+gzvP//i1QkOIXSfg++5YFEAEiJ3zHA6By8//9Ii0QkIIA4AHQWSItUJBi+6YFEAEiJ3zHA6P67///rUEiLRCQoigA8bXURvvuBRABIid8xwOjiu///6zQ8dHQEPEN1FLoCAAAAvgqCRABIid/oFLv//+sYi0wkQEiNVCRIvg2CRABIid8xwOisu///SInfRInt6Nm1//8rRCQMSInficboi8P//0iNVCQQie5MiedEjW0B6FwJAACFwA+Fsv7//0iJ3+iotf//K0QkDEiJ34nG6FrD//9Ii5QkiAAAAGRIMxQlKAAAALgBAAAAdAXo55v//0iBxJAAAABbXUFcQV1BXsNVU0iJ+0iB7JgAAABIjXQkDGRIiwQlKAAAAEiJhCSIAAAAMcDoP/3//4t0JAxIid9IicX/xujWy///SI1UJBCJxkiJ7+jICAAAhcCLdCQMdRH/xroigkQASInf6HDH///rWIPGA0iJ3+jayf//i3QkDEiJ34PGA+j+tP//ugEAAABIie5Iid/oUrT//4t0JAxIid+DxgLodcv//0iNdCQQicJIie/oFAkAAEiJ30iJxugfuv//uAEAAABIi5QkiAAAAGRIMxQlKAAAAHQF6AWb//9IgcSYAAAAW13DQVRVU0iJ+0iB7JAAAABIjXQkDGRIiwQlKAAAAEiJhCSIAAAAMcDoYfz//4t0JAxIid9IicX/xuj4yv//SI1UJBCJxkiJ7+jqBwAAhcCLdCQMdRH/xroigkQASInf6JLG///rXoPGAkiJ3+jFyv//SI10JBCJwkiJ7+gVCAAASIXASYnEdC+6AQAAAEiJ3kiJ7+hss///TInmSInf6Fe5//++/v///0iJ3+g9tf//uAIAAADrDUiJ3+inuP//uAEAAABIi5QkiAAAAGRIMxQlKAAAAHQF6CGa//9IgcSQAAAAW11BXMNBVFVTSIn7SIHskAAAAEiNdCQMZEiLBCUoAAAASImEJIgAAAAxwOh7+///i3QkDDHJujWCRABIid9JicSDxgLoncj//4t0JAxIid9IicX/xugbtf//hcCLdCQMdCr/xkiJ3+hstv//SI1UJBCJxkyJ5+jZBgAAhcB1a0iJ3+j8t///6cQBAAD/xkiJ3+iXtP//g/gGdUJIiepIid++O4JEADHA6Mu4//8x0oPO/0iJ3+hstv//i3QkDEiJ30iJxf/G6D+0//+6AQAAAEyJ5kiJ3+hGsv//6w2LdCQMuj+CRAD/xusgSI1UJBBIie5MiefoQg0AAIXAdRmLdCQMulqCRACDxgJIid/oAcX//+k+AQAAMfa6AgAAAEiJ3+jIuv//vlMAAABIie/oB5n//0iFwHRYSItUJDC+aYJEAEiJ3+jV+P//SI1UJEi+cIJEAEiJ3+jD+P//i1QkQL5+gkQASInf6I34//+LVCREvnqCRABIid/ofPj//0iLVCQovp+CRABIid/oj/j//75sAAAASInv6J2Y//9IhcB0EYtUJDi+ioJEAEiJ3+hH+P//vnUAAABIie/oepj//0iFwHQRi1QkPL6WgkQASInf6CT4//++bgAAAEiJ7+hXmP//SIXAdCRIi1QkGL66l0QASInf6CX4//9Ii1QkIL6bgkQASInf6BP4//++TAAAAEiJ7+ghmP//SIXAdBC6pIJEAEyJ5kiJ3+gX+P//vmYAAABIie/o/5f//0iFwHQQurCCRABMieZIid/o9ff//7gBAAAASIuUJIgAAABkSDMUJSgAAAB0Beitl///SIHEkAAAAFtdQVzDU74ghEQASIn76FC4//++8Nj//0iJ3+j7uP//g87/SInf6I6y//+D+AV0REiJ377+////6Ayx//+6AQAAAEiJ3zH26C65//9Iid++IIREAOgKuP//SInfvv7////oMLL//0iJ377w2P//W+mBuv//W8NBV0FWQVVBVFVTSIn7SIPsGEiNdCQM6Kb4//+LdCQMSInfSYnF/8boF7L//4XAi3QkDH8X/8ZIid9FMeTokrD//0Ux9jHt6ZEAAACDxgIx0kiJ3+hvxf//i3QkDLoGAAAASInfSYnEMe3/xuj9xP//i3QkDDHSSInfg8YD6CPH//9Miee+YwAAAEmJx0GJxui8lv//SIXATInnvnIAAABAD5XF6KiW//+J6kyJ575sAAAAg8oCSIXAQbwbqEAAD0Xq6IqW//+J6oPKBEiFwA9F6onog8gIRYX/D0/oSInf6Kv+//9Mie5Iid/o/rb//4t0JAxIid//xugjsf//SInfvv3////odbn//0iJ377+////6Lyv//9EifGJ6kyJ5kyJ7+gVAwAASIPEGDHAW11BXEFdQV5BX8NBVFVTSIn7SIPsIEiNdCQMZEiLBCUoAAAASIlEJBgxwOhk9///SInFSInH6PkCAABIie9BicTo6QIAAEiFwHQcSD0bqEAAdBS6DQAAAL61gkQASInf6Eq0///rLUiJ3+jz/f//SInuSInf6Ea2//++/v///0iJ3+jxtv//vv7///9Iid/oTK///zHSQfbEAXQHxkQkE2OyAUH2xAJ0Ckhjwv/CxkQEE3JBgOQEdApIY8L/wsZEBBNsSI10JBNIY9JIid/GRBQTAOgotP//SInv6FkCAABIid9IY/DoqrP//0iLVCQYZEgzFCUoAAAAuAMAAAB0Bej+lP//SIPEIFtdQVzDVUiJ9b4ghEQAU1NIifvon7X//77w2P//SInf6Eq2//9Iid5Iid/oh7X//77+////SInf6DK2//+Dzv9Iid/oxa///4P4BnU+SGNFAEiJ30iLNMUwhEQA6Jaz//9IY3UoSInfhfZ4B+gbs///6wXo67L//0FbSInfMdK+AgAAAFtd6Zm5//9BWltdw1C6MINEAL7DgkQA6BTI//+4AQAAAFrDDx8A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ShBIifJIif5Iizv/UwiJQxxbw0iD7BhIifK+AQAAAECIfCQPSI18JA/oxv///0iDxBjDSIPsGEiJ8r4EAAAAiXwkDEiNfCQM6Kf///9Ig8QYw1VTSInzSIPsGEiF/3QJSIn9SIPFGHUYSMdEJAgAAAAASInavggAAABIjXwkCOspSItHEEiNfCQISInyvggAAABI/8BIiUQkCOhV////SIt0JAhIidpIie/oRf///0iDxBhbXcNBVkFVQVRVSIn9U0iJ00iD7BBIi39ASDn3dQQx/+sGg3oYAHX2SIne6G////+LfWBIid7oRf///4t9ZEiJ3ug6////D7Z9cEiJ3ugO////D7Z9cUiJ3ugC////D7Z9ckiJ3uj2/v//D7Z9c0iJ3ujq/v//TGNlUEyLbRhIid5Eiefo9/7//0qNNKUAAAAATInvSInaRTHt6KL+//9Ei3VMSIneRIn36NL+///raE2J7EiJ3knB5ARMA2UQQYt8JAjomP7//0GLRCQIg/gDdBeD+AR0Mv/IdTpBizwkSIne6Hn+///rLPJBDxAEJEiNfCQISInavggAAADyDxFEJAjoOv7//+sMSYs8JEiJ3uiK/v//Sf/FRTnuf5NEi21YSIneRTHkRInv6FH+///rF0iLRSBIi3VASInaSos84En/xOi7/v//RTnlf+RFMeSDexgAdQRMY2VUTIttKEiJ3kSJ5+gX/v//So00pQAAAABIidpMie9FMe3owv3//4N7GAB1BESLbVxIid5Eie9FMeTo6f3//+s8SItFME2J5kiJ3knB5gRJ/8RKizww6Oz9//9Ii0UwSIneQot8MAjovP3//0iLRTBIid5Ci3wwDOir/f//RTnlf79FMe2DexgAdQREi21ISIneRInvRTHk6Iv9///rE0iLRThIid5KizzgSf/E6JX9//9FOeV/6EiDxBBbXUFcQV1BXsNTSInzSIPsQEiJfCQISI18JCxIiUwkGGRIiwQlKAAAAEiJRCQ4McBEiUQkIEiJVCQQx0QkJAAAAADor68AAEiNVCQISI18JCy+DAAAAOjT/P//SI1UJAgx9kiJ3+iG/f//SItUJDhkSDMUJSgAAACLRCQkdAXo53T//0iDxEBbw5BBVInwSYnUweAEMdJVjUgoSIn9U0hjyYnzMfZIg+wQ6ME2AABIie9Iica6BgAAAEiJRCQI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AFNIiftR6JSJ//9IgzgASInFdQ++zYhEAEiJ3zHA6CWH//9Ii0UAWltdw1NIifvowv///0iJ37oCAAAASInGW+lt+v//U0iJ++io////SInfugIAAABIicZb6fH8//9TSIn76I7///9IicfoYF7//0iJ3zH2hcBbQA+UxjHS6aX5//9TvgEAAABIifvo733//0iJ37rqiEQAg87/6IV8//9Iid+Dzv/oSnn//0iJ31v/4FO+AQAAAEiJ++hjdv///8B1EroCAAAAvu/Y//9Iid/o23z//0iJ3+gY////SInfW+ufU7qhiEQAvgEAAABIifvoqIj//0iDOAB0CEiJ3+h+////McBbw0FVSYn1QVRJicxVidVTSIn7QVHoavr//4XtTIkofhqDzv9Iid/ozXX//4nqvu/Y//9Iid/ofH7//0iJ377+////6LF1//9Iid++/v///+hbf///QVhIid9MieK+/f///1tdQVxBXemIff//QVRVU0iJ++h2/v//uRCLRAAx0kiJ374CAAAASInF6KeJ//9Iid9MY+C6ACAAAL4DAAAA6NiK//9CixSlMItEADH2SInvSInB6P9d//9Iid8x9oXAW11BXEAPlMYx0ulR+P//VUiJ9boBAAAAMfZTSIn7QVLo93v//0iJ7kiJ3zHS6C56//9BW0iJ37rqiEQAvv7///9bXensfP//VbqhiEQAvgEAAABTU0iJ++h6h///SIs4SInF6CBa//9Ix0UAAAAAAEiJ3zH2XVtd/8BAD5XGMdLp2/f//1W6oYhEAL4BAAAAU0iJ+1DoPYf//0iLOEiJxehjWf//SMdFAAAAAAAx9oXAWEiJ30APlMYx0ltd6Z73//9BVInyQYn0vu/Y//9VU0iJ++gRe///g87/SInf6Gd3//9IiyhIhe11HUH/zL7yiEQASInfTWPkMcBKixTlYIpEAOh4hP//W0iJ6F1BXMNTvgIAAABIifvopP///0iJ37oBAAAASInGW+m79///U74BAAAASIn76IX///9Iid+6AQAAAEiJxlvpOvr//1O+AgAAAEiJ++hm////SInH6KRb//9Iid8x9oXAW0APlMYx0unp9v//Vb4BAAAAU0iJ+1HoMYf//74BAAAASInf6LZ2//+6oYhEAEiJxb7w2P//SInf6LV5//9Ihe11CkiJ3+j7dv//60i+AQAAAEiJ3+ikev//hcB05YPK/77+////SInf6CN0//+FwHTRSIN9AAC6CwAAAL7eiEQAdAq6BAAAAL7liEQASInf6PR2//9aW7gBAAAAXcNVU0iJ+0FR6K73//9IicXo+1n//0iFwEiJRQB1EEFYSInfMdIx9ltd6Sr2//9eW7gBAAAAXcNTuqGIRAC+AQAAAEiJ++iFhf//SIsQSIXSdRGyDb4NiUQASInf6It2///rD74biUQASInfMcDoLHf//7gBAAAAW8NBVL7t2P//VVNIifvouHX//0iLKEiF7XUPviWJRABIid8xwOjXgv//SInuSInf6FH3//9Iie9BicToyVb//4XAdCLoQFb//4s46Flc//9Iid9IicK+4pBEAFtdQVwxwOmbgv//RYXkvQEAAAB1M77s2P//SInfQDDt6DR0//+FwHQfMfZIid/o3nD//0iJ377t2P//6B5y//9Iid/omfv//1uJ6F1BXMNBVFVTSIn76Pn6//+5QItEALo8iUQAvgIAAABIid9IicXoJ4b//zHSTGPgvgMAAABIid/oW4f//0KLFKVgi0QASInGSInv6CRa//+FwHQQSInfMdIx9ltdQVzp2PT//0iJ7+i4WP//SInfSInG6D91//9bXbgBAAAAQVzDVUiJ9VNIiftBUuhUVf//izjobVv//0iJ6kiJwUiJ376pd0QAMcDo1nX//0iJ3zHSg87/6Hdz//9BW0iJ30iJwr4BAAAAW13pUIL//0FWQVVJidVBVEGJ9L4BAAAAVVNIifvoT3H//4XAfmQx0kiJ374BAAAA6DVz//9IhcBIicVIid90KOiU9f//TInuSInvSYnG6PtZ//9IhcBJiQZ1H0iJ7kiJ3+hV////6xLo1/n//74BAAAASInf6NRw//9EieK+79j//0iJ3+iCef//RIniSInfvu/Y///oZXf//1tdQVxBXbgBAAAAQV7Dusl+RAC+AgAAAOlQ////uvCcRAC+AQAAAOlB////U0iJ++h1+f//SInfvgEAAADocnD//0iJ3zH26Bt2//9Iid+6AgAAAL5J5UAA6H51//+4AQAAAFvDQVS+AQAAAFVTSIn76GFw//+FwH8bSInfugEAAAC+79j//+jZdv//SInfW11BXOuXMdK+AQAAAEiJ3+i3g///SInfSInF6JD0//++8JxEAEiJ70mJxOj1WP//SIXASYkEJHULSInuSInf6E7+//9Iid/of27//0iJ34nG6M9v//9Iid++AQAAAOh1df//SInfugIAAAC+SeVAAOjYdP//W124AQAAAEFcw1O+oYhEAEiJ++jRgf//SInfg87/6I1v//9Iid+6QIlEAL7+////6Hd3//+6cIpEAEiJ3zH26DaI//9Iid++TeNAAOg2+v//SInfvu/Y///opG7//7qgiUQASInfvtqWQQDoCoj//0iJ375p3EAA6Ar6//9IizWEPCQASInfuYZ4RAC6AQAAAOgj+f//SIs1YzwkAEiJ37lIiUQAugIAAADoCvn//0iLNVo8JAC5T4lEADHSSInf6PT4//9Iid++/v///+iRbf//ulaJRABIid+Dzv/o9HT//0iJ374Q40AA6Jj5//9Iid++/v///+hreP//SInfvv7////oWm3//7gBAAAAW8NIi0cISIsP6wlAODQBdQOIFAFI/8hIg/j/de7DQVRJg8z/VUiJ/VMx20iLNN3QjEQAMcBMieFIiffyrkiJ70j30UiNUf/oulcAAI1TAUj/w4BICSBIg/sViFAKdcxbXUFcw4H+AAEAAInyfztTSIn7SIPsEIl0JAjog1j//4tUJAhIiwC+bItEAEiLezhIY8r2BEgCdQW+dYtEAEiDxBAxwFvpnyYAAIHqAQEAAEhj0kiLBNXQjEQAw0FUSYnwVYnVulAAAABTSIn7SIPscEiLd1BIjXwkGEyJRCQIZEiLBCUoAAAASIlEJGgxwEiDxhjo4CYAAItLBEiLezhIjVQkGEyLRCQIMcC+j4REAOg0JgAAhe10QUmJxI2F5P7//4P4AncTMfZIid/oVQAAAEiLQ0hIiwjrDYnuSInf6CH///9IicFIi3s4TInivniLRAAxwOjvJQAASIt7OL4DAAAA6BfP//9Ii0QkaGRIMwQlKAAAAHQF6DZS//9Ig8RwW11BXMNBVUGJ9UFUSYn8VVNBU0iLX0hIi1MISItDEEj/wkg5wnZLSLr9////////f0g50HYMMdK+hYtEAOj5/v//SItTEEmLfCQ4SI0sEkiNRQFIg/j9dw1IizNIieno0xMAAOsF6LsTAABIiQNIiWsQSItDCEiLE0SILAJI/8BIiUMIQVpbXUFcQV3DQVRVU0SLJ0iJ+0SJ5uhm////SIt7QEiLB0iNUP9IhcBI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AEiJ++ghc///6PZF//9Iid/o22H//7gBAAAAW8NQvgEAAADohXP//4nH6MVE//8xwFrDQVRVvQIAAABTSIn7SIPsEOjCXP//vgEAAABIid9BicTo0nL//w8oyOsdie5Iid/yDxEMJOi+cv//8g8QDCT/xfIPXcEPKMhEOeV+3g8owUiJ3+hnYf//SIPEELgBAAAAW11BXMNBVFW9AgAAAFNIiftIg+wQ6F1c//++AQAAAEiJ30GJxOhtcv//DyjI6x2J7kiJ3/IPEQwk6Fly///yDxAMJP/F8g9fwQ8oyEQ55X7eDyjBSInf6AJh//9Ig8QQuAEAAABbXUFcw1O+AQAAAEiJ++gfcv//6LRG//9Iid/o2WD//7gBAAAAW8NBVFVTSIn7SIPsEOhlR///uf///3+ZSInf9/nyDyrC8g9eBXaVAwDyDxFEJAjouVv//4P4AXQYg/gCdFKFwA+FqAAAAPIPEEQkCOmTAAAAvgEAAABIid/oMnL//4XASInFfxK60I1EAL4BAAAASInf6Nlt///yDyrF8g9ZRCQI6CFG///yD1gFGZUDAOtUvgEAAABIid/o83H//74CAAAASInFSInf6ONx//85xUmJxH4SutCNRAC+AgAAAEiJ3+iKbf//QSnsQf/E8kEPKsTyD1lEJAjoy0X///IPKs3yD1jBSInf6Ohf///rF0iDxBBIid++4o1EAFtdQVwxwOmKbP//SIPEELgBAAAAW11BXMNTvgIAAABIiftIg+wQ6Ohw//9Iid++AQAAAPIPEQQk6NZw///yDxAMJOjGQf//SInf6Itf//9Ig8QQuAEAAABbw1O+AQAAAEiJ+0iD7CDop3D//0iNfCQY6DdB//8PKMhIid/yDxBEJBjyDxEMJOhOX///8g8QDCRIid8PKMHoPl///0iDxCC4AgAAAFvDU74BAAAASIn76F5w///oc0H//0iJ3+gYX///uAEAAABbw1O+AQAAAEiJ++g8cP//6HFC//9Iid/o9l7//7gBAAAAW8NVvgIAAABTSIn7QVHomnD//74BAAAASInFSInf6Adw//+J7+gaP///SInf6L9e//9BWlu4AQAAAF3DU74BAAAASIn7SIPsEOjcb///SI18JAzozEH//0iJ3+iRXv//SGN0JAxIid/omV7//0iDxBC4AgAAAFvDU74CAAAASIn7SIPsEOigb///SInfvgEAAADyDxEEJOiOb///8g8QDCTozkD//0iJ3+hDXv//SIPEELgBAAAAW8NTvgEAAABIifvoY2///+gYP///SInf6B1e//+4AQAAAFvDU74BAAAASIn76EFv///opkD//0iJ3+j7Xf//uAEAAABbw1O+AQAAAEiJ++gfb///6KRB//9Iid/o2V3//7gBAAAAW8NTvgEAAABIifvo/W7//+hCRP//SInf6Ldd//+4AQAAAFvDU74BAAAASIn76Ntu///owD7//0iJ3+iVXf//uAEAAABbw1O+AgAAAEiJ+0iD7BDotW7//0iJ374BAAAA8g8RBCToo27///IPEAwk6ANC//9Iid/oWF3//0iDxBC4AQAAAFvDU74BAAAASIn76Hhu///oTUP//0iJ3+gyXf//uAEAAABbw1O+AQAAAEiJ++hWbv//6Ps///9Iid/oEF3//7gBAAAAW8NTuoCORAC+6IdEAEiJ++gzcv//8g8QBcmRAwBIid/o5lz//7r8jUQAvv7///9Iid/oQ2H///IPEAWvkQMASInf6MRc//9Iid+6/41EAL7+////6CFh//9Iid+6BI5EAIPO/+g7X///SInfuq6iRAC+/v///+j/YP//uAEAAABbw1C+kJBEADHA6By2//8xwFrDQVVJif1BVEmJ1FVIic1TSIPsGEiLXyBIi3sY/1MQSIXAdRxIhe10F74EAAAATInvSIlEJAjojbr//0iLRCQITCnlSAFreEiDxBhbXUFcQV3DQVZEicBJifZBVUmJ/b8CAAAAQVRJidRVSInNU4sKmff/RInDOcF8FEQ5wXwdTInOTInvMcDojbX//+sOjRwJuAQAAACD+wMPTtgx0kjHwP3///+NSwFI9/VIY8lIOcF3HEljFCRIY8tMifZID6/NTInvSA+v1eg0////6xExwL6QkEQATInv6Du1//8xwEGJHCRbXUFcQV1BXsMPHwBVMdJIifWDzv9TSIn7SIPsGOgCWv//SInfMdK+AQAAAEiJRCQI6O5Z//9Mi0QkCEiDxBhIid9bSInpSInCvreQRABdMcDp+mf//0FUMdK+AQAAAFVTSIn76EZr//++AQAAAEiJ30iJxehCVv//ul94RAC+8Nj//0iJ3+ijXf//SInqvgIAAABIid/ok13//4PO/0iJ3+hdWf//hcB0LoPO/0iJ3+hlWv//SD0QlEQAD4WkAQAASInqvuWQRABIid8xwOh9Z///6Y0BAAC6EJFEAL7v2P//SInf6ERd//+Dzv9Iid/oNlf//4P4BXQPvhiRRABIid8xwOhHZ///MdK+W5JEAEiJ30G8AQAAAOimWv//RInivv7///9Iid/oi13//4PO/0iJ3+jyVv//hcB1JDHSvv7///9Iid/o2Fj//0iJ6kiJwb46kUQASInfMcDo72b//0iJ7kiJ3+ipWv//ugEAAAC+AQAAAEiJ3+jEYP//g87/SInf6KJW//+D+AZ0M4PO/0iJ3+gHV///hcB0D74CAAAASInf6MRi///rDb7+////SInf6AJV//9B/8TpXf///74QlEQASInf6Adc//9Iieq+AgAAAEiJ3+gmXv//SInuSInf6Cxa//+6AQAAAL4BAAAASInf6Edg//+Dzv9Iid/oJVb//4XAdBBIieq+AgAAAEiJ3+jqXf//SInqvgIAAABIid/oBFz//4PO/0iJ3+jlWP//SD0QlEQAdSi+AQAAAEiJ3+hxW///g87/SInf6LNV//9Iieq+AgAAAEiJ3+ifXf//W124AQAAAEFcw0FVMdK+AQAAAEFUVVNIiftIgeyIAAAAZEiLBCUoAAAASIlEJHgxwOgUaf//SInfSInF6AhU//9EjWgBul94RAC+8Nj//0iJ30GJxOhvW///SInqRInuSInf6GFb//+Dzv9Iid/oU1X//4P4BXRXvv7///9Iid/o0VP//7kBAAAASInqvu7Y//9Iid/ogWv//0iFwHQXSInqvmd4RABIid8xwOg6Zf//6W4BAACDzv9Iid/o4lT//0iJ6kSJ7kiJ3+jQXP//g87/ulORRABIid/o6lr//4PO/0iJ3+jcVP//hcC+/v///0iJ33QH6FtT///rd+hUU///g87/SInf6JZU//+6WZFEAL7+////SInf6IBc//9Iie5Iid/ohlj//7pTkUQAvv7///9Iid/oY1z//74uAAAASInv6Mo5//9IjVABSIXASInuSInfSA9E1Ugp6uj9V///ulyRRAC+/v///0iJ3+grXP//g87/SInf6CRU//9IieK+AQAAAEiJ3+hepv//hcB1Eb5lkUQASInfMcDoSWT//+sjSInivleORABIid/oIa3//4XAdNuDzv9Iid/oL1T//4XAdcy+/v///0iJ370CAAAA6MpT//++/v///0iJ3+h0Xf//vv7///9Iid/oY1L//+soie5Iid//xeiiU///vv7///9Iid/olVP//zHSvgEAAABIid/owF3//0Q55X7TMcBIi1QkeGRIMxQlKAAAAHQF6Ho4//9IgcSIAAAAW11BXEFdw1Ux0r4BAAAAU0iJ+1Ho8Wb//7qNkUQAvu/Y//9Iid9IicXoW1n//4PO/0iJ3+hNU///g/gFdA++lZFEAEiJ3zHA6F5j//+Dzv9IiepIid/oLln//4PO/0iJ3+ggU///hcB1EEiJ6r63kUQASInf6FdX//9aW7gBAAAAXcNVSIn9U0iJ874tAAAASInfSIPsGOj3N///SI1QAUiFwLnYkUQASInvSA9F2rrYgUQASIne6Bls//9Iie9IicK+2pFEADHA6ANX//9Iie++/v///0iJRCQI6HBR//9Ii0QkCEiDxBhbXcNBVrnKlUEAQVVBVFVIidW62IFEAFNIifvozGv//0iJ6r7v2P//SInfSYnF6G1Y//8x0oPO/0iJ3+hWVP//SIXASYnEdRJIieq+5ZFEAEiJ3zHA6Ghi//8x0r5bkkQASInf6M1V//9Jg87/608x0oPO/0iJ3+gaVP//TInpuguCRABIicZIid/oXWv//77+////SInFSInf6MhQ//++8JxEAEiJ7+jOOv//SIXAdGdIicfokTb//+mLAAAATInl6wNI/8WKRQA8O3T2hMB1BDHt63S+OwAAAEiJ7+jINv//SIXASYnEdRIxwEyJ8UiJ7/KuSPfRTI1kDf9MieJIie5Iid9IKeroKVX//02F5A+FWf///+u5SInqSInfvgOSRAAxwOi+Vf//SInfvv7////oMFD//74CAAAASInf6Jxd///pdf///1tIiehdQVxBXUFew0FVSInxMcBJidW6EpJEAEFUSYn0vhySRABVU0iJ+0FQ6G5V//++8Nj//0iJ3+j5Vv//g87/SInf6AtR//+FwHQQg87/SInf6OtT//9IicXrdL7+////SInf6HpP//++CAAAAEiJ3+i3Xf//uiGSRABIxwAAAAAAvvDY//9Iid9IicXoxFb//77+////SInf6L1Z//9MieG6EpJEAL4ckkQASInfMcDo6FT//77+////SInf6G1Q//++8Nj//0iJ3+g1WP//SIN9AAB1KUyJ574CAAAA6Nw3//9IhcBJicR1EOh/Ov//SInfSInG6EFU//9MiWUASIt9AEiF/3QkTInu6B86//9IhcB1HuhVOv//SInfSInG6BdU//+4AgAAAOsWuAEAAADrD0iJxjHSSInf6BdV//8xwF5bXUFcQV3DQVQx0r4BAAAAVVNIifvoeWP//74uAAAASInHSInF6PI0//9IhcAPhIEAAABIicJIie5Iid9IKeroZFP//zHSg87/SInf6LdR//+6KpJEAEiJxkiJ3+gU/f//SIXASYnEdQLrQkiJ7kiJ3+iW/P//TInmSInCSInf6EP+//+FwHQlg/gCdAtMieZIid/oWPf//0yJ4UiJ6r4wkkQASInfMcDorVP//7gBAAAA6wIxwFtdQVzDQVQx0r4BAAAAVVNIifvoxWL//7oqkkQASInGSInfSYnE6JT8//9IhcBIicV0KEyJ5kiJ3+gY/P//SInuSInCSInf6MX9//+FwHQLSInuSInf6N/2//9bXbgBAAAAQVzDVTHSvgEAAABTSIn7QVLoZWL//7orkkQASInGSInf6Df8//9IhcBIicV0GkiJxkiJ3+idav//hcB0C0iJ7kiJ3+iQ9v//QVlbuAEAAABdw1O6BQAAAEiJ+74BAAAA6Lxh//++AQAAAEiJ3+iTVf//hcB1J7oBAAAAMfZIid/oM1X//4PO/0iJ3+hETv//vgEAAABIid/oY1f//0iJ377u2P//6CpO//9Iid+6QIlEAL7+////6BRW//8xwFvDVTHSvgEAAABTU0iJ++ipYf//MdJIicW+AgAAAEiJ3+iXYf//SInuSInCSInf6L38//+JxbgBAAAAhe10MkiJ3+hIUf//vv7///9Iid/o3kz//7hOkkQA/82+knhEAEgPRfBIid/ot1H//7gDAAAAQVtbXcNBVEmJ9FVIic1TSIn7SInX6Csx//9IhcB1DUiJ7kiJ3+iIUf//6zW5U5JEALpXkkQASInGSInf6NZm//9Iid9IicZIiem6WpJEAOjDZv//vv7///9Iid/oMUz//0iJ30yJ4r7+////W11BXOksVf//U7ohkkQAvgEAAADov1///0iLOEiJw0iF/3QF6IA1//9IxwMAAAAAMcBbw1W+IZJEADHtU0iJ+1DoLF///zHSvtAKQQBIid/oDFL//7qKiUQAvv7///9Iid/ozlT//7qAk0QAvuCHRABIid/oimX//4PO/0iJ3+i1TP//vu/Y//9Iid/o+kv//7oEAAAAMfZIid/ofVP//+sZMdJIid/otVH//4nqvv7///9Iid/oPFX//0j/xUiLNO2ok0QASIX2dddIid+6EJFEAL7+////6FhU//9Iid+5XJJEALrmkkQAviuSRADopf7//7nvkkQASInfujSTRAC+KpJEAOiO/v//SInfugkAAAC+PpNEAOjYT///SInfukiTRAC+/v///+gGVP//uQIAAABIid+6X3hEAL7w2P//6Gti//9Iid+6T5NEAL7+////6N1T//9Iid8x0jH26LlS//+6jZFEAEiJ377+////6L9T//9Iid++7tj//+i2S///SInfuuCTRAAx9uhxZP//SInfvv7////oTUr//11buAEAAABdw5BVMcBIg8n/U0iJ+1JIi28QSIn38q5Iid9I99FIjVH/6NA0AABIiUUASItDOEgrQxDHRQgEAAAASIP4EH8NvgEAAABIid/oPK7//0iDQxAQWFtdwzHS6wb/x//C0e+D/w939YP/B3cDifjDjUf4jRTVCAAAAAnQw4n5ifjB+QOD4R90CoPgB//Jg8AI0+DDg8j/6waDwAjB7wiB//8AAAB38on/D7aXQJREAAHQw4tXCDHAO1YIdT+D+gF0KH8IhdKwAXQy6ySD+gJ0H4P6A3Ua8g8QB7gBAAAAZg8uBnoCdBUxwMOLBjkH6wZIiwZIOQcPlMAPtsDDVUiJ9VNIiftIg+wYSI10JAjo8y7//0iLRCQI8g8RRQBIOdh0fYoAg+DfPFh1OEiNdCQIuhAAAABIid/oqTP//0iFwHgH8kgPKsDrFUiJwoPgAUjR6kgJwvJIDyrC8g9YwPIPEUUASItUJAi4AQAAAIA6AHQv6H80//9IiwjrCEj/wkiJVCQISItUJAiKAg+28PZEcQEgdeeEwA+UwA+2wOsCMcBIg8QYW13DQVdBVkFVQb0BAAAAQVRJifS+W5JEAFVIidVTSIn7SIPsSGRIiwQlKAAAAEiJRCQ4McDoJ/7//74lAAAATInn6Nou//9IhcBJicYPhOEBAABMi3sQSInCTInmTCniSInf6O0yAABJiQdIi0M4SCtDEEHHRwgEAAAASIP4EH8NvgEAAABIid/oWaz//0iLQxBIjVAQSIlTEEGKVgGA+mYPhMAAAAB/HID6Y3RfgPpkD4SIAAAAgPolD4VMAQAA6UABAACA+nAPhPAAAACA+nMPhTUBAACLVQCD+jBzDonQg8IISANFEIlVAOsMSItFCEiNUAhIiVUISIswuBSURABIhfZID0Tw6RIBAACLVQCD+jBzDonQg8IISANFEIlVAOsMSItFCEiNUAhIiVUIiwDGRCQOAIhEJA3p2wAAAItNAIP5MHMOicqDwQhIA1UQiU0A6wxIi1UISI1KCEiJTQjyDyoC6ymLTQSB+bAAAABzDonKg8EQSANVEIlNBOsMSItVCEiNSghIiU0I8g8QAvIPEUAQx0AYAwAAAEiLQzhIK0MQSIP4EH8NvgEAAABIid/oMKv//0iDQxAQ62mLVQCD+jBzDonQg8IISANFEIlVAOsMSItFCEiNUAhIiVUITIsASI18JBC+AQAAALm0ekQAuigAAAAxwOhjMv//SI10JBDrGr4blEQA6xPGRCQNJYhUJA7GRCQPAEiNdCQNSInf6Dr8//9Bg8UCTY1mAukG/v//TInmSInf6CL8//9Ii1MQSCtTGEGNdQFIid9NY+1JweUESMH6BP/K6FJwAABIi0MQTCnoSIlDEEiLQPBIg8AYSItUJDhkSDMUJSgAAAB0Beh5LP//SIPESFtdQVxBXUFeQV/DSIHs2AAAAITASIlUJDBIiUwkOEyJRCRATIlMJEh0Nw8pRCRQDylMJGAPKVQkcA8pnCSAAAAADymkJJAAAAAPKawkoAAAAA8ptCSwAAAADym8JMAAAABIjYQk4AAAAEiNVCQIx0QkCBAAAADHRCQMMAAAAEiJRCQQSI1EJCBIiUQkGOjl/P//SIHE2AAAAMNBVUFUSYnUVUiJ9VNIiftBUYoGPD11FEiNdgHomyr//0LGRCP/AOmpAAAAPEB1Q0j/xTHASIPJ/0iJ70mD7Ai+W5JEAPKuSInfSPfRTI1p/+iGKv//TTnldhNNKeW+1oFEAEiJ30wB7ejeL///SInu61K+HZREAEiJ70mD7BHomCz//0w54L4glEQASInfTA9G4OhEKv//QoB8JQAASInudBVIie5MieJIid/oCyz//77WgUQA6wBIid/ojC///74qlEQAQVhIid9bXUFcQV3pdy///1lbXUFcQV3DDx8AVTHJMdK+AQAAAFNIiftQ6LRZ//+62qJEALkwmUQASInfvgIAAABIicXo/Fn//0iYSInuizyFcJlEAOhdLv//SInfSInG6K9J//9aW7gBAAAAXcNBVUGJ9UFUSYnUVVNIiftBUOhTKf//RYXtiyh0FL4BAAAASInf6CJL//+4AQAAAOs0SInf6NlI//+J7+hJL///TIniSInBvql3RABIid8xwOiySf//SGP1SInf6NtI//+4AwAAAFlbXUFcQV3DVTHSvgEAAABTSIn7QVHowFj//zHSSInFSInfvgIAAADorlj//0iJ70iJxugcLv//QVpIid9Iieox9ltdhcBAD5TG6Uz///9VMdK+AQAAAFNIiftBU+h5WP//SInHSInF6Mco//9Iid9Iieox9ltbXYXAQA+UxukY////UzHSvgEAAABIifvoSFj//0iJx+g5KP//SInfSInG6JtI//+4AQAAAFvDUDHSvgEAAADo/ln//4nH6CMu//9TMckx0r4BAAAASIn76D1Y//9IicfoeSn//0iJ30hj8OjwR///uAEAAABbw1MPV8BIifu+AgAAAEiD7BDoRln//0iJ374BAAAA8g8RBCTo5lj///JIDyw0JPJIDyz46FAp//9Iid/olUf//0iDxBC4AQAAAFvDVUiJ9Uhj8lNIiftBUOiNR///QVlIid9Iieq+/v///1td6dNL//9Ig+wYSIl8JAjoiSj///JIDyrASIt8JAjyD14FP4UDAOg/R///uAEAAABIg8QYw1NIifu+ipdEAEiD7DBIjXwkCGRIiwQlKAAAAEiJRCQoMcDokSf//0iNfCQI6Lcr//+D+P90K4nH6Gsp//9IjXQkCEiJ3+hrR///uAEAAABIi1QkKGRIMxQlKAAAAHQY6xG+mpdEAEiJ3zHA6IBT///r3ehBKP//SIPEMFvDQVRJifRVidVIifKDzv9TSIn76DpJ//+Dzv9Iid/odEP//4XAdA+Dzv9Iid/oyET//4nF6xqF7XkWSInfTInivr+XRABbXUFcMcDpJFP//0iJ377+////6IJB//9biehdQVzDVb4BAAAAU0iJ+0iD7Ejo2EL//4XAfwwx/+gKKv//6eoAAAC6BQAAAL4BAAAASInf6OBV//++AQAAAEiJ3+g5Qf//MdK+4JdEAEiJ3+hM////MdK+UI5EAEiJ34lEJAjoOf///7oMAAAAvuSXRABIid+JRCQM6CP///+Dyv++/pdEAEiJ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jXQkGEiJ70GJxugL////SI10JBhIid/odmD//0GJwEmLRCQYRInxSInfvgkAAACLUAjoX1z//0SJazxIg8QwW11BXEFdQV7DVUiJ/VNIifNQ6MT+//+BeyT9//9/fhNIi30wuhSbRAC+/f//f+jx5////0Mk/0MoWFtdw0FWRTHAMckx0kFVQVRJifS+CgAAAFVTSIn7SIPsMEiLbzBEi3cESInv6Oxb//9MY+hMieZBx0QkEP////9FiWwkCEiLezBBx0QkFP////9BxwQkCwAAAMdEJCgAAAAAx0QkIAAAAADHRCQkAAAAAEyJZCQYx0QkEP/////HRCQU/////8cEJAAAAADHRCQIAAAAAOjpXv//vnsAAABIid/ocO7//4N7EH11JUSJ8bp7AAAAvn0AAABIid/oeez//4N8JCgAD4WxAAAA6QkBAACDPCQAdDpIieZIie/ooF7//4N8JCgyxwQkAAAAAHUhSItEJBiLVCQkuTIAAABIie+LcAjor2f//8dEJCgAAAAAi0MQg/hbdB09HQEAAHUjSInf6AnF//+DeyA9SInmSInfdAjrE0iJ5kiJ3+jT/f//6wtIieZIid/of/7//74sAAAASInf6Brl//+FwA+FQ////747AAAASInf6AXl//+FwA+FLv///+kv////iwQkjVDzg/oBdyuDyv9IieZIie/oqFn//0iLRCQYi1QkJIPJ/0iJ74twCOgLZ////0wkJOsnhcB0C0iJ5kiJ7+jAXf//SItEJBiLTCQoSInvi1QkJItwCOjeZv//SItFAEnB5QKLfCQkTItgGE0B7EGLHCTodtj//8HgF4Hj//9/AAnYQYkEJEiLRQCLfCQgTANoGEGLXQDoUtj//8HgDoHj/z+A/yUAwH8ACdhBiUUASIPEMFtdQVxBXUFew0FUSYn0Vb0BAAAAU0iJ++hQ/P//6xlIi3swTInm/8XoI13//0yJ5kiJ3+g1/P//viwAAABIid/o/uP//4XAddZbiehdQVzDQVVBVEmJ9FVTSIn7SIPsKItHEEiLbzBEi28Eg/h7dGw9HgEAAHRxg/goD4WaAAAARDtvCHQKviubRADonLj//0iJ3+gtw///g3sQKXUKx0QkCAAAAADrHUiNdCQISInf6FT///9IjXQkCIPK/0iJ7+hHWP//RInpuigAAAC+KQAAAEiJ3+gu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ZV9nbG9iKQpmb3IgXywgdiBpbiBpcGFpcnMoaW5jbHVkZXMpIGRvCmRpcnMgPSB0YWJsZS5qb2luKGRpcnMsIHBhcnNlX2xkX3NvX2NvbmYodikpCmVuZAplbHNlCnRhYmxlLmluc2VydChkaXJzLCBsaW5lKQplbmQKZW5kCmVuZApyZXR1cm4gZGlycwplbmQKZnVuY3Rpb24gb3MuZmluZGxpYihsaWJuYW1lKQpsb2NhbCBwYXRoLCBmb3JtYXRzCmlmIG9zLmlzKCJ3aW5kb3dzIikgdGhlbgpmb3JtYXRzID0geyAiJXMuZGxsIiwgIiVzIiB9CnBhdGggPSBvcy5nZXRlbnYoIlBBVEgiKQplbHNlaWYgb3MuaXMoImhhaWt1IikgdGhlbgpmb3JtYXRzID0geyAibGliJXMuc28iLCAiJXMuc28iIH0KcGF0aCA9IG9zLmdldGVudigiTElCUkFSWV9QQVRIIikKZWxzZQppZiBvcy5pcygibWFjb3N4IikgdGhlbgpmb3JtYXRzID0geyAibGliJXMuZHlsaWIiLCAiJXMuZHlsaWIiIH0KcGF0aCA9IG9zLmdldGVudigiRFlMRF9MSUJSQVJZX1BBVEgiKQplbHNlCmZvcm1hdHMgPSB7ICJsaWIlcy5zbyIsICIlcy5zbyIgfQpwYXRoID0gb3MuZ2V0ZW52KCJMRF9MSUJSQVJZX1BBVEgiKSBvciAiIgpmb3IgXywgdiBpbiBpcGFpcnMocGFyc2VfbGRfc29fY29uZigiL2V0Yy9sZC5zby5jb25mIikpIGRvCnBhdGggPSBwYXRoIC4uICI6IiAuLiB2CmVuZAplbmQKdGFibGUuaW5zZXJ0KGZvcm1hdHMsICIlcyIpCnBhdGggPSBwYXRoIG9yICIiCmlmIG9zLmlzNjRiaXQoKSB0aGVuCnBhdGggPSBwYXRoIC4uICI6L2xpYjY0Oi91c3IvbGliNjQvOnVzci9sb2NhbC9saWI2NCIKZW5kCnBhdGggPSBwYXRoIC4uICI6L2xpYjovdXNyL2xpYjovdXNyL2xvY2FsL2xpYiIKZW5kCmZvciBfLCBmbXQgaW4gaXBhaXJzKGZvcm1hdHMpIGRvCmxvY2FsIG5hbWUgPSBzdHJpbmcuZm9ybWF0KGZtdCwgbGlibmFtZSkKbG9jYWwgcmVzdWx0ID0gb3MucGF0aHNlYXJjaChuYW1lLCBwYXRoKQppZiByZXN1bHQgdGhlbiByZXR1cm4gcmVzdWx0IGVuZAplbmQKZW5kCmZ1bmN0aW9uIG9zLmdldCgpCnJldHVybiBfT1BUSU9OUy5vcyBvciBfT1MKZW5kCmZ1bmN0aW9uIG9zLmlzKGlkKQpyZXR1cm4gKG9zLmdldCgpOmxvd2VyKCkgPT0gaWQ6bG93ZXIoKSkKZW5kCmxvY2FsIF82NEJpdEhvc3RUeXBlcyA9IHsKIng4Nl82NCIsCiJpYTY0IiwKImFtZDY0IiwKInBwYzY0IiwKInBvd2VycGM2NCIsCiJzcGFyYzY0Igp9CmZ1bmN0aW9uIG9zLmlzNjRiaXQoKQppZiAob3MuX2lzNjRiaXQoKSkgdGhlbgpyZXR1cm4gdHJ1ZQplbmQKbG9jYWwgYXJjaAppZiBfT1MgPT0gIndpbmRvd3MiIHRoZW4KYXJjaCA9IG9zLmdldGVudigiUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRSIpCmVsc2VpZiBfT1MgPT0gIm1hY29zeCIgdGhlbgphcmNoID0gb3Mub3V0cHV0b2YoImVjaG8gJEhPU1RUWVBFIikKZWxzZQphcmNoID0gb3Mub3V0cHV0b2YoInVuYW1lIC1tIikKZW5kCmFyY2ggPSBhcmNoOmxvd2VyKCkKZm9yIF8sIGhvc3R0eXBlIGluIGlwYWlycyhfNjRCaXRIb3N0VHlwZXMpIGRvCmlmIGFyY2g6ZmluZChob3N0dHlwZSkgdGhlbgpyZXR1cm4gdHJ1ZQplbmQKZW5kCnJldHVybiBmYWxzZQplbmQKbG9jYWwgZnVuY3Rpb24gZG9tYXRjaChyZXN1bHQsIG1hc2ssIHdhbnRmaWxlcykKaWYgbWFzazpzdGFydHN3aXRoKCIuLyIpIHRoZW4KbWFzayA9IG1hc2s6c3ViKDMpCmVuZApsb2NhbCBiYXNlZGlyID0gbWFzawpsb2NhbCBzdGFycG9zID0gbWFzazpmaW5kKCIlKiIpCmlmIHN0YXJwb3MgdGhlbgpiYXNlZGlyID0gYmFzZWRpcjpzdWIoMSwgc3RhcnBvcyAtIDEpCmVuZApiYXNlZGlyID0gcGF0aC5nZXRkaXJlY3RvcnkoYmFzZWRpcikKaWYgKGJhc2VkaXIgPT0gIi4iKSB0aGVuIGJhc2VkaXIgPSAiIiBlbmQKbG9jYWwgcmVjdXJzZSA9IG1hc2s6ZmluZCgiKioiLCBuaWwsIHRydWUpCm1hc2sgPSBwYXRoLndpbGRjYXJkcyhtYXNrKQpsb2NhbCBmdW5jdGlvbiBtYXRjaHdhbGtlcihiYXNlZGlyKQpsb2NhbCB3aWxkY2FyZCA9IHBhdGguam9pbihiYXNlZGlyLCAiKiIpCmxvY2FsIG0gPSBvcy5tYXRjaHN0YXJ0KHdpbGRjYXJkKQp3aGlsZSAob3MubWF0Y2huZXh0KG0pKSBkbwpsb2NhbCBpc2ZpbGUgPSBvcy5tYXRjaGlzZmlsZShtKQppZiAoKHdhbnRmaWxlcyBhbmQgaXNmaWxlKSBvciAobm90IHdhbnRmaWxlcyBhbmQgbm90IGlzZmlsZSkpIHRoZW4KbG9jYWwgZm5hbWUgPSBwYXRoLmpvaW4oYmFzZWRpciwgb3MubWF0Y2huYW1lKG0pKQppZiBmbmFtZTptYXRjaChtYXNrKSA9PSBmbmFtZSB0aGVuCnRhYmxlLmluc2VydChyZXN1bHQsIGZuYW1lKQplbmQKZW5kCmVuZApvcy5tYXRjaGRvbmUobSkKaWYgcmVjdXJzZSB0aGVuCm0gPSBvcy5tYXRjaHN0YXJ0KHdpbGRjYXJkKQp3aGlsZSAob3MubWF0Y2huZXh0KG0pKSBkbwppZiBub3Qgb3MubWF0Y2hpc2ZpbGUobSkgdGhlbgpsb2NhbCBkaXJuYW1lID0gb3MubWF0Y2huYW1lKG0pCm1hdGNod2Fsa2VyKHBhdGguam9pbihiYXNlZGlyLCBkaXJuYW1lKSkKZW5kCmVuZApvcy5tYXRjaGRvbmUobSkKZW5kCmVuZAptYXRjaHdhbGtlcihiYXNlZGlyKQplbmQKZnVuY3Rpb24gb3MubWF0Y2hkaXJzKC4uLikKbG9jYWwgcmVzdWx0ID0geyB9CmZvciBfLCBtYXNrIGluIGlwYWlycyhhcmcpIGRvCmRvbWF0Y2gocmVzdWx0LCBtYXNrLCBmYWxzZSkKZW5kCnJldHVybiByZXN1bHQKZW5kCmZ1bmN0aW9uIG9zLm1hdGNoZmlsZXMoLi4uKQpsb2NhbCByZXN1bHQgPSB7IH0KZm9yIF8sIG1hc2sgaW4gaXBhaXJzKGFyZykgZG8KZG9tYXRjaChyZXN1bHQsIG1hc2ssIHRydWUpCmVuZApyZXR1cm4gcmVzdWx0CmVuZApsb2NhbCBidWlsdGluX21rZGlyID0gb3MubWtkaXIKZnVuY3Rpb24gb3MubWtkaXIocCkKbG9jYWwgZGlyID0gaWlmKHA6c3RhcnRzd2l0aCgiLyIpLCAiLyIsICIiKQpmb3IgcGFydCBpbiBwOmdtYXRjaCgiW14vXSsiKSBkbwpkaXIgPSBkaXIgLi4gcGFydAppZiAocGFydCB+PSAiIiBhbmQgbm90IHBhdGguaXNhYnNvbHV0ZShwYXJ0KSBhbmQgbm90IG9zLmlzZGlyKGRpcikpIHRoZW4KbG9jYWwgb2ssIGVyciA9IGJ1aWx0aW5fbWtkaXIoZGlyKQppZiAobm90IG9rKSB0aGVuCnJldHVybiBuaWwsIGVycgplbmQKZW5kCmRpciA9IGRpciAuLiAiLyIKZW5kCnJldHVybiB0cnVlCmVuZApmdW5jdGlvbiBvcy5vdXRwdXRvZihjbWQpCmxvY2FsIHBpcGUgPSBpby5wb3BlbihjbWQpCmxvY2FsIHJlc3VsdCA9IHBpcGU6cmVhZCgnKmEnKQpwaXBlOmNsb3NlKCkKcmV0dXJuIHJlc3VsdAplbmQKbG9jYWwgYnVpbHRpbl9ybWRpciA9IG9zLnJtZGlyCmZ1bmN0aW9uIG9zLnJtZGlyKHApCmxvY2FsIGRpcnMgPSBvcy5tYXRjaGRpcnMocCAuLiAiLyoiKQpmb3IgXywgZG5hbWUgaW4gaXBhaXJzKGRpcnMpIGRvCm9zLnJtZGlyKGRuYW1lKQplbmQKbG9jYWwgZmlsZXMgPSBvcy5tYXRjaGZpbGVzKHAgLi4gIi8qIikKZm9yIF8sIGZuYW1lIGluIGlwYWlycyhmaWxlcykgZG8Kb3MucmVtb3ZlKGZuYW1lKQplbmQKYnVpbHRpbl9ybWRpcihwKQplbmQKAGZ1bmN0aW9uIHBhdGguZ2V0YWJzb2x1dGUocCkKcCA9IHBhdGgudHJhbnNsYXRlKHAsICIvIikKaWYgKHAgPT0gIiIpIHRoZW4gcCA9ICIuIiBlbmQKbG9jYWwgcmVzdWx0ID0gaWlmIChwYXRoLmlzYWJzb2x1dGUocCksIG5pbCwgb3MuZ2V0Y3dkKCkpCmZvciBuLCBwYXJ0IGluIGlwYWlycyhwOmV4cGxvZGUoIi8iLCB0cnVlKSkgZG8KaWYgKHBhcnQgPT0gIiIgYW5kIG4gPT0gMSkgdGhlbgpyZXN1bHQgPSAiLyIKZWxzZWlmIChwYXJ0ID09ICIuLiIpIHRoZW4KcmVzdWx0ID0gcGF0aC5nZXRkaXJlY3RvcnkocmVzdWx0KQplbHNlaWYgKHBhcnQgfj0gIi4iKSB0aGVuCmlmIChwYXJ0OnN0YXJ0c3dpdGgoIiQiKSBhbmQgbiA+IDEpIHRoZW4KcmVzdWx0ID0gcmVzdWx0IC4uICIvIiAuLiBwYXJ0CmVsc2UKcmVzdWx0ID0gcGF0aC5qb2luKHJlc3VsdCwgcGFydCkKZW5kCmVuZAplbmQKcmVzdWx0ID0gaWlmKHJlc3VsdDplbmRzd2l0aCgiLyIpLCByZXN1bHQ6c3ViKDEsIC0yKSwgcmVzdWx0KQpyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwYXRoLmdldGJhc2VuYW1lKHApCmxvY2FsIG5hbWUgPSBwYXRoLmdldG5hbWUocCkKbG9jYWwgaSA9IG5hbWU6ZmluZGxhc3QoIi4iLCB0cnVlKQppZiAoaSkgdGhlbgpyZXR1cm4gbmFtZTpzdWIoMSwgaSAtIDEpCmVsc2UKcmV0dXJuIG5hbWUKZW5kCmVuZApmdW5jdGlvbiBwYXRoLmdldGRpcmVjdG9yeShwKQpsb2NhbCBpID0gcDpmaW5kbGFzdCgiLyIsIHRydWUpCmlmIChpKSB0aGVuCmlmIGkgPiAxIHRoZW4gaSA9IGkgLSAxIGVuZApyZXR1cm4gcDpzdWIoMSwgaSkKZWxzZQpyZXR1cm4gIi4iCmVuZAplbmQKZnVuY3Rpb24gcGF0aC5nZXRkcml2ZShwKQpsb2NhbCBjaDEgPSBwOnN1YigxLDEpCmxvY2FsIGNoMiA9IHA6c3ViKDIsMikKaWYgY2gyID09ICI6IiB0aGVuCnJldHVybiBjaDEKZW5kCmVuZApmdW5jdGlvbiBwYXRoLmdldGV4dGVuc2lvbihwKQpsb2NhbCBpID0gcDpmaW5kbGFzdCgiLiIsIHRydWUpCmlmIChpKSB0aGVuCnJldHVybiBwOnN1YihpKQplbHNlCnJldHVybiAiIgplbmQKZW5kCmZ1bmN0aW9uIHBhdGguZ2V0bmFtZShwKQpsb2NhbCBpID0gcDpmaW5kbGFzdCgiWy9cXF0iKQppZiAoaSkgdGhlbgpyZXR1cm4gcDpzdWIoaSArIDEpCmVsc2UKcmV0dXJuIHAKZW5kCmVuZApmdW5jdGlvbiBwYXRoLmdldHJlbGF0aXZlKHNyYywgZHN0KQpzcmMgPSBwYXRoLmdldGFic29sdXRlKHNyYykKZHN0ID0gcGF0aC5nZXRhYnNvbHV0ZShkc3QpCmlmIChzcmMgPT0gZHN0KSB0aGVuCnJldHVybiAiLiIKZW5kCmlmIGRzdDpzdGFydHN3aXRoKCIkIikgdGhlbgpyZXR1cm4gZHN0CmVuZApzcmMgPSBzcmMgLi4gIi8iCmRzdCA9IGRzdCAuLiAiLyIKbG9jYWwgaWR4ID0gMAp3aGlsZSAodHJ1ZSkgZG8KbG9jYWwgdHN0ID0gc3JjOmZpbmQoIi8iLCBpZHggKyAxLCB0cnVlKQppZiB0c3QgdGhlbgppZiBzcmM6c3ViKDEsdHN0KSA9PSBkc3Q6c3ViKDEsdHN0KSB0aGVuCmlkeCA9IHRzdAplbHNlCmJyZWFrCmVuZAplbHNlCmJyZWFrCmVuZAplbmQKbG9jYWwgZmlyc3QgPSBzcmM6ZmluZCgiLyIsIDAsIHRydWUpCmlmIGlkeCA8PSBmaXJzdCB0aGVuCnJldHVybiBkc3Q6c3ViKDEsIC0yKQplbmQKc3JjID0gc3JjOnN1YihpZHggKyAxKQpkc3QgPSBkc3Q6c3ViKGlkeCArIDEpCmxvY2FsIHJlc3VsdCA9ICIiCmlkeCA9IHNyYzpmaW5kKCIvIikKd2hpbGUgKGlkeCkgZG8KcmVzdWx0ID0gcmVzdWx0IC4uICIuLi8iCmlkeCA9IHNyYzpmaW5kKCIvIiwgaWR4ICsgMSkKZW5kCnJlc3VsdCA9IHJlc3VsdCAuLiBkc3QKcmV0dXJuIHJlc3VsdDpzdWIoMSwgLTIpCmVuZApmdW5jdGlvbiBwYXRoLmlzY2ZpbGUoZm5hbWUpCmxvY2FsIGV4dGVuc2lvbnMgPSB7ICIuYyIsICIucyIsICIubSIgfQpsb2NhbCBleHQgPSBwYXRoLmdldGV4dGVuc2lvbihmbmFtZSk6bG93ZXIoKQpyZXR1cm4gdGFibGUuY29udGFpbnMoZXh0ZW5zaW9ucywgZXh0KQplbmQKZnVuY3Rpb24gcGF0aC5pc2NwcGZpbGUoZm5hbWUpCmxvY2FsIGV4dGVuc2lvbnMgPSB7ICIuY2MiLCAiLmNwcCIsICIuY3h4IiwgIi5jIiwgIi5zIiwgIi5tIiwgIi5tbSIgfQpsb2NhbCBleHQgPSBwYXRoLmdldGV4dGVuc2lvbihmbmFtZSk6bG93ZXIoKQpyZXR1cm4gdGFibGUuY29udGFpbnMoZXh0ZW5zaW9ucywgZXh0KQplbmQKZnVuY3Rpb24gcGF0aC5pc2NwcGhlYWRlcihmbmFtZSkKbG9jYWwgZXh0ZW5zaW9ucyA9IHsgIi5oIiwgIi5oaCIsICIuaHBwIiwgIi5oeHgiIH0KbG9jYWwgZXh0ID0gcGF0aC5nZXRleHRlbnNpb24oZm5hbWUpOmxvd2VyKCkKcmV0dXJuIHRhYmxlLmNvbnRhaW5zKGV4dGVuc2lvbnMsIGV4dCkKZW5kCmZ1bmN0aW9uIHBhdGguaXNyZXNvdXJjZWZpbGUoZm5hbWUpCmxvY2FsIGV4dGVuc2lvbnMgPSB7ICIucmMiIH0KbG9jYWwgZXh0ID0gcGF0aC5nZXRleHRlbnNpb24oZm5hbWUpOmxvd2VyKCkKcmV0dXJuIHRhYmxlLmNvbnRhaW5zKGV4dGVuc2lvbnMsIGV4dCkKZW5kCmZ1bmN0aW9uIHBhdGguam9pbiguLi4pCmxvY2FsIG51bWFyZ3MgPSBzZWxlY3QoIiMiLCAuLi4pCmlmIG51bWFyZ3MgPT0gMCB0aGVuCnJldHVybiAiIjsKZW5kCmxvY2FsIGFsbHBhcnRzID0ge30KZm9yIGkgPSBudW1hcmdzLCAxLCAtMSBkbwpsb2NhbCBwYXJ0ID0gc2VsZWN0KGksIC4uLikKaWYgcGFydCBhbmQgI3BhcnQgPiAwIGFuZCBwYXJ0IH49ICIuIiB0aGVuCndoaWxlIHBhcnQ6ZW5kc3dpdGgoIi8iKSBkbwpwYXJ0ID0gcGFydDpzdWIoMSwgLTIpCmVuZAp0YWJsZS5pbnNlcnQoYWxscGFydHMsIDEsIHBhcnQpCmlmIHBhdGguaXNhYnNvbHV0ZShwYXJ0KSB0aGVuCmJyZWFrCmVuZAplbmQKZW5kCnJldHVybiB0YWJsZS5jb25jYXQoYWxscGFydHMsICIvIikKZW5kCmZ1bmN0aW9uIHBhdGgucmViYXNlKHAsIG9sZGJhc2UsIG5ld2Jhc2UpCnAgPSBwYXRoLmdldGFic29sdXRlKHBhdGguam9pbihvbGRiYXNlLCBwKSkKcCA9IHBhdGguZ2V0cmVsYXRpdmUobmV3YmFzZSwgcCkKcmV0dXJuIHAKZW5kCmZ1bmN0aW9uIHBhdGgudHJhbnNsYXRlKHAsIHNlcCkKaWYgKHR5cGUocCkgPT0gInRhYmxlIikgdGhlbgpsb2NhbCByZXN1bHQgPSB7IH0KZm9yIF8sIHZhbHVlIGluIGlwYWlycyhwKSBkbwp0YWJsZS5pbnNlcnQocmVzdWx0LCBwYXRoLnRyYW5zbGF0ZSh2YWx1ZSkpCmVuZApyZXR1cm4gcmVzdWx0CmVsc2UKaWYgKG5vdCBzZXApIHRoZW4KaWYgKG9zLmlzKCJ3aW5kb3dzIikpIHRoZW4Kc2VwID0gIlxcIgplbHNlCnNlcCA9ICIvIgplbmQKZW5kCmxvY2FsIHJlc3VsdCA9IHA6Z3N1YigiWy9cXF0iLCBzZXApCnJldHVybiByZXN1bHQKZW5kCmVuZApmdW5jdGlvbiBwYXRoLndpbGRjYXJkcyhwYXR0ZXJuKQpwYXR0ZXJuID0gcGF0dGVybjpnc3ViKCIoWyUrJS4lLSVeJSQlKCUpJSVdKSIsICIlJSUxIikKcGF0dGVybiA9IHBhdHRlcm46Z3N1YigiJSolKiIsICJcMDAxIikKcGF0dGVybiA9IHBhdHRlcm46Z3N1YigiJSoiLCAiXDAwMiIpCnBhdHRlcm4gPSBwYXR0ZXJuOmdzdWIoIlwwMDEiLCAiLioiKQpwYXR0ZXJuID0gcGF0dGVybjpnc3ViKCJcMDAyIiwgIlteL10qIikKcmV0dXJuIHBhdHRlcm4KZW5kCgBmdW5jdGlvbiBzdHJpbmcuZXhwbG9kZShzLCBwYXR0ZXJuLCBwbGFpbikKaWYgKHBhdHRlcm4gPT0gJycpIHRoZW4gcmV0dXJuIGZhbHNlIGVuZApsb2NhbCBwb3MgPSAwCmxvY2FsIGFyciA9IHsgfQpmb3Igc3Qsc3AgaW4gZnVuY3Rpb24oKSByZXR1cm4gczpmaW5kKHBhdHRlcm4sIHBvcywgcGxhaW4pIGVuZCBkbwp0YWJsZS5pbnNlcnQoYXJyLCBzOnN1Yihwb3MsIHN0LTEpKQpwb3MgPSBzcCArIDEKZW5kCnRhYmxlLmluc2VydChhcnIsIHM6c3ViKHBvcykpCnJldHVybiBhcnIKZW5kCmZ1bmN0aW9uIHN0cmluZy5maW5kbGFzdChzLCBwYXR0ZXJuLCBwbGFpbikKbG9jYWwgY3VyciA9IDAKcmVwZWF0CmxvY2FsIG5leHQgPSBzOmZpbmQocGF0dGVybiwgY3VyciArIDEsIHBsYWluKQppZiAobmV4dCkgdGhlbiBjdXJyID0gbmV4dCBlbmQKdW50aWwgKG5vdCBuZXh0KQppZiAoY3VyciA+IDApIHRoZW4KcmV0dXJuIGN1cnIKZW5kCmVuZApmdW5jdGlvbiBzdHJpbmcuc3RhcnRzd2l0aChoYXlzdGFjaywgbmVlZGxlKQpyZXR1cm4gKGhheXN0YWNrOmZpbmQobmVlZGxlLCAxLCB0cnVlKSA9PSAxKQplbmQKAGZ1bmN0aW9uIHRhYmxlLmNvbnRhaW5zKHQsIHZhbHVlKQpmb3IgXyx2IGluIHBhaXJzKHQpIGRvCmlmICh2ID09IHZhbHVlKSB0aGVuCnJldHVybiB0cnVlCmVuZAplbmQKcmV0dXJuIGZhbHNlCmVuZApmdW5jdGlvbiB0YWJsZS5leHRyYWN0KGFyciwgZm5hbWUpCmxvY2FsIHJlc3VsdCA9IHsgfQpmb3IgXyx2IGluIGlwYWlycyhhcnIpIGRvCnRhYmxlLmluc2VydChyZXN1bHQsIHZbZm5hbWVdKQplbmQKcmV0dXJuIHJlc3VsdAplbmQKZnVuY3Rpb24gdGFibGUuZmxhdHRlbihhcnIpCmxvY2FsIHJlc3VsdCA9IHsgfQpsb2NhbCBmdW5jdGlvbiBmbGF0dGVuKGFycikKZm9yIF8sIHYgaW4gaXBhaXJzKGFycikgZG8KaWYgdHlwZSh2KSA9PSAidGFibGUiIHRoZW4KZmxhdHRlbih2KQplbHNlCnRhYmxlLmluc2VydChyZXN1bHQsIHYpCmVuZAplbmQKZW5kCmZsYXR0ZW4oYXJyKQpyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiB0YWJsZS5pbXBsb2RlKGFyciwgYmVmb3JlLCBhZnRlciwgYmV0d2VlbikKbG9jYWwgcmVzdWx0ID0gIiIKZm9yIF8sdiBpbiBpcGFpcnMoYXJyKSBkbwppZiAocmVzdWx0IH49ICIiIGFuZCBiZXR3ZWVuKSB0aGVuCnJlc3VsdCA9IHJlc3VsdCAuLiBiZXR3ZWVuCmVuZApyZXN1bHQgPSByZXN1bHQgLi4gYmVmb3JlIC4uIHYgLi4gYWZ0ZXIKZW5kCnJldHVybiByZXN1bHQKZW5kCmZ1bmN0aW9uIHRhYmxlLmluc2VydGZsYXQodGJsLCB2YWx1ZXMpCmlmIHR5cGUodmFsdWVzKSA9PSAidGFibGUiIHRoZW4KZm9yIF8sIHZhbHVlIGluIGlwYWlycyh2YWx1ZXMpIGRvCnRhYmxlLmluc2VydGZsYXQodGJsLCB2YWx1ZSkKZW5kCmVsc2UKdGFibGUuaW5zZXJ0KHRibCwgdmFsdWVzKQplbmQKZW5kCmZ1bmN0aW9uIHRhYmxlLmlzZW1wdHkodCkKcmV0dXJuIG5vdCBuZXh0KHQpCmVuZApmdW5jdGlvbiB0YWJsZS5qb2luKC4uLikKbG9jYWwgcmVzdWx0ID0geyB9CmZvciBfLHQgaW4gaXBhaXJzKGFyZykgZG8KaWYgdHlwZSh0KSA9PSAidGFibGUiIHRoZW4KZm9yIF8sdiBpbiBpcGFpcnModCkgZG8KdGFibGUuaW5zZXJ0KHJlc3VsdCwgdikKZW5kCmVsc2UKdGFibGUuaW5zZXJ0KHJlc3VsdCwgdCkKZW5kCmVuZApyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiB0YWJsZS5rZXlzKHRibCkKbG9jYWwga2V5cyA9IHt9CmZvciBrLCBfIGluIHBhaXJzKHRibCkgZG8KdGFibGUuaW5zZXJ0KGtleXMsIGspCmVuZApyZXR1cm4ga2V5cwplbmQKZnVuY3Rpb24gdGFibGUubWVyZ2UoLi4uKQpsb2NhbCByZXN1bHQgPSB7IH0KZm9yIF8sdCBpbiBpcGFpcnMoYXJnKSBkbwppZiB0eXBlKHQpID09ICJ0YWJsZSIgdGhlbgpmb3Igayx2IGluIHBhaXJzKHQpIGRvCnJlc3VsdFtrXSA9IHYKZW5kCmVsc2UKZXJyb3IoImludmFsaWQgdmFsdWUiKQplbmQKZW5kCnJldHVybiByZXN1bHQKZW5kCmZ1bmN0aW9uIHRhYmxlLnRyYW5zbGF0ZShhcnIsIHRyYW5zbGF0aW9uKQpsb2NhbCByZXN1bHQgPSB7IH0KZm9yIF8sIHZhbHVlIGluIGlwYWlycyhhcnIpIGRvCmxvY2FsIHR2YWx1ZQppZiB0eXBlKHRyYW5zbGF0aW9uKSA9PSAiZnVuY3Rpb24iIHRoZW4KdHZhbHVlID0gdHJhbnNsYXRpb24odmFsdWUpCmVsc2UKdHZhbHVlID0gdHJhbnNsYXRpb25bdmFsdWVdCmVuZAppZiAodHZhbHVlKSB0aGVuCnRhYmxlLmluc2VydChyZXN1bHQsIHR2YWx1ZSkKZW5kCmVuZApyZXR1cm4gcmVzdWx0CmVuZAoAZnVuY3Rpb24gaW8uY2FwdHVyZSgpCmlvLmNhcHR1cmVkID0gJycKZW5kCmZ1bmN0aW9uIGlvLmVuZGNhcHR1cmUoKQpsb2NhbCBjYXB0dXJlZCA9IGlvLmNhcHR1cmVkCmlvLmNhcHR1cmVkID0gbmlsCnJldHVybiBjYXB0dXJlZAplbmQKbG9jYWwgYnVpbHRpbl9vcGVuID0gaW8ub3BlbgpmdW5jdGlvbiBpby5vcGVuKGZuYW1lLCBtb2RlKQppZiAobW9kZSkgdGhlbgppZiAobW9kZTpmaW5kKCJ3IikpIHRoZW4KbG9jYWwgZGlyID0gcGF0aC5nZXRkaXJlY3RvcnkoZm5hbWUpCm9rLCBlcnIgPSBvcy5ta2RpcihkaXIpCmlmIChub3Qgb2spIHRoZW4KZXJyb3IoZXJyLCAwKQplbmQKZW5kCmVuZApyZXR1cm4gYnVpbHRpbl9vcGVuKGZuYW1lLCBtb2RlKQplbmQKZnVuY3Rpb24gaW8ucHJpbnRmKG1zZywgLi4uKQppZiBub3QgaW8uZW9sIHRoZW4KaW8uZW9sID0gIlxuIgplbmQKaWYgbm90IGlvLmluZGVudCB0aGVuCmlvLmluZGVudCA9ICJcdCIKZW5kCmlmIHR5cGUobXNnKSA9PSAibnVtYmVyIiB0aGVuCnMgPSBzdHJpbmcucmVwKGlvLmluZGVudCwgbXNnKSAuLiBzdHJpbmcuZm9ybWF0KHVucGFjayhhcmcpKQplbHNlCnMgPSBzdHJpbmcuZm9ybWF0KG1zZywgdW5wYWNrKGFyZykpCmVuZAppZiBpby5jYXB0dXJlZCB0aGVuCmlvLmNhcHR1cmVkID0gaW8uY2FwdHVyZWQgLi4gcyAuLiBpby5lb2wKZWxzZQppby53cml0ZShzKQppby53cml0ZShpby5lb2wpCmVuZAplbmQKX3AgPSBpby5wcmludGYKAHByZW1ha2UgPSB7IH0KcHJlbWFrZS5wbGF0Zm9ybXMgPSAKewpOYXRpdmUgPSAKeyAKY2Znc3VmZml4ICAgICAgID0gIiIsCn0sCngzMiA9IAp7IApjZmdzdWZmaXggICAgICAgPSAiMzIiLAp9LAp4NjQgPSAKeyAKY2Znc3VmZml4ICAgICAgID0gIjY0IiwKfSwKVW5pdmVyc2FsID0gCnsgCmNmZ3N1ZmZpeCAgICAgICA9ICJ1bml2IiwKfSwKVW5pdmVyc2FsMzIgPSAKeyAKY2Znc3VmZml4ICAgICAgID0gInVuaXYzMiIsCn0sClVuaXZlcnNhbDY0ID0gCnsgCmNmZ3N1ZmZpeCAgICAgICA9ICJ1bml2NjQiLAp9LAppT1MgPSAKeyAKY2Znc3VmZml4ICAgICAgID0gImlvcyIsCmlzY3Jvc3Njb21waWxlciA9IHRydWUsCn0sClBTMyA9IAp7IApjZmdzdWZmaXggICAgICAgPSAicHMzIiwKaXNjcm9zc2NvbXBpbGVyID0gdHJ1ZSwKbm9zaGFyZWRsaWJzICAgID0gdHJ1ZSwKbmFtZXN0eWxlICAgICAgID0gIlBTMyIsCn0sCldpaURldiA9CnsKY2Znc3VmZml4ICAgICAgID0gIndpaSIsCmlzY3Jvc3Njb21waWxlciA9IHRydWUsCm5hbWVzdHlsZSAgICAgICA9ICJQUzMiLAp9LApYYm94MzYwID0gCnsgCmNmZ3N1ZmZpeCAgICAgICA9ICJ4Ym94MzYwIiwKaXNjcm9zc2NvbXBpbGVyID0gdHJ1ZSwKbmFtZXN0eWxlICAgICAgID0gIndpbmRvd3MiLAp9LAp9CmxvY2FsIGJ1aWx0aW5fZG9maWxlID0gZG9maWxlCmZ1bmN0aW9uIGRvZmlsZShmbmFtZSkKbG9jYWwgb2xkY3dkID0gb3MuZ2V0Y3dkKCkKbG9jYWwgb2xkZmlsZSA9IF9TQ1JJUFQKaWYgKG5vdCBvcy5pc2ZpbGUoZm5hbWUpKSB0aGVuCmxvY2FsIHBhdGggPSBvcy5wYXRoc2VhcmNoKGZuYW1lLCBfT1BUSU9OU1sic2NyaXB0cyJdLCBvcy5nZXRlbnYoIlBSRU1BS0VfUEFUSCIpKQppZiAocGF0aCkgdGhlbgpmbmFtZSA9IHBhdGguLiIvIi4uZm5hbWUKZW5kCmVuZApfU0NSSVBUID0gcGF0aC5nZXRhYnNvbHV0ZShmbmFtZSkKbG9jYWwgbmV3Y3dkID0gcGF0aC5nZXRkaXJlY3RvcnkoX1NDUklQVCkKb3MuY2hkaXIobmV3Y3dkKQpsb2NhbCBhLCBiLCBjLCBkLCBlLCBmID0gYnVpbHRpbl9kb2ZpbGUoX1NDUklQVCkKX1NDUklQVCA9IG9sZGZpbGUKb3MuY2hkaXIob2xkY3dkKQpyZXR1cm4gYSwgYiwgYywgZCwgZSwgZgplbmQKZnVuY3Rpb24gaWlmKGV4cHIsIHRydWV2YWwsIGZhbHNldmFsKQppZiAoZXhwcikgdGhlbgpyZXR1cm4gdHJ1ZXZhbAplbHNlCnJldHVybiBmYWxzZXZhbAplbmQKZW5kCmZ1bmN0aW9uIGluY2x1ZGUoZm5hbWUpCnJldHVybiBkb2ZpbGUoZm5hbWUgLi4gIi9wcmVtYWtlNC5sdWEiKQplbmQKZnVuY3Rpb24gcHJpbnRmKG1zZywgLi4uKQpwcmludChzdHJpbmcuZm9ybWF0KG1zZywgdW5wYWNrKGFyZykpKQplbmQKbG9jYWwgYnVpbHRpbl90eXBlID0gdHlwZQpmdW5jdGlvbiB0eXBlKHQpCmxvY2FsIG10ID0gZ2V0bWV0YXRhYmxlKHQpCmlmIChtdCkgdGhlbgppZiAobXQuX190eXBlKSB0aGVuCnJldHVybiBtdC5fX3R5cGUKZW5kCmVuZApyZXR1cm4gYnVpbHRpbl90eXBlKHQpCmVuZAoAcHJlbWFrZS5hY3Rpb24gPSB7IH0KcHJlbWFrZS5hY3Rpb24ubGlzdCA9IHsgfQpmdW5jdGlvbiBwcmVtYWtlLmFjdGlvbi5hZGQoYSkKbG9jYWwgbWlzc2luZwpmb3IgXywgZmllbGQgaW4gaXBhaXJzKHsiZGVzY3JpcHRpb24iLCAidHJpZ2dlciJ9KSBkbwppZiAobm90IGFbZmllbGRdKSB0aGVuCm1pc3NpbmcgPSBmaWVsZAplbmQKZW5kCmlmIChtaXNzaW5nKSB0aGVuCmVycm9yKCJhY3Rpb24gbmVlZHMgYSAiIC4uIG1pc3NpbmcsIDMpCmVuZApwcmVtYWtlLmFjdGlvbi5saXN0W2EudHJpZ2dlcl0gPSBhCmVuZApmdW5jdGlvbiBwcmVtYWtlLmFjdGlvbi5jYWxsKG5hbWUpCmxvY2FsIGEgPSBwcmVtYWtlLmFjdGlvbi5saXN0W25hbWVdCmZvciBzbG4gaW4gcHJlbWFrZS5zb2x1dGlvbi5lYWNoKCkgZG8KaWYgYS5vbnNvbHV0aW9uIHRoZW4KYS5vbnNvbHV0aW9uKHNsbikKZW5kCmZvciBwcmogaW4gcHJlbWFrZS5zb2x1dGlvbi5lYWNocHJvamVjdChzbG4pIGRvCmlmIGEub25wcm9qZWN0IHRoZW4KYS5vbnByb2plY3QocHJqKQplbmQKZW5kCmVuZAppZiBhLmV4ZWN1dGUgdGhlbgphLmV4ZWN1dGUoKQplbmQKZW5kCmZ1bmN0aW9uIHByZW1ha2UuYWN0aW9uLmN1cnJlbnQoKQpyZXR1cm4gcHJlbWFrZS5hY3Rpb24uZ2V0KF9BQ1RJT04pCmVuZApmdW5jdGlvbiBwcmVtYWtlLmFjdGlvbi5nZXQobmFtZSkKcmV0dXJuIHByZW1ha2UuYWN0aW9uLmxpc3RbbmFtZV0KZW5kCmZ1bmN0aW9uIHByZW1ha2UuYWN0aW9uLmVhY2goKQpsb2NhbCBrZXlzID0geyB9CmZvciBfLCBhY3Rpb24gaW4gcGFpcnMocHJlbWFrZS5hY3Rpb24ubGlzdCkgZG8KdGFibGUuaW5zZXJ0KGtleXMsIGFjdGlvbi50cmlnZ2VyKQplbmQKdGFibGUuc29ydChrZXlzKQpsb2NhbCBpID0gMApyZXR1cm4gZnVuY3Rpb24oKQppID0gaSArIDEKcmV0dXJuIHByZW1ha2UuYWN0aW9uLmxpc3Rba2V5c1tpXV0KZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLmFjdGlvbi5zZXQobmFtZSkKX0FDVElPTiA9IG5hbWUKbG9jYWwgYWN0aW9uID0gcHJlbWFrZS5hY3Rpb24uZ2V0KG5hbWUpCmlmIGFjdGlvbiB0aGVuCl9PUyA9IGFjdGlvbi5vcyBvciBfT1MKZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLmFjdGlvbi5zdXBwb3J0cyhhY3Rpb24sIGZlYXR1cmUpCmlmIG5vdCBhY3Rpb24gdGhlbgpyZXR1cm4gZmFsc2UKZW5kCmlmIGFjdGlvbi52YWxpZF9sYW5ndWFnZXMgdGhlbgppZiB0YWJsZS5jb250YWlucyhhY3Rpb24udmFsaWRfbGFuZ3VhZ2VzLCBmZWF0dXJlKSB0aGVuCnJldHVybiB0cnVlCmVuZAplbmQKaWYgYWN0aW9uLnZhbGlkX2tpbmRzIHRoZW4KaWYgdGFibGUuY29udGFpbnMoYWN0aW9uLnZhbGlkX2tpbmRzLCBmZWF0dXJlKSB0aGVuCnJldHVybiB0cnVlCmVuZAplbmQKcmV0dXJuIGZhbHNlCmVuZAoAcHJlbWFrZS5vcHRpb24gPSB7IH0KcHJlbWFrZS5vcHRpb24ubGlzdCA9IHsgfQpmdW5jdGlvbiBwcmVtYWtlLm9wdGlvbi5hZGQob3B0KQpsb2NhbCBtaXNzaW5nCmZvciBfLCBmaWVsZCBpbiBpcGFpcnMoeyAiZGVzY3JpcHRpb24iLCAidHJpZ2dlciIgfSkgZG8KaWYgKG5vdCBvcHRbZmllbGRdKSB0aGVuCm1pc3NpbmcgPSBmaWVsZAplbmQKZW5kCmlmIChtaXNzaW5nKSB0aGVuCmVycm9yKCJvcHRpb24gbmVlZHMgYSAiIC4uIG1pc3NpbmcsIDMpCmVuZApwcmVtYWtlLm9wdGlvbi5saXN0W29wdC50cmlnZ2VyXSA9IG9wdAplbmQKZnVuY3Rpb24gcHJlbWFrZS5vcHRpb24uZ2V0KG5hbWUpCnJldHVybiBwcmVtYWtlLm9wdGlvbi5saXN0W25hbWVdCmVuZApmdW5jdGlvbiBwcmVtYWtlLm9wdGlvbi5lYWNoKCkKbG9jYWwga2V5cyA9IHsgfQpmb3IgXywgb3B0aW9uIGluIHBhaXJzKHByZW1ha2Uub3B0aW9uLmxpc3QpIGRvCnRhYmxlLmluc2VydChrZXlzLCBvcHRpb24udHJpZ2dlcikKZW5kCnRhYmxlLnNvcnQoa2V5cykKbG9jYWwgaSA9IDAKcmV0dXJuIGZ1bmN0aW9uKCkKaSA9IGkgKyAxCnJldHVybiBwcmVtYWtlLm9wdGlvbi5saXN0W2tleXNbaV1dCmVuZAplbmQKZnVuY3Rpb24gcHJlbWFrZS5vcHRpb24udmFsaWRhdGUodmFsdWVzKQpmb3Iga2V5LCB2YWx1ZSBpbiBwYWlycyh2YWx1ZXMpIGRvCmxvY2FsIG9wdCA9IHByZW1ha2Uub3B0aW9uLmdldChrZXkpCmlmIChub3Qgb3B0KSB0aGVuCnJldHVybiBmYWxzZSwgImludmFsaWQgb3B0aW9uICciIC4uIGtleSAuLiAiJyIKZW5kCmlmIChvcHQudmFsdWUgYW5kIHZhbHVlID09ICIiKSB0aGVuCnJldHVybiBmYWxzZSwgIm5vIHZhbHVlIHNwZWNpZmllZCBmb3Igb3B0aW9uICciIC4uIGtleSAuLiAiJyIKZW5kCmlmIG9wdC5hbGxvd2VkIHRoZW4KbG9jYWwgZm91bmQgPSBmYWxzZQpmb3IgXywgbWF0Y2ggaW4gaXBhaXJzKG9wdC5hbGxvd2VkKSBkbwppZiBtYXRjaFsxXSA9PSB2YWx1ZSB0aGVuCmZvdW5kID0gdHJ1ZQpicmVhawplbmQKZW5kCmlmIG5vdCBmb3VuZCB0aGVuCnJldHVybiBmYWxzZSwgc3RyaW5nLmZvcm1hdCgiaW52YWxpZCB2YWx1ZSAnJXMnIGZvciBvcHRpb24gJyVzJyIsIHZhbHVlLCBrZXkpCmVuZAplbmQKZW5kCnJldHVybiB0cnVlCmVuZAoAcHJlbWFrZS50cmVlID0geyB9CmxvY2FsIHRyZWUgPSBwcmVtYWtlLnRyZWUKZnVuY3Rpb24gcHJlbWFrZS50cmVlLm5ldyhuKQpsb2NhbCB0ID0gewpuYW1lID0gbiwKY2hpbGRyZW4gPSB7IH0KfQpyZXR1cm4gdAplbmQKZnVuY3Rpb24gcHJlbWFrZS50cmVlLmFkZCh0ciwgcCwgb25hZGRmdW5jKQppZiBwID09ICIuIiB0aGVuCnJldHVybiB0cgplbmQKbG9jYWwgcGFyZW50bm9kZSA9IHRyZWUuYWRkKHRyLCBwYXRoLmdldGRpcmVjdG9yeShwKSwgb25hZGRmdW5jKQpsb2NhbCBjaGlsZG5hbWUgPSBwYXRoLmdldG5hbWUocCkKaWYgY2hpbGRuYW1lID09ICIuLiIgdGhlbgpyZXR1cm4gcGFyZW50bm9kZQplbmQKbG9jYWwgY2hpbGRub2RlID0gcGFyZW50bm9kZS5jaGlsZHJlbltjaGlsZG5hbWVdCmlmIG5vdCBjaGlsZG5vZGUgb3IgY2hpbGRub2RlLnBhdGggfj0gcCB0aGVuCmNoaWxkbm9kZSA9IHRyZWUuaW5zZXJ0KHBhcmVudG5vZGUsIHRyZWUubmV3KGNoaWxkbmFtZSkpCmNoaWxkbm9kZS5wYXRoID0gcAppZiBvbmFkZGZ1bmMgdGhlbgpvbmFkZGZ1bmMoY2hpbGRub2RlKQplbmQKZW5kCnJldHVybiBjaGlsZG5vZGUKZW5kCmZ1bmN0aW9uIHByZW1ha2UudHJlZS5pbnNlcnQocGFyZW50LCBjaGlsZCkKdGFibGUuaW5zZXJ0KHBhcmVudC5jaGlsZHJlbiwgY2hpbGQpCmlmIGNoaWxkLm5hbWUgdGhlbgpwYXJlbnQuY2hpbGRyZW5bY2hpbGQubmFtZV0gPSBjaGlsZAplbmQKY2hpbGQucGFyZW50ID0gcGFyZW50CnJldHVybiBjaGlsZAplbmQKZnVuY3Rpb24gcHJlbWFrZS50cmVlLmdldGxvY2FscGF0aChub2RlKQppZiBub2RlLnBhcmVudC5wYXRoIHRoZW4KcmV0dXJuIG5vZGUubmFtZQplbHNlaWYgbm9kZS5jZmcgdGhlbgpyZXR1cm4gbm9kZS5jZmcubmFtZQplbHNlCnJldHVybiBub2RlLnBhdGgKZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLnRyZWUucmVtb3ZlKG5vZGUpCmxvY2FsIGNoaWxkcmVuID0gbm9kZS5wYXJlbnQuY2hpbGRyZW4KZm9yIGkgPSAxLCAjY2hpbGRyZW4gZG8KaWYgY2hpbGRyZW5baV0gPT0gbm9kZSB0aGVuCnRhYmxlLnJlbW92ZShjaGlsZHJlbiwgaSkKZW5kCmVuZApub2RlLmNoaWxkcmVuID0ge30KZW5kCmZ1bmN0aW9uIHByZW1ha2UudHJlZS5zb3J0KHRyKQp0cmVlLnRyYXZlcnNlKHRyLCB7Cm9ubm9kZSA9IGZ1bmN0aW9uKG5vZGUpCnRhYmxlLnNvcnQobm9kZS5jaGlsZHJlbiwgZnVuY3Rpb24oYSxiKQpyZXR1cm4gYS5uYW1lIDwgYi5uYW1lCmVuZCkKZW5kCn0sIHRydWUpCmVuZApmdW5jdGlvbiBwcmVtYWtlLnRyZWUudHJhdmVyc2UodCwgZm4sIGluY2x1ZGVyb290LCBpbml0aWFsZGVwdGgpCmxvY2FsIGRvbm9kZSwgZG9jaGlsZHJlbgpkb25vZGUgPSBmdW5jdGlvbihub2RlLCBmbiwgZGVwdGgpCmlmIG5vZGUuaXNyZW1vdmVkIHRoZW4gCnJldHVybiAKZW5kCmlmIGZuLm9ubm9kZSB0aGVuIApmbi5vbm5vZGUobm9kZSwgZGVwdGgpIAplbmQKaWYgI25vZGUuY2hpbGRyZW4gPiAwIHRoZW4KaWYgZm4ub25icmFuY2hlbnRlciB0aGVuCmZuLm9uYnJhbmNoZW50ZXIobm9kZSwgZGVwdGgpCmVuZAppZiBmbi5vbmJyYW5jaCB0aGVuIApmbi5vbmJyYW5jaChub2RlLCBkZXB0aCkgCmVuZApkb2NoaWxkcmVuKG5vZGUsIGZuLCBkZXB0aCArIDEpCmlmIGZuLm9uYnJhbmNoZXhpdCB0aGVuCmZuLm9uYnJhbmNoZXhpdChub2RlLCBkZXB0aCkKZW5kCmVsc2UKaWYgZm4ub25sZWFmIHRoZW4gCmZuLm9ubGVhZihub2RlLCBkZXB0aCkgCmVuZAplbmQKZW5kCmRvY2hpbGRyZW4gPSBmdW5jdGlvbihwYXJlbnQsIGZuLCBkZXB0aCkKbG9jYWwgaSA9IDEKd2hpbGUgaSA8PSAjcGFyZW50LmNoaWxkcmVuIGRvCmxvY2FsIG5vZGUgPSBwYXJlbnQuY2hpbGRyZW5baV0KZG9ub2RlKG5vZGUsIGZuLCBkZXB0aCkKaWYgbm9kZSA9PSBwYXJlbnQuY2hpbGRyZW5baV0gdGhlbgppID0gaSArIDEKZW5kCmVuZAplbmQKaWYgbm90IGluaXRpYWxkZXB0aCB0aGVuCmluaXRpYWxkZXB0aCA9IDAKZW5kCmlmIGluY2x1ZGVyb290IHRoZW4KZG9ub2RlKHQsIGZuLCBpbml0aWFsZGVwdGgpCmVsc2UKZG9jaGlsZHJlbih0LCBmbiwgaW5pdGlhbGRlcHRoKQplbmQKZW5kCgBwcmVtYWtlLnNvbHV0aW9uID0geyB9CnByZW1ha2Uuc29sdXRpb24ubGlzdCA9IHsgfQpmdW5jdGlvbiBwcmVtYWtlLnNvbHV0aW9uLm5ldyhuYW1lKQpsb2NhbCBzbG4gPSB7IH0KdGFibGUuaW5zZXJ0KHByZW1ha2Uuc29sdXRpb24ubGlzdCwgc2xuKQpwcmVtYWtlLnNvbHV0aW9uLmxpc3RbbmFtZV0gPSBzbG4Kc2V0bWV0YXRhYmxlKHNsbiwgeyBfX3R5cGU9InNvbHV0aW9uIiB9KQpzbG4ubmFtZSAgICAgICAgICAgPSBuYW1lCnNsbi5iYXNlZGlyICAgICAgICA9IG9zLmdldGN3ZCgpCnNsbi5wcm9qZWN0cyAgICAgICA9IHsgfQpzbG4uYmxvY2tzICAgICAgICAgPSB7IH0Kc2xuLmNvbmZpZ3VyYXRpb25zID0geyB9CnJldHVybiBzbG4KZW5kCmZ1bmN0aW9uIHByZW1ha2Uuc29sdXRpb24uZWFjaCgpCmxvY2FsIGkgPSAwCnJldHVybiBmdW5jdGlvbiAoKQppID0gaSArIDEKaWYgaSA8PSAjcHJlbWFrZS5zb2x1dGlvbi5saXN0IHRoZW4KcmV0dXJuIHByZW1ha2Uuc29sdXRpb24ubGlzdFtpXQplbmQKZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLnNvbHV0aW9uLmVhY2hwcm9qZWN0KHNsbikKbG9jYWwgaSA9IDAKcmV0dXJuIGZ1bmN0aW9uICgpCmkgPSBpICsgMQppZiAoaSA8PSAjc2xuLnByb2plY3RzKSB0aGVuCnJldHVybiBwcmVtYWtlLnNvbHV0aW9uLmdldHByb2plY3Qoc2xuLCBpKQplbmQKZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLnNvbHV0aW9uLmdldChrZXkpCnJldHVybiBwcmVtYWtlLnNvbHV0aW9uLmxpc3Rba2V5XQplbmQKZnVuY3Rpb24gcHJlbWFrZS5zb2x1dGlvbi5nZXRwcm9qZWN0KHNsbiwgaWR4KQpsb2NhbCBwcmogPSBzbG4ucHJvamVjdHNbaWR4XQpsb2NhbCBjZmcgPSBwcmVtYWtlLmdldGNvbmZpZyhwcmopCmNmZy5uYW1lID0gcHJqLm5hbWUKcmV0dXJuIGNmZwplbmQKAHByZW1ha2UucHJvamVjdCA9IHsgfQpmdW5jdGlvbiBwcmVtYWtlLnByb2plY3QuYnVpbGRzb3VyY2V0cmVlKHByaikKbG9jYWwgdHIgPSBwcmVtYWtlLnRyZWUubmV3KHByai5uYW1lKQp0ci5wcm9qZWN0ID0gcHJqCmxvY2FsIGlzdnBhdGgKbG9jYWwgZnVuY3Rpb24gb25hZGQobm9kZSkKbm9kZS5pc3ZwYXRoID0gaXN2cGF0aAplbmQKZm9yIGZjZmcgaW4gcHJlbWFrZS5wcm9qZWN0LmVhY2hmaWxlKHByaikgZG8KaXN2cGF0aCA9IChmY2ZnLm5hbWUgfj0gZmNmZy52cGF0aCkKbG9jYWwgbm9kZSA9IHByZW1ha2UudHJlZS5hZGQodHIsIGZjZmcudnBhdGgsIG9uYWRkKQpub2RlLmNmZyA9IGZjZmcKZW5kCnByZW1ha2UudHJlZS5zb3J0KHRyKQpyZXR1cm4gdHIKZW5kCmZ1bmN0aW9uIHByZW1ha2UuZWFjaGNvbmZpZyhwcmosIHBsYXRmb3JtKQppZiBwcmoucHJvamVjdCB0aGVuIHByaiA9IHByai5wcm9qZWN0IGVuZApsb2NhbCBjZmdzID0gcHJqLnNvbHV0aW9uLmNvbmZpZ3VyYXRpb25zCmxvY2FsIGkgPSAwCnJldHVybiBmdW5jdGlvbiAoKQppID0gaSArIDEKaWYgaSA8PSAjY2ZncyB0aGVuCnJldHVybiBwcmVtYWtlLmdldGNvbmZpZyhwcmosIGNmZ3NbaV0sIHBsYXRmb3JtKQplbmQKZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLnByb2plY3QuZWFjaGZpbGUocHJqKQppZiBub3QgcHJqLnByb2plY3QgdGhlbiBwcmogPSBwcmVtYWtlLmdldGNvbmZpZyhwcmopIGVuZApsb2NhbCBpID0gMApsb2NhbCB0ID0gcHJqLmZpbGVzCnJldHVybiBmdW5jdGlvbiAoKQppID0gaSArIDEKaWYgKGkgPD0gI3QpIHRoZW4KbG9jYWwgZmNmZyA9IHByai5fX2ZpbGVjb25maWdzW3RbaV1dCmZjZmcudnBhdGggPSBwcmVtYWtlLnByb2plY3QuZ2V0dnBhdGgocHJqLCBmY2ZnLm5hbWUpCnJldHVybiBmY2ZnCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHByZW1ha2UuZXNjKHZhbHVlKQppZiAodHlwZSh2YWx1ZSkgPT0gInRhYmxlIikgdGhlbgpsb2NhbCByZXN1bHQgPSB7IH0KZm9yIF8sdiBpbiBpcGFpcnModmFsdWUpIGRvCnRhYmxlLmluc2VydChyZXN1bHQsIHByZW1ha2UuZXNjKHYpKQplbmQKcmV0dXJuIHJlc3VsdAplbHNlCnZhbHVlID0gdmFsdWU6Z3N1YignJicsICAiJmFtcDsiKQp2YWx1ZSA9IHZhbHVlOmdzdWIoJyInLCAgIiZxdW90OyIpCnZhbHVlID0gdmFsdWU6Z3N1YigiJyIsICAiJmFwb3M7IikKdmFsdWUgPSB2YWx1ZTpnc3ViKCc8JywgICImbHQ7IikKdmFsdWUgPSB2YWx1ZTpnc3ViKCc+JywgICImZ3Q7IikKdmFsdWUgPSB2YWx1ZTpnc3ViKCdccicsICImI3gwRDsiKQp2YWx1ZSA9IHZhbHVlOmdzdWIoJ1xuJywgIiYjeDBBOyIpCnJldHVybiB2YWx1ZQplbmQKZW5kCmZ1bmN0aW9uIHByZW1ha2UuZmlsdGVycGxhdGZvcm1zKHNsbiwgbWFwLCBkZWZhdWx0KQpsb2NhbCByZXN1bHQgPSB7IH0KbG9jYWwga2V5cyA9IHsgfQppZiBzbG4ucGxhdGZvcm1zIHRoZW4KZm9yIF8sIHAgaW4gaXBhaXJzKHNsbi5wbGF0Zm9ybXMpIGRvCmlmIG1hcFtwXSBhbmQgbm90IHRhYmxlLmNvbnRhaW5zKGtleXMsIG1hcFtwXSkgdGhlbgp0YWJsZS5pbnNlcnQocmVzdWx0LCBwKQp0YWJsZS5pbnNlcnQoa2V5cywgbWFwW3BdKQplbmQKZW5kCmVuZAppZiAjcmVzdWx0ID09IDAgYW5kIGRlZmF1bHQgdGhlbgp0YWJsZS5pbnNlcnQocmVzdWx0LCBkZWZhdWx0KQplbmQKcmV0dXJuIHJlc3VsdAplbmQKZnVuY3Rpb24gcHJlbWFrZS5maW5kcHJvamVjdChuYW1lKQpmb3Igc2xuIGluIHByZW1ha2Uuc29sdXRpb24uZWFjaCgpIGRvCmZvciBwcmogaW4gcHJlbWFrZS5zb2x1dGlvbi5lYWNocHJvamVjdChzbG4pIGRvCmlmIChwcmoubmFtZSA9PSBuYW1lKSB0aGVuCnJldHVybiAgcHJqCmVuZAplbmQKZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLmZpbmRmaWxlKHByaiwgZXh0ZW5zaW9uKQpmb3IgXywgZm5hbWUgaW4gaXBhaXJzKHByai5maWxlcykgZG8KaWYgZm5hbWU6ZW5kc3dpdGgoZXh0ZW5zaW9uKSB0aGVuIHJldHVybiBmbmFtZSBlbmQKZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLmdldGNvbmZpZyhwcmosIGNmZ25hbWUsIHBsdG5hbWUpCnByaiA9IHByai5wcm9qZWN0IG9yIHByagppZiBwbHRuYW1lID09ICJOYXRpdmUiIG9yIG5vdCB0YWJsZS5jb250YWlucyhwcmouc29sdXRpb24ucGxhdGZvcm1zIG9yIHt9LCBwbHRuYW1lKSB0aGVuCnBsdG5hbWUgPSBuaWwKZW5kCmxvY2FsIGtleSA9IChjZmduYW1lIG9yICIiKQppZiBwbHRuYW1lIHRoZW4ga2V5ID0ga2V5IC4uIHBsdG5hbWUgZW5kCnJldHVybiBwcmouX19jb25maWdzW2tleV0KZW5kCmZ1bmN0aW9uIHByZW1ha2UuZ2V0Y29uZmlnbmFtZShjZmduYW1lLCBwbGF0Zm9ybSwgdXNlc2hvcnRuYW1lKQppZiBjZmduYW1lIHRoZW4KbG9jYWwgbmFtZSA9IGNmZ25hbWUKaWYgcGxhdGZvcm0gYW5kIHBsYXRmb3JtIH49ICJOYXRpdmUiIHRoZW4KaWYgdXNlc2hvcnRuYW1lIHRoZW4KbmFtZSA9IG5hbWUgLi4gcHJlbWFrZS5wbGF0Zm9ybXNbcGxhdGZvcm1dLmNmZ3N1ZmZpeAplbHNlCm5hbWUgPSBuYW1lIC4uICJ8IiAuLiBwbGF0Zm9ybQplbmQKZW5kCnJldHVybiBpaWYodXNlc2hvcnRuYW1lLCBuYW1lOmxvd2VyKCksIG5hbWUpCmVuZAplbmQKZnVuY3Rpb24gcHJlbWFrZS5nZXRkZXBlbmRlbmNpZXMocHJqKQpwcmogPSBwcmoucHJvamVjdCBvciBwcmoKbG9jYWwgcmVzdWx0cyA9IHsgfQpmb3IgXywgY2ZnIGluIHBhaXJzKHByai5fX2NvbmZpZ3MpIGRvCmZvciBfLCBsaW5rIGluIGlwYWlycyhjZmcubGlua3MpIGRvCmxvY2FsIGRlcCA9IHByZW1ha2UuZmluZHByb2plY3QobGluaykKaWYgZGVwIGFuZCBub3QgdGFibGUuY29udGFpbnMocmVzdWx0cywgZGVwKSB0aGVuCnRhYmxlLmluc2VydChyZXN1bHRzLCBkZXApCmVuZAplbmQKZW5kCnJldHVybiByZXN1bHRzCmVuZApmdW5jdGlvbiBwcmVtYWtlLnByb2plY3QuZ2V0YmFzZW5hbWUocHJqbmFtZSwgcGF0dGVybikKcmV0dXJuIHBhdHRlcm46Z3N1YigiJSUlJSIsIHByam5hbWUpCmVuZApmdW5jdGlvbiBwcmVtYWtlLnByb2plY3QuZ2V0ZmlsZW5hbWUocHJqLCBwYXR0ZXJuKQpsb2NhbCBmbmFtZSA9IHByZW1ha2UucHJvamVjdC5nZXRiYXNlbmFtZShwcmoubmFtZSwgcGF0dGVybikKZm5hbWUgPSBwYXRoLmpvaW4ocHJqLmxvY2F0aW9uLCBmbmFtZSkKcmV0dXJuIHBhdGguZ2V0cmVsYXRpdmUob3MuZ2V0Y3dkKCksIGZuYW1lKQplbmQKIGZ1bmN0aW9uIHByZW1ha2UuZ2V0bGlua3MoY2ZnLCBraW5kLCBwYXJ0KQpsb2NhbCByZXN1bHQgPSBpaWYgKHBhcnQgPT0gImRpcmVjdG9yeSIgYW5kIGtpbmQgPT0gImFsbCIsIGNmZy5saWJkaXJzLCB7fSkKbG9jYWwgY2ZnbmFtZSA9IGlpZihjZmcubmFtZSA9PSBjZmcucHJvamVjdC5uYW1lLCAiIiwgY2ZnLm5hbWUpCmxvY2FsIHBhdGhzdHlsZSA9IHByZW1ha2UuZ2V0cGF0aHN0eWxlKGNmZykKbG9jYWwgbmFtZXN0eWxlID0gcHJlbWFrZS5nZXRuYW1lc3R5bGUoY2ZnKQpsb2NhbCBmdW5jdGlvbiBjYW5saW5rKHNvdXJjZSwgdGFyZ2V0KQppZiAodGFyZ2V0LmtpbmQgfj0gIlNoYXJlZExpYiIgYW5kIHRhcmdldC5raW5kIH49ICJTdGF0aWNMaWIiKSB0aGVuCnJldHVybiBmYWxzZQplbmQKaWYgcHJlbWFrZS5pc2NwcHByb2plY3Qoc291cmNlKSB0aGVuCnJldHVybiBwcmVtYWtlLmlzY3BwcHJvamVjdCh0YXJnZXQpCmVsc2VpZiBwcmVtYWtlLmlzZG90bmV0cHJvamVjdChzb3VyY2UpIHRoZW4KcmV0dXJuIHByZW1ha2UuaXNkb3RuZXRwcm9qZWN0KHRhcmdldCkKZW5kCmVuZApmb3IgXywgbGluayBpbiBpcGFpcnMoY2ZnLmxpbmtzKSBkbwpsb2NhbCBpdGVtCmxvY2FsIHByaiA9IHByZW1ha2UuZmluZHByb2plY3QobGluaykKaWYgcHJqIGFuZCBraW5kIH49ICJzeXN0ZW0iIHRoZW4KbG9jYWwgcHJqY2ZnID0gcHJlbWFrZS5nZXRjb25maWcocHJqLCBjZmduYW1lLCBjZmcucGxhdGZvcm0pCmlmIGtpbmQgPT0gImRlcGVuZGVuY2llcyIgb3IgY2FubGluayhjZmcsIHByamNmZykgdGhlbgppZiAocGFydCA9PSAiZGlyZWN0b3J5IikgdGhlbgppdGVtID0gcGF0aC5yZWJhc2UocHJqY2ZnLmxpbmt0YXJnZXQuZGlyZWN0b3J5LCBwcmpjZmcubG9jYXRpb24sIGNmZy5sb2NhdGlvbikKZWxzZWlmIChwYXJ0ID09ICJiYXNlbmFtZSIpIHRoZW4KaXRlbSA9IHByamNmZy5saW5rdGFyZ2V0LmJhc2VuYW1lCmVsc2VpZiAocGFydCA9PSAiZnVsbHBhdGgiKSB0aGVuCml0ZW0gPSBwYXRoLnJlYmFzZShwcmpjZmcubGlua3RhcmdldC5mdWxscGF0aCwgcHJqY2ZnLmxvY2F0aW9uLCBjZmcubG9jYXRpb24pCmVsc2VpZiAocGFydCA9PSAib2JqZWN0IikgdGhlbgppdGVtID0gcHJqY2ZnCmVuZAplbmQKZWxzZWlmIG5vdCBwcmogYW5kIChraW5kID09ICJzeXN0ZW0iIG9yIGtpbmQgPT0gImFsbCIpIHRoZW4KaWYgKHBhcnQgPT0gImRpcmVjdG9yeSIpIHRoZW4KaXRlbSA9IHBhdGguZ2V0ZGlyZWN0b3J5KGxpbmspCmVsc2VpZiAocGFydCA9PSAiZnVsbHBhdGgiKSB0aGVuCml0ZW0gPSBsaW5rCmlmIG5hbWVzdHlsZSA9PSAid2luZG93cyIgdGhlbgppZiBwcmVtYWtlLmlzY3BwcHJvamVjdChjZmcpIHRoZW4KaXRlbSA9IGl0ZW0gLi4gIi5saWIiCmVsc2VpZiBwcmVtYWtlLmlzZG90bmV0cHJvamVjdChjZmcpIHRoZW4KaXRlbSA9IGl0ZW0gLi4gIi5kbGwiCmVuZAplbmQKZWxzZWlmIHBhcnQgPT0gIm5hbWUiIHRoZW4KaXRlbSA9IHBhdGguZ2V0bmFtZShsaW5rKQplbHNlaWYgcGFydCA9PSAiYmFzZW5hbWUiIHRoZW4KaXRlbSA9IHBhdGguZ2V0YmFzZW5hbWUobGluaykKZWxzZQppdGVtID0gbGluawplbmQKaWYgaXRlbTpmaW5kKCIvIiwgbmlsLCB0cnVlKSB0aGVuCml0ZW0gPSBwYXRoLmdldHJlbGF0aXZlKGNmZy5wcm9qZWN0LmxvY2F0aW9uLCBpdGVtKQplbmQKZW5kCmlmIGl0ZW0gdGhlbgppZiBwYXRoc3R5bGUgPT0gIndpbmRvd3MiIGFuZCBwYXJ0IH49ICJvYmplY3QiIHRoZW4KaXRlbSA9IHBhdGgudHJhbnNsYXRlKGl0ZW0sICJcXCIpCmVuZAppZiBub3QgdGFibGUuY29udGFpbnMocmVzdWx0LCBpdGVtKSB0aGVuCnRhYmxlLmluc2VydChyZXN1bHQsIGl0ZW0pCmVuZAplbmQKZW5kCnJldHVybiByZXN1bHQKZW5kCmZ1bmN0aW9uIHByZW1ha2UuZ2V0bmFtZXN0eWxlKGNmZykKcmV0dXJuIHByZW1ha2UucGxhdGZvcm1zW2NmZy5wbGF0Zm9ybV0ubmFtZXN0eWxlIG9yIHByZW1ha2UuZ2V0dG9vbChjZmcpLm5hbWVzdHlsZSBvciAicG9zaXgiCmVuZApmdW5jdGlvbiBwcmVtYWtlLmdldHBhdGhzdHlsZShjZmcpCmlmIHByZW1ha2UuYWN0aW9uLmN1cnJlbnQoKS5vcyA9PSAid2luZG93cyIgdGhlbgpyZXR1cm4gIndpbmRvd3MiCmVsc2UKcmV0dXJuICJwb3NpeCIKZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLmdldHRhcmdldChjZmcsIGRpcmVjdGlvbiwgcGF0aHN0eWxlLCBuYW1lc3R5bGUsIHN5c3RlbSkKaWYgc3lzdGVtID09ICJic2QiIG9yIHN5c3RlbSA9PSAic29sYXJpcyIgdGhlbgpzeXN0ZW0gPSAibGludXgiCmVuZApsb2NhbCBraW5kID0gY2ZnLmtpbmQKaWYgcHJlbWFrZS5pc2NwcHByb2plY3QoY2ZnKSB0aGVuCmlmIChuYW1lc3R5bGUgPT0gIndpbmRvd3MiIG9yIHN5c3RlbSA9PSAid2luZG93cyIpCmFuZCBraW5kID09ICJTaGFyZWRMaWIiIGFuZCBkaXJlY3Rpb24gPT0gImxpbmsiCmFuZCBub3QgY2ZnLmZsYWdzLk5vSW1wb3J0TGliCnRoZW4Ka2luZCA9ICJTdGF0aWNMaWIiCmVuZAppZiBuYW1lc3R5bGUgPT0gInBvc2l4IiBhbmQgc3lzdGVtID09ICJ3aW5kb3dzIiBhbmQga2luZCB+PSAiU3RhdGljTGliIiB0aGVuCm5hbWVzdHlsZSA9ICJ3aW5kb3dzIgplbmQKZW5kCmxvY2FsIGZpZWxkICAgPSAiYnVpbGQiCmlmIGRpcmVjdGlvbiA9PSAibGluayIgYW5kIGNmZy5raW5kID09ICJTaGFyZWRMaWIiIHRoZW4KZmllbGQgPSAiaW1wbGliIgplbmQKbG9jYWwgbmFtZSAgICA9IGNmZ1tmaWVsZC4uIm5hbWUiXSBvciBjZmcudGFyZ2V0bmFtZSBvciBjZmcucHJvamVjdC5uYW1lCmxvY2FsIGRpciAgICAgPSBjZmdbZmllbGQuLiJkaXIiXSBvciBjZmcudGFyZ2V0ZGlyIG9yIHBhdGguZ2V0cmVsYXRpdmUoY2ZnLmxvY2F0aW9uLCBjZmcuYmFzZWRpcikKbG9jYWwgcHJlZml4ICA9ICIiCmxvY2FsIHN1ZmZpeCAgPSAiIgpsb2NhbCBleHQgICAgID0gIiIKbG9jYWwgYnVuZGxlcGF0aCwgYnVuZGxlbmFtZQppZiBuYW1lc3R5bGUgPT0gIndpbmRvd3MiIHRoZW4KaWYga2luZCA9PSAiQ29uc29sZUFwcCIgb3Iga2luZCA9PSAiV2luZG93ZWRBcHAiIHRoZW4KZXh0ID0gIi5leGUiCmVsc2VpZiBraW5kID09ICJTaGFyZWRMaWIiIHRoZW4KZXh0ID0gIi5kbGwiCmVsc2VpZiBraW5kID09ICJTdGF0aWNMaWIiIHRoZW4KZXh0ID0gIi5saWIiCmVuZAplbHNlaWYgbmFtZXN0eWxlID09ICJwb3NpeCIgdGhlbgppZiBraW5kID09ICJXaW5kb3dlZEFwcCIgYW5kIHN5c3RlbSA9PSAibWFjb3N4IiB0aGVuCmJ1bmRsZW5hbWUgPSBuYW1lIC4uICIuYXBwIgpidW5kbGVwYXRoID0gcGF0aC5qb2luKGRpciwgYnVuZGxlbmFtZSkKZGlyID0gcGF0aC5qb2luKGJ1bmRsZXBhdGgsICJDb250ZW50cy9NYWNPUyIpCmVsc2VpZiBraW5kID09ICJTaGFyZWRMaWIiIHRoZW4KcHJlZml4ID0gImxpYiIKZXh0ID0gaWlmKHN5c3RlbSA9PSAibWFjb3N4IiwgIi5keWxpYiIsICIuc28iKQplbHNlaWYga2luZCA9PSAiU3RhdGljTGliIiB0aGVuCnByZWZpeCA9ICJsaWIiCmV4dCA9ICIuYSIKZW5kCmVsc2VpZiBuYW1lc3R5bGUgPT0gIlBTMyIgdGhlbgppZiBraW5kID09ICJDb25zb2xlQXBwIiBvciBraW5kID09ICJXaW5kb3dlZEFwcCIgdGhlbgpleHQgPSAiLmVsZiIKZWxzZWlmIGtpbmQgPT0gIlN0YXRpY0xpYiIgdGhlbgpwcmVmaXggPSAibGliIgpleHQgPSAiLmEiCmVuZAplbmQKcHJlZml4ID0gY2ZnW2ZpZWxkLi4icHJlZml4Il0gb3IgY2ZnLnRhcmdldHByZWZpeCBvciBwcmVmaXgKc3VmZml4ID0gY2ZnW2ZpZWxkLi4ic3VmZml4Il0gb3IgY2ZnLnRhcmdldHN1ZmZpeCBvciBzdWZmaXgKZXh0ICAgID0gY2ZnW2ZpZWxkLi4iZXh0ZW5zaW9uIl0gb3IgY2ZnLnRhcmdldGV4dGVuc2lvbiBvciBleHQKbG9jYWwgcmVzdWx0ID0geyB9CnJlc3VsdC5iYXNlbmFtZSAgID0gbmFtZSAuLiBzdWZmaXgKcmVzdWx0Lm5hbWUgICAgICAgPSBwcmVmaXggLi4gbmFtZSAuLiBzdWZmaXggLi4gZXh0CnJlc3VsdC5kaXJlY3RvcnkgID0gZGlyCnJlc3VsdC5wcmVmaXggICAgID0gcHJlZml4CnJlc3VsdC5zdWZmaXggICAgID0gc3VmZml4CnJlc3VsdC5mdWxscGF0aCAgID0gcGF0aC5qb2luKHJlc3VsdC5kaXJlY3RvcnksIHJlc3VsdC5uYW1lKQpyZXN1bHQuYnVuZGxlcGF0aCA9IGJ1bmRsZXBhdGggb3IgcmVzdWx0LmZ1bGxwYXRoCmlmIHBhdGhzdHlsZSA9PSAid2luZG93cyIgdGhlbgpyZXN1bHQuZGlyZWN0b3J5ID0gcGF0aC50cmFuc2xhdGUocmVzdWx0LmRpcmVjdG9yeSwgIlxcIikKcmVzdWx0LmZ1bGxwYXRoICA9IHBhdGgudHJhbnNsYXRlKHJlc3VsdC5mdWxscGF0aCwgICJcXCIpCmVuZApyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwcmVtYWtlLmdldHRvb2woY2ZnKQppZiBwcmVtYWtlLmlzY3BwcHJvamVjdChjZmcpIHRoZW4KaWYgX09QVElPTlMuY2MgdGhlbgpyZXR1cm4gcHJlbWFrZVtfT1BUSU9OUy5jY10KZW5kCmxvY2FsIGFjdGlvbiA9IHByZW1ha2UuYWN0aW9uLmN1cnJlbnQoKQppZiBhY3Rpb24udmFsaWRfdG9vbHMgdGhlbgpyZXR1cm4gcHJlbWFrZVthY3Rpb24udmFsaWRfdG9vbHMuY2NbMV1dCmVuZApyZXR1cm4gcHJlbWFrZS5nY2MKZWxzZQpyZXR1cm4gcHJlbWFrZS5kb3RuZXQKZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLnByb2plY3QuZ2V0dnBhdGgocHJqLCBmaWxlbmFtZSkKbG9jYWwgdnBhdGggPSBmaWxlbmFtZQpmb3IgcmVwbGFjZW1lbnQscGF0dGVybnMgaW4gcGFpcnMocHJqLnZwYXRocykgZG8KZm9yIF8scGF0dGVybiBpbiBpcGFpcnMocGF0dGVybnMpIGRvCmxvY2FsIGkgPSB2cGF0aDpmaW5kKHBhdGgud2lsZGNhcmRzKHBhdHRlcm4pKQppZiBpID09IDEgdGhlbgpsb2NhbCBsZWFmCmkgPSBwYXR0ZXJuOmZpbmQoIioiLCAxLCB0cnVlKSBvciAocGF0dGVybjpsZW4oKSArIDEpCmlmIGkgPCBmaWxlbmFtZTpsZW4oKSB0aGVuCmxlYWYgPSBmaWxlbmFtZTpzdWIoaSkKZWxzZQpsZWFmID0gcGF0aC5nZXRuYW1lKGZpbGVuYW1lKQplbmQKaWYgbGVhZjpzdGFydHN3aXRoKCIvIikgdGhlbgpsZWFmID0gbGVhZjpzdWIoMikKZW5kCmxvY2FsIHN0ZW0gPSAiIgppZiByZXBsYWNlbWVudDpsZW4oKSA+IDAgdGhlbgpzdGVtLCBzdGFycyA9IHJlcGxhY2VtZW50OmdzdWIoIiUqIiwgIiIpCmlmIHN0YXJzID09IDAgdGhlbgpsZWFmID0gcGF0aC5nZXRuYW1lKGxlYWYpCmVuZAplbHNlCmxlYWYgPSBwYXRoLmdldG5hbWUobGVhZikKZW5kCnZwYXRoID0gcGF0aC5qb2luKHN0ZW0sIGxlYWYpCmVuZAplbmQKZW5kCmxvY2FsIGNoYW5nZWQKcmVwZWF0CmNoYW5nZWQgPSB0cnVlCmlmIHZwYXRoOnN0YXJ0c3dpdGgoIi4vIikgdGhlbgp2cGF0aCA9IHZwYXRoOnN1YigzKQplbHNlaWYgdnBhdGg6c3RhcnRzd2l0aCgiLi4vIikgdGhlbgp2cGF0aCA9IHZwYXRoOnN1Yig0KQplbHNlCmNoYW5nZWQgPSBmYWxzZQplbmQKdW50aWwgbm90IGNoYW5nZWQKcmV0dXJuIHZwYXRoCmVuZApmdW5jdGlvbiBwcmVtYWtlLmhhc2NwcHByb2plY3Qoc2xuKQpmb3IgcHJqIGluIHByZW1ha2Uuc29sdXRpb24uZWFjaHByb2plY3Qoc2xuKSBkbwppZiBwcmVtYWtlLmlzY3BwcHJvamVjdChwcmopIHRoZW4KcmV0dXJuIHRydWUKZW5kCmVuZAplbmQKZnVuY3Rpb24gcHJlbWFrZS5oYXNkb3RuZXRwcm9qZWN0KHNsbikKZm9yIHByaiBpbiBwcmVtYWtlLnNvbHV0aW9uLmVhY2hwcm9qZWN0KHNsbikgZG8KaWYgcHJlbWFrZS5pc2RvdG5ldHByb2plY3QocHJqKSB0aGVuCnJldHVybiB0cnVlCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHByZW1ha2UucHJvamVjdC5pc2Nwcm9qZWN0KHByaikKcmV0dXJuIHByai5sYW5ndWFnZSA9PSAiQyIKZW5kCmZ1bmN0aW9uIHByZW1ha2UuaXNjcHBwcm9qZWN0KHByaikKcmV0dXJuIChwcmoubGFuZ3VhZ2UgPT0gIkMiIG9yIHByai5sYW5ndWFnZSA9PSAiQysrIikKZW5kCmZ1bmN0aW9uIHByZW1ha2UuaXNkb3RuZXRwcm9qZWN0KHByaikKcmV0dXJuIChwcmoubGFuZ3VhZ2UgPT0gIkMjIikKZW5kCgBwcmVtYWtlLmNvbmZpZyA9IHsgfQpsb2NhbCBjb25maWcgPSBwcmVtYWtlLmNvbmZpZwpmdW5jdGlvbiBwcmVtYWtlLmNvbmZpZy5pc2RlYnVnYnVpbGQoY2ZnKQppZiBjZmcuZmxhZ3MuT3B0aW1pemUgb3IgY2ZnLmZsYWdzLk9wdGltaXplU2l6ZSBvciBjZmcuZmxhZ3MuT3B0aW1pemVTcGVlZCB0aGVuCnJldHVybiBmYWxzZQplbmQKaWYgbm90IGNmZy5mbGFncy5TeW1ib2xzIHRoZW4KcmV0dXJuIGZhbHNlCmVuZApyZXR1cm4gdHJ1ZQplbmQKZnVuY3Rpb24gcHJlbWFrZS5jb25maWcuaXNpbmNyZW1lbnRhbGxpbmsoY2ZnKQppZiBjZmcua2luZCA9PSAiU3RhdGljTGliIiAKb3IgY29uZmlnLmlzb3B0aW1pemVkYnVpbGQoY2ZnLmZsYWdzKQpvciBjZmcuZmxhZ3MuTm9JbmNyZW1lbnRhbExpbmsgdGhlbgpyZXR1cm4gZmFsc2UKZW5kCnJldHVybiB0cnVlCmVuZApmdW5jdGlvbiBwcmVtYWtlLmNvbmZpZy5pc29wdGltaXplZGJ1aWxkKGZsYWdzKQpyZXR1cm4gZmxhZ3MuT3B0aW1pemUgb3IgZmxhZ3MuT3B0aW1pemVTaXplIG9yIGZsYWdzLk9wdGltaXplU3BlZWQKZW5kCgBwcmVtYWtlLmJha2UgPSB7IH0KbG9jYWwgYmFrZSA9IHByZW1ha2UuYmFrZQpsb2NhbCBub2NvcHkgPSAKewpibG9ja3MgICAgPSB0cnVlLAprZXl3b3JkcyAgPSB0cnVlLApwcm9qZWN0cyAgPSB0cnVlLApfX2NvbmZpZ3MgPSB0cnVlLAp9CmxvY2FsIG5vY2FzY2FkZSA9IAp7Cm1ha2VzZXR0aW5ncyA9IHRydWUsCn0KbG9jYWwga2VlcHJlbGF0aXZlID0KewpiYXNlZGlyICA9IHRydWUsCmxvY2F0aW9uID0gdHJ1ZSwKfQpmdW5jdGlvbiBwcmVtYWtlLmdldGFjdGl2ZXRlcm1zKCkKbG9jYWwgdGVybXMgPSB7IF9hY3Rpb24gPSBfQUNUSU9OOmxvd2VyKCksIG9zID0gb3MuZ2V0KCkgfQpmb3Iga2V5LCB2YWx1ZSBpbiBwYWlycyhfT1BUSU9OUykgZG8KaWYgdmFsdWUgfj0gIiIgdGhlbgp0YWJsZS5pbnNlcnQodGVybXMsIHZhbHVlOmxvd2VyKCkpCmVsc2UKdGFibGUuaW5zZXJ0KHRlcm1zLCBrZXk6bG93ZXIoKSkKZW5kCmVuZApyZXR1cm4gdGVybXMKZW5kCmZ1bmN0aW9uIHByZW1ha2UuaXNrZXl3b3JkbWF0Y2goa2V5d29yZCwgdGVybXMpCmlmIGtleXdvcmQ6c3RhcnRzd2l0aCgibm90ICIpIHRoZW4KcmV0dXJuIG5vdCBwcmVtYWtlLmlza2V5d29yZG1hdGNoKGtleXdvcmQ6c3ViKDUpLCB0ZXJtcykKZW5kCmZvciBfLCBwYXR0ZXJuIGluIGlwYWlycyhrZXl3b3JkOmV4cGxvZGUoIiBvciAiKSkgZG8KZm9yIHRlcm1rZXksIHRlcm0gaW4gcGFpcnModGVybXMpIGRvCmlmIHRlcm06bWF0Y2gocGF0dGVybikgPT0gdGVybSB0aGVuCnJldHVybiB0ZXJta2V5CmVuZAplbmQKZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLmlza2V5d29yZHNtYXRjaChrZXl3b3JkcywgdGVybXMpCmxvY2FsIGhhc3JlcXVpcmVkID0gZmFsc2UKZm9yIF8sIGtleXdvcmQgaW4gaXBhaXJzKGtleXdvcmRzKSBkbwpsb2NhbCBtYXRjaGVkID0gcHJlbWFrZS5pc2tleXdvcmRtYXRjaChrZXl3b3JkLCB0ZXJtcykKaWYgbm90IG1hdGNoZWQgdGhlbgpyZXR1cm4gZmFsc2UKZW5kCmlmIG1hdGNoZWQgPT0gInJlcXVpcmVkIiB0aGVuCmhhc3JlcXVpcmVkID0gdHJ1ZQplbmQKZW5kCmlmIHRlcm1zLnJlcXVpcmVkIGFuZCBub3QgaGFzcmVxdWlyZWQgdGhlbgpyZXR1cm4gZmFsc2UKZWxzZQpyZXR1cm4gdHJ1ZQplbmQKZW5kCmxvY2FsIGZ1bmN0aW9uIGFkanVzdHBhdGhzKGxvY2F0aW9uLCBvYmopCmZ1bmN0aW9uIGFkanVzdHBhdGhsaXN0KGxpc3QpCmZvciBpLCBwIGluIGlwYWlycyhsaXN0KSBkbwpsaXN0W2ldID0gcGF0aC5nZXRyZWxhdGl2ZShsb2NhdGlvbiwgcCkgCmVuZAplbmQKZm9yIG5hbWUsIHZhbHVlIGluIHBhaXJzKG9iaikgZG8KbG9jYWwgZmllbGQgPSBwcmVtYWtlLmZpZWxkc1tuYW1lXQppZiBmaWVsZCBhbmQgdmFsdWUgYW5kIG5vdCBrZWVwcmVsYXRpdmVbbmFtZV0gdGhlbgppZiBmaWVsZC5raW5kID09ICJwYXRoIiB0aGVuCm9ialtuYW1lXSA9IHBhdGguZ2V0cmVsYXRpdmUobG9jYXRpb24sIHZhbHVlKSAKZWxzZWlmIGZpZWxkLmtpbmQgPT0gImRpcmxpc3QiIG9yIGZpZWxkLmtpbmQgPT0gImZpbGVsaXN0IiB0aGVuCmFkanVzdHBhdGhsaXN0KHZhbHVlKQplbHNlaWYgZmllbGQua2luZCA9PSAia2V5cGF0aCIgdGhlbgpmb3Igayx2IGluIHBhaXJzKHZhbHVlKSBkbwphZGp1c3RwYXRobGlzdCh2KQplbmQKZW5kCmVuZAplbmQKZW5kCmxvY2FsIGZ1bmN0aW9uIG1lcmdlZmllbGQoa2luZCwgZGVzdCwgc3JjKQpsb2NhbCB0YmwgPSBkZXN0IG9yIHsgfQppZiBraW5kID09ICJrZXl2YWx1ZSIgb3Iga2luZCA9PSAia2V5cGF0aCIgdGhlbgpmb3Iga2V5LCB2YWx1ZSBpbiBwYWlycyhzcmMpIGRvCnRibFtrZXldID0gbWVyZ2VmaWVsZCgibGlzdCIsIHRibFtrZXldLCB2YWx1ZSkKZW5kCmVsc2UKZm9yIF8sIGl0ZW0gaW4gaXBhaXJzKHNyYykgZG8KaWYgbm90IHRibFtpdGVtXSB0aGVuCnRhYmxlLmluc2VydCh0YmwsIGl0ZW0pCnRibFtpdGVtXSA9IGl0ZW0KZW5kCmVuZAplbmQKcmV0dXJuIHRibAplbmQKbG9jYWwgZnVuY3Rpb24gbWVyZ2VvYmplY3QoZGVzdCwgc3JjKQppZiBub3Qgc3JjIHRoZW4gCnJldHVybiAKZW5kCmZvciBmaWVsZG5hbWUsIHZhbHVlIGluIHBhaXJzKHNyYykgZG8KaWYgbm90IG5vY29weVtmaWVsZG5hbWVdIHRoZW4KbG9jYWwgZmllbGQgPSBwcmVtYWtlLmZpZWxkc1tmaWVsZG5hbWVdCmlmIGZpZWxkIHRoZW4KaWYgdHlwZSh2YWx1ZSkgPT0gInRhYmxlIiB0aGVuCmRlc3RbZmllbGRuYW1lXSA9IG1lcmdlZmllbGQoZmllbGQua2luZCwgZGVzdFtmaWVsZG5hbWVdLCB2YWx1ZSkKZWxzZQpkZXN0W2ZpZWxkbmFtZV0gPSB2YWx1ZQplbmQKZWxzZQpkZXN0W2ZpZWxkbmFtZV0gPSB2YWx1ZQplbmQKZW5kCmVuZAplbmQKbG9jYWwgZnVuY3Rpb24gbWVyZ2UoZGVzdCwgb2JqLCBiYXNpcywgdGVybXMsIGNmZ25hbWUsIHBsdG5hbWUpCmxvY2FsIGtleSA9IGNmZ25hbWUgb3IgIiIKcGx0bmFtZSA9IHBsdG5hbWUgb3IgIk5hdGl2ZSIKaWYgcGx0bmFtZSB+PSAiTmF0aXZlIiB0aGVuCmtleSA9IGtleSAuLiBwbHRuYW1lCmVuZAp0ZXJtcy5jb25maWcgPSAoY2ZnbmFtZSBvciAiIik6bG93ZXIoKQp0ZXJtcy5wbGF0Zm9ybSA9IHBsdG5hbWU6bG93ZXIoKQpsb2NhbCBjZmcgPSB7fQptZXJnZW9iamVjdChjZmcsIGJhc2lzW2tleV0pCmFkanVzdHBhdGhzKG9iai5sb2NhdGlvbiwgY2ZnKQptZXJnZW9iamVjdChjZmcsIG9iaikKaWYgKGNmZy5raW5kKSB0aGVuIAp0ZXJtc1sna2luZCddPWNmZy5raW5kOmxvd2VyKCkKZW5kCmZvciBfLCBibGsgaW4gaXBhaXJzKG9iai5ibG9ja3MpIGRvCmlmIChwcmVtYWtlLmlza2V5d29yZHNtYXRjaChibGsua2V5d29yZHMsIHRlcm1zKSl0aGVuCm1lcmdlb2JqZWN0KGNmZywgYmxrKQppZiAoY2ZnLmtpbmQgYW5kIG5vdCBjZmcudGVybXMua2luZCkgdGhlbiAKY2ZnLnRlcm1zWydraW5kJ10gPSBjZmcua2luZDpsb3dlcigpCnRlcm1zWydraW5kJ10gPSBjZmcua2luZDpsb3dlcigpCmVuZAplbmQKZW5kCmNmZy5uYW1lICAgICAgPSBjZmduYW1lCmNmZy5wbGF0Zm9ybSAgPSBwbHRuYW1lCmZvciBrLHYgaW4gcGFpcnModGVybXMpIGRvCmNmZy50ZXJtc1trXSA9dgplbmQKZGVzdFtrZXldID0gY2ZnCmVuZApsb2NhbCBmdW5jdGlvbiBjb2xsYXBzZShvYmosIGJhc2lzKQpsb2NhbCByZXN1bHQgPSB7fQpiYXNpcyA9IGJhc2lzIG9yIHt9CmxvY2FsIHNsbiA9IG9iai5zb2x1dGlvbiBvciBvYmoKbG9jYWwgdGVybXMgPSBwcmVtYWtlLmdldGFjdGl2ZXRlcm1zKCkKbWVyZ2UocmVzdWx0LCBvYmosIGJhc2lzLCB0ZXJtcyktLXRoaXMgYWRqdXN0cyB0ZXJtcwpmb3IgXywgY2ZnbmFtZSBpbiBpcGFpcnMoc2xuLmNvbmZpZ3VyYXRpb25zKSBkbwpsb2NhbCB0ZXJtc19sb2NhbCA9IHt9CmZvciBrLHYgaW4gcGFpcnModGVybXMpZG8gdGVybXNfbG9jYWxba109diBlbmQKbWVyZ2UocmVzdWx0LCBvYmosIGJhc2lzLCB0ZXJtc19sb2NhbCwgY2ZnbmFtZSwgIk5hdGl2ZSIpLS10ZXJtcyBjYW0gYWxzbyBiZSBhZGp1c3RlZCBoZXJlCmZvciBfLCBwbHRuYW1lIGluIGlwYWlycyhzbG4ucGxhdGZvcm1zIG9yIHt9KSBkbwppZiBwbHRuYW1lIH49ICJOYXRpdmUiIHRoZW4KbWVyZ2UocmVzdWx0LCBvYmosIGJhc2lzLHRlcm1zX2xvY2FsLCBjZmduYW1lLCBwbHRuYW1lKS0tdGVybXMgYWxzbyBoZXJlCmVuZAplbmQKZW5kCnJldHVybiByZXN1bHQKZW5kCmxvY2FsIGZ1bmN0aW9uIGJ1aWxkdW5pcXVlZGlycygpCmxvY2FsIG51bV92YXJpYXRpb25zID0gNApsb2NhbCBjZmdfZGlycyA9IHt9CmxvY2FsIGhpdF9jb3VudHMgPSB7fQpmb3Igc2xuIGluIHByZW1ha2Uuc29sdXRpb24uZWFjaCgpIGRvCmZvciBfLCBwcmogaW4gaXBhaXJzKHNsbi5wcm9qZWN0cykgZG8KZm9yIF8sIGNmZyBpbiBwYWlycyhwcmouX19jb25maWdzKSBkbwpsb2NhbCBkaXJzID0geyB9CmRpcnNbMV0gPSBwYXRoLmdldGFic29sdXRlKHBhdGguam9pbihjZmcubG9jYXRpb24sIGNmZy5vYmpkaXIgb3IgY2ZnLnByb2plY3Qub2JqZGlyIG9yICJvYmoiKSkKZGlyc1syXSA9IHBhdGguam9pbihkaXJzWzFdLCBpaWYoY2ZnLnBsYXRmb3JtID09ICJOYXRpdmUiLCAiIiwgY2ZnLnBsYXRmb3JtKSkKZGlyc1szXSA9IHBhdGguam9pbihkaXJzWzJdLCBjZmcubmFtZSkKZGlyc1s0XSA9IHBhdGguam9pbihkaXJzWzNdLCBjZmcucHJvamVjdC5uYW1lKQpjZmdfZGlyc1tjZmddID0gZGlycwpsb2NhbCBzdGFydCA9IGlpZihjZmcubmFtZSwgMiwgMSkKZm9yIHYgPSBzdGFydCwgbnVtX3ZhcmlhdGlvbnMgZG8KbG9jYWwgZCA9IGRpcnNbdl0KaGl0X2NvdW50c1tkXSA9IChoaXRfY291bnRzW2RdIG9yIDApICsgMQplbmQKZW5kCmVuZAplbmQKZm9yIHNsbiBpbiBwcmVtYWtlLnNvbHV0aW9uLmVhY2goKSBkbwpmb3IgXywgcHJqIGluIGlwYWlycyhzbG4ucHJvamVjdHMpIGRvCmZvciBfLCBjZmcgaW4gcGFpcnMocHJqLl9fY29uZmlncykgZG8KbG9jYWwgZGlyCmxvY2FsIHN0YXJ0ID0gaWlmKGNmZy5uYW1lLCAyLCAxKQpmb3IgdiA9IHN0YXJ0LCBudW1fdmFyaWF0aW9ucyBkbwpkaXIgPSBjZmdfZGlyc1tjZmddW3ZdCmlmIGhpdF9jb3VudHNbZGlyXSA9PSAxIHRoZW4gYnJlYWsgZW5kCmVuZApjZmcub2JqZWN0c2RpciA9IHBhdGguZ2V0cmVsYXRpdmUoY2ZnLmxvY2F0aW9uLCBkaXIpCmVuZAplbmQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBidWlsZHRhcmdldHMoKQpmb3Igc2xuIGluIHByZW1ha2Uuc29sdXRpb24uZWFjaCgpIGRvCmZvciBfLCBwcmogaW4gaXBhaXJzKHNsbi5wcm9qZWN0cykgZG8KZm9yIF8sIGNmZyBpbiBwYWlycyhwcmouX19jb25maWdzKSBkbwpsb2NhbCBwYXRoc3R5bGUgPSBwcmVtYWtlLmdldHBhdGhzdHlsZShjZmcpCmxvY2FsIG5hbWVzdHlsZSA9IHByZW1ha2UuZ2V0bmFtZXN0eWxlKGNmZykKY2ZnLmJ1aWxkdGFyZ2V0ID0gcHJlbWFrZS5nZXR0YXJnZXQoY2ZnLCAiYnVpbGQiLCBwYXRoc3R5bGUsIG5hbWVzdHlsZSwgY2ZnLnN5c3RlbSkKY2ZnLmxpbmt0YXJnZXQgID0gcHJlbWFrZS5nZXR0YXJnZXQoY2ZnLCAibGluayIsICBwYXRoc3R5bGUsIG5hbWVzdHlsZSwgY2ZnLnN5c3RlbSkKaWYgcGF0aHN0eWxlID09ICJ3aW5kb3dzIiB0aGVuCmNmZy5vYmplY3RzZGlyID0gcGF0aC50cmFuc2xhdGUoY2ZnLm9iamVjdHNkaXIsICJcXCIpCmVuZAplbmQKZW5kCmVuZAplbmQKICBsb2NhbCBmdW5jdGlvbiBnZXRDZmdLaW5kKGNmZykKICBpZihjZmcua2luZCkgdGhlbgogIHJldHVybiBjZmcua2luZDsKICBlbmQKICAKICBpZihjZmcucHJvamVjdC5fX2NvbmZpZ3NbIiJdIGFuZCBjZmcucHJvamVjdC5fX2NvbmZpZ3NbIiJdLmtpbmQpIHRoZW4KICByZXR1cm4gY2ZnLnByb2plY3QuX19jb25maWdzWyIiXS5raW5kOwogIGVuZAogIAogIHJldHVybiBuaWwKICBlbmQKICAKICBsb2NhbCBmdW5jdGlvbiBnZXRwcm9qcmVjKGRzdEFycmF5LCBmb3VuZExpc3QsIGNmZywgY2ZnbmFtZSwgc2VhcmNoRmllbGQsIGJMaW5rYWdlKQogIGlmKG5vdCBjZmcpIHRoZW4gcmV0dXJuIGVuZAogIAogIGxvY2FsIGZvdW5kVXNlUHJqcyA9IHt9OwogIGZvciBfLCB1c2VOYW1lIGluIGlwYWlycyhjZmdbc2VhcmNoRmllbGRdKSBkbwogIGxvY2FsIHRlc3ROYW1lID0gdXNlTmFtZTpsb3dlcigpOwogIGlmKChub3QgZm91bmRMaXN0W3Rlc3ROYW1lXSkpIHRoZW4KICBsb2NhbCB0aGVQcm9qID0gbmlsOwogIGxvY2FsIHRoZVVzZVByb2ogPSBuaWw7CiAgZm9yIF8sIHByaiBpbiBpcGFpcnMoY2ZnLnByb2plY3Quc29sdXRpb24ucHJvamVjdHMpIGRvCiAgaWYgKHByai5uYW1lOmxvd2VyKCkgPT0gdGVzdE5hbWUpIHRoZW4KICBpZihwcmoudXNhZ2UpIHRoZW4KICB0aGVVc2VQcm9qID0gcHJqOwogIGVsc2UKICB0aGVQcm9qID0gcHJqOwogIGVuZAogIGVuZAogIGVuZAogIAogIC0tTXVzdCBjb25uZWN0IHRvIGEgdXNhZ2UgcHJvamVjdC4KICBpZih0aGVVc2VQcm9qKSB0aGVuCiAgZm91bmRMaXN0W3Rlc3ROYW1lXSA9IHRydWU7CiAgbG9jYWwgcHJqRW50cnkgPSB7CiAgbmFtZSA9IHRlc3ROYW1lLAogIHByb2ogPSB0aGVQcm9qLAogIHVzYWdlUHJvaiA9IHRoZVVzZVByb2osCiAgYkxpbmthZ2VPbmx5ID0gYkxpbmthZ2UsCiAgfTsKICBkc3RBcnJheVt0ZXN0TmFtZV0gPSBwcmpFbnRyeTsKICB0YWJsZS5pbnNlcnQoZm91bmRVc2VQcmpzLCB0aGVVc2VQcm9qKTsKICBlbmQKICBlbmQKICBlbmQKICAKICBmb3IgXywgdXNlUHJqIGluIGlwYWlycyhmb3VuZFVzZVByanMpIGRvCiAgLS1MaW5rcyBjYW4gb25seSByZWN1cnNlIHRocm91Z2ggc3RhdGljIGxpYnJhcmllcy4KICBpZigoc2VhcmNoRmllbGQgfj0gImxpbmtzIikgb3IKICAoZ2V0Q2ZnS2luZCh1c2VQcmouX19jb25maWdzW2NmZ25hbWVdKSA9PSAiU3RhdGljTGliIikpIHRoZW4KICBnZXRwcm9qcmVjKGRzdEFycmF5LCBmb3VuZExpc3QsIHVzZVByai5fX2NvbmZpZ3NbY2ZnbmFtZV0sCiAgY2ZnbmFtZSwgc2VhcmNoRmllbGQsIGJMaW5rYWdlKTsKICBlbmQKICBlbmQKICBlbmQKICAKICAtLQogIC0tIFRoaXMgZnVuY3Rpb24gd2lsbCByZWN1cnNpdmVseSBnZXQgYWxsIHByb2plY3RzIHRoYXQgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24gaGFzIGluIGl0cyAidXNlcyIKICAtLSBmaWVsZC4gVGhlIHJldHVybiB2YWx1ZXMgYXJlIGEgbGlzdCBvZiB0YWJsZXMuIEVhY2ggdGFibGUgaW4gdGhhdCBsaXN0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmc6CiAgLS1uYW1lID0gVGhlIGxvd2VyY2FzZSBuYW1lIG9mIHRoZSBwcm9qZWN0LgogIC0tcHJvaiA9IFRoZSBwcm9qZWN0LiBDYW4gYmUgbmlsIGlmIGl0IGlzIHVzYWdlLW9ubHkuCiAgLS11c2FnZVByb2ogPSBUaGUgdXNhZ2UgcHJvamVjdC4gQ2FuJ3QgYmUgbmlsLCBhcyB1c2luZyBhIHByb2plY3QgdGhhdCBoYXMgbm8KICAtLSB1c2FnZSBwcm9qZWN0IGlzIG5vdCBwdXQgaW50byB0aGUgbGlzdC4KICAtLWJMaW5rYWdlT25seSA9IElmIHRoaXMgaXMgdHJ1ZSwgdGhlbiBvbmx5IHRoZSBsaW5rYWdlIGluZm9ybWF0aW9uIHNob3VsZCBiZSBjb3BpZWQuCiAgLS0gVGhlIHJlY3Vyc2lvbiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgInVzZXMiIGZpZWxkIG9uICp1c2FnZSogcHJvamVjdHMuCiAgLS0gVGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gYWRkIHByb2plY3RzIHRvIHRoZSBsaXN0IHRoYXQgYXJlIG1lbnRpb25lZCBpbiB0aGUgImxpbmtzIgogIC0tIGZpZWxkIG9mIHVzYWdlIHByb2plY3RzLiBUaGVzZSB3aWxsIG9ubHkgY29weSBsaW5rZXIgaW5mb3JtYXRpb24sIGJ1dCB0aGV5IHdpbGwgcmVjdXJzZS4KICAtLSB0aHJvdWdoIG90aGVyICJsaW5rcyIgZmllbGRzLgogIC0tCiAgbG9jYWwgZnVuY3Rpb24gZ2V0cHJvamVjdHNjb25uZWN0aW9ucyhjZmcsIGNmZ25hbWUpCiAgbG9jYWwgZHN0QXJyYXkgPSB7fTsKICBsb2NhbCBmb3VuZExpc3QgPSB7fTsKICBmb3VuZExpc3RbY2ZnLnByb2plY3QubmFtZTpsb3dlcigpXSA9IHRydWU7CiAgCiAgLS1GaXJzdCwgZm9sbG93IHRoZSB1c2VzIHJlY3Vyc2l2ZWx5LgogIGdldHByb2pyZWMoZHN0QXJyYXksIGZvdW5kTGlzdCwgY2ZnLCBjZmduYW1lLCAidXNlcyIsIGZhbHNlKTsKICAKICAtLU5leHQsIGdvIHRocm91Z2ggYWxsIG9mIHRoZSB1c2FnZSBwcm9qZWN0cyBhbmQgcmVjdXJzaXZlbHkgZ2V0IHRoZWlyIGxpbmtzLgogIC0tQnV0IG9ubHkgaWYgdGhleSdyZSBub3QgYWxyZWFkeSB0aGVyZS4gR2V0IHRoZSBsaW5rcyBhcyBsaW5rYWdlLW9ubHkuCiAgbG9jYWwgbGlua0FycmF5ID0ge307CiAgZm9yIHByak5hbWUsIHByakVudHJ5IGluIHBhaXJzKGRzdEFycmF5KSBkbwogIGdldHByb2pyZWMobGlua0FycmF5LCBmb3VuZExpc3QsIHByakVudHJ5LnVzYWdlUHJvai5fX2NvbmZpZ3NbY2ZnbmFtZV0sIGNmZ25hbWUsIAogICJsaW5rcyIsIHRydWUpOwogIGVuZAogIAogIC0tQ29weSBmcm9tIGxpbmtBcnJheSBpbnRvIGRzdEFycmF5LgogIGZvciBwcmpOYW1lLCBwcmpFbnRyeSBpbiBwYWlycyhsaW5rQXJyYXkpIGRvCiAgZHN0QXJyYXlbcHJqTmFtZV0gPSBwcmpFbnRyeTsKICBlbmQKICAKICByZXR1cm4gZHN0QXJyYXk7CiAgZW5kCiAgCiAgCiAgbG9jYWwgZnVuY3Rpb24gaXNuYW1lb2Zwcm9qKGNmZywgc3RyTmFtZSkKICBsb2NhbCBzbG4gPSBjZmcucHJvamVjdC5zb2x1dGlvbjsKICBsb2NhbCBzdHJUZXN0ID0gc3RyTmFtZTpsb3dlcigpOwogIGZvciBwcmpJeCwgcHJqIGluIGlwYWlycyhzbG4ucHJvamVjdHMpIGRvCiAgaWYgKHByai5uYW1lOmxvd2VyKCkgPT0gc3RyVGVzdCkgdGhlbgogIHJldHVybiB0cnVlOwogIGVuZAogIGVuZAogIAogIHJldHVybiBmYWxzZTsKICBlbmQKICAtLQogIC0tIENvcGllcyB0aGUgZmllbGQgZnJvbSBkc3RDZmcgdG8gc3JjQ2ZnLgogIC0tCiAgbG9jYWwgZnVuY3Rpb24gY29weWRlcGVuZGVudGZpZWxkKHNyY0NmZywgZHN0Q2ZnLCBzdHJTcmNGaWVsZCkKICBsb2NhbCBzcmNGaWVsZCA9IHByZW1ha2UuZmllbGRzW3N0clNyY0ZpZWxkXTsKICBsb2NhbCBzdHJEc3RGaWVsZCA9IHN0clNyY0ZpZWxkOwogIAogIGlmIHR5cGUoc3JjQ2ZnW3N0clNyY0ZpZWxkXSkgPT0gInRhYmxlIiB0aGVuCiAgLS1oYW5kbGUgcGF0aHMuCiAgaWYgKHNyY0ZpZWxkLmtpbmQgPT0gImRpcmxpc3QiIG9yIHNyY0ZpZWxkLmtpbmQgPT0gImZpbGVsaXN0IikgYW5kCiAgKG5vdCBrZWVwcmVsYXRpdmVbc3RyU3JjRmllbGRdKSB0aGVuCiAgZm9yIGkscCBpbiBpcGFpcnMoc3JjQ2ZnW3N0clNyY0ZpZWxkXSkgZG8KICB0YWJsZS5pbnNlcnQoZHN0Q2ZnW3N0ckRzdEZpZWxkXSwKICBwYXRoLnJlYmFzZShwLCBzcmNDZmcucHJvamVjdC5sb2NhdGlvbiwgZHN0Q2ZnLnByb2plY3QubG9jYXRpb24pKQogIGVuZAogIGVsc2UKICBpZihzdHJTcmNGaWVsZCA9PSAibGlua3MiKSB0aGVuCiAgZm9yIGkscCBpbiBpcGFpcnMoc3JjQ2ZnW3N0clNyY0ZpZWxkXSkgZG8KICBpZihub3QgaXNuYW1lb2Zwcm9qKGRzdENmZywgcCkpIHRoZW4KICB0YWJsZS5pbnNlcnQoZHN0Q2ZnW3N0ckRzdEZpZWxkXSwgcCkKICBlbHNlCiAgcHJpbnRmKCJGYWlsZWQgdG8gY29weSAnJXMnIGZyb20gcHJvaiAnJXMnLiIsCiAgcCwgc3JjQ2ZnLnByb2plY3QubmFtZSk7CiAgZW5kCiAgZW5kCiAgZWxzZQogIGZvciBpLHAgaW4gaXBhaXJzKHNyY0NmZ1tzdHJTcmNGaWVsZF0pIGRvCiAgdGFibGUuaW5zZXJ0KGRzdENmZ1tzdHJEc3RGaWVsZF0sIHApCiAgZW5kCiAgZW5kCiAgZW5kCiAgZWxzZQogIGlmKHNyY0ZpZWxkLmtpbmQgPT0gInBhdGgiIGFuZCAobm90IGtlZXByZWxhdGl2ZVtzdHJTcmNGaWVsZF0pKSB0aGVuCiAgZHN0Q2ZnW3N0ckRzdEZpZWxkXSA9IHBhdGgucmViYXNlKHNyY0NmZ1tzdHJTcmNGaWVsZF0sCiAgcHJqLmxvY2F0aW9uLCBkc3RDZmcucHJvamVjdC5sb2NhdGlvbik7CiAgZWxzZQogIGRzdENmZ1tzdHJEc3RGaWVsZF0gPSBzcmNDZmdbc3RyU3JjRmllbGRdOwogIGVuZAogIGVuZAogIGVuZAogIAogIC0tCiAgLS0gVGhpcyBmdW5jdGlvbiB3aWxsIHRha2UgdGhlIGxpc3Qgb2YgcHJvamVjdCBlbnRyaWVzIGFuZCBhcHBseSB0aGVpciB1c2FnZSBwcm9qZWN0IGRhdGEKICAtLSB0byB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi4gSXQgd2lsbCBjb3B5IGNvbXBpbGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIHByb2plY3RzIHRoYXQgYXJlCiAgLS0gbm90IGxpc3RlZCBhcyBsaW5rYWdlLW9ubHkuIEl0IHdpbGwgY29weSB0aGUgbGlua2luZyBpbmZvcm1hdGlvbiBmb3IgcHJvamVjdHMgb25seSBpZgogIC0tIHRoZSBzb3VyY2UgcHJvamVjdCBpcyBub3QgYSBzdGF0aWMgbGlicmFyeS4gSXQgd29uJ3QgY29weSBsaW5raW5nIGluZm9ybWF0aW9uCiAgLS0gaWYgdGhlIHByb2plY3QgaXMgaW4gdGhpcyBzb2x1dGlvbjsgaW5zdGVhZCBpdCB3aWxsIGFkZCB0aGF0IHByb2plY3QgdG8gdGhlIGNvbmZpZ3VyYXRpb24ncwogIC0tIGxpbmtzIGZpZWxkLCBleHBlY3RpbmcgdGhhdCBQcmVtYWtlIHdpbGwgaGFuZGxlIHRoZSByZXN0LgogIC0tCiAgbG9jYWwgZnVuY3Rpb24gY29weXVzYWdlZGF0YShjZmcsIGNmZ25hbWUsIGxpbmtUb1Byb2pzKQogIGxvY2FsIG15UHJqID0gY2ZnLnByb2plY3Q7CiAgbG9jYWwgYklzU3RhdGljTGliID0gKGdldENmZ0tpbmQoY2ZnKSA9PSAiU3RhdGljTGliIik7CiAgCiAgZm9yIHByak5hbWUsIHByakVudHJ5IGluIHBhaXJzKGxpbmtUb1Byb2pzKSBkbwogIGxvY2FsIHNyY1ByaiA9IHByakVudHJ5LnVzYWdlUHJvajsKICBsb2NhbCBzcmNDZmcgPSBzcmNQcmouX19jb25maWdzW2NmZ25hbWVdOwogIAogIGZvciBuYW1lLCBmaWVsZCBpbiBwYWlycyhwcmVtYWtlLmZpZWxkcykgZG8KICBpZihzcmNDZmdbbmFtZV0pIHRoZW4KICBpZihmaWVsZC51c2FnZWNvcHkpIHRoZW4KICBpZihub3QgcHJqRW50cnkuYkxpbmthZ2VPbmx5KSB0aGVuCiAgY29weWRlcGVuZGVudGZpZWxkKHNyY0NmZywgY2ZnLCBuYW1lKQogIGVuZAogIGVsc2VpZihmaWVsZC5saW5rYWdlY29weSkgdGhlbgogIC0tQ29weSB0aGUgbGlua2FnZSBkYXRhIGlmIHdlJ3JlIGJ1aWxkaW5nIGEgbm9uLXN0YXRpYyB0aGluZwogIC0tYW5kIHRoaXMgaXMgYSBwdXJlIHVzYWdlIHByb2plY3QuIElmIGl0J3Mgbm90IHB1cmUtdXNhZ2UsIHRoZW4KICAtLXdlIHdpbGwgc2ltcGx5IHB1dCB0aGUgcHJvamVjdCdzIG5hbWUgaW4gdGhlIGxpbmtzIGZpZWxkIGxhdGVyLgogIGlmKChub3QgYklzU3RhdGljTGliKSBhbmQgKG5vdCBwcmpFbnRyeS5wcm9qKSkgdGhlbgogIGNvcHlkZXBlbmRlbnRmaWVsZChzcmNDZmcsIGNmZywgbmFtZSkKICBlbmQKICBlbmQKICBlbmQKICBlbmQKICAKICBpZigobm90IGJJc1N0YXRpY0xpYikgYW5kIHByakVudHJ5LnByb2opIHRoZW4KICB0YWJsZS5pbnNlcnQoY2ZnLmxpbmtzLCBwcmpFbnRyeS5wcm9qLm5hbWUpOwogIGVuZAogIGVuZAogIGVuZApmdW5jdGlvbiBwcmVtYWtlLmJha2UuYnVpbGRjb25maWdzKCkKZm9yIHNsbiBpbiBwcmVtYWtlLnNvbHV0aW9uLmVhY2goKSBkbwpmb3IgXywgcHJqIGluIGlwYWlycyhzbG4ucHJvamVjdHMpIGRvCnByai5sb2NhdGlvbiA9IHByai5sb2NhdGlvbiBvciBzbG4ubG9jYXRpb24gb3IgcHJqLmJhc2VkaXIKYWRqdXN0cGF0aHMocHJqLmxvY2F0aW9uLCBwcmopCmZvciBfLCBibGsgaW4gaXBhaXJzKHByai5ibG9ja3MpIGRvCmFkanVzdHBhdGhzKHByai5sb2NhdGlvbiwgYmxrKQplbmQKZW5kCnNsbi5sb2NhdGlvbiA9IHNsbi5sb2NhdGlvbiBvciBzbG4uYmFzZWRpcgplbmQKZm9yIHNsbiBpbiBwcmVtYWtlLnNvbHV0aW9uLmVhY2goKSBkbwpsb2NhbCBiYXNpcyA9IGNvbGxhcHNlKHNsbikKZm9yIF8sIHByaiBpbiBpcGFpcnMoc2xuLnByb2plY3RzKSBkbwpwcmouX19jb25maWdzID0gY29sbGFwc2UocHJqLCBiYXNpcykKZm9yIF8sIGNmZyBpbiBwYWlycyhwcmouX19jb25maWdzKSBkbwpiYWtlLnBvc3Rwcm9jZXNzKHByaiwgY2ZnKQplbmQKZW5kCmVuZApmb3Igc2xuIGluIHByZW1ha2Uuc29sdXRpb24uZWFjaCgpIGRvCmZvciBwcmpJeCwgcHJqIGluIGlwYWlycyhzbG4ucHJvamVjdHMpIGRvCmlmKG5vdCBwcmoudXNhZ2UpIHRoZW4KZm9yIGNmZ25hbWUsIGNmZyBpbiBwYWlycyhwcmouX19jb25maWdzKSBkbwpsb2NhbCB1c2VzUHJqcyA9IGdldHByb2plY3RzY29ubmVjdGlvbnMoY2ZnLCBjZmduYW1lKTsKY29weXVzYWdlZGF0YShjZmcsIGNmZ25hbWUsIHVzZXNQcmpzKQplbmQKZW5kCmVuZAplbmQKZm9yIHNsbiBpbiBwcmVtYWtlLnNvbHV0aW9uLmVhY2goKSBkbwpsb2NhbCByZW1vdmVMaXN0ID0ge307CmZvciBpbmRleCwgcHJqIGluIGlwYWlycyhzbG4ucHJvamVjdHMpIGRvCmlmKHByai51c2FnZSkgdGhlbgp0YWJsZS5pbnNlcnQocmVtb3ZlTGlzdCwgMSwgaW5kZXgpOyAtLUFkZCBpbiByZXZlcnNlIG9yZGVyLgplbmQKZW5kCmZvciBfLCBpbmRleCBpbiBpcGFpcnMocmVtb3ZlTGlzdCkgZG8KdGFibGUucmVtb3ZlKHNsbi5wcm9qZWN0cywgaW5kZXgpOwplbmQKZW5kCmJ1aWxkdW5pcXVlZGlycygpCmJ1aWxkdGFyZ2V0cyhjZmcpCmVuZApmdW5jdGlvbiBwcmVtYWtlLmJha2UucG9zdHByb2Nlc3MocHJqLCBjZmcpCmNmZy5wcm9qZWN0ICAgPSBwcmoKY2ZnLnNob3J0bmFtZSA9IHByZW1ha2UuZ2V0Y29uZmlnbmFtZShjZmcubmFtZSwgY2ZnLnBsYXRmb3JtLCB0cnVlKQpjZmcubG9uZ25hbWUgID0gcHJlbWFrZS5nZXRjb25maWduYW1lKGNmZy5uYW1lLCBjZmcucGxhdGZvcm0pCmNmZy5sb2NhdGlvbiA9IGNmZy5sb2NhdGlvbiBvciBjZmcuYmFzZWRpcgpsb2NhbCBwbGF0Zm9ybSA9IHByZW1ha2UucGxhdGZvcm1zW2NmZy5wbGF0Zm9ybV0KaWYgcGxhdGZvcm0uaXNjcm9zc2NvbXBpbGVyIHRoZW4KY2ZnLnN5c3RlbSA9IGNmZy5wbGF0Zm9ybQplbHNlCmNmZy5zeXN0ZW0gPSBvcy5nZXQoKQplbmQKaWYgY2ZnLmtpbmQgPT0gIlNoYXJlZExpYiIgYW5kIHBsYXRmb3JtLm5vc2hhcmVkbGlicyB0aGVuCmNmZy5raW5kID0gIlN0YXRpY0xpYiIKZW5kCmxvY2FsIGZpbGVzID0geyB9CmZvciBfLCBmbmFtZSBpbiBpcGFpcnMoY2ZnLmZpbGVzKSBkbwpsb2NhbCBleGNsdWRlZCA9IGZhbHNlCmZvciBfLCBleGNsdWRlIGluIGlwYWlycyhjZmcuZXhjbHVkZXMpIGRvCmV4Y2x1ZGVkID0gKGZuYW1lID09IGV4Y2x1ZGUpCmlmIChleGNsdWRlZCkgdGhlbiBicmVhayBlbmQKZW5kCmlmIChub3QgZXhjbHVkZWQpIHRoZW4KdGFibGUuaW5zZXJ0KGZpbGVzLCBmbmFtZSkKZW5kCmVuZApjZmcuZmlsZXMgPSBmaWxlcwpmb3IgbmFtZSwgZmllbGQgaW4gcGFpcnMocHJlbWFrZS5maWVsZHMpIGRvCmlmIGZpZWxkLmlzZmxhZ3MgdGhlbgpsb2NhbCB2YWx1ZXMgPSBjZmdbbmFtZV0KZm9yIF8sIGZsYWcgaW4gaXBhaXJzKHZhbHVlcykgZG8gdmFsdWVzW2ZsYWddID0gdHJ1ZSBlbmQKZW5kCmVuZApjZmcuX19maWxlY29uZmlncyA9IHsgfQpmb3IgXywgZm5hbWUgaW4gaXBhaXJzKGNmZy5maWxlcykgZG8KY2ZnLnRlcm1zLnJlcXVpcmVkID0gZm5hbWU6bG93ZXIoKQpsb2NhbCBmY2ZnID0ge30KZm9yIF8sIGJsayBpbiBpcGFpcnMoY2ZnLnByb2plY3QuYmxvY2tzKSBkbwppZiAocHJlbWFrZS5pc2tleXdvcmRzbWF0Y2goYmxrLmtleXdvcmRzLCBjZmcudGVybXMpKSB0aGVuCm1lcmdlb2JqZWN0KGZjZmcsIGJsaykKZW5kCmVuZApmY2ZnLm5hbWUgPSBmbmFtZQpjZmcuX19maWxlY29uZmlnc1tmbmFtZV0gPSBmY2ZnCnRhYmxlLmluc2VydChjZmcuX19maWxlY29uZmlncywgZmNmZykKZW5kCmVuZAoAcHJlbWFrZS5maWVsZHMgPQp7CmJhc2VkaXIgPQp7CmtpbmQgID0gInBhdGgiLApzY29wZSA9ICJjb250YWluZXIiLAp9LApidWlsZGFjdGlvbiA9CnsKa2luZCAgPSAic3RyaW5nIiwKc2NvcGUgPSAiY29uZmlnIiwKYWxsb3dlZCA9IHsKIkNvbXBpbGUiLAoiQ29weSIsCiJFbWJlZCIsCiJOb25lIgp9Cn0sCmJ1aWxkb3B0aW9ucyA9CnsKa2luZCAgPSAibGlzdCIsCnNjb3BlID0gImNvbmZpZyIsCn0sCmNvbmZpZ3VyYXRpb25zID0KewpraW5kICA9ICJsaXN0IiwKc2NvcGUgPSAic29sdXRpb24iLAp9LApkZWJ1Z2FyZ3MgPQp7CmtpbmQgPSAibGlzdCIsCnNjb3BlID0gImNvbmZpZyIsCn0sCmRlYnVnZGlyID0KewpraW5kID0gInBhdGgiLApzY29wZSA9ICJjb25maWciLAp9LApkZWJ1Z2VudnMgID0KewpraW5kID0gImxpc3QiLApzY29wZSA9ICJjb25maWciLAp9LApkZWZpbmVzID0KewpraW5kICA9ICJsaXN0IiwKc2NvcGUgPSAiY29uZmlnIiwKfSwKZGVwbG95bWVudG9wdGlvbnMgPQp7CmtpbmQgID0gImxpc3QiLApzY29wZSA9ICJjb25maWciLAp1c2FnZWNvcHkgPSB0cnVlLAp9LApleGNsdWRlcyA9CnsKa2luZCAgPSAiZmlsZWxpc3QiLApzY29wZSA9ICJjb25maWciLAp9LApmaWxlcyA9CnsKa2luZCAgPSAiZmlsZWxpc3QiLApzY29wZSA9ICJjb25maWciLAp9LApmbGFncyA9CnsKa2luZCAgPSAibGlzdCIsCnNjb3BlID0gImNvbmZpZyIsCmlzZmxhZ3MgPSB0cnVlLAp1c2FnZWNvcHkgPSB0cnVlLAphbGxvd2VkID0gZnVuY3Rpb24odmFsdWUpCmxvY2FsIGFsbG93ZWRfZmxhZ3MgPSB7CkFUTCA9IDEsCkRlYnVnRW52c0RvbnRNZXJnZSA9IDEsCkRlYnVnRW52c0luaGVyaXQgPSAxLApFbmFibGVTU0UgPSAxLApFbmFibGVTU0UyID0gMSwKRXh0cmFXYXJuaW5ncyA9IDEsCkZhdGFsV2FybmluZ3MgPSAxLApGbG9hdEZhc3QgPSAxLApGbG9hdFN0cmljdCA9IDEsCk1hbmFnZWQgPSAxLApNRkMgPSAxLApOYXRpdmVXQ2hhciA9IDEsCk5vNjRCaXRDaGVja3MgPSAxLApOb0VkaXRBbmRDb250aW51ZSA9IDEsCk5vRXhjZXB0aW9ucyA9IDEsCk5vRnJhbWVQb2ludGVyID0gMSwKTm9JbXBvcnRMaWIgPSAxLApOb0luY3JlbWVudGFsTGluayA9IDEsCk5vTWFuaWZlc3QgPSAxLApOb01pbmltYWxSZWJ1aWxkID0gMSwKTm9OYXRpdmVXQ2hhciA9IDEsCk5vUENIID0gMSwKTm9SVFRJID0gMSwKT3B0aW1pemUgPSAxLApPcHRpbWl6ZVNpemUgPSAxLApPcHRpbWl6ZVNwZWVkID0gMSwKU0VIID0gMSwKU3RhdGljQVRMID0gMSwKU3RhdGljUnVudGltZSA9IDEsClN5bWJvbHMgPSAxLApVbmljb2RlID0gMSwKVW5zYWZlID0gMSwKV2luTWFpbiA9IDEKfQpsb2NhbCBlbmdsaXNoVG9BbWVyaWNhblNwZWxsaW5nID0KewpvcHRpbWlzZSA9ICdvcHRpbWl6ZScsCm9wdGltaXNlc2l6ZSA9ICdvcHRpbWl6ZXNpemUnLApvcHRpbWlzZXNwZWVkID0gJ29wdGltaXplc3BlZWQnLAp9CmxvY2FsIGxvd2VydmFsdWUgPSB2YWx1ZTpsb3dlcigpCmxvd2VydmFsdWUgPSBlbmdsaXNoVG9BbWVyaWNhblNwZWxsaW5nW2xvd2VydmFsdWVdIG9yIGxvd2VydmFsdWUKZm9yIHYsIF8gaW4gcGFpcnMoYWxsb3dlZF9mbGFncykgZG8KaWYgdjpsb3dlcigpID09IGxvd2VydmFsdWUgdGhlbgpyZXR1cm4gdgplbmQKZW5kCnJldHVybiBuaWwsICJpbnZhbGlkIGZsYWciCmVuZCwKfSwKZnJhbWV3b3JrID0KewpraW5kID0gInN0cmluZyIsCnNjb3BlID0gImNvbnRhaW5lciIsCmFsbG93ZWQgPSB7CiIxLjAiLAoiMS4xIiwKIjIuMCIsCiIzLjAiLAoiMy41IiwKIjQuMCIsCiI0LjUiLAp9Cn0sCmltYWdlcGF0aCA9CnsKa2luZCA9ICJwYXRoIiwKc2NvcGUgPSAiY29uZmlnIiwKfSwKaW1hZ2VvcHRpb25zID0KewpraW5kICA9ICJsaXN0IiwKc2NvcGUgPSAiY29uZmlnIiwKfSwKaW1wbGliZGlyID0KewpraW5kICA9ICJwYXRoIiwKc2NvcGUgPSAiY29uZmlnIiwKfSwKaW1wbGliZXh0ZW5zaW9uID0KewpraW5kICA9ICJzdHJpbmciLApzY29wZSA9ICJjb25maWciLAp9LAppbXBsaWJuYW1lID0KewpraW5kICA9ICJzdHJpbmciLApzY29wZSA9ICJjb25maWciLAp9LAppbXBsaWJwcmVmaXggPQp7CmtpbmQgID0gInN0cmluZyIsCnNjb3BlID0gImNvbmZpZyIsCn0sCmltcGxpYnN1ZmZpeCA9CnsKa2luZCAgPSAic3RyaW5nIiwKc2NvcGUgPSAiY29uZmlnIiwKfSwKaW5jbHVkZWRpcnMgPQp7CmtpbmQgID0gImRpcmxpc3QiLApzY29wZSA9ICJjb25maWciLAp1c2FnZWNvcHkgPSB0cnVlLAp9LApraW5kID0KewpraW5kICA9ICJzdHJpbmciLApzY29wZSA9ICJjb25maWciLAphbGxvd2VkID0gewoiQ29uc29sZUFwcCIsCiJXaW5kb3dlZEFwcCIsCiJTdGF0aWNMaWIiLAoiU2hhcmVkTGliIgp9Cn0sCmxhbmd1YWdlID0KewpraW5kICA9ICJzdHJpbmciLApzY29wZSA9ICJjb250YWluZXIiLAphbGxvd2VkID0gewoiQyIsCiJDKysiLAoiQyMiCn0KfSwKbGliZGlycyA9CnsKa2luZCAgPSAiZGlybGlzdCIsCnNjb3BlID0gImNvbmZpZyIsCmxpbmthZ2Vjb3B5ID0gdHJ1ZSwKfSwKbGlua29wdGlvbnMgPQp7CmtpbmQgID0gImxpc3QiLApzY29wZSA9ICJjb25maWciLAp9LApsaW5rcyA9CnsKa2luZCAgPSAibGlzdCIsCnNjb3BlID0gImNvbmZpZyIsCmFsbG93ZWQgPSBmdW5jdGlvbih2YWx1ZSkKaWYgdmFsdWU6ZmluZCgnLycsIG5pbCwgdHJ1ZSkgdGhlbgp2YWx1ZSA9IHBhdGguZ2V0YWJzb2x1dGUodmFsdWUpCmVuZApyZXR1cm4gdmFsdWUKZW5kLApsaW5rYWdlY29weSA9IHRydWUsCn0sCmxvY2F0aW9uID0KewpraW5kICA9ICJwYXRoIiwKc2NvcGUgPSAiY29udGFpbmVyIiwKfSwKbWFrZXNldHRpbmdzID0KewpraW5kID0gImxpc3QiLApzY29wZSA9ICJjb25maWciLAp9LApvYmpkaXIgPQp7CmtpbmQgID0gInBhdGgiLApzY29wZSA9ICJjb25maWciLAp9LApwY2hoZWFkZXIgPQp7CmtpbmQgID0gInN0cmluZyIsCnNjb3BlID0gImNvbmZpZyIsCn0sCnBjaHNvdXJjZSA9CnsKa2luZCAgPSAicGF0aCIsCnNjb3BlID0gImNvbmZpZyIsCn0sCnBsYXRmb3JtcyA9CnsKa2luZCAgPSAibGlzdCIsCnNjb3BlID0gInNvbHV0aW9uIiwKYWxsb3dlZCA9IHRhYmxlLmtleXMocHJlbWFrZS5wbGF0Zm9ybXMpLAp9LApwb3N0YnVpbGRjb21tYW5kcyA9CnsKa2luZCAgPSAibGlzdCIsCnNjb3BlID0gImNvbmZpZyIsCn0sCnByZWJ1aWxkY29tbWFuZHMgPQp7CmtpbmQgID0gImxpc3QiLApzY29wZSA9ICJjb25maWciLAp9LApwcmVsaW5rY29tbWFuZHMgPQp7CmtpbmQgID0gImxpc3QiLApzY29wZSA9ICJjb25maWciLAp9LApyZXNkZWZpbmVzID0KewpraW5kICA9ICJsaXN0IiwKc2NvcGUgPSAiY29uZmlnIiwKfSwKcmVzaW5jbHVkZWRpcnMgPQp7CmtpbmQgID0gImRpcmxpc3QiLApzY29wZSA9ICJjb25maWciLAp9LApyZXNvcHRpb25zID0KewpraW5kICA9ICJsaXN0IiwKc2NvcGUgPSAiY29uZmlnIiwKfSwKdGFyZ2V0ZGlyID0KewpraW5kICA9ICJwYXRoIiwKc2NvcGUgPSAiY29uZmlnIiwKfSwKdGFyZ2V0ZXh0ZW5zaW9uID0KewpraW5kICA9ICJzdHJpbmciLApzY29wZSA9ICJjb25maWciLAp9LAp0YXJnZXRuYW1lID0KewpraW5kICA9ICJzdHJpbmciLApzY29wZSA9ICJjb25maWciLAp9LAp0YXJnZXRwcmVmaXggPQp7CmtpbmQgID0gInN0cmluZyIsCnNjb3BlID0gImNvbmZpZyIsCn0sCnRhcmdldHN1ZmZpeCA9CnsKa2luZCAgPSAic3RyaW5nIiwKc2NvcGUgPSAiY29uZmlnIiwKfSwKdHJpbXBhdGhzID0KewpraW5kID0gImRpcmxpc3QiLApzY29wZSA9ICJjb25maWciLAp9LAp1dWlkID0KewpraW5kICA9ICJzdHJpbmciLApzY29wZSA9ICJjb250YWluZXIiLAphbGxvd2VkID0gZnVuY3Rpb24odmFsdWUpCmxvY2FsIG9rID0gdHJ1ZQppZiAoI3ZhbHVlIH49IDM2KSB0aGVuIG9rID0gZmFsc2UgZW5kCmZvciBpPTEsMzYgZG8KbG9jYWwgY2ggPSB2YWx1ZTpzdWIoaSxpKQppZiAobm90IGNoOmZpbmQoIltBQkNERUZhYmNkZWYwMTIzNDU2Nzg5LV0iKSkgdGhlbiBvayA9IGZhbHNlIGVuZAplbmQKaWYgKHZhbHVlOnN1Yig5LDkpIH49ICItIikgICB0aGVuIG9rID0gZmFsc2UgZW5kCmlmICh2YWx1ZTpzdWIoMTQsMTQpIH49ICItIikgdGhlbiBvayA9IGZhbHNlIGVuZAppZiAodmFsdWU6c3ViKDE5LDE5KSB+PSAiLSIpIHRoZW4gb2sgPSBmYWxzZSBlbmQKaWYgKHZhbHVlOnN1YigyNCwyNCkgfj0gIi0iKSB0aGVuIG9rID0gZmFsc2UgZW5kCmlmIChub3Qgb2spIHRoZW4KcmV0dXJuIG5pbCwgImludmFsaWQgVVVJRCIKZW5kCnJldHVybiB2YWx1ZTp1cHBlcigpCmVuZAp9LAp1c2VzID0KewpraW5kICA9ICJsaXN0IiwKc2NvcGUgPSAiY29uZmlnIiwKfSwKdnBhdGhzID0KewpraW5kID0gImtleXBhdGgiLApzY29wZSA9ICJjb250YWluZXIiLAp9LAp9CmZ1bmN0aW9uIHByZW1ha2UuY2hlY2t2YWx1ZSh2YWx1ZSwgYWxsb3dlZCkKaWYgKGFsbG93ZWQpIHRoZW4KaWYgKHR5cGUoYWxsb3dlZCkgPT0gImZ1bmN0aW9uIikgdGhlbgpyZXR1cm4gYWxsb3dlZCh2YWx1ZSkKZWxzZQpmb3IgXyx2IGluIGlwYWlycyhhbGxvd2VkKSBkbwppZiAodmFsdWU6bG93ZXIoKSA9PSB2Omxvd2VyKCkpIHRoZW4KcmV0dXJuIHYKZW5kCmVuZApyZXR1cm4gbmlsLCAiaW52YWxpZCB2YWx1ZSAnIiAuLiB2YWx1ZSAuLiAiJyIKZW5kCmVsc2UKcmV0dXJuIHZhbHVlCmVuZAplbmQKZnVuY3Rpb24gcHJlbWFrZS5nZXRvYmplY3QodCkKbG9jYWwgY29udGFpbmVyCmlmICh0ID09ICJjb250YWluZXIiIG9yIHQgPT0gInNvbHV0aW9uIikgdGhlbgpjb250YWluZXIgPSBwcmVtYWtlLkN1cnJlbnRDb250YWluZXIKZWxzZQpjb250YWluZXIgPSBwcmVtYWtlLkN1cnJlbnRDb25maWd1cmF0aW9uCmVuZAppZiB0ID09ICJzb2x1dGlvbiIgdGhlbgppZiB0eXBlKGNvbnRhaW5lcikgPT0gInByb2plY3QiIHRoZW4KY29udGFpbmVyID0gY29udGFpbmVyLnNvbHV0aW9uCmVuZAppZiB0eXBlKGNvbnRhaW5lcikgfj0gInNvbHV0aW9uIiB0aGVuCmNvbnRhaW5lciA9IG5pbAplbmQKZW5kCmxvY2FsIG1zZwppZiAobm90IGNvbnRhaW5lcikgdGhlbgppZiAodCA9PSAiY29udGFpbmVyIikgdGhlbgptc2cgPSAibm8gYWN0aXZlIHNvbHV0aW9uIG9yIHByb2plY3QiCmVsc2VpZiAodCA9PSAic29sdXRpb24iKSB0aGVuCm1zZyA9ICJubyBhY3RpdmUgc29sdXRpb24iCmVsc2UKbXNnID0gIm5vIGFjdGl2ZSBzb2x1dGlvbiwgcHJvamVjdCwgb3IgY29uZmlndXJhdGlvbiIKZW5kCmVuZApyZXR1cm4gY29udGFpbmVyLCBtc2cKZW5kCmZ1bmN0aW9uIHByZW1ha2Uuc2V0YXJyYXkoY3R5cGUsIGZpZWxkbmFtZSwgdmFsdWUsIGFsbG93ZWQpCmxvY2FsIGNvbnRhaW5lciwgZXJyID0gcHJlbWFrZS5nZXRvYmplY3QoY3R5cGUpCmlmIChub3QgY29udGFpbmVyKSB0aGVuCmVycm9yKGVyciwgNCkKZW5kCmlmIChub3QgY29udGFpbmVyW2ZpZWxkbmFtZV0pIHRoZW4KY29udGFpbmVyW2ZpZWxkbmFtZV0gPSB7IH0KZW5kCmxvY2FsIGZ1bmN0aW9uIGRvaW5zZXJ0KHZhbHVlLCBkZXB0aCkKaWYgKHR5cGUodmFsdWUpID09ICJ0YWJsZSIpIHRoZW4KZm9yIF8sdiBpbiBpcGFpcnModmFsdWUpIGRvCmRvaW5zZXJ0KHYsIGRlcHRoICsgMSkKZW5kCmVsc2UKdmFsdWUsIGVyciA9IHByZW1ha2UuY2hlY2t2YWx1ZSh2YWx1ZSwgYWxsb3dlZCkKaWYgKG5vdCB2YWx1ZSkgdGhlbgplcnJvcihlcnIsIGRlcHRoKQplbmQKdGFibGUuaW5zZXJ0KGNvbnRhaW5lcltmaWVsZG5hbWVdLCB2YWx1ZSkKZW5kCmVuZAppZiAodmFsdWUpIHRoZW4KZG9pbnNlcnQodmFsdWUsIDUpCmVuZApyZXR1cm4gY29udGFpbmVyW2ZpZWxkbmFtZV0KZW5kCmxvY2FsIGZ1bmN0aW9uIGRvbWF0Y2hlZGFycmF5KGN0eXBlLCBmaWVsZG5hbWUsIHZhbHVlLCBtYXRjaGZ1bmMpCmxvY2FsIHJlc3VsdCA9IHsgfQpmdW5jdGlvbiBtYWtlYWJzb2x1dGUodmFsdWUsIGRlcHRoKQppZiAodHlwZSh2YWx1ZSkgPT0gInRhYmxlIikgdGhlbgpmb3IgXywgaXRlbSBpbiBpcGFpcnModmFsdWUpIGRvCm1ha2VhYnNvbHV0ZShpdGVtLCBkZXB0aCArIDEpCmVuZAplbHNlaWYgdHlwZSh2YWx1ZSkgPT0gInN0cmluZyIgdGhlbgppZiB2YWx1ZTpmaW5kKCIqIikgdGhlbgptYWtlYWJzb2x1dGUobWF0Y2hmdW5jKHZhbHVlKSwgZGVwdGggKyAxKQplbHNlCnRhYmxlLmluc2VydChyZXN1bHQsIHBhdGguZ2V0YWJzb2x1dGUodmFsdWUpKQplbmQKZWxzZQplcnJvcigiSW52YWxpZCB2YWx1ZSBpbiBsaXN0OiBleHBlY3RlZCBzdHJpbmcsIGdvdCAiIC4uIHR5cGUodmFsdWUpLCBkZXB0aCkKZW5kCmVuZAptYWtlYWJzb2x1dGUodmFsdWUsIDMpCnJldHVybiBwcmVtYWtlLnNldGFycmF5KGN0eXBlLCBmaWVsZG5hbWUsIHJlc3VsdCkKZW5kCmZ1bmN0aW9uIHByZW1ha2Uuc2V0ZGlyYXJyYXkoY3R5cGUsIGZpZWxkbmFtZSwgdmFsdWUpCnJldHVybiBkb21hdGNoZWRhcnJheShjdHlwZSwgZmllbGRuYW1lLCB2YWx1ZSwgb3MubWF0Y2hkaXJzKQplbmQKZnVuY3Rpb24gcHJlbWFrZS5zZXRmaWxlYXJyYXkoY3R5cGUsIGZpZWxkbmFtZSwgdmFsdWUpCnJldHVybiBkb21hdGNoZWRhcnJheShjdHlwZSwgZmllbGRuYW1lLCB2YWx1ZSwgb3MubWF0Y2hmaWxlcykKZW5kCmZ1bmN0aW9uIHByZW1ha2Uuc2V0a2V5dmFsdWUoY3R5cGUsIGZpZWxkbmFtZSwgdmFsdWVzKQpsb2NhbCBjb250YWluZXIsIGVyciA9IHByZW1ha2UuZ2V0b2JqZWN0KGN0eXBlKQppZiBub3QgY29udGFpbmVyIHRoZW4KZXJyb3IoZXJyLCA0KQplbmQKaWYgbm90IGNvbnRhaW5lcltmaWVsZG5hbWVdIHRoZW4KY29udGFpbmVyW2ZpZWxkbmFtZV0gPSB7fQplbmQKaWYgdHlwZSh2YWx1ZXMpIH49ICJ0YWJsZSIgdGhlbgplcnJvcigiaW52YWxpZCB2YWx1ZTsgdGFibGUgZXhwZWN0ZWQiLCA0KQplbmQKbG9jYWwgZmllbGQgPSBjb250YWluZXJbZmllbGRuYW1lXQpmb3Iga2V5LHZhbHVlIGluIHBhaXJzKHZhbHVlcykgZG8KaWYgbm90IGZpZWxkW2tleV0gdGhlbgpmaWVsZFtrZXldID0ge30KZW5kCnRhYmxlLmluc2VydGZsYXQoZmllbGRba2V5XSwgdmFsdWUpCmVuZApyZXR1cm4gZmllbGQKZW5kCmZ1bmN0aW9uIHByZW1ha2Uuc2V0c3RyaW5nKGN0eXBlLCBmaWVsZG5hbWUsIHZhbHVlLCBhbGxvd2VkKQpsb2NhbCBjb250YWluZXIsIGVyciA9IHByZW1ha2UuZ2V0b2JqZWN0KGN0eXBlKQppZiAobm90IGNvbnRhaW5lcikgdGhlbgplcnJvcihlcnIsIDQpCmVuZAppZiAodmFsdWUpIHRoZW4KdmFsdWUsIGVyciA9IHByZW1ha2UuY2hlY2t2YWx1ZSh2YWx1ZSwgYWxsb3dlZCkKaWYgKG5vdCB2YWx1ZSkgdGhlbgplcnJvcihlcnIsIDQpCmVuZApjb250YWluZXJbZmllbGRuYW1lXSA9IHZhbHVlCmVuZApyZXR1cm4gY29udGFpbmVyW2ZpZWxkbmFtZV0KZW5kCmxvY2FsIGZ1bmN0aW9uIGFjY2Vzc29yKG5hbWUsIHZhbHVlKQpsb2NhbCBraW5kICAgID0gcHJlbWFrZS5maWVsZHNbbmFtZV0ua2luZApsb2NhbCBzY29wZSAgID0gcHJlbWFrZS5maWVsZHNbbmFtZV0uc2NvcGUKbG9jYWwgYWxsb3dlZCA9IHByZW1ha2UuZmllbGRzW25hbWVdLmFsbG93ZWQKaWYgKGtpbmQgPT0gInN0cmluZyIgb3Iga2luZCA9PSAicGF0aCIpIGFuZCB2YWx1ZSB0aGVuCmlmIHR5cGUodmFsdWUpIH49ICJzdHJpbmciIHRoZW4KZXJyb3IoInN0cmluZyB2YWx1ZSBleHBlY3RlZCIsIDMpCmVuZAplbmQKaWYga2luZCA9PSAic3RyaW5nIiB0aGVuCnJldHVybiBwcmVtYWtlLnNldHN0cmluZyhzY29wZSwgbmFtZSwgdmFsdWUsIGFsbG93ZWQpCmVsc2VpZiBraW5kID09ICJwYXRoIiB0aGVuCmlmIHZhbHVlIHRoZW4gdmFsdWUgPSBwYXRoLmdldGFic29sdXRlKHZhbHVlKSBlbmQKcmV0dXJuIHByZW1ha2Uuc2V0c3RyaW5nKHNjb3BlLCBuYW1lLCB2YWx1ZSkKZWxzZWlmIGtpbmQgPT0gImxpc3QiIHRoZW4KcmV0dXJuIHByZW1ha2Uuc2V0YXJyYXkoc2NvcGUsIG5hbWUsIHZhbHVlLCBhbGxvd2VkKQplbHNlaWYga2luZCA9PSAiZGlybGlzdCIgdGhlbgpyZXR1cm4gcHJlbWFrZS5zZXRkaXJhcnJheShzY29wZSwgbmFtZSwgdmFsdWUpCmVsc2VpZiBraW5kID09ICJmaWxlbGlzdCIgdGhlbgpyZXR1cm4gcHJlbWFrZS5zZXRmaWxlYXJyYXkoc2NvcGUsIG5hbWUsIHZhbHVlKQplbHNlaWYga2luZCA9PSAia2V5dmFsdWUiIG9yIGtpbmQgPT0gImtleXBhdGgiIHRoZW4KcmV0dXJuIHByZW1ha2Uuc2V0a2V5dmFsdWUoc2NvcGUsIG5hbWUsIHZhbHVlKQplbmQKZW5kCmZvciBuYW1lLF8gaW4gcGFpcnMocHJlbWFrZS5maWVsZHMpIGRvCl9HW25hbWVdID0gZnVuY3Rpb24odmFsdWUpCnJldHVybiBhY2Nlc3NvcihuYW1lLCB2YWx1ZSkKZW5kCmVuZApmdW5jdGlvbiBjb25maWd1cmF0aW9uKHRlcm1zKQppZiBub3QgdGVybXMgdGhlbgpyZXR1cm4gcHJlbWFrZS5DdXJyZW50Q29uZmlndXJhdGlvbgplbmQKbG9jYWwgY29udGFpbmVyLCBlcnIgPSBwcmVtYWtlLmdldG9iamVjdCgiY29udGFpbmVyIikKaWYgKG5vdCBjb250YWluZXIpIHRoZW4KZXJyb3IoZXJyLCAyKQplbmQKbG9jYWwgY2ZnID0geyB9CmNmZy50ZXJtcyA9IHRhYmxlLmZsYXR0ZW4oe3Rlcm1zfSkKdGFibGUuaW5zZXJ0KGNvbnRhaW5lci5ibG9ja3MsIGNmZykKcHJlbWFrZS5DdXJyZW50Q29uZmlndXJhdGlvbiA9IGNmZwpjZmcua2V5d29yZHMgPSB7IH0KZm9yIF8sIHdvcmQgaW4gaXBhaXJzKGNmZy50ZXJtcykgZG8KdGFibGUuaW5zZXJ0KGNmZy5rZXl3b3JkcywgcGF0aC53aWxkY2FyZHMod29yZCk6bG93ZXIoKSkKZW5kCmZvciBuYW1lLCBmaWVsZCBpbiBwYWlycyhwcmVtYWtlLmZpZWxkcykgZG8KaWYgKGZpZWxkLmtpbmQgfj0gInN0cmluZyIgYW5kIGZpZWxkLmtpbmQgfj0gInBhdGgiKSB0aGVuCmNmZ1tuYW1lXSA9IHsgfQplbmQKZW5kCnJldHVybiBjZmcKZW5kCmxvY2FsIGZ1bmN0aW9uIGNyZWF0ZXByb2plY3QobmFtZSwgc2xuLCBpc1VzYWdlKQpsb2NhbCBwcmogPSB7fQpzZXRtZXRhdGFibGUocHJqLCB7Cl9fdHlwZSA9ICJwcm9qZWN0IiwKfSkKdGFibGUuaW5zZXJ0KHNsbi5wcm9qZWN0cywgcHJqKQppZihpc1VzYWdlKSB0aGVuCmlmKHNsbi5wcm9qZWN0c1tuYW1lXSkgdGhlbgpzbG4ucHJvamVjdHNbbmFtZV0udXNhZ2VQcm9qID0gcHJqOwplbHNlCnNsbi5wcm9qZWN0c1tuYW1lXSA9IHByagplbmQKZWxzZQppZihzbG4ucHJvamVjdHNbbmFtZV0pIHRoZW4KcHJqLnVzYWdlUHJvaiA9IHNsbi5wcm9qZWN0c1tuYW1lXTsKZW5kCnNsbi5wcm9qZWN0c1tuYW1lXSA9IHByagplbmQKcHJqLnNvbHV0aW9uICAgICAgID0gc2xuCnByai5uYW1lICAgICAgICAgICA9IG5hbWUKcHJqLmJhc2VkaXIgICAgICAgID0gb3MuZ2V0Y3dkKCkKcHJqLnV1aWQgICAgICAgICAgID0gb3MudXVpZCgpCnByai5ibG9ja3MgICAgICAgICA9IHsgfQpwcmoudXNhZ2UgICA9IGlzVXNhZ2U7CnJldHVybiBwcmo7CmVuZApmdW5jdGlvbiB1c2FnZShuYW1lKQppZiAobm90IG5hbWUpIHRoZW4KaWYodHlwZShwcmVtYWtlLkN1cnJlbnRDb250YWluZXIpIH49ICJwcm9qZWN0IikgdGhlbiByZXR1cm4gbmlsIGVuZAppZihub3QgcHJlbWFrZS5DdXJyZW50Q29udGFpbmVyLnVzYWdlKSB0aGVuIHJldHVybiBuaWwgZW5kCnJldHVybiBwcmVtYWtlLkN1cnJlbnRDb250YWluZXIKZW5kCmxvY2FsIHNsbgppZiAodHlwZShwcmVtYWtlLkN1cnJlbnRDb250YWluZXIpID09ICJwcm9qZWN0IikgdGhlbgpzbG4gPSBwcmVtYWtlLkN1cnJlbnRDb250YWluZXIuc29sdXRpb24KZWxzZQpzbG4gPSBwcmVtYWtlLkN1cnJlbnRDb250YWluZXIKZW5kCmlmICh0eXBlKHNsbikgfj0gInNvbHV0aW9uIikgdGhlbgplcnJvcigibm8gYWN0aXZlIHNvbHV0aW9uIiwgMikKZW5kCiAgLS0gaWYgdGhpcyBpcyBhIG5ldyBwcm9qZWN0LCBvciB0aGUgcHJvamVjdCBpbiB0aGF0IHNsb3QgZG9lc24ndCBoYXZlIGEgdXNhZ2UsIGNyZWF0ZSBpdAogIGlmKChub3Qgc2xuLnByb2plY3RzW25hbWVdKSBvcgogICgobm90IHNsbi5wcm9qZWN0c1tuYW1lXS51c2FnZSkgYW5kIChub3Qgc2xuLnByb2plY3RzW25hbWVdLnVzYWdlUHJvaikpKSB0aGVuCiAgcHJlbWFrZS5DdXJyZW50Q29udGFpbmVyID0gY3JlYXRlcHJvamVjdChuYW1lLCBzbG4sIHRydWUpCiAgZWxzZQogIHByZW1ha2UuQ3VycmVudENvbnRhaW5lciA9IGlmZihzbG4ucHJvamVjdHNbbmFtZV0udXNhZ2UsCiAgc2xuLnByb2plY3RzW25hbWVdLCBzbG4ucHJvamVjdHNbbmFtZV0udXNhZ2VQcm9qKQogIGVuZAogIC0tIGFkZCBhbiBlbXB0eSwgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gdG8gdGhlIHByb2plY3QKICBjb25maWd1cmF0aW9uIHsgfQogIHJldHVybiBwcmVtYWtlLkN1cnJlbnRDb250YWluZXIKICBlbmQKICBmdW5jdGlvbiBwcm9qZWN0KG5hbWUpCiAgaWYgKG5vdCBuYW1lKSB0aGVuCiAgLS1Pbmx5IHJldHVybiBub24tdXNhZ2UgcHJvamVjdHMKICBpZih0eXBlKHByZW1ha2UuQ3VycmVudENvbnRhaW5lcikgfj0gInByb2plY3QiKSB0aGVuIHJldHVybiBuaWwgZW5kCiAgaWYocHJlbWFrZS5DdXJyZW50Q29udGFpbmVyLnVzYWdlKSB0aGVuIHJldHVybiBuaWwgZW5kCiAgcmV0dXJuIHByZW1ha2UuQ3VycmVudENvbnRhaW5lcgplbmQKICAtLSBpZGVudGlmeSB0aGUgcGFyZW50IHNvbHV0aW9uCiAgbG9jYWwgc2xuCiAgaWYgKHR5cGUocHJlbWFrZS5DdXJyZW50Q29udGFpbmVyKSA9PSAicHJvamVjdCIpIHRoZW4KICBzbG4gPSBwcmVtYWtlLkN1cnJlbnRDb250YWluZXIuc29sdXRpb24KICBlbHNlCiAgc2xuID0gcHJlbWFrZS5DdXJyZW50Q29udGFpbmVyCiAgZW5kCiAgaWYgKHR5cGUoc2xuKSB+PSAic29sdXRpb24iKSB0aGVuCiAgZXJyb3IoIm5vIGFjdGl2ZSBzb2x1dGlvbiIsIDIpCiAgZW5kCiAgLS0gaWYgdGhpcyBpcyBhIG5ldyBwcm9qZWN0LCBvciB0aGUgb2xkIHByb2plY3QgaXMgYSB1c2FnZSBwcm9qZWN0LCBjcmVhdGUgaXQKICBpZigobm90IHNsbi5wcm9qZWN0c1tuYW1lXSkgb3Igc2xuLnByb2plY3RzW25hbWVdLnVzYWdlKSB0aGVuCiAgcHJlbWFrZS5DdXJyZW50Q29udGFpbmVyID0gY3JlYXRlcHJvamVjdChuYW1lLCBzbG4pCiAgZWxzZQogIHByZW1ha2UuQ3VycmVudENvbnRhaW5lciA9IHNsbi5wcm9qZWN0c1tuYW1lXTsKICBlbmQKY29uZmlndXJhdGlvbiB7IH0KcmV0dXJuIHByZW1ha2UuQ3VycmVudENvbnRhaW5lcgplbmQKZnVuY3Rpb24gc29sdXRpb24obmFtZSkKaWYgbm90IG5hbWUgdGhlbgppZiB0eXBlKHByZW1ha2UuQ3VycmVudENvbnRhaW5lcikgPT0gInByb2plY3QiIHRoZW4KcmV0dXJuIHByZW1ha2UuQ3VycmVudENvbnRhaW5lci5zb2x1dGlvbgplbHNlCnJldHVybiBwcmVtYWtlLkN1cnJlbnRDb250YWluZXIKZW5kCmVuZApwcmVtYWtlLkN1cnJlbnRDb250YWluZXIgPSBwcmVtYWtlLnNvbHV0aW9uLmdldChuYW1lKQppZiAobm90IHByZW1ha2UuQ3VycmVudENvbnRhaW5lcikgdGhlbgpwcmVtYWtlLkN1cnJlbnRDb250YWluZXIgPSBwcmVtYWtlLnNvbHV0aW9uLm5ldyhuYW1lKQplbmQKY29uZmlndXJhdGlvbiB7IH0KcmV0dXJuIHByZW1ha2UuQ3VycmVudENvbnRhaW5lcgplbmQKZnVuY3Rpb24gbmV3YWN0aW9uKGEpCnByZW1ha2UuYWN0aW9uLmFkZChhKQplbmQKZnVuY3Rpb24gbmV3b3B0aW9uKG9wdCkKcHJlbWFrZS5vcHRpb24uYWRkKG9wdCkKZW5kCgBuZXdvcHRpb24gCnsKdHJpZ2dlciAgICAgPSAiY2MiLAp2YWx1ZSAgICAgICA9ICJWQUxVRSIsCmRlc2NyaXB0aW9uID0gIkNob29zZSBhIEMvQysrIGNvbXBpbGVyIHNldCIsCmFsbG93ZWQgPSB7CnsgImdjYyIsICJHTlUgR0NDIChnY2MvZysrKSIgfSwKeyAib3ciLCAgIk9wZW5XYXRjb20iICAgICAgICB9LAp9Cn0KbmV3b3B0aW9uCnsKdHJpZ2dlciAgICAgPSAiZG90bmV0IiwKdmFsdWUgICAgICAgPSAiVkFMVUUiLApkZXNjcmlwdGlvbiA9ICJDaG9vc2UgYSAuTkVUIGNvbXBpbGVyIHNldCIsCmFsbG93ZWQgPSB7CnsgIm1zbmV0IiwgICAiTWljcm9zb2Z0IC5ORVQgKGNzYykiIH0sCnsgIm1vbm8iLCAgICAiTm92ZWxsIE1vbm8gKG1jcykiICAgIH0sCnsgInBuZXQiLCAgICAiUG9ydGFibGUuTkVUIChjc2NjKSIgIH0sCn0KfQpuZXdvcHRpb24Kewp0cmlnZ2VyICAgICA9ICJmaWxlIiwKdmFsdWUgICAgICAgPSAiRklMRSIsCmRlc2NyaXB0aW9uID0gIlJlYWQgRklMRSBhcyBhIFByZW1ha2Ugc2NyaXB0OyBkZWZhdWx0IGlzICdwcmVtYWtlNC5sdWEnIgp9Cm5ld29wdGlvbgp7CnRyaWdnZXIgICAgID0gImhlbHAiLApkZXNjcmlwdGlvbiA9ICJEaXNwbGF5IHRoaXMgaW5mb3JtYXRpb24iCn0KbmV3b3B0aW9uCnsKdHJpZ2dlciAgICAgPSAib3MiLAp2YWx1ZSAgICAgICA9ICJWQUxVRSIsCmRlc2NyaXB0aW9uID0gIkdlbmVyYXRlIGZpbGVzIGZvciBhIGRpZmZlcmVudCBvcGVyYXRpbmcgc3lzdGVtIiwKYWxsb3dlZCA9IHsKeyAiYnNkIiwgICAgICAiT3BlbkJTRCwgTmV0QlNELCBvciBGcmVlQlNEIiB9LAp7ICJoYWlrdSIsICAgICJIYWlrdSIgfSwKeyAibGludXgiLCAgICAiTGludXgiIH0sCnsgIm1hY29zeCIsICAgIkFwcGxlIE1hYyBPUyBYIiB9LAp7ICJzb2xhcmlzIiwgICJTb2xhcmlzIiB9LAp7ICJ3aW5kb3dzIiwgICJNaWNyb3NvZnQgV2luZG93cyIgfSwKfQp9Cm5ld29wdGlvbgp7CnRyaWdnZXIgICAgID0gInBsYXRmb3JtIiwKdmFsdWUgICAgICAgPSAiVkFMVUUiLApkZXNjcmlwdGlvbiA9ICJBZGQgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoaWYgc3VwcG9ydGVkIGJ5IGFjdGlvbikiLAphbGxvd2VkID0gewp7ICJ4MzIiLCAgICAgICAgICIzMi1iaXQiIH0sCnsgIng2NCIsICAgICAgICAgIjY0LWJpdCIgfSwKeyAidW5pdmVyc2FsIiwgICAiTWFjIE9TIFggVW5pdmVyc2FsLCAzMi0gYW5kIDY0LWJpdCIgfSwKeyAidW5pdmVyc2FsMzIiLCAiTWFjIE9TIFggVW5pdmVyc2FsLCAzMi1iaXQgb25seSIgfSwKeyAidW5pdmVyc2FsNjQiLCAiTWFjIE9TIFggVW5pdmVyc2FsLCA2NC1iaXQgb25seSIgfSwKeyAiaW9zIiwgICAgICAgICAiaU9TIiB9LAp7ICJwczMiLCAgICAgICAgICJQbGF5c3RhdGlvbiAzIChleHBlcmltZW50YWwpIiB9LAp7ICJ4Ym94MzYwIiwgICAgICJYYm94IDM2MCAoZXhwZXJpbWVudGFsKSIgfSwKfQp9Cm5ld29wdGlvbgp7CnRyaWdnZXIgICAgID0gInNjcmlwdHMiLAp2YWx1ZSAgICAgICA9ICJwYXRoIiwKZGVzY3JpcHRpb24gPSAiU2VhcmNoIGZvciBhZGRpdGlvbmFsIHNjcmlwdHMgb24gdGhlIGdpdmVuIHBhdGgiCn0KbmV3b3B0aW9uCnsKdHJpZ2dlciAgICAgPSAidmVyc2lvbiIsCmRlc2NyaXB0aW9uID0gIkRpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiIKfQoAcHJlbWFrZS5kb3RuZXQgPSB7IH0KcHJlbWFrZS5kb3RuZXQubmFtZXN0eWxlID0gIndpbmRvd3MiCmxvY2FsIGZsYWdzID0KewpGYXRhbFdhcm5pbmcgICA9ICIvd2FybmFzZXJyb3IiLApPcHRpbWl6ZSAgICAgICA9ICIvb3B0aW1pemUiLApPcHRpbWl6ZVNpemUgICA9ICIvb3B0aW1pemUiLApPcHRpbWl6ZVNwZWVkICA9ICIvb3B0aW1pemUiLApTeW1ib2xzICAgICAgICA9ICIvZGVidWciLApVbnNhZmUgICAgICAgICA9ICIvdW5zYWZlIgp9CmZ1bmN0aW9uIHByZW1ha2UuZG90bmV0LmdldGJ1aWxkYWN0aW9uKGZjZmcpCmxvY2FsIGV4dCA9IHBhdGguZ2V0ZXh0ZW5zaW9uKGZjZmcubmFtZSk6bG93ZXIoKQppZiBmY2ZnLmJ1aWxkYWN0aW9uID09ICJDb21waWxlIiBvciBleHQgPT0gIi5jcyIgdGhlbgpyZXR1cm4gIkNvbXBpbGUiCmVsc2VpZiBmY2ZnLmJ1aWxkYWN0aW9uID09ICJFbWJlZCIgb3IgZXh0ID09ICIucmVzeCIgdGhlbgpyZXR1cm4gIkVtYmVkZGVkUmVzb3VyY2UiCmVsc2VpZiBmY2ZnLmJ1aWxkYWN0aW9uID09ICJDb3B5IiBvciBleHQgPT0gIi5hc2F4IiBvciBleHQgPT0gIi5hc3B4IiB0aGVuCnJldHVybiAiQ29udGVudCIKZWxzZQpyZXR1cm4gIk5vbmUiCmVuZAplbmQKZnVuY3Rpb24gcHJlbWFrZS5kb3RuZXQuZ2V0Y29tcGlsZXJ2YXIoY2ZnKQppZiAoX09QVElPTlMuZG90bmV0ID09ICJtc25ldCIpIHRoZW4KcmV0dXJuICJjc2MiCmVsc2VpZiAoX09QVElPTlMuZG90bmV0ID09ICJtb25vIikgdGhlbgppZiAoY2ZnLmZyYW1ld29yayA8PSAiMS4xIikgdGhlbgpyZXR1cm4gIm1jcyIKZWxzZWlmIChjZmcuZnJhbWV3b3JrID49ICI0LjAiKSB0aGVuCnJldHVybiAiZG1jcyIKZWxzZSAKcmV0dXJuICJnbWNzIgplbmQKZWxzZQpyZXR1cm4gImNzY2MiCmVuZAplbmQKZnVuY3Rpb24gcHJlbWFrZS5kb3RuZXQuZ2V0ZmxhZ3MoY2ZnKQpsb2NhbCByZXN1bHQgPSB0YWJsZS50cmFuc2xhdGUoY2ZnLmZsYWdzLCBmbGFncykKcmV0dXJuIHJlc3VsdAplbmQKZnVuY3Rpb24gcHJlbWFrZS5kb3RuZXQuZ2V0a2luZChjZmcpCmlmIChjZmcua2luZCA9PSAiQ29uc29sZUFwcCIpIHRoZW4KcmV0dXJuICJFeGUiCmVsc2VpZiAoY2ZnLmtpbmQgPT0gIldpbmRvd2VkQXBwIikgdGhlbgpyZXR1cm4gIldpbkV4ZSIKZWxzZWlmIChjZmcua2luZCA9PSAiU2hhcmVkTGliIikgdGhlbgpyZXR1cm4gIkxpYnJhcnkiCmVuZAplbmQAcHJlbWFrZS5nY2MgPSB7IH0KcHJlbWFrZS5nY2MuY2MgICAgID0gImdjYyIKcHJlbWFrZS5nY2MuY3h4ICAgID0gImcrKyIKcHJlbWFrZS5nY2MuYXIgICAgID0gImFyIgpsb2NhbCBjZmxhZ3MgPQp7CkVuYWJsZVNTRSAgICAgID0gIi1tc3NlIiwKRW5hYmxlU1NFMiAgICAgPSAiLW1zc2UyIiwKRXh0cmFXYXJuaW5ncyAgPSAiLVdhbGwgLVdleHRyYSIsCkZhdGFsV2FybmluZ3MgID0gIi1XZXJyb3IiLApGbG9hdEZhc3QgICAgICA9ICItZmZhc3QtbWF0aCIsCkZsb2F0U3RyaWN0ICAgID0gIi1mZmxvYXQtc3RvcmUiLApOb0ZyYW1lUG9pbnRlciA9ICItZm9taXQtZnJhbWUtcG9pbnRlciIsCk9wdGltaXplICAgICAgID0gIi1PMiIsCk9wdGltaXplU2l6ZSAgID0gIi1PcyIsCk9wdGltaXplU3BlZWQgID0gIi1PMyIsClN5bWJvbHMgICAgICAgID0gIi1nIiwKfQpsb2NhbCBjeHhmbGFncyA9CnsKTm9FeGNlcHRpb25zICAgPSAiLWZuby1leGNlcHRpb25zIiwKTm9SVFRJICAgICAgICAgPSAiLWZuby1ydHRpIiwKfQpwcmVtYWtlLmdjYy5wbGF0Zm9ybXMgPQp7Ck5hdGl2ZSA9IHsKY3BwZmxhZ3MgPSAiLU1NRCIsCn0sCngzMiA9IHsKY3BwZmxhZ3MgPSAiLU1NRCIsCmZsYWdzICAgID0gIi1tMzIiLApsZGZsYWdzICA9ICItTC91c3IvbGliMzIiLAp9LAp4NjQgPSB7CmNwcGZsYWdzID0gIi1NTUQiLApmbGFncyAgICA9ICItbTY0IiwKbGRmbGFncyAgPSAiLUwvdXNyL2xpYjY0IiwKfSwKVW5pdmVyc2FsID0gewpjcHBmbGFncyA9ICIiLApmbGFncyAgICA9ICItYXJjaCBpMzg2IC1hcmNoIHg4Nl82NCAtYXJjaCBwcGMgLWFyY2ggcHBjNjQiLAp9LApVbml2ZXJzYWwzMiA9IHsKY3BwZmxhZ3MgPSAiIiwKZmxhZ3MgICAgPSAiLWFyY2ggaTM4NiAtYXJjaCBwcGMiLAp9LApVbml2ZXJzYWw2NCA9IHsKY3BwZmxhZ3MgPSAiIiwKZmxhZ3MgICAgPSAiLWFyY2ggeDg2XzY0IC1hcmNoIHBwYzY0IiwKfSwKUFMzID0gewpjYyAgICAgICAgID0gInBwdS1sdjItZysrIiwKY3h4ICAgICAgICA9ICJwcHUtbHYyLWcrKyIsCmFyICAgICAgICAgPSAicHB1LWx2Mi1hciIsCmNwcGZsYWdzICAgPSAiLU1NRCIsCn0sCldpaURldiA9IHsKY3BwZmxhZ3MgICAgPSAiLU1NRCAtTVAgLUkkKExJQk9HQ19JTkMpICQoTUFDSERFUCkiLApsZGZsYWdzPSAiLUwkKExJQk9HQ19MSUIpICQoTUFDSERFUCkiLApjZmdzZXR0aW5ncyA9IFtbCiAgaWZlcSAoJChzdHJpcCAkKERFVktJVFBQQykpLCkKICAgICQoZXJyb3IgIkRFVktJVFBQQyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0IiknCiAgZW5kaWYKICBpbmNsdWRlICQoREVWS0lUUFBDKS93aWlfcnVsZXMnXV0sCn0sCn0KbG9jYWwgcGxhdGZvcm1zID0gcHJlbWFrZS5nY2MucGxhdGZvcm1zCmZ1bmN0aW9uIHByZW1ha2UuZ2NjLmdldGNwcGZsYWdzKGNmZykKbG9jYWwgZmxhZ3MgPSB7IH0KdGFibGUuaW5zZXJ0KGZsYWdzLCBwbGF0Zm9ybXNbY2ZnLnBsYXRmb3JtXS5jcHBmbGFncykKaWYgZmxhZ3NbMV06c3RhcnRzd2l0aCgiLU1NRCIpIGFuZCBjZmcuc3lzdGVtIH49ICJoYWlrdSIgdGhlbgp0YWJsZS5pbnNlcnQoZmxhZ3MsICItTVAiKQplbmQKcmV0dXJuIGZsYWdzCmVuZApmdW5jdGlvbiBwcmVtYWtlLmdjYy5nZXRjZmxhZ3MoY2ZnKQpsb2NhbCByZXN1bHQgPSB0YWJsZS50cmFuc2xhdGUoY2ZnLmZsYWdzLCBjZmxhZ3MpCnRhYmxlLmluc2VydChyZXN1bHQsIHBsYXRmb3Jtc1tjZmcucGxhdGZvcm1dLmZsYWdzKQppZiBjZmcuc3lzdGVtIH49ICJ3aW5kb3dzIiBhbmQgY2ZnLmtpbmQgPT0gIlNoYXJlZExpYiIgdGhlbgp0YWJsZS5pbnNlcnQocmVzdWx0LCAiLWZQSUMiKQplbmQKcmV0dXJuIHJlc3VsdAplbmQKZnVuY3Rpb24gcHJlbWFrZS5nY2MuZ2V0Y3h4ZmxhZ3MoY2ZnKQpsb2NhbCByZXN1bHQgPSB0YWJsZS50cmFuc2xhdGUoY2ZnLmZsYWdzLCBjeHhmbGFncykKcmV0dXJuIHJlc3VsdAplbmQKZnVuY3Rpb24gcHJlbWFrZS5nY2MuZ2V0bGRmbGFncyhjZmcpCmxvY2FsIHJlc3VsdCA9IHsgfQppZiBub3QgY2ZnLmZsYWdzLlN5bWJvbHMgdGhlbgppZiBjZmcuc3lzdGVtID09ICJtYWNvc3giIHRoZW4KdGFibGUuaW5zZXJ0KHJlc3VsdCwgIi1XbCwteCIpCmVsc2UKdGFibGUuaW5zZXJ0KHJlc3VsdCwgIi1zIikKZW5kCmVuZAppZiBjZmcua2luZCA9PSAiU2hhcmVkTGliIiB0aGVuCmlmIGNmZy5zeXN0ZW0gPT0gIm1hY29zeCIgdGhlbgp0YWJsZS5pbnNlcnQocmVzdWx0LCAiLWR5bmFtaWNsaWIiKQplbHNlCnRhYmxlLmluc2VydChyZXN1bHQsICItc2hhcmVkIikKZW5kCmlmIGNmZy5zeXN0ZW0gPT0gIndpbmRvd3MiIGFuZCBub3QgY2ZnLmZsYWdzLk5vSW1wb3J0TGliIHRoZW4KdGFibGUuaW5zZXJ0KHJlc3VsdCwgJy1XbCwtLW91dC1pbXBsaWI9IicgLi4gY2ZnLmxpbmt0YXJnZXQuZnVsbHBhdGggLi4gJyInKQplbmQKZW5kCmlmIGNmZy5raW5kID09ICJXaW5kb3dlZEFwcCIgYW5kIGNmZy5zeXN0ZW0gPT0gIndpbmRvd3MiIHRoZW4KdGFibGUuaW5zZXJ0KHJlc3VsdCwgIi1td2luZG93cyIpCmVuZApsb2NhbCBwbGF0Zm9ybSA9IHBsYXRmb3Jtc1tjZmcucGxhdGZvcm1dCnRhYmxlLmluc2VydChyZXN1bHQsIHBsYXRmb3JtLmZsYWdzKQp0YWJsZS5pbnNlcnQocmVzdWx0LCBwbGF0Zm9ybS5sZGZsYWdzKQpyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwcmVtYWtlLmdjYy5nZXRsaWJkaXJmbGFncyhjZmcpCmxvY2FsIHJlc3VsdCA9IHsgfQpmb3IgXywgdmFsdWUgaW4gaXBhaXJzKHByZW1ha2UuZ2V0bGlua3MoY2ZnLCAiYWxsIiwgImRpcmVjdG9yeSIpKSBkbwp0YWJsZS5pbnNlcnQocmVzdWx0LCAnLUwnIC4uIF9NQUtFLmVzYyh2YWx1ZSkpCmVuZApyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwcmVtYWtlLmdjYy5nZXRsaW5rZmxhZ3MoY2ZnKQpsb2NhbCByZXN1bHQgPSB7fQpmb3IgXywgdmFsdWUgaW4gaXBhaXJzKHByZW1ha2UuZ2V0bGlua3MoY2ZnLCAic3lzdGVtIiwgIm5hbWUiKSkgZG8KaWYgcGF0aC5nZXRleHRlbnNpb24odmFsdWUpID09ICIuZnJhbWV3b3JrIiB0aGVuCnRhYmxlLmluc2VydChyZXN1bHQsICctZnJhbWV3b3JrICcgLi4gX01BS0UuZXNjKHBhdGguZ2V0YmFzZW5hbWUodmFsdWUpKSkKZWxzZQp0YWJsZS5pbnNlcnQocmVzdWx0LCAnLWwnIC4uIF9NQUtFLmVzYyh2YWx1ZSkpCmVuZAplbmQKcmV0dXJuIHJlc3VsdAplbmQKZnVuY3Rpb24gcHJlbWFrZS5nY2MuZ2V0ZGVmaW5lcyhkZWZpbmVzKQpsb2NhbCByZXN1bHQgPSB7IH0KZm9yIF8sZGVmIGluIGlwYWlycyhkZWZpbmVzKSBkbwp0YWJsZS5pbnNlcnQocmVzdWx0LCAnLUQnIC4uIGRlZikKZW5kCnJldHVybiByZXN1bHQKZW5kCmZ1bmN0aW9uIHByZW1ha2UuZ2NjLmdldGluY2x1ZGVkaXJzKGluY2x1ZGVkaXJzKQpsb2NhbCByZXN1bHQgPSB7IH0KZm9yIF8sZGlyIGluIGlwYWlycyhpbmNsdWRlZGlycykgZG8KdGFibGUuaW5zZXJ0KHJlc3VsdCwgIi1JIiAuLiBfTUFLRS5lc2MoZGlyKSkKZW5kCnJldHVybiByZXN1bHQKZW5kCmZ1bmN0aW9uIHByZW1ha2UuZ2NjLmdldGNmZ3NldHRpbmdzKGNmZykKcmV0dXJuIHBsYXRmb3Jtc1tjZmcucGxhdGZvcm1dLmNmZ3NldHRpbmdzCmVuZAoAcHJlbWFrZS5tc2MgPSB7IH0KcHJlbWFrZS5tc2MubmFtZXN0eWxlID0gIndpbmRvd3MiCgBwcmVtYWtlLm93ID0geyB9CnByZW1ha2Uub3cubmFtZXN0eWxlID0gIndpbmRvd3MiCnByZW1ha2Uub3cuY2MgICAgID0gIldDTDM4NiIKcHJlbWFrZS5vdy5jeHggICAgPSAiV0NMMzg2IgpwcmVtYWtlLm93LmFyICAgICA9ICJhciIKbG9jYWwgY2ZsYWdzID0KewpFeHRyYVdhcm5pbmdzICA9ICItd3giLApGYXRhbFdhcm5pbmcgICA9ICItd2UiLApGbG9hdEZhc3QgICAgICA9ICItb21uIiwKRmxvYXRTdHJpY3QgICAgPSAiLW9wIiwKT3B0aW1pemUgICAgICAgPSAiLW94IiwKT3B0aW1pemVTaXplICAgPSAiLW9zIiwKT3B0aW1pemVTcGVlZCAgPSAiLW90IiwKU3ltYm9scyAgICAgICAgPSAiLWQyIiwKfQpsb2NhbCBjeHhmbGFncyA9CnsKTm9FeGNlcHRpb25zICAgPSAiLXhkIiwKTm9SVFRJICAgICAgICAgPSAiLXhyIiwKfQpwcmVtYWtlLm93LnBsYXRmb3JtcyA9IAp7Ck5hdGl2ZSA9IHsgCmZsYWdzID0gIiIgCn0sCn0KZnVuY3Rpb24gcHJlbWFrZS5vdy5nZXRjcHBmbGFncyhjZmcpCnJldHVybiB7fQplbmQKZnVuY3Rpb24gcHJlbWFrZS5vdy5nZXRjZmxhZ3MoY2ZnKQpsb2NhbCByZXN1bHQgPSB0YWJsZS50cmFuc2xhdGUoY2ZnLmZsYWdzLCBjZmxhZ3MpCmlmIChjZmcuZmxhZ3MuU3ltYm9scykgdGhlbgp0YWJsZS5pbnNlcnQocmVzdWx0LCAiLWh3IikgICAtLSBXYXRjb20gZGVidWcgZm9ybWF0IGZvciBXYXRjb20gZGVidWdnZXIKZW5kCnJldHVybiByZXN1bHQKZW5kCmZ1bmN0aW9uIHByZW1ha2Uub3cuZ2V0Y3h4ZmxhZ3MoY2ZnKQpsb2NhbCByZXN1bHQgPSB0YWJsZS50cmFuc2xhdGUoY2ZnLmZsYWdzLCBjeHhmbGFncykKcmV0dXJuIHJlc3VsdAplbmQKZnVuY3Rpb24gcHJlbWFrZS5vdy5nZXRsZGZsYWdzKGNmZykKbG9jYWwgcmVzdWx0ID0geyB9CmlmIChjZmcuZmxhZ3MuU3ltYm9scykgdGhlbgp0YWJsZS5pbnNlcnQocmVzdWx0LCAib3Agc3ltZiIpCmVuZApyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwcmVtYWtlLm93LmdldGxpbmtmbGFncyhjZmcpCmxvY2FsIHJlc3VsdCA9IHsgfQpyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwcmVtYWtlLm93LmdldGRlZmluZXMoZGVmaW5lcykKbG9jYWwgcmVzdWx0ID0geyB9CmZvciBfLGRlZiBpbiBpcGFpcnMoZGVmaW5lcykgZG8KdGFibGUuaW5zZXJ0KHJlc3VsdCwgJy1EJyAuLiBkZWYpCmVuZApyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwcmVtYWtlLm93LmdldGluY2x1ZGVkaXJzKGluY2x1ZGVkaXJzKQpsb2NhbCByZXN1bHQgPSB7IH0KZm9yIF8sZGlyIGluIGlwYWlycyhpbmNsdWRlZGlycykgZG8KdGFibGUuaW5zZXJ0KHJlc3VsdCwgJy1JICInIC4uIGRpciAuLiAnIicpCmVuZApyZXR1cm4gcmVzdWx0CmVuZAoAcHJlbWFrZS5zbmMgPSB7IH0KcHJlbWFrZS5zbmMuY2MgICAgID0gInNuYyIKcHJlbWFrZS5zbmMuY3h4ICAgID0gImcrKyIKcHJlbWFrZS5zbmMuYXIgICAgID0gImFyIgpsb2NhbCBjZmxhZ3MgPQp7CkV4dHJhV2FybmluZ3MgID0gIi1YZGlhZz0yIiwKRmF0YWxXYXJuaW5ncyAgPSAiLVhxdWl0PTIiLAp9CmxvY2FsIGN4eGZsYWdzID0KewpOb0V4Y2VwdGlvbnMgICA9ICIiLCAtLSBObyBleGNlcHRpb25zIGlzIHRoZSBkZWZhdWx0IGluIHRoZSBTTkMgY29tcGlsZXIuCk5vUlRUSSAgICAgICAgID0gIi1YYy09cnR0aSIsCn0KcHJlbWFrZS5zbmMucGxhdGZvcm1zID0gCnsKUFMzID0gewpjYyAgICAgICAgID0gInBwdS1sdjItZysrIiwKY3h4ICAgICAgICA9ICJwcHUtbHYyLWcrKyIsCmFyICAgICAgICAgPSAicHB1LWx2Mi1hciIsCmNwcGZsYWdzICAgPSAiLU1NRCAtTVAiLAp9Cn0KbG9jYWwgcGxhdGZvcm1zID0gcHJlbWFrZS5zbmMucGxhdGZvcm1zCmZ1bmN0aW9uIHByZW1ha2Uuc25jLmdldGNwcGZsYWdzKGNmZykKbG9jYWwgcmVzdWx0ID0geyB9CnRhYmxlLmluc2VydChyZXN1bHQsIHBsYXRmb3Jtc1tjZmcucGxhdGZvcm1dLmNwcGZsYWdzKQpyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwcmVtYWtlLnNuYy5nZXRjZmxhZ3MoY2ZnKQpsb2NhbCByZXN1bHQgPSB0YWJsZS50cmFuc2xhdGUoY2ZnLmZsYWdzLCBjZmxhZ3MpCnRhYmxlLmluc2VydChyZXN1bHQsIHBsYXRmb3Jtc1tjZmcucGxhdGZvcm1dLmZsYWdzKQppZiBjZmcua2luZCA9PSAiU2hhcmVkTGliIiB0aGVuCnRhYmxlLmluc2VydChyZXN1bHQsICItZlBJQyIpCmVuZApyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwcmVtYWtlLnNuYy5nZXRjeHhmbGFncyhjZmcpCmxvY2FsIHJlc3VsdCA9IHRhYmxlLnRyYW5zbGF0ZShjZmcuZmxhZ3MsIGN4eGZsYWdzKQpyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwcmVtYWtlLnNuYy5nZXRsZGZsYWdzKGNmZykKbG9jYWwgcmVzdWx0ID0geyB9CmlmIG5vdCBjZmcuZmxhZ3MuU3ltYm9scyB0aGVuCnRhYmxlLmluc2VydChyZXN1bHQsICItcyIpCmVuZAppZiBjZmcua2luZCA9PSAiU2hhcmVkTGliIiB0aGVuCnRhYmxlLmluc2VydChyZXN1bHQsICItc2hhcmVkIikKaWYgbm90IGNmZy5mbGFncy5Ob0ltcG9ydExpYiB0aGVuCnRhYmxlLmluc2VydChyZXN1bHQsICctV2wsLS1vdXQtaW1wbGliPSInIC4uIGNmZy5saW5rdGFyZ2V0LmZ1bGxwYXRoIC4uICciJykKZW5kCmVuZApsb2NhbCBwbGF0Zm9ybSA9IHBsYXRmb3Jtc1tjZmcucGxhdGZvcm1dCnRhYmxlLmluc2VydChyZXN1bHQsIHBsYXRmb3JtLmZsYWdzKQp0YWJsZS5pbnNlcnQocmVzdWx0LCBwbGF0Zm9ybS5sZGZsYWdzKQpyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwcmVtYWtlLnNuYy5nZXRsaWJkaXJmbGFncyhjZmcpCmxvY2FsIHJlc3VsdCA9IHsgfQpmb3IgXywgdmFsdWUgaW4gaXBhaXJzKHByZW1ha2UuZ2V0bGlua3MoY2ZnLCAiYWxsIiwgImRpcmVjdG9yeSIpKSBkbwp0YWJsZS5pbnNlcnQocmVzdWx0LCAnLUwnIC4uIF9NQUtFLmVzYyh2YWx1ZSkpCmVuZApyZXR1cm4gcmVzdWx0CmVuZApmdW5jdGlvbiBwcmVtYWtlLnNuYy5nZXRsaW5rZmxhZ3MoY2ZnKQpsb2NhbCByZXN1bHQgPSB7fQpmb3IgXywgdmFsdWUgaW4gaXBhaXJzKHByZW1ha2UuZ2V0bGlua3MoY2ZnLCAic3lzdGVtIiwgIm5hbWUiKSkgZG8KdGFibGUuaW5zZXJ0KHJlc3VsdCwgJy1sJyAuLiBfTUFLRS5lc2ModmFsdWUpKQplbmQKcmV0dXJuIHJlc3VsdAplbmQKZnVuY3Rpb24gcHJlbWFrZS5zbmMuZ2V0ZGVmaW5lcyhkZWZpbmVzKQpsb2NhbCByZXN1bHQgPSB7IH0KZm9yIF8sZGVmIGluIGlwYWlycyhkZWZpbmVzKSBkbwp0YWJsZS5pbnNlcnQocmVzdWx0LCAnLUQnIC4uIGRlZikKZW5kCnJldHVybiByZXN1bHQKZW5kCmZ1bmN0aW9uIHByZW1ha2Uuc25jLmdldGluY2x1ZGVkaXJzKGluY2x1ZGVkaXJzKQpsb2NhbCByZXN1bHQgPSB7IH0KZm9yIF8sZGlyIGluIGlwYWlycyhpbmNsdWRlZGlycykgZG8KdGFibGUuaW5zZXJ0KHJlc3VsdCwgIi1JIiAuLiBfTUFLRS5lc2MoZGlyKSkKZW5kCnJldHVybiByZXN1bHQKZW5kCgBmdW5jdGlvbiBwcmVtYWtlLmNoZWNrcHJvamVjdHMoKQpsb2NhbCBhY3Rpb24gPSBwcmVtYWtlLmFjdGlvbi5jdXJyZW50KCkKZm9yIHNsbiBpbiBwcmVtYWtlLnNvbHV0aW9uLmVhY2goKSBkbwppZiAoI3Nsbi5wcm9qZWN0cyA9PSAwKSB0aGVuCnJldHVybiBuaWwsICJzb2x1dGlvbiAnIiAuLiBzbG4ubmFtZSAuLiAiJyBuZWVkcyBhdCBsZWFzdCBvbmUgcHJvamVjdCIKZW5kCmlmICgjc2xuLmNvbmZpZ3VyYXRpb25zID09IDApIHRoZW4KcmV0dXJuIG5pbCwgInNvbHV0aW9uICciIC4uIHNsbi5uYW1lIC4uICInIG5lZWRzIGNvbmZpZ3VyYXRpb25zIgplbmQKZm9yIHByaiBpbiBwcmVtYWtlLnNvbHV0aW9uLmVhY2hwcm9qZWN0KHNsbikgZG8KaWYgKG5vdCBwcmoubGFuZ3VhZ2UpIHRoZW4KcmV0dXJuIG5pbCwgInByb2plY3QgJyIgLi5wcmoubmFtZSAuLiAiJyBuZWVkcyBhIGxhbmd1YWdlIgplbmQKaWYgKGFjdGlvbi52YWxpZF9sYW5ndWFnZXMpIHRoZW4KaWYgKG5vdCB0YWJsZS5jb250YWlucyhhY3Rpb24udmFsaWRfbGFuZ3VhZ2VzLCBwcmoubGFuZ3VhZ2UpKSB0aGVuCnJldHVybiBuaWwsICJ0aGUgIiAuLiBhY3Rpb24uc2hvcnRuYW1lIC4uICIgYWN0aW9uIGRvZXMgbm90IHN1cHBvcnQgIiAuLiBwcmoubGFuZ3VhZ2UgLi4gIiBwcm9qZWN0cyIKZW5kCmVuZApmb3IgY2ZnIGluIHByZW1ha2UuZWFjaGNvbmZpZyhwcmopIGRvCmlmIChub3QgY2ZnLmtpbmQpIHRoZW4KcmV0dXJuIG5pbCwgInByb2plY3QgJyIgLi5wcmoubmFtZSAuLiAiJyBuZWVkcyBhIGtpbmQgaW4gY29uZmlndXJhdGlvbiAnIiAuLiBjZmcubmFtZSAuLiAiJyIKZW5kCmlmIChhY3Rpb24udmFsaWRfa2luZHMpIHRoZW4KaWYgKG5vdCB0YWJsZS5jb250YWlucyhhY3Rpb24udmFsaWRfa2luZHMsIGNmZy5raW5kKSkgdGhlbgpyZXR1cm4gbmlsLCAidGhlICIgLi4gYWN0aW9uLnNob3J0bmFtZSAuLiAiIGFjdGlvbiBkb2VzIG5vdCBzdXBwb3J0ICIgLi4gY2ZnLmtpbmQgLi4gIiBwcm9qZWN0cyIKZW5kCmVuZAplbmQKaWYgYWN0aW9uLm9uY2hlY2twcm9qZWN0IHRoZW4KYWN0aW9uLm9uY2hlY2twcm9qZWN0KHByaikKZW5kCmVuZAplbmQKcmV0dXJuIHRydWUKZW5kCmZ1bmN0aW9uIHByZW1ha2UuY2hlY2t0b29scygpCmxvY2FsIGFjdGlvbiA9IHByZW1ha2UuYWN0aW9uLmN1cnJlbnQoKQppZiAobm90IGFjdGlvbi52YWxpZF90b29scykgdGhlbiAKcmV0dXJuIHRydWUgCmVuZApmb3IgdG9vbCwgdmFsdWVzIGluIHBhaXJzKGFjdGlvbi52YWxpZF90b29scykgZG8KaWYgKF9PUFRJT05TW3Rvb2xdKSB0aGVuCmlmIChub3QgdGFibGUuY29udGFpbnModmFsdWVzLCBfT1BUSU9OU1t0b29sXSkpIHRoZW4KcmV0dXJuIG5pbCwgInRoZSAiIC4uIGFjdGlvbi5zaG9ydG5hbWUgLi4gIiBhY3Rpb24gZG9lcyBub3Qgc3VwcG9ydCAvIiAuLiB0b29sIC4uICI9IiAuLiBfT1BUSU9OU1t0b29sXSAuLiAiICh5ZXQpIgplbmQKZWxzZQpfT1BUSU9OU1t0b29sXSA9IHZhbHVlc1sxXQplbmQKZW5kCnJldHVybiB0cnVlCmVuZAoAZnVuY3Rpb24gcHJlbWFrZS5zaG93aGVscCgpCnByaW50ZigiUHJlbWFrZSAlcywgYSBidWlsZCBzY3JpcHQgZ2VuZXJhdG9yIiwgX1BSRU1BS0VfVkVSU0lPTikKcHJpbnRmKF9QUkVNQUtFX0NPUFlSSUdIVCkKcHJpbnRmKCIlcyAlcyIsIF9WRVJTSU9OLCBfQ09QWVJJR0hUKQpwcmludGYoIiIpCnByaW50ZigiVXNhZ2U6IHByZW1ha2U0IFtvcHRpb25zXSBhY3Rpb24gW2FyZ3VtZW50c10iKQpwcmludGYoIiIpCnByaW50ZigiT1BUSU9OUyIpCnByaW50ZigiIikKZm9yIG9wdGlvbiBpbiBwcmVtYWtlLm9wdGlvbi5lYWNoKCkgZG8KbG9jYWwgdHJpZ2dlciA9IG9wdGlvbi50cmlnZ2VyCmxvY2FsIGRlc2NyaXB0aW9uID0gb3B0aW9uLmRlc2NyaXB0aW9uCmlmIChvcHRpb24udmFsdWUpIHRoZW4gdHJpZ2dlciA9IHRyaWdnZXIgLi4gIj0iIC4uIG9wdGlvbi52YWx1ZSBlbmQKaWYgKG9wdGlvbi5hbGxvd2VkKSB0aGVuIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gLi4gIjsgb25lIG9mOiIgZW5kCnByaW50ZigiIC0tJS0xNXMgJXMiLCB0cmlnZ2VyLCBkZXNjcmlwdGlvbikgCmlmIChvcHRpb24uYWxsb3dlZCkgdGhlbgpmb3IgXywgdmFsdWUgaW4gaXBhaXJzKG9wdGlvbi5hbGxvd2VkKSBkbwpwcmludGYoIiAgICAgJS0xNHMgJXMiLCB2YWx1ZVsxXSwgdmFsdWVbMl0pCmVuZAplbmQKcHJpbnRmKCIiKQplbmQKcHJpbnRmKCJBQ1RJT05TIikKcHJpbnRmKCIiKQpmb3IgYWN0aW9uIGluIHByZW1ha2UuYWN0aW9uLmVhY2goKSBkbwpwcmludGYoIiAlLTE3cyAlcyIsIGFjdGlvbi50cmlnZ2VyLCBhY3Rpb24uZGVzY3JpcHRpb24pCmVuZApwcmludGYoIiIpCnByaW50ZigiRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vaW5kdXN0cmlvdXNvbmUuY29tL3ByZW1ha2UiKQplbmQKAGZ1bmN0aW9uIHByZW1ha2UuZ2VuZXJhdGUob2JqLCBmaWxlbmFtZSwgY2FsbGJhY2spCmZpbGVuYW1lID0gcHJlbWFrZS5wcm9qZWN0LmdldGZpbGVuYW1lKG9iaiwgZmlsZW5hbWUpCnByaW50ZigiR2VuZXJhdGluZyAlcy4uLiIsIGZpbGVuYW1lKQpsb2NhbCBmLCBlcnIgPSBpby5vcGVuKGZpbGVuYW1lLCAid2IiKQppZiAobm90IGYpIHRoZW4KZXJyb3IoZXJyLCAwKQplbmQKaW8ub3V0cHV0KGYpCmNhbGxiYWNrKG9iaikKZjpjbG9zZSgpCmVuZAoAcHJlbWFrZS5jb2RlYmxvY2tzID0geyB9Cm5ld2FjdGlvbiB7CnRyaWdnZXIgICAgICAgICA9ICJjb2RlYmxvY2tzIiwKc2hvcnRuYW1lICAgICAgID0gIkNvZGU6OkJsb2NrcyIsCmRlc2NyaXB0aW9uICAgICA9ICJHZW5lcmF0ZSBDb2RlOjpCbG9ja3MgcHJvamVjdCBmaWxlcyIsCnZhbGlkX2tpbmRzICAgICA9IHsgIkNvbnNvbGVBcHAiLCAiV2luZG93ZWRBcHAiLCAiU3RhdGljTGliIiwgIlNoYXJlZExpYiIgfSwKdmFsaWRfbGFuZ3VhZ2VzID0geyAiQyIsICJDKysiIH0sCnZhbGlkX3Rvb2xzICAgICA9IHsKY2MgICA9IHsgImdjYyIsICJvdyIgfSwKfSwKb25zb2x1dGlvbiA9IGZ1bmN0aW9uKHNsbikKcHJlbWFrZS5nZW5lcmF0ZShzbG4sICIlJS53b3Jrc3BhY2UiLCBwcmVtYWtlLmNvZGVibG9ja3Mud29ya3NwYWNlKQplbmQsCm9ucHJvamVjdCA9IGZ1bmN0aW9uKHByaikKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS5jYnAiLCBwcmVtYWtlLmNvZGVibG9ja3MuY2JwKQplbmQsCm9uY2xlYW5zb2x1dGlvbiA9IGZ1bmN0aW9uKHNsbikKcHJlbWFrZS5jbGVhbi5maWxlKHNsbiwgIiUlLndvcmtzcGFjZSIpCmVuZCwKb25jbGVhbnByb2plY3QgPSBmdW5jdGlvbihwcmopCnByZW1ha2UuY2xlYW4uZmlsZShwcmosICIlJS5jYnAiKQpwcmVtYWtlLmNsZWFuLmZpbGUocHJqLCAiJSUuZGVwZW5kIikKcHJlbWFrZS5jbGVhbi5maWxlKHByaiwgIiUlLmxheW91dCIpCmVuZAp9CgBmdW5jdGlvbiBwcmVtYWtlLmNvZGVibG9ja3Mud29ya3NwYWNlKHNsbikKX3AoJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiID8+JykKX3AoJzxDb2RlQmxvY2tzX3dvcmtzcGFjZV9maWxlPicpCl9wKDEsJzxXb3Jrc3BhY2UgdGl0bGU9IiVzIj4nLCBzbG4ubmFtZSkKZm9yIHByaiBpbiBwcmVtYWtlLnNvbHV0aW9uLmVhY2hwcm9qZWN0KHNsbikgZG8KbG9jYWwgZm5hbWUgPSBwYXRoLmpvaW4ocGF0aC5nZXRyZWxhdGl2ZShzbG4ubG9jYXRpb24sIHByai5sb2NhdGlvbiksIHByai5uYW1lKQpsb2NhbCBhY3RpdmUgPSBpaWYocHJqLnByb2plY3QgPT0gc2xuLnByb2plY3RzWzFdLCAnIGFjdGl2ZT0iMSInLCAnJykKX3AoMiwnPFByb2plY3QgZmlsZW5hbWU9IiVzLmNicCIlcz4nLCBmbmFtZSwgYWN0aXZlKQpmb3IgXyxkZXAgaW4gaXBhaXJzKHByZW1ha2UuZ2V0ZGVwZW5kZW5jaWVzKHByaikpIGRvCl9wKDMsJzxEZXBlbmRzIGZpbGVuYW1lPSIlcy5jYnAiIC8+JywgcGF0aC5qb2luKHBhdGguZ2V0cmVsYXRpdmUoc2xuLmxvY2F0aW9uLCBkZXAubG9jYXRpb24pLCBkZXAubmFtZSkpCmVuZApfcCgyLCc8L1Byb2plY3Q+JykKZW5kCl9wKDEsJzwvV29ya3NwYWNlPicpCl9wKCc8L0NvZGVCbG9ja3Nfd29ya3NwYWNlX2ZpbGU+JykKZW5kCgBsb2NhbCBjb2RlYmxvY2tzID0gcHJlbWFrZS5jb2RlYmxvY2tzCmZ1bmN0aW9uIGNvZGVibG9ja3MuZmlsZXMocHJqKQpsb2NhbCBwY2hoZWFkZXIKaWYgKHByai5wY2hoZWFkZXIpIHRoZW4KcGNoaGVhZGVyID0gcGF0aC5nZXRyZWxhdGl2ZShwcmoubG9jYXRpb24sIHByai5wY2hoZWFkZXIpCmVuZApmb3IgZmNmZyBpbiBwcmVtYWtlLnByb2plY3QuZWFjaGZpbGUocHJqKSBkbwpfcCgyLCc8VW5pdCBmaWxlbmFtZT0iJXMiPicsIHByZW1ha2UuZXNjKGZjZmcubmFtZSkpCmlmIGZjZmcubmFtZSB+PSBmY2ZnLnZwYXRoIHRoZW4KX3AoMywnPE9wdGlvbiB2aXJ0dWFsRm9sZGVyPSIlcyIgLz4nLCBwYXRoLmdldGRpcmVjdG9yeShmY2ZnLnZwYXRoKSkKZW5kCmlmIHBhdGguaXNyZXNvdXJjZWZpbGUoZmNmZy5uYW1lKSB0aGVuCl9wKDMsJzxPcHRpb24gY29tcGlsZXJWYXI9IldJTkRSRVMiIC8+JykKZWxzZWlmIHBhdGguaXNjZmlsZShmY2ZnLm5hbWUpIGFuZCBwcmoubGFuZ3VhZ2UgPT0gIkMrKyIgdGhlbgpfcCgzLCc8T3B0aW9uIGNvbXBpbGVyVmFyPSJDQyIgLz4nKQplbmQKaWYgbm90IHByai5mbGFncy5Ob1BDSCBhbmQgZmNmZy5uYW1lID09IHBjaGhlYWRlciB0aGVuCl9wKDMsJzxPcHRpb24gY29tcGlsZXJWYXI9IiVzIiAvPicsIGlpZihwcmoubGFuZ3VhZ2UgPT0gIkMiLCAiQ0MiLCAiQ1BQIikpCl9wKDMsJzxPcHRpb24gY29tcGlsZT0iMSIgLz4nKQpfcCgzLCc8T3B0aW9uIHdlaWdodD0iMCIgLz4nKQpfcCgzLCc8QWRkIG9wdGlvbj0iLXggYysrLWhlYWRlciIgLz4nKQplbmQKX3AoMiwnPC9Vbml0PicpCmVuZAplbmQKZnVuY3Rpb24gcHJlbWFrZS5jb2RlYmxvY2tzLmRlYnVnZW52cyhjZmcpCmlmIHByZW1ha2UuZ2V0dG9vbChjZmcpID09IHByZW1ha2UuZ2NjIHRoZW4KX3AoMywnPGRlYnVnZ2VyPicpCl9wKDQsJzxyZW1vdGVfZGVidWdnaW5nIHRhcmdldD0iJXMiPicsIHByZW1ha2UuZXNjKGNmZy5sb25nbmFtZSkpCmxvY2FsIGFyZ3MgPSAnJwpsb2NhbCBzeiA9ICNjZmcuZGVidWdlbnZzCmZvciBpZHgsIHYgaW4gaXBhaXJzKGNmZy5kZWJ1Z2VudnMpIGRvCmFyZ3MgPSBhcmdzIC4uICdzZXQgZW52ICcgLi4gdiAKaWYgc3ogfj0gaWR4IHRoZW4gYXJncyA9IGFyZ3MgLi4gJyYjeDBBOycgZW5kCmVuZApfcCg1LCc8b3B0aW9ucyBhZGRpdGlvbmFsX2NtZHNfYmVmb3JlPSIlcyIgLz4nLGFyZ3MpCl9wKDQsJzwvcmVtb3RlX2RlYnVnZ2luZz4nKQpfcCgzLCc8L2RlYnVnZ2VyPicpCmVsc2UKIGVycm9yKCdTb3JyeSBhdCB0aGlzIG1vbWVudCB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBkZWJ1ZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCB0aGlzIGRlYnVnZ2VyIGFuZCBjb2RlYmxvY2tzJykKZW5kCmVuZApmdW5jdGlvbiBwcmVtYWtlLmNvZGVibG9ja3MuY2JwKHByaikKbG9jYWwgY2MgPSBwcmVtYWtlLmdldHRvb2wocHJqKQpfcCgnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyIgPz4nKQpfcCgnPENvZGVCbG9ja3NfcHJvamVjdF9maWxlPicpCl9wKDEsJzxGaWxlVmVyc2lvbiBtYWpvcj0iMSIgbWlub3I9IjYiIC8+JykKX3AoMSwnPFByb2plY3Q+JykKX3AoMiwnPE9wdGlvbiB0aXRsZT0iJXMiIC8+JywgcHJlbWFrZS5lc2MocHJqLm5hbWUpKQpfcCgyLCc8T3B0aW9uIHBjaF9tb2RlPSIyIiAvPicpCl9wKDIsJzxPcHRpb24gY29tcGlsZXI9IiVzIiAvPicsIF9PUFRJT05TLmNjKQpsb2NhbCBwbGF0Zm9ybXMgPSBwcmVtYWtlLmZpbHRlcnBsYXRmb3Jtcyhwcmouc29sdXRpb24sIGNjLnBsYXRmb3JtcywgIk5hdGl2ZSIpCmZvciBpID0gI3BsYXRmb3JtcywgMSwgLTEgZG8KaWYgcHJlbWFrZS5wbGF0Zm9ybXNbcGxhdGZvcm1zW2ldXS5pc2Nyb3NzY29tcGlsZXIgdGhlbgp0YWJsZS5yZW1vdmUocGxhdGZvcm1zLCBpKQplbmQKZW5kIApfcCgyLCc8QnVpbGQ+JykKZm9yIF8sIHBsYXRmb3JtIGluIGlwYWlycyhwbGF0Zm9ybXMpIGRvCmZvciBjZmcgaW4gcHJlbWFrZS5lYWNoY29uZmlnKHByaiwgcGxhdGZvcm0pIGRvCl9wKDMsJzxUYXJnZXQgdGl0bGU9IiVzIj4nLCBwcmVtYWtlLmVzYyhjZmcubG9uZ25hbWUpKQpfcCg0LCc8T3B0aW9uIG91dHB1dD0iJXMiIHByZWZpeF9hdXRvPSIwIiBleHRlbnNpb25fYXV0bz0iMCIgLz4nLCBwcmVtYWtlLmVzYyhjZmcuYnVpbGR0YXJnZXQuZnVsbHBhdGgpKQppZiBjZmcuZGVidWdkaXIgdGhlbgpfcCg0LCc8T3B0aW9uIHdvcmtpbmdfZGlyPSIlcyIgLz4nLCBwcmVtYWtlLmVzYyhjZmcuZGVidWdkaXIpKQplbmQKX3AoNCwnPE9wdGlvbiBvYmplY3Rfb3V0cHV0PSIlcyIgLz4nLCBwcmVtYWtlLmVzYyhjZmcub2JqZWN0c2RpcikpCmxvY2FsIHR5cGVzID0geyBXaW5kb3dlZEFwcCA9IDAsIENvbnNvbGVBcHAgPSAxLCBTdGF0aWNMaWIgPSAyLCBTaGFyZWRMaWIgPSAzIH0KX3AoNCwnPE9wdGlvbiB0eXBlPSIlZCIgLz4nLCB0eXBlc1tjZmcua2luZF0pCl9wKDQsJzxPcHRpb24gY29tcGlsZXI9IiVzIiAvPicsIF9PUFRJT05TLmNjKQppZiAoY2ZnLmtpbmQgPT0gIlNoYXJlZExpYiIpIHRoZW4KX3AoNCwnPE9wdGlvbiBjcmVhdGVEZWZGaWxlPSIwIiAvPicpCl9wKDQsJzxPcHRpb24gY3JlYXRlU3RhdGljTGliPSIlcyIgLz4nLCBpaWYoY2ZnLmZsYWdzLk5vSW1wb3J0TGliLCAwLCAxKSkKZW5kCl9wKDQsJzxDb21waWxlcj4nKQpmb3IgXyxmbGFnIGluIGlwYWlycyh0YWJsZS5qb2luKGNjLmdldGNmbGFncyhjZmcpLCBjYy5nZXRjeHhmbGFncyhjZmcpLCBjYy5nZXRkZWZpbmVzKGNmZy5kZWZpbmVzKSwgY2ZnLmJ1aWxkb3B0aW9ucykpIGRvCl9wKDUsJzxBZGQgb3B0aW9uPSIlcyIgLz4nLCBwcmVtYWtlLmVzYyhmbGFnKSkKZW5kCmlmIG5vdCBjZmcuZmxhZ3MuTm9QQ0ggYW5kIGNmZy5wY2hoZWFkZXIgdGhlbgpfcCg1LCc8QWRkIG9wdGlvbj0iLVdpbnZhbGlkLXBjaCIgLz4nKQpfcCg1LCc8QWRkIG9wdGlvbj0iLWluY2x1ZGUgJnF1b3Q7JXMmcXVvdDsiIC8+JywgcHJlbWFrZS5lc2MoY2ZnLnBjaGhlYWRlcikpCmVuZApmb3IgXyx2IGluIGlwYWlycyhjZmcuaW5jbHVkZWRpcnMpIGRvCl9wKDUsJzxBZGQgZGlyZWN0b3J5PSIlcyIgLz4nLCBwcmVtYWtlLmVzYyh2KSkKZW5kCl9wKDQsJzwvQ29tcGlsZXI+JykKX3AoNCwnPExpbmtlcj4nKQpmb3IgXyxmbGFnIGluIGlwYWlycyh0YWJsZS5qb2luKGNjLmdldGxkZmxhZ3MoY2ZnKSwgY2ZnLmxpbmtvcHRpb25zKSkgZG8KX3AoNSwnPEFkZCBvcHRpb249IiVzIiAvPicsIHByZW1ha2UuZXNjKGZsYWcpKQplbmQKZm9yIF8sdiBpbiBpcGFpcnMocHJlbWFrZS5nZXRsaW5rcyhjZmcsICJhbGwiLCAiZGlyZWN0b3J5IikpIGRvCl9wKDUsJzxBZGQgZGlyZWN0b3J5PSIlcyIgLz4nLCBwcmVtYWtlLmVzYyh2KSkKZW5kCmZvciBfLHYgaW4gaXBhaXJzKHByZW1ha2UuZ2V0bGlua3MoY2ZnLCAiYWxsIiwgImJhc2VuYW1lIikpIGRvCl9wKDUsJzxBZGQgbGlicmFyeT0iJXMiIC8+JywgcHJlbWFrZS5lc2ModikpCmVuZApfcCg0LCc8L0xpbmtlcj4nKQppZiBwcmVtYWtlLmZpbmRmaWxlKGNmZywgIi5yYyIpIHRoZW4KX3AoNCwnPFJlc291cmNlQ29tcGlsZXI+JykKZm9yIF8sdiBpbiBpcGFpcnMoY2ZnLmluY2x1ZGVkaXJzKSBkbwpfcCg1LCc8QWRkIGRpcmVjdG9yeT0iJXMiIC8+JywgcHJlbWFrZS5lc2ModikpCmVuZApmb3IgXyx2IGluIGlwYWlycyhjZmcucmVzaW5jbHVkZWRpcnMpIGRvCl9wKDUsJzxBZGQgZGlyZWN0b3J5PSIlcyIgLz4nLCBwcmVtYWtlLmVzYyh2KSkKZW5kCl9wKDQsJzwvUmVzb3VyY2VDb21waWxlcj4nKQplbmQKaWYgI2NmZy5wcmVidWlsZGNvbW1hbmRzID4gMCBvciAjY2ZnLnBvc3RidWlsZGNvbW1hbmRzID4gMCB0aGVuCl9wKDQsJzxFeHRyYUNvbW1hbmRzPicpCmZvciBfLHYgaW4gaXBhaXJzKGNmZy5wcmVidWlsZGNvbW1hbmRzKSBkbwpfcCg1LCc8QWRkIGJlZm9yZT0iJXMiIC8+JywgcHJlbWFrZS5lc2ModikpCmVuZApmb3IgXyx2IGluIGlwYWlycyhjZmcucG9zdGJ1aWxkY29tbWFuZHMpIGRvCl9wKDUsJzxBZGQgYWZ0ZXI9IiVzIiAvPicsIHByZW1ha2UuZXNjKHYpKQplbmQKX3AoNCwnPC9FeHRyYUNvbW1hbmRzPicpCmVuZApfcCgzLCc8L1RhcmdldD4nKQplbmQKZW5kCl9wKDIsJzwvQnVpbGQ+JykKY29kZWJsb2Nrcy5maWxlcyhwcmopCl9wKDIsJzxFeHRlbnNpb25zPicpCiAgICAgICAgZm9yIF8sIHBsYXRmb3JtIGluIGlwYWlycyhwbGF0Zm9ybXMpIGRvCmZvciBjZmcgaW4gcHJlbWFrZS5lYWNoY29uZmlnKHByaiwgcGxhdGZvcm0pIGRvCmlmIGNmZy5kZWJ1Z2VudnMgYW5kICNjZmcuZGVidWdlbnZzID4gMCB0aGVuCnByZW1ha2UuY29kZWJsb2Nrcy5kZWJ1Z2VudnMoY2ZnKQplbmQKZW5kCmVuZApfcCgyLCc8L0V4dGVuc2lvbnM+JykKX3AoMSwnPC9Qcm9qZWN0PicpCl9wKCc8L0NvZGVCbG9ja3NfcHJvamVjdF9maWxlPicpCl9wKCcnKQplbmQKAHByZW1ha2UuY29kZWxpdGUgPSB7IH0KbmV3YWN0aW9uIHsKdHJpZ2dlciAgICAgICAgID0gImNvZGVsaXRlIiwKc2hvcnRuYW1lICAgICAgID0gIkNvZGVMaXRlIiwKZGVzY3JpcHRpb24gICAgID0gIkdlbmVyYXRlIENvZGVMaXRlIHByb2plY3QgZmlsZXMiLAp2YWxpZF9raW5kcyAgICAgPSB7ICJDb25zb2xlQXBwIiwgIldpbmRvd2VkQXBwIiwgIlN0YXRpY0xpYiIsICJTaGFyZWRMaWIiIH0sCnZhbGlkX2xhbmd1YWdlcyA9IHsgIkMiLCAiQysrIiB9LAp2YWxpZF90b29scyAgICAgPSB7CmNjICAgPSB7ICJnY2MiIH0sCn0sCm9uc29sdXRpb24gPSBmdW5jdGlvbihzbG4pCnByZW1ha2UuZ2VuZXJhdGUoc2xuLCAiJSUud29ya3NwYWNlIiwgcHJlbWFrZS5jb2RlbGl0ZS53b3Jrc3BhY2UpCmVuZCwKb25wcm9qZWN0ID0gZnVuY3Rpb24ocHJqKQpwcmVtYWtlLmdlbmVyYXRlKHByaiwgIiUlLnByb2plY3QiLCBwcmVtYWtlLmNvZGVsaXRlLnByb2plY3QpCmVuZCwKb25jbGVhbnNvbHV0aW9uID0gZnVuY3Rpb24oc2xuKQpwcmVtYWtlLmNsZWFuLmZpbGUoc2xuLCAiJSUud29ya3NwYWNlIikKcHJlbWFrZS5jbGVhbi5maWxlKHNsbiwgIiUlX3dzcC5tayIpCnByZW1ha2UuY2xlYW4uZmlsZShzbG4sICIlJS50YWdzIikKZW5kLApvbmNsZWFucHJvamVjdCA9IGZ1bmN0aW9uKHByaikKcHJlbWFrZS5jbGVhbi5maWxlKHByaiwgIiUlLnByb2plY3QiKQpwcmVtYWtlLmNsZWFuLmZpbGUocHJqLCAiJSUubWsiKQpwcmVtYWtlLmNsZWFuLmZpbGUocHJqLCAiJSUubGlzdCIpCnByZW1ha2UuY2xlYW4uZmlsZShwcmosICIlJS5vdXQiKQplbmQKfQoAZnVuY3Rpb24gcHJlbWFrZS5jb2RlbGl0ZS53b3Jrc3BhY2Uoc2xuKQpfcCgnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4nKQpfcCgnPENvZGVMaXRlX1dvcmtzcGFjZSBOYW1lPSIlcyIgRGF0YWJhc2U9Ii4vJXMudGFncyI+JywgcHJlbWFrZS5lc2Moc2xuLm5hbWUpLCBwcmVtYWtlLmVzYyhzbG4ubmFtZSkpCmZvciBpLHByaiBpbiBpcGFpcnMoc2xuLnByb2plY3RzKSBkbwpsb2NhbCBuYW1lID0gcHJlbWFrZS5lc2MocHJqLm5hbWUpCmxvY2FsIGZuYW1lID0gcGF0aC5qb2luKHBhdGguZ2V0cmVsYXRpdmUoc2xuLmxvY2F0aW9uLCBwcmoubG9jYXRpb24pLCBwcmoubmFtZSkKbG9jYWwgYWN0aXZlID0gaWlmKGk9PTEsICJZZXMiLCAiTm8iKQpfcCgnICA8UHJvamVjdCBOYW1lPSIlcyIgUGF0aD0iJXMucHJvamVjdCIgQWN0aXZlPSIlcyIgLz4nLCBuYW1lLCBmbmFtZSwgYWN0aXZlKQplbmQKbG9jYWwgcGxhdGZvcm1zID0gcHJlbWFrZS5maWx0ZXJwbGF0Zm9ybXMoc2xuLCBwcmVtYWtlW19PUFRJT05TLmNjXS5wbGF0Zm9ybXMsICJOYXRpdmUiKQpmb3IgaSA9ICNwbGF0Zm9ybXMsIDEsIC0xIGRvCmlmIHByZW1ha2UucGxhdGZvcm1zW3BsYXRmb3Jtc1tpXV0uaXNjcm9zc2NvbXBpbGVyIHRoZW4KdGFibGUucmVtb3ZlKHBsYXRmb3JtcywgaSkKZW5kCmVuZCAKX3AoJyAgPEJ1aWxkTWF0cml4PicpCmZvciBfLCBwbGF0Zm9ybSBpbiBpcGFpcnMocGxhdGZvcm1zKSBkbwpmb3IgXywgY2ZnbmFtZSBpbiBpcGFpcnMoc2xuLmNvbmZpZ3VyYXRpb25zKSBkbwpsb2NhbCBuYW1lID0gcHJlbWFrZS5nZXRjb25maWduYW1lKGNmZ25hbWUsIHBsYXRmb3JtKQpfcCgnICAgIDxXb3Jrc3BhY2VDb25maWd1cmF0aW9uIE5hbWU9IiVzIiBTZWxlY3RlZD0ieWVzIj4nLCBuYW1lKQpmb3IgXyxwcmogaW4gaXBhaXJzKHNsbi5wcm9qZWN0cykgZG8KX3AoJyAgICAgIDxQcm9qZWN0IE5hbWU9IiVzIiBDb25maWdOYW1lPSIlcyIvPicsIHByai5uYW1lLCBuYW1lKQplbmQKX3AoJyAgICA8L1dvcmtzcGFjZUNvbmZpZ3VyYXRpb24+JykKZW5kCmVuZApfcCgnICA8L0J1aWxkTWF0cml4PicpCl9wKCc8L0NvZGVMaXRlX1dvcmtzcGFjZT4nKQplbmQKAGxvY2FsIGNvZGVsaXRlID0gcHJlbWFrZS5jb2RlbGl0ZQpsb2NhbCB0cmVlID0gcHJlbWFrZS50cmVlCmZ1bmN0aW9uIGNvZGVsaXRlLmZpbGVzKHByaikKbG9jYWwgdHIgPSBwcmVtYWtlLnByb2plY3QuYnVpbGRzb3VyY2V0cmVlKHByaikKdHJlZS50cmF2ZXJzZSh0ciwgewpvbmJyYW5jaGVudGVyID0gZnVuY3Rpb24obm9kZSwgZGVwdGgpCl9wKGRlcHRoLCAnPFZpcnR1YWxEaXJlY3RvcnkgTmFtZT0iJXMiPicsIG5vZGUubmFtZSkKZW5kLApvbmJyYW5jaGV4aXQgPSBmdW5jdGlvbihub2RlLCBkZXB0aCkKX3AoZGVwdGgsICc8L1ZpcnR1YWxEaXJlY3Rvcnk+JykKZW5kLApvbmxlYWYgPSBmdW5jdGlvbihub2RlLCBkZXB0aCkKX3AoZGVwdGgsICc8RmlsZSBOYW1lPSIlcyIvPicsIG5vZGUuY2ZnLm5hbWUpCmVuZCwKfSwgZmFsc2UsIDEpCmVuZApmdW5jdGlvbiBwcmVtYWtlLmNvZGVsaXRlLnByb2plY3QocHJqKQppby5pbmRlbnQgPSAiICAiCl9wKCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PicpCl9wKCc8Q29kZUxpdGVfUHJvamVjdCBOYW1lPSIlcyI+JywgcHJlbWFrZS5lc2MocHJqLm5hbWUpKQpjb2RlbGl0ZS5maWxlcyhwcmopCmxvY2FsIHR5cGVzID0geyAKQ29uc29sZUFwcCAgPSAiRXhlY3V0YWJsZSIsIApXaW5kb3dlZEFwcCA9ICJFeGVjdXRhYmxlIiwgClN0YXRpY0xpYiAgID0gIlN0YXRpYyBMaWJyYXJ5IiwKU2hhcmVkTGliICAgPSAiRHluYW1pYyBMaWJyYXJ5IiwKfQpfcCgnICA8U2V0dGluZ3MgVHlwZT0iJXMiPicsIHR5cGVzW3Byai5raW5kXSkKbG9jYWwgcGxhdGZvcm1zID0gcHJlbWFrZS5maWx0ZXJwbGF0Zm9ybXMocHJqLnNvbHV0aW9uLCBwcmVtYWtlW19PUFRJT05TLmNjXS5wbGF0Zm9ybXMsICJOYXRpdmUiKQpmb3IgaSA9ICNwbGF0Zm9ybXMsIDEsIC0xIGRvCmlmIHByZW1ha2UucGxhdGZvcm1zW3BsYXRmb3Jtc1tpXV0uaXNjcm9zc2NvbXBpbGVyIHRoZW4KdGFibGUucmVtb3ZlKHBsYXRmb3JtcywgaSkKZW5kCmVuZCAKZm9yIF8sIHBsYXRmb3JtIGluIGlwYWlycyhwbGF0Zm9ybXMpIGRvCmZvciBjZmcgaW4gcHJlbWFrZS5lYWNoY29uZmlnKHByaiwgcGxhdGZvcm0pIGRvCmxvY2FsIG5hbWUgPSBwcmVtYWtlLmVzYyhjZmcubG9uZ25hbWUpCmxvY2FsIGNvbXBpbGVyID0gaWlmKGNmZy5sYW5ndWFnZSA9PSAiQyIsICJnY2MiLCAiZysrIikKX3AoJyAgICA8Q29uZmlndXJhdGlvbiBOYW1lPSIlcyIgQ29tcGlsZXJUeXBlPSJnbnUgJXMiIERlYnVnZ2VyVHlwZT0iR05VIGdkYiBkZWJ1Z2dlciIgVHlwZT0iJXMiPicsIG5hbWUsIGNvbXBpbGVyLCB0eXBlc1tjZmcua2luZF0pCmxvY2FsIGZuYW1lICA9IHByZW1ha2UuZXNjKGNmZy5idWlsZHRhcmdldC5mdWxscGF0aCkKbG9jYWwgb2JqZGlyID0gcHJlbWFrZS5lc2MoY2ZnLm9iamVjdHNkaXIpCmxvY2FsIHJ1bmNtZCA9IGNmZy5idWlsZHRhcmdldC5uYW1lCmxvY2FsIHJ1bmRpciA9IGNmZy5kZWJ1Z2RpciBvciBjZmcuYnVpbGR0YXJnZXQuZGlyZWN0b3J5CmxvY2FsIHJ1bmFyZ3MgPSB0YWJsZS5jb25jYXQoY2ZnLmRlYnVnYXJncywgIiAiKQpsb2NhbCBwYXVzZSAgPSBpaWYoY2ZnLmtpbmQgPT0gIldpbmRvd2VkQXBwIiwgIm5vIiwgInllcyIpCl9wKCcgICAgICA8R2VuZXJhbCBPdXRwdXRGaWxlPSIlcyIgSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIlcyIgQ29tbWFuZD0iLi8lcyIgQ29tbWFuZEFyZ3VtZW50cz0iJXMiIFdvcmtpbmdEaXJlY3Rvcnk9IiVzIiBQYXVzZUV4ZWNXaGVuUHJvY1Rlcm1pbmF0ZXM9IiVzIi8+JywgZm5hbWUsIG9iamRpciwgcnVuY21kLCBydW5hcmdzLCBydW5kaXIsIHBhdXNlKQpsb2NhbCBmbGFncyA9IHByZW1ha2UuZXNjKHRhYmxlLmpvaW4ocHJlbWFrZS5nY2MuZ2V0Y2ZsYWdzKGNmZyksIHByZW1ha2UuZ2NjLmdldGN4eGZsYWdzKGNmZyksIGNmZy5idWlsZG9wdGlvbnMpKQpfcCgnICAgICAgPENvbXBpbGVyIFJlcXVpcmVkPSJ5ZXMiIE9wdGlvbnM9IiVzIj4nLCB0YWJsZS5jb25jYXQoZmxhZ3MsICI7IikpCmZvciBfLHYgaW4gaXBhaXJzKGNmZy5pbmNsdWRlZGlycykgZG8KX3AoJyAgICAgICAgPEluY2x1ZGVQYXRoIFZhbHVlPSIlcyIvPicsIHByZW1ha2UuZXNjKHYpKQplbmQKZm9yIF8sdiBpbiBpcGFpcnMoY2ZnLmRlZmluZXMpIGRvCl9wKCcgICAgICAgIDxQcmVwcm9jZXNzb3IgVmFsdWU9IiVzIi8+JywgcHJlbWFrZS5lc2ModikpCmVuZApfcCgnICAgICAgPC9Db21waWxlcj4nKQpmbGFncyA9IHByZW1ha2UuZXNjKHRhYmxlLmpvaW4ocHJlbWFrZS5nY2MuZ2V0bGRmbGFncyhjZmcpLCBjZmcubGlua29wdGlvbnMpKQpfcCgnICAgICAgPExpbmtlciBSZXF1aXJlZD0ieWVzIiBPcHRpb25zPSIlcyI+JywgdGFibGUuY29uY2F0KGZsYWdzLCAiOyIpKQpmb3IgXyx2IGluIGlwYWlycyhwcmVtYWtlLmdldGxpbmtzKGNmZywgImFsbCIsICJkaXJlY3RvcnkiKSkgZG8KX3AoJyAgICAgICAgPExpYnJhcnlQYXRoIFZhbHVlPSIlcyIgLz4nLCBwcmVtYWtlLmVzYyh2KSkKZW5kCmZvciBfLHYgaW4gaXBhaXJzKHByZW1ha2UuZ2V0bGlua3MoY2ZnLCAiYWxsIiwgImJhc2VuYW1lIikpIGRvCl9wKCcgICAgICAgIDxMaWJyYXJ5IFZhbHVlPSIlcyIgLz4nLCBwcmVtYWtlLmVzYyh2KSkKZW5kCl9wKCcgICAgICA8L0xpbmtlcj4nKQppZiBwcmVtYWtlLmZpbmRmaWxlKGNmZywgIi5yYyIpIHRoZW4KbG9jYWwgZGVmaW5lcyA9IHRhYmxlLmltcGxvZGUodGFibGUuam9pbihjZmcuZGVmaW5lcywgY2ZnLnJlc2RlZmluZXMpLCAiLUQiLCAiOyIsICIiKQpsb2NhbCBvcHRpb25zID0gdGFibGUuY29uY2F0KGNmZy5yZXNvcHRpb25zLCAiOyIpCl9wKCcgICAgICA8UmVzb3VyY2VDb21waWxlciBSZXF1aXJlZD0ieWVzIiBPcHRpb25zPSIlcyVzIj4nLCBkZWZpbmVzLCBvcHRpb25zKQpmb3IgXyx2IGluIGlwYWlycyh0YWJsZS5qb2luKGNmZy5pbmNsdWRlZGlycywgY2ZnLnJlc2luY2x1ZGVkaXJzKSkgZG8KX3AoJyAgICAgICAgPEluY2x1ZGVQYXRoIFZhbHVlPSIlcyIvPicsIHByZW1ha2UuZXNjKHYpKQplbmQKX3AoJyAgICAgIDwvUmVzb3VyY2VDb21waWxlcj4nKQplbHNlCl9wKCcgICAgICA8UmVzb3VyY2VDb21waWxlciBSZXF1aXJlZD0ibm8iIE9wdGlvbnM9IiIvPicpCmVuZAppZiAjY2ZnLnByZWJ1aWxkY29tbWFuZHMgPiAwIHRoZW4KX3AoJyAgICAgIDxQcmVCdWlsZD4nKQpmb3IgXyx2IGluIGlwYWlycyhjZmcucHJlYnVpbGRjb21tYW5kcykgZG8KX3AoJyAgICAgICAgPENvbW1hbmQgRW5hYmxlZD0ieWVzIj4lczwvQ29tbWFuZD4nLCBwcmVtYWtlLmVzYyh2KSkKZW5kCl9wKCcgICAgICA8L1ByZUJ1aWxkPicpCmVuZAppZiAjY2ZnLnBvc3RidWlsZGNvbW1hbmRzID4gMCB0aGVuCl9wKCcgICAgICA8UG9zdEJ1aWxkPicpCmZvciBfLHYgaW4gaXBhaXJzKGNmZy5wb3N0YnVpbGRjb21tYW5kcykgZG8KX3AoJyAgICAgICAgPENvbW1hbmQgRW5hYmxlZD0ieWVzIj4lczwvQ29tbWFuZD4nLCBwcmVtYWtlLmVzYyh2KSkKZW5kCl9wKCcgICAgICA8L1Bvc3RCdWlsZD4nKQplbmQKX3AoJyAgICAgIDxDdXN0b21CdWlsZCBFbmFibGVkPSJubyI+JykKX3AoJyAgICAgICAgPENsZWFuQ29tbWFuZD48L0NsZWFuQ29tbWFuZD4nKQpfcCgnICAgICAgICA8QnVpbGRDb21tYW5kPjwvQnVpbGRDb21tYW5kPicpCl9wKCcgICAgICAgIDxTaW5nbGVGaWxlQ29tbWFuZD48L1NpbmdsZUZpbGVDb21tYW5kPicpCl9wKCcgICAgICAgIDxNYWtlZmlsZUdlbmVyYXRpb25Db21tYW5kPjwvTWFrZWZpbGVHZW5lcmF0aW9uQ29tbWFuZD4nKQpfcCgnICAgICAgICA8VGhpcmRQYXJ0eVRvb2xOYW1lPk5vbmU8L1RoaXJkUGFydHlUb29sTmFtZT4nKQpfcCgnICAgICAgICA8V29ya2luZ0RpcmVjdG9yeT48L1dvcmtpbmdEaXJlY3Rvcnk+JykKX3AoJyAgICAgIDwvQ3VzdG9tQnVpbGQ+JykKX3AoJyAgICAgIDxBZGRpdGlvbmFsUnVsZXM+JykKX3AoJyAgICAgICAgPEN1c3RvbVBvc3RCdWlsZD48L0N1c3RvbVBvc3RCdWlsZD4nKQpfcCgnICAgICAgICA8Q3VzdG9tUHJlQnVpbGQ+PC9DdXN0b21QcmVCdWlsZD4nKQpfcCgnICAgICAgPC9BZGRpdGlvbmFsUnVsZXM+JykKX3AoJyAgICA8L0NvbmZpZ3VyYXRpb24+JykKZW5kCmVuZApfcCgnICA8L1NldHRpbmdzPicpCmZvciBfLCBwbGF0Zm9ybSBpbiBpcGFpcnMocGxhdGZvcm1zKSBkbwpmb3IgY2ZnIGluIHByZW1ha2UuZWFjaGNvbmZpZyhwcmosIHBsYXRmb3JtKSBkbwpfcCgnICA8RGVwZW5kZW5jaWVzIG5hbWU9IiVzIj4nLCBjZmcubG9uZ25hbWUpCmZvciBfLGRlcCBpbiBpcGFpcnMocHJlbWFrZS5nZXRkZXBlbmRlbmNpZXMocHJqKSkgZG8KX3AoJyAgICA8UHJvamVjdCBOYW1lPSIlcyIvPicsIGRlcC5uYW1lKQplbmQKX3AoJyAgPC9EZXBlbmRlbmNpZXM+JykKZW5kCmVuZApfcCgnPC9Db2RlTGl0ZV9Qcm9qZWN0PicpCmVuZAoAX01BS0UgPSB7IH0KcHJlbWFrZS5tYWtlID0geyB9CmxvY2FsIG1ha2UgPSBwcmVtYWtlLm1ha2UKZnVuY3Rpb24gX01BS0UuZXNjKHZhbHVlKQpsb2NhbCByZXN1bHQKaWYgKHR5cGUodmFsdWUpID09ICJ0YWJsZSIpIHRoZW4KcmVzdWx0ID0geyB9CmZvciBfLHYgaW4gaXBhaXJzKHZhbHVlKSBkbwp0YWJsZS5pbnNlcnQocmVzdWx0LCBfTUFLRS5lc2ModikpCmVuZApyZXR1cm4gcmVzdWx0CmVsc2UKcmVzdWx0ID0gdmFsdWU6Z3N1YigiXFwiLCAiXFxcXCIpCnJlc3VsdCA9IHJlc3VsdDpnc3ViKCIgIiwgIlxcICIpCnJlc3VsdCA9IHJlc3VsdDpnc3ViKCIlKCIsICJcXCUoIikKcmVzdWx0ID0gcmVzdWx0OmdzdWIoIiUpIiwgIlxcJSkiKQpyZXN1bHQgPSByZXN1bHQ6Z3N1YigiJFxcJSgoLi0pXFwlKSIsICIkJSglMSUpIikKcmV0dXJuIHJlc3VsdAplbmQKZW5kCmZ1bmN0aW9uIHByZW1ha2UubWFrZV9jb3B5cnVsZShzb3VyY2UsIHRhcmdldCkKX3AoJyVzOiAlcycsIHRhcmdldCwgc291cmNlKQpfcCgnXHRAZWNobyBDb3B5aW5nICQobm90ZGlyICVzKScsIHRhcmdldCkKX3AoJ2lmZXEgKHBvc2l4LCQoU0hFTExUWVBFKSknKQpfcCgnXHQkKFNJTEVOVCkgY3AgLWZSICVzICVzJywgc291cmNlLCB0YXJnZXQpCl9wKCdlbHNlJykKX3AoJ1x0JChTSUxFTlQpIGNvcHkgL1kgJChzdWJzdCAvLFxcXFwsJXMpICQoc3Vic3QgLyxcXFxcLCVzKScsIHNvdXJjZSwgdGFyZ2V0KQpfcCgnZW5kaWYnKQplbmQKZnVuY3Rpb24gcHJlbWFrZS5tYWtlX21rZGlycnVsZSh2YXIpCl9wKCdcdEBlY2hvIENyZWF0aW5nICVzJywgdmFyKQpfcCgnaWZlcSAocG9zaXgsJChTSEVMTFRZUEUpKScpCl9wKCdcdCQoU0lMRU5UKSBta2RpciAtcCAlcycsIHZhcikKX3AoJ2Vsc2UnKQpfcCgnXHQkKFNJTEVOVCkgbWtkaXIgJChzdWJzdCAvLFxcXFwsJXMpJywgdmFyKQpfcCgnZW5kaWYnKQpfcCgnJykKZW5kCmZ1bmN0aW9uIG1ha2UubGlzdCh2YWx1ZSkKaWYgI3ZhbHVlID4gMCB0aGVuCnJldHVybiAiICIgLi4gdGFibGUuY29uY2F0KHZhbHVlLCAiICIpCmVsc2UKcmV0dXJuICIiCmVuZAplbmQKZnVuY3Rpb24gX01BS0UuZ2V0bWFrZWZpbGVuYW1lKHRoaXMsIHNlYXJjaHByanMpCmxvY2FsIGNvdW50ID0gMApmb3Igc2xuIGluIHByZW1ha2Uuc29sdXRpb24uZWFjaCgpIGRvCmlmIChzbG4ubG9jYXRpb24gPT0gdGhpcy5sb2NhdGlvbikgdGhlbiBjb3VudCA9IGNvdW50ICsgMSBlbmQKaWYgKHNlYXJjaHByanMpIHRoZW4KZm9yIF8scHJqIGluIGlwYWlycyhzbG4ucHJvamVjdHMpIGRvCmlmIChwcmoubG9jYXRpb24gPT0gdGhpcy5sb2NhdGlvbikgdGhlbiBjb3VudCA9IGNvdW50ICsgMSBlbmQKZW5kCmVuZAplbmQKaWYgKGNvdW50ID09IDEpIHRoZW4KcmV0dXJuICJNYWtlZmlsZSIKZWxzZQpyZXR1cm4gdGhpcy5uYW1lIC4uICIubWFrZSIKZW5kCmVuZApmdW5jdGlvbiBfTUFLRS5nZXRuYW1lcyh0YmwpCmxvY2FsIHJlc3VsdCA9IHRhYmxlLmV4dHJhY3QodGJsLCAibmFtZSIpCmZvciBrLHYgaW4gcGFpcnMocmVzdWx0KSBkbwpyZXN1bHRba10gPSBfTUFLRS5lc2ModikKZW5kCnJldHVybiByZXN1bHQKZW5kCmZ1bmN0aW9uIG1ha2Uuc2V0dGluZ3MoY2ZnLCBjYykKaWYgI2NmZy5tYWtlc2V0dGluZ3MgPiAwIHRoZW4KZm9yIF8sIHZhbHVlIGluIGlwYWlycyhjZmcubWFrZXNldHRpbmdzKSBkbwpfcCh2YWx1ZSkKZW5kCmVuZApsb2NhbCB0b29sc2V0dGluZ3MgPSBjYy5wbGF0Zm9ybXNbY2ZnLnBsYXRmb3JtXS5jZmdzZXR0aW5ncwppZiB0b29sc2V0dGluZ3MgdGhlbgpfcCh0b29sc2V0dGluZ3MpCmVuZAplbmQKbmV3YWN0aW9uIHsKdHJpZ2dlciAgICAgICAgID0gImdtYWtlIiwKc2hvcnRuYW1lICAgICAgID0gIkdOVSBNYWtlIiwKZGVzY3JpcHRpb24gICAgID0gIkdlbmVyYXRlIEdOVSBtYWtlZmlsZXMgZm9yIFBPU0lYLCBNaW5HVywgYW5kIEN5Z3dpbiIsCnZhbGlkX2tpbmRzICAgICA9IHsgIkNvbnNvbGVBcHAiLCAiV2luZG93ZWRBcHAiLCAiU3RhdGljTGliIiwgIlNoYXJlZExpYiIgfSwKdmFsaWRfbGFuZ3VhZ2VzID0geyAiQyIsICJDKysiLCAiQyMiIH0sCnZhbGlkX3Rvb2xzICAgICA9IHsKY2MgICAgID0geyAiZ2NjIiB9LApkb3RuZXQgPSB7ICJtb25vIiwgIm1zbmV0IiwgInBuZXQiIH0sCn0sCm9uc29sdXRpb24gPSBmdW5jdGlvbihzbG4pCnByZW1ha2UuZ2VuZXJhdGUoc2xuLCBfTUFLRS5nZXRtYWtlZmlsZW5hbWUoc2xuLCBmYWxzZSksIHByZW1ha2UubWFrZV9zb2x1dGlvbikKZW5kLApvbnByb2plY3QgPSBmdW5jdGlvbihwcmopCmxvY2FsIG1ha2VmaWxlID0gX01BS0UuZ2V0bWFrZWZpbGVuYW1lKHByaiwgdHJ1ZSkKaWYgcHJlbWFrZS5pc2RvdG5ldHByb2plY3QocHJqKSB0aGVuCnByZW1ha2UuZ2VuZXJhdGUocHJqLCBtYWtlZmlsZSwgcHJlbWFrZS5tYWtlX2NzaGFycCkKZWxzZQpwcmVtYWtlLmdlbmVyYXRlKHByaiwgbWFrZWZpbGUsIHByZW1ha2UubWFrZV9jcHApCmVuZAplbmQsCm9uY2xlYW5zb2x1dGlvbiA9IGZ1bmN0aW9uKHNsbikKcHJlbWFrZS5jbGVhbi5maWxlKHNsbiwgX01BS0UuZ2V0bWFrZWZpbGVuYW1lKHNsbiwgZmFsc2UpKQplbmQsCm9uY2xlYW5wcm9qZWN0ID0gZnVuY3Rpb24ocHJqKQpwcmVtYWtlLmNsZWFuLmZpbGUocHJqLCBfTUFLRS5nZXRtYWtlZmlsZW5hbWUocHJqLCB0cnVlKSkKZW5kCn0KAGZ1bmN0aW9uIHByZW1ha2UubWFrZV9zb2x1dGlvbihzbG4pCmxvY2FsIGNjID0gcHJlbWFrZVtfT1BUSU9OUy5jY10KbG9jYWwgcGxhdGZvcm1zID0gcHJlbWFrZS5maWx0ZXJwbGF0Zm9ybXMoc2xuLCBjYy5wbGF0Zm9ybXMsICJOYXRpdmUiKQpfcCgnIyAlcyBzb2x1dGlvbiBtYWtlZmlsZSBhdXRvZ2VuZXJhdGVkIGJ5IFByZW1ha2UnLCBwcmVtYWtlLmFjdGlvbi5jdXJyZW50KCkuc2hvcnRuYW1lKQpfcCgnIyBUeXBlICJtYWtlIGhlbHAiIGZvciB1c2FnZSBoZWxwJykKX3AoJycpCl9wKCdpZm5kZWYgY29uZmlnJykKX3AoJyAgY29uZmlnPSVzJywgX01BS0UuZXNjKHByZW1ha2UuZ2V0Y29uZmlnbmFtZShzbG4uY29uZmlndXJhdGlvbnNbMV0sIHBsYXRmb3Jtc1sxXSwgdHJ1ZSkpKQpfcCgnZW5kaWYnKQpfcCgnZXhwb3J0IGNvbmZpZycpCl9wKCcnKQpfcCgnUFJPSkVDVFMgOj0gJXMnLCB0YWJsZS5jb25jYXQoX01BS0UuZXNjKHRhYmxlLmV4dHJhY3Qoc2xuLnByb2plY3RzLCAibmFtZSIpKSwgIiAiKSkKX3AoJycpCl9wKCcuUEhPTlk6IGFsbCBjbGVhbiBoZWxwICQoUFJPSkVDVFMpJykKX3AoJycpCl9wKCdhbGw6ICQoUFJPSkVDVFMpJykKX3AoJycpCmZvciBfLCBwcmogaW4gaXBhaXJzKHNsbi5wcm9qZWN0cykgZG8KX3AoJyVzOiAlcycsIF9NQUtFLmVzYyhwcmoubmFtZSksIHRhYmxlLmNvbmNhdChfTUFLRS5lc2ModGFibGUuZXh0cmFjdChwcmVtYWtlLmdldGRlcGVuZGVuY2llcyhwcmopLCAibmFtZSIpKSwgIiAiKSkKX3AoJ1x0QGVjaG8gIj09PT0gQnVpbGRpbmcgJXMgKCQoY29uZmlnKSkgPT09PSInLCBwcmoubmFtZSkKX3AoJ1x0QCR7TUFLRX0gLS1uby1wcmludC1kaXJlY3RvcnkgLUMgJXMgLWYgJXMnLCBfTUFLRS5lc2MocGF0aC5nZXRyZWxhdGl2ZShzbG4ubG9jYXRpb24sIHByai5sb2NhdGlvbikpLCBfTUFLRS5lc2MoX01BS0UuZ2V0bWFrZWZpbGVuYW1lKHByaiwgdHJ1ZSkpKQpfcCgnJykKZW5kCl9wKCdjbGVhbjonKQpmb3IgXyAscHJqIGluIGlwYWlycyhzbG4ucHJvamVjdHMpIGRvCl9wKCdcdEAke01BS0V9IC0tbm8tcHJpbnQtZGlyZWN0b3J5IC1DICVzIC1mICVzIGNsZWFuJywgX01BS0UuZXNjKHBhdGguZ2V0cmVsYXRpdmUoc2xuLmxvY2F0aW9uLCBwcmoubG9jYXRpb24pKSwgX01BS0UuZXNjKF9NQUtFLmdldG1ha2VmaWxlbmFtZShwcmosIHRydWUpKSkKZW5kCl9wKCcnKQpfcCgnaGVscDonKQpfcCgxLCdAZWNobyAiVXNhZ2U6IG1ha2UgW2NvbmZpZz1uYW1lXSBbdGFyZ2V0XSInKQpfcCgxLCdAZWNobyAiIicpCl9wKDEsJ0BlY2hvICJDT05GSUdVUkFUSU9OUzoiJykKbG9jYWwgY2ZncGFpcnMgPSB7IH0KZm9yIF8sIHBsYXRmb3JtIGluIGlwYWlycyhwbGF0Zm9ybXMpIGRvCmZvciBfLCBjZmduYW1lIGluIGlwYWlycyhzbG4uY29uZmlndXJhdGlvbnMpIGRvCl9wKDEsJ0BlY2hvICIgICAlcyInLCBwcmVtYWtlLmdldGNvbmZpZ25hbWUoY2ZnbmFtZSwgcGxhdGZvcm0sIHRydWUpKQplbmQKZW5kCl9wKDEsJ0BlY2hvICIiJykKX3AoMSwnQGVjaG8gIlRBUkdFVFM6IicpCl9wKDEsJ0BlY2hvICIgICBhbGwgKGRlZmF1bHQpIicpCl9wKDEsJ0BlY2hvICIgICBjbGVhbiInKQpmb3IgXywgcHJqIGluIGlwYWlycyhzbG4ucHJvamVjdHMpIGRvCl9wKDEsJ0BlY2hvICIgICAlcyInLCBwcmoubmFtZSkKZW5kCl9wKDEsJ0BlY2hvICIiJykKX3AoMSwnQGVjaG8gIkZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL2luZHVzdHJpb3Vzb25lLmNvbS9wcmVtYWtlL3F1aWNrLXN0YXJ0IicpCmVuZAoAcHJlbWFrZS5tYWtlLmNwcCA9IHsgfQpsb2NhbCBjcHAgPSBwcmVtYWtlLm1ha2UuY3BwCmxvY2FsIG1ha2UgPSBwcmVtYWtlLm1ha2UKZnVuY3Rpb24gcHJlbWFrZS5tYWtlX2NwcChwcmopCmxvY2FsIGNjID0gcHJlbWFrZS5nZXR0b29sKHByaikKbG9jYWwgcGxhdGZvcm1zID0gcHJlbWFrZS5maWx0ZXJwbGF0Zm9ybXMocHJqLnNvbHV0aW9uLCBjYy5wbGF0Zm9ybXMsICJOYXRpdmUiKQpwcmVtYWtlLmdtYWtlX2NwcF9oZWFkZXIocHJqLCBjYywgcGxhdGZvcm1zKQpmb3IgXywgcGxhdGZvcm0gaW4gaXBhaXJzKHBsYXRmb3JtcykgZG8KZm9yIGNmZyBpbiBwcmVtYWtlLmVhY2hjb25maWcocHJqLCBwbGF0Zm9ybSkgZG8KcHJlbWFrZS5nbWFrZV9jcHBfY29uZmlnKGNmZywgY2MpCmVuZAplbmQKX3AoJ09CSkVDVFMgOj0gXFwnKQpmb3IgXywgZmlsZSBpbiBpcGFpcnMocHJqLmZpbGVzKSBkbwppZiBwYXRoLmlzY3BwZmlsZShmaWxlKSB0aGVuCl9wKCdcdCQoT0JKRElSKS8lcy5vIFxcJywgX01BS0UuZXNjKHBhdGguZ2V0YmFzZW5hbWUoZmlsZSkpKQplbmQKZW5kCl9wKCcnKQpfcCgnUkVTT1VSQ0VTIDo9IFxcJykKZm9yIF8sIGZpbGUgaW4gaXBhaXJzKHByai5maWxlcykgZG8KaWYgcGF0aC5pc3Jlc291cmNlZmlsZShmaWxlKSB0aGVuCl9wKCdcdCQoT0JKRElSKS8lcy5yZXMgXFwnLCBfTUFLRS5lc2MocGF0aC5nZXRiYXNlbmFtZShmaWxlKSkpCmVuZAplbmQKX3AoJycpCl9wKCdTSEVMTFRZUEUgOj0gbXNkb3MnKQpfcCgnaWZlcSAoLCQoQ29tU3BlYykkKENPTVNQRUMpKScpCl9wKCcgIFNIRUxMVFlQRSA6PSBwb3NpeCcpCl9wKCdlbmRpZicpCl9wKCdpZmVxICgvYmluLCQoZmluZHN0cmluZyAvYmluLCQoU0hFTEwpKSknKQpfcCgnICBTSEVMTFRZUEUgOj0gcG9zaXgnKQpfcCgnZW5kaWYnKQpfcCgnJykKX3AoJy5QSE9OWTogY2xlYW4gcHJlYnVpbGQgcHJlbGluaycpCl9wKCcnKQppZiBvcy5pcygiTWFjT1NYIikgYW5kIHByai5raW5kID09ICJXaW5kb3dlZEFwcCIgdGhlbgpfcCgnYWxsOiAkKFRBUkdFVERJUikgJChPQkpESVIpIHByZWJ1aWxkIHByZWxpbmsgJChUQVJHRVQpICQoZGlyICQoVEFSR0VURElSKSlQa2dJbmZvICQoZGlyICQoVEFSR0VURElSKSlJbmZvLnBsaXN0JykKZWxzZQpfcCgnYWxsOiAkKFRBUkdFVERJUikgJChPQkpESVIpIHByZWJ1aWxkIHByZWxpbmsgJChUQVJHRVQpJykKZW5kCl9wKCdcdEA6JykKX3AoJycpCl9wKCckKFRBUkdFVCk6ICQoR0NIKSAkKE9CSkVDVFMpICQoTERERVBTKSAkKFJFU09VUkNFUyknKQpfcCgnXHRAZWNobyBMaW5raW5nICVzJywgcHJqLm5hbWUpCl9wKCdcdCQoU0lMRU5UKSAkKExJTktDTUQpJykKX3AoJ1x0JChQT1NUQlVJTERDTURTKScpCl9wKCcnKQpfcCgnJChUQVJHRVRESVIpOicpCnByZW1ha2UubWFrZV9ta2RpcnJ1bGUoIiQoVEFSR0VURElSKSIpCl9wKCckKE9CSkRJUik6JykKcHJlbWFrZS5tYWtlX21rZGlycnVsZSgiJChPQkpESVIpIikKaWYgb3MuaXMoIk1hY09TWCIpIGFuZCBwcmoua2luZCA9PSAiV2luZG93ZWRBcHAiIHRoZW4KX3AoJyQoZGlyICQoVEFSR0VURElSKSlQa2dJbmZvOicpCl9wKCckKGRpciAkKFRBUkdFVERJUikpSW5mby5wbGlzdDonKQpfcCgnJykKZW5kCl9wKCdjbGVhbjonKQpfcCgnXHRAZWNobyBDbGVhbmluZyAlcycsIHByai5uYW1lKQpfcCgnaWZlcSAocG9zaXgsJChTSEVMTFRZUEUpKScpCl9wKCdcdCQoU0lMRU5UKSBybSAtZiAgJChUQVJHRVQpJykKX3AoJ1x0JChTSUxFTlQpIHJtIC1yZiAkKE9CSkRJUiknKQpfcCgnZWxzZScpCl9wKCdcdCQoU0lMRU5UKSBpZiBleGlzdCAkKHN1YnN0IC8sXFxcXCwkKFRBUkdFVCkpIGRlbCAkKHN1YnN0IC8sXFxcXCwkKFRBUkdFVCkpJykKX3AoJ1x0JChTSUxFTlQpIGlmIGV4aXN0ICQoc3Vic3QgLyxcXFxcLCQoT0JKRElSKSkgcm1kaXIgL3MgL3EgJChzdWJzdCAvLFxcXFwsJChPQkpESVIpKScpCl9wKCdlbmRpZicpCl9wKCcnKQpfcCgncHJlYnVpbGQ6JykKX3AoJ1x0JChQUkVCVUlMRENNRFMpJykKX3AoJycpCl9wKCdwcmVsaW5rOicpCl9wKCdcdCQoUFJFTElOS0NNRFMpJykKX3AoJycpCmNwcC5wY2hydWxlcyhwcmopCmNwcC5maWxlUnVsZXMocHJqKQpfcCgnLWluY2x1ZGUgJChPQkpFQ1RTOiUlLm89JSUuZCknKQpfcCgnaWZuZXEgKCwkKFBDSCkpJykKX3AoJyAgLWluY2x1ZGUgJChPQkpESVIpLyQobm90ZGlyICQoUENIKSkuZCcpCl9wKCdlbmRpZicpCmVuZApmdW5jdGlvbiBwcmVtYWtlLmdtYWtlX2NwcF9oZWFkZXIocHJqLCBjYywgcGxhdGZvcm1zKQpfcCgnIyAlcyBwcm9qZWN0IG1ha2VmaWxlIGF1dG9nZW5lcmF0ZWQgYnkgUHJlbWFrZScsIHByZW1ha2UuYWN0aW9uLmN1cnJlbnQoKS5zaG9ydG5hbWUpCl9wKCdpZm5kZWYgY29uZmlnJykKX3AoJyAgY29uZmlnPSVzJywgX01BS0UuZXNjKHByZW1ha2UuZ2V0Y29uZmlnbmFtZShwcmouc29sdXRpb24uY29uZmlndXJhdGlvbnNbMV0sIHBsYXRmb3Jtc1sxXSwgdHJ1ZSkpKQpfcCgnZW5kaWYnKQpfcCgnJykKX3AoJ2lmbmRlZiB2ZXJib3NlJykKX3AoJyAgU0lMRU5UID0gQCcpCl9wKCdlbmRpZicpCl9wKCcnKQpfcCgnQ0MgPSAlcycsIGNjLmNjKQpfcCgnQ1hYID0gJXMnLCBjYy5jeHgpCl9wKCdBUiA9ICVzJywgY2MuYXIpCl9wKCcnKQpfcCgnaWZuZGVmIFJFU0NPTVAnKQpfcCgnICBpZmRlZiBXSU5EUkVTJykKX3AoJyAgICBSRVNDT01QID0gJChXSU5EUkVTKScpCl9wKCcgIGVsc2UnKQpfcCgnICAgIFJFU0NPTVAgPSB3aW5kcmVzJykKX3AoJyAgZW5kaWYnKQpfcCgnZW5kaWYnKQpfcCgnJykKZW5kCmZ1bmN0aW9uIHByZW1ha2UuZ21ha2VfY3BwX2NvbmZpZyhjZmcsIGNjKQpfcCgnaWZlcSAoJChjb25maWcpLCVzKScsIF9NQUtFLmVzYyhjZmcuc2hvcnRuYW1lKSkKY3BwLnBsYXRmb3JtdG9vbHMoY2ZnLCBjYykKX3AoJyAgT0JKRElSICAgICA9ICVzJywgX01BS0UuZXNjKGNmZy5vYmplY3RzZGlyKSkKX3AoJyAgVEFSR0VURElSICA9ICVzJywgX01BS0UuZXNjKGNmZy5idWlsZHRhcmdldC5kaXJlY3RvcnkpKQpfcCgnICBUQVJHRVQgICAgID0gJChUQVJHRVRESVIpLyVzJywgX01BS0UuZXNjKGNmZy5idWlsZHRhcmdldC5uYW1lKSkKX3AoJyAgREVGSU5FUyAgICs9JXMnLCBtYWtlLmxpc3QoY2MuZ2V0ZGVmaW5lcyhjZmcuZGVmaW5lcykpKQpfcCgnICBJTkNMVURFUyAgKz0lcycsIG1ha2UubGlzdChjYy5nZXRpbmNsdWRlZGlycyhjZmcuaW5jbHVkZWRpcnMpKSkKY3BwLnBjaGNvbmZpZyhjZmcpCmNwcC5mbGFncyhjZmcsIGNjKQpjcHAubGlua2VyKGNmZywgY2MpCl9wKCcgIGRlZmluZSBQUkVCVUlMRENNRFMnKQppZiAjY2ZnLnByZWJ1aWxkY29tbWFuZHMgPiAwIHRoZW4KX3AoJ1x0QGVjaG8gUnVubmluZyBwcmUtYnVpbGQgY29tbWFuZHMnKQpfcCgnXHQlcycsIHRhYmxlLmltcGxvZGUoY2ZnLnByZWJ1aWxkY29tbWFuZHMsICIiLCAiIiwgIlxuXHQiKSkKZW5kCl9wKCcgIGVuZGVmJykKX3AoJyAgZGVmaW5lIFBSRUxJTktDTURTJykKaWYgI2NmZy5wcmVsaW5rY29tbWFuZHMgPiAwIHRoZW4KX3AoJ1x0QGVjaG8gUnVubmluZyBwcmUtbGluayBjb21tYW5kcycpCl9wKCdcdCVzJywgdGFibGUuaW1wbG9kZShjZmcucHJlbGlua2NvbW1hbmRzLCAiIiwgIiIsICJcblx0IikpCmVuZApfcCgnICBlbmRlZicpCl9wKCcgIGRlZmluZSBQT1NUQlVJTERDTURTJykKaWYgI2NmZy5wb3N0YnVpbGRjb21tYW5kcyA+IDAgdGhlbgpfcCgnXHRAZWNobyBSdW5uaW5nIHBvc3QtYnVpbGQgY29tbWFuZHMnKQpfcCgnXHQlcycsIHRhYmxlLmltcGxvZGUoY2ZnLnBvc3RidWlsZGNvbW1hbmRzLCAiIiwgIiIsICJcblx0IikpCmVuZApfcCgnICBlbmRlZicpCm1ha2Uuc2V0dGluZ3MoY2ZnLCBjYykKX3AoJ2VuZGlmJykKX3AoJycpCmVuZApmdW5jdGlvbiBjcHAucGxhdGZvcm10b29scyhjZmcsIGNjKQpsb2NhbCBwbGF0Zm9ybSA9IGNjLnBsYXRmb3Jtc1tjZmcucGxhdGZvcm1dCmlmIHBsYXRmb3JtLmNjIHRoZW4KX3AoJyAgQ0MgICAgICAgICA9ICVzJywgcGxhdGZvcm0uY2MpCmVuZAppZiBwbGF0Zm9ybS5jeHggdGhlbgpfcCgnICBDWFggICAgICAgID0gJXMnLCBwbGF0Zm9ybS5jeHgpCmVuZAppZiBwbGF0Zm9ybS5hciB0aGVuCl9wKCcgIEFSICAgICAgICAgPSAlcycsIHBsYXRmb3JtLmFyKQplbmQKZW5kCmZ1bmN0aW9uIGNwcC5mbGFncyhjZmcsIGNjKQppZiBjZmcucGNoaGVhZGVyIGFuZCBub3QgY2ZnLmZsYWdzLk5vUENIIHRoZW4KX3AoJyAgRk9SQ0VfSU5DTFVERSArPSAtaW5jbHVkZSAkKE9CSkRJUikvJChub3RkaXIgJChQQ0gpKScpCmVuZApfcCgnICBBTExfQ1BQRkxBR1MgICs9ICQoQ1BQRkxBR1MpICVzICQoREVGSU5FUykgJChJTkNMVURFUykgJChGT1JDRV9JTkNMVURFKScsIHRhYmxlLmNvbmNhdChjYy5nZXRjcHBmbGFncyhjZmcpLCAiICIpKQpfcCgnICBBTExfQ0ZMQUdTICAgICs9ICQoQ0ZMQUdTKSAkKEFMTF9DUFBGTEFHUykgJChBUkNIKSVzJywgbWFrZS5saXN0KHRhYmxlLmpvaW4oY2MuZ2V0Y2ZsYWdzKGNmZyksIGNmZy5idWlsZG9wdGlvbnMpKSkKX3AoJyAgQUxMX0NYWEZMQUdTICArPSAkKENYWEZMQUdTKSAkKEFMTF9DRkxBR1MpJXMnLCBtYWtlLmxpc3QoY2MuZ2V0Y3h4ZmxhZ3MoY2ZnKSkpCl9wKCcgIEFMTF9SRVNGTEFHUyAgKz0gJChSRVNGTEFHUykgJChERUZJTkVTKSAkKElOQ0xVREVTKSVzJywKICAgICAgICBtYWtlLmxpc3QodGFibGUuam9pbihjYy5nZXRkZWZpbmVzKGNmZy5yZXNkZWZpbmVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5nZXRpbmNsdWRlZGlycyhjZmcucmVzaW5jbHVkZWRpcnMpLCBjZmcucmVzb3B0aW9ucykpKQplbmQKZnVuY3Rpb24gY3BwLmxpbmtlcihjZmcsIGNjKQpfcCgnICBBTExfTERGTEFHUyAgICs9ICQoTERGTEFHUyklcycsIG1ha2UubGlzdCh0YWJsZS5qb2luKGNjLmdldGxpYmRpcmZsYWdzKGNmZyksIGNjLmdldGxkZmxhZ3MoY2ZnKSwgY2ZnLmxpbmtvcHRpb25zKSkpCl9wKCcgIExEREVQUyAgICArPSVzJywgbWFrZS5saXN0KF9NQUtFLmVzYyhwcmVtYWtlLmdldGxpbmtzKGNmZywgInNpYmxpbmdzIiwgImZ1bGxwYXRoIikpKSkKX3AoJyAgTElCUyAgICAgICs9ICQoTERERVBTKSVzJywgbWFrZS5saXN0KGNjLmdldGxpbmtmbGFncyhjZmcpKSkKaWYgY2ZnLmtpbmQgPT0gIlN0YXRpY0xpYiIgdGhlbgppZiBjZmcucGxhdGZvcm06c3RhcnRzd2l0aCgiVW5pdmVyc2FsIikgdGhlbgpfcCgnICBMSU5LQ01EICAgID0gbGlidG9vbCAtbyAkKFRBUkdFVCkgJChPQkpFQ1RTKScpCmVsc2UKX3AoJyAgTElOS0NNRCAgICA9ICQoQVIpIC1yY3MgJChUQVJHRVQpICQoT0JKRUNUUyknKQplbmQKZWxzZQpfcCgnICBMSU5LQ01EICAgID0gJCglcykgLW8gJChUQVJHRVQpICQoT0JKRUNUUykgJChSRVNPVVJDRVMpICQoQVJDSCkgJChBTExfTERGTEFHUykgJChMSUJTKScsIGlpZihjZmcubGFuZ3VhZ2UgPT0gIkMiLCAiQ0MiLCAiQ1hYIikpCmVuZAplbmQKZnVuY3Rpb24gY3BwLnBjaGNvbmZpZyhjZmcpCmlmIG5vdCBjZmcucGNoaGVhZGVyIG9yIGNmZy5mbGFncy5Ob1BDSCB0aGVuCnJldHVybgplbmQKbG9jYWwgcGNoID0gY2ZnLnBjaGhlYWRlcgpmb3IgXywgaW5jZGlyIGluIGlwYWlycyhjZmcuaW5jbHVkZWRpcnMpIGRvCmxvY2FsIHRlc3RuYW1lID0gcGF0aC5qb2luKGluY2RpciwgcGNoKQppZiBvcy5pc2ZpbGUodGVzdG5hbWUpIHRoZW4KcGNoID0gdGVzdG5hbWUKYnJlYWsKZW5kCmVuZApfcCgnICBQQ0ggICAgICAgID0gJXMnLCBfTUFLRS5lc2MocGF0aC5nZXRyZWxhdGl2ZShjZmcubG9jYXRpb24sIGNmZy5wY2hoZWFkZXIpKSkKX3AoJyAgR0NIICAgICAgICA9ICQoT0JKRElSKS8kKG5vdGRpciAkKFBDSCkpLmdjaCcsIF9NQUtFLmVzYyhwYXRoLmdldG5hbWUoY2ZnLnBjaGhlYWRlcikpKQplbmQKZnVuY3Rpb24gY3BwLnBjaHJ1bGVzKHByaikKX3AoJ2lmbmVxICgsJChQQ0gpKScpCl9wKCckKEdDSCk6ICQoUENIKScpCl9wKCdcdEBlY2hvICQobm90ZGlyICQ8KScpCmxvY2FsIGNtZCA9IGlpZihwcmoubGFuZ3VhZ2UgPT0gIkMiLCAiJChDQykgLXggYy1oZWFkZXIiLCAiJChDWFgpIC14IGMrKy1oZWFkZXIiKQpfcCgnXHQkKFNJTEVOVCkgJXMgJChDUFBGTEFHUykgLU1NRCAtTVAgJChERUZJTkVTKSAkKElOQ0xVREVTKSAtbyAiJEAiIC1NRiAiJChAOiUlLmdjaD0lJS5kKSIgLWMgIiQ8IicsIGNtZCkKX3AoJ2VuZGlmJykKX3AoJycpCmVuZApmdW5jdGlvbiBjcHAuZmlsZVJ1bGVzKHByaikKZm9yIF8sIGZpbGUgaW4gaXBhaXJzKHByai5maWxlcyBvciB7fSkgZG8KaWYgcGF0aC5pc2NwcGZpbGUoZmlsZSkgdGhlbgpfcCgnJChPQkpESVIpLyVzLm86ICVzJywgX01BS0UuZXNjKHBhdGguZ2V0YmFzZW5hbWUoZmlsZSkpLCBfTUFLRS5lc2MoZmlsZSkpCl9wKCdcdEBlY2hvICQobm90ZGlyICQ8KScpCmNwcC5idWlsZGNvbW1hbmQocGF0aC5pc2NmaWxlKGZpbGUpLCAibyIpCl9wKCcnKQplbHNlaWYgKHBhdGguZ2V0ZXh0ZW5zaW9uKGZpbGUpID09ICIucmMiKSB0aGVuCl9wKCckKE9CSkRJUikvJXMucmVzOiAlcycsIF9NQUtFLmVzYyhwYXRoLmdldGJhc2VuYW1lKGZpbGUpKSwgX01BS0UuZXNjKGZpbGUpKQpfcCgnXHRAZWNobyAkKG5vdGRpciAkPCknKQpfcCgnXHQkKFNJTEVOVCkgJChSRVNDT01QKSAkPCAtTyBjb2ZmIC1vICIkQCIgJChBTExfUkVTRkxBR1MpJykKX3AoJycpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIGNwcC5idWlsZGNvbW1hbmQoaXNjZmlsZSwgb2JqZXh0KQpsb2NhbCBmbGFncyA9IGlpZihpc2NmaWxlLCAnJChDQykgJChBTExfQ0ZMQUdTKScsICckKENYWCkgJChBTExfQ1hYRkxBR1MpJykKX3AoJ1x0JChTSUxFTlQpICVzIC1vICIkQCIgLU1GICQoQDolJS4lcz0lJS5kKSAtYyAiJDwiJywgZmxhZ3MsIG9iamV4dCkKZW5kCgBsb2NhbCBmdW5jdGlvbiBnZXRyZXNvdXJjZWZpbGVuYW1lKGNmZywgZm5hbWUpCmlmIHBhdGguZ2V0ZXh0ZW5zaW9uKGZuYW1lKSA9PSAiLnJlc3giIHRoZW4KICAgIGxvY2FsIG5hbWUgPSBjZmcuYnVpbGR0YXJnZXQuYmFzZW5hbWUgLi4gIi4iCiAgICBsb2NhbCBkaXIgPSBwYXRoLmdldGRpcmVjdG9yeShmbmFtZSkKICAgIGlmIGRpciB+PSAiLiIgdGhlbiAKbmFtZSA9IG5hbWUgLi4gcGF0aC50cmFuc2xhdGUoZGlyLCAiLiIpIC4uICIuIgplbmQKcmV0dXJuICIkKE9CSkRJUikvIiAuLiBfTUFLRS5lc2MobmFtZSAuLiBwYXRoLmdldGJhc2VuYW1lKGZuYW1lKSkgLi4gIi5yZXNvdXJjZXMiCmVsc2UKcmV0dXJuIGZuYW1lCmVuZAplbmQKZnVuY3Rpb24gcHJlbWFrZS5tYWtlX2NzaGFycChwcmopCmxvY2FsIGNzYyA9IHByZW1ha2UuZG90bmV0CmxvY2FsIGNmZ2xpYnMgPSB7IH0KbG9jYWwgY2ZncGFpcnMgPSB7IH0KbG9jYWwgYW55Y2ZnCmZvciBjZmcgaW4gcHJlbWFrZS5lYWNoY29uZmlnKHByaikgZG8KYW55Y2ZnID0gY2ZnCmNmZ2xpYnNbY2ZnXSA9IHByZW1ha2UuZ2V0bGlua3MoY2ZnLCAic2libGluZ3MiLCAiZnVsbHBhdGgiKQpjZmdwYWlyc1tjZmddID0geyB9CmZvciBfLCBmbmFtZSBpbiBpcGFpcnMoY2ZnbGlic1tjZmddKSBkbwppZiBwYXRoLmdldGRpcmVjdG9yeShmbmFtZSkgfj0gY2ZnLmJ1aWxkdGFyZ2V0LmRpcmVjdG9yeSB0aGVuCmNmZ3BhaXJzW2NmZ11bIiQoVEFSR0VURElSKS8iIC4uIF9NQUtFLmVzYyhwYXRoLmdldG5hbWUoZm5hbWUpKV0gPSBfTUFLRS5lc2MoZm5hbWUpCmVuZAplbmQKZW5kCmxvY2FsIHNvdXJjZXMgPSB7fQpsb2NhbCBlbWJlZGRlZCA9IHsgfQpsb2NhbCBjb3B5cGFpcnMgPSB7IH0KZm9yIGZjZmcgaW4gcHJlbWFrZS5wcm9qZWN0LmVhY2hmaWxlKHByaikgZG8KbG9jYWwgYWN0aW9uID0gY3NjLmdldGJ1aWxkYWN0aW9uKGZjZmcpCmlmIGFjdGlvbiA9PSAiQ29tcGlsZSIgdGhlbgp0YWJsZS5pbnNlcnQoc291cmNlcywgZmNmZy5uYW1lKQplbHNlaWYgYWN0aW9uID09ICJFbWJlZGRlZFJlc291cmNlIiB0aGVuCnRhYmxlLmluc2VydChlbWJlZGRlZCwgZmNmZy5uYW1lKQplbHNlaWYgYWN0aW9uID09ICJDb250ZW50IiB0aGVuCmNvcHlwYWlyc1siJChUQVJHRVRESVIpLyIgLi4gX01BS0UuZXNjKHBhdGguZ2V0bmFtZShmY2ZnLm5hbWUpKV0gPSBfTUFLRS5lc2MoZmNmZy5uYW1lKQplbHNlaWYgcGF0aC5nZXRuYW1lKGZjZmcubmFtZSk6bG93ZXIoKSA9PSAiYXBwLmNvbmZpZyIgdGhlbgpjb3B5cGFpcnNbIiQoVEFSR0VUKS5jb25maWciXSA9IF9NQUtFLmVzYyhmY2ZnLm5hbWUpCmVuZAplbmQKbG9jYWwgcGF0aHMgPSB0YWJsZS50cmFuc2xhdGUocHJqLmxpYmRpcnMsIGZ1bmN0aW9uKHYpIHJldHVybiBwYXRoLmpvaW4ocHJqLmJhc2VkaXIsIHYpIGVuZCkKcGF0aHMgPSB0YWJsZS5qb2luKHtwcmouYmFzZWRpcn0sIHBhdGhzKQpmb3IgXywgbGlibmFtZSBpbiBpcGFpcnMocHJlbWFrZS5nZXRsaW5rcyhwcmosICJzeXN0ZW0iLCAiZnVsbHBhdGgiKSkgZG8KbG9jYWwgbGliZGlyID0gb3MucGF0aHNlYXJjaChsaWJuYW1lLi4iLmRsbCIsIHVucGFjayhwYXRocykpCmlmIChsaWJkaXIpIHRoZW4KbG9jYWwgdGFyZ2V0ID0gIiQoVEFSR0VURElSKS8iIC4uIF9NQUtFLmVzYyhwYXRoLmdldG5hbWUobGlibmFtZSkpCmxvY2FsIHNvdXJjZSA9IHBhdGguZ2V0cmVsYXRpdmUocHJqLmJhc2VkaXIsIHBhdGguam9pbihsaWJkaXIsIGxpYm5hbWUpKS4uIi5kbGwiCmNvcHlwYWlyc1t0YXJnZXRdID0gX01BS0UuZXNjKHNvdXJjZSkKZW5kCmVuZApfcCgnIyAlcyBwcm9qZWN0IG1ha2VmaWxlIGF1dG9nZW5lcmF0ZWQgYnkgUHJlbWFrZScsIHByZW1ha2UuYWN0aW9uLmN1cnJlbnQoKS5zaG9ydG5hbWUpCl9wKCcnKQpfcCgnaWZuZGVmIGNvbmZpZycpCl9wKCcgIGNvbmZpZz0lcycsIF9NQUtFLmVzYyhwcmouY29uZmlndXJhdGlvbnNbMV06bG93ZXIoKSkpCl9wKCdlbmRpZicpCl9wKCcnKQpfcCgnaWZuZGVmIHZlcmJvc2UnKQpfcCgnICBTSUxFTlQgPSBAJykKX3AoJ2VuZGlmJykKX3AoJycpCl9wKCdpZm5kZWYgQ1NDJykKX3AoJyAgQ1NDPSVzJywgY3NjLmdldGNvbXBpbGVydmFyKHByaikpCl9wKCdlbmRpZicpCl9wKCcnKQpfcCgnaWZuZGVmIFJFU0dFTicpCl9wKCcgIFJFU0dFTj1yZXNnZW4nKQpfcCgnZW5kaWYnKQpfcCgnJykKbG9jYWwgcGxhdGZvcm1zID0gcHJlbWFrZS5maWx0ZXJwbGF0Zm9ybXMocHJqLnNvbHV0aW9uLCBwcmVtYWtlW19PUFRJT05TLmNjXS5wbGF0Zm9ybXMpCnRhYmxlLmluc2VydChwbGF0Zm9ybXMsIDEsICIiKQpmb3IgY2ZnIGluIHByZW1ha2UuZWFjaGNvbmZpZyhwcmopIGRvCnByZW1ha2UuZ21ha2VfY3NfY29uZmlnKGNmZywgY3NjLCBjZmdsaWJzKQplbmQKX3AoJyMgVG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIFZTLk5FVCwgdGhlc2UgdmFsdWVzIG11c3QgYmUgc2V0IGF0IHRoZSBwcm9qZWN0IGxldmVsJykKX3AoJ1RBUkdFVCAgICAgOj0gJChUQVJHRVRESVIpLyVzJywgX01BS0UuZXNjKHByai5idWlsZHRhcmdldC5uYW1lKSkKX3AoJ0ZMQUdTICAgICAgKz0gL3Q6JXMgJXMnLCBjc2MuZ2V0a2luZChwcmopOmxvd2VyKCksIHRhYmxlLmltcGxvZGUoX01BS0UuZXNjKHByai5saWJkaXJzKSwgIi9saWI6IiwgIiIsICIgIikpCl9wKCdSRUZFUkVOQ0VTICs9ICVzJywgdGFibGUuaW1wbG9kZShfTUFLRS5lc2MocHJlbWFrZS5nZXRsaW5rcyhwcmosICJzeXN0ZW0iLCAiYmFzZW5hbWUiKSksICIvcjoiLCAiLmRsbCIsICIgIikpCl9wKCcnKQpfcCgnU09VUkNFUyA6PSBcXCcpCmZvciBfLCBmbmFtZSBpbiBpcGFpcnMoc291cmNlcykgZG8KX3AoJ1x0JXMgXFwnLCBfTUFLRS5lc2MocGF0aC50cmFuc2xhdGUoZm5hbWUpKSkKZW5kCl9wKCcnKQpfcCgnRU1CRURGSUxFUyA6PSBcXCcpCmZvciBfLCBmbmFtZSBpbiBpcGFpcnMoZW1iZWRkZWQpIGRvCl9wKCdcdCVzIFxcJywgZ2V0cmVzb3VyY2VmaWxlbmFtZShwcmosIGZuYW1lKSkKZW5kCl9wKCcnKQpfcCgnQ09QWUZJTEVTICs9IFxcJykKZm9yIHRhcmdldCwgc291cmNlIGluIHBhaXJzKGNmZ3BhaXJzW2FueWNmZ10pIGRvCl9wKCdcdCVzIFxcJywgdGFyZ2V0KQplbmQKZm9yIHRhcmdldCwgc291cmNlIGluIHBhaXJzKGNvcHlwYWlycykgZG8KX3AoJ1x0JXMgXFwnLCB0YXJnZXQpCmVuZApfcCgnJykKX3AoJ1NIRUxMVFlQRSA6PSBtc2RvcycpCl9wKCdpZmVxICgsJChDb21TcGVjKSQoQ09NU1BFQykpJykKX3AoJyAgU0hFTExUWVBFIDo9IHBvc2l4JykKX3AoJ2VuZGlmJykKX3AoJ2lmZXEgKC9iaW4sJChmaW5kc3RyaW5nIC9iaW4sJChTSEVMTCkpKScpCl9wKCcgIFNIRUxMVFlQRSA6PSBwb3NpeCcpCl9wKCdlbmRpZicpCl9wKCcnKQpfcCgnLlBIT05ZOiBjbGVhbiBwcmVidWlsZCBwcmVsaW5rJykKX3AoJycpCl9wKCdhbGw6ICQoVEFSR0VURElSKSAkKE9CSkRJUikgcHJlYnVpbGQgJChFTUJFREZJTEVTKSAkKENPUFlGSUxFUykgcHJlbGluayAkKFRBUkdFVCknKQpfcCgnJykKX3AoJyQoVEFSR0VUKTogJChTT1VSQ0VTKSAkKEVNQkVERklMRVMpICQoREVQRU5EUyknKQpfcCgnXHQkKFNJTEVOVCkgJChDU0MpIC9ub2xvZ28gL291dDokQCAkKEZMQUdTKSAkKFJFRkVSRU5DRVMpICQoU09VUkNFUykgJChwYXRzdWJzdCAlJSwvcmVzb3VyY2U6JSUsJChFTUJFREZJTEVTKSknKQpfcCgnXHQkKFBPU1RCVUlMRENNRFMpJykKX3AoJycpCl9wKCckKFRBUkdFVERJUik6JykKcHJlbWFrZS5tYWtlX21rZGlycnVsZSgiJChUQVJHRVRESVIpIikKX3AoJyQoT0JKRElSKTonKQpwcmVtYWtlLm1ha2VfbWtkaXJydWxlKCIkKE9CSkRJUikiKQpfcCgnY2xlYW46JykKX3AoJ1x0QGVjaG8gQ2xlYW5pbmcgJXMnLCBwcmoubmFtZSkKX3AoJ2lmZXEgKHBvc2l4LCQoU0hFTExUWVBFKSknKQpfcCgnXHQkKFNJTEVOVCkgcm0gLWYgJChUQVJHRVRESVIpLyVzLiogJChDT1BZRklMRVMpJywgcHJqLmJ1aWxkdGFyZ2V0LmJhc2VuYW1lKQpfcCgnXHQkKFNJTEVOVCkgcm0gLXJmICQoT0JKRElSKScpCl9wKCdlbHNlJykKX3AoJ1x0JChTSUxFTlQpIGlmIGV4aXN0ICQoc3Vic3QgLyxcXFxcLCQoVEFSR0VURElSKS8lcy4qKSBkZWwgJChzdWJzdCAvLFxcXFwsJChUQVJHRVRESVIpLyVzLiopJywgcHJqLmJ1aWxkdGFyZ2V0LmJhc2VuYW1lLCBwcmouYnVpbGR0YXJnZXQuYmFzZW5hbWUpCmZvciB0YXJnZXQsIHNvdXJjZSBpbiBwYWlycyhjZmdwYWlyc1thbnljZmddKSBkbwpfcCgnXHQkKFNJTEVOVCkgaWYgZXhpc3QgJChzdWJzdCAvLFxcXFwsJXMpIGRlbCAkKHN1YnN0IC8sXFxcXCwlcyknLCB0YXJnZXQsIHRhcmdldCkKZW5kCmZvciB0YXJnZXQsIHNvdXJjZSBpbiBwYWlycyhjb3B5cGFpcnMpIGRvCl9wKCdcdCQoU0lMRU5UKSBpZiBleGlzdCAkKHN1YnN0IC8sXFxcXCwlcykgZGVsICQoc3Vic3QgLyxcXFxcLCVzKScsIHRhcmdldCwgdGFyZ2V0KQplbmQKX3AoJ1x0JChTSUxFTlQpIGlmIGV4aXN0ICQoc3Vic3QgLyxcXFxcLCQoT0JKRElSKSkgcm1kaXIgL3MgL3EgJChzdWJzdCAvLFxcXFwsJChPQkpESVIpKScpCl9wKCdlbmRpZicpCl9wKCcnKQpfcCgncHJlYnVpbGQ6JykKX3AoJ1x0JChQUkVCVUlMRENNRFMpJykKX3AoJycpCl9wKCdwcmVsaW5rOicpCl9wKCdcdCQoUFJFTElOS0NNRFMpJykKX3AoJycpCl9wKCcjIFBlci1jb25maWd1cmF0aW9uIGNvcGllZCBmaWxlIHJ1bGVzJykKZm9yIGNmZyBpbiBwcmVtYWtlLmVhY2hjb25maWcocHJqKSBkbwpfcCgnaWZuZXEgKCwkKGZpbmRzdHJpbmcgJXMsJChjb25maWcpKSknLCBfTUFLRS5lc2MoY2ZnLm5hbWU6bG93ZXIoKSkpCmZvciB0YXJnZXQsIHNvdXJjZSBpbiBwYWlycyhjZmdwYWlyc1tjZmddKSBkbwpwcmVtYWtlLm1ha2VfY29weXJ1bGUoc291cmNlLCB0YXJnZXQpCmVuZApfcCgnZW5kaWYnKQpfcCgnJykKZW5kCl9wKCcjIENvcGllZCBmaWxlIHJ1bGVzJykKZm9yIHRhcmdldCwgc291cmNlIGluIHBhaXJzKGNvcHlwYWlycykgZG8KcHJlbWFrZS5tYWtlX2NvcHlydWxlKHNvdXJjZSwgdGFyZ2V0KQplbmQKX3AoJyMgRW1iZWRkZWQgZmlsZSBydWxlcycpCmZvciBfLCBmbmFtZSBpbiBpcGFpcnMoZW1iZWRkZWQpIGRvIAppZiBwYXRoLmdldGV4dGVuc2lvbihmbmFtZSkgPT0gIi5yZXN4IiB0aGVuCl9wKCclczogJXMnLCBnZXRyZXNvdXJjZWZpbGVuYW1lKHByaiwgZm5hbWUpLCBfTUFLRS5lc2MoZm5hbWUpKQpfcCgnXHQkKFNJTEVOVCkgJChSRVNHRU4pICReICRAJykKZW5kCl9wKCcnKQplbmQKZW5kCmZ1bmN0aW9uIHByZW1ha2UuZ21ha2VfY3NfY29uZmlnKGNmZywgY3NjLCBjZmdsaWJzKQpfcCgnaWZuZXEgKCwkKGZpbmRzdHJpbmcgJXMsJChjb25maWcpKSknLCBfTUFLRS5lc2MoY2ZnLm5hbWU6bG93ZXIoKSkpCl9wKCcgIFRBUkdFVERJUiAgOj0gJXMnLCBfTUFLRS5lc2MoY2ZnLmJ1aWxkdGFyZ2V0LmRpcmVjdG9yeSkpCl9wKCcgIE9CSkRJUiAgICAgOj0gJXMnLCBfTUFLRS5lc2MoY2ZnLm9iamVjdHNkaXIpKQpfcCgnICBERVBFTkRTICAgIDo9ICVzJywgdGFibGUuY29uY2F0KF9NQUtFLmVzYyhwcmVtYWtlLmdldGxpbmtzKGNmZywgImRlcGVuZGVuY2llcyIsICJmdWxscGF0aCIpKSwgIiAiKSkKX3AoJyAgUkVGRVJFTkNFUyA6PSAlcycsIHRhYmxlLmltcGxvZGUoX01BS0UuZXNjKGNmZ2xpYnNbY2ZnXSksICIvcjoiLCAiIiwgIiAiKSkKX3AoJyAgRkxBR1MgICAgICArPSAlcyAlcycsIHRhYmxlLmltcGxvZGUoY2ZnLmRlZmluZXMsICIvZDoiLCAiIiwgIiAiKSwgdGFibGUuY29uY2F0KHRhYmxlLmpvaW4oY3NjLmdldGZsYWdzKGNmZyksIGNmZy5idWlsZG9wdGlvbnMpLCAiICIpKQpfcCgnICBkZWZpbmUgUFJFQlVJTERDTURTJykKaWYgI2NmZy5wcmVidWlsZGNvbW1hbmRzID4gMCB0aGVuCl9wKCdcdEBlY2hvIFJ1bm5pbmcgcHJlLWJ1aWxkIGNvbW1hbmRzJykKX3AoJ1x0JXMnLCB0YWJsZS5pbXBsb2RlKGNmZy5wcmVidWlsZGNvbW1hbmRzLCAiIiwgIiIsICJcblx0IikpCmVuZApfcCgnICBlbmRlZicpCl9wKCcgIGRlZmluZSBQUkVMSU5LQ01EUycpCmlmICNjZmcucHJlbGlua2NvbW1hbmRzID4gMCB0aGVuCl9wKCdcdEBlY2hvIFJ1bm5pbmcgcHJlLWxpbmsgY29tbWFuZHMnKQpfcCgnXHQlcycsIHRhYmxlLmltcGxvZGUoY2ZnLnByZWxpbmtjb21tYW5kcywgIiIsICIiLCAiXG5cdCIpKQplbmQKX3AoJyAgZW5kZWYnKQpfcCgnICBkZWZpbmUgUE9TVEJVSUxEQ01EUycpCmlmICNjZmcucG9zdGJ1aWxkY29tbWFuZHMgPiAwIHRoZW4KX3AoJ1x0QGVjaG8gUnVubmluZyBwb3N0LWJ1aWxkIGNvbW1hbmRzJykKX3AoJ1x0JXMnLCB0YWJsZS5pbXBsb2RlKGNmZy5wb3N0YnVpbGRjb21tYW5kcywgIiIsICIiLCAiXG5cdCIpKQplbmQKX3AoJyAgZW5kZWYnKQpfcCgnZW5kaWYnKQpfcCgnJykKZW5kCgBwcmVtYWtlLnZzdHVkaW8gPSB7IH0KbG9jYWwgdnN0dWRpbyA9IHByZW1ha2UudnN0dWRpbwp2c3R1ZGlvLnBsYXRmb3JtcyA9IHsKYW55ICAgICA9ICJBbnkgQ1BVIiwKbWl4ZWQgICA9ICJNaXhlZCBQbGF0Zm9ybXMiLApOYXRpdmUgID0gIldpbjMyIiwKeDg2ICAgICA9ICJ4ODYiLAp4MzIgICAgID0gIldpbjMyIiwKeDY0ICAgICA9ICJ4NjQiLApQUzMgICAgID0gIlBTMyIsClhib3gzNjAgPSAiWGJveCAzNjAiLAp9CmZ1bmN0aW9uIHZzdHVkaW8uYXJjaChwcmopCmlmIChwcmoubGFuZ3VhZ2UgPT0gIkMjIikgdGhlbgppZiAoX0FDVElPTiA8ICJ2czIwMDUiKSB0aGVuCnJldHVybiAiLk5FVCIKZWxzZQpyZXR1cm4gIkFueSBDUFUiCmVuZAplbHNlCnJldHVybiAiV2luMzIiCmVuZAplbmQKZnVuY3Rpb24gdnN0dWRpby5idWlsZGNvbmZpZ3Moc2xuKQpsb2NhbCBjZmdzID0geyB9CmxvY2FsIHBsYXRmb3JtcyA9IHByZW1ha2UuZmlsdGVycGxhdGZvcm1zKHNsbiwgdnN0dWRpby5wbGF0Zm9ybXMsICJOYXRpdmUiKQpsb2NhbCBoYXNjcHAgICAgPSBwcmVtYWtlLmhhc2NwcHByb2plY3Qoc2xuKQpsb2NhbCBoYXNkb3RuZXQgPSBwcmVtYWtlLmhhc2RvdG5ldHByb2plY3Qoc2xuKQppZiBoYXNkb3RuZXQgYW5kIChfQUNUSU9OID4gInZzMjAwOCIgb3IgaGFzY3BwKSB0aGVuCnRhYmxlLmluc2VydChwbGF0Zm9ybXMsIDEsICJtaXhlZCIpCmVuZAppZiBoYXNkb3RuZXQgYW5kIChfQUNUSU9OIDwgInZzMjAxMCIgb3Igbm90IGhhc2NwcCkgdGhlbgp0YWJsZS5pbnNlcnQocGxhdGZvcm1zLCAxLCAiYW55IikKZW5kCmlmIF9BQ1RJT04gPiAidnMyMDA4IiB0aGVuCmxvY2FsIHBsYXRmb3JtczIwMTAgPSB7IH0KZm9yIF8sIHBsYXRmb3JtIGluIGlwYWlycyhwbGF0Zm9ybXMpIGRvCmlmIHZzdHVkaW8ucGxhdGZvcm1zW3BsYXRmb3JtXSA9PSAiV2luMzIiIHRoZW4KaWYgaGFzY3BwIHRoZW4KdGFibGUuaW5zZXJ0KHBsYXRmb3JtczIwMTAsIHBsYXRmb3JtKQplbmQKaWYgaGFzZG90bmV0IHRoZW4KdGFibGUuaW5zZXJ0KHBsYXRmb3JtczIwMTAsICJ4ODYiKQplbmQKZWxzZQp0YWJsZS5pbnNlcnQocGxhdGZvcm1zMjAxMCwgcGxhdGZvcm0pCmVuZAplbmQKcGxhdGZvcm1zID0gcGxhdGZvcm1zMjAxMAplbmQKZm9yIF8sIGJ1aWxkY2ZnIGluIGlwYWlycyhzbG4uY29uZmlndXJhdGlvbnMpIGRvCmZvciBfLCBwbGF0Zm9ybSBpbiBpcGFpcnMocGxhdGZvcm1zKSBkbwpsb2NhbCBlbnRyeSA9IHsgfQplbnRyeS5zcmNfYnVpbGRjZmcgPSBidWlsZGNmZwplbnRyeS5zcmNfcGxhdGZvcm0gPSBwbGF0Zm9ybQppZiBwbGF0Zm9ybSB+PSAiUFMzIiBvciBfQUNUSU9OID4gInZzMjAwOCIgdGhlbgplbnRyeS5idWlsZGNmZyA9IGJ1aWxkY2ZnCmVudHJ5LnBsYXRmb3JtID0gdnN0dWRpby5wbGF0Zm9ybXNbcGxhdGZvcm1dCmVsc2UKZW50cnkuYnVpbGRjZmcgPSBwbGF0Zm9ybSAuLiAiICIgLi4gYnVpbGRjZmcKZW50cnkucGxhdGZvcm0gPSAiV2luMzIiCmVuZAplbnRyeS5uYW1lID0gZW50cnkuYnVpbGRjZmcgLi4gInwiIC4uIGVudHJ5LnBsYXRmb3JtCmVudHJ5LmlzcmVhbCA9IChwbGF0Zm9ybSB+PSAiYW55IiBhbmQgcGxhdGZvcm0gfj0gIm1peGVkIikKdGFibGUuaW5zZXJ0KGNmZ3MsIGVudHJ5KQplbmQKZW5kCnJldHVybiBjZmdzCmVuZApmdW5jdGlvbiB2c3R1ZGlvLmNsZWFuc29sdXRpb24oc2xuKQpwcmVtYWtlLmNsZWFuLmZpbGUoc2xuLCAiJSUuc2xuIikKcHJlbWFrZS5jbGVhbi5maWxlKHNsbiwgIiUlLnN1byIpCnByZW1ha2UuY2xlYW4uZmlsZShzbG4sICIlJS5uY2IiKQpwcmVtYWtlLmNsZWFuLmZpbGUoc2xuLCAiJSUudXNlcnByZWZzIikKcHJlbWFrZS5jbGVhbi5maWxlKHNsbiwgIiUlLnVzZXJ0YXNrcyIpCmVuZApmdW5jdGlvbiB2c3R1ZGlvLmNsZWFucHJvamVjdChwcmopCmxvY2FsIGZuYW1lID0gcHJlbWFrZS5wcm9qZWN0LmdldGZpbGVuYW1lKHByaiwgIiUlIikKb3MucmVtb3ZlKGZuYW1lIC4uICIudmNwcm9qIikKb3MucmVtb3ZlKGZuYW1lIC4uICIudmNwcm9qLnVzZXIiKQpvcy5yZW1vdmUoZm5hbWUgLi4gIi52Y3hwcm9qIikKb3MucmVtb3ZlKGZuYW1lIC4uICIudmN4cHJvai51c2VyIikKb3MucmVtb3ZlKGZuYW1lIC4uICIudmN4cHJvai5maWx0ZXJzIikKb3MucmVtb3ZlKGZuYW1lIC4uICIuY3Nwcm9qIikKb3MucmVtb3ZlKGZuYW1lIC4uICIuY3Nwcm9qLnVzZXIiKQpvcy5yZW1vdmUoZm5hbWUgLi4gIi5waWRiIikKb3MucmVtb3ZlKGZuYW1lIC4uICIuc2RmIikKZW5kCmZ1bmN0aW9uIHZzdHVkaW8uY2xlYW50YXJnZXQobmFtZSkKb3MucmVtb3ZlKG5hbWUgLi4gIi5wZGIiKQpvcy5yZW1vdmUobmFtZSAuLiAiLmlkYiIpCm9zLnJlbW92ZShuYW1lIC4uICIuaWxrIikKb3MucmVtb3ZlKG5hbWUgLi4gIi52c2hvc3QuZXhlIikKb3MucmVtb3ZlKG5hbWUgLi4gIi5leGUubWFuaWZlc3QiKQplbmQKZnVuY3Rpb24gdnN0dWRpby5wcm9qZWN0ZmlsZShwcmopCmxvY2FsIHBhdHRlcm4KaWYgcHJqLmxhbmd1YWdlID09ICJDIyIgdGhlbgpwYXR0ZXJuID0gIiUlLmNzcHJvaiIKZWxzZQpwYXR0ZXJuID0gaWlmKF9BQ1RJT04gPiAidnMyMDA4IiwgIiUlLnZjeHByb2oiLCAiJSUudmNwcm9qIikKZW5kCmxvY2FsIGZuYW1lID0gcHJlbWFrZS5wcm9qZWN0LmdldGJhc2VuYW1lKHByai5uYW1lLCBwYXR0ZXJuKQpmbmFtZSA9IHBhdGguam9pbihwcmoubG9jYXRpb24sIGZuYW1lKQpyZXR1cm4gZm5hbWUKZW5kCmZ1bmN0aW9uIHZzdHVkaW8udG9vbChwcmopCmlmIChwcmoubGFuZ3VhZ2UgPT0gIkMjIikgdGhlbgpyZXR1cm4gIkZBRTA0RUMwLTMwMUYtMTFEMy1CRjRCLTAwQzA0Rjc5RUZCQyIKZWxzZQpyZXR1cm4gIjhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0MiIKZW5kCmVuZApuZXdhY3Rpb24gewp0cmlnZ2VyICAgICAgICAgPSAidnMyMDAyIiwKc2hvcnRuYW1lICAgICAgID0gIlZpc3VhbCBTdHVkaW8gMjAwMiIsCmRlc2NyaXB0aW9uICAgICA9ICJHZW5lcmF0ZSBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAyMDAyIHByb2plY3QgZmlsZXMiLApvcyAgICAgICAgICAgICAgPSAid2luZG93cyIsCnZhbGlkX2tpbmRzICAgICA9IHsgIkNvbnNvbGVBcHAiLCAiV2luZG93ZWRBcHAiLCAiU3RhdGljTGliIiwgIlNoYXJlZExpYiIgfSwKdmFsaWRfbGFuZ3VhZ2VzID0geyAiQyIsICJDKysiLCAiQyMiIH0sCnZhbGlkX3Rvb2xzICAgICA9IHsKY2MgICAgID0geyAibXNjIiAgIH0sCmRvdG5ldCA9IHsgIm1zbmV0IiB9LAp9LApvbnNvbHV0aW9uID0gZnVuY3Rpb24oc2xuKQpwcmVtYWtlLmdlbmVyYXRlKHNsbiwgIiUlLnNsbiIsIHZzdHVkaW8uc2xuMjAwMi5nZW5lcmF0ZSkKZW5kLApvbnByb2plY3QgPSBmdW5jdGlvbihwcmopCmlmIHByZW1ha2UuaXNkb3RuZXRwcm9qZWN0KHByaikgdGhlbgpwcmVtYWtlLmdlbmVyYXRlKHByaiwgIiUlLmNzcHJvaiIsIHZzdHVkaW8uY3MyMDAyLmdlbmVyYXRlKQpwcmVtYWtlLmdlbmVyYXRlKHByaiwgIiUlLmNzcHJvai51c2VyIiwgdnN0dWRpby5jczIwMDIuZ2VuZXJhdGVfdXNlcikKZWxzZQpwcmVtYWtlLmdlbmVyYXRlKHByaiwgIiUlLnZjcHJvaiIsIHZzdHVkaW8udmMyMDB4LmdlbmVyYXRlKQpwcmVtYWtlLmdlbmVyYXRlKHByaiwgIiUlLnZjcHJvai51c2VyIiwgdnN0dWRpby52YzIwMHguZ2VuZXJhdGVfdXNlcikKZW5kCmVuZCwKb25jbGVhbnNvbHV0aW9uID0gcHJlbWFrZS52c3R1ZGlvLmNsZWFuc29sdXRpb24sCm9uY2xlYW5wcm9qZWN0ICA9IHByZW1ha2UudnN0dWRpby5jbGVhbnByb2plY3QsCm9uY2xlYW50YXJnZXQgICA9IHByZW1ha2UudnN0dWRpby5jbGVhbnRhcmdldCwKdnN0dWRpbyA9IHt9Cn0KbmV3YWN0aW9uIHsKdHJpZ2dlciAgICAgICAgID0gInZzMjAwMyIsCnNob3J0bmFtZSAgICAgICA9ICJWaXN1YWwgU3R1ZGlvIDIwMDMiLApkZXNjcmlwdGlvbiAgICAgPSAiR2VuZXJhdGUgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMjAwMyBwcm9qZWN0IGZpbGVzIiwKb3MgICAgICAgICAgICAgID0gIndpbmRvd3MiLAp2YWxpZF9raW5kcyAgICAgPSB7ICJDb25zb2xlQXBwIiwgIldpbmRvd2VkQXBwIiwgIlN0YXRpY0xpYiIsICJTaGFyZWRMaWIiIH0sCnZhbGlkX2xhbmd1YWdlcyA9IHsgIkMiLCAiQysrIiwgIkMjIiB9LAp2YWxpZF90b29scyAgICAgPSB7CmNjICAgICA9IHsgIm1zYyIgICB9LApkb3RuZXQgPSB7ICJtc25ldCIgfSwKfSwKb25zb2x1dGlvbiA9IGZ1bmN0aW9uKHNsbikKcHJlbWFrZS5nZW5lcmF0ZShzbG4sICIlJS5zbG4iLCB2c3R1ZGlvLnNsbjIwMDMuZ2VuZXJhdGUpCmVuZCwKb25wcm9qZWN0ID0gZnVuY3Rpb24ocHJqKQppZiBwcmVtYWtlLmlzZG90bmV0cHJvamVjdChwcmopIHRoZW4KcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS5jc3Byb2oiLCB2c3R1ZGlvLmNzMjAwMi5nZW5lcmF0ZSkKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS5jc3Byb2oudXNlciIsIHZzdHVkaW8uY3MyMDAyLmdlbmVyYXRlX3VzZXIpCmVsc2UKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS52Y3Byb2oiLCB2c3R1ZGlvLnZjMjAweC5nZW5lcmF0ZSkKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS52Y3Byb2oudXNlciIsIHZzdHVkaW8udmMyMDB4LmdlbmVyYXRlX3VzZXIpCmVuZAplbmQsCm9uY2xlYW5zb2x1dGlvbiA9IHByZW1ha2UudnN0dWRpby5jbGVhbnNvbHV0aW9uLApvbmNsZWFucHJvamVjdCAgPSBwcmVtYWtlLnZzdHVkaW8uY2xlYW5wcm9qZWN0LApvbmNsZWFudGFyZ2V0ICAgPSBwcmVtYWtlLnZzdHVkaW8uY2xlYW50YXJnZXQsCnZzdHVkaW8gPSB7fQp9Cm5ld2FjdGlvbiB7CnRyaWdnZXIgICAgICAgICA9ICJ2czIwMDUiLApzaG9ydG5hbWUgICAgICAgPSAiVmlzdWFsIFN0dWRpbyAyMDA1IiwKZGVzY3JpcHRpb24gICAgID0gIkdlbmVyYXRlIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDIwMDUgcHJvamVjdCBmaWxlcyIsCm9zICAgICAgICAgICAgICA9ICJ3aW5kb3dzIiwKdmFsaWRfa2luZHMgICAgID0geyAiQ29uc29sZUFwcCIsICJXaW5kb3dlZEFwcCIsICJTdGF0aWNMaWIiLCAiU2hhcmVkTGliIiB9LAp2YWxpZF9sYW5ndWFnZXMgPSB7ICJDIiwgIkMrKyIsICJDIyIgfSwKdmFsaWRfdG9vbHMgICAgID0gewpjYyAgICAgPSB7ICJtc2MiICAgfSwKZG90bmV0ID0geyAibXNuZXQiIH0sCn0sCm9uc29sdXRpb24gPSBmdW5jdGlvbihzbG4pCnByZW1ha2UuZ2VuZXJhdGUoc2xuLCAiJSUuc2xuIiwgdnN0dWRpby5zbG4yMDA1LmdlbmVyYXRlKQplbmQsCm9ucHJvamVjdCA9IGZ1bmN0aW9uKHByaikKaWYgcHJlbWFrZS5pc2RvdG5ldHByb2plY3QocHJqKSB0aGVuCnByZW1ha2UuZ2VuZXJhdGUocHJqLCAiJSUuY3Nwcm9qIiwgdnN0dWRpby5jczIwMDUuZ2VuZXJhdGUpCnByZW1ha2UuZ2VuZXJhdGUocHJqLCAiJSUuY3Nwcm9qLnVzZXIiLCB2c3R1ZGlvLmNzMjAwNS5nZW5lcmF0ZV91c2VyKQplbHNlCnByZW1ha2UuZ2VuZXJhdGUocHJqLCAiJSUudmNwcm9qIiwgdnN0dWRpby52YzIwMHguZ2VuZXJhdGUpCnByZW1ha2UuZ2VuZXJhdGUocHJqLCAiJSUudmNwcm9qLnVzZXIiLCB2c3R1ZGlvLnZjMjAweC5nZW5lcmF0ZV91c2VyKQplbmQKZW5kLApvbmNsZWFuc29sdXRpb24gPSB2c3R1ZGlvLmNsZWFuc29sdXRpb24sCm9uY2xlYW5wcm9qZWN0ICA9IHZzdHVkaW8uY2xlYW5wcm9qZWN0LApvbmNsZWFudGFyZ2V0ICAgPSB2c3R1ZGlvLmNsZWFudGFyZ2V0LAp2c3R1ZGlvID0gewpwcm9kdWN0VmVyc2lvbiAgPSAiOC4wLjUwNzI3IiwKc29sdXRpb25WZXJzaW9uID0gIjkiLAp9Cn0KbmV3YWN0aW9uIHsKdHJpZ2dlciAgICAgICAgID0gInZzMjAwOCIsCnNob3J0bmFtZSAgICAgICA9ICJWaXN1YWwgU3R1ZGlvIDIwMDgiLApkZXNjcmlwdGlvbiAgICAgPSAiR2VuZXJhdGUgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMjAwOCBwcm9qZWN0IGZpbGVzIiwKb3MgICAgICAgICAgICAgID0gIndpbmRvd3MiLAp2YWxpZF9raW5kcyAgICAgPSB7ICJDb25zb2xlQXBwIiwgIldpbmRvd2VkQXBwIiwgIlN0YXRpY0xpYiIsICJTaGFyZWRMaWIiIH0sCnZhbGlkX2xhbmd1YWdlcyA9IHsgIkMiLCAiQysrIiwgIkMjIiB9LAp2YWxpZF90b29scyAgICAgPSB7CmNjICAgICA9IHsgIm1zYyIgICB9LApkb3RuZXQgPSB7ICJtc25ldCIgfSwKfSwKb25zb2x1dGlvbiA9IGZ1bmN0aW9uKHNsbikKcHJlbWFrZS5nZW5lcmF0ZShzbG4sICIlJS5zbG4iLCB2c3R1ZGlvLnNsbjIwMDUuZ2VuZXJhdGUpCmVuZCwKb25wcm9qZWN0ID0gZnVuY3Rpb24ocHJqKQppZiBwcmVtYWtlLmlzZG90bmV0cHJvamVjdChwcmopIHRoZW4KcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS5jc3Byb2oiLCB2c3R1ZGlvLmNzMjAwNS5nZW5lcmF0ZSkKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS5jc3Byb2oudXNlciIsIHZzdHVkaW8uY3MyMDA1LmdlbmVyYXRlX3VzZXIpCmVsc2UKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS52Y3Byb2oiLCB2c3R1ZGlvLnZjMjAweC5nZW5lcmF0ZSkKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS52Y3Byb2oudXNlciIsIHZzdHVkaW8udmMyMDB4LmdlbmVyYXRlX3VzZXIpCmVuZAplbmQsCm9uY2xlYW5zb2x1dGlvbiA9IHZzdHVkaW8uY2xlYW5zb2x1dGlvbiwKb25jbGVhbnByb2plY3QgID0gdnN0dWRpby5jbGVhbnByb2plY3QsCm9uY2xlYW50YXJnZXQgICA9IHZzdHVkaW8uY2xlYW50YXJnZXQsCnZzdHVkaW8gPSB7CnByb2R1Y3RWZXJzaW9uICA9ICI5LjAuMjEwMjIiLApzb2x1dGlvblZlcnNpb24gPSAiMTAiLAp0b29sc1ZlcnNpb24gICAgPSAiMy41IiwKfQp9Cm5ld2FjdGlvbgp7CnRyaWdnZXIgICAgICAgICA9ICJ2czIwMTAiLApzaG9ydG5hbWUgICAgICAgPSAiVmlzdWFsIFN0dWRpbyAyMDEwIiwKZGVzY3JpcHRpb24gICAgID0gIkdlbmVyYXRlIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDIwMTAgcHJvamVjdCBmaWxlcyIsCm9zICAgICAgICAgICAgICA9ICJ3aW5kb3dzIiwKdmFsaWRfa2luZHMgICAgID0geyAiQ29uc29sZUFwcCIsICJXaW5kb3dlZEFwcCIsICJTdGF0aWNMaWIiLCAiU2hhcmVkTGliIiB9LAp2YWxpZF9sYW5ndWFnZXMgPSB7ICJDIiwgIkMrKyIsICJDIyJ9LAp2YWxpZF90b29scyAgICAgPSB7CmNjICAgICA9IHsgIm1zYyIgICB9LApkb3RuZXQgPSB7ICJtc25ldCIgfSwKfSwKb25zb2x1dGlvbiA9IGZ1bmN0aW9uKHNsbikKcHJlbWFrZS5nZW5lcmF0ZShzbG4sICIlJS5zbG4iLCB2c3R1ZGlvLnNsbjIwMDUuZ2VuZXJhdGUpCmVuZCwKb25wcm9qZWN0ID0gZnVuY3Rpb24ocHJqKQppZiBwcmVtYWtlLmlzZG90bmV0cHJvamVjdChwcmopIHRoZW4KcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS5jc3Byb2oiLCB2c3R1ZGlvLmNzMjAwNS5nZW5lcmF0ZSkKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS5jc3Byb2oudXNlciIsIHZzdHVkaW8uY3MyMDA1LmdlbmVyYXRlX3VzZXIpCmVsc2UKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS52Y3hwcm9qIiwgcHJlbWFrZS52czIwMTBfdmN4cHJvaikKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS52Y3hwcm9qLnVzZXIiLCBwcmVtYWtlLnZzMjAxMF92Y3hwcm9qX3VzZXIpCnByZW1ha2UuZ2VuZXJhdGUocHJqLCAiJSUudmN4cHJvai5maWx0ZXJzIiwgdnN0dWRpby52YzIwMTAuZ2VuZXJhdGVfZmlsdGVycykKZW5kCmVuZCwKb25jbGVhbnNvbHV0aW9uID0gcHJlbWFrZS52c3R1ZGlvLmNsZWFuc29sdXRpb24sCm9uY2xlYW5wcm9qZWN0ICA9IHByZW1ha2UudnN0dWRpby5jbGVhbnByb2plY3QsCm9uY2xlYW50YXJnZXQgICA9IHByZW1ha2UudnN0dWRpby5jbGVhbnRhcmdldCwKdnN0dWRpbyA9IHsKcHJvZHVjdFZlcnNpb24gID0gIjguMC4zMDcwMyIsCnNvbHV0aW9uVmVyc2lvbiA9ICIxMSIsCnRhcmdldEZyYW1ld29yayA9ICI0LjAiLAp0b29sc1ZlcnNpb24gICAgPSAiNC4wIiwKfQp9CgBwcmVtYWtlLnZzdHVkaW8uc2xuMjAwMiA9IHsgfQpsb2NhbCB2c3R1ZGlvID0gcHJlbWFrZS52c3R1ZGlvCmxvY2FsIHNsbjIwMDIgPSBwcmVtYWtlLnZzdHVkaW8uc2xuMjAwMgpmdW5jdGlvbiBzbG4yMDAyLmdlbmVyYXRlKHNsbikKaW8uZW9sID0gJ1xyXG4nCnNsbi52c3R1ZGlvX2NvbmZpZ3MgPSBwcmVtYWtlLnZzdHVkaW8uYnVpbGRjb25maWdzKHNsbikKX3AoJ01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDcuMDAnKQpmb3IgcHJqIGluIHByZW1ha2Uuc29sdXRpb24uZWFjaHByb2plY3Qoc2xuKSBkbwpsb2NhbCBwcm9qcGF0aCA9IHBhdGgudHJhbnNsYXRlKHBhdGguZ2V0cmVsYXRpdmUoc2xuLmxvY2F0aW9uLCB2c3R1ZGlvLnByb2plY3RmaWxlKHByaikpKQpfcCgnUHJvamVjdCgieyVzfSIpID0gIiVzIiwgIiVzIiwgInslc30iJywgdnN0dWRpby50b29sKHByaiksIHByai5uYW1lLCBwcm9qcGF0aCwgcHJqLnV1aWQpCl9wKCdFbmRQcm9qZWN0JykKZW5kCl9wKCdHbG9iYWwnKQpfcCgxLCdHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbicpCmZvciBpLCBjZmduYW1lIGluIGlwYWlycyhzbG4uY29uZmlndXJhdGlvbnMpIGRvCl9wKDIsJ0NvbmZpZ05hbWUuJWQgPSAlcycsIGkgLSAxLCBjZmduYW1lKQplbmQKX3AoMSwnRW5kR2xvYmFsU2VjdGlvbicpCl9wKDEsJ0dsb2JhbFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0U29sdXRpb24nKQpfcCgxLCdFbmRHbG9iYWxTZWN0aW9uJykKX3AoMSwnR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvbikgPSBwb3N0U29sdXRpb24nKQpmb3IgcHJqIGluIHByZW1ha2Uuc29sdXRpb24uZWFjaHByb2plY3Qoc2xuKSBkbwpmb3IgXywgY2ZnbmFtZSBpbiBpcGFpcnMoc2xuLmNvbmZpZ3VyYXRpb25zKSBkbwpfcCgyLCd7JXN9LiVzLkFjdGl2ZUNmZyA9ICVzfCVzJywgcHJqLnV1aWQsIGNmZ25hbWUsIGNmZ25hbWUsIHZzdHVkaW8uYXJjaChwcmopKQpfcCgyLCd7JXN9LiVzLkJ1aWxkLjAgPSAlc3wlcycsIHByai51dWlkLCBjZmduYW1lLCBjZmduYW1lLCB2c3R1ZGlvLmFyY2gocHJqKSkKZW5kCmVuZApfcCgxLCdFbmRHbG9iYWxTZWN0aW9uJykKX3AoMSwnR2xvYmFsU2VjdGlvbihFeHRlbnNpYmlsaXR5R2xvYmFscykgPSBwb3N0U29sdXRpb24nKQpfcCgxLCdFbmRHbG9iYWxTZWN0aW9uJykKX3AoMSwnR2xvYmFsU2VjdGlvbihFeHRlbnNpYmlsaXR5QWRkSW5zKSA9IHBvc3RTb2x1dGlvbicpCl9wKDEsJ0VuZEdsb2JhbFNlY3Rpb24nKQpfcCgnRW5kR2xvYmFsJykKZW5kCgBwcmVtYWtlLnZzdHVkaW8uY3MyMDAyID0geyB9CmxvY2FsIHZzdHVkaW8gPSBwcmVtYWtlLnZzdHVkaW8KbG9jYWwgY3MyMDAyID0gcHJlbWFrZS52c3R1ZGlvLmNzMjAwMgpsb2NhbCBmdW5jdGlvbiBnZXRlbGVtZW50cyhwcmosIGFjdGlvbiwgZm5hbWUpCmlmIGFjdGlvbiA9PSAiQ29tcGlsZSIgYW5kIGZuYW1lOmVuZHN3aXRoKCIuY3MiKSB0aGVuCnJldHVybiAiU3ViVHlwZUNvZGUiCmVuZAppZiBhY3Rpb24gPT0gIkVtYmVkZGVkUmVzb3VyY2UiIGFuZCBmbmFtZTplbmRzd2l0aCgiLnJlc3giKSB0aGVuCmxvY2FsIGJhc2VuYW1lID0gZm5hbWU6c3ViKDEsIC02KQpsb2NhbCB0ZXN0bmFtZSA9IHBhdGguZ2V0bmFtZShiYXNlbmFtZSAuLiAiLmNzIikKaWYgcHJlbWFrZS5maW5kZmlsZShwcmosIHRlc3RuYW1lKSB0aGVuCnJldHVybiAiRGVwZW5kZW5jeSIsIHRlc3RuYW1lCmVuZAplbmQKcmV0dXJuICJOb25lIgplbmQKZnVuY3Rpb24gY3MyMDAyLkZpbGVzKHByaikKbG9jYWwgdHIgPSBwcmVtYWtlLnByb2plY3QuYnVpbGRzb3VyY2V0cmVlKHByaikKcHJlbWFrZS50cmVlLnRyYXZlcnNlKHRyLCB7Cm9ubGVhZiA9IGZ1bmN0aW9uKG5vZGUpCmxvY2FsIGFjdGlvbiA9IHByZW1ha2UuZG90bmV0LmdldGJ1aWxkYWN0aW9uKG5vZGUuY2ZnKQpsb2NhbCBmbmFtZSAgPSBwYXRoLnRyYW5zbGF0ZShwcmVtYWtlLmVzYyhub2RlLmNmZy5uYW1lKSwgIlxcIikKbG9jYWwgZWxlbWVudHMsIGRlcGVuZGVuY3kgPSBnZXRlbGVtZW50cyhwcmosIGFjdGlvbiwgbm9kZS5wYXRoKQpfcCg0LCc8RmlsZScpCl9wKDUsJ1JlbFBhdGggPSAiJXMiJywgZm5hbWUpCl9wKDUsJ0J1aWxkQWN0aW9uID0gIiVzIicsIGFjdGlvbikKaWYgZGVwZW5kZW5jeSB0aGVuCl9wKDUsJ0RlcGVuZGVudFVwb24gPSAiJXMiJywgcHJlbWFrZS5lc2MocGF0aC50cmFuc2xhdGUoZGVwZW5kZW5jeSwgIlxcIikpKQplbmQKaWYgZWxlbWVudHMgPT0gIlN1YlR5cGVDb2RlIiB0aGVuCl9wKDUsJ1N1YlR5cGUgPSAiQ29kZSInKQplbmQKX3AoNCwnLz4nKQplbmQKfSwgZmFsc2UpCmVuZApmdW5jdGlvbiBjczIwMDIuZ2VuZXJhdGUocHJqKQppby5lb2wgPSAiXHJcbiIKX3AoJzxWaXN1YWxTdHVkaW9Qcm9qZWN0PicpCl9wKDEsJzxDU0hBUlAnKQpfcCgyLCdQcm9qZWN0VHlwZSA9ICJMb2NhbCInKQpfcCgyLCdQcm9kdWN0VmVyc2lvbiA9ICIlcyInLCBpaWYoX0FDVElPTiA9PSAidnMyMDAyIiwgIjcuMC45MjU0IiwgIjcuMTAuMzA3NyIpKQpfcCgyLCdTY2hlbWFWZXJzaW9uID0gIiVzIicsIGlpZihfQUNUSU9OID09ICJ2czIwMDIiLCAiMS4wIiwgIjIuMCIpKQpfcCgyLCdQcm9qZWN0R3VpZCA9ICJ7JXN9IicsIHByai51dWlkKQpfcCgxLCc+JykKX3AoMiwnPEJ1aWxkPicpCl9wKDMsJzxTZXR0aW5ncycpCl9wKDQsJ0FwcGxpY2F0aW9uSWNvbiA9ICIiJykKX3AoNCwnQXNzZW1ibHlLZXlDb250YWluZXJOYW1lID0gIiInKQpfcCg0LCdBc3NlbWJseU5hbWUgPSAiJXMiJywgcHJqLmJ1aWxkdGFyZ2V0LmJhc2VuYW1lKQpfcCg0LCdBc3NlbWJseU9yaWdpbmF0b3JLZXlGaWxlID0gIiInKQpfcCg0LCdEZWZhdWx0Q2xpZW50U2NyaXB0ID0gIkpTY3JpcHQiJykKX3AoNCwnRGVmYXVsdEhUTUxQYWdlTGF5b3V0ID0gIkdyaWQiJykKX3AoNCwnRGVmYXVsdFRhcmdldFNjaGVtYSA9ICJJRTUwIicpCl9wKDQsJ0RlbGF5U2lnbiA9ICJmYWxzZSInKQppZiBfQUNUSU9OID09ICJ2czIwMDIiIHRoZW4KX3AoNCwnTm9TdGFuZGFyZExpYnJhcmllcyA9ICJmYWxzZSInKQplbmQKX3AoNCwnT3V0cHV0VHlwZSA9ICIlcyInLCBwcmVtYWtlLmRvdG5ldC5nZXRraW5kKHByaikpCmlmIF9BQ1RJT04gPT0gInZzMjAwMyIgdGhlbgpfcCg0LCdQcmVCdWlsZEV2ZW50ID0gIiInKQpfcCg0LCdQb3N0QnVpbGRFdmVudCA9ICIiJykKZW5kCl9wKDQsJ1Jvb3ROYW1lc3BhY2UgPSAiJXMiJywgcHJqLmJ1aWxkdGFyZ2V0LmJhc2VuYW1lKQppZiBfQUNUSU9OID09ICJ2czIwMDMiIHRoZW4KX3AoNCwnUnVuUG9zdEJ1aWxkRXZlbnQgPSAiT25CdWlsZFN1Y2Nlc3MiJykKZW5kCl9wKDQsJ1N0YXJ0dXBPYmplY3QgPSAiIicpCl9wKDMsJz4nKQpmb3IgY2ZnIGluIHByZW1ha2UuZWFjaGNvbmZpZyhwcmopIGRvCl9wKDQsJzxDb25maWcnKQpfcCg1LCdOYW1lID0gIiVzIicsIHByZW1ha2UuZXNjKGNmZy5uYW1lKSkKX3AoNSwnQWxsb3dVbnNhZmVCbG9ja3MgPSAiJXMiJywgaWlmKGNmZy5mbGFncy5VbnNhZmUsICJ0cnVlIiwgImZhbHNlIikpCl9wKDUsJ0Jhc2VBZGRyZXNzID0gIjI4NTIxMjY3MiInKQpfcCg1LCdDaGVja0Zvck92ZXJmbG93VW5kZXJmbG93ID0gImZhbHNlIicpCl9wKDUsJ0NvbmZpZ3VyYXRpb25PdmVycmlkZUZpbGUgPSAiIicpCl9wKDUsJ0RlZmluZUNvbnN0YW50cyA9ICIlcyInLCBwcmVtYWtlLmVzYyh0YWJsZS5jb25jYXQoY2ZnLmRlZmluZXMsICI7IikpKQpfcCg1LCdEb2N1bWVudGF0aW9uRmlsZSA9ICIiJykKX3AoNSwnRGVidWdTeW1ib2xzID0gIiVzIicsIGlpZihjZmcuZmxhZ3MuU3ltYm9scywgInRydWUiLCAiZmFsc2UiKSkKX3AoNSwnRmlsZUFsaWdubWVudCA9ICI0MDk2IicpCl9wKDUsJ0luY3JlbWVudGFsQnVpbGQgPSAiZmFsc2UiJykKaWYgX0FDVElPTiA9PSAidnMyMDAzIiB0aGVuCl9wKDUsJ05vU3RkTGliID0gImZhbHNlIicpCl9wKDUsJ05vV2FybiA9ICIiJykKZW5kCl9wKDUsJ09wdGltaXplID0gIiVzIicsIGlpZihjZmcuZmxhZ3MuT3B0aW1pemUgb3IgY2ZnLmZsYWdzLk9wdGltaXplU2l6ZSBvciBjZmcuZmxhZ3MuT3B0aW1pemVTcGVlZCwgInRydWUiLCAiZmFsc2UiKSkKX3AoNSwnT3V0cHV0UGF0aCA9ICIlcyInLCBwcmVtYWtlLmVzYyhjZmcuYnVpbGR0YXJnZXQuZGlyZWN0b3J5KSkKX3AoNSwnUmVnaXN0ZXJGb3JDb21JbnRlcm9wID0gImZhbHNlIicpCl9wKDUsJ1JlbW92ZUludGVnZXJDaGVja3MgPSAiZmFsc2UiJykKX3AoNSwnVHJlYXRXYXJuaW5nc0FzRXJyb3JzID0gIiVzIicsIGlpZihjZmcuZmxhZ3MuRmF0YWxXYXJuaW5ncywgInRydWUiLCAiZmFsc2UiKSkKX3AoNSwnV2FybmluZ0xldmVsID0gIjQiJykKX3AoNCwnLz4nKQplbmQKX3AoMywnPC9TZXR0aW5ncz4nKQpfcCgzLCc8UmVmZXJlbmNlcz4nKQpmb3IgXywgcmVmIGluIGlwYWlycyhwcmVtYWtlLmdldGxpbmtzKHByaiwgInNpYmxpbmdzIiwgIm9iamVjdCIpKSBkbwpfcCg0LCc8UmVmZXJlbmNlJykKX3AoNSwnTmFtZSA9ICIlcyInLCByZWYuYnVpbGR0YXJnZXQuYmFzZW5hbWUpCl9wKDUsJ1Byb2plY3QgPSAieyVzfSInLCByZWYudXVpZCkKX3AoNSwnUGFja2FnZSA9ICJ7JXN9IicsIHZzdHVkaW8udG9vbChyZWYpKQpfcCg0LCcvPicpCmVuZApmb3IgXywgbGlua25hbWUgaW4gaXBhaXJzKHByZW1ha2UuZ2V0bGlua3MocHJqLCAic3lzdGVtIiwgImZ1bGxwYXRoIikpIGRvCl9wKDQsJzxSZWZlcmVuY2UnKQpfcCg1LCdOYW1lID0gIiVzIicsIHBhdGguZ2V0YmFzZW5hbWUobGlua25hbWUpKQpfcCg1LCdBc3NlbWJseU5hbWUgPSAiJXMiJywgcGF0aC5nZXRuYW1lKGxpbmtuYW1lKSkKaWYgcGF0aC5nZXRkaXJlY3RvcnkobGlua25hbWUpIH49ICIuIiB0aGVuCl9wKDUsJ0hpbnRQYXRoID0gIiVzIicsIHBhdGgudHJhbnNsYXRlKGxpbmtuYW1lLCAiXFwiKSkKZW5kCl9wKDQsJy8+JykKZW5kCl9wKDMsJzwvUmVmZXJlbmNlcz4nKQpfcCgyLCc8L0J1aWxkPicpCl9wKDIsJzxGaWxlcz4nKQpfcCgzLCc8SW5jbHVkZT4nKQpjczIwMDIuRmlsZXMocHJqKQpfcCgzLCc8L0luY2x1ZGU+JykKX3AoMiwnPC9GaWxlcz4nKQpfcCgxLCc8L0NTSEFSUD4nKQpfcCgnPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PicpCmVuZAoAbG9jYWwgY3MyMDAyID0gcHJlbWFrZS52c3R1ZGlvLmNzMjAwMgpmdW5jdGlvbiBjczIwMDIuZ2VuZXJhdGVfdXNlcihwcmopCmlvLmVvbCA9ICJcclxuIgpfcCgnPFZpc3VhbFN0dWRpb1Byb2plY3Q+JykKX3AoMSwnPENTSEFSUD4nKQpfcCgyLCc8QnVpbGQ+JykKbG9jYWwgcmVmcGF0aHMgPSB0YWJsZS50cmFuc2xhdGUocHJqLmxpYmRpcnMsIGZ1bmN0aW9uKHYpIHJldHVybiBwYXRoLmdldGFic29sdXRlKHByai5sb2NhdGlvbiAuLiAiLyIgLi4gdikgZW5kKQpfcCgzLCc8U2V0dGluZ3MgUmVmZXJlbmNlUGF0aCA9ICIlcyI+JywgcGF0aC50cmFuc2xhdGUodGFibGUuY29uY2F0KHJlZnBhdGhzLCAiOyIpLCAiXFwiKSkKZm9yIGNmZyBpbiBwcmVtYWtlLmVhY2hjb25maWcocHJqKSBkbwpfcCg0LCc8Q29uZmlnJykKX3AoNSwnTmFtZSA9ICIlcyInLCBwcmVtYWtlLmVzYyhjZmcubmFtZSkpCl9wKDUsJ0VuYWJsZUFTUERlYnVnZ2luZyA9ICJmYWxzZSInKQpfcCg1LCdFbmFibGVBU1BYRGVidWdnaW5nID0gImZhbHNlIicpCl9wKDUsJ0VuYWJsZVVubWFuYWdlZERlYnVnZ2luZyA9ICJmYWxzZSInKQpfcCg1LCdFbmFibGVTUUxTZXJ2ZXJEZWJ1Z2dpbmcgPSAiZmFsc2UiJykKX3AoNSwnUmVtb3RlRGVidWdFbmFibGVkID0gImZhbHNlIicpCl9wKDUsJ1JlbW90ZURlYnVnTWFjaGluZSA9ICIiJykKX3AoNSwnU3RhcnRBY3Rpb24gPSAiUHJvamVjdCInKQpfcCg1LCdTdGFydEFyZ3VtZW50cyA9ICIiJykKX3AoNSwnU3RhcnRQYWdlID0gIiInKQpfcCg1LCdTdGFydFByb2dyYW0gPSAiIicpCl9wKDUsJ1N0YXJ0VVJMID0gIiInKQpfcCg1LCdTdGFydFdvcmtpbmdEaXJlY3RvcnkgPSAiIicpCl9wKDUsJ1N0YXJ0V2l0aElFID0gImZhbHNlIicpCl9wKDQsJy8+JykKZW5kCl9wKDMsJzwvU2V0dGluZ3M+JykKX3AoMiwnPC9CdWlsZD4nKQpfcCgyLCc8T3RoZXJQcm9qZWN0U2V0dGluZ3MnKQpfcCgzLCdDb3B5UHJvamVjdERlc3RpbmF0aW9uRm9sZGVyID0gIiInKQpfcCgzLCdDb3B5UHJvamVjdFVuY1BhdGggPSAiIicpCl9wKDMsJ0NvcHlQcm9qZWN0T3B0aW9uID0gIjAiJykKX3AoMywnUHJvamVjdFZpZXcgPSAiUHJvamVjdEZpbGVzIicpCl9wKDMsJ1Byb2plY3RUcnVzdCA9ICIwIicpCl9wKDIsJy8+JykKX3AoMSwnPC9DU0hBUlA+JykKX3AoJzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4nKQplbmQKAHByZW1ha2UudnN0dWRpby52YzIwMHggPSB7IH0KbG9jYWwgdmMyMDB4ID0gcHJlbWFrZS52c3R1ZGlvLnZjMjAweApsb2NhbCB0cmVlID0gcHJlbWFrZS50cmVlCmxvY2FsIGZ1bmN0aW9uIGJvb2wodmFsdWUpCmlmIChfQUNUSU9OIDwgInZzMjAwNSIpIHRoZW4KcmV0dXJuIGlpZih2YWx1ZSwgIlRSVUUiLCAiRkFMU0UiKQplbHNlCnJldHVybiBpaWYodmFsdWUsICJ0cnVlIiwgImZhbHNlIikKZW5kCmVuZApmdW5jdGlvbiB2YzIwMHgub3B0aW1pemF0aW9uKGNmZykKbG9jYWwgcmVzdWx0ID0gMApmb3IgXywgdmFsdWUgaW4gaXBhaXJzKGNmZy5mbGFncykgZG8KaWYgKHZhbHVlID09ICJPcHRpbWl6ZSIpIHRoZW4KcmVzdWx0ID0gMwplbHNlaWYgKHZhbHVlID09ICJPcHRpbWl6ZVNpemUiKSB0aGVuCnJlc3VsdCA9IDEKZWxzZWlmICh2YWx1ZSA9PSAiT3B0aW1pemVTcGVlZCIpIHRoZW4KcmVzdWx0ID0gMgplbmQKZW5kCnJldHVybiByZXN1bHQKZW5kCmZ1bmN0aW9uIHZjMjAweC5oZWFkZXIoZWxlbWVudCkKaW8uZW9sID0gIlxyXG4iCl9wKCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4nKQpfcCgnPCVzJywgZWxlbWVudCkKX3AoMSwnUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiJykKaWYgX0FDVElPTiA9PSAidnMyMDAyIiB0aGVuCl9wKDEsJ1ZlcnNpb249IjcuMDAiJykKZWxzZWlmIF9BQ1RJT04gPT0gInZzMjAwMyIgdGhlbgpfcCgxLCdWZXJzaW9uPSI3LjEwIicpCmVsc2VpZiBfQUNUSU9OID09ICJ2czIwMDUiIHRoZW4KX3AoMSwnVmVyc2lvbj0iOC4wMCInKQplbHNlaWYgX0FDVElPTiA9PSAidnMyMDA4IiB0aGVuCl9wKDEsJ1ZlcnNpb249IjkuMDAiJykKZW5kCmVuZApmdW5jdGlvbiB2YzIwMHguQ29uZmlndXJhdGlvbihuYW1lLCBjZmcpCl9wKDIsJzxDb25maWd1cmF0aW9uJykKX3AoMywnTmFtZT0iJXMiJywgcHJlbWFrZS5lc2MobmFtZSkpCl9wKDMsJ091dHB1dERpcmVjdG9yeT0iJXMiJywgcHJlbWFrZS5lc2MoY2ZnLmJ1aWxkdGFyZ2V0LmRpcmVjdG9yeSkpCl9wKDMsJ0ludGVybWVkaWF0ZURpcmVjdG9yeT0iJXMiJywgcHJlbWFrZS5lc2MoY2ZnLm9iamVjdHNkaXIpKQpsb2NhbCBjZmd0eXBlCmlmIChjZmcua2luZCA9PSAiU2hhcmVkTGliIikgdGhlbgpjZmd0eXBlID0gMgplbHNlaWYgKGNmZy5raW5kID09ICJTdGF0aWNMaWIiKSB0aGVuCmNmZ3R5cGUgPSA0CmVsc2UKY2ZndHlwZSA9IDEKZW5kCl9wKDMsJ0NvbmZpZ3VyYXRpb25UeXBlPSIlcyInLCBjZmd0eXBlKQppZiAoY2ZnLmZsYWdzLk1GQykgdGhlbgpfcCgzLCAnVXNlT2ZNRkM9IiVkIicsIGlpZihjZmcuZmxhZ3MuU3RhdGljUnVudGltZSwgMSwgMikpCmVuZCAgCmlmIChjZmcuZmxhZ3MuQVRMIG9yIGNmZy5mbGFncy5TdGF0aWNBVEwpIHRoZW4KX3AoMywgJ1VzZU9mQVRMPSIlZCInLCBpaWYoY2ZnLmZsYWdzLlN0YXRpY0FUTCwgMSwgMikpCmVuZApfcCgzLCdDaGFyYWN0ZXJTZXQ9IiVzIicsIGlpZihjZmcuZmxhZ3MuVW5pY29kZSwgMSwgMikpCmlmIGNmZy5mbGFncy5NYW5hZ2VkIHRoZW4KX3AoMywnTWFuYWdlZEV4dGVuc2lvbnM9IjEiJykKZW5kCl9wKDMsJz4nKQplbmQKZnVuY3Rpb24gdmMyMDB4LkZpbGVzKHByaikKbG9jYWwgdHIgPSBwcmVtYWtlLnByb2plY3QuYnVpbGRzb3VyY2V0cmVlKHByaikKdHJlZS50cmF2ZXJzZSh0ciwgewpvbmJyYW5jaGVudGVyID0gZnVuY3Rpb24obm9kZSwgZGVwdGgpCl9wKGRlcHRoLCAnPEZpbHRlcicpCl9wKGRlcHRoLCAnXHROYW1lPSIlcyInLCBub2RlLm5hbWUpCl9wKGRlcHRoLCAnXHRGaWx0ZXI9IiInKQpfcChkZXB0aCwgJ1x0PicpCmVuZCwKb25icmFuY2hleGl0ID0gZnVuY3Rpb24obm9kZSwgZGVwdGgpCl9wKGRlcHRoLCAnPC9GaWx0ZXI+JykKZW5kLApvbmxlYWYgPSBmdW5jdGlvbihub2RlLCBkZXB0aCkKbG9jYWwgZm5hbWUgPSBub2RlLmNmZy5uYW1lCl9wKGRlcHRoLCAnPEZpbGUnKQpfcChkZXB0aCwgJ1x0UmVsYXRpdmVQYXRoPSIlcyInLCBwYXRoLnRyYW5zbGF0ZShmbmFtZSwgIlxcIikpCl9wKGRlcHRoLCAnXHQ+JykKZGVwdGggPSBkZXB0aCArIDEKZm9yIF8sIGNmZ2luZm8gaW4gaXBhaXJzKHByai5zb2x1dGlvbi52c3R1ZGlvX2NvbmZpZ3MpIGRvCmlmIGNmZ2luZm8uaXNyZWFsIHRoZW4KbG9jYWwgY2ZnID0gcHJlbWFrZS5nZXRjb25maWcocHJqLCBjZmdpbmZvLnNyY19idWlsZGNmZywgY2ZnaW5mby5zcmNfcGxhdGZvcm0pCmxvY2FsIHVzZVBDSCA9IChub3QgcHJqLmZsYWdzLk5vUENIIGFuZCBwcmoucGNoc291cmNlID09IG5vZGUuY2ZnLm5hbWUpCmxvY2FsIGlzU291cmNlQ29kZSA9IHBhdGguaXNjcHBmaWxlKGZuYW1lKQpsb2NhbCBuZWVkc0NvbXBpbGVBcyA9IChwYXRoLmlzY2ZpbGUoZm5hbWUpIH49IHByZW1ha2UucHJvamVjdC5pc2Nwcm9qZWN0KHByaikpCmlmIHVzZVBDSCBvciAoaXNTb3VyY2VDb2RlIGFuZCBuZWVkc0NvbXBpbGVBcykgdGhlbgpfcChkZXB0aCwgJzxGaWxlQ29uZmlndXJhdGlvbicpCl9wKGRlcHRoLCAnXHROYW1lPSIlcyInLCBjZmdpbmZvLm5hbWUpCl9wKGRlcHRoLCAnXHQ+JykKX3AoZGVwdGgsICdcdDxUb29sJykKX3AoZGVwdGgsICdcdFx0TmFtZT0iJXMiJywgaWlmKGNmZy5zeXN0ZW0gPT0gIlhib3gzNjAiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZDQ0xYMzYwQ29tcGlsZXJUb29sIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWQ0NMQ29tcGlsZXJUb29sIikpCmlmIG5lZWRzQ29tcGlsZUFzIHRoZW4KX3AoZGVwdGgsICdcdFx0Q29tcGlsZUFzPSIlcyInLCBpaWYocGF0aC5pc2NmaWxlKGZuYW1lKSwgMSwgMikpCmVuZAppZiB1c2VQQ0ggdGhlbgppZiBjZmcuc3lzdGVtID09ICJQUzMiIHRoZW4KbG9jYWwgb3B0aW9ucyA9IHRhYmxlLmpvaW4ocHJlbWFrZS5zbmMuZ2V0Y2ZsYWdzKGNmZyksIAogICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVtYWtlLnNuYy5nZXRjeHhmbGFncyhjZmcpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZnLmJ1aWxkb3B0aW9ucykKb3B0aW9ucyA9IHRhYmxlLmNvbmNhdChvcHRpb25zLCAiICIpOwpvcHRpb25zID0gb3B0aW9ucyAuLiAnIC0tY3JlYXRlX3BjaD0iJChJbnREaXIpLyQoVGFyZ2V0TmFtZSkucGNoIicgICAgICAgICAgICAgICAgICAgIApfcChkZXB0aCwgJ1x0XHRBZGRpdGlvbmFsT3B0aW9ucz0iJXMiJywgcHJlbWFrZS5lc2Mob3B0aW9ucykpCmVsc2UKX3AoZGVwdGgsICdcdFx0VXNlUHJlY29tcGlsZWRIZWFkZXI9IjEiJykKZW5kCmVuZApfcChkZXB0aCwgJ1x0Lz4nKQpfcChkZXB0aCwgJzwvRmlsZUNvbmZpZ3VyYXRpb24+JykKZW5kCmVuZAplbmQKZGVwdGggPSBkZXB0aCAtIDEKX3AoZGVwdGgsICc8L0ZpbGU+JykKZW5kLAp9LCBmYWxzZSwgMikKZW5kCmZ1bmN0aW9uIHZjMjAweC5QbGF0Zm9ybXMocHJqKQpsb2NhbCB1c2VkID0geyB9Cl9wKDEsJzxQbGF0Zm9ybXM+JykKZm9yIF8sIGNmZyBpbiBpcGFpcnMocHJqLnNvbHV0aW9uLnZzdHVkaW9fY29uZmlncykgZG8KaWYgY2ZnLmlzcmVhbCBhbmQgbm90IHRhYmxlLmNvbnRhaW5zKHVzZWQsIGNmZy5wbGF0Zm9ybSkgdGhlbgp0YWJsZS5pbnNlcnQodXNlZCwgY2ZnLnBsYXRmb3JtKQpfcCgyLCc8UGxhdGZvcm0nKQpfcCgzLCdOYW1lPSIlcyInLCBjZmcucGxhdGZvcm0pCl9wKDIsJy8+JykKZW5kCmVuZApfcCgxLCc8L1BsYXRmb3Jtcz4nKQplbmQKZnVuY3Rpb24gdmMyMDB4LlN5bWJvbHMoY2ZnKQppZiAobm90IGNmZy5mbGFncy5TeW1ib2xzKSB0aGVuCnJldHVybiAwCmVsc2UKaWYgY2ZnLmZsYWdzLk5vRWRpdEFuZENvbnRpbnVlIG9yIAogICB2YzIwMHgub3B0aW1pemF0aW9uKGNmZykgfj0gMCBvciAKICAgY2ZnLmZsYWdzLk1hbmFnZWQgb3IgCiAgIGNmZy5wbGF0Zm9ybSA9PSAieDY0IiB0aGVuCnJldHVybiAzCmVsc2UKcmV0dXJuIDQKZW5kCmVuZAplbmQKZnVuY3Rpb24gdmMyMDB4LlZDQ0xDb21waWxlclRvb2woY2ZnKQpfcCgzLCc8VG9vbCcpCl9wKDQsJ05hbWU9IiVzIicsIGlpZihjZmcucGxhdGZvcm0gfj0gIlhib3gzNjAiLCAiVkNDTENvbXBpbGVyVG9vbCIsICJWQ0NMWDM2MENvbXBpbGVyVG9vbCIpKQppZiAjY2ZnLmJ1aWxkb3B0aW9ucyA+IDAgdGhlbgpfcCg0LCdBZGRpdGlvbmFsT3B0aW9ucz0iJXMiJywgdGFibGUuY29uY2F0KHByZW1ha2UuZXNjKGNmZy5idWlsZG9wdGlvbnMpLCAiICIpKQplbmQKX3AoNCwnT3B0aW1pemF0aW9uPSIlcyInLCB2YzIwMHgub3B0aW1pemF0aW9uKGNmZykpCmlmIGNmZy5mbGFncy5Ob0ZyYW1lUG9pbnRlciB0aGVuCl9wKDQsJ09taXRGcmFtZVBvaW50ZXJzPSIlcyInLCBib29sKHRydWUpKQplbmQKaWYgI2NmZy5pbmNsdWRlZGlycyA+IDAgdGhlbgpfcCg0LCdBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIlcyInLCBwcmVtYWtlLmVzYyhwYXRoLnRyYW5zbGF0ZSh0YWJsZS5jb25jYXQoY2ZnLmluY2x1ZGVkaXJzLCAiOyIpLCAnXFwnKSkpCmVuZAppZiAjY2ZnLmRlZmluZXMgPiAwIHRoZW4KX3AoNCwnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiVzIicsIHByZW1ha2UuZXNjKHRhYmxlLmNvbmNhdChjZmcuZGVmaW5lcywgIjsiKSkpCmVuZAppZiBwcmVtYWtlLmNvbmZpZy5pc2RlYnVnYnVpbGQoY2ZnKSBhbmQgbm90IGNmZy5mbGFncy5Ob01pbmltYWxSZWJ1aWxkIGFuZCBub3QgY2ZnLmZsYWdzLk1hbmFnZWQgdGhlbgpfcCg0LCdNaW5pbWFsUmVidWlsZD0iJXMiJywgYm9vbCh0cnVlKSkKZW5kCmlmIGNmZy5mbGFncy5Ob0V4Y2VwdGlvbnMgdGhlbgpfcCg0LCdFeGNlcHRpb25IYW5kbGluZz0iJXMiJywgaWlmKF9BQ1RJT04gPCAidnMyMDA1IiwgIkZBTFNFIiwgMCkpCmVsc2VpZiBjZmcuZmxhZ3MuU0VIIGFuZCBfQUNUSU9OID4gInZzMjAwMyIgdGhlbgpfcCg0LCdFeGNlcHRpb25IYW5kbGluZz0iMiInKQplbmQKaWYgdmMyMDB4Lm9wdGltaXphdGlvbihjZmcpID09IDAgYW5kIG5vdCBjZmcuZmxhZ3MuTWFuYWdlZCB0aGVuCl9wKDQsJ0Jhc2ljUnVudGltZUNoZWNrcz0iMyInKQplbmQKaWYgdmMyMDB4Lm9wdGltaXphdGlvbihjZmcpIH49IDAgdGhlbgpfcCg0LCdTdHJpbmdQb29saW5nPSIlcyInLCBib29sKHRydWUpKQplbmQKbG9jYWwgcnVudGltZQppZiBwcmVtYWtlLmNvbmZpZy5pc2RlYnVnYnVpbGQoY2ZnKSB0aGVuCnJ1bnRpbWUgPSBpaWYoY2ZnLmZsYWdzLlN0YXRpY1J1bnRpbWUsIDEsIDMpCmVsc2UKcnVudGltZSA9IGlpZihjZmcuZmxhZ3MuU3RhdGljUnVudGltZSwgMCwgMikKZW5kCl9wKDQsJ1J1bnRpbWVMaWJyYXJ5PSIlcyInLCBydW50aW1lKQpfcCg0LCdFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iJXMiJywgYm9vbCh0cnVlKSkKaWYgX0FDVElPTiA+ICJ2czIwMDMiIGFuZCBjZmcucGxhdGZvcm0gfj0gIlhib3gzNjAiIGFuZCBjZmcucGxhdGZvcm0gfj0gIng2NCIgdGhlbgppZiBjZmcuZmxhZ3MuRW5hYmxlU1NFIHRoZW4KX3AoNCwnRW5hYmxlRW5oYW5jZWRJbnN0cnVjdGlvblNldD0iMSInKQplbHNlaWYgY2ZnLmZsYWdzLkVuYWJsZVNTRTIgdGhlbgpfcCg0LCdFbmFibGVFbmhhbmNlZEluc3RydWN0aW9uU2V0PSIyIicpCmVuZAplbmQKaWYgX0FDVElPTiA8ICJ2czIwMDUiIHRoZW4KaWYgY2ZnLmZsYWdzLkZsb2F0RmFzdCB0aGVuCl9wKDQsJ0ltcHJvdmVGbG9hdGluZ1BvaW50Q29uc2lzdGVuY3k9IiVzIicsIGJvb2woZmFsc2UpKQplbHNlaWYgY2ZnLmZsYWdzLkZsb2F0U3RyaWN0IHRoZW4KX3AoNCwnSW1wcm92ZUZsb2F0aW5nUG9pbnRDb25zaXN0ZW5jeT0iJXMiJywgYm9vbCh0cnVlKSkKZW5kCmVsc2UKaWYgY2ZnLmZsYWdzLkZsb2F0RmFzdCB0aGVuCl9wKDQsJ0Zsb2F0aW5nUG9pbnRNb2RlbD0iMiInKQplbHNlaWYgY2ZnLmZsYWdzLkZsb2F0U3RyaWN0IHRoZW4KX3AoNCwnRmxvYXRpbmdQb2ludE1vZGVsPSIxIicpCmVuZAplbmQKaWYgX0FDVElPTiA8ICJ2czIwMDUiIGFuZCBub3QgY2ZnLmZsYWdzLk5vUlRUSSB0aGVuCl9wKDQsJ1J1bnRpbWVUeXBlSW5mbz0iJXMiJywgYm9vbCh0cnVlKSkKZWxzZWlmIF9BQ1RJT04gPiAidnMyMDAzIiBhbmQgY2ZnLmZsYWdzLk5vUlRUSSBhbmQgbm90IGNmZy5mbGFncy5NYW5hZ2VkIHRoZW4KX3AoNCwnUnVudGltZVR5cGVJbmZvPSIlcyInLCBib29sKGZhbHNlKSkKZW5kCmlmIGNmZy5mbGFncy5OYXRpdmVXQ2hhciB0aGVuCl9wKDQsJ1RyZWF0V0NoYXJfdEFzQnVpbHRJblR5cGU9IiVzIicsIGJvb2wodHJ1ZSkpCmVsc2VpZiBjZmcuZmxhZ3MuTm9OYXRpdmVXQ2hhciB0aGVuCl9wKDQsJ1RyZWF0V0NoYXJfdEFzQnVpbHRJblR5cGU9IiVzIicsIGJvb2woZmFsc2UpKQplbmQKaWYgbm90IGNmZy5mbGFncy5Ob1BDSCBhbmQgY2ZnLnBjaGhlYWRlciB0aGVuCl9wKDQsJ1VzZVByZWNvbXBpbGVkSGVhZGVyPSIlcyInLCBpaWYoX0FDVElPTiA8ICJ2czIwMDUiLCAzLCAyKSkKX3AoNCwnUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSIlcyInLCBjZmcucGNoaGVhZGVyKQplbHNlCl9wKDQsJ1VzZVByZWNvbXBpbGVkSGVhZGVyPSIlcyInLCBpaWYoX0FDVElPTiA+ICJ2czIwMDMiIG9yIGNmZy5mbGFncy5Ob1BDSCwgMCwgMikpCmVuZApfcCg0LCdXYXJuaW5nTGV2ZWw9IiVzIicsIGlpZihjZmcuZmxhZ3MuRXh0cmFXYXJuaW5ncywgNCwgMykpCmlmIGNmZy5mbGFncy5GYXRhbFdhcm5pbmdzIHRoZW4KX3AoNCwnV2FybkFzRXJyb3I9IiVzIicsIGJvb2wodHJ1ZSkpCmVuZAppZiBfQUNUSU9OIDwgInZzMjAwOCIgYW5kIG5vdCBjZmcuZmxhZ3MuTWFuYWdlZCB0aGVuCl9wKDQsJ0RldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iJXMiJywgYm9vbChub3QgY2ZnLmZsYWdzLk5vNjRCaXRDaGVja3MpKQplbmQKX3AoNCwnUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9IiQoT3V0RGlyKVxcJXMucGRiIicsIHBhdGguZ2V0YmFzZW5hbWUoY2ZnLmJ1aWxkdGFyZ2V0Lm5hbWUpKQpfcCg0LCdEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIlcyInLCB2YzIwMHguU3ltYm9scyhjZmcpKQppZiBjZmcubGFuZ3VhZ2UgPT0gIkMiIHRoZW4KX3AoNCwgJ0NvbXBpbGVBcz0iMSInKQplbmQKX3AoMywnLz4nKQplbmQKZnVuY3Rpb24gdmMyMDB4LlZDTGlua2VyVG9vbChjZmcpCl9wKDMsJzxUb29sJykKaWYgY2ZnLmtpbmQgfj0gIlN0YXRpY0xpYiIgdGhlbgpfcCg0LCdOYW1lPSIlcyInLCBpaWYoY2ZnLnBsYXRmb3JtIH49ICJYYm94MzYwIiwgIlZDTGlua2VyVG9vbCIsICJWQ1gzNjBMaW5rZXJUb29sIikpCmlmIGNmZy5mbGFncy5Ob0ltcG9ydExpYiB0aGVuCl9wKDQsJ0lnbm9yZUltcG9ydExpYnJhcnk9IiVzIicsIGJvb2wodHJ1ZSkpCmVuZAppZiAjY2ZnLmxpbmtvcHRpb25zID4gMCB0aGVuCl9wKDQsJ0FkZGl0aW9uYWxPcHRpb25zPSIlcyInLCB0YWJsZS5jb25jYXQocHJlbWFrZS5lc2MoY2ZnLmxpbmtvcHRpb25zKSwgIiAiKSkKZW5kCmlmICNjZmcubGlua3MgPiAwIHRoZW4KX3AoNCwnQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJXMiJywgdGFibGUuY29uY2F0KHByZW1ha2UuZ2V0bGlua3MoY2ZnLCAiYWxsIiwgImZ1bGxwYXRoIiksICIgIikpCmVuZApfcCg0LCdPdXRwdXRGaWxlPSIkKE91dERpcilcXCVzIicsIGNmZy5idWlsZHRhcmdldC5uYW1lKQpfcCg0LCdMaW5rSW5jcmVtZW50YWw9IiVzIicsIAppaWYocHJlbWFrZS5jb25maWcuaXNpbmNyZW1lbnRhbGxpbmsoY2ZnKSAsIDIsIDEpKQpfcCg0LCdBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIlcyInLCB0YWJsZS5jb25jYXQocHJlbWFrZS5lc2MocGF0aC50cmFuc2xhdGUoY2ZnLmxpYmRpcnMsICdcXCcpKSAsICI7IikpCmxvY2FsIGRlZmZpbGUgPSBwcmVtYWtlLmZpbmRmaWxlKGNmZywgIi5kZWYiKQppZiBkZWZmaWxlIHRoZW4KX3AoNCwnTW9kdWxlRGVmaW5pdGlvbkZpbGU9IiVzIicsIGRlZmZpbGUpCmVuZAppZiBjZmcuZmxhZ3MuTm9NYW5pZmVzdCB0aGVuCl9wKDQsJ0dlbmVyYXRlTWFuaWZlc3Q9IiVzIicsIGJvb2woZmFsc2UpKQplbmQKX3AoNCwnR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSIlcyInLCBib29sKHZjMjAweC5TeW1ib2xzKGNmZykgfj0gMCkpCmlmIHZjMjAweC5TeW1ib2xzKGNmZykgfj0gMCB0aGVuCl9wKDQsJ1Byb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIkKE91dERpcilcXCVzLnBkYiInLCBwYXRoLmdldGJhc2VuYW1lKGNmZy5idWlsZHRhcmdldC5uYW1lKSkKZW5kCl9wKDQsJ1N1YlN5c3RlbT0iJXMiJywgaWlmKGNmZy5raW5kID09ICJDb25zb2xlQXBwIiwgMSwgMikpCmlmIHZjMjAweC5vcHRpbWl6YXRpb24oY2ZnKSB+PSAwIHRoZW4KX3AoNCwnT3B0aW1pemVSZWZlcmVuY2VzPSIyIicpCl9wKDQsJ0VuYWJsZUNPTURBVEZvbGRpbmc9IjIiJykKZW5kCmlmIChjZmcua2luZCA9PSAiQ29uc29sZUFwcCIgb3IgY2ZnLmtpbmQgPT0gIldpbmRvd2VkQXBwIikgYW5kIG5vdCBjZmcuZmxhZ3MuV2luTWFpbiB0aGVuCl9wKDQsJ0VudHJ5UG9pbnRTeW1ib2w9Im1haW5DUlRTdGFydHVwIicpCmVuZAppZiBjZmcua2luZCA9PSAiU2hhcmVkTGliIiB0aGVuCmxvY2FsIGltcGxpYm5hbWUgPSBjZmcubGlua3RhcmdldC5mdWxscGF0aApfcCg0LCdJbXBvcnRMaWJyYXJ5PSIlcyInLCBpaWYoY2ZnLmZsYWdzLk5vSW1wb3J0TGliLCBjZmcub2JqZWN0c2RpciAuLiAiXFwiIC4uIHBhdGguZ2V0bmFtZShpbXBsaWJuYW1lKSwgaW1wbGlibmFtZSkpCmVuZApfcCg0LCdUYXJnZXRNYWNoaW5lPSIlZCInLCBpaWYoY2ZnLnBsYXRmb3JtID09ICJ4NjQiLCAxNywgMSkpCmVsc2UKX3AoNCwnTmFtZT0iVkNMaWJyYXJpYW5Ub29sIicpCmlmICNjZmcubGlua3MgPiAwIHRoZW4KX3AoNCwnQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJXMiJywgdGFibGUuY29uY2F0KHByZW1ha2UuZ2V0bGlua3MoY2ZnLCAiYWxsIiwgImZ1bGxwYXRoIiksICIgIikpCmVuZApfcCg0LCdPdXRwdXRGaWxlPSIkKE91dERpcilcXCVzIicsIGNmZy5idWlsZHRhcmdldC5uYW1lKQppZiAjY2ZnLmxpYmRpcnMgPiAwIHRoZW4KX3AoNCwnQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iJXMiJywgcHJlbWFrZS5lc2MocGF0aC50cmFuc2xhdGUodGFibGUuY29uY2F0KGNmZy5saWJkaXJzICwgIjsiKSkpKQplbmQKbG9jYWwgYWRkbE9wdGlvbnMgPSB7fQppZiBjZmcucGxhdGZvcm0gPT0gIngzMiIgdGhlbgp0YWJsZS5pbnNlcnQoYWRkbE9wdGlvbnMsICIvTUFDSElORTpYODYiKQplbHNlaWYgY2ZnLnBsYXRmb3JtID09ICJ4NjQiIHRoZW4KdGFibGUuaW5zZXJ0KGFkZGxPcHRpb25zLCAiL01BQ0hJTkU6WDY0IikKZW5kCmFkZGxPcHRpb25zID0gdGFibGUuam9pbihhZGRsT3B0aW9ucywgY2ZnLmxpbmtvcHRpb25zKQppZiAjYWRkbE9wdGlvbnMgPiAwIHRoZW4KX3AoNCwnQWRkaXRpb25hbE9wdGlvbnM9IiVzIicsIHRhYmxlLmNvbmNhdChwcmVtYWtlLmVzYyhhZGRsT3B0aW9ucyksICIgIikpCmVuZAplbmQKX3AoMywnLz4nKQplbmQKZnVuY3Rpb24gdmMyMDB4LlZDQ0xDb21waWxlclRvb2xfUFMzKGNmZykKX3AoMywnPFRvb2wnKQpfcCg0LCdOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIicpCmxvY2FsIGJ1aWxkb3B0aW9ucyA9IHRhYmxlLmpvaW4ocHJlbWFrZS5zbmMuZ2V0Y2ZsYWdzKGNmZyksIHByZW1ha2Uuc25jLmdldGN4eGZsYWdzKGNmZyksIGNmZy5idWlsZG9wdGlvbnMpCmlmIG5vdCBjZmcuZmxhZ3MuTm9QQ0ggYW5kIGNmZy5wY2hoZWFkZXIgdGhlbgpfcCg0LCdVc2VQcmVjb21waWxlZEhlYWRlcj0iJXMiJywgaWlmKF9BQ1RJT04gPCAidnMyMDA1IiwgMywgMikpCl9wKDQsJ1ByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iJXMiJywgcGF0aC5nZXRuYW1lKGNmZy5wY2hoZWFkZXIpKQp0YWJsZS5pbnNlcnQoYnVpbGRvcHRpb25zLCAnLS11c2VfcGNoPSIkKEludERpcikvJChUYXJnZXROYW1lKS5wY2giJykKZWxzZQpfcCg0LCdVc2VQcmVjb21waWxlZEhlYWRlcj0iJXMiJywgaWlmKF9BQ1RJT04gPiAidnMyMDAzIiBvciBjZmcuZmxhZ3MuTm9QQ0gsIDAsIDIpKQplbmQKX3AoNCwnQWRkaXRpb25hbE9wdGlvbnM9IiVzIicsIHByZW1ha2UuZXNjKHRhYmxlLmNvbmNhdChidWlsZG9wdGlvbnMsICIgIikpKQppZiAjY2ZnLmluY2x1ZGVkaXJzID4gMCB0aGVuCl9wKDQsJ0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiVzIicsIHByZW1ha2UuZXNjKHBhdGgudHJhbnNsYXRlKHRhYmxlLmNvbmNhdChjZmcuaW5jbHVkZWRpcnMsICI7IiksICdcXCcpKSkKZW5kCmlmICNjZmcuZGVmaW5lcyA+IDAgdGhlbgpfcCg0LCdQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iJXMiJywgdGFibGUuY29uY2F0KHByZW1ha2UuZXNjKGNmZy5kZWZpbmVzKSwgIjsiKSkKZW5kCl9wKDQsJ1Byb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIkKE91dERpcilcXCVzLnBkYiInLCBwYXRoLmdldGJhc2VuYW1lKGNmZy5idWlsZHRhcmdldC5uYW1lKSkKX3AoNCwnRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMCInKQpfcCg0LCdDb21waWxlQXM9IjAiJykKX3AoMywnLz4nKQplbmQKZnVuY3Rpb24gdmMyMDB4LlZDTGlua2VyVG9vbF9QUzMoY2ZnKQpfcCgzLCc8VG9vbCcpCmlmIGNmZy5raW5kIH49ICJTdGF0aWNMaWIiIHRoZW4KX3AoNCwnTmFtZT0iVkNMaW5rZXJUb29sIicpCmxvY2FsIGJ1aWxkb3B0aW9ucyA9IHRhYmxlLmpvaW4ocHJlbWFrZS5zbmMuZ2V0bGRmbGFncyhjZmcpLCBjZmcubGlua29wdGlvbnMpCmlmICNidWlsZG9wdGlvbnMgPiAwIHRoZW4KX3AoNCwnQWRkaXRpb25hbE9wdGlvbnM9IiVzIicsIHByZW1ha2UuZXNjKHRhYmxlLmNvbmNhdChidWlsZG9wdGlvbnMsICIgIikpKQplbmQKaWYgI2NmZy5saW5rcyA+IDAgdGhlbgpfcCg0LCdBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIlcyInLCB0YWJsZS5jb25jYXQocHJlbWFrZS5nZXRsaW5rcyhjZmcsICJhbGwiLCAiZnVsbHBhdGgiKSwgIiAiKSkKZW5kCl9wKDQsJ091dHB1dEZpbGU9IiQoT3V0RGlyKVxcJXMiJywgY2ZnLmJ1aWxkdGFyZ2V0Lm5hbWUpCl9wKDQsJ0xpbmtJbmNyZW1lbnRhbD0iMCInKQpfcCg0LCdBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIlcyInLCB0YWJsZS5jb25jYXQocHJlbWFrZS5lc2MocGF0aC50cmFuc2xhdGUoY2ZnLmxpYmRpcnMsICdcXCcpKSAsICI7IikpCl9wKDQsJ0dlbmVyYXRlTWFuaWZlc3Q9IiVzIicsIGJvb2woZmFsc2UpKQpfcCg0LCdQcm9ncmFtRGF0YWJhc2VGaWxlPSIiJykKX3AoNCwnUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIicpCl9wKDQsJ0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIicpCmVsc2UKX3AoNCwnTmFtZT0iVkNMaWJyYXJpYW5Ub29sIicpCmxvY2FsIGJ1aWxkb3B0aW9ucyA9IHRhYmxlLmpvaW4ocHJlbWFrZS5zbmMuZ2V0bGRmbGFncyhjZmcpLCBjZmcubGlua29wdGlvbnMpCmlmICNidWlsZG9wdGlvbnMgPiAwIHRoZW4KX3AoNCwnQWRkaXRpb25hbE9wdGlvbnM9IiVzIicsIHByZW1ha2UuZXNjKHRhYmxlLmNvbmNhdChidWlsZG9wdGlvbnMsICIgIikpKQplbmQKaWYgI2NmZy5saW5rcyA+IDAgdGhlbgpfcCg0LCdBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIlcyInLCB0YWJsZS5jb25jYXQocHJlbWFrZS5nZXRsaW5rcyhjZmcsICJhbGwiLCAiZnVsbHBhdGgiKSwgIiAiKSkKZW5kCl9wKDQsJ091dHB1dEZpbGU9IiQoT3V0RGlyKVxcJXMiJywgY2ZnLmJ1aWxkdGFyZ2V0Lm5hbWUpCmlmICNjZmcubGliZGlycyA+IDAgdGhlbgpfcCg0LCdBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIlcyInLCBwcmVtYWtlLmVzYyhwYXRoLnRyYW5zbGF0ZSh0YWJsZS5jb25jYXQoY2ZnLmxpYmRpcnMgLCAiOyIpKSkpCmVuZAplbmQKX3AoMywnLz4nKQplbmQKZnVuY3Rpb24gdmMyMDB4LlZDUmVzb3VyY2VDb21waWxlclRvb2woY2ZnKQpfcCgzLCc8VG9vbCcpCl9wKDQsJ05hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiJykKaWYgI2NmZy5yZXNvcHRpb25zID4gMCB0aGVuCl9wKDQsJ0FkZGl0aW9uYWxPcHRpb25zPSIlcyInLCB0YWJsZS5jb25jYXQocHJlbWFrZS5lc2MoY2ZnLnJlc29wdGlvbnMpLCAiICIpKQplbmQKaWYgI2NmZy5kZWZpbmVzID4gMCBvciAjY2ZnLnJlc2RlZmluZXMgPiAwIHRoZW4KX3AoNCwnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiVzIicsIHRhYmxlLmNvbmNhdChwcmVtYWtlLmVzYyh0YWJsZS5qb2luKGNmZy5kZWZpbmVzLCBjZmcucmVzZGVmaW5lcykpLCAiOyIpKQplbmQKaWYgI2NmZy5pbmNsdWRlZGlycyA+IDAgb3IgI2NmZy5yZXNpbmNsdWRlZGlycyA+IDAgdGhlbgpsb2NhbCBkaXJzID0gdGFibGUuam9pbihjZmcuaW5jbHVkZWRpcnMsIGNmZy5yZXNpbmNsdWRlZGlycykKX3AoNCwnQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJXMiJywgcHJlbWFrZS5lc2MocGF0aC50cmFuc2xhdGUodGFibGUuY29uY2F0KGRpcnMsICI7IiksICdcXCcpKSkKZW5kCl9wKDMsJy8+JykKZW5kCmZ1bmN0aW9uIHZjMjAweC5WQ01hbmlmZXN0VG9vbChjZmcpCmxvY2FsIG1hbmlmZXN0cyA9IHsgfQpmb3IgXywgZm5hbWUgaW4gaXBhaXJzKGNmZy5maWxlcykgZG8KaWYgcGF0aC5nZXRleHRlbnNpb24oZm5hbWUpID09ICIubWFuaWZlc3QiIHRoZW4KdGFibGUuaW5zZXJ0KG1hbmlmZXN0cywgZm5hbWUpCmVuZAplbmQKX3AoMywnPFRvb2wnKQpfcCg0LCdOYW1lPSJWQ01hbmlmZXN0VG9vbCInKQppZiAjbWFuaWZlc3RzID4gMCB0aGVuCl9wKDQsJ0FkZGl0aW9uYWxNYW5pZmVzdEZpbGVzPSIlcyInLCBwcmVtYWtlLmVzYyh0YWJsZS5jb25jYXQobWFuaWZlc3RzLCAiOyIpKSkKZW5kCl9wKDMsJy8+JykKZW5kCmZ1bmN0aW9uIHZjMjAweC5WQ01JRExUb29sKGNmZykKX3AoMywnPFRvb2wnKQpfcCg0LCdOYW1lPSJWQ01JRExUb29sIicpCmlmIGNmZy5wbGF0Zm9ybSA9PSAieDY0IiB0aGVuCl9wKDQsJ1RhcmdldEVudmlyb25tZW50PSIzIicpCmVuZApfcCgzLCcvPicpCmVuZApmdW5jdGlvbiB2YzIwMHguYnVpbGRzdGVwc2Jsb2NrKG5hbWUsIHN0ZXBzKQpfcCgzLCc8VG9vbCcpCl9wKDQsJ05hbWU9IiVzIicsIG5hbWUpCmlmICNzdGVwcyA+IDAgdGhlbgpfcCg0LCdDb21tYW5kTGluZT0iJXMiJywgcHJlbWFrZS5lc2ModGFibGUuaW1wbG9kZShzdGVwcywgIiIsICIiLCAiXHJcbiIpKSkKZW5kCl9wKDMsJy8+JykKZW5kCmxvY2FsIGJsb2NrbWFwID0gCnsKVkNDTENvbXBpbGVyVG9vbCAgICAgICA9IHZjMjAweC5WQ0NMQ29tcGlsZXJUb29sLApWQ0NMQ29tcGlsZXJUb29sX1BTMyAgID0gdmMyMDB4LlZDQ0xDb21waWxlclRvb2xfUFMzLApWQ0xpbmtlclRvb2wgICAgICAgICAgID0gdmMyMDB4LlZDTGlua2VyVG9vbCwKVkNMaW5rZXJUb29sX1BTMyAgICAgICA9IHZjMjAweC5WQ0xpbmtlclRvb2xfUFMzLApWQ01hbmlmZXN0VG9vbCAgICAgICAgID0gdmMyMDB4LlZDTWFuaWZlc3RUb29sLApWQ01JRExUb29sICAgICAgICAgICAgID0gdmMyMDB4LlZDTUlETFRvb2wsClZDUmVzb3VyY2VDb21waWxlclRvb2wgPSB2YzIwMHguVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCwKfQpsb2NhbCBmdW5jdGlvbiBnZXRzZWN0aW9ucyh2ZXJzaW9uLCBwbGF0Zm9ybSkKaWYgdmVyc2lvbiA9PSAidnMyMDAyIiB0aGVuCnJldHVybiB7CiJWQ0NMQ29tcGlsZXJUb29sIiwKIlZDQ3VzdG9tQnVpbGRUb29sIiwKIlZDTGlua2VyVG9vbCIsCiJWQ01JRExUb29sIiwKIlZDUG9zdEJ1aWxkRXZlbnRUb29sIiwKIlZDUHJlQnVpbGRFdmVudFRvb2wiLAoiVkNQcmVMaW5rRXZlbnRUb29sIiwKIlZDUmVzb3VyY2VDb21waWxlclRvb2wiLAoiVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIiwKIlZDV2ViRGVwbG95bWVudFRvb2wiCn0KZW5kCmlmIHZlcnNpb24gPT0gInZzMjAwMyIgdGhlbgpyZXR1cm4gewoiVkNDTENvbXBpbGVyVG9vbCIsCiJWQ0N1c3RvbUJ1aWxkVG9vbCIsCiJWQ0xpbmtlclRvb2wiLAoiVkNNSURMVG9vbCIsCiJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIsCiJWQ1ByZUJ1aWxkRXZlbnRUb29sIiwKIlZDUHJlTGlua0V2ZW50VG9vbCIsCiJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIiwKIlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIsCiJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIiwKIlZDV2ViRGVwbG95bWVudFRvb2wiLAoiVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLAoiVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiCn0KZW5kCmlmIHBsYXRmb3JtID09ICJYYm94MzYwIiB0aGVuCnJldHVybiB7CiJWQ1ByZUJ1aWxkRXZlbnRUb29sIiwKIlZDQ3VzdG9tQnVpbGRUb29sIiwKIlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLAoiVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIiwKIlZDTUlETFRvb2wiLAoiVkNDTENvbXBpbGVyVG9vbCIsCiJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIsCiJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIiwKIlZDUHJlTGlua0V2ZW50VG9vbCIsCiJWQ0xpbmtlclRvb2wiLAoiVkNBTGlua1Rvb2wiLAoiVkNYMzYwSW1hZ2VUb29sIiwKIlZDQnNjTWFrZVRvb2wiLAoiVkNYMzYwRGVwbG95bWVudFRvb2wiLAoiVkNQb3N0QnVpbGRFdmVudFRvb2wiLAoiRGVidWdnZXJUb29sIiwKfQplbmQKaWYgcGxhdGZvcm0gPT0gIlBTMyIgdGhlbgpyZXR1cm4gewoiVkNQcmVCdWlsZEV2ZW50VG9vbCIsCiJWQ0N1c3RvbUJ1aWxkVG9vbCIsCiJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIiwKIlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIsCiJWQ01JRExUb29sIiwKIlZDQ0xDb21waWxlclRvb2xfUFMzIiwKIlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIiwKIlZDUmVzb3VyY2VDb21waWxlclRvb2wiLAoiVkNQcmVMaW5rRXZlbnRUb29sIiwKIlZDTGlua2VyVG9vbF9QUzMiLAoiVkNBTGlua1Rvb2wiLAoiVkNNYW5pZmVzdFRvb2wiLAoiVkNYRENNYWtlVG9vbCIsCiJWQ0JzY01ha2VUb29sIiwKIlZDRnhDb3BUb29sIiwKIlZDQXBwVmVyaWZpZXJUb29sIiwKIlZDV2ViRGVwbG95bWVudFRvb2wiLAoiVkNQb3N0QnVpbGRFdmVudFRvb2wiCn0KZWxzZQpyZXR1cm4gewoiVkNQcmVCdWlsZEV2ZW50VG9vbCIsCiJWQ0N1c3RvbUJ1aWxkVG9vbCIsCiJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIiwKIlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIsCiJWQ01JRExUb29sIiwKIlZDQ0xDb21waWxlclRvb2wiLAoiVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiLAoiVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIsCiJWQ1ByZUxpbmtFdmVudFRvb2wiLAoiVkNMaW5rZXJUb29sIiwKIlZDQUxpbmtUb29sIiwKIlZDTWFuaWZlc3RUb29sIiwKIlZDWERDTWFrZVRvb2wiLAoiVkNCc2NNYWtlVG9vbCIsCiJWQ0Z4Q29wVG9vbCIsCiJWQ0FwcFZlcmlmaWVyVG9vbCIsCiJWQ1dlYkRlcGxveW1lbnRUb29sIiwKIlZDUG9zdEJ1aWxkRXZlbnRUb29sIgp9CmVuZAplbmQKZnVuY3Rpb24gdmMyMDB4LmdlbmVyYXRlKHByaikKdmMyMDB4LmhlYWRlcignVmlzdWFsU3R1ZGlvUHJvamVjdCcpCl9wKDEsJ05hbWU9IiVzIicsIHByZW1ha2UuZXNjKHByai5uYW1lKSkKX3AoMSwnUHJvamVjdEdVSUQ9Inslc30iJywgcHJqLnV1aWQpCmlmIF9BQ1RJT04gPiAidnMyMDAzIiB0aGVuCl9wKDEsJ1Jvb3ROYW1lc3BhY2U9IiVzIicsIHByai5uYW1lKQplbmQKX3AoMSwnS2V5d29yZD0iJXMiJywgaWlmKHByai5mbGFncy5NYW5hZ2VkLCAiTWFuYWdlZENQcm9qIiwgIldpbjMyUHJvaiIpKQpfcCgxLCc+JykKdmMyMDB4LlBsYXRmb3JtcyhwcmopCmlmIF9BQ1RJT04gPiAidnMyMDAzIiB0aGVuCl9wKDEsJzxUb29sRmlsZXM+JykKX3AoMSwnPC9Ub29sRmlsZXM+JykKZW5kCl9wKDEsJzxDb25maWd1cmF0aW9ucz4nKQpmb3IgXywgY2ZnaW5mbyBpbiBpcGFpcnMocHJqLnNvbHV0aW9uLnZzdHVkaW9fY29uZmlncykgZG8KaWYgY2ZnaW5mby5pc3JlYWwgdGhlbgpsb2NhbCBjZmcgPSBwcmVtYWtlLmdldGNvbmZpZyhwcmosIGNmZ2luZm8uc3JjX2J1aWxkY2ZnLCBjZmdpbmZvLnNyY19wbGF0Zm9ybSkKdmMyMDB4LkNvbmZpZ3VyYXRpb24oY2ZnaW5mby5uYW1lLCBjZmcpCmZvciBfLCBibG9jayBpbiBpcGFpcnMoZ2V0c2VjdGlvbnMoX0FDVElPTiwgY2ZnaW5mby5zcmNfcGxhdGZvcm0pKSBkbwppZiBibG9ja21hcFtibG9ja10gdGhlbgpibG9ja21hcFtibG9ja10oY2ZnKQplbHNlaWYgYmxvY2sgPT0gIlZDUHJlQnVpbGRFdmVudFRvb2wiIHRoZW4KdmMyMDB4LmJ1aWxkc3RlcHNibG9jaygiVkNQcmVCdWlsZEV2ZW50VG9vbCIsIGNmZy5wcmVidWlsZGNvbW1hbmRzKQplbHNlaWYgYmxvY2sgPT0gIlZDUHJlTGlua0V2ZW50VG9vbCIgdGhlbgp2YzIwMHguYnVpbGRzdGVwc2Jsb2NrKCJWQ1ByZUxpbmtFdmVudFRvb2wiLCBjZmcucHJlbGlua2NvbW1hbmRzKQplbHNlaWYgYmxvY2sgPT0gIlZDUG9zdEJ1aWxkRXZlbnRUb29sIiB0aGVuCnZjMjAweC5idWlsZHN0ZXBzYmxvY2soIlZDUG9zdEJ1aWxkRXZlbnRUb29sIiwgY2ZnLnBvc3RidWlsZGNvbW1hbmRzKQplbHNlaWYgYmxvY2sgPT0gIlZDWDM2MERlcGxveW1lbnRUb29sIiB0aGVuCl9wKDMsJzxUb29sJykKX3AoNCwnTmFtZT0iVkNYMzYwRGVwbG95bWVudFRvb2wiJykKX3AoNCwnRGVwbG95bWVudFR5cGU9IjAiJykKaWYgI2NmZy5kZXBsb3ltZW50b3B0aW9ucyA+IDAgdGhlbgpfcCg0LCdBZGRpdGlvbmFsT3B0aW9ucz0iJXMiJywgdGFibGUuY29uY2F0KHByZW1ha2UuZXNjKGNmZy5kZXBsb3ltZW50b3B0aW9ucyksICIgIikpCmVuZApfcCgzLCcvPicpCmVsc2VpZiBibG9jayA9PSAiVkNYMzYwSW1hZ2VUb29sIiB0aGVuCl9wKDMsJzxUb29sJykKX3AoNCwnTmFtZT0iVkNYMzYwSW1hZ2VUb29sIicpCmlmICNjZmcuaW1hZ2VvcHRpb25zID4gMCB0aGVuCl9wKDQsJ0FkZGl0aW9uYWxPcHRpb25zPSIlcyInLCB0YWJsZS5jb25jYXQocHJlbWFrZS5lc2MoY2ZnLmltYWdlb3B0aW9ucyksICIgIikpCmVuZAppZiBjZmcuaW1hZ2VwYXRoIH49IG5pbCB0aGVuCl9wKDQsJ091dHB1dEZpbGVOYW1lPSIlcyInLCBwcmVtYWtlLmVzYyhwYXRoLnRyYW5zbGF0ZShjZmcuaW1hZ2VwYXRoKSkpCmVuZApfcCgzLCcvPicpCmVsc2VpZiBibG9jayA9PSAiRGVidWdnZXJUb29sIiB0aGVuCl9wKDMsJzxEZWJ1Z2dlclRvb2wnKQpfcCgzLCcvPicpCmVsc2UKX3AoMywnPFRvb2wnKQpfcCg0LCdOYW1lPSIlcyInLCBibG9jaykKX3AoMywnLz4nKQplbmQKZW5kCl9wKDIsJzwvQ29uZmlndXJhdGlvbj4nKQplbmQKZW5kCl9wKDEsJzwvQ29uZmlndXJhdGlvbnM+JykKX3AoMSwnPFJlZmVyZW5jZXM+JykKX3AoMSwnPC9SZWZlcmVuY2VzPicpCl9wKDEsJzxGaWxlcz4nKQp2YzIwMHguRmlsZXMocHJqKQpfcCgxLCc8L0ZpbGVzPicpCl9wKDEsJzxHbG9iYWxzPicpCl9wKDEsJzwvR2xvYmFscz4nKQpfcCgnPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PicpCmVuZAoAbG9jYWwgdmMyMDB4ID0gcHJlbWFrZS52c3R1ZGlvLnZjMjAweApmdW5jdGlvbiB2YzIwMHguZ2VuZXJhdGVfdXNlcihwcmopCnZjMjAweC5oZWFkZXIoJ1Zpc3VhbFN0dWRpb1VzZXJGaWxlJykKX3AoMSwnU2hvd0FsbEZpbGVzPSJmYWxzZSInKQpfcCgxLCc+JykKX3AoMSwnPENvbmZpZ3VyYXRpb25zPicpCmZvciBfLCBjZmdpbmZvIGluIGlwYWlycyhwcmouc29sdXRpb24udnN0dWRpb19jb25maWdzKSBkbwppZiBjZmdpbmZvLmlzcmVhbCB0aGVuCmxvY2FsIGNmZyA9IHByZW1ha2UuZ2V0Y29uZmlnKHByaiwgY2ZnaW5mby5zcmNfYnVpbGRjZmcsIGNmZ2luZm8uc3JjX3BsYXRmb3JtKQpfcCgyLCc8Q29uZmlndXJhdGlvbicpCl9wKDMsJ05hbWU9IiVzIicsIHByZW1ha2UuZXNjKGNmZ2luZm8ubmFtZSkpCl9wKDMsJz4nKQp2YzIwMHguZGVidWdkaXIoY2ZnKQpfcCgyLCc8L0NvbmZpZ3VyYXRpb24+JykKZW5kCmVuZApfcCgxLCc8L0NvbmZpZ3VyYXRpb25zPicpCl9wKCc8L1Zpc3VhbFN0dWRpb1VzZXJGaWxlPicpCmVuZApmdW5jdGlvbiB2YzIwMHguZW52aXJvbm1lbnRhcmdzKGNmZykKaWYgY2ZnLmVudmlyb25tZW50YXJncyBhbmQgI2NmZy5lbnZpcm9ubWVudGFyZ3MgPiAwIHRoZW4KX3AoNCwnRW52aXJvbm1lbnQ9IiVzIicsIHN0cmluZy5nc3ViKHRhYmxlLmNvbmNhdChjZmcuZW52aXJvbm1lbnRhcmdzLCAiJiN4MEE7IiksJyInLCcmcXVvdDsnKSkKaWYgY2ZnLmZsYWdzLkVudmlyb25tZW50QXJnc0RvbnRNZXJnZSB0aGVuCl9wKDQsJ0Vudmlyb25tZW50TWVyZ2U9ImZhbHNlIicpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHZjMjAweC5kZWJ1Z2RpcihjZmcpCl9wKDMsJzxEZWJ1Z1NldHRpbmdzJykKaWYgY2ZnLmRlYnVnZGlyIHRoZW4KX3AoNCwnV29ya2luZ0RpcmVjdG9yeT0iJXMiJywgcGF0aC50cmFuc2xhdGUoY2ZnLmRlYnVnZGlyLCAnXFwnKSkKZW5kCmlmICNjZmcuZGVidWdhcmdzID4gMCB0aGVuCl9wKDQsJ0NvbW1hbmRBcmd1bWVudHM9IiVzIicsIHRhYmxlLmNvbmNhdChjZmcuZGVidWdhcmdzLCAiICIpKQplbmQKdmMyMDB4LmVudmlyb25tZW50YXJncyhjZmcpCl9wKDMsJy8+JykKZW5kCgBwcmVtYWtlLnZzdHVkaW8uc2xuMjAwMyA9IHsgfQpsb2NhbCB2c3R1ZGlvID0gcHJlbWFrZS52c3R1ZGlvCmxvY2FsIHNsbjIwMDMgPSBwcmVtYWtlLnZzdHVkaW8uc2xuMjAwMwpmdW5jdGlvbiBzbG4yMDAzLmdlbmVyYXRlKHNsbikKaW8uZW9sID0gJ1xyXG4nCnNsbi52c3R1ZGlvX2NvbmZpZ3MgPSBwcmVtYWtlLnZzdHVkaW8uYnVpbGRjb25maWdzKHNsbikKX3AoJ01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDguMDAnKQpmb3IgcHJqIGluIHByZW1ha2Uuc29sdXRpb24uZWFjaHByb2plY3Qoc2xuKSBkbwpsb2NhbCBwcm9qcGF0aCA9IHBhdGgudHJhbnNsYXRlKHBhdGguZ2V0cmVsYXRpdmUoc2xuLmxvY2F0aW9uLCB2c3R1ZGlvLnByb2plY3RmaWxlKHByaikpKQpfcCgnUHJvamVjdCgieyVzfSIpID0gIiVzIiwgIiVzIiwgInslc30iJywgdnN0dWRpby50b29sKHByaiksIHByai5uYW1lLCBwcm9qcGF0aCwgcHJqLnV1aWQpCmxvY2FsIGRlcHMgPSBwcmVtYWtlLmdldGRlcGVuZGVuY2llcyhwcmopCmlmICNkZXBzID4gMCB0aGVuCl9wKCdcdFByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QnKQpmb3IgXywgZGVwIGluIGlwYWlycyhkZXBzKSBkbwpfcCgnXHRcdHslc30gPSB7JXN9JywgZGVwLnV1aWQsIGRlcC51dWlkKQplbmQKX3AoJ1x0RW5kUHJvamVjdFNlY3Rpb24nKQplbmQKX3AoJ0VuZFByb2plY3QnKQplbmQKX3AoJ0dsb2JhbCcpCl9wKCdcdEdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uKSA9IHByZVNvbHV0aW9uJykKZm9yIF8sIGNmZ25hbWUgaW4gaXBhaXJzKHNsbi5jb25maWd1cmF0aW9ucykgZG8KX3AoJ1x0XHQlcyA9ICVzJywgY2ZnbmFtZSwgY2ZnbmFtZSkKZW5kCl9wKCdcdEVuZEdsb2JhbFNlY3Rpb24nKQpfcCgnXHRHbG9iYWxTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFNvbHV0aW9uJykKX3AoJ1x0RW5kR2xvYmFsU2VjdGlvbicpCl9wKCdcdEdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb24pID0gcG9zdFNvbHV0aW9uJykKZm9yIHByaiBpbiBwcmVtYWtlLnNvbHV0aW9uLmVhY2hwcm9qZWN0KHNsbikgZG8KZm9yIF8sIGNmZ25hbWUgaW4gaXBhaXJzKHNsbi5jb25maWd1cmF0aW9ucykgZG8KX3AoJ1x0XHR7JXN9LiVzLkFjdGl2ZUNmZyA9ICVzfCVzJywgcHJqLnV1aWQsIGNmZ25hbWUsIGNmZ25hbWUsIHZzdHVkaW8uYXJjaChwcmopKQpfcCgnXHRcdHslc30uJXMuQnVpbGQuMCA9ICVzfCVzJywgcHJqLnV1aWQsIGNmZ25hbWUsIGNmZ25hbWUsIHZzdHVkaW8uYXJjaChwcmopKQplbmQKZW5kCl9wKCdcdEVuZEdsb2JhbFNlY3Rpb24nKQpfcCgnXHRHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlHbG9iYWxzKSA9IHBvc3RTb2x1dGlvbicpCl9wKCdcdEVuZEdsb2JhbFNlY3Rpb24nKQpfcCgnXHRHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlBZGRJbnMpID0gcG9zdFNvbHV0aW9uJykKX3AoJ1x0RW5kR2xvYmFsU2VjdGlvbicpCl9wKCdFbmRHbG9iYWwnKQplbmQKAHByZW1ha2UudnN0dWRpby5zbG4yMDA1ID0geyB9CmxvY2FsIHZzdHVkaW8gPSBwcmVtYWtlLnZzdHVkaW8KbG9jYWwgc2xuMjAwNSA9IHByZW1ha2UudnN0dWRpby5zbG4yMDA1CmZ1bmN0aW9uIHNsbjIwMDUuZ2VuZXJhdGUoc2xuKQppby5lb2wgPSAnXHJcbicKc2xuLnZzdHVkaW9fY29uZmlncyA9IHByZW1ha2UudnN0dWRpby5idWlsZGNvbmZpZ3Moc2xuKQpfcCgnXDIzOVwxODdcMTkxJykKc2xuMjAwNS5oZWFkZXIoc2xuKQpmb3IgcHJqIGluIHByZW1ha2Uuc29sdXRpb24uZWFjaHByb2plY3Qoc2xuKSBkbwpzbG4yMDA1LnByb2plY3QocHJqKQplbmQKX3AoJ0dsb2JhbCcpCnNsbjIwMDUucGxhdGZvcm1zKHNsbikKc2xuMjAwNS5wcm9qZWN0X3BsYXRmb3JtcyhzbG4pCnNsbjIwMDUucHJvcGVydGllcyhzbG4pCl9wKCdFbmRHbG9iYWwnKQplbmQKZnVuY3Rpb24gc2xuMjAwNS5oZWFkZXIoc2xuKQpsb2NhbCBhY3Rpb24gPSBwcmVtYWtlLmFjdGlvbi5jdXJyZW50KCkKX3AoJ01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uICVkLjAwJywgYWN0aW9uLnZzdHVkaW8uc29sdXRpb25WZXJzaW9uKQpfcCgnIyBWaXN1YWwgU3R1ZGlvICVzJywgX0FDVElPTjpzdWIoMykpCmVuZApmdW5jdGlvbiBzbG4yMDA1LnByb2plY3QocHJqKQpsb2NhbCBwcm9qcGF0aCA9IHBhdGgudHJhbnNsYXRlKHBhdGguZ2V0cmVsYXRpdmUocHJqLnNvbHV0aW9uLmxvY2F0aW9uLCB2c3R1ZGlvLnByb2plY3RmaWxlKHByaikpLCAiXFwiKQpfcCgnUHJvamVjdCgieyVzfSIpID0gIiVzIiwgIiVzIiwgInslc30iJywgdnN0dWRpby50b29sKHByaiksIHByai5uYW1lLCBwcm9qcGF0aCwgcHJqLnV1aWQpCnNsbjIwMDUucHJvamVjdGRlcGVuZGVuY2llcyhwcmopCl9wKCdFbmRQcm9qZWN0JykKZW5kCmZ1bmN0aW9uIHNsbjIwMDUucHJvamVjdGRlcGVuZGVuY2llcyhwcmopCmxvY2FsIGRlcHMgPSBwcmVtYWtlLmdldGRlcGVuZGVuY2llcyhwcmopCmlmICNkZXBzID4gMCB0aGVuCl9wKCdcdFByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QnKQpmb3IgXywgZGVwIGluIGlwYWlycyhkZXBzKSBkbwpfcCgnXHRcdHslc30gPSB7JXN9JywgZGVwLnV1aWQsIGRlcC51dWlkKQplbmQKX3AoJ1x0RW5kUHJvamVjdFNlY3Rpb24nKQplbmQKZW5kCmZ1bmN0aW9uIHNsbjIwMDUucGxhdGZvcm1zKHNsbikKX3AoJ1x0R2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24nKQpmb3IgXywgY2ZnIGluIGlwYWlycyhzbG4udnN0dWRpb19jb25maWdzKSBkbwpfcCgnXHRcdCVzID0gJXMnLCBjZmcubmFtZSwgY2ZnLm5hbWUpCmVuZApfcCgnXHRFbmRHbG9iYWxTZWN0aW9uJykKZW5kCmZ1bmN0aW9uIHNsbjIwMDUucHJvamVjdF9wbGF0Zm9ybXMoc2xuKQpfcCgnXHRHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbicpCmZvciBwcmogaW4gcHJlbWFrZS5zb2x1dGlvbi5lYWNocHJvamVjdChzbG4pIGRvCmZvciBfLCBjZmcgaW4gaXBhaXJzKHNsbi52c3R1ZGlvX2NvbmZpZ3MpIGRvCmxvY2FsIG1hcHBlZAppZiBwcmVtYWtlLmlzZG90bmV0cHJvamVjdChwcmopIHRoZW4KbWFwcGVkID0gIkFueSBDUFUiCmVsc2UKaWYgY2ZnLnBsYXRmb3JtID09ICJBbnkgQ1BVIiBvciBjZmcucGxhdGZvcm0gPT0gIk1peGVkIFBsYXRmb3JtcyIgdGhlbgptYXBwZWQgPSBzbG4udnN0dWRpb19jb25maWdzWzNdLnBsYXRmb3JtCmVsc2UKbWFwcGVkID0gY2ZnLnBsYXRmb3JtCmVuZAplbmQKX3AoJ1x0XHR7JXN9LiVzLkFjdGl2ZUNmZyA9ICVzfCVzJywgcHJqLnV1aWQsIGNmZy5uYW1lLCBjZmcuYnVpbGRjZmcsIG1hcHBlZCkKaWYgbWFwcGVkID09IGNmZy5wbGF0Zm9ybSBvciBjZmcucGxhdGZvcm0gPT0gIk1peGVkIFBsYXRmb3JtcyIgdGhlbgpfcCgnXHRcdHslc30uJXMuQnVpbGQuMCA9ICVzfCVzJywgIHByai51dWlkLCBjZmcubmFtZSwgY2ZnLmJ1aWxkY2ZnLCBtYXBwZWQpCmVuZAplbmQKZW5kCl9wKCdcdEVuZEdsb2JhbFNlY3Rpb24nKQplbmQKZnVuY3Rpb24gc2xuMjAwNS5wcm9wZXJ0aWVzKHNsbikKX3AoJ1x0R2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24nKQpfcCgnXHRcdEhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRScpCl9wKCdcdEVuZEdsb2JhbFNlY3Rpb24nKQplbmQKAHByZW1ha2UudnN0dWRpby5jczIwMDUgPSB7IH0KbG9jYWwgdnN0dWRpbyA9IHByZW1ha2UudnN0dWRpbwpsb2NhbCBjczIwMDUgID0gcHJlbWFrZS52c3R1ZGlvLmNzMjAwNQpsb2NhbCBmdW5jdGlvbiBnZXRlbGVtZW50cyhwcmosIGFjdGlvbiwgZm5hbWUpCmlmIGFjdGlvbiA9PSAiQ29tcGlsZSIgYW5kIGZuYW1lOmVuZHN3aXRoKCIuY3MiKSB0aGVuCmlmIGZuYW1lOmVuZHN3aXRoKCIuRGVzaWduZXIuY3MiKSB0aGVuCmxvY2FsIGJhc2VuYW1lID0gZm5hbWU6c3ViKDEsIC0xMykKbG9jYWwgdGVzdG5hbWUgPSBiYXNlbmFtZSAuLiAiLmNzIgppZiBwcmVtYWtlLmZpbmRmaWxlKHByaiwgdGVzdG5hbWUpIHRoZW4KcmV0dXJuICJEZXBlbmRlbmN5IiwgdGVzdG5hbWUKZW5kCnRlc3RuYW1lID0gYmFzZW5hbWUgLi4gIi5yZXN4IgppZiBwcmVtYWtlLmZpbmRmaWxlKHByaiwgdGVzdG5hbWUpIHRoZW4KcmV0dXJuICJBdXRvR2VuIiwgdGVzdG5hbWUKZW5kCmVsc2UKbG9jYWwgYmFzZW5hbWUgPSBmbmFtZTpzdWIoMSwgLTQpCmxvY2FsIHRlc3RuYW1lID0gYmFzZW5hbWUgLi4gIi5EZXNpZ25lci5jcyIKaWYgcHJlbWFrZS5maW5kZmlsZShwcmosIHRlc3RuYW1lKSB0aGVuCnJldHVybiAiU3ViVHlwZUZvcm0iCmVuZAplbmQKZW5kCmlmIGFjdGlvbiA9PSAiRW1iZWRkZWRSZXNvdXJjZSIgYW5kIGZuYW1lOmVuZHN3aXRoKCIucmVzeCIpIHRoZW4KbG9jYWwgYmFzZW5hbWUgPSBmbmFtZTpzdWIoMSwgLTYpCmxvY2FsIHRlc3RuYW1lID0gcGF0aC5nZXRuYW1lKGJhc2VuYW1lIC4uICIuY3MiKQppZiBwcmVtYWtlLmZpbmRmaWxlKHByaiwgdGVzdG5hbWUpIHRoZW4KaWYgcHJlbWFrZS5maW5kZmlsZShwcmosIGJhc2VuYW1lIC4uICIuRGVzaWduZXIuY3MiKSB0aGVuCnJldHVybiAiRGVzaWduZXJUeXBlIiwgdGVzdG5hbWUKZWxzZQpyZXR1cm4gIkRlcGVuZGVuY3kiLCB0ZXN0bmFtZQplbmQKZWxzZQp0ZXN0bmFtZSA9IHBhdGguZ2V0bmFtZShiYXNlbmFtZSAuLiAiLkRlc2lnbmVyLmNzIikKaWYgcHJlbWFrZS5maW5kZmlsZShwcmosIHRlc3RuYW1lKSB0aGVuCnJldHVybiAiQXV0b0dlbmVyYXRlZCIKZW5kCmVuZAplbmQKaWYgYWN0aW9uID09ICJDb250ZW50IiB0aGVuCnJldHVybiAiQ29weU5ld2VzdCIKZW5kCnJldHVybiAiTm9uZSIKZW5kCmZ1bmN0aW9uIGNzMjAwNS5hcmNoKHByaikKcmV0dXJuICJBbnlDUFUiCmVuZApmdW5jdGlvbiBjczIwMDUuZmlsZXMocHJqKQpsb2NhbCB0ciA9IHByZW1ha2UucHJvamVjdC5idWlsZHNvdXJjZXRyZWUocHJqKQpwcmVtYWtlLnRyZWUudHJhdmVyc2UodHIsIHsKb25sZWFmID0gZnVuY3Rpb24obm9kZSkKbG9jYWwgYWN0aW9uID0gcHJlbWFrZS5kb3RuZXQuZ2V0YnVpbGRhY3Rpb24obm9kZS5jZmcpCmxvY2FsIGZuYW1lICA9IHBhdGgudHJhbnNsYXRlKHByZW1ha2UuZXNjKG5vZGUuY2ZnLm5hbWUpLCAiXFwiKQpsb2NhbCBlbGVtZW50cywgZGVwZW5kZW5jeSA9IGdldGVsZW1lbnRzKHByaiwgYWN0aW9uLCBub2RlLnBhdGgpCmlmIGVsZW1lbnRzID09ICJOb25lIiB0aGVuCl9wKCcgICAgPCVzIEluY2x1ZGU9IiVzIiAvPicsIGFjdGlvbiwgZm5hbWUpCmVsc2UKX3AoJyAgICA8JXMgSW5jbHVkZT0iJXMiPicsIGFjdGlvbiwgZm5hbWUpCmlmIGVsZW1lbnRzID09ICJBdXRvR2VuIiB0aGVuCl9wKCcgICAgICA8QXV0b0dlbj5UcnVlPC9BdXRvR2VuPicpCmVsc2VpZiBlbGVtZW50cyA9PSAiQXV0b0dlbmVyYXRlZCIgdGhlbgpfcCgnICAgICAgPFN1YlR5cGU+RGVzaWduZXI8L1N1YlR5cGU+JykKX3AoJyAgICAgIDxHZW5lcmF0b3I+UmVzWEZpbGVDb2RlR2VuZXJhdG9yPC9HZW5lcmF0b3I+JykKX3AoJyAgICAgIDxMYXN0R2VuT3V0cHV0PiVzLkRlc2lnbmVyLmNzPC9MYXN0R2VuT3V0cHV0PicsIHByZW1ha2UuZXNjKHBhdGguZ2V0YmFzZW5hbWUobm9kZS5uYW1lKSkpCmVsc2VpZiBlbGVtZW50cyA9PSAiU3ViVHlwZURlc2lnbmVyIiB0aGVuCl9wKCcgICAgICA8U3ViVHlwZT5EZXNpZ25lcjwvU3ViVHlwZT4nKQplbHNlaWYgZWxlbWVudHMgPT0gIlN1YlR5cGVGb3JtIiB0aGVuCl9wKCcgICAgICA8U3ViVHlwZT5Gb3JtPC9TdWJUeXBlPicpCmVsc2VpZiBlbGVtZW50cyA9PSAiUHJlc2VydmVOZXdlc3QiIHRoZW4KX3AoJyAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4nKQplbmQKaWYgZGVwZW5kZW5jeSB0aGVuCl9wKCcgICAgICA8RGVwZW5kZW50VXBvbj4lczwvRGVwZW5kZW50VXBvbj4nLCBwYXRoLnRyYW5zbGF0ZShwcmVtYWtlLmVzYyhkZXBlbmRlbmN5KSwgIlxcIikpCmVuZApfcCgnICAgIDwvJXM+JywgYWN0aW9uKQplbmQKZW5kCn0sIGZhbHNlKQplbmQKZnVuY3Rpb24gY3MyMDA1LnByb2plY3RlbGVtZW50KHByaikKbG9jYWwgYWN0aW9uID0gcHJlbWFrZS5hY3Rpb24uY3VycmVudCgpCmxvY2FsIHRvb2x2ZXJzaW9uID0gJycKaWYgYWN0aW9uLnZzdHVkaW8udG9vbHNWZXJzaW9uIHRoZW4KdG9vbHZlcnNpb24gPSBzdHJpbmcuZm9ybWF0KCcgVG9vbHNWZXJzaW9uPSIlcyInLCBhY3Rpb24udnN0dWRpby50b29sc1ZlcnNpb24pCmVuZAppZiBfQUNUSU9OID4gInZzMjAwOCIgdGhlbgpfcCgnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4nKQplbmQKX3AoJzxQcm9qZWN0JXMgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4nLCB0b29sdmVyc2lvbikKZW5kCmZ1bmN0aW9uIGNzMjAwNS5wcm9qZWN0c2V0dGluZ3MocHJqKQpfcCgnICA8UHJvcGVydHlHcm91cD4nKQpfcCgnICAgIDxDb25maWd1cmF0aW9uIENvbmRpdGlvbj0iIFwnJChDb25maWd1cmF0aW9uKVwnID09IFwnXCcgIj4lczwvQ29uZmlndXJhdGlvbj4nLCBwcmVtYWtlLmVzYyhwcmouc29sdXRpb24uY29uZmlndXJhdGlvbnNbMV0pKQpfcCgnICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IiBcJyQoUGxhdGZvcm0pXCcgPT0gXCdcJyAiPiVzPC9QbGF0Zm9ybT4nLCBjczIwMDUuYXJjaChwcmopKQpsb2NhbCBhY3Rpb24gPSBwcmVtYWtlLmFjdGlvbi5jdXJyZW50KCkKaWYgYWN0aW9uLnZzdHVkaW8ucHJvZHVjdFZlcnNpb24gdGhlbgpfcCgnICAgIDxQcm9kdWN0VmVyc2lvbj4lczwvUHJvZHVjdFZlcnNpb24+JywgYWN0aW9uLnZzdHVkaW8ucHJvZHVjdFZlcnNpb24pCmVuZAppZiBfQUNUSU9OIDwgInZzMjAxMiIgdGhlbgpfcCgnICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4nKQplbmQKX3AoJyAgICA8UHJvamVjdEd1aWQ+eyVzfTwvUHJvamVjdEd1aWQ+JywgcHJqLnV1aWQpCl9wKCcgICAgPE91dHB1dFR5cGU+JXM8L091dHB1dFR5cGU+JywgcHJlbWFrZS5kb3RuZXQuZ2V0a2luZChwcmopKQpfcCgnICAgIDxBcHBEZXNpZ25lckZvbGRlcj5Qcm9wZXJ0aWVzPC9BcHBEZXNpZ25lckZvbGRlcj4nKQpfcCgnICAgIDxSb290TmFtZXNwYWNlPiVzPC9Sb290TmFtZXNwYWNlPicsIHByai5idWlsZHRhcmdldC5iYXNlbmFtZSkKX3AoJyAgICA8QXNzZW1ibHlOYW1lPiVzPC9Bc3NlbWJseU5hbWU+JywgcHJqLmJ1aWxkdGFyZ2V0LmJhc2VuYW1lKQpsb2NhbCBmcmFtZXdvcmsgPSBwcmouZnJhbWV3b3JrIG9yIGFjdGlvbi52c3R1ZGlvLnRhcmdldEZyYW1ld29yawppZiBmcmFtZXdvcmsgdGhlbgpfcCgnICAgIDxUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPnYlczwvVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj4nLCBmcmFtZXdvcmspCmVuZAppZiBfQUNUSU9OID09ICd2czIwMTAnIHRoZW4KX3AoJyAgICA8VGFyZ2V0RnJhbWV3b3JrUHJvZmlsZT48L1RhcmdldEZyYW1ld29ya1Byb2ZpbGU+JykKZW5kCmlmIF9BQ1RJT04gPj0gInZzMjAxMCIgdGhlbgpfcCgnICAgIDxGaWxlQWxpZ25tZW50PjUxMjwvRmlsZUFsaWdubWVudD4nKQplbmQKX3AoJyAgPC9Qcm9wZXJ0eUdyb3VwPicpCmVuZApmdW5jdGlvbiBjczIwMDUucHJvcGVydHlncm91cChjZmcpCl9wKCcgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iIFwnJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKVwnID09IFwnJXN8JXNcJyAiPicsIHByZW1ha2UuZXNjKGNmZy5uYW1lKSwgY3MyMDA1LmFyY2goY2ZnKSkKaWYgX0FDVElPTiA+ICJ2czIwMDgiIHRoZW4KX3AoJyAgICA8UGxhdGZvcm1UYXJnZXQ+JXM8L1BsYXRmb3JtVGFyZ2V0PicsIGNzMjAwNS5hcmNoKGNmZykpCmVuZAplbmQKZnVuY3Rpb24gY3MyMDA1LmdlbmVyYXRlKHByaikKaW8uZW9sID0gIlxyXG4iCmNzMjAwNS5wcm9qZWN0ZWxlbWVudChwcmopCmlmIF9BQ1RJT04gPiAidnMyMDEwIiB0aGVuCl9wKCcgIDxJbXBvcnQgUHJvamVjdD0iJChNU0J1aWxkRXh0ZW5zaW9uc1BhdGgpXFwkKE1TQnVpbGRUb29sc1ZlcnNpb24pXFxNaWNyb3NvZnQuQ29tbW9uLnByb3BzIiBDb25kaXRpb249IkV4aXN0cyhcJyQoTVNCdWlsZEV4dGVuc2lvbnNQYXRoKVxcJChNU0J1aWxkVG9vbHNWZXJzaW9uKVxcTWljcm9zb2Z0LkNvbW1vbi5wcm9wc1wnKSIgLz4nKQplbmQKY3MyMDA1LnByb2plY3RzZXR0aW5ncyhwcmopCmZvciBjZmcgaW4gcHJlbWFrZS5lYWNoY29uZmlnKHByaikgZG8KY3MyMDA1LnByb3BlcnR5Z3JvdXAoY2ZnKQppZiBjZmcuZmxhZ3MuU3ltYm9scyB0aGVuCl9wKCcgICAgPERlYnVnU3ltYm9scz50cnVlPC9EZWJ1Z1N5bWJvbHM+JykKX3AoJyAgICA8RGVidWdUeXBlPmZ1bGw8L0RlYnVnVHlwZT4nKQplbHNlCl9wKCcgICAgPERlYnVnVHlwZT5wZGJvbmx5PC9EZWJ1Z1R5cGU+JykKZW5kCl9wKCcgICAgPE9wdGltaXplPiVzPC9PcHRpbWl6ZT4nLCBpaWYoY2ZnLmZsYWdzLk9wdGltaXplIG9yIGNmZy5mbGFncy5PcHRpbWl6ZVNpemUgb3IgY2ZnLmZsYWdzLk9wdGltaXplU3BlZWQsICJ0cnVlIiwgImZhbHNlIikpCl9wKCcgICAgPE91dHB1dFBhdGg+JXM8L091dHB1dFBhdGg+JywgY2ZnLmJ1aWxkdGFyZ2V0LmRpcmVjdG9yeSkKX3AoJyAgICA8RGVmaW5lQ29uc3RhbnRzPiVzPC9EZWZpbmVDb25zdGFudHM+JywgdGFibGUuY29uY2F0KHByZW1ha2UuZXNjKGNmZy5kZWZpbmVzKSwgIjsiKSkKX3AoJyAgICA8RXJyb3JSZXBvcnQ+cHJvbXB0PC9FcnJvclJlcG9ydD4nKQpfcCgnICAgIDxXYXJuaW5nTGV2ZWw+NDwvV2FybmluZ0xldmVsPicpCmlmIGNmZy5mbGFncy5VbnNhZmUgdGhlbgpfcCgnICAgIDxBbGxvd1Vuc2FmZUJsb2Nrcz50cnVlPC9BbGxvd1Vuc2FmZUJsb2Nrcz4nKQplbmQKaWYgY2ZnLmZsYWdzLkZhdGFsV2FybmluZ3MgdGhlbgpfcCgnICAgIDxUcmVhdFdhcm5pbmdzQXNFcnJvcnM+dHJ1ZTwvVHJlYXRXYXJuaW5nc0FzRXJyb3JzPicpCmVuZApfcCgnICA8L1Byb3BlcnR5R3JvdXA+JykKZW5kCl9wKCcgIDxJdGVtR3JvdXA+JykKZm9yIF8sIHJlZiBpbiBpcGFpcnMocHJlbWFrZS5nZXRsaW5rcyhwcmosICJzaWJsaW5ncyIsICJvYmplY3QiKSkgZG8KX3AoJyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIlcyI+JywgcGF0aC50cmFuc2xhdGUocGF0aC5nZXRyZWxhdGl2ZShwcmoubG9jYXRpb24sIHZzdHVkaW8ucHJvamVjdGZpbGUocmVmKSksICJcXCIpKQpfcCgnICAgICAgPFByb2plY3Q+eyVzfTwvUHJvamVjdD4nLCByZWYudXVpZCkKX3AoJyAgICAgIDxOYW1lPiVzPC9OYW1lPicsIHByZW1ha2UuZXNjKHJlZi5uYW1lKSkKX3AoJyAgICA8L1Byb2plY3RSZWZlcmVuY2U+JykKZW5kCmZvciBfLCBsaW5rbmFtZSBpbiBpcGFpcnMocHJlbWFrZS5nZXRsaW5rcyhwcmosICJzeXN0ZW0iLCAiYmFzZW5hbWUiKSkgZG8KX3AoJyAgICA8UmVmZXJlbmNlIEluY2x1ZGU9IiVzIiAvPicsIHByZW1ha2UuZXNjKGxpbmtuYW1lKSkKZW5kCl9wKCcgIDwvSXRlbUdyb3VwPicpCl9wKCcgIDxJdGVtR3JvdXA+JykKY3MyMDA1LmZpbGVzKHByaikKX3AoJyAgPC9JdGVtR3JvdXA+JykKbG9jYWwgbXNidWlsZCA9IGlpZihfQUNUSU9OIDwgInZzMjAxMiIsICJCaW4iLCAiVG9vbHMiKQpfcCgnICA8SW1wb3J0IFByb2plY3Q9IiQoTVNCdWlsZCVzUGF0aClcXE1pY3Jvc29mdC5DU2hhcnAudGFyZ2V0cyIgLz4nLCBtc2J1aWxkKQpfcCgnICA8IS0tIFRvIG1vZGlmeSB5b3VyIGJ1aWxkIHByb2Nlc3MsIGFkZCB5b3VyIHRhc2sgaW5zaWRlIG9uZSBvZiB0aGUgdGFyZ2V0cyBiZWxvdyBhbmQgdW5jb21tZW50IGl0LicpCl9wKCcgICAgICAgT3RoZXIgc2ltaWxhciBleHRlbnNpb24gcG9pbnRzIGV4aXN0LCBzZWUgTWljcm9zb2Z0LkNvbW1vbi50YXJnZXRzLicpCl9wKCcgIDxUYXJnZXQgTmFtZT0iQmVmb3JlQnVpbGQiPicpCl9wKCcgIDwvVGFyZ2V0PicpCl9wKCcgIDxUYXJnZXQgTmFtZT0iQWZ0ZXJCdWlsZCI+JykKX3AoJyAgPC9UYXJnZXQ+JykKX3AoJyAgLS0+JykKX3AoJzwvUHJvamVjdD4nKQplbmQKAGxvY2FsIGNzMjAwNSA9IHByZW1ha2UudnN0dWRpby5jczIwMDUKZnVuY3Rpb24gY3MyMDA1LmdlbmVyYXRlX3VzZXIocHJqKQppby5lb2wgPSAiXHJcbiIKX3AoJzxQcm9qZWN0IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPicpCl9wKCcgIDxQcm9wZXJ0eUdyb3VwPicpCmxvY2FsIHJlZnBhdGhzID0gdGFibGUudHJhbnNsYXRlKHByai5saWJkaXJzLCBmdW5jdGlvbih2KSByZXR1cm4gcGF0aC5nZXRhYnNvbHV0ZShwcmoubG9jYXRpb24gLi4gIi8iIC4uIHYpIGVuZCkKX3AoJyAgICA8UmVmZXJlbmNlUGF0aD4lczwvUmVmZXJlbmNlUGF0aD4nLCBwYXRoLnRyYW5zbGF0ZSh0YWJsZS5jb25jYXQocmVmcGF0aHMsICI7IiksICJcXCIpKQpfcCgnICA8L1Byb3BlcnR5R3JvdXA+JykKX3AoJzwvUHJvamVjdD4nKQplbmQKAHByZW1ha2UudnN0dWRpby52YzIwMTAgPSB7IH0KbG9jYWwgdmMyMDEwID0gcHJlbWFrZS52c3R1ZGlvLnZjMjAxMApsb2NhbCB2c3R1ZGlvID0gcHJlbWFrZS52c3R1ZGlvCmxvY2FsIGZ1bmN0aW9uIHZzMjAxMF9jb25maWcocHJqKQpfcCgxLCc8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPicpCmZvciBfLCBjZmdpbmZvIGluIGlwYWlycyhwcmouc29sdXRpb24udnN0dWRpb19jb25maWdzKSBkbwpfcCgyLCc8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iJXMiPicsIHByZW1ha2UuZXNjKGNmZ2luZm8ubmFtZSkpCl9wKDMsJzxDb25maWd1cmF0aW9uPiVzPC9Db25maWd1cmF0aW9uPicsY2ZnaW5mby5idWlsZGNmZykKX3AoMywnPFBsYXRmb3JtPiVzPC9QbGF0Zm9ybT4nLGNmZ2luZm8ucGxhdGZvcm0pCl9wKDIsJzwvUHJvamVjdENvbmZpZ3VyYXRpb24+JykKZW5kCl9wKDEsJzwvSXRlbUdyb3VwPicpCmVuZApsb2NhbCBmdW5jdGlvbiB2czIwMTBfZ2xvYmFscyhwcmopCl9wKDEsJzxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4nKQpfcCgyLCc8UHJvamVjdEd1aWQ+eyVzfTwvUHJvamVjdEd1aWQ+JyxwcmoudXVpZCkKX3AoMiwnPFJvb3ROYW1lc3BhY2U+JXM8L1Jvb3ROYW1lc3BhY2U+JyxwcmoubmFtZSkKaWYgcHJqLmZsYWdzIGFuZCBwcmouZmxhZ3MuTWFuYWdlZCB0aGVuCl9wKDIsJzxUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPnY0LjA8L1RhcmdldEZyYW1ld29ya1ZlcnNpb24+JykKX3AoMiwnPEtleXdvcmQ+TWFuYWdlZENQcm9qPC9LZXl3b3JkPicpCmVsc2UKX3AoMiwnPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPicpCmVuZApfcCgxLCc8L1Byb3BlcnR5R3JvdXA+JykKZW5kCmZ1bmN0aW9uIHZjMjAxMC5jb25maWdfdHlwZShjb25maWcpCmxvY2FsIHQgPQp7ClNoYXJlZExpYiA9ICJEeW5hbWljTGlicmFyeSIsClN0YXRpY0xpYiA9ICJTdGF0aWNMaWJyYXJ5IiwKQ29uc29sZUFwcCA9ICJBcHBsaWNhdGlvbiIsCldpbmRvd2VkQXBwID0gIkFwcGxpY2F0aW9uIgp9CnJldHVybiB0W2NvbmZpZy5raW5kXQplbmQKbG9jYWwgZnVuY3Rpb24gaWZfY29uZmlnX2FuZF9wbGF0Zm9ybSgpCnJldHVybiAnQ29uZGl0aW9uPSJcJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSlcJz09XCclc1wnIicKZW5kCmxvY2FsIGZ1bmN0aW9uIG9wdGltaXNhdGlvbihjZmcpCmxvY2FsIHJlc3VsdCA9ICJEaXNhYmxlZCIKZm9yIF8sIHZhbHVlIGluIGlwYWlycyhjZmcuZmxhZ3MpIGRvCmlmICh2YWx1ZSA9PSAiT3B0aW1pemUiKSB0aGVuCnJlc3VsdCA9ICJGdWxsIgplbHNlaWYgKHZhbHVlID09ICJPcHRpbWl6ZVNpemUiKSB0aGVuCnJlc3VsdCA9ICJNaW5TcGFjZSIKZWxzZWlmICh2YWx1ZSA9PSAiT3B0aW1pemVTcGVlZCIpIHRoZW4KcmVzdWx0ID0gIk1heFNwZWVkIgplbmQKZW5kCnJldHVybiByZXN1bHQKZW5kCmZ1bmN0aW9uIHZjMjAxMC5jb25maWd1cmF0aW9uUHJvcGVydHlHcm91cChjZmcsIGNmZ2luZm8pCl9wKDEsJzxQcm9wZXJ0eUdyb3VwICcuLmlmX2NvbmZpZ19hbmRfcGxhdGZvcm0oKSAuLicgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPicKLCBwcmVtYWtlLmVzYyhjZmdpbmZvLm5hbWUpKQpfcCgyLCc8Q29uZmlndXJhdGlvblR5cGU+JXM8L0NvbmZpZ3VyYXRpb25UeXBlPicsdmMyMDEwLmNvbmZpZ190eXBlKGNmZykpCl9wKDIsJzxVc2VEZWJ1Z0xpYnJhcmllcz4lczwvVXNlRGVidWdMaWJyYXJpZXM+JywgaWlmKG9wdGltaXNhdGlvbihjZmcpID09ICJEaXNhYmxlZCIsInRydWUiLCJmYWxzZSIpKQpfcCgyLCc8Q2hhcmFjdGVyU2V0PiVzPC9DaGFyYWN0ZXJTZXQ+JyxpaWYoY2ZnLmZsYWdzLlVuaWNvZGUsIlVuaWNvZGUiLCJNdWx0aUJ5dGUiKSkKaWYgX0FDVElPTiA+ICJ2czIwMTAiIHRoZW4KX3AoMiwnPFBsYXRmb3JtVG9vbHNldD4lczwvUGxhdGZvcm1Ub29sc2V0PicsICJ2MTEwIikKZW5kCmlmIGNmZy5mbGFncy5NRkMgdGhlbgpfcCgyLCc8VXNlT2ZNZmM+JXM8L1VzZU9mTWZjPicsIGlpZihjZmcuZmxhZ3MuU3RhdGljUnVudGltZSwgIlN0YXRpYyIsICJEeW5hbWljIikpCmVuZAppZiBjZmcuZmxhZ3MuQVRMIG9yIGNmZy5mbGFncy5TdGF0aWNBVEwgdGhlbgpfcCgyLCc8VXNlT2ZBdGw+JXM8L1VzZU9mQXRsPicsIGlpZihjZmcuZmxhZ3MuU3RhdGljQVRMLCAiU3RhdGljIiwgIkR5bmFtaWMiKSkKZW5kCmlmIGNmZy5mbGFncy5NYW5hZ2VkIHRoZW4KX3AoMiwnPENMUlN1cHBvcnQ+dHJ1ZTwvQ0xSU3VwcG9ydD4nKQplbmQKX3AoMSwnPC9Qcm9wZXJ0eUdyb3VwPicpCmVuZApsb2NhbCBmdW5jdGlvbiBpbXBvcnRfcHJvcHMocHJqKQpmb3IgXywgY2ZnaW5mbyBpbiBpcGFpcnMocHJqLnNvbHV0aW9uLnZzdHVkaW9fY29uZmlncykgZG8KbG9jYWwgY2ZnID0gcHJlbWFrZS5nZXRjb25maWcocHJqLCBjZmdpbmZvLnNyY19idWlsZGNmZywgY2ZnaW5mby5zcmNfcGxhdGZvcm0pCl9wKDEsJzxJbXBvcnRHcm91cCAnLi5pZl9jb25maWdfYW5kX3BsYXRmb3JtKCkgLi4nIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+JwoscHJlbWFrZS5lc2MoY2ZnaW5mby5uYW1lKSkKX3AoMiwnPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cyhcJyQoVXNlclJvb3REaXIpXFxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHNcJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4nKQpfcCgxLCc8L0ltcG9ydEdyb3VwPicpCmVuZAplbmQKZnVuY3Rpb24gdmMyMDEwLm91dHB1dFByb3BlcnRpZXMocHJqKQpmb3IgXywgY2ZnaW5mbyBpbiBpcGFpcnMocHJqLnNvbHV0aW9uLnZzdHVkaW9fY29uZmlncykgZG8KbG9jYWwgY2ZnID0gcHJlbWFrZS5nZXRjb25maWcocHJqLCBjZmdpbmZvLnNyY19idWlsZGNmZywgY2ZnaW5mby5zcmNfcGxhdGZvcm0pCmxvY2FsIHRhcmdldCA9IGNmZy5idWlsZHRhcmdldApfcCgxLCc8UHJvcGVydHlHcm91cCAnLi5pZl9jb25maWdfYW5kX3BsYXRmb3JtKCkgLi4nPicsIHByZW1ha2UuZXNjKGNmZ2luZm8ubmFtZSkpCl9wKDIsJzxPdXREaXI+JXNcXDwvT3V0RGlyPicsIHByZW1ha2UuZXNjKHRhcmdldC5kaXJlY3RvcnkpKQppZiBjZmcucGxhdGZvcm0gPT0gIlhib3gzNjAiIHRoZW4KX3AoMiwnPE91dHB1dEZpbGU+JChPdXREaXIpJXM8L091dHB1dEZpbGU+JywgcHJlbWFrZS5lc2ModGFyZ2V0Lm5hbWUpKQplbmQKX3AoMiwnPEludERpcj4lc1xcPC9JbnREaXI+JywgcHJlbWFrZS5lc2MoY2ZnLm9iamVjdHNkaXIpKQpfcCgyLCc8VGFyZ2V0TmFtZT4lczwvVGFyZ2V0TmFtZT4nLCBwcmVtYWtlLmVzYyhwYXRoLmdldGJhc2VuYW1lKHRhcmdldC5uYW1lKSkpCl9wKDIsJzxUYXJnZXRFeHQ+JXM8L1RhcmdldEV4dD4nLCBwcmVtYWtlLmVzYyhwYXRoLmdldGV4dGVuc2lvbih0YXJnZXQubmFtZSkpKQppZiBjZmcua2luZCA9PSAiU2hhcmVkTGliIiB0aGVuCmxvY2FsIGlnbm9yZSA9IChjZmcuZmxhZ3MuTm9JbXBvcnRMaWIgfj0gbmlsKQogX3AoMiwnPElnbm9yZUltcG9ydExpYnJhcnk+JXM8L0lnbm9yZUltcG9ydExpYnJhcnk+JywgdG9zdHJpbmcoaWdub3JlKSkKZW5kCmlmIGNmZy5raW5kIH49ICJTdGF0aWNMaWIiIHRoZW4KX3AoMiwnPExpbmtJbmNyZW1lbnRhbD4lczwvTGlua0luY3JlbWVudGFsPicsIHRvc3RyaW5nKHByZW1ha2UuY29uZmlnLmlzaW5jcmVtZW50YWxsaW5rKGNmZykpKQplbmQKaWYgY2ZnLmZsYWdzLk5vTWFuaWZlc3QgdGhlbgpfcCgyLCc8R2VuZXJhdGVNYW5pZmVzdD5mYWxzZTwvR2VuZXJhdGVNYW5pZmVzdD4nKQplbmQKX3AoMSwnPC9Qcm9wZXJ0eUdyb3VwPicpCmVuZAplbmQKbG9jYWwgZnVuY3Rpb24gcnVudGltZShjZmcpCmxvY2FsIHJ1bnRpbWUKbG9jYWwgZmxhZ3MgPSBjZmcuZmxhZ3MKaWYgcHJlbWFrZS5jb25maWcuaXNkZWJ1Z2J1aWxkKGNmZykgdGhlbgpydW50aW1lID0gaWlmKGZsYWdzLlN0YXRpY1J1bnRpbWUgYW5kIG5vdCBmbGFncy5NYW5hZ2VkLCAiTXVsdGlUaHJlYWRlZERlYnVnIiwgIk11bHRpVGhyZWFkZWREZWJ1Z0RMTCIpCmVsc2UKcnVudGltZSA9IGlpZihmbGFncy5TdGF0aWNSdW50aW1lIGFuZCBub3QgZmxhZ3MuTWFuYWdlZCwgIk11bHRpVGhyZWFkZWQiLCAiTXVsdGlUaHJlYWRlZERMTCIpCmVuZApyZXR1cm4gcnVudGltZQplbmQKbG9jYWwgZnVuY3Rpb24gcHJlY29tcGlsZWRfaGVhZGVyKGNmZykKICAgICAgaWYgbm90IGNmZy5mbGFncy5Ob1BDSCBhbmQgY2ZnLnBjaGhlYWRlciB0aGVuCl9wKDMsJzxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPicpCl9wKDMsJzxQcmVjb21waWxlZEhlYWRlckZpbGU+JXM8L1ByZWNvbXBpbGVkSGVhZGVyRmlsZT4nLCBjZmcucGNoaGVhZGVyKQplbHNlCl9wKDMsJzxQcmVjb21waWxlZEhlYWRlcj48L1ByZWNvbXBpbGVkSGVhZGVyPicpCmVuZAplbmQKbG9jYWwgZnVuY3Rpb24gcHJlcHJvY2Vzc29yKGluZGVudCxjZmcpCmlmICNjZmcuZGVmaW5lcyA+IDAgdGhlbgpfcChpbmRlbnQsJzxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4lczslJShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPicKLHByZW1ha2UuZXNjKHRhYmxlLmNvbmNhdChjZmcuZGVmaW5lcywgIjsiKSkpCmVsc2UKX3AoaW5kZW50LCc8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4nKQplbmQKZW5kCmxvY2FsIGZ1bmN0aW9uIGluY2x1ZGVfZGlycyhpbmRlbnQsY2ZnKQppZiAjY2ZnLmluY2x1ZGVkaXJzID4gMCB0aGVuCl9wKGluZGVudCwnPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JXM7JSUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JwoscHJlbWFrZS5lc2MocGF0aC50cmFuc2xhdGUodGFibGUuY29uY2F0KGNmZy5pbmNsdWRlZGlycywgIjsiKSwgJ1xcJykpKQplbmQKZW5kCmxvY2FsIGZ1bmN0aW9uIHJlc291cmNlX2NvbXBpbGUoY2ZnKQpfcCgyLCc8UmVzb3VyY2VDb21waWxlPicpCnByZXByb2Nlc3NvcigzLGNmZykKaW5jbHVkZV9kaXJzKDMsY2ZnKQpfcCgyLCc8L1Jlc291cmNlQ29tcGlsZT4nKQplbmQKbG9jYWwgZnVuY3Rpb24gZXhjZXB0aW9ucyhjZmcpCmlmIGNmZy5mbGFncy5Ob0V4Y2VwdGlvbnMgdGhlbgpfcCgyLCc8RXhjZXB0aW9uSGFuZGxpbmc+ZmFsc2U8L0V4Y2VwdGlvbkhhbmRsaW5nPicpCmVsc2VpZiBjZmcuZmxhZ3MuU0VIIHRoZW4KX3AoMiwnPEV4Y2VwdGlvbkhhbmRsaW5nPkFzeW5jPC9FeGNlcHRpb25IYW5kbGluZz4nKQplbmQKZW5kCmxvY2FsIGZ1bmN0aW9uIHJ0dGkoY2ZnKQppZiBjZmcuZmxhZ3MuTm9SVFRJIGFuZCBub3QgY2ZnLmZsYWdzLk1hbmFnZWQgdGhlbgpfcCgzLCc8UnVudGltZVR5cGVJbmZvPmZhbHNlPC9SdW50aW1lVHlwZUluZm8+JykKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiB3Y2hhcl90X2J1aWxkaW4oY2ZnKQppZiBjZmcuZmxhZ3MuTmF0aXZlV0NoYXIgdGhlbgpfcCgzLCc8VHJlYXRXQ2hhcl90QXNCdWlsdEluVHlwZT50cnVlPC9UcmVhdFdDaGFyX3RBc0J1aWx0SW5UeXBlPicpCmVsc2VpZiBjZmcuZmxhZ3MuTm9OYXRpdmVXQ2hhciB0aGVuCl9wKDMsJzxUcmVhdFdDaGFyX3RBc0J1aWx0SW5UeXBlPmZhbHNlPC9UcmVhdFdDaGFyX3RBc0J1aWx0SW5UeXBlPicpCmVuZAplbmQKbG9jYWwgZnVuY3Rpb24gc3NlKGNmZykKaWYgY2ZnLmZsYWdzLkVuYWJsZVNTRSB0aGVuCl9wKDMsJzxFbmFibGVFbmhhbmNlZEluc3RydWN0aW9uU2V0PlN0cmVhbWluZ1NJTURFeHRlbnNpb25zPC9FbmFibGVFbmhhbmNlZEluc3RydWN0aW9uU2V0PicpCmVsc2VpZiBjZmcuZmxhZ3MuRW5hYmxlU1NFMiB0aGVuCl9wKDMsJzxFbmFibGVFbmhhbmNlZEluc3RydWN0aW9uU2V0PlN0cmVhbWluZ1NJTURFeHRlbnNpb25zMjwvRW5hYmxlRW5oYW5jZWRJbnN0cnVjdGlvblNldD4nKQplbmQKZW5kCmxvY2FsIGZ1bmN0aW9uIGZsb2F0aW5nX3BvaW50KGNmZykKICAgICBpZiBjZmcuZmxhZ3MuRmxvYXRGYXN0IHRoZW4KX3AoMywnPEZsb2F0aW5nUG9pbnRNb2RlbD5GYXN0PC9GbG9hdGluZ1BvaW50TW9kZWw+JykKZWxzZWlmIGNmZy5mbGFncy5GbG9hdFN0cmljdCBhbmQgbm90IGNmZy5mbGFncy5NYW5hZ2VkIHRoZW4KX3AoMywnPEZsb2F0aW5nUG9pbnRNb2RlbD5TdHJpY3Q8L0Zsb2F0aW5nUG9pbnRNb2RlbD4nKQplbmQKZW5kCmxvY2FsIGZ1bmN0aW9uIGRlYnVnX2luZm8oY2ZnKQpsb2NhbCBkZWJ1Z19pbmZvID0gJycKaWYgY2ZnLmZsYWdzLlN5bWJvbHMgdGhlbgppZiBjZmcucGxhdGZvcm0gPT0gIng2NCIKb3IgY2ZnLmZsYWdzLk1hbmFnZWQKb3IgcHJlbWFrZS5jb25maWcuaXNvcHRpbWl6ZWRidWlsZChjZmcuZmxhZ3MpCm9yIGNmZy5mbGFncy5Ob0VkaXRBbmRDb250aW51ZQp0aGVuCmRlYnVnX2luZm8gPSAiUHJvZ3JhbURhdGFiYXNlIgplbHNlCmRlYnVnX2luZm8gPSAiRWRpdEFuZENvbnRpbnVlIgplbmQKZW5kCl9wKDMsJzxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PiVzPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PicsZGVidWdfaW5mbykKZW5kCmxvY2FsIGZ1bmN0aW9uIG1pbmltYWxfYnVpbGQoY2ZnKQppZiBwcmVtYWtlLmNvbmZpZy5pc2RlYnVnYnVpbGQoY2ZnKSBhbmQgbm90IGNmZy5mbGFncy5Ob01pbmltYWxSZWJ1aWxkIHRoZW4KX3AoMywnPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPicpCmVsc2UKX3AoMywnPE1pbmltYWxSZWJ1aWxkPmZhbHNlPC9NaW5pbWFsUmVidWlsZD4nKQplbmQKZW5kCmxvY2FsIGZ1bmN0aW9uIGNvbXBpbGVfbGFuZ3VhZ2UoY2ZnKQppZiBjZmcubGFuZ3VhZ2UgPT0gIkMiIHRoZW4KX3AoMywnPENvbXBpbGVBcz5Db21waWxlQXNDPC9Db21waWxlQXM+JykKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiB2czEwX2NsY29tcGlsZShjZmcpCl9wKDIsJzxDbENvbXBpbGU+JykKaWYgI2NmZy5idWlsZG9wdGlvbnMgPiAwIHRoZW4KX3AoMywnPEFkZGl0aW9uYWxPcHRpb25zPiVzICUlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+JywKdGFibGUuY29uY2F0KHByZW1ha2UuZXNjKGNmZy5idWlsZG9wdGlvbnMpLCAiICIpKQplbmQKX3AoMywnPE9wdGltaXphdGlvbj4lczwvT3B0aW1pemF0aW9uPicsb3B0aW1pc2F0aW9uKGNmZykpCmluY2x1ZGVfZGlycygzLGNmZykKcHJlcHJvY2Vzc29yKDMsY2ZnKQptaW5pbWFsX2J1aWxkKGNmZykKaWYgIG5vdCBwcmVtYWtlLmNvbmZpZy5pc29wdGltaXplZGJ1aWxkKGNmZy5mbGFncykgdGhlbgppZiBub3QgY2ZnLmZsYWdzLk1hbmFnZWQgdGhlbgpfcCgzLCc8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4nKQplbmQKaWYgY2ZnLmZsYWdzLkV4dHJhV2FybmluZ3MgdGhlbgpfcCgzLCc8U21hbGxlclR5cGVDaGVjaz50cnVlPC9TbWFsbGVyVHlwZUNoZWNrPicpCmVuZAplbHNlCl9wKDMsJzxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+JykKZW5kCl9wKDMsJzxSdW50aW1lTGlicmFyeT4lczwvUnVudGltZUxpYnJhcnk+JywgcnVudGltZShjZmcpKQpfcCgzLCc8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+JykKcHJlY29tcGlsZWRfaGVhZGVyKGNmZykKaWYgY2ZnLmZsYWdzLkV4dHJhV2FybmluZ3MgdGhlbgpfcCgzLCc8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPicpCmVsc2UKX3AoMywnPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4nKQplbmQKaWYgY2ZnLmZsYWdzLkZhdGFsV2FybmluZ3MgdGhlbgpfcCgzLCc8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPicpCmVuZApleGNlcHRpb25zKGNmZykKcnR0aShjZmcpCndjaGFyX3RfYnVpbGRpbihjZmcpCnNzZShjZmcpCmZsb2F0aW5nX3BvaW50KGNmZykKZGVidWdfaW5mbyhjZmcpCmlmIGNmZy5mbGFncy5TeW1ib2xzIHRoZW4KX3AoMywnPFByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPiQoT3V0RGlyKSVzLnBkYjwvUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU+JwosIHBhdGguZ2V0YmFzZW5hbWUoY2ZnLmJ1aWxkdGFyZ2V0Lm5hbWUpKQplbmQKaWYgY2ZnLmZsYWdzLk5vRnJhbWVQb2ludGVyIHRoZW4KX3AoMywnPE9taXRGcmFtZVBvaW50ZXJzPnRydWU8L09taXRGcmFtZVBvaW50ZXJzPicpCmVuZApjb21waWxlX2xhbmd1YWdlKGNmZykKX3AoMiwnPC9DbENvbXBpbGU+JykKZW5kCmxvY2FsIGZ1bmN0aW9uIGV2ZW50X2hvb2tzKGNmZykKaWYgI2NmZy5wb3N0YnVpbGRjb21tYW5kcz4gMCB0aGVuCiAgICBfcCgyLCc8UG9zdEJ1aWxkRXZlbnQ+JykKX3AoMywnPENvbW1hbmQ+JXM8L0NvbW1hbmQ+JyxwcmVtYWtlLmVzYyh0YWJsZS5pbXBsb2RlKGNmZy5wb3N0YnVpbGRjb21tYW5kcywgIiIsICIiLCAiXHJcbiIpKSkKX3AoMiwnPC9Qb3N0QnVpbGRFdmVudD4nKQplbmQKaWYgI2NmZy5wcmVidWlsZGNvbW1hbmRzPiAwIHRoZW4KICAgIF9wKDIsJzxQcmVCdWlsZEV2ZW50PicpCl9wKDMsJzxDb21tYW5kPiVzPC9Db21tYW5kPicscHJlbWFrZS5lc2ModGFibGUuaW1wbG9kZShjZmcucHJlYnVpbGRjb21tYW5kcywgIiIsICIiLCAiXHJcbiIpKSkKX3AoMiwnPC9QcmVCdWlsZEV2ZW50PicpCmVuZAppZiAjY2ZnLnByZWxpbmtjb21tYW5kcz4gMCB0aGVuCiAgICBfcCgyLCc8UHJlTGlua0V2ZW50PicpCl9wKDMsJzxDb21tYW5kPiVzPC9Db21tYW5kPicscHJlbWFrZS5lc2ModGFibGUuaW1wbG9kZShjZmcucHJlbGlua2NvbW1hbmRzLCAiIiwgIiIsICJcclxuIikpKQpfcCgyLCc8L1ByZUxpbmtFdmVudD4nKQplbmQKZW5kCmxvY2FsIGZ1bmN0aW9uIGFkZGl0aW9uYWxfb3B0aW9ucyhpbmRlbnQsY2ZnKQppZiAjY2ZnLmxpbmtvcHRpb25zID4gMCB0aGVuCl9wKGluZGVudCwnPEFkZGl0aW9uYWxPcHRpb25zPiVzICUlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+JywKdGFibGUuY29uY2F0KHByZW1ha2UuZXNjKGNmZy5saW5rb3B0aW9ucyksICIgIikpCmVuZAplbmQKbG9jYWwgZnVuY3Rpb24gbGlua190YXJnZXRfbWFjaGluZShpbmRleCxjZmcpCmxvY2FsIHBsYXRmb3JtcyA9IHt4MzIgPSAnTWFjaGluZVg4NicsIHg2NCA9ICdNYWNoaW5lWDY0J30KaWYgcGxhdGZvcm1zW2NmZy5wbGF0Zm9ybV0gdGhlbgpfcChpbmRleCwnPFRhcmdldE1hY2hpbmU+JXM8L1RhcmdldE1hY2hpbmU+JywgcGxhdGZvcm1zW2NmZy5wbGF0Zm9ybV0pCmVuZAplbmQKbG9jYWwgZnVuY3Rpb24gaXRlbV9kZWZfbGliKGNmZykKICAgICAgIC0tIFRoZSBYYm94MzYwIHByb2plY3QgZmlsZXMgYXJlIHN0b3JlZCBpbiBhbm90aGVyIHBsYWNlIGluIHRoZSBwcm9qZWN0IGZpbGUuCmlmIGNmZy5raW5kID09ICdTdGF0aWNMaWInIGFuZCBjZmcucGxhdGZvcm0gfj0gIlhib3gzNjAiIHRoZW4KX3AoMSwnPExpYj4nKQpfcCgyLCc8T3V0cHV0RmlsZT4kKE91dERpciklczwvT3V0cHV0RmlsZT4nLGNmZy5idWlsZHRhcmdldC5uYW1lKQphZGRpdGlvbmFsX29wdGlvbnMoMixjZmcpCmxpbmtfdGFyZ2V0X21hY2hpbmUoMixjZmcpCl9wKDEsJzwvTGliPicpCmVuZAplbmQKbG9jYWwgZnVuY3Rpb24gaW1wb3J0X2xpYihjZmcpCmlmIGNmZy5raW5kID09ICJTaGFyZWRMaWIiIHRoZW4KbG9jYWwgaW1wbGlibmFtZSA9IGNmZy5saW5rdGFyZ2V0LmZ1bGxwYXRoCl9wKDMsJzxJbXBvcnRMaWJyYXJ5PiVzPC9JbXBvcnRMaWJyYXJ5PicsaWlmKGNmZy5mbGFncy5Ob0ltcG9ydExpYiwgY2ZnLm9iamVjdHNkaXIgLi4gIlxcIiAuLiBwYXRoLmdldG5hbWUoaW1wbGlibmFtZSksIGltcGxpYm5hbWUpKQplbmQKZW5kCmZ1bmN0aW9uIHZjMjAxMC5saW5rKGNmZykKX3AoMiwnPExpbms+JykKX3AoMywnPFN1YlN5c3RlbT4lczwvU3ViU3lzdGVtPicsIGlpZihjZmcua2luZCA9PSAiQ29uc29sZUFwcCIsICJDb25zb2xlIiwgIldpbmRvd3MiKSkKX3AoMywnPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4lczwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPicsIHRvc3RyaW5nKGNmZy5mbGFncy5TeW1ib2xzIH49IG5pbCkpCmlmIHByZW1ha2UuY29uZmlnLmlzb3B0aW1pemVkYnVpbGQoY2ZnLmZsYWdzKSB0aGVuCl9wKDMsJzxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+JykKX3AoMywnPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+JykKZW5kCmlmIGNmZy5raW5kIH49ICdTdGF0aWNMaWInIHRoZW4KdmMyMDEwLmFkZGl0aW9uYWxEZXBlbmRlbmNpZXMoY2ZnKQpfcCgzLCc8T3V0cHV0RmlsZT4kKE91dERpciklczwvT3V0cHV0RmlsZT4nLCBjZmcuYnVpbGR0YXJnZXQubmFtZSkKaWYgI2NmZy5saWJkaXJzID4gMCB0aGVuCl9wKDMsJzxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiVzOyUlKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPicsCnByZW1ha2UuZXNjKHBhdGgudHJhbnNsYXRlKHRhYmxlLmNvbmNhdChjZmcubGliZGlycywgJzsnKSwgJ1xcJykpKQplbmQKaWYgdmMyMDEwLmNvbmZpZ190eXBlKGNmZykgPT0gJ0FwcGxpY2F0aW9uJyBhbmQgbm90IGNmZy5mbGFncy5XaW5NYWluIGFuZCBub3QgY2ZnLmZsYWdzLk1hbmFnZWQgdGhlbgpfcCgzLCc8RW50cnlQb2ludFN5bWJvbD5tYWluQ1JUU3RhcnR1cDwvRW50cnlQb2ludFN5bWJvbD4nKQplbmQKaW1wb3J0X2xpYihjZmcpCmxvY2FsIGRlZmZpbGUgPSBwcmVtYWtlLmZpbmRmaWxlKGNmZywgIi5kZWYiKQppZiBkZWZmaWxlIHRoZW4KX3AoMywnPE1vZHVsZURlZmluaXRpb25GaWxlPiVzPC9Nb2R1bGVEZWZpbml0aW9uRmlsZT4nLCBkZWZmaWxlKQplbmQKbGlua190YXJnZXRfbWFjaGluZSgzLGNmZykKYWRkaXRpb25hbF9vcHRpb25zKDMsY2ZnKQplbmQKX3AoMiwnPC9MaW5rPicpCmVuZApmdW5jdGlvbiB2YzIwMTAuYWRkaXRpb25hbERlcGVuZGVuY2llcyhjZmcpCmxvY2FsIGxpbmtzID0gcHJlbWFrZS5nZXRsaW5rcyhjZmcsICJzeXN0ZW0iLCAiZnVsbHBhdGgiKQppZiAjbGlua3MgPiAwIHRoZW4KX3AoMywnPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JXM7JSUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JywKdGFibGUuY29uY2F0KGxpbmtzLCAiOyIpKQplbmQKZW5kCmxvY2FsIGZ1bmN0aW9uIGl0ZW1fZGVmaW5pdGlvbnMocHJqKQpmb3IgXywgY2ZnaW5mbyBpbiBpcGFpcnMocHJqLnNvbHV0aW9uLnZzdHVkaW9fY29uZmlncykgZG8KbG9jYWwgY2ZnID0gcHJlbWFrZS5nZXRjb25maWcocHJqLCBjZmdpbmZvLnNyY19idWlsZGNmZywgY2ZnaW5mby5zcmNfcGxhdGZvcm0pCl9wKDEsJzxJdGVtRGVmaW5pdGlvbkdyb3VwICcgLi5pZl9jb25maWdfYW5kX3BsYXRmb3JtKCkgLi4nPicKLHByZW1ha2UuZXNjKGNmZ2luZm8ubmFtZSkpCnZzMTBfY2xjb21waWxlKGNmZykKcmVzb3VyY2VfY29tcGlsZShjZmcpCml0ZW1fZGVmX2xpYihjZmcpCnZjMjAxMC5saW5rKGNmZykKZXZlbnRfaG9va3MoY2ZnKQpfcCgxLCc8L0l0ZW1EZWZpbml0aW9uR3JvdXA+JykKZW5kCmVuZApmdW5jdGlvbiB2YzIwMTAuZ2V0ZmlsZWdyb3VwKHByaiwgZ3JvdXApCmxvY2FsIHNvcnRlZGZpbGVzID0gcHJqLnZjMjAxMHNvcnRlZGZpbGVzCmlmIG5vdCBzb3J0ZWRmaWxlcyB0aGVuCnNvcnRlZGZpbGVzID0gewpDbENvbXBpbGUgPSB7fSwKQ2xJbmNsdWRlID0ge30sCk5vbmUgPSB7fSwKUmVzb3VyY2VDb21waWxlID0ge30sCn0KZm9yIGZpbGUgaW4gcHJlbWFrZS5wcm9qZWN0LmVhY2hmaWxlKHByaikgZG8KaWYgcGF0aC5pc2NwcGZpbGUoZmlsZS5uYW1lKSB0aGVuCnRhYmxlLmluc2VydChzb3J0ZWRmaWxlcy5DbENvbXBpbGUsIGZpbGUpCmVsc2VpZiBwYXRoLmlzY3BwaGVhZGVyKGZpbGUubmFtZSkgdGhlbgp0YWJsZS5pbnNlcnQoc29ydGVkZmlsZXMuQ2xJbmNsdWRlLCBmaWxlKQplbHNlaWYgcGF0aC5pc3Jlc291cmNlZmlsZShmaWxlLm5hbWUpIHRoZW4KdGFibGUuaW5zZXJ0KHNvcnRlZGZpbGVzLlJlc291cmNlQ29tcGlsZSwgZmlsZSkKZWxzZQp0YWJsZS5pbnNlcnQoc29ydGVkZmlsZXMuTm9uZSwgZmlsZSkKZW5kCmVuZApwcmoudmMyMDEwc29ydGVkZmlsZXMgPSBzb3J0ZWRmaWxlcwplbmQKcmV0dXJuIHNvcnRlZGZpbGVzW2dyb3VwXQplbmQKZnVuY3Rpb24gdmMyMDEwLmZpbGVzKHByaikKdmMyMDEwLnNpbXBsZWZpbGVzZ3JvdXAocHJqLCAiQ2xJbmNsdWRlIikKdmMyMDEwLmNvbXBpbGVyZmlsZXNncm91cChwcmopCnZjMjAxMC5zaW1wbGVmaWxlc2dyb3VwKHByaiwgIk5vbmUiKQp2YzIwMTAuc2ltcGxlZmlsZXNncm91cChwcmosICJSZXNvdXJjZUNvbXBpbGUiKQplbmQKZnVuY3Rpb24gdmMyMDEwLnNpbXBsZWZpbGVzZ3JvdXAocHJqLCBzZWN0aW9uKQpsb2NhbCBmaWxlcyA9IHZjMjAxMC5nZXRmaWxlZ3JvdXAocHJqLCBzZWN0aW9uKQppZiAjZmlsZXMgPiAwICB0aGVuCl9wKDEsJzxJdGVtR3JvdXA+JykKZm9yIF8sIGZpbGUgaW4gaXBhaXJzKGZpbGVzKSBkbwpfcCgyLCc8JXMgSW5jbHVkZT1cIiVzXCIgLz4nLCBzZWN0aW9uLCBwYXRoLnRyYW5zbGF0ZShmaWxlLm5hbWUsICJcXCIpKQplbmQKX3AoMSwnPC9JdGVtR3JvdXA+JykKZW5kCmVuZApmdW5jdGlvbiB2YzIwMTAuY29tcGlsZXJmaWxlc2dyb3VwKHByaikKbG9jYWwgY29uZmlncyA9IHByai5zb2x1dGlvbi52c3R1ZGlvX2NvbmZpZ3MKbG9jYWwgZmlsZXMgPSB2YzIwMTAuZ2V0ZmlsZWdyb3VwKHByaiwgIkNsQ29tcGlsZSIpCmlmICNmaWxlcyA+IDAgIHRoZW4KbG9jYWwgY29uZmlnX21hcHBpbmdzID0ge30KZm9yIF8sIGNmZ2luZm8gaW4gaXBhaXJzKGNvbmZpZ3MpIGRvCmxvY2FsIGNmZyA9IHByZW1ha2UuZ2V0Y29uZmlnKHByaiwgY2ZnaW5mby5zcmNfYnVpbGRjZmcsIGNmZ2luZm8uc3JjX3BsYXRmb3JtKQppZiBjZmcucGNoaGVhZGVyIGFuZCBjZmcucGNoc291cmNlIGFuZCBub3QgY2ZnLmZsYWdzLk5vUENIIHRoZW4KY29uZmlnX21hcHBpbmdzW2NmZ2luZm9dID0gcGF0aC50cmFuc2xhdGUoY2ZnLnBjaHNvdXJjZSwgIlxcIikKZW5kCmVuZApfcCgxLCc8SXRlbUdyb3VwPicpCmZvciBfLCBmaWxlIGluIGlwYWlycyhmaWxlcykgZG8KbG9jYWwgdHJhbnNsYXRlZHBhdGggPSBwYXRoLnRyYW5zbGF0ZShmaWxlLm5hbWUsICJcXCIpCl9wKDIsJzxDbENvbXBpbGUgSW5jbHVkZT1cIiVzXCI+JywgdHJhbnNsYXRlZHBhdGgpCmZvciBfLCBjZmdpbmZvIGluIGlwYWlycyhjb25maWdzKSBkbwppZiBjb25maWdfbWFwcGluZ3NbY2ZnaW5mb10gYW5kIHRyYW5zbGF0ZWRwYXRoID09IGNvbmZpZ19tYXBwaW5nc1tjZmdpbmZvXSB0aGVuCl9wKDMsJzxQcmVjb21waWxlZEhlYWRlciAnLi4gaWZfY29uZmlnX2FuZF9wbGF0Zm9ybSgpIC4uICc+Q3JlYXRlPC9QcmVjb21waWxlZEhlYWRlcj4nLCBwcmVtYWtlLmVzYyhjZmdpbmZvLm5hbWUpKQpjb25maWdfbWFwcGluZ3NbY2ZnaW5mb10gPSBuaWwgIC0tb25seSBvbmUgc291cmNlIGZpbGUgcGVyIHBjaAplbmQKZW5kCl9wKDIsJzwvQ2xDb21waWxlPicpCmVuZApfcCgxLCc8L0l0ZW1Hcm91cD4nKQplbmQKZW5kCmZ1bmN0aW9uIHZjMjAxMC5oZWFkZXIodGFyZ2V0cykKaW8uZW9sID0gIlxyXG4iCl9wKCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PicpCmxvY2FsIHQgPSAiIgppZiB0YXJnZXRzIHRoZW4KdCA9ICcgRGVmYXVsdFRhcmdldHM9IicgLi4gdGFyZ2V0cyAuLiAnIicKZW5kCl9wKCc8UHJvamVjdCVzIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4nLCB0KQplbmQKZnVuY3Rpb24gcHJlbWFrZS52czIwMTBfdmN4cHJvaihwcmopCmlvLmluZGVudCA9ICIgICIKdmMyMDEwLmhlYWRlcigiQnVpbGQiKQp2czIwMTBfY29uZmlnKHByaikKdnMyMDEwX2dsb2JhbHMocHJqKQpfcCgxLCc8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4nKQpmb3IgXywgY2ZnaW5mbyBpbiBpcGFpcnMocHJqLnNvbHV0aW9uLnZzdHVkaW9fY29uZmlncykgZG8KbG9jYWwgY2ZnID0gcHJlbWFrZS5nZXRjb25maWcocHJqLCBjZmdpbmZvLnNyY19idWlsZGNmZywgY2ZnaW5mby5zcmNfcGxhdGZvcm0pCnZjMjAxMC5jb25maWd1cmF0aW9uUHJvcGVydHlHcm91cChjZmcsIGNmZ2luZm8pCmVuZApfcCgxLCc8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+JykKX3AoMSwnPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+JykKX3AoMSwnPC9JbXBvcnRHcm91cD4nKQppbXBvcnRfcHJvcHMocHJqKQpfcCgxLCc8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4nKQp2YzIwMTAub3V0cHV0UHJvcGVydGllcyhwcmopCml0ZW1fZGVmaW5pdGlvbnMocHJqKQp2YzIwMTAuZmlsZXMocHJqKQp2YzIwMTAucHJvamVjdFJlZmVyZW5jZXMocHJqKQpfcCgxLCc8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4nKQpfcCgxLCc8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPicpCl9wKDEsJzwvSW1wb3J0R3JvdXA+JykKX3AoJzwvUHJvamVjdD4nKQplbmQKZnVuY3Rpb24gdmMyMDEwLnByb2plY3RSZWZlcmVuY2VzKHByaikKbG9jYWwgZGVwcyA9IHByZW1ha2UuZ2V0ZGVwZW5kZW5jaWVzKHByaikKaWYgI2RlcHMgPiAwIHRoZW4KX3AoMSwnPEl0ZW1Hcm91cD4nKQpmb3IgXywgZGVwIGluIGlwYWlycyhkZXBzKSBkbwpsb2NhbCBkZXBwYXRoID0gcGF0aC5nZXRyZWxhdGl2ZShwcmoubG9jYXRpb24sIHZzdHVkaW8ucHJvamVjdGZpbGUoZGVwKSkKX3AoMiwnPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT1cIiVzXCI+JywgcGF0aC50cmFuc2xhdGUoZGVwcGF0aCwgIlxcIikpCl9wKDMsJzxQcm9qZWN0Pnslc308L1Byb2plY3Q+JywgZGVwLnV1aWQpCl9wKDIsJzwvUHJvamVjdFJlZmVyZW5jZT4nKQplbmQKX3AoMSwnPC9JdGVtR3JvdXA+JykKZW5kCmVuZApmdW5jdGlvbiB2YzIwMTAuZGVidWdkaXIoY2ZnKQppZiBjZmcuZGVidWdkaXIgdGhlbgpfcCgnICAgIDxMb2NhbERlYnVnZ2VyV29ya2luZ0RpcmVjdG9yeT4lczwvTG9jYWxEZWJ1Z2dlcldvcmtpbmdEaXJlY3Rvcnk+JywgcGF0aC50cmFuc2xhdGUoY2ZnLmRlYnVnZGlyLCAnXFwnKSkKX3AoJyAgICA8RGVidWdnZXJGbGF2b3I+V2luZG93c0xvY2FsRGVidWdnZXI8L0RlYnVnZ2VyRmxhdm9yPicpCmVuZAppZiBjZmcuZGVidWdhcmdzIHRoZW4KX3AoJyAgICA8TG9jYWxEZWJ1Z2dlckNvbW1hbmRBcmd1bWVudHM+JXM8L0xvY2FsRGVidWdnZXJDb21tYW5kQXJndW1lbnRzPicsIHRhYmxlLmNvbmNhdChjZmcuZGVidWdhcmdzLCAiICIpKQplbmQKZW5kCmZ1bmN0aW9uIHZjMjAxMC5kZWJ1Z2VudnMoY2ZnKQppZiBjZmcuZGVidWdlbnZzIGFuZCAjY2ZnLmRlYnVnZW52cyA+IDAgdGhlbgpfcCgyLCc8TG9jYWxEZWJ1Z2dlckVudmlyb25tZW50PiVzJXM8L0xvY2FsRGVidWdnZXJFbnZpcm9ubWVudD4nLHRhYmxlLmNvbmNhdChjZmcuZGVidWdlbnZzLCAiXG4iKQosaWlmKGNmZy5mbGFncy5EZWJ1Z0VudnNJbmhlcml0LCdcbiQoTG9jYWxEZWJ1Z2dlckVudmlyb25tZW50KScsJycpCikKaWYgY2ZnLmZsYWdzLkRlYnVnRW52c0RvbnRNZXJnZSB0aGVuCl9wKDIsJzxMb2NhbERlYnVnZ2VyTWVyZ2VFbnZpcm9ubWVudD5mYWxzZTwvTG9jYWxEZWJ1Z2dlck1lcmdlRW52aXJvbm1lbnQ+JykKZW5kCmVuZAplbmQKZnVuY3Rpb24gcHJlbWFrZS52czIwMTBfdmN4cHJval91c2VyKHByaikKaW8uaW5kZW50ID0gIiAgIgp2YzIwMTAuaGVhZGVyKCkKZm9yIF8sIGNmZ2luZm8gaW4gaXBhaXJzKHByai5zb2x1dGlvbi52c3R1ZGlvX2NvbmZpZ3MpIGRvCmxvY2FsIGNmZyA9IHByZW1ha2UuZ2V0Y29uZmlnKHByaiwgY2ZnaW5mby5zcmNfYnVpbGRjZmcsIGNmZ2luZm8uc3JjX3BsYXRmb3JtKQpfcCgnICA8UHJvcGVydHlHcm91cCAnLi4gaWZfY29uZmlnX2FuZF9wbGF0Zm9ybSgpIC4uJz4nLCBwcmVtYWtlLmVzYyhjZmdpbmZvLm5hbWUpKQp2YzIwMTAuZGVidWdkaXIoY2ZnKQp2YzIwMTAuZGVidWdlbnZzKGNmZykKX3AoJyAgPC9Qcm9wZXJ0eUdyb3VwPicpCmVuZApfcCgnPC9Qcm9qZWN0PicpCmVuZAoAbG9jYWwgdmMyMDEwID0gcHJlbWFrZS52c3R1ZGlvLnZjMjAxMApsb2NhbCBwcm9qZWN0ID0gcHJlbWFrZS5wcm9qZWN0CmZ1bmN0aW9uIHZjMjAxMC5maWx0ZXJpZGdyb3VwKHByaikKbG9jYWwgZmlsdGVycyA9IHsgfQpsb2NhbCBmaWx0ZXJmb3VuZCA9IGZhbHNlCmZvciBmaWxlIGluIHByb2plY3QuZWFjaGZpbGUocHJqKSBkbwpsb2NhbCBmb2xkZXJzID0gc3RyaW5nLmV4cGxvZGUoZmlsZS52cGF0aCwgIi8iLCB0cnVlKQpsb2NhbCBwYXRoID0gIiIKZm9yIGkgPSAxLCAjZm9sZGVycyAtIDEgZG8KaWYgbm90IGZpbHRlcmZvdW5kIHRoZW4KZmlsdGVyZm91bmQgPSB0cnVlCl9wKDEsJzxJdGVtR3JvdXA+JykKZW5kCnBhdGggPSBwYXRoIC4uIGZvbGRlcnNbaV0KaWYgbm90IGZpbHRlcnNbcGF0aF0gdGhlbgpmaWx0ZXJzW3BhdGhdID0gdHJ1ZQpfcCgyLCAnPEZpbHRlciBJbmNsdWRlPSIlcyI+JywgcGF0aCkKX3AoMywgJzxVbmlxdWVJZGVudGlmaWVyPnslc308L1VuaXF1ZUlkZW50aWZpZXI+Jywgb3MudXVpZCgpKQpfcCgyLCAnPC9GaWx0ZXI+JykKZW5kCnBhdGggPSBwYXRoIC4uICJcXCIKZW5kCmVuZAppZiBmaWx0ZXJmb3VuZCB0aGVuCl9wKDEsJzwvSXRlbUdyb3VwPicpCmVuZAplbmQKZnVuY3Rpb24gdmMyMDEwLmZpbGVmaWx0ZXJncm91cChwcmosIHNlY3Rpb24pCmxvY2FsIGZpbGVzID0gdmMyMDEwLmdldGZpbGVncm91cChwcmosIHNlY3Rpb24pCmlmICNmaWxlcyA+IDAgdGhlbgpfcCgxLCc8SXRlbUdyb3VwPicpCmZvciBfLCBmaWxlIGluIGlwYWlycyhmaWxlcykgZG8KbG9jYWwgZmlsdGVyCmlmIGZpbGUubmFtZSB+PSBmaWxlLnZwYXRoIHRoZW4KZmlsdGVyID0gcGF0aC5nZXRkaXJlY3RvcnkoZmlsZS52cGF0aCkKZWxzZQpmaWx0ZXIgPSBwYXRoLmdldGRpcmVjdG9yeShmaWxlLm5hbWUpCmVuZAppZiBmaWx0ZXIgfj0gIi4iIHRoZW4KX3AoMiwnPCVzIEluY2x1ZGU9XCIlc1wiPicsIHNlY3Rpb24sIHBhdGgudHJhbnNsYXRlKGZpbGUubmFtZSwgIlxcIikpCl9wKDMsJzxGaWx0ZXI+JXM8L0ZpbHRlcj4nLCBwYXRoLnRyYW5zbGF0ZShmaWx0ZXIsICJcXCIpKQpfcCgyLCc8LyVzPicsIHNlY3Rpb24pCmVsc2UKX3AoMiwnPCVzIEluY2x1ZGU9XCIlc1wiIC8+Jywgc2VjdGlvbiwgcGF0aC50cmFuc2xhdGUoZmlsZS5uYW1lLCAiXFwiKSkKZW5kCmVuZApfcCgxLCc8L0l0ZW1Hcm91cD4nKQplbmQKZW5kCmZ1bmN0aW9uIHZjMjAxMC5nZW5lcmF0ZV9maWx0ZXJzKHByaikKaW8uaW5kZW50ID0gIiAgIgp2YzIwMTAuaGVhZGVyKCkKdmMyMDEwLmZpbHRlcmlkZ3JvdXAocHJqKQp2YzIwMTAuZmlsZWZpbHRlcmdyb3VwKHByaiwgIk5vbmUiKQp2YzIwMTAuZmlsZWZpbHRlcmdyb3VwKHByaiwgIkNsSW5jbHVkZSIpCnZjMjAxMC5maWxlZmlsdGVyZ3JvdXAocHJqLCAiQ2xDb21waWxlIikKdmMyMDEwLmZpbGVmaWx0ZXJncm91cChwcmosICJSZXNvdXJjZUNvbXBpbGUiKQpfcCgnPC9Qcm9qZWN0PicpCmVuZAoAcHJlbWFrZS52c3R1ZGlvLnZjMjAxMiA9IHt9CmxvY2FsIHZjMjAxMiA9IHByZW1ha2UudnN0dWRpby52YzIwMTIKbG9jYWwgdnN0dWRpbyA9IHByZW1ha2UudnN0dWRpbwpuZXdhY3Rpb24Kewp0cmlnZ2VyICAgICAgICAgPSAidnMyMDEyIiwKc2hvcnRuYW1lICAgICAgID0gIlZpc3VhbCBTdHVkaW8gMjAxMiIsCmRlc2NyaXB0aW9uICAgICA9ICJHZW5lcmF0ZSBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAyMDEyIHByb2plY3QgZmlsZXMiLApvcyAgICAgICAgICAgICAgPSAid2luZG93cyIsCnZhbGlkX2tpbmRzICAgICA9IHsgIkNvbnNvbGVBcHAiLCAiV2luZG93ZWRBcHAiLCAiU3RhdGljTGliIiwgIlNoYXJlZExpYiIgfSwKdmFsaWRfbGFuZ3VhZ2VzID0geyAiQyIsICJDKysiLCAiQyMifSwKdmFsaWRfdG9vbHMgICAgID0gewpjYyAgICAgPSB7ICJtc2MiICAgfSwKZG90bmV0ID0geyAibXNuZXQiIH0sCn0sCm9uc29sdXRpb24gPSBmdW5jdGlvbihzbG4pCnByZW1ha2UuZ2VuZXJhdGUoc2xuLCAiJSUuc2xuIiwgdnN0dWRpby5zbG4yMDA1LmdlbmVyYXRlKQplbmQsCm9ucHJvamVjdCA9IGZ1bmN0aW9uKHByaikKaWYgcHJlbWFrZS5pc2RvdG5ldHByb2plY3QocHJqKSB0aGVuCnByZW1ha2UuZ2VuZXJhdGUocHJqLCAiJSUuY3Nwcm9qIiwgdnN0dWRpby5jczIwMDUuZ2VuZXJhdGUpCnByZW1ha2UuZ2VuZXJhdGUocHJqLCAiJSUuY3Nwcm9qLnVzZXIiLCB2c3R1ZGlvLmNzMjAwNS5nZW5lcmF0ZV91c2VyKQplbHNlCnByZW1ha2UuZ2VuZXJhdGUocHJqLCAiJSUudmN4cHJvaiIsIHByZW1ha2UudnMyMDEwX3ZjeHByb2opCnByZW1ha2UuZ2VuZXJhdGUocHJqLCAiJSUudmN4cHJvai51c2VyIiwgcHJlbWFrZS52czIwMTBfdmN4cHJval91c2VyKQpwcmVtYWtlLmdlbmVyYXRlKHByaiwgIiUlLnZjeHByb2ouZmlsdGVycyIsIHZzdHVkaW8udmMyMDEwLmdlbmVyYXRlX2ZpbHRlcnMpCmVuZAplbmQsCm9uY2xlYW5zb2x1dGlvbiA9IHByZW1ha2UudnN0dWRpby5jbGVhbnNvbHV0aW9uLApvbmNsZWFucHJvamVjdCAgPSBwcmVtYWtlLnZzdHVkaW8uY2xlYW5wcm9qZWN0LApvbmNsZWFudGFyZ2V0ICAgPSBwcmVtYWtlLnZzdHVkaW8uY2xlYW50YXJnZXQsCnZzdHVkaW8gPSB7CnNvbHV0aW9uVmVyc2lvbiA9ICIxMiIsCnRhcmdldEZyYW1ld29yayA9ICI0LjUiLAp0b29sc1ZlcnNpb24gICAgPSAiNC4wIiwKfQp9CgBwcmVtYWtlLnhjb2RlID0geyB9Cm5ld2FjdGlvbiAKewp0cmlnZ2VyICAgICAgICAgPSAieGNvZGUzIiwKc2hvcnRuYW1lICAgICAgID0gIlhjb2RlIDMiLApkZXNjcmlwdGlvbiAgICAgPSAiR2VuZXJhdGUgQXBwbGUgWGNvZGUgMyBwcm9qZWN0IGZpbGVzIChleHBlcmltZW50YWwpIiwKb3MgICAgICAgICAgICAgID0gIm1hY29zeCIsCnZhbGlkX2tpbmRzICAgICA9IHsgIkNvbnNvbGVBcHAiLCAiV2luZG93ZWRBcHAiLCAiU2hhcmVkTGliIiwgIlN0YXRpY0xpYiIgfSwKdmFsaWRfbGFuZ3VhZ2VzID0geyAiQyIsICJDKysiIH0sCnZhbGlkX3Rvb2xzICAgICA9IHsKY2MgICAgID0geyAiZ2NjIiB9LAp9LAp2YWxpZF9wbGF0Zm9ybXMgPSB7IApOYXRpdmUgPSAiTmF0aXZlIiwgCngzMiA9ICJOYXRpdmUgMzItYml0IiwgCng2NCA9ICJOYXRpdmUgNjQtYml0IiwgClVuaXZlcnNhbDMyID0gIjMyLWJpdCBVbml2ZXJzYWwiLCAKVW5pdmVyc2FsNjQgPSAiNjQtYml0IFVuaXZlcnNhbCIsIApVbml2ZXJzYWwgPSAiVW5pdmVyc2FsIiwKaU9TID0gImlPUyIsCn0sCmRlZmF1bHRfcGxhdGZvcm0gPSAiVW5pdmVyc2FsIiwKb25zb2x1dGlvbiA9IGZ1bmN0aW9uKHNsbikKcHJlbWFrZS54Y29kZS5wcmVwYXJlc29sdXRpb24oc2xuKQplbmQsCm9ucHJvamVjdCA9IGZ1bmN0aW9uKHByaikKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIiwgcHJlbWFrZS54Y29kZS5wcm9qZWN0KQplbmQsCm9uY2xlYW5wcm9qZWN0ID0gZnVuY3Rpb24ocHJqKQpwcmVtYWtlLmNsZWFuLmRpcmVjdG9yeShwcmosICIlJS54Y29kZXByb2oiKQplbmQsCm9uY2hlY2twcm9qZWN0ID0gZnVuY3Rpb24ocHJqKQpsb2NhbCBsYXN0CmZvciBjZmcgaW4gcHJlbWFrZS5lYWNoY29uZmlnKHByaikgZG8KaWYgbGFzdCBhbmQgbGFzdCB+PSBjZmcua2luZCB0aGVuCmVycm9yKCJQcm9qZWN0ICciIC4uIHByai5uYW1lIC4uICInIHVzZXMgbW9yZSB0aGFuIG9uZSB0YXJnZXQga2luZDsgbm90IHN1cHBvcnRlZCBieSBYY29kZSIsIDApCmVuZApsYXN0ID0gY2ZnLmtpbmQKZW5kCmVuZCwKfQpuZXdhY3Rpb24gCnsKdHJpZ2dlciAgICAgICAgID0gInhjb2RlNCIsCnNob3J0bmFtZSAgICAgICA9ICJYY29kZSA0IiwKZGVzY3JpcHRpb24gICAgID0gIkdlbmVyYXRlIEFwcGxlIFhjb2RlIDQgcHJvamVjdCBmaWxlcyAoZXhwZXJpbWVudGFsKSIsCm9zICAgICAgICAgICAgICA9ICJtYWNvc3giLAp2YWxpZF9raW5kcyAgICAgPSB7ICJDb25zb2xlQXBwIiwgIldpbmRvd2VkQXBwIiwgIlNoYXJlZExpYiIsICJTdGF0aWNMaWIiIH0sCnZhbGlkX2xhbmd1YWdlcyA9IHsgIkMiLCAiQysrIiB9LAp2YWxpZF90b29scyAgICAgPSB7CmNjICAgICA9IHsgImdjYyIgfSwKfSwKdmFsaWRfcGxhdGZvcm1zID0geyAKTmF0aXZlID0gIk5hdGl2ZSIsIAp4MzIgPSAiTmF0aXZlIDMyLWJpdCIsIAp4NjQgPSAiTmF0aXZlIDY0LWJpdCIsIApVbml2ZXJzYWwzMiA9ICIzMi1iaXQgVW5pdmVyc2FsIiwgClVuaXZlcnNhbDY0ID0gIjY0LWJpdCBVbml2ZXJzYWwiLCAKVW5pdmVyc2FsID0gIlVuaXZlcnNhbCIsCmlPUyA9ICJpT1MiLAp9LApkZWZhdWx0X3BsYXRmb3JtID0gIlVuaXZlcnNhbCIsCm9uc29sdXRpb24gPSBmdW5jdGlvbihzbG4pCnByZW1ha2UuZ2VuZXJhdGUoc2xuLCAiJSUueGN3b3Jrc3BhY2UvY29udGVudHMueGN3b3Jrc3BhY2VkYXRhIiwgcHJlbWFrZS54Y29kZTQud29ya3NwYWNlX2dlbmVyYXRlKQplbmQsCm9ucHJvamVjdCA9IGZ1bmN0aW9uKHByaikKcHJlbWFrZS5nZW5lcmF0ZShwcmosICIlJS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIiwgcHJlbWFrZS54Y29kZS5wcm9qZWN0KQplbmQsCm9uY2xlYW5wcm9qZWN0ID0gZnVuY3Rpb24ocHJqKQpwcmVtYWtlLmNsZWFuLmRpcmVjdG9yeShwcmosICIlJS54Y29kZXByb2oiKQpwcmVtYWtlLmNsZWFuLmRpcmVjdG9yeShwcmosICIlJS54Y3dvcmtzcGFjZSIpCmVuZCwKb25jaGVja3Byb2plY3QgPSBmdW5jdGlvbihwcmopCmxvY2FsIGxhc3QKZm9yIGNmZyBpbiBwcmVtYWtlLmVhY2hjb25maWcocHJqKSBkbwppZiBsYXN0IGFuZCBsYXN0IH49IGNmZy5raW5kIHRoZW4KZXJyb3IoIlByb2plY3QgJyIgLi4gcHJqLm5hbWUgLi4gIicgdXNlcyBtb3JlIHRoYW4gb25lIHRhcmdldCBraW5kOyBub3Qgc3VwcG9ydGVkIGJ5IFhjb2RlIiwgMCkKZW5kCmxhc3QgPSBjZmcua2luZAplbmQKZW5kLAp9CgBsb2NhbCB4Y29kZSA9IHByZW1ha2UueGNvZGUKbG9jYWwgdHJlZSAgPSBwcmVtYWtlLnRyZWUKZnVuY3Rpb24geGNvZGUuZ2V0YnVpbGRjYXRlZ29yeShub2RlKQpsb2NhbCBjYXRlZ29yaWVzID0gewpbIi5hIl0gPSAiRnJhbWV3b3JrcyIsClsiLmMiXSA9ICJTb3VyY2VzIiwKWyIuY2MiXSA9ICJTb3VyY2VzIiwKWyIuY3BwIl0gPSAiU291cmNlcyIsClsiLmN4eCJdID0gIlNvdXJjZXMiLApbIi5keWxpYiJdID0gIkZyYW1ld29ya3MiLApbIi5mcmFtZXdvcmsiXSA9ICJGcmFtZXdvcmtzIiwKWyIubSJdID0gIlNvdXJjZXMiLApbIi5tbSJdID0gIlNvdXJjZXMiLApbIi5zdHJpbmdzIl0gPSAiUmVzb3VyY2VzIiwKWyIubmliIl0gPSAiUmVzb3VyY2VzIiwKWyIueGliIl0gPSAiUmVzb3VyY2VzIiwKWyIuaWNucyJdID0gIlJlc291cmNlcyIsClsiLmJtcCJdID0gIlJlc291cmNlcyIsClsiLndhdiJdID0gIlJlc291cmNlcyIsCn0KcmV0dXJuIGNhdGVnb3JpZXNbcGF0aC5nZXRleHRlbnNpb24obm9kZS5uYW1lKV0KZW5kCmZ1bmN0aW9uIHhjb2RlLmdldGNvbmZpZ25hbWUoY2ZnKQpsb2NhbCBuYW1lID0gY2ZnLm5hbWUKaWYgI2NmZy5wcm9qZWN0LnNvbHV0aW9uLnhjb2RlLnBsYXRmb3JtcyA+IDEgdGhlbgpuYW1lID0gbmFtZSAuLiAiICIgLi4gcHJlbWFrZS5hY3Rpb24uY3VycmVudCgpLnZhbGlkX3BsYXRmb3Jtc1tjZmcucGxhdGZvcm1dCmVuZApyZXR1cm4gbmFtZQplbmQKZnVuY3Rpb24geGNvZGUuZ2V0ZmlsZXR5cGUobm9kZSkKbG9jYWwgdHlwZXMgPSB7ClsiLmMiXSAgICAgICAgID0gInNvdXJjZWNvZGUuYy5jIiwKWyIuY2MiXSAgICAgICAgPSAic291cmNlY29kZS5jcHAuY3BwIiwKWyIuY3BwIl0gICAgICAgPSAic291cmNlY29kZS5jcHAuY3BwIiwKWyIuY3NzIl0gICAgICAgPSAidGV4dC5jc3MiLApbIi5jeHgiXSAgICAgICA9ICJzb3VyY2Vjb2RlLmNwcC5jcHAiLApbIi5mcmFtZXdvcmsiXSA9ICJ3cmFwcGVyLmZyYW1ld29yayIsClsiLmdpZiJdICAgICAgID0gImltYWdlLmdpZiIsClsiLmgiXSAgICAgICAgID0gInNvdXJjZWNvZGUuYy5oIiwKWyIuaHRtbCJdICAgICAgPSAidGV4dC5odG1sIiwKWyIubHVhIl0gICAgICAgPSAic291cmNlY29kZS5sdWEiLApbIi5tIl0gICAgICAgICA9ICJzb3VyY2Vjb2RlLmMub2JqYyIsClsiLm1tIl0gICAgICAgID0gInNvdXJjZWNvZGUuY3BwLm9iamMiLApbIi5uaWIiXSAgICAgICA9ICJ3cmFwcGVyLm5pYiIsClsiLnBjaCJdICAgICAgID0gInNvdXJjZWNvZGUuYy5oIiwKWyIucGxpc3QiXSAgICAgPSAidGV4dC5wbGlzdC54bWwiLApbIi5zdHJpbmdzIl0gICA9ICJ0ZXh0LnBsaXN0LnN0cmluZ3MiLApbIi54aWIiXSAgICAgICA9ICJmaWxlLnhpYiIsClsiLmljbnMiXSAgICAgID0gImltYWdlLmljbnMiLApbIi5ibXAiXSAgICAgICA9ICJpbWFnZS5ibXAiLApbIi53YXYiXSAgICAgICA9ICJhdWRpby53YXYiLAp9CnJldHVybiB0eXBlc1twYXRoLmdldGV4dGVuc2lvbihub2RlLnBhdGgpXSBvciAidGV4dCIKZW5kCmZ1bmN0aW9uIHhjb2RlLmdldHByb2R1Y3R0eXBlKG5vZGUpCmxvY2FsIHR5cGVzID0gewpDb25zb2xlQXBwICA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiLApXaW5kb3dlZEFwcCA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmFwcGxpY2F0aW9uIiwKU3RhdGljTGliICAgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyIsClNoYXJlZExpYiAgID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5keW5hbWljIiwKfQpyZXR1cm4gdHlwZXNbbm9kZS5jZmcua2luZF0KZW5kCmZ1bmN0aW9uIHhjb2RlLmdldHRhcmdldHR5cGUobm9kZSkKbG9jYWwgdHlwZXMgPSB7CkNvbnNvbGVBcHAgID0gIlwiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGVcIiIsCldpbmRvd2VkQXBwID0gIndyYXBwZXIuYXBwbGljYXRpb24iLApTdGF0aWNMaWIgICA9ICJhcmNoaXZlLmFyIiwKU2hhcmVkTGliICAgPSAiXCJjb21waWxlZC5tYWNoLW8uZHlsaWJcIiIsCn0KcmV0dXJuIHR5cGVzW25vZGUuY2ZnLmtpbmRdCmVuZApmdW5jdGlvbiB4Y29kZS5nZXR4Y29kZXByb2puYW1lKHByaikKbG9jYWwgZm5hbWUgPSBwcmVtYWtlLnByb2plY3QuZ2V0ZmlsZW5hbWUocHJqLCAiJSUueGNvZGVwcm9qIikKcmV0dXJuIGZuYW1lCmVuZApmdW5jdGlvbiB4Y29kZS5pc2ZyYW1ld29yayhmbmFtZSkKcmV0dXJuIChwYXRoLmdldGV4dGVuc2lvbihmbmFtZSkgPT0gIi5mcmFtZXdvcmsiKQplbmQKZnVuY3Rpb24geGNvZGUubmV3aWQoKQpyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJTA0WCUwNFglMDRYJTA0WCUwNFglMDRYIiwKbWF0aC5yYW5kb20oMCwgMzI3NjcpLAptYXRoLnJhbmRvbSgwLCAzMjc2NyksCm1hdGgucmFuZG9tKDAsIDMyNzY3KSwKbWF0aC5yYW5kb20oMCwgMzI3NjcpLAptYXRoLnJhbmRvbSgwLCAzMjc2NyksCm1hdGgucmFuZG9tKDAsIDMyNzY3KSkKZW5kCmZ1bmN0aW9uIHhjb2RlLnByZXBhcmVzb2x1dGlvbihzbG4pCnNsbi54Y29kZSA9IHsgfQpzbG4ueGNvZGUucGxhdGZvcm1zID0gcHJlbWFrZS5maWx0ZXJwbGF0Zm9ybXMoc2xuLCBwcmVtYWtlLmFjdGlvbi5jdXJyZW50KCkudmFsaWRfcGxhdGZvcm1zLCAiVW5pdmVyc2FsIikKZm9yIHByaiBpbiBwcmVtYWtlLnNvbHV0aW9uLmVhY2hwcm9qZWN0KHNsbikgZG8KbG9jYWwgY2ZnID0gcHJlbWFrZS5nZXRjb25maWcocHJqLCBwcmouY29uZmlndXJhdGlvbnNbMV0sIHNsbi54Y29kZS5wbGF0Zm9ybXNbMV0pCmxvY2FsIG5vZGUgPSBwcmVtYWtlLnRyZWUubmV3KHBhdGguZ2V0bmFtZShjZmcuYnVpbGR0YXJnZXQuYnVuZGxlcGF0aCkpCm5vZGUuY2ZnID0gY2ZnCm5vZGUuaWQgPSBwcmVtYWtlLnhjb2RlLm5ld2lkKG5vZGUsICJwcm9kdWN0IikKbm9kZS50YXJnZXRpZCA9IHByZW1ha2UueGNvZGUubmV3aWQobm9kZSwgInRhcmdldCIpCnByai54Y29kZSA9IHt9CnByai54Y29kZS5wcm9qZWN0bm9kZSA9IG5vZGUKZW5kCmVuZApmdW5jdGlvbiB4Y29kZS5wcmludGxpc3QobGlzdCwgdGFnKQppZiAjbGlzdCA+IDAgdGhlbgpfcCg0LCclcyA9ICgnLCB0YWcpCmZvciBfLCBpdGVtIGluIGlwYWlycyhsaXN0KSBkbwpfcCg1LCAnIiVzIiwnLCBpdGVtKQplbmQKX3AoNCwnKTsnKQplbmQKZW5kCmZ1bmN0aW9uIHhjb2RlLkhlYWRlcigpCl9wKCcvLyAhJCpVVEY4KiQhJykKX3AoJ3snKQpfcCgxLCdhcmNoaXZlVmVyc2lvbiA9IDE7JykKX3AoMSwnY2xhc3NlcyA9IHsnKQpfcCgxLCd9OycpCl9wKDEsJ29iamVjdFZlcnNpb24gPSA0NTsnKQpfcCgxLCdvYmplY3RzID0geycpCl9wKCcnKQplbmQKZnVuY3Rpb24geGNvZGUuUEJYQnVpbGRGaWxlKHRyKQpfcCgnLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8nKQp0cmVlLnRyYXZlcnNlKHRyLCB7Cm9ubm9kZSA9IGZ1bmN0aW9uKG5vZGUpCmlmIG5vZGUuYnVpbGRpZCB0aGVuCl9wKDIsJyVzIC8qICVzIGluICVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9ICVzIC8qICVzICovOyB9OycsIApub2RlLmJ1aWxkaWQsIG5vZGUubmFtZSwgeGNvZGUuZ2V0YnVpbGRjYXRlZ29yeShub2RlKSwgbm9kZS5pZCwgbm9kZS5uYW1lKQplbmQKZW5kCn0pCl9wKCcvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8nKQpfcCgnJykKZW5kCmZ1bmN0aW9uIHhjb2RlLlBCWENvbnRhaW5lckl0ZW1Qcm94eSh0cikKaWYgI3RyLnByb2plY3RzLmNoaWxkcmVuID4gMCB0aGVuCl9wKCcvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLycpCmZvciBfLCBub2RlIGluIGlwYWlycyh0ci5wcm9qZWN0cy5jaGlsZHJlbikgZG8KX3AoMiwnJXMgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geycsIG5vZGUucHJvZHVjdHByb3h5aWQpCl9wKDMsJ2lzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsnKQpfcCgzLCdjb250YWluZXJQb3J0YWwgPSAlcyAvKiAlcyAqLzsnLCBub2RlLmlkLCBwYXRoLmdldG5hbWUobm9kZS5wYXRoKSkKX3AoMywncHJveHlUeXBlID0gMjsnKQpfcCgzLCdyZW1vdGVHbG9iYWxJRFN0cmluZyA9ICVzOycsIG5vZGUucHJvamVjdC54Y29kZS5wcm9qZWN0bm9kZS5pZCkKX3AoMywncmVtb3RlSW5mbyA9ICIlcyI7Jywgbm9kZS5wcm9qZWN0Lnhjb2RlLnByb2plY3Rub2RlLm5hbWUpCl9wKDIsJ307JykKX3AoMiwnJXMgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geycsIG5vZGUudGFyZ2V0cHJveHlpZCkKX3AoMywnaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OycpCl9wKDMsJ2NvbnRhaW5lclBvcnRhbCA9ICVzIC8qICVzICovOycsIG5vZGUuaWQsIHBhdGguZ2V0bmFtZShub2RlLnBhdGgpKQpfcCgzLCdwcm94eVR5cGUgPSAxOycpCl9wKDMsJ3JlbW90ZUdsb2JhbElEU3RyaW5nID0gJXM7Jywgbm9kZS5wcm9qZWN0Lnhjb2RlLnByb2plY3Rub2RlLnRhcmdldGlkKQpfcCgzLCdyZW1vdGVJbmZvID0gIiVzIjsnLCBub2RlLnByb2plY3QueGNvZGUucHJvamVjdG5vZGUubmFtZSkKX3AoMiwnfTsnKQplbmQKX3AoJy8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLycpCl9wKCcnKQplbmQKZW5kCmZ1bmN0aW9uIHhjb2RlLlBCWEZpbGVSZWZlcmVuY2UodHIpCl9wKCcvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8nKQp0cmVlLnRyYXZlcnNlKHRyLCB7Cm9ubGVhZiA9IGZ1bmN0aW9uKG5vZGUpCmlmIG5vdCBub2RlLnBhdGggdGhlbgpyZXR1cm4KZW5kCmlmIG5vZGUua2luZCA9PSAicHJvZHVjdCIgdGhlbgpfcCgyLCclcyAvKiAlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gJXM7IGluY2x1ZGVJbkluZGV4ID0gMDsgbmFtZSA9ICIlcyI7IHBhdGggPSAiJXMiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OycsCm5vZGUuaWQsIG5vZGUubmFtZSwgeGNvZGUuZ2V0dGFyZ2V0dHlwZShub2RlKSwgbm9kZS5uYW1lLCBwYXRoLmdldG5hbWUobm9kZS5jZmcuYnVpbGR0YXJnZXQuYnVuZGxlcGF0aCkpCmVsc2VpZiBub2RlLnBhcmVudC5wYXJlbnQgPT0gdHIucHJvamVjdHMgdGhlbgpsb2NhbCByZWxwYXRoID0gcGF0aC5nZXRyZWxhdGl2ZSh0ci5wcm9qZWN0LmxvY2F0aW9uLCBub2RlLnBhcmVudC5wcm9qZWN0LmxvY2F0aW9uKQpfcCgyLCclcyAvKiAlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJ3cmFwcGVyLnBiLXByb2plY3QiOyBuYW1lID0gIiVzIjsgcGF0aCA9ICIlcyI7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsnLApub2RlLnBhcmVudC5pZCwgbm9kZS5wYXJlbnQubmFtZSwgbm9kZS5wYXJlbnQubmFtZSwgcGF0aC5qb2luKHJlbHBhdGgsIG5vZGUucGFyZW50Lm5hbWUpKQplbHNlCmxvY2FsIHB0aCwgc3JjCmlmIHhjb2RlLmlzZnJhbWV3b3JrKG5vZGUucGF0aCkgdGhlbgpsb2NhbCBub2RlUGF0aCA9IG5vZGUucGF0aApsb2NhbCBfLCBtYXRjaEVuZCwgdmFyaWFibGUgPSBzdHJpbmcuZmluZChub2RlUGF0aCwgIl4lJCUoKC4rKSUpLyIpCmlmIHZhcmlhYmxlIHRoZW4Kbm9kZVBhdGggPSBzdHJpbmcuc3ViKG5vZGVQYXRoLCBtYXRjaEVuZCArIDEpCmVuZAppZiBzdHJpbmcuZmluZChub2RlUGF0aCwnLycpICB0aGVuCmlmIHN0cmluZy5maW5kKG5vZGVQYXRoLCdeJS4nKXRoZW4KZXJyb3IoJ3JlbGF0aXZlIHBhdGhzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBmb3IgZnJhbWV3b3JrcycpCmVuZApwdGggPSBub2RlUGF0aAplbHNlCnB0aCA9ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy8iIC4uIG5vZGVQYXRoCmVuZAppZiB2YXJpYWJsZSB0aGVuCnNyYyA9IHZhcmlhYmxlCmlmIHN0cmluZy5maW5kKHB0aCwgJ14vJykgdGhlbgpwdGggPSBzdHJpbmcuc3ViKHB0aCwgMikKZW5kCmVsc2UKc3JjID0gIjxhYnNvbHV0ZT4iCmVuZAplbHNlCnNyYyA9ICI8Z3JvdXA+IgppZiBub2RlLnBhcmVudC5pc3ZwYXRoIHRoZW4KcHRoID0gbm9kZS5jZmcubmFtZQplbHNlCnB0aCA9IHRyZWUuZ2V0bG9jYWxwYXRoKG5vZGUpCmVuZAplbmQKX3AoMiwnJXMgLyogJXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAlczsgbmFtZSA9ICIlcyI7IHBhdGggPSAiJXMiOyBzb3VyY2VUcmVlID0gIiVzIjsgfTsnLApub2RlLmlkLCBub2RlLm5hbWUsIHhjb2RlLmdldGZpbGV0eXBlKG5vZGUpLCBub2RlLm5hbWUsIHB0aCwgc3JjKQplbmQKZW5kCn0pCl9wKCcvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovJykKX3AoJycpCmVuZApmdW5jdGlvbiB4Y29kZS5QQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSh0cikKX3AoJy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8nKQpfcCgyLCclcyAvKiBGcmFtZXdvcmtzICovID0geycsIHRyLnByb2R1Y3RzLmNoaWxkcmVuWzFdLmZ4c3RhZ2VpZCkKX3AoMywnaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7JykKX3AoMywnYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsnKQpfcCgzLCdmaWxlcyA9ICgnKQp0cmVlLnRyYXZlcnNlKHRyLmZyYW1ld29ya3MsIHsKb25sZWFmID0gZnVuY3Rpb24obm9kZSkKX3AoNCwnJXMgLyogJXMgaW4gRnJhbWV3b3JrcyAqLywnLCBub2RlLmJ1aWxkaWQsIG5vZGUubmFtZSkKZW5kCn0pCnRyZWUudHJhdmVyc2UodHIucHJvamVjdHMsIHsKb25sZWFmID0gZnVuY3Rpb24obm9kZSkKX3AoNCwnJXMgLyogJXMgaW4gRnJhbWV3b3JrcyAqLywnLCBub2RlLmJ1aWxkaWQsIG5vZGUubmFtZSkKZW5kCn0pCl9wKDMsJyk7JykKX3AoMywncnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7JykKX3AoMiwnfTsnKQpfcCgnLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8nKQpfcCgnJykKZW5kCmZ1bmN0aW9uIHhjb2RlLlBCWEdyb3VwKHRyKQpfcCgnLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLycpCnRyZWUudHJhdmVyc2UodHIsIHsKb25ub2RlID0gZnVuY3Rpb24obm9kZSkKaWYgKG5vZGUucGF0aCBhbmQgI25vZGUuY2hpbGRyZW4gPT0gMCkgb3Igbm9kZS5raW5kID09ICJ2Z3JvdXAiIHRoZW4KcmV0dXJuCmVuZAppZiBub2RlLnBhcmVudCA9PSB0ci5wcm9qZWN0cyB0aGVuCl9wKDIsJyVzIC8qIFByb2R1Y3RzICovID0geycsIG5vZGUucHJvZHVjdGdyb3VwaWQpCmVsc2UKX3AoMiwnJXMgLyogJXMgKi8gPSB7Jywgbm9kZS5pZCwgbm9kZS5uYW1lKQplbmQKX3AoMywnaXNhID0gUEJYR3JvdXA7JykKX3AoMywnY2hpbGRyZW4gPSAoJykKZm9yIF8sIGNoaWxkbm9kZSBpbiBpcGFpcnMobm9kZS5jaGlsZHJlbikgZG8KX3AoNCwnJXMgLyogJXMgKi8sJywgY2hpbGRub2RlLmlkLCBjaGlsZG5vZGUubmFtZSkKZW5kCl9wKDMsJyk7JykKaWYgbm9kZS5wYXJlbnQgPT0gdHIucHJvamVjdHMgdGhlbgpfcCgzLCduYW1lID0gUHJvZHVjdHM7JykKZWxzZQpfcCgzLCduYW1lID0gIiVzIjsnLCBub2RlLm5hbWUpCmlmIG5vZGUucGF0aCBhbmQgbm90IG5vZGUuaXN2cGF0aCB0aGVuCmxvY2FsIHAgPSBub2RlLnBhdGgKaWYgbm9kZS5wYXJlbnQucGF0aCB0aGVuCnAgPSBwYXRoLmdldHJlbGF0aXZlKG5vZGUucGFyZW50LnBhdGgsIG5vZGUucGF0aCkKZW5kCl9wKDMsJ3BhdGggPSAiJXMiOycsIHApCmVuZAplbmQKX3AoMywnc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsnKQpfcCgyLCd9OycpCmVuZAp9LCB0cnVlKQpfcCgnLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8nKQpfcCgnJykKZW5kCmZ1bmN0aW9uIHhjb2RlLlBCWE5hdGl2ZVRhcmdldCh0cikKX3AoJy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovJykKZm9yIF8sIG5vZGUgaW4gaXBhaXJzKHRyLnByb2R1Y3RzLmNoaWxkcmVuKSBkbwpsb2NhbCBuYW1lID0gdHIucHJvamVjdC5uYW1lCmxvY2FsIGZ1bmN0aW9uIGhhc0J1aWxkQ29tbWFuZHMod2hpY2gpCmlmICN0ci5wcm9qZWN0W3doaWNoXSA+IDAgdGhlbgpyZXR1cm4gdHJ1ZQplbmQKZm9yIF8sIGNmZyBpbiBpcGFpcnModHIuY29uZmlncykgZG8KaWYgI2NmZ1t3aGljaF0gPiAwIHRoZW4KcmV0dXJuIHRydWUKZW5kCmVuZAplbmQKX3AoMiwnJXMgLyogJXMgKi8gPSB7Jywgbm9kZS50YXJnZXRpZCwgbmFtZSkKX3AoMywnaXNhID0gUEJYTmF0aXZlVGFyZ2V0OycpCl9wKDMsJ2J1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAlcyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiJXMiICovOycsIG5vZGUuY2Znc2VjdGlvbiwgbmFtZSkKX3AoMywnYnVpbGRQaGFzZXMgPSAoJykKaWYgaGFzQnVpbGRDb21tYW5kcygncHJlYnVpbGRjb21tYW5kcycpIHRoZW4KX3AoNCwnOTYwN0FFMTAxMEM4NTdFNTAwQ0QxMzc2IC8qIFByZWJ1aWxkICovLCcpCmVuZApfcCg0LCclcyAvKiBSZXNvdXJjZXMgKi8sJywgbm9kZS5yZXNzdGFnZWlkKQpfcCg0LCclcyAvKiBTb3VyY2VzICovLCcsIG5vZGUuc291cmNlc2lkKQppZiBoYXNCdWlsZENvbW1hbmRzKCdwcmVsaW5rY29tbWFuZHMnKSB0aGVuCl9wKDQsJzk2MDdBRTM1MTBDODVFN0UwMENEMTM3NiAvKiBQcmVsaW5rICovLCcpCmVuZApfcCg0LCclcyAvKiBGcmFtZXdvcmtzICovLCcsIG5vZGUuZnhzdGFnZWlkKQppZiBoYXNCdWlsZENvbW1hbmRzKCdwb3N0YnVpbGRjb21tYW5kcycpIHRoZW4KX3AoNCwnOTYwN0FFMzcxMEM4NUU4RjAwQ0QxMzc2IC8qIFBvc3RidWlsZCAqLywnKQplbmQKX3AoMywnKTsnKQpfcCgzLCdidWlsZFJ1bGVzID0gKCcpCl9wKDMsJyk7JykKX3AoMywnZGVwZW5kZW5jaWVzID0gKCcpCmZvciBfLCBub2RlIGluIGlwYWlycyh0ci5wcm9qZWN0cy5jaGlsZHJlbikgZG8KX3AoNCwnJXMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywnLCBub2RlLnRhcmdldGRlcGVuZGlkKQplbmQKX3AoMywnKTsnKQpfcCgzLCduYW1lID0gIiVzIjsnLCBuYW1lKQpsb2NhbCBwCmlmIG5vZGUuY2ZnLmtpbmQgPT0gIkNvbnNvbGVBcHAiIHRoZW4KcCA9ICIkKEhPTUUpL2JpbiIKZWxzZWlmIG5vZGUuY2ZnLmtpbmQgPT0gIldpbmRvd2VkQXBwIiB0aGVuCnAgPSAiJChIT01FKS9BcHBsaWNhdGlvbnMiCmVuZAppZiBwIHRoZW4KX3AoMywncHJvZHVjdEluc3RhbGxQYXRoID0gIiVzIjsnLCBwKQplbmQKX3AoMywncHJvZHVjdE5hbWUgPSAiJXMiOycsIG5hbWUpCl9wKDMsJ3Byb2R1Y3RSZWZlcmVuY2UgPSAlcyAvKiAlcyAqLzsnLCBub2RlLmlkLCBub2RlLm5hbWUpCl9wKDMsJ3Byb2R1Y3RUeXBlID0gIiVzIjsnLCB4Y29kZS5nZXRwcm9kdWN0dHlwZShub2RlKSkKX3AoMiwnfTsnKQplbmQKX3AoJy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLycpCl9wKCcnKQplbmQKZnVuY3Rpb24geGNvZGUuUEJYUHJvamVjdCh0cikKX3AoJy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLycpCl9wKDIsJzA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsnKQpfcCgzLCdpc2EgPSBQQlhQcm9qZWN0OycpCl9wKDMsJ2J1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxREVCOTI4OTA4NzMzREQ4MDAxMEU5Q0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICIlcyIgKi87JywgdHIubmFtZSkKX3AoMywnY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsnKQpfcCgzLCdoYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsnKQpfcCgzLCdtYWluR3JvdXAgPSAlcyAvKiAlcyAqLzsnLCB0ci5pZCwgdHIubmFtZSkKX3AoMywncHJvamVjdERpclBhdGggPSAiIjsnKQppZiAjdHIucHJvamVjdHMuY2hpbGRyZW4gPiAwIHRoZW4KX3AoMywncHJvamVjdFJlZmVyZW5jZXMgPSAoJykKZm9yIF8sIG5vZGUgaW4gaXBhaXJzKHRyLnByb2plY3RzLmNoaWxkcmVuKSBkbwpfcCg0LCd7JykKX3AoNSwnUHJvZHVjdEdyb3VwID0gJXMgLyogUHJvZHVjdHMgKi87Jywgbm9kZS5wcm9kdWN0Z3JvdXBpZCkKX3AoNSwnUHJvamVjdFJlZiA9ICVzIC8qICVzICovOycsIG5vZGUuaWQsIHBhdGguZ2V0bmFtZShub2RlLnBhdGgpKQpfcCg0LCd9LCcpCmVuZApfcCgzLCcpOycpCmVuZApfcCgzLCdwcm9qZWN0Um9vdCA9ICIiOycpCl9wKDMsJ3RhcmdldHMgPSAoJykKZm9yIF8sIG5vZGUgaW4gaXBhaXJzKHRyLnByb2R1Y3RzLmNoaWxkcmVuKSBkbwpfcCg0LCclcyAvKiAlcyAqLywnLCBub2RlLnRhcmdldGlkLCBub2RlLm5hbWUpCmVuZApfcCgzLCcpOycpCl9wKDIsJ307JykKX3AoJy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8nKQpfcCgnJykKZW5kCmZ1bmN0aW9uIHhjb2RlLlBCWFJlZmVyZW5jZVByb3h5KHRyKQppZiAjdHIucHJvamVjdHMuY2hpbGRyZW4gPiAwIHRoZW4KX3AoJy8qIEJlZ2luIFBCWFJlZmVyZW5jZVByb3h5IHNlY3Rpb24gKi8nKQp0cmVlLnRyYXZlcnNlKHRyLnByb2plY3RzLCB7Cm9ubGVhZiA9IGZ1bmN0aW9uKG5vZGUpCl9wKDIsJyVzIC8qICVzICovID0geycsIG5vZGUuaWQsIG5vZGUubmFtZSkKX3AoMywnaXNhID0gUEJYUmVmZXJlbmNlUHJveHk7JykKX3AoMywnZmlsZVR5cGUgPSAlczsnLCB4Y29kZS5nZXR0YXJnZXR0eXBlKG5vZGUpKQpfcCgzLCdwYXRoID0gIiVzIjsnLCBub2RlLnBhdGgpCl9wKDMsJ3JlbW90ZVJlZiA9ICVzIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsnLCBub2RlLnBhcmVudC5wcm9kdWN0cHJveHlpZCkKX3AoMywnc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsnKQpfcCgyLCd9OycpCmVuZAp9KQpfcCgnLyogRW5kIFBCWFJlZmVyZW5jZVByb3h5IHNlY3Rpb24gKi8nKQpfcCgnJykKZW5kCmVuZApmdW5jdGlvbiB4Y29kZS5QQlhSZXNvdXJjZXNCdWlsZFBoYXNlKHRyKQpfcCgnLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovJykKZm9yIF8sIHRhcmdldCBpbiBpcGFpcnModHIucHJvZHVjdHMuY2hpbGRyZW4pIGRvCl9wKDIsJyVzIC8qIFJlc291cmNlcyAqLyA9IHsnLCB0YXJnZXQucmVzc3RhZ2VpZCkKX3AoMywnaXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsnKQpfcCgzLCdidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OycpCl9wKDMsJ2ZpbGVzID0gKCcpCnRyZWUudHJhdmVyc2UodHIsIHsKb25ub2RlID0gZnVuY3Rpb24obm9kZSkKaWYgeGNvZGUuZ2V0YnVpbGRjYXRlZ29yeShub2RlKSA9PSAiUmVzb3VyY2VzIiB0aGVuCl9wKDQsJyVzIC8qICVzIGluIFJlc291cmNlcyAqLywnLCBub2RlLmJ1aWxkaWQsIG5vZGUubmFtZSkKZW5kCmVuZAp9KQpfcCgzLCcpOycpCl9wKDMsJ3J1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOycpCl9wKDIsJ307JykKZW5kCl9wKCcvKiBFbmQgUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovJykKX3AoJycpCmVuZApmdW5jdGlvbiB4Y29kZS5QQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2UodHIpCmxvY2FsIHdyYXBwZXJXcml0dGVuID0gZmFsc2UKbG9jYWwgZnVuY3Rpb24gZG9ibG9jayhpZCwgbmFtZSwgd2hpY2gpCmxvY2FsIHByamNtZHMgPSB0ci5wcm9qZWN0W3doaWNoXQpsb2NhbCBjb21tYW5kcyA9IHRhYmxlLmpvaW4ocHJqY21kcywge30pCmZvciBfLCBjZmcgaW4gaXBhaXJzKHRyLmNvbmZpZ3MpIGRvCmxvY2FsIGNmZ2NtZHMgPSBjZmdbd2hpY2hdCmlmICNjZmdjbWRzID4gI3ByamNtZHMgdGhlbgp0YWJsZS5pbnNlcnQoY29tbWFuZHMsICdpZiBbICIke0NPTkZJR1VSQVRJT059IiA9ICInIC4uIHhjb2RlLmdldGNvbmZpZ25hbWUoY2ZnKSAuLiAnIiBdOyB0aGVuJykKZm9yIGkgPSAjcHJqY21kcyArIDEsICNjZmdjbWRzIGRvCnRhYmxlLmluc2VydChjb21tYW5kcywgY2ZnY21kc1tpXSkKZW5kCnRhYmxlLmluc2VydChjb21tYW5kcywgJ2ZpJykKZW5kCmVuZAppZiAjY29tbWFuZHMgPiAwIHRoZW4KaWYgbm90IHdyYXBwZXJXcml0dGVuIHRoZW4KX3AoJy8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovJykKd3JhcHBlcldyaXR0ZW4gPSB0cnVlCmVuZApfcCgyLCclcyAvKiAlcyAqLyA9IHsnLCBpZCwgbmFtZSkKX3AoMywnaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOycpCl9wKDMsJ2J1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7JykKX3AoMywnZmlsZXMgPSAoJykKX3AoMywnKTsnKQpfcCgzLCdpbnB1dFBhdGhzID0gKCcpOwpfcCgzLCcpOycpOwpfcCgzLCduYW1lID0gJXM7JywgbmFtZSk7Cl9wKDMsJ291dHB1dFBhdGhzID0gKCcpOwpfcCgzLCcpOycpOwpfcCgzLCdydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsnKTsKX3AoMywnc2hlbGxQYXRoID0gL2Jpbi9zaDsnKTsKX3AoMywnc2hlbGxTY3JpcHQgPSAiJXMiOycsIHRhYmxlLmNvbmNhdChjb21tYW5kcywgIlxcbiIpOmdzdWIoJyInLCAnXFwiJykpCl9wKDIsJ307JykKZW5kCmVuZApkb2Jsb2NrKCI5NjA3QUUxMDEwQzg1N0U1MDBDRDEzNzYiLCAiUHJlYnVpbGQiLCAicHJlYnVpbGRjb21tYW5kcyIpCmRvYmxvY2soIjk2MDdBRTM1MTBDODVFN0UwMENEMTM3NiIsICJQcmVsaW5rIiwgInByZWxpbmtjb21tYW5kcyIpCmRvYmxvY2soIjk2MDdBRTM3MTBDODVFOEYwMENEMTM3NiIsICJQb3N0YnVpbGQiLCAicG9zdGJ1aWxkY29tbWFuZHMiKQppZiB3cmFwcGVyV3JpdHRlbiB0aGVuCl9wKCcvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8nKQplbmQKZW5kCmZ1bmN0aW9uIHhjb2RlLlBCWFNvdXJjZXNCdWlsZFBoYXNlKHRyKQpfcCgnLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLycpCmZvciBfLCB0YXJnZXQgaW4gaXBhaXJzKHRyLnByb2R1Y3RzLmNoaWxkcmVuKSBkbwpfcCgyLCclcyAvKiBTb3VyY2VzICovID0geycsIHRhcmdldC5zb3VyY2VzaWQpCl9wKDMsJ2lzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOycpCl9wKDMsJ2J1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7JykKX3AoMywnZmlsZXMgPSAoJykKdHJlZS50cmF2ZXJzZSh0ciwgewpvbmxlYWYgPSBmdW5jdGlvbihub2RlKQppZiB4Y29kZS5nZXRidWlsZGNhdGVnb3J5KG5vZGUpID09ICJTb3VyY2VzIiB0aGVuCl9wKDQsJyVzIC8qICVzIGluIFNvdXJjZXMgKi8sJywgbm9kZS5idWlsZGlkLCBub2RlLm5hbWUpCmVuZAplbmQKfSkKX3AoMywnKTsnKQpfcCgzLCdydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsnKQpfcCgyLCd9OycpCmVuZApfcCgnLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8nKQpfcCgnJykKZW5kCmZ1bmN0aW9uIHhjb2RlLlBCWFZhcmlhbnRHcm91cCh0cikKX3AoJy8qIEJlZ2luIFBCWFZhcmlhbnRHcm91cCBzZWN0aW9uICovJykKdHJlZS50cmF2ZXJzZSh0ciwgewpvbmJyYW5jaCA9IGZ1bmN0aW9uKG5vZGUpCmlmIG5vZGUua2luZCA9PSAidmdyb3VwIiB0aGVuCl9wKDIsJyVzIC8qICVzICovID0geycsIG5vZGUuaWQsIG5vZGUubmFtZSkKX3AoMywnaXNhID0gUEJYVmFyaWFudEdyb3VwOycpCl9wKDMsJ2NoaWxkcmVuID0gKCcpCmZvciBfLCBsYW5nIGluIGlwYWlycyhub2RlLmNoaWxkcmVuKSBkbwpfcCg0LCclcyAvKiAlcyAqLywnLCBsYW5nLmlkLCBsYW5nLm5hbWUpCmVuZApfcCgzLCcpOycpCl9wKDMsJ25hbWUgPSAlczsnLCBub2RlLm5hbWUpCl9wKDMsJ3NvdXJjZVRyZWUgPSAiPGdyb3VwPiI7JykKX3AoMiwnfTsnKQplbmQKZW5kCn0pCl9wKCcvKiBFbmQgUEJYVmFyaWFudEdyb3VwIHNlY3Rpb24gKi8nKQpfcCgnJykKZW5kCmZ1bmN0aW9uIHhjb2RlLlBCWFRhcmdldERlcGVuZGVuY3kodHIpCmlmICN0ci5wcm9qZWN0cy5jaGlsZHJlbiA+IDAgdGhlbgpfcCgnLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovJykKdHJlZS50cmF2ZXJzZSh0ci5wcm9qZWN0cywgewpvbmxlYWYgPSBmdW5jdGlvbihub2RlKQpfcCgyLCclcyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geycsIG5vZGUucGFyZW50LnRhcmdldGRlcGVuZGlkKQpfcCgzLCdpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OycpCl9wKDMsJ25hbWUgPSAiJXMiOycsIG5vZGUubmFtZSkKX3AoMywndGFyZ2V0UHJveHkgPSAlcyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87Jywgbm9kZS5wYXJlbnQudGFyZ2V0cHJveHlpZCkKX3AoMiwnfTsnKQplbmQKfSkKX3AoJy8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8nKQpfcCgnJykKZW5kCmVuZApmdW5jdGlvbiB4Y29kZS5YQ0J1aWxkQ29uZmlndXJhdGlvbl9UYXJnZXQodHIsIHRhcmdldCwgY2ZnKQpsb2NhbCBjZmduYW1lID0geGNvZGUuZ2V0Y29uZmlnbmFtZShjZmcpCl9wKDIsJyVzIC8qICVzICovID0geycsIGNmZy54Y29kZS50YXJnZXRpZCwgY2ZnbmFtZSkKX3AoMywnaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247JykKX3AoMywnYnVpbGRTZXR0aW5ncyA9IHsnKQpfcCg0LCdBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsnKQppZiBub3QgY2ZnLmZsYWdzLlN5bWJvbHMgdGhlbgpfcCg0LCdERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsnKQplbmQKaWYgY2ZnLmtpbmQgfj0gIlN0YXRpY0xpYiIgYW5kIGNmZy5idWlsZHRhcmdldC5wcmVmaXggfj0gIiIgdGhlbgpfcCg0LCdFWEVDVVRBQkxFX1BSRUZJWCA9ICVzOycsIGNmZy5idWlsZHRhcmdldC5wcmVmaXgpCmVuZAppZiBjZmcudGFyZ2V0ZXh0ZW5zaW9uIHRoZW4KbG9jYWwgZXh0ID0gY2ZnLnRhcmdldGV4dGVuc2lvbgpleHQgPSBpaWYoZXh0OnN0YXJ0c3dpdGgoIi4iKSwgZXh0OnN1YigyKSwgZXh0KQpfcCg0LCdFWEVDVVRBQkxFX0VYVEVOU0lPTiA9ICVzOycsIGV4dCkKZW5kCmxvY2FsIG91dGRpciA9IHBhdGguZ2V0ZGlyZWN0b3J5KGNmZy5idWlsZHRhcmdldC5idW5kbGVwYXRoKQppZiBvdXRkaXIgfj0gIi4iIHRoZW4KX3AoNCwnQ09ORklHVVJBVElPTl9CVUlMRF9ESVIgPSAlczsnLCBvdXRkaXIpCmVuZApfcCg0LCdHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsnKQpfcCg0LCdHQ0NfTU9ERUxfVFVOSU5HID0gRzU7JykKaWYgdHIuaW5mb3BsaXN0IHRoZW4KX3AoNCwnSU5GT1BMSVNUX0ZJTEUgPSAiJXMiOycsIHRyLmluZm9wbGlzdC5jZmcubmFtZSkKZW5kCmluc3RhbGxwYXRocyA9IHsKQ29uc29sZUFwcCA9ICcvdXNyL2xvY2FsL2JpbicsCldpbmRvd2VkQXBwID0gJyIkKEhPTUUpL0FwcGxpY2F0aW9ucyInLApTaGFyZWRMaWIgPSAnL3Vzci9sb2NhbC9saWInLApTdGF0aWNMaWIgPSAnL3Vzci9sb2NhbC9saWInLAp9Cl9wKDQsJ0lOU1RBTExfUEFUSCA9ICVzOycsIGluc3RhbGxwYXRoc1tjZmcua2luZF0pCl9wKDQsJ1BST0RVQ1RfTkFNRSA9ICIlcyI7JywgY2ZnLmJ1aWxkdGFyZ2V0LmJhc2VuYW1lKQpfcCgzLCd9OycpCl9wKDMsJ25hbWUgPSAiJXMiOycsIGNmZ25hbWUpCl9wKDIsJ307JykKZW5kCmZ1bmN0aW9uIHhjb2RlLlhDQnVpbGRDb25maWd1cmF0aW9uX1Byb2plY3QodHIsIGNmZykKbG9jYWwgY2ZnbmFtZSA9IHhjb2RlLmdldGNvbmZpZ25hbWUoY2ZnKQpfcCgyLCclcyAvKiAlcyAqLyA9IHsnLCBjZmcueGNvZGUucHJvamVjdGlkLCBjZmduYW1lKQpfcCgzLCdpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsnKQpfcCgzLCdidWlsZFNldHRpbmdzID0geycpCmxvY2FsIGFyY2hzID0gewpOYXRpdmUgPSAiJChOQVRJVkVfQVJDSF9BQ1RVQUwpIiwKeDMyICAgID0gImkzODYiLAp4NjQgICAgPSAieDg2XzY0IiwKVW5pdmVyc2FsMzIgPSAiJChBUkNIU19TVEFOREFSRF8zMl9CSVQpIiwKVW5pdmVyc2FsNjQgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIiwKVW5pdmVyc2FsID0gIiQoQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUKSIsCmlPUyAgICA9ICIkKEFSQ0hTX1VOSVZFUlNBTF9JUEhPTkVfT1MpIiwKfQpfcCg0LCdBUkNIUyA9ICIlcyI7JywgYXJjaHNbY2ZnLnBsYXRmb3JtXSkKaWYgY2ZnLnBsYXRmb3JtID09ICJpT1MiIHRoZW4KX3AoNCwnU0RLUk9PVCA9ICVzOycsICJpcGhvbmVvcyIpCl9wKDQsJ0NPREVfU0lHTl9JREVOVElUWSA9ICIlcyI7JywgImlQaG9uZSBEZXZlbG9wZXIiKQplbmQKbG9jYWwgdGFyZ2V0ZGlyID0gcGF0aC5nZXRkaXJlY3RvcnkoY2ZnLmJ1aWxkdGFyZ2V0LmJ1bmRsZXBhdGgpCmlmIHRhcmdldGRpciB+PSAiLiIgdGhlbgpfcCg0LCdDT05GSUdVUkFUSU9OX0JVSUxEX0RJUiA9ICIkKFNZTVJPT1QpIjsnKTsKZW5kCl9wKDQsJ0NPTkZJR1VSQVRJT05fVEVNUF9ESVIgPSAiJChPQkpST09UKSI7JykKaWYgY2ZnLmZsYWdzLlN5bWJvbHMgdGhlbgpfcCg0LCdDT1BZX1BIQVNFX1NUUklQID0gTk87JykKZW5kCl9wKDQsJ0dDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7JykKaWYgY2ZnLmZsYWdzLk5vRXhjZXB0aW9ucyB0aGVuCl9wKDQsJ0dDQ19FTkFCTEVfQ1BQX0VYQ0VQVElPTlMgPSBOTzsnKQplbmQKaWYgY2ZnLmZsYWdzLk5vUlRUSSB0aGVuCl9wKDQsJ0dDQ19FTkFCTEVfQ1BQX1JUVEkgPSBOTzsnKQplbmQKaWYgX0FDVElPTiB+PSAieGNvZGU0IiBhbmQgY2ZnLmZsYWdzLlN5bWJvbHMgYW5kIG5vdCBjZmcuZmxhZ3MuTm9FZGl0QW5kQ29udGludWUgdGhlbgpfcCg0LCdHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBZRVM7JykKZW5kCmlmIGNmZy5mbGFncy5Ob0V4Y2VwdGlvbnMgdGhlbgpfcCg0LCdHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IE5POycpCmVuZAppZiBjZmcuZmxhZ3MuT3B0aW1pemUgb3IgY2ZnLmZsYWdzLk9wdGltaXplU2l6ZSB0aGVuCl9wKDQsJ0dDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSBzOycpCmVsc2VpZiBjZmcuZmxhZ3MuT3B0aW1pemVTcGVlZCB0aGVuCl9wKDQsJ0dDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAzOycpCmVsc2UKX3AoNCwnR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7JykKZW5kCmlmIGNmZy5wY2hoZWFkZXIgYW5kIG5vdCBjZmcuZmxhZ3MuTm9QQ0ggdGhlbgpfcCg0LCdHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOycpCl9wKDQsJ0dDQ19QUkVGSVhfSEVBREVSID0gIiVzIjsnLCBjZmcucGNoaGVhZGVyKQplbmQKeGNvZGUucHJpbnRsaXN0KGNmZy5kZWZpbmVzLCAnR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUycpCl9wKDQsJ0dDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87JykKaWYgY2ZnLmZsYWdzLkZhdGFsV2FybmluZ3MgdGhlbgpfcCg0LCdHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOycpCmVuZApfcCg0LCdHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsnKQpfcCg0LCdHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7JykKeGNvZGUucHJpbnRsaXN0KGNmZy5pbmNsdWRlZGlycywgJ0hFQURFUl9TRUFSQ0hfUEFUSFMnKQp4Y29kZS5wcmludGxpc3QoY2ZnLmxpYmRpcnMsICdMSUJSQVJZX1NFQVJDSF9QQVRIUycpCl9wKDQsJ09CSlJPT1QgPSAiJXMiOycsIGNmZy5vYmplY3RzZGlyKQpfcCg0LCdPTkxZX0FDVElWRV9BUkNIID0gJXM7JyxpaWYocHJlbWFrZS5jb25maWcuaXNkZWJ1Z2J1aWxkKGNmZyksJ1lFUycsJ05PJykpCmxvY2FsIGNoZWNrcyA9IHsKWyItZmZhc3QtbWF0aCJdICAgICAgICAgID0gY2ZnLmZsYWdzLkZsb2F0RmFzdCwKWyItZmZsb2F0LXN0b3JlIl0gICAgICAgID0gY2ZnLmZsYWdzLkZsb2F0U3RyaWN0LApbIi1mb21pdC1mcmFtZS1wb2ludGVyIl0gPSBjZmcuZmxhZ3MuTm9GcmFtZVBvaW50ZXIsCn0KbG9jYWwgZmxhZ3MgPSB7IH0KZm9yIGZsYWcsIGNoZWNrIGluIHBhaXJzKGNoZWNrcykgZG8KaWYgY2hlY2sgdGhlbgp0YWJsZS5pbnNlcnQoZmxhZ3MsIGZsYWcpCmVuZAplbmQKeGNvZGUucHJpbnRsaXN0KHRhYmxlLmpvaW4oZmxhZ3MsIGNmZy5idWlsZG9wdGlvbnMpLCAnT1RIRVJfQ0ZMQUdTJykKZmxhZ3MgPSB7IH0KZm9yIF8sIGxpYiBpbiBpcGFpcnMocHJlbWFrZS5nZXRsaW5rcyhjZmcsICJzeXN0ZW0iKSkgZG8KaWYgbm90IHhjb2RlLmlzZnJhbWV3b3JrKGxpYikgdGhlbgp0YWJsZS5pbnNlcnQoZmxhZ3MsICItbCIgLi4gbGliKQplbmQKZW5kCmZsYWdzID0gdGFibGUuam9pbihmbGFncywgY2ZnLmxpbmtvcHRpb25zKQp4Y29kZS5wcmludGxpc3QoZmxhZ3MsICdPVEhFUl9MREZMQUdTJykKaWYgY2ZnLmZsYWdzLlN0YXRpY1J1bnRpbWUgdGhlbgpfcCg0LCdTVEFOREFSRF9DX1BMVVNfUExVU19MSUJSQVJZX1RZUEUgPSBzdGF0aWM7JykKZW5kCmlmIHRhcmdldGRpciB+PSAiLiIgdGhlbgpfcCg0LCdTWU1ST09UID0gIiVzIjsnLCB0YXJnZXRkaXIpCmVuZAppZiBjZmcuZmxhZ3MuRXh0cmFXYXJuaW5ncyB0aGVuCl9wKDQsJ1dBUk5JTkdfQ0ZMQUdTID0gIi1XYWxsIjsnKQplbmQKX3AoMywnfTsnKQpfcCgzLCduYW1lID0gIiVzIjsnLCBjZmduYW1lKQpfcCgyLCd9OycpCmVuZApmdW5jdGlvbiB4Y29kZS5YQ0J1aWxkQ29uZmlndXJhdGlvbih0cikKX3AoJy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8nKQpmb3IgXywgdGFyZ2V0IGluIGlwYWlycyh0ci5wcm9kdWN0cy5jaGlsZHJlbikgZG8KZm9yIF8sIGNmZyBpbiBpcGFpcnModHIuY29uZmlncykgZG8KeGNvZGUuWENCdWlsZENvbmZpZ3VyYXRpb25fVGFyZ2V0KHRyLCB0YXJnZXQsIGNmZykKZW5kCmVuZApmb3IgXywgY2ZnIGluIGlwYWlycyh0ci5jb25maWdzKSBkbwp4Y29kZS5YQ0J1aWxkQ29uZmlndXJhdGlvbl9Qcm9qZWN0KHRyLCBjZmcpCmVuZApfcCgnLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8nKQpfcCgnJykKZW5kCmZ1bmN0aW9uIHhjb2RlLlhDQnVpbGRDb25maWd1cmF0aW9uTGlzdCh0cikKbG9jYWwgc2xuID0gdHIucHJvamVjdC5zb2x1dGlvbgpfcCgnLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovJykKZm9yIF8sIHRhcmdldCBpbiBpcGFpcnModHIucHJvZHVjdHMuY2hpbGRyZW4pIGRvCl9wKDIsJyVzIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICIlcyIgKi8gPSB7JywgdGFyZ2V0LmNmZ3NlY3Rpb24sIHRhcmdldC5uYW1lKQpfcCgzLCdpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OycpCl9wKDMsJ2J1aWxkQ29uZmlndXJhdGlvbnMgPSAoJykKZm9yIF8sIGNmZyBpbiBpcGFpcnModHIuY29uZmlncykgZG8KX3AoNCwnJXMgLyogJXMgKi8sJywgY2ZnLnhjb2RlLnRhcmdldGlkLCB4Y29kZS5nZXRjb25maWduYW1lKGNmZykpCmVuZApfcCgzLCcpOycpCl9wKDMsJ2RlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsnKQpfcCgzLCdkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSAiJXMiOycsIHhjb2RlLmdldGNvbmZpZ25hbWUodHIuY29uZmlnc1sxXSkpCl9wKDIsJ307JykKZW5kCl9wKDIsJzFERUI5Mjg5MDg3MzNERDgwMDEwRTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIiVzIiAqLyA9IHsnLCB0ci5uYW1lKQpfcCgzLCdpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OycpCl9wKDMsJ2J1aWxkQ29uZmlndXJhdGlvbnMgPSAoJykKZm9yIF8sIGNmZyBpbiBpcGFpcnModHIuY29uZmlncykgZG8KX3AoNCwnJXMgLyogJXMgKi8sJywgY2ZnLnhjb2RlLnByb2plY3RpZCwgeGNvZGUuZ2V0Y29uZmlnbmFtZShjZmcpKQplbmQKX3AoMywnKTsnKQpfcCgzLCdkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7JykKX3AoMywnZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gIiVzIjsnLCB4Y29kZS5nZXRjb25maWduYW1lKHRyLmNvbmZpZ3NbMV0pKQpfcCgyLCd9OycpCl9wKCcvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovJykKX3AoJycpCmVuZApmdW5jdGlvbiB4Y29kZS5Gb290ZXIoKQpfcCgxLCd9OycpCl9wKCdcdHJvb3RPYmplY3QgPSAwOEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87JykKX3AoJ30nKQplbmQKAGxvY2FsIHhjb2RlID0gcHJlbWFrZS54Y29kZQpsb2NhbCB0cmVlID0gcHJlbWFrZS50cmVlCmZ1bmN0aW9uIHhjb2RlLmJ1aWxkcHJqdHJlZShwcmopCmxvY2FsIHRyID0gcHJlbWFrZS5wcm9qZWN0LmJ1aWxkc291cmNldHJlZShwcmopCnRyLmNvbmZpZ3MgPSB7fQpmb3IgXywgY2ZnbmFtZSBpbiBpcGFpcnMocHJqLnNvbHV0aW9uLmNvbmZpZ3VyYXRpb25zKSBkbwpmb3IgXywgcGxhdGZvcm0gaW4gaXBhaXJzKHByai5zb2x1dGlvbi54Y29kZS5wbGF0Zm9ybXMpIGRvCmxvY2FsIGNmZyA9IHByZW1ha2UuZ2V0Y29uZmlnKHByaiwgY2ZnbmFtZSwgcGxhdGZvcm0pCmNmZy54Y29kZSA9IHt9CmNmZy54Y29kZS50YXJnZXRpZCA9IHhjb2RlLm5ld2lkKHByai54Y29kZS5wcm9qZWN0bm9kZSwgY2ZnbmFtZSkKY2ZnLnhjb2RlLnByb2plY3RpZCA9IHhjb2RlLm5ld2lkKHRyLCBjZmduYW1lKQp0YWJsZS5pbnNlcnQodHIuY29uZmlncywgY2ZnKQplbmQKZW5kCnRyZWUudHJhdmVyc2UodHIsIHsKb25icmFuY2ggPSBmdW5jdGlvbihub2RlKQppZiBwYXRoLmdldGV4dGVuc2lvbihub2RlLm5hbWUpID09ICIubHByb2oiIHRoZW4KbG9jYWwgbGFuZyA9IHBhdGguZ2V0YmFzZW5hbWUobm9kZS5uYW1lKSAgLS0gIkVuZ2xpc2giLCAiRnJlbmNoIiwgZXRjLgpmb3IgXywgZmlsZW5vZGUgaW4gaXBhaXJzKG5vZGUuY2hpbGRyZW4pIGRvCmxvY2FsIGdycG5vZGUgPSBub2RlLnBhcmVudC5jaGlsZHJlbltmaWxlbm9kZS5uYW1lXQppZiBub3QgZ3Jwbm9kZSB0aGVuCmdycG5vZGUgPSB0cmVlLmluc2VydChub2RlLnBhcmVudCwgdHJlZS5uZXcoZmlsZW5vZGUubmFtZSkpCmdycG5vZGUua2luZCA9ICJ2Z3JvdXAiCmVuZApmaWxlbm9kZS5uYW1lID0gcGF0aC5nZXRiYXNlbmFtZShsYW5nKQp0cmVlLmluc2VydChncnBub2RlLCBmaWxlbm9kZSkKZW5kCnRyZWUucmVtb3ZlKG5vZGUpCmVuZAplbmQKfSkKdHIuZnJhbWV3b3JrcyA9IHRyZWUubmV3KCJGcmFtZXdvcmtzIikKZm9yIGNmZyBpbiBwcmVtYWtlLmVhY2hjb25maWcocHJqKSBkbwpmb3IgXywgbGluayBpbiBpcGFpcnMocHJlbWFrZS5nZXRsaW5rcyhjZmcsICJzeXN0ZW0iLCAiZnVsbHBhdGgiKSkgZG8KbG9jYWwgbmFtZSA9IHBhdGguZ2V0bmFtZShsaW5rKQppZiB4Y29kZS5pc2ZyYW1ld29yayhuYW1lKSBhbmQgbm90IHRyLmZyYW1ld29ya3MuY2hpbGRyZW5bbmFtZV0gdGhlbgpub2RlID0gdHJlZS5pbnNlcnQodHIuZnJhbWV3b3JrcywgdHJlZS5uZXcobmFtZSkpCm5vZGUucGF0aCA9IGxpbmsKZW5kCmVuZAplbmQKaWYgI3RyLmZyYW1ld29ya3MuY2hpbGRyZW4gPiAwIHRoZW4gCnRyZWUuaW5zZXJ0KHRyLCB0ci5mcmFtZXdvcmtzKQplbmQKdHIucHJvZHVjdHMgPSB0cmVlLmluc2VydCh0ciwgdHJlZS5uZXcoIlByb2R1Y3RzIikpCnRyLnByb2plY3RzID0gdHJlZS5uZXcoIlByb2plY3RzIikKZm9yIF8sIGRlcCBpbiBpcGFpcnMocHJlbWFrZS5nZXRkZXBlbmRlbmNpZXMocHJqLCAic2libGluZyIsICJvYmplY3QiKSkgZG8KbG9jYWwgeGNwYXRoID0geGNvZGUuZ2V0eGNvZGVwcm9qbmFtZShkZXApCmxvY2FsIHhjbm9kZSA9IHRyZWUuaW5zZXJ0KHRyLnByb2plY3RzLCB0cmVlLm5ldyhwYXRoLmdldG5hbWUoeGNwYXRoKSkpCnhjbm9kZS5wYXRoID0geGNwYXRoCnhjbm9kZS5wcm9qZWN0ID0gZGVwCnhjbm9kZS5wcm9kdWN0Z3JvdXBpZCA9IHhjb2RlLm5ld2lkKHhjbm9kZSwgInByb2RncnAiKQp4Y25vZGUucHJvZHVjdHByb3h5aWQgPSB4Y29kZS5uZXdpZCh4Y25vZGUsICJwcm9kcHJveCIpCnhjbm9kZS50YXJnZXRwcm94eWlkICA9IHhjb2RlLm5ld2lkKHhjbm9kZSwgInRhcmdwcm94IikKeGNub2RlLnRhcmdldGRlcGVuZGlkID0geGNvZGUubmV3aWQoeGNub2RlLCAidGFyZ2RlcCIpCmxvY2FsIGNmZyA9IHByZW1ha2UuZ2V0Y29uZmlnKGRlcCwgcHJqLmNvbmZpZ3VyYXRpb25zWzFdKQpub2RlID0gdHJlZS5pbnNlcnQoeGNub2RlLCB0cmVlLm5ldyhjZmcubGlua3RhcmdldC5uYW1lKSkKbm9kZS5wYXRoID0gY2ZnLmxpbmt0YXJnZXQuZnVsbHBhdGgKbm9kZS5jZmcgPSBjZmcKZW5kCmlmICN0ci5wcm9qZWN0cy5jaGlsZHJlbiA+IDAgdGhlbgp0cmVlLmluc2VydCh0ciwgdHIucHJvamVjdHMpCmVuZAp0cmVlLnRyYXZlcnNlKHRyLCB7Cm9ubm9kZSA9IGZ1bmN0aW9uKG5vZGUpCm5vZGUuaWQgPSB4Y29kZS5uZXdpZChub2RlKQppZiB4Y29kZS5nZXRidWlsZGNhdGVnb3J5KG5vZGUpIHRoZW4Kbm9kZS5idWlsZGlkID0geGNvZGUubmV3aWQobm9kZSwgImJ1aWxkIikKZW5kCmlmIHN0cmluZy5lbmRzd2l0aChub2RlLm5hbWUsICJJbmZvLnBsaXN0IikgdGhlbgp0ci5pbmZvcGxpc3QgPSBub2RlCmVuZAplbmQKfSwgdHJ1ZSkKbm9kZSA9IHRyZWUuaW5zZXJ0KHRyLnByb2R1Y3RzLCBwcmoueGNvZGUucHJvamVjdG5vZGUpCm5vZGUua2luZCA9ICJwcm9kdWN0Igpub2RlLnBhdGggPSBub2RlLmNmZy5idWlsZHRhcmdldC5mdWxscGF0aApub2RlLmNmZ3NlY3Rpb24gPSB4Y29kZS5uZXdpZChub2RlLCAiY2ZnIikKbm9kZS5yZXNzdGFnZWlkID0geGNvZGUubmV3aWQobm9kZSwgInJleiIpCm5vZGUuc291cmNlc2lkICA9IHhjb2RlLm5ld2lkKG5vZGUsICJzcmMiKQpub2RlLmZ4c3RhZ2VpZCAgPSB4Y29kZS5uZXdpZChub2RlLCAiZnhzIikKcmV0dXJuIHRyCmVuZApmdW5jdGlvbiBwcmVtYWtlLnhjb2RlLnByb2plY3QocHJqKQpsb2NhbCB0ciA9IHhjb2RlLmJ1aWxkcHJqdHJlZShwcmopCnhjb2RlLkhlYWRlcih0cikKeGNvZGUuUEJYQnVpbGRGaWxlKHRyKQp4Y29kZS5QQlhDb250YWluZXJJdGVtUHJveHkodHIpCnhjb2RlLlBCWEZpbGVSZWZlcmVuY2UodHIpCnhjb2RlLlBCWEZyYW1ld29ya3NCdWlsZFBoYXNlKHRyKQp4Y29kZS5QQlhHcm91cCh0cikKeGNvZGUuUEJYTmF0aXZlVGFyZ2V0KHRyKQp4Y29kZS5QQlhQcm9qZWN0KHRyKQp4Y29kZS5QQlhSZWZlcmVuY2VQcm94eSh0cikKeGNvZGUuUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSh0cikKeGNvZGUuUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlKHRyKQp4Y29kZS5QQlhTb3VyY2VzQnVpbGRQaGFzZSh0cikKeGNvZGUuUEJYVmFyaWFudEdyb3VwKHRyKQp4Y29kZS5QQlhUYXJnZXREZXBlbmRlbmN5KHRyKQp4Y29kZS5YQ0J1aWxkQ29uZmlndXJhdGlvbih0cikKeGNvZGUuWENCdWlsZENvbmZpZ3VyYXRpb25MaXN0KHRyKQp4Y29kZS5Gb290ZXIodHIpCmVuZAoAcHJlbWFrZS54Y29kZTQgPSB7fQpsb2NhbCB4Y29kZTQgPSBwcmVtYWtlLnhjb2RlNApmdW5jdGlvbiB4Y29kZTQud29ya3NwYWNlX2hlYWQoKQpfcCgnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4nKQpfcCgnPFdvcmtzcGFjZScpCl9wKDEsJ3ZlcnNpb24gPSAiMS4wIj4nKQplbmQKZnVuY3Rpb24geGNvZGU0LndvcmtzcGFjZV90YWlsKCkKX3AoJzwvV29ya3NwYWNlPicpCmVuZApmdW5jdGlvbiB4Y29kZTQud29ya3NwYWNlX2ZpbGVfcmVmKHByaikKbG9jYWwgcHJvanBhdGggPSBwYXRoLmdldHJlbGF0aXZlKHByai5zb2x1dGlvbi5sb2NhdGlvbiwgcHJqLmxvY2F0aW9uKQppZiBwcm9qcGF0aCA9PSAnLicgdGhlbiBwcm9qcGF0aCA9ICcnIAplbHNlIHByb2pwYXRoID0gcHJvanBhdGggLi4nLycgCmVuZApfcCgxLCc8RmlsZVJlZicpCl9wKDIsJ2xvY2F0aW9uID0gImdyb3VwOiVzIj4nLHByb2pwYXRoIC4uIHByai5uYW1lIC4uICcueGNvZGVwcm9qJykKX3AoMSwnPC9GaWxlUmVmPicpCmVuZApmdW5jdGlvbiB4Y29kZTQud29ya3NwYWNlX2dlbmVyYXRlKHNsbikKcHJlbWFrZS54Y29kZS5wcmVwYXJlc29sdXRpb24oc2xuKQp4Y29kZTQud29ya3NwYWNlX2hlYWQoKQpmb3IgcHJqIGluIHByZW1ha2Uuc29sdXRpb24uZWFjaHByb2plY3Qoc2xuKSBkbwp4Y29kZTQud29ya3NwYWNlX2ZpbGVfcmVmKHByaikKZW5kCnhjb2RlNC53b3Jrc3BhY2VfdGFpbCgpCmVuZAoAcHJlbWFrZS5jbGVhbiA9IHsgfQpmdW5jdGlvbiBwcmVtYWtlLmNsZWFuLmRpcmVjdG9yeShvYmosIHBhdHRlcm4pCmxvY2FsIGZuYW1lID0gcHJlbWFrZS5wcm9qZWN0LmdldGZpbGVuYW1lKG9iaiwgcGF0dGVybikKb3Mucm1kaXIoZm5hbWUpCmVuZApmdW5jdGlvbiBwcmVtYWtlLmNsZWFuLmZpbGUob2JqLCBwYXR0ZXJuKQpsb2NhbCBmbmFtZSA9IHByZW1ha2UucHJvamVjdC5nZXRmaWxlbmFtZShvYmosIHBhdHRlcm4pCm9zLnJlbW92ZShmbmFtZSkKZW5kCm5ld2FjdGlvbiB7CnRyaWdnZXIgICAgID0gImNsZWFuIiwKZGVzY3JpcHRpb24gPSAiUmVtb3ZlIGFsbCBiaW5hcmllcyBhbmQgZ2VuZXJhdGVkIGZpbGVzIiwKb25zb2x1dGlvbiA9IGZ1bmN0aW9uKHNsbikKZm9yIGFjdGlvbiBpbiBwcmVtYWtlLmFjdGlvbi5lYWNoKCkgZG8KaWYgYWN0aW9uLm9uY2xlYW5zb2x1dGlvbiB0aGVuCmFjdGlvbi5vbmNsZWFuc29sdXRpb24oc2xuKQplbmQKZW5kCmVuZCwKb25wcm9qZWN0ID0gZnVuY3Rpb24ocHJqKQpmb3IgYWN0aW9uIGluIHByZW1ha2UuYWN0aW9uLmVhY2goKSBkbwppZiBhY3Rpb24ub25jbGVhbnByb2plY3QgdGhlbgphY3Rpb24ub25jbGVhbnByb2plY3QocHJqKQplbmQKZW5kCmlmIChwcmoub2JqZWN0c2RpcikgdGhlbgpwcmVtYWtlLmNsZWFuLmRpcmVjdG9yeShwcmosIHByai5vYmplY3RzZGlyKQplbmQKbG9jYWwgcGxhdGZvcm1zID0gcHJqLnNvbHV0aW9uLnBsYXRmb3JtcyBvciB7IH0KaWYgbm90IHRhYmxlLmNvbnRhaW5zKHBsYXRmb3JtcywgIk5hdGl2ZSIpIHRoZW4KcGxhdGZvcm1zID0gdGFibGUuam9pbihwbGF0Zm9ybXMsIHsgIk5hdGl2ZSIgfSkKZW5kCmZvciBfLCBwbGF0Zm9ybSBpbiBpcGFpcnMocGxhdGZvcm1zKSBkbwpmb3IgY2ZnIGluIHByZW1ha2UuZWFjaGNvbmZpZyhwcmosIHBsYXRmb3JtKSBkbwpwcmVtYWtlLmNsZWFuLmRpcmVjdG9yeShwcmosIGNmZy5vYmplY3RzZGlyKQpwcmVtYWtlLmNsZWFuLmZpbGUocHJqLCBwcmVtYWtlLmdldHRhcmdldChjZmcsICJidWlsZCIsICJwb3NpeCIsICJ3aW5kb3dzIiwgIndpbmRvd3MiKS5mdWxscGF0aCkKcHJlbWFrZS5jbGVhbi5maWxlKHByaiwgcHJlbWFrZS5nZXR0YXJnZXQoY2ZnLCAiYnVpbGQiLCAicG9zaXgiLCAicG9zaXgiLCAibGludXgiKS5mdWxscGF0aCkKcHJlbWFrZS5jbGVhbi5maWxlKHByaiwgcHJlbWFrZS5nZXR0YXJnZXQoY2ZnLCAiYnVpbGQiLCAicG9zaXgiLCAicG9zaXgiLCAibWFjb3N4IikuZnVsbHBhdGgpCnByZW1ha2UuY2xlYW4uZmlsZShwcmosIHByZW1ha2UuZ2V0dGFyZ2V0KGNmZywgImJ1aWxkIiwgInBvc2l4IiwgIlBTMyIsICJ3aW5kb3dzIikuZnVsbHBhdGgpCmlmIGNmZy5raW5kID09ICJXaW5kb3dlZEFwcCIgdGhlbgpwcmVtYWtlLmNsZWFuLmRpcmVjdG9yeShwcmosIHByZW1ha2UuZ2V0dGFyZ2V0KGNmZywgImJ1aWxkIiwgInBvc2l4IiwgInBvc2l4IiwgImxpbnV4IikuZnVsbHBhdGggLi4gIi5hcHAiKQplbmQKcHJlbWFrZS5jbGVhbi5maWxlKHByaiwgcHJlbWFrZS5nZXR0YXJnZXQoY2ZnLCAibGluayIsICJ3aW5kb3dzIiwgIndpbmRvd3MiLCAid2luZG93cyIpLmZ1bGxwYXRoKQpwcmVtYWtlLmNsZWFuLmZpbGUocHJqLCBwcmVtYWtlLmdldHRhcmdldChjZmcsICJsaW5rIiwgInBvc2l4IiwgInBvc2l4IiwgImxpbnV4IikuZnVsbHBhdGgpCmxvY2FsIHRhcmdldCA9IHBhdGguam9pbihwcmVtYWtlLnByb2plY3QuZ2V0ZmlsZW5hbWUocHJqLCBjZmcuYnVpbGR0YXJnZXQuZGlyZWN0b3J5KSwgY2ZnLmJ1aWxkdGFyZ2V0LmJhc2VuYW1lKQpmb3IgYWN0aW9uIGluIHByZW1ha2UuYWN0aW9uLmVhY2goKSBkbwppZiBhY3Rpb24ub25jbGVhbnRhcmdldCB0aGVuCmFjdGlvbi5vbmNsZWFudGFyZ2V0KHRhcmdldCkKZW5kCmVuZAplbmQKZW5kCmVuZAp9CgBsb2NhbCBzY3JpcHRmaWxlICAgID0gInByZW1ha2U0Lmx1YSIKbG9jYWwgc2hvcnRoZWxwICAgICA9ICJUeXBlICdwcmVtYWtlNCAtLWhlbHAnIGZvciBoZWxwIgpsb2NhbCB2ZXJzaW9uaGVscCAgID0gInByZW1ha2U0IChQcmVtYWtlIEJ1aWxkIFNjcmlwdCBHZW5lcmF0b3IpICVzIgpfV09SS0lOR19ESVIgICAgICAgID0gb3MuZ2V0Y3dkKCkKbG9jYWwgZnVuY3Rpb24gaW5qZWN0cGxhdGZvcm0ocGxhdGZvcm0pCmlmIG5vdCBwbGF0Zm9ybSB0aGVuIHJldHVybiB0cnVlIGVuZApwbGF0Zm9ybSA9IHByZW1ha2UuY2hlY2t2YWx1ZShwbGF0Zm9ybSwgcHJlbWFrZS5maWVsZHMucGxhdGZvcm1zLmFsbG93ZWQpCmZvciBzbG4gaW4gcHJlbWFrZS5zb2x1dGlvbi5lYWNoKCkgZG8KbG9jYWwgcGxhdGZvcm1zID0gc2xuLnBsYXRmb3JtcyBvciB7IH0KaWYgI3BsYXRmb3JtcyA9PSAwIHRoZW4KdGFibGUuaW5zZXJ0KHBsYXRmb3JtcywgIk5hdGl2ZSIpCmVuZAppZiBub3QgdGFibGUuY29udGFpbnMocGxhdGZvcm1zLCAiTmF0aXZlIikgdGhlbgpyZXR1cm4gZmFsc2UsIHNsbi5uYW1lIC4uICIgZG9lcyBub3QgdGFyZ2V0IG5hdGl2ZSBwbGF0Zm9ybVxuTmF0aXZlIHBsYXRmb3JtIHNldHRpbmdzIGFyZSByZXF1aXJlZCBmb3IgdGhlIC0tcGxhdGZvcm0gZmVhdHVyZS4iCmVuZAppZiBub3QgdGFibGUuY29udGFpbnMocGxhdGZvcm1zLCBwbGF0Zm9ybSkgdGhlbgp0YWJsZS5pbnNlcnQocGxhdGZvcm1zLCBwbGF0Zm9ybSkKZW5kCnNsbi5wbGF0Zm9ybXMgPSBwbGF0Zm9ybXMKZW5kCnJldHVybiB0cnVlCmVuZApmdW5jdGlvbiBfcHJlbWFrZV9tYWluKHNjcmlwdHBhdGgpCmlmIChzY3JpcHRwYXRoKSB0aGVuCmxvY2FsIHNjcmlwdHMgID0gZG9maWxlKHNjcmlwdHBhdGggLi4gIi9fbWFuaWZlc3QubHVhIikKZm9yIF8sdiBpbiBpcGFpcnMoc2NyaXB0cykgZG8KZG9maWxlKHNjcmlwdHBhdGggLi4gIi8iIC4uIHYpCmVuZAplbmQKX1BSRU1BS0VfQ09NTUFORCA9IHBhdGguZ2V0YWJzb2x1dGUoX1BSRU1BS0VfQ09NTUFORCkKcHJlbWFrZS5hY3Rpb24uc2V0KF9BQ1RJT04pCm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpCmxvY2FsIGZuYW1lID0gX09QVElPTlNbImZpbGUiXSBvciBzY3JpcHRmaWxlCmlmIChvcy5pc2ZpbGUoZm5hbWUpKSB0aGVuCmRvZmlsZShmbmFtZSkKZW5kCmlmIChfT1BUSU9OU1sidmVyc2lvbiJdKSB0aGVuCnByaW50Zih2ZXJzaW9uaGVscCwgX1BSRU1BS0VfVkVSU0lPTikKcmV0dXJuIDEKZW5kCmlmIChfT1BUSU9OU1siaGVscCJdKSB0aGVuCnByZW1ha2Uuc2hvd2hlbHAoKQpyZXR1cm4gMQplbmQKaWYgKG5vdCBfQUNUSU9OKSB0aGVuCnByaW50KHNob3J0aGVscCkKcmV0dXJuIDEKZW5kCmlmIChub3Qgb3MuaXNmaWxlKGZuYW1lKSkgdGhlbgplcnJvcigiTm8gUHJlbWFrZSBzY3JpcHQgKCIuLnNjcmlwdGZpbGUuLiIpIGZvdW5kISIsIDIpCmVuZAphY3Rpb24gPSBwcmVtYWtlLmFjdGlvbi5jdXJyZW50KCkKaWYgKG5vdCBhY3Rpb24pIHRoZW4KZXJyb3IoIkVycm9yOiBubyBzdWNoIGFjdGlvbiAnIiAuLiBfQUNUSU9OIC4uICInIiwgMCkKZW5kCm9rLCBlcnIgPSBwcmVtYWtlLm9wdGlvbi52YWxpZGF0ZShfT1BUSU9OUykKaWYgKG5vdCBvaykgdGhlbiBlcnJvcigiRXJyb3I6ICIgLi4gZXJyLCAwKSBlbmQKb2ssIGVyciA9IHByZW1ha2UuY2hlY2t0b29scygpCmlmIChub3Qgb2spIHRoZW4gZXJyb3IoIkVycm9yOiAiIC4uIGVyciwgMCkgZW5kCm9rLCBlcnIgPSBpbmplY3RwbGF0Zm9ybShfT1BUSU9OU1sicGxhdGZvcm0iXSkKaWYgKG5vdCBvaykgdGhlbiBlcnJvcigiRXJyb3I6ICIgLi4gZXJyLCAwKSBlbmQKcHJpbnQoIkJ1aWxkaW5nIGNvbmZpZ3VyYXRpb25zLi4uIikKcHJlbWFrZS5iYWtlLmJ1aWxkY29uZmlncygpCm9rLCBlcnIgPSBwcmVtYWtlLmNoZWNrcHJvamVjdHMoKQppZiAobm90IG9rKSB0aGVuIGVycm9yKCJFcnJvcjogIiAuLiBlcnIsIDApIGVuZApwcmludGYoIlJ1bm5pbmcgYWN0aW9uICclcycuLi4iLCBhY3Rpb24udHJpZ2dlcikKcHJlbWFrZS5hY3Rpb24uY2FsbChhY3Rpb24udHJpZ2dlcikKcHJpbnQoIkRvbmUuIikKcmV0dXJuIDAKZW5kCgBubyBjYWxsaW5nIGVudmlyb25tZW50AG5vIHZhbHVlAABoW0AAAAAAAHRbQAAAAAAAdFtAAAAAAABjW0AAAAAAAGNbQAAAAAAAaFtAAAAAAABjW0AAAAAAAJpjQAAAAAAApGNAAAAAAACwY0AAAAAAALdjQAAAAAAAwWNAAAAAAADMY0AAAAAAAAlkQAAAAAAAF2RAAAAAAAAAAAAAAAAAACRMdWE6IEx1YSA1LjEuNCBDb3B5cmlnaHQgKEMpIDE5OTQtMjAwOCBMdWEub3JnLCBQVUMtUmlvICQKJEF1dGhvcnM6IFIuIEllcnVzYWxpbXNjaHksIEwuIEguIGRlIEZpZ3VlaXJlZG8gJiBXLiBDZWxlcyAkCiRVUkw6IHd3dy5sdWEub3JnICQKAFBBTklDOiB1bnByb3RlY3RlZCBlcnJvciBpbiBjYWxsIHRvIEx1YSBBUEkgKCVzKQoAY2Fubm90ICVzICVzOiAlcwBTbAAlczolZDogAGJhZCBhcmd1bWVudCAjJWQgKCVzKQBtZXRob2QAY2FsbGluZyAnJXMnIG9uIGJhZCBzZWxmICglcykAYmFkIGFyZ3VtZW50ICMlZCB0byAnJXMnICglcykAJXMgZXhwZWN0ZWQsIGdvdCAlcwBzdGFjayBvdmVyZmxvdyAoJXMpAHZhbHVlIGV4cGVjdGVkAGludmFsaWQgb3B0aW9uICclcycAX0xPQURFRABuYW1lIGNvbmZsaWN0IGZvciBtb2R1bGUgJyVzJwA9c3RkaW4AQCVzAHJlb3BlbgBMdWEgZnVuY3Rpb24gZXhwZWN0ZWQAdG9vIG1hbnkgcmVzdWx0cyB0byB1bnBhY2sAYmFzZSBvdXQgb2YgcmFuZ2UAbmlsIG9yIHRhYmxlIGV4cGVjdGVkAF9fbWV0YXRhYmxlAGNhbm5vdCBjaGFuZ2UgYSBwcm90ZWN0ZWQgbWV0YXRhYmxlAGxldmVsIG11c3QgYmUgbm9uLW5lZ2F0aXZlAGludmFsaWQgbGV2ZWwAbm8gZnVuY3Rpb24gZW52aXJvbm1lbnQgZm9yIHRhaWwgY2FsbCBhdCBsZXZlbCAlZAAnc2V0ZmVudicgY2Fubm90IGNoYW5nZSBlbnZpcm9ubWVudCBvZiBnaXZlbiBvYmplY3QAaW5kZXggb3V0IG9mIHJhbmdlACd0b3N0cmluZycgbXVzdCByZXR1cm4gYSBzdHJpbmcgdG8gJ3ByaW50JwB0b28gbWFueSBuZXN0ZWQgZnVuY3Rpb25zAHJlYWRlciBmdW5jdGlvbiBt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