@ -5,82 +5,89 @@
*
* Copyright ( C ) 2011 - 2012 Hakim El Hattab , http : //hakim.se
* /
var Reveal = ( function ( ) { var m = ".reveal .slides>section" , b = ".reveal .slides>section.present>section" , T = { controls : true , progress : true , history : false , keyboard : true , overview : true , center : false , loop : false , autoSlide : 0 , mouseWheel : true , rollingLinks : true , theme : null , transition : "default" , dependencies : [ ] } , aa = T . autoSlide , n = 0 , e = 0 , z , H , am = [ ] , f = { } , V = "WebkitPerspective" in document . body . style || "MozPerspective" in document . body . style || "msPerspective" in document . body . style || "OPerspective" in document . body . style || "perspective" in document . body . style , o = "WebkitTransform" in document . body . style || "MozTransform" in document . body . style || "msTransform" in document . body . style || "OTransform" in document . body . style || "transform" in document . body . style , A = 0 , l = 0 , E = 0 , ae = { startX : 0 , startY : 0 , startSpan : 0 , startCount : 0 , handled : false , threshold : 80 } ;
function j ( an ) { if ( ( ! o && ! V ) ) { document . body . setAttribute ( "class" , "no-transforms" ) ; return ; } u ( T , an ) ; d ( ) ; X ( ) ; } function Q ( ) { f . theme = document . querySelector ( "#theme" ) ;
f . wrapper = document . querySelector ( ".reveal" ) ; if ( ! f . wrapper . querySelector ( ".progress" ) && T . progress ) { var aq = document . createElement ( "div" ) ; aq . classList . add ( "progress" ) ;
aq . innerHTML = "<span></span>" ; f . wrapper . appendChild ( aq ) ; } if ( ! f . wrapper . querySelector ( ".controls" ) && T . controls ) { var ap = document . createElement ( "aside" ) ; ap . classList . add ( "controls" ) ;
ap . innerHTML = '<div class="left"></div><div class="right"></div><div class="up"></div><div class="down"></div>' ; f . wrapper . appendChild ( ap ) ; } if ( ! f . wrapper . querySelector ( ".state-background" ) ) { var ao = document . createElement ( "div" ) ;
ao . classList . add ( "state-background" ) ; f . wrapper . appendChild ( ao ) ; } if ( ! f . wrapper . querySelector ( ".pause-overlay" ) ) { var an = document . createElement ( "div" ) ; an . classList . add ( "pause-overlay" ) ;
f . wrapper . appendChild ( an ) ; } f . progress = document . querySelector ( ".reveal .progress" ) ; f . progressbar = document . querySelector ( ".reveal .progress span" ) ; if ( T . controls ) { f . controls = document . querySelector ( ".reveal .controls" ) ;
f . controlsLeft = document . querySelector ( ".reveal .controls .left" ) ; f . controlsRight = document . querySelector ( ".reveal .controls .right" ) ; f . controlsUp = document . querySelector ( ".reveal .controls .up" ) ;
f . controlsDown = document . querySelector ( ".reveal .controls .down" ) ; } } function d ( ) { if ( navigator . userAgent . match ( /(iphone|ipod|android)/i ) ) { document . documentElement . style . overflow = "scroll" ;
document . body . style . height = "120%" ; window . addEventListener ( "load" , af , false ) ; window . addEventListener ( "orientationchange" , af , false ) ; } } function X ( ) { var ao = [ ] , at = [ ] ;
for ( var ap = 0 , an = T . dependencies . length ; ap < an ; ap ++ ) { var aq = T . dependencies [ ap ] ; if ( ! aq . condition || aq . condition ( ) ) { if ( aq . async ) { at . push ( aq . src ) ; } else { ao . push ( aq . src ) ;
} if ( typeof aq . callback === "function" ) { head . ready ( aq . src . match ( /([\w\d_\-]*)\.?[^\\\/]*$/i ) [ 0 ] , aq . callback ) ; } } } function ar ( ) { if ( at . length ) { head . js . apply ( null , at ) ;
} I ( ) ; } if ( ao . length ) { head . ready ( ar ) ; head . js . apply ( null , ao ) ; } else { ar ( ) ; } } function I ( ) { Q ( ) ; F ( ) ; L ( ) ; R ( ) ; K ( ) ; P ( ) ; setTimeout ( function ( ) { s ( "ready" , { indexh : n , indexv : e , currentSlide : H } ) ;
} , 1 ) ; } function L ( ) { if ( V === false ) { T . transition = "linear" ; } if ( T . controls && f . controls ) { f . controls . style . display = "block" ; } if ( T . progress && f . progress ) { f . progress . style . display = "block" ;
} if ( T . transition !== "default" ) { f . wrapper . classList . add ( T . transition ) ; } if ( T . center ) { f . wrapper . classList . add ( "center" ) ; } if ( T . mouseWheel ) { document . addEventListener ( "DOMMouseScroll" , p , false ) ;
document . addEventListener ( "mousewheel" , p , false ) ; } if ( T . rollingLinks ) { O ( ) ; } if ( T . theme && f . theme ) { var ap = f . theme . getAttribute ( "href" ) ; var an = /[^\/]*?(?=\.css)/ ;
var ao = ap . match ( an ) [ 0 ] ; if ( T . theme !== ao ) { ap = ap . replace ( an , T . theme ) ; f . theme . setAttribute ( "href" , ap ) ; } } } function F ( ) { document . addEventListener ( "touchstart" , B , false ) ;
document . addEventListener ( "touchmove" , ah , false ) ; document . addEventListener ( "touchend" , Y , false ) ; window . addEventListener ( "hashchange" , x , false ) ; window . addEventListener ( "resize" , g , false ) ;
if ( T . keyboard ) { document . addEventListener ( "keydown" , aj , false ) ; } if ( T . progress && f . progress ) { f . progress . addEventListener ( "click" , r ( ak ) , false ) ; } if ( T . controls && f . controls ) { f . controlsLeft . addEventListener ( "click" , r ( C ) , false ) ;
f . controlsRight . addEventListener ( "click" , r ( k ) , false ) ; f . controlsUp . addEventListener ( "click" , r ( v ) , false ) ; f . controlsDown . addEventListener ( "click" , r ( G ) , false ) ;
} } function W ( ) { document . removeEventListener ( "keydown" , aj , false ) ; document . removeEventListener ( "touchstart" , B , false ) ; document . removeEventListener ( "touchmove" , ah , false ) ;
document . removeEventListener ( "touchend" , Y , false ) ; window . removeEventListener ( "hashchange" , x , false ) ; window . removeEventListener ( "resize" , g , false ) ; if ( T . progress && f . progress ) { f . progress . removeEventListener ( "click" , r ( ak ) , false ) ;
} if ( T . controls && f . controls ) { f . controlsLeft . removeEventListener ( "click" , r ( C ) , false ) ; f . controlsRight . removeEventListener ( "click" , r ( k ) , false ) ; f . controlsUp . removeEventListener ( "click" , r ( v ) , false ) ;
f . controlsDown . removeEventListener ( "click" , r ( G ) , false ) ; } } function u ( ao , an ) { for ( var ap in an ) { ao [ ap ] = an [ ap ] ; } } function U ( ap , an ) { var aq = ap . x - an . x , ao = ap . y - an . y ;
return Math . sqrt ( aq * aq + ao * ao ) ; } function r ( an ) { return function ( ao ) { ao . preventDefault ( ) ; an . call ( null , ao ) ; } ; } function af ( ) { setTimeout ( function ( ) { window . scrollTo ( 0 , 1 ) ;
} , 0 ) ; } function s ( ao , an ) { var ap = document . createEvent ( "HTMLEvents" , 1 , 2 ) ; ap . initEvent ( ao , true , true ) ; u ( ap , an ) ; f . wrapper . dispatchEvent ( ap ) ; } function O ( ) { if ( V && ! ( "msPerspective" in document . body . style ) ) { var ao = document . querySelectorAll ( ".reveal .slides section a:not(.image)" ) ;
for ( var ap = 0 , an = ao . length ; ap < an ; ap ++ ) { var aq = ao [ ap ] ; if ( aq . textContent && ! aq . querySelector ( "img" ) && ( ! aq . className || ! aq . classList . contains ( aq , "roll" ) ) ) { aq . classList . add ( "roll" ) ;
aq . innerHTML = '<span data-title="' + aq . text + '">' + aq . innerHTML + "</span>" ; } } } } function R ( ) { if ( T . center ) { var aq = Array . prototype . slice . call ( document . querySelectorAll ( ".reveal .slides section" ) ) ;
var ar = - f . wrapper . offsetHeight / 2 ; for ( var ap = 0 , ao = aq . length ; ap < ao ; ap ++ ) { var an = aq [ ap ] ; if ( an . classList . contains ( "stack" ) ) { an . style . top = 0 ; } else { an . style . top = Math . max ( - ( an . offsetHeight / 2 ) - 20 , ar ) + "px" ;
} } } } function J ( ) { if ( T . overview ) { f . wrapper . classList . add ( "overview" ) ; var an = document . querySelectorAll ( m ) ; for ( var at = 0 , aq = an . length ; at < aq ; at ++ ) { var ap = an [ at ] , ax = "translateZ(-2500px) translate(" + ( ( at - n ) * 105 ) + "%, 0%)" ;
ap . setAttribute ( "data-index-h" , at ) ; ap . style . display = "block" ; ap . style . WebkitTransform = ax ; ap . style . MozTransform = ax ; ap . style . msTransform = ax ; ap . style . OTransform = ax ;
ap . style . transform = ax ; if ( ! ap . classList . contains ( "stack" ) ) { ap . addEventListener ( "click" , D , true ) ; } var aw = ap . querySelectorAll ( "section" ) ; for ( var ar = 0 , ao = aw . length ;
ar < ao ; ar ++ ) { var av = aw [ ar ] , au = "translate(0%, " + ( ( ar - ( at === n ? e : 0 ) ) * 105 ) + "%)" ; av . setAttribute ( "data-index-h" , at ) ; av . setAttribute ( "data-index-v" , ar ) ; av . style . display = "block" ;
av . style . WebkitTransform = au ; av . style . MozTransform = au ; av . style . msTransform = au ; av . style . OTransform = au ; av . style . transform = au ; av . addEventListener ( "click" , D , true ) ;
} } } } function ag ( ) { if ( T . overview ) { f . wrapper . classList . remove ( "overview" ) ; var aq = Array . prototype . slice . call ( document . querySelectorAll ( ".reveal .slides section" ) ) ;
for ( var ap = 0 , an = aq . length ; ap < an ; ap ++ ) { var ao = aq [ ap ] ; ao . style . WebkitTransform = "" ; ao . style . MozTransform = "" ; ao . style . msTransform = "" ; ao . style . OTransform = "" ;
ao . style . transform = "" ; ao . removeEventListener ( "click" , D ) ; } a ( ) ; } } function Z ( an ) { if ( typeof an === "boolean" ) { an ? J ( ) : ag ( ) ; } else { M ( ) ? ag ( ) : J ( ) ; } } function M ( ) { return f . wrapper . classList . contains ( "overview" ) ;
} function ad ( ) { var an = document . body ; var ao = an . requestFullScreen || an . webkitRequestFullScreen || an . mozRequestFullScreen || an . msRequestFullScreen ; if ( ao ) { ao . apply ( an ) ;
} } function c ( ) { f . wrapper . classList . add ( "paused" ) ; } function q ( ) { f . wrapper . classList . remove ( "paused" ) ; } function ac ( ) { if ( ai ( ) ) { q ( ) ; } else { c ( ) ; } } function ai ( ) { return f . wrapper . classList . contains ( "paused" ) ;
} function a ( au , ay ) { z = H ; var aq = am . concat ( ) ; am . length = 0 ; var ax = n , ao = e ; n = al ( m , au === undefined ? n : au ) ; e = al ( b , ay === undefined ? e : ay ) ; R ( ) ; stateLoop : for ( var ar = 0 , av = am . length ;
ar < av ; ar ++ ) { for ( var ap = 0 ; ap < aq . length ; ap ++ ) { if ( aq [ ap ] === am [ ar ] ) { aq . splice ( ap , 1 ) ; continue stateLoop ; } } document . documentElement . classList . add ( am [ ar ] ) ; s ( am [ ar ] ) ;
} while ( aq . length ) { document . documentElement . classList . remove ( aq . pop ( ) ) ; } if ( T . progress && f . progress ) { f . progressbar . style . width = ( n / ( document . querySelectorAll ( m ) . length - 1 ) ) * window . innerWidth + "px" ;
} if ( M ( ) ) { J ( ) ; } t ( ) ; clearTimeout ( E ) ; E = setTimeout ( i , 1500 ) ; var an = document . querySelectorAll ( m ) ; var aw = an [ n ] , at = aw . querySelectorAll ( "section" ) ; H = at [ e ] || aw ; if ( n !== ax || e !== ao ) { s ( "slidechanged" , { indexh : n , indexv : e , previousSlide : z , currentSlide : H } ) ;
} else { z = null ; } if ( z ) { z . classList . remove ( "present" ) ; } } function al ( aq , aw ) { var ao = Array . prototype . slice . call ( document . querySelectorAll ( aq ) ) , av = ao . length ; if ( av ) { if ( T . loop ) { aw %= av ;
if ( aw < 0 ) { aw = av + aw ; } } aw = Math . max ( Math . min ( aw , av - 1 ) , 0 ) ; for ( var at = 0 ; at < av ; at ++ ) { var au = ao [ at ] ; if ( M ( ) === false ) { var an = Math . abs ( ( aw - at ) % ( av - 3 ) ) || 0 ; au . style . display = an > 3 ? "none" : "block" ;
} ao [ at ] . classList . remove ( "past" ) ; ao [ at ] . classList . remove ( "present" ) ; ao [ at ] . classList . remove ( "future" ) ; if ( at < aw ) { ao [ at ] . classList . add ( "past" ) ; } else { if ( at > aw ) { ao [ at ] . classList . add ( "future" ) ;
} } if ( au . querySelector ( "section" ) ) { ao [ at ] . classList . add ( "stack" ) ; } } ao [ aw ] . classList . add ( "present" ) ; var ap = ao [ aw ] . getAttribute ( "data-state" ) ; if ( ap ) { am = am . concat ( ap . split ( " " ) ) ;
} var ar = ao [ aw ] . getAttribute ( "data-autoslide" ) ; if ( ar ) { aa = parseInt ( ar ) ; } else { aa = T . autoSlide ; } } else { aw = 0 ; } return aw ; } function t ( ) { if ( T . controls && f . controls ) { var an = h ( ) ;
[ f . controlsLeft , f . controlsRight , f . controlsUp , f . controlsDown ] . forEach ( function ( ao ) { ao . classList . remove ( "enabled" ) ; } ) ; if ( an . left ) { f . controlsLeft . classList . add ( "enabled" ) ;
} if ( an . right ) { f . controlsRight . classList . add ( "enabled" ) ; } if ( an . up ) { f . controlsUp . classList . add ( "enabled" ) ; } if ( an . down ) { f . controlsDown . classList . add ( "enabled" ) ;
} } } function h ( ) { var an = document . querySelectorAll ( m ) , ao = document . querySelectorAll ( b ) ; return { left : n > 0 , right : n < an . length - 1 , up : e > 0 , down : e < ao . length - 1 } ; } function K ( ) { var at = window . location . hash ;
var ar = at . slice ( 2 ) . split ( "/" ) , ao = at . replace ( /#|\//gi , "" ) ; if ( isNaN ( parseInt ( ar [ 0 ] , 10 ) ) && ao . length ) { var ap = document . querySelector ( "#" + ao ) ; if ( ap ) { var au = Reveal . getIndices ( ap ) ;
a ( au . h , au . v ) ; } else { a ( n , e ) ; } } else { var aq = parseInt ( ar [ 0 ] , 10 ) || 0 , an = parseInt ( ar [ 1 ] , 10 ) || 0 ; a ( aq , an ) ; } } function i ( ) { if ( T . history ) { var an = "/" ; if ( H && typeof H . getAttribute ( "id" ) === "string" ) { an = "/" + H . getAttribute ( "id" ) ;
} else { if ( n > 0 || e > 0 ) { an += n ; } if ( e > 0 ) { an += "/" + e ; } } window . location . hash = an ; } } function N ( an ) { var ar = n , ap = e ; if ( an ) { var at = ! ! an . parentNode . nodeName . match ( /section/gi ) ;
var aq = at ? an . parentNode : an ; var ao = Array . prototype . slice . call ( document . querySelectorAll ( m ) ) ; ar = Math . max ( ao . indexOf ( aq ) , 0 ) ; if ( at ) { ap = Math . max ( Array . prototype . slice . call ( an . parentNode . children ) . indexOf ( an ) , 0 ) ;
} } return { h : ar , v : ap } ; } function w ( ) { if ( document . querySelector ( b + ".present" ) ) { var ao = document . querySelectorAll ( b + ".present .fragment:not(.visible)" ) ; if ( ao . length ) { ao [ 0 ] . classList . add ( "visible" ) ;
s ( "fragmentshown" , { fragment : ao [ 0 ] } ) ; return true ; } } else { var an = document . querySelectorAll ( m + ".present .fragment:not(.visible)" ) ; if ( an . length ) { an [ 0 ] . classList . add ( "visible" ) ;
s ( "fragmentshown" , { fragment : an [ 0 ] } ) ; return true ; } } return false ; } function S ( ) { if ( document . querySelector ( b + ".present" ) ) { var ao = document . querySelectorAll ( b + ".present .fragment.visible" ) ;
if ( ao . length ) { ao [ ao . length - 1 ] . classList . remove ( "visible" ) ; s ( "fragmenthidden" , { fragment : ao [ ao . length - 1 ] } ) ; return true ; } } else { var an = document . querySelectorAll ( m + ".present .fragment.visible" ) ;
if ( an . length ) { an [ an . length - 1 ] . classList . remove ( "visible" ) ; s ( "fragmenthidden" , { fragment : an [ an . length - 1 ] } ) ; return true ; } } return false ; } function P ( ) { clearTimeout ( l ) ;
if ( aa ) { l = setTimeout ( y , aa ) ; } } function C ( ) { if ( h ( ) . left && ( M ( ) || S ( ) === false ) ) { a ( n - 1 , 0 ) ; } } function k ( ) { if ( h ( ) . right && ( M ( ) || w ( ) === false ) ) { a ( n + 1 , 0 ) ; } } function v ( ) { if ( h ( ) . up && ( M ( ) || S ( ) === false ) ) { a ( n , e - 1 ) ;
} } function G ( ) { if ( h ( ) . down && ( M ( ) || w ( ) === false ) ) { a ( n , e + 1 ) ; } } function ab ( ) { if ( S ( ) === false ) { if ( h ( ) . up ) { v ( ) ; } else { var an = document . querySelector ( ".reveal .slides>section.past:nth-child(" + n + ")" ) ;
if ( an ) { e = ( an . querySelectorAll ( "section" ) . length + 1 ) || 0 ; n -- ; a ( ) ; } } } } function y ( ) { if ( w ( ) === false ) { h ( ) . down ? G ( ) : k ( ) ; } P ( ) ; } function aj ( ap ) { var ao = document . activeElement ;
var aq = ! ! ( document . activeElement && ( document . activeElement . type || document . activeElement . href || document . activeElement . contentEditable !== "inherit" ) ) ; if ( aq || ap . shiftKey || ap . altKey || ap . ctrlKey || ap . metaKey ) { return ;
} var an = true ; switch ( ap . keyCode ) { case 80 : case 33 : ab ( ) ; break ; case 78 : case 34 : y ( ) ; break ; case 72 : case 37 : C ( ) ; break ; case 76 : case 39 : k ( ) ; break ; case 75 : case 38 : v ( ) ;
break ; case 74 : case 40 : G ( ) ; break ; case 36 : a ( 0 ) ; break ; case 35 : a ( Number . MAX_VALUE ) ; break ; case 32 : M ( ) ? ag ( ) : y ( ) ; break ; case 13 : M ( ) ? ag ( ) : an = false ; break ; case 66 : case 190 : ac ( ) ;
break ; case 70 : ad ( ) ; break ; default : an = false ; } if ( an ) { ap . preventDefault ( ) ; } else { if ( ap . keyCode === 27 && V ) { Z ( ) ; ap . preventDefault ( ) ; } } P ( ) ; } function B ( an ) { ae . startX = an . touches [ 0 ] . clientX ;
ae . startY = an . touches [ 0 ] . clientY ; ae . startCount = an . touches . length ; if ( an . touches . length === 2 && T . overview ) { ae . startSpan = U ( { x : an . touches [ 1 ] . clientX , y : an . touches [ 1 ] . clientY } , { x : ae . startX , y : ae . startY } ) ;
} } function ah ( at ) { if ( ! ae . handled ) { var aq = at . touches [ 0 ] . clientX ; var ap = at . touches [ 0 ] . clientY ; if ( at . touches . length === 2 && ae . startCount === 2 && T . overview ) { var ar = U ( { x : at . touches [ 1 ] . clientX , y : at . touches [ 1 ] . clientY } , { x : ae . startX , y : ae . startY } ) ;
if ( Math . abs ( ae . startSpan - ar ) > ae . threshold ) { ae . handled = true ; if ( ar < ae . startSpan ) { J ( ) ; } else { ag ( ) ; } } at . preventDefault ( ) ; } else { if ( at . touches . length === 1 && ae . startCount !== 2 ) { var ao = aq - ae . startX , an = ap - ae . startY ;
if ( ao > ae . threshold && Math . abs ( ao ) > Math . abs ( an ) ) { ae . handled = true ; C ( ) ; } else { if ( ao < - ae . threshold && Math . abs ( ao ) > Math . abs ( an ) ) { ae . handled = true ; k ( ) ; } else { if ( an > ae . threshold ) { ae . handled = true ;
v ( ) ; } else { if ( an < - ae . threshold ) { ae . handled = true ; G ( ) ; } } } } at . preventDefault ( ) ; } } } else { if ( navigator . userAgent . match ( /android/gi ) ) { at . preventDefault ( ) ; } } } function Y ( an ) { ae . handled = false ;
} function p ( an ) { clearTimeout ( A ) ; A = setTimeout ( function ( ) { var ao = an . detail || - an . wheelDelta ; if ( ao > 0 ) { y ( ) ; } else { ab ( ) ; } } , 100 ) ; } function ak ( ao ) { var an = Array . prototype . slice . call ( document . querySelectorAll ( m ) ) . length ;
var ap = Math . floor ( ( ao . clientX / f . wrapper . offsetWidth ) * an ) ; a ( ap ) ; } function x ( an ) { K ( ) ; } function g ( an ) { R ( ) ; } function D ( an ) { if ( M ( ) ) { an . preventDefault ( ) ; ag ( ) ;
n = this . getAttribute ( "data-index-h" ) ; e = this . getAttribute ( "data-index-v" ) ; a ( ) ; } } return { initialize : j , slide : a , left : C , right : k , up : v , down : G , prev : ab , next : y , prevFragment : S , nextFragment : w , navigateTo : a , navigateLeft : C , navigateRight : k , navigateUp : v , navigateDown : G , navigatePrev : ab , navigateNext : y , toggleOverview : Z , addEventListeners : F , removeEventListeners : W , getIndices : N , getPreviousSlide : function ( ) { return z ;
} , getCurrentSlide : function ( ) { return H ; } , getQueryHash : function ( ) { var an = { } ; location . search . replace ( /[A-Z0-9]+?=(\w*)/gi , function ( ao ) { an [ ao . split ( "=" ) . shift ( ) ] = ao . split ( "=" ) . pop ( ) ;
} ) ; return an ; } , addEventListener : function ( ao , ap , an ) { if ( "addEventListener" in window ) { ( f . wrapper || document . querySelector ( ".reveal" ) ) . addEventListener ( ao , ap , an ) ;
} } , removeEventListener : function ( ao , ap , an ) { if ( "addEventListener" in window ) { ( f . wrapper || document . querySelector ( ".reveal" ) ) . removeEventListener ( ao , ap , an ) ;
var Reveal = ( function ( ) { var m = ".reveal .slides>section" , b = ".reveal .slides>section.present>section" , U = { controls : true , progress : true , history : false , keyboard : true , overview : true , center : false , loop : false , autoSlide : 0 , mouseWheel : true , rollingLinks : true , theme : null , transition : "default" , dependencies : [ ] } , ab = U . autoSlide , n = 0 , e = 0 , z , I , ao = [ ] , f = { } , W = "WebkitPerspective" in document . body . style || "MozPerspective" in document . body . style || "msPerspective" in document . body . style || "OPerspective" in document . body . style || "perspective" in document . body . style , o = "WebkitTransform" in document . body . style || "MozTransform" in document . body . style || "msTransform" in document . body . style || "OTransform" in document . body . style || "transform" in document . body . style , A = 0 , l = 0 , E = 0 , ag = { startX : 0 , startY : 0 , startSpan : 0 , startCount : 0 , handled : false , threshold : 80 } ;
function j ( ap ) { if ( ( ! o && ! W ) ) { document . body . setAttribute ( "class" , "no-transforms" ) ; return ; } u ( U , ap ) ; d ( ) ; Y ( ) ; } function R ( ) { f . theme = document . querySelector ( "#theme" ) ;
f . wrapper = document . querySelector ( ".reveal" ) ; if ( ! f . wrapper . querySelector ( ".progress" ) && U . progress ) { var at = document . createElement ( "div" ) ; at . classList . add ( "progress" ) ;
at . innerHTML = "<span></span>" ; f . wrapper . appendChild ( at ) ; } if ( ! f . wrapper . querySelector ( ".controls" ) && U . controls ) { var ar = document . createElement ( "aside" ) ; ar . classList . add ( "controls" ) ;
ar . innerHTML = '<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>' ; f . wrapper . appendChild ( ar ) ;
} if ( ! f . wrapper . querySelector ( ".state-background" ) ) { var aq = document . createElement ( "div" ) ; aq . classList . add ( "state-background" ) ; f . wrapper . appendChild ( aq ) ;
} if ( ! f . wrapper . querySelector ( ".pause-overlay" ) ) { var ap = document . createElement ( "div" ) ; ap . classList . add ( "pause-overlay" ) ; f . wrapper . appendChild ( ap ) ; } f . progress = document . querySelector ( ".reveal .progress" ) ;
f . progressbar = document . querySelector ( ".reveal .progress span" ) ; if ( U . controls ) { f . controls = document . querySelector ( ".reveal .controls" ) ; f . controlsLeft = H ( document . querySelectorAll ( ".navigate-left" ) ) ;
f . controlsRight = H ( document . querySelectorAll ( ".navigate-right" ) ) ; f . controlsUp = H ( document . querySelectorAll ( ".navigate-up" ) ) ; f . controlsDown = H ( document . querySelectorAll ( ".navigate-down" ) ) ;
f . controlsPrev = H ( document . querySelectorAll ( ".navigate-prev" ) ) ; f . controlsNext = H ( document . querySelectorAll ( ".navigate-next" ) ) ; } } function d ( ) { if ( navigator . userAgent . match ( /(iphone|ipod|android)/i ) ) { document . documentElement . style . overflow = "scroll" ;
document . body . style . height = "120%" ; window . addEventListener ( "load" , ah , false ) ; window . addEventListener ( "orientationchange" , ah , false ) ; } } function Y ( ) { var aq = [ ] , av = [ ] ;
for ( var ar = 0 , ap = U . dependencies . length ; ar < ap ; ar ++ ) { var at = U . dependencies [ ar ] ; if ( ! at . condition || at . condition ( ) ) { if ( at . async ) { av . push ( at . src ) ; } else { aq . push ( at . src ) ;
} if ( typeof at . callback === "function" ) { head . ready ( at . src . match ( /([\w\d_\-]*)\.?[^\\\/]*$/i ) [ 0 ] , at . callback ) ; } } } function au ( ) { if ( av . length ) { head . js . apply ( null , av ) ;
} J ( ) ; } if ( aq . length ) { head . ready ( au ) ; head . js . apply ( null , aq ) ; } else { au ( ) ; } } function J ( ) { R ( ) ; F ( ) ; M ( ) ; S ( ) ; L ( ) ; Q ( ) ; setTimeout ( function ( ) { s ( "ready" , { indexh : n , indexv : e , currentSlide : I } ) ;
} , 1 ) ; } function M ( ) { if ( W === false ) { U . transition = "linear" ; } if ( U . controls && f . controls ) { f . controls . style . display = "block" ; } if ( U . progress && f . progress ) { f . progress . style . display = "block" ;
} if ( U . transition !== "default" ) { f . wrapper . classList . add ( U . transition ) ; } if ( U . center ) { f . wrapper . classList . add ( "center" ) ; } if ( U . mouseWheel ) { document . addEventListener ( "DOMMouseScroll" , p , false ) ;
document . addEventListener ( "mousewheel" , p , false ) ; } if ( U . rollingLinks ) { P ( ) ; } if ( U . theme && f . theme ) { var ar = f . theme . getAttribute ( "href" ) ; var ap = /[^\/]*?(?=\.css)/ ;
var aq = ar . match ( ap ) [ 0 ] ; if ( U . theme !== aq ) { ar = ar . replace ( ap , U . theme ) ; f . theme . setAttribute ( "href" , ar ) ; } } } function F ( ) { document . addEventListener ( "touchstart" , B , false ) ;
document . addEventListener ( "touchmove" , aj , false ) ; document . addEventListener ( "touchend" , Z , false ) ; window . addEventListener ( "hashchange" , x , false ) ; window . addEventListener ( "resize" , g , false ) ;
if ( U . keyboard ) { document . addEventListener ( "keydown" , al , false ) ; } if ( U . progress && f . progress ) { f . progress . addEventListener ( "click" , r ( am ) , false ) ; } if ( U . controls && f . controls ) { f . controlsLeft . forEach ( function ( ap ) { ap . addEventListener ( "click" , r ( C ) , false ) ;
} ) ; f . controlsRight . forEach ( function ( ap ) { ap . addEventListener ( "click" , r ( k ) , false ) ; } ) ; f . controlsUp . forEach ( function ( ap ) { ap . addEventListener ( "click" , r ( v ) , false ) ;
} ) ; f . controlsDown . forEach ( function ( ap ) { ap . addEventListener ( "click" , r ( G ) , false ) ; } ) ; f . controlsPrev . forEach ( function ( ap ) { ap . addEventListener ( "click" , r ( ac ) , false ) ;
} ) ; f . controlsNext . forEach ( function ( ap ) { ap . addEventListener ( "click" , r ( y ) , false ) ; } ) ; } } function X ( ) { document . removeEventListener ( "keydown" , al , false ) ; document . removeEventListener ( "touchstart" , B , false ) ;
document . removeEventListener ( "touchmove" , aj , false ) ; document . removeEventListener ( "touchend" , Z , false ) ; window . removeEventListener ( "hashchange" , x , false ) ; window . removeEventListener ( "resize" , g , false ) ;
if ( U . progress && f . progress ) { f . progress . removeEventListener ( "click" , r ( am ) , false ) ; } if ( U . controls && f . controls ) { f . controlsLeft . forEach ( function ( ap ) { ap . removeEventListener ( "click" , r ( C ) , false ) ;
} ) ; f . controlsRight . forEach ( function ( ap ) { ap . removeEventListener ( "click" , r ( k ) , false ) ; } ) ; f . controlsUp . forEach ( function ( ap ) { ap . removeEventListener ( "click" , r ( v ) , false ) ;
} ) ; f . controlsDown . forEach ( function ( ap ) { ap . removeEventListener ( "click" , r ( G ) , false ) ; } ) ; f . controlsPrev . forEach ( function ( ap ) { ap . removeEventListener ( "click" , r ( ac ) , false ) ;
} ) ; f . controlsNext . forEach ( function ( ap ) { ap . removeEventListener ( "click" , r ( y ) , false ) ; } ) ; } } function u ( aq , ap ) { for ( var ar in ap ) { aq [ ar ] = ap [ ar ] ; } } function H ( ap ) { return Array . prototype . slice . call ( ap ) ;
} function ae ( ap , ar , aq ) { ap . forEach ( function ( at ) { at [ ar ] . apply ( at , aq ) ; } ) ; } function V ( ar , ap ) { var at = ar . x - ap . x , aq = ar . y - ap . y ; return Math . sqrt ( at * at + aq * aq ) ; } function r ( ap ) { return function ( aq ) { aq . preventDefault ( ) ;
ap . call ( null , aq ) ; } ; } function ah ( ) { setTimeout ( function ( ) { window . scrollTo ( 0 , 1 ) ; } , 0 ) ; } function s ( aq , ap ) { var ar = document . createEvent ( "HTMLEvents" , 1 , 2 ) ; ar . initEvent ( aq , true , true ) ;
u ( ar , ap ) ; f . wrapper . dispatchEvent ( ar ) ; } function P ( ) { if ( W && ! ( "msPerspective" in document . body . style ) ) { var aq = document . querySelectorAll ( ".reveal .slides section a:not(.image)" ) ;
for ( var ar = 0 , ap = aq . length ; ar < ap ; ar ++ ) { var at = aq [ ar ] ; if ( at . textContent && ! at . querySelector ( "img" ) && ( ! at . className || ! at . classList . contains ( at , "roll" ) ) ) { at . classList . add ( "roll" ) ;
at . innerHTML = '<span data-title="' + at . text + '">' + at . innerHTML + "</span>" ; } } } } function S ( ) { if ( U . center ) { var at = Array . prototype . slice . call ( document . querySelectorAll ( ".reveal .slides section" ) ) ;
var au = - f . wrapper . offsetHeight / 2 ; for ( var ar = 0 , aq = at . length ; ar < aq ; ar ++ ) { var ap = at [ ar ] ; if ( ap . classList . contains ( "stack" ) ) { ap . style . top = 0 ; } else { ap . style . top = Math . max ( - ( ap . offsetHeight / 2 ) - 20 , au ) + "px" ;
} } } } function K ( ) { if ( U . overview ) { f . wrapper . classList . add ( "overview" ) ; var ap = document . querySelectorAll ( m ) ; for ( var av = 0 , at = ap . length ; av < at ; av ++ ) { var ar = ap [ av ] , az = "translateZ(-2500px) translate(" + ( ( av - n ) * 105 ) + "%, 0%)" ;
ar . setAttribute ( "data-index-h" , av ) ; ar . style . display = "block" ; ar . style . WebkitTransform = az ; ar . style . MozTransform = az ; ar . style . msTransform = az ; ar . style . OTransform = az ;
ar . style . transform = az ; if ( ! ar . classList . contains ( "stack" ) ) { ar . addEventListener ( "click" , D , true ) ; } var ay = ar . querySelectorAll ( "section" ) ; for ( var au = 0 , aq = ay . length ;
au < aq ; au ++ ) { var ax = ay [ au ] , aw = "translate(0%, " + ( ( au - ( av === n ? e : 0 ) ) * 105 ) + "%)" ; ax . setAttribute ( "data-index-h" , av ) ; ax . setAttribute ( "data-index-v" , au ) ; ax . style . display = "block" ;
ax . style . WebkitTransform = aw ; ax . style . MozTransform = aw ; ax . style . msTransform = aw ; ax . style . OTransform = aw ; ax . style . transform = aw ; ax . addEventListener ( "click" , D , true ) ;
} } } } function ai ( ) { if ( U . overview ) { f . wrapper . classList . remove ( "overview" ) ; var at = Array . prototype . slice . call ( document . querySelectorAll ( ".reveal .slides section" ) ) ;
for ( var ar = 0 , ap = at . length ; ar < ap ; ar ++ ) { var aq = at [ ar ] ; aq . style . WebkitTransform = "" ; aq . style . MozTransform = "" ; aq . style . msTransform = "" ; aq . style . OTransform = "" ;
aq . style . transform = "" ; aq . removeEventListener ( "click" , D ) ; } a ( ) ; } } function aa ( ap ) { if ( typeof ap === "boolean" ) { ap ? K ( ) : ai ( ) ; } else { N ( ) ? ai ( ) : K ( ) ; } } function N ( ) { return f . wrapper . classList . contains ( "overview" ) ;
} function af ( ) { var ap = document . body ; var aq = ap . requestFullScreen || ap . webkitRequestFullScreen || ap . mozRequestFullScreen || ap . msRequestFullScreen ; if ( aq ) { aq . apply ( ap ) ;
} } function c ( ) { f . wrapper . classList . add ( "paused" ) ; } function q ( ) { f . wrapper . classList . remove ( "paused" ) ; } function ad ( ) { if ( ak ( ) ) { q ( ) ; } else { c ( ) ; } } function ak ( ) { return f . wrapper . classList . contains ( "paused" ) ;
} function a ( aw , aA ) { z = I ; var at = ao . concat ( ) ; ao . length = 0 ; var az = n , aq = e ; n = an ( m , aw === undefined ? n : aw ) ; e = an ( b , aA === undefined ? e : aA ) ; S ( ) ; stateLoop : for ( var au = 0 , ax = ao . length ;
au < ax ; au ++ ) { for ( var ar = 0 ; ar < at . length ; ar ++ ) { if ( at [ ar ] === ao [ au ] ) { at . splice ( ar , 1 ) ; continue stateLoop ; } } document . documentElement . classList . add ( ao [ au ] ) ; s ( ao [ au ] ) ;
} while ( at . length ) { document . documentElement . classList . remove ( at . pop ( ) ) ; } if ( U . progress && f . progress ) { f . progressbar . style . width = ( n / ( document . querySelectorAll ( m ) . length - 1 ) ) * window . innerWidth + "px" ;
} if ( N ( ) ) { K ( ) ; } t ( ) ; clearTimeout ( E ) ; E = setTimeout ( i , 1500 ) ; var ap = document . querySelectorAll ( m ) ; var ay = ap [ n ] , av = ay . querySelectorAll ( "section" ) ; I = av [ e ] || ay ; if ( n !== az || e !== aq ) { s ( "slidechanged" , { indexh : n , indexv : e , previousSlide : z , currentSlide : I } ) ;
} else { z = null ; } if ( z ) { z . classList . remove ( "present" ) ; } } function an ( at , ay ) { var aq = Array . prototype . slice . call ( document . querySelectorAll ( at ) ) , ax = aq . length ; if ( ax ) { if ( U . loop ) { ay %= ax ;
if ( ay < 0 ) { ay = ax + ay ; } } ay = Math . max ( Math . min ( ay , ax - 1 ) , 0 ) ; for ( var av = 0 ; av < ax ; av ++ ) { var aw = aq [ av ] ; if ( N ( ) === false ) { var ap = Math . abs ( ( ay - av ) % ( ax - 3 ) ) || 0 ; aw . style . display = ap > 3 ? "none" : "block" ;
} aq [ av ] . classList . remove ( "past" ) ; aq [ av ] . classList . remove ( "present" ) ; aq [ av ] . classList . remove ( "future" ) ; if ( av < ay ) { aq [ av ] . classList . add ( "past" ) ; } else { if ( av > ay ) { aq [ av ] . classList . add ( "future" ) ;
} } if ( aw . querySelector ( "section" ) ) { aq [ av ] . classList . add ( "stack" ) ; } } aq [ ay ] . classList . add ( "present" ) ; var ar = aq [ ay ] . getAttribute ( "data-state" ) ; if ( ar ) { ao = ao . concat ( ar . split ( " " ) ) ;
} var au = aq [ ay ] . getAttribute ( "data-autoslide" ) ; if ( au ) { ab = parseInt ( au ) ; } else { ab = U . autoSlide ; } } else { ay = 0 ; } return ay ; } function t ( ) { if ( U . controls && f . controls ) { var ap = h ( ) ;
f . controlsLeft . concat ( f . controlsRight ) . concat ( f . controlsUp ) . concat ( f . controlsDown ) . concat ( f . controlsPrev ) . concat ( f . controlsNext ) . forEach ( function ( aq ) { aq . classList . remove ( "enabled" ) ;
} ) ; if ( ap . left ) { f . controlsLeft . forEach ( function ( aq ) { aq . classList . add ( "enabled" ) ; } ) ; } if ( ap . right ) { f . controlsRight . forEach ( function ( aq ) { aq . classList . add ( "enabled" ) ;
} ) ; } if ( ap . up ) { f . controlsUp . forEach ( function ( aq ) { aq . classList . add ( "enabled" ) ; } ) ; } if ( ap . down ) { f . controlsDown . forEach ( function ( aq ) { aq . classList . add ( "enabled" ) ;
} ) ; } if ( ap . left || ap . up ) { f . controlsPrev . forEach ( function ( aq ) { aq . classList . add ( "enabled" ) ; } ) ; } if ( ap . right || ap . down ) { f . controlsNext . forEach ( function ( aq ) { aq . classList . add ( "enabled" ) ;
} ) ; } } } function h ( ) { var ap = document . querySelectorAll ( m ) , aq = document . querySelectorAll ( b ) ; return { left : n > 0 , right : n < ap . length - 1 , up : e > 0 , down : e < aq . length - 1 } ; } function L ( ) { var av = window . location . hash ;
var au = av . slice ( 2 ) . split ( "/" ) , aq = av . replace ( /#|\//gi , "" ) ; if ( isNaN ( parseInt ( au [ 0 ] , 10 ) ) && aq . length ) { var ar = document . querySelector ( "#" + aq ) ; if ( ar ) { var aw = Reveal . getIndices ( ar ) ;
a ( aw . h , aw . v ) ; } else { a ( n , e ) ; } } else { var at = parseInt ( au [ 0 ] , 10 ) || 0 , ap = parseInt ( au [ 1 ] , 10 ) || 0 ; a ( at , ap ) ; } } function i ( ) { if ( U . history ) { var ap = "/" ; if ( I && typeof I . getAttribute ( "id" ) === "string" ) { ap = "/" + I . getAttribute ( "id" ) ;
} else { if ( n > 0 || e > 0 ) { ap += n ; } if ( e > 0 ) { ap += "/" + e ; } } window . location . hash = ap ; } } function O ( ap ) { var au = n , ar = e ; if ( ap ) { var av = ! ! ap . parentNode . nodeName . match ( /section/gi ) ;
var at = av ? ap . parentNode : ap ; var aq = Array . prototype . slice . call ( document . querySelectorAll ( m ) ) ; au = Math . max ( aq . indexOf ( at ) , 0 ) ; if ( av ) { ar = Math . max ( Array . prototype . slice . call ( ap . parentNode . children ) . indexOf ( ap ) , 0 ) ;
} } return { h : au , v : ar } ; } function w ( ) { if ( document . querySelector ( b + ".present" ) ) { var aq = document . querySelectorAll ( b + ".present .fragment:not(.visible)" ) ; if ( aq . length ) { aq [ 0 ] . classList . add ( "visible" ) ;
s ( "fragmentshown" , { fragment : aq [ 0 ] } ) ; return true ; } } else { var ap = document . querySelectorAll ( m + ".present .fragment:not(.visible)" ) ; if ( ap . length ) { ap [ 0 ] . classList . add ( "visible" ) ;
s ( "fragmentshown" , { fragment : ap [ 0 ] } ) ; return true ; } } return false ; } function T ( ) { if ( document . querySelector ( b + ".present" ) ) { var aq = document . querySelectorAll ( b + ".present .fragment.visible" ) ;
if ( aq . length ) { aq [ aq . length - 1 ] . classList . remove ( "visible" ) ; s ( "fragmenthidden" , { fragment : aq [ aq . length - 1 ] } ) ; return true ; } } else { var ap = document . querySelectorAll ( m + ".present .fragment.visible" ) ;
if ( ap . length ) { ap [ ap . length - 1 ] . classList . remove ( "visible" ) ; s ( "fragmenthidden" , { fragment : ap [ ap . length - 1 ] } ) ; return true ; } } return false ; } function Q ( ) { clearTimeout ( l ) ;
if ( ab ) { l = setTimeout ( y , ab ) ; } } function C ( ) { if ( h ( ) . left && ( N ( ) || T ( ) === false ) ) { a ( n - 1 , 0 ) ; } } function k ( ) { if ( h ( ) . right && ( N ( ) || w ( ) === false ) ) { a ( n + 1 , 0 ) ; } } function v ( ) { if ( h ( ) . up && ( N ( ) || T ( ) === false ) ) { a ( n , e - 1 ) ;
} } function G ( ) { if ( h ( ) . down && ( N ( ) || w ( ) === false ) ) { a ( n , e + 1 ) ; } } function ac ( ) { if ( T ( ) === false ) { if ( h ( ) . up ) { v ( ) ; } else { var ap = document . querySelector ( ".reveal .slides>section.past:nth-child(" + n + ")" ) ;
if ( ap ) { e = ( ap . querySelectorAll ( "section" ) . length + 1 ) || 0 ; n -- ; a ( ) ; } } } } function y ( ) { if ( w ( ) === false ) { h ( ) . down ? G ( ) : k ( ) ; } Q ( ) ; } function al ( ar ) { var aq = document . activeElement ;
var at = ! ! ( document . activeElement && ( document . activeElement . type || document . activeElement . href || document . activeElement . contentEditable !== "inherit" ) ) ; if ( at || ar . shiftKey || ar . altKey || ar . ctrlKey || ar . metaKey ) { return ;
} var ap = true ; switch ( ar . keyCode ) { case 80 : case 33 : ac ( ) ; break ; case 78 : case 34 : y ( ) ; break ; case 72 : case 37 : C ( ) ; break ; case 76 : case 39 : k ( ) ; break ; case 75 : case 38 : v ( ) ;
break ; case 74 : case 40 : G ( ) ; break ; case 36 : a ( 0 ) ; break ; case 35 : a ( Number . MAX_VALUE ) ; break ; case 32 : N ( ) ? ai ( ) : y ( ) ; break ; case 13 : N ( ) ? ai ( ) : ap = false ; break ; case 66 : case 190 : ad ( ) ;
break ; case 70 : af ( ) ; break ; default : ap = false ; } if ( ap ) { ar . preventDefault ( ) ; } else { if ( ar . keyCode === 27 && W ) { aa ( ) ; ar . preventDefault ( ) ; } } Q ( ) ; } function B ( ap ) { ag . startX = ap . touches [ 0 ] . clientX ;
ag . startY = ap . touches [ 0 ] . clientY ; ag . startCount = ap . touches . length ; if ( ap . touches . length === 2 && U . overview ) { ag . startSpan = V ( { x : ap . touches [ 1 ] . clientX , y : ap . touches [ 1 ] . clientY } , { x : ag . startX , y : ag . startY } ) ;
} } function aj ( av ) { if ( ! ag . handled ) { var at = av . touches [ 0 ] . clientX ; var ar = av . touches [ 0 ] . clientY ; if ( av . touches . length === 2 && ag . startCount === 2 && U . overview ) { var au = V ( { x : av . touches [ 1 ] . clientX , y : av . touches [ 1 ] . clientY } , { x : ag . startX , y : ag . startY } ) ;
if ( Math . abs ( ag . startSpan - au ) > ag . threshold ) { ag . handled = true ; if ( au < ag . startSpan ) { K ( ) ; } else { ai ( ) ; } } av . preventDefault ( ) ; } else { if ( av . touches . length === 1 && ag . startCount !== 2 ) { var aq = at - ag . startX , ap = ar - ag . startY ;
if ( aq > ag . threshold && Math . abs ( aq ) > Math . abs ( ap ) ) { ag . handled = true ; C ( ) ; } else { if ( aq < - ag . threshold && Math . abs ( aq ) > Math . abs ( ap ) ) { ag . handled = true ; k ( ) ; } else { if ( ap > ag . threshold ) { ag . handled = true ;
v ( ) ; } else { if ( ap < - ag . threshold ) { ag . handled = true ; G ( ) ; } } } } av . preventDefault ( ) ; } } } else { if ( navigator . userAgent . match ( /android/gi ) ) { av . preventDefault ( ) ; } } } function Z ( ap ) { ag . handled = false ;
} function p ( ap ) { clearTimeout ( A ) ; A = setTimeout ( function ( ) { var aq = ap . detail || - ap . wheelDelta ; if ( aq > 0 ) { y ( ) ; } else { ac ( ) ; } } , 100 ) ; } function am ( aq ) { var ap = Array . prototype . slice . call ( document . querySelectorAll ( m ) ) . length ;
var ar = Math . floor ( ( aq . clientX / f . wrapper . offsetWidth ) * ap ) ; a ( ar ) ; } function x ( ap ) { L ( ) ; } function g ( ap ) { S ( ) ; } function D ( ap ) { if ( N ( ) ) { ap . preventDefault ( ) ; ai ( ) ;
n = this . getAttribute ( "data-index-h" ) ; e = this . getAttribute ( "data-index-v" ) ; a ( ) ; } } return { initialize : j , slide : a , left : C , right : k , up : v , down : G , prev : ac , next : y , prevFragment : T , nextFragment : w , navigateTo : a , navigateLeft : C , navigateRight : k , navigateUp : v , navigateDown : G , navigatePrev : ac , navigateNext : y , toggleOverview : aa , addEventListeners : F , removeEventListeners : X , getIndices : O , getPreviousSlide : function ( ) { return z ;
} , getCurrentSlide : function ( ) { return I ; } , getQueryHash : function ( ) { var ap = { } ; location . search . replace ( /[A-Z0-9]+?=(\w*)/gi , function ( aq ) { ap [ aq . split ( "=" ) . shift ( ) ] = aq . split ( "=" ) . pop ( ) ;
} ) ; return ap ; } , addEventListener : function ( aq , ar , ap ) { if ( "addEventListener" in window ) { ( f . wrapper || document . querySelector ( ".reveal" ) ) . addEventListener ( aq , ar , ap ) ;
} } , removeEventListener : function ( aq , ar , ap ) { if ( "addEventListener" in window ) { ( f . wrapper || document . querySelector ( ".reveal" ) ) . removeEventListener ( aq , ar , ap ) ;
} } } ; } ) ( ) ;