( function ( n , t ) { function pe ( n ) { var t = ni [ n ] = { } ; return i . each ( n . split ( c ) , function ( n , i ) { t [ i ] = ! 0 } ) , t } function au ( n , r , u ) { if ( u === t && n . nodeType === 1 ) { var f = "data-" + r . replace ( vr , "-$1" ) . toLowerCase ( ) ; if ( u = n . getAttribute ( f ) , typeof u == "string" ) { try { u = u === "true" ? ! 0 : u === "false" ? ! 1 : u === "null" ? null : + u + "" === u ? + u : fi . test ( u ) ? i . parseJSON ( u ) : u } catch ( e ) { } i . data ( n , r , u ) } else u = t } return u } function ri ( n ) { var t ; for ( t in n ) if ( ( t !== "data" || ! i . isEmptyObject ( n [ t ] ) ) && t !== "toJSON" ) return ! 1 ; return ! 0 } function y ( ) { return ! 1 } function g ( ) { return ! 0 } function b ( n ) { return ! n || ! n . parentNode || n . parentNode . nodeType === 11 } function fu ( n , t ) { do n = n [ t ] ; while ( n && n . nodeType !== 1 ) ; return n } function ou ( n , t , r ) { if ( t = t || 0 , i . isFunction ( t ) ) return i . grep ( n , function ( n , i ) { var u = ! ! t . call ( n , i , n ) ; return u === r } ) ; if ( t . nodeType ) return i . grep ( n , function ( n ) { return n === t === r } ) ; if ( typeof t == "string" ) { var u = i . grep ( n , function ( n ) { return n . nodeType === 1 } ) ; if ( oe . test ( t ) ) return i . filter ( t , u , ! r ) ; t = i . filter ( t , u ) } return i . grep ( n , function ( n ) { return i . inArray ( n , t ) >= 0 === r } ) } function cu ( n ) { var i = vu . split ( "|" ) , t = n . createDocumentFragment ( ) ; if ( t . createElement ) while ( i . length ) t . createElement ( i . pop ( ) ) ; return t } function df ( n , t ) { return n . getElementsByTagName ( t ) [ 0 ] || n . appendChild ( n . ownerDocument . createElement ( t ) ) } function si ( n , t ) { if ( t . nodeType === 1 && i . hasData ( n ) ) { var u , f , o , s = i . _data ( n ) , r = i . _data ( t , s ) , e = s . events ; if ( e ) { delete r . handle , r . events = { } ; for ( u in e ) for ( f = 0 , o = e [ u ] . length ; f < o ; f ++ ) i . event . add ( t , u , e [ u ] [ f ] ) } r . data && ( r . data = i . extend ( { } , r . data ) ) } } function hi ( n , t ) { var r ; t . nodeType === 1 && ( t . clearAttributes && t . clearAttributes ( ) , t . mergeAttributes && t . mergeAttributes ( n ) , r = t . nodeName . toLowerCase ( ) , r === "object" ? ( t . parentNode && ( t . outerHTML = n . outerHTML ) , i . support . html5Clone && n . innerHTML && ! i . trim ( t . innerHTML ) && ( t . innerHTML = n . innerHTML ) ) : r === "input" && ru . test ( n . type ) ? ( t . defaultChecked = t . checked = n . checked , t . value !== n . value && ( t . value = n . value ) ) : r === "option" ? t . selected = n . defaultSelected : r === "input" || r === "textarea" ? t . defaultValue = n . defaultValue : r === "script" && t . text !== n . text && ( t . text = n . text ) , t . removeAttribute ( i . expando ) ) } function tt ( n ) { return typeof n . getElementsByTagName != "undefined" ? n . getElementsByTagName ( "*" ) : typeof n . querySelectorAll != "undefined" ? n . querySelectorAll ( "*" ) : [ ] } function li ( n ) { ru . test ( n . type ) && ( n . defaultChecked = n . checked ) } function gi ( n , t ) { if ( t in n ) return t ; for ( var r = t . charAt ( 0 ) . toUpperCase ( ) + t . slice ( 1 ) , u = t , i = ui . length ; i -- ; ) if ( t = ui [ i ] + r , t in n ) return t ; return u } function et ( n , t ) { return n = t || n , i . css ( n , "display" ) === "none" || ! i . contains ( n . ownerDocument , n ) } function nr ( n , t ) { for ( var r , o , e = [ ] , f = 0 , s = n . length ; f < s ; f ++ ) ( r = n [ f ] , r . style ) && ( e [ f ] = i . _data ( r , "olddisplay" ) , t ? ( e [ f ] || r . style . display !== "none" || ( r . style . display = "" ) , r . style . display === "" && et ( r ) && ( e [ f ] = i . _data ( r , "olddisplay" , ur ( r . nodeName ) ) ) ) : ( o = u ( r , "display" ) , e [ f ] || o === "none" || i . _data ( r , "olddisplay" , o ) ) ) ; for ( f = 0 ; f < s ; f ++ ) ( r = n [ f ] , r . style ) && ( t && r . style . display !== "none" && r . style . display !== "" || ( r . style . display = t ? e [ f ] || "" : "none" ) ) ; return n } function tr ( n , t , i ) { var r = ao . exec ( t ) ; return r ? Math . max ( 0 , r [ 1 ] - ( i || 0 ) ) + ( r [ 2 ] || "px" ) : t } function ir ( n , t , r , f ) { for ( var e = r === ( f ? "border" : "content" ) ? 4 : t === "width" ? 1 : 0 , o = 0 ; e < 4 ; e += 2 ) r === "margin" && ( o += i . css ( n , r + h [ e ] , ! 0 ) ) , f ? ( r === "content" && ( o -= parseFloat ( u ( n , "padding" + h [ e ] ) ) || 0 ) , r !== "margin" && ( o -= parseFloat ( u ( n , "border" + h [ e ] + "Width" ) ) || 0 ) ) : ( o += parseFloat ( u ( n , "padding" + h [ e ] ) ) || 0 , r !== "padding" && ( o += parseFloat ( u ( n , "border" + h [ e ] + "Width" ) ) || 0 ) ) ; return o } function rr ( n , t , r ) { var f = t === "width" ? n . offsetWidth : n . offsetHeight , e = ! 0 , o = i . support . boxSizing && i . css ( n , "boxSizing" ) === "border-box" ; if ( f <= 0 || f == null ) { if ( f = u ( n , t ) , ( f < 0 || f == null ) && ( f = n . style [ t ] ) , ft . test ( f ) ) return f ; e = o && ( i . support . boxSizingReliable || f === n . style [ t ] ) , f = parseFloat ( f ) || 0 } return f + ir ( n , t , r || ( o ? "border" : "content" ) , e ) + "px" } function ur ( n ) { if ( kt [ n ] ) return kt [ n ] ; var f = i ( "<" + n + ">" ) . appendTo ( r . body ) , t = f . css ( "display" ) ; return f . remove ( ) , ( t === "none" || t === "" ) && ( v = r . body . appendChild ( v || i . extend ( r . createElement ( "iframe" ) , { frameBorder : 0 , width : 0 , height : 0 } ) ) , w && v . createElement || ( w = ( v . contentWindow || v . contentDocument ) . document , w . write ( "<!doctype html><html><body>" ) , w . close ( ) ) , f = w . body . appendChild ( w . createElement ( n ) ) , t = u ( f , " disp