/* Generated by the Nim Compiler v0.18.0 */
/*   (c) 2018 Andreas Rumpf */

var framePtr = null;
var excHandler = 0;
var lastJSError = null;
if (typeof Int8Array === 'undefined') Int8Array = Array;
if (typeof Int16Array === 'undefined') Int16Array = Array;
if (typeof Int32Array === 'undefined') Int32Array = Array;
if (typeof Uint8Array === 'undefined') Uint8Array = Array;
if (typeof Uint16Array === 'undefined') Uint16Array = Array;
if (typeof Uint32Array === 'undefined') Uint32Array = Array;
if (typeof Float32Array === 'undefined') Float32Array = Array;
if (typeof Float64Array === 'undefined') Float64Array = Array;
var NTI3648 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI3650 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI37154 = {size: 0,kind: 24,base: null,node: null,finalizer: null};
var NTI3640 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI3644 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI3660 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI104 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
var NTI14009 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
var NTI3608 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI3711 = {size: 0,kind: 22,base: null,node: null,finalizer: null};
var NTI140 = {size: 0,kind: 29,base: null,node: null,finalizer: null};
var NTI3706 = {size: 0,kind: 22,base: null,node: null,finalizer: null};
var NTI3626 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI3656 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
var NTI138 = {size: 0,kind: 28,base: null,node: null,finalizer: null};
var NTI37199 = {size: 0,kind: 24,base: null,node: null,finalizer: null};
NTI37199.base = NTI138;
var NNI3656 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI3656.node = NNI3656;
NTI3706.base = NTI3626;
NTI3711.base = NTI3626;
var NNI3626 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "parent", len: 0, typ: NTI3706, name: "parent", sons: null}, 
{kind: 1, offset: "name", len: 0, typ: NTI140, name: "name", sons: null}, 
{kind: 1, offset: "message", len: 0, typ: NTI138, name: "msg", sons: null}, 
{kind: 1, offset: "trace", len: 0, typ: NTI138, name: "trace", sons: null}, 
{kind: 1, offset: "up", len: 0, typ: NTI3711, name: "up", sons: null}]};
NTI3626.node = NNI3626;
var NNI3608 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI3608.node = NNI3608;
NTI3626.base = NTI3608;
NTI3656.base = NTI3626;
var NNI14009 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI140, name: "Field0", sons: null}, 
{kind: 1, offset: "Field1", len: 0, typ: NTI104, name: "Field1", sons: null}]};
NTI14009.node = NNI14009;
var NNI3660 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI3660.node = NNI3660;
NTI3660.base = NTI3626;
var NNI3644 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI3644.node = NNI3644;
var NNI3640 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI3640.node = NNI3640;
NTI3640.base = NTI3626;
NTI3644.base = NTI3640;
NTI37154.base = NTI138;
var NNI3650 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI3650.node = NNI3650;
NTI3650.base = NTI3626;
var NNI3648 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
NTI3648.node = NNI3648;
NTI3648.base = NTI3626;

function setConstr() {
		      var result = {};
      for (var i = 0; i < arguments.length; ++i) {
        var x = arguments[i];
        if (typeof(x) == "object") {
          for (var j = x[0]; j <= x[1]; ++j) {
            result[j] = true;
          }
        } else {
          result[x] = true;
        }
      }
      return result;
    

	
}
var ConstSet1 = setConstr(17, 16, 4, 18, 27, 19, 23, 22, 21);

