!function(){"use strict";function e(e,n){return e(n={exports:{}},n.exports),n.exports}var n=e((function(e,n){var r=function(){var e={};function n(e){if("string"==typeof e)return e;var n=e.toString();return e.message&&(n=n+" "+e.message),e.fileName&&(n=n+" "+e.fileName),e.lineNumber&&(n=n+" line:"+e.lineNumber),e.name&&(n=n+" "+e.name),e.number&&(n=n+" "+e.number),n}function r(e){window.console&&console.log?console.log(e):window.opera&&opera.postError&&opera.postError(e)}function t(){if(ye&&ye.length){var e,n,t,s,a=[];for(e=0;e>>16&65535)*t+r*(n>>>16&65535)<<16>>>0)|0});var s=Array(256),a=Array(256);function o(e,n){return 16777216*e[n]+65536*e[n+1]+256*e[n+2]+e[n+3]}function i(e,n){return 256 *e[n]+e[n+1]}function l(e,n){return e[n]}function f(e){return be[e]}function c(e){return 256*be[e]+be[e+1]}function u(e){return 16777216*be[e]+65536*be[e+1]+256*be[e+2]+be[e+3]}function d(e,n){return be.slice(e,e+n)}function h(e,n){be[e]=255&n}function p(e,n){be[e]=n>>8&255,be[e+1]=255&n}function m(e,n){be[e]=n>>24&255,be[e+1]=n>>16&255,be[e+2]=n>>8&255,be[e+3]=255&n}function g(e,n){for(var r=0;r>24&255),e.push(n>>16&255),e.push(n>>8&255),e.push(255&n)}function v(e,n){e.push(n>>8&255),e.push(255&n)}function w(e,n){e.push(255&n)}function k(e,n,r){return String.fromCharCode.apply(this,e.slice(n,n+r))}function b(e){return be[e]>=128?"0xffffff"+s[be[e]]:"0x"+s[be[e]]}function y(e){return be[e]>=128?"0xffff"+s[be[e]]+s[be[e+1]]:be[e]?"0x"+s[be[e]]+s[be[e+1]]:"0x"+s[be[e+1]]}function x(e){return be[e]?"0x"+s[be[e]]+s[be[e+1]]+s[be[e+2]]+s[be[e+3]]:be[e+1]?"0x"+s[be[e+1]]+s[be[e+2]]+s[be[e+3]]:be[e+2]?"0x"+s[be[e+2]]+s[be[e+3]]:"0x"+s[be[e+3]]}function M(e){return e<65536?String.fromCharCode(e):(e-=65536,String.fromCharCode(55296+(e>>10),56320+(1023&e)))}function z(e){return function(e){if(e<256)return a[e];if(e<65536){for(e=e.toString(16);e.length<4;)e="0"+e;return"\\u"+e}var n;return n=55296+((e-=65536)>>10),e=56320+(1023&e),"\\u"+n.toString(16)+"\\u"+e.toString(16)}(e.charCodeAt(0))}e.Mem1=f,e.Mem2=c,e.Mem4=u,e.MemSlice=d,e.MemW1=h,e.MemW2=p,e.MemW4=m;var S=/[^a-zA-Z0-9 .,;:?!=_+()-]/g;function C(e){return'"'+(e=e.replace(S,z))+'"'}function G(e){var n,t;if(arguments.length>1){for(e+=" (",n=1;n=e.length)){for(var t=o(e=e.splice(n,e.length),0),s=o(e,4),a=e.slice(8,s),f=[],c=8;;){var u=l(e,c),d=l(e,++c);if(c++,0==u)break;1!=u&&2!=u&&4!=u&&G("Invalid local variable size in function header.",u),f.push({size:u,count:d})}var h=new F(new j(null,null,f,a));h.framestart=n;for(var p=0;p>>0;e.code.push("self.pc = "+s+";"),e.vmfunc.pathaddrs[s]=!0}}else D(e,!r),e.code.push("if (("+n+")==0 || ("+n+")==1) {"),e.code.push("if (self.leave_function()) return self.VMStopped;"),e.code.push("self.pop_callstub("+n+");"),e.code.push( "}"),e.code.push("else {"),e.code.push("self.pc = ("+e.cp+"+("+n+")-2) >>>0;"),e.code.push("}");e.code.push("return;")}e.funcop_cache={};var P={0:function(e,n){},16:function(e,n){e.code.push(n[2]+"(("+n[0]+")+("+n[1]+")) >>>0);")},17:function(e,n){e.code.push(n[2]+"(("+n[0]+")-("+n[1]+")) >>>0);")},18:function(e,n){var r=R(e,n[0]),t=R(e,n[1]);e.code.push(n[2]+"(Math.imul(("+r+"),("+t+"))) >>>0);")},19:function(e,n){var r=R(e,n[0]),t=R(e,n[1]),s=B(e);e.code.push(s+"=(("+r+")/("+t+"));"),e.code.push("if (!isFinite("+s+")) self.fatal_error('Division by zero.');"),e.code.push(n[2]+"("+s+">=0)?Math.floor("+s+"):(-Math.floor(-"+s+") >>>0));")},20:function(e,n){var r=R(e,n[0]),t=R(e,n[1]),s=B(e);e.code.push(s+"=(("+r+")%("+t+"));"),e.code.push("if (!isFinite("+s+")) self.fatal_error('Modulo division by zero.');"),e.code.push(n[2]+s+" >>>0);")},21:function(e,n){e.code.push(n[1]+"(-("+n[0]+")) >>>0);")},24:function(e,n){e.code.push(n[2]+"(("+n[0]+")&("+n[1]+")) >>>0);")},25:function(e,n){e.code.push(n[2]+"(("+n[0]+") |("+n[1]+")) >>>0);")},26:function(e,n){e.code.push(n[2]+"(("+n[0]+")^("+n[1]+")) >>>0);")},27:function(e,n){e.code.push(n[1]+"(~("+n[0]+")) >>>0);")},28:function(e,n){if(Z(n[1])){var r=Number(n[1]);r<32?e.code.push(n[2]+"(("+n[0]+")<<"+r+") >>>0);"):e.code.push(n[2]+"0);")}else e.code.push(n[2]+"("+n[1]+"<32) ? (("+n[0]+"<<"+n[1]+") >>>0) : 0);")},29:function(e,n){if(Z(n[1])){var r=Number(n[1]);r<32?e.code.push(n[2]+"(("+n[0]+")>>"+r+") >>>0);"):e.code.push(n[2]+"(("+n[0]+")&0x80000000) ? 0xffffffff : 0);")}else e.code.push("if ("+n[0]+" & 0x80000000) {"),e.code.push(n[2]+"("+n[1]+"<32) ? (("+n[0]+">>"+n[1]+") >>>0) : 0xffffffff);"),e.code.push("} else {"),e.code.push(n[2]+"("+n[1]+"<32) ? (("+n[0]+">>"+n[1]+") >>>0) : 0);"),e.code.push("}")},30:function(e,n){if(Z(n[1])){var r=Number(n[1]);r<32?e.code.push(n[2]+"("+n[0]+")>>>"+r+");"):e.code.push(n[2]+"0);")}else e.code.push(n[2]+"("+n[1]+"<32) ? ("+n[0]+">>>"+n[1]+") : 0);")},32:function(e,n){U(e,n[0],!0),e.path_ends=!0},260:function(e,n){if(Z(n[0])){var r =Number(n[0]);e.code.push("self.pc = "+r+";"),e.vmfunc.pathaddrs[r]=!0}else e.code.push("self.pc = "+n[0]+";");D(e),e.code.push("return;"),e.path_ends=!0},34:function(e,n){e.code.push("if (("+n[0]+")==0) {"),U(e,n[1]),e.code.push("}")},35:function(e,n){e.code.push("if (("+n[0]+")!=0) {"),U(e,n[1]),e.code.push("}")},36:function(e,n){e.code.push("if (("+n[0]+")==("+n[1]+")) {"),U(e,n[2]),e.code.push("}")},37:function(e,n){e.code.push("if (("+n[0]+")!=("+n[1]+")) {"),U(e,n[2]),e.code.push("}")},38:function(e,n){var r=R(e,n[0]),t=R(e,n[1]);e.code.push("if (("+r+")<("+t+")) {"),U(e,n[2]),e.code.push("}")},39:function(e,n){var r=R(e,n[0]),t=R(e,n[1]);e.code.push("if (("+r+")>=("+t+")) {"),U(e,n[2]),e.code.push("}")},40:function(e,n){var r=R(e,n[0]),t=R(e,n[1]);e.code.push("if (("+r+")>("+t+")) {"),U(e,n[2]),e.code.push("}")},41:function(e,n){var r=R(e,n[0]),t=R(e,n[1]);e.code.push("if (("+r+")<=("+t+")) {"),U(e,n[2]),e.code.push("}")},42:function(e,n){e.code.push("if (("+n[0]+")<("+n[1]+")) {"),U(e,n[2]),e.code.pu sh("}")},43:function(e,n){e.code.push("if (("+n[0]+")>=("+n[1]+")) {"),U(e,n[2]),e.code.push("}")},44:function(e,n){e.code.push("if (("+n[0]+")>("+n[1]+")) {"),U(e,n[2]),e.code.push("}")},45:function(e,n){e.code.push("if (("+n[0]+")<=("+n[1]+")) {"),U(e,n[2]),e.code.push("}")},48:function(e,n){if(Z(n[1])){var r,t=Number(n[1]);for(r=0;r>>0:65535&r,e.code.push(n[1]+r+");")):e.code.push(n[1]+"("+n[0]+" & 0x8000) ? (("+n[0]+" | 0xffff0000) >>> 0) : ("+n[0]+" & 0xffff));")},69:functi on(e,n){var r;Z(n[0])?(r=128&(r=Number(n[0]))?(4294967040|r)>>>0:255&r,e.code.push(n[1]+r+");")):e.code.push(n[1]+"("+n[0]+" & 0x80) ? (("+n[0]+" | 0xffffff00) >>> 0) : ("+n[0]+" & 0xff));")},72:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?"self.Mem4("+((t=Number(n[0])+4*Number(n[1]))>>>0)+")":(t=4*Number(n[1]))?"self.Mem4(("+n[0]+"+"+t+") >>>0)":"self.Mem4("+n[0]+")":r="self.Mem4(("+n[0]+"+4*"+n[1]+") >>>0)";e.code.push(n[2]+r+");")},73:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?"self.Mem2("+((t=Number(n[0])+2*Number(n[1]))>>>0)+")":(t=2*Number(n[1]))?"self.Mem2(("+n[0]+"+"+t+") >>>0)":"self.Mem2("+n[0]+")":r="self.Mem2(("+n[0]+"+2*"+n[1]+") >>>0)";e.code.push(n[2]+r+");")},74:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?"self.Mem1("+((t=Number(n[0])+Number(n[1]))>>>0)+")":(t=Number(n[1]))?"self.Mem1(("+n[0]+"+"+t+") >>>0)":"self.Mem1("+n[0]+")":r="self.Mem1(("+n[0]+"+"+n[1]+") >>>0)";e.code.push(n[2]+r+");")},76:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?((t=Number(n[0])+4*Number(n[1]))>>>0)+",":(t=4*Number(n[1]))?"("+n[0 ]+"+"+t+") >>>0,":n[0]+",":r="("+n[0]+"+4*"+n[1]+") >>>0,";e.code.push("self.MemW4("+r+n[2]+");")},77:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?((t=Number(n[0])+2*Number(n[1]))>>>0)+",":(t=2*Number(n[1]))?"("+n[0]+"+"+t+") >>>0,":n[0]+",":r="("+n[0]+"+2*"+n[1]+") >>>0,";e.code.push("self.MemW2("+r+n[2]+");")},78:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?((t=Number(n[0])+Number(n[1]))>>>0)+",":(t=Number(n[1]))?"("+n[0]+"+"+t+") >>>0,":n[0]+",":r="("+n[0]+"+"+n[1]+") >>>0,";e.code.push("self.MemW1("+r+n[2]+");")},75:function(e,n){if(Z(n[1])){var r,t,s;r=7&(s=4294967295&Number(n[1])),Z(n[0])?(t=Number(n[0]),s>=0?t+=s>>3:t-=1+(-1-s>>3)):t=s>=0?s<=7?n[0]:n[0]+"+"+(s>>3):n[0]+"-"+(1+(-1-s>>3)),e.code.push(n[2]+"(self.Mem1("+t+") & "+(1<=0) addrx = "+n[0]+" + ("+a+">>3);"),e.code.push("else addrx = "+n[0]+" - (1+((-1-("+a+"))>>3));"),e.code.push(n[2]+"(self.Mem1(addrx) & (1<=0?t+=a>>3:t-=1+(-1-a>>3)):t=a>=0?a<=7?n[0]:n[0]+"+"+(a>>3):n[0]+"-"+(1+(-1-a>>3)),s=1<=0) addrx = "+n[0]+" + ("+o+">>3);"),e.code.push("else addrx = "+n[0]+" - (1+((-1-("+o+"))>>3));"),t="addrx",s="(1< 0) {"),e.code.push("if ("+t+" > 0) {"),e.code.push("vals1 = "+t+" % "+r+";"),e.code.push("} else {"),e.code.push("vals1 = "+r+" - (-("+t+")) % "+r+";"),e.code.push("}"),e.code.push("if (vals1) {"),e.code.push("pos = self.frame.valstack.length - "+r+";"),e.code.push("roll = self.frame.valstack.slice(self.frame.valstack.length-vals1, self.frame.valstack.length).concat(self.frame.valstack.slice(pos, self.frame.valstack.length-vals1));"),e.code.push("for (ix=0; ix<"+r+"; ix++) { self.frame.valstack[pos+ix] = roll[ix]; }"),e.code.push("roll = undefined;"),e.code.push("}"),e.code.push("}")},84:function(e,n){if(D(e),Z(n[0])){var r,t,s=Number(n[0]);for(r=0;r>>0":t>0?"Math.floor(self.random_func() * "+t+")":"-Math. floor(self.random_func() * "+-t+")"}else{var s=R(e,n[0],!0),a=B(e);r=a,e.code.push("if ("+s+" > 0)"),e.code.push(a+" = Math.floor(self.random_func() * "+s+");"),e.code.push("else if ("+s+" < 0)"),e.code.push(a+" = -Math.floor(self.random_func() * -"+s+");"),e.code.push("else"),e.code.push(a+" = (Math.floor(self.random_func() * 0x10000) | (Math.floor(self.random_func() * 0x10000) << 16)) >>>0;")}e.code.push(n[1]+r+");")},273:function(e,n){e.code.push("self.set_random("+n[0]+");")},288:function(e,n){e.code.push("// quashing offstack for quit: "+e.offstack.length),e.offstack.length=0,e.offloc.length=0,e.offlocdirty.length=0,e.code.push("return self.VMStopped;"),e.path_ends=!0},289:function(e,n){e.code.push(n[0]+"self.perform_verify());")},290:function(e,n){e.code.push("// quashing offstack for quit: "+e.offstack.length),e.offstack.length=0,e.offloc.length=0,e.offlocdirty.length=0,e.code.push("self.vm_restart();"),e.code.push("return;"),e.path_ends=!0},291:function(e,n){D(e),e.varsused.ix=!0,T(e,n[1]),e.code.pus h("ix = self.vm_save("+n[0]+");"),e.code.push("self.pop_callstub(ix ? 0 : 1);"),e.code.push("return;"),e.path_ends=!0},292:function(e,n){D(e),e.code.push("if (self.vm_restore("+n[0]+")) {"),e.code.push("self.pop_callstub((-1)>>>0);"),e.code.push("} else {"),q(e,n[1],"1"),D(e),e.code.push("self.pc = "+e.cp+";"),e.code.push("}"),e.code.push("return;"),e.path_ends=!0},293:function(e,n){D(e),T(e,n[0]),e.code.push("self.vm_saveundo();"),e.code.push("self.pop_callstub(0);"),e.code.push("return;"),e.path_ends=!0},294:function(e,n){D(e),e.code.push("if (self.vm_restoreundo()) {"),e.code.push("self.pop_callstub((-1)>>>0);"),e.code.push("} else {"),q(e,n[0],"1"),D(e),e.code.push("self.pc = "+e.cp+";"),e.code.push("}"),e.code.push("return;"),e.path_ends=!0},295:function(e,n){e.code.push("self.protectstart="+n[0]+";"),e.code.push("self.protectend=self.protectstart+("+n[1]+");"),e.code.push("if (self.protectstart==self.protectend) {"),e.code.push(" self.protectstart=0; self.protectend=0;"),e.code.push("}")},368:function (e,n){e.varsused.maddr=!0,e.varsused.mlen=!0,e.varsused.ix=!0,e.code.push("mlen="+n[0]+";"),e.code.push("maddr="+n[1]+";"),e.code.push("for (ix=0; ix 0x7fffffff))"),e.code.push(" res = 0x7fffffff;"),e.code.push(" else"),e.code.push(" res = Math.floor(valf);"),e.code.push("} else {"),e.code.push(" if (isNaN(valf) || !isFinite(valf) || (valf < -0x80000000))"),e.code.push(" res = -0x80000000;"),e.code.push(" else"),e.code.push(" res = Math.ceil(valf);"),e.code.push("}"),e.code.push(n[1]+"res>>>0);")},402:function(e,n){e.varsused.valf=!0 ,e.varsused.res=!0,e.code.push("valf = "+O(e,n[0])+";"),e.code.push("if (!("+n[0]+" & 0x80000000)) {"),e.code.push(" if (isNaN(valf) || !isFinite(valf))"),e.code.push(" res = 0x7fffffff;"),e.code.push(" else"),e.code.push(" res = Math.round(valf);"),e.code.push(" if (res > 0x7fffffff) res = 0x7fffffff;"),e.code.push("} else {"),e.code.push(" if (isNaN(valf) || !isFinite(valf))"),e.code.push(" res = -0x80000000;"),e.code.push(" else"),e.code.push(" res = Math.round(valf);"),e.code.push(" if (res < -0x80000000) res = -0x80000000;"),e.code.push("}"),e.code.push(n[1]+"res>>>0);")},408:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.ceil("+r+")));")},409:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.floor("+r+")));")},416:function(e,n){var r=O(e,n[0]),t=O(e,n[1]);e.code.push(n[2]+"self.encode_float("+r+" + "+t+"));")},417:function(e,n){var r=O(e,n[0]),t=O(e,n[1]);e.code.push(n[2]+"self.encode_float("+r+" - "+t+"));")},418:function(e,n){var r=O(e,n[ 0]),t=O(e,n[1]);e.code.push(n[2]+"self.encode_float("+r+" * "+t+"));")},419:function(e,n){var r=O(e,n[0]),t=O(e,n[1]);e.code.push(n[2]+"self.encode_float("+r+" / "+t+"));")},420:function(e,n){var r=O(e,n[0],!0),t=O(e,n[1],!0);e.varsused.modv=!0,e.varsused.quov=!0,e.code.push("modv=("+r+" % "+t+");"),e.code.push("quov=self.encode_float(("+r+" - modv) / "+t+");"),e.code.push("if (quov == 0x0 || quov == 0x80000000) {"),e.code.push(" quov = (("+n[0]+" ^ "+n[1]+") & 0x80000000) >>>0;"),e.code.push("}"),e.code.push(n[2]+"self.encode_float(modv));"),e.code.push(n[3]+"quov);")},424:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.sqrt("+r+")));")},425:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.exp("+r+")));")},426:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.log("+r+")));")},427:function(e,n){e.varsused.valf=!0;var r=O(e,n[0],!0),t=O(e,n[1],!0);e.code.push("if ("+n[0]+" == 0x3f800000) {"),e.code.push(" valf = 0x3f800000;"),e.code.push("} e lse if ("+n[0]+" == 0xbf800000 && ("+n[1]+" == 0xff800000 || "+n[1]+" == 0x7f800000)) {"),e.code.push(" valf = 0x3f800000;"),e.code.push("} else {"),e.code.push(" valf=self.encode_float(Math.pow("+r+", "+t+"));"),e.code.push("}"),e.code.push(n[2]+"valf);")},432:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.sin("+r+")));")},433:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.cos("+r+")));")},434:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.tan("+r+")));")},435:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.asin("+r+")));")},436:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.acos("+r+")));")},437:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.atan("+r+")));")},438:function(e,n){var r=O(e,n[0]),t=O(e,n[1]);e.code.push(n[2]+"self.encode_float(Math.atan2("+r+", "+t+")));")},448:function(e,n){var r,t,s,a;e.varsused.fequal=!0,e.varsused.fdiff=!0,e.code.push("if (("+n[2] +" & 0x7f800000) == 0x7f800000 && ("+n[2]+" & 0x007fffff) != 0) {"),e.code.push(" fequal = 0;"),e.code.push("} else if (("+n[0]+" == 0xff800000 || "+n[0]+" == 0x7f800000) && ("+n[1]+" == 0xff800000 || "+n[1]+" == 0x7f800000)) {"),e.code.push(" fequal = ("+n[0]+" == "+n[1]+");"),e.code.push("} else {"),Z(n[2])?a=""+we(2147483647&(r=Number(n[2]))):(r="self.decode_float(("+n[2]+") & 0x7fffffff)",a=B(e),e.code.push(a+"="+r+";")),t=O(e,n[0]),s=O(e,n[1]),e.code.push(" fdiff = "+s+" - "+t+";"),e.code.push(" fequal = (fdiff <= "+a+" && fdiff >= -("+a+"));"),e.code.push("}"),e.code.push("if (fequal) {"),U(e,n[3]),e.code.push("}")},449:function(e,n){var r,t,s,a;e.varsused.fequal=!0,e.varsused.fdiff=!0,e.code.push("if (("+n[2]+" & 0x7f800000) == 0x7f800000 && ("+n[2]+" & 0x007fffff) != 0) {"),e.code.push(" fequal = 0;"),e.code.push("} else if (("+n[0]+" == 0xff800000 || "+n[0]+" == 0x7f800000) && ("+n[1]+" == 0xff800000 || "+n[1]+" == 0x7f800000)) {"),e.code.push(" fequal = ("+n[0]+" == "+n[1]+");"),e.code.push(" } else {"),Z(n[2])?a=""+we(2147483647&(r=Number(n[2]))):(r="self.decode_float(("+n[2]+") & 0x7fffffff)",a=B(e),e.code.push(a+"="+r+";")),t=O(e,n[0]),s=O(e,n[1]),e.code.push(" fdiff = "+s+" - "+t+";"),e.code.push(" fequal = (fdiff <= "+a+" && fdiff >= -("+a+"));"),e.code.push("}"),e.code.push("if (!fequal) {"),U(e,n[3]),e.code.push("}")},450:function(e,n){var r,t;r=O(e,n[0]),t=O(e,n[1]),e.code.push("if ("+r+" < "+t+") {"),U(e,n[2]),e.code.push("}")},451:function(e,n){var r,t;r=O(e,n[0]),t=O(e,n[1]),e.code.push("if ("+r+" <= "+t+") {"),U(e,n[2]),e.code.push("}")},452:function(e,n){var r,t;r=O(e,n[0]),t=O(e,n[1]),e.code.push("if ("+r+" > "+t+") {"),U(e,n[2]),e.code.push("}")},453:function(e,n){var r,t;r=O(e,n[0]),t=O(e,n[1]),e.code.push("if ("+r+" >= "+t+") {"),U(e,n[2]),e.code.push("}")},456:function(e,n){e.code.push("if (("+n[0]+" & 0x7f800000) == 0x7f800000 && ("+n[0]+" & 0x007fffff) != 0) {"),U(e,n[1]),e.code.push("}")},457:function(e,n){e.code.push("if ("+n[0]+" == 0xff800000 || "+n[0]+" == 0x7f800000) { "),U(e,n[1]),e.code.push("}")},304:function(n,r){var t;if((t=!Z(r[0])||Glk.call_may_not_return(Number(r[0])))&&(n.code.push(" self.prevpc = "+n.prevcp+";"),n.code.push(" self.pc = "+n.cp+";")),n.code.push("self.tempglkargs.length = "+r[1]+";"),Z(r[1])){var s,a=Number(r[1]);for(s=0;s>1,a=0;a>4&15,s++);var p=r.formlist[a];if("L"!=p)if("E"!=p)if("S"!=p)if("F"!=p)if("C"!=p)G("Unknown operand type.",p);else{switch(i){case 8:t[a]="3,0";continue;case 0:t[a]="0,0";continue}if(i>=9&&i<=11){9==i?(d=f(n),n++):10==i?(d=c(n),n+=2):11==i&&(d=u(n),n+=4),t[a]="2,"+d;continue}switch(i){case 15:d=u(n)+Ce,n+=4;break;case 14:d=c(n)+Ce,n+=2;break;case 13:d=f(n)+Ce,n++;break;case 7:d=u(n),n+=4;break;case 6:d=c(n),n+=2;break;case 5:d=f(n),n++;break;default:G("Unknown addressing mode in store operand.")}t[a]="1,"+d}else{var m=t.func_store;switch(i){case 8:m.mode=8,m.argsize=r.argsize,t[a]=m;continue;case 0:m.mode=0,m.argsize=r.argsize,t[a]=m;continue}if(i>=9&&i<=11){9==i?(d=f(n),n++):10==i?(d=c(n),n+=2):11==i&&(d=u(n),n+=4),m.mode=11,m.addr=d,m.argsize=r.argsize,t[a]=m;continue}switch(i){case 15:d=u(n)+Ce,n+=4;break;case 14:d=c(n)+Ce,n+=2;break;case 13:d=f(n)+Ce,n++;break;case 7:d=u(n),n+=4;break;case 6:d=c(n),n+=2;break;case 5:d=f(n),n++;break;default:G("Unknown addressing mode in store operand.")}m.mode=15,m.addr=d,m.argsize=r.argsize,t[a]=m}else{switch(i){case 8:h=B(e,!0),e.offstack.push(h),t[a]=h+"=("; continue;case 0:t[a]="(";continue}if(i>=9&&i<=11){9==i?(d=f(n),n++):10==i?(d=c(n),n+=2):11==i&&(d=u(n),n+=4),4==r.argsize?(H(e,d,h=B(e,!0),!1),t[a]=h+"=("):2==r.argsize?(H(e,d,void 0),t[a]="self.frame.locals["+d+"]=(0xffff &"):(H(e,d,void 0),t[a]="self.frame.locals["+d+"]=(0xff &");continue}switch(i){case 15:d=u(n)+Ce,n+=4;break;case 14:d=c(n)+Ce,n+=2;break;case 13:d=f(n)+Ce,n++;break;case 7:d=u(n),n+=4;break;case 6:d=c(n),n+=2;break;case 5:d=f(n),n++;break;default:G("Unknown addressing mode in store operand.")}l=4==r.argsize?"self.MemW4("+d+",":2==r.argsize?"self.MemW2("+d+",":"self.MemW1("+d+",",t[a]=l}else{switch(i){case 8:e.offstack.length?t[a]=Q(e):t[a]="self.frame.valstack.pop()";continue;case 0:t[a]="0";continue;case 1:l=b(n),n++,t[a]=l;continue;case 2:l=y(n),n+=2,t[a]=l;continue;case 3:l=x(n),n+=4,t[a]=l;continue}if(i>=9&&i<=11){if(9==i?(d=f(n),n++):10==i?(d=c(n),n+=2):11==i&&(d=u(n),n+=4),void 0!==e.offloc[d]){t[a]=e.offloc[d];continue}l=4==r.argsize?"self.frame.locals["+d+"]":2==r.argsize?"self.fra me.locals["+d+"] & 0xffff":"self.frame.locals["+d+"] & 0xff",h=B(e,!0),e.code.push(h+"=("+l+");"),e.offloc[d]=h,e.offlocdirty[d]=!1,t[a]=h;continue}switch(i){case 15:d=u(n)+Ce,n+=4;break;case 14:d=c(n)+Ce,n+=2;break;case 13:d=f(n)+Ce,n++;break;case 7:d=u(n),n+=4;break;case 6:d=c(n),n+=2;break;case 5:d=f(n),n++;break;default:G("Unknown addressing mode in load operand.")}l=4==r.argsize?"self.Mem4("+d+")":2==r.argsize?"self.Mem2("+d+")":"self.Mem1("+d+")",t[a]=l}else{switch(i){case 8:e.offstack.length?t[a]=Q(e):(h=B(e),e.code.push(h+"=self.frame.valstack.pop();"),t[a]=h);continue;case 0:t[a]="0";continue;case 1:l=b(n),n++,t[a]=l;continue;case 2:l=y(n),n+=2,t[a]=l;continue;case 3:l=x(n),n+=4,t[a]=l;continue}if(i>=9&&i<=11){if(9==i?(d=f(n),n++):10==i?(d=c(n),n+=2):11==i&&(d=u(n),n+=4),void 0!==e.offloc[d]){t[a]=e.offloc[d];continue}l=4==r.argsize?"self.frame.locals["+d+"]":2==r.argsize?"self.frame.locals["+d+"] & 0xffff":"self.frame.locals["+d+"] & 0xff",h=B(e,!0),e.code.push(h+"=("+l+");"),e.offloc[d]=h,e.offloc dirty[d]=!1,t[a]=h;continue}switch(i){case 15:d=u(n)+Ce,n+=4;break;case 14:d=c(n)+Ce,n+=2;break;case 13:d=f(n)+Ce,n++;break;case 7:d=u(n),n+=4;break;case 6:d=c(n),n+=2;break;case 5:d=f(n),n++;break;default:G("Unknown addressing mode in load operand.")}l=4==r.argsize?"self.Mem4("+d+")":2==r.argsize?"self.Mem2("+d+")":"self.Mem1("+d+")",h=B(e),e.code.push(h+"=("+l+");"),t[a]=h}}return n}function $(e,n,r){var t,s,a,o=n,i={vmfunc:e,cp:null,prevcp:null,curiosys:r,code:[],holduse:{},varsused:{},offstack:[],offloc:[],offlocdirty:[],path_ends:!1},l={func_store:{}};for(i.code.push("");!i.path_ends;){i.prevcp=o,s=o,void 0===(t=f(o))&&G("Tried to compile nonexistent address",o),o++,128&t&&(64&t?(t=256*(t=256*(t=256*(t&=63)|f(o))|f(++o))|f(++o),o++):(t=256*(t&=127)|f(o),o++)),i.code.push("// "+s.toString(16)+": opcode "+t.toString(16));var c=W[t];c||G("Encountered unknown opcode.",t),o=J(i,o,c,l),i.cp=o;var u=P[t];for(a in u||G("Encountered unhandled opcode.",t),u(i,l),i.holduse)!0===i.holduse[a]&&(i.holduse[a]=!1);i.of fstack.length&&i.code.push("// offstack: "+i.offstack.join(",")),i.offloc.length&&i.code.push("// offloc: "+i.offloc.join(",")+"; dirty: "+i.offlocdirty.join(",")),e.pathaddrs[o]&&!i.path_ends&&(i.code.push("// reached jump-in point"),i.code.push("self.pc="+o+";"),D(i),i.code.push("return;"),i.path_ends=!0)}i.offstack.length&&G("Path compilation ended with nonempty offstack.",i.offstack.length),i.offloc.length&&G("Path compilation ended with nonempty offloc.",i.offloc.length);var d=[];for(a in i.holduse)d.push(a);for(a in i.varsused)d.push(a);return d.length&&(i.code[0]="var "+d.join(",")+";"),N(i.code.join("\n"))}function X(n,r){var t;Ue++;var s=se[n];if(void 0!==s)return Pe++,void Y(s(r,e.tempcallargs));var a=xe[n];void 0===a&&(a=function(e){var n=e,r=f(n);192!=r&&193!=r&&G(r>=192&&r<=223?"Call to unknown type of function.":"Call to non-function.",n);for(var t=[],s=++n;;){var a=f(n),o=f(++n);if(n++,0==a)break;1!=a&&2!=a&&4!=a&&G("Invalid local variable size in function header.",a),t.push({size:a,count:o})} for(var i=be.slice(s,n);i.length%4;)i.push(0);return new j(e,n,t,i)}(n),n=0;t--)e.frame.valstack.push(e.tempcallargs[t]);e.frame.valstack.push(r)}else for(t=0;t>>0,e=re[r];for(a=0;a<4;a++)for(n=0;n<55;n++)s=re[n]-re[(1+n+30)%55],re[n]=s>>>0}(n),e.random_func=te)}e.enter_function=X,e.leave_function=function(){var n=e.frame.depth;if(ye.pop(),0==ye.length)return e.frame=null,!0;e.frame=ye[ye.length-1],e.frame.depth!=n-1&&G("Stack inconsistent after function exit.")},e.pop_stack_to=function(n){for(;ye.length&&ye[ye.length-1].framestart>n;)ye.pop();0==ye.length&&G("Stack evaporated during throw."),e.frame=ye[ye.length-1],(n-=e.frame.framestart+e.frame.framelen)<0&&G("Attempted to throw below the frame value stack."),3&n&&G("Attempted to throw to an unaligned a ddress."),(n>>>=2)>e.frame.valstack.length&&G("Attempted to throw beyond the frame value stack."),e.frame.valstack.length=n},e.pop_callstub=Y,e.store_operand=function(n,r,t){switch(n){case 0:return;case 1:return void m(r,t);case 2:return void(e.frame.locals[r]=t);case 3:return void e.frame.valstack.push(t);default:G("Unrecognized desttype in callstub.",n)}},e.set_random=K;var ee,ne,re=void 0;function te(){return ne=(ne+1)%55,re[ee=(ee+1)%55]=re[ee]-re[ne]>>>0,re[ee]/4294967296}var se={},ae={};e.accel_address_map=se,e.accel_funcnum_map=ae;var oe=[0,0,0,0,0,0,0,0,0];e.accel_params=oe;var ie={1:function(n,r){if(n<1)return 0;var t=r[0];if(t<36)return 0;if(t>=e.endmem)return 0;var s=f(t);return s>=224?3:s>=192?2:s>=112&&s<=127&&t>=Ce?1:0},2:function(e,n){var r=e>0?n[0]:0,t=e>1?n[1]:0;if(1!=ie[1](e,n))return Glk.glk_put_jstring('\n[** Programming error: tried to find the "." of (something) **]\n'),0;var s=u(r+16);if(!s)return 0;var a=u(s);return ve(t,2,s+=4,10,a,0,0)},3:function(e,n){var r=ce(e>0?n[0]:0,e>1?n[1]:0 );return 0==r?0:u(r+4)},4:function(e,n){var r=ce(e>0?n[0]:0,e>1?n[1]:0);return 0==r?0:4*c(r+2)},5:function(e,n){var r,t,s,a,o,i=e>0?n[0]:0,l=e>1?n[1]:0;if(3==(r=ie[1](e,n)))return l==oe[5]?1:0;if(2==r)return l==oe[4]?1:0;if(1!=r)return 0;if(l==oe[2])return fe(i)||i==oe[2]||i==oe[5]||i==oe[4]||i==oe[3]?1:0;if(l==oe[3])return fe(i)||i==oe[2]||i==oe[5]||i==oe[4]||i==oe[3]?0:1;if(l==oe[5]||l==oe[4])return 0;if(!fe(l))return Glk.glk_put_jstring("\n[** Programming error: tried to apply 'ofclass' with non-class **]\n"),0;if(0==(t=ce(i,2)))return 0;if(0==(s=u(t+4)))return 0;for(a=c(t+2),o=0;o1?n[1]:0;return 0==(r=ie[3](e,n))?t>0&&t0?n[0]:0,t=e>1?n[1]:0,s=oe[1],a=ie[1](e,n);return 3==a?t==s+6||t==s+7?1:0:2==a?t==s+5?1:0:1!=a?0:t>=s&&t0?n[0]:0,t=e>1?n[1]:0;if(1!=ie[1]( e,n))return Glk.glk_put_jstring('\n[** Programming error: tried to find the "." of (something) **]\n'),0;var s=u(r+4*(3+(oe[7]>>2)));if(!s)return 0;var a=u(s);return ve(t,2,s+=4,10,a,0,0)},9:function(e,n){var r=ue(e>0?n[0]:0,e>1?n[1]:0);return 0==r?0:u(r+4)},10:function(e,n){var r=ue(e>0?n[0]:0,e>1?n[1]:0);return 0==r?0:4*c(r+2)},11:function(e,n){var r,t,s,a,o,i=e>0?n[0]:0,l=e>1?n[1]:0;if(3==(r=ie[1](e,n)))return l==oe[5]?1:0;if(2==r)return l==oe[4]?1:0;if(1!=r)return 0;if(l==oe[2])return fe(i)||i==oe[2]||i==oe[5]||i==oe[4]||i==oe[3]?1:0;if(l==oe[3])return fe(i)||i==oe[2]||i==oe[5]||i==oe[4]||i==oe[3]?0:1;if(l==oe[5]||l==oe[4])return 0;if(!fe(l))return Glk.glk_put_jstring("\n[** Programming error: tried to apply 'ofclass' with non-class **]\n"),0;if(0==(t=ue(i,2)))return 0;if(0==(s=u(t+4)))return 0;for(a=c(t+2),o=0;o1?n[1]:0;return 0==(r=ie[9](e,n))?t>0&&t0?n[0]:0,t=e>1?n[1]:0,s=oe[1],a=ie[1](e,n);return 3==a?t==s+6||t==s+7?1:0:2==a?t==s+5?1:0:1!=a?0:t>=s&&t>=16,e=t}return le[0]=e,le[1]=n,0==(r=ie[2](2,le))||fe(e)&&0==t&&(n=oe[1]+8)||u(oe[6])!=e&&1&f(r+9)?0:r}function ue(e,n){var r,t=0;if(4294901760&n){if(t=u(oe[0]+4*(65535&n)),le[0]=e,le[1]=t,0==ie[11](2,le))return 0;n>>=16,e=t}return le[0]=e,le[1]=n,0==(r=ie[8](2,le))||fe(e)&&0==t&&(n=oe[1]+8)||u(oe[6])!=e&&1&f(r+9)?0:r}function de(n){if(e.stringtable!=n&&(ze=void 0,Se=void 0,e.stringtable=n,0!=e.stringtable)){var r=Me[e.stringtable];if(void 0===r){var t=void 0,s=u(e.stringtable),a=u(e.stringtable+8);if(e.stringtable+s<=Ce){var o=Array(1);!function e(n,r,t,s){var a,o,i,l;if(0==(o=f(r))&&4==t)return(i=Array(16)).type=0,i.depth= 4,n[s]=i,void e(i,r,0,0);if(0==o){var c=u(r+1),d=u(r+5);return e(n,c,t+1,s),void e(n,d,t+1,s|1<>=i),h=8-i,p=!1,ze instanceof Array||(v=!0),g=ze;!v;){if(h<4)d|=f(o+1)<>=_.depth,(i+=_.depth)>=8)if(o+=1,i-=8,p)p=!1;else d|=f(o)<=9&&c.code.push("oaddr = self.Mem4(oaddr);"),11==_.type&&c.code.push("oaddr = self.Mem4(oaddr);"),c.code.push("otype = self.Mem1(oaddr);"),l="retval",v=!0,T(c,"0x10,"+i,o),c.code.push("if (otype >= 0xE0 && otype <= 0xFF) {"),c.code.push("retval = [oaddr, 0, 0];"),c.code.push("}"),c.code.push("else if (otype >= 0xC0 && otype <= 0xDF) {");var w=0;if(10==_.type||11==_.type){w=u(_.addr+4);for(var k=0;k>=i),b=u(e.stringtable+8);!v;)switch(x=f(b),b++,x){case 0:b=u(1&y?b+4:b+0),7==i?(i=0,y=f(++o)):(i++,y>>=1);break;case 1:l=!1, v=!0;break;case 2:switch(z=f(b),n){case 2:c.buffer.push(M(z));break;case 1:I(c),V(c),T(c,"0x10,"+i,o),c.code.push("self.tempcallargs[0]="+z+";"),c.code.push("self.enter_function(self.iosysrock, 1);"),l=!0,v=!0}b=u(e.stringtable+8);break;case 4:switch(z=u(b),n){case 2:c.buffer.push(M(z));break;case 1:I(c),V(c),T(c,"0x10,"+i,o),c.code.push("self.tempcallargs[0]="+z+";"),c.code.push("self.enter_function(self.iosysrock, 1);"),l=!0,v=!0}b=u(e.stringtable+8);break;case 3:switch(n){case 2:for(;0!=(z=f(b));)c.buffer.push(M(z)),b++;break;case 1:I(c),V(c),T(c,"0x10,"+i,o),l="["+b+", 0xE0, 0]",v=!0}b=u(e.stringtable+8);break;case 5:switch(n){case 2:for(;0!=(z=u(b));)c.buffer.push(M(z)),b+=4;break;case 1:I(c),V(c),T(c,"0x10,"+i,o),l="["+b+", 0xE2, 0]",v=!0}b=u(e.stringtable+8);break;case 8:case 9:case 10:case 11:I(c),V(c),c.code.push("var otype, retval;"),c.code.push("var oaddr = "+u(b)+";"),9!=x&&11!=x||c.code.push("oaddr = self.Mem4(oaddr);"),c.code.push("otype = self.Mem1(oaddr);"),l="retval",v=!0,T(c,"0x10,"+i,o),c. code.push("if (otype >= 0xE0 && otype <= 0xFF) {"),c.code.push("retval = [oaddr, 0, 0];"),c.code.push("}"),c.code.push("else if (otype >= 0xC0 && otype <= 0xDF) {");w=0;if(10==x||11==x){w=u(b+4);for(k=0;k=224&&a<=255?"Attempt to print unknown type of string.":"Attempt to print non-string.");return l?(I(c),c.code.push("return "+l+";"),N(c.code.join("\n"),0,"nextcp","substring")):(c.code.length>1&&G("Simple-case string generated code."),c.buffer.join(""))}function _e(e,n,r){if(1&r)return d(e,n);switch(n){case 4:return[e>>24&255,e>>16&255,e>>8&255,255&e];case 2:return[e>>8&255,255&e];case 1:return[255&e];default:G("Direct search key must hold one, two, or four bytes.")}}function ve(e,n,r,t,s,a,o){var i,l,c,u,d,h,p,m,g=0!=(4&o),_=_e(e,n,o);for(l=0,i=s;l>1)*t,h=0;!d&&hm&&(d=1);if(!d)return g?u:c;d<0?l=u+1:i=u}return g?4294967295:0}function we(e){var n,r,t;return 2147483648&e?(n=!0,e&=2147483647):n=!1,0==e?n?-0:0:2139095040==(2139095040&e)?0==(8388607&e)?n?-1/0:1/0:NaN:(r=(t=e>>23&255)?(8388607&e|8388608)/8388608*Math.pow(2,t-127):(8388607&e)/8388608*Math.pow(2,-126),n?-r:r)}function ke(e){var n,r,t,s,a;return isNaN(e)?2139095041:isFinite(e)?0==e?1/e<0?2147483648:0:(e<0?(a=!0,n=-e):(a=!1,n=e),s=Math.floor(Math.log(n)/Math.log(2)),t=n/Math.pow(2,s),s>=128?a?4286578688:2139095040:(s<-126?(t*=Math.pow(2,126+s),s=0):0==s&&0==t||(s+=127,t-=1),(r=(t*=8388608)+.4999999999999999<<0)>=8388608&&(r=0,++s>=255)?a?4286578688:2139095040:a?(2147483648|s<<23|r)>>>0:s<<23|r)):e<0?4286578688:2139095040}e.set_string_table=de,e.set_iosys=he,e.stream_num=pe,e.stream_string=me,e.do_gestalt=function(e,n){switch(e){case 0:return 196866;case 1:return 131335;case 2:case 3:return 1;case 4:switch(n){case 0:case 1:case 2:return 1;default:return 0}case 5:case 6:case 7:return 1;case 8:return Ae;case 9:return 1;case 10:return ie[n]?1:0;case 11:return 1;default:return 0}},e.linear_search=function(e,n,r,t,s,a,o){var i,l,f,c,u=0!=(4&o),h=0!=(2&o),p=_e(e,n,o);for(l=0;le.length)return void r("IFF chunk header is truncated");var s=k(e,t,4),a=o(e,t+4);if((t+=8)+a>e.length)return void r(s+" chunk is truncated ("+a+" bytes needed, "+(e.length-t)+" available");n[s]=e.slice(t,t+a),1&(t+=a)&&(t+=1)}return n}function Ke(n,r){var t;if(n!=e.endmem){if(!r&&tn()&&G("Cannot resize Glulx memory space while heap is active."),ne.endmem)for(t=e.endmem;t=e.protectend)return null;for(var n=e.protectend-e.protectstart,r={start:e.protectstart,end:e.protectend,len:n},t=be.slice(e.protectstart,e.protectend);t.lengthe.endmem&&(o=e.endmem),r=0,t=a;t0}function sn(e,n){this.addr=e,this.size=n,this.end=e+n}function an(e,n){for(var r=0,t=e.length;r>1;e[s].addr0&&G("Heap inconsistency: usedlist nonempty"),void(We.length>0&&G("Heap inconsistency: usedlist nonempty"));0==Ae&&G("Heap inconsistency: heapstart is zero");for(var n=Ae,r=0,t=0;r0&&(n.push(0),n.push(t-1));r>24&255,s[a+1]=o>>16&255,s[a+2]=o>>8&255,s[a+3]=255&o,t.push({key:"CMem",chunk:i});var f=[];for(t.push({key:"Stks",chunk:f}),l=0;l0;)i=Glk.glk_get_buffer_stream(t,a),s=s.concat(a.slice(0,i));if(!(s=Ye(s)))return r("vm_restore failed: file is not Quetzal"),!1;if(!(s=s.FORM)||"IFZS"!=k(s,0,4))return r("vm _restore failed: file doesn't start with FORM/IFZS header"),!1;var l=Ye(s.slice(4));if(!l.IFhd)return r("vm_restore failed: missing required IFhd chunk"),!1;for(var f=0;f<128;f++)if(l.IFhd[f]!=qe[f])return r("vm_restore failed: this save image is for a different game"),!1;if(!l.CMem)return r("vm_restore failed: missing required CMem chunk"),!1;if(!l.Stks)return r("vm_restore failed: missing required Stks chunk"),!1;var c=en();rn();var u=o(l.CMem,0),d=l.CMem.slice(4);for(d=function(e){for(var n=[],r=0;r=8){Ae=o(p,0);var m=o(p,4);for(f=0;fe.endmem)&&G("vm_restore failed: corrupt dynamic heap"),g>v&&We.push(new sn(v,g-v)),v=g+_}v10&&Le.shift()},e.vm_restoreundo=function(){if(0==Le.length)return!1;var n=Le.pop(),r=en();return be=be.slice(0,Ce).concat(n.ram),e.endmem=n.endmem,ye=n.stack,e.frame=ye[ye.length-1],e.pc=n.pc,Ae=n.hea pstart,Ee=n.usedlist,We=n.freelist,nn(r),be.length!=e.endmem&&G("Memory length was incorrect after undo."),on(),!0},e.change_memsize=Ke,e.perform_verify=function(){var e,n,r,t=qe.length;if(t<256||0!=(255&t))return 1;if(t!=o(qe,12))return 1;for(n=-(r=o(qe,32))>>>0,e=0;e>>0;return n!=r?1:0},e.heap_malloc=function(n){tn()||(Ae=e.endmem);for(var r=0,t=We.length;r=n){s.size>n?We[r]=new sn(s.addr+n,s.size-n):We.splice(r,1);var a=an(Ee,s.addr);return Ee.splice(a,0,new sn(s.addr,n)),s.addr}}var o=e.endmem,i=n+255&4294967040;return Ke(e.endmem+i,!0),i>n&&We.push(new sn(o+n,i-n)),Ee.push(new sn(o,n)),o},e.heap_free=function(e){var n=an(Ee,e),r=Ee[n];if(r&&r.addr==e||G("Tried to free non-existent block"),Ee.splice(n,1),0==Ee.length)return Ke(Ae,!0),void rn();n=an(We,e);var t=We[n];t&&t.addr==r.end&&(r=new sn(e,r.size+t.size),We.splice(n,1));var s=We[n-1];s&&s.end==r.addr&&(r=new sn(s.addr,s.size+r.size),We.splice(n-1,1),n-=1),We.splice(n,0,r)},e.assert_heap_valid=on;var ln={map:{},functions:[],functionmap:{}};function fn(){var n,t,s,a,o;for(e.resumefuncop&&(!function(n,r){if(n)switch(n.mode){case 8:return void e.frame.valstack.push(r);case 0:return;case 11:return void(4==n.argsize?e.frame.locals[n.addr]=r:2==n.argsize?e.frame.locals[n.addr]=65535&r:e.frame.locals[n.addr]=255&r);case 15:return void(4==n.argsize?m(n.addr,r):2==n.argsize?p(n.addr,r):h(n.addr,r));default:G("Unknown addressing mode in store func by operand.")}}(e.resumefuncop,e.resumevalue),e.resumefuncop=null,e.resumevalue=0),a=(new Date).getTime();!e.done_executing;){void 0===(s=(t=(n=e.frame.vmfunc)[e.iosysmode])[e.pc])&&(n.pathaddrs[e.pc]=!0,s=$(n,e.pc,e.iosysmode),He++,e.pc=32&&e<127?34==e||39==e||92==e?"\\"+String.fromCharCode(e):String.fromCharCode(e):10==e?"\\n":"\\x"+s[e],a[e]=n}(),function(){function e(e,n){this.argsize=n||4,this.numops=e.length;for(var r=[],t=0;t=197120&&G("This Glulx file is too new a version to execute.");Ce=o(qe,8),Ge=o(qe,12),Ne=o(qe,16),o(qe,20),je=o(qe,24),Fe=o(qe,28),o(qe,32),e.protectstart=0,e.protectend=0,(Ce<256||Gee.endmem)&&G("vm_autorestore failed: corrupt dynamic heap"),o>l&&We.push(new sn(l,o-l)),l=o+i}l>4&15,resop:15&f(t+1)});if(a){var o={},i=e.frame.valstack,l=i.length;i.push(n),8==a.argsop&&i.push(1),8==a.selop&&i.push(192),i.push(0,0,e.prevpc,e.frame.framestart),o.ram=be.slice(Ce),o.endmem=e.endmem,o.pc=e.pc,o.stack=[];for(var c=0;c>> 0":e instanceof o?e.signed?"self.uncast_signed_char("+n+")":n+" & 0xFF":e instanceof l?'self.class_obj_to_id("'+e.name+'", '+n+")":"???"}function z(e){return 128&(e&=255)&&(e+=4294967040),e}function S(e,n){return n?n.disprock:0}function C(e,n){return 0!=n&&n?W[e][n]:null}e.arg_int_unsigned=h,e.arg_int_signed=p,e.arg_char_unsigned=m,e.arg_char_native=g,e.arg_char_signed=_,e.cast_signed_char=function(e){return 128&(e&=255)&&(e-=256),e},e.uncast_signed_char=z,e.class_obj_to_id=S,e.class_obj_from_id=C;var G={};var N=null,j=null,F=-1;e.set_blocked_selector=function(e,n){N=e,j=n.slice(0)};var L=[];e.temp_arg_arrays=L;var A=[];e.retained_arrays=A,e.make_arg_array=function(e,n,r,t){var s;e&&(s={arr:e,addr:n,len:r,arg:t},L.push(s))};var E,W={};return function(){var e;for(e in E=1+Math.round(1e3*Math.random()),n)W[n[e]]={}}(),{set_vm:function(n){e.VM=n},get_function:function(n){v ar r,t=G[n];if(void 0===t){if(void 0===(r=y[n]))throw new Error("dispatch: unknown Glk function: "+n);t=function(n){var r,t,d,h,p,m,g,_,v,w,k,b,y,z,S=[],C={},G=0;for(S.push("// no local vars"),S.push("// "+n.id+": "+n.name),h=null,(d=n.proto).retarg&&(h=d.retarg.arg),S.push("var self = this;"),z=Glk.call_may_not_return(n.id),p=0,m=[],r=0;r>>0,e.VM.WriteStructField(j[0],0,n.get_field(0)>>>0),e.VM.WriteStructFiel d(j[0],1,S(0,n.get_field(1))),e.VM.WriteStructField(j[0],2,n.get_field(2)>>>0),e.VM.WriteStructField(j[0],3,n.get_field(3)>>>0)):98==N&&e.VM.SetResumeStore(S(0,n)),N=null,j=null},check_autosave:function(){return 192==N&&j&&j.length>0&&(2==F||3==F||4==F||8==F)?j[0]:null},class_register:function(e,n,r){if(void 0===r){if(n.disprock)throw new Error("class_register: object is already registered");n.disprock=E,E++}else{if(n.disprock!=r)throw new Error("class_register: object is not already registered");E<=r&&(E=r+1)}W[e][n.disprock]=n},class_unregister:function(e,n){if(!n.disprock||void 0===W[e][n.disprock])throw new Error("class_unregister: object is not registered");delete W[e][n.disprock],n.disprock=void 0},class_obj_to_id:S,class_obj_from_id:C,retain_array:function(e,n){var r,t;if(e){if(void 0!==n){if(e!==n.arr)throw new Error("retain_array: array does not match useobj");if((t={addr:n.addr,len:n.len,arr:e,arg:d(n.arg)}).len!=e.length)throw new Error("retain_array: array length from useobj does not match")}else for(t=void 0,r=0;r>>0);else{if(!(s.arg instanceof o))throw new Error("unretain_array: unsupported refarg type");if(s.arg.signed)for(r=0,t=s.addr;r=208&&r<=217)){var t=e[n+0]<<8|e[n+1];if(r>=192&&r<=207&&200!=r){if(t<7)return void GlkOte.log("find_dimensions_jpeg: SOF block is too small");var s={};return s.height=e[n+3]<<8|e[n+4],s.width=e[n+5]<<8|e[n+6],s}n+=t}}return void GlkOte.log("find_dimensions_jpeg: no S OF marker found")}(n.content):"PNG "==n.type&&(s=function(e){var n=0;if(137!=e[0]||"PNG"!=String.fromCharCode.apply(this,e.slice(1,4)))return void GlkOte.log("find_dimensions_png: PNG signature does not match");n+=8;for(;n=e.length)break;if(s=e[t],t++,s<128)n=s;else{if(t>=e.length)break;if(a=e[t],t++,128!=(192&a))break;if(192==(224&s))n=(31&s)<<6,n|=63&a;else{if(t>=e.length)b reak;if(o=e[t],t++,128!=(192&o))break;if(224==(240&s))n=(15&s)<<12&61440,n|=(63&a)<<6&4032,n|=63&o;else{if(240!=(240&s))break;if(t>=e.length)break;if(i=e[t],t++,128!=(192&i))break;n=(7&s)<<18&1835008,n|=(63&a)<<12&258048,n|=(63&o)<<6&4032,n|=63&i}}}r.push(n)}return String.fromCharCode.apply(this,r)}if(window.atob)n=function(e){var n,r=atob(e),t=Array(r.length);for(n=0;n>4),r=((15&s)<<4)+((a=d[e.charAt(l++)])>>2),t=((3&a)<<6)+(o=d[e.charAt(l++)]),i.push(n,r,t);return 64==o&&i.pop(),64==a&&i.pop(),i}}function h(e){if(0!=e.length){if(70==e[0]&&79==e[1]&&82==e[2]&&77==e[3]){var n=String.fromCharCode(e[8],e[9],e[10],e[11]);if("IFZS"==n)return void r.io.fatal_error("This is a saved-game file, not a "+r.game_format_ name+" game file. You must launch the game first, then restore your save.");if("IFRS"!=n)return void r.io.fatal_error("This IFF file is not a Blorb file!");if(r.blorb_gamechunk_type)try{e=function(e,n){for(var t,l=e.length,f=[],c=null,d=12;d").html(w).find("bibliographic").children();if(k.length)for(t=0;t>2&63)),a.push(s.charAt(n<<4&48|r>>4&15)),a.push(s.charAt(r<<2&60|t>>6&3)),a.push(s.charAt(63&t));return void 0===r&&a.length>=2&&(a[a.length-2]="="),void 0===t&&a.length>=1&&(a[a.length-1]="="),a.join("")},{load_run:function(e,s,a){a?"string"==typeof a&&(a={format:a}):a={};var o=a.format;if(o||(o="array"),r.io=window.Glk,r.vm=window.Quixe,e||(e=window.game_options),!e||!window.Quixe||e.vm&&e.vm!==window.Quixe||(r.engine_name="Quixe",r.blorb_gamechunk_type="GLUL",r.game_format_name="Glulx"),e&&jQuery.extend(r,e),null!=r.image_info_map&&"string"===jQuery.type(r.image_info_map)&&(window[r.image_info_map]?r.image_info_map=window[r.image_info_map]:delete r.image_info_map),t=null,r.use_query_story){var i=function(){var e={},n=location.search.substring(1,location.sea rch.length);if(n.length){var r=n.split("&");n=n.replace(/\+/g," ");for(var t=0;t element!");var b=$("