{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6***********","webpack:///tooltip.min.js","webpack:///webpack/bootstrap 0a1eb6cfa29181d5999f?cc57***********","webpack:///./src/charts/tooltip.js","webpack:///./~/d3-ease/build/d3-ease.js?034c**********","webpack:///./~/d3-color/build/d3-color.js?f7c1**********","webpack:///./~/d3-dispatch/build/d3-dispatch.js?a489**********","webpack:///./~/d3-format/build/d3-format.js?fb4a**********","webpack:///./~/d3-interpolate/build/d3-interpolate.js?f797**********","webpack:///./~/d3-time/build/d3-time.js?70a1*********","webpack:///./~/d3-time-format/build/d3-time-format.js?bb40*********","webpack:///./~/d3-selection/build/d3-selection.js?6638**********","webpack:///./~/d3-transition/build/d3-transition.js?07b0**********","webpack:///./~/d3-timer/build/d3-timer.js?2468**********","webpack:///./src/charts/helpers/constants.js?4e60********","webpack:///./src/charts/helpers/common.js?a3d1**","webpack:///./src/charts/helpers/formatHelpers.js?965e*"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","__WEBPACK_AMD_DEFINE_RESULT__","_typeof","Symbol","iterator","obj","constructor","prototype","_slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","value","length","err","Array","isArray","Object","TypeError","require","d3Ease","d3Format","d3Selection","d3TimeFormat","_require","axisTimeCombinations","_require2","formatIntegerValue","formatDecimalValue","_require3","isInteger","_selection","each","_data","chartWidth","width","margin","left","right","chartHeight","height","top","bottom","data","buildSVG","buildContainerGroups","container","svg","append","classed","attr","select","drawTooltip","transition","hide","cleanContent","tooltipBody","selectAll","remove","tooltipTextContainer","tooltip","tooltipWidth","tooltipHeight","tooltipBorderRadius","style","bodyFillColor","borderStrokeColor","tooltipTitle","titleFillColor","tooltipDivider","textFillColor","getFormattedValue","valueFormatter","valueFormat","format","getTooltipPosition","_ref","_ref2","mouseX","mouseY","tooltipX","tooltipY","tooltipOffset","y","getValueText","valueLabel","valueText","missingValue","toString","resetSizeAndPositionPointers","ttTextY","ttTextX","updateTopicContent","topic","name","nameLabel","tooltipRight","tooltipLeftText","tooltipRightText","elementText","topicName","tooltipTextColor","text","textWrap","tooltipMaxTopicLength","textSize","node","getBBox","circleYOffset","colorMap","updatePositionAndSize","dataPoint","xPosition","yPosition","_getTooltipPosition","_getTooltipPosition2","duration","mouseChaseDuration","ease","updateTitle","tTitle","title","shouldShowDateInTitle","formatDate","Date","dateLabel","date","settings","dateFormat","defaultAxisSettings","localeOptions","month","day","DAY_MONTH","MONTH_YEAR","monthDayYearFormat","year","HOUR_DAY","MINUTE_HOUR","monthDayHourFormat","hour","locale","Intl","DateTimeFormat","f","_sortByTopicsOrder","topics","order","arguments","topicsOrder","map","orderName","filter","_ref3","_sortByAlpha","d","sort","a","b","xpos","words","word","line","lineNumber","lineHeight","dy","tspan","split","reverse","parseFloat","pop","join","getComputedTextLength","entryLineLimit","updateContent","topicLabel","forEach","updateTooltip","x","easeQuadInOut","timeFormat","_x","show","update","colorMapping","global","linear","t","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","sinIn","Math","cos","halfPi","sinOut","sin","sinInOut","pi","expIn","pow","expOut","expInOut","circleIn","sqrt","circleOut","circleInOut","bounceIn","bounceOut","b1","b0","b3","b2","b4","b6","b5","b7","b8","b9","bounceInOut","exponent","polyIn","custom","e","polyOut","polyInOut","PI","overshoot","backIn","s","backOut","backInOut","tau","amplitude","period","elasticIn","asin","max","elasticOut","elasticInOut","easeLinear","easeQuad","easeQuadIn","easeQuadOut","easeCubic","easeCubicIn","easeCubicOut","easeCubicInOut","easePoly","easePolyIn","easePolyOut","easePolyInOut","easeSin","easeSinIn","easeSinOut","easeSinInOut","easeExp","easeExpIn","easeExpOut","easeExpInOut","easeCircle","easeCircleIn","easeCircleOut","easeCircleInOut","easeBounce","easeBounceIn","easeBounceOut","easeBounceInOut","easeBack","easeBackIn","easeBackOut","easeBackInOut","easeElastic","easeElasticIn","easeElasticOut","easeElasticInOut","defineProperty","extend","parent","definition","create","key","Color","color","trim","toLowerCase","reHex3","exec","parseInt","Rgb","reHex6","rgbn","reRgbInteger","reRgbPercent","reRgbaInteger","rgba","reRgbaPercent","reHslPercent","hsla","reHslaPercent","named","hasOwnProperty","NaN","n","r","g","rgbConvert","o","rgb","opacity","h","l","Hsl","hslConvert","min","hsl","hsl2rgb","m1","m2","labConvert","Lab","Hcl","deg2rad","rgb2xyz","xyz2lab","Xn","Yn","z","Zn","lab","t3","t2","t0","lab2xyz","t1","xyz2rgb","hclConvert","atan2","rad2deg","hcl","cubehelixConvert","Cubehelix","BC_DA","ED","EB","bl","k","E","C","D","cubehelix","darker","brighter","reI","reN","reP","RegExp","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","displayable","isNaN","round","Kn","A","B","cosh","sinh","dispatch","_","Error","Dispatch","parseTypenames","typenames","types","indexOf","slice","type","get","set","callback","noop","concat","on","typename","T","copy","that","args","apply","formatSpecifier","specifier","FormatSpecifier","match","re","fill","align","sign","symbol","zero","comma","precision","formatTypes","defaultLocale","formatLocale","formatPrefix","prefixExponent","formatDecimal","toExponential","coefficient","abs","formatGroup","grouping","thousands","j","substring","formatNumerals","numerals","replace","formatDefault","toPrecision","out","i1","i0","formatPrefixAuto","floor","formatRounded","","%","toFixed","X","toUpperCase","identity","prefixes","newFormat","valuePrefix","prefix","valueSuffix","suffix","formatType","valueNegative","maybeSuffix","charCodeAt","decimal","group","Infinity","padding","currency","test","percent","precisionFixed","step","precisionPrefix","precisionRound","formatDefaultLocale","d3Color","basis","v0","v1","v2","v3","exponential","hue","constant","gamma","nogamma","rgbSpline","spline","colors","color$$1","one","parseCss","cssNode","document","createElement","cssRoot","documentElement","cssView","defaultView","transform","getComputedStyle","appendChild","getPropertyValue","removeChild","decompose","parseSvg","svgNode","createElementNS","setAttribute","baseVal","consolidate","matrix","interpolateTransform","parse","pxComma","pxParen","degParen","translate","xa","ya","xb","yb","q","number","rotate","skewX","scale","translateX","translateY","scaleX","scaleY","exp","tanh","hsl$1","hue$$1","start","end","lab$1","hcl$1","cubehelix$1","cubehelixGamma","cubehelix$$1","basis$1","values","basisClosed","rgb$1","rgbGamma","rgb$$1","rgbBasis","rgbBasisClosed","array","nb","na","setTime","object","reA","reB","source","string","am","bm","bs","bi","lastIndex","index","valueOf","degrees","atan","interpolateTransformCss","interpolateTransformSvg","rho","SQRT2","rho2","rho4","epsilon2","zoom","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","dx","d2","log","d1","r0","r1","coshr0","u","hsl$2","hslLong","hcl$2","hclLong","cubehelix$2","cubehelixLong","quantize","interpolator","samples","interpolate","interpolateArray","interpolateBasis","interpolateBasisClosed","interpolateDate","interpolateNumber","interpolateObject","interpolateRound","interpolateString","interpolateZoom","interpolateRgb","interpolateRgbBasis","interpolateRgbBasisClosed","interpolateHsl","interpolateHslLong","interpolateLab","interpolateHcl","interpolateHclLong","interpolateCubehelix","interpolateCubehelixLong","newInterval","floori","offseti","count","field","interval","ceil","d0","offset","range","stop","every","isFinite","weekday","setDate","getDate","getDay","setHours","getTimezoneOffset","durationMinute","durationWeek","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","millisecond","milliseconds","durationSecond","durationHour","durationDay","second","getUTCSeconds","seconds","minute","getMinutes","minutes","getHours","hours","days","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","setMonth","getMonth","getFullYear","months","setFullYear","years","utcMinute","setUTCSeconds","getUTCMinutes","utcMinutes","utcHour","setUTCMinutes","getUTCHours","utcHours","utcDay","utcDays","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcMonths","utcYear","setUTCFullYear","utcYears","timeInterval","timeMillisecond","timeMilliseconds","utcMillisecond","utcMilliseconds","timeSecond","timeSeconds","utcSecond","utcSeconds","timeMinute","timeMinutes","timeHour","timeHours","timeDay","timeDays","timeWeek","timeWeeks","timeSunday","timeSundays","timeMonday","timeMondays","timeTuesday","timeTuesdays","timeWednesday","timeWednesdays","timeThursday","timeThursdays","timeFriday","timeFridays","timeSaturday","timeSaturdays","timeMonth","timeMonths","timeYear","timeYears","utcWeek","utcWeeks","d3Time","localDate","H","M","L","utcDate","UTC","newYear","formats","pad","pads","charAt","newParse","newDate","parseSpecifier","w","W","U","Z","parses","parsePeriod","periodRe","periodLookup","parseShortWeekday","shortWeekdayRe","shortWeekdayLookup","parseWeekday","weekdayRe","weekdayLookup","parseShortMonth","shortMonthRe","shortMonthLookup","parseMonth","monthRe","monthLookup","parseLocaleDateTime","locale_dateTime","parseLocaleDate","locale_date","parseLocaleTime","locale_time","formatShortWeekday","locale_shortWeekdays","formatWeekday","locale_weekdays","formatShortMonth","locale_shortMonths","formatMonth","locale_months","formatPeriod","locale_periods","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCPeriod","dateTime","time","periods","shortDays","shortMonths","formatRe","formatLookup","formatDayOfMonth","formatHour24","I","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekNumberSunday","formatWeekdayNumber","formatWeekNumberMonday","formatYear","Y","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekNumberSunday","formatUTCWeekdayNumber","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parseDayOfMonth","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseSeconds","parseWeekNumberSunday","parseWeekdayNumber","parseWeekNumberMonday","parseYear","parseFullYear","parseZone","parseLiteralPercent","utcFormat","utcParse","requote","requoteRe","names","numberRe","percentRe","getMilliseconds","getSeconds","getUTCMilliseconds","locale$1","timeParse","formatIsoNative","toISOString","parseIsoNative","-","0","isoSpecifier","formatIso","parseIso","timeFormatDefaultLocale","timeFormatLocale","isoFormat","isoParse","creatorInherit","ownerDocument","uri","namespaceURI","xhtml","creatorFixed","fullname","space","local","Local","nextId","filterContextListener","listener","contextListener","event","related","relatedTarget","compareDocumentPosition","event1","event0","__data__","onRemove","__on","removeEventListener","capture","onAdd","wrap","filterEvents","addEventListener","customEvent","sourceEvent","none","empty","EnterNode","datum","_next","_parent","bindIndex","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","keyPrefix","ascending","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","getAttribute","classedAdd","list","add","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","lower","previousSibling","insertBefore","firstChild","constantNull","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","Selection","groups","parents","_groups","_parents","selection","namespaces","xlink","xml","xmlns","namespace","creator","matcher","selector","matches","element","vendorMatches","webkitMatchesSelector","msMatchesSelector","mozMatchesSelector","oMatchesSelector","matcher$1","element$1","mouseenter","mouseleave","selection_on","current","point","ownerSVGElement","createSVGPoint","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","clientTop","mouse","changedTouches","querySelector","selection_select","subgroups","subnode","subgroup","selectorAll","querySelectorAll","selection_selectAll","selection_filter","sparse","selection_enter","_enter","child","selection_data","size","bind","enterGroup","updateGroup","exitGroup","previous","_exit","selection_exit","selection_merge","groups0","groups1","m0","merges","group0","group1","merge","selection_order","selection_sort","compare","compareNode","sortgroups","sortgroup","selection_call","selection_nodes","nodes","selection_node","selection_size","selection_empty","selection_each","selection_attr","getAttributeNS","selection_style","selection_property","splice","contains","selection_classed","selection_text","selection_html","selection_raise","selection_lower","selection_append","selection_insert","before","selection_remove","selection_datum","property","selection_dispatch","html","insert","touch","touches","identifier","points","d3Dispatch","d3Timer","d3Interpolate","init","schedule","__transition","state","CREATED","STARTING","self","elapsed","SCHEDULED","timer","restart","delay","schedules","STARTED","timeout","RUNNING","ENDED","tick","tween","ENDING","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolate$$1","value1","value00","interpolate0","value0","value10","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","removeFunction","styleRemoveEnd","styleTween","Transition","_name","newId","inherit","timing","defaultTiming","now","emptyOn","emptyTween","interrupt","active","selection_interrupt","transition_tween","transition_attr","transition_attrTween","transition_delay","transition_duration","transition_ease","transition_filter","transition_merge","transition_on","transition_remove","transition_select","transition_selectAll","children","transition_selection","transition_style","transition_styleTween","transition_text","transition_transition","id0","id1","selection_prototype","selection_transition","clockNow","setFrame","clearNow","clock","clockSkew","Timer","_call","_time","timerFlush","frame","taskHead","wake","clockLast","nap","poke","pokeDelay","taskTail","sleep","clearTimeout","setTimeout","clearInterval","setInterval","performance","requestAnimationFrame","timeout$1","interval$1","total","timeBenchmarks","ONE_AND_A_HALF_YEARS","ONE_YEAR","ONE_DAY","lineGradientId","calculatePercent","decimals","getValueSize","limits","small","limit","medium","integerValueFormats","decimalValueFormats","large"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,UAAAH,GACA,gBAAAC,SACAA,QAAA,QAAAD,KAEAD,EAAA,YAAAA,EAAA,gBAAiDA,EAAA,oBAAAC,MAChDK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAP,WACAS,GAAAF,EACAG,QAAA,EAUA,OANAL,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,QAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KAqCA,OATAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,GAGAR,EAAA,KDgBM,SAAUL,EAAQD,EAASM,GAEhC,GAAIS,GAEAC,EAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,QAAUE,IAAQF,OAAOI,UAAY,eAAkBF,IAElQG,EAAiB,WAAc,QAASC,GAAcC,EAAKC,GAAK,GAAIC,MAAeC,GAAK,EAAUC,GAAK,EAAWC,EAAKC,MAAW,KAAM,IAAK,GAAiCC,GAA7BC,EAAKR,EAAIP,OAAOC,cAAmBS,GAAMI,EAAKC,EAAGC,QAAQC,QAAoBR,EAAKS,KAAKJ,EAAGK,QAAYX,GAAKC,EAAKW,SAAWZ,GAA3DE,GAAK,IAAoE,MAAOW,GAAOV,GAAK,EAAMC,EAAKS,EAAO,QAAU,KAAWX,GAAMK,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIJ,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUF,EAAKC,GAAK,GAAIc,MAAMC,QAAQhB,GAAQ,MAAOA,EAAY,IAAIP,OAAOC,WAAYuB,QAAOjB,GAAQ,MAAOD,GAAcC,EAAKC,EAAa,MAAM,IAAIiB,WAAU,2DE5DvlB3B,GAAO,SAAS4B,GACZ,YAEA,IAAMC,GAAStC,EAAQ,GACjBuC,EAAWvC,EAAQ,GACnBwC,EAAcxC,EAAQ,IAEtByC,GADezC,EAAQ,IACRA,EAAQ,KAPT0C,EAWhB1C,EAAQ,IADR2C,EAVgBD,EAUhBC,qBAVgBC,EAgBhB5C,EAAQ,IAFR6C,EAdgBD,EAchBC,mBACAC,EAfgBF,EAehBE,mBAfgBC,EAoBhB/C,EAAQ,IADRgD,EAnBgBD,EAmBhBC,SAwCJ,OAAO,YAwEH,QAAStD,GAAQuD,GACbA,EAAWC,KAAK,SAASC,GACrBC,GAAaC,EAAQC,EAAOC,KAAOD,EAAOE,MAC1CC,GAAcC,EAASJ,EAAOK,IAAML,EAAOM,OAC3CC,GAAOV,EAEPW,EAAShE,QASjB,QAASiE,KACL,GAAIC,GAAYC,GAAIC,OAAO,KACtBC,QAAQ,2BAA2B,GACnCC,KAAK,YAFM,cAEqBd,EAAOC,KAF5B,KAEqCD,EAAOK,IAF5C,IAIhBK,GAAUE,OAAO,KAAKC,QAAQ,iBAAiB,GAQnD,QAASL,GAASE,GACTC,KACDA,GAAMzB,EAAY6B,OAAOL,GACpBE,OAAO,KACPC,QAAQ,iCAAiC,GAE9CJ,IACAO,KAEJL,GACKM,aACAH,KAAK,QAASf,GACde,KAAK,SAAUV,GAGpBhE,EAAQ8E,OAOZ,QAASC,KACLC,EAAYC,UAAU,QAAQC,SAC9BF,EAAYC,UAAU,UAAUC,SAOpC,QAASN,KACLO,EAAuBZ,GAAIU,UAAU,kBAClCT,OAAO,KACLC,QAAQ,gBAAgB,GAE7BW,EAAUD,EACPX,OAAO,QACLC,QAAQ,0BAA0B,GAClCC,KAAK,KAAMW,EAAe,EAAI,GAC9BX,KAAK,IAAK,GACVA,KAAK,QAASW,GACdX,KAAK,SAAUY,GACfZ,KAAK,KAAMa,GACXb,KAAK,KAAMa,GACXC,MAAM,OAAQC,GACdD,MAAM,SAAUE,GAChBF,MAAM,eAAgB,GAE3BG,EAAeR,EACZX,OAAO,QACLC,QAAQ,iBAAiB,GACzBC,KAAK,KAAMW,EAAe,EAAI,IAC9BX,KAAK,KAAM,SACXA,KAAK,IAAK,IACVc,MAAM,OAAQI,IAEnBC,EAAiBV,EACdX,OAAO,QACLC,QAAQ,mBAAmB,GAC3BC,KAAK,MAAOW,EAAe,EAAI,IAC/BX,KAAK,KAAM,KACXA,KAAK,KAAM,IACXA,KAAK,KAAM,IACXc,MAAM,SAAUE,GAErBV,EAAcG,EACXX,OAAO,KACLC,QAAQ,gBAAgB,GACxBe,MAAM,YAAa,mBACnBA,MAAM,OAAQM,IAQvB,QAASC,GAAkB3D,GACvB,GAAI4D,GAAiB5C,CAErB,OAAKhB,IAGD6D,EACAD,EAAiBnD,EAASqD,OAAOD,GAC1B3C,EAAUlB,KACjB4D,EAAiB7C,GAGd6C,EAAe5D,IARX,EAiBf,QAAS+D,GAATC,GAA8C,GAAAC,GAAA/E,EAAA8E,EAAA,GAAjBE,EAAiBD,EAAA,GAATE,EAASF,EAAA,GACtCG,SAAUC,QAkBd,OAbID,GAFCF,EAASjB,EAAgB,EAEfA,EAAe,KAGf,IAIXoB,EADAF,EACWG,EAAcC,EAGdD,EAAcC,GAGrBH,EAAUC,GAQtB,QAASG,GAAazC,GAClB,GAAI/B,GAAQ+B,EAAK0C,IACbC,QAQJ,OALIA,GADA3C,EAAK4C,aACO,IAEAhB,EAAkB3D,GAAO4E,WAU7C,QAASC,KACL3B,EAAgB,GAChB4B,EAAU,GACVC,EAAU,EAQd,QAASC,GAAmBC,GACxB,GAAIC,GAAOD,EAAME,IACbC,SACAC,SACAC,SACAC,QAEJF,GAAkBJ,EAAMO,WAAaN,EACrCI,EAAmBd,EAAaS,GAEhCM,EAAc3C,EACTR,OAAO,QACPC,QAAQ,qBAAqB,GAC7BC,KAAK,KAAM,OACXA,KAAK,IAAKyC,EAAU,IACpBzC,KAAK,IAAKwC,GACV1B,MAAM,OAAQqC,IACdC,KAAKL,GACL9G,KAAKoH,EAAUC,GAAuB,IAE3CR,EAAexC,EACVR,OAAO,QACPC,QAAQ,sBAAsB,GAC9BC,KAAK,KAAM,OACXA,KAAK,IAAKyC,EAAU,GACpBzC,KAAK,IAAKwC,GACV1B,MAAM,OAAQqC,IACdC,KAAKJ,GAEVO,EAAWN,EAAYO,OAAOC,UAC9B7C,GAAiB2C,EAASjE,OAAS,EAGnCwD,EAAa9C,KAAK,IAAKW,EAAemC,EAAaU,OAAOC,UAAUxE,MAAQ,GAAK0B,EAAe,GAEhGL,EACKR,OAAO,UACPC,QAAQ,kBAAkB,GAC1BC,KAAK,KAAM,GAAKW,EAAe,GAC/BX,KAAK,KAAOwC,EAAUkB,GACtB1D,KAAK,IAAK,GACVc,MAAM,OAAQ6C,EAASf,IACvB9B,MAAM,eAAgB,GAE3B0B,GAAWe,EAASjE,OAAS,EAYjC,QAASsE,GAAsBC,EAAWC,EAAWC,GAAU,GAAAC,GAChCvC,GAAoBqC,EAAWC,IADCE,EAAArH,EAAAoH,EAAA,GACtDlC,EADsDmC,EAAA,GAC5ClC,EAD4CkC,EAAA,EAG3DvD,GACKV,KAAK,QAASW,GACdX,KAAK,SAAUY,EAAgB,IAEpCH,EAAqBN,aAChB+D,SAASC,GACTC,KAAKA,GACLpE,KAAK,YAHV,aAGoC8B,EAHpC,KAGiDC,EAHjD,KAKAZ,EACKnB,KAAK,KAAMW,EAAe,IAQnC,QAAS0D,GAAYR,GACjB,GAAIS,GAASC,CAETC,KACAF,EAAYA,EAAZ,MAAwBG,EAAW,GAAIC,MAAKb,EAAUc,OAG1D1D,EAAamC,KAAKkB,GAOtB,QAASG,GAAWG,GAChB,GAAIC,GAAWC,IAAcC,GACzBvD,EAAS,KACTwD,GAAiBC,MAAM,QAASC,IAAI,UAUxC,IARIL,IAAatG,EAAqB4G,WAAaN,IAAatG,EAAqB6G,YACjF5D,EAAS6D,GACTL,EAAcM,KAAO,WACdT,IAAatG,EAAqBgH,UAAYV,IAAatG,EAAqBiH,cACvFhE,EAASiE,GACTT,EAAcU,KAAO,WAGrBC,IAA4B,mBAATC,OAA0C,YAAhB,mBAAOA,MAAP,YAAAtJ,EAAOsJ,QAAqBA,KAAKC,eAAkB,CAChG,GAAIC,GAAIF,KAAKC,eAAeF,GAAQX,EAEpC,OAAOc,GAAEtE,OAAOoD,GAGpB,MAAOpD,GAAOoD,GASlB,QAASmB,GAAmBC,GAA2B,GAAnBC,GAAmBC,UAAAvI,OAAA,GAAAP,SAAA8I,UAAA,GAAAA,UAAA,GAAbC,EACtC,OAAOF,GAAMG,IAAI,SAACC,GAAD,MAAeL,GAAOM,OAAO,SAAAC,GAAA,GAAE3D,GAAF2D,EAAE3D,IAAF,OAAYA,KAASyD,IAAW,KAQlF,QAASG,GAAaR,GAClB,MAAOA,GACFI,IAAI,SAAAK,GAAA,MAAKA,KACTC,KAAK,SAACC,EAAGC,GACN,MAAID,GAAE/D,KAAOgE,EAAEhE,KAAa,EACxB+D,EAAE/D,OAASgE,EAAEhE,KAAa,GACvB,IAqBnB,QAASS,GAASD,EAAMnE,EAAO4H,GAC3BA,EAAOA,GAAQ,EAEfzD,EAAKtE,KAAK,WACN,GAAIgI,GACAC,EACAC,EACAC,EACAC,EACAjF,EACAkF,EACAC,CAiBJ,KAfAhE,EAAOhF,EAAY6B,OAAOvE,MAE1BoL,EAAQ1D,EAAKA,OAAOiE,MAAM,OAAOC,UACjCN,KACAC,EAAa,EACbC,EAAa,IACbjF,EAAImB,EAAKpD,KAAK,KACdmH,EAAKI,WAAWnE,EAAKpD,KAAK,OAC1BoH,EAAQhE,EACHA,KAAK,MACLtD,OAAO,SACPE,KAAK,IAAK6G,GACV7G,KAAK,IAAKiC,GACVjC,KAAK,KAAMmH,EAAK,MAEbJ,EAAOD,EAAMU,OACjBR,EAAKvJ,KAAKsJ,GACVK,EAAMhE,KAAK4D,EAAKS,KAAK,MAEjBL,EAAM5D,OAAOkE,wBAA0BzI,IACvC+H,EAAKQ,MACLJ,EAAMhE,KAAK4D,EAAKS,KAAK,MAEjBR,EAAaU,EAAiB,IAC9BX,GAAQD,GACRK,EAAQhE,EAAKtD,OAAO,SACfE,KAAK,IAAK6G,GACV7G,KAAK,IAAKiC,GACVjC,KAAK,OAAQiH,EAAaC,EAAaC,EAAK,MAC5C/D,KAAK2D,OAY9B,QAASa,GAAc/D,GACnB,GAAImC,GAASnC,EAAUgE,GAGnB1B,IAAYxI,OACZqI,EAASD,EAAmBC,GACrBA,EAAOrI,QAAUqI,EAAO,GAAGpD,OAClCoD,EAASQ,EAAaR,IAG1B3F,IACAgE,EAAYR,GACZtB,IACAyD,EAAO8B,QAAQpF,GAWnB,QAASqF,GAAclE,EAAWC,EAAWC,GACzC6D,EAAc/D,GACdD,EAAsBC,EAAWC,EAAWC,GAvehD,GAAI7E,IACIK,IAAK,EACLH,MAAO,EACPI,OAAQ,EACRL,KAAM,GAEVF,EAAQ,IACRK,EAAS,GAETiF,EAAQ,gBACRC,GAAwB,EACxBjD,EAAc,KAGdb,SACAsB,GACIC,GAAG,GACH+F,EAAG,GAEP1E,EAAwB,IACxB7C,SACAU,SACAb,SACAW,SACAN,EAAe,IACfC,EAAgB,GAChBC,EAAsB,EACtB4B,EAAU,EACVD,EAAU,GACVe,SACAoE,EAAiB,EAGjBxD,EAAqB,IACrBC,EAAOlG,EAAO+J,cAEdvE,EAAgB,EAEhBC,SACA5C,EAAgB,UAChBC,EAAoB,UACpBE,GAAiB,UACjBE,GAAgB,UAChB+B,GAAmB,UAEnBwB,GAAY,OACZxC,GAAa,QACbU,GAAY,OACZgF,GAAa,SAEb9C,GAAsBxG,EAAqB4G,UAC3CL,GAAa,KACbqB,MAGAd,GAAqBhH,EAAa6J,WAAW,aAC7CzC,GAAqBpH,EAAa6J,WAAW,gBAC7CvC,UAEA3G,UAAYK,UACZI,UACAI,SA+mBJ,OA1LAvE,GAAQiD,qBAAuBA,EAQ/BjD,EAAQqJ,UAAY,SAASwD,GACzB,MAAKjC,WAAUvI,QAGfgH,GAAYwD,EAELzM,MAJIiJ,IAYfrJ,EAAQwJ,WAAa,SAASqD,GAC1B,MAAKjC,WAAUvI,QAGfmH,GAAaqD,EAENzM,MAJEoJ,IAAcC,IAY3BzJ,EAAQ8E,KAAO,WAGX,MAFAP,IAAIiB,MAAM,UAAW,QAEdpF,MAQXJ,EAAQqK,OAAS,SAASwC,GACtB,MAAKjC,WAAUvI,QAGfgI,GAASwC,EAEFzM,MAJEiK,IAabrK,EAAQuH,UAAY,SAASsF,GACzB,MAAKjC,WAAUvI,QAGfkF,GAAYsF,EAELzM,MAJImH,IAYfvH,EAAQ8M,KAAO,WAGX,MAFAvI,IAAIiB,MAAM,UAAW,SAEdpF,MASXJ,EAAQ6K,YAAc,SAASgC,GAC3B,MAAKjC,WAAUvI,QAGfwI,GAAcgC,EAEPzM,MAJIyK,IAaf7K,EAAQiJ,MAAQ,SAAS4D,GACrB,MAAKjC,WAAUvI,QAGf4G,EAAQ4D,EAEDzM,MAJI6I,GAafjJ,EAAQuM,WAAa,SAASM,GAC1B,MAAKjC,WAAUvI,QAGfkK,GAAaM,EAENzM,MAJImM,IAefvM,EAAQ+M,OAAS,SAASxE,EAAWyE,EAAcxE,GAA6B,GAAlBC,GAAkBmC,UAAAvI,OAAA,GAAAP,SAAA8I,UAAA,GAAAA,UAAA,GAAN,IAItE,OAHAvC,GAAW2E,EACXP,EAAclE,EAAWC,EAAWC,GAE7BrI,MASXJ,EAAQiG,YAAc,SAAS4G,GAC3B,MAAKjC,WAAUvI,QAGf4D,EAAc4G,EAEPzM,MAJI6F,GAafjG,EAAQ6G,WAAa,SAASgG,GAC1B,MAAKjC,WAAUvI,QAGfwE,GAAagG,EAENzM,MAJIyG,IAaf7G,EAAQkJ,sBAAwB,SAAS2D,GACrC,MAAKjC,WAAUvI,QAGf6G,EAAwB2D,EAEjBzM,MAJI8I,GAMRlJ,IAzuBfW,KAAAX,EAAAM,EAAAN,EAAAC,KAAA6B,SAAAf,IAAAd,EAAAD,QAAAe,KF0uBO,CAED,SAAUd,EAAQD,EAASM,IG3uBjC,SAAA2M,EAAAlN,GACAA,EAAAC,IAGCI,KAAA,SAAAJ,GAA4B,YAE7B,SAAAkN,GAAAC,GACA,OAAAA,EAGA,QAAAC,GAAAD,GACA,MAAAA,KAGA,QAAAE,GAAAF,GACA,MAAAA,IAAA,EAAAA,GAGA,QAAAG,GAAAH,GACA,QAAAA,GAAA,MAAAA,SAAA,EAAAA,GAAA,KAGA,QAAAI,GAAAJ,GACA,MAAAA,OAGA,QAAAK,GAAAL,GACA,QAAAA,MAAA,EAGA,QAAAM,GAAAN,GACA,QAAAA,GAAA,MAAAA,UAAA,GAAAA,IAAA,KA4CA,QAAAO,GAAAP,GACA,SAAAQ,KAAAC,IAAAT,EAAAU,GAGA,QAAAC,GAAAX,GACA,MAAAQ,MAAAI,IAAAZ,EAAAU,GAGA,QAAAG,GAAAb,GACA,SAAAQ,KAAAC,IAAAK,EAAAd,IAAA,EAGA,QAAAe,GAAAf,GACA,MAAAQ,MAAAQ,IAAA,KAAAhB,EAAA,IAGA,QAAAiB,GAAAjB,GACA,SAAAQ,KAAAQ,IAAA,MAAAhB,GAGA,QAAAkB,GAAAlB,GACA,QAAAA,GAAA,MAAAQ,KAAAQ,IAAA,KAAAhB,EAAA,MAAAQ,KAAAQ,IAAA,QAAAhB,IAAA,EAGA,QAAAmB,GAAAnB,GACA,SAAAQ,KAAAY,KAAA,EAAApB,KAGA,QAAAqB,GAAArB,GACA,MAAAQ,MAAAY,KAAA,KAAApB,KAGA,QAAAsB,GAAAtB,GACA,QAAAA,GAAA,QAAAQ,KAAAY,KAAA,EAAApB,KAAAQ,KAAAY,KAAA,GAAApB,GAAA,GAAAA,GAAA,KAcA,QAAAuB,GAAAvB,GACA,SAAAwB,EAAA,EAAAxB,GAGA,QAAAwB,GAAAxB,GACA,OAAAA,MAAAyB,EAAAC,EAAA1B,MAAA2B,EAAAD,GAAA1B,GAAA4B,GAAA5B,EAAA6B,EAAA7B,EAAA8B,EAAAJ,GAAA1B,GAAA+B,GAAA/B,EAAAgC,EAAAN,GAAA1B,GAAAiC,GAAAjC,EAAAkC,EAGA,QAAAC,GAAAnC,GACA,QAAAA,GAAA,QAAAwB,EAAA,EAAAxB,GAAAwB,EAAAxB,EAAA,QAjGA,GAAAoC,GAAA,EAEAC,EAAA,QAAAC,GAAAC,GAGA,QAAAF,GAAArC,GACA,MAAAQ,MAAAQ,IAAAhB,EAAAuC,GAKA,MARAA,MAMAF,EAAAD,SAAAE,EAEAD,GACCD,GAEDI,EAAA,QAAAF,GAAAC,GAGA,QAAAC,GAAAxC,GACA,SAAAQ,KAAAQ,IAAA,EAAAhB,EAAAuC,GAKA,MARAA,MAMAC,EAAAJ,SAAAE,EAEAE,GACCJ,GAEDK,EAAA,QAAAH,GAAAC,GAGA,QAAAE,GAAAzC,GACA,QAAAA,GAAA,MAAAQ,KAAAQ,IAAAhB,EAAAuC,GAAA,EAAA/B,KAAAQ,IAAA,EAAAhB,EAAAuC,IAAA,EAKA,MARAA,MAMAE,EAAAL,SAAAE,EAEAG,GACCL,GAEDtB,EAAAN,KAAAkC,GACAhC,EAAAI,EAAA,EAsCAW,EAAA,KACAG,EAAA,KACAD,EAAA,KACAE,EAAA,IACAE,EAAA,KACAD,EAAA,MACAE,EAAA,MACAC,EAAA,MACAC,EAAA,MACAR,EAAA,EAAAD,IAcAkB,EAAA,QAEAC,EAAA,QAAAN,GAAAO,GAGA,QAAAD,GAAA5C,GACA,MAAAA,OAAA6C,EAAA,GAAA7C,EAAA6C,GAKA,MARAA,MAMAD,EAAAD,UAAAL,EAEAM,GACCD,GAEDG,EAAA,QAAAR,GAAAO,GAGA,QAAAC,GAAA9C,GACA,QAAAA,MAAA6C,EAAA,GAAA7C,EAAA6C,GAAA,EAKA,MARAA,MAMAC,EAAAH,UAAAL,EAEAQ,GACCH,GAEDI,EAAA,QAAAT,GAAAO,GAGA,QAAAE,GAAA/C,GACA,QAAAA,GAAA,KAAAA,MAAA6C,EAAA,GAAA7C,EAAA6C,IAAA7C,GAAA,GAAAA,IAAA6C,EAAA,GAAA7C,EAAA6C,GAAA,KAKA,MARAA,MAMAE,EAAAJ,UAAAL,EAEAS,GACCJ,GAEDK,EAAA,EAAAxC,KAAAkC,GACAO,EAAA,EACAC,EAAA,GAEAC,EAAA,QAAAb,GAAApE,EAAAvK,GAGA,QAAAwP,GAAAnD,GACA,MAAA9B,GAAAsC,KAAAQ,IAAA,OAAAhB,GAAAQ,KAAAI,KAAAiC,EAAA7C,GAAArM,GAHA,GAAAkP,GAAArC,KAAA4C,KAAA,GAAAlF,EAAAsC,KAAA6C,IAAA,EAAAnF,MAAAvK,GAAAqP,EASA,OAHAG,GAAAF,UAAA,SAAA/E,GAAqC,MAAAoE,GAAApE,EAAAvK,EAAAqP,IACrCG,EAAAD,OAAA,SAAAvP,GAAkC,MAAA2O,GAAApE,EAAAvK,IAElCwP,GACCF,EAAAC,GAEDI,EAAA,QAAAhB,GAAApE,EAAAvK,GAGA,QAAA2P,GAAAtD,GACA,SAAA9B,EAAAsC,KAAAQ,IAAA,OAAAhB,OAAAQ,KAAAI,KAAAZ,EAAA6C,GAAAlP,GAHA,GAAAkP,GAAArC,KAAA4C,KAAA,GAAAlF,EAAAsC,KAAA6C,IAAA,EAAAnF,MAAAvK,GAAAqP,EASA,OAHAM,GAAAL,UAAA,SAAA/E,GAAsC,MAAAoE,GAAApE,EAAAvK,EAAAqP,IACtCM,EAAAJ,OAAA,SAAAvP,GAAmC,MAAA2O,GAAApE,EAAAvK,IAEnC2P,GACCL,EAAAC,GAEDK,EAAA,QAAAjB,GAAApE,EAAAvK,GAGA,QAAA4P,GAAAvD,GACA,QAAAA,EAAA,EAAAA,EAAA,KACA9B,EAAAsC,KAAAQ,IAAA,KAAAhB,GAAAQ,KAAAI,KAAAiC,EAAA7C,GAAArM,GACA,EAAAuK,EAAAsC,KAAAQ,IAAA,MAAAhB,GAAAQ,KAAAI,KAAAiC,EAAA7C,GAAArM,IAAA,EALA,GAAAkP,GAAArC,KAAA4C,KAAA,GAAAlF,EAAAsC,KAAA6C,IAAA,EAAAnF,MAAAvK,GAAAqP,EAWA,OAHAO,GAAAN,UAAA,SAAA/E,GAAwC,MAAAoE,GAAApE,EAAAvK,EAAAqP,IACxCO,EAAAL,OAAA,SAAAvP,GAAqC,MAAA2O,GAAApE,EAAAvK,IAErC4P,GACCN,EAAAC,EAEDrQ,GAAA2Q,WAAAzD,EACAlN,EAAA4Q,SAAAtD,EACAtN,EAAA6Q,WAAAzD,EACApN,EAAA8Q,YAAAzD,EACArN,EAAA2M,cAAAW,EACAtN,EAAA+Q,UAAAtD,EACAzN,EAAAgR,YAAAzD,EACAvN,EAAAiR,aAAAzD,EACAxN,EAAAkR,eAAAzD,EACAzN,EAAAmR,SAAAvB,EACA5P,EAAAoR,WAAA5B,EACAxP,EAAAqR,YAAA1B,EACA3P,EAAAsR,cAAA1B,EACA5P,EAAAuR,QAAAvD,EACAhO,EAAAwR,UAAA9D,EACA1N,EAAAyR,WAAA3D,EACA9N,EAAA0R,aAAA1D,EACAhO,EAAA2R,QAAAtD,EACArO,EAAA4R,UAAA1D,EACAlO,EAAA6R,WAAAzD,EACApO,EAAA8R,aAAAzD,EACArO,EAAA+R,WAAAtD,EACAzO,EAAAgS,aAAA1D,EACAtO,EAAAiS,cAAAzD,EACAxO,EAAAkS,gBAAAzD,EACAzO,EAAAmS,WAAAxD,EACA3O,EAAAoS,aAAA1D,EACA1O,EAAAqS,cAAA1D,EACA3O,EAAAsS,gBAAAhD,EACAtP,EAAAuS,SAAArC,EACAlQ,EAAAwS,WAAAzC,EACA/P,EAAAyS,YAAAxC,EACAjQ,EAAA0S,cAAAxC,EACAlQ,EAAA2S,YAAAlC,EACAzQ,EAAA4S,cAAAtC,EACAtQ,EAAA6S,eAAApC,EACAzQ,EAAA8S,iBAAApC,EAEAjO,OAAAsQ,eAAA/S,EAAA,cAA8CoC,OAAA,OHovBvC,CAED,SAAUnC,EAAQD,EAASM,IIr/BjC,SAAA2M,EAAAlN,GACAA,EAAAC,IAGCI,KAAA,SAAAJ,GAA4B,YAO7B,SAAAgT,GAAAC,EAAAC,GACA,GAAA7R,GAAAoB,OAAA0Q,OAAAF,EAAA5R,UACA,QAAA+R,KAAAF,GAAA7R,EAAA+R,GAAAF,EAAAE,EACA,OAAA/R,GAGA,QAAAgS,MAiLA,QAAAC,GAAApN,GACA,GAAAtF,EAEA,OADAsF,MAAA,IAAAqN,OAAAC,eACA5S,EAAA6S,EAAAC,KAAAxN,KAAAtF,EAAA+S,SAAA/S,EAAA,UAAAgT,GAAAhT,GAAA,KAAAA,GAAA,MAAAA,GAAA,SAAAA,GAAA,GAAAA,IAAA,KAAAA,EAAA,KACAA,EAAAiT,EAAAH,KAAAxN,IAAA4N,EAAAH,SAAA/S,EAAA,SACAA,EAAAmT,EAAAL,KAAAxN,IAAA,GAAA0N,GAAAhT,EAAA,GAAAA,EAAA,GAAAA,EAAA,OACAA,EAAAoT,EAAAN,KAAAxN,IAAA,GAAA0N,GAAA,IAAAhT,EAAA,WAAAA,EAAA,WAAAA,EAAA,WACAA,EAAAqT,EAAAP,KAAAxN,IAAAgO,EAAAtT,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,KACAA,EAAAuT,EAAAT,KAAAxN,IAAAgO,EAAA,IAAAtT,EAAA,WAAAA,EAAA,WAAAA,EAAA,OAAAA,EAAA,KACAA,EAAAwT,EAAAV,KAAAxN,IAAAmO,EAAAzT,EAAA,GAAAA,EAAA,OAAAA,EAAA,WACAA,EAAA0T,EAAAZ,KAAAxN,IAAAmO,EAAAzT,EAAA,GAAAA,EAAA,OAAAA,EAAA,OAAAA,EAAA,IACA2T,EAAAC,eAAAtO,GAAA4N,EAAAS,EAAArO,IACA,gBAAAA,EAAA,GAAA0N,GAAAa,YAAA,GACA,KAGA,QAAAX,GAAAY,GACA,UAAAd,GAAAc,GAAA,OAAAA,GAAA,UAAAA,EAAA,GAGA,QAAAR,GAAAS,EAAAC,EAAAtJ,EAAAD,GAEA,MADAA,IAAA,IAAAsJ,EAAAC,EAAAtJ,EAAAmJ,KACA,GAAAb,GAAAe,EAAAC,EAAAtJ,EAAAD,GAGA,QAAAwJ,GAAAC,GAEA,MADAA,aAAAzB,KAAAyB,EAAAxB,EAAAwB,IACAA,GACAA,IAAAC,MACA,GAAAnB,GAAAkB,EAAAH,EAAAG,EAAAF,EAAAE,EAAAxJ,EAAAwJ,EAAAE,UAFA,GAAApB,GAKA,QAAAmB,GAAAJ,EAAAC,EAAAtJ,EAAA0J,GACA,WAAApK,UAAAvI,OAAAwS,EAAAF,GAAA,GAAAf,GAAAe,EAAAC,EAAAtJ,EAAA,MAAA0J,EAAA,EAAAA,GAGA,QAAApB,GAAAe,EAAAC,EAAAtJ,EAAA0J,GACA5U,KAAAuU,KACAvU,KAAAwU,KACAxU,KAAAkL,KACAlL,KAAA4U,WA+BA,QAAAX,GAAAY,EAAAjF,EAAAkF,EAAA7J,GAIA,MAHAA,IAAA,EAAA4J,EAAAjF,EAAAkF,EAAAT,IACAS,GAAA,GAAAA,GAAA,EAAAD,EAAAjF,EAAAyE,IACAzE,GAAA,IAAAiF,EAAAR,KACA,GAAAU,GAAAF,EAAAjF,EAAAkF,EAAA7J,GAGA,QAAA+J,GAAAN,GACA,GAAAA,YAAAK,GAAA,UAAAA,GAAAL,EAAAG,EAAAH,EAAA9E,EAAA8E,EAAAI,EAAAJ,EAAAE,QAEA,IADAF,YAAAzB,KAAAyB,EAAAxB,EAAAwB,KACAA,EAAA,UAAAK,EACA,IAAAL,YAAAK,GAAA,MAAAL,EACAA,KAAAC,KACA,IAAAJ,GAAAG,EAAAH,EAAA,IACAC,EAAAE,EAAAF,EAAA,IACAtJ,EAAAwJ,EAAAxJ,EAAA,IACA+J,EAAA1H,KAAA0H,IAAAV,EAAAC,EAAAtJ,GACAkF,EAAA7C,KAAA6C,IAAAmE,EAAAC,EAAAtJ,GACA2J,EAAAR,IACAzE,EAAAQ,EAAA6E,EACAH,GAAA1E,EAAA6E,GAAA,CAUA,OATArF,IACAiF,EAAAN,IAAAnE,GAAAoE,EAAAtJ,GAAA0E,EAAA,GAAA4E,EAAAtJ,GACAsJ,IAAApE,GAAAlF,EAAAqJ,GAAA3E,EAAA,GACA2E,EAAAC,GAAA5E,EAAA,EACAA,GAAAkF,EAAA,GAAA1E,EAAA6E,EAAA,EAAA7E,EAAA6E,EACAJ,GAAA,IAEAjF,EAAAkF,EAAA,GAAAA,EAAA,IAAAD,EAEA,GAAAE,GAAAF,EAAAjF,EAAAkF,EAAAJ,EAAAE,SAGA,QAAAM,GAAAL,EAAAjF,EAAAkF,EAAAF,GACA,WAAApK,UAAAvI,OAAA+S,EAAAH,GAAA,GAAAE,GAAAF,EAAAjF,EAAAkF,EAAA,MAAAF,EAAA,EAAAA,GAGA,QAAAG,GAAAF,EAAAjF,EAAAkF,EAAAF,GACA5U,KAAA6U,KACA7U,KAAA4P,KACA5P,KAAA8U,KACA9U,KAAA4U,WAiCA,QAAAO,GAAAN,EAAAO,EAAAC,GACA,MAGA,MAHAR,EAAA,GAAAO,GAAAC,EAAAD,GAAAP,EAAA,GACAA,EAAA,IAAAQ,EACAR,EAAA,IAAAO,GAAAC,EAAAD,IAAA,IAAAP,GAAA,GACAO,GAeA,QAAAE,GAAAZ,GACA,GAAAA,YAAAa,GAAA,UAAAA,GAAAb,EAAAI,EAAAJ,EAAAzJ,EAAAyJ,EAAAxJ,EAAAwJ,EAAAE,QACA,IAAAF,YAAAc,GAAA,CACA,GAAAX,GAAAH,EAAAG,EAAAY,CACA,WAAAF,GAAAb,EAAAI,EAAAvH,KAAAC,IAAAqH,GAAAH,EAAAjU,EAAA8M,KAAAI,IAAAkH,GAAAH,EAAAjU,EAAAiU,EAAAE,SAEAF,YAAAlB,KAAAkB,EAAAD,EAAAC,GACA,IAAAxJ,GAAAwK,EAAAhB,EAAAH,GACAtJ,EAAAyK,EAAAhB,EAAAF,GACAM,EAAAY,EAAAhB,EAAAxJ,GACAoB,EAAAqJ,GAAA,SAAAzK,EAAA,SAAAD,EAAA,SAAA6J,GAAAc,GACArP,EAAAoP,GAAA,SAAAzK,EAAA,SAAAD,EAAA,QAAA6J,GAAAe,GACAC,EAAAH,GAAA,SAAAzK,EAAA,QAAAD,EAAA,SAAA6J,GAAAiB,EACA,WAAAR,GAAA,IAAAhP,EAAA,QAAA+F,EAAA/F,GAAA,KAAAA,EAAAuP,GAAApB,EAAAE,SAGA,QAAAoB,GAAAlB,EAAA7J,EAAAC,EAAA0J,GACA,WAAApK,UAAAvI,OAAAqT,EAAAR,GAAA,GAAAS,GAAAT,EAAA7J,EAAAC,EAAA,MAAA0J,EAAA,EAAAA,GAGA,QAAAW,GAAAT,EAAA7J,EAAAC,EAAA0J,GACA5U,KAAA8U,KACA9U,KAAAiL,KACAjL,KAAAkL,KACAlL,KAAA4U,WA0BA,QAAAe,GAAA5I,GACA,MAAAA,GAAAkJ,EAAA1I,KAAAQ,IAAAhB,EAAA,KAAAA,EAAAmJ,EAAAC,EAGA,QAAAC,GAAArJ,GACA,MAAAA,GAAAsJ,EAAAtJ,MAAAmJ,GAAAnJ,EAAAoJ,GAGA,QAAAG,GAAAhK,GACA,YAAAA,GAAA,eAAAA,EAAA,MAAAiB,KAAAQ,IAAAzB,EAAA,aAGA,QAAAoJ,GAAApJ,GACA,OAAAA,GAAA,aAAAA,EAAA,MAAAiB,KAAAQ,KAAAzB,EAAA,iBAGA,QAAAiK,GAAA7B,GACA,GAAAA,YAAAc,GAAA,UAAAA,GAAAd,EAAAG,EAAAH,EAAAjU,EAAAiU,EAAAI,EAAAJ,EAAAE,QACAF,aAAAa,KAAAb,EAAAY,EAAAZ,GACA,IAAAG,GAAAtH,KAAAiJ,MAAA9B,EAAAxJ,EAAAwJ,EAAAzJ,GAAAwL,CACA,WAAAjB,GAAAX,EAAA,EAAAA,EAAA,IAAAA,EAAAtH,KAAAY,KAAAuG,EAAAzJ,EAAAyJ,EAAAzJ,EAAAyJ,EAAAxJ,EAAAwJ,EAAAxJ,GAAAwJ,EAAAI,EAAAJ,EAAAE,SAGA,QAAA8B,GAAA7B,EAAApU,EAAAqU,EAAAF,GACA,WAAApK,UAAAvI,OAAAsU,EAAA1B,GAAA,GAAAW,GAAAX,EAAApU,EAAAqU,EAAA,MAAAF,EAAA,EAAAA,GAGA,QAAAY,GAAAX,EAAApU,EAAAqU,EAAAF,GACA5U,KAAA6U,KACA7U,KAAAS,KACAT,KAAA8U,KACA9U,KAAA4U,WAwBA,QAAA+B,GAAAjC,GACA,GAAAA,YAAAkC,GAAA,UAAAA,GAAAlC,EAAAG,EAAAH,EAAA9E,EAAA8E,EAAAI,EAAAJ,EAAAE,QACAF,aAAAlB,KAAAkB,EAAAD,EAAAC,GACA,IAAAH,GAAAG,EAAAH,EAAA,IACAC,EAAAE,EAAAF,EAAA,IACAtJ,EAAAwJ,EAAAxJ,EAAA,IACA4J,GAAA+B,GAAA3L,EAAA4L,GAAAvC,EAAAwC,GAAAvC,IAAAqC,GAAAC,GAAAC,IACAC,EAAA9L,EAAA4J,EACAmC,GAAAC,IAAA1C,EAAAM,GAAAqC,GAAAH,GAAAI,GACAxH,EAAArC,KAAAY,KAAA8I,IAAAD,MAAAE,GAAApC,GAAA,EAAAA,IACAD,EAAAjF,EAAArC,KAAAiJ,MAAAS,EAAAD,GAAAP,EAAA,IAAApC,GACA,WAAAuC,GAAA/B,EAAA,EAAAA,EAAA,IAAAA,EAAAjF,EAAAkF,EAAAJ,EAAAE,SAGA,QAAAyC,GAAAxC,EAAAjF,EAAAkF,EAAAF,GACA,WAAApK,UAAAvI,OAAA0U,EAAA9B,GAAA,GAAA+B,GAAA/B,EAAAjF,EAAAkF,EAAA,MAAAF,EAAA,EAAAA,GAGA,QAAAgC,GAAA/B,EAAAjF,EAAAkF,EAAAF,GACA5U,KAAA6U,KACA7U,KAAA4P,KACA5P,KAAA8U,KACA9U,KAAA4U,WA/dA,GAAA9U,GAAA,SAAAkB,EAAArB,EAAAsB,GACAD,EAAAC,UAAAtB,EAAAsB,YACAA,EAAAD,eAWAsW,EAAA,GACAC,EAAA,EAAAD,EAEAE,EAAA,sBACAC,EAAA,gDACAC,EAAA,iDACArE,EAAA,mBACAI,EAAA,mBACAE,EAAA,GAAAgE,QAAA,WAAAH,OAAA,QACA5D,EAAA,GAAA+D,QAAA,WAAAD,OAAA,QACA7D,EAAA,GAAA8D,QAAA,YAAAH,MAAAC,GAAA,QACA1D,EAAA,GAAA4D,QAAA,YAAAD,MAAAD,GAAA,QACAzD,EAAA,GAAA2D,QAAA,WAAAF,EAAAC,KAAA,QACAxD,EAAA,GAAAyD,QAAA,YAAAF,EAAAC,IAAAD,GAAA,QAEAtD,GACAyD,UAAA,SACAC,aAAA,SACAC,KAAA,MACAC,WAAA,QACAC,MAAA,SACAC,MAAA,SACAC,OAAA,SACAC,MAAA,EACAC,eAAA,SACAC,KAAA,IACAC,WAAA,QACAC,MAAA,SACAC,UAAA,SACAC,UAAA,QACAC,WAAA,QACAC,UAAA,SACAC,MAAA,SACAC,eAAA,QACAC,SAAA,SACAC,QAAA,SACAC,KAAA,MACAC,SAAA,IACAC,SAAA,MACAC,cAAA,SACAC,SAAA,SACAC,UAAA,MACAC,SAAA,SACAC,UAAA,SACAC,YAAA,QACAC,eAAA,QACAC,WAAA,SACAC,WAAA,SACAC,QAAA,QACAC,WAAA,SACAC,aAAA,QACAC,cAAA,QACAC,cAAA,QACAC,cAAA,QACAC,cAAA,MACAC,WAAA,QACAC,SAAA,SACAC,YAAA,MACAC,QAAA,QACAC,QAAA,QACAC,WAAA,QACAC,UAAA,SACAC,YAAA,SACAC,YAAA,QACAC,QAAA,SACAC,UAAA,SACAC,WAAA,SACAC,KAAA,SACAC,UAAA,SACAC,KAAA,QACAC,MAAA,MACAC,YAAA,SACAC,KAAA,QACAC,SAAA,SACAC,QAAA,SACAC,UAAA,SACAC,OAAA,QACAC,MAAA,SACAC,MAAA,SACAC,SAAA,SACAC,cAAA,SACAC,UAAA,QACAC,aAAA,SACAC,UAAA,SACAC,WAAA,SACAC,UAAA,SACAC,qBAAA,SACAC,UAAA,SACAC,WAAA,QACAC,UAAA,SACAC,UAAA,SACAC,YAAA,SACAC,cAAA,QACAC,aAAA,QACAC,eAAA,QACAC,eAAA,QACAC,eAAA,SACAC,YAAA,SACAC,KAAA,MACAC,UAAA,QACAC,MAAA,SACAC,QAAA,SACAC,OAAA,QACAC,iBAAA,QACAC,WAAA,IACAC,aAAA,SACAC,aAAA,QACAC,eAAA,QACAC,gBAAA,QACAC,kBAAA,MACAC,gBAAA,QACAC,gBAAA,SACAC,aAAA,QACAC,UAAA,SACAC,UAAA,SACAC,SAAA,SACAC,YAAA,SACAC,KAAA,IACAC,QAAA,SACAC,MAAA,QACAC,UAAA,QACAC,OAAA,SACAC,UAAA,SACAC,OAAA,SACAC,cAAA,SACAC,UAAA,SACAC,cAAA,SACAC,cAAA,SACAC,WAAA,SACAC,UAAA,SACAC,KAAA,SACAC,KAAA,SACAC,KAAA,SACAC,WAAA,SACAC,OAAA,QACAC,cAAA,QACAC,IAAA,SACAC,UAAA,SACAC,UAAA,QACAC,YAAA,QACAC,OAAA,SACAC,WAAA,SACAC,SAAA,QACAC,SAAA,SACAC,OAAA,SACAC,OAAA,SACAC,QAAA,QACAC,UAAA,QACAC,UAAA,QACAC,UAAA,QACAC,KAAA,SACAC,YAAA,MACAC,UAAA,QACAC,IAAA,SACAC,KAAA,MACAC,QAAA,SACAC,OAAA,SACAC,UAAA,QACAC,OAAA,SACAC,MAAA,SACAC,MAAA,SACAC,WAAA,SACAC,OAAA,SACAC,YAAA,SAGAjhB,GAAAmT,EAAAC,GACA8N,YAAA,WACA,MAAAhhB,MAAA2U,MAAAqM,eAEApa,SAAA,WACA,MAAA5G,MAAA2U,MAAA,MA+CA7U,EAAA0T,EAAAmB,EAAA/B,EAAAK,GACAsE,SAAA,SAAAN,GAEA,MADAA,GAAA,MAAAA,EAAAM,EAAAhK,KAAAQ,IAAAwJ,EAAAN,GACA,GAAAzD,GAAAxT,KAAAuU,EAAA0C,EAAAjX,KAAAwU,EAAAyC,EAAAjX,KAAAkL,EAAA+L,EAAAjX,KAAA4U,UAEA0C,OAAA,SAAAL,GAEA,MADAA,GAAA,MAAAA,EAAAK,EAAA/J,KAAAQ,IAAAuJ,EAAAL,GACA,GAAAzD,GAAAxT,KAAAuU,EAAA0C,EAAAjX,KAAAwU,EAAAyC,EAAAjX,KAAAkL,EAAA+L,EAAAjX,KAAA4U,UAEAD,IAAA,WACA,MAAA3U,OAEAghB,YAAA,WACA,UAAAhhB,KAAAuU,GAAAvU,KAAAuU,GAAA,KACA,GAAAvU,KAAAwU,GAAAxU,KAAAwU,GAAA,KACA,GAAAxU,KAAAkL,GAAAlL,KAAAkL,GAAA,KACA,GAAAlL,KAAA4U,SAAA5U,KAAA4U,SAAA,GAEAhO,SAAA,WACA,GAAAqE,GAAAjL,KAAA4U,OACA,OADyB3J,GAAAgW,MAAAhW,GAAA,EAAAsC,KAAA6C,IAAA,EAAA7C,KAAA0H,IAAA,EAAAhK,KACzB,IAAAA,EAAA,gBACAsC,KAAA6C,IAAA,EAAA7C,KAAA0H,IAAA,IAAA1H,KAAA2T,MAAAlhB,KAAAuU,IAAA,SACAhH,KAAA6C,IAAA,EAAA7C,KAAA0H,IAAA,IAAA1H,KAAA2T,MAAAlhB,KAAAwU,IAAA,SACAjH,KAAA6C,IAAA,EAAA7C,KAAA0H,IAAA,IAAA1H,KAAA2T,MAAAlhB,KAAAkL,IAAA,KACA,IAAAD,EAAA,SAAAA,EAAA,SAgDAnL,EAAAiV,EAAAG,EAAAtC,EAAAK,GACAsE,SAAA,SAAAN,GAEA,MADAA,GAAA,MAAAA,EAAAM,EAAAhK,KAAAQ,IAAAwJ,EAAAN,GACA,GAAAlC,GAAA/U,KAAA6U,EAAA7U,KAAA4P,EAAA5P,KAAA8U,EAAAmC,EAAAjX,KAAA4U,UAEA0C,OAAA,SAAAL,GAEA,MADAA,GAAA,MAAAA,EAAAK,EAAA/J,KAAAQ,IAAAuJ,EAAAL,GACA,GAAAlC,GAAA/U,KAAA6U,EAAA7U,KAAA4P,EAAA5P,KAAA8U,EAAAmC,EAAAjX,KAAA4U,UAEAD,IAAA,WACA,GAAAE,GAAA7U,KAAA6U,EAAA,SAAA7U,KAAA6U,EAAA,GACAjF,EAAAqR,MAAApM,IAAAoM,MAAAjhB,KAAA4P,GAAA,EAAA5P,KAAA4P,EACAkF,EAAA9U,KAAA8U,EACAO,EAAAP,KAAA,GAAAA,EAAA,EAAAA,GAAAlF,EACAwF,EAAA,EAAAN,EAAAO,CACA,WAAA7B,GACA2B,EAAAN,GAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAO,EAAAC,GACAF,EAAAN,EAAAO,EAAAC,GACAF,EAAAN,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAO,EAAAC,GACArV,KAAA4U,UAGAoM,YAAA,WACA,UAAAhhB,KAAA4P,GAAA5P,KAAA4P,GAAA,GAAAqR,MAAAjhB,KAAA4P,KACA,GAAA5P,KAAA8U,GAAA9U,KAAA8U,GAAA,GACA,GAAA9U,KAAA4U,SAAA5U,KAAA4U,SAAA,KAYA,IAAAa,GAAAlI,KAAAkC,GAAA,IACAgH,EAAA,IAAAlJ,KAAAkC,GAEA0R,EAAA,GACAvL,EAAA,OACAC,EAAA,EACAE,EAAA,QACAI,EAAA,KACAE,EAAA,KACAH,EAAA,EAAAG,IACAJ,EAAAI,KA6BAvW,GAAAyV,EAAAS,EAAApD,EAAAK,GACAsE,SAAA,SAAAN,GACA,UAAA1B,GAAAvV,KAAA8U,EAAAqM,GAAA,MAAAlK,EAAA,EAAAA,GAAAjX,KAAAiL,EAAAjL,KAAAkL,EAAAlL,KAAA4U,UAEA0C,OAAA,SAAAL,GACA,UAAA1B,GAAAvV,KAAA8U,EAAAqM,GAAA,MAAAlK,EAAA,EAAAA,GAAAjX,KAAAiL,EAAAjL,KAAAkL,EAAAlL,KAAA4U,UAEAD,IAAA,WACA,GAAApO,IAAAvG,KAAA8U,EAAA,QACAxI,EAAA2U,MAAAjhB,KAAAiL,GAAA1E,IAAAvG,KAAAiL,EAAA,IACA6K,EAAAmL,MAAAjhB,KAAAkL,GAAA3E,IAAAvG,KAAAkL,EAAA,GAIA,OAHA3E,GAAAsP,EAAAO,EAAA7P,GACA+F,EAAAsJ,EAAAQ,EAAA9J,GACAwJ,EAAAC,EAAAK,EAAAN,GACA,GAAAtC,GACA8C,EAAA,UAAAhK,EAAA,UAAA/F,EAAA,SAAAuP,GACAQ,GAAA,QAAAhK,EAAA,UAAA/F,EAAA,QAAAuP,GACAQ,EAAA,SAAAhK,EAAA,SAAA/F,EAAA,UAAAuP,GACA9V,KAAA4U,aAuCA9U,EAAA0V,EAAAkB,EAAA9D,EAAAK,GACAsE,SAAA,SAAAN,GACA,UAAAzB,GAAAxV,KAAA6U,EAAA7U,KAAAS,EAAAT,KAAA8U,EAAAqM,GAAA,MAAAlK,EAAA,EAAAA,GAAAjX,KAAA4U,UAEA0C,OAAA,SAAAL,GACA,UAAAzB,GAAAxV,KAAA6U,EAAA7U,KAAAS,EAAAT,KAAA8U,EAAAqM,GAAA,MAAAlK,EAAA,EAAAA,GAAAjX,KAAA4U,UAEAD,IAAA,WACA,MAAAW,GAAAtV,MAAA2U,SAIA,IAAAyM,IAAA,OACAC,EAAA,QACAlK,IAAA,OACAC,IAAA,OACAF,GAAA,QACAJ,GAAAI,GAAAE,GACAL,GAAAG,GAAAmK,EACAxK,GAAAwK,EAAAlK,GAAAC,GAAAgK,CA2BAthB,GAAA8W,EAAAS,EAAAzE,EAAAK,GACAsE,SAAA,SAAAN,GAEA,MADAA,GAAA,MAAAA,EAAAM,EAAAhK,KAAAQ,IAAAwJ,EAAAN,GACA,GAAAL,GAAA5W,KAAA6U,EAAA7U,KAAA4P,EAAA5P,KAAA8U,EAAAmC,EAAAjX,KAAA4U,UAEA0C,OAAA,SAAAL,GAEA,MADAA,GAAA,MAAAA,EAAAK,EAAA/J,KAAAQ,IAAAuJ,EAAAL,GACA,GAAAL,GAAA5W,KAAA6U,EAAA7U,KAAA4P,EAAA5P,KAAA8U,EAAAmC,EAAAjX,KAAA4U,UAEAD,IAAA,WACA,GAAAE,GAAAoM,MAAAjhB,KAAA6U,GAAA,GAAA7U,KAAA6U,EAAA,KAAAY,EACAX,GAAA9U,KAAA8U,EACA7J,EAAAgW,MAAAjhB,KAAA4P,GAAA,EAAA5P,KAAA4P,EAAAkF,GAAA,EAAAA,GACAwM,EAAA/T,KAAAC,IAAAqH,GACA0M,EAAAhU,KAAAI,IAAAkH,EACA,WAAArB,GACA,KAAAsB,EAAA7J,GAAAmW,EAAAE,EAAAD,EAAAE,IACA,KAAAzM,EAAA7J,GAAAkM,GAAAmK,EAAAlK,GAAAmK,IACA,KAAAzM,EAAA7J,GAAAiM,GAAAoK,IACAthB,KAAA4U,aAKAhV,EAAAsT,QACAtT,EAAA+U,MACA/U,EAAAsV,MACAtV,EAAAoW,MACApW,EAAA8W,MACA9W,EAAAyX,YAEAhV,OAAAsQ,eAAA/S,EAAA,cAA8CoC,OAAA,OJ+/BxC,SAAUnC,EAAQD,EAASM,IKtgDjC,SAAA2M,EAAAlN,GACAA,EAAAC,IAGCI,KAAA,SAAAJ,GAA4B,YAI7B,SAAA4hB,KACA,OAA8CzU,GAA9C1L,EAAA,EAAAiT,EAAA9J,UAAAvI,OAAAwf,KAAkDpgB,EAAAiT,IAAOjT,EAAA,CACzD,KAAA0L,EAAAvC,UAAAnJ,GAAA,KAAA0L,IAAA0U,GAAA,SAAAC,OAAA,iBAAA3U,EACA0U,GAAA1U,MAEA,UAAA4U,GAAAF,GAGA,QAAAE,GAAAF,GACAzhB,KAAAyhB,IAGA,QAAAG,GAAAC,EAAAC,GACA,MAAAD,GAAA1O,OAAAxH,MAAA,SAAAjB,IAAA,SAAAqC,GACA,GAAA7F,GAAA,GAAA7F,EAAA0L,EAAAgV,QAAA,IAEA,IADA1gB,GAAA,IAAA6F,EAAA6F,EAAAiV,MAAA3gB,EAAA,GAAA0L,IAAAiV,MAAA,EAAA3gB,IACA0L,IAAA+U,EAAA1N,eAAArH,GAAA,SAAA2U,OAAA,iBAAA3U,EACA,QAAYkV,KAAAlV,EAAA7F,UA6CZ,QAAAgb,GAAAD,EAAA/a,GACA,OAAAzG,GAAAY,EAAA,EAAAiT,EAAA2N,EAAAhgB,OAAqCZ,EAAAiT,IAAOjT,EAC5C,IAAAZ,EAAAwhB,EAAA5gB,IAAA6F,SACA,MAAAzG,GAAAuB,MAKA,QAAAmgB,GAAAF,EAAA/a,EAAAkb,GACA,OAAA/gB,GAAA,EAAAiT,EAAA2N,EAAAhgB,OAAkCZ,EAAAiT,IAAOjT,EACzC,GAAA4gB,EAAA5gB,GAAA6F,SAAA,CACA+a,EAAA5gB,GAAAghB,EAAAJ,IAAAD,MAAA,EAAA3gB,GAAAihB,OAAAL,EAAAD,MAAA3gB,EAAA,GACA,OAIA,MADA,OAAA+gB,GAAAH,EAAAlgB,MAAmCmF,OAAAlF,MAAAogB,IACnCH,EAhFA,GAAAI,IAAYrgB,MAAA,aAuBZ2f,GAAA1gB,UAAAugB,EAAAvgB,WACAD,YAAA2gB,EACAY,GAAA,SAAAC,EAAAJ,GACA,GAEArV,GAFA0U,EAAAzhB,KAAAyhB,EACAgB,EAAAb,EAAAY,EAAA,GAAAf,GAEApgB,GAAA,EACAiT,EAAAmO,EAAAxgB,MAGA,OAAAuI,UAAAvI,OAAA,IAOA,SAAAmgB,GAAA,kBAAAA,GAAA,SAAAV,OAAA,qBAAAU,EACA,QAAA/gB,EAAAiT,GACA,GAAAvH,GAAAyV,EAAAC,EAAAphB,IAAA4gB,KAAAR,EAAA1U,GAAAoV,EAAAV,EAAA1U,GAAAyV,EAAAtb,KAAAkb,OACA,UAAAA,EAAA,IAAArV,IAAA0U,KAAA1U,GAAAoV,EAAAV,EAAA1U,GAAAyV,EAAAtb,KAAA,KAGA,OAAAlH,MAZA,OAAAqB,EAAAiT,GAAA,IAAAvH,GAAAyV,EAAAC,EAAAphB,IAAA4gB,QAAAlV,EAAAmV,EAAAT,EAAA1U,GAAAyV,EAAAtb,OAAA,MAAA6F,KAcA2V,KAAA,WACA,GAAAA,MAAiBjB,EAAAzhB,KAAAyhB,CACjB,QAAA1U,KAAA0U,GAAAiB,EAAA3V,GAAA0U,EAAA1U,GAAAiV,OACA,WAAAL,GAAAe,IAEAniB,KAAA,SAAA0hB,EAAAU,GACA,IAAArO,EAAA9J,UAAAvI,OAAA,YAAAqS,GAAAvH,EAAA6V,EAAA,GAAAzgB,OAAAmS,GAAAjT,EAAA,EAAkFA,EAAAiT,IAAOjT,EAAAuhB,EAAAvhB,GAAAmJ,UAAAnJ,EAAA,EACzF,KAAArB,KAAAyhB,EAAArN,eAAA6N,GAAA,SAAAP,OAAA,iBAAAO,EACA,KAAAlV,EAAA/M,KAAAyhB,EAAAQ,GAAA5gB,EAAA,EAAAiT,EAAAvH,EAAA9K,OAA+CZ,EAAAiT,IAAOjT,EAAA0L,EAAA1L,GAAAW,MAAA6gB,MAAAF,EAAAC,IAEtDC,MAAA,SAAAZ,EAAAU,EAAAC,GACA,IAAA5iB,KAAAyhB,EAAArN,eAAA6N,GAAA,SAAAP,OAAA,iBAAAO,EACA,QAAAlV,GAAA/M,KAAAyhB,EAAAQ,GAAA5gB,EAAA,EAAAiT,EAAAvH,EAAA9K,OAAmDZ,EAAAiT,IAAOjT,EAAA0L,EAAA1L,GAAAW,MAAA6gB,MAAAF,EAAAC,KAuB1DhjB,EAAA4hB,WAEAnf,OAAAsQ,eAAA/S,EAAA,cAA8CoC,OAAA,OLghDxC,SAAUnC,EAAQD,EAASM,IM3mDjC,SAAA2M,EAAAlN,GACAA,EAAAC,IAGCI,KAAA,SAAAJ,GAA4B,YA4G7B,SAAAkjB,GAAAC,GACA,UAAAC,GAAAD,GAKA,QAAAC,GAAAD,GACA,KAAAE,EAAAC,EAAA5P,KAAAyP,IAAA,SAAArB,OAAA,mBAAAqB,EAEA,IAAAE,GACAE,EAAAF,EAAA,QACAG,EAAAH,EAAA,QACAI,EAAAJ,EAAA,QACAK,EAAAL,EAAA,OACAM,IAAAN,EAAA,GACA1f,EAAA0f,EAAA,KAAAA,EAAA,GACAO,IAAAP,EAAA,GACAQ,EAAAR,EAAA,KAAAA,EAAA,GAAAjB,MAAA,GACAC,EAAAgB,EAAA,MAGA,OAAAhB,GAAAuB,GAAA,EAAAvB,EAAA,KAGAyB,EAAAzB,OAAA,KAGAsB,GAAA,MAAAJ,GAAA,MAAAC,KAAAG,GAAA,EAAAJ,EAAA,IAAAC,EAAA,KAEApjB,KAAAmjB,OACAnjB,KAAAojB,QACApjB,KAAAqjB,OACArjB,KAAAsjB,SACAtjB,KAAAujB,OACAvjB,KAAAuD,QACAvD,KAAAwjB,QACAxjB,KAAAyjB,YACAzjB,KAAAiiB,OAuJA,QAAA0B,GAAA7Q,GAIA,MAHA7I,GAAA2Z,EAAA9Q,GACAlT,EAAAkG,OAAAmE,EAAAnE,OACAlG,EAAAikB,aAAA5Z,EAAA4Z,aACA5Z,EAvSA,GA0DA6Z,GA1DAC,EAAA,SAAAzX,EAAA5L,GACA,IAAAW,GAAAiL,EAAA5L,EAAA4L,EAAA0X,cAAAtjB,EAAA,GAAA4L,EAAA0X,iBAAAjC,QAAA,mBACA,IAAA1gB,GAAA4iB,EAAA3X,EAAA0V,MAAA,EAAA3gB,EAIA,QACA4iB,EAAAhiB,OAAA,EAAAgiB,EAAA,GAAAA,EAAAjC,MAAA,GAAAiC,GACA3X,EAAA0V,MAAA3gB,EAAA,KAIA8N,EAAA,SAAA7C,GACA,MAAAA,GAAAyX,EAAAxW,KAAA2W,IAAA5X,QAAA,GAAA+H,KAGA8P,EAAA,SAAAC,EAAAC,GACA,gBAAAriB,EAAAuB,GAOA,IANA,GAAAlC,GAAAW,EAAAC,OACA8K,KACAuX,EAAA,EACA9P,EAAA4P,EAAA,GACAniB,EAAA,EAEAZ,EAAA,GAAAmT,EAAA,IACAvS,EAAAuS,EAAA,EAAAjR,IAAAiR,EAAAjH,KAAA6C,IAAA,EAAA7M,EAAAtB,IACA8K,EAAAhL,KAAAC,EAAAuiB,UAAAljB,GAAAmT,EAAAnT,EAAAmT,OACAvS,GAAAuS,EAAA,GAAAjR,KACAiR,EAAA4P,EAAAE,KAAA,GAAAF,EAAAniB,OAGA,OAAA8K,GAAAnB,UAAAG,KAAAsY,KAIAG,EAAA,SAAAC,GACA,gBAAAziB,GACA,MAAAA,GAAA0iB,QAAA,kBAAArjB,GACA,MAAAojB,IAAApjB,OAKAsjB,EAAA,SAAArY,EAAA5L,GACA4L,IAAAsY,YAAAlkB,EAEAmkB,GAAA,OAAAC,GAAAxQ,EAAAhI,EAAArK,OAAAZ,EAAA,EAAA0jB,GAAA,EAAiD1jB,EAAAiT,IAAOjT,EACxD,OAAAiL,EAAAjL,IACA,QAAA0jB,EAAAD,EAAAzjB,CAA4B,MAC5B,aAAA0jB,MAAA1jB,GAAqCyjB,EAAAzjB,CAAQ,MAC7C,cAAAwjB,EACA,SAAAE,EAAA,IAAAA,EAAA,GAIA,MAAAA,GAAA,EAAAzY,EAAA0V,MAAA,EAAA+C,GAAAzY,EAAA0V,MAAA8C,EAAA,GAAAxY,GAKA0Y,EAAA,SAAA1Y,EAAA5L,GACA,GAAAqK,GAAAgZ,EAAAzX,EAAA5L,EACA,KAAAqK,EAAA,MAAAuB,GAAA,EACA,IAAA2X,GAAAlZ,EAAA,GACAoE,EAAApE,EAAA,GACA1J,EAAA8N,GAAA2U,EAAA,EAAAvW,KAAA6C,KAAA,EAAA7C,KAAA0H,IAAA,EAAA1H,KAAA0X,MAAA9V,EAAA,QACAmF,EAAA2P,EAAAhiB,MACA,OAAAZ,KAAAiT,EAAA2P,EACA5iB,EAAAiT,EAAA2P,EAAA,GAAA9hB,OAAAd,EAAAiT,EAAA,GAAAvI,KAAA,KACA1K,EAAA,EAAA4iB,EAAAjC,MAAA,EAAA3gB,GAAA,IAAA4iB,EAAAjC,MAAA3gB,GACA,QAAAc,OAAA,EAAAd,GAAA0K,KAAA,KAAAgY,EAAAzX,EAAAiB,KAAA6C,IAAA,EAAA1P,EAAAW,EAAA,QAGA6jB,EAAA,SAAA5Y,EAAA5L,GACA,GAAAqK,GAAAgZ,EAAAzX,EAAA5L,EACA,KAAAqK,EAAA,MAAAuB,GAAA,EACA,IAAA2X,GAAAlZ,EAAA,GACAoE,EAAApE,EAAA,EACA,OAAAoE,GAAA,UAAAhN,QAAAgN,GAAApD,KAAA,KAAAkY,EACAA,EAAAhiB,OAAAkN,EAAA,EAAA8U,EAAAjC,MAAA,EAAA7S,EAAA,OAAA8U,EAAAjC,MAAA7S,EAAA,GACA8U,EAAA,GAAA9hB,OAAAgN,EAAA8U,EAAAhiB,OAAA,GAAA8J,KAAA,MAGA2X,GACAyB,GAAAR,EACAS,IAAA,SAAA9Y,EAAA5L,GAAuB,WAAA4L,GAAA+Y,QAAA3kB,IACvBwK,EAAA,SAAAoB,GAAoB,MAAAiB,MAAA2T,MAAA5U,GAAA1F,SAAA,IACpBnG,EAAA,SAAA6L,GAAoB,MAAAA,GAAA,IACpBvB,EAAA,SAAAuB,GAAoB,MAAAiB,MAAA2T,MAAA5U,GAAA1F,SAAA,KACpB0I,EAAA,SAAAhD,EAAA5L,GAAuB,MAAA4L,GAAA0X,cAAAtjB,IACvB0J,EAAA,SAAAkC,EAAA5L,GAAuB,MAAA4L,GAAA+Y,QAAA3kB,IACvB8T,EAAA,SAAAlI,EAAA5L,GAAuB,MAAA4L,GAAAsY,YAAAlkB,IACvBgU,EAAA,SAAApI,GAAoB,MAAAiB,MAAA2T,MAAA5U,GAAA1F,SAAA,IACpBlG,EAAA,SAAA4L,EAAA5L,GAAuB,MAAAwkB,GAAA,IAAA5Y,EAAA5L,IACvB6T,EAAA2Q,EACAtV,EAAAoV,EACAM,EAAA,SAAAhZ,GAAoB,MAAAiB,MAAA2T,MAAA5U,GAAA1F,SAAA,IAAA2e,eACpBjZ,EAAA,SAAAA,GAAoB,MAAAiB,MAAA2T,MAAA5U,GAAA1F,SAAA,MAIpBsc,EAAA,uEAMAJ,GAAA7hB,UAAA+hB,EAAA/hB,UAoCA+hB,EAAA/hB,UAAA2F,SAAA,WACA,MAAA5G,MAAAmjB,KACAnjB,KAAAojB,MACApjB,KAAAqjB,KACArjB,KAAAsjB,QACAtjB,KAAAujB,KAAA,SACA,MAAAvjB,KAAAuD,MAAA,GAAAgK,KAAA6C,IAAA,IAAApQ,KAAAuD,SACAvD,KAAAwjB,MAAA,SACA,MAAAxjB,KAAAyjB,UAAA,OAAAlW,KAAA6C,IAAA,IAAApQ,KAAAyjB,YACAzjB,KAAAiiB,KAGA,IA6HAhY,GA7HAub,EAAA,SAAAlZ,GACA,MAAAA,IAGAmZ,GAAA,oEAEA7B,EAAA,SAAA3Z,GAOA,QAAAyb,GAAA3C,GAgCA,QAAAjd,GAAA9D,GACA,GAEAX,GAAAiT,EAAA7T,EAFAklB,EAAAC,EACAC,EAAAC,CAGA,UAAA7D,EACA4D,EAAAE,EAAA/jB,GAAA6jB,EACA7jB,EAAA,OACO,CACPA,IAGA,IAAAgkB,GAAAhkB,EAAA,CAYA,IAXAA,EAAA+jB,EAAAxY,KAAA2W,IAAAliB,GAAAyhB,GAGAuC,GAAA,KAAAhkB,IAAAgkB,GAAA,GAGAL,GAAAK,EAAA,MAAA3C,IAAA,UAAAA,GAAA,MAAAA,EAAA,GAAAA,GAAAsC,EACAE,KAAA,MAAA5D,EAAAwD,EAAA,EAAA3B,EAAA,QAAAkC,GAAA,MAAA3C,EAAA,QAIA4C,EAEA,IADA5kB,GAAA,EAAAiT,EAAAtS,EAAAC,SACAZ,EAAAiT,GACA,GAAA7T,EAAAuB,EAAAkkB,WAAA7kB,GAAA,GAAAZ,KAAA,IACAolB,GAAA,KAAAplB,EAAA0lB,EAAAnkB,EAAAggB,MAAA3gB,EAAA,GAAAW,EAAAggB,MAAA3gB,IAAAwkB,EACA7jB,IAAAggB,MAAA,EAAA3gB,EACA,QAOAmiB,IAAAD,IAAAvhB,EAAAokB,EAAApkB,EAAAqkB,KAGA,IAAApkB,GAAA0jB,EAAA1jB,OAAAD,EAAAC,OAAA4jB,EAAA5jB,OACAqkB,EAAArkB,EAAAsB,EAAA,GAAApB,OAAAoB,EAAAtB,EAAA,GAAA8J,KAAAoX,GAAA,EAMA,QAHAK,GAAAD,IAAAvhB,EAAAokB,EAAAE,EAAAtkB,EAAAskB,EAAArkB,OAAAsB,EAAAsiB,EAAA5jB,OAAAokB,KAAAC,EAAA,IAGAlD,GACA,QAAAphB,EAAA2jB,EAAA3jB,EAAA6jB,EAAAS,CAAsE,MACtE,SAAAtkB,EAAA2jB,EAAAW,EAAAtkB,EAAA6jB,CAAsE,MACtE,SAAA7jB,EAAAskB,EAAAtE,MAAA,EAAA/f,EAAAqkB,EAAArkB,QAAA,GAAA0jB,EAAA3jB,EAAA6jB,EAAAS,EAAAtE,MAAA/f,EAAqI,MACrI,SAAAD,EAAAskB,EAAAX,EAAA3jB,EAAA6jB,EAGA,MAAApB,GAAAziB,GArFA+gB,EAAAD,EAAAC,EAEA,IAAAI,GAAAJ,EAAAI,KACAC,EAAAL,EAAAK,MACAC,EAAAN,EAAAM,KACAC,EAAAP,EAAAO,OACAC,EAAAR,EAAAQ,KACAhgB,EAAAwf,EAAAxf,MACAigB,EAAAT,EAAAS,MACAC,EAAAV,EAAAU,UACAxB,EAAAc,EAAAd,KAIA2D,EAAA,MAAAtC,EAAAiD,EAAA,SAAAjD,GAAA,SAAAkD,KAAAvE,GAAA,IAAAA,EAAA7O,cAAA,GACA0S,EAAA,MAAAxC,EAAAiD,EAAA,UAAAC,KAAAvE,GAAAwE,EAAA,GAKAV,EAAArC,EAAAzB,GACAgE,GAAAhE,GAAA,aAAAuE,KAAAvE,EAuEA,OAjEAwB,GAAA,MAAAA,EAAAxB,EAAA,KACA,SAAAuE,KAAAvE,GAAA1U,KAAA6C,IAAA,EAAA7C,KAAA0H,IAAA,GAAAwO,IACAlW,KAAA6C,IAAA,EAAA7C,KAAA0H,IAAA,GAAAwO,IA2DA3d,EAAAc,SAAA,WACA,MAAAmc,GAAA,IAGAjd,EAGA,QAAA+d,GAAAd,EAAA/gB,GACA,GAAAoI,GAAAsb,GAAA3C,EAAAD,EAAAC,KAAAd,KAAA,IAAAc,IACAzT,EAAA,EAAA/B,KAAA6C,KAAA,EAAA7C,KAAA0H,IAAA,EAAA1H,KAAA0X,MAAA9V,EAAAnN,GAAA,KACAiV,EAAA1J,KAAAQ,IAAA,IAAAuB,GACAsW,EAAAH,EAAA,EAAAnW,EAAA,EACA,iBAAAtN,GACA,MAAAoI,GAAA6M,EAAAjV,GAAA4jB,GA5GA,GAAAQ,GAAAnc,EAAAma,UAAAna,EAAAoa,UAAAF,EAAAla,EAAAma,SAAAna,EAAAoa,WAAAmB,EACAe,EAAAtc,EAAAsc,SACAJ,EAAAlc,EAAAkc,QACA1B,EAAAxa,EAAAwa,SAAAD,EAAAva,EAAAwa,UAAAe,EACAiB,EAAAxc,EAAAwc,SAAA,GA4GA,QACA3gB,OAAA4f,EACA7B,gBAQAF,IACAwC,QAAA,IACA9B,UAAA,IACAD,UAAA,GACAmC,UAAA,SAUA,IAAAG,GAAA,SAAAC,GACA,MAAApZ,MAAA6C,IAAA,GAAAjB,EAAA5B,KAAA2W,IAAAyC,MAGAC,EAAA,SAAAD,EAAA3kB,GACA,MAAAuL,MAAA6C,IAAA,IAAA7C,KAAA6C,KAAA,EAAA7C,KAAA0H,IAAA,EAAA1H,KAAA0X,MAAA9V,EAAAnN,GAAA,KAAAmN,EAAA5B,KAAA2W,IAAAyC,MAGAE,EAAA,SAAAF,EAAAvW,GAEA,MADAuW,GAAApZ,KAAA2W,IAAAyC,GAAAvW,EAAA7C,KAAA2W,IAAA9T,GAAAuW,EACApZ,KAAA6C,IAAA,EAAAjB,EAAAiB,GAAAjB,EAAAwX,IAAA,EAGA/mB,GAAAknB,oBAAAnD,EACA/jB,EAAAgkB,eACAhkB,EAAAkjB,kBACAljB,EAAA8mB,iBACA9mB,EAAAgnB,kBACAhnB,EAAAinB,iBAEAxkB,OAAAsQ,eAAA/S,EAAA,cAA8CoC,OAAA,ONonDvC,CACA,CAED,SAAUnC,EAAQD,EAASM,IO97DjC,SAAA2M,EAAAlN,GACAA,EAAAC,EAAAM,EAAA,KAGCF,KAAA,SAAAJ,EAAAmnB,GAAoC,YAErC,SAAAC,GAAA3Q,EAAA4Q,EAAAC,EAAAC,EAAAC,GACA,GAAAlR,GAAAG,IAAAJ,EAAAC,EAAAG,CACA,aAAAA,EAAA,EAAAH,EAAAD,GAAAgR,GACA,IAAA/Q,EAAA,EAAAD,GAAAiR,GACA,IAAA7Q,EAAA,EAAAH,EAAA,EAAAD,GAAAkR,EACAlR,EAAAmR,GAAA,EAiCA,QAAAta,GAAA7B,EAAAF,GACA,gBAAAgC,GACA,MAAA9B,GAAA8B,EAAAhC,GAIA,QAAAsc,GAAApc,EAAAC,EAAA3E,GACA,MAAA0E,GAAAsC,KAAAQ,IAAA9C,EAAA1E,GAAA2E,EAAAqC,KAAAQ,IAAA7C,EAAA3E,GAAA0E,EAAA1E,EAAA,EAAAA,EAAA,SAAAwG,GACA,MAAAQ,MAAAQ,IAAA9C,EAAA8B,EAAA7B,EAAA3E,IAIA,QAAA+gB,GAAArc,EAAAC,GACA,GAAAH,GAAAG,EAAAD,CACA,OAAAF,GAAA+B,EAAA7B,EAAAF,EAAA,KAAAA,GAAA,IAAAA,EAAA,IAAAwC,KAAA2T,MAAAnW,EAAA,KAAAA,GAAAwc,EAAAtG,MAAAhW,GAAAC,EAAAD,GAGA,QAAAuc,GAAAjhB,GACA,YAAAA,MAAAkhB,EAAA,SAAAxc,EAAAC,GACA,MAAAA,GAAAD,EAAAoc,EAAApc,EAAAC,EAAA3E,GAAAghB,EAAAtG,MAAAhW,GAAAC,EAAAD,IAIA,QAAAwc,GAAAxc,EAAAC,GACA,GAAAH,GAAAG,EAAAD,CACA,OAAAF,GAAA+B,EAAA7B,EAAAF,GAAAwc,EAAAtG,MAAAhW,GAAAC,EAAAD,GAyBA,QAAAyc,GAAAC,GACA,gBAAAC,GACA,GAIAvmB,GAAAwmB,EAJAvT,EAAAsT,EAAA3lB,OACAsS,EAAA,GAAApS,OAAAmS,GACAE,EAAA,GAAArS,OAAAmS,GACApJ,EAAA,GAAA/I,OAAAmS,EAEA,KAAAjT,EAAA,EAAeA,EAAAiT,IAAOjT,EACtBwmB,EAAAd,EAAApS,IAAAiT,EAAAvmB,IACAkT,EAAAlT,GAAAwmB,EAAAtT,GAAA,EACAC,EAAAnT,GAAAwmB,EAAArT,GAAA,EACAtJ,EAAA7J,GAAAwmB,EAAA3c,GAAA,CAMA,OAJAqJ,GAAAoT,EAAApT,GACAC,EAAAmT,EAAAnT,GACAtJ,EAAAyc,EAAAzc,GACA2c,EAAAjT,QAAA,EACA,SAAA7H,GAIA,MAHA8a,GAAAtT,IAAAxH,GACA8a,EAAArT,IAAAzH,GACA8a,EAAA3c,IAAA6B,GACA8a,EAAA,KA8DA,QAAAtE,GAAArY,GACA,kBACA,MAAAA,IAIA,QAAA4c,GAAA5c,GACA,gBAAA6B,GACA,MAAA7B,GAAA6B,GAAA,IAsGA,QAAAgb,GAAA/lB,GACA,eAAAA,EAAAwjB,GACAwC,MAAAC,SAAAC,cAAA,OAAAC,EAAAF,SAAAG,gBAAAC,EAAAJ,SAAAK,aACAN,EAAA5iB,MAAAmjB,UAAAvmB,EACAA,EAAAqmB,EAAAG,iBAAAL,EAAAM,YAAAT,GAAA,MAAAU,iBAAA,aACAP,EAAAQ,YAAAX,GACAhmB,IAAAggB,MAAA,MAAArW,MAAA,KACAid,GAAA5mB,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,KAGA,QAAA6mB,GAAA7mB,GACA,aAAAA,EAAAwjB,GACAsD,MAAAb,SAAAc,gBAAA,mCACAD,EAAAE,aAAA,YAAAhnB,IACAA,EAAA8mB,EAAAP,UAAAU,QAAAC,gBACAlnB,IAAAmnB,OACAP,EAAA5mB,EAAAiJ,EAAAjJ,EAAAkJ,EAAAlJ,EAAAvB,EAAAuB,EAAA+I,EAAA/I,EAAAsN,EAAAtN,EAAAoI,IAFAob,GAKA,QAAA4D,GAAAC,EAAAC,EAAAC,EAAAC,GAEA,QAAA1d,GAAA8D,GACA,MAAAA,GAAA3N,OAAA2N,EAAA9D,MAAA,OAGA,QAAA2d,GAAAC,EAAAC,EAAAC,EAAAC,EAAAja,EAAAka,GACA,GAAAJ,IAAAE,GAAAD,IAAAE,EAAA,CACA,GAAAxoB,GAAAuO,EAAA7N,KAAA,kBAAAunB,EAAA,KAAAC,EACAO,GAAA/nB,MAAcV,IAAA,EAAAiL,EAAAyd,EAAAL,EAAAE,KAA+BvoB,IAAA,EAAAiL,EAAAyd,EAAAJ,EAAAE,UACxCD,GAAAC,IACLja,EAAA7N,KAAA,aAAA6nB,EAAAN,EAAAO,EAAAN,GAIA,QAAAS,GAAA/e,EAAAC,EAAA0E,EAAAka,GACA7e,IAAAC,GACAD,EAAAC,EAAA,IAAAA,GAAA,IAAgCA,EAAAD,EAAA,MAAAA,GAAA,KAChC6e,EAAA/nB,MAAcV,EAAAuO,EAAA7N,KAAA+J,EAAA8D,GAAA,eAAA4Z,GAAA,EAAAld,EAAAyd,EAAA9e,EAAAC,MACTA,GACL0E,EAAA7N,KAAA+J,EAAA8D,GAAA,UAAA1E,EAAAse,GAIA,QAAAS,GAAAhf,EAAAC,EAAA0E,EAAAka,GACA7e,IAAAC,EACA4e,EAAA/nB,MAAcV,EAAAuO,EAAA7N,KAAA+J,EAAA8D,GAAA,cAAA4Z,GAAA,EAAAld,EAAAyd,EAAA9e,EAAAC,KACTA,GACL0E,EAAA7N,KAAA+J,EAAA8D,GAAA,SAAA1E,EAAAse,GAIA,QAAAU,GAAAR,EAAAC,EAAAC,EAAAC,EAAAja,EAAAka,GACA,GAAAJ,IAAAE,GAAAD,IAAAE,EAAA,CACA,GAAAxoB,GAAAuO,EAAA7N,KAAA+J,EAAA8D,GAAA,2BACAka,GAAA/nB,MAAcV,IAAA,EAAAiL,EAAAyd,EAAAL,EAAAE,KAA+BvoB,IAAA,EAAAiL,EAAAyd,EAAAJ,EAAAE,SACxC,KAAAD,GAAA,IAAAC,GACLja,EAAA7N,KAAA+J,EAAA8D,GAAA,SAAAga,EAAA,IAAAC,EAAA,KAIA,gBAAA5e,EAAAC,GACA,GAAA0E,MACAka,IAOA,OANA7e,GAAAoe,EAAApe,GAAAC,EAAAme,EAAAne,GACAue,EAAAxe,EAAAkf,WAAAlf,EAAAmf,WAAAlf,EAAAif,WAAAjf,EAAAkf,WAAAxa,EAAAka,GACAE,EAAA/e,EAAA+e,OAAA9e,EAAA8e,OAAApa,EAAAka,GACAG,EAAAhf,EAAAgf,MAAA/e,EAAA+e,MAAAra,EAAAka,GACAI,EAAAjf,EAAAof,OAAApf,EAAAqf,OAAApf,EAAAmf,OAAAnf,EAAAof,OAAA1a,EAAAka,GACA7e,EAAAC,EAAA,KACA,SAAA6B,GAEA,IADA,GAAA2H,GAAArT,GAAA,EAAAiT,EAAAwV,EAAA7nB,SACAZ,EAAAiT,GAAA1E,GAAA8E,EAAAoV,EAAAzoB,OAAAqT,EAAApI,EAAAS,EACA,OAAA6C,GAAA7D,KAAA,MAaA,QAAAuV,GAAAhV,GACA,QAAAA,EAAAiB,KAAAgd,IAAAje,IAAA,EAAAA,GAAA,EAGA,QAAAiV,GAAAjV,GACA,QAAAA,EAAAiB,KAAAgd,IAAAje,IAAA,EAAAA,GAAA,EAGA,QAAAke,GAAAle,GACA,QAAAA,EAAAiB,KAAAgd,IAAA,EAAAje,IAAA,IAAAA,EAAA,GAmDA,QAAAme,GAAAC,GACA,gBAAAC,EAAAC,GACA,GAAA/V,GAAA6V,GAAAC,EAAA5D,EAAA7R,IAAAyV,IAAA9V,GAAA+V,EAAA7D,EAAA7R,IAAA0V,IAAA/V,GACAjF,EAAA6X,EAAAkD,EAAA/a,EAAAgb,EAAAhb,GACAkF,EAAA2S,EAAAkD,EAAA7V,EAAA8V,EAAA9V,GACAF,EAAA6S,EAAAkD,EAAA/V,QAAAgW,EAAAhW,QACA,iBAAA7H,GAKA,MAJA4d,GAAA9V,IAAA9H,GACA4d,EAAA/a,IAAA7C,GACA4d,EAAA7V,IAAA/H,GACA4d,EAAA/V,UAAA7H,GACA4d,EAAA,KAQA,QAAAE,GAAAF,EAAAC,GACA,GAAA9V,GAAA2S,GAAAkD,EAAA5D,EAAA/Q,IAAA2U,IAAA7V,GAAA8V,EAAA7D,EAAA/Q,IAAA4U,IAAA9V,GACA7J,EAAAwc,EAAAkD,EAAA1f,EAAA2f,EAAA3f,GACAC,EAAAuc,EAAAkD,EAAAzf,EAAA0f,EAAA1f,GACA0J,EAAA6S,EAAAkD,EAAA/V,QAAAgW,EAAAhW,QACA,iBAAA7H,GAKA,MAJA4d,GAAA7V,IAAA/H,GACA4d,EAAA1f,IAAA8B,GACA4d,EAAAzf,IAAA6B,GACA4d,EAAA/V,UAAA7H,GACA4d,EAAA,IAIA,QAAAG,GAAAJ,GACA,gBAAAC,EAAAC,GACA,GAAA/V,GAAA6V,GAAAC,EAAA5D,EAAArQ,IAAAiU,IAAA9V,GAAA+V,EAAA7D,EAAArQ,IAAAkU,IAAA/V,GACApU,EAAAgnB,EAAAkD,EAAAlqB,EAAAmqB,EAAAnqB,GACAqU,EAAA2S,EAAAkD,EAAA7V,EAAA8V,EAAA9V,GACAF,EAAA6S,EAAAkD,EAAA/V,QAAAgW,EAAAhW,QACA,iBAAA7H,GAKA,MAJA4d,GAAA9V,IAAA9H,GACA4d,EAAAlqB,IAAAsM,GACA4d,EAAA7V,IAAA/H,GACA4d,EAAA/V,UAAA7H,GACA4d,EAAA,KAQA,QAAAI,GAAAL,GACA,eAAAM,GAAAzkB,GAGA,QAAA0kB,GAAAN,EAAAC,GACA,GAAA/V,GAAA6V,GAAAC,EAAA5D,EAAA1P,UAAAsT,IAAA9V,GAAA+V,EAAA7D,EAAA1P,UAAAuT,IAAA/V,GACAjF,EAAA6X,EAAAkD,EAAA/a,EAAAgb,EAAAhb,GACAkF,EAAA2S,EAAAkD,EAAA7V,EAAA8V,EAAA9V,GACAF,EAAA6S,EAAAkD,EAAA/V,QAAAgW,EAAAhW,QACA,iBAAA7H,GAKA,MAJA4d,GAAA9V,IAAA9H,GACA4d,EAAA/a,IAAA7C,GACA4d,EAAA7V,IAAAvH,KAAAQ,IAAAhB,EAAAxG,IACAokB,EAAA/V,UAAA7H,GACA4d,EAAA,IAMA,MAlBApkB,MAgBA0kB,EAAAzD,MAAAwD,EAEAC,GACG,GA3eH,GA4QAjD,GACAG,EACAE,EACAS,EA/QAoC,EAAA,SAAAC,GACA,GAAA7W,GAAA6W,EAAAlpB,OAAA,CACA,iBAAA8K,GACA,GAAA1L,GAAA0L,GAAA,EAAAA,EAAA,EAAAA,GAAA,GAAAA,EAAA,EAAAuH,EAAA,GAAA/G,KAAA0X,MAAAlY,EAAAuH,GACA4S,EAAAiE,EAAA9pB,GACA8lB,EAAAgE,EAAA9pB,EAAA,GACA4lB,EAAA5lB,EAAA,EAAA8pB,EAAA9pB,EAAA,KAAA6lB,EAAAC,EACAC,EAAA/lB,EAAAiT,EAAA,EAAA6W,EAAA9pB,EAAA,KAAA8lB,EAAAD,CACA,OAAAF,IAAAja,EAAA1L,EAAAiT,KAAA2S,EAAAC,EAAAC,EAAAC,KAIAgE,EAAA,SAAAD,GACA,GAAA7W,GAAA6W,EAAAlpB,MACA,iBAAA8K,GACA,GAAA1L,GAAAkM,KAAA0X,QAAAlY,GAAA,OAAAA,KAAAuH,GACA2S,EAAAkE,GAAA9pB,EAAAiT,EAAA,GAAAA,GACA4S,EAAAiE,EAAA9pB,EAAAiT,GACA6S,EAAAgE,GAAA9pB,EAAA,GAAAiT,GACA8S,EAAA+D,GAAA9pB,EAAA,GAAAiT,EACA,OAAA0S,IAAAja,EAAA1L,EAAAiT,KAAA2S,EAAAC,EAAAC,EAAAC,KAIAG,EAAA,SAAAjb,GACA,kBACA,MAAAA,KAgCA+e,EAAA,QAAAC,GAAA/kB,GAGA,QAAAglB,GAAAZ,EAAAC,GACA,GAAArW,GAAAsT,GAAA8C,EAAA5D,EAAApS,IAAAgW,IAAApW,GAAAqW,EAAA7D,EAAApS,IAAAiW,IAAArW,GACAC,EAAAqT,EAAA8C,EAAAnW,EAAAoW,EAAApW,GACAtJ,EAAA2c,EAAA8C,EAAAzf,EAAA0f,EAAA1f,GACA0J,EAAA6S,EAAAkD,EAAA/V,QAAAgW,EAAAhW,QACA,iBAAA7H,GAKA,MAJA4d,GAAApW,IAAAxH,GACA4d,EAAAnW,IAAAzH,GACA4d,EAAAzf,IAAA6B,GACA4d,EAAA/V,UAAA7H,GACA4d,EAAA,IAZA,GAAA9C,GAAAL,EAAAjhB,EAkBA,OAFAglB,GAAA/D,MAAA8D,EAEAC,GACC,GA4BDC,EAAA9D,EAAAwD,GACAO,EAAA/D,EAAA0D,GAEAM,EAAA,SAAAzgB,EAAAC,GACA,GAIA7J,GAJAsqB,EAAAzgB,IAAAjJ,OAAA,EACA2pB,EAAA3gB,EAAAsC,KAAA0H,IAAA0W,EAAA1gB,EAAAhJ,QAAA,EACAqK,EAAA,GAAAnK,OAAAwpB,GACAlrB,EAAA,GAAA0B,OAAAwpB,EAGA,KAAAtqB,EAAA,EAAaA,EAAAuqB,IAAQvqB,EAAAiL,EAAAjL,GAAAW,EAAAiJ,EAAA5J,GAAA6J,EAAA7J,GACrB,MAAQA,EAAAsqB,IAAQtqB,EAAAZ,EAAAY,GAAA6J,EAAA7J,EAEhB,iBAAA0L,GACA,IAAA1L,EAAA,EAAeA,EAAAuqB,IAAQvqB,EAAAZ,EAAAY,GAAAiL,EAAAjL,GAAA0L,EACvB,OAAAtM,KAIAyI,EAAA,SAAA+B,EAAAC,GACA,GAAAH,GAAA,GAAA/B,KACA,OAAAiC,MAAAC,GAAAD,EAAA,SAAA8B,GACA,MAAAhC,GAAA8gB,QAAA5gB,EAAAC,EAAA6B,GAAAhC,IAIAgf,EAAA,SAAA9e,EAAAC,GACA,MAAAD,MAAAC,GAAAD,EAAA,SAAA8B,GACA,MAAA9B,GAAAC,EAAA6B,IAIA+e,EAAA,SAAA7gB,EAAAC,GACA,GAEA+L,GAFA5V,KACAZ,IAGA,QAAAwK,GAAA,gBAAAA,WACA,OAAAC,GAAA,gBAAAA,UAEA,KAAA+L,IAAA/L,GACA+L,IAAAhM,GACA5J,EAAA4V,GAAAjV,EAAAiJ,EAAAgM,GAAA/L,EAAA+L,IAEAxW,EAAAwW,GAAA/L,EAAA+L,EAIA,iBAAAlK,GACA,IAAAkK,IAAA5V,GAAAZ,EAAAwW,GAAA5V,EAAA4V,GAAAlK,EACA,OAAAtM,KAIAsrB,EAAA,8CACAC,EAAA,GAAArU,QAAAoU,EAAAE,OAAA,KAcAC,EAAA,SAAAjhB,EAAAC,GACA,GACAihB,GACAC,EACAC,EAHAC,EAAAP,EAAAQ,UAAAP,EAAAO,UAAA,EAIAlrB,GAAA,EACAuO,KACAka,IAMA,KAHA7e,GAAA,GAAAC,GAAA,IAGAihB,EAAAJ,EAAAzY,KAAArI,MACAmhB,EAAAJ,EAAA1Y,KAAApI,MACAmhB,EAAAD,EAAAI,OAAAF,IACAD,EAAAnhB,EAAA8W,MAAAsK,EAAAD,GACAzc,EAAAvO,GAAAuO,EAAAvO,IAAAgrB,EACAzc,IAAAvO,GAAAgrB,IAEAF,IAAA,OAAAC,IAAA,IACAxc,EAAAvO,GAAAuO,EAAAvO,IAAA+qB,EACAxc,IAAAvO,GAAA+qB,GAEAxc,IAAAvO,GAAA,KACAyoB,EAAA/nB,MAAcV,IAAAiL,EAAAyd,EAAAoC,EAAAC,MAEdE,EAAAN,EAAAO,SAYA,OARAD,GAAAphB,EAAAjJ,SACAoqB,EAAAnhB,EAAA8W,MAAAsK,GACA1c,EAAAvO,GAAAuO,EAAAvO,IAAAgrB,EACAzc,IAAAvO,GAAAgrB,GAKAzc,EAAA3N,OAAA,EAAA6nB,EAAA,GACAhC,EAAAgC,EAAA,GAAAxd,GACAiX,EAAArY,IACAA,EAAA4e,EAAA7nB,OAAA,SAAA8K,GACA,OAAA2H,GAAArT,EAAA,EAA4BA,EAAA6J,IAAO7J,EAAAuO,GAAA8E,EAAAoV,EAAAzoB,OAAAqT,EAAApI,EAAAS,EACnC,OAAA6C,GAAA7D,KAAA,OAIA/J,EAAA,SAAAiJ,EAAAC,GACA,GAAAzK,GAAAsM,QAAA7B,EACA,cAAAA,GAAA,YAAA6B,EAAAwa,EAAArc,IACA,WAAA6B,EAAAgd,EACA,WAAAhd,GAAAtM,EAAAsmB,EAAA7T,MAAAhI,OAAAzK,EAAA4qB,GAAAa,EACAhhB,YAAA6b,GAAA7T,MAAAmY,EACAngB,YAAAlC,MAAAE,EACA/G,MAAAC,QAAA8I,GAAAwgB,EACA,kBAAAxgB,GAAAuhB,SAAA,kBAAAvhB,GAAAtE,UAAAqa,MAAA/V,GAAA4gB,EACA/B,GAAA9e,EAAAC,IAGAgW,EAAA,SAAAjW,EAAAC,GACA,MAAAD,MAAAC,GAAAD,EAAA,SAAA8B,GACA,MAAAQ,MAAA2T,MAAAjW,EAAAC,EAAA6B,KAIA2f,EAAA,IAAAnf,KAAAkC,GAEA+V,GACA2E,WAAA,EACAC,WAAA,EACAJ,OAAA,EACAC,MAAA,EACAI,OAAA,EACAC,OAAA,GAGA1B,EAAA,SAAA3d,EAAAC,EAAAzK,EAAAsK,EAAAuE,EAAAlF,GACA,GAAAigB,GAAAC,EAAAL,CAKA,QAJAI,EAAA9c,KAAAY,KAAAlD,IAAAC,QAAAD,GAAAof,EAAAnf,GAAAmf,IACAJ,EAAAhf,EAAAxK,EAAAyK,EAAAH,KAAAtK,GAAAwK,EAAAgf,EAAAlf,GAAAG,EAAA+e,IACAK,EAAA/c,KAAAY,KAAA1N,IAAAsK,QAAAtK,GAAA6pB,EAAAvf,GAAAuf,EAAAL,GAAAK,GACArf,EAAAF,EAAAG,EAAAzK,IAAAwK,KAAAC,KAAA+e,KAAAI,OAEAF,WAAA7a,EACA8a,WAAAhgB,EACA4f,OAAAzc,KAAAiJ,MAAAtL,EAAAD,GAAAyhB,EACAzC,MAAA1c,KAAAof,KAAA1C,GAAAyC,EACArC,SACAC,WAsFAsC,EAAAxD,EAAArB,EAAA,qBACA8E,EAAAzD,EAAAP,EAAA,cAEAiE,EAAAvf,KAAAwf,MACAC,EAAA,EACAC,EAAA,EACAC,EAAA,MAgBAC,EAAA,SAAAC,EAAAC,GACA,GAKAhsB,GACAisB,EANAC,EAAAH,EAAA,GAAAI,EAAAJ,EAAA,GAAAK,EAAAL,EAAA,GACAM,EAAAL,EAAA,GAAAM,EAAAN,EAAA,GAAAO,EAAAP,EAAA,GACAQ,EAAAH,EAAAH,EACA9hB,EAAAkiB,EAAAH,EACAM,EAAAD,IAAApiB,GAKA,IAAAqiB,EAAAZ,EACAI,EAAA/f,KAAAwgB,IAAAH,EAAAH,GAAAX,EACAzrB,EAAA,SAAA0L,GACA,OACAwgB,EAAAxgB,EAAA8gB,EACAL,EAAAzgB,EAAAtB,EACAgiB,EAAAlgB,KAAAgd,IAAAuC,EAAA/f,EAAAugB,SAMA,CACA,GAAAU,GAAAzgB,KAAAY,KAAA2f,GACArf,GAAAmf,IAAAH,IAAAR,EAAAa,IAAA,EAAAL,EAAAT,EAAAgB,GACAxf,GAAAof,IAAAH,IAAAR,EAAAa,IAAA,EAAAF,EAAAZ,EAAAgB,GACAC,EAAA1gB,KAAAwgB,IAAAxgB,KAAAY,KAAAM,IAAA,GAAAA,GACAyf,EAAA3gB,KAAAwgB,IAAAxgB,KAAAY,KAAAK,IAAA,GAAAA,EACA8e,IAAAY,EAAAD,GAAAnB,EACAzrB,EAAA,SAAA0L,GACA,GAAA6C,GAAA7C,EAAAugB,EACAa,EAAA7M,EAAA2M,GACAG,EAAAX,GAAAT,EAAAgB,IAAAG,EAAA3D,EAAAsC,EAAAld,EAAAqe,GAAA1M,EAAA0M,GACA,QACAV,EAAAa,EAAAP,EACAL,EAAAY,EAAA3iB,EACAgiB,EAAAU,EAAA7M,EAAAwL,EAAAld,EAAAqe,KAOA,MAFA5sB,GAAAmH,SAAA,IAAA8kB,EAEAjsB,GAmBAgtB,EAAA5D,EAAAnD,GACAgH,EAAA7D,EAAAhD,GAgCA8G,EAAAzD,EAAAxD,GACAkH,EAAA1D,EAAArD,GA0BAgH,GAAA1D,EAAAzD,GACAoH,GAAA3D,EAAAtD,GAEAkH,GAAA,SAAAC,EAAAta,GAEA,OADAua,GAAA,GAAA1sB,OAAAmS,GACAjT,EAAA,EAAiBA,EAAAiT,IAAOjT,EAAAwtB,EAAAxtB,GAAAutB,EAAAvtB,GAAAiT,EAAA,GACxB,OAAAua,GAGAjvB,GAAAkvB,YAAA9sB,EACApC,EAAAmvB,iBAAArD,EACA9rB,EAAAovB,iBAAA9D,EACAtrB,EAAAqvB,uBAAA7D,EACAxrB,EAAAsvB,gBAAAhmB,EACAtJ,EAAAuvB,kBAAApF,EACAnqB,EAAAwvB,kBAAAtD,EACAlsB,EAAAyvB,iBAAAnO,EACAthB,EAAA0vB,kBAAApD,EACAtsB,EAAAgtB,0BACAhtB,EAAAitB,0BACAjtB,EAAA2vB,gBAAApC,EACAvtB,EAAA4vB,eAAAnE,EACAzrB,EAAA6vB,oBAAAjE,EACA5rB,EAAA8vB,0BAAAjE,EACA7rB,EAAA+vB,eAAAtB,EACAzuB,EAAAgwB,mBAAAtB,EACA1uB,EAAAiwB,eAAAhF,EACAjrB,EAAAkwB,eAAAvB,EACA3uB,EAAAmwB,mBAAAvB,EACA5uB,EAAAowB,qBAAAvB,GACA7uB,EAAAqwB,yBAAAvB,GACA9uB,EAAA+uB,YAEAtsB,OAAAsQ,eAAA/S,EAAA,cAA8CoC,OAAA,OPw8DxC,SAAUnC,EAAQD,EAASM,IQr+EjC,SAAA2M,EAAAlN,GACAA,EAAAC,IAGCI,KAAA,SAAAJ,GAA4B,YAK7B,SAAAswB,GAAAC,EAAAC,EAAAC,EAAAC,GAEA,QAAAC,GAAArnB,GACA,MAAAinB,GAAAjnB,EAAA,GAAAF,OAAAE,MA2DA,MAxDAqnB,GAAAtL,MAAAsL,EAEAA,EAAAC,KAAA,SAAAtnB,GACA,MAAAinB,GAAAjnB,EAAA,GAAAF,MAAAE,EAAA,IAAAknB,EAAAlnB,EAAA,GAAAinB,EAAAjnB,MAGAqnB,EAAArP,MAAA,SAAAhY,GACA,GAAAunB,GAAAF,EAAArnB,GACA8kB,EAAAuC,EAAAC,KAAAtnB,EACA,OAAAA,GAAAunB,EAAAzC,EAAA9kB,EAAAunB,EAAAzC,GAGAuC,EAAAG,OAAA,SAAAxnB,EAAAyd,GACA,MAAAyJ,GAAAlnB,EAAA,GAAAF,OAAAE,GAAA,MAAAyd,EAAA,EAAApZ,KAAA0X,MAAA0B,IAAAzd,GAGAqnB,EAAAI,MAAA,SAAAhG,EAAAiG,EAAAjK,GACA,GAAAgK,KAGA,IAFAhG,EAAA4F,EAAAC,KAAA7F,GACAhE,EAAA,MAAAA,EAAA,EAAApZ,KAAA0X,MAAA0B,KACAgE,EAAAiG,GAAAjK,EAAA,SAAAgK,EACA,GAAAA,GAAA5uB,KAAA,GAAAiH,OAAA2hB,UAAoCyF,EAAAzF,EAAAhE,GAAAwJ,EAAAxF,KAAAiG,EACpC,OAAAD,IAGAJ,EAAA3lB,OAAA,SAAA4b,GACA,MAAA0J,GAAA,SAAAhnB,GACA,GAAAA,KAAA,KAAAinB,EAAAjnB,IAAAsd,EAAAtd,MAAA2iB,QAAA3iB,EAAA,IACK,SAAAA,EAAAyd,GACL,GAAAzd,KACA,GAAAyd,EAAA,SAAAA,GAAA,GACA,KAAAyJ,EAAAlnB,GAAA,IAAAsd,EAAAtd,SACS,QAAAyd,GAAA,GACT,KAAAyJ,EAAAlnB,EAAA;CAAAsd,EAAAtd,SAMAmnB,IACAE,EAAAF,MAAA,SAAA1F,EAAAC,GAGA,MAFAzU,GAAA0V,SAAAlB,GAAAtU,EAAAwV,SAAAjB,GACAuF,EAAAha,GAAAga,EAAA9Z,GACA9I,KAAA0X,MAAAoL,EAAAla,EAAAE,KAGAka,EAAAM,MAAA,SAAAlK,GAEA,MADAA,GAAApZ,KAAA0X,MAAA0B,GACAmK,SAAAnK,MAAA,EACAA,EAAA,EACA4J,EAAA3lB,OAAA0lB,EACA,SAAAvlB,GAA6B,MAAAulB,GAAAvlB,GAAA4b,IAAA,GAC7B,SAAA5b,GAA6B,MAAAwlB,GAAAF,MAAA,EAAAtlB,GAAA4b,IAAA,IAH7B4J,EADA,OAQAA,EAmFA,QAAAQ,GAAA1vB,GACA,MAAA6uB,GAAA,SAAAhnB,GACAA,EAAA8nB,QAAA9nB,EAAA+nB,WAAA/nB,EAAAgoB,SAAA,EAAA7vB,GAAA,GACA6H,EAAAioB,SAAA,UACG,SAAAjoB,EAAAyd,GACHzd,EAAA8nB,QAAA9nB,EAAA+nB,UAAA,EAAAtK,IACG,SAAAgE,EAAAC,GACH,OAAAA,EAAAD,GAAAC,EAAAwG,oBAAAzG,EAAAyG,qBAAAC,GAAAC,IA6FA,QAAAC,GAAAlwB,GACA,MAAA6uB,GAAA,SAAAhnB,GACAA,EAAAsoB,WAAAtoB,EAAAuoB,cAAAvoB,EAAAwoB,YAAA,EAAArwB,GAAA,GACA6H,EAAAyoB,YAAA,UACG,SAAAzoB,EAAAyd,GACHzd,EAAAsoB,WAAAtoB,EAAAuoB,aAAA,EAAA9K,IACG,SAAAgE,EAAAC,GACH,OAAAA,EAAAD,GAAA2G,IA/PA,GAAAnb,GAAA,GAAAnN,MACAqN,EAAA,GAAArN,MAmEA4oB,EAAA1B,EAAA,aAEC,SAAAhnB,EAAAyd,GACDzd,EAAA2iB,SAAA3iB,EAAAyd,IACC,SAAAgE,EAAAC,GACD,MAAAA,GAAAD,GAIAiH,GAAAf,MAAA,SAAA5Z,GAEA,MADAA,GAAA1J,KAAA0X,MAAAhO,GACA6Z,SAAA7Z,MAAA,EACAA,EAAA,EACAiZ,EAAA,SAAAhnB,GACAA,EAAA2iB,QAAAte,KAAA0X,MAAA/b,EAAA+N,OACG,SAAA/N,EAAAyd,GACHzd,EAAA2iB,SAAA3iB,EAAAyd,EAAA1P,IACG,SAAA0T,EAAAC,GACH,OAAAA,EAAAD,GAAA1T,IANA2a,EADA,KAWA,IAAAC,GAAAD,EAAAjB,MAEAmB,EAAA,IACAT,EAAA,IACAU,EAAA,KACAC,EAAA,MACAV,EAAA,OAEAW,EAAA/B,EAAA,SAAAhnB,GACAA,EAAA2iB,QAAAte,KAAA0X,MAAA/b,EAAA4oB,OACC,SAAA5oB,EAAAyd,GACDzd,EAAA2iB,SAAA3iB,EAAAyd,EAAAmL,IACC,SAAAnH,EAAAC,GACD,OAAAA,EAAAD,GAAAmH,GACC,SAAA5oB,GACD,MAAAA,GAAAgpB,kBAGAC,EAAAF,EAAAtB,MAEAyB,EAAAlC,EAAA,SAAAhnB,GACAA,EAAA2iB,QAAAte,KAAA0X,MAAA/b,EAAAmoB,OACC,SAAAnoB,EAAAyd,GACDzd,EAAA2iB,SAAA3iB,EAAAyd,EAAA0K,IACC,SAAA1G,EAAAC,GACD,OAAAA,EAAAD,GAAA0G,GACC,SAAAnoB,GACD,MAAAA,GAAAmpB,eAGAC,EAAAF,EAAAzB,MAEA3mB,EAAAkmB,EAAA,SAAAhnB,GACA,GAAAwnB,GAAAxnB,EAAAkoB,oBAAAC,EAAAU,CACArB,GAAA,IAAAA,GAAAqB,GACA7oB,EAAA2iB,QAAAte,KAAA0X,QAAA/b,EAAAwnB,GAAAqB,KAAArB,IACC,SAAAxnB,EAAAyd,GACDzd,EAAA2iB,SAAA3iB,EAAAyd,EAAAoL,IACC,SAAApH,EAAAC,GACD,OAAAA,EAAAD,GAAAoH,GACC,SAAA7oB,GACD,MAAAA,GAAAqpB,aAGAC,EAAAxoB,EAAA2mB,MAEAnnB,EAAA0mB,EAAA,SAAAhnB,GACAA,EAAAioB,SAAA,UACC,SAAAjoB,EAAAyd,GACDzd,EAAA8nB,QAAA9nB,EAAA+nB,UAAAtK,IACC,SAAAgE,EAAAC,GACD,OAAAA,EAAAD,GAAAC,EAAAwG,oBAAAzG,EAAAyG,qBAAAC,GAAAW,GACC,SAAA9oB,GACD,MAAAA,GAAA+nB,UAAA,IAGAwB,EAAAjpB,EAAAmnB,MAaA+B,EAAA3B,EAAA,GACA4B,EAAA5B,EAAA,GACA6B,EAAA7B,EAAA,GACA8B,EAAA9B,EAAA,GACA+B,EAAA/B,EAAA,GACAgC,EAAAhC,EAAA,GACAiC,EAAAjC,EAAA,GAEAkC,EAAAP,EAAA/B,MACAuC,EAAAP,EAAAhC,MACAwC,EAAAP,EAAAjC,MACAyC,EAAAP,EAAAlC,MACA0C,EAAAP,EAAAnC,MACA2C,EAAAP,EAAApC,MACA4C,EAAAP,EAAArC,MAEApnB,EAAA2mB,EAAA,SAAAhnB,GACAA,EAAA8nB,QAAA,GACA9nB,EAAAioB,SAAA,UACC,SAAAjoB,EAAAyd,GACDzd,EAAAsqB,SAAAtqB,EAAAuqB,WAAA9M,IACC,SAAAgE,EAAAC,GACD,MAAAA,GAAA6I,WAAA9I,EAAA8I,WAAA,IAAA7I,EAAA8I,cAAA/I,EAAA+I,gBACC,SAAAxqB,GACD,MAAAA,GAAAuqB,aAGAE,EAAApqB,EAAAonB,MAEA/mB,EAAAsmB,EAAA,SAAAhnB,GACAA,EAAAsqB,SAAA,KACAtqB,EAAAioB,SAAA,UACC,SAAAjoB,EAAAyd,GACDzd,EAAA0qB,YAAA1qB,EAAAwqB,cAAA/M,IACC,SAAAgE,EAAAC,GACD,MAAAA,GAAA8I,cAAA/I,EAAA+I,eACC,SAAAxqB,GACD,MAAAA,GAAAwqB,eAIA9pB,GAAAinB,MAAA,SAAA5Z,GACA,MAAA6Z,UAAA7Z,EAAA1J,KAAA0X,MAAAhO,OAAA,EAAAiZ,EAAA,SAAAhnB,GACAA,EAAA0qB,YAAArmB,KAAA0X,MAAA/b,EAAAwqB,cAAAzc,MACA/N,EAAAsqB,SAAA,KACAtqB,EAAAioB,SAAA,UACG,SAAAjoB,EAAAyd,GACHzd,EAAA0qB,YAAA1qB,EAAAwqB,cAAA/M,EAAA1P,KALA,KASA,IAAA4c,GAAAjqB,EAAA+mB,MAEAmD,EAAA5D,EAAA,SAAAhnB,GACAA,EAAA6qB,cAAA,MACC,SAAA7qB,EAAAyd,GACDzd,EAAA2iB,SAAA3iB,EAAAyd,EAAA0K,IACC,SAAA1G,EAAAC,GACD,OAAAA,EAAAD,GAAA0G,GACC,SAAAnoB,GACD,MAAAA,GAAA8qB,kBAGAC,EAAAH,EAAAnD,MAEAuD,EAAAhE,EAAA,SAAAhnB,GACAA,EAAAirB,cAAA,QACC,SAAAjrB,EAAAyd,GACDzd,EAAA2iB,SAAA3iB,EAAAyd,EAAAoL,IACC,SAAApH,EAAAC,GACD,OAAAA,EAAAD,GAAAoH,GACC,SAAA7oB,GACD,MAAAA,GAAAkrB,gBAGAC,EAAAH,EAAAvD,MAEA2D,EAAApE,EAAA,SAAAhnB,GACAA,EAAAyoB,YAAA,UACC,SAAAzoB,EAAAyd,GACDzd,EAAAsoB,WAAAtoB,EAAAuoB,aAAA9K,IACC,SAAAgE,EAAAC,GACD,OAAAA,EAAAD,GAAAqH,GACC,SAAA9oB,GACD,MAAAA,GAAAuoB,aAAA,IAGA8C,EAAAD,EAAA3D,MAaA6D,EAAAjD,EAAA,GACAkD,EAAAlD,EAAA,GACAmD,EAAAnD,EAAA,GACAoD,EAAApD,EAAA,GACAqD,EAAArD,EAAA,GACAsD,EAAAtD,EAAA,GACAuD,EAAAvD,EAAA,GAEAwD,EAAAP,EAAA7D,MACAqE,EAAAP,EAAA9D,MACAsE,GAAAP,EAAA/D,MACAuE,GAAAP,EAAAhE,MACAwE,GAAAP,EAAAjE,MACAyE,GAAAP,EAAAlE,MACA0E,GAAAP,EAAAnE,MAEA2E,GAAApF,EAAA,SAAAhnB,GACAA,EAAAsoB,WAAA,GACAtoB,EAAAyoB,YAAA,UACC,SAAAzoB,EAAAyd,GACDzd,EAAAqsB,YAAArsB,EAAAssB,cAAA7O,IACC,SAAAgE,EAAAC,GACD,MAAAA,GAAA4K,cAAA7K,EAAA6K,cAAA,IAAA5K,EAAA6K,iBAAA9K,EAAA8K,mBACC,SAAAvsB,GACD,MAAAA,GAAAssB,gBAGAE,GAAAJ,GAAA3E,MAEAgF,GAAAzF,EAAA,SAAAhnB,GACAA,EAAAqsB,YAAA,KACArsB,EAAAyoB,YAAA,UACC,SAAAzoB,EAAAyd,GACDzd,EAAA0sB,eAAA1sB,EAAAusB,iBAAA9O,IACC,SAAAgE,EAAAC,GACD,MAAAA,GAAA6K,iBAAA9K,EAAA8K,kBACC,SAAAvsB,GACD,MAAAA,GAAAusB,kBAIAE,IAAA9E,MAAA,SAAA5Z,GACA,MAAA6Z,UAAA7Z,EAAA1J,KAAA0X,MAAAhO,OAAA,EAAAiZ,EAAA,SAAAhnB,GACAA,EAAA0sB,eAAAroB,KAAA0X,MAAA/b,EAAAusB,iBAAAxe,MACA/N,EAAAqsB,YAAA,KACArsB,EAAAyoB,YAAA,UACG,SAAAzoB,EAAAyd,GACHzd,EAAA0sB,eAAA1sB,EAAAusB,iBAAA9O,EAAA1P,KALA,KASA,IAAA4e,IAAAF,GAAAhF,KAEA/wB,GAAAk2B,aAAA5F,EACAtwB,EAAAm2B,gBAAAnE,EACAhyB,EAAAo2B,iBAAAnE,EACAjyB,EAAAq2B,eAAArE,EACAhyB,EAAAs2B,gBAAArE,EACAjyB,EAAAu2B,WAAAlE,EACAryB,EAAAw2B,YAAAjE,EACAvyB,EAAAy2B,UAAApE,EACAryB,EAAA02B,WAAAnE,EACAvyB,EAAA22B,WAAAnE,EACAxyB,EAAA42B,YAAAlE,EACA1yB,EAAA62B,SAAAzsB,EACApK,EAAA82B,UAAAlE,EACA5yB,EAAA+2B,QAAAntB,EACA5J,EAAAg3B,SAAAnE,EACA7yB,EAAAi3B,SAAAnE,EACA9yB,EAAAk3B,UAAA7D,EACArzB,EAAAm3B,WAAArE,EACA9yB,EAAAo3B,YAAA/D,EACArzB,EAAAq3B,WAAAtE,EACA/yB,EAAAs3B,YAAAhE,EACAtzB,EAAAu3B,YAAAvE,EACAhzB,EAAAw3B,aAAAjE,EACAvzB,EAAAy3B,cAAAxE,EACAjzB,EAAA03B,eAAAlE,EACAxzB,EAAA23B,aAAAzE,EACAlzB,EAAA43B,cAAAnE,EACAzzB,EAAA63B,WAAA1E,EACAnzB,EAAA83B,YAAApE,EACA1zB,EAAA+3B,aAAA3E,EACApzB,EAAAg4B,cAAArE,EACA3zB,EAAAi4B,UAAAtuB,EACA3J,EAAAk4B,WAAAnE,EACA/zB,EAAAm4B,SAAAnuB,EACAhK,EAAAo4B,UAAAnE,EACAj0B,EAAAk0B,YACAl0B,EAAAq0B,aACAr0B,EAAAs0B,UACAt0B,EAAAy0B,WACAz0B,EAAA00B,SACA10B,EAAA20B,UACA30B,EAAAq4B,QAAAzD,EACA50B,EAAAs4B,SAAAnD,EACAn1B,EAAA40B,YACA50B,EAAAm1B,aACAn1B,EAAA60B,YACA70B,EAAAo1B,aACAp1B,EAAA80B,aACA90B,EAAAq1B,eACAr1B,EAAA+0B,eACA/0B,EAAAs1B,iBACAt1B,EAAAg1B,cACAh1B,EAAAu1B,gBACAv1B,EAAAi1B,YACAj1B,EAAAw1B,cACAx1B,EAAAk1B,cACAl1B,EAAAy1B,gBACAz1B,EAAA01B,YACA11B,EAAA81B,aACA91B,EAAA+1B,WACA/1B,EAAAi2B,YAEAxzB,OAAAsQ,eAAA/S,EAAA,cAA8CoC,OAAA,OR++ExC,SAAUnC,EAAQD,EAASM,IS32FjC,SAAA2M,EAAAlN,GACAA,EAAAC,EAAAM,EAAA,MAGCF,KAAA,SAAAJ,EAAAu4B,GAAmC,YAEpC,SAAAC,GAAArtB,GACA,MAAAA,EAAAxE,GAAAwE,EAAAxE,EAAA,KACA,GAAA2C,GAAA,GAAAF,OAAA,EAAA+B,EAAAvK,EAAAuK,MAAAstB,EAAAttB,EAAAutB,EAAAvtB,EAAAuiB,EAAAviB,EAAAwtB,EAEA,OADArvB,GAAA0qB,YAAA7oB,EAAAxE,GACA2C,EAEA,UAAAF,MAAA+B,EAAAxE,EAAAwE,EAAAvK,EAAAuK,MAAAstB,EAAAttB,EAAAutB,EAAAvtB,EAAAuiB,EAAAviB,EAAAwtB,GAGA,QAAAC,GAAAztB,GACA,MAAAA,EAAAxE,GAAAwE,EAAAxE,EAAA,KACA,GAAA2C,GAAA,GAAAF,WAAAyvB,KAAA,EAAA1tB,EAAAvK,EAAAuK,MAAAstB,EAAAttB,EAAAutB,EAAAvtB,EAAAuiB,EAAAviB,EAAAwtB,GAEA,OADArvB,GAAA0sB,eAAA7qB,EAAAxE,GACA2C,EAEA,UAAAF,WAAAyvB,IAAA1tB,EAAAxE,EAAAwE,EAAAvK,EAAAuK,MAAAstB,EAAAttB,EAAAutB,EAAAvtB,EAAAuiB,EAAAviB,EAAAwtB,IAGA,QAAAG,GAAAnyB,GACA,OAAUA,IAAA/F,EAAA,EAAAuK,EAAA,EAAAstB,EAAA,EAAAC,EAAA,EAAAhL,EAAA,EAAAiL,EAAA,GAGV,QAAA3U,GAAA3Z,GA8GA,QAAAyb,GAAA3C,EAAA4V,GACA,gBAAAzvB,GACA,GAIAzI,GACAm4B,EACA9yB,EANAomB,KACA7qB,GAAA,EACAijB,EAAA,EACAhQ,EAAAyO,EAAA9gB,MAOA,KAFAiH,YAAAF,QAAAE,EAAA,GAAAF,OAAAE,MAEA7H,EAAAiT,GACA,KAAAyO,EAAAmD,WAAA7kB,KACA6qB,EAAAnqB,KAAAghB,EAAAf,MAAAsC,EAAAjjB,IACA,OAAAu3B,EAAAC,GAAAp4B,EAAAsiB,EAAA+V,SAAAz3B,KAAAZ,EAAAsiB,EAAA+V,SAAAz3B,GACAu3B,EAAA,MAAAn4B,EAAA,SACAqF,EAAA6yB,EAAAl4B,QAAAqF,EAAAoD,EAAA0vB,IACA1M,EAAAnqB,KAAAtB,GACA6jB,EAAAjjB,EAAA,EAKA,OADA6qB,GAAAnqB,KAAAghB,EAAAf,MAAAsC,EAAAjjB,IACA6qB,EAAAngB,KAAA,KAIA,QAAAgtB,GAAAhW,EAAAiW,GACA,gBAAA9M,GACA,GAAAnhB,GAAA2tB,EAAA,MACAr3B,EAAA43B,EAAAluB,EAAAgY,EAAAmJ,GAAA,KACA,IAAA7qB,GAAA6qB,EAAAjqB,OAAA,WAMA,IAHA,KAAA8I,OAAAstB,EAAAttB,EAAAstB,EAAA,MAAAttB,EAAArK,GAGA,KAAAqK,IAAA,KAAAA,GAAA,CACA,KAAAA,OAAAmuB,EAAA,KAAAnuB,GAAA,IACA,IAAAvB,GAAA,KAAAuB,GAAAytB,EAAAE,EAAA3tB,EAAAxE,IAAAmrB,YAAAsH,EAAAN,EAAA3tB,EAAAxE,IAAA2qB,QACAnmB,GAAAvK,EAAA,EACAuK,IAAA,KAAAA,MAAAmuB,EAAA,OAAAnuB,EAAAouB,GAAA3vB,EAAA,KAAAuB,EAAAmuB,EAAA,EAAAnuB,EAAAquB,GAAA5vB,EAAA,KAKA,WAAAuB,IACAA,EAAAstB,GAAAttB,EAAAsuB,EAAA,MACAtuB,EAAAutB,GAAAvtB,EAAAsuB,EAAA,IACAb,EAAAztB,IAIAiuB,EAAAjuB,IAIA,QAAAkuB,GAAAluB,EAAAgY,EAAAmJ,EAAA5H,GAOA,IANA,GAGA7jB,GACA4oB,EAJAhoB,EAAA,EACAiT,EAAAyO,EAAA9gB,OACAzB,EAAA0rB,EAAAjqB,OAIAZ,EAAAiT,GAAA,CACA,GAAAgQ,GAAA9jB,EAAA,QAEA,IADAC,EAAAsiB,EAAAmD,WAAA7kB,KACA,KAAAZ,GAGA,GAFAA,EAAAsiB,EAAA+V,OAAAz3B,KACAgoB,EAAAiQ,GAAA74B,IAAAo4B,IAAA9V,EAAA+V,OAAAz3B,KAAAZ,IACA4oB,IAAA/E,EAAA+E,EAAAte,EAAAmhB,EAAA5H,IAAA,eACO,IAAA7jB,GAAAyrB,EAAAhG,WAAA5B,KACP,SAIA,MAAAA,GAGA,QAAAiV,GAAAxuB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAAklB,GAAAlmB,KAAA4Y,EAAAlK,MAAA3gB,GACA,OAAAiT,IAAAvJ,EAAArK,EAAA+4B,GAAAnlB,EAAA,GAAAlB,eAAA/R,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAAy3B,GAAA3uB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAAqlB,GAAArmB,KAAA4Y,EAAAlK,MAAA3gB,GACA,OAAAiT,IAAAvJ,EAAAmuB,EAAAU,GAAAtlB,EAAA,GAAAlB,eAAA/R,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAA43B,IAAA9uB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAAwlB,GAAAxmB,KAAA4Y,EAAAlK,MAAA3gB,GACA,OAAAiT,IAAAvJ,EAAAmuB,EAAAa,GAAAzlB,EAAA,GAAAlB,eAAA/R,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAA+3B,IAAAjvB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA2lB,GAAA3mB,KAAA4Y,EAAAlK,MAAA3gB,GACA,OAAAiT,IAAAvJ,EAAAvK,EAAA05B,GAAA5lB,EAAA,GAAAlB,eAAA/R,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAAk4B,IAAApvB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA8lB,GAAA9mB,KAAA4Y,EAAAlK,MAAA3gB,GACA,OAAAiT,IAAAvJ,EAAAvK,EAAA65B,GAAA/lB,EAAA,GAAAlB,eAAA/R,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAAq4B,IAAAvvB,EAAAmhB,EAAA7qB,GACA,MAAA43B,GAAAluB,EAAAwvB,GAAArO,EAAA7qB,GAGA,QAAAm5B,IAAAzvB,EAAAmhB,EAAA7qB,GACA,MAAA43B,GAAAluB,EAAA0vB,GAAAvO,EAAA7qB,GAGA,QAAAq5B,IAAA3vB,EAAAmhB,EAAA7qB,GACA,MAAA43B,GAAAluB,EAAA4vB,GAAAzO,EAAA7qB,GAGA,QAAAu5B,IAAA7vB,GACA,MAAA8vB,IAAA9vB,EAAAmmB,UAGA,QAAA4J,IAAA/vB,GACA,MAAAgwB,IAAAhwB,EAAAmmB,UAGA,QAAA8J,IAAAjwB,GACA,MAAAkwB,IAAAlwB,EAAA0oB,YAGA,QAAAyH,IAAAnwB,GACA,MAAAowB,IAAApwB,EAAA0oB,YAGA,QAAA2H,IAAArwB,GACA,MAAAswB,MAAAtwB,EAAAwnB,YAAA,KAGA,QAAA+I,IAAAvwB,GACA,MAAA8vB,IAAA9vB,EAAA2mB,aAGA,QAAA6J,IAAAxwB,GACA,MAAAgwB,IAAAhwB,EAAA2mB,aAGA,QAAA8J,IAAAzwB,GACA,MAAAkwB,IAAAlwB,EAAAyqB,eAGA,QAAAiG,IAAA1wB,GACA,MAAAowB,IAAApwB,EAAAyqB,eAGA,QAAAkG,IAAA3wB,GACA,MAAAswB,MAAAtwB,EAAAqpB,eAAA,KAvQA,GAAAmG,IAAAtwB,EAAA0xB,SACAlB,GAAAxwB,EAAAf,KACAyxB,GAAA1wB,EAAA2xB,KACAP,GAAApxB,EAAA4xB,QACAd,GAAA9wB,EAAAwoB,KACAoI,GAAA5wB,EAAA6xB,UACAX,GAAAlxB,EAAA0pB,OACAsH,GAAAhxB,EAAA8xB,YAEAvC,GAAAwC,EAAAX,IACA5B,GAAAwC,EAAAZ,IACAvB,GAAAkC,EAAAjB,IACAhB,GAAAkC,EAAAlB,IACApB,GAAAqC,EAAAnB,IACAjB,GAAAqC,EAAApB,IACAT,GAAA4B,EAAAb,IACAd,GAAA4B,EAAAd,IACAlB,GAAA+B,EAAAf,IACAf,GAAA+B,EAAAhB,IAEAtC,IACA1tB,EAAA2vB,GACAxZ,EAAA0Z,GACA5vB,EAAA8vB,GACA3Z,EAAA6Z,GACAz6B,EAAA,KACAsK,EAAAmxB,EACA5sB,EAAA4sB,EACA7D,EAAA8D,EACAC,EAAAC,EACA/X,EAAAgY,EACA/D,EAAAgE,EACA/7B,EAAAg8B,EACAlE,EAAAmE,EACA/7B,EAAA06B,GACA9N,EAAAoP,EACAtD,EAAAuD,EACAzD,EAAA0D,EACAzD,EAAA0D,EACAvwB,EAAA,KACAgZ,EAAA,KACA/e,EAAAu2B,EACAC,EAAAC,EACA3D,EAAA4D,EACA7X,IAAA8X,GAGAC,IACAlyB,EAAAqwB,GACAla,EAAAma,GACArwB,EAAAswB,GACAna,EAAAoa,GACAh7B,EAAA,KACAsK,EAAAqyB,EACA9tB,EAAA8tB,EACA/E,EAAAgF,EACAjB,EAAAkB,EACAhZ,EAAAiZ,EACAhF,EAAAiF,EACAh9B,EAAAi9B,EACAnF,EAAAoF,EACAh9B,EAAAg7B,GACApO,EAAAqQ,EACAvE,EAAAwE,EACA1E,EAAA2E,EACA1E,EAAA2E,EACAxxB,EAAA,KACAgZ,EAAA,KACA/e,EAAAw3B,EACAhB,EAAAiB,EACA3E,EAAA4E,EACA7Y,IAAA8X,GAGA5D,IACAruB,EAAAyuB,EACAtY,EAAAyY,GACA3uB,EAAA8uB,GACA3Y,EAAA8Y,GACA15B,EAAA65B,GACAvvB,EAAAmzB,EACA5uB,EAAA4uB,EACA7F,EAAA8F,EACA/B,EAAA+B,EACA7Z,EAAA8Z,EACA7F,EAAA8F,EACA79B,EAAA89B,EACAhG,EAAAiG,EACA79B,EAAA64B,EACAjM,EAAAkR,EACApF,EAAAqF,EACAvF,EAAAwF,EACAvF,EAAAwF,EACAryB,EAAAkuB,GACAlV,EAAAoV,GACAn0B,EAAAq4B,EACA7B,EAAA8B,EACAxF,EAAAyF,EACA1Z,IAAA2Z,EAwKA,OApKApG,IAAArsB,EAAAoZ,EAAA+U,GAAA9B,IACAA,GAAArT,EAAAI,EAAAiV,GAAAhC,IACAA,GAAAl4B,EAAAilB,EAAA6U,GAAA5B,IACAwE,GAAA7wB,EAAAoZ,EAAA+U,GAAA0C,IACAA,GAAA7X,EAAAI,EAAAiV,GAAAwC,IACAA,GAAA18B,EAAAilB,EAAA6U,GAAA4C,KAgKAr3B,OAAA,SAAAid,GACA,GAAA3Y,GAAAsb,EAAA3C,GAAA,GAAA4V,GAEA,OADAvuB,GAAAxD,SAAA,WAA+B,MAAAmc,IAC/B3Y,GAEAif,MAAA,SAAAtG,GACA,GAAAriB,GAAAq4B,EAAAhW,GAAA,GAAAqV,EAEA,OADA13B,GAAAkG,SAAA,WAA+B,MAAAmc,IAC/BriB,GAEAs+B,UAAA,SAAAjc,GACA,GAAA3Y,GAAAsb,EAAA3C,GAAA,GAAAoa,GAEA,OADA/yB,GAAAxD,SAAA,WAA+B,MAAAmc,IAC/B3Y,GAEA60B,SAAA,SAAAlc,GACA,GAAAriB,GAAAq4B,EAAAhW,EAAAyV,EAEA,OADA93B,GAAAkG,SAAA,WAA+B,MAAAmc,IAC/BriB,IAUA,QAAAk4B,GAAA52B,EAAAmhB,EAAA5f,GACA,GAAA8f,GAAArhB,EAAA,SACAkqB,GAAA7I,GAAArhB,KAAA,GACAC,EAAAiqB,EAAAjqB,MACA,OAAAohB,IAAAphB,EAAAsB,EAAA,GAAApB,OAAAoB,EAAAtB,EAAA,GAAA8J,KAAAoX,GAAA+I,KAGA,QAAAgT,GAAAtvB,GACA,MAAAA,GAAA8U,QAAAya,GAAA,QAGA,QAAAnD,GAAAoD,GACA,UAAAznB,QAAA,OAAAynB,EAAA10B,IAAAw0B,GAAAnzB,KAAA,cAGA,QAAAkwB,GAAAmD,GAEA,IADA,GAAA10B,MAAcrJ,GAAA,EAAAiT,EAAA8qB,EAAAn9B,SACdZ,EAAAiT,GAAA5J,EAAA00B,EAAA/9B,GAAA+R,eAAA/R,CACA,OAAAqJ,GAGA,QAAAg0B,GAAA3zB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,IAAAvJ,EAAAmuB,GAAA5kB,EAAA,GAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAAw8B,GAAA1zB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,GACA,OAAAiT,IAAAvJ,EAAAquB,GAAA9kB,EAAA,GAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAA08B,GAAA5zB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,GACA,OAAAiT,IAAAvJ,EAAAouB,GAAA7kB,EAAA,GAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAA48B,GAAA9zB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,IAAAvJ,EAAAxE,GAAA+N,EAAA,GAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAA28B,GAAA7zB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,IAAAvJ,EAAAxE,GAAA+N,EAAA,KAAAA,EAAA,gBAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAA68B,GAAA/zB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA,gCAAAhB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,IAAAvJ,EAAAsuB,EAAA/kB,EAAA,OAAAA,EAAA,IAAAA,EAAA,WAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAAq8B,GAAAvzB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,IAAAvJ,EAAAvK,EAAA8T,EAAA,KAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAAi8B,GAAAnzB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,IAAAvJ,KAAAuJ,EAAA,GAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAAm8B,GAAArzB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,IAAAvJ,EAAAvK,EAAA,EAAAuK,KAAAuJ,EAAA,GAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAAk8B,GAAApzB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,IAAAvJ,EAAAstB,GAAA/jB,EAAA,GAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAAs8B,GAAAxzB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,IAAAvJ,EAAAutB,GAAAhkB,EAAA,GAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAAu8B,GAAAzzB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,IAAAvJ,EAAAuiB,GAAAhZ,EAAA,GAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAAo8B,GAAAtzB,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAA+qB,GAAA/rB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,IAAAvJ,EAAAwtB,GAAAjkB,EAAA,GAAAjT,EAAAiT,EAAA,GAAArS,SAAA,EAGA,QAAA88B,GAAAh0B,EAAAmhB,EAAA7qB,GACA,GAAAiT,GAAAgrB,GAAAhsB,KAAA4Y,EAAAlK,MAAA3gB,IAAA,GACA,OAAAiT,GAAAjT,EAAAiT,EAAA,GAAArS,QAAA,EAGA,QAAAi6B,GAAAnxB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAAkmB,UAAAvwB,EAAA,GAGA,QAAAy7B,GAAApxB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAAwnB,WAAA7xB,EAAA,GAGA,QAAA27B,GAAAtxB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAAwnB,WAAA,OAAA7xB,EAAA,GAGA,QAAA47B,GAAAvxB,EAAArK,GACA,MAAAk4B,GAAA,EAAAT,EAAAxB,QAAAtG,MAAA8H,EAAAJ,SAAAhtB,MAAArK,EAAA,GAGA,QAAA67B,GAAAxxB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAAw0B,kBAAA7+B,EAAA,GAGA,QAAA87B,GAAAzxB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAA0oB,WAAA,EAAA/yB,EAAA,GAGA,QAAA+7B,GAAA1xB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAAsnB,aAAA3xB,EAAA,GAGA,QAAAg8B,GAAA3xB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAAy0B,aAAA9+B,EAAA,GAGA,QAAAi8B,GAAA5xB,EAAArK,GACA,MAAAk4B,GAAAT,EAAApB,WAAA1G,MAAA8H,EAAAJ,SAAAhtB,MAAArK,EAAA,GAGA,QAAAk8B,GAAA7xB,GACA,MAAAA,GAAAmmB,SAGA,QAAA2L,GAAA9xB,EAAArK,GACA,MAAAk4B,GAAAT,EAAAlB,WAAA5G,MAAA8H,EAAAJ,SAAAhtB,MAAArK,EAAA,GAGA,QAAAo8B,GAAA/xB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAA2oB,cAAA,IAAAhzB,EAAA,GAGA,QAAAs8B,GAAAjyB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAA2oB,cAAA,IAAAhzB,EAAA,GAGA,QAAAu8B,GAAAlyB,GACA,GAAA+K,GAAA/K,EAAAqmB,mBACA,QAAAtb,EAAA,OAAAA,IAAA,QACA8iB,EAAA9iB,EAAA,YACA8iB,EAAA9iB,EAAA,UAGA,QAAAsnB,GAAAryB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAA0mB,aAAA/wB,EAAA,GAGA,QAAA28B,GAAAtyB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAAqpB,cAAA1zB,EAAA,GAGA,QAAA48B,GAAAvyB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAAqpB,cAAA,OAAA1zB,EAAA,GAGA,QAAA68B,GAAAxyB,EAAArK,GACA,MAAAk4B,GAAA,EAAAT,EAAA7D,OAAAjE,MAAA8H,EAAAxC,QAAA5qB,MAAArK,EAAA,GAGA,QAAA88B,GAAAzyB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAA00B,qBAAA/+B,EAAA,GAGA,QAAA+8B,GAAA1yB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAAyqB,cAAA,EAAA90B,EAAA,GAGA,QAAAg9B,GAAA3yB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAAipB,gBAAAtzB,EAAA,GAGA,QAAAi9B,GAAA5yB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAAmnB,gBAAAxxB,EAAA,GAGA,QAAAk9B,GAAA7yB,EAAArK,GACA,MAAAk4B,GAAAT,EAAA3D,UAAAnE,MAAA8H,EAAAxC,QAAA5qB,MAAArK,EAAA,GAGA,QAAAm9B,GAAA9yB,GACA,MAAAA,GAAA2mB,YAGA,QAAAoM,GAAA/yB,EAAArK,GACA,MAAAk4B,GAAAT,EAAA1D,UAAApE,MAAA8H,EAAAxC,QAAA5qB,MAAArK,EAAA,GAGA,QAAAq9B,GAAAhzB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAA0qB,iBAAA,IAAA/0B,EAAA,GAGA,QAAAs9B,GAAAjzB,EAAArK,GACA,MAAAk4B,GAAA7tB,EAAA0qB,iBAAA,IAAA/0B,EAAA,GAGA,QAAAu9B,KACA,cAGA,QAAAf,KACA,UAoBA,QAAAvZ,GAAA7Q,GAMA,MALA4sB,IAAA9b,EAAA9Q,GACAlT,EAAA4M,WAAAkzB,GAAA55B,OACAlG,EAAA+/B,UAAAD,GAAArW,MACAzpB,EAAAo/B,UAAAU,GAAAV,UACAp/B,EAAAq/B,SAAAS,GAAAT,SACAS,GAKA,QAAAE,IAAA12B,GACA,MAAAA,GAAA22B,cAOA,QAAAC,IAAA5T,GACA,GAAAhjB,GAAA,GAAAF,MAAAkjB,EACA,OAAAjL,OAAA/X,GAAA,KAAAA,EA7PA,GAuNAw2B,IAvNA7G,IAAYkH,IAAA,GAAAte,EAAA,IAAAue,EAAA,KACZX,GAAA,UACAC,GAAA,KACAH,GAAA,iCA0NAxb,IACAgY,SAAA,SACAzyB,KAAA,aACA0yB,KAAA,eACAC,SAAA,WACApJ,MAAA,wEACAqJ,WAAA,2CACAnI,QAAA,+GACAoI,aAAA,0EAYA,IAAAkE,IAAA,wBAMAC,GAAAl3B,KAAA/H,UAAA4+B,YACAD,GACAhgC,EAAAo/B,UAAAiB,IAOAE,IAAA,GAAAn3B,MAAA,4BACA82B,GACAlgC,EAAAq/B,SAAAgB,GAEArgC,GAAAwgC,wBAAAzc,EACA/jB,EAAAygC,iBAAAzc,EACAhkB,EAAA0gC,UAAAJ,GACAtgC,EAAA2gC,SAAAJ,GAEA99B,OAAAsQ,eAAA/S,EAAA,cAA8CoC,OAAA,OTq3FxC,SAAUnC,EAAQD,EAASM,IU77GjC,SAAA2M,EAAAlN,GACAA,EAAAC,IAGCI,KAAA,SAAAJ,GAA4B,YAkB7B,SAAA4gC,GAAAt5B,GACA,kBACA,GAAA+gB,GAAAjoB,KAAAygC,cACAC,EAAA1gC,KAAA2gC,YACA,OAAAD,KAAAE,GAAA3Y,EAAAG,gBAAAuY,eAAAC,EACA3Y,EAAAC,cAAAhhB,GACA+gB,EAAAc,gBAAA2X,EAAAx5B,IAIA,QAAA25B,GAAAC,GACA,kBACA,MAAA9gC,MAAAygC,cAAA1X,gBAAA+X,EAAAC,MAAAD,EAAAE,QAaA,QAAAA,KACA,UAAAC,GAGA,QAAAA,KACAjhC,KAAAyhB,EAAA,OAAAyf,IAAAt6B,SAAA,IAuDA,QAAAu6B,GAAAC,EAAA5U,EAAApG,GAEA,MADAgb,GAAAC,EAAAD,EAAA5U,EAAApG,GACA,SAAAkb,GACA,GAAAC,GAAAD,EAAAE,aACAD,SAAAvhC,MAAA,EAAAuhC,EAAAE,wBAAAzhC,QACAohC,EAAA7gC,KAAAP,KAAAshC,IAKA,QAAAD,GAAAD,EAAA5U,EAAApG,GACA,gBAAAsb,GACA,GAAAC,GAAA/hC,EAAA0hC,KACA1hC,GAAA0hC,MAAAI,CACA,KACAN,EAAA7gC,KAAAP,UAAA4hC,SAAApV,EAAApG,GACK,QACLxmB,EAAA0hC,MAAAK,IAKA,QAAA/f,GAAAC,GACA,MAAAA,GAAA1O,OAAAxH,MAAA,SAAAjB,IAAA,SAAAqC,GACA,GAAA7F,GAAA,GAAA7F,EAAA0L,EAAAgV,QAAA,IAEA,OADA1gB,IAAA,IAAA6F,EAAA6F,EAAAiV,MAAA3gB,EAAA,GAAA0L,IAAAiV,MAAA,EAAA3gB,KACY4gB,KAAAlV,EAAA7F,UAIZ,QAAA26B,GAAArf,GACA,kBACA,GAAAD,GAAAviB,KAAA8hC,IACA,IAAAvf,EAAA,CACA,OAAA7N,GAAA4P,EAAA,EAAAjjB,GAAA,EAAAb,EAAA+hB,EAAAtgB,OAA6CqiB,EAAA9jB,IAAO8jB,EACpD5P,EAAA6N,EAAA+B,GAAA9B,EAAAP,MAAAvN,EAAAuN,OAAAO,EAAAP,MAAAvN,EAAAxN,OAAAsb,EAAAtb,KAGAqb,IAAAlhB,GAAAqT,EAFA1U,KAAA+hC,oBAAArtB,EAAAuN,KAAAvN,EAAA0sB,SAAA1sB,EAAAstB,WAKA3gC,EAAAkhB,EAAAtgB,OAAAZ,QACArB,MAAA8hC,OAIA,QAAAG,GAAAzf,EAAAxgB,EAAAggC,GACA,GAAAE,GAAAC,GAAA/tB,eAAAoO,EAAAP,MAAAkf,EAAAE,CACA,iBAAAt2B,EAAA1J,EAAA+kB,GACA,GAAA1R,GAAA6N,EAAAviB,KAAA8hC,KAAAV,EAAAc,EAAAlgC,EAAAX,EAAA+kB,EACA,IAAA7D,EAAA,OAAA+B,GAAA,EAAA9jB,EAAA+hB,EAAAtgB,OAA0CqiB,EAAA9jB,IAAO8jB,EACjD,IAAA5P,EAAA6N,EAAA+B,IAAArC,OAAAO,EAAAP,MAAAvN,EAAAxN,OAAAsb,EAAAtb,KAIA,MAHAlH,MAAA+hC,oBAAArtB,EAAAuN,KAAAvN,EAAA0sB,SAAA1sB,EAAAstB,SACAhiC,KAAAoiC,iBAAA1tB,EAAAuN,KAAAvN,EAAA0sB,WAAA1sB,EAAAstB,gBACAttB,EAAA1S,QAIAhC,MAAAoiC,iBAAA5f,EAAAP,KAAAmf,EAAAY,GACAttB,GAASuN,KAAAO,EAAAP,KAAA/a,KAAAsb,EAAAtb,KAAAlF,QAAAo/B,WAAAY,WACTzf,EACAA,EAAAxgB,KAAA2S,GADA1U,KAAA8hC,MAAAptB,IA0BA,QAAA2tB,GAAAX,EAAAN,EAAAze,EAAAC,GACA,GAAA+e,GAAA/hC,EAAA0hC,KACAI,GAAAY,YAAA1iC,EAAA0hC,MACA1hC,EAAA0hC,MAAAI,CACA,KACA,MAAAN,GAAAve,MAAAF,EAAAC,GACG,QACHhjB,EAAA0hC,MAAAK,GA8BA,QAAAY,MAuBA,QAAAC,KACA,SA8CA,QAAAC,GAAA5vB,EAAA6vB,GACA1iC,KAAAygC,cAAA5tB,EAAA4tB,cACAzgC,KAAA2gC,aAAA9tB,EAAA8tB,aACA3gC,KAAA2iC,MAAA,KACA3iC,KAAA4iC,QAAA/vB,EACA7S,KAAA4hC,SAAAc,EAmBA,QAAAG,GAAAhwB,EAAAuT,EAAA0c,EAAAn2B,EAAAo2B,EAAAh/B,GASA,IARA,GACA+D,GADAzG,EAAA,EAEA2hC,EAAA5c,EAAAnkB,OACAghC,EAAAl/B,EAAA9B,OAKQZ,EAAA4hC,IAAgB5hC,GACxByG,EAAAse,EAAA/kB,KACAyG,EAAA85B,SAAA79B,EAAA1C,GACAsL,EAAAtL,GAAAyG,GAEAg7B,EAAAzhC,GAAA,GAAAohC,GAAA5vB,EAAA9O,EAAA1C,GAKA,MAAQA,EAAA2hC,IAAiB3hC,GACzByG,EAAAse,EAAA/kB,MACA0hC,EAAA1hC,GAAAyG,GAKA,QAAAo7B,GAAArwB,EAAAuT,EAAA0c,EAAAn2B,EAAAo2B,EAAAh/B,EAAAiP,GACA,GAAA3R,GACAyG,EAKAq7B,EAJAC,KACAJ,EAAA5c,EAAAnkB,OACAghC,EAAAl/B,EAAA9B,OACAohC,EAAA,GAAAlhC,OAAA6gC,EAKA,KAAA3hC,EAAA,EAAaA,EAAA2hC,IAAiB3hC,GAC9ByG,EAAAse,EAAA/kB,MACAgiC,EAAAhiC,GAAA8hC,EAAAG,GAAAtwB,EAAAzS,KAAAuH,IAAA85B,SAAAvgC,EAAA+kB,GACA+c,IAAAC,GACAL,EAAA1hC,GAAAyG,EAEAs7B,EAAAD,GAAAr7B,EAQA,KAAAzG,EAAA,EAAaA,EAAA4hC,IAAgB5hC,EAC7B8hC,EAAAG,GAAAtwB,EAAAzS,KAAAsS,EAAA9O,EAAA1C,KAAA0C,IACA+D,EAAAs7B,EAAAD,KACAx2B,EAAAtL,GAAAyG,EACAA,EAAA85B,SAAA79B,EAAA1C,GACA+hC,EAAAD,GAAA,MAEAL,EAAAzhC,GAAA,GAAAohC,GAAA5vB,EAAA9O,EAAA1C,GAKA,KAAAA,EAAA,EAAaA,EAAA2hC,IAAiB3hC,GAC9ByG,EAAAse,EAAA/kB,KAAA+hC,EAAAC,EAAAhiC,MAAAyG,IACAi7B,EAAA1hC,GAAAyG,GAsGA,QAAAy7B,GAAAt4B,EAAAC,GACA,MAAAD,GAAAC,GAAA,EAAAD,EAAAC,EAAA,EAAAD,GAAAC,EAAA,EAAAmJ,IAiDA,QAAAmvB,GAAAt8B,GACA,kBACAlH,KAAAyjC,gBAAAv8B,IAIA,QAAAw8B,GAAA5C,GACA,kBACA9gC,KAAA2jC,kBAAA7C,EAAAC,MAAAD,EAAAE,QAIA,QAAA4C,GAAA18B,EAAAlF,GACA,kBACAhC,KAAAgpB,aAAA9hB,EAAAlF,IAIA,QAAA6hC,GAAA/C,EAAA9+B,GACA,kBACAhC,KAAA8jC,eAAAhD,EAAAC,MAAAD,EAAAE,MAAAh/B,IAIA,QAAA+hC,GAAA78B,EAAAlF,GACA,kBACA,GAAAgiC,GAAAhiC,EAAA6gB,MAAA7iB,KAAAwK,UACA,OAAAw5B,EAAAhkC,KAAAyjC,gBAAAv8B,GACAlH,KAAAgpB,aAAA9hB,EAAA88B,IAIA,QAAAC,GAAAnD,EAAA9+B,GACA,kBACA,GAAAgiC,GAAAhiC,EAAA6gB,MAAA7iB,KAAAwK,UACA,OAAAw5B,EAAAhkC,KAAA2jC,kBAAA7C,EAAAC,MAAAD,EAAAE,OACAhhC,KAAA8jC,eAAAhD,EAAAC,MAAAD,EAAAE,MAAAgD,IA0BA,QAAAE,GAAAh9B,GACA,kBACAlH,KAAAoF,MAAA++B,eAAAj9B,IAIA,QAAAk9B,GAAAl9B,EAAAlF,EAAAqiC,GACA,kBACArkC,KAAAoF,MAAAk/B,YAAAp9B,EAAAlF,EAAAqiC,IAIA,QAAAE,GAAAr9B,EAAAlF,EAAAqiC,GACA,kBACA,GAAAL,GAAAhiC,EAAA6gB,MAAA7iB,KAAAwK,UACA,OAAAw5B,EAAAhkC,KAAAoF,MAAA++B,eAAAj9B,GACAlH,KAAAoF,MAAAk/B,YAAAp9B,EAAA88B,EAAAK,IAaA,QAAAG,GAAA18B,EAAAZ,GACA,MAAAY,GAAA1C,MAAAsjB,iBAAAxhB,IACAohB,GAAAxgB,GAAA0gB,iBAAA1gB,EAAA,MAAA4gB,iBAAAxhB,GAGA,QAAAu9B,GAAAv9B,GACA,wBACAlH,MAAAkH,IAIA,QAAAw9B,GAAAx9B,EAAAlF,GACA,kBACAhC,KAAAkH,GAAAlF,GAIA,QAAA2iC,GAAAz9B,EAAAlF,GACA,kBACA,GAAAgiC,GAAAhiC,EAAA6gB,MAAA7iB,KAAAwK,UACA,OAAAw5B,QAAAhkC,MAAAkH,GACAlH,KAAAkH,GAAA88B,GAaA,QAAAY,GAAA1Y,GACA,MAAAA,GAAA/Y,OAAAxH,MAAA,SAGA,QAAAk5B,GAAA/8B,GACA,MAAAA,GAAA+8B,WAAA,GAAAC,GAAAh9B,GAGA,QAAAg9B,GAAAh9B,GACA9H,KAAA+kC,MAAAj9B,EACA9H,KAAAglC,OAAAJ,EAAA98B,EAAAm9B,aAAA,cAuBA,QAAAC,GAAAp9B,EAAAs3B,GAEA,IADA,GAAA+F,GAAAN,EAAA/8B,GAAAzG,GAAA,EAAAiT,EAAA8qB,EAAAn9B,SACAZ,EAAAiT,GAAA6wB,EAAAC,IAAAhG,EAAA/9B,IAGA,QAAAgkC,GAAAv9B,EAAAs3B,GAEA,IADA,GAAA+F,GAAAN,EAAA/8B,GAAAzG,GAAA,EAAAiT,EAAA8qB,EAAAn9B,SACAZ,EAAAiT,GAAA6wB,EAAArgC,OAAAs6B,EAAA/9B,IAGA,QAAAikC,GAAAlG,GACA,kBACA8F,EAAAllC,KAAAo/B,IAIA,QAAAmG,GAAAnG,GACA,kBACAiG,EAAArlC,KAAAo/B,IAIA,QAAAoG,GAAApG,EAAAp9B,GACA,mBACAA,EAAA6gB,MAAA7iB,KAAAwK,WAAA06B,EAAAG,GAAArlC,KAAAo/B,IAmBA,QAAAqG,KACAzlC,KAAA0lC,YAAA,GAGA,QAAAC,GAAA3jC,GACA,kBACAhC,KAAA0lC,YAAA1jC,GAIA,QAAA4jC,GAAA5jC,GACA,kBACA,GAAAgiC,GAAAhiC,EAAA6gB,MAAA7iB,KAAAwK,UACAxK,MAAA0lC,YAAA,MAAA1B,EAAA,GAAAA,GAaA,QAAA6B,KACA7lC,KAAA8lC,UAAA,GAGA,QAAAC,GAAA/jC,GACA,kBACAhC,KAAA8lC,UAAA9jC,GAIA,QAAAgkC,GAAAhkC,GACA,kBACA,GAAAgiC,GAAAhiC,EAAA6gB,MAAA7iB,KAAAwK,UACAxK,MAAA8lC,UAAA,MAAA9B,EAAA,GAAAA,GAaA,QAAAiC,KACAjmC,KAAAkmC,aAAAlmC,KAAAmmC,WAAA1d,YAAAzoB,MAOA,QAAAomC,KACApmC,KAAAqmC,iBAAArmC,KAAAmmC,WAAAG,aAAAtmC,UAAAmmC,WAAAI,YAcA,QAAAC,KACA,YAWA,QAAA1hC,KACA,GAAA+N,GAAA7S,KAAAmmC,UACAtzB,MAAA8V,YAAA3oB,MAaA,QAAAymC,GAAA3+B,EAAAma,EAAAykB,GACA,GAAAC,GAAAre,GAAAxgB,GACAw5B,EAAAqF,EAAAC,WAEA,mBAAAtF,GACAA,EAAA,GAAAA,GAAArf,EAAAykB,IAEApF,EAAAqF,EAAA1e,SAAA4e,YAAA,SACAH,GAAApF,EAAAwF,UAAA7kB,EAAAykB,EAAAK,QAAAL,EAAAM,YAAA1F,EAAA2F,OAAAP,EAAAO,QACA3F,EAAAwF,UAAA7kB,GAAA,OAGAna,EAAA2+B,cAAAnF,GAGA,QAAA4F,GAAAjlB,EAAAykB,GACA,kBACA,MAAAD,GAAAzmC,KAAAiiB,EAAAykB,IAIA,QAAAS,GAAAllB,EAAAykB,GACA,kBACA,MAAAD,GAAAzmC,KAAAiiB,EAAAykB,EAAA7jB,MAAA7iB,KAAAwK,aAYA,QAAA48B,GAAAC,EAAAC,GACAtnC,KAAAunC,QAAAF,EACArnC,KAAAwnC,SAAAF,EAGA,QAAAG,KACA,UAAAL,KAAAnf,SAAAG,kBAAA1oB,IA/2BA,GAAAkhC,GAAA,+BAEA8G,IACAvjC,IAAA,6BACAy8B,QACA+G,MAAA,+BACAC,IAAA,uCACAC,MAAA,iCAGAC,GAAA,SAAA5gC,GACA,GAAA0e,GAAA1e,GAAA,GAAA7F,EAAAukB,EAAA7D,QAAA,IAEA,OADA1gB,IAAA,cAAAukB,EAAA1e,EAAA8a,MAAA,EAAA3gB,MAAA6F,IAAA8a,MAAA3gB,EAAA,IACAqmC,GAAAtzB,eAAAwR,IAA8Cmb,MAAA2G,GAAA9hB,GAAAob,MAAA95B,GAAuCA,GAmBrF6gC,GAAA,SAAA7gC,GACA,GAAA45B,GAAAgH,GAAA5gC,EACA,QAAA45B,EAAAE,MACAH,EACAL,GAAAM,IAGAI,GAAA,CAUAD,GAAAhgC,UAAA+/B,EAAA//B,WACAD,YAAAigC,EACA/e,IAAA,SAAApa,GAEA,IADA,GAAAzH,GAAAL,KAAAyhB,IACAphB,IAAAyH,KAAA,KAAAA,IAAAq+B,YAAA,MACA,OAAAr+B,GAAAzH,IAEA8hB,IAAA,SAAAra,EAAA9F,GACA,MAAA8F,GAAA9H,KAAAyhB,GAAAzf,GAEA8C,OAAA,SAAAgD,GACA,MAAA9H,MAAAyhB,IAAA3Z,aAAA9H,KAAAyhB,IAEA7a,SAAA,WACA,MAAA5G,MAAAyhB,GAIA,IAAAumB,IAAA,SAAAC,GACA,kBACA,MAAAjoC,MAAAkoC,QAAAD,IAIA,uBAAAhgB,UAAA,CACA,GAAAkgB,IAAAlgB,SAAAG,eACA,KAAA+f,GAAAD,QAAA,CACA,GAAAE,IAAAD,GAAAE,uBACAF,GAAAG,mBACAH,GAAAI,oBACAJ,GAAAK,gBACAR,IAAA,SAAAC,GACA,kBACA,MAAAG,IAAA7nC,KAAAP,KAAAioC,MAMA,GAAAQ,IAAAT,GAEA7F,KAIA,IAFAviC,EAAA0hC,MAAA,KAEA,mBAAArZ,UAAA,CACA,GAAAygB,IAAAzgB,SAAAG,eACA,iBAAAsgB,MACAvG,IAAoBwG,WAAA,YAAAC,WAAA,aAqEpB,GAAAC,IAAA,SAAArmB,EAAAxgB,EAAAggC,GACA,GAAA3gC,GAAA0L,EAAA8U,EAAAD,EAAAY,EAAA,IAAAlO,EAAAuN,EAAA5f,MAEA,OAAAuI,UAAAvI,OAAA,IAcA,IAFAsgB,EAAAvgB,EAAAigC,EAAAJ,EACA,MAAAG,OAAA,GACA3gC,EAAA,EAAaA,EAAAiT,IAAOjT,EAAArB,KAAAoD,KAAAmf,EAAAV,EAAAxgB,GAAAW,EAAAggC,GACpB,OAAAhiC,MAdA,GAAAuiB,GAAAviB,KAAA8H,OAAAg6B,IACA,IAAAvf,EAAA,OAAA7N,GAAA4P,EAAA,EAAA9jB,EAAA+hB,EAAAtgB,OAA6CqiB,EAAA9jB,IAAO8jB,EACpD,IAAAjjB,EAAA,EAAAqT,EAAA6N,EAAA+B,GAA4BjjB,EAAAiT,IAAOjT,EACnC,IAAA0L,EAAA8U,EAAAxgB,IAAA4gB,OAAAvN,EAAAuN,MAAAlV,EAAA7F,OAAAwN,EAAAxN,KACA,MAAAwN,GAAA1S,QAwBAsgC,GAAA,WAEA,IADA,GAAArW,GAAA6c,EAAAlpC,EAAA0hC,MACArV,EAAA6c,EAAAxG,aAAAwG,EAAA7c,CACA,OAAA6c,IAGAC,GAAA,SAAAjhC,EAAAw5B,GACA,GAAAn9B,GAAA2D,EAAAkhC,iBAAAlhC,CAEA,IAAA3D,EAAA8kC,eAAA,CACA,GAAAF,GAAA5kC,EAAA8kC,gBAGA,OAFAF,GAAAz8B,EAAAg1B,EAAA4H,QAAAH,EAAAxiC,EAAA+6B,EAAA6H,QACAJ,IAAAK,gBAAAthC,EAAAuhC,eAAAC,YACAP,EAAAz8B,EAAAy8B,EAAAxiC,GAGA,GAAAgjC,GAAAzhC,EAAA0hC,uBACA,QAAAlI,EAAA4H,QAAAK,EAAA9lC,KAAAqE,EAAA2hC,WAAAnI,EAAA6H,QAAAI,EAAA1lC,IAAAiE,EAAA4hC,YAGAC,GAAA,SAAA7hC,GACA,GAAAw5B,GAAAgB,IAEA,OADAhB,GAAAsI,iBAAAtI,IAAAsI,eAAA,IACAb,GAAAjhC,EAAAw5B,IAKA2G,GAAA,SAAAA,GACA,aAAAA,EAAA1F,EAAA,WACA,MAAAviC,MAAA6pC,cAAA5B,KAIA6B,GAAA,SAAAvlC,GACA,kBAAAA,OAAA0jC,GAAA1jC,GAEA,QAAA8iC,GAAArnC,KAAAunC,QAAA/mC,EAAA6mC,EAAAplC,OAAA8nC,EAAA,GAAA5nC,OAAA3B,GAAA8jB,EAAA,EAAqFA,EAAA9jB,IAAO8jB,EAC5F,OAAAxc,GAAAkiC,EAAA5jB,EAAAihB,EAAA/iB,GAAAhQ,EAAA8R,EAAAnkB,OAAAgoC,EAAAF,EAAAzlB,GAAA,GAAAniB,OAAAmS,GAAAjT,EAAA,EAA+GA,EAAAiT,IAAOjT,GACtHyG,EAAAse,EAAA/kB,MAAA2oC,EAAAzlC,EAAAhE,KAAAuH,IAAA85B,SAAAvgC,EAAA+kB,MACA,YAAAte,KAAAkiC,EAAApI,SAAA95B,EAAA85B,UACAqI,EAAA5oC,GAAA2oC,EAKA,WAAA5C,GAAA2C,EAAA/pC,KAAAwnC,WAOA0C,GAAA,SAAAjC,GACA,aAAAA,EAAAzF,EAAA,WACA,MAAAxiC,MAAAmqC,iBAAAlC,KAIAmC,GAAA,SAAA7lC,GACA,kBAAAA,OAAA2lC,GAAA3lC,GAEA,QAAA8iC,GAAArnC,KAAAunC,QAAA/mC,EAAA6mC,EAAAplC,OAAA8nC,KAAAzC,KAAAhjB,EAAA,EAAyFA,EAAA9jB,IAAO8jB,EAChG,OAAAxc,GAAAse,EAAAihB,EAAA/iB,GAAAhQ,EAAA8R,EAAAnkB,OAAAZ,EAAA,EAA8DA,EAAAiT,IAAOjT,GACrEyG,EAAAse,EAAA/kB,MACA0oC,EAAAhoC,KAAAwC,EAAAhE,KAAAuH,IAAA85B,SAAAvgC,EAAA+kB,IACAkhB,EAAAvlC,KAAA+F,GAKA,WAAAs/B,GAAA2C,EAAAzC,IAGA+C,GAAA,SAAApnB,GACA,kBAAAA,OAAAwlB,GAAAxlB,GAEA,QAAAokB,GAAArnC,KAAAunC,QAAA/mC,EAAA6mC,EAAAplC,OAAA8nC,EAAA,GAAA5nC,OAAA3B,GAAA8jB,EAAA,EAAqFA,EAAA9jB,IAAO8jB,EAC5F,OAAAxc,GAAAse,EAAAihB,EAAA/iB,GAAAhQ,EAAA8R,EAAAnkB,OAAAgoC,EAAAF,EAAAzlB,MAAAjjB,EAAA,EAA4FA,EAAAiT,IAAOjT,GACnGyG,EAAAse,EAAA/kB,KAAA4hB,EAAA1iB,KAAAuH,IAAA85B,SAAAvgC,EAAA+kB,IACA6jB,EAAAloC,KAAA+F,EAKA,WAAAs/B,GAAA2C,EAAA/pC,KAAAwnC,WAGA8C,GAAA,SAAA39B,GACA,UAAAxK,OAAAwK,EAAA1K,SAGAsoC,GAAA,WACA,UAAAnD,GAAApnC,KAAAwqC,QAAAxqC,KAAAunC,QAAA78B,IAAA4/B,IAAAtqC,KAAAwnC,UAWA/E,GAAAxhC,WACAD,YAAAyhC,EACAha,YAAA,SAAAgiB,GAAgC,MAAAzqC,MAAA4iC,QAAA0D,aAAAmE,EAAAzqC,KAAA2iC,QAChC2D,aAAA,SAAAmE,EAAA5oC,GAAuC,MAAA7B,MAAA4iC,QAAA0D,aAAAmE,EAAA5oC,IACvCgoC,cAAA,SAAA5B,GAAqC,MAAAjoC,MAAA4iC,QAAAiH,cAAA5B,IACrCkC,iBAAA,SAAAlC,GAAwC,MAAAjoC,MAAA4iC,QAAAuH,iBAAAlC,IAGxC,IAAA1gB,IAAA,SAAAjb,GACA,kBACA,MAAAA,KAIAg3B,GAAA,IAwEAoH,GAAA,SAAA1oC,EAAAgR,GACA,IAAAhR,EAGA,MAFA+B,GAAA,GAAA5B,OAAAnC,KAAA2qC,QAAArmB,GAAA,EACAtkB,KAAAoD,KAAA,SAAA2H,GAA2BhH,IAAAugB,GAAAvZ,IAC3BhH,CAGA,IAAA6mC,GAAA53B,EAAAkwB,EAAAL,EACAyE,EAAAtnC,KAAAwnC,SACAH,EAAArnC,KAAAunC,OAEA,mBAAAvlC,OAAAulB,GAAAvlB,GAEA,QAAAxB,GAAA6mC,EAAAplC,OAAA0K,EAAA,GAAAxK,OAAA3B,GAAAsiC,EAAA,GAAA3gC,OAAA3B,GAAAuiC,EAAA,GAAA5gC,OAAA3B,GAAA8jB,EAAA,EAAsGA,EAAA9jB,IAAO8jB,EAAA,CAC7G,GAAAzR,GAAAy0B,EAAAhjB,GACA8B,EAAAihB,EAAA/iB,GACA0e,EAAA5c,EAAAnkB,OACA8B,EAAA/B,EAAAzB,KAAAsS,OAAA+uB,SAAAtd,EAAAgjB,GACArE,EAAAl/B,EAAA9B,OACA4oC,EAAA/H,EAAAxe,GAAA,GAAAniB,OAAA8gC,GACA6H,EAAAn+B,EAAA2X,GAAA,GAAAniB,OAAA8gC,GACA8H,EAAAhI,EAAAze,GAAA,GAAAniB,OAAA6gC,EAEA4H,GAAA/3B,EAAAuT,EAAAykB,EAAAC,EAAAC,EAAAhnC,EAAAiP,EAKA,QAAAg4B,GAAAnpC,EAAAkjB,EAAA,EAAAD,EAAA,EAA4CC,EAAAke,IAAiBle,EAC7D,GAAAimB,EAAAH,EAAA9lB,GAAA,CAEA,IADAA,GAAAD,MAAAC,EAAA,KACAljB,EAAAipC,EAAAhmB,SAAAme,IACA+H,EAAArI,MAAA9gC,GAAA,MAQA,MAHA8K,GAAA,GAAAy6B,GAAAz6B,EAAA26B,GACA36B,EAAA69B,OAAA1H,EACAn2B,EAAAs+B,MAAAlI,EACAp2B,GAGAu+B,GAAA,WACA,UAAA9D,GAAApnC,KAAAirC,OAAAjrC,KAAAunC,QAAA78B,IAAA4/B,IAAAtqC,KAAAwnC,WAGA2D,GAAA,SAAA1D,GAEA,OAAA2D,GAAAprC,KAAAunC,QAAA8D,EAAA5D,EAAAF,QAAA+D,EAAAF,EAAAnpC,OAAAmT,EAAAi2B,EAAAppC,OAAAzB,EAAA+M,KAAA0H,IAAAq2B,EAAAl2B,GAAAm2B,EAAA,GAAAppC,OAAAmpC,GAAAhnB,EAAA,EAA8JA,EAAA9jB,IAAO8jB,EACrK,OAAAxc,GAAA0jC,EAAAJ,EAAA9mB,GAAAmnB,EAAAJ,EAAA/mB,GAAAhQ,EAAAk3B,EAAAvpC,OAAAypC,EAAAH,EAAAjnB,GAAA,GAAAniB,OAAAmS,GAAAjT,EAAA,EAAwHA,EAAAiT,IAAOjT,GAC/HyG,EAAA0jC,EAAAnqC,IAAAoqC,EAAApqC,MACAqqC,EAAArqC,GAAAyG,EAKA,MAAQwc,EAAAgnB,IAAQhnB,EAChBinB,EAAAjnB,GAAA8mB,EAAA9mB,EAGA,WAAA8iB,GAAAmE,EAAAvrC,KAAAwnC,WAGAmE,GAAA,WAEA,OAAAtE,GAAArnC,KAAAunC,QAAAjjB,GAAA,EAAA9jB,EAAA6mC,EAAAplC,SAA4DqiB,EAAA9jB,GAC5D,OAAAsH,GAAAse,EAAAihB,EAAA/iB,GAAAjjB,EAAA+kB,EAAAnkB,OAAA,EAAAJ,EAAAukB,EAAA/kB,KAA4EA,GAAA,IAC5EyG,EAAAse,EAAA/kB,MACAQ,OAAAiG,EAAAo+B,aAAArkC,EAAAskC,WAAAG,aAAAx+B,EAAAjG,GACAA,EAAAiG,EAKA,OAAA9H,OAGA4rC,GAAA,SAAAC,GAGA,QAAAC,GAAA7gC,EAAAC,GACA,MAAAD,IAAAC,EAAA2gC,EAAA5gC,EAAA22B,SAAA12B,EAAA02B,WAAA32B,GAAAC,EAHA2gC,MAAAtI,EAMA,QAAA8D,GAAArnC,KAAAunC,QAAA/mC,EAAA6mC,EAAAplC,OAAA8pC,EAAA,GAAA5pC,OAAA3B,GAAA8jB,EAAA,EAAsFA,EAAA9jB,IAAO8jB,EAAA,CAC7F,OAAAxc,GAAAse,EAAAihB,EAAA/iB,GAAAhQ,EAAA8R,EAAAnkB,OAAA+pC,EAAAD,EAAAznB,GAAA,GAAAniB,OAAAmS,GAAAjT,EAAA,EAAwGA,EAAAiT,IAAOjT,GAC/GyG,EAAAse,EAAA/kB,MACA2qC,EAAA3qC,GAAAyG,EAGAkkC,GAAAhhC,KAAA8gC,GAGA,UAAA1E,GAAA2E,EAAA/rC,KAAAwnC,UAAAj9B,SAOA0hC,GAAA,WACA,GAAA7pB,GAAA5X,UAAA,EAGA,OAFAA,WAAA,GAAAxK,KACAoiB,EAAAS,MAAA,KAAArY,WACAxK,MAGAksC,GAAA,WACA,GAAAC,GAAA,GAAAhqC,OAAAnC,KAAA2qC,QAAAtpC,GAAA,CAEA,OADArB,MAAAoD,KAAA,WAAwB+oC,IAAA9qC,GAAArB,OACxBmsC,GAGAC,GAAA,WAEA,OAAA/E,GAAArnC,KAAAunC,QAAAjjB,EAAA,EAAA9jB,EAAA6mC,EAAAplC,OAA2DqiB,EAAA9jB,IAAO8jB,EAClE,OAAA8B,GAAAihB,EAAA/iB,GAAAjjB,EAAA,EAAAiT,EAAA8R,EAAAnkB,OAAwDZ,EAAAiT,IAAOjT,EAAA,CAC/D,GAAAyG,GAAAse,EAAA/kB,EACA,IAAAyG,EAAA,MAAAA,GAIA,aAGAukC,GAAA,WACA,GAAA1B,GAAA,CAEA,OADA3qC,MAAAoD,KAAA,aAAwBunC,IACxBA,GAGA2B,GAAA,WACA,OAAAtsC,KAAA8H,QAGAykC,GAAA,SAAAnqB,GAEA,OAAAilB,GAAArnC,KAAAunC,QAAAjjB,EAAA,EAAA9jB,EAAA6mC,EAAAplC,OAA2DqiB,EAAA9jB,IAAO8jB,EAClE,OAAAxc,GAAAse,EAAAihB,EAAA/iB,GAAAjjB,EAAA,EAAAiT,EAAA8R,EAAAnkB,OAA8DZ,EAAAiT,IAAOjT,GACrEyG,EAAAse,EAAA/kB,KAAA+gB,EAAA7hB,KAAAuH,IAAA85B,SAAAvgC,EAAA+kB,EAIA,OAAApmB,OA2CAwsC,GAAA,SAAAtlC,EAAAlF,GACA,GAAA8+B,GAAAgH,GAAA5gC,EAEA,IAAAsD,UAAAvI,OAAA,GACA,GAAA6F,GAAA9H,KAAA8H,MACA,OAAAg5B,GAAAE,MACAl5B,EAAA2kC,eAAA3L,EAAAC,MAAAD,EAAAE,OACAl5B,EAAAm9B,aAAAnE,GAGA,MAAA9gC,MAAAoD,MAAA,MAAApB,EACA8+B,EAAAE,MAAA0C,EAAAF,EAAA,kBAAAxhC,GACA8+B,EAAAE,MAAAiD,EAAAF,EACAjD,EAAAE,MAAA6C,EAAAD,GAAA9C,EAAA9+B,KAGAsmB,GAAA,SAAAxgB,GACA,MAAAA,GAAA24B,eAAA34B,EAAA24B,cAAAnY,aACAxgB,EAAAmgB,UAAAngB,GACAA,EAAAwgB,aAuBAokB,GAAA,SAAAxlC,EAAAlF,EAAAqiC,GACA,MAAA75B,WAAAvI,OAAA,EACAjC,KAAAoD,MAAA,MAAApB,EACAkiC,EAAA,kBAAAliC,GACAuiC,EACAH,GAAAl9B,EAAAlF,EAAA,MAAAqiC,EAAA,GAAAA,IACAG,EAAAxkC,KAAA8H,OAAAZ,IA4BAylC,GAAA,SAAAzlC,EAAAlF,GACA,MAAAwI,WAAAvI,OAAA,EACAjC,KAAAoD,MAAA,MAAApB,EACAyiC,EAAA,kBAAAziC,GACA2iC,EACAD,GAAAx9B,EAAAlF,IACAhC,KAAA8H,OAAAZ,GAgBA49B,GAAA7jC,WACAmkC,IAAA,SAAAl+B,GACA,GAAA7F,GAAArB,KAAAglC,OAAAjjB,QAAA7a,EACA7F,GAAA,IACArB,KAAAglC,OAAAjjC,KAAAmF,GACAlH,KAAA+kC,MAAA/b,aAAA,QAAAhpB,KAAAglC,OAAAj5B,KAAA,QAGAjH,OAAA,SAAAoC,GACA,GAAA7F,GAAArB,KAAAglC,OAAAjjB,QAAA7a,EACA7F,IAAA,IACArB,KAAAglC,OAAA4H,OAAAvrC,EAAA,GACArB,KAAA+kC,MAAA/b,aAAA,QAAAhpB,KAAAglC,OAAAj5B,KAAA,QAGA8gC,SAAA,SAAA3lC,GACA,MAAAlH,MAAAglC,OAAAjjB,QAAA7a,IAAA,GAgCA,IAAA4lC,IAAA,SAAA5lC,EAAAlF,GACA,GAAAo9B,GAAAwF,EAAA19B,EAAA,GAEA,IAAAsD,UAAAvI,OAAA,GAEA,IADA,GAAAkjC,GAAAN,EAAA7kC,KAAA8H,QAAAzG,GAAA,EAAAiT,EAAA8qB,EAAAn9B,SACAZ,EAAAiT,GAAA,IAAA6wB,EAAA0H,SAAAzN,EAAA/9B,IAAA,QACA,UAGA,MAAArB,MAAAoD,MAAA,kBAAApB,GACAwjC,EAAAxjC,EACAsjC,EACAC,GAAAnG,EAAAp9B,KAoBA+qC,GAAA,SAAA/qC,GACA,MAAAwI,WAAAvI,OACAjC,KAAAoD,KAAA,MAAApB,EACAyjC,GAAA,kBAAAzjC,GACA4jC,EACAD,GAAA3jC,IACAhC,KAAA8H,OAAA49B,aAoBAsH,GAAA,SAAAhrC,GACA,MAAAwI,WAAAvI,OACAjC,KAAAoD,KAAA,MAAApB,EACA6jC,GAAA,kBAAA7jC,GACAgkC,EACAD,GAAA/jC,IACAhC,KAAA8H,OAAAg+B,WAOAmH,GAAA,WACA,MAAAjtC,MAAAoD,KAAA6iC,IAOAiH,GAAA,WACA,MAAAltC,MAAAoD,KAAAgjC,IAGA+G,GAAA,SAAAjmC,GACA,GAAA6L,GAAA,kBAAA7L,KAAA6gC,GAAA7gC,EACA,OAAAlH,MAAAuE,OAAA,WACA,MAAAvE,MAAAyoB,YAAA1V,EAAA8P,MAAA7iB,KAAAwK,eAQA4iC,GAAA,SAAAlmC,EAAAmmC,GACA,GAAAt6B,GAAA,kBAAA7L,KAAA6gC,GAAA7gC,GACA3C,EAAA,MAAA8oC,EAAA7G,EAAA,kBAAA6G,KAAApF,GAAAoF,EACA,OAAArtC,MAAAuE,OAAA,WACA,MAAAvE,MAAAsmC,aAAAvzB,EAAA8P,MAAA7iB,KAAAwK,WAAAjG,EAAAse,MAAA7iB,KAAAwK,YAAA,SASA8iC,GAAA,WACA,MAAAttC,MAAAoD,KAAA0B,IAGAyoC,GAAA,SAAAvrC,GACA,MAAAwI,WAAAvI,OACAjC,KAAAwtC,SAAA,WAAAxrC,GACAhC,KAAA8H,OAAA85B,UA8BA6L,GAAA,SAAAxrB,EAAAykB,GACA,MAAA1mC,MAAAoD,MAAA,kBAAAsjC,GACAS,EACAD,GAAAjlB,EAAAykB,KAGAhnC,IAAA,KAWA0nC,GAAAnmC,UAAAwmC,EAAAxmC,WACAD,YAAAomC,EACA7iC,OAAAulC,GACAjlC,UAAAulC,GACAx/B,OAAAy/B,GACAtmC,KAAA2mC,GACA5H,MAAAyH,GACAxH,KAAAmI,GACAQ,MAAAP,GACA5gC,MAAAohC,GACA3gC,KAAA4gC,GACArrC,KAAA0rC,GACAE,MAAAD,GACApkC,KAAAskC,GACAzB,KAAA0B,GACA7J,MAAA8J,GACAlpC,KAAAmpC,GACAjoC,KAAAkoC,GACApnC,MAAAsnC,GACAc,SAAAb,GACAtoC,QAAAyoC,GACAplC,KAAAqlC,GACAW,KAAAV,GACA/G,MAAAgH,GACA7G,MAAA8G,GACA9oC,OAAA+oC,GACAQ,OAAAP,GACAtoC,OAAAwoC,GACA5K,MAAA6K,GACAhrB,GAAAsmB,GACArnB,SAAAisB,GAGA,IAAAlpC,IAAA,SAAA0jC,GACA,sBAAAA,GACA,GAAAb,KAAAnf,SAAA4hB,cAAA5B,MAAAhgB,SAAAG,kBACA,GAAAgf,KAAAa,IAAAvoC,KAGAmF,GAAA,SAAAojC,GACA,sBAAAA,GACA,GAAAb,IAAAnf,SAAAkiB,iBAAAlC,KAAAhgB,SAAAG,kBACA,GAAAgf,IAAA,MAAAa,QAAAvoC,KAGAkuC,GAAA,SAAA9lC,EAAA+lC,EAAAC,GACAtjC,UAAAvI,OAAA,IAAA6rC,EAAAD,IAAAvL,KAAAsH,eAEA,QAAAgE,GAAAvsC,EAAA,EAAAiT,EAAAu5B,IAAA5rC,OAAA,EAA0DZ,EAAAiT,IAAOjT,EACjE,IAAAusC,EAAAC,EAAAxsC,IAAAysC,eACA,MAAA/E,IAAAjhC,EAAA8lC,EAIA,cAGAC,GAAA,SAAA/lC,EAAA+lC,GACA,MAAAA,MAAAvL,KAAAuL,QAEA,QAAAxsC,GAAA,EAAAiT,EAAAu5B,IAAA5rC,OAAA,EAAA8rC,EAAA,GAAA5rC,OAAAmS,GAA0EjT,EAAAiT,IAAOjT,EACjF0sC,EAAA1sC,GAAA0nC,GAAAjhC,EAAA+lC,EAAAxsC,GAGA,OAAA0sC,GAGAnuC,GAAAmoC,WACAnoC,EAAAohC,QACAphC,EAAAooC,QAAAS,GACA7oC,EAAA+pC,SACA/pC,EAAAkoC,aACAloC,EAAA8nC,cACA9nC,EAAA2E,UACA3E,EAAAiF,aACAjF,EAAA6nC,YACA7nC,EAAAqoC,YACAroC,EAAAsqC,eACAtqC,EAAAwF,MAAAo/B,EACA5kC,EAAAguC,SACAhuC,EAAAiuC,WACAjuC,EAAA+mC,OAAAre,GACA1oB,EAAAyiC,cAEAhgC,OAAAsQ,eAAA/S,EAAA,cAA8CoC,OAAA,OVu8GxC,SAAUnC,EAAQD,EAASM,IWn5IjC,SAAA2M,EAAAlN,GACAA,EAAAC,EAAAM,EAAA,IAAAA,EAAA,GAAAA,EAAA,IAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAGCF,KAAA,SAAAJ,EAAA8C,EAAAsrC,EAAAC,EAAAC,EAAAnnB,EAAAvkB,GAAwF,YAgCzF,SAAA2rC,GAAArmC,EAAAzH,GACA,GAAA+tC,GAAAtmC,EAAAumC,YACA,KAAAD,SAAA/tC,KAAA+tC,EAAAE,MAAAC,EAAA,SAAA7sB,OAAA,WACA,OAAA0sB,GAGA,QAAAjsB,GAAAra,EAAAzH,GACA,GAAA+tC,GAAAtmC,EAAAumC,YACA,KAAAD,SAAA/tC,KAAA+tC,EAAAE,MAAAE,EAAA,SAAA9sB,OAAA,WACA,OAAA0sB,GAGA,QAAAlsB,GAAApa,EAAAzH,GACA,GAAA+tC,GAAAtmC,EAAAumC,YACA,KAAAD,SAAA/tC,IAAA,SAAAqhB,OAAA,WACA,OAAA0sB,GAGA,QAAAr7B,GAAAjL,EAAAzH,EAAAouC,GASA,QAAAL,GAAAM,GACAD,EAAAH,MAAAK,EACAF,EAAAG,MAAAC,QAAAlkB,EAAA8jB,EAAAK,MAAAL,EAAA7S,MAGA6S,EAAAK,OAAAJ,GAAA/jB,EAAA+jB,EAAAD,EAAAK,OAGA,QAAAnkB,GAAA+jB,GACA,GAAArtC,GAAAijB,EAAAhQ,EAAAI,CAGA,IAAA+5B,EAAAH,QAAAK,EAAA,MAAA/d,IAEA,KAAAvvB,IAAA0tC,GAEA,GADAr6B,EAAAq6B,EAAA1tC,GACAqT,EAAAxN,OAAAunC,EAAAvnC,KAAA,CAKA,GAAAwN,EAAA45B,QAAAU,EAAA,MAAAf,GAAAgB,QAAAtkB,EAIAjW,GAAA45B,QAAAY,GACAx6B,EAAA45B,MAAAa,EACAz6B,EAAAk6B,MAAAhe,OACAlc,EAAA6N,GAAAhiB,KAAA,YAAAuH,IAAA85B,SAAAltB,EAAA8X,MAAA9X,EAAA0R,aACA2oB,GAAA1tC,KAMAA,EAAAhB,IACAqU,EAAA45B,MAAAa,EACAz6B,EAAAk6B,MAAAhe,aACAme,GAAA1tC,IAoBA,GAZA4sC,EAAAgB,QAAA,WACAR,EAAAH,QAAAU,IACAP,EAAAH,MAAAY,EACAT,EAAAG,MAAAC,QAAAO,EAAAX,EAAAK,MAAAL,EAAA7S,MACAwT,EAAAV,MAMAD,EAAAH,MAAAE,EACAC,EAAAlsB,GAAAhiB,KAAA,QAAAuH,IAAA85B,SAAA6M,EAAAjiB,MAAAiiB,EAAAroB,OACAqoB,EAAAH,QAAAE,EAAA,CAKA,IAJAC,EAAAH,MAAAU,EAGAK,EAAA,GAAAltC,OAAAmS,EAAAm6B,EAAAY,MAAAptC,QACAZ,EAAA,EAAAijB,GAAA,EAAuBjjB,EAAAiT,IAAOjT,GAC9BqT,EAAA+5B,EAAAY,MAAAhuC,GAAAW,MAAAzB,KAAAuH,IAAA85B,SAAA6M,EAAAjiB,MAAAiiB,EAAAroB,UACAipB,IAAA/qB,GAAA5P,EAGA26B,GAAAptC,OAAAqiB,EAAA,GAGA,QAAA8qB,GAAAV,GAKA,IAJA,GAAA3hC,GAAA2hC,EAAAD,EAAAjmC,SAAAimC,EAAA/lC,KAAAnI,KAAA,KAAAmuC,EAAAD,EAAAjmC,WAAAimC,EAAAG,MAAAC,QAAAje,GAAA6d,EAAAH,MAAAgB,EAAA,GACAjuC,GAAA,EACAiT,EAAA+6B,EAAAptC,SAEAZ,EAAAiT,GACA+6B,EAAAhuC,GAAAd,KAAA,KAAAwM,EAIA0hC,GAAAH,QAAAgB,IACAb,EAAAlsB,GAAAhiB,KAAA,MAAAuH,IAAA85B,SAAA6M,EAAAjiB,MAAAiiB,EAAAroB,OACAwK,KAIA,QAAAA,KACA6d,EAAAH,MAAAa,EACAV,EAAAG,MAAAhe,aACAme,GAAA1uC,EACA,QAAAgB,KAAA0tC,GAAA,aACAjnC,GAAAumC,aApGA,GACAgB,GADAN,EAAAjnC,EAAAumC,YAKAU,GAAA1uC,GAAAouC,EACAA,EAAAG,MAAAX,EAAAW,MAAAR,EAAA,EAAAK,EAAA7S,MA+HA,QAAA2T,GAAAlvC,EAAA6G,GACA,GAAAsoC,GAAAC,CACA,mBACA,GAAArB,GAAAjsB,EAAAniB,KAAAK,GACAgvC,EAAAjB,EAAAiB,KAKA,IAAAA,IAAAG,EAAA,CACAC,EAAAD,EAAAH,CACA,QAAAhuC,GAAA,EAAAiT,EAAAm7B,EAAAxtC,OAAwCZ,EAAAiT,IAAOjT,EAC/C,GAAAouC,EAAApuC,GAAA6F,SAAA,CACAuoC,IAAAztB,QACAytB,EAAA7C,OAAAvrC,EAAA,EACA,QAKA+sC,EAAAiB,MAAAI,GAIA,QAAAC,GAAArvC,EAAA6G,EAAAlF,GACA,GAAAwtC,GAAAC,CACA,sBAAAztC,GAAA,SAAA0f,MACA,mBACA,GAAA0sB,GAAAjsB,EAAAniB,KAAAK,GACAgvC,EAAAjB,EAAAiB,KAKA,IAAAA,IAAAG,EAAA,CACAC,GAAAD,EAAAH,GAAArtB,OACA,QAAAjV,IAAoB7F,OAAAlF,SAAyBX,EAAA,EAAAiT,EAAAm7B,EAAAxtC,OAA2BZ,EAAAiT,IAAOjT,EAC/E,GAAAouC,EAAApuC,GAAA6F,SAAA,CACAuoC,EAAApuC,GAAA0L,CACA,OAGA1L,IAAAiT,GAAAm7B,EAAA1tC,KAAAgL,GAGAqhC,EAAAiB,MAAAI,GAsBA,QAAAE,GAAAlrC,EAAAyC,EAAAlF,GACA,GAAA3B,GAAAoE,EAAAmrC,GAOA,OALAnrC,GAAArB,KAAA,WACA,GAAAgrC,GAAAjsB,EAAAniB,KAAAK,IACA+tC,EAAApsC,QAAAosC,EAAApsC,WAA2CkF,GAAAlF,EAAA6gB,MAAA7iB,KAAAwK,aAG3C,SAAA1C,GACA,MAAAoa,GAAApa,EAAAzH,GAAA2B,MAAAkF,IAYA,QAAAs8B,GAAAt8B,GACA,kBACAlH,KAAAyjC,gBAAAv8B,IAIA,QAAAw8B,GAAA5C,GACA,kBACA9gC,KAAA2jC,kBAAA7C,EAAAC,MAAAD,EAAAE,QAIA,QAAA4C,GAAA18B,EAAA2oC,EAAAC,GACA,GAAAC,GACAC,CACA,mBACA,GAAAC,GAAAjwC,KAAAilC,aAAA/9B,EACA,OAAA+oC,KAAAH,EAAA,KACAG,IAAAF,EAAAC,EACAA,EAAAH,EAAAE,EAAAE,EAAAH,IAIA,QAAAjM,GAAA/C,EAAA+O,EAAAC,GACA,GAAAC,GACAC,CACA,mBACA,GAAAC,GAAAjwC,KAAAysC,eAAA3L,EAAAC,MAAAD,EAAAE,MACA,OAAAiP,KAAAH,EAAA,KACAG,IAAAF,EAAAC,EACAA,EAAAH,EAAAE,EAAAE,EAAAH,IAIA,QAAA/L,GAAA78B,EAAA2oC,EAAA7tC,GACA,GAAA+tC,GACAG,EACAF,CACA,mBACA,GAAAC,GAAAH,EAAA9tC,EAAAhC,KACA,cAAA8vC,MAAA9vC,MAAAyjC,gBAAAv8B,IACA+oC,EAAAjwC,KAAAilC,aAAA/9B,GACA+oC,IAAAH,EAAA,KACAG,IAAAF,GAAAD,IAAAI,EAAAF,EACAA,EAAAH,EAAAE,EAAAE,EAAAC,EAAAJ,KAIA,QAAA7L,GAAAnD,EAAA+O,EAAA7tC,GACA,GAAA+tC,GACAG,EACAF,CACA,mBACA,GAAAC,GAAAH,EAAA9tC,EAAAhC,KACA,cAAA8vC,MAAA9vC,MAAA2jC,kBAAA7C,EAAAC,MAAAD,EAAAE,QACAiP,EAAAjwC,KAAAysC,eAAA3L,EAAAC,MAAAD,EAAAE,OACAiP,IAAAH,EAAA,KACAG,IAAAF,GAAAD,IAAAI,EAAAF,EACAA,EAAAH,EAAAE,EAAAE,EAAAC,EAAAJ,KAYA,QAAAK,GAAArP,EAAA9+B,GACA,QAAAqtC,KACA,GAAAvnC,GAAA9H,KAAAqB,EAAAW,EAAA6gB,MAAA/a,EAAA0C,UACA,OAAAnJ,IAAA,SAAA0L,GACAjF,EAAAg8B,eAAAhD,EAAAC,MAAAD,EAAAE,MAAA3/B,EAAA0L,KAIA,MADAsiC,GAAAe,OAAApuC,EACAqtC,EAGA,QAAAgB,GAAAnpC,EAAAlF,GACA,QAAAqtC,KACA,GAAAvnC,GAAA9H,KAAAqB,EAAAW,EAAA6gB,MAAA/a,EAAA0C,UACA,OAAAnJ,IAAA,SAAA0L,GACAjF,EAAAkhB,aAAA9hB,EAAA7F,EAAA0L,KAIA,MADAsiC,GAAAe,OAAApuC,EACAqtC,EAYA,QAAAiB,GAAAjwC,EAAA2B,GACA,kBACAmsC,EAAAnuC,KAAAK,GAAAyuC,OAAA9sC,EAAA6gB,MAAA7iB,KAAAwK,YAIA,QAAA+lC,GAAAlwC,EAAA2B,GACA,MAAAA,MAAA,WACAmsC,EAAAnuC,KAAAK,GAAAyuC,MAAA9sC,GAcA,QAAAwuC,GAAAnwC,EAAA2B,GACA,kBACAmgB,EAAAniB,KAAAK,GAAAmI,UAAAxG,EAAA6gB,MAAA7iB,KAAAwK,YAIA,QAAAimC,GAAApwC,EAAA2B,GACA,MAAAA,MAAA,WACAmgB,EAAAniB,KAAAK,GAAAmI,SAAAxG,GAcA,QAAA0uC,GAAArwC,EAAA2B,GACA,qBAAAA,GAAA,SAAA0f,MACA,mBACAS,EAAAniB,KAAAK,GAAAqI,KAAA1G,GA4CA,QAAA2oB,GAAAzjB,GACA,OAAAA,EAAA,IAAAiM,OAAAxH,MAAA,SAAAklB,MAAA,SAAA9jB,GACA,GAAA1L,GAAA0L,EAAAgV,QAAA,IAEA,OADA1gB,IAAA,IAAA0L,IAAAiV,MAAA,EAAA3gB,KACA0L,GAAA,UAAAA,IAIA,QAAA4jC,GAAAtwC,EAAA6G,EAAAk6B,GACA,GAAAwP,GAAAC,EAAAC,EAAAnmB,EAAAzjB,GAAAinC,EAAAhsB,CACA,mBACA,GAAAisB,GAAA0C,EAAA9wC,KAAAK,GACAkiB,EAAA6rB,EAAA7rB,EAKAA,KAAAquB,IAAAC,GAAAD,EAAAruB,GAAAG,QAAAH,GAAArb,EAAAk6B,GAEAgN,EAAA7rB,GAAAsuB,GAYA,QAAAE,GAAA1wC,GACA,kBACA,GAAAwS,GAAA7S,KAAAmmC,UACA,QAAA9kC,KAAArB,MAAAquC,aAAA,IAAAhtC,IAAAhB,EAAA,MACAwS,MAAA8V,YAAA3oB,OAwDA,QAAAkkC,GAAAh9B,EAAA2oC,GACA,GAAAE,GACAG,EACAF,CACA,mBACA,GAAAC,GAAAvtC,EAAA0C,MAAApF,KAAAkH,GACA4oC,GAAA9vC,KAAAoF,MAAA++B,eAAAj9B,GAAAxE,EAAA0C,MAAApF,KAAAkH,GACA,OAAA+oC,KAAAH,EAAA,KACAG,IAAAF,GAAAD,IAAAI,EAAAF,EACAA,EAAAH,EAAAE,EAAAE,EAAAC,EAAAJ,IAIA,QAAAkB,GAAA9pC,GACA,kBACAlH,KAAAoF,MAAA++B,eAAAj9B,IAIA,QAAAk9B,GAAAl9B,EAAA2oC,EAAAC,GACA,GAAAC,GACAC,CACA,mBACA,GAAAC,GAAAvtC,EAAA0C,MAAApF,KAAAkH,EACA,OAAA+oC,KAAAH,EAAA,KACAG,IAAAF,EAAAC,EACAA,EAAAH,EAAAE,EAAAE,EAAAH,IAIA,QAAAvL,GAAAr9B,EAAA2oC,EAAA7tC,GACA,GAAA+tC,GACAG,EACAF,CACA,mBACA,GAAAC,GAAAvtC,EAAA0C,MAAApF,KAAAkH,GACA4oC,EAAA9tC,EAAAhC,KAEA,OADA,OAAA8vC,IAAA9vC,KAAAoF,MAAA++B,eAAAj9B,GAAA4oC,EAAAptC,EAAA0C,MAAApF,KAAAkH,IACA+oC,IAAAH,EAAA,KACAG,IAAAF,GAAAD,IAAAI,EAAAF,EACAA,EAAAH,EAAAE,EAAAE,EAAAC,EAAAJ,IAcA,QAAAmB,GAAA/pC,EAAAlF,EAAAqiC,GACA,QAAAgL,KACA,GAAAvnC,GAAA9H,KAAAqB,EAAAW,EAAA6gB,MAAA/a,EAAA0C,UACA,OAAAnJ,IAAA,SAAA0L,GACAjF,EAAA1C,MAAAk/B,YAAAp9B,EAAA7F,EAAA0L,GAAAs3B,IAIA,MADAgL,GAAAe,OAAApuC,EACAqtC,EAWA,QAAA1J,GAAA3jC,GACA,kBACAhC,KAAA0lC,YAAA1jC,GAIA,QAAA4jC,GAAA5jC,GACA,kBACA,GAAA8tC,GAAA9tC,EAAAhC,KACAA,MAAA0lC,YAAA,MAAAoK,EAAA,GAAAA,GAkCA,QAAAoB,GAAA7J,EAAAC,EAAApgC,EAAA7G,GACAL,KAAAunC,QAAAF,EACArnC,KAAAwnC,SAAAF,EACAtnC,KAAAmxC,MAAAjqC,EACAlH,KAAA4vC,IAAAvvC,EAGA,QAAAoE,GAAAyC,GACA,MAAAxE,GAAA+kC,YAAAhjC,WAAAyC,GAGA,QAAAkqC,KACA,QAAA/wC,GAuCA,QAAAgxC,GAAAvpC,EAAAzH,GAEA,IADA,GAAAixC,KACAA,EAAAxpC,EAAAumC,iBAAAiD,IAAAjxC,KACA,KAAAyH,IAAAq+B,YACA,MAAAoL,IAAA3V,KAAAqS,EAAAuD,MAAAD,EAGA,OAAAD,GAvtBA,GAAAG,GAAAzD,EAAAxsB,SAAA,2BACAkwB,KAEAnD,EAAA,EACAI,EAAA,EACAH,EAAA,EACAQ,EAAA,EACAE,EAAA,EACAI,EAAA,EACAH,EAAA,EAEAf,EAAA,SAAAtmC,EAAAZ,EAAA7G,EAAAmsB,EAAApG,EAAAkrB,GACA,GAAAvC,GAAAjnC,EAAAumC,YACA,IAAAU,GACA,GAAA1uC,IAAA0uC,GAAA,WADAjnC,GAAAumC,eAEAt7B,GAAAjL,EAAAzH,GACA6G,OACAslB,QACApG,QACA7D,GAAAkvB,EACApC,MAAAqC,EACA9V,KAAA0V,EAAA1V,KACAkT,MAAAwC,EAAAxC,MACAtmC,SAAA8oC,EAAA9oC,SACAE,KAAA4oC,EAAA5oC,KACAkmC,MAAA,KACAN,MAAAC,KA+HAoD,EAAA,SAAA7pC,EAAAZ,GACA,GACAknC,GACAwD,EAEAvwC,EAJA0tC,EAAAjnC,EAAAumC,aAGA7L,GAAA,CAGA,IAAAuM,EAAA,CAEA7nC,EAAA,MAAAA,EAAA,KAAAA,EAAA,EAEA,KAAA7F,IAAA0tC,IACAX,EAAAW,EAAA1tC,IAAA6F,UACA0qC,EAAAxD,EAAAE,MAAAE,GAAAJ,EAAAE,MAAAgB,EACAlB,EAAAE,MAAAa,EACAf,EAAAQ,MAAAhe,OACAghB,GAAAxD,EAAA7rB,GAAAhiB,KAAA,YAAAuH,IAAA85B,SAAAwM,EAAA5hB,MAAA4hB,EAAAhoB,aACA2oB,GAAA1tC,IALkDmhC,GAAA,CAQlDA,UAAA16B,GAAAumC,eAGAwD,EAAA,SAAA3qC,GACA,MAAAlH,MAAAoD,KAAA,WACAuuC,EAAA3xC,KAAAkH,MAqDA4qC,EAAA,SAAA5qC,EAAAlF,GACA,GAAA3B,GAAAL,KAAA4vC,GAIA,IAFA1oC,GAAA,GAEAsD,UAAAvI,OAAA,GAEA,OAAA8K,GADAsiC,EAAAntB,EAAAliB,KAAA8H,OAAAzH,GAAAgvC,MACAhuC,EAAA,EAAAiT,EAAA+6B,EAAAptC,OAAwCZ,EAAAiT,IAAOjT,EAC/C,IAAA0L,EAAAsiC,EAAAhuC,IAAA6F,SACA,MAAA6F,GAAA/K,KAGA,aAGA,MAAAhC,MAAAoD,MAAA,MAAApB,EAAAutC,EAAAG,GAAArvC,EAAA6G,EAAAlF,KAgBA8sB,GAAA,SAAA7jB,EAAAC,GACA,GAAAzK,EACA,wBAAAyK,GAAAgjC,EAAA/e,kBACAjkB,YAAA6b,GAAA7T,MAAAg7B,EAAA1e,gBACA/uB,EAAAsmB,EAAA7T,MAAAhI,OAAAzK,EAAAytC,EAAA1e,gBACA0e,EAAA5e,mBAAArkB,EAAAC,IAiEA6mC,GAAA,SAAA7qC,EAAAlF,GACA,GAAA8+B,GAAAp+B,EAAAolC,UAAA5gC,GAAA7F,EAAA,cAAAy/B,EAAAoN,EAAArhB,wBAAAiC,EACA,OAAA9uB,MAAAqwC,UAAAnpC,EAAA,kBAAAlF,IACA8+B,EAAAE,MAAAiD,EAAAF,GAAAjD,EAAAz/B,EAAAsuC,EAAA3vC,KAAA,QAAAkH,EAAAlF,IACA,MAAAA,GAAA8+B,EAAAE,MAAA0C,EAAAF,GAAA1C,IACAA,EAAAE,MAAA6C,EAAAD,GAAA9C,EAAAz/B,EAAAW,EAAA,MAyBAgwC,GAAA,SAAA9qC,EAAAlF,GACA,GAAAgR,GAAA,QAAA9L,CACA,IAAAsD,UAAAvI,OAAA,SAAA+Q,EAAAhT,KAAAqvC,MAAAr8B,OAAAo9B,MACA,UAAApuC,EAAA,MAAAhC,MAAAqvC,MAAAr8B,EAAA,KACA,sBAAAhR,GAAA,SAAA0f,MACA,IAAAof,GAAAp+B,EAAAolC,UAAA5gC,EACA,OAAAlH,MAAAqvC,MAAAr8B,GAAA8tB,EAAAE,MAAAmP,EAAAE,GAAAvP,EAAA9+B,KAeAiwC,GAAA,SAAAjwC,GACA,GAAA3B,GAAAL,KAAA4vC,GAEA,OAAAplC,WAAAvI,OACAjC,KAAAoD,MAAA,kBAAApB,GACAsuC,EACAC,GAAAlwC,EAAA2B,IACAkgB,EAAAliB,KAAA8H,OAAAzH,GAAAyuC,OAeAoD,GAAA,SAAAlwC,GACA,GAAA3B,GAAAL,KAAA4vC,GAEA,OAAAplC,WAAAvI,OACAjC,KAAAoD,MAAA,kBAAApB,GACAwuC,EACAC,GAAApwC,EAAA2B,IACAkgB,EAAAliB,KAAA8H,OAAAzH,GAAAmI,UAUA2pC,GAAA,SAAAnwC,GACA,GAAA3B,GAAAL,KAAA4vC,GAEA,OAAAplC,WAAAvI,OACAjC,KAAAoD,KAAAstC,EAAArwC,EAAA2B,IACAkgB,EAAAliB,KAAA8H,OAAAzH,GAAAqI,MAGA0pC,GAAA,SAAAnvB,GACA,kBAAAA,OAAAvgB,EAAAslC,QAAA/kB,GAEA,QAAAokB,GAAArnC,KAAAunC,QAAA/mC,EAAA6mC,EAAAplC,OAAA8nC,EAAA,GAAA5nC,OAAA3B,GAAA8jB,EAAA,EAAqFA,EAAA9jB,IAAO8jB,EAC5F,OAAAxc,GAAAse,EAAAihB,EAAA/iB,GAAAhQ,EAAA8R,EAAAnkB,OAAAgoC,EAAAF,EAAAzlB,MAAAjjB,EAAA,EAA4FA,EAAAiT,IAAOjT,GACnGyG,EAAAse,EAAA/kB,KAAA4hB,EAAA1iB,KAAAuH,IAAA85B,SAAAvgC,EAAA+kB,IACA6jB,EAAAloC,KAAA+F,EAKA,WAAAopC,GAAAnH,EAAA/pC,KAAAwnC,SAAAxnC,KAAAmxC,MAAAnxC,KAAA4vC,MAGAyC,GAAA,SAAA5tC,GACA,GAAAA,EAAAmrC,MAAA5vC,KAAA4vC,IAAA,SAAAluB,MAEA,QAAA0pB,GAAAprC,KAAAunC,QAAA8D,EAAA5mC,EAAA8iC,QAAA+D,EAAAF,EAAAnpC,OAAAmT,EAAAi2B,EAAAppC,OAAAzB,EAAA+M,KAAA0H,IAAAq2B,EAAAl2B,GAAAm2B,EAAA,GAAAppC,OAAAmpC,GAAAhnB,EAAA,EAA+JA,EAAA9jB,IAAO8jB,EACtK,OAAAxc,GAAA0jC,EAAAJ,EAAA9mB,GAAAmnB,EAAAJ,EAAA/mB,GAAAhQ,EAAAk3B,EAAAvpC,OAAAypC,EAAAH,EAAAjnB,GAAA,GAAAniB,OAAAmS,GAAAjT,EAAA,EAAwHA,EAAAiT,IAAOjT,GAC/HyG,EAAA0jC,EAAAnqC,IAAAoqC,EAAApqC,MACAqqC,EAAArqC,GAAAyG;AAKA,KAAQwc,EAAAgnB,IAAQhnB,EAChBinB,EAAAjnB,GAAA8mB,EAAA9mB,EAGA,WAAA4sB,GAAA3F,EAAAvrC,KAAAwnC,SAAAxnC,KAAAmxC,MAAAnxC,KAAA4vC,MA0BA0C,GAAA,SAAAprC,EAAAk6B,GACA,GAAA/gC,GAAAL,KAAA4vC,GAEA,OAAAplC,WAAAvI,OAAA,EACAigB,EAAAliB,KAAA8H,OAAAzH,GAAAkiB,MAAArb,GACAlH,KAAAoD,KAAAutC,EAAAtwC,EAAA6G,EAAAk6B,KAWAmR,GAAA,WACA,MAAAvyC,MAAAuiB,GAAA,aAAAwuB,EAAA/wC,KAAA4vC,OAGA4C,GAAA,SAAAjuC,GACA,GAAA2C,GAAAlH,KAAAmxC,MACA9wC,EAAAL,KAAA4vC,GAEA,mBAAArrC,OAAA7B,EAAAulC,SAAA1jC,GAEA,QAAA8iC,GAAArnC,KAAAunC,QAAA/mC,EAAA6mC,EAAAplC,OAAA8nC,EAAA,GAAA5nC,OAAA3B,GAAA8jB,EAAA,EAAqFA,EAAA9jB,IAAO8jB,EAC5F,OAAAxc,GAAAkiC,EAAA5jB,EAAAihB,EAAA/iB,GAAAhQ,EAAA8R,EAAAnkB,OAAAgoC,EAAAF,EAAAzlB,GAAA,GAAAniB,OAAAmS,GAAAjT,EAAA,EAA+GA,EAAAiT,IAAOjT,GACtHyG,EAAAse,EAAA/kB,MAAA2oC,EAAAzlC,EAAAhE,KAAAuH,IAAA85B,SAAAvgC,EAAA+kB,MACA,YAAAte,KAAAkiC,EAAApI,SAAA95B,EAAA85B,UACAqI,EAAA5oC,GAAA2oC,EACAoE,EAAAnE,EAAA5oC,GAAA6F,EAAA7G,EAAAgB,EAAA4oC,EAAA/nB,EAAApa,EAAAzH,IAKA,WAAA6wC,GAAAnH,EAAA/pC,KAAAwnC,SAAAtgC,EAAA7G,IAGAoyC,GAAA,SAAAluC,GACA,GAAA2C,GAAAlH,KAAAmxC,MACA9wC,EAAAL,KAAA4vC,GAEA,mBAAArrC,OAAA7B,EAAAwnC,YAAA3lC,GAEA,QAAA8iC,GAAArnC,KAAAunC,QAAA/mC,EAAA6mC,EAAAplC,OAAA8nC,KAAAzC,KAAAhjB,EAAA,EAAyFA,EAAA9jB,IAAO8jB,EAChG,OAAAxc,GAAAse,EAAAihB,EAAA/iB,GAAAhQ,EAAA8R,EAAAnkB,OAAAZ,EAAA,EAA8DA,EAAAiT,IAAOjT,EACrE,GAAAyG,EAAAse,EAAA/kB,GAAA,CACA,OAAAopC,GAAAiI,EAAAnuC,EAAAhE,KAAAuH,IAAA85B,SAAAvgC,EAAA+kB,GAAAirB,EAAAnvB,EAAApa,EAAAzH,GAAA4W,EAAA,EAAAnC,EAAA49B,EAAAzwC,OAAmIgV,EAAAnC,IAAOmC,GAC1IwzB,EAAAiI,EAAAz7B,KACAm3B,EAAA3D,EAAAvjC,EAAA7G,EAAA4W,EAAAy7B,EAAArB,EAGAtH,GAAAhoC,KAAA2wC,GACApL,EAAAvlC,KAAA+F,GAKA,UAAAopC,GAAAnH,EAAAzC,EAAApgC,EAAA7G,IAGA+mC,GAAA1kC,EAAA+kC,UAAAxmC,UAAAD,YAEA2xC,GAAA,WACA,UAAAvL,IAAApnC,KAAAunC,QAAAvnC,KAAAwnC,WA+CAoL,GAAA,SAAA1rC,EAAAlF,EAAAqiC,GACA,GAAAhjC,GAAA,cAAA6F,GAAA,IAAAgnC,EAAAthB,wBAAAkC,EACA,cAAA9sB,EAAAhC,KACAixC,WAAA/pC,EAAAg9B,EAAAh9B,EAAA7F,IACAkhB,GAAA,aAAArb,EAAA8pC,EAAA9pC,IACAlH,KAAAixC,WAAA/pC,EAAA,kBAAAlF,GACAuiC,EAAAr9B,EAAA7F,EAAAsuC,EAAA3vC,KAAA,SAAAkH,EAAAlF,IACAoiC,EAAAl9B,EAAA7F,EAAAW,EAAA,IAAAqiC,IAcAwO,GAAA,SAAA3rC,EAAAlF,EAAAqiC,GACA,GAAArxB,GAAA,UAAA9L,GAAA,GACA,IAAAsD,UAAAvI,OAAA,SAAA+Q,EAAAhT,KAAAqvC,MAAAr8B,OAAAo9B,MACA,UAAApuC,EAAA,MAAAhC,MAAAqvC,MAAAr8B,EAAA,KACA,sBAAAhR,GAAA,SAAA0f,MACA,OAAA1hB,MAAAqvC,MAAAr8B,EAAAi+B,EAAA/pC,EAAAlF,EAAA,MAAAqiC,EAAA,GAAAA,KAgBAyO,GAAA,SAAA9wC,GACA,MAAAhC,MAAAqvC,MAAA,yBAAArtC,GACA4jC,EAAA+J,EAAA3vC,KAAA,OAAAgC,IACA2jC,EAAA,MAAA3jC,EAAA,GAAAA,EAAA,MAGA+wC,GAAA,WAKA,OAJA7rC,GAAAlH,KAAAmxC,MACA6B,EAAAhzC,KAAA4vC,IACAqD,EAAA7B,IAEA/J,EAAArnC,KAAAunC,QAAA/mC,EAAA6mC,EAAAplC,OAAAqiB,EAAA,EAA2DA,EAAA9jB,IAAO8jB,EAClE,OAAAxc,GAAAse,EAAAihB,EAAA/iB,GAAAhQ,EAAA8R,EAAAnkB,OAAAZ,EAAA,EAA8DA,EAAAiT,IAAOjT,EACrE,GAAAyG,EAAAse,EAAA/kB,GAAA,CACA,GAAAgwC,GAAAnvB,EAAApa,EAAAkrC,EACA5E,GAAAtmC,EAAAZ,EAAA+rC,EAAA5xC,EAAA+kB,GACAwV,KAAAyV,EAAAzV,KAAAyV,EAAAvC,MAAAuC,EAAA7oC,SACAsmC,MAAA,EACAtmC,SAAA6oC,EAAA7oC,SACAE,KAAA2oC,EAAA3oC,OAMA,UAAAwoC,GAAA7J,EAAArnC,KAAAwnC,SAAAtgC,EAAA+rC,IAGA5yC,GAAA,EAiBA6yC,GAAAxwC,EAAA+kC,UAAAxmC,SAEAiwC,GAAAjwC,UAAAwD,EAAAxD,WACAD,YAAAkwC,EACA3sC,OAAAiuC,GACA3tC,UAAA4tC,GACA7nC,OAAAwnC,GACA1G,MAAA2G,GACA5K,UAAAkL,GACAluC,WAAAsuC,GACAxyC,KAAA2yC,GAAA3yC,KACA4rC,MAAA+G,GAAA/G,MACArkC,KAAAorC,GAAAprC,KACA6iC,KAAAuI,GAAAvI,KACAnI,MAAA0Q,GAAA1Q,MACAp/B,KAAA8vC,GAAA9vC,KACAmf,GAAA+vB,GACAhuC,KAAAytC,GACA1B,UAAA2B,GACA5sC,MAAAwtC,GACA3B,WAAA4B,GACAnrC,KAAAorC,GACAhuC,OAAAytC,GACAlD,MAAAyC,EACAhD,MAAAmD,GACAzpC,SAAA0pC,GACAxpC,KAAAypC,GAGA,IAAAZ,KACA3V,KAAA,KACAkT,MAAA,EACAtmC,SAAA,IACAE,KAAAlG,EAAAsO,gBAaAqiC,GAAA,SAAAjsC,GACA,GAAA7G,GACAixC,CAEApqC,aAAAgqC,IACA7wC,EAAA6G,EAAA0oC,IAAA1oC,IAAAiqC,QAEA9wC,EAAA+wC,KAAAE,EAAAC,IAAA3V,KAAAqS,EAAAuD,MAAAtqC,EAAA,MAAAA,EAAA,KAAAA,EAAA,GAGA,QAAAmgC,GAAArnC,KAAAunC,QAAA/mC,EAAA6mC,EAAAplC,OAAAqiB,EAAA,EAA2DA,EAAA9jB,IAAO8jB,EAClE,OAAAxc,GAAAse,EAAAihB,EAAA/iB,GAAAhQ,EAAA8R,EAAAnkB,OAAAZ,EAAA,EAA8DA,EAAAiT,IAAOjT,GACrEyG,EAAAse,EAAA/kB,KACA+sC,EAAAtmC,EAAAZ,EAAA7G,EAAAgB,EAAA+kB,EAAAkrB,GAAAD,EAAAvpC,EAAAzH,GAKA,WAAA6wC,GAAA7J,EAAArnC,KAAAwnC,SAAAtgC,EAAA7G,GAGAqC,GAAA+kC,UAAAxmC,UAAA0wC,UAAAE,EACAnvC,EAAA+kC,UAAAxmC,UAAAwD,WAAA0uC,EAEA,IAAAzzC,KAAA,MAEAkyC,GAAA,SAAA9pC,EAAAZ,GACA,GACAknC,GACA/sC,EAFA0tC,EAAAjnC,EAAAumC,YAIA,IAAAU,EAAA,CACA7nC,EAAA,MAAAA,EAAA,KAAAA,EAAA,EACA,KAAA7F,IAAA0tC,GACA,IAAAX,EAAAW,EAAA1tC,IAAAitC,MAAAK,GAAAP,EAAAlnC,SACA,UAAAgqC,KAAAppC,IAAApI,GAAAwH,GAAA7F,GAKA,YAGAzB,GAAA6E,aACA7E,EAAAgyC,UACAhyC,EAAA+xC,YAEAtvC,OAAAsQ,eAAA/S,EAAA,cAA8CoC,OAAA,OX65IxC,SAAUnC,EAAQD,EAASM,IY5qKjC,SAAA2M,EAAAlN,GACAA,EAAAC,IAGCI,KAAA,SAAAJ,GAA4B,YAc7B,SAAA4xC,KACA,MAAA4B,KAAAC,EAAAC,GAAAF,EAAAG,EAAA/B,MAAAgC,GAGA,QAAAF,KACAF,EAAA,EAGA,QAAAK,KACAzzC,KAAA0zC,MACA1zC,KAAA2zC,MACA3zC,KAAA2iC,MAAA,KA0BA,QAAAiM,GAAAxsB,EAAA0sB,EAAAlT,GACA,GAAA7uB,GAAA,GAAA0mC,EAEA,OADA1mC,GAAA8hC,QAAAzsB,EAAA0sB,EAAAlT,GACA7uB,EAGA,QAAA6mC,KACApC,MACAqC,CAEA,KADA,GAAAvkC,GAAAvC,EAAA+mC,EACA/mC,IACAuC,EAAA8jC,EAAArmC,EAAA4mC,QAAA,GAAA5mC,EAAA2mC,MAAAnzC,KAAA,KAAA+O,GACAvC,IAAA41B,QAEAkR,EAGA,QAAAE,KACAX,GAAAY,EAAAT,EAAA/B,OAAAgC,EACAK,EAAA5E,EAAA,CACA,KACA2E,IACG,QACHC,EAAA,EACAI,IACAb,EAAA,GAIA,QAAAc,KACA,GAAA1C,GAAA+B,EAAA/B,MAAA1C,EAAA0C,EAAAwC,CACAlF,GAAAqF,IAAAX,GAAA1E,EAAAkF,EAAAxC,GAGA,QAAAyC,KAEA,IADA,GAAA99B,GAAAD,EAAAG,EAAAy9B,EAAAlY,EAAAvV,IACAhQ,GACAA,EAAAq9B,OACA9X,EAAAvlB,EAAAs9B,QAAA/X,EAAAvlB,EAAAs9B,OACAx9B,EAAAE,MAAAssB,QAEAzsB,EAAAG,EAAAssB,MAAAtsB,EAAAssB,MAAA,KACAtsB,EAAAF,IAAAwsB,MAAAzsB,EAAA49B,EAAA59B,EAGAk+B,GAAAj+B,EACAk+B,EAAAzY,GAGA,QAAAyY,GAAAzY,GACA,IAAAiY,EAAA,CACA5E,MAAAqF,aAAArF,GACA,IAAAH,GAAAlT,EAAAwX,CACAtE,GAAA,IACAlT,EAAAvV,MAAA4oB,EAAAsF,WAAAR,EAAAjF,IACAve,MAAAikB,cAAAjkB,MAEAA,IAAAyjB,EAAAZ,EAAA7iB,EAAAkkB,YAAAP,EAAAC,IACAN,EAAA,EAAAR,EAAAU,KA3GA,GAIAD,GACAM,EALAP,EAAA,EACA5E,EAAA,EACA1e,EAAA,EACA4jB,EAAA,IAGAH,EAAA,EACAZ,EAAA,EACAI,EAAA,EACAD,EAAA,gBAAAmB,0BAAAlD,IAAAkD,YAAA1rC,KACAqqC,EAAA,gBAAA1M,gBAAAgO,sBAAAhO,OAAAgO,sBAAA/J,KAAAjE,QAAA,SAAAv8B,GAAqImqC,WAAAnqC,EAAA,IAgBrIqpC,GAAAxyC,UAAA2tC,EAAA3tC,WACAD,YAAAyyC,EACA5E,QAAA,SAAAzsB,EAAA0sB,EAAAlT,GACA,qBAAAxZ,GAAA,SAAA9f,WAAA,6BACAs5B,IAAA,MAAAA,EAAA4V,KAAA5V,IAAA,MAAAkT,EAAA,GAAAA,GACA9uC,KAAA2iC,OAAAyR,IAAAp0C,OACAo0C,IAAAzR,MAAA3iC,KACA8zC,EAAA9zC,KACAo0C,EAAAp0C,MAEAA,KAAA0zC,MAAAtxB,EACApiB,KAAA2zC,MAAA/X,EACAyY,KAEAzjB,KAAA,WACA5wB,KAAA0zC,QACA1zC,KAAA0zC,MAAA,KACA1zC,KAAA2zC,MAAAttB,IACAguB,MAmEA,IAAAO,GAAA,SAAAxyB,EAAA0sB,EAAAlT,GACA,GAAA7uB,GAAA,GAAA0mC,EAMA,OALA3E,GAAA,MAAAA,EAAA,GAAAA,EACA/hC,EAAA8hC,QAAA,SAAAH,GACA3hC,EAAA6jB,OACAxO,EAAAssB,EAAAI,IACGA,EAAAlT,GACH7uB,GAGA8nC,EAAA,SAAAzyB,EAAA0sB,EAAAlT,GACA,GAAA7uB,GAAA,GAAA0mC,GAAAqB,EAAAhG,CACA,cAAAA,GAAA/hC,EAAA8hC,QAAAzsB,EAAA0sB,EAAAlT,GAAA7uB,IACA+hC,KAAAlT,EAAA,MAAAA,EAAA4V,KAAA5V,EACA7uB,EAAA8hC,QAAA,QAAAO,GAAAV,GACAA,GAAAoG,EACA/nC,EAAA8hC,QAAAO,EAAA0F,GAAAhG,EAAAlT,GACAxZ,EAAAssB,IACGI,EAAAlT,GACH7uB,GAGAnN,GAAA4xC,MACA5xC,EAAAgvC,QACAhvC,EAAAg0C,aACAh0C,EAAAqvC,QAAA2F,EACAh1C,EAAA2wB,SAAAskB,EAEAxyC,OAAAsQ,eAAA/S,EAAA,cAA8CoC,OAAA,OZqrKtC,CACA,CACA,CAEF,SAAUnC,EAAQD,EAASM,GAEhC,GAAIS,Ea70KLA,GAAO,WAEH,GAAMkC,IACFiH,YAAa,cACbD,SAAU,gBACVJ,UAAW,YACXC,WAAY,cAGVqrC,GACFC,qBAAsB,QACtBC,SAAU,YACVC,QAAS,SAGb,QACIryC,uBACAkyC,iBACAI,eAAgB,mBAlBxB50C,KAAAX,EAAAM,EAAAN,EAAAC,KAAA6B,SAAAf,IAAAd,EAAAD,QAAAe,Kbs2KQ,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEF,SAAUd,EAAQD,EAASM,GAEhC,GAAIS,Ecj3KLA,GAAO,SAAS4B,GACZ,YAWA,SAAS6yC,GAAiBpzC,EAAO8yC,EAAOO,GACpC,MAAO5yC,GAASqD,OAAOuvC,GAAUrzC,EAAQ8yC,EAAQ,KAQrD,QAAS5xC,GAAUlB,GACf,MAAOA,GAAQ,IAAM,EAnBzB,GAAMS,GAAWvC,EAAQ,EAsBzB,QACIk1C,mBACAlyC,cA3BR3C,KAAAX,EAAAM,EAAAN,EAAAC,KAAA6B,SAAAf,IAAAd,EAAAD,QAAAe,Kdm5KQ,CAEF,SAAUd,EAAQD,EAASM,GAEhC,GAAIS,Eev5KLA,GAAO,SAAS4B,GACZ,YAiCA,SAAS+yC,GAAatzC,EAAOuzC,GACzB,GAAI5K,GAAO,OAOX,OALI3oC,GAAQuzC,EAAOC,MAAMC,MACrB9K,EAAO,QACA3oC,EAAQuzC,EAAOG,OAAOD,QAC7B9K,EAAO,UAEJA,EAQX,QAAS5nC,GAAmBf,GACxB,GAAI2oC,GAAO2K,EAAatzC,EAAO2zC,GAC3B7vC,EAAS6vC,EAAoBhL,GAAM7kC,MAEvC,OAAOA,GAAO9D,GAQlB,QAASgB,GAAmBhB,GACxB,GAAI2oC,GAAO2K,EAAatzC,EAAO4zC,GAC3B9vC,EAAS8vC,EAAoBjL,GAAM7kC,MAEvC,OAAOA,GAAO9D,GA/DlB,GAAMS,GAAWvC,EAAQ,GAEnBy1C,GACMH,OACIC,MAAO,GACP3vC,OAAQrD,EAASqD,OAAO,KAE5B4vC,QACID,MAAO,IACP3vC,OAAQrD,EAASqD,OAAO,KAE5B+vC,OACIJ,MAAO,KACP3vC,OAAQrD,EAASqD,OAAO,SAGlC8vC,GACMJ,OACIC,MAAO,GACP3vC,OAAQrD,EAASqD,OAAO,QAE5B4vC,QACID,MAAO,IACP3vC,OAAQrD,EAASqD,OAAO,QAE5B+vC,OACIJ,MAAO,KACP3vC,OAAQrD,EAASqD,OAAO,QAuCxC,QACI9C,qBACAD,uBAvERxC,KAAAX,EAAAM,EAAAN,EAAAC,KAAA6B,SAAAf,IAAAd,EAAAD,QAAAe","file":"tooltip.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"tooltip\"] = factory();\n\telse\n\t\troot[\"britecharts\"] = root[\"britecharts\"] || {}, root[\"britecharts\"][\"tooltip\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"tooltip\"] = factory();\n\telse\n\t\troot[\"britecharts\"] = root[\"britecharts\"] || {}, root[\"britecharts\"][\"tooltip\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;'use strict';\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require) {\n\t 'use strict';\n\t\n\t var d3Ease = __webpack_require__(2);\n\t var d3Format = __webpack_require__(6);\n\t var d3Selection = __webpack_require__(12);\n\t var d3Transition = __webpack_require__(13);\n\t var d3TimeFormat = __webpack_require__(11);\n\t\n\t var _require = __webpack_require__(18),\n\t axisTimeCombinations = _require.axisTimeCombinations;\n\t\n\t var _require2 = __webpack_require__(29),\n\t formatIntegerValue = _require2.formatIntegerValue,\n\t formatDecimalValue = _require2.formatDecimalValue;\n\t\n\t var _require3 = __webpack_require__(27),\n\t isInteger = _require3.isInteger;\n\t\n\t /**\n\t * Tooltip Component reusable API class that renders a\n\t * simple and configurable tooltip element for Britechart's\n\t * line chart or stacked area chart.\n\t *\n\t * @module Tooltip\n\t * @tutorial tooltip\n\t * @requires d3-array, d3-axis, d3-dispatch, d3-format, d3-scale, d3-selection, d3-transition\n\t *\n\t * @example\n\t * var lineChart = line(),\n\t * tooltip = tooltip();\n\t *\n\t * tooltip\n\t * .title('Tooltip title');\n\t *\n\t * lineChart\n\t * .width(500)\n\t * .on('customMouseOver', function() {\n\t * tooltip.show();\n\t * })\n\t * .on('customMouseMove', function(dataPoint, topicColorMap, dataPointXPosition) {\n\t * tooltip.update(dataPoint, topicColorMap, dataPointXPosition);\n\t * })\n\t * .on('customMouseOut', function() {\n\t * tooltip.hide();\n\t * });\n\t *\n\t * d3Selection.select('.css-selector')\n\t * .datum(dataset)\n\t * .call(lineChart);\n\t *\n\t * d3Selection.select('.metadata-group .hover-marker')\n\t * .datum([])\n\t * .call(tooltip);\n\t *\n\t */\n\t\n\t\n\t return function module() {\n\t\n\t var margin = {\n\t top: 2,\n\t right: 2,\n\t bottom: 2,\n\t left: 2\n\t },\n\t width = 250,\n\t height = 45,\n\t title = 'Tooltip title',\n\t shouldShowDateInTitle = true,\n\t valueFormat = null,\n\t\n\t\n\t // tooltip\n\t tooltip = void 0,\n\t tooltipOffset = {\n\t y: -55,\n\t x: 0\n\t },\n\t tooltipMaxTopicLength = 170,\n\t tooltipTextContainer = void 0,\n\t tooltipDivider = void 0,\n\t tooltipBody = void 0,\n\t tooltipTitle = void 0,\n\t tooltipWidth = 250,\n\t tooltipHeight = 48,\n\t tooltipBorderRadius = 3,\n\t ttTextX = 0,\n\t ttTextY = 37,\n\t textSize = void 0,\n\t entryLineLimit = 3,\n\t\n\t\n\t // Animations\n\t mouseChaseDuration = 100,\n\t ease = d3Ease.easeQuadInOut,\n\t circleYOffset = 8,\n\t colorMap = void 0,\n\t bodyFillColor = '#FFFFFF',\n\t borderStrokeColor = '#D2D6DF',\n\t titleFillColor = '#6D717A',\n\t textFillColor = '#282C35',\n\t tooltipTextColor = '#000000',\n\t dateLabel = 'date',\n\t valueLabel = 'value',\n\t nameLabel = 'name',\n\t topicLabel = 'topics',\n\t defaultAxisSettings = axisTimeCombinations.DAY_MONTH,\n\t dateFormat = null,\n\t topicsOrder = [],\n\t\n\t\n\t // formats\n\t monthDayYearFormat = d3TimeFormat.timeFormat('%b %d, %Y'),\n\t monthDayHourFormat = d3TimeFormat.timeFormat('%b %d, %I %p'),\n\t locale = void 0,\n\t chartWidth = void 0,\n\t chartHeight = void 0,\n\t data = void 0,\n\t svg = void 0;\n\t\n\t /**\n\t * This function creates the graph using the selection as container\n\t * @param {D3Selection} _selection A d3 selection that represents\n\t * the container(s) where the chart(s) will be rendered\n\t * @param {Object} _data The data to attach and generate the chart\n\t */\n\t function exports(_selection) {\n\t _selection.each(function (_data) {\n\t chartWidth = width - margin.left - margin.right;\n\t chartHeight = height - margin.top - margin.bottom;\n\t data = _data;\n\t\n\t buildSVG(this);\n\t });\n\t }\n\t\n\t /**\n\t * Builds containers for the tooltip\n\t * Also applies the Margin convention\n\t * @private\n\t */\n\t function buildContainerGroups() {\n\t var container = svg.append('g').classed('tooltip-container-group', true).attr('transform', 'translate( ' + margin.left + ', ' + margin.top + ')');\n\t\n\t container.append('g').classed('tooltip-group', true);\n\t }\n\t\n\t /**\n\t * Builds the SVG element that will contain the chart\n\t * @param {HTMLElement} container DOM element that will work as the container of the graph\n\t * @private\n\t */\n\t function buildSVG(container) {\n\t if (!svg) {\n\t svg = d3Selection.select(container).append('g').classed('britechart britechart-tooltip', true);\n\t\n\t buildContainerGroups();\n\t drawTooltip();\n\t }\n\t svg.transition().attr('width', width).attr('height', height);\n\t\n\t // Hidden by default\n\t exports.hide();\n\t }\n\t\n\t /**\n\t * Resets the tooltipBody content\n\t * @return void\n\t */\n\t function cleanContent() {\n\t tooltipBody.selectAll('text').remove();\n\t tooltipBody.selectAll('circle').remove();\n\t }\n\t\n\t /**\n\t * Draws the different elements of the Tooltip box\n\t * @return void\n\t */\n\t function drawTooltip() {\n\t tooltipTextContainer = svg.selectAll('.tooltip-group').append('g').classed('tooltip-text', true);\n\t\n\t tooltip = tooltipTextContainer.append('rect').classed('tooltip-text-container', true).attr('x', -tooltipWidth / 4 + 8).attr('y', 0).attr('width', tooltipWidth).attr('height', tooltipHeight).attr('rx', tooltipBorderRadius).attr('ry', tooltipBorderRadius).style('fill', bodyFillColor).style('stroke', borderStrokeColor).style('stroke-width', 1);\n\t\n\t tooltipTitle = tooltipTextContainer.append('text').classed('tooltip-title', true).attr('x', -tooltipWidth / 4 + 17).attr('dy', '.35em').attr('y', 16).style('fill', titleFillColor);\n\t\n\t tooltipDivider = tooltipTextContainer.append('line').classed('tooltip-divider', true).attr('x1', -tooltipWidth / 4 + 15).attr('x2', 265).attr('y1', 31).attr('y2', 31).style('stroke', borderStrokeColor);\n\t\n\t tooltipBody = tooltipTextContainer.append('g').classed('tooltip-body', true).style('transform', 'translateY(8px)').style('fill', textFillColor);\n\t }\n\t\n\t /**\n\t * Formats the value depending on its characteristics\n\t * @param {Number} value Value to format\n\t * @return {Number} Formatted value\n\t */\n\t function getFormattedValue(value) {\n\t var valueFormatter = formatDecimalValue;\n\t\n\t if (!value) {\n\t return 0;\n\t }\n\t if (valueFormat) {\n\t valueFormatter = d3Format.format(valueFormat);\n\t } else if (isInteger(value)) {\n\t valueFormatter = formatIntegerValue;\n\t }\n\t\n\t return valueFormatter(value);\n\t }\n\t\n\t /**\n\t * Calculates the desired position for the tooltip\n\t * @param {Number} mouseX Current horizontal mouse position\n\t * @param {Number} mouseY Current vertical mouse position\n\t * @return {Number[]} X and Y position\n\t */\n\t function getTooltipPosition(_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t mouseX = _ref2[0],\n\t mouseY = _ref2[1];\n\t\n\t var tooltipX = void 0,\n\t tooltipY = void 0;\n\t\n\t // show tooltip to the right\n\t if (mouseX - tooltipWidth < 0) {\n\t // Tooltip on the right\n\t tooltipX = tooltipWidth - 185;\n\t } else {\n\t // Tooltip on the left\n\t tooltipX = -205;\n\t }\n\t\n\t if (mouseY) {\n\t tooltipY = tooltipOffset.y;\n\t // tooltipY = mouseY + tooltipOffset.y;\n\t } else {\n\t tooltipY = tooltipOffset.y;\n\t }\n\t\n\t return [tooltipX, tooltipY];\n\t }\n\t\n\t /**\n\t * Extracts the value from the data object\n\t * @param {Object} data Data value containing the info\n\t * @return {String} Value to show\n\t */\n\t function getValueText(data) {\n\t var value = data[valueLabel];\n\t var valueText = void 0;\n\t\n\t if (data.missingValue) {\n\t valueText = '-';\n\t } else {\n\t valueText = getFormattedValue(value).toString();\n\t }\n\t\n\t return valueText;\n\t }\n\t\n\t /**\n\t * Resets the height of the tooltip and the pointer for the text\n\t * position\n\t */\n\t function resetSizeAndPositionPointers() {\n\t tooltipHeight = 48;\n\t ttTextY = 37;\n\t ttTextX = 0;\n\t }\n\t\n\t /**\n\t * Draws the data entries inside the tooltip for a given topic\n\t * @param {Object} topic Topic to extract data from\n\t * @return void\n\t */\n\t function updateTopicContent(topic) {\n\t var name = topic[nameLabel],\n\t tooltipRight = void 0,\n\t tooltipLeftText = void 0,\n\t tooltipRightText = void 0,\n\t elementText = void 0;\n\t\n\t tooltipLeftText = topic.topicName || name;\n\t tooltipRightText = getValueText(topic);\n\t\n\t elementText = tooltipBody.append('text').classed('tooltip-left-text', true).attr('dy', '1em').attr('x', ttTextX - 20).attr('y', ttTextY).style('fill', tooltipTextColor).text(tooltipLeftText).call(textWrap, tooltipMaxTopicLength, -25);\n\t\n\t tooltipRight = tooltipBody.append('text').classed('tooltip-right-text', true).attr('dy', '1em').attr('x', ttTextX + 8).attr('y', ttTextY).style('fill', tooltipTextColor).text(tooltipRightText);\n\t\n\t textSize = elementText.node().getBBox();\n\t tooltipHeight += textSize.height + 5;\n\t\n\t // Not sure if necessary\n\t tooltipRight.attr('x', tooltipWidth - tooltipRight.node().getBBox().width - 10 - tooltipWidth / 4);\n\t\n\t tooltipBody.append('circle').classed('tooltip-circle', true).attr('cx', 23 - tooltipWidth / 4).attr('cy', ttTextY + circleYOffset).attr('r', 5).style('fill', colorMap[name]).style('stroke-width', 1);\n\t\n\t ttTextY += textSize.height + 7;\n\t }\n\t\n\t /**\n\t * Updates size and position of tooltip depending on the side of the chart we are in\n\t * TODO: This needs a refactor, following the mini-tooltip code.\n\t *\n\t * @param {Object} dataPoint DataPoint of the tooltip\n\t * @param {Number} xPosition DataPoint's x position in the chart\n\t * @param {Number} xPosition DataPoint's y position in the chart\n\t * @return void\n\t */\n\t function updatePositionAndSize(dataPoint, xPosition, yPosition) {\n\t var _getTooltipPosition = getTooltipPosition([xPosition, yPosition]),\n\t _getTooltipPosition2 = _slicedToArray(_getTooltipPosition, 2),\n\t tooltipX = _getTooltipPosition2[0],\n\t tooltipY = _getTooltipPosition2[1];\n\t\n\t tooltip.attr('width', tooltipWidth).attr('height', tooltipHeight + 10);\n\t\n\t tooltipTextContainer.transition().duration(mouseChaseDuration).ease(ease).attr('transform', 'translate(' + tooltipX + ', ' + tooltipY + ')');\n\t\n\t tooltipDivider.attr('x2', tooltipWidth - 60);\n\t }\n\t\n\t /**\n\t * Updates value of tooltipTitle with the data meaning and the date\n\t * @param {Object} dataPoint Point of data to use as source\n\t * @return void\n\t */\n\t function updateTitle(dataPoint) {\n\t var tTitle = title;\n\t\n\t if (shouldShowDateInTitle) {\n\t tTitle = tTitle + ' - ' + formatDate(new Date(dataPoint[dateLabel]));\n\t }\n\t\n\t tooltipTitle.text(tTitle);\n\t }\n\t\n\t /**\n\t * Figures out which date format to use when showing the date of the current data entry\n\t * @return {Function} The proper date formatting function\n\t */\n\t function formatDate(date) {\n\t var settings = dateFormat || defaultAxisSettings;\n\t var format = null;\n\t var localeOptions = { month: 'short', day: 'numeric' };\n\t\n\t if (settings === axisTimeCombinations.DAY_MONTH || settings === axisTimeCombinations.MONTH_YEAR) {\n\t format = monthDayYearFormat;\n\t localeOptions.year = 'numeric';\n\t } else if (settings === axisTimeCombinations.HOUR_DAY || settings === axisTimeCombinations.MINUTE_HOUR) {\n\t format = monthDayHourFormat;\n\t localeOptions.hour = 'numeric';\n\t }\n\t\n\t if (locale && typeof Intl !== 'undefined' && (typeof Intl === 'undefined' ? 'undefined' : _typeof(Intl)) === 'object' && Intl.DateTimeFormat) {\n\t var f = Intl.DateTimeFormat(locale, localeOptions);\n\t\n\t return f.format(date);\n\t }\n\t\n\t return format(date);\n\t }\n\t\n\t /**\n\t * Helper method to sort the passed topics array by the names passed int he order arary\n\t * @param {Object[]} topics Topics data, retrieved from datapoint passed by line chart\n\t * @param {Object[]} order Array of names in the order to sort topics by\n\t * @return {Object[]} sorted topics object\n\t */\n\t function _sortByTopicsOrder(topics) {\n\t var order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : topicsOrder;\n\t\n\t return order.map(function (orderName) {\n\t return topics.filter(function (_ref3) {\n\t var name = _ref3.name;\n\t return name === orderName;\n\t })[0];\n\t });\n\t }\n\t\n\t /**\n\t * Sorts topic by alphabetical order for arrays of objects with a name proeprty\n\t * @param {Array} topics List of topic objects\n\t * @return {Array} List of topic name strings\n\t */\n\t function _sortByAlpha(topics) {\n\t return topics.map(function (d) {\n\t return d;\n\t }).sort(function (a, b) {\n\t if (a.name > b.name) return 1;\n\t if (a.name === b.name) return 0;\n\t return -1;\n\t });\n\t\n\t var otherIndex = topics.map(function (_ref4) {\n\t var name = _ref4.name;\n\t return name;\n\t }).indexOf('Other');\n\t\n\t if (otherIndex >= 0) {\n\t var other = topics.splice(otherIndex, 1);\n\t\n\t topics = topics.concat(other);\n\t }\n\t }\n\t\n\t /**\n\t * Wraps a text given the text, width, x position and textFormatter function\n\t * @param {D3Selection} text Selection with the text to wrap inside\n\t * @param {Number} width Desired max width for that line\n\t * @param {Number} xpos Initial x position of the text\n\t *\n\t * REF: http://bl.ocks.org/mbostock/7555321\n\t * More discussions on https://github.com/mbostock/d3/issues/1642\n\t */\n\t function textWrap(text, width, xpos) {\n\t xpos = xpos || 0;\n\t\n\t text.each(function () {\n\t var words, word, line, lineNumber, lineHeight, y, dy, tspan;\n\t\n\t text = d3Selection.select(this);\n\t\n\t words = text.text().split(/\\s+/).reverse();\n\t line = [];\n\t lineNumber = 0;\n\t lineHeight = 1.2;\n\t y = text.attr('y');\n\t dy = parseFloat(text.attr('dy'));\n\t tspan = text.text(null).append('tspan').attr('x', xpos).attr('y', y).attr('dy', dy + 'em');\n\t\n\t while (word = words.pop()) {\n\t line.push(word);\n\t tspan.text(line.join(' '));\n\t\n\t if (tspan.node().getComputedTextLength() > width) {\n\t line.pop();\n\t tspan.text(line.join(' '));\n\t\n\t if (lineNumber < entryLineLimit - 1) {\n\t line = [word];\n\t tspan = text.append('tspan').attr('x', xpos).attr('y', y).attr('dy', ++lineNumber * lineHeight + dy + 'em').text(word);\n\t }\n\t }\n\t }\n\t });\n\t }\n\t\n\t /**\n\t * Draws the data entries inside the tooltip\n\t * @param {Object} dataPoint Data entry from to take the info\n\t * @return void\n\t */\n\t function updateContent(dataPoint) {\n\t var topics = dataPoint[topicLabel];\n\t\n\t // sort order by topicsOrder array if passed\n\t if (topicsOrder.length) {\n\t topics = _sortByTopicsOrder(topics);\n\t } else if (topics.length && topics[0].name) {\n\t topics = _sortByAlpha(topics);\n\t }\n\t\n\t cleanContent();\n\t updateTitle(dataPoint);\n\t resetSizeAndPositionPointers();\n\t topics.forEach(updateTopicContent);\n\t }\n\t\n\t /**\n\t * Updates tooltip title, content, size and position\n\t * sorts by alphatical name order if not forced order given\n\t *\n\t * @param {lineChartPointByDate} dataPoint Current datapoint to show info about\n\t * @param {Number} xPosition Position of the mouse on the X axis\n\t * @return void\n\t */\n\t function updateTooltip(dataPoint, xPosition, yPosition) {\n\t updateContent(dataPoint);\n\t updatePositionAndSize(dataPoint, xPosition, yPosition);\n\t }\n\t\n\t // API\n\t\n\t /**\n\t * constants to be used to force the x axis to respect a certain granularity\n\t * current options: HOUR_DAY, DAY_MONTH, MONTH_YEAR\n\t * @example tooltip.dateFormat(tooltip.axisTimeCombinations.HOUR_DAY)\n\t */\n\t exports.axisTimeCombinations = axisTimeCombinations;\n\t\n\t /**\n\t * Gets or Sets the dateLabel of the data\n\t * @param {Number} _x Desired dateLabel\n\t * @return { dateLabel | module} Current dateLabel or Chart module to chain calls\n\t * @public\n\t */\n\t exports.dateLabel = function (_x) {\n\t if (!arguments.length) {\n\t return dateLabel;\n\t }\n\t dateLabel = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Exposes the ability to force the tooltip to use a certain date format\n\t * @param {String} _x Desired format\n\t * @return { (String|Module) } Current format or module to chain calls\n\t */\n\t exports.dateFormat = function (_x) {\n\t if (!arguments.length) {\n\t return dateFormat || defaultAxisSettings;\n\t }\n\t dateFormat = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Hides the tooltip\n\t * @return {Module} Tooltip module to chain calls\n\t * @public\n\t */\n\t exports.hide = function () {\n\t svg.style('display', 'none');\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Pass locale for the tooltip to render the date in\n\t * @param {String} _x must be a locale tag like 'en-US' or 'fr-FR'\n\t * @return { (String|Module) } Current locale or module to chain calls\n\t */\n\t exports.locale = function (_x) {\n\t if (!arguments.length) {\n\t return locale;\n\t }\n\t locale = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the nameLabel of the data\n\t * @param {Number} _x Desired nameLabel\n\t * @return { nameLabel | module} Current nameLabel or Chart module to chain calls\n\t * @public\n\t */\n\t exports.nameLabel = function (_x) {\n\t if (!arguments.length) {\n\t return nameLabel;\n\t }\n\t nameLabel = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Shows the tooltip\n\t * @return {Module} Tooltip module to chain calls\n\t * @public\n\t */\n\t exports.show = function () {\n\t svg.style('display', 'block');\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Pass an override for the ordering of your tooltip\n\t * @param {Object[]} _x Array of the names of your tooltip items\n\t * @return { overrideOrder | module} Current overrideOrder or Chart module to chain calls\n\t * @public\n\t */\n\t exports.topicsOrder = function (_x) {\n\t if (!arguments.length) {\n\t return topicsOrder;\n\t }\n\t topicsOrder = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the title of the tooltip\n\t * @param {string} _x Desired title\n\t * @return { string | module} Current title or module to chain calls\n\t * @public\n\t */\n\t exports.title = function (_x) {\n\t if (!arguments.length) {\n\t return title;\n\t }\n\t title = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the topicLabel of the data\n\t * @param {Number} _x Desired topicLabel\n\t * @return { topicLabel | module} Current topicLabel or Chart module to chain calls\n\t * @public\n\t */\n\t exports.topicLabel = function (_x) {\n\t if (!arguments.length) {\n\t return topicLabel;\n\t }\n\t topicLabel = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Updates the position and content of the tooltip\n\t * @param {Object} dataPoint Datapoint to represent\n\t * @param {Object} colorMapping Color scheme of the topics\n\t * @param {Number} position X-scale position in pixels\n\t * @return {Module} Tooltip module to chain calls\n\t * @public\n\t */\n\t exports.update = function (dataPoint, colorMapping, xPosition) {\n\t var yPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\t\n\t colorMap = colorMapping;\n\t updateTooltip(dataPoint, xPosition, yPosition);\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the valueFormat of the tooltip\n\t * @param {String} _x Desired valueFormat\n\t * @return { String | module} Current valueFormat or module to chain calls\n\t * @public\n\t */\n\t exports.valueFormat = function (_x) {\n\t if (!arguments.length) {\n\t return valueFormat;\n\t }\n\t valueFormat = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the valueLabel of the data\n\t * @param {Number} _x Desired valueLabel\n\t * @return { valueLabel | module} Current valueLabel or Chart module to chain calls\n\t * @public\n\t */\n\t exports.valueLabel = function (_x) {\n\t if (!arguments.length) {\n\t return valueLabel;\n\t }\n\t valueLabel = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets shouldShowDateInTitle\n\t * @param {Boolean} _x Desired value\n\t * @return { shouldShowDateInTitle | module} Current shouldShowDateInTitle or Chart module to chain calls\n\t * @public\n\t */\n\t exports.shouldShowDateInTitle = function (_x) {\n\t if (!arguments.length) {\n\t return shouldShowDateInTitle;\n\t }\n\t shouldShowDateInTitle = _x;\n\t\n\t return this;\n\t };\n\t return exports;\n\t };\n\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 1 */,\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-ease/ Version 1.0.3. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tfunction linear(t) {\n\t return +t;\n\t}\n\t\n\tfunction quadIn(t) {\n\t return t * t;\n\t}\n\t\n\tfunction quadOut(t) {\n\t return t * (2 - t);\n\t}\n\t\n\tfunction quadInOut(t) {\n\t return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n\t}\n\t\n\tfunction cubicIn(t) {\n\t return t * t * t;\n\t}\n\t\n\tfunction cubicOut(t) {\n\t return --t * t * t + 1;\n\t}\n\t\n\tfunction cubicInOut(t) {\n\t return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n\t}\n\t\n\tvar exponent = 3;\n\t\n\tvar polyIn = (function custom(e) {\n\t e = +e;\n\t\n\t function polyIn(t) {\n\t return Math.pow(t, e);\n\t }\n\t\n\t polyIn.exponent = custom;\n\t\n\t return polyIn;\n\t})(exponent);\n\t\n\tvar polyOut = (function custom(e) {\n\t e = +e;\n\t\n\t function polyOut(t) {\n\t return 1 - Math.pow(1 - t, e);\n\t }\n\t\n\t polyOut.exponent = custom;\n\t\n\t return polyOut;\n\t})(exponent);\n\t\n\tvar polyInOut = (function custom(e) {\n\t e = +e;\n\t\n\t function polyInOut(t) {\n\t return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n\t }\n\t\n\t polyInOut.exponent = custom;\n\t\n\t return polyInOut;\n\t})(exponent);\n\t\n\tvar pi = Math.PI;\n\tvar halfPi = pi / 2;\n\t\n\tfunction sinIn(t) {\n\t return 1 - Math.cos(t * halfPi);\n\t}\n\t\n\tfunction sinOut(t) {\n\t return Math.sin(t * halfPi);\n\t}\n\t\n\tfunction sinInOut(t) {\n\t return (1 - Math.cos(pi * t)) / 2;\n\t}\n\t\n\tfunction expIn(t) {\n\t return Math.pow(2, 10 * t - 10);\n\t}\n\t\n\tfunction expOut(t) {\n\t return 1 - Math.pow(2, -10 * t);\n\t}\n\t\n\tfunction expInOut(t) {\n\t return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n\t}\n\t\n\tfunction circleIn(t) {\n\t return 1 - Math.sqrt(1 - t * t);\n\t}\n\t\n\tfunction circleOut(t) {\n\t return Math.sqrt(1 - --t * t);\n\t}\n\t\n\tfunction circleInOut(t) {\n\t return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n\t}\n\t\n\tvar b1 = 4 / 11;\n\tvar b2 = 6 / 11;\n\tvar b3 = 8 / 11;\n\tvar b4 = 3 / 4;\n\tvar b5 = 9 / 11;\n\tvar b6 = 10 / 11;\n\tvar b7 = 15 / 16;\n\tvar b8 = 21 / 22;\n\tvar b9 = 63 / 64;\n\tvar b0 = 1 / b1 / b1;\n\t\n\tfunction bounceIn(t) {\n\t return 1 - bounceOut(1 - t);\n\t}\n\t\n\tfunction bounceOut(t) {\n\t return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n\t}\n\t\n\tfunction bounceInOut(t) {\n\t return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n\t}\n\t\n\tvar overshoot = 1.70158;\n\t\n\tvar backIn = (function custom(s) {\n\t s = +s;\n\t\n\t function backIn(t) {\n\t return t * t * ((s + 1) * t - s);\n\t }\n\t\n\t backIn.overshoot = custom;\n\t\n\t return backIn;\n\t})(overshoot);\n\t\n\tvar backOut = (function custom(s) {\n\t s = +s;\n\t\n\t function backOut(t) {\n\t return --t * t * ((s + 1) * t + s) + 1;\n\t }\n\t\n\t backOut.overshoot = custom;\n\t\n\t return backOut;\n\t})(overshoot);\n\t\n\tvar backInOut = (function custom(s) {\n\t s = +s;\n\t\n\t function backInOut(t) {\n\t return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n\t }\n\t\n\t backInOut.overshoot = custom;\n\t\n\t return backInOut;\n\t})(overshoot);\n\t\n\tvar tau = 2 * Math.PI;\n\tvar amplitude = 1;\n\tvar period = 0.3;\n\t\n\tvar elasticIn = (function custom(a, p) {\n\t var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\t\n\t function elasticIn(t) {\n\t return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n\t }\n\t\n\t elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n\t elasticIn.period = function(p) { return custom(a, p); };\n\t\n\t return elasticIn;\n\t})(amplitude, period);\n\t\n\tvar elasticOut = (function custom(a, p) {\n\t var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\t\n\t function elasticOut(t) {\n\t return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n\t }\n\t\n\t elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n\t elasticOut.period = function(p) { return custom(a, p); };\n\t\n\t return elasticOut;\n\t})(amplitude, period);\n\t\n\tvar elasticInOut = (function custom(a, p) {\n\t var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\t\n\t function elasticInOut(t) {\n\t return ((t = t * 2 - 1) < 0\n\t ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n\t : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n\t }\n\t\n\t elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n\t elasticInOut.period = function(p) { return custom(a, p); };\n\t\n\t return elasticInOut;\n\t})(amplitude, period);\n\t\n\texports.easeLinear = linear;\n\texports.easeQuad = quadInOut;\n\texports.easeQuadIn = quadIn;\n\texports.easeQuadOut = quadOut;\n\texports.easeQuadInOut = quadInOut;\n\texports.easeCubic = cubicInOut;\n\texports.easeCubicIn = cubicIn;\n\texports.easeCubicOut = cubicOut;\n\texports.easeCubicInOut = cubicInOut;\n\texports.easePoly = polyInOut;\n\texports.easePolyIn = polyIn;\n\texports.easePolyOut = polyOut;\n\texports.easePolyInOut = polyInOut;\n\texports.easeSin = sinInOut;\n\texports.easeSinIn = sinIn;\n\texports.easeSinOut = sinOut;\n\texports.easeSinInOut = sinInOut;\n\texports.easeExp = expInOut;\n\texports.easeExpIn = expIn;\n\texports.easeExpOut = expOut;\n\texports.easeExpInOut = expInOut;\n\texports.easeCircle = circleInOut;\n\texports.easeCircleIn = circleIn;\n\texports.easeCircleOut = circleOut;\n\texports.easeCircleInOut = circleInOut;\n\texports.easeBounce = bounceOut;\n\texports.easeBounceIn = bounceIn;\n\texports.easeBounceOut = bounceOut;\n\texports.easeBounceInOut = bounceInOut;\n\texports.easeBack = backInOut;\n\texports.easeBackIn = backIn;\n\texports.easeBackOut = backOut;\n\texports.easeBackInOut = backInOut;\n\texports.easeElastic = elasticOut;\n\texports.easeElasticIn = elasticIn;\n\texports.easeElasticOut = elasticOut;\n\texports.easeElasticInOut = elasticInOut;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 3 */,\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-color/ Version 1.0.3. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar define = function(constructor, factory, prototype) {\n\t constructor.prototype = factory.prototype = prototype;\n\t prototype.constructor = constructor;\n\t};\n\t\n\tfunction extend(parent, definition) {\n\t var prototype = Object.create(parent.prototype);\n\t for (var key in definition) prototype[key] = definition[key];\n\t return prototype;\n\t}\n\t\n\tfunction Color() {}\n\t\n\tvar darker = 0.7;\n\tvar brighter = 1 / darker;\n\t\n\tvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\";\n\tvar reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\";\n\tvar reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\";\n\tvar reHex3 = /^#([0-9a-f]{3})$/;\n\tvar reHex6 = /^#([0-9a-f]{6})$/;\n\tvar reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\");\n\tvar reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\");\n\tvar reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\");\n\tvar reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\");\n\tvar reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\");\n\tvar reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\t\n\tvar named = {\n\t aliceblue: 0xf0f8ff,\n\t antiquewhite: 0xfaebd7,\n\t aqua: 0x00ffff,\n\t aquamarine: 0x7fffd4,\n\t azure: 0xf0ffff,\n\t beige: 0xf5f5dc,\n\t bisque: 0xffe4c4,\n\t black: 0x000000,\n\t blanchedalmond: 0xffebcd,\n\t blue: 0x0000ff,\n\t blueviolet: 0x8a2be2,\n\t brown: 0xa52a2a,\n\t burlywood: 0xdeb887,\n\t cadetblue: 0x5f9ea0,\n\t chartreuse: 0x7fff00,\n\t chocolate: 0xd2691e,\n\t coral: 0xff7f50,\n\t cornflowerblue: 0x6495ed,\n\t cornsilk: 0xfff8dc,\n\t crimson: 0xdc143c,\n\t cyan: 0x00ffff,\n\t darkblue: 0x00008b,\n\t darkcyan: 0x008b8b,\n\t darkgoldenrod: 0xb8860b,\n\t darkgray: 0xa9a9a9,\n\t darkgreen: 0x006400,\n\t darkgrey: 0xa9a9a9,\n\t darkkhaki: 0xbdb76b,\n\t darkmagenta: 0x8b008b,\n\t darkolivegreen: 0x556b2f,\n\t darkorange: 0xff8c00,\n\t darkorchid: 0x9932cc,\n\t darkred: 0x8b0000,\n\t darksalmon: 0xe9967a,\n\t darkseagreen: 0x8fbc8f,\n\t darkslateblue: 0x483d8b,\n\t darkslategray: 0x2f4f4f,\n\t darkslategrey: 0x2f4f4f,\n\t darkturquoise: 0x00ced1,\n\t darkviolet: 0x9400d3,\n\t deeppink: 0xff1493,\n\t deepskyblue: 0x00bfff,\n\t dimgray: 0x696969,\n\t dimgrey: 0x696969,\n\t dodgerblue: 0x1e90ff,\n\t firebrick: 0xb22222,\n\t floralwhite: 0xfffaf0,\n\t forestgreen: 0x228b22,\n\t fuchsia: 0xff00ff,\n\t gainsboro: 0xdcdcdc,\n\t ghostwhite: 0xf8f8ff,\n\t gold: 0xffd700,\n\t goldenrod: 0xdaa520,\n\t gray: 0x808080,\n\t green: 0x008000,\n\t greenyellow: 0xadff2f,\n\t grey: 0x808080,\n\t honeydew: 0xf0fff0,\n\t hotpink: 0xff69b4,\n\t indianred: 0xcd5c5c,\n\t indigo: 0x4b0082,\n\t ivory: 0xfffff0,\n\t khaki: 0xf0e68c,\n\t lavender: 0xe6e6fa,\n\t lavenderblush: 0xfff0f5,\n\t lawngreen: 0x7cfc00,\n\t lemonchiffon: 0xfffacd,\n\t lightblue: 0xadd8e6,\n\t lightcoral: 0xf08080,\n\t lightcyan: 0xe0ffff,\n\t lightgoldenrodyellow: 0xfafad2,\n\t lightgray: 0xd3d3d3,\n\t lightgreen: 0x90ee90,\n\t lightgrey: 0xd3d3d3,\n\t lightpink: 0xffb6c1,\n\t lightsalmon: 0xffa07a,\n\t lightseagreen: 0x20b2aa,\n\t lightskyblue: 0x87cefa,\n\t lightslategray: 0x778899,\n\t lightslategrey: 0x778899,\n\t lightsteelblue: 0xb0c4de,\n\t lightyellow: 0xffffe0,\n\t lime: 0x00ff00,\n\t limegreen: 0x32cd32,\n\t linen: 0xfaf0e6,\n\t magenta: 0xff00ff,\n\t maroon: 0x800000,\n\t mediumaquamarine: 0x66cdaa,\n\t mediumblue: 0x0000cd,\n\t mediumorchid: 0xba55d3,\n\t mediumpurple: 0x9370db,\n\t mediumseagreen: 0x3cb371,\n\t mediumslateblue: 0x7b68ee,\n\t mediumspringgreen: 0x00fa9a,\n\t mediumturquoise: 0x48d1cc,\n\t mediumvioletred: 0xc71585,\n\t midnightblue: 0x191970,\n\t mintcream: 0xf5fffa,\n\t mistyrose: 0xffe4e1,\n\t moccasin: 0xffe4b5,\n\t navajowhite: 0xffdead,\n\t navy: 0x000080,\n\t oldlace: 0xfdf5e6,\n\t olive: 0x808000,\n\t olivedrab: 0x6b8e23,\n\t orange: 0xffa500,\n\t orangered: 0xff4500,\n\t orchid: 0xda70d6,\n\t palegoldenrod: 0xeee8aa,\n\t palegreen: 0x98fb98,\n\t paleturquoise: 0xafeeee,\n\t palevioletred: 0xdb7093,\n\t papayawhip: 0xffefd5,\n\t peachpuff: 0xffdab9,\n\t peru: 0xcd853f,\n\t pink: 0xffc0cb,\n\t plum: 0xdda0dd,\n\t powderblue: 0xb0e0e6,\n\t purple: 0x800080,\n\t rebeccapurple: 0x663399,\n\t red: 0xff0000,\n\t rosybrown: 0xbc8f8f,\n\t royalblue: 0x4169e1,\n\t saddlebrown: 0x8b4513,\n\t salmon: 0xfa8072,\n\t sandybrown: 0xf4a460,\n\t seagreen: 0x2e8b57,\n\t seashell: 0xfff5ee,\n\t sienna: 0xa0522d,\n\t silver: 0xc0c0c0,\n\t skyblue: 0x87ceeb,\n\t slateblue: 0x6a5acd,\n\t slategray: 0x708090,\n\t slategrey: 0x708090,\n\t snow: 0xfffafa,\n\t springgreen: 0x00ff7f,\n\t steelblue: 0x4682b4,\n\t tan: 0xd2b48c,\n\t teal: 0x008080,\n\t thistle: 0xd8bfd8,\n\t tomato: 0xff6347,\n\t turquoise: 0x40e0d0,\n\t violet: 0xee82ee,\n\t wheat: 0xf5deb3,\n\t white: 0xffffff,\n\t whitesmoke: 0xf5f5f5,\n\t yellow: 0xffff00,\n\t yellowgreen: 0x9acd32\n\t};\n\t\n\tdefine(Color, color, {\n\t displayable: function() {\n\t return this.rgb().displayable();\n\t },\n\t toString: function() {\n\t return this.rgb() + \"\";\n\t }\n\t});\n\t\n\tfunction color(format) {\n\t var m;\n\t format = (format + \"\").trim().toLowerCase();\n\t return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n\t : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n\t : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n\t : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n\t : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n\t : (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\t : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n\t : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n\t : named.hasOwnProperty(format) ? rgbn(named[format])\n\t : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n\t : null;\n\t}\n\t\n\tfunction rgbn(n) {\n\t return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n\t}\n\t\n\tfunction rgba(r, g, b, a) {\n\t if (a <= 0) r = g = b = NaN;\n\t return new Rgb(r, g, b, a);\n\t}\n\t\n\tfunction rgbConvert(o) {\n\t if (!(o instanceof Color)) o = color(o);\n\t if (!o) return new Rgb;\n\t o = o.rgb();\n\t return new Rgb(o.r, o.g, o.b, o.opacity);\n\t}\n\t\n\tfunction rgb(r, g, b, opacity) {\n\t return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n\t}\n\t\n\tfunction Rgb(r, g, b, opacity) {\n\t this.r = +r;\n\t this.g = +g;\n\t this.b = +b;\n\t this.opacity = +opacity;\n\t}\n\t\n\tdefine(Rgb, rgb, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n\t },\n\t rgb: function() {\n\t return this;\n\t },\n\t displayable: function() {\n\t return (0 <= this.r && this.r <= 255)\n\t && (0 <= this.g && this.g <= 255)\n\t && (0 <= this.b && this.b <= 255)\n\t && (0 <= this.opacity && this.opacity <= 1);\n\t },\n\t toString: function() {\n\t var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n\t return (a === 1 ? \"rgb(\" : \"rgba(\")\n\t + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n\t + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n\t + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n\t + (a === 1 ? \")\" : \", \" + a + \")\");\n\t }\n\t}));\n\t\n\tfunction hsla(h, s, l, a) {\n\t if (a <= 0) h = s = l = NaN;\n\t else if (l <= 0 || l >= 1) h = s = NaN;\n\t else if (s <= 0) h = NaN;\n\t return new Hsl(h, s, l, a);\n\t}\n\t\n\tfunction hslConvert(o) {\n\t if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n\t if (!(o instanceof Color)) o = color(o);\n\t if (!o) return new Hsl;\n\t if (o instanceof Hsl) return o;\n\t o = o.rgb();\n\t var r = o.r / 255,\n\t g = o.g / 255,\n\t b = o.b / 255,\n\t min = Math.min(r, g, b),\n\t max = Math.max(r, g, b),\n\t h = NaN,\n\t s = max - min,\n\t l = (max + min) / 2;\n\t if (s) {\n\t if (r === max) h = (g - b) / s + (g < b) * 6;\n\t else if (g === max) h = (b - r) / s + 2;\n\t else h = (r - g) / s + 4;\n\t s /= l < 0.5 ? max + min : 2 - max - min;\n\t h *= 60;\n\t } else {\n\t s = l > 0 && l < 1 ? 0 : h;\n\t }\n\t return new Hsl(h, s, l, o.opacity);\n\t}\n\t\n\tfunction hsl(h, s, l, opacity) {\n\t return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n\t}\n\t\n\tfunction Hsl(h, s, l, opacity) {\n\t this.h = +h;\n\t this.s = +s;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t}\n\t\n\tdefine(Hsl, hsl, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Hsl(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Hsl(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t rgb: function() {\n\t var h = this.h % 360 + (this.h < 0) * 360,\n\t s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n\t l = this.l,\n\t m2 = l + (l < 0.5 ? l : 1 - l) * s,\n\t m1 = 2 * l - m2;\n\t return new Rgb(\n\t hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n\t hsl2rgb(h, m1, m2),\n\t hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n\t this.opacity\n\t );\n\t },\n\t displayable: function() {\n\t return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n\t && (0 <= this.l && this.l <= 1)\n\t && (0 <= this.opacity && this.opacity <= 1);\n\t }\n\t}));\n\t\n\t/* From FvD 13.37, CSS Color Module Level 3 */\n\tfunction hsl2rgb(h, m1, m2) {\n\t return (h < 60 ? m1 + (m2 - m1) * h / 60\n\t : h < 180 ? m2\n\t : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n\t : m1) * 255;\n\t}\n\t\n\tvar deg2rad = Math.PI / 180;\n\tvar rad2deg = 180 / Math.PI;\n\t\n\tvar Kn = 18;\n\tvar Xn = 0.950470;\n\tvar Yn = 1;\n\tvar Zn = 1.088830;\n\tvar t0 = 4 / 29;\n\tvar t1 = 6 / 29;\n\tvar t2 = 3 * t1 * t1;\n\tvar t3 = t1 * t1 * t1;\n\t\n\tfunction labConvert(o) {\n\t if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n\t if (o instanceof Hcl) {\n\t var h = o.h * deg2rad;\n\t return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n\t }\n\t if (!(o instanceof Rgb)) o = rgbConvert(o);\n\t var b = rgb2xyz(o.r),\n\t a = rgb2xyz(o.g),\n\t l = rgb2xyz(o.b),\n\t x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n\t y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n\t z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n\t return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n\t}\n\t\n\tfunction lab(l, a, b, opacity) {\n\t return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n\t}\n\t\n\tfunction Lab(l, a, b, opacity) {\n\t this.l = +l;\n\t this.a = +a;\n\t this.b = +b;\n\t this.opacity = +opacity;\n\t}\n\t\n\tdefine(Lab, lab, extend(Color, {\n\t brighter: function(k) {\n\t return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n\t },\n\t darker: function(k) {\n\t return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n\t },\n\t rgb: function() {\n\t var y = (this.l + 16) / 116,\n\t x = isNaN(this.a) ? y : y + this.a / 500,\n\t z = isNaN(this.b) ? y : y - this.b / 200;\n\t y = Yn * lab2xyz(y);\n\t x = Xn * lab2xyz(x);\n\t z = Zn * lab2xyz(z);\n\t return new Rgb(\n\t xyz2rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n\t xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n\t xyz2rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z),\n\t this.opacity\n\t );\n\t }\n\t}));\n\t\n\tfunction xyz2lab(t) {\n\t return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n\t}\n\t\n\tfunction lab2xyz(t) {\n\t return t > t1 ? t * t * t : t2 * (t - t0);\n\t}\n\t\n\tfunction xyz2rgb(x) {\n\t return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n\t}\n\t\n\tfunction rgb2xyz(x) {\n\t return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n\t}\n\t\n\tfunction hclConvert(o) {\n\t if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n\t if (!(o instanceof Lab)) o = labConvert(o);\n\t var h = Math.atan2(o.b, o.a) * rad2deg;\n\t return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n\t}\n\t\n\tfunction hcl(h, c, l, opacity) {\n\t return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n\t}\n\t\n\tfunction Hcl(h, c, l, opacity) {\n\t this.h = +h;\n\t this.c = +c;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t}\n\t\n\tdefine(Hcl, hcl, extend(Color, {\n\t brighter: function(k) {\n\t return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);\n\t },\n\t darker: function(k) {\n\t return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);\n\t },\n\t rgb: function() {\n\t return labConvert(this).rgb();\n\t }\n\t}));\n\t\n\tvar A = -0.14861;\n\tvar B = +1.78277;\n\tvar C = -0.29227;\n\tvar D = -0.90649;\n\tvar E = +1.97294;\n\tvar ED = E * D;\n\tvar EB = E * B;\n\tvar BC_DA = B * C - D * A;\n\t\n\tfunction cubehelixConvert(o) {\n\t if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n\t if (!(o instanceof Rgb)) o = rgbConvert(o);\n\t var r = o.r / 255,\n\t g = o.g / 255,\n\t b = o.b / 255,\n\t l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n\t bl = b - l,\n\t k = (E * (g - l) - C * bl) / D,\n\t s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n\t h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n\t return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n\t}\n\t\n\tfunction cubehelix(h, s, l, opacity) {\n\t return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n\t}\n\t\n\tfunction Cubehelix(h, s, l, opacity) {\n\t this.h = +h;\n\t this.s = +s;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t}\n\t\n\tdefine(Cubehelix, cubehelix, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t rgb: function() {\n\t var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n\t l = +this.l,\n\t a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n\t cosh = Math.cos(h),\n\t sinh = Math.sin(h);\n\t return new Rgb(\n\t 255 * (l + a * (A * cosh + B * sinh)),\n\t 255 * (l + a * (C * cosh + D * sinh)),\n\t 255 * (l + a * (E * cosh)),\n\t this.opacity\n\t );\n\t }\n\t}));\n\t\n\texports.color = color;\n\texports.rgb = rgb;\n\texports.hsl = hsl;\n\texports.lab = lab;\n\texports.hcl = hcl;\n\texports.cubehelix = cubehelix;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-dispatch/ Version 1.0.3. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar noop = {value: function() {}};\n\t\n\tfunction dispatch() {\n\t for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n\t if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n\t _[t] = [];\n\t }\n\t return new Dispatch(_);\n\t}\n\t\n\tfunction Dispatch(_) {\n\t this._ = _;\n\t}\n\t\n\tfunction parseTypenames(typenames, types) {\n\t return typenames.trim().split(/^|\\s+/).map(function(t) {\n\t var name = \"\", i = t.indexOf(\".\");\n\t if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n\t if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n\t return {type: t, name: name};\n\t });\n\t}\n\t\n\tDispatch.prototype = dispatch.prototype = {\n\t constructor: Dispatch,\n\t on: function(typename, callback) {\n\t var _ = this._,\n\t T = parseTypenames(typename + \"\", _),\n\t t,\n\t i = -1,\n\t n = T.length;\n\t\n\t // If no callback was specified, return the callback of the given type and name.\n\t if (arguments.length < 2) {\n\t while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n\t return;\n\t }\n\t\n\t // If a type was specified, set the callback for the given type and name.\n\t // Otherwise, if a null callback was specified, remove callbacks of the given name.\n\t if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n\t while (++i < n) {\n\t if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n\t else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n\t }\n\t\n\t return this;\n\t },\n\t copy: function() {\n\t var copy = {}, _ = this._;\n\t for (var t in _) copy[t] = _[t].slice();\n\t return new Dispatch(copy);\n\t },\n\t call: function(type, that) {\n\t 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\t if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\t for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n\t },\n\t apply: function(type, that, args) {\n\t if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\t for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n\t }\n\t};\n\t\n\tfunction get(type, name) {\n\t for (var i = 0, n = type.length, c; i < n; ++i) {\n\t if ((c = type[i]).name === name) {\n\t return c.value;\n\t }\n\t }\n\t}\n\t\n\tfunction set(type, name, callback) {\n\t for (var i = 0, n = type.length; i < n; ++i) {\n\t if (type[i].name === name) {\n\t type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n\t break;\n\t }\n\t }\n\t if (callback != null) type.push({name: name, value: callback});\n\t return type;\n\t}\n\t\n\texports.dispatch = dispatch;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-format/ Version 1.2.0. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\t// Computes the decimal coefficient and exponent of the specified number x with\n\t// significant digits p, where x is positive and p is in [1, 21] or undefined.\n\t// For example, formatDecimal(1.23) returns [\"123\", 0].\n\tvar formatDecimal = function(x, p) {\n\t if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n\t var i, coefficient = x.slice(0, i);\n\t\n\t // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n\t // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n\t return [\n\t coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n\t +x.slice(i + 1)\n\t ];\n\t};\n\t\n\tvar exponent = function(x) {\n\t return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n\t};\n\t\n\tvar formatGroup = function(grouping, thousands) {\n\t return function(value, width) {\n\t var i = value.length,\n\t t = [],\n\t j = 0,\n\t g = grouping[0],\n\t length = 0;\n\t\n\t while (i > 0 && g > 0) {\n\t if (length + g + 1 > width) g = Math.max(1, width - length);\n\t t.push(value.substring(i -= g, i + g));\n\t if ((length += g + 1) > width) break;\n\t g = grouping[j = (j + 1) % grouping.length];\n\t }\n\t\n\t return t.reverse().join(thousands);\n\t };\n\t};\n\t\n\tvar formatNumerals = function(numerals) {\n\t return function(value) {\n\t return value.replace(/[0-9]/g, function(i) {\n\t return numerals[+i];\n\t });\n\t };\n\t};\n\t\n\tvar formatDefault = function(x, p) {\n\t x = x.toPrecision(p);\n\t\n\t out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n\t switch (x[i]) {\n\t case \".\": i0 = i1 = i; break;\n\t case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n\t case \"e\": break out;\n\t default: if (i0 > 0) i0 = 0; break;\n\t }\n\t }\n\t\n\t return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n\t};\n\t\n\tvar prefixExponent;\n\t\n\tvar formatPrefixAuto = function(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1],\n\t i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n\t n = coefficient.length;\n\t return i === n ? coefficient\n\t : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n\t : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n\t : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n\t};\n\t\n\tvar formatRounded = function(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1];\n\t return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n\t : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n\t : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n\t};\n\t\n\tvar formatTypes = {\n\t \"\": formatDefault,\n\t \"%\": function(x, p) { return (x * 100).toFixed(p); },\n\t \"b\": function(x) { return Math.round(x).toString(2); },\n\t \"c\": function(x) { return x + \"\"; },\n\t \"d\": function(x) { return Math.round(x).toString(10); },\n\t \"e\": function(x, p) { return x.toExponential(p); },\n\t \"f\": function(x, p) { return x.toFixed(p); },\n\t \"g\": function(x, p) { return x.toPrecision(p); },\n\t \"o\": function(x) { return Math.round(x).toString(8); },\n\t \"p\": function(x, p) { return formatRounded(x * 100, p); },\n\t \"r\": formatRounded,\n\t \"s\": formatPrefixAuto,\n\t \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n\t \"x\": function(x) { return Math.round(x).toString(16); }\n\t};\n\t\n\t// [[fill]align][sign][symbol][0][width][,][.precision][type]\n\tvar re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\t\n\tfunction formatSpecifier(specifier) {\n\t return new FormatSpecifier(specifier);\n\t}\n\t\n\tformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\t\n\tfunction FormatSpecifier(specifier) {\n\t if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\t\n\t var match,\n\t fill = match[1] || \" \",\n\t align = match[2] || \">\",\n\t sign = match[3] || \"-\",\n\t symbol = match[4] || \"\",\n\t zero = !!match[5],\n\t width = match[6] && +match[6],\n\t comma = !!match[7],\n\t precision = match[8] && +match[8].slice(1),\n\t type = match[9] || \"\";\n\t\n\t // The \"n\" type is an alias for \",g\".\n\t if (type === \"n\") comma = true, type = \"g\";\n\t\n\t // Map invalid types to the default format.\n\t else if (!formatTypes[type]) type = \"\";\n\t\n\t // If zero fill is specified, padding goes after sign and before digits.\n\t if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\t\n\t this.fill = fill;\n\t this.align = align;\n\t this.sign = sign;\n\t this.symbol = symbol;\n\t this.zero = zero;\n\t this.width = width;\n\t this.comma = comma;\n\t this.precision = precision;\n\t this.type = type;\n\t}\n\t\n\tFormatSpecifier.prototype.toString = function() {\n\t return this.fill\n\t + this.align\n\t + this.sign\n\t + this.symbol\n\t + (this.zero ? \"0\" : \"\")\n\t + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n\t + (this.comma ? \",\" : \"\")\n\t + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n\t + this.type;\n\t};\n\t\n\tvar identity = function(x) {\n\t return x;\n\t};\n\t\n\tvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\t\n\tvar formatLocale = function(locale) {\n\t var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n\t currency = locale.currency,\n\t decimal = locale.decimal,\n\t numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n\t percent = locale.percent || \"%\";\n\t\n\t function newFormat(specifier) {\n\t specifier = formatSpecifier(specifier);\n\t\n\t var fill = specifier.fill,\n\t align = specifier.align,\n\t sign = specifier.sign,\n\t symbol = specifier.symbol,\n\t zero = specifier.zero,\n\t width = specifier.width,\n\t comma = specifier.comma,\n\t precision = specifier.precision,\n\t type = specifier.type;\n\t\n\t // Compute the prefix and suffix.\n\t // For SI-prefix, the suffix is lazily computed.\n\t var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n\t suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\t\n\t // What format function should we use?\n\t // Is this an integer type?\n\t // Can this type generate exponential notation?\n\t var formatType = formatTypes[type],\n\t maybeSuffix = !type || /[defgprs%]/.test(type);\n\t\n\t // Set the default precision if not specified,\n\t // or clamp the specified precision to the supported range.\n\t // For significant precision, it must be in [1, 21].\n\t // For fixed precision, it must be in [0, 20].\n\t precision = precision == null ? (type ? 6 : 12)\n\t : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n\t : Math.max(0, Math.min(20, precision));\n\t\n\t function format(value) {\n\t var valuePrefix = prefix,\n\t valueSuffix = suffix,\n\t i, n, c;\n\t\n\t if (type === \"c\") {\n\t valueSuffix = formatType(value) + valueSuffix;\n\t value = \"\";\n\t } else {\n\t value = +value;\n\t\n\t // Perform the initial formatting.\n\t var valueNegative = value < 0;\n\t value = formatType(Math.abs(value), precision);\n\t\n\t // If a negative value rounds to zero during formatting, treat as positive.\n\t if (valueNegative && +value === 0) valueNegative = false;\n\t\n\t // Compute the prefix and suffix.\n\t valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\t valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\t\n\t // Break the formatted value into the integer “value” part that can be\n\t // grouped, and fractional or exponential “suffix” part that is not.\n\t if (maybeSuffix) {\n\t i = -1, n = value.length;\n\t while (++i < n) {\n\t if (c = value.charCodeAt(i), 48 > c || c > 57) {\n\t valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n\t value = value.slice(0, i);\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t\n\t // If the fill character is not \"0\", grouping is applied before padding.\n\t if (comma && !zero) value = group(value, Infinity);\n\t\n\t // Compute the padding.\n\t var length = valuePrefix.length + value.length + valueSuffix.length,\n\t padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\t\n\t // If the fill character is \"0\", grouping is applied after padding.\n\t if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\t\n\t // Reconstruct the final output based on the desired alignment.\n\t switch (align) {\n\t case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n\t case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n\t case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n\t default: value = padding + valuePrefix + value + valueSuffix; break;\n\t }\n\t\n\t return numerals(value);\n\t }\n\t\n\t format.toString = function() {\n\t return specifier + \"\";\n\t };\n\t\n\t return format;\n\t }\n\t\n\t function formatPrefix(specifier, value) {\n\t var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n\t e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n\t k = Math.pow(10, -e),\n\t prefix = prefixes[8 + e / 3];\n\t return function(value) {\n\t return f(k * value) + prefix;\n\t };\n\t }\n\t\n\t return {\n\t format: newFormat,\n\t formatPrefix: formatPrefix\n\t };\n\t};\n\t\n\tvar locale;\n\t\n\t\n\t\n\tdefaultLocale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"$\", \"\"]\n\t});\n\t\n\tfunction defaultLocale(definition) {\n\t locale = formatLocale(definition);\n\t exports.format = locale.format;\n\t exports.formatPrefix = locale.formatPrefix;\n\t return locale;\n\t}\n\t\n\tvar precisionFixed = function(step) {\n\t return Math.max(0, -exponent(Math.abs(step)));\n\t};\n\t\n\tvar precisionPrefix = function(step, value) {\n\t return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n\t};\n\t\n\tvar precisionRound = function(step, max) {\n\t step = Math.abs(step), max = Math.abs(max) - step;\n\t return Math.max(0, exponent(max) - exponent(step)) + 1;\n\t};\n\t\n\texports.formatDefaultLocale = defaultLocale;\n\texports.formatLocale = formatLocale;\n\texports.formatSpecifier = formatSpecifier;\n\texports.precisionFixed = precisionFixed;\n\texports.precisionPrefix = precisionPrefix;\n\texports.precisionRound = precisionRound;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 7 */,\n/* 8 */,\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-interpolate/ Version 1.1.5. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports, __webpack_require__(4)) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) :\n\t\t(factory((global.d3 = global.d3 || {}),global.d3));\n\t}(this, (function (exports,d3Color) { 'use strict';\n\t\n\tfunction basis(t1, v0, v1, v2, v3) {\n\t var t2 = t1 * t1, t3 = t2 * t1;\n\t return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n\t + (4 - 6 * t2 + 3 * t3) * v1\n\t + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n\t + t3 * v3) / 6;\n\t}\n\t\n\tvar basis$1 = function(values) {\n\t var n = values.length - 1;\n\t return function(t) {\n\t var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n\t v1 = values[i],\n\t v2 = values[i + 1],\n\t v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n\t v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n\t return basis((t - i / n) * n, v0, v1, v2, v3);\n\t };\n\t};\n\t\n\tvar basisClosed = function(values) {\n\t var n = values.length;\n\t return function(t) {\n\t var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n\t v0 = values[(i + n - 1) % n],\n\t v1 = values[i % n],\n\t v2 = values[(i + 1) % n],\n\t v3 = values[(i + 2) % n];\n\t return basis((t - i / n) * n, v0, v1, v2, v3);\n\t };\n\t};\n\t\n\tvar constant = function(x) {\n\t return function() {\n\t return x;\n\t };\n\t};\n\t\n\tfunction linear(a, d) {\n\t return function(t) {\n\t return a + t * d;\n\t };\n\t}\n\t\n\tfunction exponential(a, b, y) {\n\t return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n\t return Math.pow(a + t * b, y);\n\t };\n\t}\n\t\n\tfunction hue(a, b) {\n\t var d = b - a;\n\t return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n\t}\n\t\n\tfunction gamma(y) {\n\t return (y = +y) === 1 ? nogamma : function(a, b) {\n\t return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n\t };\n\t}\n\t\n\tfunction nogamma(a, b) {\n\t var d = b - a;\n\t return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n\t}\n\t\n\tvar rgb$1 = ((function rgbGamma(y) {\n\t var color$$1 = gamma(y);\n\t\n\t function rgb$$1(start, end) {\n\t var r = color$$1((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r),\n\t g = color$$1(start.g, end.g),\n\t b = color$$1(start.b, end.b),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.r = r(t);\n\t start.g = g(t);\n\t start.b = b(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t\n\t rgb$$1.gamma = rgbGamma;\n\t\n\t return rgb$$1;\n\t}))(1);\n\t\n\tfunction rgbSpline(spline) {\n\t return function(colors) {\n\t var n = colors.length,\n\t r = new Array(n),\n\t g = new Array(n),\n\t b = new Array(n),\n\t i, color$$1;\n\t for (i = 0; i < n; ++i) {\n\t color$$1 = d3Color.rgb(colors[i]);\n\t r[i] = color$$1.r || 0;\n\t g[i] = color$$1.g || 0;\n\t b[i] = color$$1.b || 0;\n\t }\n\t r = spline(r);\n\t g = spline(g);\n\t b = spline(b);\n\t color$$1.opacity = 1;\n\t return function(t) {\n\t color$$1.r = r(t);\n\t color$$1.g = g(t);\n\t color$$1.b = b(t);\n\t return color$$1 + \"\";\n\t };\n\t };\n\t}\n\t\n\tvar rgbBasis = rgbSpline(basis$1);\n\tvar rgbBasisClosed = rgbSpline(basisClosed);\n\t\n\tvar array = function(a, b) {\n\t var nb = b ? b.length : 0,\n\t na = a ? Math.min(nb, a.length) : 0,\n\t x = new Array(nb),\n\t c = new Array(nb),\n\t i;\n\t\n\t for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n\t for (; i < nb; ++i) c[i] = b[i];\n\t\n\t return function(t) {\n\t for (i = 0; i < na; ++i) c[i] = x[i](t);\n\t return c;\n\t };\n\t};\n\t\n\tvar date = function(a, b) {\n\t var d = new Date;\n\t return a = +a, b -= a, function(t) {\n\t return d.setTime(a + b * t), d;\n\t };\n\t};\n\t\n\tvar number = function(a, b) {\n\t return a = +a, b -= a, function(t) {\n\t return a + b * t;\n\t };\n\t};\n\t\n\tvar object = function(a, b) {\n\t var i = {},\n\t c = {},\n\t k;\n\t\n\t if (a === null || typeof a !== \"object\") a = {};\n\t if (b === null || typeof b !== \"object\") b = {};\n\t\n\t for (k in b) {\n\t if (k in a) {\n\t i[k] = value(a[k], b[k]);\n\t } else {\n\t c[k] = b[k];\n\t }\n\t }\n\t\n\t return function(t) {\n\t for (k in i) c[k] = i[k](t);\n\t return c;\n\t };\n\t};\n\t\n\tvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g;\n\tvar reB = new RegExp(reA.source, \"g\");\n\t\n\tfunction zero(b) {\n\t return function() {\n\t return b;\n\t };\n\t}\n\t\n\tfunction one(b) {\n\t return function(t) {\n\t return b(t) + \"\";\n\t };\n\t}\n\t\n\tvar string = function(a, b) {\n\t var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n\t am, // current match in a\n\t bm, // current match in b\n\t bs, // string preceding current number in b, if any\n\t i = -1, // index in s\n\t s = [], // string constants and placeholders\n\t q = []; // number interpolators\n\t\n\t // Coerce inputs to strings.\n\t a = a + \"\", b = b + \"\";\n\t\n\t // Interpolate pairs of numbers in a & b.\n\t while ((am = reA.exec(a))\n\t && (bm = reB.exec(b))) {\n\t if ((bs = bm.index) > bi) { // a string precedes the next number in b\n\t bs = b.slice(bi, bs);\n\t if (s[i]) s[i] += bs; // coalesce with previous string\n\t else s[++i] = bs;\n\t }\n\t if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n\t if (s[i]) s[i] += bm; // coalesce with previous string\n\t else s[++i] = bm;\n\t } else { // interpolate non-matching numbers\n\t s[++i] = null;\n\t q.push({i: i, x: number(am, bm)});\n\t }\n\t bi = reB.lastIndex;\n\t }\n\t\n\t // Add remains of b.\n\t if (bi < b.length) {\n\t bs = b.slice(bi);\n\t if (s[i]) s[i] += bs; // coalesce with previous string\n\t else s[++i] = bs;\n\t }\n\t\n\t // Special optimization for only a single match.\n\t // Otherwise, interpolate each of the numbers and rejoin the string.\n\t return s.length < 2 ? (q[0]\n\t ? one(q[0].x)\n\t : zero(b))\n\t : (b = q.length, function(t) {\n\t for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t });\n\t};\n\t\n\tvar value = function(a, b) {\n\t var t = typeof b, c;\n\t return b == null || t === \"boolean\" ? constant(b)\n\t : (t === \"number\" ? number\n\t : t === \"string\" ? ((c = d3Color.color(b)) ? (b = c, rgb$1) : string)\n\t : b instanceof d3Color.color ? rgb$1\n\t : b instanceof Date ? date\n\t : Array.isArray(b) ? array\n\t : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n\t : number)(a, b);\n\t};\n\t\n\tvar round = function(a, b) {\n\t return a = +a, b -= a, function(t) {\n\t return Math.round(a + b * t);\n\t };\n\t};\n\t\n\tvar degrees = 180 / Math.PI;\n\t\n\tvar identity = {\n\t translateX: 0,\n\t translateY: 0,\n\t rotate: 0,\n\t skewX: 0,\n\t scaleX: 1,\n\t scaleY: 1\n\t};\n\t\n\tvar decompose = function(a, b, c, d, e, f) {\n\t var scaleX, scaleY, skewX;\n\t if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n\t if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n\t if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n\t if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n\t return {\n\t translateX: e,\n\t translateY: f,\n\t rotate: Math.atan2(b, a) * degrees,\n\t skewX: Math.atan(skewX) * degrees,\n\t scaleX: scaleX,\n\t scaleY: scaleY\n\t };\n\t};\n\t\n\tvar cssNode;\n\tvar cssRoot;\n\tvar cssView;\n\tvar svgNode;\n\t\n\tfunction parseCss(value) {\n\t if (value === \"none\") return identity;\n\t if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n\t cssNode.style.transform = value;\n\t value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n\t cssRoot.removeChild(cssNode);\n\t value = value.slice(7, -1).split(\",\");\n\t return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n\t}\n\t\n\tfunction parseSvg(value) {\n\t if (value == null) return identity;\n\t if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n\t svgNode.setAttribute(\"transform\", value);\n\t if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n\t value = value.matrix;\n\t return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n\t}\n\t\n\tfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\t\n\t function pop(s) {\n\t return s.length ? s.pop() + \" \" : \"\";\n\t }\n\t\n\t function translate(xa, ya, xb, yb, s, q) {\n\t if (xa !== xb || ya !== yb) {\n\t var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n\t q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n\t } else if (xb || yb) {\n\t s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n\t }\n\t }\n\t\n\t function rotate(a, b, s, q) {\n\t if (a !== b) {\n\t if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n\t q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n\t } else if (b) {\n\t s.push(pop(s) + \"rotate(\" + b + degParen);\n\t }\n\t }\n\t\n\t function skewX(a, b, s, q) {\n\t if (a !== b) {\n\t q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n\t } else if (b) {\n\t s.push(pop(s) + \"skewX(\" + b + degParen);\n\t }\n\t }\n\t\n\t function scale(xa, ya, xb, yb, s, q) {\n\t if (xa !== xb || ya !== yb) {\n\t var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n\t q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n\t } else if (xb !== 1 || yb !== 1) {\n\t s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n\t }\n\t }\n\t\n\t return function(a, b) {\n\t var s = [], // string constants and placeholders\n\t q = []; // number interpolators\n\t a = parse(a), b = parse(b);\n\t translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n\t rotate(a.rotate, b.rotate, s, q);\n\t skewX(a.skewX, b.skewX, s, q);\n\t scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n\t a = b = null; // gc\n\t return function(t) {\n\t var i = -1, n = q.length, o;\n\t while (++i < n) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t };\n\t };\n\t}\n\t\n\tvar interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\n\tvar interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n\t\n\tvar rho = Math.SQRT2;\n\tvar rho2 = 2;\n\tvar rho4 = 4;\n\tvar epsilon2 = 1e-12;\n\t\n\tfunction cosh(x) {\n\t return ((x = Math.exp(x)) + 1 / x) / 2;\n\t}\n\t\n\tfunction sinh(x) {\n\t return ((x = Math.exp(x)) - 1 / x) / 2;\n\t}\n\t\n\tfunction tanh(x) {\n\t return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n\t}\n\t\n\t// p0 = [ux0, uy0, w0]\n\t// p1 = [ux1, uy1, w1]\n\tvar zoom = function(p0, p1) {\n\t var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n\t ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n\t dx = ux1 - ux0,\n\t dy = uy1 - uy0,\n\t d2 = dx * dx + dy * dy,\n\t i,\n\t S;\n\t\n\t // Special case for u0 ≅ u1.\n\t if (d2 < epsilon2) {\n\t S = Math.log(w1 / w0) / rho;\n\t i = function(t) {\n\t return [\n\t ux0 + t * dx,\n\t uy0 + t * dy,\n\t w0 * Math.exp(rho * t * S)\n\t ];\n\t };\n\t }\n\t\n\t // General case.\n\t else {\n\t var d1 = Math.sqrt(d2),\n\t b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n\t b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n\t r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n\t r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n\t S = (r1 - r0) / rho;\n\t i = function(t) {\n\t var s = t * S,\n\t coshr0 = cosh(r0),\n\t u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n\t return [\n\t ux0 + u * dx,\n\t uy0 + u * dy,\n\t w0 * coshr0 / cosh(rho * s + r0)\n\t ];\n\t };\n\t }\n\t\n\t i.duration = S * 1000;\n\t\n\t return i;\n\t};\n\t\n\tfunction hsl$1(hue$$1) {\n\t return function(start, end) {\n\t var h = hue$$1((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h),\n\t s = nogamma(start.s, end.s),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.s = s(t);\n\t start.l = l(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t}\n\t\n\tvar hsl$2 = hsl$1(hue);\n\tvar hslLong = hsl$1(nogamma);\n\t\n\tfunction lab$1(start, end) {\n\t var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l),\n\t a = nogamma(start.a, end.a),\n\t b = nogamma(start.b, end.b),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.l = l(t);\n\t start.a = a(t);\n\t start.b = b(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t}\n\t\n\tfunction hcl$1(hue$$1) {\n\t return function(start, end) {\n\t var h = hue$$1((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h),\n\t c = nogamma(start.c, end.c),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.c = c(t);\n\t start.l = l(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t}\n\t\n\tvar hcl$2 = hcl$1(hue);\n\tvar hclLong = hcl$1(nogamma);\n\t\n\tfunction cubehelix$1(hue$$1) {\n\t return (function cubehelixGamma(y) {\n\t y = +y;\n\t\n\t function cubehelix$$1(start, end) {\n\t var h = hue$$1((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h),\n\t s = nogamma(start.s, end.s),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.s = s(t);\n\t start.l = l(Math.pow(t, y));\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t\n\t cubehelix$$1.gamma = cubehelixGamma;\n\t\n\t return cubehelix$$1;\n\t })(1);\n\t}\n\t\n\tvar cubehelix$2 = cubehelix$1(hue);\n\tvar cubehelixLong = cubehelix$1(nogamma);\n\t\n\tvar quantize = function(interpolator, n) {\n\t var samples = new Array(n);\n\t for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n\t return samples;\n\t};\n\t\n\texports.interpolate = value;\n\texports.interpolateArray = array;\n\texports.interpolateBasis = basis$1;\n\texports.interpolateBasisClosed = basisClosed;\n\texports.interpolateDate = date;\n\texports.interpolateNumber = number;\n\texports.interpolateObject = object;\n\texports.interpolateRound = round;\n\texports.interpolateString = string;\n\texports.interpolateTransformCss = interpolateTransformCss;\n\texports.interpolateTransformSvg = interpolateTransformSvg;\n\texports.interpolateZoom = zoom;\n\texports.interpolateRgb = rgb$1;\n\texports.interpolateRgbBasis = rgbBasis;\n\texports.interpolateRgbBasisClosed = rgbBasisClosed;\n\texports.interpolateHsl = hsl$2;\n\texports.interpolateHslLong = hslLong;\n\texports.interpolateLab = lab$1;\n\texports.interpolateHcl = hcl$2;\n\texports.interpolateHclLong = hclLong;\n\texports.interpolateCubehelix = cubehelix$2;\n\texports.interpolateCubehelixLong = cubehelixLong;\n\texports.quantize = quantize;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-time/ Version 1.0.7. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar t0 = new Date;\n\tvar t1 = new Date;\n\t\n\tfunction newInterval(floori, offseti, count, field) {\n\t\n\t function interval(date) {\n\t return floori(date = new Date(+date)), date;\n\t }\n\t\n\t interval.floor = interval;\n\t\n\t interval.ceil = function(date) {\n\t return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n\t };\n\t\n\t interval.round = function(date) {\n\t var d0 = interval(date),\n\t d1 = interval.ceil(date);\n\t return date - d0 < d1 - date ? d0 : d1;\n\t };\n\t\n\t interval.offset = function(date, step) {\n\t return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n\t };\n\t\n\t interval.range = function(start, stop, step) {\n\t var range = [];\n\t start = interval.ceil(start);\n\t step = step == null ? 1 : Math.floor(step);\n\t if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n\t do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n\t return range;\n\t };\n\t\n\t interval.filter = function(test) {\n\t return newInterval(function(date) {\n\t if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n\t }, function(date, step) {\n\t if (date >= date) {\n\t if (step < 0) while (++step <= 0) {\n\t while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n\t } else while (--step >= 0) {\n\t while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n\t }\n\t }\n\t });\n\t };\n\t\n\t if (count) {\n\t interval.count = function(start, end) {\n\t t0.setTime(+start), t1.setTime(+end);\n\t floori(t0), floori(t1);\n\t return Math.floor(count(t0, t1));\n\t };\n\t\n\t interval.every = function(step) {\n\t step = Math.floor(step);\n\t return !isFinite(step) || !(step > 0) ? null\n\t : !(step > 1) ? interval\n\t : interval.filter(field\n\t ? function(d) { return field(d) % step === 0; }\n\t : function(d) { return interval.count(0, d) % step === 0; });\n\t };\n\t }\n\t\n\t return interval;\n\t}\n\t\n\tvar millisecond = newInterval(function() {\n\t // noop\n\t}, function(date, step) {\n\t date.setTime(+date + step);\n\t}, function(start, end) {\n\t return end - start;\n\t});\n\t\n\t// An optimized implementation for this simple case.\n\tmillisecond.every = function(k) {\n\t k = Math.floor(k);\n\t if (!isFinite(k) || !(k > 0)) return null;\n\t if (!(k > 1)) return millisecond;\n\t return newInterval(function(date) {\n\t date.setTime(Math.floor(date / k) * k);\n\t }, function(date, step) {\n\t date.setTime(+date + step * k);\n\t }, function(start, end) {\n\t return (end - start) / k;\n\t });\n\t};\n\t\n\tvar milliseconds = millisecond.range;\n\t\n\tvar durationSecond = 1e3;\n\tvar durationMinute = 6e4;\n\tvar durationHour = 36e5;\n\tvar durationDay = 864e5;\n\tvar durationWeek = 6048e5;\n\t\n\tvar second = newInterval(function(date) {\n\t date.setTime(Math.floor(date / durationSecond) * durationSecond);\n\t}, function(date, step) {\n\t date.setTime(+date + step * durationSecond);\n\t}, function(start, end) {\n\t return (end - start) / durationSecond;\n\t}, function(date) {\n\t return date.getUTCSeconds();\n\t});\n\t\n\tvar seconds = second.range;\n\t\n\tvar minute = newInterval(function(date) {\n\t date.setTime(Math.floor(date / durationMinute) * durationMinute);\n\t}, function(date, step) {\n\t date.setTime(+date + step * durationMinute);\n\t}, function(start, end) {\n\t return (end - start) / durationMinute;\n\t}, function(date) {\n\t return date.getMinutes();\n\t});\n\t\n\tvar minutes = minute.range;\n\t\n\tvar hour = newInterval(function(date) {\n\t var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n\t if (offset < 0) offset += durationHour;\n\t date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n\t}, function(date, step) {\n\t date.setTime(+date + step * durationHour);\n\t}, function(start, end) {\n\t return (end - start) / durationHour;\n\t}, function(date) {\n\t return date.getHours();\n\t});\n\t\n\tvar hours = hour.range;\n\t\n\tvar day = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setDate(date.getDate() + step);\n\t}, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n\t}, function(date) {\n\t return date.getDate() - 1;\n\t});\n\t\n\tvar days = day.range;\n\t\n\tfunction weekday(i) {\n\t return newInterval(function(date) {\n\t date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n\t });\n\t}\n\t\n\tvar sunday = weekday(0);\n\tvar monday = weekday(1);\n\tvar tuesday = weekday(2);\n\tvar wednesday = weekday(3);\n\tvar thursday = weekday(4);\n\tvar friday = weekday(5);\n\tvar saturday = weekday(6);\n\t\n\tvar sundays = sunday.range;\n\tvar mondays = monday.range;\n\tvar tuesdays = tuesday.range;\n\tvar wednesdays = wednesday.range;\n\tvar thursdays = thursday.range;\n\tvar fridays = friday.range;\n\tvar saturdays = saturday.range;\n\t\n\tvar month = newInterval(function(date) {\n\t date.setDate(1);\n\t date.setHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setMonth(date.getMonth() + step);\n\t}, function(start, end) {\n\t return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n\t}, function(date) {\n\t return date.getMonth();\n\t});\n\t\n\tvar months = month.range;\n\t\n\tvar year = newInterval(function(date) {\n\t date.setMonth(0, 1);\n\t date.setHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step);\n\t}, function(start, end) {\n\t return end.getFullYear() - start.getFullYear();\n\t}, function(date) {\n\t return date.getFullYear();\n\t});\n\t\n\t// An optimized implementation for this simple case.\n\tyear.every = function(k) {\n\t return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n\t date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n\t date.setMonth(0, 1);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step * k);\n\t });\n\t};\n\t\n\tvar years = year.range;\n\t\n\tvar utcMinute = newInterval(function(date) {\n\t date.setUTCSeconds(0, 0);\n\t}, function(date, step) {\n\t date.setTime(+date + step * durationMinute);\n\t}, function(start, end) {\n\t return (end - start) / durationMinute;\n\t}, function(date) {\n\t return date.getUTCMinutes();\n\t});\n\t\n\tvar utcMinutes = utcMinute.range;\n\t\n\tvar utcHour = newInterval(function(date) {\n\t date.setUTCMinutes(0, 0, 0);\n\t}, function(date, step) {\n\t date.setTime(+date + step * durationHour);\n\t}, function(start, end) {\n\t return (end - start) / durationHour;\n\t}, function(date) {\n\t return date.getUTCHours();\n\t});\n\t\n\tvar utcHours = utcHour.range;\n\t\n\tvar utcDay = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step);\n\t}, function(start, end) {\n\t return (end - start) / durationDay;\n\t}, function(date) {\n\t return date.getUTCDate() - 1;\n\t});\n\t\n\tvar utcDays = utcDay.range;\n\t\n\tfunction utcWeekday(i) {\n\t return newInterval(function(date) {\n\t date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start) / durationWeek;\n\t });\n\t}\n\t\n\tvar utcSunday = utcWeekday(0);\n\tvar utcMonday = utcWeekday(1);\n\tvar utcTuesday = utcWeekday(2);\n\tvar utcWednesday = utcWeekday(3);\n\tvar utcThursday = utcWeekday(4);\n\tvar utcFriday = utcWeekday(5);\n\tvar utcSaturday = utcWeekday(6);\n\t\n\tvar utcSundays = utcSunday.range;\n\tvar utcMondays = utcMonday.range;\n\tvar utcTuesdays = utcTuesday.range;\n\tvar utcWednesdays = utcWednesday.range;\n\tvar utcThursdays = utcThursday.range;\n\tvar utcFridays = utcFriday.range;\n\tvar utcSaturdays = utcSaturday.range;\n\t\n\tvar utcMonth = newInterval(function(date) {\n\t date.setUTCDate(1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setUTCMonth(date.getUTCMonth() + step);\n\t}, function(start, end) {\n\t return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n\t}, function(date) {\n\t return date.getUTCMonth();\n\t});\n\t\n\tvar utcMonths = utcMonth.range;\n\t\n\tvar utcYear = newInterval(function(date) {\n\t date.setUTCMonth(0, 1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step);\n\t}, function(start, end) {\n\t return end.getUTCFullYear() - start.getUTCFullYear();\n\t}, function(date) {\n\t return date.getUTCFullYear();\n\t});\n\t\n\t// An optimized implementation for this simple case.\n\tutcYear.every = function(k) {\n\t return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n\t date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n\t date.setUTCMonth(0, 1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step * k);\n\t });\n\t};\n\t\n\tvar utcYears = utcYear.range;\n\t\n\texports.timeInterval = newInterval;\n\texports.timeMillisecond = millisecond;\n\texports.timeMilliseconds = milliseconds;\n\texports.utcMillisecond = millisecond;\n\texports.utcMilliseconds = milliseconds;\n\texports.timeSecond = second;\n\texports.timeSeconds = seconds;\n\texports.utcSecond = second;\n\texports.utcSeconds = seconds;\n\texports.timeMinute = minute;\n\texports.timeMinutes = minutes;\n\texports.timeHour = hour;\n\texports.timeHours = hours;\n\texports.timeDay = day;\n\texports.timeDays = days;\n\texports.timeWeek = sunday;\n\texports.timeWeeks = sundays;\n\texports.timeSunday = sunday;\n\texports.timeSundays = sundays;\n\texports.timeMonday = monday;\n\texports.timeMondays = mondays;\n\texports.timeTuesday = tuesday;\n\texports.timeTuesdays = tuesdays;\n\texports.timeWednesday = wednesday;\n\texports.timeWednesdays = wednesdays;\n\texports.timeThursday = thursday;\n\texports.timeThursdays = thursdays;\n\texports.timeFriday = friday;\n\texports.timeFridays = fridays;\n\texports.timeSaturday = saturday;\n\texports.timeSaturdays = saturdays;\n\texports.timeMonth = month;\n\texports.timeMonths = months;\n\texports.timeYear = year;\n\texports.timeYears = years;\n\texports.utcMinute = utcMinute;\n\texports.utcMinutes = utcMinutes;\n\texports.utcHour = utcHour;\n\texports.utcHours = utcHours;\n\texports.utcDay = utcDay;\n\texports.utcDays = utcDays;\n\texports.utcWeek = utcSunday;\n\texports.utcWeeks = utcSundays;\n\texports.utcSunday = utcSunday;\n\texports.utcSundays = utcSundays;\n\texports.utcMonday = utcMonday;\n\texports.utcMondays = utcMondays;\n\texports.utcTuesday = utcTuesday;\n\texports.utcTuesdays = utcTuesdays;\n\texports.utcWednesday = utcWednesday;\n\texports.utcWednesdays = utcWednesdays;\n\texports.utcThursday = utcThursday;\n\texports.utcThursdays = utcThursdays;\n\texports.utcFriday = utcFriday;\n\texports.utcFridays = utcFridays;\n\texports.utcSaturday = utcSaturday;\n\texports.utcSaturdays = utcSaturdays;\n\texports.utcMonth = utcMonth;\n\texports.utcMonths = utcMonths;\n\texports.utcYear = utcYear;\n\texports.utcYears = utcYears;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-time-format/ Version 2.0.5. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports, __webpack_require__(10)) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) :\n\t\t(factory((global.d3 = global.d3 || {}),global.d3));\n\t}(this, (function (exports,d3Time) { 'use strict';\n\t\n\tfunction localDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n\t date.setFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n\t}\n\t\n\tfunction utcDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n\t date.setUTCFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n\t}\n\t\n\tfunction newYear(y) {\n\t return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n\t}\n\t\n\tfunction formatLocale(locale) {\n\t var locale_dateTime = locale.dateTime,\n\t locale_date = locale.date,\n\t locale_time = locale.time,\n\t locale_periods = locale.periods,\n\t locale_weekdays = locale.days,\n\t locale_shortWeekdays = locale.shortDays,\n\t locale_months = locale.months,\n\t locale_shortMonths = locale.shortMonths;\n\t\n\t var periodRe = formatRe(locale_periods),\n\t periodLookup = formatLookup(locale_periods),\n\t weekdayRe = formatRe(locale_weekdays),\n\t weekdayLookup = formatLookup(locale_weekdays),\n\t shortWeekdayRe = formatRe(locale_shortWeekdays),\n\t shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n\t monthRe = formatRe(locale_months),\n\t monthLookup = formatLookup(locale_months),\n\t shortMonthRe = formatRe(locale_shortMonths),\n\t shortMonthLookup = formatLookup(locale_shortMonths);\n\t\n\t var formats = {\n\t \"a\": formatShortWeekday,\n\t \"A\": formatWeekday,\n\t \"b\": formatShortMonth,\n\t \"B\": formatMonth,\n\t \"c\": null,\n\t \"d\": formatDayOfMonth,\n\t \"e\": formatDayOfMonth,\n\t \"H\": formatHour24,\n\t \"I\": formatHour12,\n\t \"j\": formatDayOfYear,\n\t \"L\": formatMilliseconds,\n\t \"m\": formatMonthNumber,\n\t \"M\": formatMinutes,\n\t \"p\": formatPeriod,\n\t \"S\": formatSeconds,\n\t \"U\": formatWeekNumberSunday,\n\t \"w\": formatWeekdayNumber,\n\t \"W\": formatWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatYear,\n\t \"Y\": formatFullYear,\n\t \"Z\": formatZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var utcFormats = {\n\t \"a\": formatUTCShortWeekday,\n\t \"A\": formatUTCWeekday,\n\t \"b\": formatUTCShortMonth,\n\t \"B\": formatUTCMonth,\n\t \"c\": null,\n\t \"d\": formatUTCDayOfMonth,\n\t \"e\": formatUTCDayOfMonth,\n\t \"H\": formatUTCHour24,\n\t \"I\": formatUTCHour12,\n\t \"j\": formatUTCDayOfYear,\n\t \"L\": formatUTCMilliseconds,\n\t \"m\": formatUTCMonthNumber,\n\t \"M\": formatUTCMinutes,\n\t \"p\": formatUTCPeriod,\n\t \"S\": formatUTCSeconds,\n\t \"U\": formatUTCWeekNumberSunday,\n\t \"w\": formatUTCWeekdayNumber,\n\t \"W\": formatUTCWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatUTCYear,\n\t \"Y\": formatUTCFullYear,\n\t \"Z\": formatUTCZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var parses = {\n\t \"a\": parseShortWeekday,\n\t \"A\": parseWeekday,\n\t \"b\": parseShortMonth,\n\t \"B\": parseMonth,\n\t \"c\": parseLocaleDateTime,\n\t \"d\": parseDayOfMonth,\n\t \"e\": parseDayOfMonth,\n\t \"H\": parseHour24,\n\t \"I\": parseHour24,\n\t \"j\": parseDayOfYear,\n\t \"L\": parseMilliseconds,\n\t \"m\": parseMonthNumber,\n\t \"M\": parseMinutes,\n\t \"p\": parsePeriod,\n\t \"S\": parseSeconds,\n\t \"U\": parseWeekNumberSunday,\n\t \"w\": parseWeekdayNumber,\n\t \"W\": parseWeekNumberMonday,\n\t \"x\": parseLocaleDate,\n\t \"X\": parseLocaleTime,\n\t \"y\": parseYear,\n\t \"Y\": parseFullYear,\n\t \"Z\": parseZone,\n\t \"%\": parseLiteralPercent\n\t };\n\t\n\t // These recursive directive definitions must be deferred.\n\t formats.x = newFormat(locale_date, formats);\n\t formats.X = newFormat(locale_time, formats);\n\t formats.c = newFormat(locale_dateTime, formats);\n\t utcFormats.x = newFormat(locale_date, utcFormats);\n\t utcFormats.X = newFormat(locale_time, utcFormats);\n\t utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\t\n\t function newFormat(specifier, formats) {\n\t return function(date) {\n\t var string = [],\n\t i = -1,\n\t j = 0,\n\t n = specifier.length,\n\t c,\n\t pad,\n\t format;\n\t\n\t if (!(date instanceof Date)) date = new Date(+date);\n\t\n\t while (++i < n) {\n\t if (specifier.charCodeAt(i) === 37) {\n\t string.push(specifier.slice(j, i));\n\t if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n\t else pad = c === \"e\" ? \" \" : \"0\";\n\t if (format = formats[c]) c = format(date, pad);\n\t string.push(c);\n\t j = i + 1;\n\t }\n\t }\n\t\n\t string.push(specifier.slice(j, i));\n\t return string.join(\"\");\n\t };\n\t }\n\t\n\t function newParse(specifier, newDate) {\n\t return function(string) {\n\t var d = newYear(1900),\n\t i = parseSpecifier(d, specifier, string += \"\", 0);\n\t if (i != string.length) return null;\n\t\n\t // The am-pm flag is 0 for AM, and 1 for PM.\n\t if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\t\n\t // Convert day-of-week and week-of-year to day-of-year.\n\t if (\"W\" in d || \"U\" in d) {\n\t if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n\t var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n\t d.m = 0;\n\t d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n\t }\n\t\n\t // If a time zone is specified, all fields are interpreted as UTC and then\n\t // offset according to the specified time zone.\n\t if (\"Z\" in d) {\n\t d.H += d.Z / 100 | 0;\n\t d.M += d.Z % 100;\n\t return utcDate(d);\n\t }\n\t\n\t // Otherwise, all fields are in local time.\n\t return newDate(d);\n\t };\n\t }\n\t\n\t function parseSpecifier(d, specifier, string, j) {\n\t var i = 0,\n\t n = specifier.length,\n\t m = string.length,\n\t c,\n\t parse;\n\t\n\t while (i < n) {\n\t if (j >= m) return -1;\n\t c = specifier.charCodeAt(i++);\n\t if (c === 37) {\n\t c = specifier.charAt(i++);\n\t parse = parses[c in pads ? specifier.charAt(i++) : c];\n\t if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n\t } else if (c != string.charCodeAt(j++)) {\n\t return -1;\n\t }\n\t }\n\t\n\t return j;\n\t }\n\t\n\t function parsePeriod(d, string, i) {\n\t var n = periodRe.exec(string.slice(i));\n\t return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortWeekday(d, string, i) {\n\t var n = shortWeekdayRe.exec(string.slice(i));\n\t return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekday(d, string, i) {\n\t var n = weekdayRe.exec(string.slice(i));\n\t return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortMonth(d, string, i) {\n\t var n = shortMonthRe.exec(string.slice(i));\n\t return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMonth(d, string, i) {\n\t var n = monthRe.exec(string.slice(i));\n\t return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseLocaleDateTime(d, string, i) {\n\t return parseSpecifier(d, locale_dateTime, string, i);\n\t }\n\t\n\t function parseLocaleDate(d, string, i) {\n\t return parseSpecifier(d, locale_date, string, i);\n\t }\n\t\n\t function parseLocaleTime(d, string, i) {\n\t return parseSpecifier(d, locale_time, string, i);\n\t }\n\t\n\t function formatShortWeekday(d) {\n\t return locale_shortWeekdays[d.getDay()];\n\t }\n\t\n\t function formatWeekday(d) {\n\t return locale_weekdays[d.getDay()];\n\t }\n\t\n\t function formatShortMonth(d) {\n\t return locale_shortMonths[d.getMonth()];\n\t }\n\t\n\t function formatMonth(d) {\n\t return locale_months[d.getMonth()];\n\t }\n\t\n\t function formatPeriod(d) {\n\t return locale_periods[+(d.getHours() >= 12)];\n\t }\n\t\n\t function formatUTCShortWeekday(d) {\n\t return locale_shortWeekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCWeekday(d) {\n\t return locale_weekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCShortMonth(d) {\n\t return locale_shortMonths[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCMonth(d) {\n\t return locale_months[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCPeriod(d) {\n\t return locale_periods[+(d.getUTCHours() >= 12)];\n\t }\n\t\n\t return {\n\t format: function(specifier) {\n\t var f = newFormat(specifier += \"\", formats);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t },\n\t parse: function(specifier) {\n\t var p = newParse(specifier += \"\", localDate);\n\t p.toString = function() { return specifier; };\n\t return p;\n\t },\n\t utcFormat: function(specifier) {\n\t var f = newFormat(specifier += \"\", utcFormats);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t },\n\t utcParse: function(specifier) {\n\t var p = newParse(specifier, utcDate);\n\t p.toString = function() { return specifier; };\n\t return p;\n\t }\n\t };\n\t}\n\t\n\tvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"};\n\tvar numberRe = /^\\s*\\d+/;\n\tvar percentRe = /^%/;\n\tvar requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\t\n\tfunction pad(value, fill, width) {\n\t var sign = value < 0 ? \"-\" : \"\",\n\t string = (sign ? -value : value) + \"\",\n\t length = string.length;\n\t return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n\t}\n\t\n\tfunction requote(s) {\n\t return s.replace(requoteRe, \"\\\\$&\");\n\t}\n\t\n\tfunction formatRe(names) {\n\t return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n\t}\n\t\n\tfunction formatLookup(names) {\n\t var map = {}, i = -1, n = names.length;\n\t while (++i < n) map[names[i].toLowerCase()] = i;\n\t return map;\n\t}\n\t\n\tfunction parseWeekdayNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 1));\n\t return n ? (d.w = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseWeekNumberSunday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.U = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseWeekNumberMonday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.W = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseFullYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 4));\n\t return n ? (d.y = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseZone(d, string, i) {\n\t var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n\t return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseMonthNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseDayOfMonth(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.d = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseDayOfYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseHour24(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.H = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseMinutes(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.M = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseSeconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.S = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseMilliseconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.L = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseLiteralPercent(d, string, i) {\n\t var n = percentRe.exec(string.slice(i, i + 1));\n\t return n ? i + n[0].length : -1;\n\t}\n\t\n\tfunction formatDayOfMonth(d, p) {\n\t return pad(d.getDate(), p, 2);\n\t}\n\t\n\tfunction formatHour24(d, p) {\n\t return pad(d.getHours(), p, 2);\n\t}\n\t\n\tfunction formatHour12(d, p) {\n\t return pad(d.getHours() % 12 || 12, p, 2);\n\t}\n\t\n\tfunction formatDayOfYear(d, p) {\n\t return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);\n\t}\n\t\n\tfunction formatMilliseconds(d, p) {\n\t return pad(d.getMilliseconds(), p, 3);\n\t}\n\t\n\tfunction formatMonthNumber(d, p) {\n\t return pad(d.getMonth() + 1, p, 2);\n\t}\n\t\n\tfunction formatMinutes(d, p) {\n\t return pad(d.getMinutes(), p, 2);\n\t}\n\t\n\tfunction formatSeconds(d, p) {\n\t return pad(d.getSeconds(), p, 2);\n\t}\n\t\n\tfunction formatWeekNumberSunday(d, p) {\n\t return pad(d3Time.timeSunday.count(d3Time.timeYear(d), d), p, 2);\n\t}\n\t\n\tfunction formatWeekdayNumber(d) {\n\t return d.getDay();\n\t}\n\t\n\tfunction formatWeekNumberMonday(d, p) {\n\t return pad(d3Time.timeMonday.count(d3Time.timeYear(d), d), p, 2);\n\t}\n\t\n\tfunction formatYear(d, p) {\n\t return pad(d.getFullYear() % 100, p, 2);\n\t}\n\t\n\tfunction formatFullYear(d, p) {\n\t return pad(d.getFullYear() % 10000, p, 4);\n\t}\n\t\n\tfunction formatZone(d) {\n\t var z = d.getTimezoneOffset();\n\t return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n\t + pad(z / 60 | 0, \"0\", 2)\n\t + pad(z % 60, \"0\", 2);\n\t}\n\t\n\tfunction formatUTCDayOfMonth(d, p) {\n\t return pad(d.getUTCDate(), p, 2);\n\t}\n\t\n\tfunction formatUTCHour24(d, p) {\n\t return pad(d.getUTCHours(), p, 2);\n\t}\n\t\n\tfunction formatUTCHour12(d, p) {\n\t return pad(d.getUTCHours() % 12 || 12, p, 2);\n\t}\n\t\n\tfunction formatUTCDayOfYear(d, p) {\n\t return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n\t}\n\t\n\tfunction formatUTCMilliseconds(d, p) {\n\t return pad(d.getUTCMilliseconds(), p, 3);\n\t}\n\t\n\tfunction formatUTCMonthNumber(d, p) {\n\t return pad(d.getUTCMonth() + 1, p, 2);\n\t}\n\t\n\tfunction formatUTCMinutes(d, p) {\n\t return pad(d.getUTCMinutes(), p, 2);\n\t}\n\t\n\tfunction formatUTCSeconds(d, p) {\n\t return pad(d.getUTCSeconds(), p, 2);\n\t}\n\t\n\tfunction formatUTCWeekNumberSunday(d, p) {\n\t return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);\n\t}\n\t\n\tfunction formatUTCWeekdayNumber(d) {\n\t return d.getUTCDay();\n\t}\n\t\n\tfunction formatUTCWeekNumberMonday(d, p) {\n\t return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);\n\t}\n\t\n\tfunction formatUTCYear(d, p) {\n\t return pad(d.getUTCFullYear() % 100, p, 2);\n\t}\n\t\n\tfunction formatUTCFullYear(d, p) {\n\t return pad(d.getUTCFullYear() % 10000, p, 4);\n\t}\n\t\n\tfunction formatUTCZone() {\n\t return \"+0000\";\n\t}\n\t\n\tfunction formatLiteralPercent() {\n\t return \"%\";\n\t}\n\t\n\tvar locale$1;\n\t\n\t\n\t\n\t\n\t\n\tdefaultLocale({\n\t dateTime: \"%x, %X\",\n\t date: \"%-m/%-d/%Y\",\n\t time: \"%-I:%M:%S %p\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t});\n\t\n\tfunction defaultLocale(definition) {\n\t locale$1 = formatLocale(definition);\n\t exports.timeFormat = locale$1.format;\n\t exports.timeParse = locale$1.parse;\n\t exports.utcFormat = locale$1.utcFormat;\n\t exports.utcParse = locale$1.utcParse;\n\t return locale$1;\n\t}\n\t\n\tvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\t\n\tfunction formatIsoNative(date) {\n\t return date.toISOString();\n\t}\n\t\n\tvar formatIso = Date.prototype.toISOString\n\t ? formatIsoNative\n\t : exports.utcFormat(isoSpecifier);\n\t\n\tfunction parseIsoNative(string) {\n\t var date = new Date(string);\n\t return isNaN(date) ? null : date;\n\t}\n\t\n\tvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n\t ? parseIsoNative\n\t : exports.utcParse(isoSpecifier);\n\t\n\texports.timeFormatDefaultLocale = defaultLocale;\n\texports.timeFormatLocale = formatLocale;\n\texports.isoFormat = formatIso;\n\texports.isoParse = parseIso;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-selection/ Version 1.1.0. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar xhtml = \"http://www.w3.org/1999/xhtml\";\n\t\n\tvar namespaces = {\n\t svg: \"http://www.w3.org/2000/svg\",\n\t xhtml: xhtml,\n\t xlink: \"http://www.w3.org/1999/xlink\",\n\t xml: \"http://www.w3.org/XML/1998/namespace\",\n\t xmlns: \"http://www.w3.org/2000/xmlns/\"\n\t};\n\t\n\tvar namespace = function(name) {\n\t var prefix = name += \"\", i = prefix.indexOf(\":\");\n\t if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n\t return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n\t};\n\t\n\tfunction creatorInherit(name) {\n\t return function() {\n\t var document = this.ownerDocument,\n\t uri = this.namespaceURI;\n\t return uri === xhtml && document.documentElement.namespaceURI === xhtml\n\t ? document.createElement(name)\n\t : document.createElementNS(uri, name);\n\t };\n\t}\n\t\n\tfunction creatorFixed(fullname) {\n\t return function() {\n\t return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n\t };\n\t}\n\t\n\tvar creator = function(name) {\n\t var fullname = namespace(name);\n\t return (fullname.local\n\t ? creatorFixed\n\t : creatorInherit)(fullname);\n\t};\n\t\n\tvar nextId = 0;\n\t\n\tfunction local() {\n\t return new Local;\n\t}\n\t\n\tfunction Local() {\n\t this._ = \"@\" + (++nextId).toString(36);\n\t}\n\t\n\tLocal.prototype = local.prototype = {\n\t constructor: Local,\n\t get: function(node) {\n\t var id = this._;\n\t while (!(id in node)) if (!(node = node.parentNode)) return;\n\t return node[id];\n\t },\n\t set: function(node, value) {\n\t return node[this._] = value;\n\t },\n\t remove: function(node) {\n\t return this._ in node && delete node[this._];\n\t },\n\t toString: function() {\n\t return this._;\n\t }\n\t};\n\t\n\tvar matcher = function(selector) {\n\t return function() {\n\t return this.matches(selector);\n\t };\n\t};\n\t\n\tif (typeof document !== \"undefined\") {\n\t var element = document.documentElement;\n\t if (!element.matches) {\n\t var vendorMatches = element.webkitMatchesSelector\n\t || element.msMatchesSelector\n\t || element.mozMatchesSelector\n\t || element.oMatchesSelector;\n\t matcher = function(selector) {\n\t return function() {\n\t return vendorMatches.call(this, selector);\n\t };\n\t };\n\t }\n\t}\n\t\n\tvar matcher$1 = matcher;\n\t\n\tvar filterEvents = {};\n\t\n\texports.event = null;\n\t\n\tif (typeof document !== \"undefined\") {\n\t var element$1 = document.documentElement;\n\t if (!(\"onmouseenter\" in element$1)) {\n\t filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n\t }\n\t}\n\t\n\tfunction filterContextListener(listener, index, group) {\n\t listener = contextListener(listener, index, group);\n\t return function(event) {\n\t var related = event.relatedTarget;\n\t if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n\t listener.call(this, event);\n\t }\n\t };\n\t}\n\t\n\tfunction contextListener(listener, index, group) {\n\t return function(event1) {\n\t var event0 = exports.event; // Events can be reentrant (e.g., focus).\n\t exports.event = event1;\n\t try {\n\t listener.call(this, this.__data__, index, group);\n\t } finally {\n\t exports.event = event0;\n\t }\n\t };\n\t}\n\t\n\tfunction parseTypenames(typenames) {\n\t return typenames.trim().split(/^|\\s+/).map(function(t) {\n\t var name = \"\", i = t.indexOf(\".\");\n\t if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n\t return {type: t, name: name};\n\t });\n\t}\n\t\n\tfunction onRemove(typename) {\n\t return function() {\n\t var on = this.__on;\n\t if (!on) return;\n\t for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n\t if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n\t this.removeEventListener(o.type, o.listener, o.capture);\n\t } else {\n\t on[++i] = o;\n\t }\n\t }\n\t if (++i) on.length = i;\n\t else delete this.__on;\n\t };\n\t}\n\t\n\tfunction onAdd(typename, value, capture) {\n\t var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n\t return function(d, i, group) {\n\t var on = this.__on, o, listener = wrap(value, i, group);\n\t if (on) for (var j = 0, m = on.length; j < m; ++j) {\n\t if ((o = on[j]).type === typename.type && o.name === typename.name) {\n\t this.removeEventListener(o.type, o.listener, o.capture);\n\t this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n\t o.value = value;\n\t return;\n\t }\n\t }\n\t this.addEventListener(typename.type, listener, capture);\n\t o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n\t if (!on) this.__on = [o];\n\t else on.push(o);\n\t };\n\t}\n\t\n\tvar selection_on = function(typename, value, capture) {\n\t var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\t\n\t if (arguments.length < 2) {\n\t var on = this.node().__on;\n\t if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n\t for (i = 0, o = on[j]; i < n; ++i) {\n\t if ((t = typenames[i]).type === o.type && t.name === o.name) {\n\t return o.value;\n\t }\n\t }\n\t }\n\t return;\n\t }\n\t\n\t on = value ? onAdd : onRemove;\n\t if (capture == null) capture = false;\n\t for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n\t return this;\n\t};\n\t\n\tfunction customEvent(event1, listener, that, args) {\n\t var event0 = exports.event;\n\t event1.sourceEvent = exports.event;\n\t exports.event = event1;\n\t try {\n\t return listener.apply(that, args);\n\t } finally {\n\t exports.event = event0;\n\t }\n\t}\n\t\n\tvar sourceEvent = function() {\n\t var current = exports.event, source;\n\t while (source = current.sourceEvent) current = source;\n\t return current;\n\t};\n\t\n\tvar point = function(node, event) {\n\t var svg = node.ownerSVGElement || node;\n\t\n\t if (svg.createSVGPoint) {\n\t var point = svg.createSVGPoint();\n\t point.x = event.clientX, point.y = event.clientY;\n\t point = point.matrixTransform(node.getScreenCTM().inverse());\n\t return [point.x, point.y];\n\t }\n\t\n\t var rect = node.getBoundingClientRect();\n\t return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n\t};\n\t\n\tvar mouse = function(node) {\n\t var event = sourceEvent();\n\t if (event.changedTouches) event = event.changedTouches[0];\n\t return point(node, event);\n\t};\n\t\n\tfunction none() {}\n\t\n\tvar selector = function(selector) {\n\t return selector == null ? none : function() {\n\t return this.querySelector(selector);\n\t };\n\t};\n\t\n\tvar selection_select = function(select) {\n\t if (typeof select !== \"function\") select = selector(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n\t if (\"__data__\" in node) subnode.__data__ = node.__data__;\n\t subgroup[i] = subnode;\n\t }\n\t }\n\t }\n\t\n\t return new Selection(subgroups, this._parents);\n\t};\n\t\n\tfunction empty() {\n\t return [];\n\t}\n\t\n\tvar selectorAll = function(selector) {\n\t return selector == null ? empty : function() {\n\t return this.querySelectorAll(selector);\n\t };\n\t};\n\t\n\tvar selection_selectAll = function(select) {\n\t if (typeof select !== \"function\") select = selectorAll(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t subgroups.push(select.call(node, node.__data__, i, group));\n\t parents.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Selection(subgroups, parents);\n\t};\n\t\n\tvar selection_filter = function(match) {\n\t if (typeof match !== \"function\") match = matcher$1(match);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Selection(subgroups, this._parents);\n\t};\n\t\n\tvar sparse = function(update) {\n\t return new Array(update.length);\n\t};\n\t\n\tvar selection_enter = function() {\n\t return new Selection(this._enter || this._groups.map(sparse), this._parents);\n\t};\n\t\n\tfunction EnterNode(parent, datum) {\n\t this.ownerDocument = parent.ownerDocument;\n\t this.namespaceURI = parent.namespaceURI;\n\t this._next = null;\n\t this._parent = parent;\n\t this.__data__ = datum;\n\t}\n\t\n\tEnterNode.prototype = {\n\t constructor: EnterNode,\n\t appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n\t insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n\t querySelector: function(selector) { return this._parent.querySelector(selector); },\n\t querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n\t};\n\t\n\tvar constant = function(x) {\n\t return function() {\n\t return x;\n\t };\n\t};\n\t\n\tvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\t\n\tfunction bindIndex(parent, group, enter, update, exit, data) {\n\t var i = 0,\n\t node,\n\t groupLength = group.length,\n\t dataLength = data.length;\n\t\n\t // Put any non-null nodes that fit into update.\n\t // Put any null nodes into enter.\n\t // Put any remaining data into enter.\n\t for (; i < dataLength; ++i) {\n\t if (node = group[i]) {\n\t node.__data__ = data[i];\n\t update[i] = node;\n\t } else {\n\t enter[i] = new EnterNode(parent, data[i]);\n\t }\n\t }\n\t\n\t // Put any non-null nodes that don’t fit into exit.\n\t for (; i < groupLength; ++i) {\n\t if (node = group[i]) {\n\t exit[i] = node;\n\t }\n\t }\n\t}\n\t\n\tfunction bindKey(parent, group, enter, update, exit, data, key) {\n\t var i,\n\t node,\n\t nodeByKeyValue = {},\n\t groupLength = group.length,\n\t dataLength = data.length,\n\t keyValues = new Array(groupLength),\n\t keyValue;\n\t\n\t // Compute the key for each node.\n\t // If multiple nodes have the same key, the duplicates are added to exit.\n\t for (i = 0; i < groupLength; ++i) {\n\t if (node = group[i]) {\n\t keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n\t if (keyValue in nodeByKeyValue) {\n\t exit[i] = node;\n\t } else {\n\t nodeByKeyValue[keyValue] = node;\n\t }\n\t }\n\t }\n\t\n\t // Compute the key for each datum.\n\t // If there a node associated with this key, join and add it to update.\n\t // If there is not (or the key is a duplicate), add it to enter.\n\t for (i = 0; i < dataLength; ++i) {\n\t keyValue = keyPrefix + key.call(parent, data[i], i, data);\n\t if (node = nodeByKeyValue[keyValue]) {\n\t update[i] = node;\n\t node.__data__ = data[i];\n\t nodeByKeyValue[keyValue] = null;\n\t } else {\n\t enter[i] = new EnterNode(parent, data[i]);\n\t }\n\t }\n\t\n\t // Add any remaining nodes that were not bound to data to exit.\n\t for (i = 0; i < groupLength; ++i) {\n\t if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n\t exit[i] = node;\n\t }\n\t }\n\t}\n\t\n\tvar selection_data = function(value, key) {\n\t if (!value) {\n\t data = new Array(this.size()), j = -1;\n\t this.each(function(d) { data[++j] = d; });\n\t return data;\n\t }\n\t\n\t var bind = key ? bindKey : bindIndex,\n\t parents = this._parents,\n\t groups = this._groups;\n\t\n\t if (typeof value !== \"function\") value = constant(value);\n\t\n\t for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n\t var parent = parents[j],\n\t group = groups[j],\n\t groupLength = group.length,\n\t data = value.call(parent, parent && parent.__data__, j, parents),\n\t dataLength = data.length,\n\t enterGroup = enter[j] = new Array(dataLength),\n\t updateGroup = update[j] = new Array(dataLength),\n\t exitGroup = exit[j] = new Array(groupLength);\n\t\n\t bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\t\n\t // Now connect the enter nodes to their following update node, such that\n\t // appendChild can insert the materialized enter node before this node,\n\t // rather than at the end of the parent node.\n\t for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n\t if (previous = enterGroup[i0]) {\n\t if (i0 >= i1) i1 = i0 + 1;\n\t while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n\t previous._next = next || null;\n\t }\n\t }\n\t }\n\t\n\t update = new Selection(update, parents);\n\t update._enter = enter;\n\t update._exit = exit;\n\t return update;\n\t};\n\t\n\tvar selection_exit = function() {\n\t return new Selection(this._exit || this._groups.map(sparse), this._parents);\n\t};\n\t\n\tvar selection_merge = function(selection) {\n\t\n\t 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\t for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n\t if (node = group0[i] || group1[i]) {\n\t merge[i] = node;\n\t }\n\t }\n\t }\n\t\n\t for (; j < m0; ++j) {\n\t merges[j] = groups0[j];\n\t }\n\t\n\t return new Selection(merges, this._parents);\n\t};\n\t\n\tvar selection_order = function() {\n\t\n\t for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n\t for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n\t if (node = group[i]) {\n\t if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n\t next = node;\n\t }\n\t }\n\t }\n\t\n\t return this;\n\t};\n\t\n\tvar selection_sort = function(compare) {\n\t if (!compare) compare = ascending;\n\t\n\t function compareNode(a, b) {\n\t return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n\t }\n\t\n\t for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t sortgroup[i] = node;\n\t }\n\t }\n\t sortgroup.sort(compareNode);\n\t }\n\t\n\t return new Selection(sortgroups, this._parents).order();\n\t};\n\t\n\tfunction ascending(a, b) {\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t}\n\t\n\tvar selection_call = function() {\n\t var callback = arguments[0];\n\t arguments[0] = this;\n\t callback.apply(null, arguments);\n\t return this;\n\t};\n\t\n\tvar selection_nodes = function() {\n\t var nodes = new Array(this.size()), i = -1;\n\t this.each(function() { nodes[++i] = this; });\n\t return nodes;\n\t};\n\t\n\tvar selection_node = function() {\n\t\n\t for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n\t for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n\t var node = group[i];\n\t if (node) return node;\n\t }\n\t }\n\t\n\t return null;\n\t};\n\t\n\tvar selection_size = function() {\n\t var size = 0;\n\t this.each(function() { ++size; });\n\t return size;\n\t};\n\t\n\tvar selection_empty = function() {\n\t return !this.node();\n\t};\n\t\n\tvar selection_each = function(callback) {\n\t\n\t for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n\t for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n\t if (node = group[i]) callback.call(node, node.__data__, i, group);\n\t }\n\t }\n\t\n\t return this;\n\t};\n\t\n\tfunction attrRemove(name) {\n\t return function() {\n\t this.removeAttribute(name);\n\t };\n\t}\n\t\n\tfunction attrRemoveNS(fullname) {\n\t return function() {\n\t this.removeAttributeNS(fullname.space, fullname.local);\n\t };\n\t}\n\t\n\tfunction attrConstant(name, value) {\n\t return function() {\n\t this.setAttribute(name, value);\n\t };\n\t}\n\t\n\tfunction attrConstantNS(fullname, value) {\n\t return function() {\n\t this.setAttributeNS(fullname.space, fullname.local, value);\n\t };\n\t}\n\t\n\tfunction attrFunction(name, value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) this.removeAttribute(name);\n\t else this.setAttribute(name, v);\n\t };\n\t}\n\t\n\tfunction attrFunctionNS(fullname, value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n\t else this.setAttributeNS(fullname.space, fullname.local, v);\n\t };\n\t}\n\t\n\tvar selection_attr = function(name, value) {\n\t var fullname = namespace(name);\n\t\n\t if (arguments.length < 2) {\n\t var node = this.node();\n\t return fullname.local\n\t ? node.getAttributeNS(fullname.space, fullname.local)\n\t : node.getAttribute(fullname);\n\t }\n\t\n\t return this.each((value == null\n\t ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n\t ? (fullname.local ? attrFunctionNS : attrFunction)\n\t : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n\t};\n\t\n\tvar defaultView = function(node) {\n\t return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n\t || (node.document && node) // node is a Window\n\t || node.defaultView; // node is a Document\n\t};\n\t\n\tfunction styleRemove(name) {\n\t return function() {\n\t this.style.removeProperty(name);\n\t };\n\t}\n\t\n\tfunction styleConstant(name, value, priority) {\n\t return function() {\n\t this.style.setProperty(name, value, priority);\n\t };\n\t}\n\t\n\tfunction styleFunction(name, value, priority) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) this.style.removeProperty(name);\n\t else this.style.setProperty(name, v, priority);\n\t };\n\t}\n\t\n\tvar selection_style = function(name, value, priority) {\n\t return arguments.length > 1\n\t ? this.each((value == null\n\t ? styleRemove : typeof value === \"function\"\n\t ? styleFunction\n\t : styleConstant)(name, value, priority == null ? \"\" : priority))\n\t : styleValue(this.node(), name);\n\t};\n\t\n\tfunction styleValue(node, name) {\n\t return node.style.getPropertyValue(name)\n\t || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n\t}\n\t\n\tfunction propertyRemove(name) {\n\t return function() {\n\t delete this[name];\n\t };\n\t}\n\t\n\tfunction propertyConstant(name, value) {\n\t return function() {\n\t this[name] = value;\n\t };\n\t}\n\t\n\tfunction propertyFunction(name, value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) delete this[name];\n\t else this[name] = v;\n\t };\n\t}\n\t\n\tvar selection_property = function(name, value) {\n\t return arguments.length > 1\n\t ? this.each((value == null\n\t ? propertyRemove : typeof value === \"function\"\n\t ? propertyFunction\n\t : propertyConstant)(name, value))\n\t : this.node()[name];\n\t};\n\t\n\tfunction classArray(string) {\n\t return string.trim().split(/^|\\s+/);\n\t}\n\t\n\tfunction classList(node) {\n\t return node.classList || new ClassList(node);\n\t}\n\t\n\tfunction ClassList(node) {\n\t this._node = node;\n\t this._names = classArray(node.getAttribute(\"class\") || \"\");\n\t}\n\t\n\tClassList.prototype = {\n\t add: function(name) {\n\t var i = this._names.indexOf(name);\n\t if (i < 0) {\n\t this._names.push(name);\n\t this._node.setAttribute(\"class\", this._names.join(\" \"));\n\t }\n\t },\n\t remove: function(name) {\n\t var i = this._names.indexOf(name);\n\t if (i >= 0) {\n\t this._names.splice(i, 1);\n\t this._node.setAttribute(\"class\", this._names.join(\" \"));\n\t }\n\t },\n\t contains: function(name) {\n\t return this._names.indexOf(name) >= 0;\n\t }\n\t};\n\t\n\tfunction classedAdd(node, names) {\n\t var list = classList(node), i = -1, n = names.length;\n\t while (++i < n) list.add(names[i]);\n\t}\n\t\n\tfunction classedRemove(node, names) {\n\t var list = classList(node), i = -1, n = names.length;\n\t while (++i < n) list.remove(names[i]);\n\t}\n\t\n\tfunction classedTrue(names) {\n\t return function() {\n\t classedAdd(this, names);\n\t };\n\t}\n\t\n\tfunction classedFalse(names) {\n\t return function() {\n\t classedRemove(this, names);\n\t };\n\t}\n\t\n\tfunction classedFunction(names, value) {\n\t return function() {\n\t (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n\t };\n\t}\n\t\n\tvar selection_classed = function(name, value) {\n\t var names = classArray(name + \"\");\n\t\n\t if (arguments.length < 2) {\n\t var list = classList(this.node()), i = -1, n = names.length;\n\t while (++i < n) if (!list.contains(names[i])) return false;\n\t return true;\n\t }\n\t\n\t return this.each((typeof value === \"function\"\n\t ? classedFunction : value\n\t ? classedTrue\n\t : classedFalse)(names, value));\n\t};\n\t\n\tfunction textRemove() {\n\t this.textContent = \"\";\n\t}\n\t\n\tfunction textConstant(value) {\n\t return function() {\n\t this.textContent = value;\n\t };\n\t}\n\t\n\tfunction textFunction(value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t this.textContent = v == null ? \"\" : v;\n\t };\n\t}\n\t\n\tvar selection_text = function(value) {\n\t return arguments.length\n\t ? this.each(value == null\n\t ? textRemove : (typeof value === \"function\"\n\t ? textFunction\n\t : textConstant)(value))\n\t : this.node().textContent;\n\t};\n\t\n\tfunction htmlRemove() {\n\t this.innerHTML = \"\";\n\t}\n\t\n\tfunction htmlConstant(value) {\n\t return function() {\n\t this.innerHTML = value;\n\t };\n\t}\n\t\n\tfunction htmlFunction(value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t this.innerHTML = v == null ? \"\" : v;\n\t };\n\t}\n\t\n\tvar selection_html = function(value) {\n\t return arguments.length\n\t ? this.each(value == null\n\t ? htmlRemove : (typeof value === \"function\"\n\t ? htmlFunction\n\t : htmlConstant)(value))\n\t : this.node().innerHTML;\n\t};\n\t\n\tfunction raise() {\n\t if (this.nextSibling) this.parentNode.appendChild(this);\n\t}\n\t\n\tvar selection_raise = function() {\n\t return this.each(raise);\n\t};\n\t\n\tfunction lower() {\n\t if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n\t}\n\t\n\tvar selection_lower = function() {\n\t return this.each(lower);\n\t};\n\t\n\tvar selection_append = function(name) {\n\t var create = typeof name === \"function\" ? name : creator(name);\n\t return this.select(function() {\n\t return this.appendChild(create.apply(this, arguments));\n\t });\n\t};\n\t\n\tfunction constantNull() {\n\t return null;\n\t}\n\t\n\tvar selection_insert = function(name, before) {\n\t var create = typeof name === \"function\" ? name : creator(name),\n\t select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n\t return this.select(function() {\n\t return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n\t });\n\t};\n\t\n\tfunction remove() {\n\t var parent = this.parentNode;\n\t if (parent) parent.removeChild(this);\n\t}\n\t\n\tvar selection_remove = function() {\n\t return this.each(remove);\n\t};\n\t\n\tvar selection_datum = function(value) {\n\t return arguments.length\n\t ? this.property(\"__data__\", value)\n\t : this.node().__data__;\n\t};\n\t\n\tfunction dispatchEvent(node, type, params) {\n\t var window = defaultView(node),\n\t event = window.CustomEvent;\n\t\n\t if (typeof event === \"function\") {\n\t event = new event(type, params);\n\t } else {\n\t event = window.document.createEvent(\"Event\");\n\t if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n\t else event.initEvent(type, false, false);\n\t }\n\t\n\t node.dispatchEvent(event);\n\t}\n\t\n\tfunction dispatchConstant(type, params) {\n\t return function() {\n\t return dispatchEvent(this, type, params);\n\t };\n\t}\n\t\n\tfunction dispatchFunction(type, params) {\n\t return function() {\n\t return dispatchEvent(this, type, params.apply(this, arguments));\n\t };\n\t}\n\t\n\tvar selection_dispatch = function(type, params) {\n\t return this.each((typeof params === \"function\"\n\t ? dispatchFunction\n\t : dispatchConstant)(type, params));\n\t};\n\t\n\tvar root = [null];\n\t\n\tfunction Selection(groups, parents) {\n\t this._groups = groups;\n\t this._parents = parents;\n\t}\n\t\n\tfunction selection() {\n\t return new Selection([[document.documentElement]], root);\n\t}\n\t\n\tSelection.prototype = selection.prototype = {\n\t constructor: Selection,\n\t select: selection_select,\n\t selectAll: selection_selectAll,\n\t filter: selection_filter,\n\t data: selection_data,\n\t enter: selection_enter,\n\t exit: selection_exit,\n\t merge: selection_merge,\n\t order: selection_order,\n\t sort: selection_sort,\n\t call: selection_call,\n\t nodes: selection_nodes,\n\t node: selection_node,\n\t size: selection_size,\n\t empty: selection_empty,\n\t each: selection_each,\n\t attr: selection_attr,\n\t style: selection_style,\n\t property: selection_property,\n\t classed: selection_classed,\n\t text: selection_text,\n\t html: selection_html,\n\t raise: selection_raise,\n\t lower: selection_lower,\n\t append: selection_append,\n\t insert: selection_insert,\n\t remove: selection_remove,\n\t datum: selection_datum,\n\t on: selection_on,\n\t dispatch: selection_dispatch\n\t};\n\t\n\tvar select = function(selector) {\n\t return typeof selector === \"string\"\n\t ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n\t : new Selection([[selector]], root);\n\t};\n\t\n\tvar selectAll = function(selector) {\n\t return typeof selector === \"string\"\n\t ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n\t : new Selection([selector == null ? [] : selector], root);\n\t};\n\t\n\tvar touch = function(node, touches, identifier) {\n\t if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\t\n\t for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n\t if ((touch = touches[i]).identifier === identifier) {\n\t return point(node, touch);\n\t }\n\t }\n\t\n\t return null;\n\t};\n\t\n\tvar touches = function(node, touches) {\n\t if (touches == null) touches = sourceEvent().touches;\n\t\n\t for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n\t points[i] = point(node, touches[i]);\n\t }\n\t\n\t return points;\n\t};\n\t\n\texports.creator = creator;\n\texports.local = local;\n\texports.matcher = matcher$1;\n\texports.mouse = mouse;\n\texports.namespace = namespace;\n\texports.namespaces = namespaces;\n\texports.select = select;\n\texports.selectAll = selectAll;\n\texports.selection = selection;\n\texports.selector = selector;\n\texports.selectorAll = selectorAll;\n\texports.style = styleValue;\n\texports.touch = touch;\n\texports.touches = touches;\n\texports.window = defaultView;\n\texports.customEvent = customEvent;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-transition/ Version 1.1.0. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports, __webpack_require__(12), __webpack_require__(5), __webpack_require__(14), __webpack_require__(9), __webpack_require__(4), __webpack_require__(2)) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-dispatch', 'd3-timer', 'd3-interpolate', 'd3-color', 'd3-ease'], factory) :\n\t\t(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));\n\t}(this, (function (exports,d3Selection,d3Dispatch,d3Timer,d3Interpolate,d3Color,d3Ease) { 'use strict';\n\t\n\tvar emptyOn = d3Dispatch.dispatch(\"start\", \"end\", \"interrupt\");\n\tvar emptyTween = [];\n\t\n\tvar CREATED = 0;\n\tvar SCHEDULED = 1;\n\tvar STARTING = 2;\n\tvar STARTED = 3;\n\tvar RUNNING = 4;\n\tvar ENDING = 5;\n\tvar ENDED = 6;\n\t\n\tvar schedule = function(node, name, id, index, group, timing) {\n\t var schedules = node.__transition;\n\t if (!schedules) node.__transition = {};\n\t else if (id in schedules) return;\n\t create(node, id, {\n\t name: name,\n\t index: index, // For context during callback.\n\t group: group, // For context during callback.\n\t on: emptyOn,\n\t tween: emptyTween,\n\t time: timing.time,\n\t delay: timing.delay,\n\t duration: timing.duration,\n\t ease: timing.ease,\n\t timer: null,\n\t state: CREATED\n\t });\n\t};\n\t\n\tfunction init(node, id) {\n\t var schedule = node.__transition;\n\t if (!schedule || !(schedule = schedule[id]) || schedule.state > CREATED) throw new Error(\"too late\");\n\t return schedule;\n\t}\n\t\n\tfunction set(node, id) {\n\t var schedule = node.__transition;\n\t if (!schedule || !(schedule = schedule[id]) || schedule.state > STARTING) throw new Error(\"too late\");\n\t return schedule;\n\t}\n\t\n\tfunction get(node, id) {\n\t var schedule = node.__transition;\n\t if (!schedule || !(schedule = schedule[id])) throw new Error(\"too late\");\n\t return schedule;\n\t}\n\t\n\tfunction create(node, id, self) {\n\t var schedules = node.__transition,\n\t tween;\n\t\n\t // Initialize the self timer when the transition is created.\n\t // Note the actual delay is not known until the first callback!\n\t schedules[id] = self;\n\t self.timer = d3Timer.timer(schedule, 0, self.time);\n\t\n\t function schedule(elapsed) {\n\t self.state = SCHEDULED;\n\t self.timer.restart(start, self.delay, self.time);\n\t\n\t // If the elapsed delay is less than our first sleep, start immediately.\n\t if (self.delay <= elapsed) start(elapsed - self.delay);\n\t }\n\t\n\t function start(elapsed) {\n\t var i, j, n, o;\n\t\n\t // If the state is not SCHEDULED, then we previously errored on start.\n\t if (self.state !== SCHEDULED) return stop();\n\t\n\t for (i in schedules) {\n\t o = schedules[i];\n\t if (o.name !== self.name) continue;\n\t\n\t // While this element already has a starting transition during this frame,\n\t // defer starting an interrupting transition until that transition has a\n\t // chance to tick (and possibly end); see d3/d3-transition#54!\n\t if (o.state === STARTED) return d3Timer.timeout(start);\n\t\n\t // Interrupt the active transition, if any.\n\t // Dispatch the interrupt event.\n\t if (o.state === RUNNING) {\n\t o.state = ENDED;\n\t o.timer.stop();\n\t o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n\t delete schedules[i];\n\t }\n\t\n\t // Cancel any pre-empted transitions. No interrupt event is dispatched\n\t // because the cancelled transitions never started. Note that this also\n\t // removes this transition from the pending list!\n\t else if (+i < id) {\n\t o.state = ENDED;\n\t o.timer.stop();\n\t delete schedules[i];\n\t }\n\t }\n\t\n\t // Defer the first tick to end of the current frame; see d3/d3#1576.\n\t // Note the transition may be canceled after start and before the first tick!\n\t // Note this must be scheduled before the start event; see d3/d3-transition#16!\n\t // Assuming this is successful, subsequent callbacks go straight to tick.\n\t d3Timer.timeout(function() {\n\t if (self.state === STARTED) {\n\t self.state = RUNNING;\n\t self.timer.restart(tick, self.delay, self.time);\n\t tick(elapsed);\n\t }\n\t });\n\t\n\t // Dispatch the start event.\n\t // Note this must be done before the tween are initialized.\n\t self.state = STARTING;\n\t self.on.call(\"start\", node, node.__data__, self.index, self.group);\n\t if (self.state !== STARTING) return; // interrupted\n\t self.state = STARTED;\n\t\n\t // Initialize the tween, deleting null tween.\n\t tween = new Array(n = self.tween.length);\n\t for (i = 0, j = -1; i < n; ++i) {\n\t if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n\t tween[++j] = o;\n\t }\n\t }\n\t tween.length = j + 1;\n\t }\n\t\n\t function tick(elapsed) {\n\t var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n\t i = -1,\n\t n = tween.length;\n\t\n\t while (++i < n) {\n\t tween[i].call(null, t);\n\t }\n\t\n\t // Dispatch the end event.\n\t if (self.state === ENDING) {\n\t self.on.call(\"end\", node, node.__data__, self.index, self.group);\n\t stop();\n\t }\n\t }\n\t\n\t function stop() {\n\t self.state = ENDED;\n\t self.timer.stop();\n\t delete schedules[id];\n\t for (var i in schedules) return; // eslint-disable-line no-unused-vars\n\t delete node.__transition;\n\t }\n\t}\n\t\n\tvar interrupt = function(node, name) {\n\t var schedules = node.__transition,\n\t schedule,\n\t active,\n\t empty = true,\n\t i;\n\t\n\t if (!schedules) return;\n\t\n\t name = name == null ? null : name + \"\";\n\t\n\t for (i in schedules) {\n\t if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n\t active = schedule.state > STARTING && schedule.state < ENDING;\n\t schedule.state = ENDED;\n\t schedule.timer.stop();\n\t if (active) schedule.on.call(\"interrupt\", node, node.__data__, schedule.index, schedule.group);\n\t delete schedules[i];\n\t }\n\t\n\t if (empty) delete node.__transition;\n\t};\n\t\n\tvar selection_interrupt = function(name) {\n\t return this.each(function() {\n\t interrupt(this, name);\n\t });\n\t};\n\t\n\tfunction tweenRemove(id, name) {\n\t var tween0, tween1;\n\t return function() {\n\t var schedule = set(this, id),\n\t tween = schedule.tween;\n\t\n\t // If this node shared tween with the previous node,\n\t // just assign the updated shared tween and we’re done!\n\t // Otherwise, copy-on-write.\n\t if (tween !== tween0) {\n\t tween1 = tween0 = tween;\n\t for (var i = 0, n = tween1.length; i < n; ++i) {\n\t if (tween1[i].name === name) {\n\t tween1 = tween1.slice();\n\t tween1.splice(i, 1);\n\t break;\n\t }\n\t }\n\t }\n\t\n\t schedule.tween = tween1;\n\t };\n\t}\n\t\n\tfunction tweenFunction(id, name, value) {\n\t var tween0, tween1;\n\t if (typeof value !== \"function\") throw new Error;\n\t return function() {\n\t var schedule = set(this, id),\n\t tween = schedule.tween;\n\t\n\t // If this node shared tween with the previous node,\n\t // just assign the updated shared tween and we’re done!\n\t // Otherwise, copy-on-write.\n\t if (tween !== tween0) {\n\t tween1 = (tween0 = tween).slice();\n\t for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n\t if (tween1[i].name === name) {\n\t tween1[i] = t;\n\t break;\n\t }\n\t }\n\t if (i === n) tween1.push(t);\n\t }\n\t\n\t schedule.tween = tween1;\n\t };\n\t}\n\t\n\tvar transition_tween = function(name, value) {\n\t var id = this._id;\n\t\n\t name += \"\";\n\t\n\t if (arguments.length < 2) {\n\t var tween = get(this.node(), id).tween;\n\t for (var i = 0, n = tween.length, t; i < n; ++i) {\n\t if ((t = tween[i]).name === name) {\n\t return t.value;\n\t }\n\t }\n\t return null;\n\t }\n\t\n\t return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n\t};\n\t\n\tfunction tweenValue(transition, name, value) {\n\t var id = transition._id;\n\t\n\t transition.each(function() {\n\t var schedule = set(this, id);\n\t (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n\t });\n\t\n\t return function(node) {\n\t return get(node, id).value[name];\n\t };\n\t}\n\t\n\tvar interpolate = function(a, b) {\n\t var c;\n\t return (typeof b === \"number\" ? d3Interpolate.interpolateNumber\n\t : b instanceof d3Color.color ? d3Interpolate.interpolateRgb\n\t : (c = d3Color.color(b)) ? (b = c, d3Interpolate.interpolateRgb)\n\t : d3Interpolate.interpolateString)(a, b);\n\t};\n\t\n\tfunction attrRemove(name) {\n\t return function() {\n\t this.removeAttribute(name);\n\t };\n\t}\n\t\n\tfunction attrRemoveNS(fullname) {\n\t return function() {\n\t this.removeAttributeNS(fullname.space, fullname.local);\n\t };\n\t}\n\t\n\tfunction attrConstant(name, interpolate$$1, value1) {\n\t var value00,\n\t interpolate0;\n\t return function() {\n\t var value0 = this.getAttribute(name);\n\t return value0 === value1 ? null\n\t : value0 === value00 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value1);\n\t };\n\t}\n\t\n\tfunction attrConstantNS(fullname, interpolate$$1, value1) {\n\t var value00,\n\t interpolate0;\n\t return function() {\n\t var value0 = this.getAttributeNS(fullname.space, fullname.local);\n\t return value0 === value1 ? null\n\t : value0 === value00 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value1);\n\t };\n\t}\n\t\n\tfunction attrFunction(name, interpolate$$1, value) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var value0, value1 = value(this);\n\t if (value1 == null) return void this.removeAttribute(name);\n\t value0 = this.getAttribute(name);\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n\t };\n\t}\n\t\n\tfunction attrFunctionNS(fullname, interpolate$$1, value) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var value0, value1 = value(this);\n\t if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n\t value0 = this.getAttributeNS(fullname.space, fullname.local);\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n\t };\n\t}\n\t\n\tvar transition_attr = function(name, value) {\n\t var fullname = d3Selection.namespace(name), i = fullname === \"transform\" ? d3Interpolate.interpolateTransformSvg : interpolate;\n\t return this.attrTween(name, typeof value === \"function\"\n\t ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n\t : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n\t : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value + \"\"));\n\t};\n\t\n\tfunction attrTweenNS(fullname, value) {\n\t function tween() {\n\t var node = this, i = value.apply(node, arguments);\n\t return i && function(t) {\n\t node.setAttributeNS(fullname.space, fullname.local, i(t));\n\t };\n\t }\n\t tween._value = value;\n\t return tween;\n\t}\n\t\n\tfunction attrTween(name, value) {\n\t function tween() {\n\t var node = this, i = value.apply(node, arguments);\n\t return i && function(t) {\n\t node.setAttribute(name, i(t));\n\t };\n\t }\n\t tween._value = value;\n\t return tween;\n\t}\n\t\n\tvar transition_attrTween = function(name, value) {\n\t var key = \"attr.\" + name;\n\t if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n\t if (value == null) return this.tween(key, null);\n\t if (typeof value !== \"function\") throw new Error;\n\t var fullname = d3Selection.namespace(name);\n\t return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n\t};\n\t\n\tfunction delayFunction(id, value) {\n\t return function() {\n\t init(this, id).delay = +value.apply(this, arguments);\n\t };\n\t}\n\t\n\tfunction delayConstant(id, value) {\n\t return value = +value, function() {\n\t init(this, id).delay = value;\n\t };\n\t}\n\t\n\tvar transition_delay = function(value) {\n\t var id = this._id;\n\t\n\t return arguments.length\n\t ? this.each((typeof value === \"function\"\n\t ? delayFunction\n\t : delayConstant)(id, value))\n\t : get(this.node(), id).delay;\n\t};\n\t\n\tfunction durationFunction(id, value) {\n\t return function() {\n\t set(this, id).duration = +value.apply(this, arguments);\n\t };\n\t}\n\t\n\tfunction durationConstant(id, value) {\n\t return value = +value, function() {\n\t set(this, id).duration = value;\n\t };\n\t}\n\t\n\tvar transition_duration = function(value) {\n\t var id = this._id;\n\t\n\t return arguments.length\n\t ? this.each((typeof value === \"function\"\n\t ? durationFunction\n\t : durationConstant)(id, value))\n\t : get(this.node(), id).duration;\n\t};\n\t\n\tfunction easeConstant(id, value) {\n\t if (typeof value !== \"function\") throw new Error;\n\t return function() {\n\t set(this, id).ease = value;\n\t };\n\t}\n\t\n\tvar transition_ease = function(value) {\n\t var id = this._id;\n\t\n\t return arguments.length\n\t ? this.each(easeConstant(id, value))\n\t : get(this.node(), id).ease;\n\t};\n\t\n\tvar transition_filter = function(match) {\n\t if (typeof match !== \"function\") match = d3Selection.matcher(match);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Transition(subgroups, this._parents, this._name, this._id);\n\t};\n\t\n\tvar transition_merge = function(transition) {\n\t if (transition._id !== this._id) throw new Error;\n\t\n\t 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\t for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n\t if (node = group0[i] || group1[i]) {\n\t merge[i] = node;\n\t }\n\t }\n\t }\n\t\n\t for (; j < m0; ++j) {\n\t merges[j] = groups0[j];\n\t }\n\t\n\t return new Transition(merges, this._parents, this._name, this._id);\n\t};\n\t\n\tfunction start(name) {\n\t return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n\t var i = t.indexOf(\".\");\n\t if (i >= 0) t = t.slice(0, i);\n\t return !t || t === \"start\";\n\t });\n\t}\n\t\n\tfunction onFunction(id, name, listener) {\n\t var on0, on1, sit = start(name) ? init : set;\n\t return function() {\n\t var schedule = sit(this, id),\n\t on = schedule.on;\n\t\n\t // If this node shared a dispatch with the previous node,\n\t // just assign the updated shared dispatch and we’re done!\n\t // Otherwise, copy-on-write.\n\t if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\t\n\t schedule.on = on1;\n\t };\n\t}\n\t\n\tvar transition_on = function(name, listener) {\n\t var id = this._id;\n\t\n\t return arguments.length < 2\n\t ? get(this.node(), id).on.on(name)\n\t : this.each(onFunction(id, name, listener));\n\t};\n\t\n\tfunction removeFunction(id) {\n\t return function() {\n\t var parent = this.parentNode;\n\t for (var i in this.__transition) if (+i !== id) return;\n\t if (parent) parent.removeChild(this);\n\t };\n\t}\n\t\n\tvar transition_remove = function() {\n\t return this.on(\"end.remove\", removeFunction(this._id));\n\t};\n\t\n\tvar transition_select = function(select) {\n\t var name = this._name,\n\t id = this._id;\n\t\n\t if (typeof select !== \"function\") select = d3Selection.selector(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n\t if (\"__data__\" in node) subnode.__data__ = node.__data__;\n\t subgroup[i] = subnode;\n\t schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n\t }\n\t }\n\t }\n\t\n\t return new Transition(subgroups, this._parents, name, id);\n\t};\n\t\n\tvar transition_selectAll = function(select) {\n\t var name = this._name,\n\t id = this._id;\n\t\n\t if (typeof select !== \"function\") select = d3Selection.selectorAll(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n\t if (child = children[k]) {\n\t schedule(child, name, id, k, children, inherit);\n\t }\n\t }\n\t subgroups.push(children);\n\t parents.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Transition(subgroups, parents, name, id);\n\t};\n\t\n\tvar Selection = d3Selection.selection.prototype.constructor;\n\t\n\tvar transition_selection = function() {\n\t return new Selection(this._groups, this._parents);\n\t};\n\t\n\tfunction styleRemove(name, interpolate$$1) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var value0 = d3Selection.style(this, name),\n\t value1 = (this.style.removeProperty(name), d3Selection.style(this, name));\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n\t };\n\t}\n\t\n\tfunction styleRemoveEnd(name) {\n\t return function() {\n\t this.style.removeProperty(name);\n\t };\n\t}\n\t\n\tfunction styleConstant(name, interpolate$$1, value1) {\n\t var value00,\n\t interpolate0;\n\t return function() {\n\t var value0 = d3Selection.style(this, name);\n\t return value0 === value1 ? null\n\t : value0 === value00 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value1);\n\t };\n\t}\n\t\n\tfunction styleFunction(name, interpolate$$1, value) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var value0 = d3Selection.style(this, name),\n\t value1 = value(this);\n\t if (value1 == null) value1 = (this.style.removeProperty(name), d3Selection.style(this, name));\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n\t };\n\t}\n\t\n\tvar transition_style = function(name, value, priority) {\n\t var i = (name += \"\") === \"transform\" ? d3Interpolate.interpolateTransformCss : interpolate;\n\t return value == null ? this\n\t .styleTween(name, styleRemove(name, i))\n\t .on(\"end.style.\" + name, styleRemoveEnd(name))\n\t : this.styleTween(name, typeof value === \"function\"\n\t ? styleFunction(name, i, tweenValue(this, \"style.\" + name, value))\n\t : styleConstant(name, i, value + \"\"), priority);\n\t};\n\t\n\tfunction styleTween(name, value, priority) {\n\t function tween() {\n\t var node = this, i = value.apply(node, arguments);\n\t return i && function(t) {\n\t node.style.setProperty(name, i(t), priority);\n\t };\n\t }\n\t tween._value = value;\n\t return tween;\n\t}\n\t\n\tvar transition_styleTween = function(name, value, priority) {\n\t var key = \"style.\" + (name += \"\");\n\t if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n\t if (value == null) return this.tween(key, null);\n\t if (typeof value !== \"function\") throw new Error;\n\t return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n\t};\n\t\n\tfunction textConstant(value) {\n\t return function() {\n\t this.textContent = value;\n\t };\n\t}\n\t\n\tfunction textFunction(value) {\n\t return function() {\n\t var value1 = value(this);\n\t this.textContent = value1 == null ? \"\" : value1;\n\t };\n\t}\n\t\n\tvar transition_text = function(value) {\n\t return this.tween(\"text\", typeof value === \"function\"\n\t ? textFunction(tweenValue(this, \"text\", value))\n\t : textConstant(value == null ? \"\" : value + \"\"));\n\t};\n\t\n\tvar transition_transition = function() {\n\t var name = this._name,\n\t id0 = this._id,\n\t id1 = newId();\n\t\n\t for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t var inherit = get(node, id0);\n\t schedule(node, name, id1, i, group, {\n\t time: inherit.time + inherit.delay + inherit.duration,\n\t delay: 0,\n\t duration: inherit.duration,\n\t ease: inherit.ease\n\t });\n\t }\n\t }\n\t }\n\t\n\t return new Transition(groups, this._parents, name, id1);\n\t};\n\t\n\tvar id = 0;\n\t\n\tfunction Transition(groups, parents, name, id) {\n\t this._groups = groups;\n\t this._parents = parents;\n\t this._name = name;\n\t this._id = id;\n\t}\n\t\n\tfunction transition(name) {\n\t return d3Selection.selection().transition(name);\n\t}\n\t\n\tfunction newId() {\n\t return ++id;\n\t}\n\t\n\tvar selection_prototype = d3Selection.selection.prototype;\n\t\n\tTransition.prototype = transition.prototype = {\n\t constructor: Transition,\n\t select: transition_select,\n\t selectAll: transition_selectAll,\n\t filter: transition_filter,\n\t merge: transition_merge,\n\t selection: transition_selection,\n\t transition: transition_transition,\n\t call: selection_prototype.call,\n\t nodes: selection_prototype.nodes,\n\t node: selection_prototype.node,\n\t size: selection_prototype.size,\n\t empty: selection_prototype.empty,\n\t each: selection_prototype.each,\n\t on: transition_on,\n\t attr: transition_attr,\n\t attrTween: transition_attrTween,\n\t style: transition_style,\n\t styleTween: transition_styleTween,\n\t text: transition_text,\n\t remove: transition_remove,\n\t tween: transition_tween,\n\t delay: transition_delay,\n\t duration: transition_duration,\n\t ease: transition_ease\n\t};\n\t\n\tvar defaultTiming = {\n\t time: null, // Set on use.\n\t delay: 0,\n\t duration: 250,\n\t ease: d3Ease.easeCubicInOut\n\t};\n\t\n\tfunction inherit(node, id) {\n\t var timing;\n\t while (!(timing = node.__transition) || !(timing = timing[id])) {\n\t if (!(node = node.parentNode)) {\n\t return defaultTiming.time = d3Timer.now(), defaultTiming;\n\t }\n\t }\n\t return timing;\n\t}\n\t\n\tvar selection_transition = function(name) {\n\t var id,\n\t timing;\n\t\n\t if (name instanceof Transition) {\n\t id = name._id, name = name._name;\n\t } else {\n\t id = newId(), (timing = defaultTiming).time = d3Timer.now(), name = name == null ? null : name + \"\";\n\t }\n\t\n\t for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t schedule(node, name, id, i, group, timing || inherit(node, id));\n\t }\n\t }\n\t }\n\t\n\t return new Transition(groups, this._parents, name, id);\n\t};\n\t\n\td3Selection.selection.prototype.interrupt = selection_interrupt;\n\td3Selection.selection.prototype.transition = selection_transition;\n\t\n\tvar root = [null];\n\t\n\tvar active = function(node, name) {\n\t var schedules = node.__transition,\n\t schedule,\n\t i;\n\t\n\t if (schedules) {\n\t name = name == null ? null : name + \"\";\n\t for (i in schedules) {\n\t if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n\t return new Transition([[node]], root, name, +i);\n\t }\n\t }\n\t }\n\t\n\t return null;\n\t};\n\t\n\texports.transition = transition;\n\texports.active = active;\n\texports.interrupt = interrupt;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-timer/ Version 1.0.6. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar frame = 0;\n\tvar timeout = 0;\n\tvar interval = 0;\n\tvar pokeDelay = 1000;\n\tvar taskHead;\n\tvar taskTail;\n\tvar clockLast = 0;\n\tvar clockNow = 0;\n\tvar clockSkew = 0;\n\tvar clock = typeof performance === \"object\" && performance.now ? performance : Date;\n\tvar setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\t\n\tfunction now() {\n\t return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n\t}\n\t\n\tfunction clearNow() {\n\t clockNow = 0;\n\t}\n\t\n\tfunction Timer() {\n\t this._call =\n\t this._time =\n\t this._next = null;\n\t}\n\t\n\tTimer.prototype = timer.prototype = {\n\t constructor: Timer,\n\t restart: function(callback, delay, time) {\n\t if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n\t time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n\t if (!this._next && taskTail !== this) {\n\t if (taskTail) taskTail._next = this;\n\t else taskHead = this;\n\t taskTail = this;\n\t }\n\t this._call = callback;\n\t this._time = time;\n\t sleep();\n\t },\n\t stop: function() {\n\t if (this._call) {\n\t this._call = null;\n\t this._time = Infinity;\n\t sleep();\n\t }\n\t }\n\t};\n\t\n\tfunction timer(callback, delay, time) {\n\t var t = new Timer;\n\t t.restart(callback, delay, time);\n\t return t;\n\t}\n\t\n\tfunction timerFlush() {\n\t now(); // Get the current time, if not already set.\n\t ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n\t var t = taskHead, e;\n\t while (t) {\n\t if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n\t t = t._next;\n\t }\n\t --frame;\n\t}\n\t\n\tfunction wake() {\n\t clockNow = (clockLast = clock.now()) + clockSkew;\n\t frame = timeout = 0;\n\t try {\n\t timerFlush();\n\t } finally {\n\t frame = 0;\n\t nap();\n\t clockNow = 0;\n\t }\n\t}\n\t\n\tfunction poke() {\n\t var now = clock.now(), delay = now - clockLast;\n\t if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n\t}\n\t\n\tfunction nap() {\n\t var t0, t1 = taskHead, t2, time = Infinity;\n\t while (t1) {\n\t if (t1._call) {\n\t if (time > t1._time) time = t1._time;\n\t t0 = t1, t1 = t1._next;\n\t } else {\n\t t2 = t1._next, t1._next = null;\n\t t1 = t0 ? t0._next = t2 : taskHead = t2;\n\t }\n\t }\n\t taskTail = t0;\n\t sleep(time);\n\t}\n\t\n\tfunction sleep(time) {\n\t if (frame) return; // Soonest alarm already set, or will be.\n\t if (timeout) timeout = clearTimeout(timeout);\n\t var delay = time - clockNow;\n\t if (delay > 24) {\n\t if (time < Infinity) timeout = setTimeout(wake, delay);\n\t if (interval) interval = clearInterval(interval);\n\t } else {\n\t if (!interval) clockLast = clockNow, interval = setInterval(poke, pokeDelay);\n\t frame = 1, setFrame(wake);\n\t }\n\t}\n\t\n\tvar timeout$1 = function(callback, delay, time) {\n\t var t = new Timer;\n\t delay = delay == null ? 0 : +delay;\n\t t.restart(function(elapsed) {\n\t t.stop();\n\t callback(elapsed + delay);\n\t }, delay, time);\n\t return t;\n\t};\n\t\n\tvar interval$1 = function(callback, delay, time) {\n\t var t = new Timer, total = delay;\n\t if (delay == null) return t.restart(callback, delay, time), t;\n\t delay = +delay, time = time == null ? now() : +time;\n\t t.restart(function tick(elapsed) {\n\t elapsed += total;\n\t t.restart(tick, total += delay, time);\n\t callback(elapsed);\n\t }, delay, time);\n\t return t;\n\t};\n\t\n\texports.now = now;\n\texports.timer = timer;\n\texports.timerFlush = timerFlush;\n\texports.timeout = timeout$1;\n\texports.interval = interval$1;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 15 */,\n/* 16 */,\n/* 17 */,\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;'use strict';\n\t\n\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t\n\t var axisTimeCombinations = {\n\t MINUTE_HOUR: 'minute-hour',\n\t HOUR_DAY: 'hour-daymonth',\n\t DAY_MONTH: 'day-month',\n\t MONTH_YEAR: 'month-year'\n\t };\n\t\n\t var timeBenchmarks = {\n\t ONE_AND_A_HALF_YEARS: 47304000000,\n\t ONE_YEAR: 31536000365,\n\t ONE_DAY: 86400001\n\t };\n\t\n\t return {\n\t axisTimeCombinations: axisTimeCombinations,\n\t timeBenchmarks: timeBenchmarks,\n\t lineGradientId: 'lineGradientId'\n\t };\n\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 19 */,\n/* 20 */,\n/* 21 */,\n/* 22 */,\n/* 23 */,\n/* 24 */,\n/* 25 */,\n/* 26 */,\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;'use strict';\n\t\n\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require) {\n\t 'use strict';\n\t\n\t var d3Format = __webpack_require__(6);\n\t\n\t /**\n\t * Calculates percentage of value from total\n\t * @param {Number} value Value to check\n\t * @param {Number} total Sum of values\n\t * @param {String} decimals Specifies number of decimals https://github.com/d3/d3-format\n\t * @return {String} Percentage\n\t */\n\t function calculatePercent(value, total, decimals) {\n\t return d3Format.format(decimals)(value / total * 100);\n\t }\n\t\n\t /**\n\t * Checks if a number is an integer of has decimal values\n\t * @param {Number} value Value to check\n\t * @return {Boolean} If it is an iteger\n\t */\n\t function isInteger(value) {\n\t return value % 1 === 0;\n\t }\n\t\n\t return {\n\t calculatePercent: calculatePercent,\n\t isInteger: isInteger\n\t };\n\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 28 */,\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;'use strict';\n\t\n\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require) {\n\t 'use strict';\n\t\n\t var d3Format = __webpack_require__(6);\n\t\n\t var integerValueFormats = {\n\t small: {\n\t limit: 10,\n\t format: d3Format.format('')\n\t },\n\t medium: {\n\t limit: 1000,\n\t format: d3Format.format('')\n\t },\n\t large: {\n\t limit: null,\n\t format: d3Format.format('.2s')\n\t }\n\t };\n\t var decimalValueFormats = {\n\t small: {\n\t limit: 10,\n\t format: d3Format.format('.3f')\n\t },\n\t medium: {\n\t limit: 100,\n\t format: d3Format.format('.1f')\n\t },\n\t large: {\n\t limit: null,\n\t format: d3Format.format('.2s')\n\t }\n\t };\n\t\n\t function getValueSize(value, limits) {\n\t var size = 'large';\n\t\n\t if (value < limits.small.limit) {\n\t size = 'small';\n\t } else if (value < limits.medium.limit) {\n\t size = 'medium';\n\t }\n\t return size;\n\t }\n\t\n\t /**\n\t * Formats an integer value depending on its value range\n\t * @param {Number} value Decimal point value to format\n\t * @return {Number} Formatted value to show\n\t */\n\t function formatIntegerValue(value) {\n\t var size = getValueSize(value, integerValueFormats);\n\t var format = integerValueFormats[size].format;\n\t\n\t return format(value);\n\t }\n\t\n\t /**\n\t * Formats a floating point value depending on its value range\n\t * @param {Number} value Decimal point value to format\n\t * @return {Number} Formatted value to show\n\t */\n\t function formatDecimalValue(value) {\n\t var size = getValueSize(value, decimalValueFormats);\n\t var format = decimalValueFormats[size].format;\n\t\n\t return format(value);\n\t }\n\t\n\t return {\n\t formatDecimalValue: formatDecimalValue,\n\t formatIntegerValue: formatIntegerValue\n\t };\n\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// tooltip.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 0a1eb6cfa29181d5999f","define(function(require){\n 'use strict';\n\n const d3Ease = require('d3-ease');\n const d3Format = require('d3-format');\n const d3Selection = require('d3-selection');\n const d3Transition = require('d3-transition');\n const d3TimeFormat = require('d3-time-format');\n\n const {\n axisTimeCombinations\n } = require('./helpers/constants');\n\n const {\n formatIntegerValue,\n formatDecimalValue\n } = require('./helpers/formatHelpers');\n\n const {\n isInteger\n } = require('./helpers/common');\n\n /**\n * Tooltip Component reusable API class that renders a\n * simple and configurable tooltip element for Britechart's\n * line chart or stacked area chart.\n *\n * @module Tooltip\n * @tutorial tooltip\n * @requires d3-array, d3-axis, d3-dispatch, d3-format, d3-scale, d3-selection, d3-transition\n *\n * @example\n * var lineChart = line(),\n * tooltip = tooltip();\n *\n * tooltip\n * .title('Tooltip title');\n *\n * lineChart\n * .width(500)\n * .on('customMouseOver', function() {\n * tooltip.show();\n * })\n * .on('customMouseMove', function(dataPoint, topicColorMap, dataPointXPosition) {\n * tooltip.update(dataPoint, topicColorMap, dataPointXPosition);\n * })\n * .on('customMouseOut', function() {\n * tooltip.hide();\n * });\n *\n * d3Selection.select('.css-selector')\n * .datum(dataset)\n * .call(lineChart);\n *\n * d3Selection.select('.metadata-group .hover-marker')\n * .datum([])\n * .call(tooltip);\n *\n */\n return function module() {\n\n let margin = {\n top: 2,\n right: 2,\n bottom: 2,\n left: 2\n },\n width = 250,\n height = 45,\n\n title = 'Tooltip title',\n shouldShowDateInTitle = true,\n valueFormat = null,\n\n // tooltip\n tooltip,\n tooltipOffset = {\n y: -55,\n x: 0\n },\n tooltipMaxTopicLength = 170,\n tooltipTextContainer,\n tooltipDivider,\n tooltipBody,\n tooltipTitle,\n tooltipWidth = 250,\n tooltipHeight = 48,\n tooltipBorderRadius = 3,\n ttTextX = 0,\n ttTextY = 37,\n textSize,\n entryLineLimit = 3,\n\n // Animations\n mouseChaseDuration = 100,\n ease = d3Ease.easeQuadInOut,\n\n circleYOffset = 8,\n\n colorMap,\n bodyFillColor = '#FFFFFF',\n borderStrokeColor = '#D2D6DF',\n titleFillColor = '#6D717A',\n textFillColor = '#282C35',\n tooltipTextColor = '#000000',\n\n dateLabel = 'date',\n valueLabel = 'value',\n nameLabel = 'name',\n topicLabel = 'topics',\n\n defaultAxisSettings = axisTimeCombinations.DAY_MONTH,\n dateFormat = null,\n topicsOrder = [],\n\n // formats\n monthDayYearFormat = d3TimeFormat.timeFormat('%b %d, %Y'),\n monthDayHourFormat = d3TimeFormat.timeFormat('%b %d, %I %p'),\n locale,\n\n chartWidth, chartHeight,\n data,\n svg;\n\n\n /**\n * This function creates the graph using the selection as container\n * @param {D3Selection} _selection A d3 selection that represents\n * the container(s) where the chart(s) will be rendered\n * @param {Object} _data The data to attach and generate the chart\n */\n function exports(_selection) {\n _selection.each(function(_data){\n chartWidth = width - margin.left - margin.right;\n chartHeight = height - margin.top - margin.bottom;\n data = _data;\n\n buildSVG(this);\n });\n }\n\n /**\n * Builds containers for the tooltip\n * Also applies the Margin convention\n * @private\n */\n function buildContainerGroups() {\n var container = svg.append('g')\n .classed('tooltip-container-group', true)\n .attr('transform', `translate( ${margin.left}, ${margin.top})`);\n\n container.append('g').classed('tooltip-group', true);\n }\n\n /**\n * Builds the SVG element that will contain the chart\n * @param {HTMLElement} container DOM element that will work as the container of the graph\n * @private\n */\n function buildSVG(container) {\n if (!svg) {\n svg = d3Selection.select(container)\n .append('g')\n .classed('britechart britechart-tooltip', true);\n\n buildContainerGroups();\n drawTooltip();\n }\n svg\n .transition()\n .attr('width', width)\n .attr('height', height);\n\n // Hidden by default\n exports.hide();\n }\n\n /**\n * Resets the tooltipBody content\n * @return void\n */\n function cleanContent(){\n tooltipBody.selectAll('text').remove();\n tooltipBody.selectAll('circle').remove();\n }\n\n /**\n * Draws the different elements of the Tooltip box\n * @return void\n */\n function drawTooltip(){\n tooltipTextContainer = svg.selectAll('.tooltip-group')\n .append('g')\n .classed('tooltip-text', true);\n\n tooltip = tooltipTextContainer\n .append('rect')\n .classed('tooltip-text-container', true)\n .attr('x', -tooltipWidth / 4 + 8)\n .attr('y', 0)\n .attr('width', tooltipWidth)\n .attr('height', tooltipHeight)\n .attr('rx', tooltipBorderRadius)\n .attr('ry', tooltipBorderRadius)\n .style('fill', bodyFillColor)\n .style('stroke', borderStrokeColor)\n .style('stroke-width', 1);\n\n tooltipTitle = tooltipTextContainer\n .append('text')\n .classed('tooltip-title', true)\n .attr('x', -tooltipWidth / 4 + 17)\n .attr('dy', '.35em')\n .attr('y', 16)\n .style('fill', titleFillColor);\n\n tooltipDivider = tooltipTextContainer\n .append('line')\n .classed('tooltip-divider', true)\n .attr('x1', -tooltipWidth / 4 + 15)\n .attr('x2', 265)\n .attr('y1', 31)\n .attr('y2', 31)\n .style('stroke', borderStrokeColor);\n\n tooltipBody = tooltipTextContainer\n .append('g')\n .classed('tooltip-body', true)\n .style('transform', 'translateY(8px)')\n .style('fill', textFillColor);\n }\n\n /**\n * Formats the value depending on its characteristics\n * @param {Number} value Value to format\n * @return {Number} Formatted value\n */\n function getFormattedValue(value) {\n let valueFormatter = formatDecimalValue;\n\n if (!value) {\n return 0;\n }\n if (valueFormat) {\n valueFormatter = d3Format.format(valueFormat);\n } else if (isInteger(value)) {\n valueFormatter = formatIntegerValue;\n }\n\n return valueFormatter(value);\n }\n\n /**\n * Calculates the desired position for the tooltip\n * @param {Number} mouseX Current horizontal mouse position\n * @param {Number} mouseY Current vertical mouse position\n * @return {Number[]} X and Y position\n */\n function getTooltipPosition([mouseX, mouseY]) {\n let tooltipX, tooltipY;\n\n // show tooltip to the right\n if ((mouseX - tooltipWidth) < 0) {\n // Tooltip on the right\n tooltipX = tooltipWidth - 185;\n } else {\n // Tooltip on the left\n tooltipX = -205\n }\n\n if (mouseY) {\n tooltipY = tooltipOffset.y;\n // tooltipY = mouseY + tooltipOffset.y;\n } else {\n tooltipY = tooltipOffset.y;\n }\n\n return [tooltipX, tooltipY];\n }\n\n /**\n * Extracts the value from the data object\n * @param {Object} data Data value containing the info\n * @return {String} Value to show\n */\n function getValueText(data) {\n let value = data[valueLabel];\n let valueText;\n\n if (data.missingValue) {\n valueText = '-';\n } else {\n valueText = getFormattedValue(value).toString();\n }\n\n return valueText;\n }\n\n /**\n * Resets the height of the tooltip and the pointer for the text\n * position\n */\n function resetSizeAndPositionPointers() {\n tooltipHeight = 48;\n ttTextY = 37;\n ttTextX = 0;\n }\n\n /**\n * Draws the data entries inside the tooltip for a given topic\n * @param {Object} topic Topic to extract data from\n * @return void\n */\n function updateTopicContent(topic){\n let name = topic[nameLabel],\n tooltipRight,\n tooltipLeftText,\n tooltipRightText,\n elementText;\n\n tooltipLeftText = topic.topicName || name;\n tooltipRightText = getValueText(topic);\n\n elementText = tooltipBody\n .append('text')\n .classed('tooltip-left-text', true)\n .attr('dy', '1em')\n .attr('x', ttTextX - 20)\n .attr('y', ttTextY)\n .style('fill', tooltipTextColor)\n .text(tooltipLeftText)\n .call(textWrap, tooltipMaxTopicLength, -25);\n\n tooltipRight = tooltipBody\n .append('text')\n .classed('tooltip-right-text', true)\n .attr('dy', '1em')\n .attr('x', ttTextX + 8)\n .attr('y', ttTextY)\n .style('fill', tooltipTextColor)\n .text(tooltipRightText);\n\n textSize = elementText.node().getBBox();\n tooltipHeight += textSize.height + 5;\n\n // Not sure if necessary\n tooltipRight.attr('x', tooltipWidth - tooltipRight.node().getBBox().width - 10 - tooltipWidth / 4)\n\n tooltipBody\n .append('circle')\n .classed('tooltip-circle', true)\n .attr('cx', 23 - tooltipWidth / 4)\n .attr('cy', (ttTextY + circleYOffset))\n .attr('r', 5)\n .style('fill', colorMap[name])\n .style('stroke-width', 1);\n\n ttTextY += textSize.height + 7;\n }\n\n /**\n * Updates size and position of tooltip depending on the side of the chart we are in\n * TODO: This needs a refactor, following the mini-tooltip code.\n *\n * @param {Object} dataPoint DataPoint of the tooltip\n * @param {Number} xPosition DataPoint's x position in the chart\n * @param {Number} xPosition DataPoint's y position in the chart\n * @return void\n */\n function updatePositionAndSize(dataPoint, xPosition, yPosition){\n let [tooltipX, tooltipY] = getTooltipPosition([xPosition, yPosition])\n\n tooltip\n .attr('width', tooltipWidth)\n .attr('height', tooltipHeight + 10);\n\n tooltipTextContainer.transition()\n .duration(mouseChaseDuration)\n .ease(ease)\n .attr('transform', `translate(${tooltipX}, ${tooltipY})`);\n\n tooltipDivider\n .attr('x2', tooltipWidth - 60);\n }\n\n /**\n * Updates value of tooltipTitle with the data meaning and the date\n * @param {Object} dataPoint Point of data to use as source\n * @return void\n */\n function updateTitle(dataPoint) {\n let tTitle = title;\n\n if (shouldShowDateInTitle) {\n tTitle = `${tTitle} - ${formatDate(new Date(dataPoint[dateLabel]))}`;\n }\n\n tooltipTitle.text(tTitle);\n }\n\n /**\n * Figures out which date format to use when showing the date of the current data entry\n * @return {Function} The proper date formatting function\n */\n function formatDate(date) {\n let settings = dateFormat || defaultAxisSettings;\n let format = null;\n let localeOptions = {month:'short', day:'numeric'};\n\n if (settings === axisTimeCombinations.DAY_MONTH || settings === axisTimeCombinations.MONTH_YEAR) {\n format = monthDayYearFormat;\n localeOptions.year = 'numeric';\n } else if (settings === axisTimeCombinations.HOUR_DAY || settings === axisTimeCombinations.MINUTE_HOUR) {\n format = monthDayHourFormat;\n localeOptions.hour = 'numeric';\n }\n\n if (locale && ((typeof Intl !== 'undefined') && (typeof Intl === 'object' && Intl.DateTimeFormat))) {\n let f = Intl.DateTimeFormat(locale, localeOptions);\n\n return f.format(date);\n }\n\n return format(date);\n }\n\n /**\n * Helper method to sort the passed topics array by the names passed int he order arary\n * @param {Object[]} topics Topics data, retrieved from datapoint passed by line chart\n * @param {Object[]} order Array of names in the order to sort topics by\n * @return {Object[]} sorted topics object\n */\n function _sortByTopicsOrder(topics, order=topicsOrder) {\n return order.map((orderName) => topics.filter(({name}) => name === orderName)[0]);\n }\n\n /**\n * Sorts topic by alphabetical order for arrays of objects with a name proeprty\n * @param {Array} topics List of topic objects\n * @return {Array} List of topic name strings\n */\n function _sortByAlpha(topics) {\n return topics\n .map(d => d)\n .sort((a, b) => {\n if (a.name > b.name) return 1;\n if (a.name === b.name) return 0;\n return -1;\n });\n\n let otherIndex = topics.map(({name}) => name).indexOf('Other');\n\n if (otherIndex >= 0) {\n let other = topics.splice(otherIndex, 1);\n\n topics = topics.concat(other);\n }\n }\n\n /**\n * Wraps a text given the text, width, x position and textFormatter function\n * @param {D3Selection} text Selection with the text to wrap inside\n * @param {Number} width Desired max width for that line\n * @param {Number} xpos Initial x position of the text\n *\n * REF: http://bl.ocks.org/mbostock/7555321\n * More discussions on https://github.com/mbostock/d3/issues/1642\n */\n function textWrap(text, width, xpos) {\n xpos = xpos || 0;\n\n text.each(function() {\n var words,\n word,\n line,\n lineNumber,\n lineHeight,\n y,\n dy,\n tspan;\n\n text = d3Selection.select(this);\n\n words = text.text().split(/\\s+/).reverse();\n line = [];\n lineNumber = 0;\n lineHeight = 1.2;\n y = text.attr('y');\n dy = parseFloat(text.attr('dy'));\n tspan = text\n .text(null)\n .append('tspan')\n .attr('x', xpos)\n .attr('y', y)\n .attr('dy', dy + 'em');\n\n while ((word = words.pop())) {\n line.push(word);\n tspan.text(line.join(' '));\n\n if (tspan.node().getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(' '));\n\n if (lineNumber < entryLineLimit - 1) {\n line = [word];\n tspan = text.append('tspan')\n .attr('x', xpos)\n .attr('y', y)\n .attr('dy', ++lineNumber * lineHeight + dy + 'em')\n .text(word);\n }\n }\n }\n });\n }\n\n /**\n * Draws the data entries inside the tooltip\n * @param {Object} dataPoint Data entry from to take the info\n * @return void\n */\n function updateContent(dataPoint){\n var topics = dataPoint[topicLabel];\n\n // sort order by topicsOrder array if passed\n if (topicsOrder.length) {\n topics = _sortByTopicsOrder(topics);\n } else if (topics.length && topics[0].name) {\n topics = _sortByAlpha(topics);\n }\n\n cleanContent();\n updateTitle(dataPoint);\n resetSizeAndPositionPointers();\n topics.forEach(updateTopicContent);\n }\n\n /**\n * Updates tooltip title, content, size and position\n * sorts by alphatical name order if not forced order given\n *\n * @param {lineChartPointByDate} dataPoint Current datapoint to show info about\n * @param {Number} xPosition Position of the mouse on the X axis\n * @return void\n */\n function updateTooltip(dataPoint, xPosition, yPosition) {\n updateContent(dataPoint);\n updatePositionAndSize(dataPoint, xPosition, yPosition);\n }\n\n\n // API\n\n /**\n * constants to be used to force the x axis to respect a certain granularity\n * current options: HOUR_DAY, DAY_MONTH, MONTH_YEAR\n * @example tooltip.dateFormat(tooltip.axisTimeCombinations.HOUR_DAY)\n */\n exports.axisTimeCombinations = axisTimeCombinations;\n\n /**\n * Gets or Sets the dateLabel of the data\n * @param {Number} _x Desired dateLabel\n * @return { dateLabel | module} Current dateLabel or Chart module to chain calls\n * @public\n */\n exports.dateLabel = function(_x) {\n if (!arguments.length) {\n return dateLabel;\n }\n dateLabel = _x;\n\n return this;\n };\n\n /**\n * Exposes the ability to force the tooltip to use a certain date format\n * @param {String} _x Desired format\n * @return { (String|Module) } Current format or module to chain calls\n */\n exports.dateFormat = function(_x) {\n if (!arguments.length) {\n return dateFormat || defaultAxisSettings;\n }\n dateFormat = _x;\n\n return this;\n };\n\n /**\n * Hides the tooltip\n * @return {Module} Tooltip module to chain calls\n * @public\n */\n exports.hide = function() {\n svg.style('display', 'none');\n\n return this;\n };\n\n /**\n * Pass locale for the tooltip to render the date in\n * @param {String} _x must be a locale tag like 'en-US' or 'fr-FR'\n * @return { (String|Module) } Current locale or module to chain calls\n */\n exports.locale = function(_x) {\n if (!arguments.length) {\n return locale;\n }\n locale = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the nameLabel of the data\n * @param {Number} _x Desired nameLabel\n * @return { nameLabel | module} Current nameLabel or Chart module to chain calls\n * @public\n */\n exports.nameLabel = function(_x) {\n if (!arguments.length) {\n return nameLabel;\n }\n nameLabel = _x;\n\n return this;\n };\n\n /**\n * Shows the tooltip\n * @return {Module} Tooltip module to chain calls\n * @public\n */\n exports.show = function() {\n svg.style('display', 'block');\n\n return this;\n };\n\n /**\n * Pass an override for the ordering of your tooltip\n * @param {Object[]} _x Array of the names of your tooltip items\n * @return { overrideOrder | module} Current overrideOrder or Chart module to chain calls\n * @public\n */\n exports.topicsOrder = function(_x) {\n if (!arguments.length) {\n return topicsOrder;\n }\n topicsOrder = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the title of the tooltip\n * @param {string} _x Desired title\n * @return { string | module} Current title or module to chain calls\n * @public\n */\n exports.title = function(_x) {\n if (!arguments.length) {\n return title;\n }\n title = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the topicLabel of the data\n * @param {Number} _x Desired topicLabel\n * @return { topicLabel | module} Current topicLabel or Chart module to chain calls\n * @public\n */\n exports.topicLabel = function(_x) {\n if (!arguments.length) {\n return topicLabel;\n }\n topicLabel = _x;\n\n return this;\n };\n\n /**\n * Updates the position and content of the tooltip\n * @param {Object} dataPoint Datapoint to represent\n * @param {Object} colorMapping Color scheme of the topics\n * @param {Number} position X-scale position in pixels\n * @return {Module} Tooltip module to chain calls\n * @public\n */\n exports.update = function(dataPoint, colorMapping, xPosition, yPosition = null) {\n colorMap = colorMapping;\n updateTooltip(dataPoint, xPosition, yPosition);\n\n return this;\n };\n\n /**\n * Gets or Sets the valueFormat of the tooltip\n * @param {String} _x Desired valueFormat\n * @return { String | module} Current valueFormat or module to chain calls\n * @public\n */\n exports.valueFormat = function(_x) {\n if (!arguments.length) {\n return valueFormat;\n }\n valueFormat = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the valueLabel of the data\n * @param {Number} _x Desired valueLabel\n * @return { valueLabel | module} Current valueLabel or Chart module to chain calls\n * @public\n */\n exports.valueLabel = function(_x) {\n if (!arguments.length) {\n return valueLabel;\n }\n valueLabel = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets shouldShowDateInTitle\n * @param {Boolean} _x Desired value\n * @return { shouldShowDateInTitle | module} Current shouldShowDateInTitle or Chart module to chain calls\n * @public\n */\n exports.shouldShowDateInTitle = function(_x) {\n if (!arguments.length) {\n return shouldShowDateInTitle;\n }\n shouldShowDateInTitle = _x;\n\n return this;\n };\n return exports;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/charts/tooltip.js","// https://d3js.org/d3-ease/ Version 1.0.3. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction linear(t) {\n return +t;\n}\n\nfunction quadIn(t) {\n return t * t;\n}\n\nfunction quadOut(t) {\n return t * (2 - t);\n}\n\nfunction quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n\nfunction cubicIn(t) {\n return t * t * t;\n}\n\nfunction cubicOut(t) {\n return --t * t * t + 1;\n}\n\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n\nvar exponent = 3;\n\nvar 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\nvar 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\nvar 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\nvar pi = Math.PI;\nvar halfPi = pi / 2;\n\nfunction sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nfunction sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nfunction sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n\nfunction expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nfunction expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nfunction expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n\nfunction circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nfunction circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nfunction circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n\nvar b1 = 4 / 11;\nvar b2 = 6 / 11;\nvar b3 = 8 / 11;\nvar b4 = 3 / 4;\nvar b5 = 9 / 11;\nvar b6 = 10 / 11;\nvar b7 = 15 / 16;\nvar b8 = 21 / 22;\nvar b9 = 63 / 64;\nvar b0 = 1 / b1 / b1;\n\nfunction bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nfunction bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nfunction bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n\nvar overshoot = 1.70158;\n\nvar backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nvar backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nvar 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\nvar tau = 2 * Math.PI;\nvar amplitude = 1;\nvar period = 0.3;\n\nvar 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 * Math.pow(2, 10 * --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\nvar 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 * Math.pow(2, -10 * (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\nvar 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 * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * 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\nexports.easeLinear = linear;\nexports.easeQuad = quadInOut;\nexports.easeQuadIn = quadIn;\nexports.easeQuadOut = quadOut;\nexports.easeQuadInOut = quadInOut;\nexports.easeCubic = cubicInOut;\nexports.easeCubicIn = cubicIn;\nexports.easeCubicOut = cubicOut;\nexports.easeCubicInOut = cubicInOut;\nexports.easePoly = polyInOut;\nexports.easePolyIn = polyIn;\nexports.easePolyOut = polyOut;\nexports.easePolyInOut = polyInOut;\nexports.easeSin = sinInOut;\nexports.easeSinIn = sinIn;\nexports.easeSinOut = sinOut;\nexports.easeSinInOut = sinInOut;\nexports.easeExp = expInOut;\nexports.easeExpIn = expIn;\nexports.easeExpOut = expOut;\nexports.easeExpInOut = expInOut;\nexports.easeCircle = circleInOut;\nexports.easeCircleIn = circleIn;\nexports.easeCircleOut = circleOut;\nexports.easeCircleInOut = circleInOut;\nexports.easeBounce = bounceOut;\nexports.easeBounceIn = bounceIn;\nexports.easeBounceOut = bounceOut;\nexports.easeBounceInOut = bounceInOut;\nexports.easeBack = backInOut;\nexports.easeBackIn = backIn;\nexports.easeBackOut = backOut;\nexports.easeBackInOut = backInOut;\nexports.easeElastic = elasticOut;\nexports.easeElasticIn = elasticIn;\nexports.easeElasticOut = elasticOut;\nexports.easeElasticInOut = elasticInOut;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-ease/build/d3-ease.js\n// module id = 2\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-color/ Version 1.0.3. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar define = function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n};\n\nfunction 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\nfunction Color() {}\n\nvar darker = 0.7;\nvar brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\";\nvar reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\";\nvar reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\";\nvar reHex3 = /^#([0-9a-f]{3})$/;\nvar reHex6 = /^#([0-9a-f]{6})$/;\nvar reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\");\nvar reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\");\nvar reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\");\nvar reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\");\nvar reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\");\nvar 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 displayable: function() {\n return this.rgb().displayable();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nfunction color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\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])\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\nfunction 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\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction 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 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n toString: function() {\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}));\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\nfunction 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\nfunction 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}));\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\nvar deg2rad = Math.PI / 180;\nvar rad2deg = 180 / Math.PI;\n\nvar Kn = 18;\nvar Xn = 0.950470;\nvar Yn = 1;\nvar Zn = 1.088830;\nvar t0 = 4 / 29;\nvar t1 = 6 / 29;\nvar t2 = 3 * t1 * t1;\nvar 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) {\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 if (!(o instanceof Rgb)) o = rgbConvert(o);\n var b = rgb2xyz(o.r),\n a = rgb2xyz(o.g),\n l = rgb2xyz(o.b),\n x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nfunction lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nfunction 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 + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - Kn * (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 y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Rgb(\n xyz2rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n xyz2rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * 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 xyz2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2xyz(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 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\nfunction hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n\nvar A = -0.14861;\nvar B = +1.78277;\nvar C = -0.29227;\nvar D = -0.90649;\nvar E = +1.97294;\nvar ED = E * D;\nvar EB = E * B;\nvar 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\nfunction cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction 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\nexports.color = color;\nexports.rgb = rgb;\nexports.hsl = hsl;\nexports.lab = lab;\nexports.hcl = hcl;\nexports.cubehelix = cubehelix;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-color/build/d3-color.js\n// module id = 4\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-dispatch/ Version 1.0.3. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar 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 _)) 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\nexports.dispatch = dispatch;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-dispatch/build/d3-dispatch.js\n// module id = 5\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-format/ Version 1.2.0. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nvar formatDecimal = function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n};\n\nvar exponent = function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n};\n\nvar formatGroup = function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n};\n\nvar formatNumerals = function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n};\n\nvar formatDefault = function(x, p) {\n x = x.toPrecision(p);\n\n out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (x[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n case \"e\": break out;\n default: if (i0 > 0) i0 = 0; break;\n }\n }\n\n return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n};\n\nvar prefixExponent;\n\nvar formatPrefixAuto = function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n};\n\nvar formatRounded = function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n};\n\nvar formatTypes = {\n \"\": formatDefault,\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n\n// [[fill]align][sign][symbol][0][width][,][.precision][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\n var match,\n fill = match[1] || \" \",\n align = match[2] || \">\",\n sign = match[3] || \"-\",\n symbol = match[4] || \"\",\n zero = !!match[5],\n width = match[6] && +match[6],\n comma = !!match[7],\n precision = match[8] && +match[8].slice(1),\n type = match[9] || \"\";\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // Map invalid types to the default format.\n else if (!formatTypes[type]) type = \"\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n this.fill = fill;\n this.align = align;\n this.sign = sign;\n this.symbol = symbol;\n this.zero = zero;\n this.width = width;\n this.comma = comma;\n this.precision = precision;\n this.type = type;\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + this.type;\n};\n\nvar identity = function(x) {\n return x;\n};\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nvar formatLocale = function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n type = specifier.type;\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = !type || /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? (type ? 6 : 12)\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n};\n\nvar locale;\n\n\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nfunction defaultLocale(definition) {\n locale = formatLocale(definition);\n exports.format = locale.format;\n exports.formatPrefix = locale.formatPrefix;\n return locale;\n}\n\nvar precisionFixed = function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n};\n\nvar precisionPrefix = function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n};\n\nvar precisionRound = function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n};\n\nexports.formatDefaultLocale = defaultLocale;\nexports.formatLocale = formatLocale;\nexports.formatSpecifier = formatSpecifier;\nexports.precisionFixed = precisionFixed;\nexports.precisionPrefix = precisionPrefix;\nexports.precisionRound = precisionRound;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/build/d3-format.js\n// module id = 6\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-interpolate/ Version 1.1.5. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-color')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) :\n\t(factory((global.d3 = global.d3 || {}),global.d3));\n}(this, (function (exports,d3Color) { 'use strict';\n\nfunction 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\nvar basis$1 = 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\nvar basisClosed = 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\nvar constant = function(x) {\n return function() {\n return x;\n };\n};\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\nfunction 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\nfunction 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\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n\nvar rgb$1 = ((function rgbGamma(y) {\n var color$$1 = gamma(y);\n\n function rgb$$1(start, end) {\n var r = color$$1((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r),\n g = color$$1(start.g, end.g),\n b = color$$1(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$$1.gamma = rgbGamma;\n\n return rgb$$1;\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$$1;\n for (i = 0; i < n; ++i) {\n color$$1 = d3Color.rgb(colors[i]);\n r[i] = color$$1.r || 0;\n g[i] = color$$1.g || 0;\n b[i] = color$$1.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color$$1.opacity = 1;\n return function(t) {\n color$$1.r = r(t);\n color$$1.g = g(t);\n color$$1.b = b(t);\n return color$$1 + \"\";\n };\n };\n}\n\nvar rgbBasis = rgbSpline(basis$1);\nvar rgbBasisClosed = rgbSpline(basisClosed);\n\nvar array = function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(nb),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n};\n\nvar date = function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n};\n\nvar number = function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n};\n\nvar object = 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\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g;\nvar 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\nvar string = 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\nvar value = 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 = d3Color.color(b)) ? (b = c, rgb$1) : string)\n : b instanceof d3Color.color ? rgb$1\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n};\n\nvar round = function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n};\n\nvar degrees = 180 / Math.PI;\n\nvar identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nvar decompose = 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\nvar cssNode;\nvar cssRoot;\nvar cssView;\nvar svgNode;\n\nfunction 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\nfunction 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\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\nvar interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n\nvar rho = Math.SQRT2;\nvar rho2 = 2;\nvar rho4 = 4;\nvar 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]\nvar zoom = 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\nfunction hsl$1(hue$$1) {\n return function(start, end) {\n var h = hue$$1((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h),\n s = nogamma(start.s, end.s),\n l = nogamma(start.l, end.l),\n opacity = nogamma(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\nvar hsl$2 = hsl$1(hue);\nvar hslLong = hsl$1(nogamma);\n\nfunction lab$1(start, end) {\n var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l),\n a = nogamma(start.a, end.a),\n b = nogamma(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n\nfunction hcl$1(hue$$1) {\n return function(start, end) {\n var h = hue$$1((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h),\n c = nogamma(start.c, end.c),\n l = nogamma(start.l, end.l),\n opacity = nogamma(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\nvar hcl$2 = hcl$1(hue);\nvar hclLong = hcl$1(nogamma);\n\nfunction cubehelix$1(hue$$1) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix$$1(start, end) {\n var h = hue$$1((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h),\n s = nogamma(start.s, end.s),\n l = nogamma(start.l, end.l),\n opacity = nogamma(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$$1.gamma = cubehelixGamma;\n\n return cubehelix$$1;\n })(1);\n}\n\nvar cubehelix$2 = cubehelix$1(hue);\nvar cubehelixLong = cubehelix$1(nogamma);\n\nvar quantize = function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n};\n\nexports.interpolate = value;\nexports.interpolateArray = array;\nexports.interpolateBasis = basis$1;\nexports.interpolateBasisClosed = basisClosed;\nexports.interpolateDate = date;\nexports.interpolateNumber = number;\nexports.interpolateObject = object;\nexports.interpolateRound = round;\nexports.interpolateString = string;\nexports.interpolateTransformCss = interpolateTransformCss;\nexports.interpolateTransformSvg = interpolateTransformSvg;\nexports.interpolateZoom = zoom;\nexports.interpolateRgb = rgb$1;\nexports.interpolateRgbBasis = rgbBasis;\nexports.interpolateRgbBasisClosed = rgbBasisClosed;\nexports.interpolateHsl = hsl$2;\nexports.interpolateHslLong = hslLong;\nexports.interpolateLab = lab$1;\nexports.interpolateHcl = hcl$2;\nexports.interpolateHclLong = hclLong;\nexports.interpolateCubehelix = cubehelix$2;\nexports.interpolateCubehelixLong = cubehelixLong;\nexports.quantize = quantize;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-interpolate/build/d3-interpolate.js\n// module id = 9\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-time/ Version 1.0.7. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar t0 = new Date;\nvar t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n\nvar millisecond = newInterval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return newInterval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nvar milliseconds = millisecond.range;\n\nvar durationSecond = 1e3;\nvar durationMinute = 6e4;\nvar durationHour = 36e5;\nvar durationDay = 864e5;\nvar durationWeek = 6048e5;\n\nvar second = newInterval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nvar seconds = second.range;\n\nvar minute = newInterval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nvar minutes = minute.range;\n\nvar hour = newInterval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nvar hours = hour.range;\n\nvar day = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nvar days = day.range;\n\nfunction weekday(i) {\n return newInterval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n\nvar month = newInterval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nvar months = month.range;\n\nvar year = newInterval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nvar years = year.range;\n\nvar utcMinute = newInterval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nvar utcMinutes = utcMinute.range;\n\nvar utcHour = newInterval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nvar utcHours = utcHour.range;\n\nvar utcDay = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nvar utcDays = utcDay.range;\n\nfunction utcWeekday(i) {\n return newInterval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n\nvar utcMonth = newInterval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nvar utcMonths = utcMonth.range;\n\nvar utcYear = newInterval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nvar utcYears = utcYear.range;\n\nexports.timeInterval = newInterval;\nexports.timeMillisecond = millisecond;\nexports.timeMilliseconds = milliseconds;\nexports.utcMillisecond = millisecond;\nexports.utcMilliseconds = milliseconds;\nexports.timeSecond = second;\nexports.timeSeconds = seconds;\nexports.utcSecond = second;\nexports.utcSeconds = seconds;\nexports.timeMinute = minute;\nexports.timeMinutes = minutes;\nexports.timeHour = hour;\nexports.timeHours = hours;\nexports.timeDay = day;\nexports.timeDays = days;\nexports.timeWeek = sunday;\nexports.timeWeeks = sundays;\nexports.timeSunday = sunday;\nexports.timeSundays = sundays;\nexports.timeMonday = monday;\nexports.timeMondays = mondays;\nexports.timeTuesday = tuesday;\nexports.timeTuesdays = tuesdays;\nexports.timeWednesday = wednesday;\nexports.timeWednesdays = wednesdays;\nexports.timeThursday = thursday;\nexports.timeThursdays = thursdays;\nexports.timeFriday = friday;\nexports.timeFridays = fridays;\nexports.timeSaturday = saturday;\nexports.timeSaturdays = saturdays;\nexports.timeMonth = month;\nexports.timeMonths = months;\nexports.timeYear = year;\nexports.timeYears = years;\nexports.utcMinute = utcMinute;\nexports.utcMinutes = utcMinutes;\nexports.utcHour = utcHour;\nexports.utcHours = utcHours;\nexports.utcDay = utcDay;\nexports.utcDays = utcDays;\nexports.utcWeek = utcSunday;\nexports.utcWeeks = utcSundays;\nexports.utcSunday = utcSunday;\nexports.utcSundays = utcSundays;\nexports.utcMonday = utcMonday;\nexports.utcMondays = utcMondays;\nexports.utcTuesday = utcTuesday;\nexports.utcTuesdays = utcTuesdays;\nexports.utcWednesday = utcWednesday;\nexports.utcWednesdays = utcWednesdays;\nexports.utcThursday = utcThursday;\nexports.utcThursdays = utcThursdays;\nexports.utcFriday = utcFriday;\nexports.utcFridays = utcFridays;\nexports.utcSaturday = utcSaturday;\nexports.utcSaturdays = utcSaturdays;\nexports.utcMonth = utcMonth;\nexports.utcMonths = utcMonths;\nexports.utcYear = utcYear;\nexports.utcYears = utcYears;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-time/build/d3-time.js\n// module id = 10\n// module chunks = 0 1 3 4 5 6 8 9 10 11 12","// https://d3js.org/d3-time-format/ Version 2.0.5. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) :\n\t(factory((global.d3 = global.d3 || {}),global.d3));\n}(this, (function (exports,d3Time) { 'use strict';\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"};\nvar numberRe = /^\\s*\\d+/;\nvar percentRe = /^%/;\nvar requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(d3Time.timeSunday.count(d3Time.timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(d3Time.timeMonday.count(d3Time.timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nvar locale$1;\n\n\n\n\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n locale$1 = formatLocale(definition);\n exports.timeFormat = locale$1.format;\n exports.timeParse = locale$1.parse;\n exports.utcFormat = locale$1.utcFormat;\n exports.utcParse = locale$1.utcParse;\n return locale$1;\n}\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : exports.utcFormat(isoSpecifier);\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : exports.utcParse(isoSpecifier);\n\nexports.timeFormatDefaultLocale = defaultLocale;\nexports.timeFormatLocale = formatLocale;\nexports.isoFormat = formatIso;\nexports.isoParse = parseIso;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-time-format/build/d3-time-format.js\n// module id = 11\n// module chunks = 0 1 3 4 5 6 8 9 10 11 12","// https://d3js.org/d3-selection/ Version 1.1.0. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\n\nvar namespaces = {\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\nvar namespace = 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\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\nvar creator = function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n};\n\nvar nextId = 0;\n\nfunction 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\nvar matcher = function(selector) {\n return function() {\n return this.matches(selector);\n };\n};\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!element.matches) {\n var vendorMatches = element.webkitMatchesSelector\n || element.msMatchesSelector\n || element.mozMatchesSelector\n || element.oMatchesSelector;\n matcher = function(selector) {\n return function() {\n return vendorMatches.call(this, selector);\n };\n };\n }\n}\n\nvar matcher$1 = matcher;\n\nvar filterEvents = {};\n\nexports.event = null;\n\nif (typeof document !== \"undefined\") {\n var element$1 = document.documentElement;\n if (!(\"onmouseenter\" in element$1)) {\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 = exports.event; // Events can be reentrant (e.g., focus).\n exports.event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n exports.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\nvar selection_on = 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\nfunction customEvent(event1, listener, that, args) {\n var event0 = exports.event;\n event1.sourceEvent = exports.event;\n exports.event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n exports.event = event0;\n }\n}\n\nvar sourceEvent = function() {\n var current = exports.event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n};\n\nvar point = 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\nvar mouse = function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n};\n\nfunction none() {}\n\nvar selector = function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n};\n\nvar selection_select = 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\nfunction empty() {\n return [];\n}\n\nvar selectorAll = function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n};\n\nvar selection_selectAll = 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\nvar selection_filter = function(match) {\n if (typeof match !== \"function\") match = matcher$1(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\nvar sparse = function(update) {\n return new Array(update.length);\n};\n\nvar selection_enter = function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n};\n\nfunction 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\nvar constant = function(x) {\n return function() {\n return x;\n };\n};\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\nvar selection_data = 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\nvar selection_exit = function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n};\n\nvar selection_merge = 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\nvar selection_order = 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 && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n};\n\nvar selection_sort = 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\nvar selection_call = function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n};\n\nvar selection_nodes = function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n};\n\nvar selection_node = 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\nvar selection_size = function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n};\n\nvar selection_empty = function() {\n return !this.node();\n};\n\nvar selection_each = 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\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\nvar selection_attr = 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\nvar defaultView = 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\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\nvar selection_style = 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\nfunction styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n\nfunction 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\nvar selection_property = 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\nfunction 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\nvar selection_classed = 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\nfunction 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\nvar selection_text = 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\nfunction 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\nvar selection_html = 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\nfunction raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nvar selection_raise = function() {\n return this.each(raise);\n};\n\nfunction lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nvar selection_lower = function() {\n return this.each(lower);\n};\n\nvar selection_append = 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\nfunction constantNull() {\n return null;\n}\n\nvar selection_insert = 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\nfunction remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nvar selection_remove = function() {\n return this.each(remove);\n};\n\nvar selection_datum = function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n};\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\nvar selection_dispatch = function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n};\n\nvar root = [null];\n\nfunction 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 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 datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nvar select = function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n};\n\nvar selectAll = function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n};\n\nvar touch = 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\nvar touches = 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\nexports.creator = creator;\nexports.local = local;\nexports.matcher = matcher$1;\nexports.mouse = mouse;\nexports.namespace = namespace;\nexports.namespaces = namespaces;\nexports.select = select;\nexports.selectAll = selectAll;\nexports.selection = selection;\nexports.selector = selector;\nexports.selectorAll = selectorAll;\nexports.style = styleValue;\nexports.touch = touch;\nexports.touches = touches;\nexports.window = defaultView;\nexports.customEvent = customEvent;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/build/d3-selection.js\n// module id = 12\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-transition/ Version 1.1.0. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-dispatch'), require('d3-timer'), require('d3-interpolate'), require('d3-color'), require('d3-ease')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-dispatch', 'd3-timer', 'd3-interpolate', 'd3-color', 'd3-ease'], factory) :\n\t(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));\n}(this, (function (exports,d3Selection,d3Dispatch,d3Timer,d3Interpolate,d3Color,d3Ease) { 'use strict';\n\nvar emptyOn = d3Dispatch.dispatch(\"start\", \"end\", \"interrupt\");\nvar emptyTween = [];\n\nvar CREATED = 0;\nvar SCHEDULED = 1;\nvar STARTING = 2;\nvar STARTED = 3;\nvar RUNNING = 4;\nvar ENDING = 5;\nvar ENDED = 6;\n\nvar schedule = 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\nfunction init(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id]) || schedule.state > CREATED) throw new Error(\"too late\");\n return schedule;\n}\n\nfunction set(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id]) || schedule.state > STARTING) throw new Error(\"too late\");\n return schedule;\n}\n\nfunction get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"too late\");\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 = d3Timer.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 d3Timer.timeout(start);\n\n // Interrupt the active transition, if any.\n // Dispatch the interrupt event.\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. No interrupt event is dispatched\n // because the cancelled transitions never started. Note that this also\n // removes this transition from the pending list!\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\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 d3Timer.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(null, 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\nvar interrupt = 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 if (active) schedule.on.call(\"interrupt\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n};\n\nvar selection_interrupt = function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n};\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\nvar transition_tween = 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\nfunction 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\nvar interpolate = function(a, b) {\n var c;\n return (typeof b === \"number\" ? d3Interpolate.interpolateNumber\n : b instanceof d3Color.color ? d3Interpolate.interpolateRgb\n : (c = d3Color.color(b)) ? (b = c, d3Interpolate.interpolateRgb)\n : d3Interpolate.interpolateString)(a, b);\n};\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$$1, value1) {\n var value00,\n interpolate0;\n return function() {\n var value0 = this.getAttribute(name);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate$$1, value1) {\n var value00,\n interpolate0;\n return function() {\n var value0 = this.getAttributeNS(fullname.space, fullname.local);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate$$1, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0, value1 = value(this);\n if (value1 == null) return void this.removeAttribute(name);\n value0 = this.getAttribute(name);\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate$$1, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0, value1 = value(this);\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n value0 = this.getAttributeNS(fullname.space, fullname.local);\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n };\n}\n\nvar transition_attr = function(name, value) {\n var fullname = d3Selection.namespace(name), i = fullname === \"transform\" ? d3Interpolate.interpolateTransformSvg : 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\nfunction attrTweenNS(fullname, value) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.setAttribute(name, i(t));\n };\n }\n tween._value = value;\n return tween;\n}\n\nvar transition_attrTween = 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 = d3Selection.namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n};\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\nvar transition_delay = 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\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\nvar transition_duration = 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\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nvar transition_ease = 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\nvar transition_filter = function(match) {\n if (typeof match !== \"function\") match = d3Selection.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\nvar transition_merge = 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\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\nvar transition_on = 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\nfunction 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\nvar transition_remove = function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n};\n\nvar transition_select = function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = d3Selection.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\nvar transition_selectAll = function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = d3Selection.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\nvar Selection = d3Selection.selection.prototype.constructor;\n\nvar transition_selection = function() {\n return new Selection(this._groups, this._parents);\n};\n\nfunction styleRemove(name, interpolate$$1) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0 = d3Selection.style(this, name),\n value1 = (this.style.removeProperty(name), d3Selection.style(this, name));\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n };\n}\n\nfunction styleRemoveEnd(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate$$1, value1) {\n var value00,\n interpolate0;\n return function() {\n var value0 = d3Selection.style(this, name);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate$$1, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0 = d3Selection.style(this, name),\n value1 = value(this);\n if (value1 == null) value1 = (this.style.removeProperty(name), d3Selection.style(this, name));\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n };\n}\n\nvar transition_style = function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? d3Interpolate.interpolateTransformCss : interpolate;\n return value == null ? this\n .styleTween(name, styleRemove(name, i))\n .on(\"end.style.\" + name, styleRemoveEnd(name))\n : this.styleTween(name, typeof value === \"function\"\n ? styleFunction(name, i, tweenValue(this, \"style.\" + name, value))\n : styleConstant(name, i, value + \"\"), priority);\n};\n\nfunction styleTween(name, value, priority) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.style.setProperty(name, i(t), priority);\n };\n }\n tween._value = value;\n return tween;\n}\n\nvar transition_styleTween = 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\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\nvar transition_text = function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n};\n\nvar transition_transition = 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\nvar id = 0;\n\nfunction Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nfunction transition(name) {\n return d3Selection.selection().transition(name);\n}\n\nfunction newId() {\n return ++id;\n}\n\nvar selection_prototype = d3Selection.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 remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease\n};\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: d3Ease.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 = d3Timer.now(), defaultTiming;\n }\n }\n return timing;\n}\n\nvar selection_transition = 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 = d3Timer.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\nd3Selection.selection.prototype.interrupt = selection_interrupt;\nd3Selection.selection.prototype.transition = selection_transition;\n\nvar root = [null];\n\nvar active = 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\nexports.transition = transition;\nexports.active = active;\nexports.interrupt = interrupt;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-transition/build/d3-transition.js\n// module id = 13\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-timer/ Version 1.0.6. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar frame = 0;\nvar timeout = 0;\nvar interval = 0;\nvar pokeDelay = 1000;\nvar taskHead;\nvar taskTail;\nvar clockLast = 0;\nvar clockNow = 0;\nvar clockSkew = 0;\nvar clock = typeof performance === \"object\" && performance.now ? performance : Date;\nvar setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nfunction 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\nfunction timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nfunction 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;\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, delay);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clockNow, interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n\nvar timeout$1 = 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\nvar interval$1 = function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n};\n\nexports.now = now;\nexports.timer = timer;\nexports.timerFlush = timerFlush;\nexports.timeout = timeout$1;\nexports.interval = interval$1;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-timer/build/d3-timer.js\n// module id = 14\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","define(function() {\n \n const axisTimeCombinations = {\n MINUTE_HOUR: 'minute-hour',\n HOUR_DAY: 'hour-daymonth',\n DAY_MONTH: 'day-month',\n MONTH_YEAR: 'month-year'\n };\n\n const timeBenchmarks= {\n ONE_AND_A_HALF_YEARS: 47304000000,\n ONE_YEAR: 31536000365,\n ONE_DAY: 86400001\n };\n\n return {\n axisTimeCombinations,\n timeBenchmarks,\n lineGradientId: 'lineGradientId'\n };\n});\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/charts/helpers/constants.js","define(function(require) {\n 'use strict';\n\n const d3Format = require('d3-format');\n\n /**\n * Calculates percentage of value from total\n * @param {Number} value Value to check\n * @param {Number} total Sum of values\n * @param {String} decimals Specifies number of decimals https://github.com/d3/d3-format\n * @return {String} Percentage\n */\n function calculatePercent(value, total, decimals) {\n return d3Format.format(decimals)(value / total * 100);\n }\n\n /**\n * Checks if a number is an integer of has decimal values\n * @param {Number} value Value to check\n * @return {Boolean} If it is an iteger\n */\n function isInteger(value) {\n return value % 1 === 0;\n }\n\n return {\n calculatePercent,\n isInteger\n };\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/charts/helpers/common.js","define(function(require) {\n 'use strict';\n\n const d3Format = require('d3-format');\n\n const integerValueFormats = {\n small: {\n limit: 10,\n format: d3Format.format('')\n },\n medium: {\n limit: 1000,\n format: d3Format.format('')\n },\n large: {\n limit: null,\n format: d3Format.format('.2s')\n }\n };\n const decimalValueFormats = {\n small: {\n limit: 10,\n format: d3Format.format('.3f')\n },\n medium: {\n limit: 100,\n format: d3Format.format('.1f')\n },\n large: {\n limit: null,\n format: d3Format.format('.2s')\n }\n };\n\n function getValueSize(value, limits) {\n let size = 'large';\n\n if (value < limits.small.limit) {\n size = 'small';\n } else if (value < limits.medium.limit) {\n size = 'medium';\n }\n return size;\n }\n\n /**\n * Formats an integer value depending on its value range\n * @param {Number} value Decimal point value to format\n * @return {Number} Formatted value to show\n */\n function formatIntegerValue(value) {\n let size = getValueSize(value, integerValueFormats);\n let format = integerValueFormats[size].format;\n\n return format(value);\n }\n\n /**\n * Formats a floating point value depending on its value range\n * @param {Number} value Decimal point value to format\n * @return {Number} Formatted value to show\n */\n function formatDecimalValue(value) {\n let size = getValueSize(value, decimalValueFormats);\n let format = decimalValueFormats[size].format;\n\n return format(value);\n }\n\n return {\n formatDecimalValue,\n formatIntegerValue,\n }\n\n});\n\n\n// WEBPACK FOOTER //\n// ./src/charts/helpers/formatHelpers.js"],"sourceRoot":""}