function nimCopy(dest_20217, src_20218, ti_20219) {
	var result_20629 = null;

		switch (ti_20219.kind) {
		case 21:
		case 22:
		case 23:
		case 5:
			if (!(isFatPointer_20201(ti_20219))) {
			result_20629 = src_20218;
			}
			else {
				result_20629 = [src_20218[0], src_20218[1]];
			}
			
			break;
		case 19:
			      if (dest_20217 === null || dest_20217 === undefined) {
        dest_20217 = {};
      }
      else {
        for (var key in dest_20217) { delete dest_20217[key]; }
      }
      for (var key in src_20218) { dest_20217[key] = src_20218[key]; }
      result_20629 = dest_20217;
    
			break;
		case 18:
		case 17:
			if (!((ti_20219.base == null))) {
			result_20629 = nimCopy(dest_20217, src_20218, ti_20219.base);
			}
			else {
			if ((ti_20219.kind == 17)) {
			result_20629 = (dest_20217 === null || dest_20217 === undefined) ? {m_type: ti_20219} : dest_20217;
			}
			else {
				result_20629 = (dest_20217 === null || dest_20217 === undefined) ? {} : dest_20217;
			}
			}
			nimCopyAux(result_20629, src_20218, ti_20219.node);
			break;
		case 24:
		case 4:
		case 27:
		case 16:
			      if (src_20218 === null) {
        result_20629 = null;
      }
      else {
        if (dest_20217 === null || dest_20217 === undefined) {
          dest_20217 = new Array(src_20218.length);
        }
        else {
          dest_20217.length = src_20218.length;
        }
        result_20629 = dest_20217;
        for (var i = 0; i < src_20218.length; ++i) {
          result_20629[i] = nimCopy(result_20629[i], src_20218[i], ti_20219.base);
        }
      }
    
			break;
		case 28:
			      if (src_20218 !== null) {
        result_20629 = src_20218.slice(0);
      }
    
			break;
		default: 
			result_20629 = src_20218;
			break;
		}

	return result_20629;

}

function makeNimstrLit(c_15003) {
		    var ln = c_15003.length;
    var result = new Array(ln + 1);
    var i = 0;
    for (; i < ln; ++i) {
      result[i] = c_15003.charCodeAt(i);
    }
    result[i] = 0; // terminating zero
    return result;
    

	
}

function eqStrings(a_17603, b_17604) {
		    if (a_17603 == b_17604) return true;
    if ((!a_17603) || (!b_17604)) return false;
    var alen = a_17603.length;
    if (alen != b_17604.length) return false;
    for (var i = 0; i < alen; ++i)
      if (a_17603[i] != b_17604[i]) return false;
    return true;
  

	
}

function arrayConstr(len_20664, value_20665, typ_20666) {
		      var result = new Array(len_20664);
      for (var i = 0; i < len_20664; ++i) result[i] = nimCopy(null, value_20665, typ_20666);
      return result;
    

	
}

function cstrToNimstr(c_15203) {
		  var ln = c_15203.length;
  var result = new Array(ln);
  var r = 0;
  for (var i = 0; i < ln; ++i) {
    var ch = c_15203.charCodeAt(i);

    if (ch < 128) {
      result[r] = ch;
    }
    else {
      if (ch < 2048) {
        result[r] = (ch >> 6) | 192;
      }
      else {
        if (ch < 55296 || ch >= 57344) {
          result[r] = (ch >> 12) | 224;
        }
        else {
            ++i;
            ch = 65536 + (((ch & 1023) << 10) | (c_15203.charCodeAt(i) & 1023));
            result[r] = (ch >> 18) | 240;
            ++r;
            result[r] = ((ch >> 12) & 63) | 128;
        }
        ++r;
        result[r] = ((ch >> 6) & 63) | 128;
      }
      ++r;
      result[r] = (ch & 63) | 128;
    }
    ++r;
  }
  result[r] = 0; // terminating zero
  return result;
  

	
}

