UNPKG

781 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/webpack/bootstrap","webpack://mermaid/./src/themes/dark/index.scss","webpack://mermaid/./src/themes/default/index.scss","webpack://mermaid/./src/themes/forest/index.scss","webpack://mermaid/./src/themes/neutral/index.scss","webpack://mermaid/./node_modules/css-loader/dist/runtime/api.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/./node_modules/process/browser.js","webpack://mermaid/(webpack)/buildin/module.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/parser/classDiagram.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/parser/flow.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/parser/gantt.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/parser/gitGraph.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/info/parser/info.js","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.js","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/themes sync ^\\.\\/.*\\/index\\.scss$","webpack://mermaid/./src/themes/dark/index.scss?3bd3","webpack://mermaid/./src/themes/default/index.scss?54ca","webpack://mermaid/./src/themes/forest/index.scss?3c73","webpack://mermaid/./src/themes/neutral/index.scss?dee9","webpack://mermaid/./src/utils.js","webpack://mermaid/external \"d3\"","webpack://mermaid/external \"dagre-d3-renderer\"","webpack://mermaid/external \"dagre-d3-renderer/lib/label/add-html-label.js\"","webpack://mermaid/external \"dagre-layout\"","webpack://mermaid/external \"graphlibrary\"","webpack://mermaid/external \"he\"","webpack://mermaid/external \"lodash\"","webpack://mermaid/external \"moment-mini\"","webpack://mermaid/external \"scope-css\""],"names":["relations","classes","addClass","id","methods","members","clear","getClass","getClasses","getRelations","addRelation","relation","logger","debug","JSON","stringify","id1","id2","push","addMember","className","member","theClass","substr","addMembers","MembersArr","Array","isArray","forEach","cleanupLabel","label","substring","trim","lineType","LINE","DOTTED_LINE","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","parser","yy","classDb","idCache","classCnt","conf","dividerMargin","padding","textHeight","getGraphId","keys","Object","i","length","undefined","insertMarkers","elem","append","attr","edgeCount","total","drawEdge","path","getRelationType","type","points","filter","p","Number","isNaN","y","lineData","lineFunction","d3","x","d","curve","svgPath","url","arrowMarkerAbsolute","window","location","protocol","host","pathname","search","replace","type1","type2","l","p1","Math","floor","p2","ceil","title","g","text","bounds","node","getBBox","insert","width","height","drawClass","classDef","info","addTspan","textEl","txt","isFirst","tSpan","classInfo","titleHeight","membersLine","membersBox","methodsLine","method","classBox","setConf","cnf","key","draw","parse","diagram","graphlib","Graph","multigraph","setGraph","isMultiGraph","setDefaultEdgeLabel","setNode","setEdge","dagre","layout","nodes","v","edges","e","edge","w","graph","o","k","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","trace","symbols_","terminals_","productions_","performAction","anonymous","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","console","warn","relationTitle1","relationTitle2","table","defaultActions","parseError","str","hash","recoverable","error","Error","input","self","stack","tstack","vstack","lstack","recovering","TERROR","EOF","args","slice","call","arguments","lexer","create","sharedState","prototype","hasOwnProperty","setInput","yylloc","yyloc","ranges","options","getPrototypeOf","popStack","n","lex","token","pop","symbol","preErrorSymbol","state","action","a","r","yyval","len","newState","expected","errStr","showPosition","join","match","line","loc","first_line","last_line","first_column","last_column","range","apply","concat","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","lines","unput","split","oldLines","more","reject","backtrack_lexer","less","pastInput","past","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","index","rules","_currentRules","flex","begin","condition","popState","conditions","topState","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","YYSTATE","Parser","exports","main","commonjsMain","log","process","exit","source","require","readFileSync","normalize","module","argv","vertices","subGraphs","subGraphLookup","tooltips","subCount","direction","funs","addVertex","style","styles","s","addLink","start","end","linktext","stroke","updateLinkInterpolate","positions","interp","pos","defaultInterpolate","interpolate","updateLink","defaultStyle","utils","isSubstringInArray","setDirection","dir","setClass","ids","setTooltip","tooltip","setClickFun","functionName","element","select","on","setLink","linkStr","link","getTooltip","setClickEvent","bindFunctions","fun","getDirection","getVertices","getEdges","setupToolTips","tooltipElem","_groups","svg","selectAll","el","rect","getBoundingClientRect","transition","duration","html","left","right","top","document","body","scrollTop","classed","addSubGraph","list","uniq","prims","objs","item","indexOf","nodeList","subGraph","getPosForId","secCount","posCrossRef","indexNodes2","result","count","posCount","childPos","res","getDepthFirstPos","indexNodes","getSubGraphs","addVertices","vert","svgId","styleFromStyleArr","styleStr","arr","vertex","classStr","vertexText","vertexNode","htmlLabels","addHtmlLabel","parentNode","removeChild","svgLabel","createElementNS","rows","j","tspan","setAttributeNS","setAttribute","textContent","appendChild","radious","_shape","labelType","shape","rx","ry","addEdges","cnt","toString","edgeData","arrowhead","interpolateToCurve","arrowheadStyle","labelpos","flowDb","flow","err","compound","rankdir","marginx","marginy","subG","setParent","Render","dagreD3","render","shapes","question","parent","bbox","h","shapeSvg","map","intersect","point","polygon","rect_left_inv_arrow","rect_right_inv_arrow","arrows","none","normal","marker","util","applyStyle","maxX","minX","maxY","minY","clusterRects","querySelectorAll","clusterEl","xPos","baseVal","value","yPos","cluster","te","labels","dim","insertBefore","firstChild","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","$VD","$VE","$VF","$VG","$VH","$VI","$VJ","$VK","$VL","$VM","$VN","$VO","$VP","$VQ","$VR","$VS","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","$Ve1","dateFormat","axisFormat","excludes","sections","tasks","currentSection","tags","taskCnt","lastTask","lastTaskID","rawTasks","setAxisFormat","getAxisFormat","setDateFormat","setExcludes","toLowerCase","setTitle","getTitle","addSection","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","isInvalidDate","date","isoWeekday","format","checkTaskDates","task","manualEndTime","startTime","moment","add","endTime","renderEndTime","fixTaskDates","toDate","invalid","getStartDate","prevTime","re","afterStatement","exec","findTaskById","dt","Date","setHours","mDate","isValid","getEndDate","durationStatement","parseId","idStr","compileData","prevTask","dataStr","ds","data","getTaskTags","endTimeData","parseData","prevTaskId","startData","taskDb","addTask","descr","rawTask","section","processed","raw","taskInfo","active","crit","milestone","addTaskOrg","newTask","description","compileTask","allProcessed","pushFun","open","functionArgs","argList","charAt","callbackFunction","matchFound","t","pattern","regex","RegExp","shift","ganttDb","titleTopMargin","barHeight","barGap","topPadding","rightPadding","leftPadding","gridLineStartPadding","fontSize","fontFamily","getElementById","parentElement","offsetWidth","useWidth","taskArray","timeScale","domain","rangeRound","categories","catsUnfiltered","checkUnique","makeGant","pageWidth","pageHeight","gap","colorScale","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","enter","numberSectionStyles","rectangles","secNum","taskClass","startX","endX","textWidth","taskType","xAxis","tickSize","tickFormat","numOccurances","prevGap","getCount","todayG","today","getCounts","obj","word","commits","head","branches","curBranch","seq","getRandomInt","min","max","random","getId","pool","isfastforwardable","currentCommit","otherCommit","isReachableFrom","currentSeq","otherSeq","setOptions","rawOptString","message","getOptions","commit","msg","branch","name","merge","otherBranch","checkout","reset","commitRef","ref","parentCount","parseInt","upsert","newval","splice","prettyPrintCommitHistory","commitArr","_","maxBy","newCommit","nextCommit","uniqBy","prettyPrint","getCommitsArray","getBranchesAsObjArray","branchArr","getBranches","getCommits","orderBy","getCurrentBranch","getHead","allCommitsDict","branchNum","config","nodeSpacing","nodeFillColor","nodeStrokeWidth","nodeStrokeColor","lineStrokeWidth","branchOffset","lineColor","leftMargin","branchColors","nodeRadius","nodeLabel","apiConfig","svgCreateDefs","svgDrawLine","colorIdx","color","lineGen","round","getElementCoords","coords","ctm","getCTM","xn","yn","f","svgDrawLineForCommits","fromId","toId","fromBbox","toBbox","lineStart","lineEnd","cloneNode","selector","renderCommitHistory","commitid","numCommits","size","branchName","renderLines","branchColor","lineDrawn","ver","gitGraphParser","db","assign","setMessage","getMessage","setInfo","inf","getInfo","infoParser","signalType","LINETYPE","ACTIVE_START","actor","ACTIVE_END","unshift","loopText","LOOP_START","LOOP_END","optText","OPT_START","OPT_END","altText","ALT_START","ALT_END","parText","PAR_START","PAR_END","PAR_AND","ALT_ELSE","placement","PLACEMENT","OVER","LEFTOF","RIGHTOF","from","to","SOLID_OPEN","DOTTED_OPEN","SOLID","DOTTED","SOLID_CROSS","DOTTED_CROSS","actors","messages","notes","addActor","old","addMessage","idFrom","idTo","answer","addSignal","messageType","getMessages","getActors","getActor","getActorKeys","NOTE","ARROWTYPE","FILLED","OPEN","addNote","note","titleText","param","sequenceDb","diagramMarginX","diagramMarginY","actorMargin","actorFontSize","actorFontFamily","boxMargin","boxTextMargin","noteMargin","messageMargin","mirrorActors","bottomMarginAdj","activationWidth","textPlacement","startx","stopx","starty","stopy","verticalPos","sequenceItems","activations","init","updateVal","val","updateBounds","_self","updateFn","updateItemBounds","_startx","_stopx","_starty","_stopy","newActivation","actorRect","stackedSize","actorActivations","anchored","svgDraw","anchorElement","endActivation","lastActorActivationIdx","activation","lastIndexOf","newLoop","endLoop","loop","addSectionToLoop","sectionTitles","getVerticalPos","bumpVerticalPos","bump","getBounds","_drawLongText","textObj","getTextObj","textMargin","dy","class","textElem","drawText","drawNote","forceWidth","getNoteRect","rectElem","drawRect","drawMessage","txtCenter","rightAngles","dx","drawActors","actorKeys","drawActor","actorFlowVerticaBounds","reduce","acc","insertArrowHead","insertArrowCrossHead","activeEnd","activationData","drawActivation","loopData","drawLoop","fromBounds","toBounds","fromIdx","toIdx","allBounds","box","actorLines","useMaxWidth","extraVertForTitle","rectData","fill","textData","nText","anchor","span","drawLabel","txtObject","genPoints","cut","labelMargin","actorCnt","center","_drawTextCandidateFunc","labelText","drawLoopLine","idx","defs","byText","content","textAttrs","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","LEVELS","fatal","setLogLevel","level","bind","time","mermaidAPI","getConfig","mermaid","sequenceConfig","callback","Node","startOnLoad","initialize","ganttConfig","gantt","getAttribute","now","innerHTML","he","decode","svgCode","contentLoaded","addEventListener","themes","themeName","theme","themeCSS","logLevel","flowchart","sequence","git","graphType","detectType","gitGraphAst","flowParser","sequenceParser","ganttParser","classParser","infoDb","encodeEntities","innerTxt","isInt","test","decodeEntities","cb","container","querySelector","flowRenderer","style1","createElement","scope","style2","cs","getComputedStyle","font","gitGraphRenderer","sequenceDiagram","sequenceRenderer","ganttRenderer","classRenderer","infoRenderer","pkg","version","remove","lvl1Keys","lvl2Keys","defaultCurve","curveName","toUpperCase"],"mappings":"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AACA;AACA,qDAAqD,cAAc;AACnE;AACA,C;;;;;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,IAAI;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,8BAA8B;AAClE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/NA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;ACvLtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAIA,SAAS,GAAG,EAAhB;AACA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,EAAL;AAAQ,mBAAO,CAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO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","file":"mermaid.core.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/mermaid.js\");\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #BDD5EA;\\n stroke: purple;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: lightgrey; }\\n\\n.edgePath .path {\\n stroke: lightgrey;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8; }\\n\\n.cluster rect {\\n fill: #6D6D65;\\n stroke: rgba(255, 255, 255, 0.25);\\n stroke-width: 1px; }\\n\\n.cluster text {\\n fill: #F9FFFE; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #6D6D65;\\n border: 1px solid rgba(255, 255, 255, 0.25);\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #81B1DB;\\n fill: #BDD5EA; }\\n\\ntext.actor {\\n fill: black;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: lightgrey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: lightgrey; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: lightgrey; }\\n\\n#arrowhead {\\n fill: lightgrey; }\\n\\n#crosshead path {\\n fill: lightgrey !important;\\n stroke: lightgrey !important; }\\n\\n.messageText {\\n fill: lightgrey;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #81B1DB;\\n fill: #BDD5EA; }\\n\\n.labelText {\\n fill: #323D47;\\n stroke: none; }\\n\\n.loopText {\\n fill: lightgrey;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n stroke: #81B1DB; }\\n\\n.note {\\n stroke: rgba(255, 255, 255, 0.25);\\n fill: #fff5ad; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n.activation0 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation1 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation2 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: rgba(255, 255, 255, 0.3); }\\n\\n.section2 {\\n fill: #EAE8B9; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle1 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle2 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle3 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: #DB5757;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: #323D47;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: #323D47;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Special case clickable */\\n.task.clickable {\\n cursor: pointer; }\\n\\n.taskText.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideLeft.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideRight.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: #323D47; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #BDD5EA;\\n stroke: rgba(255, 255, 255, 0.5); }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: lightgrey; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: lightgrey; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #81B1DB;\\n stroke: rgba(255, 255, 255, 0.5); }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: #323D47 !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: #323D47 !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #E83737;\\n fill: #E83737;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #E83737;\\n fill: #81B1DB;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #E83737;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.milestone {\\n transform: rotate(45deg) scale(0.8, 0.8); }\\n\\n.milestoneText {\\n font-style: italic; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: #323D47 !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: #323D47 !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: #323D47; }\\n\\ng.classGroup text {\\n fill: purple;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #BDD5EA;\\n stroke: purple; }\\n\\ng.classGroup line {\\n stroke: purple;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #BDD5EA;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: purple;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: purple;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #BDD5EA;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #BDD5EA;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: #333333; }\\n\\n.edgePath .path {\\n stroke: #333333;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8; }\\n\\n.cluster rect {\\n fill: #ffffde;\\n stroke: #aaaa33;\\n stroke-width: 1px; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #ffffde;\\n border: 1px solid #aaaa33;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #CCCCFF;\\n fill: #ECECFF; }\\n\\ntext.actor {\\n fill: black;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: grey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n#arrowhead {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333 !important;\\n stroke: #333 !important; }\\n\\n.messageText {\\n fill: #333;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #CCCCFF;\\n fill: #ECECFF; }\\n\\n.labelText {\\n fill: black;\\n stroke: none; }\\n\\n.loopText {\\n fill: black;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n stroke: #CCCCFF; }\\n\\n.note {\\n stroke: #aaaa33;\\n fill: #fff5ad; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n.activation0 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation1 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation2 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: rgba(102, 102, 255, 0.49); }\\n\\n.section2 {\\n fill: #fff400; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: red;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: black;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: black;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Special case clickable */\\n.task.clickable {\\n cursor: pointer; }\\n\\n.taskText.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideLeft.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideRight.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #8a90dd;\\n stroke: #534fbc; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: black; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: black; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #bfc7ff;\\n stroke: #534fbc; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: black !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: black !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #ff8888;\\n fill: red;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #ff8888;\\n fill: #bfc7ff;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #ff8888;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.milestone {\\n transform: rotate(45deg) scale(0.8, 0.8); }\\n\\n.milestoneText {\\n font-style: italic; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: black !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: black !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: black; }\\n\\ng.classGroup text {\\n fill: #9370DB;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #ECECFF;\\n stroke: #9370DB; }\\n\\ng.classGroup line {\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #ECECFF;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #9370DB;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #9370DB;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: green; }\\n\\n.edgePath .path {\\n stroke: green;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8; }\\n\\n.cluster rect {\\n fill: #cdffb2;\\n stroke: #6eaa49;\\n stroke-width: 1px; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #cdffb2;\\n border: 1px solid #6eaa49;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #13540c;\\n fill: #cde498; }\\n\\ntext.actor {\\n fill: black;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: grey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n#arrowhead {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333 !important;\\n stroke: #333 !important; }\\n\\n.messageText {\\n fill: #333;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #326932;\\n fill: #cde498; }\\n\\n.labelText {\\n fill: black;\\n stroke: none; }\\n\\n.loopText {\\n fill: black;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n stroke: #326932; }\\n\\n.note {\\n stroke: #6eaa49;\\n fill: #fff5ad; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n.activation0 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation1 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation2 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: #6eaa49; }\\n\\n.section2 {\\n fill: #6eaa49; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: red;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: black;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: black;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Special case clickable */\\n.task.clickable {\\n cursor: pointer; }\\n\\n.taskText.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideLeft.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideRight.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #487e3a;\\n stroke: #13540c; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: black; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: black; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #cde498;\\n stroke: #13540c; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: black !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: black !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #ff8888;\\n fill: red;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #ff8888;\\n fill: #cde498;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #ff8888;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.milestone {\\n transform: rotate(45deg) scale(0.8, 0.8); }\\n\\n.milestoneText {\\n font-style: italic; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: black !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: black !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: black; }\\n\\ng.classGroup text {\\n fill: #13540c;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #cde498;\\n stroke: #13540c; }\\n\\ng.classGroup line {\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #cde498;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #13540c;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #13540c;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: #333333; }\\n\\n.edgePath .path {\\n stroke: #666;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: white; }\\n\\n.cluster rect {\\n fill: #eaf2fb;\\n stroke: #26a;\\n stroke-width: 1px; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #eaf2fb;\\n border: 1px solid #26a;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #999;\\n fill: #eee; }\\n\\ntext.actor {\\n fill: #333;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: #666; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n#arrowhead {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333 !important;\\n stroke: #333 !important; }\\n\\n.messageText {\\n fill: #333;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #999;\\n fill: #eee; }\\n\\n.labelText {\\n fill: #333;\\n stroke: none; }\\n\\n.loopText {\\n fill: #333;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n stroke: #999; }\\n\\n.note {\\n stroke: #777700;\\n fill: #ffa; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n.activation0 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation1 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation2 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: #80b3e6; }\\n\\n.section2 {\\n fill: #80b3e6; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: #e6e6e6;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: #d42;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: #333;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: #333;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Special case clickable */\\n.task.clickable {\\n cursor: pointer; }\\n\\n.taskText.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideLeft.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideRight.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #26a;\\n stroke: #1a4d80; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: #333; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: #333; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #eee;\\n stroke: #1a4d80; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: #333 !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: #666;\\n fill: #bbb;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: #333 !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #b1361b;\\n fill: #d42;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #b1361b;\\n fill: #eee;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #b1361b;\\n fill: #bbb;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.milestone {\\n transform: rotate(45deg) scale(0.8, 0.8); }\\n\\n.milestoneText {\\n font-style: italic; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: #333 !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: #333 !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: #333; }\\n\\ng.classGroup text {\\n fill: #999;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #eee;\\n stroke: #999; }\\n\\ng.classGroup line {\\n stroke: #999;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #eee;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #999;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #999;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return '@media ' + item[2] + '{' + content + '}';\n } else {\n return content;\n }\n }).join('');\n }; // import a list of modules into the list\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (i = 0; i < modules.length; i++) {\n var item = modules[i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = '(' + item[2] + ') and (' + mediaQuery + ')';\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || '';\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n return '/*# ' + data + ' */';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\nimport { logger } from '../../logger'\n\nlet relations = []\nlet classes = {}\n\n/**\n * Function called by parser when a node definition has been found.\n * @param id\n * @param text\n * @param type\n * @param style\n */\nexport const addClass = function (id) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = {\n id: id,\n methods: [],\n members: []\n }\n }\n}\n\nexport const clear = function () {\n relations = []\n classes = {}\n}\n\nexport const getClass = function (id) {\n return classes[id]\n}\nexport const getClasses = function () {\n return classes\n}\n\nexport const getRelations = function () {\n return relations\n}\n\nexport const addRelation = function (relation) {\n logger.debug('Adding relation: ' + JSON.stringify(relation))\n addClass(relation.id1)\n addClass(relation.id2)\n relations.push(relation)\n}\n\nexport const addMember = function (className, member) {\n const theClass = classes[className]\n if (typeof member === 'string') {\n if (member.substr(-1) === ')') {\n theClass.methods.push(member)\n } else {\n theClass.members.push(member)\n }\n }\n}\n\nexport const addMembers = function (className, MembersArr) {\n if (Array.isArray(MembersArr)) {\n MembersArr.forEach(member => addMember(className, member))\n }\n}\n\nexport const cleanupLabel = function (label) {\n if (label.substring(0, 1) === ':') {\n return label.substr(2).trim()\n } else {\n return label.trim()\n }\n}\n\nexport const lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n}\n\nexport const relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3\n}\n\nexport default {\n addClass,\n clear,\n getClass,\n getClasses,\n getRelations,\n addRelation,\n addMember,\n addMembers,\n cleanupLabel,\n lineType,\n relationType\n}\n","import * as d3 from 'd3'\nimport dagre from 'dagre-layout'\nimport graphlib from 'graphlibrary'\nimport { logger } from '../../logger'\nimport classDb from './classDb'\nimport { parser } from './parser/classDiagram'\n\nparser.yy = classDb\n\nconst idCache = {}\n\nlet classCnt = 0\nconst conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10\n}\n\n// Todo optimize\nconst getGraphId = function (label) {\n const keys = Object.keys(idCache)\n\n for (let i = 0; i < keys.length; i++) {\n if (idCache[keys[i]].label === label) {\n return keys[i]\n }\n }\n\n return undefined\n}\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nconst insertMarkers = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z')\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z') // this is actual shape for arrowhead\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z')\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z')\n}\n\nlet edgeCount = 0\nlet total = 0\nconst drawEdge = function (elem, path, relation) {\n const getRelationType = function (type) {\n switch (type) {\n case classDb.relationType.AGGREGATION:\n return 'aggregation'\n case classDb.relationType.EXTENSION:\n return 'extension'\n case classDb.relationType.COMPOSITION:\n return 'composition'\n case classDb.relationType.DEPENDENCY:\n return 'dependency'\n }\n }\n\n path.points = path.points.filter(p => !Number.isNaN(p.y))\n\n // The data for our line\n const lineData = path.points\n\n // This is the accessor function we talked about above\n const lineFunction = d3\n .line()\n .x(function (d) {\n return d.x\n })\n .y(function (d) {\n return d.y\n })\n .curve(d3.curveBasis)\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'relation')\n let url = ''\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search\n url = url.replace(/\\(/g, '\\\\(')\n url = url.replace(/\\)/g, '\\\\)')\n }\n\n if (relation.relation.type1 !== 'none') {\n svgPath.attr(\n 'marker-start',\n 'url(' +\n url +\n '#' +\n getRelationType(relation.relation.type1) +\n 'Start' +\n ')'\n )\n }\n if (relation.relation.type2 !== 'none') {\n svgPath.attr(\n 'marker-end',\n 'url(' +\n url +\n '#' +\n getRelationType(relation.relation.type2) +\n 'End' +\n ')'\n )\n }\n\n let x, y\n const l = path.points.length\n if (l % 2 !== 0 && l > 1) {\n const p1 = path.points[Math.floor(l / 2)]\n const p2 = path.points[Math.ceil(l / 2)]\n x = (p1.x + p2.x) / 2\n y = (p1.y + p2.y) / 2\n } else {\n const p = path.points[Math.floor(l / 2)]\n x = p.x\n y = p.y\n }\n\n if (typeof relation.title !== 'undefined') {\n const g = elem.append('g').attr('class', 'classLabel')\n const label = g\n .append('text')\n .attr('class', 'label')\n .attr('x', x)\n .attr('y', y)\n .attr('fill', 'red')\n .attr('text-anchor', 'middle')\n .text(relation.title)\n\n window.label = label\n const bounds = label.node().getBBox()\n\n g.insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', bounds.x - conf.padding / 2)\n .attr('y', bounds.y - conf.padding / 2)\n .attr('width', bounds.width + conf.padding)\n .attr('height', bounds.height + conf.padding)\n }\n\n edgeCount++\n}\n\nconst drawClass = function (elem, classDef) {\n logger.info('Rendering class ' + classDef)\n\n const addTspan = function (textEl, txt, isFirst) {\n const tSpan = textEl\n .append('tspan')\n .attr('x', conf.padding)\n .text(txt)\n if (!isFirst) {\n tSpan.attr('dy', conf.textHeight)\n }\n }\n\n const id = 'classId' + (classCnt % total)\n const classInfo = {\n id: id,\n label: classDef.id,\n width: 0,\n height: 0\n }\n\n const g = elem\n .append('g')\n .attr('id', id)\n .attr('class', 'classGroup')\n const title = g\n .append('text')\n .attr('x', conf.padding)\n .attr('y', conf.textHeight + conf.padding)\n .text(classDef.id)\n\n const titleHeight = title.node().getBBox().height\n\n const membersLine = g\n .append('line') // text label for the x axis\n .attr('x1', 0)\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin / 2)\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin / 2)\n\n const members = g\n .append('text') // text label for the x axis\n .attr('x', conf.padding)\n .attr('y', titleHeight + conf.dividerMargin + conf.textHeight)\n .attr('fill', 'white')\n .attr('class', 'classText')\n\n let isFirst = true\n classDef.members.forEach(function (member) {\n addTspan(members, member, isFirst)\n isFirst = false\n })\n\n const membersBox = members.node().getBBox()\n\n const methodsLine = g\n .append('line') // text label for the x axis\n .attr('x1', 0)\n .attr(\n 'y1',\n conf.padding + titleHeight + conf.dividerMargin + membersBox.height\n )\n .attr(\n 'y2',\n conf.padding + titleHeight + conf.dividerMargin + membersBox.height\n )\n\n const methods = g\n .append('text') // text label for the x axis\n .attr('x', conf.padding)\n .attr(\n 'y',\n titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight\n )\n .attr('fill', 'white')\n .attr('class', 'classText')\n\n isFirst = true\n\n classDef.methods.forEach(function (method) {\n addTspan(methods, method, isFirst)\n isFirst = false\n })\n\n const classBox = g.node().getBBox()\n g.insert('rect', ':first-child')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', classBox.width + 2 * conf.padding)\n .attr('height', classBox.height + conf.padding + 0.5 * conf.dividerMargin)\n\n membersLine.attr('x2', classBox.width + 2 * conf.padding)\n methodsLine.attr('x2', classBox.width + 2 * conf.padding)\n\n classInfo.width = classBox.width + 2 * conf.padding\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin\n\n idCache[id] = classInfo\n classCnt++\n return classInfo\n}\n\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf)\n\n keys.forEach(function (key) {\n conf[key] = cnf[key]\n })\n}\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function (text, id) {\n parser.yy.clear()\n parser.parse(text)\n\n logger.info('Rendering diagram ' + text)\n\n /// / Fetch the default direction, use TD if none was found\n const diagram = d3.select(`[id='${id}']`)\n insertMarkers(diagram)\n\n // Layout graph, Create a new directed graph\n const g = new graphlib.Graph({\n multigraph: true\n })\n\n // Set an object for the graph label\n g.setGraph({\n isMultiGraph: true\n })\n\n // Default to assigning a new object as a label for each new edge.\n g.setDefaultEdgeLabel(function () {\n return {}\n })\n\n const classes = classDb.getClasses()\n const keys = Object.keys(classes)\n total = keys.length\n for (let i = 0; i < keys.length; i++) {\n const classDef = classes[keys[i]]\n const node = drawClass(diagram, classDef)\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n g.setNode(node.id, node)\n logger.info('Org height: ' + node.height)\n }\n\n const relations = classDb.getRelations()\n relations.forEach(function (relation) {\n logger.info(\n 'tjoho' +\n getGraphId(relation.id1) +\n getGraphId(relation.id2) +\n JSON.stringify(relation)\n )\n g.setEdge(getGraphId(relation.id1), getGraphId(relation.id2), {\n relation: relation\n })\n })\n dagre.layout(g)\n g.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\n logger.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)))\n d3.select('#' + v).attr(\n 'transform',\n 'translate(' +\n (g.node(v).x - g.node(v).width / 2) +\n ',' +\n (g.node(v).y - g.node(v).height / 2) +\n ' )'\n )\n }\n })\n g.edges().forEach(function (e) {\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\n logger.debug(\n 'Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e))\n )\n drawEdge(diagram, g.edge(e), g.edge(e).relation)\n }\n })\n\n diagram.attr('height', '100%')\n diagram.attr('width', '100%')\n diagram.attr(\n 'viewBox',\n '0 0 ' + (g.graph().width + 20) + ' ' + (g.graph().height + 20)\n )\n}\n\nexport default {\n setConf,\n draw\n}\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,11],$V1=[1,12],$V2=[1,13],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[6,8],$V7=[1,26],$V8=[1,27],$V9=[1,28],$Va=[1,29],$Vb=[1,30],$Vc=[1,31],$Vd=[6,8,13,17,23,26,27,28,29,30,31],$Ve=[6,8,13,17,23,26,27,28,29,30,31,45,46,47],$Vf=[23,45,46,47],$Vg=[23,30,31,45,46,47],$Vh=[23,26,27,28,29,45,46,47],$Vi=[6,8,13],$Vj=[1,46];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"mermaidDoc\":3,\"graphConfig\":4,\"CLASS_DIAGRAM\":5,\"NEWLINE\":6,\"statements\":7,\"EOF\":8,\"statement\":9,\"className\":10,\"alphaNumToken\":11,\"relationStatement\":12,\"LABEL\":13,\"classStatement\":14,\"methodStatement\":15,\"CLASS\":16,\"STRUCT_START\":17,\"members\":18,\"STRUCT_STOP\":19,\"MEMBER\":20,\"SEPARATOR\":21,\"relation\":22,\"STR\":23,\"relationType\":24,\"lineType\":25,\"AGGREGATION\":26,\"EXTENSION\":27,\"COMPOSITION\":28,\"DEPENDENCY\":29,\"LINE\":30,\"DOTTED_LINE\":31,\"commentToken\":32,\"textToken\":33,\"graphCodeTokens\":34,\"textNoTagsToken\":35,\"TAGSTART\":36,\"TAGEND\":37,\"==\":38,\"--\":39,\"PCT\":40,\"DEFAULT\":41,\"SPACE\":42,\"MINUS\":43,\"keywords\":44,\"UNICODE_TEXT\":45,\"NUM\":46,\"ALPHA\":47,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"CLASS_DIAGRAM\",6:\"NEWLINE\",8:\"EOF\",13:\"LABEL\",16:\"CLASS\",17:\"STRUCT_START\",19:\"STRUCT_STOP\",20:\"MEMBER\",21:\"SEPARATOR\",23:\"STR\",26:\"AGGREGATION\",27:\"EXTENSION\",28:\"COMPOSITION\",29:\"DEPENDENCY\",30:\"LINE\",31:\"DOTTED_LINE\",34:\"graphCodeTokens\",36:\"TAGSTART\",37:\"TAGEND\",38:\"==\",39:\"--\",40:\"PCT\",41:\"DEFAULT\",42:\"SPACE\",43:\"MINUS\",44:\"keywords\",45:\"UNICODE_TEXT\",46:\"NUM\",47:\"ALPHA\"},\nproductions_: [0,[3,1],[4,4],[7,1],[7,2],[7,3],[10,2],[10,1],[9,1],[9,2],[9,1],[9,1],[14,2],[14,5],[18,1],[18,2],[15,1],[15,2],[15,1],[15,1],[12,3],[12,4],[12,4],[12,5],[22,3],[22,2],[22,2],[22,1],[24,1],[24,1],[24,1],[24,1],[25,1],[25,1],[32,1],[32,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[35,1],[35,1],[35,1],[35,1],[11,1],[11,1],[11,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 7:\n this.$=$$[$0]; \nbreak;\ncase 8:\n yy.addRelation($$[$0]); \nbreak;\ncase 9:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 12:\nyy.addClass($$[$0]);\nbreak;\ncase 13:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addClass($$[$0-3]);yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 14:\n this.$ = [$$[$0]]; \nbreak;\ncase 15:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 16:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 17:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 18:\nconsole.warn('Member',$$[$0]);\nbreak;\ncase 19:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 20:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 21:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 22:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 23:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 24:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 25:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 26:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 27:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 28:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 29:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 30:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 31:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 32:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 33:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\n}\n},\ntable: [{3:1,4:2,5:[1,3]},{1:[3]},{1:[2,1]},{6:[1,4]},{7:5,9:6,10:10,11:14,12:7,14:8,15:9,16:$V0,20:$V1,21:$V2,45:$V3,46:$V4,47:$V5},{8:[1,18]},{6:[1,19],8:[2,3]},o($V6,[2,8],{13:[1,20]}),o($V6,[2,10]),o($V6,[2,11]),o($V6,[2,16],{22:21,24:24,25:25,13:[1,23],23:[1,22],26:$V7,27:$V8,28:$V9,29:$Va,30:$Vb,31:$Vc}),{10:32,11:14,45:$V3,46:$V4,47:$V5},o($V6,[2,18]),o($V6,[2,19]),o($Vd,[2,7],{11:14,10:33,45:$V3,46:$V4,47:$V5}),o($Ve,[2,47]),o($Ve,[2,48]),o($Ve,[2,49]),{1:[2,2]},{7:34,8:[2,4],9:6,10:10,11:14,12:7,14:8,15:9,16:$V0,20:$V1,21:$V2,45:$V3,46:$V4,47:$V5},o($V6,[2,9]),{10:35,11:14,23:[1,36],45:$V3,46:$V4,47:$V5},{22:37,24:24,25:25,26:$V7,27:$V8,28:$V9,29:$Va,30:$Vb,31:$Vc},o($V6,[2,17]),{25:38,30:$Vb,31:$Vc},o($Vf,[2,27],{24:39,26:$V7,27:$V8,28:$V9,29:$Va}),o($Vg,[2,28]),o($Vg,[2,29]),o($Vg,[2,30]),o($Vg,[2,31]),o($Vh,[2,32]),o($Vh,[2,33]),o($V6,[2,12],{17:[1,40]}),o($Vd,[2,6]),{8:[2,5]},o($Vi,[2,20]),{10:41,11:14,45:$V3,46:$V4,47:$V5},{10:42,11:14,23:[1,43],45:$V3,46:$V4,47:$V5},o($Vf,[2,26],{24:44,26:$V7,27:$V8,28:$V9,29:$Va}),o($Vf,[2,25]),{18:45,20:$Vj},o($Vi,[2,22]),o($Vi,[2,21]),{10:47,11:14,45:$V3,46:$V4,47:$V5},o($Vf,[2,24]),{19:[1,48]},{18:49,19:[2,14],20:$Vj},o($Vi,[2,23]),o($V6,[2,13]),{19:[2,15]}],\ndefaultActions: {2:[2,1],18:[2,2],34:[2,5],49:[2,15]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* do nothing */\nbreak;\ncase 1:return 6;\nbreak;\ncase 2:/* skip whitespace */\nbreak;\ncase 3:return 5;\nbreak;\ncase 4: this.begin(\"struct\"); /*console.log('Starting struct');*/return 17;\nbreak;\ncase 5: /*console.log('Ending struct');*/this.popState(); return 19;\nbreak;\ncase 6:/* nothing */\nbreak;\ncase 7: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 8:return 16;\nbreak;\ncase 9:this.begin(\"string\");\nbreak;\ncase 10:this.popState();\nbreak;\ncase 11:return \"STR\";\nbreak;\ncase 12:return 27;\nbreak;\ncase 13:return 27;\nbreak;\ncase 14:return 29;\nbreak;\ncase 15:return 29;\nbreak;\ncase 16:return 28;\nbreak;\ncase 17:return 26;\nbreak;\ncase 18:return 30;\nbreak;\ncase 19:return 31;\nbreak;\ncase 20:return 13;\nbreak;\ncase 21:return 43;\nbreak;\ncase 22:return 'DOT';\nbreak;\ncase 23:return 'PLUS';\nbreak;\ncase 24:return 40;\nbreak;\ncase 25:return 'EQUALS';\nbreak;\ncase 26:return 'EQUALS';\nbreak;\ncase 27:return 47;\nbreak;\ncase 28:return 'PUNCTUATION';\nbreak;\ncase 29:return 46;\nbreak;\ncase 30:return 45;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 8;\nbreak;\n}\n},\nrules: [/^(?:%%[^\\n]*)/,/^(?:\\n+)/,/^(?:\\s+)/,/^(?:classDiagram\\b)/,/^(?:[\\{])/,/^(?:\\})/,/^(?:[\\n])/,/^(?:[^\\{\\}\\n]*)/,/^(?:class\\b)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::[^#\\n;]+)/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:[A-Za-z]+)/,/^(?:[!\"#$%&'*+,-.`?\\\\_\\/])/,/^(?:[0-9]+)/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"string\":{\"rules\":[10,11],\"inclusive\":false},\"struct\":{\"rules\":[5,6,7],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,8,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import * as d3 from 'd3'\n\nimport { logger } from '../../logger'\nimport utils from '../../utils'\n\nlet vertices = {}\nlet edges = []\nlet classes = []\nlet subGraphs = []\nlet subGraphLookup = {}\nlet tooltips = {}\nlet subCount = 0\nlet direction\n// Functions to be run after graph rendering\nlet funs = []\n/**\n * Function called by parser when a node definition has been found\n * @param id\n * @param text\n * @param type\n * @param style\n * @param classes\n */\nexport const addVertex = function (id, text, type, style, classes) {\n let txt\n\n if (typeof id === 'undefined') {\n return\n }\n if (id.trim().length === 0) {\n return\n }\n\n if (typeof vertices[id] === 'undefined') {\n vertices[id] = { id: id, styles: [], classes: [] }\n }\n if (typeof text !== 'undefined') {\n txt = text.trim()\n\n // strip quotes if string starts and exnds with a quote\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1)\n }\n\n vertices[id].text = txt\n }\n if (typeof type !== 'undefined') {\n vertices[id].type = type\n }\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function (s) {\n vertices[id].styles.push(s)\n })\n }\n }\n if (typeof classes !== 'undefined') {\n if (classes !== null) {\n classes.forEach(function (s) {\n vertices[id].classes.push(s)\n })\n }\n }\n}\n\n/**\n * Function called by parser when a link/edge definition has been found\n * @param start\n * @param end\n * @param type\n * @param linktext\n */\nexport const addLink = function (start, end, type, linktext) {\n logger.info('Got edge...', start, end)\n const edge = { start: start, end: end, type: undefined, text: '' }\n linktext = type.text\n\n if (typeof linktext !== 'undefined') {\n edge.text = linktext.trim()\n\n // strip quotes if string starts and exnds with a quote\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1)\n }\n }\n\n if (typeof type !== 'undefined') {\n edge.type = type.type\n edge.stroke = type.stroke\n }\n edges.push(edge)\n}\n\n/**\n * Updates a link's line interpolation algorithm\n * @param pos\n * @param interpolate\n */\nexport const updateLinkInterpolate = function (positions, interp) {\n positions.forEach(function (pos) {\n if (pos === 'default') {\n edges.defaultInterpolate = interp\n } else {\n edges[pos].interpolate = interp\n }\n })\n}\n\n/**\n * Updates a link with a style\n * @param pos\n * @param style\n */\nexport const updateLink = function (positions, style) {\n positions.forEach(function (pos) {\n if (pos === 'default') {\n edges.defaultStyle = style\n } else {\n if (utils.isSubstringInArray('fill', style) === -1) {\n style.push('fill:none')\n }\n edges[pos].style = style\n }\n })\n}\n\nexport const addClass = function (id, style) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = { id: id, styles: [] }\n }\n\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function (s) {\n classes[id].styles.push(s)\n })\n }\n }\n}\n\n/**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n * @param dir\n */\nexport const setDirection = function (dir) {\n direction = dir\n}\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function (ids, className) {\n ids.split(',').forEach(function (id) {\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].classes.push(className)\n }\n\n if (typeof subGraphLookup[id] !== 'undefined') {\n subGraphLookup[id].classes.push(className)\n }\n })\n}\n\nconst setTooltip = function (ids, tooltip) {\n ids.split(',').forEach(function (id) {\n if (typeof tooltip !== 'undefined') {\n tooltips[id] = tooltip\n }\n })\n}\n\nconst setClickFun = function (id, functionName) {\n if (typeof functionName === 'undefined') {\n return\n }\n if (typeof vertices[id] !== 'undefined') {\n funs.push(function (element) {\n const elem = d3.select(element).select(`[id=\"${id}\"]`)\n if (elem !== null) {\n elem.on('click', function () {\n window[functionName](id)\n })\n }\n })\n }\n}\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param tooltip Tooltip for the clickable element\n */\nexport const setLink = function (ids, linkStr, tooltip) {\n ids.split(',').forEach(function (id) {\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].link = linkStr\n }\n })\n setTooltip(ids, tooltip)\n setClass(ids, 'clickable')\n}\nexport const getTooltip = function (id) {\n return tooltips[id]\n}\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param tooltip Tooltip for the clickable element\n */\nexport const setClickEvent = function (ids, functionName, tooltip) {\n ids.split(',').forEach(function (id) { setClickFun(id, functionName) })\n setTooltip(ids, tooltip)\n setClass(ids, 'clickable')\n}\n\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element)\n })\n}\nexport const getDirection = function () {\n return direction\n}\n/**\n * Retrieval function for fetching the found nodes after parsing has completed.\n * @returns {{}|*|vertices}\n */\nexport const getVertices = function () {\n return vertices\n}\n\n/**\n * Retrieval function for fetching the found links after parsing has completed.\n * @returns {{}|*|edges}\n */\nexport const getEdges = function () {\n return edges\n}\n\n/**\n * Retrieval function for fetching the found class definitions after parsing has completed.\n * @returns {{}|*|classes}\n */\nexport const getClasses = function () {\n return classes\n}\n\nconst setupToolTips = function (element) {\n let tooltipElem = d3.select('.mermaidTooltip')\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = d3.select('body')\n .append('div')\n .attr('class', 'mermaidTooltip')\n .style('opacity', 0)\n }\n\n const svg = d3.select(element).select('svg')\n\n const nodes = svg.selectAll('g.node')\n nodes\n .on('mouseover', function () {\n const el = d3.select(this)\n const title = el.attr('title')\n // Dont try to draw a tooltip if no data is provided\n if (title === null) {\n return\n }\n const rect = this.getBoundingClientRect()\n\n tooltipElem.transition()\n .duration(200)\n .style('opacity', '.9')\n tooltipElem.html(el.attr('title'))\n .style('left', (rect.left + (rect.right - rect.left) / 2) + 'px')\n .style('top', (rect.top - 14 + document.body.scrollTop) + 'px')\n el.classed('hover', true)\n })\n .on('mouseout', function () {\n tooltipElem.transition()\n .duration(500)\n .style('opacity', 0)\n const el = d3.select(this)\n el.classed('hover', false)\n })\n}\nfuns.push(setupToolTips)\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const clear = function () {\n vertices = {}\n classes = {}\n edges = []\n funs = []\n funs.push(setupToolTips)\n subGraphs = []\n subGraphLookup = {}\n subCount = 0\n tooltips = []\n}\n/**\n *\n * @returns {string}\n */\nexport const defaultStyle = function () {\n return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;'\n}\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const addSubGraph = function (id, list, title) {\n function uniq (a) {\n const prims = { 'boolean': {}, 'number': {}, 'string': {} }\n const objs = []\n\n return a.filter(function (item) {\n const type = typeof item\n if (item.trim() === '') {\n return false\n }\n if (type in prims) { return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true) } else { return objs.indexOf(item) >= 0 ? false : objs.push(item) }\n })\n }\n\n let nodeList = []\n\n nodeList = uniq(nodeList.concat.apply(nodeList, list))\n\n id = id || ('subGraph' + subCount)\n title = title || ''\n subCount = subCount + 1\n const subGraph = { id: id, nodes: nodeList, title: title.trim(), classes: [] }\n subGraphs.push(subGraph)\n subGraphLookup[id] = subGraph\n return id\n}\n\nconst getPosForId = function (id) {\n for (let i = 0; i < subGraphs.length; i++) {\n if (subGraphs[i].id === id) {\n return i\n }\n }\n return -1\n}\nlet secCount = -1\nconst posCrossRef = []\nconst indexNodes2 = function (id, pos) {\n const nodes = subGraphs[pos].nodes\n secCount = secCount + 1\n if (secCount > 2000) {\n return\n }\n posCrossRef[secCount] = pos\n // Check if match\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n }\n }\n\n let count = 0\n let posCount = 1\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count])\n // Ignore regular nodes (pos will be -1)\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos)\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n }\n } else {\n posCount = posCount + res.count\n }\n }\n count = count + 1\n }\n\n return {\n result: false,\n count: posCount\n }\n}\n\nexport const getDepthFirstPos = function (pos) {\n return posCrossRef[pos]\n}\nexport const indexNodes = function () {\n secCount = -1\n if (subGraphs.length > 0) {\n indexNodes2('none', subGraphs.length - 1, 0)\n }\n}\n\nexport const getSubGraphs = function () {\n return subGraphs\n}\n\nexport default {\n addVertex,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs\n}\n","import graphlib from 'graphlibrary'\nimport * as d3 from 'd3'\n\nimport flowDb from './flowDb'\nimport flow from './parser/flow'\nimport dagreD3 from 'dagre-d3-renderer'\nimport addHtmlLabel from 'dagre-d3-renderer/lib/label/add-html-label.js'\nimport { logger } from '../../logger'\nimport { interpolateToCurve } from '../../utils'\n\nconst conf = {\n}\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf)\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]]\n }\n}\n\n/**\n * Function that adds the vertices found in the graph definition to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\nexport const addVertices = function (vert, g, svgId) {\n const svg = d3.select(`[id=\"${svgId}\"]`)\n const keys = Object.keys(vert)\n\n const styleFromStyleArr = function (styleStr, arr) {\n // Create a compound style definition from the style definitions found for the node in the graph definition\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n styleStr = styleStr + arr[i] + ';'\n }\n }\n\n return styleStr\n }\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function (id) {\n const vertex = vert[id]\n\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n let classStr = ''\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ')\n }\n\n /**\n * Variable for storing the extracted style for the vertex\n * @type {string}\n */\n let style = ''\n // Create a compound style definition from the style definitions found for the node in the graph definition\n style = styleFromStyleArr(style, vertex.styles)\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let vertexNode\n if (conf.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n const node = { label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, s => `<i class='${s.replace(':', ' ')}'></i>`) }\n vertexNode = addHtmlLabel(svg, node).node()\n vertexNode.parentNode.removeChild(vertexNode)\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text')\n\n const rows = vertexText.split(/<br[/]{0,1}>/)\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan')\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve')\n tspan.setAttribute('dy', '1em')\n tspan.setAttribute('x', '1')\n tspan.textContent = rows[j]\n svgLabel.appendChild(tspan)\n }\n vertexNode = svgLabel\n }\n\n // If the node has a link, we wrap it in a SVG link\n if (vertex.link) {\n const link = document.createElementNS('http://www.w3.org/2000/svg', 'a')\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link)\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener')\n link.appendChild(vertexNode)\n vertexNode = link\n }\n\n let radious = 0\n let _shape = ''\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radious = 5\n _shape = 'rect'\n break\n case 'square':\n _shape = 'rect'\n break\n case 'diamond':\n _shape = 'question'\n break\n case 'odd':\n _shape = 'rect_left_inv_arrow'\n break\n case 'odd_right':\n _shape = 'rect_left_inv_arrow'\n break\n case 'circle':\n _shape = 'circle'\n break\n case 'ellipse':\n _shape = 'ellipse'\n break\n case 'group':\n _shape = 'rect'\n break\n default:\n _shape = 'rect'\n }\n // Add the node\n g.setNode(vertex.id, { labelType: 'svg', shape: _shape, label: vertexNode, rx: radious, ry: radious, 'class': classStr, style: style, id: vertex.id })\n })\n}\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addEdges = function (edges, g) {\n let cnt = 0\n\n let defaultStyle\n if (typeof edges.defaultStyle !== 'undefined') {\n defaultStyle = edges.defaultStyle.toString().replace(/,/g, ';')\n }\n\n edges.forEach(function (edge) {\n cnt++\n const edgeData = {}\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none'\n } else {\n edgeData.arrowhead = 'normal'\n }\n\n let style = ''\n if (typeof edge.style !== 'undefined') {\n edge.style.forEach(function (s) {\n style = style + s + ';'\n })\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none'\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle\n }\n break\n case 'dotted':\n style = 'stroke: #333; fill:none;stroke-width:2px;stroke-dasharray:3;'\n break\n case 'thick':\n style = 'stroke: #333; stroke-width: 3.5px;fill:none'\n break\n }\n }\n edgeData.style = style\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, d3.curveLinear)\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, d3.curveLinear)\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, d3.curveLinear)\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333'\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333'\n if (typeof edge.style === 'undefined') {\n edgeData.labelpos = 'c'\n if (conf.htmlLabels) {\n edgeData.labelType = 'html'\n edgeData.label = '<span class=\"edgeLabel\">' + edge.text + '</span>'\n } else {\n edgeData.labelType = 'text'\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none'\n edgeData.label = edge.text.replace(/<br>/g, '\\n')\n }\n } else {\n edgeData.label = edge.text.replace(/<br>/g, '\\n')\n }\n }\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt)\n })\n}\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function (text) {\n flowDb.clear()\n const parser = flow.parser\n parser.yy = flowDb\n\n // Parse the graph definition\n parser.parse(text)\n return flowDb.getClasses()\n}\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function (text, id) {\n logger.debug('Drawing flowchart')\n flowDb.clear()\n const parser = flow.parser\n parser.yy = flowDb\n\n // Parse the graph definition\n try {\n parser.parse(text)\n } catch (err) {\n logger.debug('Parsing failed')\n }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection()\n if (typeof dir === 'undefined') {\n dir = 'TD'\n }\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: dir,\n marginx: 20,\n marginy: 20\n\n })\n .setDefaultEdgeLabel(function () {\n return {}\n })\n\n let subG\n const subGraphs = flowDb.getSubGraphs()\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i]\n flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes)\n }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices()\n\n const edges = flowDb.getEdges()\n\n let i = 0\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i]\n\n d3.selectAll('cluster').append('text')\n\n for (let j = 0; j < subG.nodes.length; j++) {\n g.setParent(subG.nodes[j], subG.id)\n }\n }\n addVertices(vert, g, id)\n addEdges(edges, g)\n\n // Create the renderer\n const Render = dagreD3.render\n const render = new Render()\n\n // Add custom shape for rhombus type of boc (decision)\n render.shapes().question = function (parent, bbox, node) {\n const w = bbox.width\n const h = bbox.height\n const s = (w + h) * 0.9\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ]\n const shapeSvg = parent.insert('polygon', ':first-child')\n .attr('points', points.map(function (d) {\n return d.x + ',' + d.y\n }).join(' '))\n .attr('rx', 5)\n .attr('ry', 5)\n .attr('transform', 'translate(' + (-s / 2) + ',' + (s * 2 / 4) + ')')\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point)\n }\n return shapeSvg\n }\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().rect_left_inv_arrow = function (parent, bbox, node) {\n const w = bbox.width\n const h = bbox.height\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ]\n const shapeSvg = parent.insert('polygon', ':first-child')\n .attr('points', points.map(function (d) {\n return d.x + ',' + d.y\n }).join(' '))\n .attr('transform', 'translate(' + (-w / 2) + ',' + (h * 2 / 4) + ')')\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point)\n }\n return shapeSvg\n }\n\n // Add custom shape for box with inverted arrow on right side\n render.shapes().rect_right_inv_arrow = function (parent, bbox, node) {\n const w = bbox.width\n const h = bbox.height\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ]\n const shapeSvg = parent.insert('polygon', ':first-child')\n .attr('points', points.map(function (d) {\n return d.x + ',' + d.y\n }).join(' '))\n .attr('transform', 'translate(' + (-w / 2) + ',' + (h * 2 / 4) + ')')\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point)\n }\n return shapeSvg\n }\n\n // Add our custom arrow - an empty arrowhead\n render.arrows().none = function normal (parent, id, edge, type) {\n const marker = parent.append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto')\n\n const path = marker.append('path')\n .attr('d', 'M 0 0 L 0 0 L 0 0 z')\n dagreD3.util.applyStyle(path, edge[type + 'Style'])\n }\n\n // Override normal arrowhead defined in d3. Remove style & add class to allow css styling.\n render.arrows().normal = function normal (parent, id, edge, type) {\n const marker = parent.append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto')\n\n marker.append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowheadPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0')\n }\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = d3.select(`[id=\"${id}\"]`)\n\n // Run the renderer. This is what draws the final graph.\n const element = d3.select('#' + id + ' g')\n render(element, g)\n\n element.selectAll('g.node')\n .attr('title', function () {\n return flowDb.getTooltip(this.id)\n })\n\n const padding = 8\n const width = g.maxX - g.minX + padding * 2\n const height = g.maxY - g.minY + padding * 2\n svg.attr('width', '100%')\n svg.attr('style', `max-width: ${width}px;`)\n svg.attr('viewBox', `0 0 ${width} ${height}`)\n svg.select('g').attr('transform', `translate(${padding - g.minX}, ${padding - g.minY})`)\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i)\n\n // reposition labels\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i]\n\n if (subG.title !== 'undefined') {\n const clusterRects = document.querySelectorAll('#' + id + ' #' + subG.id + ' rect')\n const clusterEl = document.querySelectorAll('#' + id + ' #' + subG.id)\n\n const xPos = clusterRects[0].x.baseVal.value\n const yPos = clusterRects[0].y.baseVal.value\n const width = clusterRects[0].width.baseVal.value\n const cluster = d3.select(clusterEl[0])\n const te = cluster.select('.label')\n te.attr('transform', `translate(${xPos + width / 2}, ${yPos + 14})`)\n te.attr('id', id + 'Text')\n }\n }\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('#' + id + ' .edgeLabel .label')\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k]\n\n // Get dimensions of label\n const dim = label.getBBox()\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect')\n rect.setAttribute('rx', 0)\n rect.setAttribute('ry', 0)\n rect.setAttribute('width', dim.width)\n rect.setAttribute('height', dim.height)\n rect.setAttribute('style', 'fill:#e8e8e8;')\n\n label.insertBefore(rect, label.firstChild)\n }\n }\n}\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n}\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,3],$V2=[1,5],$V3=[1,8,9,10,11,13,18,30,47,71,72,73,74,75,85,86,89,90,92,93,95,96,97,98,99],$V4=[2,2],$V5=[1,12],$V6=[1,13],$V7=[1,14],$V8=[1,15],$V9=[1,31],$Va=[1,33],$Vb=[1,22],$Vc=[1,34],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,28],$Vi=[1,38],$Vj=[1,40],$Vk=[1,35],$Vl=[1,39],$Vm=[1,45],$Vn=[1,44],$Vo=[1,36],$Vp=[1,37],$Vq=[1,41],$Vr=[1,42],$Vs=[1,43],$Vt=[1,8,9,10,11,13,18,30,35,47,71,72,73,74,75,85,86,89,90,92,93,95,96,97,98,99],$Vu=[1,53],$Vv=[1,52],$Vw=[1,54],$Vx=[8,9,11],$Vy=[8,9,11,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65],$Vz=[1,91],$VA=[8,9,10,11,13,15,18,32,39,41,43,47,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,85,86,89,90,92,93,95,96,97,98,99],$VB=[8,9,10,11,12,13,15,16,17,18,30,32,34,35,39,40,41,42,43,44,47,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,71,72,73,74,75,78,84,85,86,89,90,92,93,95,96,97,98,99],$VC=[1,93],$VD=[1,94],$VE=[8,9,10,11,13,18,30,35,47,71,72,73,74,75,85,86,89,90,92,93,95,96,97,98,99],$VF=[13,18,47,85,86,89,90,92,93,95,96,97,98,99],$VG=[1,118],$VH=[1,126],$VI=[1,127],$VJ=[1,112],$VK=[1,111],$VL=[1,131],$VM=[1,130],$VN=[1,128],$VO=[1,129],$VP=[1,109],$VQ=[1,119],$VR=[1,114],$VS=[1,113],$VT=[1,121],$VU=[1,122],$VV=[1,123],$VW=[1,124],$VX=[1,125],$VY=[1,116],$VZ=[1,115],$V_=[13,18,47,50,66,85,86,89,90,92,93,95,96,97,98,99],$V$=[10,12,13,15,16,17,18,30,34,35,40,42,44,47,51,52,53,54,55,57,58,59,60,61,62,63,64,65,66,71,72,73,74,75,78,84,85,86,89,90,92,93,95,96,97,98,99],$V01=[10,86],$V11=[1,198],$V21=[1,195],$V31=[1,202],$V41=[1,199],$V51=[1,203],$V61=[1,196],$V71=[1,193],$V81=[1,194],$V91=[1,197],$Va1=[1,200],$Vb1=[1,201],$Vc1=[1,224],$Vd1=[8,9,11,86],$Ve1=[8,9,10,11,47,71,80,84,85,86,89,90,91,92,93];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"mermaidDoc\":3,\"graphConfig\":4,\"document\":5,\"line\":6,\"statement\":7,\"SEMI\":8,\"NEWLINE\":9,\"SPACE\":10,\"EOF\":11,\"GRAPH\":12,\"DIR\":13,\"FirstStmtSeperator\":14,\"TAGEND\":15,\"TAGSTART\":16,\"UP\":17,\"DOWN\":18,\"ending\":19,\"endToken\":20,\"spaceList\":21,\"spaceListNewline\":22,\"verticeStatement\":23,\"separator\":24,\"styleStatement\":25,\"linkStyleStatement\":26,\"classDefStatement\":27,\"classStatement\":28,\"clickStatement\":29,\"subgraph\":30,\"alphaNum\":31,\"SQS\":32,\"text\":33,\"SQE\":34,\"end\":35,\"STR\":36,\"vertex\":37,\"link\":38,\"PS\":39,\"PE\":40,\"(-\":41,\"-)\":42,\"DIAMOND_START\":43,\"DIAMOND_STOP\":44,\"alphaNumStatement\":45,\"alphaNumToken\":46,\"MINUS\":47,\"linkStatement\":48,\"arrowText\":49,\"TESTSTR\":50,\"--\":51,\"ARROW_POINT\":52,\"ARROW_CIRCLE\":53,\"ARROW_CROSS\":54,\"ARROW_OPEN\":55,\"-.\":56,\"DOTTED_ARROW_POINT\":57,\"DOTTED_ARROW_CIRCLE\":58,\"DOTTED_ARROW_CROSS\":59,\"DOTTED_ARROW_OPEN\":60,\"==\":61,\"THICK_ARROW_POINT\":62,\"THICK_ARROW_CIRCLE\":63,\"THICK_ARROW_CROSS\":64,\"THICK_ARROW_OPEN\":65,\"PIPE\":66,\"textToken\":67,\"commentText\":68,\"commentToken\":69,\"keywords\":70,\"STYLE\":71,\"LINKSTYLE\":72,\"CLASSDEF\":73,\"CLASS\":74,\"CLICK\":75,\"textNoTags\":76,\"textNoTagsToken\":77,\"DEFAULT\":78,\"stylesOpt\":79,\"HEX\":80,\"numList\":81,\"INTERPOLATE\":82,\"commentStatement\":83,\"PCT\":84,\"NUM\":85,\"COMMA\":86,\"style\":87,\"styleComponent\":88,\"ALPHA\":89,\"COLON\":90,\"UNIT\":91,\"BRKT\":92,\"DOT\":93,\"graphCodeTokens\":94,\"PUNCTUATION\":95,\"UNICODE_TEXT\":96,\"PLUS\":97,\"EQUALS\":98,\"MULT\":99,\"TAG_START\":100,\"TAG_END\":101,\"QUOTE\":102,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",8:\"SEMI\",9:\"NEWLINE\",10:\"SPACE\",11:\"EOF\",12:\"GRAPH\",13:\"DIR\",15:\"TAGEND\",16:\"TAGSTART\",17:\"UP\",18:\"DOWN\",30:\"subgraph\",32:\"SQS\",34:\"SQE\",35:\"end\",36:\"STR\",39:\"PS\",40:\"PE\",41:\"(-\",42:\"-)\",43:\"DIAMOND_START\",44:\"DIAMOND_STOP\",47:\"MINUS\",50:\"TESTSTR\",51:\"--\",52:\"ARROW_POINT\",53:\"ARROW_CIRCLE\",54:\"ARROW_CROSS\",55:\"ARROW_OPEN\",56:\"-.\",57:\"DOTTED_ARROW_POINT\",58:\"DOTTED_ARROW_CIRCLE\",59:\"DOTTED_ARROW_CROSS\",60:\"DOTTED_ARROW_OPEN\",61:\"==\",62:\"THICK_ARROW_POINT\",63:\"THICK_ARROW_CIRCLE\",64:\"THICK_ARROW_CROSS\",65:\"THICK_ARROW_OPEN\",66:\"PIPE\",71:\"STYLE\",72:\"LINKSTYLE\",73:\"CLASSDEF\",74:\"CLASS\",75:\"CLICK\",78:\"DEFAULT\",80:\"HEX\",82:\"INTERPOLATE\",84:\"PCT\",85:\"NUM\",86:\"COMMA\",89:\"ALPHA\",90:\"COLON\",91:\"UNIT\",92:\"BRKT\",93:\"DOT\",95:\"PUNCTUATION\",96:\"UNICODE_TEXT\",97:\"PLUS\",98:\"EQUALS\",99:\"MULT\",100:\"TAG_START\",101:\"TAG_END\",102:\"QUOTE\"},\nproductions_: [0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,4],[4,4],[4,4],[4,4],[4,4],[19,2],[19,1],[20,1],[20,1],[20,1],[14,1],[14,1],[14,2],[22,2],[22,2],[22,1],[22,1],[21,2],[21,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,6],[7,4],[24,1],[24,1],[24,1],[23,3],[23,1],[37,4],[37,5],[37,6],[37,7],[37,4],[37,5],[37,4],[37,5],[37,4],[37,5],[37,4],[37,5],[37,1],[37,2],[31,1],[31,2],[45,1],[45,1],[45,1],[45,1],[38,2],[38,3],[38,3],[38,1],[38,3],[38,3],[38,3],[38,3],[38,3],[38,3],[38,3],[38,3],[38,3],[38,3],[38,3],[38,3],[48,1],[48,1],[48,1],[48,1],[48,1],[48,1],[48,1],[48,1],[48,1],[48,1],[48,1],[48,1],[49,3],[33,1],[33,2],[33,1],[68,1],[68,2],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[76,1],[76,2],[27,5],[27,5],[28,5],[29,5],[29,7],[29,5],[29,7],[25,5],[25,5],[26,5],[26,5],[26,9],[26,9],[26,7],[26,7],[83,3],[81,1],[81,3],[79,1],[79,3],[87,1],[87,2],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[69,1],[69,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[77,1],[77,1],[77,1],[77,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 2:\n this.$ = [];\nbreak;\ncase 3:\n\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 4: case 59: case 61: case 62: case 94: case 96: case 97: case 110:\nthis.$=$$[$0];\nbreak;\ncase 11:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 12:\n yy.setDirection(\"LR\");this.$ = $$[$0-1];\nbreak;\ncase 13:\n yy.setDirection(\"RL\");this.$ = $$[$0-1];\nbreak;\ncase 14:\n yy.setDirection(\"BT\");this.$ = $$[$0-1];\nbreak;\ncase 15:\n yy.setDirection(\"TB\");this.$ = $$[$0-1];\nbreak;\ncase 30:\nthis.$=$$[$0-1]\nbreak;\ncase 31: case 32: case 33: case 34: case 35:\nthis.$=[];\nbreak;\ncase 36:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 37:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],$$[$0-3]);\nbreak;\ncase 38:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 39:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 43:\n yy.addLink($$[$0-2],$$[$0],$$[$0-1]);this.$ = [$$[$0-2],$$[$0]];\nbreak;\ncase 44:\nthis.$ = [$$[$0]];\nbreak;\ncase 45:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 46:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'square');\nbreak;\ncase 47:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 48:\nthis.$ = $$[$0-6];yy.addVertex($$[$0-6],$$[$0-3],'circle');\nbreak;\ncase 49:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 50:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'ellipse');\nbreak;\ncase 51:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 52:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'round');\nbreak;\ncase 53:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 54:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'diamond');\nbreak;\ncase 55:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 56:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'odd');\nbreak;\ncase 57:\nthis.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 58:\nthis.$ = $$[$0-1];yy.addVertex($$[$0-1]);\nbreak;\ncase 60: case 95: case 98: case 111:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 63:\nthis.$='v';\nbreak;\ncase 64:\nthis.$='-';\nbreak;\ncase 65:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 66: case 67:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 68:\nthis.$ = $$[$0];\nbreak;\ncase 69:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 70:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 71:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 72:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 73:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 74:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 75:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 76:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 77:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 78:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 79:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 80:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 81:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"normal\"};\nbreak;\ncase 82:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"normal\"};\nbreak;\ncase 83:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"normal\"};\nbreak;\ncase 84:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"normal\"};\nbreak;\ncase 85:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"dotted\"};\nbreak;\ncase 86:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"dotted\"};\nbreak;\ncase 87:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"dotted\"};\nbreak;\ncase 88:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"dotted\"};\nbreak;\ncase 89:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"thick\"};\nbreak;\ncase 90:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"thick\"};\nbreak;\ncase 91:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"thick\"};\nbreak;\ncase 92:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"thick\"};\nbreak;\ncase 93:\nthis.$ = $$[$0-1];\nbreak;\ncase 112: case 113:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 114:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 115:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-2], $$[$0], undefined);\nbreak;\ncase 116:\nthis.$ = $$[$0-6];yy.setClickEvent($$[$0-4], $$[$0-2], $$[$0]) ;\nbreak;\ncase 117:\nthis.$ = $$[$0-4];yy.setLink($$[$0-2], $$[$0], undefined);\nbreak;\ncase 118:\nthis.$ = $$[$0-6];yy.setLink($$[$0-4], $$[$0-2], $$[$0] );\nbreak;\ncase 119:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 120: case 122:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 121:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 123:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 124:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 125:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 126:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 128: case 130:\nthis.$ = [$$[$0]]\nbreak;\ncase 129: case 131:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 133:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:2,9:$V0,10:$V1,12:$V2},{1:[3]},o($V3,$V4,{5:6}),{4:7,9:$V0,10:$V1,12:$V2},{4:8,9:$V0,10:$V1,12:$V2},{10:[1,9]},{1:[2,1],6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,31:29,37:23,45:30,46:32,47:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($V3,[2,9]),o($V3,[2,10]),{13:[1,46],15:[1,47],16:[1,48],17:[1,49],18:[1,50]},o($Vt,[2,3]),o($Vt,[2,4]),o($Vt,[2,5]),o($Vt,[2,6]),o($Vt,[2,7]),o($Vt,[2,8]),{8:$Vu,9:$Vv,11:$Vw,24:51},{8:$Vu,9:$Vv,11:$Vw,24:55},{8:$Vu,9:$Vv,11:$Vw,24:56},{8:$Vu,9:$Vv,11:$Vw,24:57},{8:$Vu,9:$Vv,11:$Vw,24:58},{8:$Vu,9:$Vv,11:$Vw,24:59},{8:$Vu,9:$Vv,10:[1,60],11:$Vw,24:61},o($Vx,[2,44],{38:62,48:63,51:[1,64],52:[1,67],53:[1,68],54:[1,69],55:[1,70],56:[1,65],57:[1,71],58:[1,72],59:[1,73],60:[1,74],61:[1,66],62:[1,75],63:[1,76],64:[1,77],65:[1,78]}),{10:[1,79]},{10:[1,80]},{10:[1,81]},{10:[1,82]},{10:[1,83]},o($Vy,[2,57],{46:32,21:89,45:90,10:$Vz,13:$V9,15:[1,88],18:$Va,32:[1,84],39:[1,85],41:[1,86],43:[1,87],47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs}),o($VA,[2,59]),o($VA,[2,61]),o($VA,[2,62]),o($VA,[2,63]),o($VA,[2,64]),o($VB,[2,158]),o($VB,[2,159]),o($VB,[2,160]),o($VB,[2,161]),o($VB,[2,162]),o($VB,[2,163]),o($VB,[2,164]),o($VB,[2,165]),o($VB,[2,166]),o($VB,[2,167]),o($VB,[2,168]),{8:$VC,9:$VD,10:$Vz,14:92,21:95},{8:$VC,9:$VD,10:$Vz,14:96,21:95},{8:$VC,9:$VD,10:$Vz,14:97,21:95},{8:$VC,9:$VD,10:$Vz,14:98,21:95},{8:$VC,9:$VD,10:$Vz,14:99,21:95},o($Vt,[2,30]),o($Vt,[2,40]),o($Vt,[2,41]),o($Vt,[2,42]),o($Vt,[2,31]),o($Vt,[2,32]),o($Vt,[2,33]),o($Vt,[2,34]),o($Vt,[2,35]),{13:$V9,18:$Va,31:100,36:[1,101],45:30,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($VE,$V4,{5:102}),{13:$V9,18:$Va,31:29,37:103,45:30,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($VF,[2,68],{49:104,50:[1,105],66:[1,106]}),{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,33:107,35:$VO,36:$VP,46:117,47:$VQ,51:$VR,61:$VS,67:108,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,33:132,35:$VO,36:$VP,46:117,47:$VQ,51:$VR,61:$VS,67:108,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,33:133,35:$VO,36:$VP,46:117,47:$VQ,51:$VR,61:$VS,67:108,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($V_,[2,81]),o($V_,[2,82]),o($V_,[2,83]),o($V_,[2,84]),o($V_,[2,85]),o($V_,[2,86]),o($V_,[2,87]),o($V_,[2,88]),o($V_,[2,89]),o($V_,[2,90]),o($V_,[2,91]),o($V_,[2,92]),{13:$V9,18:$Va,31:134,45:30,46:32,47:$Vc,80:[1,135],85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{78:[1,136],81:137,85:[1,138]},{13:$V9,18:$Va,31:140,45:30,46:32,47:$Vc,78:[1,139],85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{13:$V9,18:$Va,31:141,45:30,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{13:$V9,18:$Va,31:142,45:30,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,33:143,35:$VO,36:$VP,46:117,47:$VQ,51:$VR,61:$VS,67:108,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,33:145,35:$VO,36:$VP,39:[1,144],46:117,47:$VQ,51:$VR,61:$VS,67:108,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,33:146,35:$VO,36:$VP,46:117,47:$VQ,51:$VR,61:$VS,67:108,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,33:147,35:$VO,36:$VP,46:117,47:$VQ,51:$VR,61:$VS,67:108,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,33:148,35:$VO,36:$VP,46:117,47:$VQ,51:$VR,61:$VS,67:108,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($Vy,[2,58]),o($VA,[2,60]),o($Vy,[2,29],{21:149,10:$Vz}),o($V3,[2,11]),o($V3,[2,21]),o($V3,[2,22]),{9:[1,150]},o($V3,[2,12]),o($V3,[2,13]),o($V3,[2,14]),o($V3,[2,15]),{8:$Vu,9:$Vv,11:$Vw,13:$V9,18:$Va,24:152,32:[1,151],45:90,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{8:$Vu,9:$Vv,11:$Vw,24:153},{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,31:29,35:[1,154],37:23,45:30,46:32,47:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($Vx,[2,43]),o($VF,[2,65],{10:[1,155]}),{10:[1,156]},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,33:157,35:$VO,36:$VP,46:117,47:$VQ,51:$VR,61:$VS,67:108,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,35:$VO,46:117,47:$VQ,51:$VR,52:[1,158],53:[1,159],54:[1,160],55:[1,161],61:$VS,67:162,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($V$,[2,94]),o($V$,[2,96]),o($V$,[2,147]),o($V$,[2,148]),o($V$,[2,149]),o($V$,[2,150]),o($V$,[2,151]),o($V$,[2,152]),o($V$,[2,153]),o($V$,[2,154]),o($V$,[2,155]),o($V$,[2,156]),o($V$,[2,157]),o($V$,[2,99]),o($V$,[2,100]),o($V$,[2,101]),o($V$,[2,102]),o($V$,[2,103]),o($V$,[2,104]),o($V$,[2,105]),o($V$,[2,106]),o($V$,[2,107]),o($V$,[2,108]),o($V$,[2,109]),{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,35:$VO,46:117,47:$VQ,51:$VR,57:[1,163],58:[1,164],59:[1,165],60:[1,166],61:$VS,67:162,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,35:$VO,46:117,47:$VQ,51:$VR,61:$VS,62:[1,167],63:[1,168],64:[1,169],65:[1,170],67:162,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:[1,171],13:$V9,18:$Va,45:90,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:[1,172]},{10:[1,173]},{10:[1,174],86:[1,175]},o($V01,[2,128]),{10:[1,176]},{10:[1,177],13:$V9,18:$Va,45:90,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:[1,178],13:$V9,18:$Va,45:90,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:[1,179],13:$V9,18:$Va,45:90,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,34:[1,180],35:$VO,46:117,47:$VQ,51:$VR,61:$VS,67:162,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,33:181,35:$VO,36:$VP,46:117,47:$VQ,51:$VR,61:$VS,67:108,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,35:$VO,40:[1,182],46:117,47:$VQ,51:$VR,61:$VS,67:162,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,35:$VO,42:[1,183],46:117,47:$VQ,51:$VR,61:$VS,67:162,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,35:$VO,44:[1,184],46:117,47:$VQ,51:$VR,61:$VS,67:162,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,34:[1,185],35:$VO,46:117,47:$VQ,51:$VR,61:$VS,67:162,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($Vy,[2,28]),o($V3,[2,23]),{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,33:186,35:$VO,36:$VP,46:117,47:$VQ,51:$VR,61:$VS,67:108,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($VE,$V4,{5:187}),o($VE,$V4,{5:188}),o($Vt,[2,39]),o($VF,[2,67]),o($VF,[2,66]),{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,35:$VO,46:117,47:$VQ,51:$VR,61:$VS,66:[1,189],67:162,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($VF,[2,69]),o($VF,[2,70]),o($VF,[2,71]),o($VF,[2,72]),o($V$,[2,95]),o($VF,[2,73]),o($VF,[2,74]),o($VF,[2,75]),o($VF,[2,76]),o($VF,[2,77]),o($VF,[2,78]),o($VF,[2,79]),o($VF,[2,80]),{10:$V11,47:$V21,71:$V31,79:190,80:$V41,84:$V51,85:$V61,87:191,88:192,89:$V71,90:$V81,91:$V91,92:$Va1,93:$Vb1},{10:$V11,47:$V21,71:$V31,79:204,80:$V41,84:$V51,85:$V61,87:191,88:192,89:$V71,90:$V81,91:$V91,92:$Va1,93:$Vb1},{10:$V11,47:$V21,71:$V31,79:205,80:$V41,82:[1,206],84:$V51,85:$V61,87:191,88:192,89:$V71,90:$V81,91:$V91,92:$Va1,93:$Vb1},{10:$V11,47:$V21,71:$V31,79:207,80:$V41,82:[1,208],84:$V51,85:$V61,87:191,88:192,89:$V71,90:$V81,91:$V91,92:$Va1,93:$Vb1},{85:[1,209]},{10:$V11,47:$V21,71:$V31,79:210,80:$V41,84:$V51,85:$V61,87:191,88:192,89:$V71,90:$V81,91:$V91,92:$Va1,93:$Vb1},{10:$V11,47:$V21,71:$V31,79:211,80:$V41,84:$V51,85:$V61,87:191,88:192,89:$V71,90:$V81,91:$V91,92:$Va1,93:$Vb1},{13:$V9,18:$Va,31:212,45:30,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{13:$V9,18:$Va,31:213,36:[1,214],45:30,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($Vy,[2,45],{21:215,10:$Vz}),{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,35:$VO,40:[1,216],46:117,47:$VQ,51:$VR,61:$VS,67:162,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o($Vy,[2,51],{21:217,10:$Vz}),o($Vy,[2,49],{21:218,10:$Vz}),o($Vy,[2,53],{21:219,10:$Vz}),o($Vy,[2,55],{21:220,10:$Vz}),{10:$VG,12:$VH,13:$VI,15:$VJ,16:$VK,17:$VL,18:$VM,30:$VN,34:[1,221],35:$VO,46:117,47:$VQ,51:$VR,61:$VS,67:162,70:120,71:$VT,72:$VU,73:$VV,74:$VW,75:$VX,77:110,78:$VY,84:$VZ,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,31:29,35:[1,222],37:23,45:30,46:32,47:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,31:29,35:[1,223],37:23,45:30,46:32,47:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},o([10,13,18,47,85,86,89,90,92,93,95,96,97,98,99],[2,93]),o($Vx,[2,119],{86:$Vc1}),o($Vd1,[2,130],{88:225,10:$V11,47:$V21,71:$V31,80:$V41,84:$V51,85:$V61,89:$V71,90:$V81,91:$V91,92:$Va1,93:$Vb1}),o($Ve1,[2,132]),o($Ve1,[2,134]),o($Ve1,[2,135]),o($Ve1,[2,136]),o($Ve1,[2,137]),o($Ve1,[2,138]),o($Ve1,[2,139]),o($Ve1,[2,140]),o($Ve1,[2,141]),o($Ve1,[2,142]),o($Ve1,[2,143]),o($Ve1,[2,144]),o($Vx,[2,120],{86:$Vc1}),o($Vx,[2,121],{86:$Vc1}),{10:[1,226]},o($Vx,[2,122],{86:$Vc1}),{10:[1,227]},o($V01,[2,129]),o($Vx,[2,112],{86:$Vc1}),o($Vx,[2,113],{86:$Vc1}),o($Vx,[2,114],{46:32,45:90,13:$V9,18:$Va,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs}),o($Vx,[2,115],{46:32,45:90,10:[1,228],13:$V9,18:$Va,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs}),o($Vx,[2,117],{10:[1,229]}),o($Vy,[2,46]),{40:[1,230]},o($Vy,[2,52]),o($Vy,[2,50]),o($Vy,[2,54]),o($Vy,[2,56]),{8:$Vu,9:$Vv,11:$Vw,24:231},o($Vt,[2,38]),o($Vt,[2,37]),{10:$V11,47:$V21,71:$V31,80:$V41,84:$V51,85:$V61,87:232,88:192,89:$V71,90:$V81,91:$V91,92:$Va1,93:$Vb1},o($Ve1,[2,133]),{13:$V9,18:$Va,31:233,45:30,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{13:$V9,18:$Va,31:234,45:30,46:32,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{36:[1,235]},{36:[1,236]},o($Vy,[2,47],{21:237,10:$Vz}),o($VE,$V4,{5:238}),o($Vd1,[2,131],{88:225,10:$V11,47:$V21,71:$V31,80:$V41,84:$V51,85:$V61,89:$V71,90:$V81,91:$V91,92:$Va1,93:$Vb1}),o($Vx,[2,125],{46:32,45:90,10:[1,239],13:$V9,18:$Va,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs}),o($Vx,[2,126],{46:32,45:90,10:[1,240],13:$V9,18:$Va,47:$Vc,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs}),o($Vx,[2,116]),o($Vx,[2,118]),o($Vy,[2,48]),{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,31:29,35:[1,241],37:23,45:30,46:32,47:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,85:$Vi,86:$Vj,89:$Vk,90:$Vl,92:$Vm,93:$Vn,95:$Vo,96:$Vp,97:$Vq,98:$Vr,99:$Vs},{10:$V11,47:$V21,71:$V31,79:242,80:$V41,84:$V51,85:$V61,87:191,88:192,89:$V71,90:$V81,91:$V91,92:$Va1,93:$Vb1},{10:$V11,47:$V21,71:$V31,79:243,80:$V41,84:$V51,85:$V61,87:191,88:192,89:$V71,90:$V81,91:$V91,92:$Va1,93:$Vb1},o($Vt,[2,36]),o($Vx,[2,123],{86:$Vc1}),o($Vx,[2,124],{86:$Vc1})],\ndefaultActions: {},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* do nothing */\nbreak;\ncase 1:this.begin(\"string\");\nbreak;\ncase 2:this.popState();\nbreak;\ncase 3:return \"STR\";\nbreak;\ncase 4:return 71;\nbreak;\ncase 5:return 78;\nbreak;\ncase 6:return 72;\nbreak;\ncase 7:return 82;\nbreak;\ncase 8:return 73;\nbreak;\ncase 9:return 74;\nbreak;\ncase 10:return 75;\nbreak;\ncase 11:return 12;\nbreak;\ncase 12:return 30;\nbreak;\ncase 13:return 35;\nbreak;\ncase 14:return 13;\nbreak;\ncase 15:return 13;\nbreak;\ncase 16:return 13;\nbreak;\ncase 17:return 13;\nbreak;\ncase 18:return 13;\nbreak;\ncase 19:return 13;\nbreak;\ncase 20:return 85;\nbreak;\ncase 21:return 92;\nbreak;\ncase 22:return 90;\nbreak;\ncase 23:return 8;\nbreak;\ncase 24:return 86;\nbreak;\ncase 25:return 99;\nbreak;\ncase 26:return 16;\nbreak;\ncase 27:return 15;\nbreak;\ncase 28:return 17;\nbreak;\ncase 29:return 18;\nbreak;\ncase 30:return 54;\nbreak;\ncase 31:return 52;\nbreak;\ncase 32:return 53;\nbreak;\ncase 33:return 55;\nbreak;\ncase 34:return 59;\nbreak;\ncase 35:return 57;\nbreak;\ncase 36:return 58;\nbreak;\ncase 37:return 60;\nbreak;\ncase 38:return 59;\nbreak;\ncase 39:return 57;\nbreak;\ncase 40:return 58;\nbreak;\ncase 41:return 60;\nbreak;\ncase 42:return 64;\nbreak;\ncase 43:return 62;\nbreak;\ncase 44:return 63;\nbreak;\ncase 45:return 65;\nbreak;\ncase 46:return 51;\nbreak;\ncase 47:return 56;\nbreak;\ncase 48:return 61;\nbreak;\ncase 49:return 41;\nbreak;\ncase 50:return 42;\nbreak;\ncase 51:return 47;\nbreak;\ncase 52:return 93;\nbreak;\ncase 53:return 97;\nbreak;\ncase 54:return 84;\nbreak;\ncase 55:return 98;\nbreak;\ncase 56:return 98;\nbreak;\ncase 57:return 89;\nbreak;\ncase 58:return 95;\nbreak;\ncase 59:return 96;\nbreak;\ncase 60:return 66;\nbreak;\ncase 61:return 39;\nbreak;\ncase 62:return 40;\nbreak;\ncase 63:return 32;\nbreak;\ncase 64:return 34;\nbreak;\ncase 65:return 43\nbreak;\ncase 66:return 44\nbreak;\ncase 67:return 102;\nbreak;\ncase 68:return 9;\nbreak;\ncase 69:return 10;\nbreak;\ncase 70:return 11;\nbreak;\n}\n},\nrules: [/^(?:%%[^\\n]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:click\\b)/,/^(?:graph\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:LR\\b)/,/^(?:RL\\b)/,/^(?:TB\\b)/,/^(?:BT\\b)/,/^(?:TD\\b)/,/^(?:BR\\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:v\\b)/,/^(?:\\s*--[x]\\s*)/,/^(?:\\s*-->\\s*)/,/^(?:\\s*--[o]\\s*)/,/^(?:\\s*---\\s*)/,/^(?:\\s*-\\.-[x]\\s*)/,/^(?:\\s*-\\.->\\s*)/,/^(?:\\s*-\\.-[o]\\s*)/,/^(?:\\s*-\\.-\\s*)/,/^(?:\\s*.-[x]\\s*)/,/^(?:\\s*\\.->\\s*)/,/^(?:\\s*\\.-[o]\\s*)/,/^(?:\\s*\\.-\\s*)/,/^(?:\\s*==[x]\\s*)/,/^(?:\\s*==>\\s*)/,/^(?:\\s*==[o]\\s*)/,/^(?:\\s*==[\\=]\\s*)/,/^(?:\\s*--\\s*)/,/^(?:\\s*-\\.\\s*)/,/^(?:\\s*==\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:[A-Za-z]+)/,/^(?:[!\"#$%&'*+,-.`?\\\\_\\/])/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:\\n+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"string\":{\"rules\":[2,3],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import moment from 'moment-mini'\nimport { logger } from '../../logger'\nimport * as d3 from 'd3'\n\nlet dateFormat = ''\nlet axisFormat = ''\nlet excludes = []\nlet title = ''\nlet sections = []\nlet tasks = []\nlet currentSection = ''\nconst tags = ['active', 'done', 'crit', 'milestone']\nlet funs = []\n\nexport const clear = function () {\n sections = []\n tasks = []\n currentSection = ''\n funs = []\n title = ''\n taskCnt = 0\n lastTask = undefined\n lastTaskID = undefined\n rawTasks = []\n}\n\nexport const setAxisFormat = function (txt) {\n axisFormat = txt\n}\n\nexport const getAxisFormat = function () {\n return axisFormat\n}\n\nexport const setDateFormat = function (txt) {\n dateFormat = txt\n}\n\nexport const setExcludes = function (txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/)\n}\n\nexport const setTitle = function (txt) {\n title = txt\n}\n\nexport const getTitle = function () {\n return title\n}\n\nexport const addSection = function (txt) {\n currentSection = txt\n sections.push(txt)\n}\n\nexport const getTasks = function () {\n let allItemsPricessed = compileTasks()\n const maxDepth = 10\n let iterationCount = 0\n while (!allItemsPricessed && (iterationCount < maxDepth)) {\n allItemsPricessed = compileTasks()\n iterationCount++\n }\n\n tasks = rawTasks\n\n return tasks\n}\n\nconst isInvalidDate = function (date, dateFormat, excludes) {\n if (date.isoWeekday() >= 6 && excludes.indexOf('weekends') >= 0) {\n return true\n }\n if (excludes.indexOf(date.format('dddd').toLowerCase()) >= 0) {\n return true\n }\n return excludes.indexOf(date.format(dateFormat.trim())) >= 0\n}\n\nconst checkTaskDates = function (task, dateFormat, excludes) {\n if (!excludes.length || task.manualEndTime) return\n let startTime = moment(task.startTime, dateFormat, true)\n startTime.add(1, 'd')\n let endTime = moment(task.endTime, dateFormat, true)\n let renderEndTime = fixTaskDates(startTime, endTime, dateFormat, excludes)\n task.endTime = endTime.toDate()\n task.renderEndTime = renderEndTime\n}\n\nconst fixTaskDates = function (startTime, endTime, dateFormat, excludes) {\n let invalid = false\n let renderEndTime = null\n while (startTime.date() <= endTime.date()) {\n if (!invalid) {\n renderEndTime = endTime.toDate()\n }\n invalid = isInvalidDate(startTime, dateFormat, excludes)\n if (invalid) {\n endTime.add(1, 'd')\n }\n startTime.add(1, 'd')\n }\n return renderEndTime\n}\n\nconst getStartDate = function (prevTime, dateFormat, str) {\n str = str.trim()\n\n // Test for after\n const re = /^after\\s+([\\d\\w-]+)/\n const afterStatement = re.exec(str.trim())\n\n if (afterStatement !== null) {\n const task = findTaskById(afterStatement[1])\n\n if (typeof task === 'undefined') {\n const dt = new Date()\n dt.setHours(0, 0, 0, 0)\n return dt\n }\n return task.endTime\n }\n\n // Check for actual date set\n let mDate = moment(str, dateFormat.trim(), true)\n if (mDate.isValid()) {\n return mDate.toDate()\n } else {\n logger.debug('Invalid date:' + str)\n logger.debug('With date format:' + dateFormat.trim())\n }\n\n // Default date - now\n return new Date()\n}\n\nconst getEndDate = function (prevTime, dateFormat, str) {\n str = str.trim()\n\n // Check for actual date\n let mDate = moment(str, dateFormat.trim(), true)\n if (mDate.isValid()) {\n return mDate.toDate()\n }\n\n const d = moment(prevTime)\n // Check for length\n const re = /^([\\d]+)([wdhms])/\n const durationStatement = re.exec(str.trim())\n\n if (durationStatement !== null) {\n switch (durationStatement[2]) {\n case 's':\n d.add(durationStatement[1], 'seconds')\n break\n case 'm':\n d.add(durationStatement[1], 'minutes')\n break\n case 'h':\n d.add(durationStatement[1], 'hours')\n break\n case 'd':\n d.add(durationStatement[1], 'days')\n break\n case 'w':\n d.add(durationStatement[1], 'weeks')\n break\n }\n }\n // Default date - now\n return d.toDate()\n}\n\nlet taskCnt = 0\nconst parseId = function (idStr) {\n if (typeof idStr === 'undefined') {\n taskCnt = taskCnt + 1\n return 'task' + taskCnt\n }\n return idStr\n}\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function (prevTask, dataStr) {\n let ds\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length)\n } else {\n ds = dataStr\n }\n\n const data = ds.split(',')\n\n const task = {}\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags)\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim()\n }\n\n let endTimeData = ''\n switch (data.length) {\n case 1:\n task.id = parseId()\n task.startTime = prevTask.endTime\n endTimeData = data[0]\n break\n case 2:\n task.id = parseId()\n task.startTime = getStartDate(undefined, dateFormat, data[0])\n endTimeData = data[1]\n break\n case 3:\n task.id = parseId(data[0])\n task.startTime = getStartDate(undefined, dateFormat, data[1])\n endTimeData = data[2]\n break\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData)\n task.manualEndTime = endTimeData === moment(task.endTime).format(dateFormat.trim())\n checkTaskDates(task, dateFormat, excludes)\n }\n\n return task\n}\n\nconst parseData = function (prevTaskId, dataStr) {\n let ds\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length)\n } else {\n ds = dataStr\n }\n\n const data = ds.split(',')\n\n const task = {}\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags)\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim()\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId()\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId\n }\n task.endTime = {\n data: data[0]\n }\n break\n case 2:\n task.id = parseId()\n task.startTime = {\n type: 'getStartDate',\n startData: data[0]\n }\n task.endTime = {\n data: data[1]\n }\n break\n case 3:\n task.id = parseId(data[0])\n task.startTime = {\n type: 'getStartDate',\n startData: data[1]\n }\n task.endTime = {\n data: data[2]\n }\n break\n default:\n }\n\n return task\n}\n\nlet lastTask\nlet lastTaskID\nlet rawTasks = []\nconst taskDb = {}\nexport const addTask = function (descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data: data },\n task: descr,\n classes: []\n }\n const taskInfo = parseData(lastTaskID, data)\n rawTask.raw.startTime = taskInfo.startTime\n rawTask.raw.endTime = taskInfo.endTime\n rawTask.id = taskInfo.id\n rawTask.prevTaskId = lastTaskID\n rawTask.active = taskInfo.active\n rawTask.done = taskInfo.done\n rawTask.crit = taskInfo.crit\n rawTask.milestone = taskInfo.milestone\n\n const pos = rawTasks.push(rawTask)\n\n lastTaskID = rawTask.id\n // Store cross ref\n taskDb[rawTask.id] = pos - 1\n}\n\nexport const findTaskById = function (id) {\n const pos = taskDb[id]\n return rawTasks[pos]\n}\n\nexport const addTaskOrg = function (descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n }\n const taskInfo = compileData(lastTask, data)\n newTask.startTime = taskInfo.startTime\n newTask.endTime = taskInfo.endTime\n newTask.id = taskInfo.id\n newTask.active = taskInfo.active\n newTask.done = taskInfo.done\n newTask.crit = taskInfo.crit\n newTask.milestone = taskInfo.milestone\n lastTask = newTask\n tasks.push(newTask)\n}\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n const task = rawTasks[pos]\n let startTime = ''\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd':\n const prevTask = findTaskById(task.prevTaskId)\n task.startTime = prevTask.endTime\n break\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData)\n if (startTime) {\n rawTasks[pos].startTime = startTime\n }\n break\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(rawTasks[pos].startTime, dateFormat, rawTasks[pos].raw.endTime.data)\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true\n rawTasks[pos].manualEndTime = rawTasks[pos].raw.endTime.data === moment(rawTasks[pos].endTime).format(dateFormat.trim())\n checkTaskDates(rawTasks[pos], dateFormat, excludes)\n }\n }\n\n return rawTasks[pos].processed\n }\n\n let allProcessed = true\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i)\n\n allProcessed = allProcessed && rawTasks[i].processed\n }\n return allProcessed\n}\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n */\nexport const setLink = function (ids, linkStr) {\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id)\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => { window.open(linkStr, '_self') })\n }\n })\n setClass(ids, 'clickable')\n}\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function (ids, className) {\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id)\n if (typeof rawTask !== 'undefined') {\n rawTask.classes.push(className)\n }\n })\n}\n\nconst setClickFun = function (id, functionName, functionArgs) {\n if (typeof functionName === 'undefined') {\n return\n }\n\n let argList = []\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/)\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim()\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2)\n }\n argList[i] = item\n }\n }\n\n let rawTask = findTaskById(id)\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => { window[functionName](...argList) })\n }\n}\n\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the task's assigned text\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\nconst pushFun = function (id, callbackFunction) {\n funs.push(function (element) {\n const elem = d3.select(element).select(`[id=\"${id}\"]`)\n if (elem !== null) {\n elem.on('click', function () {\n callbackFunction()\n })\n }\n })\n funs.push(function (element) {\n const elem = d3.select(element).select(`[id=\"${id}-text\"]`)\n if (elem !== null) {\n elem.on('click', function () {\n callbackFunction()\n })\n }\n })\n}\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFun(id, functionName, functionArgs)\n })\n setClass(ids, 'clickable')\n}\n\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n * @param element\n */\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element)\n })\n}\n\nexport default {\n clear,\n setDateFormat,\n setAxisFormat,\n getAxisFormat,\n setTitle,\n getTitle,\n addSection,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setExcludes,\n setClickEvent,\n setLink,\n bindFunctions\n}\n\nfunction getTaskTags (data, task, tags) {\n let matchFound = true\n while (matchFound) {\n matchFound = false\n tags.forEach(function (t) {\n const pattern = '^\\\\s*' + t + '\\\\s*$'\n const regex = new RegExp(pattern)\n if (data[0].match(regex)) {\n task[t] = true\n data.shift(1)\n matchFound = true\n }\n })\n }\n}\n","import * as d3 from 'd3'\n\nimport { parser } from './parser/gantt'\nimport ganttDb from './ganttDb'\n\nparser.yy = ganttDb\n\nconst conf = {\n titleTopMargin: 25,\n barHeight: 20,\n barGap: 4,\n topPadding: 50,\n rightPadding: 75,\n leftPadding: 75,\n gridLineStartPadding: 35,\n fontSize: 11,\n fontFamily: '\"Open-Sans\", \"sans-serif\"'\n}\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf)\n\n keys.forEach(function (key) {\n conf[key] = cnf[key]\n })\n}\nlet w\nexport const draw = function (text, id) {\n parser.yy.clear()\n parser.parse(text)\n\n const elem = document.getElementById(id)\n w = elem.parentElement.offsetWidth\n\n if (typeof w === 'undefined') {\n w = 1200\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth\n }\n\n const taskArray = parser.yy.getTasks()\n\n // Set height based on number of tasks\n const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding\n\n elem.setAttribute('height', '100%')\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h)\n const svg = d3.select(`[id=\"${id}\"]`)\n\n // Set timescale\n const timeScale = d3.scaleTime()\n .domain([d3.min(taskArray, function (d) {\n return d.startTime\n }),\n d3.max(taskArray, function (d) {\n return d.endTime\n })])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding])\n\n let categories = []\n\n for (let i = 0; i < taskArray.length; i++) {\n categories.push(taskArray[i].type)\n }\n\n const catsUnfiltered = categories // for vert labels\n\n categories = checkUnique(categories)\n\n makeGant(taskArray, w, h)\n if (typeof conf.useWidth !== 'undefined') {\n elem.setAttribute('width', w)\n }\n\n svg.append('text')\n .text(parser.yy.getTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText')\n\n function makeGant (tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight\n const gap = barHeight + conf.barGap\n const topPadding = conf.topPadding\n const leftPadding = conf.leftPadding\n\n const colorScale = d3.scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(d3.interpolateHcl)\n\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight)\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight)\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale)\n drawToday(leftPadding, topPadding, pageWidth, pageHeight)\n }\n\n function drawRects (theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w, h) {\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg.append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function (d, i) {\n return i * theGap + theTopPad - 2\n })\n .attr('width', function () {\n return w - conf.rightPadding / 2\n })\n .attr('height', theGap)\n .attr('class', function (d) {\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n return 'section section' + (i % conf.numberSectionStyles)\n }\n }\n return 'section section0'\n })\n\n // Draw the rects representing the tasks\n const rectangles = svg.append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n\n rectangles.append('rect')\n .attr('id', function (d) { return d.id })\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function (d) {\n if (d.milestone) {\n return timeScale(d.startTime) + theSidePad + (0.5 * (timeScale(d.endTime) - timeScale(d.startTime))) - (0.5 * theBarHeight)\n }\n return timeScale(d.startTime) + theSidePad\n })\n .attr('y', function (d, i) {\n return i * theGap + theTopPad\n })\n .attr('width', function (d) {\n if (d.milestone) {\n return theBarHeight\n }\n return (timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime))\n })\n .attr('height', theBarHeight)\n .attr('transform-origin', function (d, i) {\n return (timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))).toString() + 'px ' + (i * theGap + theTopPad + 0.5 * theBarHeight).toString() + 'px'\n })\n .attr('class', function (d) {\n const res = 'task'\n\n let classStr = ''\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ')\n }\n\n let secNum = 0\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = (i % conf.numberSectionStyles)\n }\n }\n\n let taskClass = ''\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit'\n } else {\n taskClass = ' active'\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit'\n } else {\n taskClass = ' done'\n }\n } else {\n if (d.crit) {\n taskClass += ' crit'\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task'\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass\n }\n\n taskClass += secNum\n\n taskClass += ' ' + classStr\n\n return res + taskClass\n })\n\n // Append task labels\n rectangles.append('text')\n .text(function (d) {\n return d.task\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function (d) {\n let startX = timeScale(d.startTime)\n let endX = timeScale(d.renderEndTime || d.endTime)\n if (d.milestone) {\n startX += (0.5 * (timeScale(d.endTime) - timeScale(d.startTime))) - (0.5 * theBarHeight)\n }\n if (d.milestone) {\n endX = startX + theBarHeight\n }\n const textWidth = this.getBBox().width\n\n // Check id text width > width of rectangle\n if (textWidth > (endX - startX)) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5\n } else {\n return endX + theSidePad + 5\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad\n }\n })\n .attr('y', function (d, i) {\n return i * theGap + (conf.barHeight / 2) + (conf.fontSize / 2 - 2) + theTopPad\n })\n .attr('text-height', theBarHeight)\n .attr('class', function (d) {\n const startX = timeScale(d.startTime)\n let endX = timeScale(d.endTime)\n if (d.milestone) {\n endX = startX + theBarHeight\n }\n const textWidth = this.getBBox().width\n\n let classStr = ''\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ')\n }\n\n let secNum = 0\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = (i % conf.numberSectionStyles)\n }\n }\n\n let taskType = ''\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum\n } else {\n taskType = 'activeText' + secNum\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum\n } else {\n taskType = taskType + ' doneText' + secNum\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText'\n }\n\n // Check id text width > width of rectangle\n if (textWidth > (endX - startX)) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType\n } else {\n return classStr + ' taskTextOutsideRight taskTextOutside' + secNum + ' ' + taskType\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType\n }\n })\n }\n\n function makeGrid (theSidePad, theTopPad, w, h) {\n let xAxis = d3.axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(d3.timeFormat(parser.yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'))\n\n svg.append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(xAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em')\n }\n\n function vertLabels (theGap, theTopPad) {\n const numOccurances = []\n let prevGap = 0\n\n for (let i = 0; i < categories.length; i++) {\n numOccurances[i] = [categories[i], getCount(categories[i], catsUnfiltered)]\n }\n\n svg.append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurances)\n .enter()\n .append('text')\n .text(function (d) {\n return d[0]\n })\n .attr('x', 10)\n .attr('y', function (d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1]\n return d[1] * theGap / 2 + prevGap * theGap + theTopPad\n }\n } else {\n return d[1] * theGap / 2 + theTopPad\n }\n })\n .attr('class', function (d) {\n for (let i = 0; i < categories.length; i++) {\n if (d[0] === categories[i]) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles)\n }\n }\n return 'sectionTitle'\n })\n }\n\n function drawToday (theSidePad, theTopPad, w, h) {\n const todayG = svg.append('g')\n .attr('class', 'today')\n\n const today = new Date()\n\n todayG.append('line')\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today')\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n function checkUnique (arr) {\n const hash = {}\n const result = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!hash.hasOwnProperty(arr[i])) { // it works with objects! in FF, at least\n hash[arr[i]] = true\n result.push(arr[i])\n }\n }\n return result\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n function getCounts (arr) {\n let i = arr.length // const to loop over\n const obj = {} // obj to store results\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1 // count occurrences\n }\n return obj\n }\n\n // get specific from everything\n function getCount (word, arr) {\n return getCounts(arr)[word] || 0\n }\n}\n\nexport default {\n setConf,\n draw\n}\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,8,10,11,12,13,14,15,17,19],$V1=[1,9],$V2=[1,10],$V3=[1,11],$V4=[1,12],$V5=[1,13],$V6=[1,15],$V7=[1,16];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"gantt\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NL\":10,\"dateFormat\":11,\"axisFormat\":12,\"excludes\":13,\"title\":14,\"section\":15,\"clickStatement\":16,\"taskTxt\":17,\"taskData\":18,\"click\":19,\"callbackname\":20,\"callbackargs\":21,\"href\":22,\"clickStatementDebug\":23,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"gantt\",6:\"EOF\",8:\"SPACE\",10:\"NL\",11:\"dateFormat\",12:\"axisFormat\",13:\"excludes\",14:\"title\",15:\"section\",17:\"taskTxt\",18:\"taskData\",19:\"click\",20:\"callbackname\",21:\"callbackargs\",22:\"href\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[16,2],[16,3],[16,3],[16,4],[16,3],[16,4],[16,2],[23,2],[23,3],[23,3],[23,4],[23,3],[23,4],[23,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 9:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 10:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 11:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 12:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 14:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 15:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 16:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 17:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 18:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 19:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 20:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 21:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 22: case 28:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 23: case 24: case 26:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 25: case 27:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:$V1,12:$V2,13:$V3,14:$V4,15:$V5,16:14,17:$V6,19:$V7},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:17,11:$V1,12:$V2,13:$V3,14:$V4,15:$V5,16:14,17:$V6,19:$V7},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,8]),o($V0,[2,9]),o($V0,[2,10]),o($V0,[2,11]),o($V0,[2,12]),o($V0,[2,13]),{18:[1,18]},{20:[1,19],22:[1,20]},o($V0,[2,4]),o($V0,[2,14]),o($V0,[2,15],{21:[1,21],22:[1,22]}),o($V0,[2,21],{20:[1,23]}),o($V0,[2,16],{22:[1,24]}),o($V0,[2,17]),o($V0,[2,19],{21:[1,25]}),o($V0,[2,18]),o($V0,[2,20])],\ndefaultActions: {},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 10;\nbreak;\ncase 1:/* skip whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:this.begin(\"href\");\nbreak;\ncase 5:this.popState();\nbreak;\ncase 6:return 22;\nbreak;\ncase 7:this.begin(\"callbackname\");\nbreak;\ncase 8:this.popState();\nbreak;\ncase 9:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 10:return 20;\nbreak;\ncase 11:this.popState();\nbreak;\ncase 12:return 21;\nbreak;\ncase 13:this.begin(\"click\");\nbreak;\ncase 14:this.popState();\nbreak;\ncase 15:return 19;\nbreak;\ncase 16:return 4;\nbreak;\ncase 17:return 11;\nbreak;\ncase 18:return 12;\nbreak;\ncase 19:return 13;\nbreak;\ncase 20:return 'date';\nbreak;\ncase 21:return 14;\nbreak;\ncase 22:return 15;\nbreak;\ncase 23:return 17;\nbreak;\ncase 24:return 18;\nbreak;\ncase 25:return ':';\nbreak;\ncase 26:return 6;\nbreak;\ncase 27:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:href[\\s]+[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:call[\\s]+)/i,/^(?:\\([\\s]*\\))/i,/^(?:\\()/i,/^(?:[^(]*)/i,/^(?:\\))/i,/^(?:[^)]*)/i,/^(?:click[\\s]+)/i,/^(?:[\\s\\n])/i,/^(?:[^\\s\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"callbackargs\":{\"rules\":[11,12],\"inclusive\":false},\"callbackname\":{\"rules\":[8,9,10],\"inclusive\":false},\"href\":{\"rules\":[5,6],\"inclusive\":false},\"click\":{\"rules\":[14,15],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,7,13,16,17,18,19,20,21,22,23,24,25,26,27],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import _ from 'lodash'\n\nimport { logger } from '../../logger'\n\nlet commits = {}\nlet head = null\nlet branches = { 'master': head }\nlet curBranch = 'master'\nlet direction = 'LR'\nlet seq = 0\n\nfunction getRandomInt (min, max) {\n return Math.floor(Math.random() * (max - min)) + min\n}\n\nfunction getId () {\n const pool = '0123456789abcdef'\n let id = ''\n for (let i = 0; i < 7; i++) {\n id += pool[getRandomInt(0, 16)]\n }\n return id\n}\n\nfunction isfastforwardable (currentCommit, otherCommit) {\n logger.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id)\n while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit) {\n // only if other branch has more commits\n if (otherCommit.parent == null) break\n if (Array.isArray(otherCommit.parent)) {\n logger.debug('In merge commit:', otherCommit.parent)\n return isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) ||\n isfastforwardable(currentCommit, commits[otherCommit.parent[1]])\n } else {\n otherCommit = commits[otherCommit.parent]\n }\n }\n logger.debug(currentCommit.id, otherCommit.id)\n return currentCommit.id === otherCommit.id\n}\n\nfunction isReachableFrom (currentCommit, otherCommit) {\n const currentSeq = currentCommit.seq\n const otherSeq = otherCommit.seq\n if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit)\n return false\n}\n\nexport const setDirection = function (dir) {\n direction = dir\n}\nlet options = {}\nexport const setOptions = function (rawOptString) {\n logger.debug('options str', rawOptString)\n rawOptString = rawOptString && rawOptString.trim()\n rawOptString = rawOptString || '{}'\n try {\n options = JSON.parse(rawOptString)\n } catch (e) {\n logger.error('error while parsing gitGraph options', e.message)\n }\n}\n\nexport const getOptions = function () {\n return options\n}\n\nexport const commit = function (msg) {\n const commit = {\n id: getId(),\n message: msg,\n seq: seq++,\n parent: head == null ? null : head.id\n }\n head = commit\n commits[commit.id] = commit\n branches[curBranch] = commit.id\n logger.debug('in pushCommit ' + commit.id)\n}\n\nexport const branch = function (name) {\n branches[name] = head != null ? head.id : null\n logger.debug('in createBranch')\n}\n\nexport const merge = function (otherBranch) {\n const currentCommit = commits[branches[curBranch]]\n const otherCommit = commits[branches[otherBranch]]\n if (isReachableFrom(currentCommit, otherCommit)) {\n logger.debug('Already merged')\n return\n }\n if (isfastforwardable(currentCommit, otherCommit)) {\n branches[curBranch] = branches[otherBranch]\n head = commits[branches[curBranch]]\n } else {\n // create merge commit\n const commit = {\n id: getId(),\n message: 'merged branch ' + otherBranch + ' into ' + curBranch,\n seq: seq++,\n parent: [head == null ? null : head.id, branches[otherBranch]]\n }\n head = commit\n commits[commit.id] = commit\n branches[curBranch] = commit.id\n }\n logger.debug(branches)\n logger.debug('in mergeBranch')\n}\n\nexport const checkout = function (branch) {\n logger.debug('in checkout')\n curBranch = branch\n const id = branches[curBranch]\n head = commits[id]\n}\n\nexport const reset = function (commitRef) {\n logger.debug('in reset', commitRef)\n const ref = commitRef.split(':')[0]\n let parentCount = parseInt(commitRef.split(':')[1])\n let commit = ref === 'HEAD' ? head : commits[branches[ref]]\n logger.debug(commit, parentCount)\n while (parentCount > 0) {\n commit = commits[commit.parent]\n parentCount--\n if (!commit) {\n const err = 'Critical error - unique parent commit not found during reset'\n logger.error(err)\n throw err\n }\n }\n head = commit\n branches[curBranch] = commit.id\n}\n\nfunction upsert (arr, key, newval) {\n const index = arr.indexOf(key)\n if (index === -1) {\n arr.push(newval)\n } else {\n arr.splice(index, 1, newval)\n }\n}\n\nfunction prettyPrintCommitHistory (commitArr) {\n const commit = _.maxBy(commitArr, 'seq')\n let line = ''\n commitArr.forEach(function (c) {\n if (c === commit) {\n line += '\\t*'\n } else {\n line += '\\t|'\n }\n })\n const label = [line, commit.id, commit.seq]\n for (let branch in branches) {\n if (branches[branch] === commit.id) label.push(branch)\n }\n logger.debug(label.join(' '))\n if (Array.isArray(commit.parent)) {\n const newCommit = commits[commit.parent[0]]\n upsert(commitArr, commit, newCommit)\n commitArr.push(commits[commit.parent[1]])\n } else if (commit.parent == null) {\n return\n } else {\n const nextCommit = commits[commit.parent]\n upsert(commitArr, commit, nextCommit)\n }\n commitArr = _.uniqBy(commitArr, 'id')\n prettyPrintCommitHistory(commitArr)\n}\n\nexport const prettyPrint = function () {\n logger.debug(commits)\n const node = getCommitsArray()[0]\n prettyPrintCommitHistory([node])\n}\n\nexport const clear = function () {\n commits = {}\n head = null\n branches = { 'master': head }\n curBranch = 'master'\n seq = 0\n}\n\nexport const getBranchesAsObjArray = function () {\n const branchArr = []\n for (let branch in branches) {\n branchArr.push({ name: branch, commit: commits[branches[branch]] })\n }\n return branchArr\n}\n\nexport const getBranches = function () { return branches }\nexport const getCommits = function () { return commits }\nexport const getCommitsArray = function () {\n const commitArr = Object.keys(commits).map(function (key) {\n return commits[key]\n })\n commitArr.forEach(function (o) { logger.debug(o.id) })\n return _.orderBy(commitArr, ['seq'], ['desc'])\n}\nexport const getCurrentBranch = function () { return curBranch }\nexport const getDirection = function () { return direction }\nexport const getHead = function () { return head }\n\nexport default {\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n checkout,\n reset,\n prettyPrint,\n clear,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead\n}\n","import * as d3 from 'd3'\nimport _ from 'lodash'\n\nimport db from './gitGraphAst'\nimport gitGraphParser from './parser/gitGraph'\nimport { logger } from '../../logger'\nimport { interpolateToCurve } from '../../utils'\n\nlet allCommitsDict = {}\nlet branchNum\nlet config = {\n nodeSpacing: 150,\n nodeFillColor: 'yellow',\n nodeStrokeWidth: 2,\n nodeStrokeColor: 'grey',\n lineStrokeWidth: 4,\n branchOffset: 50,\n lineColor: 'grey',\n leftMargin: 50,\n branchColors: ['#442f74', '#983351', '#609732', '#AA9A39'],\n nodeRadius: 10,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0\n }\n}\nlet apiConfig = {}\nexport const setConf = function (c) {\n apiConfig = c\n}\n\nfunction svgCreateDefs (svg) {\n svg\n .append('defs')\n .append('g')\n .attr('id', 'def-commit')\n .append('circle')\n .attr('r', config.nodeRadius)\n .attr('cx', 0)\n .attr('cy', 0)\n svg.select('#def-commit')\n .append('foreignObject')\n .attr('width', config.nodeLabel.width)\n .attr('height', config.nodeLabel.height)\n .attr('x', config.nodeLabel.x)\n .attr('y', config.nodeLabel.y)\n .attr('class', 'node-label')\n .attr('requiredFeatures', 'http://www.w3.org/TR/SVG11/feature#Extensibility')\n .append('p')\n .html('')\n}\n\nfunction svgDrawLine (svg, points, colorIdx, interpolate) {\n const curve = interpolateToCurve(interpolate, d3.curveBasis)\n const color = config.branchColors[colorIdx % config.branchColors.length]\n const lineGen = d3.line()\n .x(function (d) {\n return Math.round(d.x)\n })\n .y(function (d) {\n return Math.round(d.y)\n })\n .curve(curve)\n\n svg\n .append('svg:path')\n .attr('d', lineGen(points))\n .style('stroke', color)\n .style('stroke-width', config.lineStrokeWidth)\n .style('fill', 'none')\n}\n\n// Pass in the element and its pre-transform coords\nfunction getElementCoords (element, coords) {\n coords = coords || element.node().getBBox()\n const ctm = element.node().getCTM()\n const xn = ctm.e + coords.x * ctm.a\n const yn = ctm.f + coords.y * ctm.d\n return {\n left: xn,\n top: yn,\n width: coords.width,\n height: coords.height\n }\n}\n\nfunction svgDrawLineForCommits (svg, fromId, toId, direction, color) {\n logger.debug('svgDrawLineForCommits: ', fromId, toId)\n const fromBbox = getElementCoords(svg.select('#node-' + fromId + ' circle'))\n const toBbox = getElementCoords(svg.select('#node-' + toId + ' circle'))\n switch (direction) {\n case 'LR':\n // (toBbox)\n // +--------\n // + (fromBbox)\n if (fromBbox.left - toBbox.left > config.nodeSpacing) {\n const lineStart = { x: fromBbox.left - config.nodeSpacing, y: toBbox.top + toBbox.height / 2 }\n const lineEnd = { x: toBbox.left + toBbox.width, y: toBbox.top + toBbox.height / 2 }\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear')\n svgDrawLine(svg, [\n { x: fromBbox.left, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: lineStart.y },\n lineStart], color)\n } else {\n svgDrawLine(svg, [{\n 'x': fromBbox.left,\n 'y': fromBbox.top + fromBbox.height / 2\n }, {\n 'x': fromBbox.left - config.nodeSpacing / 2,\n 'y': fromBbox.top + fromBbox.height / 2\n }, {\n 'x': fromBbox.left - config.nodeSpacing / 2,\n 'y': toBbox.top + toBbox.height / 2\n }, {\n 'x': toBbox.left + toBbox.width,\n 'y': toBbox.top + toBbox.height / 2\n }], color)\n }\n break\n case 'BT':\n // + (fromBbox)\n // |\n // |\n // + (toBbox)\n if (toBbox.top - fromBbox.top > config.nodeSpacing) {\n const lineStart = { x: toBbox.left + toBbox.width / 2, y: fromBbox.top + fromBbox.height + config.nodeSpacing }\n const lineEnd = { x: toBbox.left + toBbox.width / 2, y: toBbox.top }\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear')\n svgDrawLine(svg, [\n { x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height },\n { x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height + config.nodeSpacing / 2 },\n { x: toBbox.left + toBbox.width / 2, y: lineStart.y - config.nodeSpacing / 2 },\n lineStart], color)\n } else {\n svgDrawLine(svg, [{\n 'x': fromBbox.left + fromBbox.width / 2,\n 'y': fromBbox.top + fromBbox.height\n }, {\n 'x': fromBbox.left + fromBbox.width / 2,\n 'y': fromBbox.top + config.nodeSpacing / 2\n }, {\n 'x': toBbox.left + toBbox.width / 2,\n 'y': toBbox.top - config.nodeSpacing / 2\n }, {\n 'x': toBbox.left + toBbox.width / 2,\n 'y': toBbox.top\n }], color)\n }\n break\n }\n}\n\nfunction cloneNode (svg, selector) {\n return svg.select(selector).node().cloneNode(true)\n}\n\nfunction renderCommitHistory (svg, commitid, branches, direction) {\n let commit\n const numCommits = Object.keys(allCommitsDict).length\n if (typeof commitid === 'string') {\n do {\n commit = allCommitsDict[commitid]\n logger.debug('in renderCommitHistory', commit.id, commit.seq)\n if (svg.select('#node-' + commitid).size() > 0) {\n return\n }\n svg\n .append(function () {\n return cloneNode(svg, '#def-commit')\n })\n .attr('class', 'commit')\n .attr('id', function () {\n return 'node-' + commit.id\n })\n .attr('transform', function () {\n switch (direction) {\n case 'LR':\n return 'translate(' + (commit.seq * config.nodeSpacing + config.leftMargin) + ', ' +\n (branchNum * config.branchOffset) + ')'\n case 'BT':\n return 'translate(' + (branchNum * config.branchOffset + config.leftMargin) + ', ' +\n ((numCommits - commit.seq) * config.nodeSpacing) + ')'\n }\n })\n .attr('fill', config.nodeFillColor)\n .attr('stroke', config.nodeStrokeColor)\n .attr('stroke-width', config.nodeStrokeWidth)\n\n let branch\n for (let branchName in branches) {\n if (branches[branchName].commit === commit) {\n branch = branches[branchName]\n break\n }\n }\n if (branch) {\n logger.debug('found branch ', branch.name)\n svg.select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'branch-label')\n .text(branch.name + ', ')\n }\n svg.select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-id')\n .text(commit.id)\n if (commit.message !== '' && direction === 'BT') {\n svg.select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-msg')\n .text(', ' + commit.message)\n }\n commitid = commit.parent\n } while (commitid && allCommitsDict[commitid])\n }\n\n if (Array.isArray(commitid)) {\n logger.debug('found merge commmit', commitid)\n renderCommitHistory(svg, commitid[0], branches, direction)\n branchNum++\n renderCommitHistory(svg, commitid[1], branches, direction)\n branchNum--\n }\n}\n\nfunction renderLines (svg, commit, direction, branchColor) {\n branchColor = branchColor || 0\n while (commit.seq > 0 && !commit.lineDrawn) {\n if (typeof commit.parent === 'string') {\n svgDrawLineForCommits(svg, commit.id, commit.parent, direction, branchColor)\n commit.lineDrawn = true\n commit = allCommitsDict[commit.parent]\n } else if (Array.isArray(commit.parent)) {\n svgDrawLineForCommits(svg, commit.id, commit.parent[0], direction, branchColor)\n svgDrawLineForCommits(svg, commit.id, commit.parent[1], direction, branchColor + 1)\n renderLines(svg, allCommitsDict[commit.parent[1]], direction, branchColor + 1)\n commit.lineDrawn = true\n commit = allCommitsDict[commit.parent[0]]\n }\n }\n}\n\nexport const draw = function (txt, id, ver) {\n try {\n const parser = gitGraphParser.parser\n parser.yy = db\n\n logger.debug('in gitgraph renderer', txt, id, ver)\n // Parse the graph definition\n parser.parse(txt + '\\n')\n\n config = _.assign(config, apiConfig, db.getOptions())\n logger.debug('effective options', config)\n const direction = db.getDirection()\n allCommitsDict = db.getCommits()\n const branches = db.getBranchesAsObjArray()\n if (direction === 'BT') {\n config.nodeLabel.x = branches.length * config.branchOffset\n config.nodeLabel.width = '100%'\n config.nodeLabel.y = -1 * 2 * config.nodeRadius\n }\n const svg = d3.select(`[id=\"${id}\"]`)\n svgCreateDefs(svg)\n branchNum = 1\n for (let branch in branches) {\n const v = branches[branch]\n renderCommitHistory(svg, v.commit.id, branches, direction)\n renderLines(svg, v.commit, direction)\n branchNum++\n }\n svg.attr('height', function () {\n if (direction === 'BT') return Object.keys(allCommitsDict).length * config.nodeSpacing\n return (branches.length + 1) * config.branchOffset\n })\n } catch (e) {\n logger.error('Error while rendering gitgraph')\n logger.error(e.message)\n }\n}\n\nexport default {\n setConf,\n draw\n}\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,3],$V1=[1,7],$V2=[7,12,15,17,19,20,21],$V3=[7,11,12,15,17,19,20,21],$V4=[2,20],$V5=[1,32];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"GG\":4,\":\":5,\"document\":6,\"EOF\":7,\"DIR\":8,\"options\":9,\"body\":10,\"OPT\":11,\"NL\":12,\"line\":13,\"statement\":14,\"COMMIT\":15,\"commit_arg\":16,\"BRANCH\":17,\"ID\":18,\"CHECKOUT\":19,\"MERGE\":20,\"RESET\":21,\"reset_arg\":22,\"STR\":23,\"HEAD\":24,\"reset_parents\":25,\"CARET\":26,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"GG\",5:\":\",7:\"EOF\",8:\"DIR\",11:\"OPT\",12:\"NL\",15:\"COMMIT\",17:\"BRANCH\",18:\"ID\",19:\"CHECKOUT\",20:\"MERGE\",21:\"RESET\",23:\"STR\",24:\"HEAD\",26:\"CARET\"},\nproductions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 4:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 5:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 7:\nthis.$ = []\nbreak;\ncase 8:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 9:\nthis.$ =$$[$0-1]\nbreak;\ncase 11:\nyy.commit($$[$0])\nbreak;\ncase 12:\nyy.branch($$[$0])\nbreak;\ncase 13:\nyy.checkout($$[$0])\nbreak;\ncase 14:\nyy.merge($$[$0])\nbreak;\ncase 15:\nyy.reset($$[$0])\nbreak;\ncase 16:\nthis.$ = \"\"\nbreak;\ncase 17:\nthis.$=$$[$0]\nbreak;\ncase 18:\nthis.$ = $$[$0-1]+ \":\" + $$[$0] \nbreak;\ncase 19:\nthis.$ = $$[$0-1]+ \":\" + yy.count; yy.count = 0\nbreak;\ncase 20:\nyy.count = 0\nbreak;\ncase 21:\n yy.count += 1 \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:$V0,9:6,12:$V1},{5:[1,8]},{7:[1,9]},o($V2,[2,7],{10:10,11:[1,11]}),o($V3,[2,6]),{6:12,7:$V0,9:6,12:$V1},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},o($V3,[2,5]),{7:[1,21]},o($V2,[2,8]),{12:[1,22]},o($V2,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},o($V2,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:$V4,25:31,26:$V5},{12:$V4,25:33,26:$V5},{12:[2,18]},{12:$V4,25:34,26:$V5},{12:[2,19]},{12:[2,21]}],\ndefaultActions: {9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 12;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 15;\nbreak;\ncase 6:return 17;\nbreak;\ncase 7:return 20;\nbreak;\ncase 8:return 21;\nbreak;\ncase 9:return 19;\nbreak;\ncase 10:return 8;\nbreak;\ncase 11:return 8;\nbreak;\ncase 12:return 5;\nbreak;\ncase 13:return 26\nbreak;\ncase 14:this.begin(\"options\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return 11;\nbreak;\ncase 17:this.begin(\"string\");\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19:return 23;\nbreak;\ncase 20:return 18;\nbreak;\ncase 21:return 7;\nbreak;\n}\n},\nrules: [/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:branch\\b)/i,/^(?:merge\\b)/i,/^(?:reset\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:end\\r?\\n)/i,/^(?:[^\\n]+\\r?\\n)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[a-zA-Z][a-zA-Z0-9_]+)/i,/^(?:$)/i],\nconditions: {\"options\":{\"rules\":[15,16],\"inclusive\":false},\"string\":{\"rules\":[18,19],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/**\n * Created by knut on 15-01-14.\n */\nimport { logger } from '../../logger'\n\nvar message = ''\nvar info = false\n\nexport const setMessage = txt => {\n logger.debug('Setting message to: ' + txt)\n message = txt\n}\n\nexport const getMessage = () => {\n return message\n}\n\nexport const setInfo = inf => {\n info = inf\n}\n\nexport const getInfo = () => {\n return info\n}\n\n// export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\nexport default {\n setMessage,\n getMessage,\n setInfo,\n getInfo\n // parseError\n}\n","/**\n * Created by knut on 14-12-11.\n */\nimport * as d3 from 'd3'\nimport db from './infoDb'\nimport infoParser from './parser/info.js'\nimport { logger } from '../../logger'\n\nconst conf = {\n}\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf)\n\n keys.forEach(function (key) {\n conf[key] = cnf[key]\n })\n}\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = (txt, id, ver) => {\n try {\n const parser = infoParser.parser\n parser.yy = db\n logger.debug('Renering info diagram\\n' + txt)\n // Parse the graph definition\n parser.parse(txt)\n logger.debug('Parsed info diagram')\n // Fetch the default direction, use TD if none was found\n const svg = d3.select('#' + id)\n\n const g = svg.append('g')\n\n g.append('text') // text label for the x axis\n .attr('x', 100)\n .attr('y', 40)\n .attr('class', 'version')\n .attr('font-size', '32px')\n .style('text-anchor', 'middle')\n .text('v ' + ver)\n\n svg.attr('height', 100)\n svg.attr('width', 400)\n // svg.attr('viewBox', '0 0 300 150');\n } catch (e) {\n logger.error('Error while rendering info diagram')\n logger.error(e.message)\n }\n}\n\nexport default {\n setConf,\n draw\n}\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10,12];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"message\":11,\"say\":12,\"TXT\":13,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\",12:\"say\",13:\"TXT\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1],[8,1],[11,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\ncase 7:\n yy.setMessage($$[$0]); \nbreak;\ncase 8:\n this.$ = $$[$0-1].substring(1).trim().replace(/\\\\n/gm, \"\\n\"); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8],11:9,12:[1,10]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,7]),{13:[1,11]},o($V0,[2,8])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space'\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 12 ;\nbreak;\ncase 5:return 6 ;\nbreak;\ncase 6:return 13 ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:say\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,4],$V3=[2,4],$V4=[1,9],$V5=[1,11],$V6=[1,12],$V7=[1,14],$V8=[1,15],$V9=[1,17],$Va=[1,18],$Vb=[1,19],$Vc=[1,20],$Vd=[1,21],$Ve=[1,23],$Vf=[1,24],$Vg=[1,4,5,10,15,16,18,20,21,22,23,25,27,28,29,40],$Vh=[1,32],$Vi=[4,5,10,15,16,18,20,21,22,23,25,29,40],$Vj=[4,5,10,15,16,18,20,21,22,23,25,28,29,40],$Vk=[4,5,10,15,16,18,20,21,22,23,25,27,29,40],$Vl=[38,39,40];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"SD\":6,\"document\":7,\"line\":8,\"statement\":9,\"participant\":10,\"actor\":11,\"AS\":12,\"restOfLine\":13,\"signal\":14,\"activate\":15,\"deactivate\":16,\"note_statement\":17,\"title\":18,\"text2\":19,\"loop\":20,\"end\":21,\"opt\":22,\"alt\":23,\"else_sections\":24,\"par\":25,\"par_sections\":26,\"and\":27,\"else\":28,\"note\":29,\"placement\":30,\"over\":31,\"actor_pair\":32,\"spaceList\":33,\",\":34,\"left_of\":35,\"right_of\":36,\"signaltype\":37,\"+\":38,\"-\":39,\"ACTOR\":40,\"SOLID_OPEN_ARROW\":41,\"DOTTED_OPEN_ARROW\":42,\"SOLID_ARROW\":43,\"DOTTED_ARROW\":44,\"SOLID_CROSS\":45,\"DOTTED_CROSS\":46,\"TXT\":47,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",6:\"SD\",10:\"participant\",12:\"AS\",13:\"restOfLine\",15:\"activate\",16:\"deactivate\",18:\"title\",20:\"loop\",21:\"end\",22:\"opt\",23:\"alt\",25:\"par\",27:\"and\",28:\"else\",29:\"note\",31:\"over\",34:\",\",35:\"left_of\",36:\"right_of\",38:\"+\",39:\"-\",40:\"ACTOR\",41:\"SOLID_OPEN_ARROW\",42:\"DOTTED_OPEN_ARROW\",43:\"SOLID_ARROW\",44:\"DOTTED_ARROW\",45:\"SOLID_CROSS\",46:\"DOTTED_CROSS\",47:\"TXT\"},\nproductions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,5],[9,3],[9,2],[9,3],[9,3],[9,2],[9,3],[9,4],[9,4],[9,4],[9,4],[26,1],[26,4],[24,1],[24,4],[17,4],[17,4],[33,2],[33,1],[32,3],[32,1],[30,1],[30,1],[14,5],[14,5],[14,4],[11,1],[37,1],[37,1],[37,1],[37,1],[37,1],[37,1],[19,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 4:\n this.$ = [] \nbreak;\ncase 5:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 6: case 7:\n this.$ = $$[$0] \nbreak;\ncase 8:\n this.$=[];\nbreak;\ncase 9:\n$$[$0-3].description=$$[$0-1]; this.$=$$[$0-3];\nbreak;\ncase 10:\nthis.$=$$[$0-1];\nbreak;\ncase 12:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 13:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 15:\nthis.$=[{type:'setTitle', text:$$[$0-1]}]\nbreak;\ncase 16:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 17:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:$$[$0-2], signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:$$[$0-2], signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 18:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:$$[$0-2], signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 19:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:$$[$0-2], signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 21:\n this.$ = $$[$0-3].concat([{type: 'and', parText:$$[$0-1], signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 23:\n this.$ = $$[$0-3].concat([{type: 'else', altText:$$[$0-1], signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 24:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 25:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 28:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 29:\n this.$ = $$[$0]; \nbreak;\ncase 30:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 31:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 32:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\n\t ]\nbreak;\ncase 33:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\n\t ]\nbreak;\ncase 34:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 35:\nthis.$={type: 'addActor', actor:$$[$0]}\nbreak;\ncase 36:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 37:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 38:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 39:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 40:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 41:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 42:\nthis.$ = $$[$0].substring(1).trim().replace(/\\\\n/gm, \"\\n\");\nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:$V2},{1:[3]},{3:5,4:$V0,5:$V1,6:$V2},{3:6,4:$V0,5:$V1,6:$V2},o([1,4,5,10,15,16,18,20,22,23,25,29,40],$V3,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},o($Vg,[2,5]),{9:25,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},o($Vg,[2,7]),o($Vg,[2,8]),{11:26,40:$Vf},{5:[1,27]},{11:28,40:$Vf},{11:29,40:$Vf},{5:[1,30]},{19:31,47:$Vh},{13:[1,33]},{13:[1,34]},{13:[1,35]},{13:[1,36]},{37:37,41:[1,38],42:[1,39],43:[1,40],44:[1,41],45:[1,42],46:[1,43]},{30:44,31:[1,45],35:[1,46],36:[1,47]},o([5,12,34,41,42,43,44,45,46,47],[2,35]),o($Vg,[2,6]),{5:[1,49],12:[1,48]},o($Vg,[2,11]),{5:[1,50]},{5:[1,51]},o($Vg,[2,14]),{5:[1,52]},{5:[2,42]},o($Vi,$V3,{7:53}),o($Vi,$V3,{7:54}),o($Vj,$V3,{24:55,7:56}),o($Vk,$V3,{26:57,7:58}),{11:61,38:[1,59],39:[1,60],40:$Vf},o($Vl,[2,36]),o($Vl,[2,37]),o($Vl,[2,38]),o($Vl,[2,39]),o($Vl,[2,40]),o($Vl,[2,41]),{11:62,40:$Vf},{11:64,32:63,40:$Vf},{40:[2,30]},{40:[2,31]},{13:[1,65]},o($Vg,[2,10]),o($Vg,[2,12]),o($Vg,[2,13]),o($Vg,[2,15]),{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[1,66],22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[1,67],22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},{21:[1,68]},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[2,22],22:$Vb,23:$Vc,25:$Vd,28:[1,69],29:$Ve,40:$Vf},{21:[1,70]},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[2,20],22:$Vb,23:$Vc,25:$Vd,27:[1,71],29:$Ve,40:$Vf},{11:72,40:$Vf},{11:73,40:$Vf},{19:74,47:$Vh},{19:75,47:$Vh},{19:76,47:$Vh},{34:[1,77],47:[2,29]},{5:[1,78]},o($Vg,[2,16]),o($Vg,[2,17]),o($Vg,[2,18]),{13:[1,79]},o($Vg,[2,19]),{13:[1,80]},{19:81,47:$Vh},{19:82,47:$Vh},{5:[2,34]},{5:[2,24]},{5:[2,25]},{11:83,40:$Vf},o($Vg,[2,9]),o($Vj,$V3,{7:56,24:84}),o($Vk,$V3,{7:58,26:85}),{5:[2,32]},{5:[2,33]},{47:[2,28]},{21:[2,23]},{21:[2,21]}],\ndefaultActions: {5:[2,1],6:[2,2],32:[2,42],46:[2,30],47:[2,31],74:[2,34],75:[2,24],76:[2,25],81:[2,32],82:[2,33],83:[2,28],84:[2,23],85:[2,21]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 5;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip same-line whitespace */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5: this.begin('ID'); return 10; \nbreak;\ncase 6: this.begin('ALIAS'); return 40; \nbreak;\ncase 7: this.popState(); this.popState(); this.begin('LINE'); return 12; \nbreak;\ncase 8: this.popState(); this.popState(); return 5; \nbreak;\ncase 9: this.begin('LINE'); return 20; \nbreak;\ncase 10: this.begin('LINE'); return 22; \nbreak;\ncase 11: this.begin('LINE'); return 23; \nbreak;\ncase 12: this.begin('LINE'); return 28; \nbreak;\ncase 13: this.begin('LINE'); return 25; \nbreak;\ncase 14: this.begin('LINE'); return 27; \nbreak;\ncase 15: this.popState(); return 13; \nbreak;\ncase 16:return 21;\nbreak;\ncase 17:return 35;\nbreak;\ncase 18:return 36;\nbreak;\ncase 19:return 31;\nbreak;\ncase 20:return 29;\nbreak;\ncase 21: this.begin('ID'); return 15; \nbreak;\ncase 22: this.begin('ID'); return 16; \nbreak;\ncase 23:return 18;\nbreak;\ncase 24:return 6;\nbreak;\ncase 25:return 34;\nbreak;\ncase 26:return 5;\nbreak;\ncase 27: yy_.yytext = yy_.yytext.trim(); return 40; \nbreak;\ncase 28:return 43;\nbreak;\ncase 29:return 44;\nbreak;\ncase 30:return 41;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 45;\nbreak;\ncase 33:return 46;\nbreak;\ncase 34:return 47;\nbreak;\ncase 35:return 38;\nbreak;\ncase 36:return 39;\nbreak;\ncase 37:return 5;\nbreak;\ncase 38:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\b)/i,/^(?:sequenceDiagram\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[2,3,15],\"inclusive\":false},\"ALIAS\":{\"rules\":[2,3,7,8],\"inclusive\":false},\"ID\":{\"rules\":[2,3,6],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,3,4,5,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import { logger } from '../../logger'\n\nlet actors = {}\nlet messages = []\nconst notes = []\nlet title = ''\n\nexport const addActor = function (id, name, description) {\n // Don't allow description nulling\n const old = actors[id]\n if (old && name === old.name && description == null) return\n\n // Don't allow null descriptions, either\n if (description == null) description = name\n\n actors[id] = { name: name, description: description }\n}\n\nexport const addMessage = function (idFrom, idTo, message, answer) {\n messages.push({ from: idFrom, to: idTo, message: message, answer: answer })\n}\n\nexport const addSignal = function (idFrom, idTo, message, messageType) {\n logger.debug('Adding message from=' + idFrom + ' to=' + idTo + ' message=' + message + ' type=' + messageType)\n messages.push({ from: idFrom, to: idTo, message: message, type: messageType })\n}\n\nexport const getMessages = function () {\n return messages\n}\n\nexport const getActors = function () {\n return actors\n}\nexport const getActor = function (id) {\n return actors[id]\n}\nexport const getActorKeys = function () {\n return Object.keys(actors)\n}\nexport const getTitle = function () {\n return title\n}\n\nexport const clear = function () {\n actors = {}\n messages = []\n}\n\nexport const LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21\n}\n\nexport const ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n}\n\nexport const PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n}\n\nexport const addNote = function (actor, placement, message) {\n const note = { actor: actor, placement: placement, message: message }\n\n // Coerce actor into a [to, from, ...] array\n const actors = [].concat(actor, actor)\n\n notes.push(note)\n messages.push({ from: actors[0], to: actors[1], message: message, type: LINETYPE.NOTE, placement: placement })\n}\n\nexport const setTitle = function (titleText) {\n title = titleText\n}\n\nexport const apply = function (param) {\n if (param instanceof Array) {\n param.forEach(function (item) {\n apply(item)\n })\n } else {\n switch (param.type) {\n case 'addActor':\n addActor(param.actor, param.actor, param.description)\n break\n case 'activeStart':\n addSignal(param.actor, undefined, undefined, param.signalType)\n break\n case 'activeEnd':\n addSignal(param.actor, undefined, undefined, param.signalType)\n break\n case 'addNote':\n addNote(param.actor, param.placement, param.text)\n break\n case 'addMessage':\n addSignal(param.from, param.to, param.msg, param.signalType)\n break\n case 'loopStart':\n addSignal(undefined, undefined, param.loopText, param.signalType)\n break\n case 'loopEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n case 'optStart':\n addSignal(undefined, undefined, param.optText, param.signalType)\n break\n case 'optEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n case 'altStart':\n addSignal(undefined, undefined, param.altText, param.signalType)\n break\n case 'else':\n addSignal(undefined, undefined, param.altText, param.signalType)\n break\n case 'altEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n case 'setTitle':\n setTitle(param.text)\n break\n case 'parStart':\n addSignal(undefined, undefined, param.parText, param.signalType)\n break\n case 'and':\n addSignal(undefined, undefined, param.parText, param.signalType)\n break\n case 'parEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n }\n }\n}\n\nexport default {\n addActor,\n addMessage,\n addSignal,\n getMessages,\n getActors,\n getActor,\n getActorKeys,\n getTitle,\n clear,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n addNote,\n setTitle,\n apply\n}\n","import * as d3 from 'd3'\n\nimport svgDraw from './svgDraw'\nimport { logger } from '../../logger'\nimport { parser } from './parser/sequenceDiagram'\nimport sequenceDb from './sequenceDb'\n\nparser.yy = sequenceDb\n\nconst conf = {\n\n diagramMarginX: 50,\n diagramMarginY: 30,\n // Margin between actors\n actorMargin: 50,\n // Width of actor boxes\n width: 150,\n // Height of actor boxes\n height: 65,\n actorFontSize: 14,\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\n // Margin around loop boxes\n boxMargin: 10,\n boxTextMargin: 5,\n noteMargin: 10,\n // Space between messages\n messageMargin: 35,\n // mirror actors under diagram\n mirrorActors: false,\n // Depending on css styling this might need adjustment\n // Prolongs the edge of the diagram downwards\n bottomMarginAdj: 1,\n\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'tspan'\n}\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n\n sequenceItems: [],\n activations: [],\n init: function () {\n this.sequenceItems = []\n this.activations = []\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n }\n this.verticalPos = 0\n },\n updateVal: function (obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val\n } else {\n obj[key] = fun(val, obj[key])\n }\n },\n updateBounds: function (startx, starty, stopx, stopy) {\n const _self = this\n let cnt = 0\n function updateFn (type) {\n return function updateItemBounds (item) {\n cnt++\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min)\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max)\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min)\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max)\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min)\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max)\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min)\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max)\n }\n }\n }\n\n this.sequenceItems.forEach(updateFn())\n this.activations.forEach(updateFn('activation'))\n },\n insert: function (startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx)\n const _stopx = Math.max(startx, stopx)\n const _starty = Math.min(starty, stopy)\n const _stopy = Math.max(starty, stopy)\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min)\n this.updateVal(bounds.data, 'starty', _starty, Math.min)\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max)\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max)\n\n this.updateBounds(_startx, _starty, _stopx, _stopy)\n },\n newActivation: function (message, diagram) {\n const actorRect = parser.yy.getActors()[message.from.actor]\n const stackedSize = actorActivations(message.from.actor).length\n const x = actorRect.x + conf.width / 2 + (stackedSize - 1) * conf.activationWidth / 2\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: undefined,\n actor: message.from.actor,\n anchored: svgDraw.anchorElement(diagram)\n })\n },\n endActivation: function (message) {\n // find most recent activation for given actor\n const lastActorActivationIdx = this.activations\n .map(function (activation) { return activation.actor })\n .lastIndexOf(message.from.actor)\n const activation = this.activations.splice(lastActorActivationIdx, 1)[0]\n return activation\n },\n newLoop: function (title) {\n this.sequenceItems.push({ startx: undefined, starty: this.verticalPos, stopx: undefined, stopy: undefined, title: title })\n },\n endLoop: function () {\n const loop = this.sequenceItems.pop()\n return loop\n },\n addSectionToLoop: function (message) {\n const loop = this.sequenceItems.pop()\n loop.sections = loop.sections || []\n loop.sectionTitles = loop.sectionTitles || []\n loop.sections.push(bounds.getVerticalPos())\n loop.sectionTitles.push(message)\n this.sequenceItems.push(loop)\n },\n bumpVerticalPos: function (bump) {\n this.verticalPos = this.verticalPos + bump\n this.data.stopy = this.verticalPos\n },\n getVerticalPos: function () {\n return this.verticalPos\n },\n getBounds: function () {\n return this.data\n }\n}\n\nconst _drawLongText = (text, x, y, g, width) => {\n let textHeight = 0\n const lines = text.split(/<br\\/?>/ig)\n for (const line of lines) {\n const textObj = svgDraw.getTextObj()\n textObj.x = x\n textObj.y = y + textHeight\n textObj.textMargin = conf.noteMargin\n textObj.dy = '1em'\n textObj.text = line\n textObj.class = 'noteText'\n const textElem = svgDraw.drawText(g, textObj, width)\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height\n }\n return textHeight\n}\n\n/**\n * Draws an actor in the diagram with the attaced line\n * @param center - The center of the the actor\n * @param pos The position if the actor in the liost of actors\n * @param description The text in the box\n */\nconst drawNote = function (elem, startx, verticalPos, msg, forceWidth) {\n const rect = svgDraw.getNoteRect()\n rect.x = startx\n rect.y = verticalPos\n rect.width = forceWidth || conf.width\n rect.class = 'note'\n\n let g = elem.append('g')\n const rectElem = svgDraw.drawRect(g, rect)\n\n const textHeight = _drawLongText(msg.message, startx - 4, verticalPos + 24, g, rect.width - conf.noteMargin)\n\n bounds.insert(startx, verticalPos, startx + rect.width, verticalPos + 2 * conf.noteMargin + textHeight)\n rectElem.attr('height', textHeight + 2 * conf.noteMargin)\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin)\n}\n\n/**\n * Draws a message\n * @param elem\n * @param startx\n * @param stopx\n * @param verticalPos\n * @param txtCenter\n * @param msg\n */\nconst drawMessage = function (elem, startx, stopx, verticalPos, msg) {\n const g = elem.append('g')\n const txtCenter = startx + (stopx - startx) / 2\n\n const textElem = g.append('text') // text label for the x axis\n .attr('x', txtCenter)\n .attr('y', verticalPos - 7)\n .style('text-anchor', 'middle')\n .attr('class', 'messageText')\n .text(msg.message)\n\n let textWidth = (textElem._groups || textElem)[0][0].getBBox().width\n\n let line\n if (startx === stopx) {\n if (conf.rightAngles) {\n line = g.append('path').attr('d', `M ${startx},${verticalPos} H ${startx + (conf.width / 2)} V ${verticalPos + 25} H ${startx}`)\n } else {\n line = g.append('path')\n .attr('d', 'M ' + startx + ',' + verticalPos + ' C ' + (startx + 60) + ',' + (verticalPos - 10) + ' ' + (startx + 60) + ',' +\n (verticalPos + 30) + ' ' + startx + ',' + (verticalPos + 20))\n }\n\n bounds.bumpVerticalPos(30)\n const dx = Math.max(textWidth / 2, 100)\n bounds.insert(startx - dx, bounds.getVerticalPos() - 10, stopx + dx, bounds.getVerticalPos())\n } else {\n line = g.append('line')\n line.attr('x1', startx)\n line.attr('y1', verticalPos)\n line.attr('x2', stopx)\n line.attr('y2', verticalPos)\n bounds.insert(startx, bounds.getVerticalPos() - 10, stopx, bounds.getVerticalPos())\n }\n // Make an SVG Container\n // Draw the line\n if (msg.type === parser.yy.LINETYPE.DOTTED || msg.type === parser.yy.LINETYPE.DOTTED_CROSS || msg.type === parser.yy.LINETYPE.DOTTED_OPEN) {\n line.style('stroke-dasharray', ('3, 3'))\n line.attr('class', 'messageLine1')\n } else {\n line.attr('class', 'messageLine0')\n }\n\n let url = ''\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search\n url = url.replace(/\\(/g, '\\\\(')\n url = url.replace(/\\)/g, '\\\\)')\n }\n\n line.attr('stroke-width', 2)\n line.attr('stroke', 'black')\n line.style('fill', 'none') // remove any fill colour\n if (msg.type === parser.yy.LINETYPE.SOLID || msg.type === parser.yy.LINETYPE.DOTTED) {\n line.attr('marker-end', 'url(' + url + '#arrowhead)')\n }\n\n if (msg.type === parser.yy.LINETYPE.SOLID_CROSS || msg.type === parser.yy.LINETYPE.DOTTED_CROSS) {\n line.attr('marker-end', 'url(' + url + '#crosshead)')\n }\n}\n\nexport const drawActors = function (diagram, actors, actorKeys, verticalPos) {\n // Draw the actors\n for (let i = 0; i < actorKeys.length; i++) {\n const key = actorKeys[i]\n\n // Add some rendering data to the object\n actors[key].x = i * conf.actorMargin + i * conf.width\n actors[key].y = verticalPos\n actors[key].width = conf.diagramMarginX\n actors[key].height = conf.diagramMarginY\n\n // Draw the box with the attached line\n svgDraw.drawActor(diagram, actors[key].x, verticalPos, actors[key].description, conf)\n bounds.insert(actors[key].x, verticalPos, actors[key].x + conf.width, conf.height)\n }\n\n // Add a margin between the actor boxes and the first arrow\n bounds.bumpVerticalPos(conf.height)\n}\n\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf)\n\n keys.forEach(function (key) {\n conf[key] = cnf[key]\n })\n}\n\nconst actorActivations = function (actor) {\n return bounds.activations.filter(function (activation) {\n return activation.actor === actor\n })\n}\n\nconst actorFlowVerticaBounds = function (actor) {\n // handle multiple stacked activations for same actor\n const actors = parser.yy.getActors()\n const activations = actorActivations(actor)\n\n const left = activations.reduce(function (acc, activation) { return Math.min(acc, activation.startx) }, actors[actor].x + conf.width / 2)\n const right = activations.reduce(function (acc, activation) { return Math.max(acc, activation.stopx) }, actors[actor].x + conf.width / 2)\n return [left, right]\n}\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function (text, id) {\n parser.yy.clear()\n parser.parse(text + '\\n')\n\n bounds.init()\n const diagram = d3.select(`[id=\"${id}\"]`)\n\n let startx\n let stopx\n let forceWidth\n\n // Fetch data from the parsing\n const actors = parser.yy.getActors()\n const actorKeys = parser.yy.getActorKeys()\n const messages = parser.yy.getMessages()\n const title = parser.yy.getTitle()\n drawActors(diagram, actors, actorKeys, 0)\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram)\n svgDraw.insertArrowCrossHead(diagram)\n\n function activeEnd (msg, verticalPos) {\n const activationData = bounds.endActivation(msg)\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6\n verticalPos += 12\n }\n svgDraw.drawActivation(diagram, activationData, verticalPos, conf, actorActivations(msg.from.actor).length)\n\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos)\n }\n\n // const lastMsg\n\n // Draw the messages/signals\n messages.forEach(function (msg) {\n let loopData\n switch (msg.type) {\n case parser.yy.LINETYPE.NOTE:\n bounds.bumpVerticalPos(conf.boxMargin)\n\n startx = actors[msg.from].x\n stopx = actors[msg.to].x\n\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n drawNote(diagram, startx + (conf.width + conf.actorMargin) / 2, bounds.getVerticalPos(), msg)\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n drawNote(diagram, startx - (conf.width + conf.actorMargin) / 2, bounds.getVerticalPos(), msg)\n } else if (msg.to === msg.from) {\n // Single-actor over\n drawNote(diagram, startx, bounds.getVerticalPos(), msg)\n } else {\n // Multi-actor over\n forceWidth = Math.abs(startx - stopx) + conf.actorMargin\n drawNote(diagram, (startx + stopx + conf.width - forceWidth) / 2, bounds.getVerticalPos(), msg,\n forceWidth)\n }\n break\n case parser.yy.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram)\n break\n case parser.yy.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos())\n break\n case parser.yy.LINETYPE.LOOP_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.LOOP_END:\n loopData = bounds.endLoop()\n\n svgDraw.drawLoop(diagram, loopData, 'loop', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.OPT_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.OPT_END:\n loopData = bounds.endLoop()\n\n svgDraw.drawLoop(diagram, loopData, 'opt', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.ALT_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.ALT_ELSE:\n bounds.bumpVerticalPos(conf.boxMargin)\n loopData = bounds.addSectionToLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.ALT_END:\n loopData = bounds.endLoop()\n\n svgDraw.drawLoop(diagram, loopData, 'alt', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.PAR_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.PAR_AND:\n bounds.bumpVerticalPos(conf.boxMargin)\n loopData = bounds.addSectionToLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.PAR_END:\n loopData = bounds.endLoop()\n svgDraw.drawLoop(diagram, loopData, 'par', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n default:\n try {\n // lastMsg = msg\n bounds.bumpVerticalPos(conf.messageMargin)\n const fromBounds = actorFlowVerticaBounds(msg.from)\n const toBounds = actorFlowVerticaBounds(msg.to)\n const fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0\n const toIdx = fromBounds[0] < toBounds[0] ? 0 : 1\n startx = fromBounds[fromIdx]\n stopx = toBounds[toIdx]\n\n const verticalPos = bounds.getVerticalPos()\n drawMessage(diagram, startx, stopx, verticalPos, msg)\n const allBounds = fromBounds.concat(toBounds)\n bounds.insert(Math.min.apply(null, allBounds), verticalPos, Math.max.apply(null, allBounds), verticalPos)\n } catch (e) {\n logger.error('error while drawing message', e)\n }\n }\n })\n\n if (conf.mirrorActors) {\n // Draw actors below diagram\n bounds.bumpVerticalPos(conf.boxMargin * 2)\n drawActors(diagram, actors, actorKeys, bounds.getVerticalPos())\n }\n\n const box = bounds.getBounds()\n\n // Adjust line height of actor lines now that the height of the diagram is known\n logger.debug('For line height fix Querying: #' + id + ' .actor-line')\n const actorLines = d3.selectAll('#' + id + ' .actor-line')\n actorLines.attr('y2', box.stopy)\n\n let height = box.stopy - box.starty + 2 * conf.diagramMarginY\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj\n }\n\n const width = (box.stopx - box.startx) + (2 * conf.diagramMarginX)\n\n if (title) {\n diagram.append('text')\n .text(title)\n .attr('x', ((box.stopx - box.startx) / 2) - (2 * conf.diagramMarginX))\n .attr('y', -25)\n }\n\n if (conf.useMaxWidth) {\n diagram.attr('height', '100%')\n diagram.attr('width', '100%')\n diagram.attr('style', 'max-width:' + (width) + 'px;')\n } else {\n diagram.attr('height', height)\n diagram.attr('width', width)\n }\n const extraVertForTitle = title ? 40 : 0\n diagram.attr('viewBox', (box.startx - conf.diagramMarginX) + ' -' + (conf.diagramMarginY + extraVertForTitle) + ' ' + width + ' ' + (height + extraVertForTitle))\n}\n\nexport default {\n bounds,\n drawActors,\n setConf,\n draw\n}\n","export const drawRect = function (elem, rectData) {\n const rectElem = elem.append('rect')\n rectElem.attr('x', rectData.x)\n rectElem.attr('y', rectData.y)\n rectElem.attr('fill', rectData.fill)\n rectElem.attr('stroke', rectData.stroke)\n rectElem.attr('width', rectData.width)\n rectElem.attr('height', rectData.height)\n rectElem.attr('rx', rectData.rx)\n rectElem.attr('ry', rectData.ry)\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class)\n }\n\n return rectElem\n}\n\nexport const drawText = function (elem, textData, width) {\n // Remove and ignore br:s\n const nText = textData.text.replace(/<br\\/?>/ig, ' ')\n\n const textElem = elem.append('text')\n textElem.attr('x', textData.x)\n textElem.attr('y', textData.y)\n textElem.style('text-anchor', textData.anchor)\n textElem.attr('fill', textData.fill)\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class)\n }\n\n const span = textElem.append('tspan')\n span.attr('x', textData.x + textData.textMargin * 2)\n span.attr('fill', textData.fill)\n span.text(nText)\n\n return textElem\n}\n\nexport const drawLabel = function (elem, txtObject) {\n function genPoints (x, y, width, height, cut) {\n return x + ',' + y + ' ' +\n (x + width) + ',' + y + ' ' +\n (x + width) + ',' + (y + height - cut) + ' ' +\n (x + width - cut * 1.2) + ',' + (y + height) + ' ' +\n (x) + ',' + (y + height)\n }\n const polygon = elem.append('polygon')\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7))\n polygon.attr('class', 'labelBox')\n\n txtObject.y = txtObject.y + txtObject.labelMargin\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin\n drawText(elem, txtObject)\n}\n\nlet actorCnt = -1\n/**\n * Draws an actor in the diagram with the attaced line\n * @param center - The center of the the actor\n * @param pos The position if the actor in the liost of actors\n * @param description The text in the box\n */\nexport const drawActor = function (elem, left, verticalPos, description, conf) {\n const center = left + (conf.width / 2)\n const g = elem.append('g')\n if (verticalPos === 0) {\n actorCnt++\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', 5)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n }\n\n const rect = getNoteRect()\n rect.x = left\n rect.y = verticalPos\n rect.fill = '#eaeaea'\n rect.width = conf.width\n rect.height = conf.height\n rect.class = 'actor'\n rect.rx = 3\n rect.ry = 3\n drawRect(g, rect)\n\n _drawTextCandidateFunc(conf)(description, g,\n rect.x, rect.y, rect.width, rect.height, { 'class': 'actor' }, conf)\n}\n\nexport const anchorElement = function (elem) {\n return elem.append('g')\n}\n/**\n * Draws an actor in the diagram with the attaced line\n * @param elem - element to append activation rect\n * @param bounds - activation box bounds\n * @param verticalPos - precise y cooridnate of bottom activation box edge\n */\nexport const drawActivation = function (elem, bounds, verticalPos, conf, actorActivations) {\n const rect = getNoteRect()\n const g = bounds.anchored\n rect.x = bounds.startx\n rect.y = bounds.starty\n rect.class = 'activation' + (actorActivations % 3) // Will evaluate to 0, 1 or 2\n rect.width = bounds.stopx - bounds.startx\n rect.height = verticalPos - bounds.starty\n drawRect(g, rect)\n}\n\n/**\n * Draws an actor in the diagram with the attaced line\n * @param center - The center of the the actor\n * @param pos The position if the actor in the list of actors\n * @param description The text in the box\n */\nexport const drawLoop = function (elem, bounds, labelText, conf) {\n const g = elem.append('g')\n const drawLoopLine = function (startx, starty, stopx, stopy) {\n return g.append('line')\n .attr('x1', startx)\n .attr('y1', starty)\n .attr('x2', stopx)\n .attr('y2', stopy)\n .attr('class', 'loopLine')\n }\n drawLoopLine(bounds.startx, bounds.starty, bounds.stopx, bounds.starty)\n drawLoopLine(bounds.stopx, bounds.starty, bounds.stopx, bounds.stopy)\n drawLoopLine(bounds.startx, bounds.stopy, bounds.stopx, bounds.stopy)\n drawLoopLine(bounds.startx, bounds.starty, bounds.startx, bounds.stopy)\n if (typeof bounds.sections !== 'undefined') {\n bounds.sections.forEach(function (item) {\n drawLoopLine(bounds.startx, item, bounds.stopx, item).style('stroke-dasharray', '3, 3')\n })\n }\n\n let txt = getTextObj()\n txt.text = labelText\n txt.x = bounds.startx\n txt.y = bounds.starty\n txt.labelMargin = 1.5 * 10 // This is the small box that says \"loop\"\n txt.class = 'labelText' // Its size & position are fixed.\n\n drawLabel(g, txt)\n\n txt = getTextObj()\n txt.text = '[ ' + bounds.title + ' ]'\n txt.x = bounds.startx + (bounds.stopx - bounds.startx) / 2\n txt.y = bounds.starty + 1.5 * conf.boxMargin\n txt.anchor = 'middle'\n txt.class = 'loopText'\n\n drawText(g, txt)\n\n if (typeof bounds.sectionTitles !== 'undefined') {\n bounds.sectionTitles.forEach(function (item, idx) {\n if (item !== '') {\n txt.text = '[ ' + item + ' ]'\n txt.y = bounds.sections[idx] + 1.5 * conf.boxMargin\n drawText(g, txt)\n }\n })\n }\n}\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowHead = function (elem) {\n elem.append('defs').append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z') // this is actual shape for arrowhead\n}\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowCrossHead = function (elem) {\n const defs = elem.append('defs')\n const marker = defs.append('marker')\n .attr('id', 'crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 16)\n .attr('refY', 4)\n\n // The arrow\n marker.append('path')\n .attr('fill', 'black')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', ('0, 0'))\n .attr('stroke-width', '1px')\n .attr('d', 'M 9,2 V 6 L16,4 Z')\n\n // The cross\n marker.append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', ('0, 0'))\n .attr('stroke-width', '1px')\n .attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7')\n // this is actual shape for arrowhead\n}\n\nexport const getTextObj = function () {\n const txt = {\n x: 0,\n y: 0,\n 'fill': undefined,\n 'text-anchor': 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n }\n return txt\n}\n\nexport const getNoteRect = function () {\n const rect = {\n x: 0,\n y: 0,\n fill: '#EDF2AE',\n stroke: '#666',\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n }\n return rect\n}\n\nconst _drawTextCandidateFunc = (function () {\n function byText (content, g, x, y, width, height, textAttrs) {\n const text = g.append('text')\n .attr('x', x + width / 2).attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content)\n _setTextAttrs(text, textAttrs)\n }\n\n function byTspan (content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily } = conf\n\n const lines = content.split(/<br\\/?>/ig)\n for (let i = 0; i < lines.length; i++) {\n const dy = (i * actorFontSize) - (actorFontSize * (lines.length - 1) / 2)\n const text = g.append('text')\n .attr('x', x + width / 2).attr('y', y)\n .style('text-anchor', 'middle')\n .style('font-size', actorFontSize)\n .style('font-family', actorFontFamily)\n text.append('tspan')\n .attr('x', x + width / 2).attr('dy', dy)\n .text(lines[i])\n\n text.attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central')\n\n _setTextAttrs(text, textAttrs)\n }\n }\n\n function byFo (content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch')\n const f = s.append('foreignObject')\n .attr('x', x).attr('y', y)\n .attr('width', width).attr('height', height)\n\n const text = f.append('div').style('display', 'table')\n .style('height', '100%').style('width', '100%')\n\n text.append('div').style('display', 'table-cell')\n .style('text-align', 'center').style('vertical-align', 'middle')\n .text(content)\n\n byTspan(content, s, x, y, width, height, textAttrs, conf)\n _setTextAttrs(text, textAttrs)\n }\n\n function _setTextAttrs (toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key])\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : (\n conf.textPlacement === 'old' ? byText : byTspan)\n }\n})()\n\nexport default {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n anchorElement,\n drawActivation,\n drawLoop,\n insertArrowHead,\n insertArrowCrossHead,\n getTextObj,\n getNoteRect\n}\n","import moment from 'moment-mini'\n\nexport const LEVELS = {\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5\n}\n\nexport const logger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n fatal: () => {}\n}\n\nexport const setLogLevel = function (level) {\n logger.debug = () => {}\n logger.info = () => {}\n logger.warn = () => {}\n logger.error = () => {}\n logger.fatal = () => {}\n if (level <= LEVELS.fatal) {\n logger.fatal = console.log.bind(console, '\\x1b[35m', format('FATAL'))\n }\n if (level <= LEVELS.error) {\n logger.error = console.log.bind(console, '\\x1b[31m', format('ERROR'))\n }\n if (level <= LEVELS.warn) {\n logger.warn = console.log.bind(console, `\\x1b[33m`, format('WARN'))\n }\n if (level <= LEVELS.info) {\n logger.info = console.log.bind(console, '\\x1b[34m', format('INFO'))\n }\n if (level <= LEVELS.debug) {\n logger.debug = console.log.bind(console, '\\x1b[32m', format('DEBUG'))\n }\n}\n\nconst format = (level) => {\n const time = moment().format('HH:mm:ss.SSS')\n return `${time} : ${level} : `\n}\n","/**\n * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render\n * the diagrams to svg code.\n */\nimport he from 'he'\n\nimport mermaidAPI from './mermaidAPI'\nimport { logger } from './logger'\n\n/**\n * ## init\n * Function that goes through the document to find the chart definitions in there and render them.\n *\n * The function tags the processed attributes with the attribute data-processed and ignores found elements with the\n * attribute already set. This way the init function can be triggered several times.\n *\n * Optionally, `init` can accept in the second argument one of the following:\n * - a DOM Node\n * - an array of DOM nodes (as would come from a jQuery selector)\n * - a W3C selector, a la `.mermaid`\n *\n * ```mermaid\n * graph LR;\n * a(Find elements)-->b{Processed}\n * b-->|Yes|c(Leave element)\n * b-->|No |d(Transform)\n * ```\n * Renders the mermaid diagrams\n * @param nodes a css selector or an array of nodes\n */\nconst init = function () {\n const conf = mermaidAPI.getConfig()\n logger.debug('Starting rendering diagrams')\n let nodes\n if (arguments.length >= 2) {\n /*! sequence config was passed as #1 */\n if (typeof arguments[0] !== 'undefined') {\n mermaid.sequenceConfig = arguments[0]\n }\n\n nodes = arguments[1]\n } else {\n nodes = arguments[0]\n }\n\n // if last argument is a function this is the callback function\n let callback\n if (typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1]\n logger.debug('Callback function found')\n } else {\n if (typeof conf.mermaid !== 'undefined') {\n if (typeof conf.mermaid.callback === 'function') {\n callback = conf.mermaid.callback\n logger.debug('Callback function found')\n } else {\n logger.debug('No Callback function found')\n }\n }\n }\n nodes = nodes === undefined ? document.querySelectorAll('.mermaid')\n : typeof nodes === 'string' ? document.querySelectorAll(nodes)\n : nodes instanceof window.Node ? [nodes]\n : nodes // Last case - sequence config was passed pick next\n\n logger.debug('Start On Load before: ' + mermaid.startOnLoad)\n if (typeof mermaid.startOnLoad !== 'undefined') {\n logger.debug('Start On Load inner: ' + mermaid.startOnLoad)\n mermaidAPI.initialize({ startOnLoad: mermaid.startOnLoad })\n }\n\n if (typeof mermaid.ganttConfig !== 'undefined') {\n mermaidAPI.initialize({ gantt: mermaid.ganttConfig })\n }\n\n let txt\n\n for (let i = 0; i < nodes.length; i++) {\n const element = nodes[i]\n\n /*! Check if previously processed */\n if (!element.getAttribute('data-processed')) {\n element.setAttribute('data-processed', true)\n } else {\n continue\n }\n\n const id = `mermaid-${Date.now()}`\n\n // Fetch the graph definition including tags\n txt = element.innerHTML\n\n // transforms the html to pure text\n txt = he.decode(txt).trim().replace(/<br>/ig, '<br/>')\n\n mermaidAPI.render(id, txt, (svgCode, bindFunctions) => {\n element.innerHTML = svgCode\n if (typeof callback !== 'undefined') {\n callback(id)\n }\n bindFunctions(element)\n }, element)\n }\n}\n\nconst initialize = function (config) {\n logger.debug('Initializing mermaid ')\n if (typeof config.mermaid !== 'undefined') {\n if (typeof config.mermaid.startOnLoad !== 'undefined') {\n mermaid.startOnLoad = config.mermaid.startOnLoad\n }\n if (typeof config.mermaid.htmlLabels !== 'undefined') {\n mermaid.htmlLabels = config.mermaid.htmlLabels\n }\n }\n mermaidAPI.initialize(config)\n}\n\n/**\n * ##contentLoaded\n * Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and\n * calls init for rendering the mermaid diagrams on the page.\n */\nconst contentLoaded = function () {\n let config\n\n if (mermaid.startOnLoad) {\n // No config found, do check API config\n config = mermaidAPI.getConfig()\n if (config.startOnLoad) {\n mermaid.init()\n }\n } else {\n if (typeof mermaid.startOnLoad === 'undefined') {\n logger.debug('In start, no config')\n config = mermaidAPI.getConfig()\n if (config.startOnLoad) {\n mermaid.init()\n }\n }\n }\n}\n\nif (typeof document !== 'undefined') {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener('load', function () {\n contentLoaded()\n }, false)\n}\n\nconst mermaid = {\n startOnLoad: true,\n htmlLabels: true,\n\n mermaidAPI,\n parse: mermaidAPI.parse,\n render: mermaidAPI.render,\n\n init,\n initialize,\n\n contentLoaded\n}\n\nexport default mermaid\n","/**\n * ---\n * title: mermaidAPI\n * order: 5\n * ---\n * # mermaidAPI\n * This is the api to be used when handling the integration with the web page instead of using the default integration\n * (mermaid.js).\n *\n * The core of this api is the **render** function that given a graph definitionas text renders the graph/diagram and\n * returns a svg element for the graph. It is is then up to the user of the API to make use of the svg, either insert it\n * somewhere in the page or something completely different.\n*/\nimport * as d3 from 'd3'\nimport scope from 'scope-css'\nimport pkg from '../package.json'\n\nimport { logger, setLogLevel } from './logger'\nimport utils from './utils'\nimport flowRenderer from './diagrams/flowchart/flowRenderer'\nimport flowParser from './diagrams/flowchart/parser/flow'\nimport flowDb from './diagrams/flowchart/flowDb'\nimport sequenceRenderer from './diagrams/sequence/sequenceRenderer'\nimport sequenceParser from './diagrams/sequence/parser/sequenceDiagram'\nimport sequenceDb from './diagrams/sequence/sequenceDb'\nimport ganttRenderer from './diagrams/gantt/ganttRenderer'\nimport ganttParser from './diagrams/gantt/parser/gantt'\nimport ganttDb from './diagrams/gantt/ganttDb'\nimport classRenderer from './diagrams/class/classRenderer'\nimport classParser from './diagrams/class/parser/classDiagram'\nimport classDb from './diagrams/class/classDb'\nimport gitGraphRenderer from './diagrams/git/gitGraphRenderer'\nimport gitGraphParser from './diagrams/git/parser/gitGraph'\nimport gitGraphAst from './diagrams/git/gitGraphAst'\nimport infoRenderer from './diagrams/info/infoRenderer'\nimport infoParser from './diagrams/info/parser/info'\nimport infoDb from './diagrams/info/infoDb'\n\nconst themes = {}\nfor (const themeName of ['default', 'forest', 'dark', 'neutral']) {\n themes[themeName] = require(`./themes/${themeName}/index.scss`)\n}\n\n/**\n * ## Configuration\n * These are the default options which can be overridden with the initialization call as in the example below:\n * ```\n * mermaid.initialize({\n * flowchart:{\n * htmlLabels: false\n * }\n * });\n * ```\n */\nconst config = {\n\n /** theme , the CSS style sheet\n *\n * **theme** - Choose one of the built-in themes: default, forest, dark or neutral. To disable any pre-defined mermaid theme, use \"null\".\n * **themeCSS** - Use your own CSS. This overrides **theme**.\n *```\n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n *```\n */\n\n theme: 'default',\n themeCSS: undefined,\n\n /**\n * logLevel , decides the amount of logging to be used.\n * * debug: 1\n * * info: 2\n * * warn: 3\n * * error: 4\n * * fatal: 5\n */\n logLevel: 5,\n\n /**\n * **startOnLoad** - This options controls whether or mermaid starts when the page loads\n */\n startOnLoad: true,\n\n /**\n * **arrowMarkerAbsolute** - This options controls whether or arrow markers in html code will be absolute paths or\n * an anchor, #. This matters if you are using base tag settings.\n */\n arrowMarkerAbsolute: false,\n\n /**\n * ### flowchart\n * *The object containing configurations specific for flowcharts*\n */\n flowchart: {\n /**\n * **htmlLabels** - Flag for setting whether or not a html tag should be used for rendering labels\n * on the edges\n */\n htmlLabels: true,\n\n curve: 'linear'\n },\n\n /**\n * ### sequenceDiagram\n * The object containing configurations specific for sequence diagrams\n */\n sequence: {\n\n /**\n * **diagramMarginX** - margin to the right and left of the sequence diagram\n */\n diagramMarginX: 50,\n\n /**\n * **diagramMarginY** - margin to the over and under the sequence diagram\n */\n diagramMarginY: 10,\n\n /**\n * **actorMargin** - Margin between actors\n */\n actorMargin: 50,\n\n /**\n * **width** - Width of actor boxes\n */\n width: 150,\n\n /**\n * **height** - Height of actor boxes\n */\n height: 65,\n\n /**\n * **boxMargin** - Margin around loop boxes\n */\n boxMargin: 10,\n\n /**\n * **boxTextMargin** - margin around the text in loop/alt/opt boxes\n */\n boxTextMargin: 5,\n\n /**\n * **noteMargin** - margin around notes\n */\n noteMargin: 10,\n\n /**\n * **messageMargin** - Space between messages\n */\n messageMargin: 35,\n\n /**\n * **mirrorActors** - mirror actors under diagram\n */\n mirrorActors: true,\n\n /**\n * **bottomMarginAdj** - Depending on css styling this might need adjustment.\n * Prolongs the edge of the diagram downwards\n */\n bottomMarginAdj: 1,\n\n /**\n * **useMaxWidth** - when this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used\n */\n useMaxWidth: true,\n\n /**\n * **rightAngles** - this will display arrows that start and begin at the same node as right angles, rather than a curve\n */\n rightAngles: false\n },\n\n /** ### gantt\n * The object containing configurations specific for gantt diagrams*\n */\n gantt: {\n /**\n * **titleTopMargin** - margin top for the text over the gantt diagram\n */\n titleTopMargin: 25,\n\n /**\n * **barHeight** - the height of the bars in the graph\n */\n barHeight: 20,\n\n /**\n * **barGap** - the margin between the different activities in the gantt diagram\n */\n barGap: 4,\n\n /**\n * **topPadding** - margin between title and gantt diagram and between axis and gantt diagram.\n */\n topPadding: 50,\n\n /**\n * **leftPadding** - the space allocated for the section name to the left of the activities.\n */\n leftPadding: 75,\n\n /**\n * **gridLineStartPadding** - Vertical starting position of the grid lines\n */\n gridLineStartPadding: 35,\n\n /**\n * **fontSize** - font size ...\n */\n fontSize: 11,\n\n /**\n * **fontFamily** - font family ...\n */\n fontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n * **numberSectionStyles** - the number of alternating section styles\n */\n numberSectionStyles: 4,\n\n /**\n * **axisFormat** - datetime format of the axis, this might need adjustment to match your locale and preferences\n */\n axisFormat: '%Y-%m-%d'\n },\n class: {},\n git: {}\n}\n\nsetLogLevel(config.logLevel)\n\nfunction parse (text) {\n const graphType = utils.detectType(text)\n let parser\n\n logger.debug('Type ' + graphType)\n switch (graphType) {\n case 'git':\n parser = gitGraphParser\n parser.parser.yy = gitGraphAst\n break\n case 'flowchart':\n parser = flowParser\n parser.parser.yy = flowDb\n break\n case 'sequence':\n parser = sequenceParser\n parser.parser.yy = sequenceDb\n break\n case 'gantt':\n parser = ganttParser\n parser.parser.yy = ganttDb\n break\n case 'class':\n parser = classParser\n parser.parser.yy = classDb\n break\n case 'info':\n logger.debug('info info info')\n parser = infoParser\n parser.parser.yy = infoDb\n break\n }\n\n parser.parser.yy.parseError = (str, hash) => {\n const error = { str, hash }\n throw error\n }\n\n parser.parse(text)\n}\n\nexport const encodeEntities = function (text) {\n let txt = text\n\n txt = txt.replace(/style.*:\\S*#.*;/g, function (s) {\n const innerTxt = s.substring(0, s.length - 1)\n return innerTxt\n })\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function (s) {\n const innerTxt = s.substring(0, s.length - 1)\n return innerTxt\n })\n\n txt = txt.replace(/#\\w+;/g, function (s) {\n const innerTxt = s.substring(1, s.length - 1)\n\n const isInt = /^\\+?\\d+$/.test(innerTxt)\n if (isInt) {\n return 'fl°°' + innerTxt + '¶ß'\n } else {\n return 'fl°' + innerTxt + '¶ß'\n }\n })\n\n return txt\n}\n\nexport const decodeEntities = function (text) {\n let txt = text\n\n txt = txt.replace(/fl°°/g, function () {\n return '&#'\n })\n txt = txt.replace(/fl°/g, function () {\n return '&'\n })\n txt = txt.replace(/¶ß/g, function () {\n return ';'\n })\n\n return txt\n}\n/**\n * ##render\n * Function that renders an svg with a graph from a chart definition. Usage example below.\n *\n * ```\n * mermaidAPI.initialize({\n * startOnLoad:true\n * });\n * $(function(){\n * const graphDefinition = 'graph TB\\na-->b';\n * const cb = function(svgGraph){\n * console.log(svgGraph);\n * };\n * mermaidAPI.render('id1',graphDefinition,cb);\n * });\n *```\n * @param id the id of the element to be rendered\n * @param txt the graph definition\n * @param cb callback which is called after rendering is finished with the svg code as inparam.\n * @param container selector to element in which a div with the graph temporarily will be inserted. In one is\n * provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is\n * completed.\n */\nconst render = function (id, txt, cb, container) {\n if (typeof container !== 'undefined') {\n container.innerHTML = ''\n\n d3.select(container).append('div')\n .attr('id', 'd' + id)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g')\n } else {\n const element = document.querySelector('#' + 'd' + id)\n if (element) {\n element.innerHTML = ''\n }\n\n d3.select('body').append('div')\n .attr('id', 'd' + id)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g')\n }\n\n window.txt = txt\n txt = encodeEntities(txt)\n\n const element = d3.select('#d' + id).node()\n const graphType = utils.detectType(txt)\n\n // insert inline style into svg\n const svg = element.firstChild\n const firstChild = svg.firstChild\n\n // pre-defined theme\n let style = themes[config.theme]\n if (style === undefined) {\n style = ''\n }\n\n // user provided theme CSS\n if (config.themeCSS !== undefined) {\n style += `\\n${config.themeCSS}`\n }\n\n // classDef\n if (graphType === 'flowchart') {\n const classes = flowRenderer.getClasses(txt)\n for (const className in classes) {\n style += `\\n.${className} > * { ${classes[className].styles.join(' !important; ')} !important; }`\n }\n }\n\n const style1 = document.createElement('style')\n style1.innerHTML = scope(style, `#${id}`)\n svg.insertBefore(style1, firstChild)\n\n const style2 = document.createElement('style')\n const cs = window.getComputedStyle(svg)\n style2.innerHTML = `#${id} {\n color: ${cs.color};\n font: ${cs.font};\n }`\n svg.insertBefore(style2, firstChild)\n\n switch (graphType) {\n case 'git':\n config.flowchart.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n gitGraphRenderer.setConf(config.git)\n gitGraphRenderer.draw(txt, id, false)\n break\n case 'flowchart':\n config.flowchart.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n flowRenderer.setConf(config.flowchart)\n flowRenderer.draw(txt, id, false)\n break\n case 'sequence':\n config.sequence.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n if (config.sequenceDiagram) { // backwards compatibility\n sequenceRenderer.setConf(Object.assign(config.sequence, config.sequenceDiagram))\n console.error('`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.')\n } else {\n sequenceRenderer.setConf(config.sequence)\n }\n sequenceRenderer.draw(txt, id)\n break\n case 'gantt':\n config.gantt.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n ganttRenderer.setConf(config.gantt)\n ganttRenderer.draw(txt, id)\n break\n case 'class':\n config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n classRenderer.setConf(config.class)\n classRenderer.draw(txt, id)\n break\n case 'info':\n config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n infoRenderer.setConf(config.class)\n infoRenderer.draw(txt, id, pkg.version)\n break\n }\n\n d3.select(`[id=\"${id}\"]`).selectAll('foreignobject > *').attr('xmlns', 'http://www.w3.org/1999/xhtml')\n\n let url = ''\n if (config.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search\n url = url.replace(/\\(/g, '\\\\(')\n url = url.replace(/\\)/g, '\\\\)')\n }\n\n // Fix for when the base tag is used\n let svgCode = d3.select('#d' + id).node().innerHTML.replace(/url\\(#arrowhead/g, 'url(' + url + '#arrowhead', 'g')\n\n svgCode = decodeEntities(svgCode)\n\n if (typeof cb !== 'undefined') {\n cb(svgCode, flowDb.bindFunctions)\n cb(svgCode, ganttDb.bindFunctions)\n } else {\n logger.warn('CB = undefined!')\n }\n\n const node = d3.select('#d' + id).node()\n if (node !== null && typeof node.remove === 'function') {\n d3.select('#d' + id).node().remove()\n }\n\n return svgCode\n}\n\nconst setConf = function (cnf) {\n // Top level initially mermaid, gflow, sequenceDiagram and gantt\n const lvl1Keys = Object.keys(cnf)\n for (let i = 0; i < lvl1Keys.length; i++) {\n if (typeof cnf[lvl1Keys[i]] === 'object' && cnf[lvl1Keys[i]] != null) {\n const lvl2Keys = Object.keys(cnf[lvl1Keys[i]])\n\n for (let j = 0; j < lvl2Keys.length; j++) {\n logger.debug('Setting conf ', lvl1Keys[i], '-', lvl2Keys[j])\n if (typeof config[lvl1Keys[i]] === 'undefined') {\n config[lvl1Keys[i]] = {}\n }\n logger.debug('Setting config: ' + lvl1Keys[i] + ' ' + lvl2Keys[j] + ' to ' + cnf[lvl1Keys[i]][lvl2Keys[j]])\n config[lvl1Keys[i]][lvl2Keys[j]] = cnf[lvl1Keys[i]][lvl2Keys[j]]\n }\n } else {\n config[lvl1Keys[i]] = cnf[lvl1Keys[i]]\n }\n }\n}\n\nfunction initialize (options) {\n logger.debug('Initializing mermaidAPI ', pkg.version)\n // Update default config with options supplied at initialization\n if (typeof options === 'object') {\n setConf(options)\n }\n setLogLevel(config.logLevel)\n}\n\nfunction getConfig () {\n return config\n}\n\nconst mermaidAPI = {\n render,\n parse,\n initialize,\n getConfig\n}\n\nexport default mermaidAPI\n","var map = {\n\t\"./dark/index.scss\": \"./src/themes/dark/index.scss\",\n\t\"./default/index.scss\": \"./src/themes/default/index.scss\",\n\t\"./forest/index.scss\": \"./src/themes/forest/index.scss\",\n\t\"./neutral/index.scss\": \"./src/themes/neutral/index.scss\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./src/themes sync recursive ^\\\\.\\\\/.*\\\\/index\\\\.scss$\";","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","import * as d3 from 'd3'\nimport { logger } from './logger'\n\n/**\n * @function detectType\n * Detects the type of the graph text.\n * ```mermaid\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {string} A graph definition key\n */\nexport const detectType = function (text) {\n text = text.replace(/^\\s*%%.*\\n/g, '\\n')\n logger.debug('Detecting diagram type based on the text ' + text)\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence'\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt'\n }\n\n if (text.match(/^\\s*classDiagram/)) {\n return 'class'\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git'\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info'\n }\n\n return 'flowchart'\n}\n\n/**\n * @function isSubstringInArray\n * Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {array} arr The array to search\n * @returns {number} the array index containing the substring or -1 if not present\n **/\nexport const isSubstringInArray = function (str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i\n }\n return -1\n}\n\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n if (!interpolate) {\n return defaultCurve\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`\n return d3[curveName] || defaultCurve\n}\n\nexport default {\n detectType,\n isSubstringInArray,\n interpolateToCurve\n}\n","module.exports = require(\"d3\");","module.exports = require(\"dagre-d3-renderer\");","module.exports = require(\"dagre-d3-renderer/lib/label/add-html-label.js\");","module.exports = require(\"dagre-layout\");","module.exports = require(\"graphlibrary\");","module.exports = require(\"he\");","module.exports = require(\"lodash\");","module.exports = require(\"moment-mini\");","module.exports = require(\"scope-css\");"],"sourceRoot":""}
\No newline at end of file