http://git-wip-us.apache.org/repos/asf/spark/blob/fc8b5819/core/src/main/resources/org/apache/spark/ui/static/graphlib-dot.min.js
----------------------------------------------------------------------
diff --git 
a/core/src/main/resources/org/apache/spark/ui/static/graphlib-dot.min.js 
b/core/src/main/resources/org/apache/spark/ui/static/graphlib-dot.min.js
new file mode 100644
index 0000000..037316f
--- /dev/null
+++ b/core/src/main/resources/org/apache/spark/ui/static/graphlib-dot.min.js
@@ -0,0 +1,4 @@
+/*v0.5.2*/(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof 
require=="function"&&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?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof 
require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return 
s})({1:[function(require,module,exports){(function(global){graphlibDot=require("./index");graphlibDot.graphlib=require("graphlib");global.graphlibDot=graphlibDot}).call(this,typeof
 global!=="undefined"?global:typeof self!=="undefined"?self:typeof 
window!=="undefined"?window:{})},{"./index":2,graphlib:9}],2:[function(require,module,exports){var
 
read=require("./lib/read-one"),readMany=require("./lib/read-many"),write=require("./lib/write-one"),version=require("./lib/version");module.exports={read:read,readMany:readMany,write:write,version:versi
 
on,type:"dot",buffer:false}},{"./lib/read-many":5,"./lib/read-one":6,"./lib/version":7,"./lib/write-one":8}],3:[function(require,module,exports){"use
 strict";var 
_=require("lodash"),Graph=require("graphlib").Graph;module.exports=buildGraph;function
 buildGraph(parseTree){var 
isDirected=parseTree.type!=="graph",isMultigraph=!parseTree.strict,defaultStack=[{node:{},edge:{}}],g=new
 
Graph({directed:isDirected,multigraph:isMultigraph,compound:true});g.setGraph({});_.each(parseTree.stmts,function(stmt){handleStmt(g,stmt,defaultStack)});return
 g}function 
handleStmt(g,stmt,defaultStack,sg){switch(stmt.type){case"node":handleNodeStmt(g,stmt,defaultStack,sg);break;case"edge":handleEdgeStmt(g,stmt,defaultStack,sg);break;case"subgraph":handleSubgraphStmt(g,stmt,defaultStack,sg);break;case"attr":handleAttrStmt(g,stmt,defaultStack);break;case"inlineAttr":handleInlineAttrsStmt(g,stmt,defaultStack,sg);break}}function
 handleNodeStmt(g,stmt,defaultStack,sg){var 
v=stmt.id,attrs=stmt.attrs;maybeCreateNo
 de(g,v,defaultStack,sg);_.merge(g.node(v),attrs)}function 
handleEdgeStmt(g,stmt,defaultStack,sg){var 
attrs=stmt.attrs,prev,curr;_.each(stmt.elems,function(elem){handleStmt(g,elem,defaultStack,sg);switch(elem.type){case"node":curr=[elem.id];break;case"subgraph":curr=collectNodeIds(elem);break}_.each(prev,function(v){_.each(curr,function(w){var
 
name;if(g.hasEdge(v,w)&&g.isMultigraph()){name=_.uniqueId("edge")}if(!g.hasEdge(v,w,name)){g.setEdge(v,w,_.clone(_.last(defaultStack).edge),name)}_.merge(g.edge(v,w,name),attrs)})});prev=curr})}function
 handleSubgraphStmt(g,stmt,defaultStack,sg){var 
id=stmt.id;if(id===undefined){id=generateSubgraphId(g)}defaultStack.push(_.clone(_.last(defaultStack)));maybeCreateNode(g,id,defaultStack,sg);_.each(stmt.stmts,function(s){handleStmt(g,s,defaultStack,id)});if(!g.children(id).length){g.removeNode(id)}defaultStack.pop()}function
 
handleAttrStmt(g,stmt,defaultStack){_.merge(_.last(defaultStack)[stmt.attrType],stmt.attrs)}function
 handleInlineAttrsStmt(g
 ,stmt,defaultStack,sg){_.merge(sg?g.node(sg):g.graph(),stmt.attrs)}function 
generateSubgraphId(g){var id;do{id=_.uniqueId("sg")}while(g.hasNode(id));return 
id}function 
maybeCreateNode(g,v,defaultStack,sg){if(!g.hasNode(v)){g.setNode(v,_.clone(_.last(defaultStack).node));g.setParent(v,sg)}}function
 collectNodeIds(stmt){var ids={},stack=[],curr;var 
push=stack.push.bind(stack);push(stmt);while(stack.length){curr=stack.pop();switch(curr.type){case"node":ids[curr.id]=true;break;case"edge":_.each(curr.elems,push);break;case"subgraph":_.each(curr.stmts,push);break}}return
 
_.keys(ids)}},{graphlib:9,lodash:28}],4:[function(require,module,exports){module.exports=function(){function
 peg$subclass(child,parent){function 
ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new
 ctor}function 
SyntaxError(message,expected,found,offset,line,column){this.message=message;this.expected=expected;this.found=found;this.offset=offset;this.line=line;this.column=column;this.name="Synt
 axError"}peg$subclass(SyntaxError,Error);function parse(input){var 
options=arguments.length>1?arguments[1]:{},peg$FAILED={},peg$startRuleFunctions={start:peg$parsestart,graphStmt:peg$parsegraphStmt},peg$startRuleFunction=peg$parsestart,peg$c0=[],peg$c1=peg$FAILED,peg$c2=null,peg$c3="{",peg$c4={type:"literal",value:"{",description:'"{"'},peg$c5="}",peg$c6={type:"literal",value:"}",description:'"}"'},peg$c7=function(strict,type,id,stmts){return{type:type,id:id,strict:strict!==null,stmts:stmts}},peg$c8=";",peg$c9={type:"literal",value:";",description:'";"'},peg$c10=function(first,rest){var
 result=[first];for(var i=0;i<rest.length;++i){result.push(rest[i][1])}return 
result},peg$c11=function(type,attrs){return{type:"attr",attrType:type,attrs:attrs||{}}},peg$c12="=",peg$c13={type:"literal",value:"=",description:'"="'},peg$c14=function(k,v){var
 
attrs={};attrs[k]=v;return{type:"inlineAttr",attrs:attrs}},peg$c15=function(id,attrs){return{type:"node",id:id,attrs:attrs||{}}},peg$c16=function(l
 hs,rhs,attrs){var elems=[lhs];for(var 
i=0;i<rhs.length;++i){elems.push(rhs[i])}return{type:"edge",elems:elems,attrs:attrs||{}}},peg$c17=function(id,stmts){id=id&&id[2]||[];return{type:"subgraph",id:id[0],stmts:stmts}},peg$c18=function(first,rest){var
 result=first;for(var i=0;i<rest.length;++i){_.merge(result,rest[i][1])}return 
result},peg$c19="[",peg$c20={type:"literal",value:"[",description:'"["'},peg$c21="]",peg$c22={type:"literal",value:"]",description:'"]"'},peg$c23=function(aList){return
 
aList},peg$c24=",",peg$c25={type:"literal",value:",",description:'","'},peg$c26=function(first,rest){var
 result=first;for(var i=0;i<rest.length;++i){_.merge(result,rest[i][3])}return 
result},peg$c27="--",peg$c28={type:"literal",value:"--",description:'"--"'},peg$c29=function(){return
 directed},peg$c30=void 
0,peg$c31="->",peg$c32={type:"literal",value:"->",description:'"->"'},peg$c33=function(rhs,rest){var
 result=[rhs];if(rest){for(var 
i=0;i<rest.length;++i){result.push(rest[i])}}return result},
 peg$c34=function(k,v){var result={};result[k]=v[3];return 
result},peg$c35=function(id){return{type:"node",id:id,attrs:{}}},peg$c36=function(id){return
 
id},peg$c37=":",peg$c38={type:"literal",value:":",description:'":"'},peg$c39="ne",peg$c40={type:"literal",value:"ne",description:'"ne"'},peg$c41="se",peg$c42={type:"literal",value:"se",description:'"se"'},peg$c43="sw",peg$c44={type:"literal",value:"sw",description:'"sw"'},peg$c45="nw",peg$c46={type:"literal",value:"nw",description:'"nw"'},peg$c47="n",peg$c48={type:"literal",value:"n",description:'"n"'},peg$c49="e",peg$c50={type:"literal",value:"e",description:'"e"'},peg$c51="s",peg$c52={type:"literal",value:"s",description:'"s"'},peg$c53="w",peg$c54={type:"literal",value:"w",description:'"w"'},peg$c55="c",peg$c56={type:"literal",value:"c",description:'"c"'},peg$c57="_",peg$c58={type:"literal",value:"_",description:'"_"'},peg$c59={type:"other",description:"identifier"},peg$c60=/^[a-zA-Z\u0200-\u0377_]/,peg$c61={type:"class",value:"[a-z
 
A-Z\\u0200-\\u0377_]",description:"[a-zA-Z\\u0200-\\u0377_]"},peg$c62=/^[a-zA-Z\u0200-\u0377_0-9]/,peg$c63={type:"class",value:"[a-zA-Z\\u0200-\\u0377_0-9]",description:"[a-zA-Z\\u0200-\\u0377_0-9]"},peg$c64=function(fst,rest){return
 
fst+rest.join("")},peg$c65="-",peg$c66={type:"literal",value:"-",description:'"-"'},peg$c67=".",peg$c68={type:"literal",value:".",description:'"."'},peg$c69=/^[0-9]/,peg$c70={type:"class",value:"[0-9]",description:"[0-9]"},peg$c71=function(sign,dot,after){return(sign||"")+dot+after.join("")},peg$c72=function(sign,before,after){return(sign||"")+before.join("")+(after?after[0]:"")+(after?after[1].join(""):"")},peg$c73='"',peg$c74={type:"literal",value:'"',description:'"\\""'},peg$c75='\\"',peg$c76={type:"literal",value:'\\"',description:'"\\\\\\""'},peg$c77=function(){return'"'},peg$c78="\\",peg$c79={type:"literal",value:"\\",description:'"\\\\"'},peg$c80=/^[^"]/,peg$c81={type:"class",value:'[^"]',description:'[^"]'},peg$c82=function(ch){return"\\"+ch},pe
 g$c83=function(id){return 
id.join("")},peg$c84="node",peg$c85={type:"literal",value:"node",description:'"node"'},peg$c86=function(k){return
 
k.toLowerCase()},peg$c87="edge",peg$c88={type:"literal",value:"edge",description:'"edge"'},peg$c89="graph",peg$c90={type:"literal",value:"graph",description:'"graph"'},peg$c91="digraph",peg$c92={type:"literal",value:"digraph",description:'"digraph"'},peg$c93="subgraph",peg$c94={type:"literal",value:"subgraph",description:'"subgraph"'},peg$c95="strict",peg$c96={type:"literal",value:"strict",description:'"strict"'},peg$c97=function(graph){directed=graph==="digraph";return
 graph},peg$c98={type:"other",description:"whitespace"},peg$c99=/^[ 
\t\r\n]/,peg$c100={type:"class",value:"[ \\t\\r\\n]",description:"[ 
\\t\\r\\n]"},peg$c101={type:"other",description:"comment"},peg$c102="//",peg$c103={type:"literal",value:"//",description:'"//"'},peg$c104=/^[^\n]/,peg$c105={type:"class",value:"[^\\n]",description:"[^\\n]"},peg$c106="/*",peg$c107={type:"literal",v
 
alue:"/*",description:'"/*"'},peg$c108="*/",peg$c109={type:"literal",value:"*/",description:'"*/"'},peg$c110={type:"any",description:"any
 
character"},peg$currPos=0,peg$reportedPos=0,peg$cachedPos=0,peg$cachedPosDetails={line:1,column:1,seenCR:false},peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0,peg$result;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]}function
 text(){return input.substring(peg$reportedPos,peg$currPos)}function 
offset(){return peg$reportedPos}function line(){return 
peg$computePosDetails(peg$reportedPos).line}function column(){return 
peg$computePosDetails(peg$reportedPos).column}function 
expected(description){throw 
peg$buildException(null,[{type:"other",description:description}],peg$reportedPos)}function
 error(message){throw peg$buildException(message,null,peg$reportedPos)}function 
peg$comp
 utePosDetails(pos){function advance(details,startPos,endPos){var 
p,ch;for(p=startPos;p<endPos;p++){ch=input.charAt(p);if(ch==="\n"){if(!details.seenCR){details.line++}details.column=1;details.seenCR=false}else
 
if(ch==="\r"||ch==="\u2028"||ch==="\u2029"){details.line++;details.column=1;details.seenCR=true}else{details.column++;details.seenCR=false}}}if(peg$cachedPos!==pos){if(peg$cachedPos>pos){peg$cachedPos=0;peg$cachedPosDetails={line:1,column:1,seenCR:false}}advance(peg$cachedPosDetails,peg$cachedPos,pos);peg$cachedPos=pos}return
 peg$cachedPosDetails}function 
peg$fail(expected){if(peg$currPos<peg$maxFailPos){return}if(peg$currPos>peg$maxFailPos){peg$maxFailPos=peg$currPos;peg$maxFailExpected=[]}peg$maxFailExpected.push(expected)}function
 peg$buildException(message,expected,pos){function 
cleanupExpected(expected){var 
i=1;expected.sort(function(a,b){if(a.description<b.description){return-1}else 
if(a.description>b.description){return 1}else{return 
0}});while(i<expected.length){if(exp
 ected[i-1]===expected[i]){expected.splice(i,1)}else{i++}}}function 
buildMessage(expected,found){function stringEscape(s){function hex(ch){return 
ch.charCodeAt(0).toString(16).toUpperCase()}return 
s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(ch){return"\\x"+hex(ch)}).replace(/[\u0180-\u0FFF]/g,function(ch){return"\\u0"+hex(ch)}).replace(/[\u1080-\uFFFF]/g,function(ch){return"\\u"+hex(ch)})}var
 expectedDescs=new 
Array(expected.length),expectedDesc,foundDesc,i;for(i=0;i<expected.length;i++){expectedDescs[i]=expected[i].description}expectedDesc=expected.length>1?expectedDescs.slice(0,-1).join(",
 ")+" or 
"+expectedDescs[expected.length-1]:expectedDescs[0];foundDesc=found?'"'+stringEscape(found)+'"':"end
 of input";return"Expected "+expectedDesc+" but "+foundDesc+" found."}va
 r 
posDetails=peg$computePosDetails(pos),found=pos<input.length?input.charAt(pos):null;if(expected!==null){cleanupExpected(expected)}return
 new 
SyntaxError(message!==null?message:buildMessage(expected,found),expected,found,pos,posDetails.line,posDetails.column)}function
 peg$parsestart(){var 
s0,s1;s0=[];s1=peg$parsegraphStmt();if(s1!==peg$FAILED){while(s1!==peg$FAILED){s0.push(s1);s1=peg$parsegraphStmt()}}else{s0=peg$c1}return
 s0}function peg$parsegraphStmt(){var 
s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;s0=peg$currPos;s1=[];s2=peg$parse_();while(s2!==peg$FAILED){s1.push(s2);s2=peg$parse_()}if(s1!==peg$FAILED){s2=peg$currPos;s3=peg$parsestrict();if(s3!==peg$FAILED){s4=peg$parse_();if(s4!==peg$FAILED){s3=[s3,s4];s2=s3}else{peg$currPos=s2;s2=peg$c1}}else{peg$currPos=s2;s2=peg$c1}if(s2===peg$FAILED){s2=peg$c2}if(s2!==peg$FAILED){s3=peg$parsegraphType();if(s3!==peg$FAILED){s4=[];s5=peg$parse_();while(s5!==peg$FAILED){s4.push(s5);s5=peg$parse_()}if(s4!==peg$FAILED){s5=peg$parseid();if(
 
s5===peg$FAILED){s5=peg$c2}if(s5!==peg$FAILED){s6=[];s7=peg$parse_();while(s7!==peg$FAILED){s6.push(s7);s7=peg$parse_()}if(s6!==peg$FAILED){if(input.charCodeAt(peg$currPos)===123){s7=peg$c3;peg$currPos++}else{s7=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c4)}}if(s7!==peg$FAILED){s8=[];s9=peg$parse_();while(s9!==peg$FAILED){s8.push(s9);s9=peg$parse_()}if(s8!==peg$FAILED){s9=peg$parsestmtList();if(s9===peg$FAILED){s9=peg$c2}if(s9!==peg$FAILED){s10=[];s11=peg$parse_();while(s11!==peg$FAILED){s10.push(s11);s11=peg$parse_()}if(s10!==peg$FAILED){if(input.charCodeAt(peg$currPos)===125){s11=peg$c5;peg$currPos++}else{s11=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c6)}}if(s11!==peg$FAILED){s12=[];s13=peg$parse_();while(s13!==peg$FAILED){s12.push(s13);s13=peg$parse_()}if(s12!==peg$FAILED){peg$reportedPos=s0;s1=peg$c7(s2,s3,s5,s9);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg
 
$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parsestmtList(){var 
s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;s0=peg$currPos;s1=peg$parsestmt();if(s1!==peg$FAILED){s2=[];s3=peg$parse_();while(s3!==peg$FAILED){s2.push(s3);s3=peg$parse_()}if(s2!==peg$FAILED){if(input.charCodeAt(peg$currPos)===59){s3=peg$c8;peg$currPos++}else{s3=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c9)}}if(s3===peg$FAILED){s3=peg$c2}if(s3!==peg$FAILED){s4=[];s5=peg$currPos;s6=[];s7=peg$parse_();while(s7!==peg$FAILED){s6.push(s7);s7=peg$parse_()}if(s6!==peg$FAILED){s7=peg$parsestmt();if(s7!==peg$FAILED){s8=[];s9=peg$parse_();while(s9!==peg$FAILED){s8.push(s9);s9=peg$parse_()}if(s8!==peg$FAILED){if(input.charCodeAt(peg$currPos)===59){s9=peg$c8;peg$currPos++}else{s9=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c9)}}if(s9===peg$
 
FAILED){s9=peg$c2}if(s9!==peg$FAILED){s6=[s6,s7,s8,s9];s5=s6}else{peg$currPos=s5;s5=peg$c1}}else{peg$currPos=s5;s5=peg$c1}}else{peg$currPos=s5;s5=peg$c1}}else{peg$currPos=s5;s5=peg$c1}while(s5!==peg$FAILED){s4.push(s5);s5=peg$currPos;s6=[];s7=peg$parse_();while(s7!==peg$FAILED){s6.push(s7);s7=peg$parse_()}if(s6!==peg$FAILED){s7=peg$parsestmt();if(s7!==peg$FAILED){s8=[];s9=peg$parse_();while(s9!==peg$FAILED){s8.push(s9);s9=peg$parse_()}if(s8!==peg$FAILED){if(input.charCodeAt(peg$currPos)===59){s9=peg$c8;peg$currPos++}else{s9=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c9)}}if(s9===peg$FAILED){s9=peg$c2}if(s9!==peg$FAILED){s6=[s6,s7,s8,s9];s5=s6}else{peg$currPos=s5;s5=peg$c1}}else{peg$currPos=s5;s5=peg$c1}}else{peg$currPos=s5;s5=peg$c1}}else{peg$currPos=s5;s5=peg$c1}}if(s4!==peg$FAILED){peg$reportedPos=s0;s1=peg$c10(s1,s4);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parsestm
 t(){var 
s0;s0=peg$parseattrStmt();if(s0===peg$FAILED){s0=peg$parseedgeStmt();if(s0===peg$FAILED){s0=peg$parsesubgraphStmt();if(s0===peg$FAILED){s0=peg$parseinlineAttrStmt();if(s0===peg$FAILED){s0=peg$parsenodeStmt()}}}}return
 s0}function peg$parseattrStmt(){var 
s0,s1,s2,s3;s0=peg$currPos;s1=peg$parsegraph();if(s1===peg$FAILED){s1=peg$parsenode();if(s1===peg$FAILED){s1=peg$parseedge()}}if(s1!==peg$FAILED){s2=[];s3=peg$parse_();while(s3!==peg$FAILED){s2.push(s3);s3=peg$parse_()}if(s2!==peg$FAILED){s3=peg$parseattrList();if(s3!==peg$FAILED){peg$reportedPos=s0;s1=peg$c11(s1,s3);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parseinlineAttrStmt(){var 
s0,s1,s2,s3,s4,s5;s0=peg$currPos;s1=peg$parseid();if(s1!==peg$FAILED){s2=[];s3=peg$parse_();while(s3!==peg$FAILED){s2.push(s3);s3=peg$parse_()}if(s2!==peg$FAILED){if(input.charCodeAt(peg$currPos)===61){s3=peg$c12;peg$currPos++}else{s3=peg$FAILED;if(peg$silentFails===0)
 
{peg$fail(peg$c13)}}if(s3!==peg$FAILED){s4=[];s5=peg$parse_();while(s5!==peg$FAILED){s4.push(s5);s5=peg$parse_()}if(s4!==peg$FAILED){s5=peg$parseid();if(s5!==peg$FAILED){peg$reportedPos=s0;s1=peg$c14(s1,s5);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parsenodeStmt(){var 
s0,s1,s2,s3;s0=peg$currPos;s1=peg$parsenodeId();if(s1!==peg$FAILED){s2=[];s3=peg$parse_();while(s3!==peg$FAILED){s2.push(s3);s3=peg$parse_()}if(s2!==peg$FAILED){s3=peg$parseattrList();if(s3===peg$FAILED){s3=peg$c2}if(s3!==peg$FAILED){peg$reportedPos=s0;s1=peg$c15(s1,s3);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parseedgeStmt(){var 
s0,s1,s2,s3,s4,s5;s0=peg$currPos;s1=peg$parsenodeIdOrSubgraph();if(s1!==peg$FAILED){s2=[];s3=peg$parse_();while(s3!==peg$FAILED){s2.push(s3);s3=peg$parse_()}if(s2!==peg$FAILED
 
){s3=peg$parseedgeRHS();if(s3!==peg$FAILED){s4=[];s5=peg$parse_();while(s5!==peg$FAILED){s4.push(s5);s5=peg$parse_()}if(s4!==peg$FAILED){s5=peg$parseattrList();if(s5===peg$FAILED){s5=peg$c2}if(s5!==peg$FAILED){peg$reportedPos=s0;s1=peg$c16(s1,s3,s5);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parsesubgraphStmt(){var 
s0,s1,s2,s3,s4,s5,s6,s7;s0=peg$currPos;s1=peg$currPos;s2=peg$parsesubgraph();if(s2!==peg$FAILED){s3=[];s4=peg$parse_();while(s4!==peg$FAILED){s3.push(s4);s4=peg$parse_()}if(s3!==peg$FAILED){s4=peg$currPos;s5=peg$parseid();if(s5!==peg$FAILED){s6=[];s7=peg$parse_();while(s7!==peg$FAILED){s6.push(s7);s7=peg$parse_()}if(s6!==peg$FAILED){s5=[s5,s6];s4=s5}else{peg$currPos=s4;s4=peg$c1}}else{peg$currPos=s4;s4=peg$c1}if(s4===peg$FAILED){s4=peg$c2}if(s4!==peg$FAILED){s2=[s2,s3,s4];s1=s2}else{peg$currPos=s1;s1=peg$c1}}else{peg$currPos=s1;s1=peg
 
$c1}}else{peg$currPos=s1;s1=peg$c1}if(s1===peg$FAILED){s1=peg$c2}if(s1!==peg$FAILED){if(input.charCodeAt(peg$currPos)===123){s2=peg$c3;peg$currPos++}else{s2=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c4)}}if(s2!==peg$FAILED){s3=[];s4=peg$parse_();while(s4!==peg$FAILED){s3.push(s4);s4=peg$parse_()}if(s3!==peg$FAILED){s4=peg$parsestmtList();if(s4===peg$FAILED){s4=peg$c2}if(s4!==peg$FAILED){s5=[];s6=peg$parse_();while(s6!==peg$FAILED){s5.push(s6);s6=peg$parse_()}if(s5!==peg$FAILED){if(input.charCodeAt(peg$currPos)===125){s6=peg$c5;peg$currPos++}else{s6=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c6)}}if(s6!==peg$FAILED){peg$reportedPos=s0;s1=peg$c17(s1,s4);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parseattrList(){var 
s0,s1,s2,s3,s4,s5;s0=peg$currPos;s1=peg$parseattrListBlock();if(s1!==peg$FAILED){s2=[];s3=pe
 
g$currPos;s4=[];s5=peg$parse_();while(s5!==peg$FAILED){s4.push(s5);s5=peg$parse_()}if(s4!==peg$FAILED){s5=peg$parseattrListBlock();if(s5!==peg$FAILED){s4=[s4,s5];s3=s4}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}while(s3!==peg$FAILED){s2.push(s3);s3=peg$currPos;s4=[];s5=peg$parse_();while(s5!==peg$FAILED){s4.push(s5);s5=peg$parse_()}if(s4!==peg$FAILED){s5=peg$parseattrListBlock();if(s5!==peg$FAILED){s4=[s4,s5];s3=s4}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}}if(s2!==peg$FAILED){peg$reportedPos=s0;s1=peg$c18(s1,s2);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parseattrListBlock(){var 
s0,s1,s2,s3,s4,s5;s0=peg$currPos;if(input.charCodeAt(peg$currPos)===91){s1=peg$c19;peg$currPos++}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c20)}}if(s1!==peg$FAILED){s2=[];s3=peg$parse_();while(s3!==peg$FAILED){s2.push(s3);s3=peg$parse_()}if(s2!==peg$FAILED){s3=peg$parseaList();if(s3===peg$FAILED){s3=peg$c2}if(s
 
3!==peg$FAILED){s4=[];s5=peg$parse_();while(s5!==peg$FAILED){s4.push(s5);s5=peg$parse_()}if(s4!==peg$FAILED){if(input.charCodeAt(peg$currPos)===93){s5=peg$c21;peg$currPos++}else{s5=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c22)}}if(s5!==peg$FAILED){peg$reportedPos=s0;s1=peg$c23(s3);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parseaList(){var 
s0,s1,s2,s3,s4,s5,s6,s7;s0=peg$currPos;s1=peg$parseidDef();if(s1!==peg$FAILED){s2=[];s3=peg$currPos;s4=[];s5=peg$parse_();while(s5!==peg$FAILED){s4.push(s5);s5=peg$parse_()}if(s4!==peg$FAILED){if(input.charCodeAt(peg$currPos)===44){s5=peg$c24;peg$currPos++}else{s5=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c25)}}if(s5===peg$FAILED){s5=peg$c2}if(s5!==peg$FAILED){s6=[];s7=peg$parse_();while(s7!==peg$FAILED){s6.push(s7);s7=peg$parse_()}if(s6!==peg$FAILED){s7=peg$parseidDef();if(s7!==peg$FAILED){s4=[s4
 
,s5,s6,s7];s3=s4}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}while(s3!==peg$FAILED){s2.push(s3);s3=peg$currPos;s4=[];s5=peg$parse_();while(s5!==peg$FAILED){s4.push(s5);s5=peg$parse_()}if(s4!==peg$FAILED){if(input.charCodeAt(peg$currPos)===44){s5=peg$c24;peg$currPos++}else{s5=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c25)}}if(s5===peg$FAILED){s5=peg$c2}if(s5!==peg$FAILED){s6=[];s7=peg$parse_();while(s7!==peg$FAILED){s6.push(s7);s7=peg$parse_()}if(s6!==peg$FAILED){s7=peg$parseidDef();if(s7!==peg$FAILED){s4=[s4,s5,s6,s7];s3=s4}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}}if(s2!==peg$FAILED){peg$reportedPos=s0;s1=peg$c26(s1,s2);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parseedgeRHS(){var 
s0,s1,s2,s3,s4,s5;s0=peg$currPos;s1=peg$currPos;if(input.substr(peg$currPos,2)===peg$c27){s2
 
=peg$c27;peg$currPos+=2}else{s2=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c28)}}if(s2!==peg$FAILED){peg$reportedPos=peg$currPos;s3=peg$c29();if(s3){s3=peg$c1}else{s3=peg$c30}if(s3!==peg$FAILED){s2=[s2,s3];s1=s2}else{peg$currPos=s1;s1=peg$c1}}else{peg$currPos=s1;s1=peg$c1}if(s1===peg$FAILED){s1=peg$currPos;if(input.substr(peg$currPos,2)===peg$c31){s2=peg$c31;peg$currPos+=2}else{s2=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c32)}}if(s2!==peg$FAILED){peg$reportedPos=peg$currPos;s3=peg$c29();if(s3){s3=peg$c30}else{s3=peg$c1}if(s3!==peg$FAILED){s2=[s2,s3];s1=s2}else{peg$currPos=s1;s1=peg$c1}}else{peg$currPos=s1;s1=peg$c1}}if(s1!==peg$FAILED){s2=[];s3=peg$parse_();while(s3!==peg$FAILED){s2.push(s3);s3=peg$parse_()}if(s2!==peg$FAILED){s3=peg$parsenodeIdOrSubgraph();if(s3!==peg$FAILED){s4=[];s5=peg$parse_();while(s5!==peg$FAILED){s4.push(s5);s5=peg$parse_()}if(s4!==peg$FAILED){s5=peg$parseedgeRHS();if(s5===peg$FAILED){s5=peg$c2}if(s5!==peg$FAILED){peg$reportedPos=s0;s1=peg$c33(s3
 
,s5);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parseidDef(){var 
s0,s1,s2,s3,s4,s5,s6;s0=peg$currPos;s1=peg$parseid();if(s1!==peg$FAILED){s2=peg$currPos;s3=[];s4=peg$parse_();while(s4!==peg$FAILED){s3.push(s4);s4=peg$parse_()}if(s3!==peg$FAILED){if(input.charCodeAt(peg$currPos)===61){s4=peg$c12;peg$currPos++}else{s4=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c13)}}if(s4!==peg$FAILED){s5=[];s6=peg$parse_();while(s6!==peg$FAILED){s5.push(s6);s6=peg$parse_()}if(s5!==peg$FAILED){s6=peg$parseid();if(s6!==peg$FAILED){s3=[s3,s4,s5,s6];s2=s3}else{peg$currPos=s2;s2=peg$c1}}else{peg$currPos=s2;s2=peg$c1}}else{peg$currPos=s2;s2=peg$c1}}else{peg$currPos=s2;s2=peg$c1}if(s2===peg$FAILED){s2=peg$c2}if(s2!==peg$FAILED){peg$reportedPos=s0;s1=peg$c34(s1,s2);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parsenodeIdO
 rSubgraph(){var 
s0,s1;s0=peg$parsesubgraphStmt();if(s0===peg$FAILED){s0=peg$currPos;s1=peg$parsenodeId();if(s1!==peg$FAILED){peg$reportedPos=s0;s1=peg$c35(s1)}s0=s1}return
 s0}function peg$parsenodeId(){var 
s0,s1,s2,s3;s0=peg$currPos;s1=peg$parseid();if(s1!==peg$FAILED){s2=[];s3=peg$parse_();while(s3!==peg$FAILED){s2.push(s3);s3=peg$parse_()}if(s2!==peg$FAILED){s3=peg$parseport();if(s3===peg$FAILED){s3=peg$c2}if(s3!==peg$FAILED){peg$reportedPos=s0;s1=peg$c36(s1);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parseport(){var 
s0,s1,s2,s3,s4,s5,s6,s7,s8;s0=peg$currPos;if(input.charCodeAt(peg$currPos)===58){s1=peg$c37;peg$currPos++}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c38)}}if(s1!==peg$FAILED){s2=[];s3=peg$parse_();while(s3!==peg$FAILED){s2.push(s3);s3=peg$parse_()}if(s2!==peg$FAILED){s3=peg$parseid();if(s3!==peg$FAILED){s4=[];s5=peg$parse_();while(s5!==peg$FAILED){s4.push(s5);s5=peg$parse_()}if(
 
s4!==peg$FAILED){s5=peg$currPos;if(input.charCodeAt(peg$currPos)===58){s6=peg$c37;peg$currPos++}else{s6=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c38)}}if(s6!==peg$FAILED){s7=[];s8=peg$parse_();while(s8!==peg$FAILED){s7.push(s8);s8=peg$parse_()}if(s7!==peg$FAILED){s8=peg$parsecompassPt();if(s8!==peg$FAILED){s6=[s6,s7,s8];s5=s6}else{peg$currPos=s5;s5=peg$c1}}else{peg$currPos=s5;s5=peg$c1}}else{peg$currPos=s5;s5=peg$c1}if(s5===peg$FAILED){s5=peg$c2}if(s5!==peg$FAILED){s1=[s1,s2,s3,s4,s5];s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}return
 s0}function peg$parsecompassPt(){var 
s0;if(input.substr(peg$currPos,2)===peg$c39){s0=peg$c39;peg$currPos+=2}else{s0=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c40)}}if(s0===peg$FAILED){if(input.substr(peg$currPos,2)===peg$c41){s0=peg$c41;peg$currPos+=2}else{s0=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c42)}}if(s0===peg$F
 
AILED){if(input.substr(peg$currPos,2)===peg$c43){s0=peg$c43;peg$currPos+=2}else{s0=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c44)}}if(s0===peg$FAILED){if(input.substr(peg$currPos,2)===peg$c45){s0=peg$c45;peg$currPos+=2}else{s0=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c46)}}if(s0===peg$FAILED){if(input.charCodeAt(peg$currPos)===110){s0=peg$c47;peg$currPos++}else{s0=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c48)}}if(s0===peg$FAILED){if(input.charCodeAt(peg$currPos)===101){s0=peg$c49;peg$currPos++}else{s0=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c50)}}if(s0===peg$FAILED){if(input.charCodeAt(peg$currPos)===115){s0=peg$c51;peg$currPos++}else{s0=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c52)}}if(s0===peg$FAILED){if(input.charCodeAt(peg$currPos)===119){s0=peg$c53;peg$currPos++}else{s0=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c54)}}if(s0===peg$FAILED){if(input.charCodeAt(peg$currPos)===99){s0=peg$c55;peg$currPos++}else{s0=peg$FAILED;if(peg$silentFails=
 
==0){peg$fail(peg$c56)}}if(s0===peg$FAILED){if(input.charCodeAt(peg$currPos)===95){s0=peg$c57;peg$currPos++}else{s0=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c58)}}}}}}}}}}}return
 s0}function peg$parseid(){var 
s0,s1,s2,s3,s4,s5,s6;peg$silentFails++;s0=peg$currPos;if(peg$c60.test(input.charAt(peg$currPos))){s1=input.charAt(peg$currPos);peg$currPos++}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c61)}}if(s1!==peg$FAILED){s2=[];if(peg$c62.test(input.charAt(peg$currPos))){s3=input.charAt(peg$currPos);peg$currPos++}else{s3=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c63)}}while(s3!==peg$FAILED){s2.push(s3);if(peg$c62.test(input.charAt(peg$currPos))){s3=input.charAt(peg$currPos);peg$currPos++}else{s3=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c63)}}}if(s2!==peg$FAILED){peg$reportedPos=s0;s1=peg$c64(s1,s2);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}if(s0===peg$FAILED){s0=peg$currPos;if(input.charCodeAt(peg$currPos)===45){s1=peg$c65;peg$currP
 
os++}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c66)}}if(s1===peg$FAILED){s1=peg$c2}if(s1!==peg$FAILED){if(input.charCodeAt(peg$currPos)===46){s2=peg$c67;peg$currPos++}else{s2=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c68)}}if(s2!==peg$FAILED){s3=[];if(peg$c69.test(input.charAt(peg$currPos))){s4=input.charAt(peg$currPos);peg$currPos++}else{s4=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c70)}}if(s4!==peg$FAILED){while(s4!==peg$FAILED){s3.push(s4);if(peg$c69.test(input.charAt(peg$currPos))){s4=input.charAt(peg$currPos);peg$currPos++}else{s4=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c70)}}}}else{s3=peg$c1}if(s3!==peg$FAILED){peg$reportedPos=s0;s1=peg$c71(s1,s2,s3);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}if(s0===peg$FAILED){s0=peg$currPos;if(input.charCodeAt(peg$currPos)===45){s1=peg$c65;peg$currPos++}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c66)}}if(s1===peg$FAILED){s1=peg$c2}if(s1!==p
 
eg$FAILED){s2=[];if(peg$c69.test(input.charAt(peg$currPos))){s3=input.charAt(peg$currPos);peg$currPos++}else{s3=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c70)}}if(s3!==peg$FAILED){while(s3!==peg$FAILED){s2.push(s3);if(peg$c69.test(input.charAt(peg$currPos))){s3=input.charAt(peg$currPos);peg$currPos++}else{s3=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c70)}}}}else{s2=peg$c1}if(s2!==peg$FAILED){s3=peg$currPos;if(input.charCodeAt(peg$currPos)===46){s4=peg$c67;peg$currPos++}else{s4=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c68)}}if(s4!==peg$FAILED){s5=[];if(peg$c69.test(input.charAt(peg$currPos))){s6=input.charAt(peg$currPos);peg$currPos++}else{s6=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c70)}}while(s6!==peg$FAILED){s5.push(s6);if(peg$c69.test(input.charAt(peg$currPos))){s6=input.charAt(peg$currPos);peg$currPos++}else{s6=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c70)}}}if(s5!==peg$FAILED){s4=[s4,s5];s3=s4}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s
 
3=peg$c1}if(s3===peg$FAILED){s3=peg$c2}if(s3!==peg$FAILED){peg$reportedPos=s0;s1=peg$c72(s1,s2,s3);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}if(s0===peg$FAILED){s0=peg$currPos;if(input.charCodeAt(peg$currPos)===34){s1=peg$c73;peg$currPos++}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c74)}}if(s1!==peg$FAILED){s2=[];s3=peg$currPos;if(input.substr(peg$currPos,2)===peg$c75){s4=peg$c75;peg$currPos+=2}else{s4=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c76)}}if(s4!==peg$FAILED){peg$reportedPos=s3;s4=peg$c77()}s3=s4;if(s3===peg$FAILED){s3=peg$currPos;if(input.charCodeAt(peg$currPos)===92){s4=peg$c78;peg$currPos++}else{s4=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c79)}}if(s4!==peg$FAILED){if(peg$c80.test(input.charAt(peg$currPos))){s5=input.charAt(peg$currPos);peg$currPos++}else{s5=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c81)}}if(s5!==peg$FAILED){peg$reportedPos=s3;s4=peg$c82(s5);s3=s4}else{peg$currPos=s3;
 
s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}if(s3===peg$FAILED){if(peg$c80.test(input.charAt(peg$currPos))){s3=input.charAt(peg$currPos);
+peg$currPos++}else{s3=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c81)}}}}while(s3!==peg$FAILED){s2.push(s3);s3=peg$currPos;if(input.substr(peg$currPos,2)===peg$c75){s4=peg$c75;peg$currPos+=2}else{s4=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c76)}}if(s4!==peg$FAILED){peg$reportedPos=s3;s4=peg$c77()}s3=s4;if(s3===peg$FAILED){s3=peg$currPos;if(input.charCodeAt(peg$currPos)===92){s4=peg$c78;peg$currPos++}else{s4=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c79)}}if(s4!==peg$FAILED){if(peg$c80.test(input.charAt(peg$currPos))){s5=input.charAt(peg$currPos);peg$currPos++}else{s5=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c81)}}if(s5!==peg$FAILED){peg$reportedPos=s3;s4=peg$c82(s5);s3=s4}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}if(s3===peg$FAILED){if(peg$c80.test(input.charAt(peg$currPos))){s3=input.charAt(peg$currPos);peg$currPos++}else{s3=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c81)}}}}}if(s2!==peg$FAILED){if(input.charCodeAt(peg$currPos)===34)
 
{s3=peg$c73;peg$currPos++}else{s3=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c74)}}if(s3!==peg$FAILED){peg$reportedPos=s0;s1=peg$c83(s2);s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}}}peg$silentFails--;if(s0===peg$FAILED){s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c59)}}return
 s0}function peg$parsenode(){var 
s0,s1;s0=peg$currPos;if(input.substr(peg$currPos,4).toLowerCase()===peg$c84){s1=input.substr(peg$currPos,4);peg$currPos+=4}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c85)}}if(s1!==peg$FAILED){peg$reportedPos=s0;s1=peg$c86(s1)}s0=s1;return
 s0}function peg$parseedge(){var 
s0,s1;s0=peg$currPos;if(input.substr(peg$currPos,4).toLowerCase()===peg$c87){s1=input.substr(peg$currPos,4);peg$currPos+=4}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c88)}}if(s1!==peg$FAILED){peg$reportedPos=s0;s1=peg$c86(s1)}s0=s1;return
 s0}function peg$parsegraph(){var 
s0,s1;s0=peg$currPos;if(input.substr(peg$currPos,5)
 
.toLowerCase()===peg$c89){s1=input.substr(peg$currPos,5);peg$currPos+=5}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c90)}}if(s1!==peg$FAILED){peg$reportedPos=s0;s1=peg$c86(s1)}s0=s1;return
 s0}function peg$parsedigraph(){var 
s0,s1;s0=peg$currPos;if(input.substr(peg$currPos,7).toLowerCase()===peg$c91){s1=input.substr(peg$currPos,7);peg$currPos+=7}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c92)}}if(s1!==peg$FAILED){peg$reportedPos=s0;s1=peg$c86(s1)}s0=s1;return
 s0}function peg$parsesubgraph(){var 
s0,s1;s0=peg$currPos;if(input.substr(peg$currPos,8).toLowerCase()===peg$c93){s1=input.substr(peg$currPos,8);peg$currPos+=8}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c94)}}if(s1!==peg$FAILED){peg$reportedPos=s0;s1=peg$c86(s1)}s0=s1;return
 s0}function peg$parsestrict(){var 
s0,s1;s0=peg$currPos;if(input.substr(peg$currPos,6).toLowerCase()===peg$c95){s1=input.substr(peg$currPos,6);peg$currPos+=6}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c96)}}if
 (s1!==peg$FAILED){peg$reportedPos=s0;s1=peg$c86(s1)}s0=s1;return s0}function 