function toJSStr(s_15403) {
		    var len = s_15403.length-1;
    var asciiPart = new Array(len);
    var fcc = String.fromCharCode;
    var nonAsciiPart = null;
    var nonAsciiOffset = 0;
    for (var i = 0; i < len; ++i) {
      if (nonAsciiPart !== null) {
        var offset = (i - nonAsciiOffset) * 2;
        var code = s_15403[i].toString(16);
        if (code.length == 1) {
          code = "0"+code;
        }
        nonAsciiPart[offset] = "%";
        nonAsciiPart[offset + 1] = code;
      }
      else if (s_15403[i] < 128)
        asciiPart[i] = fcc(s_15403[i]);
      else {
        asciiPart.length = i;
        nonAsciiOffset = i;
        nonAsciiPart = new Array((len - i) * 2);
        --i;
      }
    }
    asciiPart = asciiPart.join("");
    return (nonAsciiPart === null) ?
        asciiPart : asciiPart + decodeURIComponent(nonAsciiPart.join(""));
  

	
}

function raiseException(e_14406, ename_14407) {
		e_14406.name = ename_14407;
		if ((excHandler == 0)) {
		unhandledException(e_14406);
		}
		
		e_14406.trace = nimCopy(null, rawWriteStackTrace_14228(), NTI138);
		throw e_14406;

	
}

function chckIndx(i_20803, a_20804, b_20805) {
			var Tmp1;

	var result_20806 = 0;

	BeforeRet: do {
			if (!(a_20804 <= i_20803)) Tmp1 = false; else {				Tmp1 = (i_20803 <= b_20805);			}		if (Tmp1) {
		result_20806 = i_20803;
		break BeforeRet;
		}
		else {
		raiseIndexError();
		}
		
	} while (false);

	return result_20806;

}

function chckRange(i_20809, a_20810, b_20811) {
			var Tmp1;

	var result_20812 = 0;

	BeforeRet: do {
			if (!(a_20810 <= i_20809)) Tmp1 = false; else {				Tmp1 = (i_20809 <= b_20811);			}		if (Tmp1) {
		result_20812 = i_20809;
		break BeforeRet;
		}
		else {
		raiseRangeError();
		}
		
	} while (false);

	return result_20812;

}

function addInt(a_17803, b_17804) {
		      var result = a_17803 + b_17804;
      if (result > 2147483647 || result < -2147483648) raiseOverflow();
      return result;
    

	
}
var ConstSet2 = setConstr(32, 9, 11, 13, 10, 12);
var ConstSet3 = setConstr([48, 57]);
var ConstSet4 = setConstr([48, 57]);

function subInt(a_18003, b_18004) {
		      var result = a_18003 - b_18004;
      if (result > 2147483647 || result < -2147483648) raiseOverflow();
      return result;
    

	
}

function mulInt(a_18203, b_18204) {
		      var result = a_18203 * b_18204;
      if (result > 2147483647 || result < -2147483648) raiseOverflow();
      return result;
    

	
}

function rawEcho() {
		      var buf = "";
      for (var i = 0; i < arguments.length; ++i) {
        buf += toJSStr(arguments[i]);
      }
      console.log(buf);
    

	
}
var nimvm_6539 = false;
process.exitCode = 0;
var globalRaiseHook_12005 = [null];
var localRaiseHook_12010 = [null];
var outOfMemHook_12013 = [null];

function isFatPointer_20201(ti_20203) {
	var result_20204 = false;

	BeforeRet: do {
		result_20204 = !((ConstSet1[ti_20203.base.kind] != undefined));
		break BeforeRet;
	} while (false);

	return result_20204;

}

function nimCopyAux(dest_20222, src_20223, n_20225) {
		switch (n_20225.kind) {
		case 0:
			break;
		case 1:
			      dest_20222[n_20225.offset] = nimCopy(dest_20222[n_20225.offset], src_20223[n_20225.offset], n_20225.typ);
    
			break;
		case 2:
			L1: do {
				var i_20615 = 0;
				var colontmp__20617 = 0;
				colontmp__20617 = (n_20225.len - 1);
				var res_20620 = 0;
				L2: do {
						L3: while (true) {
						if (!(res_20620 <= colontmp__20617)) break L3;
							i_20615 = res_20620;
							nimCopyAux(dest_20222, src_20223, n_20225.sons[i_20615]);
							res_20620 += 1;
						}
				} while(false);
			} while(false);
			break;
		case 3:
			      dest_20222[n_20225.offset] = nimCopy(dest_20222[n_20225.offset], src_20223[n_20225.offset], n_20225.typ);
      for (var i = 0; i < n_20225.sons.length; ++i) {
        nimCopyAux(dest_20222, src_20223, n_20225.sons[i][1]);
      }
    
			break;
		}

	
}

