{"version":3,"sources":["webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/node_modules/d3-dispatch/src/dispatch.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/node_modules/d3-timer/src/timer.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/node_modules/d3-timer/src/timeout.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/schedule.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/interrupt.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-color/src/define.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-color/src/color.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-color/src/math.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-color/src/lab.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-color/src/cubehelix.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/basis.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/constant.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/color.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/rgb.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/basisClosed.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/date.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/number.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/object.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/string.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/value.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/transform/parse.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/transform/decompose.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/transform/index.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/zoom.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/hsl.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/hcl.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/cubehelix.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/tween.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/interpolate.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/remove.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/selection.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/style.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/textTween.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/index.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/select.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/selectAll.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/filter.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/merge.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/transition.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/on.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/attr.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/attrTween.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/styleTween.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/text.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/delay.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/duration.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/ease.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/end.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/poly.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/sin.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/math.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/back.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/elastic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/selection/transition.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/cubic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/selection/index.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/selection/interrupt.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/active.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/index.js","webpack:///../../../../../src/.internal/plugins/venn/VennDiagram.ts","webpack:///../../../../../src/.internal/plugins/venn/VennSeries.ts","webpack:///./plugins/venn.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/namespaces.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/namespace.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/creator.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selector.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selectorAll.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/matcher.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/sparse.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/enter.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/constant.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/data.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/sort.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/attr.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/window.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/style.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/classed.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/text.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/html.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/raise.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/lower.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/insert.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/remove.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/clone.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/on.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/dispatch.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/index.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/select.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/selectAll.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/filter.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/exit.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/join.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/merge.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/order.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/call.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/nodes.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/node.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/size.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/empty.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/each.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/property.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/append.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/datum.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/select.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/create.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/local.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/sourceEvent.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/point.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/mouse.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selectAll.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/touch.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/touches.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/index.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/venn.js/build/venn.js"],"names":["noop","value","dispatch","t","i","n","arguments","length","_","test","Error","Dispatch","this","get","type","name","c","set","callback","slice","concat","push","prototype","constructor","on","typename","T","typenames","types","trim","split","map","indexOf","hasOwnProperty","parseTypenames","copy","call","that","args","Array","apply","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","_typeof","now","Date","setFrame","window","requestAnimationFrame","bind","f","setTimeout","clearNow","Timer","_call","_time","_next","timer","delay","time","restart","wake","e","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","TypeError","stop","src_timeout","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","transition_schedule","node","id","index","group","timing","schedules","__transition","self","tween","start","j","o","state","__data__","tick","duration","ease","create","init","schedule","interrupt","active","empty","define","factory","extend","parent","definition","Object","key","Color","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","m","l","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","NaN","r","g","b","a","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","Math","max","min","round","toString","h","s","Hsl","hslConvert","hsl","hsl2rgb","m1","m2","channels","assign","displayable","formatHsl","brighter","k","pow","darker","deg2rad","PI","rad2deg","Xn","Yn","Zn","t3","labConvert","Lab","Hcl","hcl2lab","x","z","rgb2lrgb","y","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","sqrt","hcl","cos","sin","A","B","C","D","E","ED","EB","BC_DA","cubehelix","Cubehelix","bl","cubehelixConvert","basis","v0","v1","v2","v3","cosh","sinh","constant","linear","d","hue","gamma","nogamma","exponential","src_rgb","rgbGamma","end","colorRgb","rgbSpline","spline","colors","values","floor","number","reA","reB","source","string","am","bm","bs","bi","lastIndex","q","one","zero","join","cssNode","cssRoot","cssView","svgNode","degrees","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","decompose","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","document","createElement","documentElement","defaultView","style","transform","getComputedStyle","appendChild","getPropertyValue","removeChild","interpolateTransformSvg","createElementNS","setAttribute","baseVal","consolidate","matrix","SQRT2","colorHsl","colorHcl","cubehelixGamma","colorCubehelix","tweenValue","transition","_id","each","transition_interpolate","interpolateNumber","interpolateRgb","interpolateString","Selection","selection","styleRemove","removeProperty","Transition","groups","parents","_groups","_parents","_name","newId","selection_prototype","select","selector","subgroups","subnode","subgroup","selectAll","selectorAll","child","children","inherit","filter","match","matcher","merge","groups0","groups1","m0","merges","group0","group1","id0","id1","nodes","size","listener","on0","on1","sit","every","onFunction","attr","fullname","namespace","interpolate","attrTween","local","string00","string10","interpolate0","string0","string1","value1","getAttributeNS","space","removeAttributeNS","getAttribute","removeAttribute","_value","i0","setAttributeNS","attrInterpolateNS","attrInterpolate","priority","styleTween","styleNull","styleFunction","listener0","remove","event","undefined","styleMaybeRemove","styleConstant","setProperty","styleInterpolate","text","textContent","textFunction","textConstant","textTween","textInterpolate","parentNode","removeFunction","tween0","tween1","splice","easeConstant","Promise","resolve","reject","cancel","custom","polyIn","exponent","polyOut","polyInOut","tpmt","backIn","overshoot","backOut","backInOut","tau","defaultTiming","p","asin","elasticIn","amplitude","period","elasticOut","elasticInOut","root","src_active","__webpack_require__","__webpack_exports__","src_transition_transition","VennDiagram_VennDiagramDataItem","_super","VennDiagramDataItem","_this","className","applyTheme","tslib_es6","PercentChart","VennDiagram_VennDiagram","VennDiagram","seriesContainer","layout","padding","applyInternalDefaults","Type","readerTitle","language","setLegend","legend","valueLabels","template","disabled","Registry","registeredClasses","VennSeries_VennSeriesDataItem","VennSeriesDataItem","radius","events","component","defineProperty","properties","intersections","hide","toValue","fields","dataItems","dataItem","category","show","animateRadius","easing","animation","animate","property","to","_disposers","path","Path","isHover","updateHoverSprite","PercentSeries","VennSeries_VennSeries","VennSeries","width","Percent","height","slicesContainer","slices","strokeWidth","stroke","vennData","invalidateDataItems","labelsContainer","itemReaderText","hoverSprite","createChild","Sprite","strokeOpacity","InterfaceColorSet","getFor","strokeDasharray","zIndex","Number","MAX_VALUE","interactionsEnabled","fill","strokeDashoffset","hs","states","transitionDuration","target","visible","createSlice","createDataItem","initSlice","isMeasured","tooltipText","initLabel","label","verticalCenter","horizontalCenter","sprite","validateDataElements","labelTemplate","labels","alignLabels","sets","getValue","isHidden","di","getDataItemByCategory","isHiding","newSets","venn","innerWidth","innerHeight","circles_1","name_1","item","interpolationDuration","interpolationEasing","centers_1","i_1","center","cc","intersectionPath","tooltipX","tooltipY","updateLegendValue","propertyFields","am4plugins_venn","venn_namespaceObject","xhtml","namespaces","svg","xlink","xml","xmlns","prefix","creator","ownerDocument","uri","namespaceURI","none","src_selector","querySelector","querySelectorAll","matches","sparse","update","EnterNode","datum","_parent","insertBefore","next","keyPrefix","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","src_window","styleValue","classArray","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","contains","textRemove","htmlRemove","innerHTML","raise","nextSibling","lower","previousSibling","firstChild","constantNull","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","filterEvents","mouseenter","mouseleave","filterContextListener","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","__on","removeEventListener","capture","onAdd","wrap","addEventListener","customEvent","sourceEvent","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","enterGroup","updateGroup","previous","i1","_enter","_exit","onenter","onupdate","onexit","append","order","sort","compare","compareNode","sortgroups","sortgroup","v","classed","html","insert","before","deep","src_select","src_create","nextId","Local","current","point","ownerSVGElement","createSVGPoint","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","left","clientLeft","top","clientTop","mouse","changedTouches","src_selectAll","src_touch","touches","identifier","touch","src_touches","points","src_selection","on_event","global","exports","d3Selection","d3Transition","SMALL","intersectionArea","circles","stats","intersectionPoints","ret","intersect","circleCircleIntersection","parentIndex","getIntersectionPoints","innerPoints","distance","containedInCircles","arcArea","polygonArea","arcs","getCenter","angle","p2","p1","midPoint","arc","circle","a1","a2","angleDiff","circleArea","smallest","disjoint","abs","area","acos","circleOverlap","r1","r2","w2","x0","y0","rx","ry","zeros","zerosM","dot","norm2","weightedSum","w1","nelderMead","parameters","maxDiff","maxIterations","nonZeroDelta","zeroDelta","minErrorDelta","minTolerance","rho","chi","psi","sigma","N","simplex","fx","updateSimplex","sortOrder","centroid","reflected","contracted","expanded","iteration","history","sortedSimplex","worst","shouldReduce","wolfeLineSearch","pk","c1","c2","phi0","phiPrime0","fxprime","phi","phi_old","phiPrime","a0","zoom","a_lo","a_high","phi_lo","conjugateGradient","initial","temp","yk","alpha","delta_k","areas","setid","initialLayout","bestInitialLayout","loss","lossFunction","ids","pairs","addMissingAreas","setids","positions","SMALL$1","distanceFromIntersectArea","overlap","tolerance","fA","fB","delta","mid","fMid","bisect","distance$$1","greedyLayout","constrained","restarts","matrices","distances","constraints","right","getDistanceMatrices","norm","row","best","obj","xi","yi","xj","yj","dij","constraint","squaredDistance","constrainedMDSGradient","random","constrainedMDSLayout","setOverlaps","rowid","weight","mostOverlapped","positioned","isPositioned","element","positionSet","setIndex","d1","d2","extraPoints","bestLoss","bestPoint","localLoss","overlaps","output","getCircles","indices","orientateCircles","orientation","orientationOrder","largestX","largestY","rotation","slope","disjointCluster","find","union","xRoot","yRoot","maxDistance","disjointClusters","getBoundingBox","minMax","xRange","yRange","normalizeSolution","solution","clusters","bounds","returnBounds","spacing","addCluster","cluster","bottom","xOffset","yOffset","centreing","scaleSolution","console","log","xScaling","yScaling","scaling","scaled","wrapText","labeller","joined","words","reverse","minChars","word","line","lineNumber","tspan","getComputedTextLength","circleMargin","interior","exterior","margin","computeTextCentre","valid","areaStats","getOverlappingCircles","circleids","circleid","computeTextCentres","overlapped","areaids","exclude","centre","circlePath","circleFromPath","tokens","parseFloat","intersectionAreaPath","wide","normalize","styled","fontSize","colourMap","colourScheme","colourIndex","colours","layoutFunction","chart","toremove","forEach","textCentres","some","hasPrevious","pathTween","enterPath","enterText","updateText","exitText","sortAreas","div","relativeTo","check","shouldExclude"],"mappings":"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","file":"./plugins/venn.js","sourcesContent":["var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/node_modules/d3-dispatch/src/dispatch.js","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/node_modules/d3-timer/src/timer.js","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/node_modules/d3-timer/src/timeout.js","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/schedule.js","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/interrupt.js","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-color/src/define.js","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-color/src/color.js","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-color/src/math.js","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-color/src/lab.js","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-color/src/cubehelix.js","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/basis.js","export default function(x) {\n return function() {\n return x;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/constant.js","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/color.js","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/rgb.js","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/basisClosed.js","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/date.js","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/number.js","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/object.js","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/string.js","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/value.js","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/transform/parse.js","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/transform/decompose.js","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/transform/index.js","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/zoom.js","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/hsl.js","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/hcl.js","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-interpolate/src/cubehelix.js","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/tween.js","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/interpolate.js","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/remove.js","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/selection.js","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/style.js","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/textTween.js","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/index.js","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/select.js","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/selectAll.js","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/filter.js","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/merge.js","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/transition.js","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/on.js","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/attr.js","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/attrTween.js","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/styleTween.js","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/text.js","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/delay.js","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/duration.js","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/ease.js","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/transition/end.js","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/poly.js","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/sin.js","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/math.js","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/back.js","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/elastic.js","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/selection/transition.js","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-ease/src/cubic.js","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/selection/index.js","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/selection/interrupt.js","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/active.js","import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-transition/src/index.js","/**\r\n * Venn Diagram module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PercentChart, IPercentChartProperties, IPercentChartDataFields, IPercentChartAdapters, IPercentChartEvents, PercentChartDataItem } from \"../../charts/types/PercentChart\";\r\nimport { VennSeries } from \"./VennSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Legend } from \"../../charts/Legend\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[VennDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class VennDiagramDataItem extends PercentChartDataItem {\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: VennDiagram;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"VennDiagramDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[VennDiagram]].\r\n */\r\nexport interface IVennDiagramDataFields extends IPercentChartDataFields { }\r\n\r\n/**\r\n * Defines properties for [[VennDiagram]]\r\n */\r\nexport interface IVennDiagramProperties extends IPercentChartProperties { }\r\n\r\n/**\r\n * Defines events for [[VennDiagram]].\r\n */\r\nexport interface IVennDiagramEvents extends IPercentChartEvents { }\r\n\r\n/**\r\n * Defines adapters for [[VennDiagram]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IVennDiagramAdapters extends IPercentChartAdapters, IVennDiagramProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a Venn Diagram.\r\n * \r\n * Venn diagram uses Ben Frederickson's [venn.js](https://github.com/benfred/venn.js).\r\n *\r\n * @see {@link IVennDiagramEvents} for a list of available Events\r\n * @see {@link IVennDiagramAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/venn/} for documentation\r\n * @important\r\n * @since 4.9.0\r\n */\r\nexport class VennDiagram extends PercentChart {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: IVennDiagramDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IVennDiagramProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IVennDiagramAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IVennDiagramEvents;\r\n\r\n\t/**\r\n\t * Defines a type of series that this chart uses.\r\n\t */\r\n\tpublic _seriesType: VennSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"VennDiagram\";\r\n\r\n\t\tthis.seriesContainer.layout = \"horizontal\";\r\n\r\n\t\tthis.padding(15, 15, 15, 15);\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\r\n\t\tsuper.applyInternalDefaults();\r\n\r\n\t\t// Add a default screen reader title for accessibility\r\n\t\t// This will be overridden in screen reader if there are any `titles` set\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\tthis.readerTitle = this.language.translate(\"Venn Diagram\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected setLegend(legend: Legend) {\r\n\t\tsuper.setLegend(legend);\r\n\t\tif (legend) {\r\n\t\t\tlegend.valueLabels.template.disabled = true;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"VennDiagram\"] = VennDiagram;\r\nregistry.registeredClasses[\"VennDiagramDataItem\"] = VennDiagramDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/venn/VennDiagram.ts","/**\r\n * Defines Venn Diagram Series.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IPercentSeriesAdapters, IPercentSeriesDataFields, IPercentSeriesEvents, IPercentSeriesProperties, PercentSeries, PercentSeriesDataItem } from \"../../charts/series/PercentSeries\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { VennDiagram } from \"./VennDiagram\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { Animation } from \"../../core/utils/Animation\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as venn from \"venn.js\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[VennSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class VennSeriesDataItem extends PercentSeriesDataItem {\r\n\r\n\t/**\r\n\t * A type of slice used for this series.\r\n\t */\r\n\tpublic _slice: Sprite;\r\n\r\n\t/**\r\n\t * A reference to a label element.\r\n\t */\r\n\tpublic _label: Label;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: VennSeries;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic radius: number = 0;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"VennSeriesDataItem\";\r\n\t\t// this helps to invalidate series when value is 0 an it is hidden (no other events are triggered then)\r\n\t\tthis.events.on(\"visibilitychanged\", () => {\r\n\t\t\tif (this.component) {\r\n\t\t\t\t//this.component.invalidateDataItems();\r\n\t\t\t}\r\n\t\t}, this, false);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * List of categories this data item represents intersection of.\r\n\t *\r\n\t * @param value Array of intersecting categories\r\n\t */\r\n\tpublic set intersections(value: string[]) {\r\n\t\tthis.setProperty(\"intersections\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Array of intersecting categories\r\n\t */\r\n\tpublic get intersections(): string[] {\r\n\t\treturn this.properties.intersections;\r\n\t}\r\n\r\n\t/**\r\n\t * Hide the data item (and corresponding visual elements).\r\n\t *\r\n\t * @param duration Duration (ms)\r\n\t * @param delay Delay hiding (ms)\r\n\t * @param toValue Target value for animation\r\n\t * @param fields Fields to animate while hiding\r\n\t */\r\n\tpublic hide(duration?: number, delay?: number, toValue?: number, fields?: string[]): $type.Optional {\r\n\r\n\t\tif (!this.intersections) {\r\n\t\t\tthis.component.dataItems.each((dataItem) => {\r\n\t\t\t\tif (dataItem != this && dataItem.intersections) {\r\n\t\t\t\t\tif (dataItem.intersections.indexOf(this.category) != -1) {\r\n\t\t\t\t\t\tdataItem.hide(duration, delay, toValue, fields);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\treturn super.hide(duration, delay, toValue, fields);\r\n\t\tif (this.component) {\r\n\t\t\tthis.component.invalidateProcessedData();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Show hidden data item (and corresponding visual elements).\r\n\t *\r\n\t * @param duration Duration (ms)\r\n\t * @param delay Delay hiding (ms)\r\n\t * @param fields Fields to animate while hiding\r\n\t */\r\n\tpublic show(duration?: number, delay?: number, fields?: string[]): $type.Optional {\r\n\r\n\t\tif (!this.intersections) {\r\n\t\t\tthis.component.dataItems.each((dataItem) => {\r\n\t\t\t\tif (dataItem != this && dataItem.intersections) {\r\n\t\t\t\t\tif (dataItem.intersections.indexOf(this.category) != -1) {\r\n\t\t\t\t\t\tdataItem.show(duration, delay, fields);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\treturn super.show(duration, delay, fields);\r\n\r\n\t\tif (this.component) {\r\n\t\t\tthis.component.invalidateProcessedData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic animateRadius(toValue: number, duration: number, easing: (value: number) => number) {\r\n\t\tlet animation = this.animate({ property: \"radius\", to: toValue }, duration, easing);\r\n\t\tthis._disposers.push(animation);\r\n\t\tthis._disposers.push(animation.events.on(\"animationprogress\", (event) => {\r\n\t\t\tlet radius = this.radius\r\n\t\t\tlet path = $path.moveTo({ x: -radius, y: 0 });\r\n\t\t\tpath += $path.arcToPoint({ x: radius, y: 0 }, radius, radius, true);\r\n\t\t\tpath += $path.arcToPoint({ x: -radius, y: 0 }, radius, radius, true);\r\n\t\t\tthis.slice.path = path;\r\n\r\n\t\t\tif (this.slice.isHover) {\r\n\t\t\t\tthis.component.updateHoverSprite(this.slice);\r\n\t\t\t}\r\n\t\t}))\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[VennSeries]].\r\n */\r\nexport interface IVennSeriesDataFields extends IPercentSeriesDataFields {\r\n\r\n\t/**\r\n\t * A field that may hold an array of categories. If present, this data item\r\n\t * will represent an intersection of categories listed in an array.\r\n\t */\r\n\tintersections?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines properties for [[VennSeries]].\r\n */\r\nexport interface IVennSeriesProperties extends IPercentSeriesProperties { }\r\n\r\n/**\r\n * Defines events for [[VennSeries]].\r\n */\r\nexport interface IVennSeriesEvents extends IPercentSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[VennSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IVennSeriesAdapters extends IPercentSeriesAdapters, IVennSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates Venn Diagram Series.\r\n * \r\n * Venn series uses Ben Frederickson's [venn.js](https://github.com/benfred/venn.js).\r\n *\r\n * @see {@link IVennSeriesEvents} for a list of available Events\r\n * @see {@link IVennSeriesAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/venn/} for documentation\r\n * @important\r\n * @since 4.9.0\r\n */\r\nexport class VennSeries extends PercentSeries {\r\n\r\n\t/**\r\n\t * Defines the type of data fields used for the series.\r\n\t */\r\n\tpublic _slice: Sprite;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _label: Label;\r\n\r\n\t/**\r\n\t * A reference to chart this series is for.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _chart: VennDiagram;\r\n\r\n\t/**\r\n\t * Defines the type of data fields used for the series.\r\n\t */\r\n\tpublic _dataFields: IVennSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IVennSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IVennSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IVennSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: VennSeriesDataItem;\r\n\r\n\t/**\r\n\t * Holds sum of values for all slices.\r\n\t */\r\n\tprotected _total: number;\r\n\r\n\t/**\r\n\t * Holds number of slices.\r\n\t */\r\n\tprotected _count: number;\r\n\r\n\t/**\r\n\t * A sprite which is visible when slice is hovered.\r\n\t * \r\n\t * This sprite gets the path of a hovered slice so the shape is identical. It\r\n\t * helps create nice hover effect.\r\n\t */\r\n\tpublic hoverSprite: Sprite;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected vennData: string;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"VennSeries\";\r\n\r\n\t\tthis.width = percent(100);\r\n\t\tthis.height = percent(100);\r\n\t\tthis.layout = \"absolute\";\r\n\r\n\t\tthis.slicesContainer.width = percent(100);\r\n\t\tthis.slicesContainer.height = percent(100);\r\n\t\tthis.slicesContainer.layout = \"none\";\r\n\r\n\t\tlet template = this.slices.template;\r\n\t\ttemplate.strokeWidth = 0;\r\n\t\ttemplate.stroke = color(\"#ffffff\");\r\n\r\n\t\tthis._disposers.push(this.events.on(\"maxsizechanged\", () => {\r\n\t\t\tthis.vennData = undefined;\r\n\t\t\tthis.invalidateDataItems();\r\n\t\t}, this, false));\r\n\r\n\t\tthis.labelsContainer.layout = \"none\";\r\n\r\n\t\tthis.itemReaderText = \"{category}\";\r\n\r\n\t\tlet hoverSprite = this.slicesContainer.createChild(Sprite);\r\n\t\thoverSprite.strokeOpacity = 1;\r\n\t\thoverSprite.strokeWidth = 2;\r\n\t\thoverSprite.stroke = new InterfaceColorSet().getFor(\"background\");\r\n\t\thoverSprite.strokeDasharray = \"3,3\";\r\n\t\thoverSprite.zIndex = Number.MAX_VALUE;\r\n\t\thoverSprite.interactionsEnabled = false;\r\n\t\thoverSprite.fill = color();\r\n\t\thoverSprite.strokeDashoffset = 0;\r\n\r\n\t\tlet hs = hoverSprite.states.create(\"hover\");\r\n\t\ths.properties.strokeDashoffset = 1000;\r\n\t\ths.transitionDuration = 100000;\r\n\r\n\t\tthis.hoverSprite = hoverSprite;\r\n\r\n\t\ttemplate.events.on(\"over\", (event) => {\r\n\t\t\thoverSprite.hide(0);\r\n\t\t\thoverSprite.show();\r\n\t\t\thoverSprite.isHover = true;\r\n\t\t\tthis.updateHoverSprite(event.target);\r\n\t\t})\r\n\r\n\t\ttemplate.events.on(\"out\", (event) => {\r\n\t\t\thoverSprite.isHover = false;\r\n\t\t})\r\n\r\n\t\ttemplate.events.on(\"visibilitychanged\", (event) => {\r\n\t\t\tif (event.visible == false) {\r\n\t\t\t\tthis.hoverSprite.hide();\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\ttemplate.events.on(\"out\", (event) => {\r\n\t\t\tthis.hoverSprite.hide();\r\n\t\t})\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a Sprite element.\r\n\t *\r\n\t * @return Sprite\r\n\t */\r\n\tprotected createSlice(): Sprite {\r\n\t\treturn new Sprite();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\t\tsuper.applyInternalDefaults();\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\tthis.readerTitle = this.language.translate(\"Venn Series\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new VennSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Inits Slice.\r\n\t *\r\n\t * @param Slice to init\r\n\t */\r\n\tprotected initSlice(slice: this[\"_slice\"]) {\r\n\t\tslice.isMeasured = false;\r\n\t\tslice.tooltipText = \"{category}\";\r\n\t}\r\n\r\n\t/**\r\n\t * Inits a Slice label.\r\n\t * \r\n\t * @param Label\r\n\t */\r\n\tprotected initLabel(label: this[\"_label\"]) {\r\n\t\tlabel.verticalCenter = \"middle\";\r\n\t\tlabel.horizontalCenter = \"middle\";\r\n\t\tlabel.isMeasured = false;\r\n\t\tlabel.text = \"{category}\";\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic updateHoverSprite(sprite: Sprite) {\r\n\t\tthis.hoverSprite.path = sprite.path;\r\n\t\tthis.hoverSprite.x = sprite.x;\r\n\t\tthis.hoverSprite.y = sprite.y;\r\n\t}\r\n\r\n\t/**\r\n\t * [validateDataElements description]\r\n\t *\r\n\t * @todo Description\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateDataElements() {\r\n\t\tsuper.validateDataElements();\r\n\r\n\t\tlet slicesContainer = this.slicesContainer;\r\n\t\tlet labelsContainer = this.labelsContainer;\r\n\t\tlet labelTemplate = this.labels.template;\r\n\r\n\t\tif (this.alignLabels) {\r\n\t\t\tlabelTemplate.interactionsEnabled = true;\r\n\t\t\tslicesContainer.isMeasured = true;\r\n\t\t\tlabelsContainer.isMeasured = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlabelTemplate.interactionsEnabled = false;\r\n\t\t\tslicesContainer.isMeasured = false;\r\n\t\t\tlabelsContainer.isMeasured = false;\r\n\t\t}\r\n\r\n\t\tlet sets: any[] = [];\r\n\t\t// prepare data for venn\r\n\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\tlet set: any = {};\r\n\t\t\tif (dataItem.intersections) {\r\n\t\t\t\tset.sets = dataItem.intersections;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tset.sets = [dataItem.category];\r\n\t\t\t}\r\n\t\t\tset.size = dataItem.getValue(\"value\");\r\n\t\t\tlet isHidden = false;\r\n\t\t\tif (dataItem.intersections) {\r\n\t\t\t\tfor (let i = 0; i < dataItem.intersections.length; i++) {\r\n\t\t\t\t\tlet category = dataItem.intersections[i];\r\n\t\t\t\t\tlet di = this.getDataItemByCategory(category);\r\n\r\n\t\t\t\t\tif (di.isHiding || !di.visible) {\r\n\t\t\t\t\t\tisHidden = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (isHidden && dataItem.visible) {\r\n\t\t\t\t\tdataItem.hide(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (set.size > 0 && !isHidden && !dataItem.isHiding && dataItem.visible) {\r\n\t\t\t\tsets.push(set);\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tlet newSets = sets.toString();\r\n\r\n\t\tif (newSets != this.vennData) {\r\n\r\n\t\t\tthis.vennData = newSets;\r\n\r\n\t\t\tif (sets.length > 0) {\r\n\t\t\t\tlet vennData = venn.venn(sets);\r\n\r\n\t\t\t\tvennData = venn.normalizeSolution(vennData, null, null);\r\n\r\n\t\t\t\tvennData = venn.scaleSolution(vennData, this.innerWidth, this.innerHeight, 0);\r\n\r\n\t\t\t\tlet circles: any = {};\r\n\t\t\t\tfor (let name in vennData) {\r\n\t\t\t\t\tlet item = vennData[name];\r\n\r\n\t\t\t\t\tlet radius = item.radius;\r\n\r\n\t\t\t\t\tlet dataItem = this.getDataItemByCategory(name);\r\n\t\t\t\t\tif (this.interpolationDuration > 0) {\r\n\t\t\t\t\t\tdataItem.animateRadius(radius, this.interpolationDuration, this.interpolationEasing);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tlet path = $path.moveTo({ x: -radius, y: 0 });\r\n\t\t\t\t\t\tpath += $path.arcToPoint({ x: radius, y: 0 }, radius, radius, true);\r\n\t\t\t\t\t\tpath += $path.arcToPoint({ x: -radius, y: 0 }, radius, radius, true);\r\n\t\t\t\t\t\tdataItem.slice.path = path;\r\n\r\n\t\t\t\t\t\tif (dataItem.slice.isHover) {\r\n\t\t\t\t\t\t\tthis.updateHoverSprite(dataItem.slice);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet slice = dataItem.slice;\r\n\r\n\t\t\t\t\tif (slice.x == undefined || slice.y == undefined) {\r\n\t\t\t\t\t\tslice.x = item.x;\r\n\t\t\t\t\t\tslice.y = item.y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tslice.animate([{ property: \"x\", to: item.x }, { property: \"y\", to: item.y }], this.interpolationDuration, this.interpolationEasing);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcircles[name] = item;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet centers: any = venn.computeTextCentres(circles, sets);\r\n\r\n\t\t\t\tlet i = 0;\r\n\t\t\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\t\t\tlet name = dataItem.category;\r\n\t\t\t\t\tlet center = centers[name];\r\n\t\t\t\t\tif (dataItem.intersections) {\r\n\t\t\t\t\t\tname = dataItem.intersections.toString();\r\n\t\t\t\t\t\tcenter = centers[name];\r\n\t\t\t\t\t\tif (center) {\r\n\t\t\t\t\t\t\tlet set = dataItem.intersections;\r\n\t\t\t\t\t\t\tlet cc = [];\r\n\r\n\t\t\t\t\t\t\tfor (let s = 0; s < set.length; s++) {\r\n\t\t\t\t\t\t\t\tcc.push(circles[set[s]]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tlet intersectionPath = venn.intersectionAreaPath(cc)\r\n\r\n\t\t\t\t\t\t\tlet slice = dataItem.slice;\r\n\t\t\t\t\t\t\tslice.path = intersectionPath;\r\n\r\n\t\t\t\t\t\t\tslice.tooltipX = center.x;\r\n\t\t\t\t\t\t\tslice.tooltipY = center.y;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (center) {\r\n\t\t\t\t\t\tlet label = dataItem.label;\r\n\t\t\t\t\t\tif (label.x == undefined || label.y == undefined) {\r\n\t\t\t\t\t\t\tlabel.x = center.x;\r\n\t\t\t\t\t\t\tlabel.y = center.y;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tlabel.animate([{ property: \"x\", to: center.x }, { property: \"y\", to: center.y }], this.interpolationDuration, this.interpolationEasing);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t//dataItem.label.x = -10000;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.updateLegendValue(dataItem);\r\n\r\n\t\t\t\t\tif (!this.slices.template.propertyFields.zIndex) {\r\n\t\t\t\t\t\tdataItem.slice.zIndex = i;\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti++;\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns data item by category.\r\n\t * \r\n\t * @param category Category\r\n\t * @return Data item\r\n\t */\r\n\tpublic getDataItemByCategory(category: string): VennSeriesDataItem {\r\n\t\tlet di: VennSeriesDataItem;\r\n\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\tif (dataItem.category == category) {\r\n\t\t\t\tdi = dataItem;\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn di;\r\n\t}\r\n}\r\n\r\n/**\r\n * Adds class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"VennSeries\"] = VennSeries;\r\nregistry.registeredClasses[\"VennSeriesDataItem\"] = VennSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/venn/VennSeries.ts","import * as m from \"../../es2015/plugins/venn\";\nwindow.am4plugins_venn = m;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./plugins/venn.js\n// module id = null\n// module chunks = ","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/namespaces.js","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/namespace.js","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/creator.js","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selector.js","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selectorAll.js","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/matcher.js","export default function(update) {\n return new Array(update.length);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/sparse.js","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/enter.js","export default function(x) {\n return function() {\n return x;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/constant.js","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/data.js","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/sort.js","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/attr.js","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/window.js","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/style.js","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/classed.js","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/text.js","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/html.js","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/raise.js","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/lower.js","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/insert.js","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/remove.js","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/clone.js","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/on.js","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/dispatch.js","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/index.js","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/select.js","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/selectAll.js","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/filter.js","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/exit.js","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/join.js","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/merge.js","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/order.js","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/call.js","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/nodes.js","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/node.js","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/size.js","export default function() {\n return !this.node();\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/empty.js","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/each.js","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/property.js","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/append.js","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selection/datum.js","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/select.js","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/create.js","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/local.js","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/sourceEvent.js","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/point.js","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/mouse.js","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/selectAll.js","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/touch.js","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/touches.js","export {default as create} from \"./create\";\nexport {default as creator} from \"./creator\";\nexport {default as local} from \"./local\";\nexport {default as matcher} from \"./matcher\";\nexport {default as mouse} from \"./mouse\";\nexport {default as namespace} from \"./namespace\";\nexport {default as namespaces} from \"./namespaces\";\nexport {default as clientPoint} from \"./point\";\nexport {default as select} from \"./select\";\nexport {default as selectAll} from \"./selectAll\";\nexport {default as selection} from \"./selection/index\";\nexport {default as selector} from \"./selector\";\nexport {default as selectorAll} from \"./selectorAll\";\nexport {styleValue as style} from \"./selection/style\";\nexport {default as touch} from \"./touch\";\nexport {default as touches} from \"./touches\";\nexport {default as window} from \"./window\";\nexport {event, customEvent} from \"./selection/on\";\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-selection/src/index.js","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-transition')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-transition'], factory) :\n\t(factory((global.venn = {}),global.d3,global.d3));\n}(this, (function (exports,d3Selection,d3Transition) { 'use strict';\n\nvar SMALL = 1e-10;\n\n/** Returns the intersection area of a bunch of circles (where each circle\n is an object having an x,y and radius property) */\nfunction intersectionArea(circles, stats) {\n // get all the intersection points of the circles\n var intersectionPoints = getIntersectionPoints(circles);\n\n // filter out points that aren't included in all the circles\n var innerPoints = intersectionPoints.filter(function (p) {\n return containedInCircles(p, circles);\n });\n\n var arcArea = 0, polygonArea = 0, arcs = [], i;\n\n // if we have intersection points that are within all the circles,\n // then figure out the area contained by them\n if (innerPoints.length > 1) {\n // sort the points by angle from the center of the polygon, which lets\n // us just iterate over points to get the edges\n var center = getCenter(innerPoints);\n for (i = 0; i < innerPoints.length; ++i ) {\n var p = innerPoints[i];\n p.angle = Math.atan2(p.x - center.x, p.y - center.y);\n }\n innerPoints.sort(function(a,b) { return b.angle - a.angle;});\n\n // iterate over all points, get arc between the points\n // and update the areas\n var p2 = innerPoints[innerPoints.length - 1];\n for (i = 0; i < innerPoints.length; ++i) {\n var p1 = innerPoints[i];\n\n // polygon area updates easily ...\n polygonArea += (p2.x + p1.x) * (p1.y - p2.y);\n\n // updating the arc area is a little more involved\n var midPoint = {x : (p1.x + p2.x) / 2,\n y : (p1.y + p2.y) / 2},\n arc = null;\n\n for (var j = 0; j < p1.parentIndex.length; ++j) {\n if (p2.parentIndex.indexOf(p1.parentIndex[j]) > -1) {\n // figure out the angle halfway between the two points\n // on the current circle\n var circle = circles[p1.parentIndex[j]],\n a1 = Math.atan2(p1.x - circle.x, p1.y - circle.y),\n a2 = Math.atan2(p2.x - circle.x, p2.y - circle.y);\n\n var angleDiff = (a2 - a1);\n if (angleDiff < 0) {\n angleDiff += 2*Math.PI;\n }\n\n // and use that angle to figure out the width of the\n // arc\n var a = a2 - angleDiff/2,\n width = distance(midPoint, {\n x : circle.x + circle.radius * Math.sin(a),\n y : circle.y + circle.radius * Math.cos(a)\n });\n\n // clamp the width to the largest is can actually be\n // (sometimes slightly overflows because of FP errors)\n if (width > circle.radius * 2) {\n width = circle.radius * 2;\n }\n\n // pick the circle whose arc has the smallest width\n if ((arc === null) || (arc.width > width)) {\n arc = { circle : circle,\n width : width,\n p1 : p1,\n p2 : p2};\n }\n }\n }\n\n if (arc !== null) {\n arcs.push(arc);\n arcArea += circleArea(arc.circle.radius, arc.width);\n p2 = p1;\n }\n }\n } else {\n // no intersection points, is either disjoint - or is completely\n // overlapped. figure out which by examining the smallest circle\n var smallest = circles[0];\n for (i = 1; i < circles.length; ++i) {\n if (circles[i].radius < smallest.radius) {\n smallest = circles[i];\n }\n }\n\n // make sure the smallest circle is completely contained in all\n // the other circles\n var disjoint = false;\n for (i = 0; i < circles.length; ++i) {\n if (distance(circles[i], smallest) > Math.abs(smallest.radius - circles[i].radius)) {\n disjoint = true;\n break;\n }\n }\n\n if (disjoint) {\n arcArea = polygonArea = 0;\n\n } else {\n arcArea = smallest.radius * smallest.radius * Math.PI;\n arcs.push({circle : smallest,\n p1: { x: smallest.x, y : smallest.y + smallest.radius},\n p2: { x: smallest.x - SMALL, y : smallest.y + smallest.radius},\n width : smallest.radius * 2 });\n }\n }\n\n polygonArea /= 2;\n if (stats) {\n stats.area = arcArea + polygonArea;\n stats.arcArea = arcArea;\n stats.polygonArea = polygonArea;\n stats.arcs = arcs;\n stats.innerPoints = innerPoints;\n stats.intersectionPoints = intersectionPoints;\n }\n\n return arcArea + polygonArea;\n}\n\n/** returns whether a point is contained by all of a list of circles */\nfunction containedInCircles(point, circles) {\n for (var i = 0; i < circles.length; ++i) {\n if (distance(point, circles[i]) > circles[i].radius + SMALL) {\n return false;\n }\n }\n return true;\n}\n\n/** Gets all intersection points between a bunch of circles */\nfunction getIntersectionPoints(circles) {\n var ret = [];\n for (var i = 0; i < circles.length; ++i) {\n for (var j = i + 1; j < circles.length; ++j) {\n var intersect = circleCircleIntersection(circles[i],\n circles[j]);\n for (var k = 0; k < intersect.length; ++k) {\n var p = intersect[k];\n p.parentIndex = [i,j];\n ret.push(p);\n }\n }\n }\n return ret;\n}\n\n/** Circular segment area calculation. See http://mathworld.wolfram.com/CircularSegment.html */\nfunction circleArea(r, width) {\n return r * r * Math.acos(1 - width/r) - (r - width) * Math.sqrt(width * (2 * r - width));\n}\n\n/** euclidean distance between two points */\nfunction distance(p1, p2) {\n return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) +\n (p1.y - p2.y) * (p1.y - p2.y));\n}\n\n\n/** Returns the overlap area of two circles of radius r1 and r2 - that\nhave their centers separated by distance d. Simpler faster\ncircle intersection for only two circles */\nfunction circleOverlap(r1, r2, d) {\n // no overlap\n if (d >= r1 + r2) {\n return 0;\n }\n\n // completely overlapped\n if (d <= Math.abs(r1 - r2)) {\n return Math.PI * Math.min(r1, r2) * Math.min(r1, r2);\n }\n\n var w1 = r1 - (d * d - r2 * r2 + r1 * r1) / (2 * d),\n w2 = r2 - (d * d - r1 * r1 + r2 * r2) / (2 * d);\n return circleArea(r1, w1) + circleArea(r2, w2);\n}\n\n/** Given two circles (containing a x/y/radius attributes),\nreturns the intersecting points if possible.\nnote: doesn't handle cases where there are infinitely many\nintersection points (circles are equivalent):, or only one intersection point*/\nfunction circleCircleIntersection(p1, p2) {\n var d = distance(p1, p2),\n r1 = p1.radius,\n r2 = p2.radius;\n\n // if to far away, or self contained - can't be done\n if ((d >= (r1 + r2)) || (d <= Math.abs(r1 - r2))) {\n return [];\n }\n\n var a = (r1 * r1 - r2 * r2 + d * d) / (2 * d),\n h = Math.sqrt(r1 * r1 - a * a),\n x0 = p1.x + a * (p2.x - p1.x) / d,\n y0 = p1.y + a * (p2.y - p1.y) / d,\n rx = -(p2.y - p1.y) * (h / d),\n ry = -(p2.x - p1.x) * (h / d);\n\n return [{x: x0 + rx, y : y0 - ry },\n {x: x0 - rx, y : y0 + ry }];\n}\n\n/** Returns the center of a bunch of points */\nfunction getCenter(points) {\n var center = {x: 0, y: 0};\n for (var i =0; i < points.length; ++i ) {\n center.x += points[i].x;\n center.y += points[i].y;\n }\n center.x /= points.length;\n center.y /= points.length;\n return center;\n}\n\n/** finds the zeros of a function, given two starting points (which must\n * have opposite signs */\nfunction bisect(f, a, b, parameters) {\n parameters = parameters || {};\n var maxIterations = parameters.maxIterations || 100,\n tolerance = parameters.tolerance || 1e-10,\n fA = f(a),\n fB = f(b),\n delta = b - a;\n\n if (fA * fB > 0) {\n throw \"Initial bisect points must have opposite signs\";\n }\n\n if (fA === 0) return a;\n if (fB === 0) return b;\n\n for (var i = 0; i < maxIterations; ++i) {\n delta /= 2;\n var mid = a + delta,\n fMid = f(mid);\n\n if (fMid * fA >= 0) {\n a = mid;\n }\n\n if ((Math.abs(delta) < tolerance) || (fMid === 0)) {\n return mid;\n }\n }\n return a + delta;\n}\n\n// need some basic operations on vectors, rather than adding a dependency,\n// just define here\nfunction zeros(x) { var r = new Array(x); for (var i = 0; i < x; ++i) { r[i] = 0; } return r; }\nfunction zerosM(x,y) { return zeros(x).map(function() { return zeros(y); }); }\n\nfunction dot(a, b) {\n var ret = 0;\n for (var i = 0; i < a.length; ++i) {\n ret += a[i] * b[i];\n }\n return ret;\n}\n\nfunction norm2(a) {\n return Math.sqrt(dot(a, a));\n}\n\nfunction scale(ret, value, c) {\n for (var i = 0; i < value.length; ++i) {\n ret[i] = value[i] * c;\n }\n}\n\nfunction weightedSum(ret, w1, v1, w2, v2) {\n for (var j = 0; j < ret.length; ++j) {\n ret[j] = w1 * v1[j] + w2 * v2[j];\n }\n}\n\n/** minimizes a function using the downhill simplex method */\nfunction nelderMead(f, x0, parameters) {\n parameters = parameters || {};\n\n var maxIterations = parameters.maxIterations || x0.length * 200,\n nonZeroDelta = parameters.nonZeroDelta || 1.05,\n zeroDelta = parameters.zeroDelta || 0.001,\n minErrorDelta = parameters.minErrorDelta || 1e-6,\n minTolerance = parameters.minErrorDelta || 1e-5,\n rho = (parameters.rho !== undefined) ? parameters.rho : 1,\n chi = (parameters.chi !== undefined) ? parameters.chi : 2,\n psi = (parameters.psi !== undefined) ? parameters.psi : -0.5,\n sigma = (parameters.sigma !== undefined) ? parameters.sigma : 0.5,\n maxDiff;\n\n // initialize simplex.\n var N = x0.length,\n simplex = new Array(N + 1);\n simplex[0] = x0;\n simplex[0].fx = f(x0);\n simplex[0].id = 0;\n for (var i = 0; i < N; ++i) {\n var point = x0.slice();\n point[i] = point[i] ? point[i] * nonZeroDelta : zeroDelta;\n simplex[i+1] = point;\n simplex[i+1].fx = f(point);\n simplex[i+1].id = i+1;\n }\n\n function updateSimplex(value) {\n for (var i = 0; i < value.length; i++) {\n simplex[N][i] = value[i];\n }\n simplex[N].fx = value.fx;\n }\n\n var sortOrder = function(a, b) { return a.fx - b.fx; };\n\n var centroid = x0.slice(),\n reflected = x0.slice(),\n contracted = x0.slice(),\n expanded = x0.slice();\n\n for (var iteration = 0; iteration < maxIterations; ++iteration) {\n simplex.sort(sortOrder);\n\n if (parameters.history) {\n // copy the simplex (since later iterations will mutate) and\n // sort it to have a consistent order between iterations\n var sortedSimplex = simplex.map(function (x) {\n var state = x.slice();\n state.fx = x.fx;\n state.id = x.id;\n return state;\n });\n sortedSimplex.sort(function(a,b) { return a.id - b.id; });\n\n parameters.history.push({x: simplex[0].slice(),\n fx: simplex[0].fx,\n simplex: sortedSimplex});\n }\n\n maxDiff = 0;\n for (i = 0; i < N; ++i) {\n maxDiff = Math.max(maxDiff, Math.abs(simplex[0][i] - simplex[1][i]));\n }\n\n if ((Math.abs(simplex[0].fx - simplex[N].fx) < minErrorDelta) &&\n (maxDiff < minTolerance)) {\n break;\n }\n\n // compute the centroid of all but the worst point in the simplex\n for (i = 0; i < N; ++i) {\n centroid[i] = 0;\n for (var j = 0; j < N; ++j) {\n centroid[i] += simplex[j][i];\n }\n centroid[i] /= N;\n }\n\n // reflect the worst point past the centroid and compute loss at reflected\n // point\n var worst = simplex[N];\n weightedSum(reflected, 1+rho, centroid, -rho, worst);\n reflected.fx = f(reflected);\n\n // if the reflected point is the best seen, then possibly expand\n if (reflected.fx < simplex[0].fx) {\n weightedSum(expanded, 1+chi, centroid, -chi, worst);\n expanded.fx = f(expanded);\n if (expanded.fx < reflected.fx) {\n updateSimplex(expanded);\n } else {\n updateSimplex(reflected);\n }\n }\n\n // if the reflected point is worse than the second worst, we need to\n // contract\n else if (reflected.fx >= simplex[N-1].fx) {\n var shouldReduce = false;\n\n if (reflected.fx > worst.fx) {\n // do an inside contraction\n weightedSum(contracted, 1+psi, centroid, -psi, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < worst.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n } else {\n // do an outside contraction\n weightedSum(contracted, 1-psi * rho, centroid, psi*rho, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < reflected.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n }\n\n if (shouldReduce) {\n // if we don't contract here, we're done\n if (sigma >= 1) break;\n\n // do a reduction\n for (i = 1; i < simplex.length; ++i) {\n weightedSum(simplex[i], 1 - sigma, simplex[0], sigma, simplex[i]);\n simplex[i].fx = f(simplex[i]);\n }\n }\n } else {\n updateSimplex(reflected);\n }\n }\n\n simplex.sort(sortOrder);\n return {fx : simplex[0].fx,\n x : simplex[0]};\n}\n\n/// searches along line 'pk' for a point that satifies the wolfe conditions\n/// See 'Numerical Optimization' by Nocedal and Wright p59-60\n/// f : objective function\n/// pk : search direction\n/// current: object containing current gradient/loss\n/// next: output: contains next gradient/loss\n/// returns a: step size taken\nfunction wolfeLineSearch(f, pk, current, next, a, c1, c2) {\n var phi0 = current.fx, phiPrime0 = dot(current.fxprime, pk),\n phi = phi0, phi_old = phi0,\n phiPrime = phiPrime0,\n a0 = 0;\n\n a = a || 1;\n c1 = c1 || 1e-6;\n c2 = c2 || 0.1;\n\n function zoom(a_lo, a_high, phi_lo) {\n for (var iteration = 0; iteration < 16; ++iteration) {\n a = (a_lo + a_high)/2;\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n\n if ((phi > (phi0 + c1 * a * phiPrime0)) ||\n (phi >= phi_lo)) {\n a_high = a;\n\n } else {\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime * (a_high - a_lo) >=0) {\n a_high = a_lo;\n }\n\n a_lo = a;\n phi_lo = phi;\n }\n }\n\n return 0;\n }\n\n for (var iteration = 0; iteration < 10; ++iteration) {\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n if ((phi > (phi0 + c1 * a * phiPrime0)) ||\n (iteration && (phi >= phi_old))) {\n return zoom(a0, a, phi_old);\n }\n\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime >= 0 ) {\n return zoom(a, a0, phi);\n }\n\n phi_old = phi;\n a0 = a;\n a *= 2;\n }\n\n return a;\n}\n\nfunction conjugateGradient(f, initial, params) {\n // allocate all memory up front here, keep out of the loop for perfomance\n // reasons\n var current = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n next = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n yk = initial.slice(),\n pk, temp,\n a = 1,\n maxIterations;\n\n params = params || {};\n maxIterations = params.maxIterations || initial.length * 20;\n\n current.fx = f(current.x, current.fxprime);\n pk = current.fxprime.slice();\n scale(pk, current.fxprime,-1);\n\n for (var i = 0; i < maxIterations; ++i) {\n a = wolfeLineSearch(f, pk, current, next, a);\n\n // todo: history in wrong spot?\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a});\n }\n\n if (!a) {\n // faiiled to find point that satifies wolfe conditions.\n // reset direction for next iteration\n scale(pk, current.fxprime, -1);\n\n } else {\n // update direction using Polak–Ribiere CG method\n weightedSum(yk, 1, next.fxprime, -1, current.fxprime);\n\n var delta_k = dot(current.fxprime, current.fxprime),\n beta_k = Math.max(0, dot(yk, next.fxprime) / delta_k);\n\n weightedSum(pk, beta_k, pk, -1, next.fxprime);\n\n temp = current;\n current = next;\n next = temp;\n }\n\n if (norm2(current.fxprime) <= 1e-5) {\n break;\n }\n }\n\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a});\n }\n\n return current;\n}\n\n/** given a list of set objects, and their corresponding overlaps.\nupdates the (x, y, radius) attribute on each set such that their positions\nroughly correspond to the desired overlaps */\nfunction venn(areas, parameters) {\n parameters = parameters || {};\n parameters.maxIterations = parameters.maxIterations || 500;\n var initialLayout = parameters.initialLayout || bestInitialLayout;\n var loss = parameters.lossFunction || lossFunction;\n\n // add in missing pairwise areas as having 0 size\n areas = addMissingAreas(areas);\n\n // initial layout is done greedily\n var circles = initialLayout(areas, parameters);\n\n // transform x/y coordinates to a vector to optimize\n var initial = [], setids = [], setid;\n for (setid in circles) {\n if (circles.hasOwnProperty(setid)) {\n initial.push(circles[setid].x);\n initial.push(circles[setid].y);\n setids.push(setid);\n }\n }\n\n // optimize initial layout from our loss function\n var solution = nelderMead(\n function(values) {\n var current = {};\n for (var i = 0; i < setids.length; ++i) {\n var setid = setids[i];\n current[setid] = {x: values[2 * i],\n y: values[2 * i + 1],\n radius : circles[setid].radius,\n // size : circles[setid].size\n };\n }\n return loss(current, areas);\n },\n initial,\n parameters);\n\n // transform solution vector back to x/y points\n var positions = solution.x;\n for (var i = 0; i < setids.length; ++i) {\n setid = setids[i];\n circles[setid].x = positions[2 * i];\n circles[setid].y = positions[2 * i + 1];\n }\n\n return circles;\n}\n\nvar SMALL$1 = 1e-10;\n\n/** Returns the distance necessary for two circles of radius r1 + r2 to\nhave the overlap area 'overlap' */\nfunction distanceFromIntersectArea(r1, r2, overlap) {\n // handle complete overlapped circles\n if (Math.min(r1, r2) * Math.min(r1,r2) * Math.PI <= overlap + SMALL$1) {\n return Math.abs(r1 - r2);\n }\n\n return bisect(function(distance$$1) {\n return circleOverlap(r1, r2, distance$$1) - overlap;\n }, 0, r1 + r2);\n}\n\n/** Missing pair-wise intersection area data can cause problems:\n treating as an unknown means that sets will be laid out overlapping,\n which isn't what people expect. To reflect that we want disjoint sets\n here, set the overlap to 0 for all missing pairwise set intersections */\nfunction addMissingAreas(areas) {\n areas = areas.slice();\n\n // two circle intersections that aren't defined\n var ids = [], pairs = {}, i, j, a, b;\n for (i = 0; i < areas.length; ++i) {\n var area = areas[i];\n if (area.sets.length == 1) {\n ids.push(area.sets[0]);\n } else if (area.sets.length == 2) {\n a = area.sets[0];\n b = area.sets[1];\n pairs[[a, b]] = true;\n pairs[[b, a]] = true;\n }\n }\n ids.sort(function(a, b) { return a > b; });\n\n for (i = 0; i < ids.length; ++i) {\n a = ids[i];\n for (j = i + 1; j < ids.length; ++j) {\n b = ids[j];\n if (!([a, b] in pairs)) {\n areas.push({'sets': [a, b],\n 'size': 0});\n }\n }\n }\n return areas;\n}\n\n/// Returns two matrices, one of the euclidean distances between the sets\n/// and the other indicating if there are subset or disjoint set relationships\nfunction getDistanceMatrices(areas, sets, setids) {\n // initialize an empty distance matrix between all the points\n var distances = zerosM(sets.length, sets.length),\n constraints = zerosM(sets.length, sets.length);\n\n // compute required distances between all the sets such that\n // the areas match\n areas.filter(function(x) { return x.sets.length == 2; })\n .map(function(current) {\n var left = setids[current.sets[0]],\n right = setids[current.sets[1]],\n r1 = Math.sqrt(sets[left].size / Math.PI),\n r2 = Math.sqrt(sets[right].size / Math.PI),\n distance$$1 = distanceFromIntersectArea(r1, r2, current.size);\n\n distances[left][right] = distances[right][left] = distance$$1;\n\n // also update constraints to indicate if its a subset or disjoint\n // relationship\n var c = 0;\n if (current.size + 1e-10 >= Math.min(sets[left].size,\n sets[right].size)) {\n c = 1;\n } else if (current.size <= 1e-10) {\n c = -1;\n }\n constraints[left][right] = constraints[right][left] = c;\n });\n\n return {distances: distances, constraints: constraints};\n}\n\n/// computes the gradient and loss simulatenously for our constrained MDS optimizer\nfunction constrainedMDSGradient(x, fxprime, distances, constraints) {\n var loss = 0, i;\n for (i = 0; i < fxprime.length; ++i) {\n fxprime[i] = 0;\n }\n\n for (i = 0; i < distances.length; ++i) {\n var xi = x[2 * i], yi = x[2 * i + 1];\n for (var j = i + 1; j < distances.length; ++j) {\n var xj = x[2 * j], yj = x[2 * j + 1],\n dij = distances[i][j],\n constraint = constraints[i][j];\n\n var squaredDistance = (xj - xi) * (xj - xi) + (yj - yi) * (yj - yi),\n distance$$1 = Math.sqrt(squaredDistance),\n delta = squaredDistance - dij * dij;\n\n if (((constraint > 0) && (distance$$1 <= dij)) ||\n ((constraint < 0) && (distance$$1 >= dij))) {\n continue;\n }\n\n loss += 2 * delta * delta;\n\n fxprime[2*i] += 4 * delta * (xi - xj);\n fxprime[2*i + 1] += 4 * delta * (yi - yj);\n\n fxprime[2*j] += 4 * delta * (xj - xi);\n fxprime[2*j + 1] += 4 * delta * (yj - yi);\n }\n }\n return loss;\n}\n\n/// takes the best working variant of either constrained MDS or greedy\nfunction bestInitialLayout(areas, params) {\n var initial = greedyLayout(areas, params);\n var loss = params.lossFunction || lossFunction;\n\n // greedylayout is sufficient for all 2/3 circle cases. try out\n // constrained MDS for higher order problems, take its output\n // if it outperforms. (greedy is aesthetically better on 2/3 circles\n // since it axis aligns)\n if (areas.length >= 8) {\n var constrained = constrainedMDSLayout(areas, params),\n constrainedLoss = loss(constrained, areas),\n greedyLoss = loss(initial, areas);\n\n if (constrainedLoss + 1e-8 < greedyLoss) {\n initial = constrained;\n }\n }\n return initial;\n}\n\n/// use the constrained MDS variant to generate an initial layout\nfunction constrainedMDSLayout(areas, params) {\n params = params || {};\n var restarts = params.restarts || 10;\n\n // bidirectionally map sets to a rowid (so we can create a matrix)\n var sets = [], setids = {}, i;\n for (i = 0; i < areas.length; ++i ) {\n var area = areas[i];\n if (area.sets.length == 1) {\n setids[area.sets[0]] = sets.length;\n sets.push(area);\n }\n }\n\n var matrices = getDistanceMatrices(areas, sets, setids),\n distances = matrices.distances,\n constraints = matrices.constraints;\n\n // keep distances bounded, things get messed up otherwise.\n // TODO: proper preconditioner?\n var norm = norm2(distances.map(norm2))/(distances.length);\n distances = distances.map(function (row) {\n return row.map(function (value) { return value / norm; });});\n\n var obj = function(x, fxprime) {\n return constrainedMDSGradient(x, fxprime, distances, constraints);\n };\n\n var best, current;\n for (i = 0; i < restarts; ++i) {\n var initial = zeros(distances.length*2).map(Math.random);\n\n current = conjugateGradient(obj, initial, params);\n if (!best || (current.fx < best.fx)) {\n best = current;\n }\n }\n var positions = best.x;\n\n // translate rows back to (x,y,radius) coordinates\n var circles = {};\n for (i = 0; i < sets.length; ++i) {\n var set = sets[i];\n circles[set.sets[0]] = {\n x: positions[2*i] * norm,\n y: positions[2*i + 1] * norm,\n radius: Math.sqrt(set.size / Math.PI)\n };\n }\n\n if (params.history) {\n for (i = 0; i < params.history.length; ++i) {\n scale(params.history[i].x, norm);\n }\n }\n return circles;\n}\n\n/** Lays out a Venn diagram greedily, going from most overlapped sets to\nleast overlapped, attempting to position each new set such that the\noverlapping areas to already positioned sets are basically right */\nfunction greedyLayout(areas, params) {\n var loss = params && params.lossFunction ? params.lossFunction : lossFunction;\n // define a circle for each set\n var circles = {}, setOverlaps = {}, set;\n for (var i = 0; i < areas.length; ++i) {\n var area = areas[i];\n if (area.sets.length == 1) {\n set = area.sets[0];\n circles[set] = {x: 1e10, y: 1e10,\n rowid: circles.length,\n size: area.size,\n radius: Math.sqrt(area.size / Math.PI)};\n setOverlaps[set] = [];\n }\n }\n areas = areas.filter(function(a) { return a.sets.length == 2; });\n\n // map each set to a list of all the other sets that overlap it\n for (i = 0; i < areas.length; ++i) {\n var current = areas[i];\n var weight = current.hasOwnProperty('weight') ? current.weight : 1.0;\n var left = current.sets[0], right = current.sets[1];\n\n // completely overlapped circles shouldn't be positioned early here\n if (current.size + SMALL$1 >= Math.min(circles[left].size,\n circles[right].size)) {\n weight = 0;\n }\n\n setOverlaps[left].push ({set:right, size:current.size, weight:weight});\n setOverlaps[right].push({set:left, size:current.size, weight:weight});\n }\n\n // get list of most overlapped sets\n var mostOverlapped = [];\n for (set in setOverlaps) {\n if (setOverlaps.hasOwnProperty(set)) {\n var size = 0;\n for (i = 0; i < setOverlaps[set].length; ++i) {\n size += setOverlaps[set][i].size * setOverlaps[set][i].weight;\n }\n\n mostOverlapped.push({set: set, size:size});\n }\n }\n\n // sort by size desc\n function sortOrder(a,b) {\n return b.size - a.size;\n }\n mostOverlapped.sort(sortOrder);\n\n // keep track of what sets have been laid out\n var positioned = {};\n function isPositioned(element) {\n return element.set in positioned;\n }\n\n // adds a point to the output\n function positionSet(point, index) {\n circles[index].x = point.x;\n circles[index].y = point.y;\n positioned[index] = true;\n }\n\n // add most overlapped set at (0,0)\n positionSet({x: 0, y: 0}, mostOverlapped[0].set);\n\n // get distances between all points. TODO, necessary?\n // answer: probably not\n // var distances = venn.getDistanceMatrices(circles, areas).distances;\n for (i = 1; i < mostOverlapped.length; ++i) {\n var setIndex = mostOverlapped[i].set,\n overlap = setOverlaps[setIndex].filter(isPositioned);\n set = circles[setIndex];\n overlap.sort(sortOrder);\n\n if (overlap.length === 0) {\n // this shouldn't happen anymore with addMissingAreas\n throw \"ERROR: missing pairwise overlap information\";\n }\n\n var points = [];\n for (var j = 0; j < overlap.length; ++j) {\n // get appropriate distance from most overlapped already added set\n var p1 = circles[overlap[j].set],\n d1 = distanceFromIntersectArea(set.radius, p1.radius,\n overlap[j].size);\n\n // sample positions at 90 degrees for maximum aesthetics\n points.push({x : p1.x + d1, y : p1.y});\n points.push({x : p1.x - d1, y : p1.y});\n points.push({y : p1.y + d1, x : p1.x});\n points.push({y : p1.y - d1, x : p1.x});\n\n // if we have at least 2 overlaps, then figure out where the\n // set should be positioned analytically and try those too\n for (var k = j + 1; k < overlap.length; ++k) {\n var p2 = circles[overlap[k].set],\n d2 = distanceFromIntersectArea(set.radius, p2.radius,\n overlap[k].size);\n\n var extraPoints = circleCircleIntersection(\n { x: p1.x, y: p1.y, radius: d1},\n { x: p2.x, y: p2.y, radius: d2});\n\n for (var l = 0; l < extraPoints.length; ++l) {\n points.push(extraPoints[l]);\n }\n }\n }\n\n // we have some candidate positions for the set, examine loss\n // at each position to figure out where to put it at\n var bestLoss = 1e50, bestPoint = points[0];\n for (j = 0; j < points.length; ++j) {\n circles[setIndex].x = points[j].x;\n circles[setIndex].y = points[j].y;\n var localLoss = loss(circles, areas);\n if (localLoss < bestLoss) {\n bestLoss = localLoss;\n bestPoint = points[j];\n }\n }\n\n positionSet(bestPoint, setIndex);\n }\n\n return circles;\n}\n\n/** Given a bunch of sets, and the desired overlaps between these sets - computes\nthe distance from the actual overlaps to the desired overlaps. Note that\nthis method ignores overlaps of more than 2 circles */\nfunction lossFunction(sets, overlaps) {\n var output = 0;\n\n function getCircles(indices) {\n return indices.map(function(i) { return sets[i]; });\n }\n\n for (var i = 0; i < overlaps.length; ++i) {\n var area = overlaps[i], overlap;\n if (area.sets.length == 1) {\n continue;\n } else if (area.sets.length == 2) {\n var left = sets[area.sets[0]],\n right = sets[area.sets[1]];\n overlap = circleOverlap(left.radius, right.radius,\n distance(left, right));\n } else {\n overlap = intersectionArea(getCircles(area.sets));\n }\n\n var weight = area.hasOwnProperty('weight') ? area.weight : 1.0;\n output += weight * (overlap - area.size) * (overlap - area.size);\n }\n\n return output;\n}\n\n// orientates a bunch of circles to point in orientation\nfunction orientateCircles(circles, orientation, orientationOrder) {\n if (orientationOrder === null) {\n circles.sort(function (a, b) { return b.radius - a.radius; });\n } else {\n circles.sort(orientationOrder);\n }\n\n var i;\n // shift circles so largest circle is at (0, 0)\n if (circles.length > 0) {\n var largestX = circles[0].x,\n largestY = circles[0].y;\n\n for (i = 0; i < circles.length; ++i) {\n circles[i].x -= largestX;\n circles[i].y -= largestY;\n }\n }\n\n if (circles.length == 2) {\n // if the second circle is a subset of the first, arrange so that\n // it is off to one side. hack for https://github.com/benfred/venn.js/issues/120\n var dist = distance(circles[0], circles[1]);\n if (dist < Math.abs(circles[1].radius - circles[0].radius)) {\n circles[1].x = circles[0].x + circles[0].radius - circles[1].radius - 1e-10;\n circles[1].y = circles[0].y;\n }\n }\n\n // rotate circles so that second largest is at an angle of 'orientation'\n // from largest\n if (circles.length > 1) {\n var rotation = Math.atan2(circles[1].x, circles[1].y) - orientation,\n c = Math.cos(rotation),\n s = Math.sin(rotation), x, y;\n\n for (i = 0; i < circles.length; ++i) {\n x = circles[i].x;\n y = circles[i].y;\n circles[i].x = c * x - s * y;\n circles[i].y = s * x + c * y;\n }\n }\n\n // mirror solution if third solution is above plane specified by\n // first two circles\n if (circles.length > 2) {\n var angle = Math.atan2(circles[2].x, circles[2].y) - orientation;\n while (angle < 0) { angle += 2* Math.PI; }\n while (angle > 2*Math.PI) { angle -= 2* Math.PI; }\n if (angle > Math.PI) {\n var slope = circles[1].y / (1e-10 + circles[1].x);\n for (i = 0; i < circles.length; ++i) {\n var d = (circles[i].x + slope * circles[i].y) / (1 + slope*slope);\n circles[i].x = 2 * d - circles[i].x;\n circles[i].y = 2 * d * slope - circles[i].y;\n }\n }\n }\n}\n\nfunction disjointCluster(circles) {\n // union-find clustering to get disjoint sets\n circles.map(function(circle) { circle.parent = circle; });\n\n // path compression step in union find\n function find(circle) {\n if (circle.parent !== circle) {\n circle.parent = find(circle.parent);\n }\n return circle.parent;\n }\n\n function union(x, y) {\n var xRoot = find(x), yRoot = find(y);\n xRoot.parent = yRoot;\n }\n\n // get the union of all overlapping sets\n for (var i = 0; i < circles.length; ++i) {\n for (var j = i + 1; j < circles.length; ++j) {\n var maxDistance = circles[i].radius + circles[j].radius;\n if (distance(circles[i], circles[j]) + 1e-10 < maxDistance) {\n union(circles[j], circles[i]);\n }\n }\n }\n\n // find all the disjoint clusters and group them together\n var disjointClusters = {}, setid;\n for (i = 0; i < circles.length; ++i) {\n setid = find(circles[i]).parent.setid;\n if (!(setid in disjointClusters)) {\n disjointClusters[setid] = [];\n }\n disjointClusters[setid].push(circles[i]);\n }\n\n // cleanup bookkeeping\n circles.map(function(circle) { delete circle.parent; });\n\n // return in more usable form\n var ret = [];\n for (setid in disjointClusters) {\n if (disjointClusters.hasOwnProperty(setid)) {\n ret.push(disjointClusters[setid]);\n }\n }\n return ret;\n}\n\nfunction getBoundingBox(circles) {\n var minMax = function(d) {\n var hi = Math.max.apply(null, circles.map(\n function(c) { return c[d] + c.radius; } )),\n lo = Math.min.apply(null, circles.map(\n function(c) { return c[d] - c.radius;} ));\n return {max:hi, min:lo};\n };\n\n return {xRange: minMax('x'), yRange: minMax('y')};\n}\n\nfunction normalizeSolution(solution, orientation, orientationOrder) {\n if (orientation === null){\n orientation = Math.PI/2;\n }\n\n // work with a list instead of a dictionary, and take a copy so we\n // don't mutate input\n var circles = [], i, setid;\n for (setid in solution) {\n if (solution.hasOwnProperty(setid)) {\n var previous = solution[setid];\n circles.push({x: previous.x,\n y: previous.y,\n radius: previous.radius,\n setid: setid});\n }\n }\n\n // get all the disjoint clusters\n var clusters = disjointCluster(circles);\n\n // orientate all disjoint sets, get sizes\n for (i = 0; i < clusters.length; ++i) {\n orientateCircles(clusters[i], orientation, orientationOrder);\n var bounds = getBoundingBox(clusters[i]);\n clusters[i].size = (bounds.xRange.max - bounds.xRange.min) * (bounds.yRange.max - bounds.yRange.min);\n clusters[i].bounds = bounds;\n }\n clusters.sort(function(a, b) { return b.size - a.size; });\n\n // orientate the largest at 0,0, and get the bounds\n circles = clusters[0];\n var returnBounds = circles.bounds;\n\n var spacing = (returnBounds.xRange.max - returnBounds.xRange.min)/50;\n\n function addCluster(cluster, right, bottom) {\n if (!cluster) return;\n\n var bounds = cluster.bounds, xOffset, yOffset, centreing;\n\n if (right) {\n xOffset = returnBounds.xRange.max - bounds.xRange.min + spacing;\n } else {\n xOffset = returnBounds.xRange.max - bounds.xRange.max;\n centreing = (bounds.xRange.max - bounds.xRange.min) / 2 -\n (returnBounds.xRange.max - returnBounds.xRange.min) / 2;\n if (centreing < 0) xOffset += centreing;\n }\n\n if (bottom) {\n yOffset = returnBounds.yRange.max - bounds.yRange.min + spacing;\n } else {\n yOffset = returnBounds.yRange.max - bounds.yRange.max;\n centreing = (bounds.yRange.max - bounds.yRange.min) / 2 -\n (returnBounds.yRange.max - returnBounds.yRange.min) / 2;\n if (centreing < 0) yOffset += centreing;\n }\n\n for (var j = 0; j < cluster.length; ++j) {\n cluster[j].x += xOffset;\n cluster[j].y += yOffset;\n circles.push(cluster[j]);\n }\n }\n\n var index = 1;\n while (index < clusters.length) {\n addCluster(clusters[index], true, false);\n addCluster(clusters[index+1], false, true);\n addCluster(clusters[index+2], true, true);\n index += 3;\n\n // have one cluster (in top left). lay out next three relative\n // to it in a grid\n returnBounds = getBoundingBox(circles);\n }\n\n // convert back to solution form\n var ret = {};\n for (i = 0; i < circles.length; ++i) {\n ret[circles[i].setid] = circles[i];\n }\n return ret;\n}\n\n/** Scales a solution from venn.venn or venn.greedyLayout such that it fits in\na rectangle of width/height - with padding around the borders. also\ncenters the diagram in the available space at the same time */\nfunction scaleSolution(solution, width, height, padding) {\n var circles = [], setids = [];\n for (var setid in solution) {\n if (solution.hasOwnProperty(setid)) {\n setids.push(setid);\n circles.push(solution[setid]);\n }\n }\n\n width -= 2*padding;\n height -= 2*padding;\n\n var bounds = getBoundingBox(circles),\n xRange = bounds.xRange,\n yRange = bounds.yRange;\n\n if ((xRange.max == xRange.min) ||\n (yRange.max == yRange.min)) {\n console.log(\"not scaling solution: zero size detected\");\n return solution;\n }\n\n var xScaling = width / (xRange.max - xRange.min),\n yScaling = height / (yRange.max - yRange.min),\n scaling = Math.min(yScaling, xScaling),\n\n // while we're at it, center the diagram too\n xOffset = (width - (xRange.max - xRange.min) * scaling) / 2,\n yOffset = (height - (yRange.max - yRange.min) * scaling) / 2;\n\n var scaled = {};\n for (var i = 0; i < circles.length; ++i) {\n var circle = circles[i];\n scaled[setids[i]] = {\n radius: scaling * circle.radius,\n x: padding + xOffset + (circle.x - xRange.min) * scaling,\n y: padding + yOffset + (circle.y - yRange.min) * scaling,\n };\n }\n\n return scaled;\n}\n\n/*global console:true*/\n\nfunction VennDiagram() {\n var width = 600,\n height = 350,\n padding = 15,\n duration = 1000,\n orientation = Math.PI / 2,\n normalize = true,\n wrap = true,\n styled = true,\n fontSize = null,\n orientationOrder = null,\n\n // mimic the behaviour of d3.scale.category10 from the previous\n // version of d3\n colourMap = {},\n\n // so this is the same as d3.schemeCategory10, which is only defined in d3 4.0\n // since we can support older versions of d3 as long as we don't force this,\n // I'm hackily redefining below. TODO: remove this and change to d3.schemeCategory10\n colourScheme = [\"#1f77b4\", \"#ff7f0e\", \"#2ca02c\", \"#d62728\", \"#9467bd\", \"#8c564b\", \"#e377c2\", \"#7f7f7f\", \"#bcbd22\", \"#17becf\"],\n colourIndex = 0,\n colours = function(key) {\n if (key in colourMap) {\n return colourMap[key];\n }\n var ret = colourMap[key] = colourScheme[colourIndex];\n colourIndex += 1;\n if (colourIndex >= colourScheme.length) {\n colourIndex = 0;\n }\n return ret;\n },\n layoutFunction = venn,\n loss = lossFunction;\n\n\n function chart(selection) {\n var data = selection.datum();\n\n // handle 0-sized sets by removing from input\n var toremove = {};\n data.forEach(function(datum) {\n if ((datum.size == 0) && datum.sets.length == 1) {\n toremove[datum.sets[0]] = 1;\n }\n });\n data = data.filter(function(datum) {\n return !datum.sets.some(function(set) { return set in toremove; });\n });\n\n var circles = {};\n var textCentres = {};\n\n if (data.length > 0) {\n var solution = layoutFunction(data, {lossFunction: loss});\n\n if (normalize) {\n solution = normalizeSolution(solution,\n orientation,\n orientationOrder);\n }\n\n circles = scaleSolution(solution, width, height, padding);\n textCentres = computeTextCentres(circles, data);\n }\n\n // Figure out the current label for each set. These can change\n // and D3 won't necessarily update (fixes https://github.com/benfred/venn.js/issues/103)\n var labels = {};\n data.forEach(function(datum) {\n if (datum.label) {\n labels[datum.sets] = datum.label;\n }\n });\n\n function label(d) {\n if (d.sets in labels) {\n return labels[d.sets];\n }\n if (d.sets.length == 1) {\n return '' + d.sets[0];\n }\n }\n\n // create svg if not already existing\n selection.selectAll(\"svg\").data([circles]).enter().append(\"svg\");\n\n var svg = selection.select(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height);\n\n // to properly transition intersection areas, we need the\n // previous circles locations. load from elements\n var previous = {}, hasPrevious = false;\n svg.selectAll(\".venn-area path\").each(function (d) {\n var path = d3Selection.select(this).attr(\"d\");\n if ((d.sets.length == 1) && path) {\n hasPrevious = true;\n previous[d.sets[0]] = circleFromPath(path);\n }\n });\n\n // interpolate intersection area paths between previous and\n // current paths\n var pathTween = function(d) {\n return function(t) {\n var c = d.sets.map(function(set) {\n var start = previous[set], end = circles[set];\n if (!start) {\n start = {x : width/2, y : height/2, radius : 1};\n }\n if (!end) {\n end = {x : width/2, y : height/2, radius : 1};\n }\n return {'x' : start.x * (1 - t) + end.x * t,\n 'y' : start.y * (1 - t) + end.y * t,\n 'radius' : start.radius * (1 - t) + end.radius * t};\n });\n return intersectionAreaPath(c);\n };\n };\n\n // update data, joining on the set ids\n var nodes = svg.selectAll(\".venn-area\")\n .data(data, function(d) { return d.sets; });\n\n // create new nodes\n var enter = nodes.enter()\n .append('g')\n .attr(\"class\", function(d) {\n return \"venn-area venn-\" +\n (d.sets.length == 1 ? \"circle\" : \"intersection\");\n })\n .attr(\"data-venn-sets\", function(d) {\n return d.sets.join(\"_\");\n });\n\n var enterPath = enter.append(\"path\"),\n enterText = enter.append(\"text\")\n .attr(\"class\", \"label\")\n .text(function (d) { return label(d); } )\n .attr(\"text-anchor\", \"middle\")\n .attr(\"dy\", \".35em\")\n .attr(\"x\", width/2)\n .attr(\"y\", height/2);\n\n\n // apply minimal style if wanted\n if (styled) {\n enterPath.style(\"fill-opacity\", \"0\")\n .filter(function (d) { return d.sets.length == 1; } )\n .style(\"fill\", function(d) { return colours(d.sets); })\n .style(\"fill-opacity\", \".25\");\n\n enterText\n .style(\"fill\", function(d) { return d.sets.length == 1 ? colours(d.sets) : \"#444\"; });\n }\n\n // update existing, using pathTween if necessary\n var update = selection;\n if (hasPrevious) {\n update = selection.transition(\"venn\").duration(duration);\n update.selectAll(\"path\")\n .attrTween(\"d\", pathTween);\n } else {\n update.selectAll(\"path\")\n .attr(\"d\", function(d) {\n return intersectionAreaPath(d.sets.map(function (set) { return circles[set]; }));\n });\n }\n\n var updateText = update.selectAll(\"text\")\n .filter(function (d) { return d.sets in textCentres; })\n .text(function (d) { return label(d); } )\n .attr(\"x\", function(d) { return Math.floor(textCentres[d.sets].x);})\n .attr(\"y\", function(d) { return Math.floor(textCentres[d.sets].y);});\n\n if (wrap) {\n if (hasPrevious) {\n // d3 4.0 uses 'on' for events on transitions,\n // but d3 3.0 used 'each' instead. switch appropiately\n if ('on' in updateText) {\n updateText.on(\"end\", wrapText(circles, label));\n } else {\n updateText.each(\"end\", wrapText(circles, label));\n }\n } else {\n updateText.each(wrapText(circles, label));\n }\n }\n\n // remove old\n var exit = nodes.exit().transition('venn').duration(duration).remove();\n exit.selectAll(\"path\")\n .attrTween(\"d\", pathTween);\n\n var exitText = exit.selectAll(\"text\")\n .attr(\"x\", width/2)\n .attr(\"y\", height/2);\n\n // if we've been passed a fontSize explicitly, use it to\n // transition\n if (fontSize !== null) {\n enterText.style(\"font-size\", \"0px\");\n updateText.style(\"font-size\", fontSize);\n exitText.style(\"font-size\", \"0px\");\n }\n\n\n return {'circles': circles,\n 'textCentres': textCentres,\n 'nodes': nodes,\n 'enter': enter,\n 'update': update,\n 'exit': exit};\n }\n\n chart.wrap = function(_) {\n if (!arguments.length) return wrap;\n wrap = _;\n return chart;\n };\n\n chart.width = function(_) {\n if (!arguments.length) return width;\n width = _;\n return chart;\n };\n\n chart.height = function(_) {\n if (!arguments.length) return height;\n height = _;\n return chart;\n };\n\n chart.padding = function(_) {\n if (!arguments.length) return padding;\n padding = _;\n return chart;\n };\n\n chart.colours = function(_) {\n if (!arguments.length) return colours;\n colours = _;\n return chart;\n };\n\n chart.fontSize = function(_) {\n if (!arguments.length) return fontSize;\n fontSize = _;\n return chart;\n };\n\n chart.duration = function(_) {\n if (!arguments.length) return duration;\n duration = _;\n return chart;\n };\n\n chart.layoutFunction = function(_) {\n if (!arguments.length) return layoutFunction;\n layoutFunction = _;\n return chart;\n };\n\n chart.normalize = function(_) {\n if (!arguments.length) return normalize;\n normalize = _;\n return chart;\n };\n\n chart.styled = function(_) {\n if (!arguments.length) return styled;\n styled = _;\n return chart;\n };\n\n chart.orientation = function(_) {\n if (!arguments.length) return orientation;\n orientation = _;\n return chart;\n };\n\n chart.orientationOrder = function(_) {\n if (!arguments.length) return orientationOrder;\n orientationOrder = _;\n return chart;\n };\n\n chart.lossFunction = function(_) {\n if (!arguments.length) return loss;\n loss = _;\n return chart;\n };\n\n return chart;\n}\n// sometimes text doesn't fit inside the circle, if thats the case lets wrap\n// the text here such that it fits\n// todo: looks like this might be merged into d3 (\n// https://github.com/mbostock/d3/issues/1642),\n// also worth checking out is\n// http://engineering.findthebest.com/wrapping-axis-labels-in-d3-js/\n// this seems to be one of those things that should be easy but isn't\nfunction wrapText(circles, labeller) {\n return function() {\n var text = d3Selection.select(this),\n data = text.datum(),\n width = circles[data.sets[0]].radius || 50,\n label = labeller(data) || '';\n\n var words = label.split(/\\s+/).reverse(),\n maxLines = 3,\n minChars = (label.length + words.length) / maxLines,\n word = words.pop(),\n line = [word],\n joined,\n lineNumber = 0,\n lineHeight = 1.1, // ems\n tspan = text.text(null).append(\"tspan\").text(word);\n\n while (true) {\n word = words.pop();\n if (!word) break;\n line.push(word);\n joined = line.join(\" \");\n tspan.text(joined);\n if (joined.length > minChars && tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\").text(word);\n lineNumber++;\n }\n }\n\n var initial = 0.35 - lineNumber * lineHeight / 2,\n x = text.attr(\"x\"),\n y = text.attr(\"y\");\n\n text.selectAll(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", function(d, i) {\n return (initial + i * lineHeight) + \"em\";\n });\n };\n}\n\nfunction circleMargin(current, interior, exterior) {\n var margin = interior[0].radius - distance(interior[0], current), i, m;\n for (i = 1; i < interior.length; ++i) {\n m = interior[i].radius - distance(interior[i], current);\n if (m <= margin) {\n margin = m;\n }\n }\n\n for (i = 0; i < exterior.length; ++i) {\n m = distance(exterior[i], current) - exterior[i].radius;\n if (m <= margin) {\n margin = m;\n }\n }\n return margin;\n}\n\n// compute the center of some circles by maximizing the margin of\n// the center point relative to the circles (interior) after subtracting\n// nearby circles (exterior)\nfunction computeTextCentre(interior, exterior) {\n // get an initial estimate by sampling around the interior circles\n // and taking the point with the biggest margin\n var points = [], i;\n for (i = 0; i < interior.length; ++i) {\n var c = interior[i];\n points.push({x: c.x, y: c.y});\n points.push({x: c.x + c.radius/2, y: c.y});\n points.push({x: c.x - c.radius/2, y: c.y});\n points.push({x: c.x, y: c.y + c.radius/2});\n points.push({x: c.x, y: c.y - c.radius/2});\n }\n var initial = points[0], margin = circleMargin(points[0], interior, exterior);\n for (i = 1; i < points.length; ++i) {\n var m = circleMargin(points[i], interior, exterior);\n if (m >= margin) {\n initial = points[i];\n margin = m;\n }\n }\n\n // maximize the margin numerically\n var solution = nelderMead(\n function(p) { return -1 * circleMargin({x: p[0], y: p[1]}, interior, exterior); },\n [initial.x, initial.y],\n {maxIterations:500, minErrorDelta:1e-10}).x;\n var ret = {x: solution[0], y: solution[1]};\n\n // check solution, fallback as needed (happens if fully overlapped\n // etc)\n var valid = true;\n for (i = 0; i < interior.length; ++i) {\n if (distance(ret, interior[i]) > interior[i].radius) {\n valid = false;\n break;\n }\n }\n\n for (i = 0; i < exterior.length; ++i) {\n if (distance(ret, exterior[i]) < exterior[i].radius) {\n valid = false;\n break;\n }\n }\n\n if (!valid) {\n if (interior.length == 1) {\n ret = {x: interior[0].x, y: interior[0].y};\n } else {\n var areaStats = {};\n intersectionArea(interior, areaStats);\n\n if (areaStats.arcs.length === 0) {\n ret = {'x': 0, 'y': -1000, disjoint:true};\n\n } else if (areaStats.arcs.length == 1) {\n ret = {'x': areaStats.arcs[0].circle.x,\n 'y': areaStats.arcs[0].circle.y};\n\n } else if (exterior.length) {\n // try again without other circles\n ret = computeTextCentre(interior, []);\n\n } else {\n // take average of all the points in the intersection\n // polygon. this should basically never happen\n // and has some issues:\n // https://github.com/benfred/venn.js/issues/48#issuecomment-146069777\n ret = getCenter(areaStats.arcs.map(function (a) { return a.p1; }));\n }\n }\n }\n\n return ret;\n}\n\n// given a dictionary of {setid : circle}, returns\n// a dictionary of setid to list of circles that completely overlap it\nfunction getOverlappingCircles(circles) {\n var ret = {}, circleids = [];\n for (var circleid in circles) {\n circleids.push(circleid);\n ret[circleid] = [];\n }\n for (var i = 0; i < circleids.length; i++) {\n var a = circles[circleids[i]];\n for (var j = i + 1; j < circleids.length; ++j) {\n var b = circles[circleids[j]],\n d = distance(a, b);\n\n if (d + b.radius <= a.radius + 1e-10) {\n ret[circleids[j]].push(circleids[i]);\n\n } else if (d + a.radius <= b.radius + 1e-10) {\n ret[circleids[i]].push(circleids[j]);\n }\n }\n }\n return ret;\n}\n\nfunction computeTextCentres(circles, areas) {\n var ret = {}, overlapped = getOverlappingCircles(circles);\n for (var i = 0; i < areas.length; ++i) {\n var area = areas[i].sets, areaids = {}, exclude = {};\n for (var j = 0; j < area.length; ++j) {\n areaids[area[j]] = true;\n var overlaps = overlapped[area[j]];\n // keep track of any circles that overlap this area,\n // and don't consider for purposes of computing the text\n // centre\n for (var k = 0; k < overlaps.length; ++k) {\n exclude[overlaps[k]] = true;\n }\n }\n\n var interior = [], exterior = [];\n for (var setid in circles) {\n if (setid in areaids) {\n interior.push(circles[setid]);\n } else if (!(setid in exclude)) {\n exterior.push(circles[setid]);\n }\n }\n var centre = computeTextCentre(interior, exterior);\n ret[area] = centre;\n if (centre.disjoint && (areas[i].size > 0)) {\n console.log(\"WARNING: area \" + area + \" not represented on screen\");\n }\n }\n return ret;\n}\n\n// sorts all areas in the venn diagram, so that\n// a particular area is on top (relativeTo) - and\n// all other areas are so that the smallest areas are on top\nfunction sortAreas(div, relativeTo) {\n\n // figure out sets that are completly overlapped by relativeTo\n var overlaps = getOverlappingCircles(div.selectAll(\"svg\").datum());\n var exclude = {};\n for (var i = 0; i < relativeTo.sets.length; ++i) {\n var check = relativeTo.sets[i];\n for (var setid in overlaps) {\n var overlap = overlaps[setid];\n for (var j = 0; j < overlap.length; ++j) {\n if (overlap[j] == check) {\n exclude[setid] = true;\n break;\n }\n }\n }\n }\n\n // checks that all sets are in exclude;\n function shouldExclude(sets) {\n for (var i = 0; i < sets.length; ++i) {\n if (!(sets[i] in exclude)) {\n return false;\n }\n }\n return true;\n }\n\n // need to sort div's so that Z order is correct\n div.selectAll(\"g\").sort(function (a, b) {\n // highest order set intersections first\n if (a.sets.length != b.sets.length) {\n return a.sets.length - b.sets.length;\n }\n\n if (a == relativeTo) {\n return shouldExclude(b.sets) ? -1 : 1;\n }\n if (b == relativeTo) {\n return shouldExclude(a.sets) ? 1 : -1;\n }\n\n // finally by size\n return b.size - a.size;\n });\n}\n\nfunction circlePath(x, y, r) {\n var ret = [];\n ret.push(\"\\nM\", x, y);\n ret.push(\"\\nm\", -r, 0);\n ret.push(\"\\na\", r, r, 0, 1, 0, r *2, 0);\n ret.push(\"\\na\", r, r, 0, 1, 0,-r *2, 0);\n return ret.join(\" \");\n}\n\n// inverse of the circlePath function, returns a circle object from an svg path\nfunction circleFromPath(path) {\n var tokens = path.split(' ');\n return {'x' : parseFloat(tokens[1]),\n 'y' : parseFloat(tokens[2]),\n 'radius' : -parseFloat(tokens[4])\n };\n}\n\n/** returns a svg path of the intersection area of a bunch of circles */\nfunction intersectionAreaPath(circles) {\n var stats = {};\n intersectionArea(circles, stats);\n var arcs = stats.arcs;\n\n if (arcs.length === 0) {\n return \"M 0 0\";\n\n } else if (arcs.length == 1) {\n var circle = arcs[0].circle;\n return circlePath(circle.x, circle.y, circle.radius);\n\n } else {\n // draw path around arcs\n var ret = [\"\\nM\", arcs[0].p2.x, arcs[0].p2.y];\n for (var i = 0; i < arcs.length; ++i) {\n var arc = arcs[i], r = arc.circle.radius, wide = arc.width > r;\n ret.push(\"\\nA\", r, r, 0, wide ? 1 : 0, 1,\n arc.p1.x, arc.p1.y);\n }\n return ret.join(\" \");\n }\n}\n\nexports.intersectionArea = intersectionArea;\nexports.circleCircleIntersection = circleCircleIntersection;\nexports.circleOverlap = circleOverlap;\nexports.circleArea = circleArea;\nexports.distance = distance;\nexports.venn = venn;\nexports.greedyLayout = greedyLayout;\nexports.scaleSolution = scaleSolution;\nexports.normalizeSolution = normalizeSolution;\nexports.bestInitialLayout = bestInitialLayout;\nexports.lossFunction = lossFunction;\nexports.disjointCluster = disjointCluster;\nexports.distanceFromIntersectArea = distanceFromIntersectArea;\nexports.VennDiagram = VennDiagram;\nexports.wrapText = wrapText;\nexports.computeTextCentres = computeTextCentres;\nexports.computeTextCentre = computeTextCentre;\nexports.sortAreas = sortAreas;\nexports.circlePath = circlePath;\nexports.circleFromPath = circleFromPath;\nexports.intersectionAreaPath = intersectionAreaPath;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/Dropbox/www/amcharts4dev/node_modules/venn.js/build/venn.js\n// module id = YT44\n// module chunks = 7005"],"sourceRoot":""}