peg$parsegraphType(){var 
s0,s1;s0=peg$parsegraph();if(s0===peg$FAILED){s0=peg$currPos;s1=peg$parsedigraph();if(s1!==peg$FAILED){peg$reportedPos=s0;s1=peg$c97(s1)}s0=s1}return
 s0}function peg$parsewhitespace(){var 
s0,s1;peg$silentFails++;s0=[];if(peg$c99.test(input.charAt(peg$currPos))){s1=input.charAt(peg$currPos);peg$currPos++}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c100)}}if(s1!==peg$FAILED){while(s1!==peg$FAILED){s0.push(s1);if(peg$c99.test(input.charAt(peg$currPos))){s1=input.charAt(peg$currPos);peg$currPos++}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c100)}}}}else{s0=peg$c1}peg$silentFails--;if(s0===peg$FAILED){s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c98)}}return
 s0}function peg$parsecomment(){var 
s0,s1,s2,s3,s4,s5;peg$silentFails++;s0=peg$currPos;if(input.substr(peg$currPos,2)===peg$c102){s1=peg$c102;peg$currPos+=2}else{s1=peg$FAILED;if(peg$silentFails===0){peg$
 
fail(peg$c103)}}if(s1!==peg$FAILED){s2=[];if(peg$c104.test(input.charAt(peg$currPos))){s3=input.charAt(peg$currPos);peg$currPos++}else{s3=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c105)}}while(s3!==peg$FAILED){s2.push(s3);if(peg$c104.test(input.charAt(peg$currPos))){s3=input.charAt(peg$currPos);peg$currPos++}else{s3=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c105)}}}if(s2!==peg$FAILED){s1=[s1,s2];s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}if(s0===peg$FAILED){s0=peg$currPos;if(input.substr(peg$currPos,2)===peg$c106){s1=peg$c106;peg$currPos+=2}else{s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c107)}}if(s1!==peg$FAILED){s2=[];s3=peg$currPos;s4=peg$currPos;peg$silentFails++;if(input.substr(peg$currPos,2)===peg$c108){s5=peg$c108;peg$currPos+=2}else{s5=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c109)}}peg$silentFails--;if(s5===peg$FAILED){s4=peg$c30}else{peg$currPos=s4;s4=peg$c1}if(s4!==peg$FAILED){if(input.length>peg$currPos){s5=input.charAt(
 
peg$currPos);peg$currPos++}else{s5=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c110)}}if(s5!==peg$FAILED){s4=[s4,s5];s3=s4}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}while(s3!==peg$FAILED){s2.push(s3);s3=peg$currPos;s4=peg$currPos;peg$silentFails++;if(input.substr(peg$currPos,2)===peg$c108){s5=peg$c108;peg$currPos+=2}else{s5=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c109)}}peg$silentFails--;if(s5===peg$FAILED){s4=peg$c30}else{peg$currPos=s4;s4=peg$c1}if(s4!==peg$FAILED){if(input.length>peg$currPos){s5=input.charAt(peg$currPos);peg$currPos++}else{s5=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c110)}}if(s5!==peg$FAILED){s4=[s4,s5];s3=s4}else{peg$currPos=s3;s3=peg$c1}}else{peg$currPos=s3;s3=peg$c1}}if(s2!==peg$FAILED){if(input.substr(peg$currPos,2)===peg$c108){s3=peg$c108;peg$currPos+=2}else{s3=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c109)}}if(s3!==peg$FAILED){s1=[s1,s2,s3];s0=s1}else{peg$currPos=s0;s0=peg$c1}}else{peg$currPos=s0;s0=peg$c1}}else{
 
peg$currPos=s0;s0=peg$c1}}peg$silentFails--;if(s0===peg$FAILED){s1=peg$FAILED;if(peg$silentFails===0){peg$fail(peg$c101)}}return
 s0}function peg$parse_(){var 
s0;s0=peg$parsewhitespace();if(s0===peg$FAILED){s0=peg$parsecomment()}return 
s0}var _=require("lodash");var 
directed;peg$result=peg$startRuleFunction();if(peg$result!==peg$FAILED&&peg$currPos===input.length){return
 
peg$result}else{if(peg$result!==peg$FAILED&&peg$currPos<input.length){peg$fail({type:"end",description:"end
 of input"})}throw 
peg$buildException(null,peg$maxFailExpected,peg$maxFailPos)}}return{SyntaxError:SyntaxError,parse:parse}}()},{lodash:28}],5:[function(require,module,exports){var
 
_=require("lodash"),grammar=require("./dot-grammar"),buildGraph=require("./build-graph");module.exports=function
 readMany(str){var parseTree=grammar.parse(str);return 
_.map(parseTree,buildGraph)}},{"./build-graph":3,"./dot-grammar":4,lodash:28}],6:[function(require,module,exports){var
 grammar=require("./dot-grammar"),buildGraph=requir
 e("./build-graph");module.exports=function readOne(str){var 
parseTree=grammar.parse(str,{startRule:"graphStmt"});return 
buildGraph(parseTree)}},{"./build-graph":3,"./dot-grammar":4}],7:[function(require,module,exports){module.exports="0.5.2"},{}],8:[function(require,module,exports){var
 _=require("lodash");module.exports=writeOne;var 
UNESCAPED_ID_PATTERN=/^[a-zA-Z\200-\377_][a-zA-Z\200-\377_0-9]*$/;function 
writeOne(g){var ec=g.isDirected()?"->":"--",writer=new 
Writer;if(!g.isMultigraph()){writer.write("strict 
")}writer.writeLine((g.isDirected()?"digraph":"graph")+" 
{");writer.indent();var 
graphAttrs=g.graph();if(_.isObject(graphAttrs)){_.each(graphAttrs,function(v,k){writer.writeLine(id(k)+"="+id(v)+";")})}writeSubgraph(g,undefined,writer);g.edges().forEach(function(edge){writeEdge(g,edge,ec,writer)});writer.unindent();writer.writeLine("}");return
 writer.toString()}function writeSubgraph(g,v,writer){var 
children=g.isCompound()?g.children(v):g.nodes();_.each(children,function(w){if(!
 
g.isCompound()||!g.children(w).length){writeNode(g,w,writer)}else{writer.writeLine("subgraph
 "+id(w)+" 
{");writer.indent();if(_.isObject(g.node(w))){_.map(g.node(w),function(val,key){writer.writeLine(id(key)+"="+id(val)+";")})}writeSubgraph(g,w,writer);writer.unindent();writer.writeLine("}")}})}function
 
writeNode(g,v,writer){writer.write(id(v));writeAttrs(g.node(v),writer);writer.writeLine()}function
 writeEdge(g,edge,ec,writer){var 
v=edge.v,w=edge.w,attrs=g.edge(edge);writer.write(id(v)+" "+ec+" 
"+id(w));writeAttrs(attrs,writer);writer.writeLine()}function 
writeAttrs(attrs,writer){if(_.isObject(attrs)){var 
attrStrs=_.map(attrs,function(val,key){return 
id(key)+"="+id(val)});if(attrStrs.length){writer.write(" 
["+attrStrs.join(",")+"]")}}}function id(obj){if(typeof 
obj==="number"||obj.toString().match(UNESCAPED_ID_PATTERN)){return 
obj}return'"'+obj.toString().replace(/"/g,'\\"')+'"'}function 
Writer(){this._indent="";this._content="";this._shouldIndent=true}Writer.prototype.INDENT="
  ";
 
Writer.prototype.indent=function(){this._indent+=this.INDENT};Writer.prototype.unindent=function(){this._indent=this._indent.slice(this.INDENT.length)};Writer.prototype.writeLine=function(line){this.write((line||"")+"\n");this._shouldIndent=true};Writer.prototype.write=function(str){if(this._shouldIndent){this._shouldIndent=false;this._content+=this._indent}this._content+=str};Writer.prototype.toString=function(){return
 this._content}},{lodash:28}],9:[function(require,module,exports){var 
_=require("lodash");module.exports=_.clone(require("./lib"));module.exports.json=require("./lib/json");module.exports.alg=require("./lib/alg")},{"./lib":25,"./lib/alg":16,"./lib/json":26,lodash:28}],10:[function(require,module,exports){var
 _=require("lodash");module.exports=components;function components(g){var 
visited={},cmpts=[],cmpt;function 
dfs(v){if(_.has(visited,v))return;visited[v]=true;cmpt.push(v);_.each(g.successors(v),dfs);_.each(g.predecessors(v),dfs)}_.each(g.nodes(),function(v){cmpt=[]
 ;dfs(v);if(cmpt.length){cmpts.push(cmpt)}});return 
cmpts}},{lodash:28}],11:[function(require,module,exports){var 
_=require("lodash");module.exports=dfs;function 
dfs(g,vs,order){if(!_.isArray(vs)){vs=[vs]}var 
acc=[],visited={};_.each(vs,function(v){if(!g.hasNode(v)){throw new 
Error("Graph does not have node: 
"+v)}doDfs(g,v,order==="post",visited,acc)});return acc}function 
doDfs(g,v,postorder,visited,acc){if(!_.has(visited,v)){visited[v]=true;if(!postorder){acc.push(v)}_.each(g.neighbors(v),function(w){doDfs(g,w,postorder,visited,acc)});if(postorder){acc.push(v)}}}},{lodash:28}],12:[function(require,module,exports){var
 
dijkstra=require("./dijkstra"),_=require("lodash");module.exports=dijkstraAll;function
 dijkstraAll(g,weightFunc,edgeFunc){return 
_.transform(g.nodes(),function(acc,v){acc[v]=dijkstra(g,v,weightFunc,edgeFunc)},{})}},{"./dijkstra":13,lodash:28}],13:[function(require,module,exports){var
 
_=require("lodash"),PriorityQueue=require("../data/priority-queue");module.exports=dijk
 stra;var DEFAULT_WEIGHT_FUNC=_.constant(1);function 
dijkstra(g,source,weightFn,edgeFn){return 
runDijkstra(g,String(source),weightFn||DEFAULT_WEIGHT_FUNC,edgeFn||function(v){return
 g.outEdges(v)})}function runDijkstra(g,source,weightFn,edgeFn){var 
results={},pq=new PriorityQueue,v,vEntry;var updateNeighbors=function(edge){var 
w=edge.v!==v?edge.v:edge.w,wEntry=results[w],weight=weightFn(edge),distance=vEntry.distance+weight;if(weight<0){throw
 new Error("dijkstra does not allow negative edge weights. "+"Bad edge: 
"+edge+" Weight: 
"+weight)}if(distance<wEntry.distance){wEntry.distance=distance;wEntry.predecessor=v;pq.decrease(w,distance)}};g.nodes().forEach(function(v){var
 
distance=v===source?0:Number.POSITIVE_INFINITY;results[v]={distance:distance};pq.add(v,distance)});while(pq.size()>0){v=pq.removeMin();vEntry=results[v];if(vEntry.distance===Number.POSITIVE_INFINITY){break}edgeFn(v).forEach(updateNeighbors)}return
 results}},{"../data/priority-queue":23,lodash:28}],14:[function(require
 ,module,exports){var 
_=require("lodash"),tarjan=require("./tarjan");module.exports=findCycles;function
 findCycles(g){return _.filter(tarjan(g),function(cmpt){return 
cmpt.length>1})}},{"./tarjan":21,lodash:28}],15:[function(require,module,exports){var
 _=require("lodash");module.exports=floydWarshall;var 
DEFAULT_WEIGHT_FUNC=_.constant(1);function 
floydWarshall(g,weightFn,edgeFn){return 
runFloydWarshall(g,weightFn||DEFAULT_WEIGHT_FUNC,edgeFn||function(v){return 
g.outEdges(v)})}function runFloydWarshall(g,weightFn,edgeFn){var 
results={},nodes=g.nodes();nodes.forEach(function(v){results[v]={};results[v][v]={distance:0};nodes.forEach(function(w){if(v!==w){results[v][w]={distance:Number.POSITIVE_INFINITY}}});edgeFn(v).forEach(function(edge){var
 
w=edge.v===v?edge.w:edge.v,d=weightFn(edge);results[v][w]={distance:d,predecessor:v}})});nodes.forEach(function(k){var
 rowK=results[k];nodes.forEach(function(i){var 
rowI=results[i];nodes.forEach(function(j){var ik=rowI[k];var kj=rowK[j];var 
ij=rowI[
 j];var 
altDistance=ik.distance+kj.distance;if(altDistance<ij.distance){ij.distance=altDistance;ij.predecessor=kj.predecessor}})})});return
 
results}},{lodash:28}],16:[function(require,module,exports){module.exports={components:require("./components"),dijkstra:require("./dijkstra"),dijkstraAll:require("./dijkstra-all"),findCycles:require("./find-cycles"),floydWarshall:require("./floyd-warshall"),isAcyclic:require("./is-acyclic"),postorder:require("./postorder"),preorder:require("./preorder"),prim:require("./prim"),tarjan:require("./tarjan"),topsort:require("./topsort")}},{"./components":10,"./dijkstra":13,"./dijkstra-all":12,"./find-cycles":14,"./floyd-warshall":15,"./is-acyclic":17,"./postorder":18,"./preorder":19,"./prim":20,"./tarjan":21,"./topsort":22}],17:[function(require,module,exports){var
 topsort=require("./topsort");module.exports=isAcyclic;function 
isAcyclic(g){try{topsort(g)}catch(e){if(e instanceof 
topsort.CycleException){return false}throw e}return true}},{"./topsort":22
 }],18:[function(require,module,exports){var 
dfs=require("./dfs");module.exports=postorder;function postorder(g,vs){return 
dfs(g,vs,"post")}},{"./dfs":11}],19:[function(require,module,exports){var 
dfs=require("./dfs");module.exports=preorder;function preorder(g,vs){return 
dfs(g,vs,"pre")}},{"./dfs":11}],20:[function(require,module,exports){var 
_=require("lodash"),Graph=require("../graph"),PriorityQueue=require("../data/priority-queue");module.exports=prim;function
 prim(g,weightFunc){var result=new Graph,parents={},pq=new 
PriorityQueue,v;function updateNeighbors(edge){var 
w=edge.v===v?edge.w:edge.v,pri=pq.priority(w);if(pri!==undefined){var 
edgeWeight=weightFunc(edge);if(edgeWeight<pri){parents[w]=v;pq.decrease(w,edgeWeight)}}}if(g.nodeCount()===0){return
 
result}_.each(g.nodes(),function(v){pq.add(v,Number.POSITIVE_INFINITY);result.setNode(v)});pq.decrease(g.nodes()[0],0);var
 
init=false;while(pq.size()>0){v=pq.removeMin();if(_.has(parents,v)){result.setEdge(v,parents[v])}else
 if(init)
 {throw new Error("Input graph is not connected: 
"+g)}else{init=true}g.nodeEdges(v).forEach(updateNeighbors)}return 
result}},{"../data/priority-queue":23,"../graph":24,lodash:28}],21:[function(require,module,exports){var
 _=require("lodash");module.exports=tarjan;function tarjan(g){var 
index=0,stack=[],visited={},results=[];function dfs(v){var 
entry=visited[v]={onStack:true,lowlink:index,index:index++};stack.push(v);g.successors(v).forEach(function(w){if(!_.has(visited,w)){dfs(w);entry.lowlink=Math.min(entry.lowlink,visited[w].lowlink)}else
 
if(visited[w].onStack){entry.lowlink=Math.min(entry.lowlink,visited[w].index)}});if(entry.lowlink===entry.index){var
 
cmpt=[],w;do{w=stack.pop();visited[w].onStack=false;cmpt.push(w)}while(v!==w);results.push(cmpt)}}g.nodes().forEach(function(v){if(!_.has(visited,v)){dfs(v)}});return
 results}},{lodash:28}],22:[function(require,module,exports){var 
_=require("lodash");module.exports=topsort;topsort.CycleException=CycleException;function
 topsort(g){var
  visited={},stack={},results=[];function 
visit(node){if(_.has(stack,node)){throw new 
CycleException}if(!_.has(visited,node)){stack[node]=true;visited[node]=true;_.each(g.predecessors(node),visit);delete
 
stack[node];results.push(node)}}_.each(g.sinks(),visit);if(_.size(visited)!==g.nodeCount()){throw
 new CycleException}return results}function 
CycleException(){}},{lodash:28}],23:[function(require,module,exports){var 
_=require("lodash");module.exports=PriorityQueue;function 
PriorityQueue(){this._arr=[];this._keyIndices={}}PriorityQueue.prototype.size=function(){return
 this._arr.length};PriorityQueue.prototype.keys=function(){return 
this._arr.map(function(x){return 
x.key})};PriorityQueue.prototype.has=function(key){return 
_.has(this._keyIndices,key)};PriorityQueue.prototype.priority=function(key){var 
index=this._keyIndices[key];if(index!==undefined){return 
this._arr[index].priority}};PriorityQueue.prototype.min=function(){if(this.size()===0){throw
 new Error("Queue underflow")}return thi
 s._arr[0].key};PriorityQueue.prototype.add=function(key,priority){var 
keyIndices=this._keyIndices;key=String(key);if(!_.has(keyIndices,key)){var 
arr=this._arr;var 
index=arr.length;keyIndices[key]=index;arr.push({key:key,priority:priority});this._decrease(index);return
 true}return 
false};PriorityQueue.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var
 min=this._arr.pop();delete this._keyIndices[min.key];this._heapify(0);return 
min.key};PriorityQueue.prototype.decrease=function(key,priority){var 
index=this._keyIndices[key];if(priority>this._arr[index].priority){throw new 
Error("New priority is greater than current priority. "+"Key: "+key+" Old: 
"+this._arr[index].priority+" New: 
"+priority)}this._arr[index].priority=priority;this._decrease(index)};PriorityQueue.prototype._heapify=function(i){var
 arr=this._arr;var 
l=2*i,r=l+1,largest=i;if(l<arr.length){largest=arr[l].priority<arr[largest].priority?l:largest;if(r<arr.length){largest=arr[r].priority<arr[largest].priority
 
?r:largest}if(largest!==i){this._swap(i,largest);this._heapify(largest)}}};PriorityQueue.prototype._decrease=function(index){var
 arr=this._arr;var priority=arr[index].priority;var 
parent;while(index!==0){parent=index>>1;if(arr[parent].priority<priority){break}this._swap(index,parent);index=parent}};PriorityQueue.prototype._swap=function(i,j){var
 arr=this._arr;var keyIndices=this._keyIndices;var origArrI=arr[i];var 
origArrJ=arr[j];arr[i]=origArrJ;arr[j]=origArrI;keyIndices[origArrJ.key]=i;keyIndices[origArrI.key]=j}},{lodash:28}],24:[function(require,module,exports){"use
 strict";var _=require("lodash");module.exports=Graph;var 
DEFAULT_EDGE_NAME="\x00",GRAPH_NODE="\x00",EDGE_KEY_DELIM="";function 
Graph(opts){this._isDirected=_.has(opts,"directed")?opts.directed:true;this._isMultigraph=_.has(opts,"multigraph")?opts.multigraph:false;this._isCompound=_.has(opts,"compound")?opts.compound:false;this._label=undefined;this._defaultNodeLabelFn=_.constant(undefined);this._defaultEdgeLabelFn=_
 
.constant(undefined);this._nodes={};if(this._isCompound){this._parent={};this._children={};this._children[GRAPH_NODE]={}}this._in={};this._preds={};this._out={};this._sucs={};this._edgeObjs={};this._edgeLabels={}}Graph.prototype._nodeCount=0;Graph.prototype._edgeCount=0;Graph.prototype.isDirected=function(){return
 this._isDirected};Graph.prototype.isMultigraph=function(){return 
this._isMultigraph};Graph.prototype.isCompound=function(){return 
this._isCompound};Graph.prototype.setGraph=function(label){this._label=label;return
 this};Graph.prototype.graph=function(){return 
this._label};Graph.prototype.setDefaultNodeLabel=function(newDefault){if(!_.isFunction(newDefault)){newDefault=_.constant(newDefault)}this._defaultNodeLabelFn=newDefault;return
 this};Graph.prototype.nodeCount=function(){return 
this._nodeCount};Graph.prototype.nodes=function(){return 
_.keys(this._nodes)};Graph.prototype.sources=function(){return 
_.filter(this.nodes(),function(v){return _.isEmpty(this._in[v])},this)};Gr
 aph.prototype.sinks=function(){return _.filter(this.nodes(),function(v){return 
_.isEmpty(this._out[v])},this)};Graph.prototype.setNodes=function(vs,value){var 
args=arguments;_.each(vs,function(v){if(args.length>1){this.setNode(v,value)}else{this.setNode(v)}},this);return
 
this};Graph.prototype.setNode=function(v,value){if(_.has(this._nodes,v)){if(arguments.length>1){this._nodes[v]=value}return
 
this}this._nodes[v]=arguments.length>1?value:this._defaultNodeLabelFn(v);if(this._isCompound){this._parent[v]=GRAPH_NODE;this._children[v]={};this._children[GRAPH_NODE][v]=true}this._in[v]={};this._preds[v]={};this._out[v]={};this._sucs[v]={};++this._nodeCount;return
 this};Graph.prototype.node=function(v){return 
this._nodes[v]};Graph.prototype.hasNode=function(v){return 
_.has(this._nodes,v)};Graph.prototype.removeNode=function(v){var 
self=this;if(_.has(this._nodes,v)){var 
removeEdge=function(e){self.removeEdge(self._edgeObjs[e])};delete 
this._nodes[v];if(this._isCompound){this._removeFromParent
 sChildList(v);delete 
this._parent[v];_.each(this.children(v),function(child){this.setParent(child)},this);delete
 this._children[v]}_.each(_.keys(this._in[v]),removeEdge);delete 
this._in[v];delete 
this._preds[v];_.each(_.keys(this._out[v]),removeEdge);delete 
this._out[v];delete this._sucs[v];--this._nodeCount}return 
this};Graph.prototype.setParent=function(v,parent){if(!this._isCompound){throw 
new Error("Cannot set parent in a non-compound 
graph")}if(_.isUndefined(parent)){parent=GRAPH_NODE}else{for(var 
ancestor=parent;!_.isUndefined(ancestor);ancestor=this.parent(ancestor)){if(ancestor===v){throw
 new Error("Setting "+parent+" as parent of "+v+" would create create a 
cycle")}}this.setNode(parent)}this.setNode(v);this._removeFromParentsChildList(v);this._parent[v]=parent;this._children[parent][v]=true;return
 this};Graph.prototype._removeFromParentsChildList=function(v){delete 
this._children[this._parent[v]][v]};Graph.prototype.parent=function(v){if(this._isCompound){var
 parent=this._p
 arent[v];if(parent!==GRAPH_NODE){return 
parent}}};Graph.prototype.children=function(v){if(_.isUndefined(v)){v=GRAPH_NODE}if(this._isCompound){var
 children=this._children[v];if(children){return _.keys(children)}}else 
if(v===GRAPH_NODE){return this.nodes()}else 
if(this.hasNode(v)){return[]}};Graph.prototype.predecessors=function(v){var 
predsV=this._preds[v];if(predsV){return 
_.keys(predsV)}};Graph.prototype.successors=function(v){var 
sucsV=this._sucs[v];if(sucsV){return 
_.keys(sucsV)}};Graph.prototype.neighbors=function(v){var 
preds=this.predecessors(v);if(preds){return 
_.union(preds,this.successors(v))}};Graph.prototype.setDefaultEdgeLabel=function(newDefault){if(!_.isFunction(newDefault)){newDefault=_.constant(newDefault)}this._defaultEdgeLabelFn=newDefault;return
 this};Graph.prototype.edgeCount=function(){return 
this._edgeCount};Graph.prototype.edges=function(){return 
_.values(this._edgeObjs)};Graph.prototype.setPath=function(vs,value){var 
self=this,args=arguments;_.reduce(vs,funct
 
ion(v,w){if(args.length>1){self.setEdge(v,w,value)}else{self.setEdge(v,w)}return
 w});return this};Graph.prototype.setEdge=function(v,w,value,name){var 
valueSpecified=arguments.length>2;if(_.isPlainObject(arguments[0])){v=arguments[0].v;w=arguments[0].w;name=arguments[0].name;if(arguments.length===2){value=arguments[1];valueSpecified=true}}var
 
e=edgeArgsToId(this._isDirected,v,w,name);if(_.has(this._edgeLabels,e)){if(valueSpecified){this._edgeLabels[e]=value}return
 this}if(!_.isUndefined(name)&&!this._isMultigraph){throw new Error("Cannot set 
a named edge when isMultigraph = 
false")}this.setNode(v);this.setNode(w);this._edgeLabels[e]=valueSpecified?value:this._defaultEdgeLabelFn(v,w,name);var
 
edgeObj=edgeArgsToObj(this._isDirected,v,w,name);v=edgeObj.v;w=edgeObj.w;Object.freeze(edgeObj);this._edgeObjs[e]=edgeObj;incrementOrInitEntry(this._preds[w],v);incrementOrInitEntry(this._sucs[v],w);this._in[w][e]=edgeObj;this._out[v][e]=edgeObj;this._edgeCount++;return
 this};Graph.prototype.edg
 e=function(v,w,name){var 
e=arguments.length===1?edgeObjToId(this._isDirected,arguments[0]):edgeArgsToId(this._isDirected,v,w,name);return
 this._edgeLabels[e]};Graph.prototype.hasEdge=function(v,w,name){var 
e=arguments.length===1?edgeObjToId(this._isDirected,arguments[0]):edgeArgsToId(this._isDirected,v,w,name);return
 _.has(this._edgeLabels,e)};Graph.prototype.removeEdge=function(v,w,name){var 
e=arguments.length===1?edgeObjToId(this._isDirected,arguments[0]):edgeArgsToId(this._isDirected,v,w,name),edge=this._edgeObjs[e];if(edge){v=edge.v;w=edge.w;delete
 this._edgeLabels[e];delete 
this._edgeObjs[e];decrementOrRemoveEntry(this._preds[w],v);decrementOrRemoveEntry(this._sucs[v],w);delete
 this._in[w][e];delete this._out[v][e];this._edgeCount--}return 
this};Graph.prototype.inEdges=function(v,u){var inV=this._in[v];if(inV){var 
edges=_.values(inV);if(!u){return edges}return 
_.filter(edges,function(edge){return 
edge.v===u})}};Graph.prototype.outEdges=function(v,w){var 
outV=this._out[v];if(out
 V){var edges=_.values(outV);if(!w){return edges}return 
_.filter(edges,function(edge){return 
edge.w===w})}};Graph.prototype.nodeEdges=function(v,w){var 
inEdges=this.inEdges(v,w);if(inEdges){return 
inEdges.concat(this.outEdges(v,w))}};function 
incrementOrInitEntry(map,k){if(_.has(map,k)){map[k]++}else{map[k]=1}}function 
decrementOrRemoveEntry(map,k){if(!--map[k]){delete map[k]}}function 
edgeArgsToId(isDirected,v,w,name){if(!isDirected&&v>w){var 
tmp=v;v=w;w=tmp}return 
v+EDGE_KEY_DELIM+w+EDGE_KEY_DELIM+(_.isUndefined(name)?DEFAULT_EDGE_NAME:name)}function
 edgeArgsToObj(isDirected,v,w,name){if(!isDirected&&v>w){var 
tmp=v;v=w;w=tmp}var edgeObj={v:v,w:w};if(name){edgeObj.name=name}return 
edgeObj}function edgeObjToId(isDirected,edgeObj){return 
edgeArgsToId(isDirected,edgeObj.v,edgeObj.w,edgeObj.name)}},{lodash:28}],25:[function(require,module,exports){module.exports={Graph:require("./graph"),version:require("./version")}},{"./graph":24,"./version":27}],26:[function(require,module,exports){v
 ar 
_=require("lodash"),Graph=require("./graph");module.exports={write:write,read:read};function
 write(g){var 
json={options:{directed:g.isDirected(),multigraph:g.isMultigraph(),compound:g.isCompound()},nodes:writeNodes(g),edges:writeEdges(g)};if(!_.isUndefined(g.graph())){json.value=_.clone(g.graph())}return
 json}function writeNodes(g){return _.map(g.nodes(),function(v){var 
nodeValue=g.node(v),parent=g.parent(v),node={v:v};if(!_.isUndefined(nodeValue)){node.value=nodeValue}if(!_.isUndefined(parent)){node.parent=parent}return
 node})}function writeEdges(g){return _.map(g.edges(),function(e){var 
edgeValue=g.edge(e),edge={v:e.v,w:e.w};if(!_.isUndefined(e.name)){edge.name=e.name}if(!_.isUndefined(edgeValue)){edge.value=edgeValue}return
 edge})}function read(json){var g=new 
Graph(json.options).setGraph(json.value);_.each(json.nodes,function(entry){g.setNode(entry.v,entry.value);if(entry.parent){g.setParent(entry.v,entry.parent)}});_.each(json.edges,function(entry){g.setEdge({v:entry.v,w:ent
 ry.w,name:entry.name},entry.value)});return 
g}},{"./graph":24,lodash:28}],27:[function(require,module,exports){module.exports="0.8.1"},{}],28:[function(require,module,exports){(function(global){(function(){var
 undefined;var arrayPool=[],objectPool=[];var idCounter=0;var keyPrefix=+new 
Date+"";var largeArraySize=75;var maxPoolSize=40;var whitespace="        \f 
"+"\n\r\u2028\u2029"+" ᠎              ";var 
reEmptyStringLeading=/\b__p \+= '';/g,reEmptyStringMiddle=/\b(__p \+=) '' 
\+/g,reEmptyStringTrailing=/(__e\(.*?\)|\b__t\)) \+\n'';/g;var 
reEsTemplate=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;var reFlags=/\w*$/;var 
reFuncName=/^\s*function[ \n\r\t]+\w/;var reInterpolate=/<%=([\s\S]+?)%>/g;var 
reLeadingSpacesAndZeros=RegExp("^["+whitespace+"]*0+(?=.$)");var 
reNoMatch=/($^)/;var reThis=/\bthis\b/;var 
reUnescapedString=/['\n\r\t\u2028\u2029\\]/g;var 
contextProps=["Array","Boolean","Date","Function","Math","Number","Object","RegExp","String","_","attachEvent","clear
 Timeout","isFinite","isNaN","parseInt","setTimeout"];var templateCounter=0;var 
argsClass="[object Arguments]",arrayClass="[object Array]",boolClass="[object 
Boolean]",dateClass="[object Date]",funcClass="[object 
Function]",numberClass="[object Number]",objectClass="[object 
Object]",regexpClass="[object RegExp]",stringClass="[object String]";var 
cloneableClasses={};cloneableClasses[funcClass]=false;cloneableClasses[argsClass]=cloneableClasses[arrayClass]=cloneableClasses[boolClass]=cloneableClasses[dateClass]=cloneableClasses[numberClass]=cloneableClasses[objectClass]=cloneableClasses[regexpClass]=cloneableClasses[stringClass]=true;var
 debounceOptions={leading:false,maxWait:0,trailing:false};var 
descriptor={configurable:false,enumerable:false,value:null,writable:false};var 
objectTypes={"boolean":false,"function":true,object:true,number:false,string:false,undefined:false};var
 stringEscapes={"\\":"\\","'":"'","\n":"n","\r":"r","    
":"t","\u2028":"u2028","\u2029":"u2029"};var root=objectT
 ypes[typeof window]&&window||this;var freeExports=objectTypes[typeof 
exports]&&exports&&!exports.nodeType&&exports;var freeModule=objectTypes[typeof 
module]&&module&&!module.nodeType&&module;var 
moduleExports=freeModule&&freeModule.exports===freeExports&&freeExports;var 
freeGlobal=objectTypes[typeof 
global]&&global;if(freeGlobal&&(freeGlobal.global===freeGlobal||freeGlobal.window===freeGlobal)){root=freeGlobal}function
 baseIndexOf(array,value,fromIndex){var 
index=(fromIndex||0)-1,length=array?array.length:0;while(++index<length){if(array[index]===value){return
 index}}return-1}function cacheIndexOf(cache,value){var type=typeof 
value;cache=cache.cache;if(type=="boolean"||value==null){return 
cache[value]?0:-1}if(type!="number"&&type!="string"){type="object"}var 
key=type=="number"?value:keyPrefix+value;cache=(cache=cache[type])&&cache[key];return
 type=="object"?cache&&baseIndexOf(cache,value)>-1?0:-1:cache?0:-1}function 
cachePush(value){var cache=this.cache,type=typeof value;if(type=="b
 
oolean"||value==null){cache[value]=true}else{if(type!="number"&&type!="string"){type="object"}var
 
key=type=="number"?value:keyPrefix+value,typeCache=cache[type]||(cache[type]={});if(type=="object"){(typeCache[key]||(typeCache[key]=[])).push(value)}else{typeCache[key]=true}}}function
 charAtCallback(value){return value.charCodeAt(0)}function 
compareAscending(a,b){var 
ac=a.criteria,bc=b.criteria,index=-1,length=ac.length;while(++index<length){var 
value=ac[index],other=bc[index];if(value!==other){if(value>other||typeof 
value=="undefined"){return 1}if(value<other||typeof 
other=="undefined"){return-1}}}return a.index-b.index}function 
createCache(array){var 
index=-1,length=array.length,first=array[0],mid=array[length/2|0],last=array[length-1];if(first&&typeof
 first=="object"&&mid&&typeof mid=="object"&&last&&typeof 
last=="object"){return false}var 
cache=getObject();cache["false"]=cache["null"]=cache["true"]=cache["undefined"]=false;var
 result=getObject();result.array=array;result.cache=cac
 
he;result.push=cachePush;while(++index<length){result.push(array[index])}return 
result}function 
escapeStringChar(match){return"\\"+stringEscapes[match]}function 
getArray(){return arrayPool.pop()||[]}function getObject(){return 
objectPool.pop()||{array:null,cache:null,criteria:null,"false":false,index:0,"null":false,number:null,object:null,push:null,string:null,"true":false,undefined:false,value:null}}function
 
releaseArray(array){array.length=0;if(arrayPool.length<maxPoolSize){arrayPool.push(array)}}function
 releaseObject(object){var 
cache=object.cache;if(cache){releaseObject(cache)}object.array=object.cache=object.criteria=object.object=object.number=object.string=object.value=null;if(objectPool.length<maxPoolSize){objectPool.push(object)}}function
 slice(array,start,end){start||(start=0);if(typeof 
end=="undefined"){end=array?array.length:0}var 
index=-1,length=end-start||0,result=Array(length<0?0:length);while(++index<length){result[index]=array[start+index]}return
 result}function ru
 
nInContext(context){context=context?_.defaults(root.Object(),context,_.pick(root,contextProps)):root;var
 
Array=context.Array,Boolean=context.Boolean,Date=context.Date,Function=context.Function,Math=context.Math,Number=context.Number,Object=context.Object,RegExp=context.RegExp,String=context.String,TypeError=context.TypeError;
+var arrayRef=[];var objectProto=Object.prototype;var oldDash=context._;var 
toString=objectProto.toString;var 
reNative=RegExp("^"+String(toString).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString|
 for [^\]]+/g,".*?")+"$");var 
ceil=Math.ceil,clearTimeout=context.clearTimeout,floor=Math.floor,fnToString=Function.prototype.toString,getPrototypeOf=isNative(getPrototypeOf=Object.getPrototypeOf)&&getPrototypeOf,hasOwnProperty=objectProto.hasOwnProperty,push=arrayRef.push,setTimeout=context.setTimeout,splice=arrayRef.splice,unshift=arrayRef.unshift;var
 defineProperty=function(){try{var 
o={},func=isNative(func=Object.defineProperty)&&func,result=func(o,o,o)&&func}catch(e){}return
 result}();var 
nativeCreate=isNative(nativeCreate=Object.create)&&nativeCreate,nativeIsArray=isNative(nativeIsArray=Array.isArray)&&nativeIsArray,nativeIsFinite=context.isFinite,nativeIsNaN=context.isNaN,nativeKeys=isNative(nativeKeys=Object.keys)&&nativeKeys,nativeMax=Math.max,nativeMin=Math.min,nativeParseIn
 t=context.parseInt,nativeRandom=Math.random;var 
ctorByClass={};ctorByClass[arrayClass]=Array;ctorByClass[boolClass]=Boolean;ctorByClass[dateClass]=Date;ctorByClass[funcClass]=Function;ctorByClass[objectClass]=Object;ctorByClass[numberClass]=Number;ctorByClass[regexpClass]=RegExp;ctorByClass[stringClass]=String;function
 lodash(value){return value&&typeof 
value=="object"&&!isArray(value)&&hasOwnProperty.call(value,"__wrapped__")?value:new
 lodashWrapper(value)}function 
lodashWrapper(value,chainAll){this.__chain__=!!chainAll;this.__wrapped__=value}lodashWrapper.prototype=lodash.prototype;var
 
support=lodash.support={};support.funcDecomp=!isNative(context.WinRTError)&&reThis.test(runInContext);support.funcNames=typeof
 
Function.name=="string";lodash.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:reInterpolate,variable:"",imports:{_:lodash}};function
 baseBind(bindData){var 
func=bindData[0],partialArgs=bindData[2],thisArg=bindData[4];function 
bound(){if(pa
 rtialArgs){var args=slice(partialArgs);push.apply(args,arguments)}if(this 
instanceof bound){var 
thisBinding=baseCreate(func.prototype),result=func.apply(thisBinding,args||arguments);return
 isObject(result)?result:thisBinding}return 
func.apply(thisArg,args||arguments)}setBindData(bound,bindData);return 
bound}function baseClone(value,isDeep,callback,stackA,stackB){if(callback){var 
result=callback(value);if(typeof result!="undefined"){return result}}var 
isObj=isObject(value);if(isObj){var 
className=toString.call(value);if(!cloneableClasses[className]){return 
value}var ctor=ctorByClass[className];switch(className){case boolClass:case 
dateClass:return new ctor(+value);case numberClass:case stringClass:return new 
ctor(value);case 
regexpClass:result=ctor(value.source,reFlags.exec(value));result.lastIndex=value.lastIndex;return
 result}}else{return value}var isArr=isArray(value);if(isDeep){var 
initedStack=!stackA;stackA||(stackA=getArray());stackB||(stackB=getArray());var 
length=stackA.lengt
 h;while(length--){if(stackA[length]==value){return 
stackB[length]}}result=isArr?ctor(value.length):{}}else{result=isArr?slice(value):assign({},value)}if(isArr){if(hasOwnProperty.call(value,"index")){result.index=value.index}if(hasOwnProperty.call(value,"input")){result.input=value.input}}if(!isDeep){return
 
result}stackA.push(value);stackB.push(result);(isArr?forEach:forOwn)(value,function(objValue,key){result[key]=baseClone(objValue,isDeep,callback,stackA,stackB)});if(initedStack){releaseArray(stackA);releaseArray(stackB)}return
 result}function baseCreate(prototype,properties){return 
isObject(prototype)?nativeCreate(prototype):{}}if(!nativeCreate){baseCreate=function(){function
 Object(){}return 
function(prototype){if(isObject(prototype)){Object.prototype=prototype;var 
result=new Object;Object.prototype=null}return 
result||context.Object()}}()}function 
baseCreateCallback(func,thisArg,argCount){if(typeof func!="function"){return 
identity}if(typeof thisArg=="undefined"||!("prototype"in
  func)){return func}var bindData=func.__bindData__;if(typeof 
bindData=="undefined"){if(support.funcNames){bindData=!func.name}bindData=bindData||!support.funcDecomp;if(!bindData){var
 
source=fnToString.call(func);if(!support.funcNames){bindData=!reFuncName.test(source)}if(!bindData){bindData=reThis.test(source);setBindData(func,bindData)}}}if(bindData===false||bindData!==true&&bindData[1]&1){return
 func}switch(argCount){case 1:return function(value){return 
func.call(thisArg,value)};case 2:return function(a,b){return 
func.call(thisArg,a,b)};case 3:return function(value,index,collection){return 
func.call(thisArg,value,index,collection)};case 4:return 
function(accumulator,value,index,collection){return 
func.call(thisArg,accumulator,value,index,collection)}}return 
bind(func,thisArg)}function baseCreateWrapper(bindData){var 
func=bindData[0],bitmask=bindData[1],partialArgs=bindData[2],partialRightArgs=bindData[3],thisArg=bindData[4],arity=bindData[5];var
 isBind=bitmask&1,isBindKey=bitmask&
 2,isCurry=bitmask&4,isCurryBound=bitmask&8,key=func;function bound(){var 
thisBinding=isBind?thisArg:this;if(partialArgs){var 
args=slice(partialArgs);push.apply(args,arguments)}if(partialRightArgs||isCurry){args||(args=slice(arguments));if(partialRightArgs){push.apply(args,partialRightArgs)}if(isCurry&&args.length<arity){bitmask|=16&~32;return
 
baseCreateWrapper([func,isCurryBound?bitmask:bitmask&~3,args,null,thisArg,arity])}}args||(args=arguments);if(isBindKey){func=thisBinding[key]}if(this
 instanceof bound){thisBinding=baseCreate(func.prototype);var 
result=func.apply(thisBinding,args);return 
isObject(result)?result:thisBinding}return 
func.apply(thisBinding,args)}setBindData(bound,bindData);return bound}function 
baseDifference(array,values){var 
index=-1,indexOf=getIndexOf(),length=array?array.length:0,isLarge=length>=largeArraySize&&indexOf===baseIndexOf,result=[];if(isLarge){var
 
cache=createCache(values);if(cache){indexOf=cacheIndexOf;values=cache}else{isLarge=false}}while(++index<l
 ength){var 
value=array[index];if(indexOf(values,value)<0){result.push(value)}}if(isLarge){releaseObject(values)}return
 result}function baseFlatten(array,isShallow,isStrict,fromIndex){var 
index=(fromIndex||0)-1,length=array?array.length:0,result=[];while(++index<length){var
 value=array[index];if(value&&typeof value=="object"&&typeof 
value.length=="number"&&(isArray(value)||isArguments(value))){if(!isShallow){value=baseFlatten(value,isShallow,isStrict)}var
 
valIndex=-1,valLength=value.length,resIndex=result.length;result.length+=valLength;while(++valIndex<valLength){result[resIndex++]=value[valIndex]}}else
 if(!isStrict){result.push(value)}}return result}function 
baseIsEqual(a,b,callback,isWhere,stackA,stackB){if(callback){var 
result=callback(a,b);if(typeof 
result!="undefined"){return!!result}}if(a===b){return a!==0||1/a==1/b}var 
type=typeof a,otherType=typeof 
b;if(a===a&&!(a&&objectTypes[type])&&!(b&&objectTypes[otherType])){return 
false}if(a==null||b==null){return a===b}var className=
 
toString.call(a),otherClass=toString.call(b);if(className==argsClass){className=objectClass}if(otherClass==argsClass){otherClass=objectClass}if(className!=otherClass){return
 false}switch(className){case boolClass:case dateClass:return+a==+b;case 
numberClass:return a!=+a?b!=+b:a==0?1/a==1/b:a==+b;case regexpClass:case 
stringClass:return a==String(b)}var isArr=className==arrayClass;if(!isArr){var 
aWrapped=hasOwnProperty.call(a,"__wrapped__"),bWrapped=hasOwnProperty.call(b,"__wrapped__");if(aWrapped||bWrapped){return
 
baseIsEqual(aWrapped?a.__wrapped__:a,bWrapped?b.__wrapped__:b,callback,isWhere,stackA,stackB)}if(className!=objectClass){return
 false}var 
ctorA=a.constructor,ctorB=b.constructor;if(ctorA!=ctorB&&!(isFunction(ctorA)&&ctorA
 instanceof ctorA&&isFunction(ctorB)&&ctorB instanceof ctorB)&&("constructor"in 
a&&"constructor"in b)){return false}}var 
initedStack=!stackA;stackA||(stackA=getArray());stackB||(stackB=getArray());var 
length=stackA.length;while(length--){if(stackA[length]=
 =a){return stackB[length]==b}}var 
size=0;result=true;stackA.push(a);stackB.push(b);if(isArr){length=a.length;size=b.length;result=size==length;if(result||isWhere){while(size--){var
 
index=length,value=b[size];if(isWhere){while(index--){if(result=baseIsEqual(a[index],value,callback,isWhere,stackA,stackB)){break}}}else
 
if(!(result=baseIsEqual(a[size],value,callback,isWhere,stackA,stackB))){break}}}}else{forIn(b,function(value,key,b){if(hasOwnProperty.call(b,key)){size++;return
 
result=hasOwnProperty.call(a,key)&&baseIsEqual(a[key],value,callback,isWhere,stackA,stackB)}});if(result&&!isWhere){forIn(a,function(value,key,a){if(hasOwnProperty.call(a,key)){return
 
result=--size>-1}})}}stackA.pop();stackB.pop();if(initedStack){releaseArray(stackA);releaseArray(stackB)}return
 result}function 
baseMerge(object,source,callback,stackA,stackB){(isArray(source)?forEach:forOwn)(source,function(source,key){var
 
found,isArr,result=source,value=object[key];if(source&&((isArr=isArray(source))||isPlainObjec
 t(source))){var 
stackLength=stackA.length;while(stackLength--){if(found=stackA[stackLength]==source){value=stackB[stackLength];break}}if(!found){var
 isShallow;if(callback){result=callback(value,source);if(isShallow=typeof 
result!="undefined"){value=result}}if(!isShallow){value=isArr?isArray(value)?value:[]:isPlainObject(value)?value:{}}stackA.push(source);stackB.push(value);if(!isShallow){baseMerge(value,source,callback,stackA,stackB)}}}else{if(callback){result=callback(value,source);if(typeof
 result=="undefined"){result=source}}if(typeof 
result!="undefined"){value=result}}object[key]=value})}function 
baseRandom(min,max){return min+floor(nativeRandom()*(max-min+1))}function 
baseUniq(array,isSorted,callback){var 
index=-1,indexOf=getIndexOf(),length=array?array.length:0,result=[];var 
isLarge=!isSorted&&length>=largeArraySize&&indexOf===baseIndexOf,seen=callback||isLarge?getArray():result;if(isLarge){var
 
cache=createCache(seen);indexOf=cacheIndexOf;seen=cache}while(++index<length){var
 
 
value=array[index],computed=callback?callback(value,index,array):value;if(isSorted?!index||seen[seen.length-1]!==computed:indexOf(seen,computed)<0){if(callback||isLarge){seen.push(computed)}result.push(value)}}if(isLarge){releaseArray(seen.array);releaseObject(seen)}else
 if(callback){releaseArray(seen)}return result}function 
createAggregator(setter){return function(collection,callback,thisArg){var 
result={};callback=lodash.createCallback(callback,thisArg,3);var 
index=-1,length=collection?collection.length:0;if(typeof 
length=="number"){while(++index<length){var 
value=collection[index];setter(result,value,callback(value,index,collection),collection)}}else{forOwn(collection,function(value,key,collection){setter(result,value,callback(value,key,collection),collection)})}return
 result}}function 
createWrapper(func,bitmask,partialArgs,partialRightArgs,thisArg,arity){var 
isBind=bitmask&1,isBindKey=bitmask&2,isCurry=bitmask&4,isCurryBound=bitmask&8,isPartial=bitmask&16,isPartialRight=bitmask&
 32;if(!isBindKey&&!isFunction(func)){throw new 
TypeError}if(isPartial&&!partialArgs.length){bitmask&=~16;isPartial=partialArgs=false}if(isPartialRight&&!partialRightArgs.length){bitmask&=~32;isPartialRight=partialRightArgs=false}var
 
bindData=func&&func.__bindData__;if(bindData&&bindData!==true){bindData=slice(bindData);if(bindData[2]){bindData[2]=slice(bindData[2])}if(bindData[3]){bindData[3]=slice(bindData[3])}if(isBind&&!(bindData[1]&1)){bindData[4]=thisArg}if(!isBind&&bindData[1]&1){bitmask|=8}if(isCurry&&!(bindData[1]&4)){bindData[5]=arity}if(isPartial){push.apply(bindData[2]||(bindData[2]=[]),partialArgs)}if(isPartialRight){unshift.apply(bindData[3]||(bindData[3]=[]),partialRightArgs)}bindData[1]|=bitmask;return
 createWrapper.apply(null,bindData)}var 
creater=bitmask==1||bitmask===17?baseBind:baseCreateWrapper;return 
creater([func,bitmask,partialArgs,partialRightArgs,thisArg,arity])}function 
escapeHtmlChar(match){return htmlEscapes[match]}function getIndexOf(){var 
result=(result
 =lodash.indexOf)===indexOf?baseIndexOf:result;return result}function 
isNative(value){return typeof value=="function"&&reNative.test(value)}var 
setBindData=!defineProperty?noop:function(func,value){descriptor.value=value;defineProperty(func,"__bindData__",descriptor)};function
 shimIsPlainObject(value){var 
ctor,result;if(!(value&&toString.call(value)==objectClass)||(ctor=value.constructor,isFunction(ctor)&&!(ctor
 instanceof ctor))){return 
false}forIn(value,function(value,key){result=key});return typeof 
result=="undefined"||hasOwnProperty.call(value,result)}function 
unescapeHtmlChar(match){return htmlUnescapes[match]}function 
isArguments(value){return value&&typeof value=="object"&&typeof 
value.length=="number"&&toString.call(value)==argsClass||false}var 
isArray=nativeIsArray||function(value){return value&&typeof 
value=="object"&&typeof 
value.length=="number"&&toString.call(value)==arrayClass||false};var 
shimKeys=function(object){var 
index,iterable=object,result=[];if(!iterable)return 
 result;if(!objectTypes[typeof object])return result;for(index in 
iterable){if(hasOwnProperty.call(iterable,index)){result.push(index)}}return 
result};var 
keys=!nativeKeys?shimKeys:function(object){if(!isObject(object)){return[]}return
 nativeKeys(object)};var 
htmlEscapes={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};var 
htmlUnescapes=invert(htmlEscapes);var 
reEscapedHtml=RegExp("("+keys(htmlUnescapes).join("|")+")","g"),reUnescapedHtml=RegExp("["+keys(htmlEscapes).join("")+"]","g");var
 assign=function(object,source,guard){var 
index,iterable=object,result=iterable;if(!iterable)return result;var 
args=arguments,argsIndex=0,argsLength=typeof 
guard=="number"?2:args.length;if(argsLength>3&&typeof 
args[argsLength-2]=="function"){var 
callback=baseCreateCallback(args[--argsLength-1],args[argsLength--],2)}else 
if(argsLength>2&&typeof 
args[argsLength-1]=="function"){callback=args[--argsLength]}while(++argsIndex<argsLength){iterable=args[argsIndex];if(iterable&&objectTypes[typeof
 
 iterable]){var ownIndex=-1,ownProps=objectTypes[typeof 
iterable]&&keys(iterable),length=ownProps?ownProps.length:0;while(++ownIndex<length){index=ownProps[ownIndex];result[index]=callback?callback(result[index],iterable[index]):iterable[index]}}}return
 result};function clone(value,isDeep,callback,thisArg){if(typeof 
isDeep!="boolean"&&isDeep!=null){thisArg=callback;callback=isDeep;isDeep=false}return
 baseClone(value,isDeep,typeof 
callback=="function"&&baseCreateCallback(callback,thisArg,1))}function 
cloneDeep(value,callback,thisArg){return baseClone(value,true,typeof 
callback=="function"&&baseCreateCallback(callback,thisArg,1))}function 
create(prototype,properties){var result=baseCreate(prototype);return 
properties?assign(result,properties):result}var 
defaults=function(object,source,guard){var 
index,iterable=object,result=iterable;if(!iterable)return result;var 
args=arguments,argsIndex=0,argsLength=typeof 
guard=="number"?2:args.length;while(++argsIndex<argsLength){iterable=args[argsI
 ndex];if(iterable&&objectTypes[typeof iterable]){var 
ownIndex=-1,ownProps=objectTypes[typeof 
iterable]&&keys(iterable),length=ownProps?ownProps.length:0;while(++ownIndex<length){index=ownProps[ownIndex];if(typeof
 result[index]=="undefined")result[index]=iterable[index]}}}return 
result};function findKey(object,callback,thisArg){var 
result;callback=lodash.createCallback(callback,thisArg,3);forOwn(object,function(value,key,object){if(callback(value,key,object)){result=key;return
 false}});return result}function findLastKey(object,callback,thisArg){var 
result;callback=lodash.createCallback(callback,thisArg,3);forOwnRight(object,function(value,key,object){if(callback(value,key,object)){result=key;return
 false}});return result}var forIn=function(collection,callback,thisArg){var 
index,iterable=collection,result=iterable;if(!iterable)return 
result;if(!objectTypes[typeof iterable])return result;callback=callback&&typeof 
thisArg=="undefined"?callback:baseCreateCallback(callback,thisArg,3);for(
 index in 
iterable){if(callback(iterable[index],index,collection)===false)return 
result}return result};function forInRight(object,callback,thisArg){var 
pairs=[];forIn(object,function(value,key){pairs.push(key,value)});var 
length=pairs.length;callback=baseCreateCallback(callback,thisArg,3);while(length--){if(callback(pairs[length--],pairs[length],object)===false){break}}return
 object}var forOwn=function(collection,callback,thisArg){var 
index,iterable=collection,result=iterable;if(!iterable)return 
result;if(!objectTypes[typeof iterable])return result;callback=callback&&typeof 
thisArg=="undefined"?callback:baseCreateCallback(callback,thisArg,3);var 
ownIndex=-1,ownProps=objectTypes[typeof 
iterable]&&keys(iterable),length=ownProps?ownProps.length:0;while(++ownIndex<length){index=ownProps[ownIndex];if(callback(iterable[index],index,collection)===false)return
 result}return result};function forOwnRight(object,callback,thisArg){var 
props=keys(object),length=props.length;callback=baseCreateCal
 lback(callback,thisArg,3);while(length--){var 
key=props[length];if(callback(object[key],key,object)===false){break}}return 
object}function functions(object){var 
result=[];forIn(object,function(value,key){if(isFunction(value)){result.push(key)}});return
 result.sort()}function has(object,key){return 
object?hasOwnProperty.call(object,key):false}function invert(object){var 
index=-1,props=keys(object),length=props.length,result={};while(++index<length){var
 key=props[index];result[object[key]]=key}return result}function 
isBoolean(value){return value===true||value===false||value&&typeof 
value=="object"&&toString.call(value)==boolClass||false}function 
isDate(value){return value&&typeof 
value=="object"&&toString.call(value)==dateClass||false}function 
isElement(value){return value&&value.nodeType===1||false}function 
isEmpty(value){var result=true;if(!value){return result}var 
className=toString.call(value),length=value.length;if(className==arrayClass||className==stringClass||className==argsCla
 ss||className==objectClass&&typeof 
length=="number"&&isFunction(value.splice)){return!length}forOwn(value,function(){return
 result=false});return result}function isEqual(a,b,callback,thisArg){return 
baseIsEqual(a,b,typeof 
callback=="function"&&baseCreateCallback(callback,thisArg,2))}function 
isFinite(value){return 
nativeIsFinite(value)&&!nativeIsNaN(parseFloat(value))}function 
isFunction(value){return typeof value=="function"}function 
isObject(value){return!!(value&&objectTypes[typeof value])}function 
isNaN(value){return isNumber(value)&&value!=+value}function 
isNull(value){return value===null}function isNumber(value){return typeof 
value=="number"||value&&typeof 
value=="object"&&toString.call(value)==numberClass||false}var 
isPlainObject=!getPrototypeOf?shimIsPlainObject:function(value){if(!(value&&toString.call(value)==objectClass)){return
 false}var 
valueOf=value.valueOf,objProto=isNative(valueOf)&&(objProto=getPrototypeOf(valueOf))&&getPrototypeOf(objProto);return
 objProto?value==o
 bjProto||getPrototypeOf(value)==objProto:shimIsPlainObject(value)};function 
isRegExp(value){return value&&typeof 
value=="object"&&toString.call(value)==regexpClass||false}function 
isString(value){return typeof value=="string"||value&&typeof 
value=="object"&&toString.call(value)==stringClass||false}function 
isUndefined(value){return typeof value=="undefined"}function 
mapValues(object,callback,thisArg){var 
result={};callback=lodash.createCallback(callback,thisArg,3);forOwn(object,function(value,key,object){result[key]=callback(value,key,object)});return
 result}function merge(object){var 
args=arguments,length=2;if(!isObject(object)){return object}if(typeof 
args[2]!="number"){length=args.length}if(length>3&&typeof 
args[length-2]=="function"){var 
callback=baseCreateCallback(args[--length-1],args[length--],2)}else 
if(length>2&&typeof args[length-1]=="function"){callback=args[--length]}var 
sources=slice(arguments,1,length),index=-1,stackA=getArray(),stackB=getArray();while(++index<length){
 
baseMerge(object,sources[index],callback,stackA,stackB)}releaseArray(stackA);releaseArray(stackB);return
 object}function omit(object,callback,thisArg){var result={};if(typeof 
callback!="function"){var 
props=[];forIn(object,function(value,key){props.push(key)});props=baseDifference(props,baseFlatten(arguments,true,false,1));var
 index=-1,length=props.length;while(++index<length){var 
key=props[index];result[key]=object[key]}}else{callback=lodash.createCallback(callback,thisArg,3);forIn(object,function(value,key,object){if(!callback(value,key,object)){result[key]=value}})}return
 result}function pairs(object){var 
index=-1,props=keys(object),length=props.length,result=Array(length);while(++index<length){var
 key=props[index];result[index]=[key,object[key]]}return result}function 
pick(object,callback,thisArg){var result={};if(typeof callback!="function"){var 
index=-1,props=baseFlatten(arguments,true,false,1),length=isObject(object)?props.length:0;while(++index<length){var
 key=props[index];i
 f(key in 
object){result[key]=object[key]}}}else{callback=lodash.createCallback(callback,thisArg,3);forIn(object,function(value,key,object){if(callback(value,key,object)){result[key]=value}})}return
 result}function transform(object,callback,accumulator,thisArg){var 
isArr=isArray(object);if(accumulator==null){if(isArr){accumulator=[]}else{var 
ctor=object&&object.constructor,proto=ctor&&ctor.prototype;accumulator=baseCreate(proto)}}if(callback){callback=lodash.createCallback(callback,thisArg,4);(isArr?forEach:forOwn)(object,function(value,index,object){return
 callback(accumulator,value,index,object)})}return accumulator}function 
values(object){var 
index=-1,props=keys(object),length=props.length,result=Array(length);while(++index<length){result[index]=object[props[index]]}return
 result}function at(collection){var 
args=arguments,index=-1,props=baseFlatten(args,true,false,1),length=args[2]&&args[2][args[1]]===collection?1:props.length,result=Array(length);while(++index<length){result[inde
 x]=collection[props[index]]}return result}function 
contains(collection,target,fromIndex){var 
index=-1,indexOf=getIndexOf(),length=collection?collection.length:0,result=false;fromIndex=(fromIndex<0?nativeMax(0,length+fromIndex):fromIndex)||0;if(isArray(collection)){result=indexOf(collection,target,fromIndex)>-1}else
 if(typeof 
length=="number"){result=(isString(collection)?collection.indexOf(target,fromIndex):indexOf(collection,target,fromIndex))>-1}else{forOwn(collection,function(value){if(++index>=fromIndex){return!(result=value===target)}})}return
 result}var 
countBy=createAggregator(function(result,value,key){hasOwnProperty.call(result,key)?result[key]++:result[key]=1});function
 every(collection,callback,thisArg){var 
result=true;callback=lodash.createCallback(callback,thisArg,3);var 
index=-1,length=collection?collection.length:0;if(typeof 
length=="number"){while(++index<length){if(!(result=!!callback(collection[index],index,collection))){break}}}else{forOwn(collection,function(valu
 e,index,collection){return result=!!callback(value,index,collection)})}return 
result}function filter(collection,callback,thisArg){var 
result=[];callback=lodash.createCallback(callback,thisArg,3);var 
index=-1,length=collection?collection.length:0;if(typeof 
length=="number"){while(++index<length){var 
value=collection[index];if(callback(value,index,collection)){result.push(value)}}}else{forOwn(collection,function(value,index,collection){if(callback(value,index,collection)){result.push(value)}})}return
 result}function 
find(collection,callback,thisArg){callback=lodash.createCallback(callback,thisArg,3);var
 index=-1,length=collection?collection.length:0;if(typeof 
length=="number"){while(++index<length){var 
value=collection[index];if(callback(value,index,collection)){return 
value}}}else{var 
result;forOwn(collection,function(value,index,collection){if(callback(value,index,collection)){result=value;return
 false}});return result}}function findLast(collection,callback,thisArg){var 
result;callb
 
ack=lodash.createCallback(callback,thisArg,3);forEachRight(collection,function(value,index,collection){if(callback(value,index,collection)){result=value;return
 false}});return result}function forEach(collection,callback,thisArg){var 
index=-1,length=collection?collection.length:0;callback=callback&&typeof 
thisArg=="undefined"?callback:baseCreateCallback(callback,thisArg,3);if(typeof 
length=="number"){while(++index<length){if(callback(collection[index],index,collection)===false){break}}}else{forOwn(collection,callback)}return
 collection}function forEachRight(collection,callback,thisArg){var 
length=collection?collection.length:0;callback=callback&&typeof 
thisArg=="undefined"?callback:baseCreateCallback(callback,thisArg,3);if(typeof 
length=="number"){while(length--){if(callback(collection[length],length,c

<TRUNCATED>

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org
For additional commands, e-mail: commits-h...@spark.apache.org

Reply via email to