function nsuSplitChar(s_37178, sep_37179, maxsplit_37180) {
	var result_37182 = null;

		result_37182 = nimCopy(null, [], NTI37199);
		L1: do {
			var x_37201 = null;
			var last_37216 = 0;
			var splits_37218 = maxsplit_37180;
			L2: do {
					L3: while (true) {
					if (!(last_37216 <= (s_37178 != null ? s_37178.length-1 : 0))) break L3;
						var first_37220 = last_37216;
						L4: do {
								L5: while (true) {
								if (!((last_37216 < (s_37178 != null ? s_37178.length-1 : 0)) && !((s_37178[last_37216] == sep_37179)))) break L5;
									last_37216 += 1;
								}
						} while(false);
						if ((splits_37218 == 0)) {
						last_37216 = (s_37178 != null ? s_37178.length-1 : 0);
						}
						
						x_37201 = (s_37178.slice(first_37220, ((last_37216 - 1))+1).concat(0));
						var Tmp6 = nimCopy(null, x_37201, NTI138);
						if (result_37182 != null) { result_37182.push(Tmp6); } else { result_37182 = [Tmp6]; };
						if ((splits_37218 == 0)) {
						break L2;
						}
						
						splits_37218 -= 1;
						last_37216 += 1;
					}
			} while(false);
		} while(false);

	return result_37182;

}

function add_12029(x_12032, x_12032_Idx, y_12033) {
		        var len = x_12032[0].length-1;
        for (var i = 0; i < y_12033.length; ++i) {
          x_12032[0][len] = y_12033.charCodeAt(i);
          ++len;
        }
        x_12032[0][len] = 0
      

	
}

function auxWriteStackTrace_14004(f_14006) {
					var Tmp3;

	var result_14007 = [null];

		var it_14015 = f_14006;
		var i_14016 = 0;
		var total_14017 = 0;
		var tempFrames_14021 = arrayConstr(64, {Field0: null, Field1: 0}, NTI14009);
		L1: do {
				L2: while (true) {
					if (!!((it_14015 == null))) Tmp3 = false; else {						Tmp3 = (i_14016 <= 63);					}				if (!Tmp3) break L2;
					tempFrames_14021[i_14016].Field0 = it_14015.procname;
					tempFrames_14021[i_14016].Field1 = it_14015.line;
					i_14016 += 1;
					total_14017 += 1;
					it_14015 = it_14015.prev;
				}
		} while(false);
		L4: do {
				L5: while (true) {
				if (!!((it_14015 == null))) break L5;
					total_14017 += 1;
					it_14015 = it_14015.prev;
				}
		} while(false);
		result_14007[0] = nimCopy(null, makeNimstrLit(""), NTI138);
		if (!((total_14017 == i_14016))) {
		if (result_14007[0] != null) { result_14007[0] = (result_14007[0].slice(0, -1)).concat(makeNimstrLit("(")); } else { result_14007[0] = makeNimstrLit("(");};
		if (result_14007[0] != null) { result_14007[0] = (result_14007[0].slice(0, -1)).concat(cstrToNimstr(((total_14017 - i_14016))+"")); } else { result_14007[0] = cstrToNimstr(((total_14017 - i_14016))+"");};
		if (result_14007[0] != null) { result_14007[0] = (result_14007[0].slice(0, -1)).concat(makeNimstrLit(" calls omitted) ...\x0A")); } else { result_14007[0] = makeNimstrLit(" calls omitted) ...\x0A");};
		}
		
		L6: do {
			var j_14215 = 0;
			var colontmp__14221 = 0;
			colontmp__14221 = (i_14016 - 1);
			var res_14224 = colontmp__14221;
			L7: do {
					L8: while (true) {
					if (!(0 <= res_14224)) break L8;
						j_14215 = res_14224;
						add_12029(result_14007, 0, tempFrames_14021[j_14215].Field0);
						if ((0 < tempFrames_14021[j_14215].Field1)) {
						if (result_14007[0] != null) { result_14007[0] = (result_14007[0].slice(0, -1)).concat(makeNimstrLit(", line: ")); } else { result_14007[0] = makeNimstrLit(", line: ");};
						if (result_14007[0] != null) { result_14007[0] = (result_14007[0].slice(0, -1)).concat(cstrToNimstr((tempFrames_14021[j_14215].Field1)+"")); } else { result_14007[0] = cstrToNimstr((tempFrames_14021[j_14215].Field1)+"");};
						}
						
						if (result_14007[0] != null) { result_14007[0] = (result_14007[0].slice(0, -1)).concat(makeNimstrLit("\x0A")); } else { result_14007[0] = makeNimstrLit("\x0A");};
						res_14224 -= 1;
					}
			} while(false);
		} while(false);

	return result_14007[0];

}

