Comparing version 2.9.12 to 2.9.19
@@ -1,1 +0,1 @@ | ||
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";function peg$SyntaxError(message,expected,found,location){this.message=message,this.expected=expected,this.found=found,this.location=location,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}!function(child,parent){function ctor(){this.constructor=child}ctor.prototype=parent.prototype,child.prototype=new ctor}(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(expected,found){function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase()}function literalEscape(s){return s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return"\\x"+hex(ch)})}function classEscape(s){return s.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return"\\x"+hex(ch)})}function describeExpectation(expectation){return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation)}var DESCRIBE_EXPECTATION_FNS={literal:function(expectation){return'"'+literalEscape(expectation.text)+'"'},class:function(expectation){var i,escapedParts="";for(i=0;i<expectation.parts.length;i++)escapedParts+=expectation.parts[i]instanceof Array?classEscape(expectation.parts[i][0])+"-"+classEscape(expectation.parts[i][1]):classEscape(expectation.parts[i]);return"["+(expectation.inverted?"^":"")+escapedParts+"]"},any:function(expectation){return"any character"},end:function(expectation){return"end of input"},other:function(expectation){return expectation.description}};return"Expected "+function(expected){var i,j,descriptions=new Array(expected.length);for(i=0;i<expected.length;i++)descriptions[i]=describeExpectation(expected[i]);if(descriptions.sort(),descriptions.length>0){for(i=1,j=1;i<descriptions.length;i++)descriptions[i-1]!==descriptions[i]&&(descriptions[j]=descriptions[i],j++);descriptions.length=j}switch(descriptions.length){case 1:return descriptions[0];case 2:return descriptions[0]+" or "+descriptions[1];default:return descriptions.slice(0,-1).join(", ")+", or "+descriptions[descriptions.length-1]}}(expected)+" but "+function(found){return found?'"'+literalEscape(found)+'"':"end of input"}(found)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:function(input,options){function peg$literalExpectation(text,ignoreCase){return{type:"literal",text:text,ignoreCase:ignoreCase}}function peg$classExpectation(parts,inverted,ignoreCase){return{type:"class",parts:parts,inverted:inverted,ignoreCase:ignoreCase}}function peg$otherExpectation(description){return{type:"other",description:description}}function peg$computePosDetails(pos){var p,details=peg$posDetailsCache[pos];if(details)return details;for(p=pos-1;!peg$posDetailsCache[p];)p--;for(details={line:(details=peg$posDetailsCache[p]).line,column:details.column};p<pos;)10===input.charCodeAt(p)?(details.line++,details.column=1):details.column++,p++;return peg$posDetailsCache[pos]=details,details}function peg$computeLocation(startPos,endPos){var startPosDetails=peg$computePosDetails(startPos),endPosDetails=peg$computePosDetails(endPos);return{start:{offset:startPos,line:startPosDetails.line,column:startPosDetails.column},end:{offset:endPos,line:endPosDetails.line,column:endPosDetails.column}}}function peg$fail(expected){peg$currPos<peg$maxFailPos||(peg$currPos>peg$maxFailPos&&(peg$maxFailPos=peg$currPos,peg$maxFailExpected=[]),peg$maxFailExpected.push(expected))}function peg$buildStructuredError(expected,found,location){return new peg$SyntaxError(peg$SyntaxError.buildMessage(expected,found),expected,found,location)}function peg$parseDocument(){var s0,s2;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseTermList())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c0(s2)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGvizShape(){var s0;return input.substr(peg$currPos,6)===peg$c1?(s0=peg$c1,peg$currPos+=6):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c2)),s0===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c3?(s0=peg$c3,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c4)),s0===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c5?(s0=peg$c5,peg$currPos+=6):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c6)))),s0}function peg$parseForwardArrow(){var s0;return peg$silentFails++,input.substr(peg$currPos,2)===peg$c8?(s0=peg$c8,peg$currPos+=2):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c9)),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c7),s0}function peg$parseTwoWayArrow(){var s0;return peg$silentFails++,input.substr(peg$currPos,3)===peg$c11?(s0=peg$c11,peg$currPos+=3):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c12)),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c10),s0}function peg$parseArrow(){var s0;return(s0=peg$parseForwardArrow())===peg$FAILED&&(s0=peg$parseTwoWayArrow()),s0}function peg$parseHexDigit(){var s0;return peg$c13.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c14)),s0}function peg$parseChar(){var s0,s2,s3,s4,s5,s6,s7,s8,s9;return(s0=peg$parseUnescaped())===peg$FAILED&&(s0=peg$currPos,peg$parseEscape()!==peg$FAILED?(34===input.charCodeAt(peg$currPos)?(s2=peg$c15,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c16)),s2===peg$FAILED&&(92===input.charCodeAt(peg$currPos)?(s2=peg$c17,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c18)),s2===peg$FAILED&&(47===input.charCodeAt(peg$currPos)?(s2=peg$c19,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c20)),s2===peg$FAILED&&(s2=peg$currPos,98===input.charCodeAt(peg$currPos)?(s3=peg$c21,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c22)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c23()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,102===input.charCodeAt(peg$currPos)?(s3=peg$c24,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c25)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c26()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,110===input.charCodeAt(peg$currPos)?(s3=peg$c27,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c28)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c29()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,114===input.charCodeAt(peg$currPos)?(s3=peg$c30,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c31)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c32()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,116===input.charCodeAt(peg$currPos)?(s3=peg$c33,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c34)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,118===input.charCodeAt(peg$currPos)?(s3=peg$c36,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c37)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c38()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,117===input.charCodeAt(peg$currPos)?(s3=peg$c39,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c40)),s3!==peg$FAILED?(s4=peg$currPos,s5=peg$currPos,(s6=peg$parseHexDigit())!==peg$FAILED&&(s7=peg$parseHexDigit())!==peg$FAILED&&(s8=peg$parseHexDigit())!==peg$FAILED&&(s9=peg$parseHexDigit())!==peg$FAILED?s5=s6=[s6,s7,s8,s9]:(peg$currPos=s5,s5=peg$FAILED),(s4=s5!==peg$FAILED?input.substring(s4,peg$currPos):s5)!==peg$FAILED?(peg$savedPos=s2,s2=s3=peg$c41(s4)):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED)))))))))),s2!==peg$FAILED?(peg$savedPos=s0,s0=peg$c42(s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseEscape(){var s0;return 92===input.charCodeAt(peg$currPos)?(s0=peg$c17,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c18)),s0}function peg$parseQuoteMark(){var s0;return 34===input.charCodeAt(peg$currPos)?(s0=peg$c15,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c16)),s0}function peg$parseUnescaped(){var s0;return peg$c43.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c44)),s0}function peg$parseActionLabelChar(){var s0,s2,s3,s4,s5,s6,s7,s8,s9;return(s0=peg$parseActionLabelUnescaped())===peg$FAILED&&(s0=peg$currPos,peg$parseEscape()!==peg$FAILED?(96===input.charCodeAt(peg$currPos)?(s2=peg$c45,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c46)),s2===peg$FAILED&&(92===input.charCodeAt(peg$currPos)?(s2=peg$c17,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c18)),s2===peg$FAILED&&(47===input.charCodeAt(peg$currPos)?(s2=peg$c19,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c20)),s2===peg$FAILED&&(s2=peg$currPos,98===input.charCodeAt(peg$currPos)?(s3=peg$c21,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c22)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c23()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,102===input.charCodeAt(peg$currPos)?(s3=peg$c24,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c25)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c26()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,110===input.charCodeAt(peg$currPos)?(s3=peg$c27,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c28)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c29()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,114===input.charCodeAt(peg$currPos)?(s3=peg$c30,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c31)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c32()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,116===input.charCodeAt(peg$currPos)?(s3=peg$c33,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c34)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,118===input.charCodeAt(peg$currPos)?(s3=peg$c36,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c37)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c38()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,117===input.charCodeAt(peg$currPos)?(s3=peg$c39,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c40)),s3!==peg$FAILED?(s4=peg$currPos,s5=peg$currPos,(s6=peg$parseHexDigit())!==peg$FAILED&&(s7=peg$parseHexDigit())!==peg$FAILED&&(s8=peg$parseHexDigit())!==peg$FAILED&&(s9=peg$parseHexDigit())!==peg$FAILED?s5=s6=[s6,s7,s8,s9]:(peg$currPos=s5,s5=peg$FAILED),(s4=s5!==peg$FAILED?input.substring(s4,peg$currPos):s5)!==peg$FAILED?(peg$savedPos=s2,s2=s3=peg$c41(s4)):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED)))))))))),s2!==peg$FAILED?(peg$savedPos=s0,s0=peg$c42(s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseActionLabelQuoteMark(){var s0;return 96===input.charCodeAt(peg$currPos)?(s0=peg$c45,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c46)),s0}function peg$parseActionLabelUnescaped(){var s0;return peg$c47.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c48)),s0}function peg$parseActionLabel(){var s0,s2,s3;if(peg$silentFails++,s0=peg$currPos,peg$parseActionLabelQuoteMark()!==peg$FAILED){for(s2=[],s3=peg$parseActionLabelChar();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseActionLabelChar();s2!==peg$FAILED&&(s3=peg$parseActionLabelQuoteMark())!==peg$FAILED?(peg$savedPos=s0,s0=peg$c50(s2)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c49),s0}function peg$parseWhitespace(){var s0,s1;for(peg$silentFails++,s0=[],peg$c52.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c53));s1!==peg$FAILED;)s0.push(s1),peg$c52.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c53));return peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c51)),s0}function peg$parseString(){var s0,s2,s3;if(peg$silentFails++,s0=peg$currPos,peg$parseQuoteMark()!==peg$FAILED){for(s2=[],s3=peg$parseChar();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseChar();s2!==peg$FAILED&&(s3=peg$parseQuoteMark())!==peg$FAILED?(peg$savedPos=s0,s0=peg$c50(s2)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c54),s0}function peg$parseAtom(){var s0,s1,s2;if(peg$silentFails++,s0=peg$currPos,s1=[],peg$c56.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c57)),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),peg$c56.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c57));else s1=peg$FAILED;return s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c58(s1)),s0=s1,peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c55)),s0}function peg$parseLabel(){var s0;return peg$silentFails++,(s0=peg$parseAtom())===peg$FAILED&&(s0=peg$parseString()),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c59),s0}function peg$parseArrowItemKey(){var s0;return input.substr(peg$currPos,9)===peg$c60?(s0=peg$c60,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c61)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c62?(s0=peg$c62,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c63)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c64?(s0=peg$c64,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c65)))),s0}function peg$parseArrowItem(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseArrowItemKey())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c70(s2,s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseArrowItems(){var s0,s1;if(s0=[],(s1=peg$parseArrowItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseArrowItem();else s0=peg$FAILED;return s0}function peg$parseArrowDesc(){var s0,s1,s3,s5;return s0=peg$currPos,123===input.charCodeAt(peg$currPos)?(s1=peg$c71,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s1!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s3=peg$parseArrowItems())===peg$FAILED&&(s3=null),s3!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(125===input.charCodeAt(peg$currPos)?(s5=peg$c73,peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c74)),s5!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c75(s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSubexp(){var s0,s2,s4,s6,s8,s10,s12,s14;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?((s2=peg$parseActionLabel())===peg$FAILED&&(s2=null),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s4=peg$parseArrowDesc())===peg$FAILED&&(s4=null),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseArrow())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseArrowDesc())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s10=peg$parseActionLabel())===peg$FAILED&&(s10=null),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s12=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s14=peg$parseSubexp())===peg$FAILED&&(s14=null),s14!==peg$FAILED?(peg$savedPos=s0,s0=peg$c76(s2,s4,s6,s8,s10,s12,s14)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseExp(){var s0,s1,s2,s4;return s0=peg$currPos,(s1=peg$parseLabel())!==peg$FAILED&&(s2=peg$parseSubexp())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c77(s1,s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseValidationKey(){var s0;return input.substr(peg$currPos,9)===peg$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),s0}function peg$parseValidationItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseValidationKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c82(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseValidationItems(){var s0,s1;if(s0=[],(s1=peg$parseValidationItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseValidationItem();else s0=peg$FAILED;return s0}function peg$parseConfigValidation(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c83?(s2=peg$c83,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c84)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseValidationItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c87(s8)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGvizLayout(){var s0;return input.substr(peg$currPos,3)===peg$c88?(s0=peg$c88,peg$currPos+=3):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c89)),s0===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c90?(s0=peg$c90,peg$currPos+=5):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c91))),s0}function peg$parseStateItemShapeKey(){var s0;return input.substr(peg$currPos,8)===peg$c92?(s0=peg$c92,peg$currPos+=8):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c93)),s0===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c94?(s0=peg$c94,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c95)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c96?(s0=peg$c96,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c97)))),s0}function peg$parseStateItemShape(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseStateItemShapeKey())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c70(s2,s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseStateItemGraphLayout(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,12)===peg$c98?(s2=peg$c98,peg$currPos+=12):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c99)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizLayout())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c100(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseStateItem(){var s0;return(s0=peg$parseStateItemShape())===peg$FAILED&&(s0=peg$parseStateItemGraphLayout()),s0}function peg$parseStateItems(){var s0,s1;if(s0=[],(s1=peg$parseStateItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseStateItem();else s0=peg$FAILED;return s0}function peg$parseConfigState(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c101?(s2=peg$c101,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c102)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseStateItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c103(s8)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseActionKey(){var s0;return input.substr(peg$currPos,9)===peg$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),s0}function peg$parseActionItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseActionKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c104(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseActionItems(){var s0,s1;if(s0=[],(s1=peg$parseActionItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseActionItem();else s0=peg$FAILED;return s0}function peg$parseConfigAction(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,6)===peg$c105?(s2=peg$c105,peg$currPos+=6):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c106)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseActionItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c107(s8)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTransitionKey(){var s0;return input.substr(peg$currPos,9)===peg$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),s0}function peg$parseTransitionItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseTransitionKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c108(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTransitionItems(){var s0,s1;if(s0=[],(s1=peg$parseTransitionItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseTransitionItem();else s0=peg$FAILED;return s0}function peg$parseConfigTransition(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c109?(s2=peg$c109,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c110)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseTransitionItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c111(s8)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGraphBg(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,8)===peg$c112?(s2=peg$c112,peg$currPos+=8):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c113)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c114(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseMinTransitionsPerState(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,25)===peg$c115?(s2=peg$c115,peg$currPos+=25):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c116)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c117(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseMaxTransitionsPerState(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,25)===peg$c118?(s2=peg$c118,peg$currPos+=25):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c119)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c120(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGraphItem(){var s0;return(s0=peg$parseGraphBg())===peg$FAILED&&(s0=peg$parseMinTransitionsPerState())===peg$FAILED&&(s0=peg$parseMaxTransitionsPerState()),s0}function peg$parseGraphItems(){var s0,s1;if(s0=[],(s1=peg$parseGraphItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseGraphItem();else s0=peg$FAILED;return s0}function peg$parseConfigGraph(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c121?(s2=peg$c121,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c122)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseGraphItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c123(s8)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseConfig(){var s0;return(s0=peg$parseConfigGraph())===peg$FAILED&&(s0=peg$parseConfigTransition())===peg$FAILED&&(s0=peg$parseConfigAction())===peg$FAILED&&(s0=peg$parseConfigState())===peg$FAILED&&(s0=peg$parseConfigValidation()),s0}function peg$parseTerm(){var s0;return(s0=peg$parseExp())===peg$FAILED&&(s0=peg$parseConfig()),s0}function peg$parseTermList(){var s0,s1;for(s0=[],s1=peg$parseTerm();s1!==peg$FAILED;)s0.push(s1),s1=peg$parseTerm();return s0}options=void 0!==options?options:{};var peg$result,peg$FAILED={},peg$startRuleFunctions={Document:peg$parseDocument},peg$startRuleFunction=peg$parseDocument,peg$c0=function(e){return e},peg$c1="square",peg$c2=peg$literalExpectation("square",!1),peg$c3="rectangle",peg$c4=peg$literalExpectation("rectangle",!1),peg$c5="circle",peg$c6=peg$literalExpectation("circle",!1),peg$c7=peg$otherExpectation("forward arrow"),peg$c8="->",peg$c9=peg$literalExpectation("->",!1),peg$c10=peg$otherExpectation("two way arrow"),peg$c11="<->",peg$c12=peg$literalExpectation("<->",!1),peg$c13=/^[0-9a-fA-F]/,peg$c14=peg$classExpectation([["0","9"],["a","f"],["A","F"]],!1,!1),peg$c15='"',peg$c16=peg$literalExpectation('"',!1),peg$c17="\\",peg$c18=peg$literalExpectation("\\",!1),peg$c19="/",peg$c20=peg$literalExpectation("/",!1),peg$c21="b",peg$c22=peg$literalExpectation("b",!1),peg$c23=function(){return"\b"},peg$c24="f",peg$c25=peg$literalExpectation("f",!1),peg$c26=function(){return"\f"},peg$c27="n",peg$c28=peg$literalExpectation("n",!1),peg$c29=function(){return"\n"},peg$c30="r",peg$c31=peg$literalExpectation("r",!1),peg$c32=function(){return"\r"},peg$c33="t",peg$c34=peg$literalExpectation("t",!1),peg$c35=function(){return"\t"},peg$c36="v",peg$c37=peg$literalExpectation("v",!1),peg$c38=function(){return"\v"},peg$c39="u",peg$c40=peg$literalExpectation("u",!1),peg$c41=function(digits){return String.fromCharCode(parseInt(digits,16))},peg$c42=function(Sequence){return Sequence},peg$c43=/^[ -!#-[\]-\u10FFFF]/,peg$c44=peg$classExpectation([[" ","!"],["#","["],["]","ჿ"],"F","F"],!1,!1),peg$c45="`",peg$c46=peg$literalExpectation("`",!1),peg$c47=/^[ -[\]-_a-\u10FFFF]/,peg$c48=peg$classExpectation([[" ","["],["]","_"],["a","ჿ"],"F","F"],!1,!1),peg$c49=peg$otherExpectation("action label"),peg$c50=function(chars){return chars.join("")},peg$c51=peg$otherExpectation("whitespace"),peg$c52=/^[ \t\n\r\x0B]/,peg$c53=peg$classExpectation([" ","\t","\n","\r","\v"],!1,!1),peg$c54=peg$otherExpectation("string"),peg$c55=peg$otherExpectation("atom"),peg$c56=/^[0-9a-zA-Z.+_&()%$#@!?,']/,peg$c57=peg$classExpectation([["0","9"],["a","z"],["A","Z"],".","+","_","&","(",")","%","$","#","@","!","?",",","'"],!1,!1),peg$c58=function(text){return text.join("")},peg$c59=peg$otherExpectation("label"),peg$c60="arc_label",peg$c61=peg$literalExpectation("arc_label",!1),peg$c62="head_label",peg$c63=peg$literalExpectation("head_label",!1),peg$c64="tail_label",peg$c65=peg$literalExpectation("tail_label",!1),peg$c66=":",peg$c67=peg$literalExpectation(":",!1),peg$c68=";",peg$c69=peg$literalExpectation(";",!1),peg$c70=function(key,value){return{key:key,value:value}},peg$c71="{",peg$c72=peg$literalExpectation("{",!1),peg$c73="}",peg$c74=peg$literalExpectation("}",!1),peg$c75=function(items){return items},peg$c76=function(lactl,ldesc,arrow,rdesc,ractl,label,tail){var base={kind:arrow,to:label};return tail&&tail!==[]&&(base.se=tail),ldesc&&(base.ldesc=ldesc),rdesc&&(base.rdesc=rdesc),base},peg$c77=function(label,se){var base={from:label};return se&&se!==[]&&(base.se=se),base},peg$c78="whargarbl",peg$c79=peg$literalExpectation("whargarbl",!1),peg$c80="todo",peg$c81=peg$literalExpectation("todo",!1),peg$c82=function(validationkey,value){return{key:validationkey,value:value}},peg$c83="validation",peg$c84=peg$literalExpectation("validation",!1),peg$c85="};",peg$c86=peg$literalExpectation("};",!1),peg$c87=function(validation_items){return{config_kind:"validation",config_items:validation_items||[]}},peg$c88="dot",peg$c89=peg$literalExpectation("dot",!1),peg$c90="circo",peg$c91=peg$literalExpectation("circo",!1),peg$c92="in_shape",peg$c93=peg$literalExpectation("in_shape",!1),peg$c94="out_shape",peg$c95=peg$literalExpectation("out_shape",!1),peg$c96="node_shape",peg$c97=peg$literalExpectation("node_shape",!1),peg$c98="graph_layout",peg$c99=peg$literalExpectation("graph_layout",!1),peg$c100=function(value){return{key:"graph_layout",value:value}},peg$c101="state",peg$c102=peg$literalExpectation("state",!1),peg$c103=function(state_items){return{config_kind:"state",config_items:state_items||[]}},peg$c104=function(actionkey,value){return{key:actionkey,value:value}},peg$c105="action",peg$c106=peg$literalExpectation("action",!1),peg$c107=function(action_items){return{config_kind:"action",config_items:action_items||[]}},peg$c108=function(transitionkey,value){return{key:transitionkey,value:value}},peg$c109="transition",peg$c110=peg$literalExpectation("transition",!1),peg$c111=function(transition_items){return{config_kind:"transition",config_items:transition_items||[]}},peg$c112="graph_bg",peg$c113=peg$literalExpectation("graph_bg",!1),peg$c114=function(value){return{key:"graph_bg",value:value}},peg$c115="min_transitions_per_state",peg$c116=peg$literalExpectation("min_transitions_per_state",!1),peg$c117=function(value){return{key:"min_transitions_per_state",value:value}},peg$c118="max_transitions_per_state",peg$c119=peg$literalExpectation("max_transitions_per_state",!1),peg$c120=function(value){return{key:"max_transitions_per_state",value:value}},peg$c121="graph",peg$c122=peg$literalExpectation("graph",!1),peg$c123=function(graph_items){return{config_kind:"graph",config_items:graph_items||[]}},peg$currPos=0,peg$savedPos=0,peg$posDetailsCache=[{line:1,column:1}],peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0;if("startRule"in options){if(!(options.startRule in peg$startRuleFunctions))throw new Error("Can't start parsing from rule \""+options.startRule+'".');peg$startRuleFunction=peg$startRuleFunctions[options.startRule]}if((peg$result=peg$startRuleFunction())!==peg$FAILED&&peg$currPos===input.length)return peg$result;throw peg$result!==peg$FAILED&&peg$currPos<input.length&&peg$fail({type:"end"}),peg$buildStructuredError(peg$maxFailExpected,peg$maxFailPos<input.length?input.charAt(peg$maxFailPos):null,peg$maxFailPos<input.length?peg$computeLocation(peg$maxFailPos,peg$maxFailPos+1):peg$computeLocation(peg$maxFailPos,peg$maxFailPos))}}},{}],2:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},weighted_rand_select=function(options){var probability_property=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"probability";if(!Array.isArray(options))throw new TypeError("options must be a non-empty array of objects");if("object"!==_typeof(options[0]))throw new TypeError("options must be a non-empty array of objects");for(var rnd=function(cap){return Math.random()*cap}(options.reduce(function(acc,val){return acc+val[probability_property]},0)),cursor=0,cursor_sum=0;(cursor_sum+=options[cursor++][probability_property])<=rnd;);return options[cursor-1]},seq=function(n){return new Array(n).fill(!0).map(function(_,i){return i})},histograph=function(a){return a.sort().reduce(function(m,v){return m.set(v,m.has(v)?m.get(v)+1:1),m},new Map)},weighted_sample_select=function(n,options,probability_property){return seq(n).map(function(i){return weighted_rand_select(options,probability_property)})};exports.seq=seq,exports.histograph=histograph,exports.weighted_histo_key=function(n,options,probability_property,extract){return histograph(weighted_sample_select(n,options,probability_property).map(function(s){return s[extract]}))},exports.weighted_rand_select=weighted_rand_select,exports.weighted_sample_select=weighted_sample_select},{}],jssm:[function(require,module,exports){"use strict";function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2}return Array.from(arr)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0}),exports.weighted_histo_key=exports.weighted_sample_select=exports.histograph=exports.weighted_rand_select=exports.seq=exports.parse=exports.machine=exports.version=void 0;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_jssmUtil=require("./jssm-util.js"),parse=require("./jssm-dot.js").parse,machine=function(){function machine(_ref){var _this=this,initial_state=_ref.initial_state,_ref$complete=_ref.complete,complete=void 0===_ref$complete?[]:_ref$complete,transitions=_ref.transitions;_classCallCheck(this,machine),this._state=initial_state,this._states=new Map,this._edges=[],this._edge_map=new Map,this._named_transitions=new Map,this._actions=new Map,this._reverse_actions=new Map,this._reverse_action_targets=new Map,transitions.map(function(tr){if(void 0===tr.from)throw new Error("transition must define 'from': "+JSON.stringify(tr));if(void 0===tr.to)throw new Error("transition must define 'to': "+JSON.stringify(tr));var cursor_from=_this._states.get(tr.from);void 0===cursor_from&&(_this._new_state({name:tr.from,from:[],to:[],complete:complete.includes(tr.from)}),cursor_from=_this._states.get(tr.from));var cursor_to=_this._states.get(tr.to);if(void 0===cursor_to&&(_this._new_state({name:tr.to,from:[],to:[],complete:complete.includes(tr.to)}),cursor_to=_this._states.get(tr.to)),cursor_from.to.includes(tr.to))throw new Error("already has "+tr.from+" to "+tr.to);cursor_from.to.push(tr.to),cursor_to.from.push(tr.from),_this._edges.push(tr);var thisEdgeId=_this._edges.length-1;if(tr.name){if(_this._named_transitions.has(tr.name))throw new Error('named transition "'+tr.name+'" already created');_this._named_transitions.set(tr.name,thisEdgeId)}var from_mapping=_this._edge_map.get(tr.from);void 0===from_mapping&&(_this._edge_map.set(tr.from,new Map),from_mapping=_this._edge_map.get(tr.from));from_mapping.get(tr.to);if(from_mapping.set(tr.to,thisEdgeId),tr.action){_this._actions.has(tr.action)||_this._actions.set(tr.action,new Map);var actionMap=_this._actions.get(tr.action);if(!actionMap)throw new Error("should be impossible, satisfying type checker that doesn't know .set precedes .get. severe error?");if(actionMap.has(tr.from))throw new Error("action "+tr.action+" already attached to origin "+tr.from);actionMap.set(tr.from,thisEdgeId),_this._reverse_actions.has(tr.from)||_this._reverse_actions.set(tr.from,new Map);var rActionMap=_this._reverse_actions.get(tr.from);if(!rActionMap)throw new Error("should be impossible, satisfying type checker that doesn't know .set precedes .get again. severe error?");if(rActionMap.has(tr.action))throw new Error("r-action "+tr.from+" already attached to action "+tr.action);rActionMap.set(tr.action,thisEdgeId),_this._reverse_action_targets.has(tr.to)||_this._reverse_action_targets.set(tr.to,new Map)}})}return _createClass(machine,[{key:"_new_state",value:function(state_config){if(this._states.has(state_config.name))throw new Error("state "+state_config.name+" already exists");return this._states.set(state_config.name,state_config),state_config.name}},{key:"state",value:function(){return this._state}},{key:"is_changing",value:function(){return!0}},{key:"state_is_final",value:function(whichState){return this.state_is_terminal(whichState)&&this.state_is_complete(whichState)}},{key:"is_final",value:function(){return!this.is_changing()&&this.state_is_final(this.state())}},{key:"machine_state",value:function(){return{internal_state_impl_version:1,actions:this._actions,edge_map:this._edge_map,edges:this._edges,named_transitions:this._named_transitions,reverse_actions:this._reverse_actions,state:this._state,states:this._states}}},{key:"load_machine_state",value:function(){return!1}},{key:"states",value:function(){return[].concat(_toConsumableArray(this._states.keys()))}},{key:"state_for",value:function(whichState){var state=this._states.get(whichState);if(state)return state;throw new Error("no such state "+JSON.stringify(state))}},{key:"list_edges",value:function(){return this._edges}},{key:"list_named_transitions",value:function(){return this._named_transitions}},{key:"list_actions",value:function(){return[].concat(_toConsumableArray(this._actions.keys()))}},{key:"get_transition_by_state_names",value:function(from,to){return this._edge_map.has(from)?this._edge_map.get(from).get(to):void 0}},{key:"lookup_transition_for",value:function(from,to){var id=this.get_transition_by_state_names(from,to);return void 0===id?void 0:this._edges[id]}},{key:"list_transitions",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return{entrances:this.list_entrances(whichState),exits:this.list_exits(whichState)}}},{key:"list_entrances",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return(this._states.get(whichState)||{}).from||[]}},{key:"list_exits",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return(this._states.get(whichState)||{}).to||[]}},{key:"probable_exits_for",value:function(whichState){var _this2=this;return(this._states.get(whichState)||{to:[]}).to.map(function(ws){return _this2.lookup_transition_for(_this2.state(),ws)}).filter(function(defined){return defined})||[]}},{key:"probabilistic_transition",value:function(){var selected=(0,_jssmUtil.weighted_rand_select)(this.probable_exits_for(this.state()));return this.transition(selected.to)}},{key:"probabilistic_walk",value:function(n){var _this3=this;return(0,_jssmUtil.seq)(n-1).map(function(i){var state_was=_this3.state();return _this3.probabilistic_transition(),state_was}).concat([this.state()])}},{key:"probabilistic_histo_walk",value:function(n){return(0,_jssmUtil.histograph)(this.probabilistic_walk(n))}},{key:"actions",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state(),wstate=this._reverse_actions.get(whichState);if(wstate)return[].concat(_toConsumableArray(wstate.keys()));throw new Error("No such state "+JSON.stringify(whichState))}},{key:"list_states_having_action",value:function(whichState){var wstate=this._actions.get(whichState);if(wstate)return[].concat(_toConsumableArray(wstate.keys()));throw new Error("No such state "+JSON.stringify(whichState))}},{key:"list_exit_actions",value:function(){var _this4=this,whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return[].concat(_toConsumableArray((this._reverse_actions.get(whichState)||new Map).values())).map(function(edgeId){return _this4._edges[edgeId]}).filter(function(o){return o.from===whichState}).map(function(filtered){return filtered.action})}},{key:"probable_action_exits",value:function(){var _this5=this,whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return[].concat(_toConsumableArray((this._reverse_actions.get(whichState)||new Map).values())).map(function(edgeId){return _this5._edges[edgeId]}).filter(function(o){return o.from===whichState}).map(function(filtered){return{action:filtered.action,probability:filtered.probability}})}},{key:"is_unenterable",value:function(whichState){return 0===this.list_entrances(whichState).length}},{key:"has_unenterables",value:function(){var _this6=this;return this.states().some(function(x){return _this6.is_unenterable(x)})}},{key:"is_terminal",value:function(){return this.state_is_terminal(this.state())}},{key:"state_is_terminal",value:function(whichState){return 0===this.list_exits(whichState).length}},{key:"has_terminals",value:function(){var _this7=this;return this.states().some(function(x){return _this7.state_is_terminal(x)})}},{key:"is_complete",value:function(){return this.state_is_complete(this.state())}},{key:"state_is_complete",value:function(whichState){var wstate=this._states.get(whichState);if(wstate)return wstate.complete;throw new Error("No such state "+JSON.stringify(whichState))}},{key:"has_completes",value:function(){var _this8=this;return this.states().some(function(x){return _this8.state_is_complete(x)})}},{key:"action",value:function(name,newData){if(this.valid_action(name,newData)){var edge=this.current_action_edge_for(name);if(!edge)throw new Error("Should be impossible - valid_action true, no edge in current_action_edge_for, in action("+JSON.stringify(name)+"...)");return this._state=edge.to,!0}return!1}},{key:"transition",value:function(newState,newData){return!!this.valid_transition(newState,newData)&&(this._state=newState,!0)}},{key:"force_transition",value:function(newState,newData){return!!this.valid_force_transition(newState,newData)&&(this._state=newState,!0)}},{key:"current_action_for",value:function(action){var action_base=this._actions.get(action);return action_base?action_base.get(this.state()):void 0}},{key:"current_action_edge_for",value:function(action){var idx=this.current_action_for(action);return void 0!==idx?this._edges[idx]:void 0}},{key:"valid_action",value:function(action,newData){return void 0!==this.current_action_for(action)}},{key:"valid_transition",value:function(newState,newData){return void 0!==this.lookup_transition_for(this.state(),newState)}},{key:"valid_force_transition",value:function(newState,newData){return!1}}]),machine}();exports.version="2.9.12",exports.machine=machine,exports.parse=parse,exports.seq=_jssmUtil.seq,exports.weighted_rand_select=_jssmUtil.weighted_rand_select,exports.histograph=_jssmUtil.histograph,exports.weighted_sample_select=_jssmUtil.weighted_sample_select,exports.weighted_histo_key=_jssmUtil.weighted_histo_key},{"./jssm-dot.js":1,"./jssm-util.js":2}]},{},[]); | ||
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";function peg$SyntaxError(message,expected,found,location){this.message=message,this.expected=expected,this.found=found,this.location=location,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}!function(child,parent){function ctor(){this.constructor=child}ctor.prototype=parent.prototype,child.prototype=new ctor}(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(expected,found){function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase()}function literalEscape(s){return s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return"\\x"+hex(ch)})}function classEscape(s){return s.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return"\\x"+hex(ch)})}function describeExpectation(expectation){return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation)}var DESCRIBE_EXPECTATION_FNS={literal:function(expectation){return'"'+literalEscape(expectation.text)+'"'},class:function(expectation){var i,escapedParts="";for(i=0;i<expectation.parts.length;i++)escapedParts+=expectation.parts[i]instanceof Array?classEscape(expectation.parts[i][0])+"-"+classEscape(expectation.parts[i][1]):classEscape(expectation.parts[i]);return"["+(expectation.inverted?"^":"")+escapedParts+"]"},any:function(expectation){return"any character"},end:function(expectation){return"end of input"},other:function(expectation){return expectation.description}};return"Expected "+function(expected){var i,j,descriptions=new Array(expected.length);for(i=0;i<expected.length;i++)descriptions[i]=describeExpectation(expected[i]);if(descriptions.sort(),descriptions.length>0){for(i=1,j=1;i<descriptions.length;i++)descriptions[i-1]!==descriptions[i]&&(descriptions[j]=descriptions[i],j++);descriptions.length=j}switch(descriptions.length){case 1:return descriptions[0];case 2:return descriptions[0]+" or "+descriptions[1];default:return descriptions.slice(0,-1).join(", ")+", or "+descriptions[descriptions.length-1]}}(expected)+" but "+function(found){return found?'"'+literalEscape(found)+'"':"end of input"}(found)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:function(input,options){function peg$literalExpectation(text,ignoreCase){return{type:"literal",text:text,ignoreCase:ignoreCase}}function peg$classExpectation(parts,inverted,ignoreCase){return{type:"class",parts:parts,inverted:inverted,ignoreCase:ignoreCase}}function peg$otherExpectation(description){return{type:"other",description:description}}function peg$computePosDetails(pos){var p,details=peg$posDetailsCache[pos];if(details)return details;for(p=pos-1;!peg$posDetailsCache[p];)p--;for(details={line:(details=peg$posDetailsCache[p]).line,column:details.column};p<pos;)10===input.charCodeAt(p)?(details.line++,details.column=1):details.column++,p++;return peg$posDetailsCache[pos]=details,details}function peg$computeLocation(startPos,endPos){var startPosDetails=peg$computePosDetails(startPos),endPosDetails=peg$computePosDetails(endPos);return{start:{offset:startPos,line:startPosDetails.line,column:startPosDetails.column},end:{offset:endPos,line:endPosDetails.line,column:endPosDetails.column}}}function peg$fail(expected){peg$currPos<peg$maxFailPos||(peg$currPos>peg$maxFailPos&&(peg$maxFailPos=peg$currPos,peg$maxFailExpected=[]),peg$maxFailExpected.push(expected))}function peg$buildStructuredError(expected,found,location){return new peg$SyntaxError(peg$SyntaxError.buildMessage(expected,found),expected,found,location)}function peg$parseDocument(){var s0,s2;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseTermList())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c0(s2)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGvizShape(){var s0;return input.substr(peg$currPos,6)===peg$c1?(s0=peg$c1,peg$currPos+=6):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c2)),s0===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c3?(s0=peg$c3,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c4)),s0===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c5?(s0=peg$c5,peg$currPos+=6):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c6)))),s0}function peg$parseForwardArrow(){var s0;return peg$silentFails++,input.substr(peg$currPos,2)===peg$c8?(s0=peg$c8,peg$currPos+=2):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c9)),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c7),s0}function peg$parseTwoWayArrow(){var s0;return peg$silentFails++,input.substr(peg$currPos,3)===peg$c11?(s0=peg$c11,peg$currPos+=3):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c12)),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c10),s0}function peg$parseArrow(){var s0;return(s0=peg$parseForwardArrow())===peg$FAILED&&(s0=peg$parseTwoWayArrow()),s0}function peg$parseHexDigit(){var s0;return peg$c13.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c14)),s0}function peg$parseChar(){var s0,s2,s3,s4,s5,s6,s7,s8,s9;return(s0=peg$parseUnescaped())===peg$FAILED&&(s0=peg$currPos,peg$parseEscape()!==peg$FAILED?(34===input.charCodeAt(peg$currPos)?(s2=peg$c15,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c16)),s2===peg$FAILED&&(92===input.charCodeAt(peg$currPos)?(s2=peg$c17,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c18)),s2===peg$FAILED&&(47===input.charCodeAt(peg$currPos)?(s2=peg$c19,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c20)),s2===peg$FAILED&&(s2=peg$currPos,98===input.charCodeAt(peg$currPos)?(s3=peg$c21,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c22)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c23()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,102===input.charCodeAt(peg$currPos)?(s3=peg$c24,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c25)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c26()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,110===input.charCodeAt(peg$currPos)?(s3=peg$c27,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c28)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c29()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,114===input.charCodeAt(peg$currPos)?(s3=peg$c30,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c31)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c32()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,116===input.charCodeAt(peg$currPos)?(s3=peg$c33,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c34)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,118===input.charCodeAt(peg$currPos)?(s3=peg$c36,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c37)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c38()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,117===input.charCodeAt(peg$currPos)?(s3=peg$c39,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c40)),s3!==peg$FAILED?(s4=peg$currPos,s5=peg$currPos,(s6=peg$parseHexDigit())!==peg$FAILED&&(s7=peg$parseHexDigit())!==peg$FAILED&&(s8=peg$parseHexDigit())!==peg$FAILED&&(s9=peg$parseHexDigit())!==peg$FAILED?s5=s6=[s6,s7,s8,s9]:(peg$currPos=s5,s5=peg$FAILED),(s4=s5!==peg$FAILED?input.substring(s4,peg$currPos):s5)!==peg$FAILED?(peg$savedPos=s2,s2=s3=peg$c41(s4)):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED)))))))))),s2!==peg$FAILED?(peg$savedPos=s0,s0=peg$c42(s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseEscape(){var s0;return 92===input.charCodeAt(peg$currPos)?(s0=peg$c17,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c18)),s0}function peg$parseQuoteMark(){var s0;return 34===input.charCodeAt(peg$currPos)?(s0=peg$c15,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c16)),s0}function peg$parseUnescaped(){var s0;return peg$c43.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c44)),s0}function peg$parseActionLabelChar(){var s0,s2,s3,s4,s5,s6,s7,s8,s9;return(s0=peg$parseActionLabelUnescaped())===peg$FAILED&&(s0=peg$currPos,peg$parseEscape()!==peg$FAILED?(96===input.charCodeAt(peg$currPos)?(s2=peg$c45,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c46)),s2===peg$FAILED&&(92===input.charCodeAt(peg$currPos)?(s2=peg$c17,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c18)),s2===peg$FAILED&&(47===input.charCodeAt(peg$currPos)?(s2=peg$c19,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c20)),s2===peg$FAILED&&(s2=peg$currPos,98===input.charCodeAt(peg$currPos)?(s3=peg$c21,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c22)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c23()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,102===input.charCodeAt(peg$currPos)?(s3=peg$c24,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c25)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c26()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,110===input.charCodeAt(peg$currPos)?(s3=peg$c27,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c28)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c29()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,114===input.charCodeAt(peg$currPos)?(s3=peg$c30,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c31)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c32()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,116===input.charCodeAt(peg$currPos)?(s3=peg$c33,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c34)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,118===input.charCodeAt(peg$currPos)?(s3=peg$c36,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c37)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c38()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,117===input.charCodeAt(peg$currPos)?(s3=peg$c39,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c40)),s3!==peg$FAILED?(s4=peg$currPos,s5=peg$currPos,(s6=peg$parseHexDigit())!==peg$FAILED&&(s7=peg$parseHexDigit())!==peg$FAILED&&(s8=peg$parseHexDigit())!==peg$FAILED&&(s9=peg$parseHexDigit())!==peg$FAILED?s5=s6=[s6,s7,s8,s9]:(peg$currPos=s5,s5=peg$FAILED),(s4=s5!==peg$FAILED?input.substring(s4,peg$currPos):s5)!==peg$FAILED?(peg$savedPos=s2,s2=s3=peg$c41(s4)):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED)))))))))),s2!==peg$FAILED?(peg$savedPos=s0,s0=peg$c42(s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseActionLabelQuoteMark(){var s0;return 96===input.charCodeAt(peg$currPos)?(s0=peg$c45,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c46)),s0}function peg$parseActionLabelUnescaped(){var s0;return peg$c47.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c48)),s0}function peg$parseActionLabel(){var s0,s2,s3;if(peg$silentFails++,s0=peg$currPos,peg$parseActionLabelQuoteMark()!==peg$FAILED){for(s2=[],s3=peg$parseActionLabelChar();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseActionLabelChar();s2!==peg$FAILED&&(s3=peg$parseActionLabelQuoteMark())!==peg$FAILED?(peg$savedPos=s0,s0=peg$c50(s2)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c49),s0}function peg$parseWhitespace(){var s0,s1;for(peg$silentFails++,s0=[],peg$c52.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c53));s1!==peg$FAILED;)s0.push(s1),peg$c52.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c53));return peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c51)),s0}function peg$parseString(){var s0,s2,s3;if(peg$silentFails++,s0=peg$currPos,peg$parseQuoteMark()!==peg$FAILED){for(s2=[],s3=peg$parseChar();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseChar();s2!==peg$FAILED&&(s3=peg$parseQuoteMark())!==peg$FAILED?(peg$savedPos=s0,s0=peg$c50(s2)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c54),s0}function peg$parseAtom(){var s0,s1,s2;if(peg$silentFails++,s0=peg$currPos,s1=[],peg$c56.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c57)),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),peg$c56.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c57));else s1=peg$FAILED;return s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c58(s1)),s0=s1,peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c55)),s0}function peg$parseLabel(){var s0;return peg$silentFails++,(s0=peg$parseAtom())===peg$FAILED&&(s0=peg$parseString()),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c59),s0}function peg$parseArrowItemKey(){var s0;return input.substr(peg$currPos,9)===peg$c60?(s0=peg$c60,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c61)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c62?(s0=peg$c62,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c63)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c64?(s0=peg$c64,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c65)))),s0}function peg$parseArrowItem(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseArrowItemKey())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c70(s2,s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseArrowItems(){var s0,s1;if(s0=[],(s1=peg$parseArrowItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseArrowItem();else s0=peg$FAILED;return s0}function peg$parseArrowDesc(){var s0,s1,s3,s5;return s0=peg$currPos,123===input.charCodeAt(peg$currPos)?(s1=peg$c71,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s1!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s3=peg$parseArrowItems())===peg$FAILED&&(s3=null),s3!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(125===input.charCodeAt(peg$currPos)?(s5=peg$c73,peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c74)),s5!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c75(s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSubexp(){var s0,s2,s4,s6,s8,s10,s12,s14;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?((s2=peg$parseActionLabel())===peg$FAILED&&(s2=null),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s4=peg$parseArrowDesc())===peg$FAILED&&(s4=null),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseArrow())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseArrowDesc())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s10=peg$parseActionLabel())===peg$FAILED&&(s10=null),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s12=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s14=peg$parseSubexp())===peg$FAILED&&(s14=null),s14!==peg$FAILED?(peg$savedPos=s0,s0=peg$c76(s2,s4,s6,s8,s10,s12,s14)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseExp(){var s0,s1,s2,s4;return s0=peg$currPos,(s1=peg$parseLabel())!==peg$FAILED&&(s2=peg$parseSubexp())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c77(s1,s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseValidationKey(){var s0;return input.substr(peg$currPos,9)===peg$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),s0}function peg$parseValidationItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseValidationKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c82(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseValidationItems(){var s0,s1;if(s0=[],(s1=peg$parseValidationItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseValidationItem();else s0=peg$FAILED;return s0}function peg$parseConfigValidation(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c83?(s2=peg$c83,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c84)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseValidationItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c87(s8)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGvizLayout(){var s0;return input.substr(peg$currPos,3)===peg$c88?(s0=peg$c88,peg$currPos+=3):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c89)),s0===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c90?(s0=peg$c90,peg$currPos+=5):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c91))),s0}function peg$parseStateItemShapeKey(){var s0;return input.substr(peg$currPos,8)===peg$c92?(s0=peg$c92,peg$currPos+=8):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c93)),s0===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c94?(s0=peg$c94,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c95)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c96?(s0=peg$c96,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c97)))),s0}function peg$parseStateItemShape(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseStateItemShapeKey())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c70(s2,s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseStateItemGraphLayout(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,12)===peg$c98?(s2=peg$c98,peg$currPos+=12):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c99)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizLayout())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c100(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseStateItem(){var s0;return(s0=peg$parseStateItemShape())===peg$FAILED&&(s0=peg$parseStateItemGraphLayout()),s0}function peg$parseStateItems(){var s0,s1;if(s0=[],(s1=peg$parseStateItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseStateItem();else s0=peg$FAILED;return s0}function peg$parseConfigState(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c101?(s2=peg$c101,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c102)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseStateItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c103(s8)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseActionKey(){var s0;return input.substr(peg$currPos,9)===peg$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),s0}function peg$parseActionItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseActionKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c104(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseActionItems(){var s0,s1;if(s0=[],(s1=peg$parseActionItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseActionItem();else s0=peg$FAILED;return s0}function peg$parseConfigAction(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,6)===peg$c105?(s2=peg$c105,peg$currPos+=6):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c106)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseActionItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c107(s8)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTransitionKey(){var s0;return input.substr(peg$currPos,9)===peg$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),s0}function peg$parseTransitionItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseTransitionKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c108(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTransitionItems(){var s0,s1;if(s0=[],(s1=peg$parseTransitionItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseTransitionItem();else s0=peg$FAILED;return s0}function peg$parseConfigTransition(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c109?(s2=peg$c109,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c110)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseTransitionItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c111(s8)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGraphBg(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,8)===peg$c112?(s2=peg$c112,peg$currPos+=8):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c113)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c114(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseMinTransitionsPerState(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,25)===peg$c115?(s2=peg$c115,peg$currPos+=25):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c116)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c117(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseMaxTransitionsPerState(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,25)===peg$c118?(s2=peg$c118,peg$currPos+=25):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c119)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c120(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGraphItem(){var s0;return(s0=peg$parseGraphBg())===peg$FAILED&&(s0=peg$parseMinTransitionsPerState())===peg$FAILED&&(s0=peg$parseMaxTransitionsPerState()),s0}function peg$parseGraphItems(){var s0,s1;if(s0=[],(s1=peg$parseGraphItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseGraphItem();else s0=peg$FAILED;return s0}function peg$parseConfigGraph(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c121?(s2=peg$c121,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c122)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseGraphItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c123(s8)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseConfig(){var s0;return(s0=peg$parseConfigGraph())===peg$FAILED&&(s0=peg$parseConfigTransition())===peg$FAILED&&(s0=peg$parseConfigAction())===peg$FAILED&&(s0=peg$parseConfigState())===peg$FAILED&&(s0=peg$parseConfigValidation()),s0}function peg$parseTerm(){var s0;return(s0=peg$parseExp())===peg$FAILED&&(s0=peg$parseConfig()),s0}function peg$parseTermList(){var s0,s1;for(s0=[],s1=peg$parseTerm();s1!==peg$FAILED;)s0.push(s1),s1=peg$parseTerm();return s0}options=void 0!==options?options:{};var peg$result,peg$FAILED={},peg$startRuleFunctions={Document:peg$parseDocument},peg$startRuleFunction=peg$parseDocument,peg$c0=function(e){return e},peg$c1="square",peg$c2=peg$literalExpectation("square",!1),peg$c3="rectangle",peg$c4=peg$literalExpectation("rectangle",!1),peg$c5="circle",peg$c6=peg$literalExpectation("circle",!1),peg$c7=peg$otherExpectation("forward arrow"),peg$c8="->",peg$c9=peg$literalExpectation("->",!1),peg$c10=peg$otherExpectation("two way arrow"),peg$c11="<->",peg$c12=peg$literalExpectation("<->",!1),peg$c13=/^[0-9a-fA-F]/,peg$c14=peg$classExpectation([["0","9"],["a","f"],["A","F"]],!1,!1),peg$c15='"',peg$c16=peg$literalExpectation('"',!1),peg$c17="\\",peg$c18=peg$literalExpectation("\\",!1),peg$c19="/",peg$c20=peg$literalExpectation("/",!1),peg$c21="b",peg$c22=peg$literalExpectation("b",!1),peg$c23=function(){return"\b"},peg$c24="f",peg$c25=peg$literalExpectation("f",!1),peg$c26=function(){return"\f"},peg$c27="n",peg$c28=peg$literalExpectation("n",!1),peg$c29=function(){return"\n"},peg$c30="r",peg$c31=peg$literalExpectation("r",!1),peg$c32=function(){return"\r"},peg$c33="t",peg$c34=peg$literalExpectation("t",!1),peg$c35=function(){return"\t"},peg$c36="v",peg$c37=peg$literalExpectation("v",!1),peg$c38=function(){return"\v"},peg$c39="u",peg$c40=peg$literalExpectation("u",!1),peg$c41=function(digits){return String.fromCharCode(parseInt(digits,16))},peg$c42=function(Sequence){return Sequence},peg$c43=/^[ -!#-[\]-\u10FFFF]/,peg$c44=peg$classExpectation([[" ","!"],["#","["],["]","ჿ"],"F","F"],!1,!1),peg$c45="`",peg$c46=peg$literalExpectation("`",!1),peg$c47=/^[ -[\]-_a-\u10FFFF]/,peg$c48=peg$classExpectation([[" ","["],["]","_"],["a","ჿ"],"F","F"],!1,!1),peg$c49=peg$otherExpectation("action label"),peg$c50=function(chars){return chars.join("")},peg$c51=peg$otherExpectation("whitespace"),peg$c52=/^[ \t\n\r\x0B]/,peg$c53=peg$classExpectation([" ","\t","\n","\r","\v"],!1,!1),peg$c54=peg$otherExpectation("string"),peg$c55=peg$otherExpectation("atom"),peg$c56=/^[0-9a-zA-Z.+_&()%$#@!?,']/,peg$c57=peg$classExpectation([["0","9"],["a","z"],["A","Z"],".","+","_","&","(",")","%","$","#","@","!","?",",","'"],!1,!1),peg$c58=function(text){return text.join("")},peg$c59=peg$otherExpectation("label"),peg$c60="arc_label",peg$c61=peg$literalExpectation("arc_label",!1),peg$c62="head_label",peg$c63=peg$literalExpectation("head_label",!1),peg$c64="tail_label",peg$c65=peg$literalExpectation("tail_label",!1),peg$c66=":",peg$c67=peg$literalExpectation(":",!1),peg$c68=";",peg$c69=peg$literalExpectation(";",!1),peg$c70=function(key,value){return{key:key,value:value}},peg$c71="{",peg$c72=peg$literalExpectation("{",!1),peg$c73="}",peg$c74=peg$literalExpectation("}",!1),peg$c75=function(items){return items},peg$c76=function(lactl,ldesc,arrow,rdesc,ractl,label,tail){var base={kind:arrow,to:label};return tail&&tail!==[]&&(base.se=tail),ldesc&&(base.ldesc=ldesc),rdesc&&(base.rdesc=rdesc),base},peg$c77=function(label,se){var base={from:label};return se&&se!==[]&&(base.se=se),base},peg$c78="whargarbl",peg$c79=peg$literalExpectation("whargarbl",!1),peg$c80="todo",peg$c81=peg$literalExpectation("todo",!1),peg$c82=function(validationkey,value){return{key:validationkey,value:value}},peg$c83="validation",peg$c84=peg$literalExpectation("validation",!1),peg$c85="};",peg$c86=peg$literalExpectation("};",!1),peg$c87=function(validation_items){return{config_kind:"validation",config_items:validation_items||[]}},peg$c88="dot",peg$c89=peg$literalExpectation("dot",!1),peg$c90="circo",peg$c91=peg$literalExpectation("circo",!1),peg$c92="in_shape",peg$c93=peg$literalExpectation("in_shape",!1),peg$c94="out_shape",peg$c95=peg$literalExpectation("out_shape",!1),peg$c96="node_shape",peg$c97=peg$literalExpectation("node_shape",!1),peg$c98="graph_layout",peg$c99=peg$literalExpectation("graph_layout",!1),peg$c100=function(value){return{key:"graph_layout",value:value}},peg$c101="state",peg$c102=peg$literalExpectation("state",!1),peg$c103=function(state_items){return{config_kind:"state",config_items:state_items||[]}},peg$c104=function(actionkey,value){return{key:actionkey,value:value}},peg$c105="action",peg$c106=peg$literalExpectation("action",!1),peg$c107=function(action_items){return{config_kind:"action",config_items:action_items||[]}},peg$c108=function(transitionkey,value){return{key:transitionkey,value:value}},peg$c109="transition",peg$c110=peg$literalExpectation("transition",!1),peg$c111=function(transition_items){return{config_kind:"transition",config_items:transition_items||[]}},peg$c112="graph_bg",peg$c113=peg$literalExpectation("graph_bg",!1),peg$c114=function(value){return{key:"graph_bg",value:value}},peg$c115="min_transitions_per_state",peg$c116=peg$literalExpectation("min_transitions_per_state",!1),peg$c117=function(value){return{key:"min_transitions_per_state",value:value}},peg$c118="max_transitions_per_state",peg$c119=peg$literalExpectation("max_transitions_per_state",!1),peg$c120=function(value){return{key:"max_transitions_per_state",value:value}},peg$c121="graph",peg$c122=peg$literalExpectation("graph",!1),peg$c123=function(graph_items){return{config_kind:"graph",config_items:graph_items||[]}},peg$currPos=0,peg$savedPos=0,peg$posDetailsCache=[{line:1,column:1}],peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0;if("startRule"in options){if(!(options.startRule in peg$startRuleFunctions))throw new Error("Can't start parsing from rule \""+options.startRule+'".');peg$startRuleFunction=peg$startRuleFunctions[options.startRule]}if((peg$result=peg$startRuleFunction())!==peg$FAILED&&peg$currPos===input.length)return peg$result;throw peg$result!==peg$FAILED&&peg$currPos<input.length&&peg$fail({type:"end"}),peg$buildStructuredError(peg$maxFailExpected,peg$maxFailPos<input.length?input.charAt(peg$maxFailPos):null,peg$maxFailPos<input.length?peg$computeLocation(peg$maxFailPos,peg$maxFailPos+1):peg$computeLocation(peg$maxFailPos,peg$maxFailPos))}}},{}],2:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},weighted_rand_select=function(options){var probability_property=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"probability";if(!Array.isArray(options))throw new TypeError("options must be a non-empty array of objects");if("object"!==_typeof(options[0]))throw new TypeError("options must be a non-empty array of objects");for(var rnd=function(cap){return Math.random()*cap}(options.reduce(function(acc,val){return acc+val[probability_property]},0)),cursor=0,cursor_sum=0;(cursor_sum+=options[cursor++][probability_property])<=rnd;);return options[cursor-1]},seq=function(n){return new Array(n).fill(!0).map(function(_,i){return i})},histograph=function(a){return a.sort().reduce(function(m,v){return m.set(v,m.has(v)?m.get(v)+1:1),m},new Map)},weighted_sample_select=function(n,options,probability_property){return seq(n).map(function(i){return weighted_rand_select(options,probability_property)})};exports.seq=seq,exports.histograph=histograph,exports.weighted_histo_key=function(n,options,probability_property,extract){return histograph(weighted_sample_select(n,options,probability_property).map(function(s){return s[extract]}))},exports.weighted_rand_select=weighted_rand_select,exports.weighted_sample_select=weighted_sample_select},{}],jssm:[function(require,module,exports){"use strict";function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2}return Array.from(arr)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0}),exports.weighted_histo_key=exports.weighted_sample_select=exports.histograph=exports.weighted_rand_select=exports.seq=exports.parse=exports.machine=exports.version=void 0;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_jssmUtil=require("./jssm-util.js"),parse=require("./jssm-dot.js").parse,machine=function(){function machine(_ref){var _this=this,initial_state=_ref.initial_state,_ref$complete=_ref.complete,complete=void 0===_ref$complete?[]:_ref$complete,transitions=_ref.transitions;_classCallCheck(this,machine),this._state=initial_state,this._states=new Map,this._edges=[],this._edge_map=new Map,this._named_transitions=new Map,this._actions=new Map,this._reverse_actions=new Map,this._reverse_action_targets=new Map,transitions.map(function(tr){if(void 0===tr.from)throw new Error("transition must define 'from': "+JSON.stringify(tr));if(void 0===tr.to)throw new Error("transition must define 'to': "+JSON.stringify(tr));var cursor_from=_this._states.get(tr.from);void 0===cursor_from&&(_this._new_state({name:tr.from,from:[],to:[],complete:complete.includes(tr.from)}),cursor_from=_this._states.get(tr.from));var cursor_to=_this._states.get(tr.to);if(void 0===cursor_to&&(_this._new_state({name:tr.to,from:[],to:[],complete:complete.includes(tr.to)}),cursor_to=_this._states.get(tr.to)),cursor_from.to.includes(tr.to))throw new Error("already has "+tr.from+" to "+tr.to);cursor_from.to.push(tr.to),cursor_to.from.push(tr.from),_this._edges.push(tr);var thisEdgeId=_this._edges.length-1;if(tr.name){if(_this._named_transitions.has(tr.name))throw new Error('named transition "'+tr.name+'" already created');_this._named_transitions.set(tr.name,thisEdgeId)}var from_mapping=_this._edge_map.get(tr.from);void 0===from_mapping&&(_this._edge_map.set(tr.from,new Map),from_mapping=_this._edge_map.get(tr.from));from_mapping.get(tr.to);if(from_mapping.set(tr.to,thisEdgeId),tr.action){var actionMap=_this._actions.get(tr.action);if(actionMap||(actionMap=new Map,_this._actions.set(tr.action,actionMap)),actionMap.has(tr.from))throw new Error("action "+tr.action+" already attached to origin "+tr.from);actionMap.set(tr.from,thisEdgeId);var rActionMap=_this._reverse_actions.get(tr.from);rActionMap||(rActionMap=new Map,_this._reverse_actions.set(tr.from,rActionMap)),rActionMap.set(tr.action,thisEdgeId),_this._reverse_action_targets.has(tr.to)||_this._reverse_action_targets.set(tr.to,new Map)}})}return _createClass(machine,[{key:"_new_state",value:function(state_config){if(this._states.has(state_config.name))throw new Error("state "+state_config.name+" already exists");return this._states.set(state_config.name,state_config),state_config.name}},{key:"state",value:function(){return this._state}},{key:"state_is_final",value:function(whichState){return this.state_is_terminal(whichState)&&this.state_is_complete(whichState)}},{key:"is_final",value:function(){return this.state_is_final(this.state())}},{key:"machine_state",value:function(){return{internal_state_impl_version:1,actions:this._actions,edge_map:this._edge_map,edges:this._edges,named_transitions:this._named_transitions,reverse_actions:this._reverse_actions,state:this._state,states:this._states}}},{key:"states",value:function(){return[].concat(_toConsumableArray(this._states.keys()))}},{key:"state_for",value:function(whichState){var state=this._states.get(whichState);if(state)return state;throw new Error("no such state "+JSON.stringify(state))}},{key:"list_edges",value:function(){return this._edges}},{key:"list_named_transitions",value:function(){return this._named_transitions}},{key:"list_actions",value:function(){return[].concat(_toConsumableArray(this._actions.keys()))}},{key:"get_transition_by_state_names",value:function(from,to){return this._edge_map.has(from)?this._edge_map.get(from).get(to):void 0}},{key:"lookup_transition_for",value:function(from,to){var id=this.get_transition_by_state_names(from,to);return void 0===id?void 0:this._edges[id]}},{key:"list_transitions",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return{entrances:this.list_entrances(whichState),exits:this.list_exits(whichState)}}},{key:"list_entrances",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return(this._states.get(whichState)||{}).from||[]}},{key:"list_exits",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return(this._states.get(whichState)||{}).to||[]}},{key:"probable_exits_for",value:function(whichState){var _this2=this;return(this._states.get(whichState)||{to:[]}).to.map(function(ws){return _this2.lookup_transition_for(_this2.state(),ws)}).filter(function(defined){return defined})||[]}},{key:"probabilistic_transition",value:function(){var selected=(0,_jssmUtil.weighted_rand_select)(this.probable_exits_for(this.state()));return this.transition(selected.to)}},{key:"probabilistic_walk",value:function(n){var _this3=this;return(0,_jssmUtil.seq)(n-1).map(function(i){var state_was=_this3.state();return _this3.probabilistic_transition(),state_was}).concat([this.state()])}},{key:"probabilistic_histo_walk",value:function(n){return(0,_jssmUtil.histograph)(this.probabilistic_walk(n))}},{key:"actions",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state(),wstate=this._reverse_actions.get(whichState);if(wstate)return[].concat(_toConsumableArray(wstate.keys()));throw new Error("No such state "+JSON.stringify(whichState))}},{key:"list_states_having_action",value:function(whichState){var wstate=this._actions.get(whichState);if(wstate)return[].concat(_toConsumableArray(wstate.keys()));throw new Error("No such state "+JSON.stringify(whichState))}},{key:"list_exit_actions",value:function(){var _this4=this,whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return[].concat(_toConsumableArray((this._reverse_actions.get(whichState)||new Map).values())).map(function(edgeId){return _this4._edges[edgeId]}).filter(function(o){return o.from===whichState}).map(function(filtered){return filtered.action})}},{key:"probable_action_exits",value:function(){var _this5=this,whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return[].concat(_toConsumableArray((this._reverse_actions.get(whichState)||new Map).values())).map(function(edgeId){return _this5._edges[edgeId]}).filter(function(o){return o.from===whichState}).map(function(filtered){return{action:filtered.action,probability:filtered.probability}})}},{key:"is_unenterable",value:function(whichState){return 0===this.list_entrances(whichState).length}},{key:"has_unenterables",value:function(){var _this6=this;return this.states().some(function(x){return _this6.is_unenterable(x)})}},{key:"is_terminal",value:function(){return this.state_is_terminal(this.state())}},{key:"state_is_terminal",value:function(whichState){return 0===this.list_exits(whichState).length}},{key:"has_terminals",value:function(){var _this7=this;return this.states().some(function(x){return _this7.state_is_terminal(x)})}},{key:"is_complete",value:function(){return this.state_is_complete(this.state())}},{key:"state_is_complete",value:function(whichState){var wstate=this._states.get(whichState);if(wstate)return wstate.complete;throw new Error("No such state "+JSON.stringify(whichState))}},{key:"has_completes",value:function(){var _this8=this;return this.states().some(function(x){return _this8.state_is_complete(x)})}},{key:"action",value:function(name,newData){if(this.valid_action(name,newData)){var edge=this.current_action_edge_for(name);if(!edge)throw new Error("Should be impossible - valid_action true, no edge in current_action_edge_for, in action("+JSON.stringify(name)+"...)");return this._state=edge.to,!0}return!1}},{key:"transition",value:function(newState,newData){return!!this.valid_transition(newState,newData)&&(this._state=newState,!0)}},{key:"current_action_for",value:function(action){var action_base=this._actions.get(action);return action_base?action_base.get(this.state()):void 0}},{key:"current_action_edge_for",value:function(action){var idx=this.current_action_for(action);return void 0!==idx?this._edges[idx]:void 0}},{key:"valid_action",value:function(action,newData){return void 0!==this.current_action_for(action)}},{key:"valid_transition",value:function(newState,newData){return void 0!==this.lookup_transition_for(this.state(),newState)}}]),machine}();exports.version="2.9.19",exports.machine=machine,exports.parse=parse,exports.seq=_jssmUtil.seq,exports.weighted_rand_select=_jssmUtil.weighted_rand_select,exports.histograph=_jssmUtil.histograph,exports.weighted_sample_select=_jssmUtil.weighted_sample_select,exports.weighted_histo_key=_jssmUtil.weighted_histo_key},{"./jssm-dot.js":1,"./jssm-util.js":2}]},{},[]); |
{ | ||
"name": "jssm", | ||
"version": "2.9.12", | ||
"version": "2.9.19", | ||
"engines": { | ||
@@ -43,2 +43,3 @@ "node": ">=6.0.0" | ||
"keywords": [ | ||
"finite", | ||
"state", | ||
@@ -45,0 +46,0 @@ "state machine", |
@@ -100,32 +100,29 @@ | ||
// forward mapping first by action name | ||
if (!(this._actions.has(tr.action))) { | ||
this._actions.set(tr.action, new Map()); | ||
var actionMap = this._actions.get(tr.action); | ||
if (!(actionMap)) { | ||
actionMap = new Map(); | ||
this._actions.set(tr.action, actionMap); | ||
} | ||
const actionMap = this._actions.get(tr.action); | ||
if (actionMap) { | ||
if (actionMap.has(tr.from)) { throw new Error(`action ${tr.action} already attached to origin ${tr.from}`); } | ||
else { | ||
actionMap.set(tr.from, thisEdgeId); | ||
} | ||
if (actionMap.has(tr.from)) { | ||
throw new Error(`action ${tr.action} already attached to origin ${tr.from}`); | ||
} else { | ||
throw new Error('should be impossible, satisfying type checker that doesn\'t know .set precedes .get. severe error?'); | ||
actionMap.set(tr.from, thisEdgeId); | ||
} | ||
// reverse mapping first by state origin name | ||
if (!(this._reverse_actions.has(tr.from))) { | ||
this._reverse_actions.set(tr.from, new Map()); | ||
var rActionMap = this._reverse_actions.get(tr.from); | ||
if (!(rActionMap)) { | ||
rActionMap = new Map(); | ||
this._reverse_actions.set(tr.from, rActionMap); | ||
} | ||
const rActionMap = this._reverse_actions.get(tr.from); | ||
if (rActionMap) { | ||
if (rActionMap.has(tr.action)) { throw new Error(`r-action ${tr.from} already attached to action ${tr.action}`); } | ||
else { | ||
rActionMap.set(tr.action, thisEdgeId); | ||
} | ||
} else { | ||
throw new Error('should be impossible, satisfying type checker that doesn\'t know .set precedes .get again. severe error?'); | ||
} | ||
// no need to test for reverse mapping pre-presence; | ||
// forward mapping already covers collisions | ||
rActionMap.set(tr.action, thisEdgeId); | ||
// reverse mapping first by state target name | ||
@@ -155,5 +152,10 @@ if (!(this._reverse_action_targets.has(tr.to))) { | ||
_new_state(state_config : JssmGenericState<mNT>) : mNT { // whargarbl get that state_config any under control | ||
if (this._states.has(state_config.name)) { throw new Error(`state ${(state_config.name:any)} already exists`); } | ||
if (this._states.has(state_config.name)) { | ||
throw new Error(`state ${(state_config.name:any)} already exists`); | ||
} | ||
this._states.set(state_config.name, state_config); | ||
return state_config.name; | ||
} | ||
@@ -167,8 +169,11 @@ | ||
/* whargarbl todo major | ||
when we reimplement this, reintroduce this change to the is_final call | ||
is_changing() : boolean { | ||
return true; // todo whargarbl | ||
} | ||
*/ | ||
state_is_final(whichState : mNT) : boolean { | ||
@@ -179,3 +184,4 @@ return ( (this.state_is_terminal(whichState)) && (this.state_is_complete(whichState)) ); | ||
is_final() : boolean { | ||
return ((!this.is_changing()) && this.state_is_final(this.state())); | ||
// return ((!this.is_changing()) && this.state_is_final(this.state())); | ||
return this.state_is_final(this.state()); | ||
} | ||
@@ -202,8 +208,9 @@ | ||
/* | ||
load_machine_state() : boolean { | ||
return false; // todo whargarbl | ||
} | ||
*/ | ||
states() : Array<mNT> { | ||
@@ -397,2 +404,3 @@ return [... this._states.keys()]; | ||
/* whargarbl reintroduce after valid_force_transition is re-enabled | ||
// can leave machine in inconsistent state. generally do not use | ||
@@ -410,2 +418,3 @@ force_transition(newState : mNT, newData? : mDT) : boolean { | ||
} | ||
*/ | ||
@@ -438,8 +447,9 @@ | ||
/* re-enable force_transition/1 after implementing this | ||
valid_force_transition(newState : mNT, newData? : mDT) : boolean { | ||
return false; // major todo whargarbl | ||
} | ||
*/ | ||
} | ||
@@ -446,0 +456,0 @@ |
@@ -255,2 +255,27 @@ | ||
describe('reports is_final', async it => { | ||
const machine = new jssm.machine({ | ||
initial_state: 'off', | ||
transitions:[ | ||
{ from:'off', to:'red' } | ||
], | ||
complete:['red'] | ||
}); | ||
const init_final = machine.is_final(); | ||
machine.transition('red'); | ||
const fin_final = machine.is_final(); | ||
it('final false', t => t.is(false, init_final ) ); | ||
it('final true', t => t.is(true, fin_final ) ); | ||
/* todo whargarbl needs another two tests for is_changing once reintroduced */ | ||
}); | ||
describe('reports state_is_terminal', async it => { | ||
@@ -406,2 +431,17 @@ | ||
describe('returns states', async it => { | ||
const machine = new jssm.machine({ | ||
initial_state: 'off', | ||
transitions:[ { name:'turn_on', action:'power_on', from:'off', to:'red'} ] | ||
}); | ||
it('that it has', t => t.is('object', typeof machine.machine_state() ) ); | ||
}); | ||
describe('reports on transitions', async it => { | ||
@@ -554,2 +594,17 @@ | ||
it('internal state helper must not accept double states', t => t.throws(() => { | ||
const machine = new jssm.machine({ | ||
initial_state: 'moot', | ||
transitions:[ | ||
{ name:'id1', from:'1', to:'2', action:'identical' } | ||
] | ||
}); | ||
machine._new_state({from: '1', name:'id1', to:'2', complete:false}); | ||
machine._new_state({from: '1', name:'id1', to:'2', complete:false}); | ||
}, Error)); | ||
}); |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1828114
5367