{eval(readFile("Compiled_JavaScript_Compiler"));userNs=["getp",["string","userNs"],["get","NS"]];NSJSParser=JSParser.delegated({"isKeyword":function(){var $elf=this,x;return (function(){x=$elf._apply("anything");return $elf._or((function(){return $elf._pred((x == "once"))}),(function(){return JSParser._superApplyWithArgs($elf,"isKeyword",x)}))})()},"ns":function(){var $elf=this,e;return (function(){$elf._applyWithArgs("token","[");e=$elf._apply("expr");$elf._applyWithArgs("token","]");return e})()},"stmt":function(){var $elf=this,n,c,s,n,n,n,t,e,c,f,n,e,t;return $elf._or((function(){return (function(){$elf._applyWithArgs("token","while");n=$elf._or((function(){return $elf._apply("ns")}),(function(){return (function(){$elf._apply("empty");return userNs})()}));$elf._applyWithArgs("token","(");c=$elf._apply("expr");$elf._applyWithArgs("token",")");s=$elf._apply("stmt");return ["begin",["while",c,["namespace",n,s]],["do_or_propagate"]]})()}),(function(){return (function(){$elf._applyWithArgs("token","break");n=$elf._or((function(){return $elf._apply("ns")}),(function(){return (function(){$elf._apply("empty");return userNs})()}));$elf._apply("sc");return ["break",n]})()}),(function(){return (function(){$elf._applyWithArgs("token","continue");n=$elf._or((function(){return $elf._apply("ns")}),(function(){return (function(){$elf._apply("empty");return userNs})()}));$elf._apply("sc");return ["continue",n]})()}),(function(){return (function(){$elf._applyWithArgs("token","try");n=$elf._or((function(){return $elf._apply("ns")}),(function(){return (function(){$elf._apply("empty");return userNs})()}));t=$elf._apply("block");$elf._applyWithArgs("token","catch");$elf._applyWithArgs("token","(");e=$elf._applyWithArgs("token","name");$elf._applyWithArgs("token",")");c=$elf._apply("block");f=$elf._or((function(){return (function(){$elf._applyWithArgs("token","finally");return $elf._apply("block")})()}),(function(){return (function(){$elf._apply("empty");return ["get","undefined"]})()}));return ["try",["namespace",n,t],e,["begin",["do_or_propagate"],c],f]})()}),(function(){return (function(){$elf._applyWithArgs("token","throw");n=$elf._or((function(){return $elf._apply("ns")}),(function(){return (function(){$elf._apply("empty");return userNs})()}));$elf._apply("spacesNoNl");e=$elf._apply("expr");$elf._apply("sc");return ["throw",n,e]})()}),(function(){return (function(){$elf._applyWithArgs("token","once");t=$elf._apply("block");return ["once",t]})()}),(function(){return (function(){$elf._not(function(){return $elf._or((function(){return $elf._applyWithArgs("token","while")}),(function(){return $elf._applyWithArgs("token","break")}),(function(){return $elf._applyWithArgs("token","continue")}),(function(){return $elf._applyWithArgs("token","try")}),(function(){return $elf._applyWithArgs("token","throw")}))});return JSParser._superApplyWithArgs($elf,'stmt')})()}))},"funcRest":function(){var $elf=this,fs,body;return (function(){$elf._applyWithArgs("token","(");fs=$elf._applyWithArgs("listOf","formal",",");$elf._applyWithArgs("token",")");$elf._applyWithArgs("token","{");body=$elf._apply("srcElems");$elf._applyWithArgs("token","}");return ["func",fs,["begin",["once",body]]]})()},"primExprHd":function(){var $elf=this;return $elf._or((function(){return (function(){$elf._applyWithArgs("token","any");return ["any"]})()}),(function(){return JSParser._superApplyWithArgs($elf,'primExprHd')}))},"topLevel":function(){var $elf=this,r;return (function(){r=$elf._apply("srcElems");$elf._apply("spaces");$elf._apply("end");return ["once",r]})()}});do_or_propagate_str=((((((((((((((("if (NS.in_progress) {\n" + "if (NS.workinglist.length == 1)") + "throw \"Unhandled namespace : \" + NS.what\n") + "if (NS.current == NS.destination) {\n") + "NS.in_progress = false\n") + "if (NS.action == \"break\") break\n") + "if (NS.action == \"continue\") continue\n") + "if (NS.action == \"throw\") throw NS.parameter\n") + "if (NS.action == \"nothing\") {}\n") + "} else {\n") + "if (NS.propagate == \"break\") break\n") + "if (NS.propagate == \"continue\") continue\n") + "if (NS.propagate == \"throw\") throw NS.parameter\n") + "if (NS.propagate == \"nothing\") {}\n") + "}\n") + "}\n");NSJSTranslator=JSTranslator.delegated({"do_or_propagate":function(){var $elf=this;return do_or_propagate_str},"namespace":function(){var $elf=this,n,s;return (function(){n=$elf._apply("trans");s=$elf._apply("trans");return ((((((((((("try {\n" + "NS.workinglist.push(") + n) + ")\n") + "NS.current = ") + n) + "\n") + s) + "} finally {\n") + "NS.workinglist.pop()\n") + "NS.current = NS.workinglist[NS.workinglist.length-1]\n") + "}\n")})()},"break":function(){var $elf=this,n;return (function(){n=$elf._apply("trans");return ((((((("NS.destination = " + n) + "\n") + "NS.action = \"break\"\n") + "NS.propagate = \"break\"\n") + "NS.in_progress = true\n") + "NS.what = \"break \" + NS.destination\n") + do_or_propagate_str)})()},"continue":function(){var $elf=this,n;return (function(){n=$elf._apply("trans");return ((((((("NS.destination = " + n) + "\n") + "NS.action = \"continue\"\n") + "NS.propagate = \"break\"\n") + "NS.in_progress = true\n") + "NS.what = \"continue \" + NS.destination\n") + do_or_propagate_str)})()},"throw":function(){var $elf=this,n,c;return (function(){n=$elf._apply("trans");c=$elf._apply("trans");return (((((((((("NS.destination = " + n) + "\n") + "NS.action = \"throw\"\n") + "NS.propagate = \"throw\"\n") + "NS.in_progress = true\n") + "NS.parameter = ") + c) + "\n") + "NS.what = \"throw \" + NS.destination + \" \" + NS.parameter\n") + do_or_propagate_str)})()},"once":function(){var $elf=this,s;return (function(){s=$elf._apply("trans");return (("do {\n" + s) + "}while (false);")})()}});NS=({"end_normally": false,"workinglist": [new Object()],"current": new Object(),"destination": ({}),"action": "","propagate": "","what": "","parameter": "","in_progress": false,"debugMode": true,"userNs": new Object()})}