function rawWriteStackTrace_14228() {
	var result_14230 = null;

		if (!((framePtr == null))) {
		result_14230 = nimCopy(null, (makeNimstrLit("Traceback (most recent call last)\x0A").slice(0,-1)).concat(auxWriteStackTrace_14004(framePtr)), NTI138);
		}
		else {
			result_14230 = nimCopy(null, makeNimstrLit("No stack traceback available\x0A"), NTI138);
		}
		

	return result_14230;

}

function unhandledException(e_14253) {
			var Tmp1;

		var buf_14254 = [makeNimstrLit("")];
			if (!!(eqStrings(e_14253.message, null))) Tmp1 = false; else {				Tmp1 = !((e_14253.message[0] == 0));			}		if (Tmp1) {
		if (buf_14254[0] != null) { buf_14254[0] = (buf_14254[0].slice(0, -1)).concat(makeNimstrLit("Error: unhandled exception: ")); } else { buf_14254[0] = makeNimstrLit("Error: unhandled exception: ");};
		if (buf_14254[0] != null) { buf_14254[0] = (buf_14254[0].slice(0, -1)).concat(e_14253.message); } else { buf_14254[0] = e_14253.message;};
		}
		else {
		if (buf_14254[0] != null) { buf_14254[0] = (buf_14254[0].slice(0, -1)).concat(makeNimstrLit("Error: unhandled exception")); } else { buf_14254[0] = makeNimstrLit("Error: unhandled exception");};
		}
		
		if (buf_14254[0] != null) { buf_14254[0] = (buf_14254[0].slice(0, -1)).concat(makeNimstrLit(" [")); } else { buf_14254[0] = makeNimstrLit(" [");};
		add_12029(buf_14254, 0, e_14253.name);
		if (buf_14254[0] != null) { buf_14254[0] = (buf_14254[0].slice(0, -1)).concat(makeNimstrLit("]\x0A")); } else { buf_14254[0] = makeNimstrLit("]\x0A");};
		if (buf_14254[0] != null) { buf_14254[0] = (buf_14254[0].slice(0, -1)).concat(rawWriteStackTrace_14228()); } else { buf_14254[0] = rawWriteStackTrace_14228();};
		var cbuf_14401 = toJSStr(buf_14254[0]);
		framePtr = null;
		  if (typeof(Error) !== "undefined") {
    throw new Error(cbuf_14401);
  }
  else {
    throw cbuf_14401;
  }
  

	
}

