static std::vector<char> readFile(const char* filename)
{
std::ifstream file;
file.open(filename, std::ios::in);
if(!file.good())
throw std::runtime_error("Cannot open input file.");
file >> std::noskipws;
std::vector<char> result;
std::copy(std::istream_iterator<char>(file), std::istream_iterator<char>(), std::back_inserter(result));
result.push_back('\0');
if(!file.eof() && file.fail())
throw std::runtime_error("I/O error when reading the input file.");
return result;
}
c3RhdGljIHN0ZDo6dmVjdG9yPGNoYXI+IHJlYWRGaWxlKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQp7CiAgc3RkOjppZnN0cmVhbSBmaWxlOwogIGZpbGUub3BlbihmaWxlbmFtZSwgc3RkOjppb3M6OmluKTsKICBpZighZmlsZS5nb29kKCkpCiAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIkNhbm5vdCBvcGVuIGlucHV0IGZpbGUuIik7CgogIGZpbGUgPj4gc3RkOjpub3NraXB3czsKICBzdGQ6OnZlY3RvcjxjaGFyPiByZXN1bHQ7CiAgc3RkOjpjb3B5KHN0ZDo6aXN0cmVhbV9pdGVyYXRvcjxjaGFyPihmaWxlKSwgc3RkOjppc3RyZWFtX2l0ZXJhdG9yPGNoYXI+KCksIHN0ZDo6YmFja19pbnNlcnRlcihyZXN1bHQpKTsKICByZXN1bHQucHVzaF9iYWNrKCdcMCcpOwogIGlmKCFmaWxlLmVvZigpICYmIGZpbGUuZmFpbCgpKQogICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJJL08gZXJyb3Igd2hlbiByZWFkaW5nIHRoZSBpbnB1dCBmaWxlLiIpOwogIHJldHVybiByZXN1bHQ7Cn0=