/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Solution {
public static Map
<String, String
> runtimeStorage
= new HashMap
<>();
runtimeStorage.forEach((k, v) -> {
if (k.contains("=")) k = k.replace("=", "\\=");
if (v.contains("=")) v = v.replace("=", "\\=");
if (k.contains(":")) k = k.replace(":", "\\:");
if (v.contains(":")) v = v.replace(":", "\\:");
if (k.contains(" ")) k = k.replace(" ", "\\ ");
try {
outputStream.write(line.getBytes());
e.printStackTrace();
}
});
outputStream.close();
}
String key
= null, value
= null; int index;
StringBuilder sb = new StringBuilder();
while ((line = buffInputStream.readLine()) != null) {
if (line.startsWith("#") || line.startsWith("!") || line.isEmpty()) continue;
if (line.endsWith("\\")) {
sb.append(line.trim());
previousLine = line;
continue;
} else if (previousLine != null && previousLine.endsWith("\\")) sb.append(line.trim());
if (sb.length() > 0) line = sb.toString().replace("\\", "");
if (line.contains("=") || line.contains(":")) {
for (int i = 0; i < line.length(); i++) {
if (line.charAt(i) == '=' && line.charAt(i - 1) != '\\') {
key = line.substring(0, i).replace("\\", "").trim();
value = line.substring(i + 1).trim();
break;
} else if (line.charAt(i) == ':' && line.charAt(i - 1) != '\\') {
key = line.substring(0, i).replace("\\", "").trim();
value = line.substring(i + 1).trim();
break;
}
}
}
if (key != null && value != null) runtimeStorage.put(key, value);
}
buffInputStream.close();
}
public static void main
(String[] args
) { }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgU29sdXRpb24gewogICAgcHVibGljIHN0YXRpYyBNYXA8U3RyaW5nLCBTdHJpbmc+IHJ1bnRpbWVTdG9yYWdlID0gbmV3IEhhc2hNYXA8PigpOwoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzYXZlKE91dHB1dFN0cmVhbSBvdXRwdXRTdHJlYW0pIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgcnVudGltZVN0b3JhZ2UuZm9yRWFjaCgoaywgdikgLT4gewogICAgICAgICAgICBpZiAoay5jb250YWlucygiPSIpKSBrID0gay5yZXBsYWNlKCI9IiwgIlxcPSIpOwogICAgICAgICAgICBpZiAodi5jb250YWlucygiPSIpKSB2ID0gdi5yZXBsYWNlKCI9IiwgIlxcPSIpOwogICAgICAgICAgICBpZiAoay5jb250YWlucygiOiIpKSBrID0gay5yZXBsYWNlKCI6IiwgIlxcOiIpOwogICAgICAgICAgICBpZiAodi5jb250YWlucygiOiIpKSB2ID0gdi5yZXBsYWNlKCI6IiwgIlxcOiIpOwogICAgICAgICAgICBpZiAoay5jb250YWlucygiICIpKSBrID0gay5yZXBsYWNlKCIgIiwgIlxcICIpOwogICAgICAgICAgICBTdHJpbmcgbGluZSA9IFN0cmluZy5mb3JtYXQoIiVzOiVzXG4iLCBrLCB2KTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIG91dHB1dFN0cmVhbS53cml0ZShsaW5lLmdldEJ5dGVzKCkpOwogICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgb3V0cHV0U3RyZWFtLmNsb3NlKCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIGxvYWQoSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0pIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgQnVmZmVyZWRSZWFkZXIgYnVmZklucHV0U3RyZWFtID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihpbnB1dFN0cmVhbSkpOwogICAgICAgIFN0cmluZyBsaW5lOwogICAgICAgIFN0cmluZyBwcmV2aW91c0xpbmUgPSBudWxsOwogICAgICAgIFN0cmluZyBrZXkgPSBudWxsLCB2YWx1ZSA9IG51bGw7CiAgICAgICAgaW50IGluZGV4OwogICAgICAgIFN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwogICAgICAgIHdoaWxlICgobGluZSA9IGJ1ZmZJbnB1dFN0cmVhbS5yZWFkTGluZSgpKSAhPSBudWxsKSB7CiAgICAgICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoIiMiKSB8fCBsaW5lLnN0YXJ0c1dpdGgoIiEiKSB8fCBsaW5lLmlzRW1wdHkoKSkgY29udGludWU7CiAgICAgICAgICAgIGlmIChsaW5lLmVuZHNXaXRoKCJcXCIpKSB7CiAgICAgICAgICAgICAgICBzYi5hcHBlbmQobGluZS50cmltKCkpOwogICAgICAgICAgICAgICAgcHJldmlvdXNMaW5lID0gbGluZTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzTGluZSAhPSBudWxsICYmIHByZXZpb3VzTGluZS5lbmRzV2l0aCgiXFwiKSkgc2IuYXBwZW5kKGxpbmUudHJpbSgpKTsKCiAgICAgICAgICAgIGlmIChzYi5sZW5ndGgoKSA+IDApIGxpbmUgPSBzYi50b1N0cmluZygpLnJlcGxhY2UoIlxcIiwgIiIpOwogICAgICAgICAgICBpZiAobGluZS5jb250YWlucygiPSIpIHx8IGxpbmUuY29udGFpbnMoIjoiKSkgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW5lLmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAobGluZS5jaGFyQXQoaSkgPT0gJz0nICYmIGxpbmUuY2hhckF0KGkgLSAxKSAhPSAnXFwnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IGxpbmUuc3Vic3RyaW5nKDAsIGkpLnJlcGxhY2UoIlxcIiwgIiIpLnRyaW0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBsaW5lLnN1YnN0cmluZyhpICsgMSkudHJpbSgpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmUuY2hhckF0KGkpID09ICc6JyAmJiBsaW5lLmNoYXJBdChpIC0gMSkgIT0gJ1xcJykgewogICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSBsaW5lLnN1YnN0cmluZygwLCBpKS5yZXBsYWNlKCJcXCIsICIiKS50cmltKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbGluZS5zdWJzdHJpbmcoaSArIDEpLnRyaW0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChrZXkgIT0gbnVsbCAmJiB2YWx1ZSAhPSBudWxsKSBydW50aW1lU3RvcmFnZS5wdXQoa2V5LCB2YWx1ZSk7CiAgICAgICAgfQogICAgICAgIGJ1ZmZJbnB1dFN0cmVhbS5jbG9zZSgpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgIH0KfQ==