function raiseIndexError() {
		var e_14894 = null;
		e_14894 = {m_type: NTI3656, parent: null, name: null, message: null, trace: null, up: null};
		e_14894.message = nimCopy(null, makeNimstrLit("index out of bounds"), NTI138);
		e_14894.parent = null;
		raiseException(e_14894, "IndexError");

	
}

function raiseRangeError() {
		var e_14876 = null;
		e_14876 = {m_type: NTI3660, parent: null, name: null, message: null, trace: null, up: null};
		e_14876.message = nimCopy(null, makeNimstrLit("value out of range"), NTI138);
		e_14876.parent = null;
		raiseException(e_14876, "RangeError");

	
}

function raiseOverflow() {
		var e_14840 = null;
		e_14840 = {m_type: NTI3644, parent: null, name: null, message: null, trace: null, up: null};
		e_14840.message = nimCopy(null, makeNimstrLit("over- or underflow"), NTI138);
		e_14840.parent = null;
		raiseException(e_14840, "OverflowError");

	
}

function map_53210(s_53216, op_53221) {
	var result_53223 = null;

	var F={procname:"map.map",prev:framePtr,filename:"lib/pure/collections/sequtils.nim",line:0};
	framePtr = F;
		F.line = 217;
		result_53223 = new Array(chckRange((s_53216 != null ? s_53216.length : 0), 0, 2147483647)); for (var i=0;i<chckRange((s_53216 != null ? s_53216.length : 0), 0, 2147483647);++i) {result_53223[i]=0;}		L1: do {
			F.line = 218;
			var i_53254 = 0;
			F.line = 3518;
			var colontmp__53258 = 0;
			F.line = 218;
			colontmp__53258 = (s_53216 != null ? s_53216.length : 0);
			F.line = 3519;
			var i_53261 = 0;
			L2: do {
				F.line = 3520;
					L3: while (true) {
					if (!(i_53261 < colontmp__53258)) break L3;
						F.line = 3521;
						i_53254 = i_53261;
						F.line = 219;
						result_53223[chckIndx(i_53254, 0, result_53223.length+0-1)-0] = op_53221(s_53216[chckIndx(i_53254, 0, s_53216.length+0-1)-0]);
						F.line = 3522;
						i_53261 = addInt(i_53261, 1);
					}
			} while(false);
		} while(false);
	framePtr = F.prev;

	return result_53223;

}

function nsuSplitCharSet(s_37132, seps_37134, maxsplit_37135) {
	var result_37137 = null;

		result_37137 = nimCopy(null, [], NTI37154);
		L1: do {
			var x_37156 = null;
			var last_37171 = 0;
			var splits_37173 = maxsplit_37135;
			L2: do {
					L3: while (true) {
					if (!(last_37171 <= (s_37132 != null ? s_37132.length-1 : 0))) break L3;
						var first_37175 = last_37171;
						L4: do {
								L5: while (true) {
								if (!((last_37171 < (s_37132 != null ? s_37132.length-1 : 0)) && !((seps_37134[s_37132[last_37171]] != undefined)))) break L5;
									last_37171 += 1;
								}
						} while(false);
						if ((splits_37173 == 0)) {
						last_37171 = (s_37132 != null ? s_37132.length-1 : 0);
						}
						
						x_37156 = (s_37132.slice(first_37175, ((last_37171 - 1))+1).concat(0));
						var Tmp6 = nimCopy(null, x_37156, NTI138);
						if (result_37137 != null) { result_37137.push(Tmp6); } else { result_37137 = [Tmp6]; };
						if ((splits_37173 == 0)) {
						break L2;
						}
						
						splits_37173 -= 1;
						last_37171 += 1;
					}
			} while(false);
		} while(false);

	return result_37137;

}

