Skip to content

Instantly share code, notes, and snippets.

@mr-wildcard
Created August 13, 2015 20:25
Show Gist options
  • Save mr-wildcard/994c69159eb4a24c8403 to your computer and use it in GitHub Desktop.
Save mr-wildcard/994c69159eb4a24c8403 to your computer and use it in GitHub Desktop.
requirebin sketch
// require() some stuff from npm (like you were using browserify)
// and then hit Run Code to run it on the right
var Chart = require('chart.js');
var moment = require('moment');
Chart.defaults.global.scaleLabel = "<%= moment().add(value, 'days').format('YYYY/DD/MM') %>";
var data = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [
{
label: "My First dataset",
fillColor: "rgba(220,220,220,0.2)",
strokeColor: "rgba(220,220,220,1)",
pointColor: "rgba(220,220,220,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: [65, 59, 80, 81, 56, 55, 40]
},
{
label: "My Second dataset",
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(151,187,205,1)",
data: [28, 48, 40, 19, 86, 27, 90]
}
]
};
var ctx = document.getElementById("canvas").getContext("2d");
var myLineChart = new Chart(ctx).Line(data);
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({moment:[function(require,module,exports){(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):global.moment=factory()})(this,function(){"use strict";var hookCallback;function utils_hooks__hooks(){return hookCallback.apply(null,arguments)}function setHookCallback(callback){hookCallback=callback}function isArray(input){return Object.prototype.toString.call(input)==="[object Array]"}function isDate(input){return input instanceof Date||Object.prototype.toString.call(input)==="[object Date]"}function map(arr,fn){var res=[],i;for(i=0;i<arr.length;++i){res.push(fn(arr[i],i))}return res}function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function extend(a,b){for(var i in b){if(hasOwnProp(b,i)){a[i]=b[i]}}if(hasOwnProp(b,"toString")){a.toString=b.toString}if(hasOwnProp(b,"valueOf")){a.valueOf=b.valueOf}return a}function create_utc__createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,true).utc()}function defaultParsingFlags(){return{empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false}}function getParsingFlags(m){if(m._pf==null){m._pf=defaultParsingFlags()}return m._pf}function valid__isValid(m){if(m._isValid==null){var flags=getParsingFlags(m);m._isValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated;if(m._strict){m._isValid=m._isValid&&flags.charsLeftOver===0&&flags.unusedTokens.length===0&&flags.bigHour===undefined}}return m._isValid}function valid__createInvalid(flags){var m=create_utc__createUTC(NaN);if(flags!=null){extend(getParsingFlags(m),flags)}else{getParsingFlags(m).userInvalidated=true}return m}var momentProperties=utils_hooks__hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(typeof from._isAMomentObject!=="undefined"){to._isAMomentObject=from._isAMomentObject}if(typeof from._i!=="undefined"){to._i=from._i}if(typeof from._f!=="undefined"){to._f=from._f}if(typeof from._l!=="undefined"){to._l=from._l}if(typeof from._strict!=="undefined"){to._strict=from._strict}if(typeof from._tzm!=="undefined"){to._tzm=from._tzm}if(typeof from._isUTC!=="undefined"){to._isUTC=from._isUTC}if(typeof from._offset!=="undefined"){to._offset=from._offset}if(typeof from._pf!=="undefined"){to._pf=getParsingFlags(from)}if(typeof from._locale!=="undefined"){to._locale=from._locale}if(momentProperties.length>0){for(i in momentProperties){prop=momentProperties[i];val=from[prop];if(typeof val!=="undefined"){to[prop]=val}}}return to}var updateInProgress=false;function Moment(config){copyConfig(this,config);this._d=new Date(config._d!=null?config._d.getTime():NaN);if(updateInProgress===false){updateInProgress=true;utils_hooks__hooks.updateOffset(this);updateInProgress=false}}function isMoment(obj){return obj instanceof Moment||obj!=null&&obj._isAMomentObject!=null}function absFloor(number){if(number<0){return Math.ceil(number)}else{return Math.floor(number)}}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;if(coercedNumber!==0&&isFinite(coercedNumber)){value=absFloor(coercedNumber)}return value}function compareArrays(array1,array2,dontConvert){var len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0,i;for(i=0;i<len;i++){if(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i])){diffs++}}return diffs+lengthDiff}function Locale(){}var locales={};var globalLocale;function normalizeLocale(key){return key?key.toLowerCase().replace("_","-"):key}function chooseLocale(names){var i=0,j,next,locale,split;while(i<names.length){split=normalizeLocale(names[i]).split("-");j=split.length;next=normalizeLocale(names[i+1]);next=next?next.split("-"):null;while(j>0){locale=loadLocale(split.slice(0,j).join("-"));if(locale){return locale}if(next&&next.length>=j&&compareArrays(split,next,true)>=j-1){break}j--}i++}return null}function loadLocale(name){var oldLocale=null;if(!locales[name]&&typeof module!=="undefined"&&module&&module.exports){try{oldLocale=globalLocale._abbr;require("./locale/"+name);locale_locales__getSetGlobalLocale(oldLocale)}catch(e){}}return locales[name]}function locale_locales__getSetGlobalLocale(key,values){var data;if(key){if(typeof values==="undefined"){data=locale_locales__getLocale(key)}else{data=defineLocale(key,values)}if(data){globalLocale=data}}return globalLocale._abbr}function defineLocale(name,values){if(values!==null){values.abbr=name;locales[name]=locales[name]||new Locale;locales[name].set(values);locale_locales__getSetGlobalLocale(name);return locales[name]}else{delete locales[name];return null}}function locale_locales__getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr){key=key._locale._abbr}if(!key){return globalLocale}if(!isArray(key)){locale=loadLocale(key);if(locale){return locale}key=[key]}return chooseLocale(key)}var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+"s"]=aliases[shorthand]=unit}function normalizeUnits(units){return typeof units==="string"?aliases[units]||aliases[units.toLowerCase()]:undefined}function normalizeObjectUnits(inputObject){var normalizedInput={},normalizedProp,prop;for(prop in inputObject){if(hasOwnProp(inputObject,prop)){normalizedProp=normalizeUnits(prop);if(normalizedProp){normalizedInput[normalizedProp]=inputObject[prop]}}}return normalizedInput}function makeGetSet(unit,keepTime){return function(value){if(value!=null){get_set__set(this,unit,value);utils_hooks__hooks.updateOffset(this,keepTime);return this}else{return get_set__get(this,unit)}}}function get_set__get(mom,unit){return mom._d["get"+(mom._isUTC?"UTC":"")+unit]()}function get_set__set(mom,unit,value){return mom._d["set"+(mom._isUTC?"UTC":"")+unit](value)}function getSet(units,value){var unit;if(typeof units==="object"){for(unit in units){this.set(unit,units[unit])}}else{units=normalizeUnits(units);if(typeof this[units]==="function"){return this[units](value)}}return this}function zeroFill(number,targetLength,forceSign){var absNumber=""+Math.abs(number),zerosToFill=targetLength-absNumber.length,sign=number>=0;return(sign?forceSign?"+":"":"-")+Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber}var formattingTokens=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;var localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;var formatFunctions={};var formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;if(typeof callback==="string"){func=function(){return this[callback]()}}if(token){formatTokenFunctions[token]=func}if(padded){formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2])}}if(ordinal){formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token)}}}function removeFormattingTokens(input){if(input.match(/\[[\s\S]/)){return input.replace(/^\[|\]$/g,"")}return input.replace(/\\/g,"")}function makeFormatFunction(format){var array=format.match(formattingTokens),i,length;for(i=0,length=array.length;i<length;i++){if(formatTokenFunctions[array[i]]){array[i]=formatTokenFunctions[array[i]]}else{array[i]=removeFormattingTokens(array[i])}}return function(mom){var output="";for(i=0;i<length;i++){output+=array[i]instanceof Function?array[i].call(mom,format):array[i]}return output}}function formatMoment(m,format){if(!m.isValid()){return m.localeData().invalidDate()}format=expandFormat(format,m.localeData());formatFunctions[format]=formatFunctions[format]||makeFormatFunction(format);return formatFunctions[format](m)}function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input}localFormattingTokens.lastIndex=0;while(i>=0&&localFormattingTokens.test(format)){format=format.replace(localFormattingTokens,replaceLongDateFormatTokens);localFormattingTokens.lastIndex=0;i-=1}return format}var match1=/\d/;var match2=/\d\d/;var match3=/\d{3}/;var match4=/\d{4}/;var match6=/[+-]?\d{6}/;var match1to2=/\d\d?/;var match1to3=/\d{1,3}/;var match1to4=/\d{1,4}/;var match1to6=/[+-]?\d{1,6}/;var matchUnsigned=/\d+/;var matchSigned=/[+-]?\d+/;var matchOffset=/Z|[+-]\d\d:?\d\d/gi;var matchTimestamp=/[+-]?\d+(\.\d{1,3})?/;var matchWord=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;var regexes={};function isFunction(sth){return typeof sth==="function"&&Object.prototype.toString.call(sth)==="[object Function]"}function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict){return isStrict&&strictRegex?strictRegex:regex}}function getParseRegexForToken(token,config){if(!hasOwnProp(regexes,token)){return new RegExp(unescapeFormat(token))}return regexes[token](config._strict,config._locale)}function unescapeFormat(s){return s.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var tokens={};function addParseToken(token,callback){var i,func=callback;if(typeof token==="string"){token=[token]}if(typeof callback==="number"){func=function(input,array){array[callback]=toInt(input)}}for(i=0;i<token.length;i++){tokens[token[i]]=func}}function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{};callback(input,config._w,config,token)})}function addTimeToArrayFromToken(token,input,config){if(input!=null&&hasOwnProp(tokens,token)){tokens[token](input,config._a,config,token)}}var YEAR=0;var MONTH=1;var DATE=2;var HOUR=3;var MINUTE=4;var SECOND=5;var MILLISECOND=6;function daysInMonth(year,month){return new Date(Date.UTC(year,month+1,0)).getUTCDate()}addFormatToken("M",["MM",2],"Mo",function(){return this.month()+1});addFormatToken("MMM",0,0,function(format){return this.localeData().monthsShort(this,format)});addFormatToken("MMMM",0,0,function(format){return this.localeData().months(this,format)});addUnitAlias("month","M");addRegexToken("M",match1to2);addRegexToken("MM",match1to2,match2);addRegexToken("MMM",matchWord);addRegexToken("MMMM",matchWord);addParseToken(["M","MM"],function(input,array){array[MONTH]=toInt(input)-1});addParseToken(["MMM","MMMM"],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);if(month!=null){array[MONTH]=month}else{getParsingFlags(config).invalidMonth=input}});var defaultLocaleMonths="January_February_March_April_May_June_July_August_September_October_November_December".split("_");function localeMonths(m){return this._months[m.month()]}var defaultLocaleMonthsShort="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function localeMonthsShort(m){return this._monthsShort[m.month()]}function localeMonthsParse(monthName,format,strict){var i,mom,regex;if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[]}for(i=0;i<12;i++){mom=create_utc__createUTC([2e3,i]);if(strict&&!this._longMonthsParse[i]){this._longMonthsParse[i]=new RegExp("^"+this.months(mom,"").replace(".","")+"$","i");this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(mom,"").replace(".","")+"$","i")}if(!strict&&!this._monthsParse[i]){regex="^"+this.months(mom,"")+"|^"+this.monthsShort(mom,"");this._monthsParse[i]=new RegExp(regex.replace(".",""),"i")}if(strict&&format==="MMMM"&&this._longMonthsParse[i].test(monthName)){return i}else if(strict&&format==="MMM"&&this._shortMonthsParse[i].test(monthName)){return i}else if(!strict&&this._monthsParse[i].test(monthName)){return i}}}function setMonth(mom,value){var dayOfMonth;if(typeof value==="string"){value=mom.localeData().monthsParse(value);if(typeof value!=="number"){return mom}}dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value));mom._d["set"+(mom._isUTC?"UTC":"")+"Month"](value,dayOfMonth);return mom}function getSetMonth(value){if(value!=null){setMonth(this,value);utils_hooks__hooks.updateOffset(this,true);return this}else{return get_set__get(this,"Month")}}function getDaysInMonth(){return daysInMonth(this.year(),this.month())}function checkOverflow(m){var overflow;var a=m._a;if(a&&getParsingFlags(m).overflow===-2){overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||a[HOUR]===24&&(a[MINUTE]!==0||a[SECOND]!==0||a[MILLISECOND]!==0)?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1;if(getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)){overflow=DATE}getParsingFlags(m).overflow=overflow}return m}function warn(msg){if(utils_hooks__hooks.suppressDeprecationWarnings===false&&typeof console!=="undefined"&&console.warn){console.warn("Deprecation warning: "+msg)}}function deprecate(msg,fn){var firstTime=true;return extend(function(){if(firstTime){warn(msg+"\n"+(new Error).stack);firstTime=false}return fn.apply(this,arguments)},fn)}var deprecations={};function deprecateSimple(name,msg){if(!deprecations[name]){warn(msg);deprecations[name]=true}}utils_hooks__hooks.suppressDeprecationWarnings=false;var from_string__isoRegex=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;var isoDates=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]];var isoTimes=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]];var aspNetJsonRegex=/^\/?Date\((\-?\d+)/i;function configFromISO(config){var i,l,string=config._i,match=from_string__isoRegex.exec(string);if(match){getParsingFlags(config).iso=true;for(i=0,l=isoDates.length;i<l;i++){if(isoDates[i][1].exec(string)){config._f=isoDates[i][0];break}}for(i=0,l=isoTimes.length;i<l;i++){if(isoTimes[i][1].exec(string)){config._f+=(match[6]||" ")+isoTimes[i][0];break}}if(string.match(matchOffset)){config._f+="Z"}configFromStringAndFormat(config)}else{config._isValid=false}}function configFromString(config){var matched=aspNetJsonRegex.exec(config._i);if(matched!==null){config._d=new Date(+matched[1]);return}configFromISO(config);if(config._isValid===false){delete config._isValid;utils_hooks__hooks.createFromInputFallback(config)}}utils_hooks__hooks.createFromInputFallback=deprecate("moment construction falls back to js Date. This is "+"discouraged and will be removed in upcoming major "+"release. Please refer to "+"https://github.com/moment/moment/issues/1407 for more info.",function(config){config._d=new Date(config._i+(config._useUTC?" UTC":""))});function createDate(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);if(y<1970){date.setFullYear(y)}return date}function createUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));if(y<1970){date.setUTCFullYear(y)}return date}addFormatToken(0,["YY",2],0,function(){return this.year()%100});addFormatToken(0,["YYYY",4],0,"year");addFormatToken(0,["YYYYY",5],0,"year");addFormatToken(0,["YYYYYY",6,true],0,"year");addUnitAlias("year","y");addRegexToken("Y",matchSigned);addRegexToken("YY",match1to2,match2);addRegexToken("YYYY",match1to4,match4);addRegexToken("YYYYY",match1to6,match6);addRegexToken("YYYYYY",match1to6,match6);addParseToken(["YYYYY","YYYYYY"],YEAR);addParseToken("YYYY",function(input,array){array[YEAR]=input.length===2?utils_hooks__hooks.parseTwoDigitYear(input):toInt(input)});addParseToken("YY",function(input,array){array[YEAR]=utils_hooks__hooks.parseTwoDigitYear(input)});function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4===0&&year%100!==0||year%400===0}utils_hooks__hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};var getSetYear=makeGetSet("FullYear",false);function getIsLeapYear(){return isLeapYear(this.year())}addFormatToken("w",["ww",2],"wo","week");addFormatToken("W",["WW",2],"Wo","isoWeek");addUnitAlias("week","w");addUnitAlias("isoWeek","W");addRegexToken("w",match1to2);addRegexToken("ww",match1to2,match2);addRegexToken("W",match1to2);addRegexToken("WW",match1to2,match2);addWeekParseToken(["w","ww","W","WW"],function(input,week,config,token){week[token.substr(0,1)]=toInt(input)});function weekOfYear(mom,firstDayOfWeek,firstDayOfWeekOfYear){var end=firstDayOfWeekOfYear-firstDayOfWeek,daysToDayOfWeek=firstDayOfWeekOfYear-mom.day(),adjustedMoment;if(daysToDayOfWeek>end){daysToDayOfWeek-=7}if(daysToDayOfWeek<end-7){daysToDayOfWeek+=7}adjustedMoment=local__createLocal(mom).add(daysToDayOfWeek,"d");return{week:Math.ceil(adjustedMoment.dayOfYear()/7),year:adjustedMoment.year()}}function localeWeek(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week}var defaultLocaleWeek={dow:0,doy:6};function localeFirstDayOfWeek(){return this._week.dow}function localeFirstDayOfYear(){return this._week.doy}function getSetWeek(input){var week=this.localeData().week(this);return input==null?week:this.add((input-week)*7,"d")}function getSetISOWeek(input){var week=weekOfYear(this,1,4).week;return input==null?week:this.add((input-week)*7,"d")}addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear");addUnitAlias("dayOfYear","DDD");addRegexToken("DDD",match1to3);addRegexToken("DDDD",match3);addParseToken(["DDD","DDDD"],function(input,array,config){config._dayOfYear=toInt(input)});function dayOfYearFromWeeks(year,week,weekday,firstDayOfWeekOfYear,firstDayOfWeek){var week1Jan=6+firstDayOfWeek-firstDayOfWeekOfYear,janX=createUTCDate(year,0,1+week1Jan),d=janX.getUTCDay(),dayOfYear;if(d<firstDayOfWeek){d+=7}weekday=weekday!=null?1*weekday:firstDayOfWeek;dayOfYear=1+week1Jan+7*(week-1)-d+weekday;return{year:dayOfYear>0?year:year-1,dayOfYear:dayOfYear>0?dayOfYear:daysInYear(year-1)+dayOfYear}}function getSetDayOfYear(input){var dayOfYear=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return input==null?dayOfYear:this.add(input-dayOfYear,"d")}function defaults(a,b,c){if(a!=null){return a}if(b!=null){return b}return c}function currentDateArray(config){var now=new Date;if(config._useUTC){return[now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate()]}return[now.getFullYear(),now.getMonth(),now.getDate()]}function configFromArray(config){var i,date,input=[],currentDate,yearToUse;if(config._d){return}currentDate=currentDateArray(config);if(config._w&&config._a[DATE]==null&&config._a[MONTH]==null){dayOfYearFromWeekInfo(config)}if(config._dayOfYear){yearToUse=defaults(config._a[YEAR],currentDate[YEAR]);if(config._dayOfYear>daysInYear(yearToUse)){getParsingFlags(config)._overflowDayOfYear=true}date=createUTCDate(yearToUse,0,config._dayOfYear);config._a[MONTH]=date.getUTCMonth();config._a[DATE]=date.getUTCDate()}for(i=0;i<3&&config._a[i]==null;++i){config._a[i]=input[i]=currentDate[i]}for(;i<7;i++){config._a[i]=input[i]=config._a[i]==null?i===2?1:0:config._a[i]}if(config._a[HOUR]===24&&config._a[MINUTE]===0&&config._a[SECOND]===0&&config._a[MILLISECOND]===0){config._nextDay=true;config._a[HOUR]=0}config._d=(config._useUTC?createUTCDate:createDate).apply(null,input);if(config._tzm!=null){config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm)}if(config._nextDay){config._a[HOUR]=24}}function dayOfYearFromWeekInfo(config){var w,weekYear,week,weekday,dow,doy,temp;w=config._w;if(w.GG!=null||w.W!=null||w.E!=null){dow=1;doy=4;weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(local__createLocal(),1,4).year);week=defaults(w.W,1);weekday=defaults(w.E,1)}else{dow=config._locale._week.dow;doy=config._locale._week.doy;weekYear=defaults(w.gg,config._a[YEAR],weekOfYear(local__createLocal(),dow,doy).year);week=defaults(w.w,1);if(w.d!=null){weekday=w.d;if(weekday<dow){++week}}else if(w.e!=null){weekday=w.e+dow}else{weekday=dow}}temp=dayOfYearFromWeeks(weekYear,week,weekday,doy,dow);config._a[YEAR]=temp.year;config._dayOfYear=temp.dayOfYear}utils_hooks__hooks.ISO_8601=function(){};function configFromStringAndFormat(config){if(config._f===utils_hooks__hooks.ISO_8601){configFromISO(config);return}config._a=[];getParsingFlags(config).empty=true;var string=""+config._i,i,parsedInput,tokens,token,skipped,stringLength=string.length,totalParsedInputLength=0;tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[];for(i=0;i<tokens.length;i++){token=tokens[i];parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0];if(parsedInput){skipped=string.substr(0,string.indexOf(parsedInput));if(skipped.length>0){getParsingFlags(config).unusedInput.push(skipped)}string=string.slice(string.indexOf(parsedInput)+parsedInput.length);totalParsedInputLength+=parsedInput.length}if(formatTokenFunctions[token]){if(parsedInput){getParsingFlags(config).empty=false}else{getParsingFlags(config).unusedTokens.push(token)}addTimeToArrayFromToken(token,parsedInput,config)}else if(config._strict&&!parsedInput){getParsingFlags(config).unusedTokens.push(token)}}getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength;if(string.length>0){getParsingFlags(config).unusedInput.push(string)}if(getParsingFlags(config).bigHour===true&&config._a[HOUR]<=12&&config._a[HOUR]>0){getParsingFlags(config).bigHour=undefined}config._a[HOUR]=meridiemFixWrap(config._locale,config._a[HOUR],config._meridiem);configFromArray(config);checkOverflow(config)}function meridiemFixWrap(locale,hour,meridiem){var isPm;if(meridiem==null){return hour}if(locale.meridiemHour!=null){return locale.meridiemHour(hour,meridiem)}else if(locale.isPM!=null){isPm=locale.isPM(meridiem);if(isPm&&hour<12){hour+=12}if(!isPm&&hour===12){hour=0}return hour}else{return hour}}function configFromStringAndArray(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(config._f.length===0){getParsingFlags(config).invalidFormat=true;config._d=new Date(NaN);return}for(i=0;i<config._f.length;i++){currentScore=0;tempConfig=copyConfig({},config);if(config._useUTC!=null){tempConfig._useUTC=config._useUTC}tempConfig._f=config._f[i];configFromStringAndFormat(tempConfig);if(!valid__isValid(tempConfig)){continue}currentScore+=getParsingFlags(tempConfig).charsLeftOver;currentScore+=getParsingFlags(tempConfig).unusedTokens.length*10;getParsingFlags(tempConfig).score=currentScore;if(scoreToBeat==null||currentScore<scoreToBeat){scoreToBeat=currentScore;bestMoment=tempConfig}}extend(config,bestMoment||tempConfig)}function configFromObject(config){if(config._d){return}var i=normalizeObjectUnits(config._i);config._a=[i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond];configFromArray(config)}function createFromConfig(config){var res=new Moment(checkOverflow(prepareConfig(config)));if(res._nextDay){res.add(1,"d");res._nextDay=undefined}return res}function prepareConfig(config){var input=config._i,format=config._f;config._locale=config._locale||locale_locales__getLocale(config._l);if(input===null||format===undefined&&input===""){return valid__createInvalid({nullInput:true})}if(typeof input==="string"){config._i=input=config._locale.preparse(input)}if(isMoment(input)){return new Moment(checkOverflow(input))}else if(isArray(format)){configFromStringAndArray(config)}else if(format){configFromStringAndFormat(config)}else if(isDate(input)){config._d=input}else{configFromInput(config)}return config}function configFromInput(config){var input=config._i;if(input===undefined){config._d=new Date}else if(isDate(input)){config._d=new Date(+input)}else if(typeof input==="string"){configFromString(config)}else if(isArray(input)){config._a=map(input.slice(0),function(obj){return parseInt(obj,10)});configFromArray(config)}else if(typeof input==="object"){configFromObject(config)}else if(typeof input==="number"){config._d=new Date(input)}else{utils_hooks__hooks.createFromInputFallback(config)}}function createLocalOrUTC(input,format,locale,strict,isUTC){var c={};if(typeof locale==="boolean"){strict=locale;locale=undefined}c._isAMomentObject=true;c._useUTC=c._isUTC=isUTC;c._l=locale;c._i=input;c._f=format;c._strict=strict;return createFromConfig(c)}function local__createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,false)}var prototypeMin=deprecate("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var other=local__createLocal.apply(null,arguments);return other<this?this:other});var prototypeMax=deprecate("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var other=local__createLocal.apply(null,arguments);return other>this?this:other});function pickBy(fn,moments){var res,i;if(moments.length===1&&isArray(moments[0])){moments=moments[0]}if(!moments.length){return local__createLocal()}res=moments[0];for(i=1;i<moments.length;++i){if(!moments[i].isValid()||moments[i][fn](res)){res=moments[i]}}return res}function min(){var args=[].slice.call(arguments,0);return pickBy("isBefore",args)}function max(){var args=[].slice.call(arguments,0);return pickBy("isAfter",args)}function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._milliseconds=+milliseconds+seconds*1e3+minutes*6e4+hours*36e5;this._days=+days+weeks*7;this._months=+months+quarters*3+years*12;this._data={};this._locale=locale_locales__getLocale();this._bubble()}function isDuration(obj){return obj instanceof Duration}function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset();var sign="+";if(offset<0){offset=-offset;sign="-"}return sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~offset%60,2)})}offset("Z",":");offset("ZZ","");addRegexToken("Z",matchOffset);addRegexToken("ZZ",matchOffset);addParseToken(["Z","ZZ"],function(input,array,config){config._useUTC=true;config._tzm=offsetFromString(input)});var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(string){var matches=(string||"").match(matchOffset)||[];var chunk=matches[matches.length-1]||[];var parts=(chunk+"").match(chunkOffset)||["-",0,0];var minutes=+(parts[1]*60)+toInt(parts[2]);return parts[0]==="+"?minutes:-minutes}function cloneWithOffset(input,model){var res,diff;if(model._isUTC){res=model.clone();diff=(isMoment(input)||isDate(input)?+input:+local__createLocal(input))-+res;res._d.setTime(+res._d+diff);utils_hooks__hooks.updateOffset(res,false);return res}else{return local__createLocal(input).local()}}function getDateOffset(m){return-Math.round(m._d.getTimezoneOffset()/15)*15}utils_hooks__hooks.updateOffset=function(){};function getSetOffset(input,keepLocalTime){var offset=this._offset||0,localAdjust;if(input!=null){if(typeof input==="string"){input=offsetFromString(input)}if(Math.abs(input)<16){input=input*60}if(!this._isUTC&&keepLocalTime){localAdjust=getDateOffset(this)}this._offset=input;this._isUTC=true;if(localAdjust!=null){this.add(localAdjust,"m")}if(offset!==input){if(!keepLocalTime||this._changeInProgress){add_subtract__addSubtract(this,create__createDuration(input-offset,"m"),1,false)}else if(!this._changeInProgress){this._changeInProgress=true;utils_hooks__hooks.updateOffset(this,true);this._changeInProgress=null}}return this}else{return this._isUTC?offset:getDateOffset(this)}}function getSetZone(input,keepLocalTime){if(input!=null){if(typeof input!=="string"){input=-input}this.utcOffset(input,keepLocalTime);return this}else{return-this.utcOffset()}}function setOffsetToUTC(keepLocalTime){return this.utcOffset(0,keepLocalTime)}function setOffsetToLocal(keepLocalTime){if(this._isUTC){this.utcOffset(0,keepLocalTime);this._isUTC=false;if(keepLocalTime){this.subtract(getDateOffset(this),"m")}}return this}function setOffsetToParsedOffset(){if(this._tzm){this.utcOffset(this._tzm)}else if(typeof this._i==="string"){this.utcOffset(offsetFromString(this._i))}return this}function hasAlignedHourOffset(input){input=input?local__createLocal(input).utcOffset():0;return(this.utcOffset()-input)%60===0}function isDaylightSavingTime(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function isDaylightSavingTimeShifted(){if(typeof this._isDSTShifted!=="undefined"){return this._isDSTShifted}var c={};copyConfig(c,this);c=prepareConfig(c);if(c._a){var other=c._isUTC?create_utc__createUTC(c._a):local__createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0}else{this._isDSTShifted=false}return this._isDSTShifted}function isLocal(){return!this._isUTC}function isUtcOffset(){return this._isUTC}function isUtc(){return this._isUTC&&this._offset===0}var aspNetRegex=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/;var create__isoRegex=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;function create__createDuration(input,key){var duration=input,match=null,sign,ret,diffRes;if(isDuration(input)){duration={ms:input._milliseconds,d:input._days,M:input._months}}else if(typeof input==="number"){duration={};if(key){duration[key]=input}else{duration.milliseconds=input}}else if(!!(match=aspNetRegex.exec(input))){sign=match[1]==="-"?-1:1;duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(match[MILLISECOND])*sign}}else if(!!(match=create__isoRegex.exec(input))){sign=match[1]==="-"?-1:1;duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),d:parseIso(match[4],sign),h:parseIso(match[5],sign),m:parseIso(match[6],sign),s:parseIso(match[7],sign),w:parseIso(match[8],sign)}}else if(duration==null){duration={}}else if(typeof duration==="object"&&("from"in duration||"to"in duration)){diffRes=momentsDifference(local__createLocal(duration.from),local__createLocal(duration.to));duration={};duration.ms=diffRes.milliseconds;duration.M=diffRes.months}ret=new Duration(duration);if(isDuration(input)&&hasOwnProp(input,"_locale")){ret._locale=input._locale}return ret}create__createDuration.fn=Duration.prototype;function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(",","."));return(isNaN(res)?0:res)*sign}function positiveMomentsDifference(base,other){var res={milliseconds:0,months:0};res.months=other.month()-base.month()+(other.year()-base.year())*12;if(base.clone().add(res.months,"M").isAfter(other)){--res.months}res.milliseconds=+other-+base.clone().add(res.months,"M");return res}function momentsDifference(base,other){var res;other=cloneWithOffset(other,base);if(base.isBefore(other)){res=positiveMomentsDifference(base,other)}else{res=positiveMomentsDifference(other,base);res.milliseconds=-res.milliseconds;res.months=-res.months}return res}function createAdder(direction,name){return function(val,period){var dur,tmp;if(period!==null&&!isNaN(+period)){deprecateSimple(name,"moment()."+name+"(period, number) is deprecated. Please use moment()."+name+"(number, period).");
tmp=val;val=period;period=tmp}val=typeof val==="string"?+val:val;dur=create__createDuration(val,period);add_subtract__addSubtract(this,dur,direction);return this}}function add_subtract__addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=duration._days,months=duration._months;updateOffset=updateOffset==null?true:updateOffset;if(milliseconds){mom._d.setTime(+mom._d+milliseconds*isAdding)}if(days){get_set__set(mom,"Date",get_set__get(mom,"Date")+days*isAdding)}if(months){setMonth(mom,get_set__get(mom,"Month")+months*isAdding)}if(updateOffset){utils_hooks__hooks.updateOffset(mom,days||months)}}var add_subtract__add=createAdder(1,"add");var add_subtract__subtract=createAdder(-1,"subtract");function moment_calendar__calendar(time,formats){var now=time||local__createLocal(),sod=cloneWithOffset(now,this).startOf("day"),diff=this.diff(sod,"days",true),format=diff<-6?"sameElse":diff<-1?"lastWeek":diff<0?"lastDay":diff<1?"sameDay":diff<2?"nextDay":diff<7?"nextWeek":"sameElse";return this.format(formats&&formats[format]||this.localeData().calendar(format,this,local__createLocal(now)))}function clone(){return new Moment(this)}function isAfter(input,units){var inputMs;units=normalizeUnits(typeof units!=="undefined"?units:"millisecond");if(units==="millisecond"){input=isMoment(input)?input:local__createLocal(input);return+this>+input}else{inputMs=isMoment(input)?+input:+local__createLocal(input);return inputMs<+this.clone().startOf(units)}}function isBefore(input,units){var inputMs;units=normalizeUnits(typeof units!=="undefined"?units:"millisecond");if(units==="millisecond"){input=isMoment(input)?input:local__createLocal(input);return+this<+input}else{inputMs=isMoment(input)?+input:+local__createLocal(input);return+this.clone().endOf(units)<inputMs}}function isBetween(from,to,units){return this.isAfter(from,units)&&this.isBefore(to,units)}function isSame(input,units){var inputMs;units=normalizeUnits(units||"millisecond");if(units==="millisecond"){input=isMoment(input)?input:local__createLocal(input);return+this===+input}else{inputMs=+local__createLocal(input);return+this.clone().startOf(units)<=inputMs&&inputMs<=+this.clone().endOf(units)}}function diff(input,units,asFloat){var that=cloneWithOffset(input,this),zoneDelta=(that.utcOffset()-this.utcOffset())*6e4,delta,output;units=normalizeUnits(units);if(units==="year"||units==="month"||units==="quarter"){output=monthDiff(this,that);if(units==="quarter"){output=output/3}else if(units==="year"){output=output/12}}else{delta=this-that;output=units==="second"?delta/1e3:units==="minute"?delta/6e4:units==="hour"?delta/36e5:units==="day"?(delta-zoneDelta)/864e5:units==="week"?(delta-zoneDelta)/6048e5:delta}return asFloat?output:absFloor(output)}function monthDiff(a,b){var wholeMonthDiff=(b.year()-a.year())*12+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,"months"),anchor2,adjust;if(b-anchor<0){anchor2=a.clone().add(wholeMonthDiff-1,"months");adjust=(b-anchor)/(anchor-anchor2)}else{anchor2=a.clone().add(wholeMonthDiff+1,"months");adjust=(b-anchor)/(anchor2-anchor)}return-(wholeMonthDiff+adjust)}utils_hooks__hooks.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";function toString(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function moment_format__toISOString(){var m=this.clone().utc();if(0<m.year()&&m.year()<=9999){if("function"===typeof Date.prototype.toISOString){return this.toDate().toISOString()}else{return formatMoment(m,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}}else{return formatMoment(m,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}}function format(inputString){var output=formatMoment(this,inputString||utils_hooks__hooks.defaultFormat);return this.localeData().postformat(output)}function from(time,withoutSuffix){if(!this.isValid()){return this.localeData().invalidDate()}return create__createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix)}function fromNow(withoutSuffix){return this.from(local__createLocal(),withoutSuffix)}function to(time,withoutSuffix){if(!this.isValid()){return this.localeData().invalidDate()}return create__createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix)}function toNow(withoutSuffix){return this.to(local__createLocal(),withoutSuffix)}function locale(key){var newLocaleData;if(key===undefined){return this._locale._abbr}else{newLocaleData=locale_locales__getLocale(key);if(newLocaleData!=null){this._locale=newLocaleData}return this}}var lang=deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(key){if(key===undefined){return this.localeData()}else{return this.locale(key)}});function localeData(){return this._locale}function startOf(units){units=normalizeUnits(units);switch(units){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}if(units==="week"){this.weekday(0)}if(units==="isoWeek"){this.isoWeekday(1)}if(units==="quarter"){this.month(Math.floor(this.month()/3)*3)}return this}function endOf(units){units=normalizeUnits(units);if(units===undefined||units==="millisecond"){return this}return this.startOf(units).add(1,units==="isoWeek"?"week":units).subtract(1,"ms")}function to_type__valueOf(){return+this._d-(this._offset||0)*6e4}function unix(){return Math.floor(+this/1e3)}function toDate(){return this._offset?new Date(+this):this._d}function toArray(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()]}function toObject(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()}}function moment_valid__isValid(){return valid__isValid(this)}function parsingFlags(){return extend({},getParsingFlags(this))}function invalidAt(){return getParsingFlags(this).overflow}addFormatToken(0,["gg",2],0,function(){return this.weekYear()%100});addFormatToken(0,["GG",2],0,function(){return this.isoWeekYear()%100});function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter)}addWeekYearFormatToken("gggg","weekYear");addWeekYearFormatToken("ggggg","weekYear");addWeekYearFormatToken("GGGG","isoWeekYear");addWeekYearFormatToken("GGGGG","isoWeekYear");addUnitAlias("weekYear","gg");addUnitAlias("isoWeekYear","GG");addRegexToken("G",matchSigned);addRegexToken("g",matchSigned);addRegexToken("GG",match1to2,match2);addRegexToken("gg",match1to2,match2);addRegexToken("GGGG",match1to4,match4);addRegexToken("gggg",match1to4,match4);addRegexToken("GGGGG",match1to6,match6);addRegexToken("ggggg",match1to6,match6);addWeekParseToken(["gggg","ggggg","GGGG","GGGGG"],function(input,week,config,token){week[token.substr(0,2)]=toInt(input)});addWeekParseToken(["gg","GG"],function(input,week,config,token){week[token]=utils_hooks__hooks.parseTwoDigitYear(input)});function weeksInYear(year,dow,doy){return weekOfYear(local__createLocal([year,11,31+dow-doy]),dow,doy).week}function getSetWeekYear(input){var year=weekOfYear(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return input==null?year:this.add(input-year,"y")}function getSetISOWeekYear(input){var year=weekOfYear(this,1,4).year;return input==null?year:this.add(input-year,"y")}function getISOWeeksInYear(){return weeksInYear(this.year(),1,4)}function getWeeksInYear(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)}addFormatToken("Q",0,0,"quarter");addUnitAlias("quarter","Q");addRegexToken("Q",match1);addParseToken("Q",function(input,array){array[MONTH]=(toInt(input)-1)*3});function getSetQuarter(input){return input==null?Math.ceil((this.month()+1)/3):this.month((input-1)*3+this.month()%3)}addFormatToken("D",["DD",2],"Do","date");addUnitAlias("date","D");addRegexToken("D",match1to2);addRegexToken("DD",match1to2,match2);addRegexToken("Do",function(isStrict,locale){return isStrict?locale._ordinalParse:locale._ordinalParseLenient});addParseToken(["D","DD"],DATE);addParseToken("Do",function(input,array){array[DATE]=toInt(input.match(match1to2)[0],10)});var getSetDayOfMonth=makeGetSet("Date",true);addFormatToken("d",0,"do","day");addFormatToken("dd",0,0,function(format){return this.localeData().weekdaysMin(this,format)});addFormatToken("ddd",0,0,function(format){return this.localeData().weekdaysShort(this,format)});addFormatToken("dddd",0,0,function(format){return this.localeData().weekdays(this,format)});addFormatToken("e",0,0,"weekday");addFormatToken("E",0,0,"isoWeekday");addUnitAlias("day","d");addUnitAlias("weekday","e");addUnitAlias("isoWeekday","E");addRegexToken("d",match1to2);addRegexToken("e",match1to2);addRegexToken("E",match1to2);addRegexToken("dd",matchWord);addRegexToken("ddd",matchWord);addRegexToken("dddd",matchWord);addWeekParseToken(["dd","ddd","dddd"],function(input,week,config){var weekday=config._locale.weekdaysParse(input);if(weekday!=null){week.d=weekday}else{getParsingFlags(config).invalidWeekday=input}});addWeekParseToken(["d","e","E"],function(input,week,config,token){week[token]=toInt(input)});function parseWeekday(input,locale){if(typeof input!=="string"){return input}if(!isNaN(input)){return parseInt(input,10)}input=locale.weekdaysParse(input);if(typeof input==="number"){return input}return null}var defaultLocaleWeekdays="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");function localeWeekdays(m){return this._weekdays[m.day()]}var defaultLocaleWeekdaysShort="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");function localeWeekdaysShort(m){return this._weekdaysShort[m.day()]}var defaultLocaleWeekdaysMin="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function localeWeekdaysMin(m){return this._weekdaysMin[m.day()]}function localeWeekdaysParse(weekdayName){var i,mom,regex;this._weekdaysParse=this._weekdaysParse||[];for(i=0;i<7;i++){if(!this._weekdaysParse[i]){mom=local__createLocal([2e3,1]).day(i);regex="^"+this.weekdays(mom,"")+"|^"+this.weekdaysShort(mom,"")+"|^"+this.weekdaysMin(mom,"");this._weekdaysParse[i]=new RegExp(regex.replace(".",""),"i")}if(this._weekdaysParse[i].test(weekdayName)){return i}}}function getSetDayOfWeek(input){var day=this._isUTC?this._d.getUTCDay():this._d.getDay();if(input!=null){input=parseWeekday(input,this.localeData());return this.add(input-day,"d")}else{return day}}function getSetLocaleDayOfWeek(input){var weekday=(this.day()+7-this.localeData()._week.dow)%7;return input==null?weekday:this.add(input-weekday,"d")}function getSetISODayOfWeek(input){return input==null?this.day()||7:this.day(this.day()%7?input:input-7)}addFormatToken("H",["HH",2],0,"hour");addFormatToken("h",["hh",2],0,function(){return this.hours()%12||12});function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase)})}meridiem("a",true);meridiem("A",false);addUnitAlias("hour","h");function matchMeridiem(isStrict,locale){return locale._meridiemParse}addRegexToken("a",matchMeridiem);addRegexToken("A",matchMeridiem);addRegexToken("H",match1to2);addRegexToken("h",match1to2);addRegexToken("HH",match1to2,match2);addRegexToken("hh",match1to2,match2);addParseToken(["H","HH"],HOUR);addParseToken(["a","A"],function(input,array,config){config._isPm=config._locale.isPM(input);config._meridiem=input});addParseToken(["h","hh"],function(input,array,config){array[HOUR]=toInt(input);getParsingFlags(config).bigHour=true});function localeIsPM(input){return(input+"").toLowerCase().charAt(0)==="p"}var defaultLocaleMeridiemParse=/[ap]\.?m?\.?/i;function localeMeridiem(hours,minutes,isLower){if(hours>11){return isLower?"pm":"PM"}else{return isLower?"am":"AM"}}var getSetHour=makeGetSet("Hours",true);addFormatToken("m",["mm",2],0,"minute");addUnitAlias("minute","m");addRegexToken("m",match1to2);addRegexToken("mm",match1to2,match2);addParseToken(["m","mm"],MINUTE);var getSetMinute=makeGetSet("Minutes",false);addFormatToken("s",["ss",2],0,"second");addUnitAlias("second","s");addRegexToken("s",match1to2);addRegexToken("ss",match1to2,match2);addParseToken(["s","ss"],SECOND);var getSetSecond=makeGetSet("Seconds",false);addFormatToken("S",0,0,function(){return~~(this.millisecond()/100)});addFormatToken(0,["SS",2],0,function(){return~~(this.millisecond()/10)});addFormatToken(0,["SSS",3],0,"millisecond");addFormatToken(0,["SSSS",4],0,function(){return this.millisecond()*10});addFormatToken(0,["SSSSS",5],0,function(){return this.millisecond()*100});addFormatToken(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});addFormatToken(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});addFormatToken(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});addFormatToken(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});addUnitAlias("millisecond","ms");addRegexToken("S",match1to3,match1);addRegexToken("SS",match1to3,match2);addRegexToken("SSS",match1to3,match3);var token;for(token="SSSS";token.length<=9;token+="S"){addRegexToken(token,matchUnsigned)}function parseMs(input,array){array[MILLISECOND]=toInt(("0."+input)*1e3)}for(token="S";token.length<=9;token+="S"){addParseToken(token,parseMs)}var getSetMillisecond=makeGetSet("Milliseconds",false);addFormatToken("z",0,0,"zoneAbbr");addFormatToken("zz",0,0,"zoneName");function getZoneAbbr(){return this._isUTC?"UTC":""}function getZoneName(){return this._isUTC?"Coordinated Universal Time":""}var momentPrototype__proto=Moment.prototype;momentPrototype__proto.add=add_subtract__add;momentPrototype__proto.calendar=moment_calendar__calendar;momentPrototype__proto.clone=clone;momentPrototype__proto.diff=diff;momentPrototype__proto.endOf=endOf;momentPrototype__proto.format=format;momentPrototype__proto.from=from;momentPrototype__proto.fromNow=fromNow;momentPrototype__proto.to=to;momentPrototype__proto.toNow=toNow;momentPrototype__proto.get=getSet;momentPrototype__proto.invalidAt=invalidAt;momentPrototype__proto.isAfter=isAfter;momentPrototype__proto.isBefore=isBefore;momentPrototype__proto.isBetween=isBetween;momentPrototype__proto.isSame=isSame;momentPrototype__proto.isValid=moment_valid__isValid;momentPrototype__proto.lang=lang;momentPrototype__proto.locale=locale;momentPrototype__proto.localeData=localeData;momentPrototype__proto.max=prototypeMax;momentPrototype__proto.min=prototypeMin;momentPrototype__proto.parsingFlags=parsingFlags;momentPrototype__proto.set=getSet;momentPrototype__proto.startOf=startOf;momentPrototype__proto.subtract=add_subtract__subtract;momentPrototype__proto.toArray=toArray;momentPrototype__proto.toObject=toObject;momentPrototype__proto.toDate=toDate;momentPrototype__proto.toISOString=moment_format__toISOString;momentPrototype__proto.toJSON=moment_format__toISOString;momentPrototype__proto.toString=toString;momentPrototype__proto.unix=unix;momentPrototype__proto.valueOf=to_type__valueOf;momentPrototype__proto.year=getSetYear;momentPrototype__proto.isLeapYear=getIsLeapYear;momentPrototype__proto.weekYear=getSetWeekYear;momentPrototype__proto.isoWeekYear=getSetISOWeekYear;momentPrototype__proto.quarter=momentPrototype__proto.quarters=getSetQuarter;momentPrototype__proto.month=getSetMonth;momentPrototype__proto.daysInMonth=getDaysInMonth;momentPrototype__proto.week=momentPrototype__proto.weeks=getSetWeek;momentPrototype__proto.isoWeek=momentPrototype__proto.isoWeeks=getSetISOWeek;momentPrototype__proto.weeksInYear=getWeeksInYear;momentPrototype__proto.isoWeeksInYear=getISOWeeksInYear;momentPrototype__proto.date=getSetDayOfMonth;momentPrototype__proto.day=momentPrototype__proto.days=getSetDayOfWeek;momentPrototype__proto.weekday=getSetLocaleDayOfWeek;momentPrototype__proto.isoWeekday=getSetISODayOfWeek;momentPrototype__proto.dayOfYear=getSetDayOfYear;momentPrototype__proto.hour=momentPrototype__proto.hours=getSetHour;momentPrototype__proto.minute=momentPrototype__proto.minutes=getSetMinute;momentPrototype__proto.second=momentPrototype__proto.seconds=getSetSecond;momentPrototype__proto.millisecond=momentPrototype__proto.milliseconds=getSetMillisecond;momentPrototype__proto.utcOffset=getSetOffset;momentPrototype__proto.utc=setOffsetToUTC;momentPrototype__proto.local=setOffsetToLocal;momentPrototype__proto.parseZone=setOffsetToParsedOffset;momentPrototype__proto.hasAlignedHourOffset=hasAlignedHourOffset;momentPrototype__proto.isDST=isDaylightSavingTime;momentPrototype__proto.isDSTShifted=isDaylightSavingTimeShifted;momentPrototype__proto.isLocal=isLocal;momentPrototype__proto.isUtcOffset=isUtcOffset;momentPrototype__proto.isUtc=isUtc;momentPrototype__proto.isUTC=isUtc;momentPrototype__proto.zoneAbbr=getZoneAbbr;momentPrototype__proto.zoneName=getZoneName;momentPrototype__proto.dates=deprecate("dates accessor is deprecated. Use date instead.",getSetDayOfMonth);momentPrototype__proto.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth);momentPrototype__proto.years=deprecate("years accessor is deprecated. Use year instead",getSetYear);momentPrototype__proto.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",getSetZone);var momentPrototype=momentPrototype__proto;function moment__createUnix(input){return local__createLocal(input*1e3)}function moment__createInZone(){return local__createLocal.apply(null,arguments).parseZone()}var defaultCalendar={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function locale_calendar__calendar(key,mom,now){var output=this._calendar[key];return typeof output==="function"?output.call(mom,now):output}var defaultLongDateFormat={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function longDateFormat(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];if(format||!formatUpper){return format}this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)});return this._longDateFormat[key]}var defaultInvalidDate="Invalid date";function invalidDate(){return this._invalidDate}var defaultOrdinal="%d";var defaultOrdinalParse=/\d{1,2}/;function ordinal(number){return this._ordinal.replace("%d",number)}function preParsePostFormat(string){return string}var defaultRelativeTime={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function relative__relativeTime(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return typeof output==="function"?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)}function pastFuture(diff,output){var format=this._relativeTime[diff>0?"future":"past"];return typeof format==="function"?format(output):format.replace(/%s/i,output)}function locale_set__set(config){var prop,i;for(i in config){prop=config[i];if(typeof prop==="function"){this[i]=prop}else{this["_"+i]=prop}}this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}var prototype__proto=Locale.prototype;prototype__proto._calendar=defaultCalendar;prototype__proto.calendar=locale_calendar__calendar;prototype__proto._longDateFormat=defaultLongDateFormat;prototype__proto.longDateFormat=longDateFormat;prototype__proto._invalidDate=defaultInvalidDate;prototype__proto.invalidDate=invalidDate;prototype__proto._ordinal=defaultOrdinal;prototype__proto.ordinal=ordinal;prototype__proto._ordinalParse=defaultOrdinalParse;prototype__proto.preparse=preParsePostFormat;prototype__proto.postformat=preParsePostFormat;prototype__proto._relativeTime=defaultRelativeTime;prototype__proto.relativeTime=relative__relativeTime;prototype__proto.pastFuture=pastFuture;prototype__proto.set=locale_set__set;prototype__proto.months=localeMonths;prototype__proto._months=defaultLocaleMonths;prototype__proto.monthsShort=localeMonthsShort;prototype__proto._monthsShort=defaultLocaleMonthsShort;prototype__proto.monthsParse=localeMonthsParse;prototype__proto.week=localeWeek;prototype__proto._week=defaultLocaleWeek;prototype__proto.firstDayOfYear=localeFirstDayOfYear;prototype__proto.firstDayOfWeek=localeFirstDayOfWeek;prototype__proto.weekdays=localeWeekdays;prototype__proto._weekdays=defaultLocaleWeekdays;prototype__proto.weekdaysMin=localeWeekdaysMin;prototype__proto._weekdaysMin=defaultLocaleWeekdaysMin;prototype__proto.weekdaysShort=localeWeekdaysShort;prototype__proto._weekdaysShort=defaultLocaleWeekdaysShort;prototype__proto.weekdaysParse=localeWeekdaysParse;prototype__proto.isPM=localeIsPM;prototype__proto._meridiemParse=defaultLocaleMeridiemParse;prototype__proto.meridiem=localeMeridiem;function lists__get(format,index,field,setter){var locale=locale_locales__getLocale();var utc=create_utc__createUTC().set(setter,index);return locale[field](utc,format)}function list(format,index,field,count,setter){if(typeof format==="number"){index=format;format=undefined}format=format||"";if(index!=null){return lists__get(format,index,field,setter)}var i;var out=[];for(i=0;i<count;i++){out[i]=lists__get(format,i,field,setter)}return out}function lists__listMonths(format,index){return list(format,index,"months",12,"month")}function lists__listMonthsShort(format,index){return list(format,index,"monthsShort",12,"month")}function lists__listWeekdays(format,index){return list(format,index,"weekdays",7,"day")}function lists__listWeekdaysShort(format,index){return list(format,index,"weekdaysShort",7,"day")}function lists__listWeekdaysMin(format,index){return list(format,index,"weekdaysMin",7,"day")}locale_locales__getSetGlobalLocale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10,output=toInt(number%100/10)===1?"th":b===1?"st":b===2?"nd":b===3?"rd":"th";return number+output}});utils_hooks__hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",locale_locales__getSetGlobalLocale);utils_hooks__hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",locale_locales__getLocale);var mathAbs=Math.abs;function duration_abs__abs(){var data=this._data;this._milliseconds=mathAbs(this._milliseconds);this._days=mathAbs(this._days);this._months=mathAbs(this._months);data.milliseconds=mathAbs(data.milliseconds);data.seconds=mathAbs(data.seconds);data.minutes=mathAbs(data.minutes);data.hours=mathAbs(data.hours);data.months=mathAbs(data.months);data.years=mathAbs(data.years);return this}function duration_add_subtract__addSubtract(duration,input,value,direction){var other=create__createDuration(input,value);duration._milliseconds+=direction*other._milliseconds;duration._days+=direction*other._days;duration._months+=direction*other._months;return duration._bubble()}function duration_add_subtract__add(input,value){return duration_add_subtract__addSubtract(this,input,value,1)}function duration_add_subtract__subtract(input,value){return duration_add_subtract__addSubtract(this,input,value,-1)}function absCeil(number){if(number<0){return Math.floor(number)}else{return Math.ceil(number)}}function bubble(){var milliseconds=this._milliseconds;var days=this._days;var months=this._months;var data=this._data;var seconds,minutes,hours,years,monthsFromDays;if(!(milliseconds>=0&&days>=0&&months>=0||milliseconds<=0&&days<=0&&months<=0)){milliseconds+=absCeil(monthsToDays(months)+days)*864e5;days=0;months=0}data.milliseconds=milliseconds%1e3;seconds=absFloor(milliseconds/1e3);data.seconds=seconds%60;minutes=absFloor(seconds/60);data.minutes=minutes%60;hours=absFloor(minutes/60);data.hours=hours%24;days+=absFloor(hours/24);monthsFromDays=absFloor(daysToMonths(days));months+=monthsFromDays;days-=absCeil(monthsToDays(monthsFromDays));years=absFloor(months/12);months%=12;data.days=days;data.months=months;data.years=years;return this}function daysToMonths(days){return days*4800/146097}function monthsToDays(months){return months*146097/4800}function as(units){var days;var months;var milliseconds=this._milliseconds;units=normalizeUnits(units);if(units==="month"||units==="year"){days=this._days+milliseconds/864e5;months=this._months+daysToMonths(days);return units==="month"?months:months/12}else{days=this._days+Math.round(monthsToDays(this._months));switch(units){case"week":return days/7+milliseconds/6048e5;case"day":return days+milliseconds/864e5;case"hour":return days*24+milliseconds/36e5;case"minute":return days*1440+milliseconds/6e4;case"second":return days*86400+milliseconds/1e3;case"millisecond":return Math.floor(days*864e5)+milliseconds;default:throw new Error("Unknown unit "+units)}}}function duration_as__valueOf(){return this._milliseconds+this._days*864e5+this._months%12*2592e6+toInt(this._months/12)*31536e6}function makeAs(alias){return function(){return this.as(alias)}}var asMilliseconds=makeAs("ms");var asSeconds=makeAs("s");var asMinutes=makeAs("m");var asHours=makeAs("h");var asDays=makeAs("d");var asWeeks=makeAs("w");var asMonths=makeAs("M");var asYears=makeAs("y");function duration_get__get(units){units=normalizeUnits(units);return this[units+"s"]()}function makeGetter(name){return function(){return this._data[name]}}var milliseconds=makeGetter("milliseconds");var seconds=makeGetter("seconds");var minutes=makeGetter("minutes");var hours=makeGetter("hours");var days=makeGetter("days");var months=makeGetter("months");var years=makeGetter("years");function weeks(){return absFloor(this.days()/7)}var round=Math.round;var thresholds={s:45,m:45,h:22,d:26,M:11};function substituteTimeAgo(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture)}function duration_humanize__relativeTime(posNegDuration,withoutSuffix,locale){var duration=create__createDuration(posNegDuration).abs();var seconds=round(duration.as("s"));var minutes=round(duration.as("m"));var hours=round(duration.as("h"));var days=round(duration.as("d"));var months=round(duration.as("M"));var years=round(duration.as("y"));var a=seconds<thresholds.s&&["s",seconds]||minutes===1&&["m"]||minutes<thresholds.m&&["mm",minutes]||hours===1&&["h"]||hours<thresholds.h&&["hh",hours]||days===1&&["d"]||days<thresholds.d&&["dd",days]||months===1&&["M"]||months<thresholds.M&&["MM",months]||years===1&&["y"]||["yy",years];a[2]=withoutSuffix;a[3]=+posNegDuration>0;a[4]=locale;return substituteTimeAgo.apply(null,a)}function duration_humanize__getSetRelativeTimeThreshold(threshold,limit){if(thresholds[threshold]===undefined){return false}if(limit===undefined){return thresholds[threshold]}thresholds[threshold]=limit;return true}function humanize(withSuffix){var locale=this.localeData();var output=duration_humanize__relativeTime(this,!withSuffix,locale);if(withSuffix){output=locale.pastFuture(+this,output)}return locale.postformat(output)}var iso_string__abs=Math.abs;function iso_string__toISOString(){var seconds=iso_string__abs(this._milliseconds)/1e3;var days=iso_string__abs(this._days);var months=iso_string__abs(this._months);var minutes,hours,years;minutes=absFloor(seconds/60);hours=absFloor(minutes/60);seconds%=60;minutes%=60;years=absFloor(months/12);months%=12;var Y=years;var M=months;var D=days;var h=hours;var m=minutes;var s=seconds;var total=this.asSeconds();if(!total){return"P0D"}return(total<0?"-":"")+"P"+(Y?Y+"Y":"")+(M?M+"M":"")+(D?D+"D":"")+(h||m||s?"T":"")+(h?h+"H":"")+(m?m+"M":"")+(s?s+"S":"")}var duration_prototype__proto=Duration.prototype;duration_prototype__proto.abs=duration_abs__abs;duration_prototype__proto.add=duration_add_subtract__add;duration_prototype__proto.subtract=duration_add_subtract__subtract;duration_prototype__proto.as=as;duration_prototype__proto.asMilliseconds=asMilliseconds;duration_prototype__proto.asSeconds=asSeconds;duration_prototype__proto.asMinutes=asMinutes;duration_prototype__proto.asHours=asHours;duration_prototype__proto.asDays=asDays;duration_prototype__proto.asWeeks=asWeeks;duration_prototype__proto.asMonths=asMonths;duration_prototype__proto.asYears=asYears;duration_prototype__proto.valueOf=duration_as__valueOf;duration_prototype__proto._bubble=bubble;duration_prototype__proto.get=duration_get__get;duration_prototype__proto.milliseconds=milliseconds;duration_prototype__proto.seconds=seconds;duration_prototype__proto.minutes=minutes;duration_prototype__proto.hours=hours;duration_prototype__proto.days=days;duration_prototype__proto.weeks=weeks;duration_prototype__proto.months=months;duration_prototype__proto.years=years;duration_prototype__proto.humanize=humanize;duration_prototype__proto.toISOString=iso_string__toISOString;duration_prototype__proto.toString=iso_string__toISOString;duration_prototype__proto.toJSON=iso_string__toISOString;duration_prototype__proto.locale=locale;duration_prototype__proto.localeData=localeData;duration_prototype__proto.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",iso_string__toISOString);duration_prototype__proto.lang=lang;addFormatToken("X",0,0,"unix");addFormatToken("x",0,0,"valueOf");addRegexToken("x",matchSigned);addRegexToken("X",matchTimestamp);addParseToken("X",function(input,array,config){config._d=new Date(parseFloat(input,10)*1e3)});addParseToken("x",function(input,array,config){config._d=new Date(toInt(input))});utils_hooks__hooks.version="2.10.6";setHookCallback(local__createLocal);utils_hooks__hooks.fn=momentPrototype;utils_hooks__hooks.min=min;utils_hooks__hooks.max=max;utils_hooks__hooks.utc=create_utc__createUTC;utils_hooks__hooks.unix=moment__createUnix;utils_hooks__hooks.months=lists__listMonths;utils_hooks__hooks.isDate=isDate;utils_hooks__hooks.locale=locale_locales__getSetGlobalLocale;utils_hooks__hooks.invalid=valid__createInvalid;utils_hooks__hooks.duration=create__createDuration;utils_hooks__hooks.isMoment=isMoment;utils_hooks__hooks.weekdays=lists__listWeekdays;utils_hooks__hooks.parseZone=moment__createInZone;utils_hooks__hooks.localeData=locale_locales__getLocale;utils_hooks__hooks.isDuration=isDuration;utils_hooks__hooks.monthsShort=lists__listMonthsShort;utils_hooks__hooks.weekdaysMin=lists__listWeekdaysMin;utils_hooks__hooks.defineLocale=defineLocale;utils_hooks__hooks.weekdaysShort=lists__listWeekdaysShort;utils_hooks__hooks.normalizeUnits=normalizeUnits;utils_hooks__hooks.relativeTimeThreshold=duration_humanize__getSetRelativeTimeThreshold;var _moment=utils_hooks__hooks;return _moment})},{}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({"chart.js":[function(require,module,exports){(function(){"use strict";var root=this,previous=root.Chart;var Chart=function(context){var chart=this;this.canvas=context.canvas;this.ctx=context;var computeDimension=function(element,dimension){if(element["offset"+dimension]){return element["offset"+dimension]}else{return document.defaultView.getComputedStyle(element).getPropertyValue(dimension)}};var width=this.width=computeDimension(context.canvas,"Width");var height=this.height=computeDimension(context.canvas,"Height");context.canvas.width=width;context.canvas.height=height;var width=this.width=context.canvas.width;var height=this.height=context.canvas.height;this.aspectRatio=this.width/this.height;helpers.retinaScale(this);return this};Chart.defaults={global:{animation:true,animationSteps:60,animationEasing:"easeOutQuart",showScale:true,scaleOverride:false,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",
scaleLineWidth:1,scaleShowLabels:true,scaleLabel:"<%=value%>",scaleIntegersOnly:true,scaleBeginAtZero:false,scaleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",responsive:false,maintainAspectRatio:true,showTooltips:true,customTooltips:false,tooltipEvents:["mousemove","touchstart","touchmove","mouseout"],tooltipFillColor:"rgba(0,0,0,0.8)",tooltipFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipFontSize:14,tooltipFontStyle:"normal",tooltipFontColor:"#fff",tooltipTitleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipTitleFontSize:14,tooltipTitleFontStyle:"bold",tooltipTitleFontColor:"#fff",tooltipYPadding:6,tooltipXPadding:6,tooltipCaretSize:8,tooltipCornerRadius:6,tooltipXOffset:10,tooltipTemplate:"<%if (label){%><%=label%>: <%}%><%= value %>",multiTooltipTemplate:"<%= value %>",multiTooltipKeyBackground:"#fff",onAnimationProgress:function(){},onAnimationComplete:function(){}}};Chart.types={};var helpers=Chart.helpers={};var each=helpers.each=function(loopable,callback,self){var additionalArgs=Array.prototype.slice.call(arguments,3);if(loopable){if(loopable.length===+loopable.length){var i;for(i=0;i<loopable.length;i++){callback.apply(self,[loopable[i],i].concat(additionalArgs))}}else{for(var item in loopable){callback.apply(self,[loopable[item],item].concat(additionalArgs))}}}},clone=helpers.clone=function(obj){var objClone={};each(obj,function(value,key){if(obj.hasOwnProperty(key))objClone[key]=value});return objClone},extend=helpers.extend=function(base){each(Array.prototype.slice.call(arguments,1),function(extensionObject){each(extensionObject,function(value,key){if(extensionObject.hasOwnProperty(key))base[key]=value})});return base},merge=helpers.merge=function(base,master){var args=Array.prototype.slice.call(arguments,0);args.unshift({});return extend.apply(null,args)},indexOf=helpers.indexOf=function(arrayToSearch,item){if(Array.prototype.indexOf){return arrayToSearch.indexOf(item)}else{for(var i=0;i<arrayToSearch.length;i++){if(arrayToSearch[i]===item)return i}return-1}},where=helpers.where=function(collection,filterCallback){var filtered=[];helpers.each(collection,function(item){if(filterCallback(item)){filtered.push(item)}});return filtered},findNextWhere=helpers.findNextWhere=function(arrayToSearch,filterCallback,startIndex){if(!startIndex){startIndex=-1}for(var i=startIndex+1;i<arrayToSearch.length;i++){var currentItem=arrayToSearch[i];if(filterCallback(currentItem)){return currentItem}}},findPreviousWhere=helpers.findPreviousWhere=function(arrayToSearch,filterCallback,startIndex){if(!startIndex){startIndex=arrayToSearch.length}for(var i=startIndex-1;i>=0;i--){var currentItem=arrayToSearch[i];if(filterCallback(currentItem)){return currentItem}}},inherits=helpers.inherits=function(extensions){var parent=this;var ChartElement=extensions&&extensions.hasOwnProperty("constructor")?extensions.constructor:function(){return parent.apply(this,arguments)};var Surrogate=function(){this.constructor=ChartElement};Surrogate.prototype=parent.prototype;ChartElement.prototype=new Surrogate;ChartElement.extend=inherits;if(extensions)extend(ChartElement.prototype,extensions);ChartElement.__super__=parent.prototype;return ChartElement},noop=helpers.noop=function(){},uid=helpers.uid=function(){var id=0;return function(){return"chart-"+id++}}(),warn=helpers.warn=function(str){if(window.console&&typeof window.console.warn=="function")console.warn(str)},amd=helpers.amd=typeof define=="function"&&define.amd,isNumber=helpers.isNumber=function(n){return!isNaN(parseFloat(n))&&isFinite(n)},max=helpers.max=function(array){return Math.max.apply(Math,array)},min=helpers.min=function(array){return Math.min.apply(Math,array)},cap=helpers.cap=function(valueToCap,maxValue,minValue){if(isNumber(maxValue)){if(valueToCap>maxValue){return maxValue}}else if(isNumber(minValue)){if(valueToCap<minValue){return minValue}}return valueToCap},getDecimalPlaces=helpers.getDecimalPlaces=function(num){if(num%1!==0&&isNumber(num)){return num.toString().split(".")[1].length}else{return 0}},toRadians=helpers.radians=function(degrees){return degrees*(Math.PI/180)},getAngleFromPoint=helpers.getAngleFromPoint=function(centrePoint,anglePoint){var distanceFromXCenter=anglePoint.x-centrePoint.x,distanceFromYCenter=anglePoint.y-centrePoint.y,radialDistanceFromCenter=Math.sqrt(distanceFromXCenter*distanceFromXCenter+distanceFromYCenter*distanceFromYCenter);var angle=Math.PI*2+Math.atan2(distanceFromYCenter,distanceFromXCenter);if(distanceFromXCenter<0&&distanceFromYCenter<0){angle+=Math.PI*2}return{angle:angle,distance:radialDistanceFromCenter}},aliasPixel=helpers.aliasPixel=function(pixelWidth){return pixelWidth%2===0?0:.5},splineCurve=helpers.splineCurve=function(FirstPoint,MiddlePoint,AfterPoint,t){var d01=Math.sqrt(Math.pow(MiddlePoint.x-FirstPoint.x,2)+Math.pow(MiddlePoint.y-FirstPoint.y,2)),d12=Math.sqrt(Math.pow(AfterPoint.x-MiddlePoint.x,2)+Math.pow(AfterPoint.y-MiddlePoint.y,2)),fa=t*d01/(d01+d12),fb=t*d12/(d01+d12);return{inner:{x:MiddlePoint.x-fa*(AfterPoint.x-FirstPoint.x),y:MiddlePoint.y-fa*(AfterPoint.y-FirstPoint.y)},outer:{x:MiddlePoint.x+fb*(AfterPoint.x-FirstPoint.x),y:MiddlePoint.y+fb*(AfterPoint.y-FirstPoint.y)}}},calculateOrderOfMagnitude=helpers.calculateOrderOfMagnitude=function(val){return Math.floor(Math.log(val)/Math.LN10)},calculateScaleRange=helpers.calculateScaleRange=function(valuesArray,drawingSize,textSize,startFromZero,integersOnly){var minSteps=2,maxSteps=Math.floor(drawingSize/(textSize*1.5)),skipFitting=minSteps>=maxSteps;var maxValue=max(valuesArray),minValue=min(valuesArray);if(maxValue===minValue){maxValue+=.5;if(minValue>=.5&&!startFromZero){minValue-=.5}else{maxValue+=.5}}var valueRange=Math.abs(maxValue-minValue),rangeOrderOfMagnitude=calculateOrderOfMagnitude(valueRange),graphMax=Math.ceil(maxValue/(1*Math.pow(10,rangeOrderOfMagnitude)))*Math.pow(10,rangeOrderOfMagnitude),graphMin=startFromZero?0:Math.floor(minValue/(1*Math.pow(10,rangeOrderOfMagnitude)))*Math.pow(10,rangeOrderOfMagnitude),graphRange=graphMax-graphMin,stepValue=Math.pow(10,rangeOrderOfMagnitude),numberOfSteps=Math.round(graphRange/stepValue);while((numberOfSteps>maxSteps||numberOfSteps*2<maxSteps)&&!skipFitting){if(numberOfSteps>maxSteps){stepValue*=2;numberOfSteps=Math.round(graphRange/stepValue);if(numberOfSteps%1!==0){skipFitting=true}}else{if(integersOnly&&rangeOrderOfMagnitude>=0){if(stepValue/2%1===0){stepValue/=2;numberOfSteps=Math.round(graphRange/stepValue)}else{break}}else{stepValue/=2;numberOfSteps=Math.round(graphRange/stepValue)}}}if(skipFitting){numberOfSteps=minSteps;stepValue=graphRange/numberOfSteps}return{steps:numberOfSteps,stepValue:stepValue,min:graphMin,max:graphMin+numberOfSteps*stepValue}},template=helpers.template=function(templateString,valuesObject){if(templateString instanceof Function){return templateString(valuesObject)}var cache={};function tmpl(str,data){var fn=!/\W/.test(str)?cache[str]=cache[str]:new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};"+"with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split(" ").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');");return data?fn(data):fn}return tmpl(templateString,valuesObject)},generateLabels=helpers.generateLabels=function(templateString,numberOfSteps,graphMin,stepValue){var labelsArray=new Array(numberOfSteps);if(labelTemplateString){each(labelsArray,function(val,index){labelsArray[index]=template(templateString,{value:graphMin+stepValue*(index+1)})})}return labelsArray},easingEffects=helpers.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){if((t/=1/2)<1)return 1/2*t*t;return-1/2*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){if((t/=1/2)<1)return 1/2*t*t*t;return 1/2*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){if((t/=1/2)<1)return 1/2*t*t*t*t;return-1/2*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){if((t/=1/2)<1)return 1/2*t*t*t*t*t;return 1/2*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-1/2*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return t===0?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return t===1?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){if(t===0)return 0;if(t===1)return 1;if((t/=1/2)<1)return 1/2*Math.pow(2,10*(t-1));return 1/2*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){if(t>=1)return t;return-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){if((t/=1/2)<1)return-1/2*(Math.sqrt(1-t*t)-1);return 1/2*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var s=1.70158;var p=0;var a=1;if(t===0)return 0;if((t/=1)==1)return 1;if(!p)p=1*.3;if(a<Math.abs(1)){a=1;s=p/4}else s=p/(2*Math.PI)*Math.asin(1/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*1-s)*(2*Math.PI)/p))},easeOutElastic:function(t){var s=1.70158;var p=0;var a=1;if(t===0)return 0;if((t/=1)==1)return 1;if(!p)p=1*.3;if(a<Math.abs(1)){a=1;s=p/4}else s=p/(2*Math.PI)*Math.asin(1/a);return a*Math.pow(2,-10*t)*Math.sin((t*1-s)*(2*Math.PI)/p)+1},easeInOutElastic:function(t){var s=1.70158;var p=0;var a=1;if(t===0)return 0;if((t/=1/2)==2)return 1;if(!p)p=1*(.3*1.5);if(a<Math.abs(1)){a=1;s=p/4}else s=p/(2*Math.PI)*Math.asin(1/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*1-s)*(2*Math.PI)/p));return a*Math.pow(2,-10*(t-=1))*Math.sin((t*1-s)*(2*Math.PI)/p)*.5+1},easeInBack:function(t){var s=1.70158;return 1*(t/=1)*t*((s+1)*t-s)},easeOutBack:function(t){var s=1.70158;return 1*((t=t/1-1)*t*((s+1)*t+s)+1)},easeInOutBack:function(t){var s=1.70158;if((t/=1/2)<1)return 1/2*(t*t*(((s*=1.525)+1)*t-s));return 1/2*((t-=2)*t*(((s*=1.525)+1)*t+s)+2)},easeInBounce:function(t){return 1-easingEffects.easeOutBounce(1-t)},easeOutBounce:function(t){if((t/=1)<1/2.75){return 1*(7.5625*t*t)}else if(t<2/2.75){return 1*(7.5625*(t-=1.5/2.75)*t+.75)}else if(t<2.5/2.75){return 1*(7.5625*(t-=2.25/2.75)*t+.9375)}else{return 1*(7.5625*(t-=2.625/2.75)*t+.984375)}},easeInOutBounce:function(t){if(t<1/2)return easingEffects.easeInBounce(t*2)*.5;return easingEffects.easeOutBounce(t*2-1)*.5+1*.5}},requestAnimFrame=helpers.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){return window.setTimeout(callback,1e3/60)}}(),cancelAnimFrame=helpers.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(callback){return window.clearTimeout(callback,1e3/60)}}(),animationLoop=helpers.animationLoop=function(callback,totalSteps,easingString,onProgress,onComplete,chartInstance){var currentStep=0,easingFunction=easingEffects[easingString]||easingEffects.linear;var animationFrame=function(){currentStep++;var stepDecimal=currentStep/totalSteps;var easeDecimal=easingFunction(stepDecimal);callback.call(chartInstance,easeDecimal,stepDecimal,currentStep);onProgress.call(chartInstance,easeDecimal,stepDecimal);if(currentStep<totalSteps){chartInstance.animationFrame=requestAnimFrame(animationFrame)}else{onComplete.apply(chartInstance)}};requestAnimFrame(animationFrame)},getRelativePosition=helpers.getRelativePosition=function(evt){var mouseX,mouseY;var e=evt.originalEvent||evt,canvas=evt.currentTarget||evt.srcElement,boundingRect=canvas.getBoundingClientRect();if(e.touches){mouseX=e.touches[0].clientX-boundingRect.left;mouseY=e.touches[0].clientY-boundingRect.top}else{mouseX=e.clientX-boundingRect.left;mouseY=e.clientY-boundingRect.top}return{x:mouseX,y:mouseY}},addEvent=helpers.addEvent=function(node,eventType,method){if(node.addEventListener){node.addEventListener(eventType,method)}else if(node.attachEvent){node.attachEvent("on"+eventType,method)}else{node["on"+eventType]=method}},removeEvent=helpers.removeEvent=function(node,eventType,handler){if(node.removeEventListener){node.removeEventListener(eventType,handler,false)}else if(node.detachEvent){node.detachEvent("on"+eventType,handler)}else{node["on"+eventType]=noop}},bindEvents=helpers.bindEvents=function(chartInstance,arrayOfEvents,handler){if(!chartInstance.events)chartInstance.events={};each(arrayOfEvents,function(eventName){chartInstance.events[eventName]=function(){handler.apply(chartInstance,arguments)};addEvent(chartInstance.chart.canvas,eventName,chartInstance.events[eventName])})},unbindEvents=helpers.unbindEvents=function(chartInstance,arrayOfEvents){each(arrayOfEvents,function(handler,eventName){removeEvent(chartInstance.chart.canvas,eventName,handler)})},getMaximumWidth=helpers.getMaximumWidth=function(domNode){var container=domNode.parentNode;return container.clientWidth},getMaximumHeight=helpers.getMaximumHeight=function(domNode){var container=domNode.parentNode;return container.clientHeight},getMaximumSize=helpers.getMaximumSize=helpers.getMaximumWidth,retinaScale=helpers.retinaScale=function(chart){var ctx=chart.ctx,width=chart.canvas.width,height=chart.canvas.height;if(window.devicePixelRatio){ctx.canvas.style.width=width+"px";ctx.canvas.style.height=height+"px";ctx.canvas.height=height*window.devicePixelRatio;ctx.canvas.width=width*window.devicePixelRatio;ctx.scale(window.devicePixelRatio,window.devicePixelRatio)}},clear=helpers.clear=function(chart){chart.ctx.clearRect(0,0,chart.width,chart.height)},fontString=helpers.fontString=function(pixelSize,fontStyle,fontFamily){return fontStyle+" "+pixelSize+"px "+fontFamily},longestText=helpers.longestText=function(ctx,font,arrayOfStrings){ctx.font=font;var longest=0;each(arrayOfStrings,function(string){var textWidth=ctx.measureText(string).width;longest=textWidth>longest?textWidth:longest});return longest},drawRoundedRectangle=helpers.drawRoundedRectangle=function(ctx,x,y,width,height,radius){ctx.beginPath();ctx.moveTo(x+radius,y);ctx.lineTo(x+width-radius,y);ctx.quadraticCurveTo(x+width,y,x+width,y+radius);ctx.lineTo(x+width,y+height-radius);ctx.quadraticCurveTo(x+width,y+height,x+width-radius,y+height);ctx.lineTo(x+radius,y+height);ctx.quadraticCurveTo(x,y+height,x,y+height-radius);ctx.lineTo(x,y+radius);ctx.quadraticCurveTo(x,y,x+radius,y);ctx.closePath()};Chart.instances={};Chart.Type=function(data,options,chart){this.options=options;this.chart=chart;this.id=uid();Chart.instances[this.id]=this;if(options.responsive){this.resize()}this.initialize.call(this,data)};extend(Chart.Type.prototype,{initialize:function(){return this},clear:function(){clear(this.chart);return this},stop:function(){cancelAnimFrame(this.animationFrame);return this},resize:function(callback){this.stop();var canvas=this.chart.canvas,newWidth=getMaximumWidth(this.chart.canvas),newHeight=this.options.maintainAspectRatio?newWidth/this.chart.aspectRatio:getMaximumHeight(this.chart.canvas);canvas.width=this.chart.width=newWidth;canvas.height=this.chart.height=newHeight;retinaScale(this.chart);if(typeof callback==="function"){callback.apply(this,Array.prototype.slice.call(arguments,1))}return this},reflow:noop,render:function(reflow){if(reflow){this.reflow()}if(this.options.animation&&!reflow){helpers.animationLoop(this.draw,this.options.animationSteps,this.options.animationEasing,this.options.onAnimationProgress,this.options.onAnimationComplete,this)}else{this.draw();this.options.onAnimationComplete.call(this)}return this},generateLegend:function(){return template(this.options.legendTemplate,this)},destroy:function(){this.clear();unbindEvents(this,this.events);var canvas=this.chart.canvas;canvas.width=this.chart.width;canvas.height=this.chart.height;if(canvas.style.removeProperty){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}else{canvas.style.removeAttribute("width");canvas.style.removeAttribute("height")}delete Chart.instances[this.id]},showTooltip:function(ChartElements,forceRedraw){if(typeof this.activeElements==="undefined")this.activeElements=[];var isChanged=function(Elements){var changed=false;if(Elements.length!==this.activeElements.length){changed=true;return changed}each(Elements,function(element,index){if(element!==this.activeElements[index]){changed=true}},this);return changed}.call(this,ChartElements);if(!isChanged&&!forceRedraw){return}else{this.activeElements=ChartElements}this.draw();if(this.options.customTooltips){this.options.customTooltips(false)}if(ChartElements.length>0){if(this.datasets&&this.datasets.length>1){var dataArray,dataIndex;for(var i=this.datasets.length-1;i>=0;i--){dataArray=this.datasets[i].points||this.datasets[i].bars||this.datasets[i].segments;dataIndex=indexOf(dataArray,ChartElements[0]);if(dataIndex!==-1){break}}var tooltipLabels=[],tooltipColors=[],medianPosition=function(index){var Elements=[],dataCollection,xPositions=[],yPositions=[],xMax,yMax,xMin,yMin;helpers.each(this.datasets,function(dataset){dataCollection=dataset.points||dataset.bars||dataset.segments;if(dataCollection[dataIndex]&&dataCollection[dataIndex].hasValue()){Elements.push(dataCollection[dataIndex])}});helpers.each(Elements,function(element){xPositions.push(element.x);yPositions.push(element.y);tooltipLabels.push(helpers.template(this.options.multiTooltipTemplate,element));tooltipColors.push({fill:element._saved.fillColor||element.fillColor,stroke:element._saved.strokeColor||element.strokeColor})},this);yMin=min(yPositions);yMax=max(yPositions);xMin=min(xPositions);xMax=max(xPositions);return{x:xMin>this.chart.width/2?xMin:xMax,y:(yMin+yMax)/2}}.call(this,dataIndex);new Chart.MultiTooltip({x:medianPosition.x,y:medianPosition.y,xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,xOffset:this.options.tooltipXOffset,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,titleTextColor:this.options.tooltipTitleFontColor,titleFontFamily:this.options.tooltipTitleFontFamily,titleFontStyle:this.options.tooltipTitleFontStyle,titleFontSize:this.options.tooltipTitleFontSize,cornerRadius:this.options.tooltipCornerRadius,labels:tooltipLabels,legendColors:tooltipColors,legendColorBackground:this.options.multiTooltipKeyBackground,title:ChartElements[0].label,chart:this.chart,ctx:this.chart.ctx,custom:this.options.customTooltips}).draw()}else{each(ChartElements,function(Element){var tooltipPosition=Element.tooltipPosition();new Chart.Tooltip({x:Math.round(tooltipPosition.x),y:Math.round(tooltipPosition.y),xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,caretHeight:this.options.tooltipCaretSize,cornerRadius:this.options.tooltipCornerRadius,text:template(this.options.tooltipTemplate,Element),chart:this.chart,custom:this.options.customTooltips}).draw()},this)}}return this},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)}});Chart.Type.extend=function(extensions){var parent=this;var ChartType=function(){return parent.apply(this,arguments)};ChartType.prototype=clone(parent.prototype);extend(ChartType.prototype,extensions);ChartType.extend=Chart.Type.extend;if(extensions.name||parent.prototype.name){var chartName=extensions.name||parent.prototype.name;var baseDefaults=Chart.defaults[parent.prototype.name]?clone(Chart.defaults[parent.prototype.name]):{};Chart.defaults[chartName]=extend(baseDefaults,extensions.defaults);Chart.types[chartName]=ChartType;Chart.prototype[chartName]=function(data,options){var config=merge(Chart.defaults.global,Chart.defaults[chartName],options||{});return new ChartType(data,config,this)}}else{warn("Name not provided for this chart, so it hasn't been registered")}return parent};Chart.Element=function(configuration){extend(this,configuration);this.initialize.apply(this,arguments);this.save()};extend(Chart.Element.prototype,{initialize:function(){},restore:function(props){if(!props){extend(this,this._saved)}else{each(props,function(key){this[key]=this._saved[key]},this)}return this},save:function(){this._saved=clone(this);delete this._saved._saved;return this},update:function(newProps){each(newProps,function(value,key){this._saved[key]=this[key];this[key]=value},this);return this},transition:function(props,ease){each(props,function(value,key){this[key]=(value-this._saved[key])*ease+this._saved[key]},this);return this},tooltipPosition:function(){return{x:this.x,y:this.y}},hasValue:function(){return isNumber(this.value)}});Chart.Element.extend=inherits;Chart.Point=Chart.Element.extend({display:true,inRange:function(chartX,chartY){var hitDetectionRange=this.hitDetectionRadius+this.radius;return Math.pow(chartX-this.x,2)+Math.pow(chartY-this.y,2)<Math.pow(hitDetectionRange,2)},draw:function(){if(this.display){var ctx=this.ctx;ctx.beginPath();ctx.arc(this.x,this.y,this.radius,0,Math.PI*2);ctx.closePath();ctx.strokeStyle=this.strokeColor;ctx.lineWidth=this.strokeWidth;ctx.fillStyle=this.fillColor;ctx.fill();ctx.stroke()}}});Chart.Arc=Chart.Element.extend({inRange:function(chartX,chartY){var pointRelativePosition=helpers.getAngleFromPoint(this,{x:chartX,y:chartY});var betweenAngles=pointRelativePosition.angle>=this.startAngle&&pointRelativePosition.angle<=this.endAngle,withinRadius=pointRelativePosition.distance>=this.innerRadius&&pointRelativePosition.distance<=this.outerRadius;return betweenAngles&&withinRadius},tooltipPosition:function(){var centreAngle=this.startAngle+(this.endAngle-this.startAngle)/2,rangeFromCentre=(this.outerRadius-this.innerRadius)/2+this.innerRadius;return{x:this.x+Math.cos(centreAngle)*rangeFromCentre,y:this.y+Math.sin(centreAngle)*rangeFromCentre}},draw:function(animationPercent){var easingDecimal=animationPercent||1;var ctx=this.ctx;ctx.beginPath();ctx.arc(this.x,this.y,this.outerRadius,this.startAngle,this.endAngle);ctx.arc(this.x,this.y,this.innerRadius,this.endAngle,this.startAngle,true);ctx.closePath();ctx.strokeStyle=this.strokeColor;ctx.lineWidth=this.strokeWidth;ctx.fillStyle=this.fillColor;ctx.fill();ctx.lineJoin="bevel";if(this.showStroke){ctx.stroke()}}});Chart.Rectangle=Chart.Element.extend({draw:function(){var ctx=this.ctx,halfWidth=this.width/2,leftX=this.x-halfWidth,rightX=this.x+halfWidth,top=this.base-(this.base-this.y),halfStroke=this.strokeWidth/2;if(this.showStroke){leftX+=halfStroke;rightX-=halfStroke;top+=halfStroke}ctx.beginPath();ctx.fillStyle=this.fillColor;ctx.strokeStyle=this.strokeColor;ctx.lineWidth=this.strokeWidth;ctx.moveTo(leftX,this.base);ctx.lineTo(leftX,top);ctx.lineTo(rightX,top);ctx.lineTo(rightX,this.base);ctx.fill();if(this.showStroke){ctx.stroke()}},height:function(){return this.base-this.y},inRange:function(chartX,chartY){return chartX>=this.x-this.width/2&&chartX<=this.x+this.width/2&&(chartY>=this.y&&chartY<=this.base)}});Chart.Tooltip=Chart.Element.extend({draw:function(){var ctx=this.chart.ctx;ctx.font=fontString(this.fontSize,this.fontStyle,this.fontFamily);this.xAlign="center";this.yAlign="above";var caretPadding=this.caretPadding=2;var tooltipWidth=ctx.measureText(this.text).width+2*this.xPadding,tooltipRectHeight=this.fontSize+2*this.yPadding,tooltipHeight=tooltipRectHeight+this.caretHeight+caretPadding;if(this.x+tooltipWidth/2>this.chart.width){this.xAlign="left"}else if(this.x-tooltipWidth/2<0){this.xAlign="right"}if(this.y-tooltipHeight<0){this.yAlign="below"}var tooltipX=this.x-tooltipWidth/2,tooltipY=this.y-tooltipHeight;ctx.fillStyle=this.fillColor;if(this.custom){this.custom(this)}else{switch(this.yAlign){case"above":ctx.beginPath();ctx.moveTo(this.x,this.y-caretPadding);ctx.lineTo(this.x+this.caretHeight,this.y-(caretPadding+this.caretHeight));ctx.lineTo(this.x-this.caretHeight,this.y-(caretPadding+this.caretHeight));ctx.closePath();ctx.fill();break;case"below":tooltipY=this.y+caretPadding+this.caretHeight;ctx.beginPath();ctx.moveTo(this.x,this.y+caretPadding);ctx.lineTo(this.x+this.caretHeight,this.y+caretPadding+this.caretHeight);ctx.lineTo(this.x-this.caretHeight,this.y+caretPadding+this.caretHeight);ctx.closePath();ctx.fill();break}switch(this.xAlign){case"left":tooltipX=this.x-tooltipWidth+(this.cornerRadius+this.caretHeight);break;case"right":tooltipX=this.x-(this.cornerRadius+this.caretHeight);break}drawRoundedRectangle(ctx,tooltipX,tooltipY,tooltipWidth,tooltipRectHeight,this.cornerRadius);ctx.fill();ctx.fillStyle=this.textColor;ctx.textAlign="center";ctx.textBaseline="middle";ctx.fillText(this.text,tooltipX+tooltipWidth/2,tooltipY+tooltipRectHeight/2)}}});Chart.MultiTooltip=Chart.Element.extend({initialize:function(){this.font=fontString(this.fontSize,this.fontStyle,this.fontFamily);this.titleFont=fontString(this.titleFontSize,this.titleFontStyle,this.titleFontFamily);this.height=this.labels.length*this.fontSize+(this.labels.length-1)*(this.fontSize/2)+this.yPadding*2+this.titleFontSize*1.5;this.ctx.font=this.titleFont;var titleWidth=this.ctx.measureText(this.title).width,labelWidth=longestText(this.ctx,this.font,this.labels)+this.fontSize+3,longestTextWidth=max([labelWidth,titleWidth]);this.width=longestTextWidth+this.xPadding*2;var halfHeight=this.height/2;if(this.y-halfHeight<0){this.y=halfHeight}else if(this.y+halfHeight>this.chart.height){this.y=this.chart.height-halfHeight}if(this.x>this.chart.width/2){this.x-=this.xOffset+this.width}else{this.x+=this.xOffset}},getLineHeight:function(index){var baseLineHeight=this.y-this.height/2+this.yPadding,afterTitleIndex=index-1;if(index===0){return baseLineHeight+this.titleFontSize/2}else{return baseLineHeight+(this.fontSize*1.5*afterTitleIndex+this.fontSize/2)+this.titleFontSize*1.5}},draw:function(){if(this.custom){this.custom(this)}else{drawRoundedRectangle(this.ctx,this.x,this.y-this.height/2,this.width,this.height,this.cornerRadius);var ctx=this.ctx;ctx.fillStyle=this.fillColor;ctx.fill();ctx.closePath();ctx.textAlign="left";ctx.textBaseline="middle";ctx.fillStyle=this.titleTextColor;ctx.font=this.titleFont;ctx.fillText(this.title,this.x+this.xPadding,this.getLineHeight(0));ctx.font=this.font;helpers.each(this.labels,function(label,index){ctx.fillStyle=this.textColor;ctx.fillText(label,this.x+this.xPadding+this.fontSize+3,this.getLineHeight(index+1));ctx.fillStyle=this.legendColorBackground;ctx.fillRect(this.x+this.xPadding,this.getLineHeight(index+1)-this.fontSize/2,this.fontSize,this.fontSize);ctx.fillStyle=this.legendColors[index].fill;ctx.fillRect(this.x+this.xPadding,this.getLineHeight(index+1)-this.fontSize/2,this.fontSize,this.fontSize)},this)}}});Chart.Scale=Chart.Element.extend({initialize:function(){this.fit()},buildYLabels:function(){this.yLabels=[];var stepDecimalPlaces=getDecimalPlaces(this.stepValue);for(var i=0;i<=this.steps;i++){this.yLabels.push(template(this.templateString,{value:(this.min+i*this.stepValue).toFixed(stepDecimalPlaces)}))}this.yLabelWidth=this.display&&this.showLabels?longestText(this.ctx,this.font,this.yLabels):0},addXLabel:function(label){this.xLabels.push(label);this.valuesCount++;this.fit()},removeXLabel:function(){this.xLabels.shift();this.valuesCount--;this.fit()},fit:function(){this.startPoint=this.display?this.fontSize:0;this.endPoint=this.display?this.height-this.fontSize*1.5-5:this.height;this.startPoint+=this.padding;this.endPoint-=this.padding;var cachedHeight=this.endPoint-this.startPoint,cachedYLabelWidth;this.calculateYRange(cachedHeight);this.buildYLabels();this.calculateXLabelRotation();while(cachedHeight>this.endPoint-this.startPoint){cachedHeight=this.endPoint-this.startPoint;cachedYLabelWidth=this.yLabelWidth;this.calculateYRange(cachedHeight);this.buildYLabels();if(cachedYLabelWidth<this.yLabelWidth){this.calculateXLabelRotation()}}},calculateXLabelRotation:function(){this.ctx.font=this.font;var firstWidth=this.ctx.measureText(this.xLabels[0]).width,lastWidth=this.ctx.measureText(this.xLabels[this.xLabels.length-1]).width,firstRotated,lastRotated;this.xScalePaddingRight=lastWidth/2+3;this.xScalePaddingLeft=firstWidth/2>this.yLabelWidth+10?firstWidth/2:this.yLabelWidth+10;this.xLabelRotation=0;if(this.display){var originalLabelWidth=longestText(this.ctx,this.font,this.xLabels),cosRotation,firstRotatedWidth;this.xLabelWidth=originalLabelWidth;var xGridWidth=Math.floor(this.calculateX(1)-this.calculateX(0))-6;while(this.xLabelWidth>xGridWidth&&this.xLabelRotation===0||this.xLabelWidth>xGridWidth&&this.xLabelRotation<=90&&this.xLabelRotation>0){cosRotation=Math.cos(toRadians(this.xLabelRotation));firstRotated=cosRotation*firstWidth;lastRotated=cosRotation*lastWidth;if(firstRotated+this.fontSize/2>this.yLabelWidth+8){this.xScalePaddingLeft=firstRotated+this.fontSize/2}this.xScalePaddingRight=this.fontSize/2;this.xLabelRotation++;this.xLabelWidth=cosRotation*originalLabelWidth}if(this.xLabelRotation>0){this.endPoint-=Math.sin(toRadians(this.xLabelRotation))*originalLabelWidth+3}}else{this.xLabelWidth=0;this.xScalePaddingRight=this.padding;this.xScalePaddingLeft=this.padding}},calculateYRange:noop,drawingArea:function(){return this.startPoint-this.endPoint},calculateY:function(value){var scalingFactor=this.drawingArea()/(this.min-this.max);return this.endPoint-scalingFactor*(value-this.min)},calculateX:function(index){var isRotated=this.xLabelRotation>0,innerWidth=this.width-(this.xScalePaddingLeft+this.xScalePaddingRight),valueWidth=innerWidth/Math.max(this.valuesCount-(this.offsetGridLines?0:1),1),valueOffset=valueWidth*index+this.xScalePaddingLeft;if(this.offsetGridLines){valueOffset+=valueWidth/2}return Math.round(valueOffset)},update:function(newProps){helpers.extend(this,newProps);this.fit()},draw:function(){var ctx=this.ctx,yLabelGap=(this.endPoint-this.startPoint)/this.steps,xStart=Math.round(this.xScalePaddingLeft);if(this.display){ctx.fillStyle=this.textColor;ctx.font=this.font;each(this.yLabels,function(labelString,index){var yLabelCenter=this.endPoint-yLabelGap*index,linePositionY=Math.round(yLabelCenter),drawHorizontalLine=this.showHorizontalLines;ctx.textAlign="right";ctx.textBaseline="middle";if(this.showLabels){ctx.fillText(labelString,xStart-10,yLabelCenter)}if(index===0&&!drawHorizontalLine){drawHorizontalLine=true}if(drawHorizontalLine){ctx.beginPath()}if(index>0){ctx.lineWidth=this.gridLineWidth;ctx.strokeStyle=this.gridLineColor}else{ctx.lineWidth=this.lineWidth;ctx.strokeStyle=this.lineColor}linePositionY+=helpers.aliasPixel(ctx.lineWidth);if(drawHorizontalLine){ctx.moveTo(xStart,linePositionY);ctx.lineTo(this.width,linePositionY);ctx.stroke();ctx.closePath()}ctx.lineWidth=this.lineWidth;ctx.strokeStyle=this.lineColor;ctx.beginPath();ctx.moveTo(xStart-5,linePositionY);ctx.lineTo(xStart,linePositionY);ctx.stroke();ctx.closePath()},this);each(this.xLabels,function(label,index){var xPos=this.calculateX(index)+aliasPixel(this.lineWidth),linePos=this.calculateX(index-(this.offsetGridLines?.5:0))+aliasPixel(this.lineWidth),isRotated=this.xLabelRotation>0,drawVerticalLine=this.showVerticalLines;if(index===0&&!drawVerticalLine){drawVerticalLine=true}if(drawVerticalLine){ctx.beginPath()}if(index>0){ctx.lineWidth=this.gridLineWidth;ctx.strokeStyle=this.gridLineColor}else{ctx.lineWidth=this.lineWidth;ctx.strokeStyle=this.lineColor}if(drawVerticalLine){ctx.moveTo(linePos,this.endPoint);ctx.lineTo(linePos,this.startPoint-3);
ctx.stroke();ctx.closePath()}ctx.lineWidth=this.lineWidth;ctx.strokeStyle=this.lineColor;ctx.beginPath();ctx.moveTo(linePos,this.endPoint);ctx.lineTo(linePos,this.endPoint+5);ctx.stroke();ctx.closePath();ctx.save();ctx.translate(xPos,isRotated?this.endPoint+12:this.endPoint+8);ctx.rotate(toRadians(this.xLabelRotation)*-1);ctx.font=this.font;ctx.textAlign=isRotated?"right":"center";ctx.textBaseline=isRotated?"middle":"top";ctx.fillText(label,0,0);ctx.restore()},this)}}});Chart.RadialScale=Chart.Element.extend({initialize:function(){this.size=min([this.height,this.width]);this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2},calculateCenterOffset:function(value){var scalingFactor=this.drawingArea/(this.max-this.min);return(value-this.min)*scalingFactor},update:function(){if(!this.lineArc){this.setScaleSize()}else{this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2}this.buildYLabels()},buildYLabels:function(){this.yLabels=[];var stepDecimalPlaces=getDecimalPlaces(this.stepValue);for(var i=0;i<=this.steps;i++){this.yLabels.push(template(this.templateString,{value:(this.min+i*this.stepValue).toFixed(stepDecimalPlaces)}))}},getCircumference:function(){return Math.PI*2/this.valuesCount},setScaleSize:function(){var largestPossibleRadius=min([this.height/2-this.pointLabelFontSize-5,this.width/2]),pointPosition,i,textWidth,halfTextWidth,furthestRight=this.width,furthestRightIndex,furthestRightAngle,furthestLeft=0,furthestLeftIndex,furthestLeftAngle,xProtrusionLeft,xProtrusionRight,radiusReductionRight,radiusReductionLeft,maxWidthRadius;this.ctx.font=fontString(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily);for(i=0;i<this.valuesCount;i++){pointPosition=this.getPointPosition(i,largestPossibleRadius);textWidth=this.ctx.measureText(template(this.templateString,{value:this.labels[i]})).width+5;if(i===0||i===this.valuesCount/2){halfTextWidth=textWidth/2;if(pointPosition.x+halfTextWidth>furthestRight){furthestRight=pointPosition.x+halfTextWidth;furthestRightIndex=i}if(pointPosition.x-halfTextWidth<furthestLeft){furthestLeft=pointPosition.x-halfTextWidth;furthestLeftIndex=i}}else if(i<this.valuesCount/2){if(pointPosition.x+textWidth>furthestRight){furthestRight=pointPosition.x+textWidth;furthestRightIndex=i}}else if(i>this.valuesCount/2){if(pointPosition.x-textWidth<furthestLeft){furthestLeft=pointPosition.x-textWidth;furthestLeftIndex=i}}}xProtrusionLeft=furthestLeft;xProtrusionRight=Math.ceil(furthestRight-this.width);furthestRightAngle=this.getIndexAngle(furthestRightIndex);furthestLeftAngle=this.getIndexAngle(furthestLeftIndex);radiusReductionRight=xProtrusionRight/Math.sin(furthestRightAngle+Math.PI/2);radiusReductionLeft=xProtrusionLeft/Math.sin(furthestLeftAngle+Math.PI/2);radiusReductionRight=isNumber(radiusReductionRight)?radiusReductionRight:0;radiusReductionLeft=isNumber(radiusReductionLeft)?radiusReductionLeft:0;this.drawingArea=largestPossibleRadius-(radiusReductionLeft+radiusReductionRight)/2;this.setCenterPoint(radiusReductionLeft,radiusReductionRight)},setCenterPoint:function(leftMovement,rightMovement){var maxRight=this.width-rightMovement-this.drawingArea,maxLeft=leftMovement+this.drawingArea;this.xCenter=(maxLeft+maxRight)/2;this.yCenter=this.height/2},getIndexAngle:function(index){var angleMultiplier=Math.PI*2/this.valuesCount;return index*angleMultiplier-Math.PI/2},getPointPosition:function(index,distanceFromCenter){var thisAngle=this.getIndexAngle(index);return{x:Math.cos(thisAngle)*distanceFromCenter+this.xCenter,y:Math.sin(thisAngle)*distanceFromCenter+this.yCenter}},draw:function(){if(this.display){var ctx=this.ctx;each(this.yLabels,function(label,index){if(index>0){var yCenterOffset=index*(this.drawingArea/this.steps),yHeight=this.yCenter-yCenterOffset,pointPosition;if(this.lineWidth>0){ctx.strokeStyle=this.lineColor;ctx.lineWidth=this.lineWidth;if(this.lineArc){ctx.beginPath();ctx.arc(this.xCenter,this.yCenter,yCenterOffset,0,Math.PI*2);ctx.closePath();ctx.stroke()}else{ctx.beginPath();for(var i=0;i<this.valuesCount;i++){pointPosition=this.getPointPosition(i,this.calculateCenterOffset(this.min+index*this.stepValue));if(i===0){ctx.moveTo(pointPosition.x,pointPosition.y)}else{ctx.lineTo(pointPosition.x,pointPosition.y)}}ctx.closePath();ctx.stroke()}}if(this.showLabels){ctx.font=fontString(this.fontSize,this.fontStyle,this.fontFamily);if(this.showLabelBackdrop){var labelWidth=ctx.measureText(label).width;ctx.fillStyle=this.backdropColor;ctx.fillRect(this.xCenter-labelWidth/2-this.backdropPaddingX,yHeight-this.fontSize/2-this.backdropPaddingY,labelWidth+this.backdropPaddingX*2,this.fontSize+this.backdropPaddingY*2)}ctx.textAlign="center";ctx.textBaseline="middle";ctx.fillStyle=this.fontColor;ctx.fillText(label,this.xCenter,yHeight)}}},this);if(!this.lineArc){ctx.lineWidth=this.angleLineWidth;ctx.strokeStyle=this.angleLineColor;for(var i=this.valuesCount-1;i>=0;i--){if(this.angleLineWidth>0){var outerPosition=this.getPointPosition(i,this.calculateCenterOffset(this.max));ctx.beginPath();ctx.moveTo(this.xCenter,this.yCenter);ctx.lineTo(outerPosition.x,outerPosition.y);ctx.stroke();ctx.closePath()}var pointLabelPosition=this.getPointPosition(i,this.calculateCenterOffset(this.max)+5);ctx.font=fontString(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily);ctx.fillStyle=this.pointLabelFontColor;var labelsCount=this.labels.length,halfLabelsCount=this.labels.length/2,quarterLabelsCount=halfLabelsCount/2,upperHalf=i<quarterLabelsCount||i>labelsCount-quarterLabelsCount,exactQuarter=i===quarterLabelsCount||i===labelsCount-quarterLabelsCount;if(i===0){ctx.textAlign="center"}else if(i===halfLabelsCount){ctx.textAlign="center"}else if(i<halfLabelsCount){ctx.textAlign="left"}else{ctx.textAlign="right"}if(exactQuarter){ctx.textBaseline="middle"}else if(upperHalf){ctx.textBaseline="bottom"}else{ctx.textBaseline="top"}ctx.fillText(this.labels[i],pointLabelPosition.x,pointLabelPosition.y)}}}}});helpers.addEvent(window,"resize",function(){var timeout;return function(){clearTimeout(timeout);timeout=setTimeout(function(){each(Chart.instances,function(instance){if(instance.options.responsive){instance.resize(instance.render,true)}})},50)}}());if(amd){define(function(){return Chart})}else if(typeof module==="object"&&module.exports){module.exports=Chart}root.Chart=Chart;Chart.noConflict=function(){root.Chart=previous;return Chart}}).call(this);(function(){"use strict";var root=this,Chart=root.Chart,helpers=Chart.helpers;var defaultConfig={scaleBeginAtZero:true,scaleShowGridLines:true,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,scaleShowHorizontalLines:true,scaleShowVerticalLines:true,barShowStroke:true,barStrokeWidth:2,barValueSpacing:5,barDatasetSpacing:1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].fillColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'};Chart.Type.extend({name:"Bar",defaults:defaultConfig,initialize:function(data){var options=this.options;this.ScaleClass=Chart.Scale.extend({offsetGridLines:true,calculateBarX:function(datasetCount,datasetIndex,barIndex){var xWidth=this.calculateBaseWidth(),xAbsolute=this.calculateX(barIndex)-xWidth/2,barWidth=this.calculateBarWidth(datasetCount);return xAbsolute+barWidth*datasetIndex+datasetIndex*options.barDatasetSpacing+barWidth/2},calculateBaseWidth:function(){return this.calculateX(1)-this.calculateX(0)-2*options.barValueSpacing},calculateBarWidth:function(datasetCount){var baseWidth=this.calculateBaseWidth()-(datasetCount-1)*options.barDatasetSpacing;return baseWidth/datasetCount}});this.datasets=[];if(this.options.showTooltips){helpers.bindEvents(this,this.options.tooltipEvents,function(evt){var activeBars=evt.type!=="mouseout"?this.getBarsAtEvent(evt):[];this.eachBars(function(bar){bar.restore(["fillColor","strokeColor"])});helpers.each(activeBars,function(activeBar){activeBar.fillColor=activeBar.highlightFill;activeBar.strokeColor=activeBar.highlightStroke});this.showTooltip(activeBars)})}this.BarClass=Chart.Rectangle.extend({strokeWidth:this.options.barStrokeWidth,showStroke:this.options.barShowStroke,ctx:this.chart.ctx});helpers.each(data.datasets,function(dataset,datasetIndex){var datasetObject={label:dataset.label||null,fillColor:dataset.fillColor,strokeColor:dataset.strokeColor,bars:[]};this.datasets.push(datasetObject);helpers.each(dataset.data,function(dataPoint,index){datasetObject.bars.push(new this.BarClass({value:dataPoint,label:data.labels[index],datasetLabel:dataset.label,strokeColor:dataset.strokeColor,fillColor:dataset.fillColor,highlightFill:dataset.highlightFill||dataset.fillColor,highlightStroke:dataset.highlightStroke||dataset.strokeColor}))},this)},this);this.buildScale(data.labels);this.BarClass.prototype.base=this.scale.endPoint;this.eachBars(function(bar,index,datasetIndex){helpers.extend(bar,{width:this.scale.calculateBarWidth(this.datasets.length),x:this.scale.calculateBarX(this.datasets.length,datasetIndex,index),y:this.scale.endPoint});bar.save()},this);this.render()},update:function(){this.scale.update();helpers.each(this.activeElements,function(activeElement){activeElement.restore(["fillColor","strokeColor"])});this.eachBars(function(bar){bar.save()});this.render()},eachBars:function(callback){helpers.each(this.datasets,function(dataset,datasetIndex){helpers.each(dataset.bars,callback,this,datasetIndex)},this)},getBarsAtEvent:function(e){var barsArray=[],eventPosition=helpers.getRelativePosition(e),datasetIterator=function(dataset){barsArray.push(dataset.bars[barIndex])},barIndex;for(var datasetIndex=0;datasetIndex<this.datasets.length;datasetIndex++){for(barIndex=0;barIndex<this.datasets[datasetIndex].bars.length;barIndex++){if(this.datasets[datasetIndex].bars[barIndex].inRange(eventPosition.x,eventPosition.y)){helpers.each(this.datasets,datasetIterator);return barsArray}}}return barsArray},buildScale:function(labels){var self=this;var dataTotal=function(){var values=[];self.eachBars(function(bar){values.push(bar.value)});return values};var scaleOptions={templateString:this.options.scaleLabel,height:this.chart.height,width:this.chart.width,ctx:this.chart.ctx,textColor:this.options.scaleFontColor,fontSize:this.options.scaleFontSize,fontStyle:this.options.scaleFontStyle,fontFamily:this.options.scaleFontFamily,valuesCount:labels.length,beginAtZero:this.options.scaleBeginAtZero,integersOnly:this.options.scaleIntegersOnly,calculateYRange:function(currentHeight){var updatedRanges=helpers.calculateScaleRange(dataTotal(),currentHeight,this.fontSize,this.beginAtZero,this.integersOnly);helpers.extend(this,updatedRanges)},xLabels:labels,font:helpers.fontString(this.options.scaleFontSize,this.options.scaleFontStyle,this.options.scaleFontFamily),lineWidth:this.options.scaleLineWidth,lineColor:this.options.scaleLineColor,showHorizontalLines:this.options.scaleShowHorizontalLines,showVerticalLines:this.options.scaleShowVerticalLines,gridLineWidth:this.options.scaleShowGridLines?this.options.scaleGridLineWidth:0,gridLineColor:this.options.scaleShowGridLines?this.options.scaleGridLineColor:"rgba(0,0,0,0)",padding:this.options.showScale?0:this.options.barShowStroke?this.options.barStrokeWidth:0,showLabels:this.options.scaleShowLabels,display:this.options.showScale};if(this.options.scaleOverride){helpers.extend(scaleOptions,{calculateYRange:helpers.noop,steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth})}this.scale=new this.ScaleClass(scaleOptions)},addData:function(valuesArray,label){helpers.each(valuesArray,function(value,datasetIndex){this.datasets[datasetIndex].bars.push(new this.BarClass({value:value,label:label,x:this.scale.calculateBarX(this.datasets.length,datasetIndex,this.scale.valuesCount+1),y:this.scale.endPoint,width:this.scale.calculateBarWidth(this.datasets.length),base:this.scale.endPoint,strokeColor:this.datasets[datasetIndex].strokeColor,fillColor:this.datasets[datasetIndex].fillColor}))},this);this.scale.addXLabel(label);this.update()},removeData:function(){this.scale.removeXLabel();helpers.each(this.datasets,function(dataset){dataset.bars.shift()},this);this.update()},reflow:function(){helpers.extend(this.BarClass.prototype,{y:this.scale.endPoint,base:this.scale.endPoint});var newScaleProps=helpers.extend({height:this.chart.height,width:this.chart.width});this.scale.update(newScaleProps)},draw:function(ease){var easingDecimal=ease||1;this.clear();var ctx=this.chart.ctx;this.scale.draw(easingDecimal);helpers.each(this.datasets,function(dataset,datasetIndex){helpers.each(dataset.bars,function(bar,index){if(bar.hasValue()){bar.base=this.scale.endPoint;bar.transition({x:this.scale.calculateBarX(this.datasets.length,datasetIndex,index),y:this.scale.calculateY(bar.value),width:this.scale.calculateBarWidth(this.datasets.length)},easingDecimal).draw()}},this)},this)}})}).call(this);(function(){"use strict";var root=this,Chart=root.Chart,helpers=Chart.helpers;var defaultConfig={segmentShowStroke:true,segmentStrokeColor:"#fff",segmentStrokeWidth:2,percentageInnerCutout:50,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:true,animateScale:false,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'};Chart.Type.extend({name:"Doughnut",defaults:defaultConfig,initialize:function(data){this.segments=[];this.outerRadius=(helpers.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2;this.SegmentArc=Chart.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2});if(this.options.showTooltips){helpers.bindEvents(this,this.options.tooltipEvents,function(evt){var activeSegments=evt.type!=="mouseout"?this.getSegmentsAtEvent(evt):[];helpers.each(this.segments,function(segment){segment.restore(["fillColor"])});helpers.each(activeSegments,function(activeSegment){activeSegment.fillColor=activeSegment.highlightColor});this.showTooltip(activeSegments)})}this.calculateTotal(data);helpers.each(data,function(datapoint,index){this.addData(datapoint,index,true)},this);this.render()},getSegmentsAtEvent:function(e){var segmentsArray=[];var location=helpers.getRelativePosition(e);helpers.each(this.segments,function(segment){if(segment.inRange(location.x,location.y))segmentsArray.push(segment)},this);return segmentsArray},addData:function(segment,atIndex,silent){var index=atIndex||this.segments.length;this.segments.splice(index,0,new this.SegmentArc({value:segment.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:segment.color,highlightColor:segment.highlight||segment.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:Math.PI*1.5,circumference:this.options.animateRotate?0:this.calculateCircumference(segment.value),label:segment.label}));if(!silent){this.reflow();this.update()}},calculateCircumference:function(value){return Math.PI*2*(Math.abs(value)/this.total)},calculateTotal:function(data){this.total=0;helpers.each(data,function(segment){this.total+=Math.abs(segment.value)},this)},update:function(){this.calculateTotal(this.segments);helpers.each(this.activeElements,function(activeElement){activeElement.restore(["fillColor"])});helpers.each(this.segments,function(segment){segment.save()});this.render()},removeData:function(atIndex){var indexToDelete=helpers.isNumber(atIndex)?atIndex:this.segments.length-1;this.segments.splice(indexToDelete,1);this.reflow();this.update()},reflow:function(){helpers.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2});this.outerRadius=(helpers.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2;helpers.each(this.segments,function(segment){segment.update({outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout})},this)},draw:function(easeDecimal){var animDecimal=easeDecimal?easeDecimal:1;this.clear();helpers.each(this.segments,function(segment,index){segment.transition({circumference:this.calculateCircumference(segment.value),outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout},animDecimal);segment.endAngle=segment.startAngle+segment.circumference;segment.draw();if(index===0){segment.startAngle=Math.PI*1.5}if(index<this.segments.length-1){this.segments[index+1].startAngle=segment.endAngle}},this)}});Chart.types.Doughnut.extend({name:"Pie",defaults:helpers.merge(defaultConfig,{percentageInnerCutout:0})})}).call(this);(function(){"use strict";var root=this,Chart=root.Chart,helpers=Chart.helpers;var defaultConfig={scaleShowGridLines:true,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,scaleShowHorizontalLines:true,scaleShowVerticalLines:true,bezierCurve:true,bezierCurveTension:.4,pointDot:true,pointDotRadius:4,pointDotStrokeWidth:1,pointHitDetectionRadius:20,datasetStroke:true,datasetStrokeWidth:2,datasetFill:true,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].strokeColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'};Chart.Type.extend({name:"Line",defaults:defaultConfig,initialize:function(data){this.PointClass=Chart.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx,inRange:function(mouseX){return Math.pow(mouseX-this.x,2)<Math.pow(this.radius+this.hitDetectionRadius,2)}});this.datasets=[];if(this.options.showTooltips){helpers.bindEvents(this,this.options.tooltipEvents,function(evt){var activePoints=evt.type!=="mouseout"?this.getPointsAtEvent(evt):[];this.eachPoints(function(point){point.restore(["fillColor","strokeColor"])});helpers.each(activePoints,function(activePoint){activePoint.fillColor=activePoint.highlightFill;activePoint.strokeColor=activePoint.highlightStroke});this.showTooltip(activePoints)})}helpers.each(data.datasets,function(dataset){var datasetObject={label:dataset.label||null,fillColor:dataset.fillColor,strokeColor:dataset.strokeColor,pointColor:dataset.pointColor,pointStrokeColor:dataset.pointStrokeColor,points:[]};this.datasets.push(datasetObject);helpers.each(dataset.data,function(dataPoint,index){datasetObject.points.push(new this.PointClass({value:dataPoint,label:data.labels[index],datasetLabel:dataset.label,strokeColor:dataset.pointStrokeColor,fillColor:dataset.pointColor,highlightFill:dataset.pointHighlightFill||dataset.pointColor,highlightStroke:dataset.pointHighlightStroke||dataset.pointStrokeColor}))},this);this.buildScale(data.labels);this.eachPoints(function(point,index){helpers.extend(point,{x:this.scale.calculateX(index),y:this.scale.endPoint});point.save()},this)},this);this.render()},update:function(){this.scale.update();helpers.each(this.activeElements,function(activeElement){activeElement.restore(["fillColor","strokeColor"])});this.eachPoints(function(point){point.save()});this.render()},eachPoints:function(callback){helpers.each(this.datasets,function(dataset){helpers.each(dataset.points,callback,this)},this)},getPointsAtEvent:function(e){var pointsArray=[],eventPosition=helpers.getRelativePosition(e);helpers.each(this.datasets,function(dataset){helpers.each(dataset.points,function(point){if(point.inRange(eventPosition.x,eventPosition.y))pointsArray.push(point)})},this);return pointsArray},buildScale:function(labels){var self=this;var dataTotal=function(){var values=[];self.eachPoints(function(point){values.push(point.value)});return values};var scaleOptions={templateString:this.options.scaleLabel,height:this.chart.height,width:this.chart.width,ctx:this.chart.ctx,textColor:this.options.scaleFontColor,fontSize:this.options.scaleFontSize,fontStyle:this.options.scaleFontStyle,fontFamily:this.options.scaleFontFamily,valuesCount:labels.length,beginAtZero:this.options.scaleBeginAtZero,integersOnly:this.options.scaleIntegersOnly,calculateYRange:function(currentHeight){var updatedRanges=helpers.calculateScaleRange(dataTotal(),currentHeight,this.fontSize,this.beginAtZero,this.integersOnly);helpers.extend(this,updatedRanges)},xLabels:labels,font:helpers.fontString(this.options.scaleFontSize,this.options.scaleFontStyle,this.options.scaleFontFamily),lineWidth:this.options.scaleLineWidth,lineColor:this.options.scaleLineColor,showHorizontalLines:this.options.scaleShowHorizontalLines,showVerticalLines:this.options.scaleShowVerticalLines,gridLineWidth:this.options.scaleShowGridLines?this.options.scaleGridLineWidth:0,gridLineColor:this.options.scaleShowGridLines?this.options.scaleGridLineColor:"rgba(0,0,0,0)",padding:this.options.showScale?0:this.options.pointDotRadius+this.options.pointDotStrokeWidth,showLabels:this.options.scaleShowLabels,display:this.options.showScale};if(this.options.scaleOverride){helpers.extend(scaleOptions,{calculateYRange:helpers.noop,steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth})}this.scale=new Chart.Scale(scaleOptions)},addData:function(valuesArray,label){helpers.each(valuesArray,function(value,datasetIndex){this.datasets[datasetIndex].points.push(new this.PointClass({value:value,label:label,x:this.scale.calculateX(this.scale.valuesCount+1),y:this.scale.endPoint,strokeColor:this.datasets[datasetIndex].pointStrokeColor,fillColor:this.datasets[datasetIndex].pointColor}))},this);this.scale.addXLabel(label);this.update()},removeData:function(){this.scale.removeXLabel();helpers.each(this.datasets,function(dataset){dataset.points.shift()},this);this.update()},reflow:function(){var newScaleProps=helpers.extend({height:this.chart.height,width:this.chart.width});this.scale.update(newScaleProps)},draw:function(ease){var easingDecimal=ease||1;this.clear();var ctx=this.chart.ctx;var hasValue=function(item){return item.value!==null},nextPoint=function(point,collection,index){return helpers.findNextWhere(collection,hasValue,index)||point},previousPoint=function(point,collection,index){return helpers.findPreviousWhere(collection,hasValue,index)||point};this.scale.draw(easingDecimal);helpers.each(this.datasets,function(dataset){var pointsWithValues=helpers.where(dataset.points,hasValue);helpers.each(dataset.points,function(point,index){if(point.hasValue()){point.transition({y:this.scale.calculateY(point.value),x:this.scale.calculateX(index)},easingDecimal)}},this);if(this.options.bezierCurve){helpers.each(pointsWithValues,function(point,index){var tension=index>0&&index<pointsWithValues.length-1?this.options.bezierCurveTension:0;point.controlPoints=helpers.splineCurve(previousPoint(point,pointsWithValues,index),point,nextPoint(point,pointsWithValues,index),tension);if(point.controlPoints.outer.y>this.scale.endPoint){point.controlPoints.outer.y=this.scale.endPoint}else if(point.controlPoints.outer.y<this.scale.startPoint){point.controlPoints.outer.y=this.scale.startPoint}if(point.controlPoints.inner.y>this.scale.endPoint){point.controlPoints.inner.y=this.scale.endPoint}else if(point.controlPoints.inner.y<this.scale.startPoint){point.controlPoints.inner.y=this.scale.startPoint}},this)}ctx.lineWidth=this.options.datasetStrokeWidth;ctx.strokeStyle=dataset.strokeColor;ctx.beginPath();helpers.each(pointsWithValues,function(point,index){if(index===0){ctx.moveTo(point.x,point.y)}else{if(this.options.bezierCurve){var previous=previousPoint(point,pointsWithValues,index);ctx.bezierCurveTo(previous.controlPoints.outer.x,previous.controlPoints.outer.y,point.controlPoints.inner.x,point.controlPoints.inner.y,point.x,point.y)}else{ctx.lineTo(point.x,point.y)}}},this);ctx.stroke();if(this.options.datasetFill&&pointsWithValues.length>0){ctx.lineTo(pointsWithValues[pointsWithValues.length-1].x,this.scale.endPoint);ctx.lineTo(pointsWithValues[0].x,this.scale.endPoint);ctx.fillStyle=dataset.fillColor;ctx.closePath();ctx.fill()}helpers.each(pointsWithValues,function(point){point.draw()})},this)}})}).call(this);(function(){"use strict";var root=this,Chart=root.Chart,helpers=Chart.helpers;var defaultConfig={scaleShowLabelBackdrop:true,scaleBackdropColor:"rgba(255,255,255,0.75)",scaleBeginAtZero:true,scaleBackdropPaddingY:2,scaleBackdropPaddingX:2,scaleShowLine:true,segmentShowStroke:true,segmentStrokeColor:"#fff",segmentStrokeWidth:2,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:true,animateScale:false,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'};Chart.Type.extend({name:"PolarArea",defaults:defaultConfig,initialize:function(data){this.segments=[];this.SegmentArc=Chart.Arc.extend({showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,ctx:this.chart.ctx,innerRadius:0,x:this.chart.width/2,y:this.chart.height/2});this.scale=new Chart.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,lineArc:true,width:this.chart.width,height:this.chart.height,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,valuesCount:data.length});this.updateScaleRange(data);this.scale.update();helpers.each(data,function(segment,index){this.addData(segment,index,true)},this);if(this.options.showTooltips){helpers.bindEvents(this,this.options.tooltipEvents,function(evt){var activeSegments=evt.type!=="mouseout"?this.getSegmentsAtEvent(evt):[];helpers.each(this.segments,function(segment){segment.restore(["fillColor"])});helpers.each(activeSegments,function(activeSegment){activeSegment.fillColor=activeSegment.highlightColor});this.showTooltip(activeSegments)})}this.render()},getSegmentsAtEvent:function(e){var segmentsArray=[];var location=helpers.getRelativePosition(e);helpers.each(this.segments,function(segment){if(segment.inRange(location.x,location.y))segmentsArray.push(segment)},this);return segmentsArray},addData:function(segment,atIndex,silent){var index=atIndex||this.segments.length;this.segments.splice(index,0,new this.SegmentArc({fillColor:segment.color,highlightColor:segment.highlight||segment.color,label:segment.label,value:segment.value,outerRadius:this.options.animateScale?0:this.scale.calculateCenterOffset(segment.value),circumference:this.options.animateRotate?0:this.scale.getCircumference(),startAngle:Math.PI*1.5}));if(!silent){this.reflow();this.update()}},removeData:function(atIndex){var indexToDelete=helpers.isNumber(atIndex)?atIndex:this.segments.length-1;this.segments.splice(indexToDelete,1);this.reflow();this.update()},calculateTotal:function(data){this.total=0;helpers.each(data,function(segment){this.total+=segment.value},this);this.scale.valuesCount=this.segments.length},updateScaleRange:function(datapoints){var valuesArray=[];helpers.each(datapoints,function(segment){valuesArray.push(segment.value)});var scaleSizes=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:helpers.calculateScaleRange(valuesArray,helpers.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);helpers.extend(this.scale,scaleSizes,{size:helpers.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2})},update:function(){this.calculateTotal(this.segments);helpers.each(this.segments,function(segment){segment.save()});this.reflow();this.render()},reflow:function(){helpers.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2});this.updateScaleRange(this.segments);this.scale.update();helpers.extend(this.scale,{xCenter:this.chart.width/2,yCenter:this.chart.height/2});helpers.each(this.segments,function(segment){segment.update({outerRadius:this.scale.calculateCenterOffset(segment.value)})},this)},draw:function(ease){var easingDecimal=ease||1;this.clear();helpers.each(this.segments,function(segment,index){segment.transition({circumference:this.scale.getCircumference(),outerRadius:this.scale.calculateCenterOffset(segment.value)},easingDecimal);segment.endAngle=segment.startAngle+segment.circumference;if(index===0){segment.startAngle=Math.PI*1.5}if(index<this.segments.length-1){this.segments[index+1].startAngle=segment.endAngle}segment.draw()},this);this.scale.draw()}})}).call(this);(function(){"use strict";var root=this,Chart=root.Chart,helpers=Chart.helpers;Chart.Type.extend({name:"Radar",defaults:{scaleShowLine:true,angleShowLineOut:true,scaleShowLabels:false,scaleBeginAtZero:true,angleLineColor:"rgba(0,0,0,.1)",angleLineWidth:1,pointLabelFontFamily:"'Arial'",pointLabelFontStyle:"normal",pointLabelFontSize:10,pointLabelFontColor:"#666",pointDot:true,pointDotRadius:3,pointDotStrokeWidth:1,pointHitDetectionRadius:20,datasetStroke:true,datasetStrokeWidth:2,datasetFill:true,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].strokeColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'},initialize:function(data){this.PointClass=Chart.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx});this.datasets=[];this.buildScale(data);if(this.options.showTooltips){helpers.bindEvents(this,this.options.tooltipEvents,function(evt){var activePointsCollection=evt.type!=="mouseout"?this.getPointsAtEvent(evt):[];this.eachPoints(function(point){point.restore(["fillColor","strokeColor"])});helpers.each(activePointsCollection,function(activePoint){activePoint.fillColor=activePoint.highlightFill;activePoint.strokeColor=activePoint.highlightStroke});this.showTooltip(activePointsCollection)})}helpers.each(data.datasets,function(dataset){var datasetObject={label:dataset.label||null,fillColor:dataset.fillColor,strokeColor:dataset.strokeColor,pointColor:dataset.pointColor,pointStrokeColor:dataset.pointStrokeColor,points:[]};this.datasets.push(datasetObject);helpers.each(dataset.data,function(dataPoint,index){var pointPosition;if(!this.scale.animation){pointPosition=this.scale.getPointPosition(index,this.scale.calculateCenterOffset(dataPoint))}datasetObject.points.push(new this.PointClass({value:dataPoint,label:data.labels[index],datasetLabel:dataset.label,x:this.options.animation?this.scale.xCenter:pointPosition.x,y:this.options.animation?this.scale.yCenter:pointPosition.y,strokeColor:dataset.pointStrokeColor,fillColor:dataset.pointColor,highlightFill:dataset.pointHighlightFill||dataset.pointColor,highlightStroke:dataset.pointHighlightStroke||dataset.pointStrokeColor
}))},this)},this);this.render()},eachPoints:function(callback){helpers.each(this.datasets,function(dataset){helpers.each(dataset.points,callback,this)},this)},getPointsAtEvent:function(evt){var mousePosition=helpers.getRelativePosition(evt),fromCenter=helpers.getAngleFromPoint({x:this.scale.xCenter,y:this.scale.yCenter},mousePosition);var anglePerIndex=Math.PI*2/this.scale.valuesCount,pointIndex=Math.round((fromCenter.angle-Math.PI*1.5)/anglePerIndex),activePointsCollection=[];if(pointIndex>=this.scale.valuesCount||pointIndex<0){pointIndex=0}if(fromCenter.distance<=this.scale.drawingArea){helpers.each(this.datasets,function(dataset){activePointsCollection.push(dataset.points[pointIndex])})}return activePointsCollection},buildScale:function(data){this.scale=new Chart.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,angleLineColor:this.options.angleLineColor,angleLineWidth:this.options.angleShowLineOut?this.options.angleLineWidth:0,pointLabelFontColor:this.options.pointLabelFontColor,pointLabelFontSize:this.options.pointLabelFontSize,pointLabelFontFamily:this.options.pointLabelFontFamily,pointLabelFontStyle:this.options.pointLabelFontStyle,height:this.chart.height,width:this.chart.width,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,labels:data.labels,valuesCount:data.datasets[0].data.length});this.scale.setScaleSize();this.updateScaleRange(data.datasets);this.scale.buildYLabels()},updateScaleRange:function(datasets){var valuesArray=function(){var totalDataArray=[];helpers.each(datasets,function(dataset){if(dataset.data){totalDataArray=totalDataArray.concat(dataset.data)}else{helpers.each(dataset.points,function(point){totalDataArray.push(point.value)})}});return totalDataArray}();var scaleSizes=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:helpers.calculateScaleRange(valuesArray,helpers.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);helpers.extend(this.scale,scaleSizes)},addData:function(valuesArray,label){this.scale.valuesCount++;helpers.each(valuesArray,function(value,datasetIndex){var pointPosition=this.scale.getPointPosition(this.scale.valuesCount,this.scale.calculateCenterOffset(value));this.datasets[datasetIndex].points.push(new this.PointClass({value:value,label:label,x:pointPosition.x,y:pointPosition.y,strokeColor:this.datasets[datasetIndex].pointStrokeColor,fillColor:this.datasets[datasetIndex].pointColor}))},this);this.scale.labels.push(label);this.reflow();this.update()},removeData:function(){this.scale.valuesCount--;this.scale.labels.shift();helpers.each(this.datasets,function(dataset){dataset.points.shift()},this);this.reflow();this.update()},update:function(){this.eachPoints(function(point){point.save()});this.reflow();this.render()},reflow:function(){helpers.extend(this.scale,{width:this.chart.width,height:this.chart.height,size:helpers.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2});this.updateScaleRange(this.datasets);this.scale.setScaleSize();this.scale.buildYLabels()},draw:function(ease){var easeDecimal=ease||1,ctx=this.chart.ctx;this.clear();this.scale.draw();helpers.each(this.datasets,function(dataset){helpers.each(dataset.points,function(point,index){if(point.hasValue()){point.transition(this.scale.getPointPosition(index,this.scale.calculateCenterOffset(point.value)),easeDecimal)}},this);ctx.lineWidth=this.options.datasetStrokeWidth;ctx.strokeStyle=dataset.strokeColor;ctx.beginPath();helpers.each(dataset.points,function(point,index){if(index===0){ctx.moveTo(point.x,point.y)}else{ctx.lineTo(point.x,point.y)}},this);ctx.closePath();ctx.stroke();ctx.fillStyle=dataset.fillColor;ctx.fill();helpers.each(dataset.points,function(point){if(point.hasValue()){point.draw()}})},this)}})}).call(this)},{}]},{},[]);var Chart=require("chart.js");var moment=require("moment");Chart.defaults.global.scaleLabel="<%= moment().add(value, 'days').format('YYYY/DD/MM') %>";var data={labels:["January","February","March","April","May","June","July"],datasets:[{label:"My First dataset",fillColor:"rgba(220,220,220,0.2)",strokeColor:"rgba(220,220,220,1)",pointColor:"rgba(220,220,220,1)",pointStrokeColor:"#fff",pointHighlightFill:"#fff",pointHighlightStroke:"rgba(220,220,220,1)",data:[65,59,80,81,56,55,40]},{label:"My Second dataset",fillColor:"rgba(151,187,205,0.2)",strokeColor:"rgba(151,187,205,1)",pointColor:"rgba(151,187,205,1)",pointStrokeColor:"#fff",pointHighlightFill:"#fff",pointHighlightStroke:"rgba(151,187,205,1)",data:[28,48,40,19,86,27,90]}]};var ctx=document.getElementById("canvas").getContext("2d");var myLineChart=new Chart(ctx).Line(data);
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"moment": "2.10.6",
"chart.js": "1.0.2"
}
}
<!-- contents of this file will be placed inside the <body> -->
<div style="width:30%">
<div>
<canvas id="canvas" height="450" width="600"></canvas>
</div>
</div>
<!-- contents of this file will be placed inside the <head> -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment