! function ( a ) { "use strict" ; function b ( a ) { this . owner = a } function c ( a , b ) { if ( Object . create ) b . prototype = Object . create ( a . prototype ) ; else { var c = function ( ) { } ; c . prototype = a . prototype , b . prototype = new c } return b . prototype . constructor = b , b } function d ( a ) { var b = this . internal = new e ( this ) ; b . loadConfig ( a ) , b . beforeInit ( a ) , b . init ( ) , b . afterInit ( a ) , function c ( a , b , d ) { Object . keys ( a ) . forEach ( function ( e ) { b [ e ] = a [ e ] . bind ( d ) , Object . keys ( a [ e ] ) . length > 0 && c ( a [ e ] , b [ e ] , d ) } ) } ( h , this , this ) } function e ( b ) { var c = this ; c . d3 = a . d3 ? a . d3 : "undefined" != typeof require ? require ( "d3" ) : void 0 , c . api = b , c . config = c . getDefaultConfig ( ) , c . data = { } , c . cache = { } , c . axes = { } } function f ( a ) { b . call ( this , a ) } function g ( a , b ) { function c ( a , b ) { a . attr ( "transform" , function ( a ) { return "translate(" + Math . ceil ( b ( a ) + u ) + ", 0)" } ) } function d ( a , b ) { a . attr ( "transform" , function ( a ) { return "translate(0," + Math . ceil ( b ( a ) ) + ")" } ) } function e ( a ) { var b = a [ 0 ] , c = a [ a . length - 1 ] ; return c > b ? [ b , c ] : [ c , b ] } function f ( a ) { var b , c , d = [ ] ; if ( a . ticks ) return a . ticks . apply ( a , n ) ; for ( c = a . domain ( ) , b = Math . ceil ( c [ 0 ] ) ; b < c [ 1 ] ; b ++ ) d . push ( b ) ; return d . length > 0 && d [ 0 ] > 0 && d . unshift ( d [ 0 ] - ( d [ 1 ] - d [ 0 ] ) ) , d } function g ( ) { var a , c = p . copy ( ) ; return b . isCategory && ( a = p . domain ( ) , c . domain ( [ a [ 0 ] , a [ 1 ] - 1 ] ) ) , c } function h ( a ) { var b = m ? m ( a ) : a ; return "undefined" != typeof b ? b : "" } function i ( a ) { if ( z ) return z ; var b = { h : 11.5 , w : 5.5 } ; return a . select ( "text" ) . text ( h ) . each ( function ( a ) { var c = this . getBoundingClientRect ( ) , d = h ( a ) , e = c . height , f = d ? c . width / d . length : void 0 ; e && f && ( b . h = e , b . w = f ) } ) . text ( "" ) , z = b , b } function j ( c ) { return b . withoutTransition ? c : a . transition ( c ) } function k ( m ) { m . each ( function ( ) { function m ( a , c ) { function d ( a , b ) { f = void 0 ; for ( var h = 1 ; h < b . length ; h ++ ) if ( " " === b . charAt ( h ) && ( f = h ) , e = b . substr ( 0 , h + 1 ) , g = U . w * e . length , g > c ) return d ( a . concat ( b . substr ( 0 , f ? f : h ) ) , b . slice ( f ? f + 1 : h ) ) ; return a . concat ( b ) } var e , f , g , i = h ( a ) , j = [ ] ; return "[object Array]" === Object . prototype . toString . call ( i ) ? i : ( ( ! c || 0 >= c ) && ( c = X ? 95 : b . isCategory ? Math . ceil ( F ( G [ 1 ] ) - F ( G [ 0 ] ) ) - 12 : 110 ) , d ( j , i + "" ) ) } function n ( a , b ) { var c = U . h ; return 0 === b && ( c = "left" === q || "right" === q ? - ( ( V [ a . index ] - 1 ) * ( U . h / 2 ) - 3 ) : ".71em" ) , c } function v ( a ) { var b = p ( a ) + ( o ? 0 : u ) ; return L [ 0 ] < b && b < L [ 1 ] ? r : 0 } function w ( a ) { return a ? a > 0 ? "start" : "end" : "middle" } function x ( a ) { return a ? "rotate(" + a + ")" : "" } function y ( a ) { return a ? 8 * Math . sin ( Math . PI * ( a / 180 ) ) : 0 } function z ( a ) { return a ? 11.5 - 2.5 * ( a / 15 ) * ( a > 0 ? 1 : - 1 ) : W } var A , B , C , D = k . g = a . select ( this ) , E = this . _ _chart _ _ || p , F = this . _ _chart _ _ = g ( ) , G = t ? t : f ( F ) , H = D . selectAll ( ".tick" ) . data ( G , F ) , I = H . enter ( ) . insert ( "g" , ".domain" ) . attr ( "class" , "tick" ) . style ( "opacity" , 1e-6 ) , J = H . exit ( ) . remove ( ) , K = j ( H ) . style ( "opacity" , 1 ) , L = p . rangeExtent ? p . rangeExtent ( ) : e ( p . range ( ) ) , M = D . selectAll ( ".domain" ) . data ( [ 0 ] ) , N = ( M . enter ( ) . append ( "path" ) . attr ( "class" , "domain" ) , j ( M ) ) ; I . append ( "line" ) , I . append ( "text" ) ; var O = I . select ( "line" ) , P = K . select ( "line" ) , Q = I . select ( "text" ) , R = K . select ( "text" ) ; b . isCategory ? ( u = Math . ceil ( ( F ( 1 ) - F ( 0 ) ) / 2 ) , B = o ? 0 : u , C = o ? u : 0 ) : u = B = 0 ; var S , T , U = i ( D . select ( ".tick" ) ) , V = [ ] , W = Math . max ( r , 0 ) + s , X = "left" === q || "right" === q ; S = H . select ( "text" ) , T = S . selectAll ( "tspan" ) . data ( function ( a , c ) { var d = b . tickMultiline ? m ( a , b . tickWidth ) : [ ] . concat ( h ( a ) ) ; return V [ c ] = d . length , d . map ( function ( a ) { return { index : c , splitted : a } } ) } ) , T . enter ( ) . append ( "tspan" ) , T . exit ( ) . remove ( ) , T . text ( function ( a ) { return a . splitted } ) ; var Y = b . tickTextRotate ; switch ( q ) { case "bottom" : A = c , O . attr ( "y2" , r ) , Q . attr ( "y" , W ) , P . attr ( "x1" , B ) . attr ( "x2" , B ) . attr ( "y2" , v ) , R . attr ( "x" , 0 ) . attr ( "y" , z ( Y ) ) . style ( "text-anchor" , w ( Y ) ) . attr ( "transform" , x ( Y ) ) , T . attr ( "x" , 0 ) . attr ( "dy" , n ) . attr ( "dx" , y ( Y ) ) , N . attr ( "d" , "M" + L [ 0 ] + "," + l + "V0H" + L [ 1 ] + "V" + l ) ; break ; case "top" : A = c , O . attr ( "y2" , - r ) , Q . attr ( "y" , - W ) , P . attr ( "x2" , 0 ) . attr ( "y2" , - r ) , R . attr ( "x" , 0 ) . attr ( "y" , - W ) , S . style ( "text-anchor" , "middle" ) , T . attr ( "x" , 0 ) . attr ( "dy" , "0em" ) , N . attr ( "d" , "M" + L [ 0 ] + "," + - l + "V0H" + L [ 1 ] + "V" + - l ) ; break ; case "left" : A = d , O . attr ( "x2" , - r ) , Q . attr ( "x" , - W ) , P . attr ( "x2" , - r ) . attr ( "y1" , C ) . attr ( "y2" , C ) , R . attr ( "x" , - W ) . attr ( "y" , u ) , S . style ( "text-anchor" , "end" ) , T . attr ( "x" , - W ) . attr ( "dy" , n ) , N . attr ( "d" , "M" + - l + "," + L [ 0 ] + "H0V" + L [ 1 ] + "H" + - l ) ; break ; case "right" : A = d , O . attr ( "x2" , r ) , Q . attr ( "x" , W ) , P . attr ( "x2" , r ) . attr ( "y2" , 0 ) , R . attr ( "x" , W ) . attr ( "y" , 0 ) , S . style ( "text-anchor" , "start" ) , T . attr ( "x" , W ) . attr ( "dy" , n ) , N . attr ( "d" , "M" + l + "," + L [ 0 ] +
0 === s . length ? "y2" === b ? p . y2 . domain ( ) : p . y . domain ( ) : ( isNaN ( x ) && ( x = 0 ) , isNaN ( y ) && ( y = x ) , x === y && ( 0 > x ? y = 0 : x = 0 ) , n = x >= 0 && y >= 0 , o = 0 >= x && 0 >= y , ( m ( u ) && n || m ( w ) && o ) && ( A = ! 1 ) , A && ( n && ( x = 0 ) , o && ( y = 0 ) ) , e = Math . abs ( y - x ) , f = g = h = . 1 * e , "undefined" != typeof z && ( i = Math . max ( Math . abs ( x ) , Math . abs ( y ) ) , y = z + i , x = z - i ) , C ? ( j = p . getDataLabelLength ( x , y , "width" ) , k = t ( p . y . range ( ) ) , l = [ j [ 0 ] / k , j [ 1 ] / k ] , g += e * ( l [ 1 ] / ( 1 - l [ 0 ] - l [ 1 ] ) ) , h += e * ( l [ 0 ] / ( 1 - l [ 0 ] - l [ 1 ] ) ) ) : D && ( j = p . getDataLabelLength ( x , y , "height" ) , g += p . axis . convertPixelsToAxisPadding ( j [ 1 ] , e ) , h += p . axis . convertPixelsToAxisPadding ( j [ 0 ] , e ) ) , "y" === b && v ( q . axis _y _padding ) && ( g = p . axis . getPadding ( q . axis _y _padding , "top" , g , e ) , h = p . axis . getPadding ( q . axis _y _padding , "bottom" , h , e ) ) , "y2" === b && v ( q . axis _y2 _padding ) && ( g = p . axis . getPadding ( q . axis _y2 _padding , "top" , g , e ) , h = p . axis . getPadding ( q . axis _y2 _padding , "bottom" , h , e ) ) , A && ( n && ( h = x ) , o && ( g = - y ) ) , d = [ x - h , y + g ] , B ? d . reverse ( ) : d ) } , i . getXDomainMin = function ( a ) { var b = this , c = b . config ; return q ( c . axis _x _min ) ? b . isTimeSeries ( ) ? this . parseDate ( c . axis _x _min ) : c . axis _x _min : b . d3 . min ( a , function ( a ) { return b . d3 . min ( a . values , function ( a ) { return a . x } ) } ) } , i . getXDomainMax = function ( a ) { var b = this , c = b . config ; return q ( c . axis _x _max ) ? b . isTimeSeries ( ) ? this . parseDate ( c . axis _x _max ) : c . axis _x _max : b . d3 . max ( a , function ( a ) { return b . d3 . max ( a . values , function ( a ) { return a . x } ) } ) } , i . getXDomainPadding = function ( a ) { var b , c , d , e , f = this , g = f . config , h = a [ 1 ] - a [ 0 ] ; return f . isCategorized ( ) ? c = 0 : f . hasType ( "bar" ) || f . hasType ( "candle-stick" ) ? ( b = f . getMaxDataCount ( ) , c = b > 1 ? h / ( b - 1 ) / 2 : . 5 ) : c = . 01 * h , "object" == typeof g . axis _x _padding && v ( g . axis _x _padding ) ? ( d = m ( g . axis _x _padding . left ) ? g . axis _x _padding . left : c , e = m ( g . axis _x _padding . right ) ? g . axis _x _padding . right : c ) : d = e = "number" == typeof g . axis _x _padding ? g . axis _x _padding : c , { left : d , right : e } } , i . getXDomain = function ( a ) { var b = this , c = [ b . getXDomainMin ( a ) , b . getXDomainMax ( a ) ] , d = c [ 0 ] , e = c [ 1 ] , f = b . getXDomainPadding ( c ) , g = 0 , h = 0 ; return d - e !== 0 || b . isCategorized ( ) || ( b . isTimeSeries ( ) ? ( d = new Date ( . 5 * d . getTime ( ) ) , e = new Date ( 1.5 * e . getTime ( ) ) ) : ( d = 0 === d ? 1 : . 5 * d , e = 0 === e ? - 1 : 1.5 * e ) ) , ( d || 0 === d ) && ( g = b . isTimeSeries ( ) ? new Date ( d . getTime ( ) - f . left ) : d - f . left ) , ( e || 0 === e ) && ( h = b . isTimeSeries ( ) ? new Date ( e . getTime ( ) + f . right ) : e + f . right ) , [ g , h ] } , i . updateXDomain = function ( a , b , c , d , e ) { var f = this , g = f . config ; return c && ( f . x . domain ( e ? e : f . d3 . extent ( f . getXDomain ( a ) ) ) , f . orgXDomain = f . x . domain ( ) , g . zoom _enabled && f . zoom . scale ( f . x ) . updateScaleExtent ( ) , f . subX . domain ( f . x . domain ( ) ) , f . brush && f . brush . scale ( f . subX ) ) , b && ( f . x . domain ( e ? e : ! f . brush || f . brush . empty ( ) ? f . orgXDomain : f . brush . extent ( ) ) , g . zoom _enabled && f . zoom . scale ( f . x ) . updateScaleExtent ( ) ) , d && f . x . domain ( f . trimXDomain ( f . x . orgDomain ( ) ) ) , f . x . domain ( ) } , i . trimXDomain = function ( a ) { var b = this . getZoomDomain ( ) , c = b [ 0 ] , d = b [ 1 ] ; return a [ 0 ] <= c && ( a [ 1 ] = + a [ 1 ] + ( c - a [ 0 ] ) , a [ 0 ] = c ) , d <= a [ 1 ] && ( a [ 0 ] = + a [ 0 ] - ( a [ 1 ] - d ) , a [ 1 ] = d ) , a } , i . isX = function ( a ) { var b = this , c = b . config ; return c . data _x && a === c . data _x || v ( c . data _xs ) && x ( c . data _xs , a ) } , i . isNotX = function ( a ) { return ! this . isX ( a ) } , i . getXKey = function ( a ) { var b = this , c = b . config ; return c . data _x ? c . data _x : v ( c . data _xs ) ? c . data _xs [ a ] : null } , i . getXValuesOfXKey = function ( a , b ) { var c , d = this , e = b && v ( b ) ? d . mapToIds ( b ) : [ ] ; return e . forEach ( function ( b ) { d . getXKey ( b ) === a && ( c = d . data . xs [ b ] ) } ) , c } , i . getIndexByX = function ( a ) { var b = this , c = b . filterByX ( b . data . targets , a ) ; return c . length ? c [ 0 ] . index : null } , i . getXValue = function ( a , b ) { var c = this ; return a in c . data . xs && c . data . xs [ a ] && m ( c . data . xs [ a ] [ b ] ) ? c . data . xs [ a ] [ b ] : b } , i . getOtherTargetXs = function ( ) { var a = this , b = Object . keys ( a . data . xs ) ; return b . length ? a . data . xs [ b [ 0 ] ] : null } , i . getOtherTargetX = function ( a ) { var b = this . getOtherTargetXs ( ) ; return b && a < b . length ? b [ a ] : null } , i . addXs = function ( a ) { var b = this ; Object . keys ( a ) . forEach ( function ( c ) { b . config . data _xs [ c ] = a [ c ] } ) } , i . hasMultipleX = function ( a ) { return this . d3 . set ( Object . keys ( a ) . map ( function ( b ) { return a [ b ] } ) ) . size ( ) > 1 } , i . isMultipleX = function ( ) { return v ( this . config . data _xs ) || ! this . config . data _xSort || this . hasType ( "scatter" ) } , i . addName = function ( a ) { var b , c = this ; return a && ( b = c . config . data _names [ a . id ] , a . name = void 0 !== b ? b : a . id ) , a } , i . getValueOnIndex = function ( a , b ) { var c = a . filter ( function ( a ) { return a . index === b } ) ; return c . length ? c [ 0 ] : null } , i . updateTargetX = function ( a , b ) { var c = this ; a . forEach ( function ( a
var b = this , c = b . config ; return b . isStepType ( a ) ? 0 : n ( c . point _r ) ? c . point _r ( a ) : c . point _r } , i . pointExpandedR = function ( a ) { var b = this , c = b . config ; return c . point _focus _expand _enabled ? c . point _focus _expand _r ? c . point _focus _expand _r : 1.75 * b . pointR ( a ) : b . pointR ( a ) } , i . pointSelectR = function ( a ) { var b = this , c = b . config ; return c . point _select _r ? c . point _select _r : 4 * b . pointR ( a ) } , i . isWithinCircle = function ( a , b ) { var c = this . d3 , d = c . mouse ( a ) , e = c . select ( a ) , f = + e . attr ( "cx" ) , g = + e . attr ( "cy" ) ; return Math . sqrt ( Math . pow ( f - d [ 0 ] , 2 ) + Math . pow ( g - d [ 1 ] , 2 ) ) < b } , i . isWithinStep = function ( a , b ) { return Math . abs ( b - this . d3 . mouse ( a ) [ 1 ] ) < 30 } , i . initBar = function ( ) { var a = this ; a . main . select ( "." + l . chart ) . append ( "g" ) . attr ( "class" , l . chartBars ) } , i . updateTargetsForBar = function ( a ) { var b , c , d = this , e = d . config , f = d . classChartBar . bind ( d ) , g = d . classBars . bind ( d ) , h = d . classFocus . bind ( d ) ; b = d . main . select ( "." + l . chartBars ) . selectAll ( "." + l . chartBar ) . data ( a ) . attr ( "class" , function ( a ) { return f ( a ) + h ( a ) } ) , c = b . enter ( ) . append ( "g" ) . attr ( "class" , f ) . style ( "opacity" , 0 ) . style ( "pointer-events" , "none" ) , c . append ( "g" ) . attr ( "class" , g ) . style ( "cursor" , function ( a ) { return e . data _selection _isselectable ( a ) ? "pointer" : null } ) } , i . updateBar = function ( a ) { var b = this , c = b . barData . bind ( b ) , d = b . classBar . bind ( b ) , e = b . initialOpacity . bind ( b ) , f = function ( a ) { return b . color ( a . id ) } ; b . mainBar = b . main . selectAll ( "." + l . bars ) . selectAll ( "." + l . bar ) . data ( c ) , b . mainBar . enter ( ) . append ( "path" ) . attr ( "class" , d ) . style ( "stroke" , f ) . style ( "fill" , f ) , b . mainBar . style ( "opacity" , e ) , b . mainBar . exit ( ) . transition ( ) . duration ( a ) . style ( "opacity" , 0 ) . remove ( ) } , i . redrawBar = function ( a , b ) { return [ ( b ? this . mainBar . transition ( Math . random ( ) . toString ( ) ) : this . mainBar ) . attr ( "d" , a ) . style ( "fill" , this . color ) . style ( "opacity" , 1 ) ] } , i . getBarW = function ( a , b ) { var c = this , d = c . config , e = "number" == typeof d . bar _width ? d . bar _width : b ? a . tickInterval ( ) * d . bar _width _ratio / b : 0 ; return d . bar _width _max && e > d . bar _width _max ? d . bar _width _max : e } , i . getBars = function ( a , b ) { var c = this ; return ( b ? c . main . selectAll ( "." + l . bars + c . getTargetSelectorSuffix ( b ) ) : c . main ) . selectAll ( "." + l . bar + ( m ( a ) ? "-" + a : "" ) ) } , i . expandBars = function ( a , b , c ) { var d = this ; c && d . unexpandBars ( ) , d . getBars ( a , b ) . classed ( l . EXPANDED , ! 0 ) } , i . unexpandBars = function ( a ) { var b = this ; b . getBars ( a ) . classed ( l . EXPANDED , ! 1 ) } , i . generateDrawBar = function ( a , b ) { var c = this , d = c . config , e = c . generateGetBarPoints ( a , b ) ; return function ( a , b ) { var c = e ( a , b ) , f = d . axis _rotated ? 1 : 0 , g = d . axis _rotated ? 0 : 1 , h = "M " + c [ 0 ] [ f ] + "," + c [ 0 ] [ g ] + " L" + c [ 1 ] [ f ] + "," + c [ 1 ] [ g ] + " L" + c [ 2 ] [ f ] + "," + c [ 2 ] [ g ] + " L" + c [ 3 ] [ f ] + "," + c [ 3 ] [ g ] + " z" ; return h } } , i . generateGetBarPoints = function ( a , b ) { var c = this , d = b ? c . subXAxis : c . xAxis , e = a . _ _max _ _ + 1 , f = c . getBarW ( d , e ) , g = c . getShapeX ( f , e , a , ! ! b ) , h = c . getShapeY ( ! ! b ) , i = c . getShapeOffset ( c . isBarType , a , ! ! b ) , j = b ? c . getSubYScale : c . getYScale ; return function ( a , b ) { var d = j . call ( c , a . id ) ( 0 ) , e = i ( a , b ) || d , k = g ( a ) , l = h ( a ) ; return c . config . axis _rotated && ( 0 < a . value && d > l || a . value < 0 && l > d ) && ( l = d ) , [ [ k , e ] , [ k , l - ( d - e ) ] , [ k + f , l - ( d - e ) ] , [ k + f , e ] ] } } , i . isWithinBar = function ( a ) { var b = this . d3 . mouse ( a ) , c = a . getBoundingClientRect ( ) , d = a . pathSegList . getItem ( 0 ) , e = a . pathSegList . getItem ( 1 ) , f = Math . min ( d . x , e . x ) , g = Math . min ( d . y , e . y ) , h = c . width , i = c . height , j = 2 , k = f - j , l = f + h + j , m = g + i + j , n = g - j ; return k < b [ 0 ] && b [ 0 ] < l && n < b [ 1 ] && b [ 1 ] < m } , i . initCandleStick = function ( ) { var a = this ; a . main . select ( "." + l . chart ) . append ( "g" ) . attr ( "class" , l . chartCandleSticks ) } , i . convertTargetsForCandleStick = function ( a ) { var b = this , c = b . config , d = ( a . filter ( function ( a ) { return a . id === c . candlestick _data _min } ) [ 0 ] || { } ) . values , e = ( a . filter ( function ( a ) { return a . id === c . candlestick _data _max } ) [ 0 ] || { } ) . values , f = ( a . filter ( function ( a ) { return a . id === c . candlestick _data _start } ) [ 0 ] || { } ) . values , g = ( a . filter ( function ( a ) { return a . id === c . candlestick _data _end } ) [ 0 ] || { } ) . values ; if ( ! d ) throw new Error ( "No min values found at " + c . candlestick _data _min + " data property!" ) ; if ( ! e ) throw new Error ( "No max values found at " + c . candlestick _data _max + " data property!" ) ; if ( ! f ) throw new Error ( "No start values found at " + c . candlestick _data _start + " data property!" ) ; if ( ! g ) throw new Error ( "No end values found at " + c . candlestick _data _end + " data property!" ) ; var h = Math . max ( d . length , e . length , f . length , g . length ) ; if ( d . length !== h ) throw new Error ( " Not enough min valu
return i . parseDate ( a ) } ) ) , l . tickFormat ( c ) . tickValues ( d ) , i . isCategorized ( ) && ( l . tickCentered ( j . axis _x _tick _centered ) , u ( j . axis _x _tick _culling ) && ( j . axis _x _tick _culling = ! 1 ) ) , l } , f . prototype . updateXAxisTickValues = function ( a , b ) { var c , d = this . owner , e = d . config ; return ( e . axis _x _tick _fit || e . axis _x _tick _count ) && ( c = this . generateTickValues ( d . mapTargetsToUniqueXs ( a ) , e . axis _x _tick _count , d . isTimeSeries ( ) ) ) , b ? b . tickValues ( c ) : ( d . xAxis . tickValues ( c ) , d . subXAxis . tickValues ( c ) ) , c } , f . prototype . getYAxis = function ( a , b , c , d , e , f , h ) { var i = this . owner , j = i . config , k = { withOuterTick : e , withoutTransition : f , tickTextRotate : h ? 0 : j . axis _y _tick _rotate } , l = g ( i . d3 , k ) . scale ( a ) . orient ( b ) . tickFormat ( c ) ; return i . isTimeSeriesY ( ) ? l . ticks ( i . d3 . time [ j . axis _y _tick _time _value ] , j . axis _y _tick _time _interval ) : l . tickValues ( d ) , l } , f . prototype . getId = function ( a ) { var b = this . owner . config ; return a in b . data _axes ? b . data _axes [ a ] : "y" } , f . prototype . getXAxisTickFormat = function ( ) { var a = this . owner , b = a . config , c = a . isTimeSeries ( ) ? a . defaultAxisTimeFormat : a . isCategorized ( ) ? a . categoryName : function ( a ) { return 0 > a ? a . toFixed ( 0 ) : a } ; return b . axis _x _tick _format && ( n ( b . axis _x _tick _format ) ? c = b . axis _x _tick _format : a . isTimeSeries ( ) && ( c = function ( c ) { return c ? a . axisTimeFormat ( b . axis _x _tick _format ) ( c ) : "" } ) ) , n ( c ) ? function ( b ) { return c . call ( a , b ) } : c } , f . prototype . getTickValues = function ( a , b ) { return a ? a : b ? b . tickValues ( ) : void 0 } , f . prototype . getXAxisTickValues = function ( ) { return this . getTickValues ( this . owner . config . axis _x _tick _values , this . owner . xAxis ) } , f . prototype . getYAxisTickValues = function ( ) { return this . getTickValues ( this . owner . config . axis _y _tick _values , this . owner . yAxis ) } , f . prototype . getY2AxisTickValues = function ( ) { return this . getTickValues ( this . owner . config . axis _y2 _tick _values , this . owner . y2Axis ) } , f . prototype . getLabelOptionByAxisId = function ( a ) { var b , c = this . owner , d = c . config ; return "y" === a ? b = d . axis _y _label : "y2" === a ? b = d . axis _y2 _label : "x" === a && ( b = d . axis _x _label ) , b } , f . prototype . getLabelText = function ( a ) { var b = this . getLabelOptionByAxisId ( a ) ; return o ( b ) ? b : b ? b . text : null } , f . prototype . setLabelText = function ( a , b ) { var c = this . owner , d = c . config , e = this . getLabelOptionByAxisId ( a ) ; o ( e ) ? "y" === a ? d . axis _y _label = b : "y2" === a ? d . axis _y2 _label = b : "x" === a && ( d . axis _x _label = b ) : e && ( e . text = b ) } , f . prototype . getLabelPosition = function ( a , b ) { var c = this . getLabelOptionByAxisId ( a ) , d = c && "object" == typeof c && c . position ? c . position : b ; return { isInner : d . indexOf ( "inner" ) >= 0 , isOuter : d . indexOf ( "outer" ) >= 0 , isLeft : d . indexOf ( "left" ) >= 0 , isCenter : d . indexOf ( "center" ) >= 0 , isRight : d . indexOf ( "right" ) >= 0 , isTop : d . indexOf ( "top" ) >= 0 , isMiddle : d . indexOf ( "middle" ) >= 0 , isBottom : d . indexOf ( "bottom" ) >= 0 } } , f . prototype . getXAxisLabelPosition = function ( ) { return this . getLabelPosition ( "x" , this . owner . config . axis _rotated ? "inner-top" : "inner-right" ) } , f . prototype . getYAxisLabelPosition = function ( ) { return this . getLabelPosition ( "y" , this . owner . config . axis _rotated ? "inner-right" : "inner-top" ) } , f . prototype . getY2AxisLabelPosition = function ( ) { return this . getLabelPosition ( "y2" , this . owner . config . axis _rotated ? "inner-right" : "inner-top" ) } , f . prototype . getLabelPositionById = function ( a ) { return "y2" === a ? this . getY2AxisLabelPosition ( ) : "y" === a ? this . getYAxisLabelPosition ( ) : this . getXAxisLabelPosition ( ) } , f . prototype . textForXAxisLabel = function ( ) { return this . getLabelText ( "x" ) } , f . prototype . textForYAxisLabel = function ( ) { return this . getLabelText ( "y" ) } , f . prototype . textForY2AxisLabel = function ( ) { return this . getLabelText ( "y2" ) } , f . prototype . xForAxisLabel = function ( a , b ) { var c = this . owner ; return a ? b . isLeft ? 0 : b . isCenter ? c . width / 2 : c . width : b . isBottom ? - c . height : b . isMiddle ? - c . height / 2 : 0 } , f . prototype . dxForAxisLabel = function ( a , b ) { return a ? b . isLeft ? "0.5em" : b . isRight ? "-0.5em" : "0" : b . isTop ? "-0.5em" : b . isBottom ? "0.5em" : "0" } , f . prototype . textAnchorForAxisLabel = function ( a , b ) { return a ? b . isLeft ? "start" : b . isCenter ? "middle" : "end" : b . isBottom ? "start" : b . isMiddle ? "middle" : "end" } , f . prototype . xForXAxisLabel = function ( ) { return this . xForAxisLabel ( ! this . owner . config . axis _rotated , this . getXAxisLabelPosition ( ) ) } , f . prototype . xForYAxisLabel = function ( ) { return this . xForAxisLabel ( this . owner . config . axis _rotated , this . getYAxisLabelPosition ( ) ) } , f . prototype . xForY2AxisLabel = function ( ) { return this . xForAxisLa
chartText : "c3-chart-text" , chartTexts : "c3-chart-texts" , chartArc : "c3-chart-arc" , chartArcs : "c3-chart-arcs" , chartArcsTitle : "c3-chart-arcs-title" , chartArcsBackground : "c3-chart-arcs-background" , chartArcsGaugeUnit : "c3-chart-arcs-gauge-unit" , chartArcsGaugeMax : "c3-chart-arcs-gauge-max" , chartArcsGaugeMin : "c3-chart-arcs-gauge-min" , selectedCircle : "c3-selected-circle" , selectedCircles : "c3-selected-circles" , eventRect : "c3-event-rect" , eventRects : "c3-event-rects" , eventRectsSingle : "c3-event-rects-single" , eventRectsMultiple : "c3-event-rects-multiple" , zoomRect : "c3-zoom-rect" , brush : "c3-brush" , focused : "c3-focused" , defocused : "c3-defocused" , region : "c3-region" , regions : "c3-regions" , title : "c3-title" , tooltipContainer : "c3-tooltip-container" , tooltip : "c3-tooltip" , tooltipName : "c3-tooltip-name" , shape : "c3-shape" , shapes : "c3-shapes" , line : "c3-line" , lines : "c3-lines" , bar : "c3-bar" , bars : "c3-bars" , circle : "c3-circle" , circles : "c3-circles" , arc : "c3-arc" , arcs : "c3-arcs" , candleStick : "c3-candle-stick" , candleStickShadowUpper : "c3-candle-stick-shadow-upper" , candleStickShadowLower : "c3-candle-stick-shadow-lower" , candleSticks : "c3-candle-sticks" , area : "c3-area" , areas : "c3-areas" , empty : "c3-empty" , text : "c3-text" , texts : "c3-texts" , gaugeValue : "c3-gauge-value" , grid : "c3-grid" , gridLines : "c3-grid-lines" , xgrid : "c3-xgrid" , xgrids : "c3-xgrids" , xgridLine : "c3-xgrid-line" , xgridLines : "c3-xgrid-lines" , xgridFocus : "c3-xgrid-focus" , ygrid : "c3-ygrid" , ygrids : "c3-ygrids" , ygridLine : "c3-ygrid-line" , ygridLines : "c3-ygrid-lines" , axis : "c3-axis" , axisX : "c3-axis-x" , axisXLabel : "c3-axis-x-label" , axisY : "c3-axis-y" , axisYLabel : "c3-axis-y-label" , axisY2 : "c3-axis-y2" , axisY2Label : "c3-axis-y2-label" , legendBackground : "c3-legend-background" , legendItem : "c3-legend-item" , legendItemEvent : "c3-legend-item-event" , legendItemTile : "c3-legend-item-tile" , legendItemHidden : "c3-legend-item-hidden" , legendItemFocused : "c3-legend-item-focused" , dragarea : "c3-dragarea" , EXPANDED : "_expanded_" , SELECTED : "_selected_" , INCLUDED : "_included_" } ; i . generateClass = function ( a , b ) { return " " + a + " " + a + this . getTargetSelectorSuffix ( b ) } , i . classText = function ( a ) { return this . generateClass ( l . text , a . index ) } , i . classTexts = function ( a ) { return this . generateClass ( l . texts , a . id ) } , i . classShape = function ( a ) { return this . generateClass ( l . shape , a . index ) } , i . classShapes = function ( a ) { return this . generateClass ( l . shapes , a . id ) } , i . classLine = function ( a ) { return this . classShape ( a ) + this . generateClass ( l . line , a . id ) } , i . classLines = function ( a ) { return this . classShapes ( a ) + this . generateClass ( l . lines , a . id ) } , i . classCircle = function ( a ) { return this . classShape ( a ) + this . generateClass ( l . circle , a . index ) } , i . classCircles = function ( a ) { return this . classShapes ( a ) + this . generateClass ( l . circles , a . id ) } , i . classBar = function ( a ) { return this . classShape ( a ) + this . generateClass ( l . bar , a . index ) } , i . classBars = function ( a ) { return this . classShapes ( a ) + this . generateClass ( l . bars , a . id ) } , i . classArc = function ( a ) { return this . classShape ( a . data ) + this . generateClass ( l . arc , a . data . id ) } , i . classArcs = function ( a ) { return this . classShapes ( a . data ) + this . generateClass ( l . arcs , a . data . id ) } , i . classCandleStick = function ( a ) { return this . classShapes ( a ) + this . generateClass ( l . candleStick , a . id ) } , i . classCandleStickShadowUpper = function ( a ) { return this . classShapes ( a ) + this . generateClass ( l . candleStickShadowUpper , a . id ) } , i . classCandleStickShadowLower = function ( a ) { return this . classShapes ( a ) + this . generateClass ( l . candleStickShadowLower , a . id ) } , i . classCandleSticks = function ( a ) { return this . classShapes ( a ) + this . generateClass ( l . candleSticks , a . id ) } , i . classArea = function ( a ) { return this . classShape ( a ) + this . generateClass ( l . area , a . id ) } , i . classAreas = function ( a ) { return this . classShapes ( a ) + this . generateClass ( l . areas , a . id ) } , i . classRegion = function ( a , b ) { return this . generateClass ( l . region , b ) + " " + ( "class" in a ? a [ "class" ] : "" ) } , i . classEvent = function ( a ) { return this . generateClass ( l . eventRect , a . index ) } , i . classTarget = function ( a ) { var b = this , c = b . config . data _classes [ a ] , d = "" ; return c && ( d = " " + l . target + "-" + c ) , b . generateClass ( l . target , a ) + d } , i . classFocus = function ( a ) { return this . classFocused ( a ) + this . classDefocused ( a ) } , i . classFocused = function ( a ) { return " " + ( this . focusedTargetIds . indexOf ( a . id ) >= 0 ? l . focused : "" ) } , i . classDefocused = fun