function rawParseInt_27995(s_27997, b_27999, b_27999_Idx, start_28000) {
	var result_28001 = 0;

	var F={procname:"parseutils.rawParseInt",prev:framePtr,filename:"lib/pure/parseutils.nim",line:0};
	framePtr = F;
		F.line = 232;
		var sign_28002 = -1;
		F.line = 233;
		var i_28003 = start_28000;
		if ((s_27997[chckIndx(i_28003, 0, s_27997.length+0-1)-0] == 43)) {
		F.line = 234;
		i_28003 = addInt(i_28003, 1);
		}
		else {
		if ((s_27997[chckIndx(i_28003, 0, s_27997.length+0-1)-0] == 45)) {
		F.line = 236;
		i_28003 = addInt(i_28003, 1);
		F.line = 237;
		sign_28002 = 1;
		}
		}
		if ((ConstSet3[s_27997[chckIndx(i_28003, 0, s_27997.length+0-1)-0]] != undefined)) {
		F.line = 239;
		b_27999[b_27999_Idx] = 0;
		L1: do {
			F.line = 240;
				L2: while (true) {
				if (!(ConstSet4[s_27997[chckIndx(i_28003, 0, s_27997.length+0-1)-0]] != undefined)) break L2;
					F.line = 241;
					b_27999[b_27999_Idx] = subInt(mulInt(b_27999[b_27999_Idx], 10), subInt(s_27997[chckIndx(i_28003, 0, s_27997.length+0-1)-0], 48));
					F.line = 242;
					i_28003 = addInt(i_28003, 1);
					L3: do {
						F.line = 243;
							L4: while (true) {
							if (!(s_27997[chckIndx(i_28003, 0, s_27997.length+0-1)-0] == 95)) break L4;
								F.line = 243;
								i_28003 = addInt(i_28003, 1);
							}
					} while(false);
				}
		} while(false);
		F.line = 244;
		b_27999[b_27999_Idx] = mulInt(b_27999[b_27999_Idx], sign_28002);
		F.line = 245;
		result_28001 = subInt(i_28003, start_28000);
		}
		
	framePtr = F.prev;

	return result_28001;

}

function npuParseBiggestInt(s_28077, number_28079, number_28079_Idx, start_28080) {
	var result_28081 = 0;

	var F={procname:"parseutils.parseBiggestInt",prev:framePtr,filename:"lib/pure/parseutils.nim",line:0};
	framePtr = F;
		F.line = 253;
		var res_28082 = [0];
		F.line = 256;
		result_28081 = rawParseInt_27995(s_28077, res_28082, 0, start_28080);
		F.line = 257;
		number_28079[number_28079_Idx] = res_28082[0];
	framePtr = F.prev;

	return result_28081;

}

function npuParseInt(s_28087, number_28089, number_28089_Idx, start_28090) {
			var Tmp1;
				var Tmp2;

	var result_28091 = 0;

	var F={procname:"parseutils.parseInt",prev:framePtr,filename:"lib/pure/parseutils.nim",line:0};
	framePtr = F;
		F.line = 264;
		var res_28092 = [0];
		F.line = 265;
		result_28091 = npuParseBiggestInt(s_28087, res_28092, 0, start_28090);
			if (!true) Tmp1 = false; else {				if ((res_28092[0] < -2147483648)) Tmp2 = true; else {					Tmp2 = (2147483647 < res_28092[0]);				}				Tmp1 = Tmp2;			}		if (Tmp1) {
		F.line = 268;
		F.line = 2810;
		var e_28119 = null;
		F.line = 2811;
		e_28119 = {m_type: NTI3644, parent: null, name: null, message: null, trace: null, up: null};
		F.line = 2812;
		e_28119.message = nimCopy(null, makeNimstrLit("overflow"), NTI138);
		F.line = 2813;
		e_28119.parent = null;
		raiseException(e_28119, "OverflowError");
		}
		else {
		if (!((result_28091 == 0))) {
		F.line = 270;
		number_28089[number_28089_Idx] = chckRange(res_28092[0], -2147483648, 2147483647);
		}
		}
	framePtr = F.prev;

	return result_28091;

}

function nsuParseInt(s_37589) {
			var Tmp1;

	var result_37590 = [0];

		var L_37592 = npuParseInt(s_37589, result_37590, 0, 0);
			if (!((L_37592 == (s_37589 != null ? s_37589.length-1 : 0)))) Tmp1 = true; else {				Tmp1 = (L_37592 == 0);			}		if (Tmp1) {
		var e_37599 = null;
		e_37599 = {m_type: NTI3650, parent: null, name: null, message: null, trace: null, up: null};
		e_37599.message = nimCopy(null, (makeNimstrLit("invalid integer: ").slice(0,-1)).concat(s_37589), NTI138);
		e_37599.parent = null;
		raiseException(e_37599, "ValueError");
		}
		

	return result_37590[0];

}

function sysFatal_23221(message_23227) {
	var F={procname:"sysFatal.sysFatal",prev:framePtr,filename:"lib/system.nim",line:0};
	framePtr = F;
		F.line = 2830;
		var e_23229 = null;
		F.line = 2831;
		e_23229 = {m_type: NTI3648, parent: null, name: null, message: null, trace: null, up: null};
		F.line = 2832;
		e_23229.message = nimCopy(null, message_23227, NTI138);
		F.line = 2833;
		raiseException(e_23229, "AssertionError");
	framePtr = F.prev;

	
}

function raiseAssert_23216(msg_23218) {
	var F={procname:"system.raiseAssert",prev:framePtr,filename:"lib/system.nim",line:0};
	framePtr = F;
		F.line = 3771;
		sysFatal_23221(msg_23218);
	framePtr = F.prev;

	
}

function failedAssertImpl_23239(msg_23241) {
	var F={procname:"system.failedAssertImpl",prev:framePtr,filename:"lib/system.nim",line:0};
	framePtr = F;
		F.line = 3778;
		raiseAssert_23216(msg_23241);
	framePtr = F.prev;

	
}

function main_53001(inputLines_53003) {
	var F={procname:"aoj.main",prev:framePtr,filename:"aoj.nim",line:0};
	framePtr = F;
		F.line = 6;
		var input_53004 = nsuSplitChar(inputLines_53003, 10, -1);
		L1: do {
			F.line = 7;
			var line_53202 = null;
			F.line = 3805;
			var i_53271 = 0;
			F.line = 3806;
			var L_53273 = (input_53004 != null ? input_53004.length : 0);
			L2: do {
				F.line = 3807;
					L3: while (true) {
					if (!(i_53271 < L_53273)) break L3;
						F.line = 3808;
						line_53202 = input_53004[chckIndx(i_53271, 0, input_53004.length+0-1)-0];
						F.line = 9;
						var tmp_53263 = map_53210(nsuSplitCharSet(line_53202, ConstSet2, -1), nsuParseInt);
						F.line = 10;
						var a_53264 = tmp_53263[chckIndx(0, 0, tmp_53263.length+0-1)-0];
						F.line = 11;
						var b_53265 = tmp_53263[chckIndx(1, 0, tmp_53263.length+0-1)-0];
						F.line = 12;
						rawEcho(cstrToNimstr((addInt(a_53264, b_53265))+""));
						F.line = 3809;
						i_53271 = addInt(i_53271, 1);
						if (!(((input_53004 != null ? input_53004.length : 0) == L_53273))) {
						F.line = 3810;
						failedAssertImpl_23239(makeNimstrLit("len(a) == L seq modified while iterating over it"));
						}
						
					}
			} while(false);
		} while(false);
	framePtr = F.prev;

	
}
(function() {
  'use strict';

  var lines = [];
  require('readline').createInterface({
    input: process.stdin,
    output: process.stdout
  }).on('line', function(line) {
    lines.push(line);
  });
  process.stdin.on('end', function() {
    main_53001(makeNimstrLit(lines.join("\x0A")));
  });
})();




Measured memory_bytes: 18148