{"version":3,"file":"5551.ca44d672d601c72e0853.min.js","mappings":"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","sources":["webpack://intracto-deheus/./node_modules/desandro-matches-selector/matches-selector.js","webpack://intracto-deheus/./node_modules/ev-emitter/ev-emitter.js","webpack://intracto-deheus/./node_modules/fizzy-ui-utils/utils.js","webpack://intracto-deheus/./node_modules/flickity-imagesloaded/flickity-imagesloaded.js","webpack://intracto-deheus/./node_modules/flickity/js/add-remove-cell.js","webpack://intracto-deheus/./node_modules/flickity/js/animate.js","webpack://intracto-deheus/./node_modules/flickity/js/cell.js","webpack://intracto-deheus/./node_modules/flickity/js/drag.js","webpack://intracto-deheus/./node_modules/flickity/js/flickity.js","webpack://intracto-deheus/./node_modules/flickity/js/index.js","webpack://intracto-deheus/./node_modules/flickity/js/lazyload.js","webpack://intracto-deheus/./node_modules/flickity/js/page-dots.js","webpack://intracto-deheus/./node_modules/flickity/js/player.js","webpack://intracto-deheus/./node_modules/flickity/js/prev-next-button.js","webpack://intracto-deheus/./node_modules/flickity/js/slide.js","webpack://intracto-deheus/./node_modules/get-size/get-size.js","webpack://intracto-deheus/./node_modules/imagesloaded/imagesloaded.js","webpack://intracto-deheus/./node_modules/unidragger/unidragger.js","webpack://intracto-deheus/./node_modules/unipointer/unipointer.js"],"sourcesContent":["/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n  /*global define: false, module: false */\n  'use strict';\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.matchesSelector = factory();\n  }\n\n}( window, function factory() {\n  'use strict';\n\n  var matchesMethod = ( function() {\n    var ElemProto = window.Element.prototype;\n    // check for the standard method name first\n    if ( ElemProto.matches ) {\n      return 'matches';\n    }\n    // check un-prefixed\n    if ( ElemProto.matchesSelector ) {\n      return 'matchesSelector';\n    }\n    // check vendor prefixes\n    var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n    for ( var i=0; i < prefixes.length; i++ ) {\n      var prefix = prefixes[i];\n      var method = prefix + 'MatchesSelector';\n      if ( ElemProto[ method ] ) {\n        return method;\n      }\n    }\n  })();\n\n  return function matchesSelector( elem, selector ) {\n    return elem[ matchesMethod ]( selector );\n  };\n\n}));\n","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /* globals define, module, window */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD - RequireJS\n    define( factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS - Browserify, Webpack\n    module.exports = factory();\n  } else {\n    // Browser globals\n    global.EvEmitter = factory();\n  }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n  if ( !eventName || !listener ) {\n    return;\n  }\n  // set events hash\n  var events = this._events = this._events || {};\n  // set listeners array\n  var listeners = events[ eventName ] = events[ eventName ] || [];\n  // only add once\n  if ( listeners.indexOf( listener ) == -1 ) {\n    listeners.push( listener );\n  }\n\n  return this;\n};\n\nproto.once = function( eventName, listener ) {\n  if ( !eventName || !listener ) {\n    return;\n  }\n  // add event\n  this.on( eventName, listener );\n  // set once flag\n  // set onceEvents hash\n  var onceEvents = this._onceEvents = this._onceEvents || {};\n  // set onceListeners object\n  var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n  // set flag\n  onceListeners[ listener ] = true;\n\n  return this;\n};\n\nproto.off = function( eventName, listener ) {\n  var listeners = this._events && this._events[ eventName ];\n  if ( !listeners || !listeners.length ) {\n    return;\n  }\n  var index = listeners.indexOf( listener );\n  if ( index != -1 ) {\n    listeners.splice( index, 1 );\n  }\n\n  return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n  var listeners = this._events && this._events[ eventName ];\n  if ( !listeners || !listeners.length ) {\n    return;\n  }\n  // copy over to avoid interference if .off() in listener\n  listeners = listeners.slice(0);\n  args = args || [];\n  // once stuff\n  var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n  for ( var i=0; i < listeners.length; i++ ) {\n    var listener = listeners[i]\n    var isOnce = onceListeners && onceListeners[ listener ];\n    if ( isOnce ) {\n      // remove listener\n      // remove before trigger to prevent recursion\n      this.off( eventName, listener );\n      // unset once flag\n      delete onceListeners[ listener ];\n    }\n    // trigger listener\n    listener.apply( this, args );\n  }\n\n  return this;\n};\n\nproto.allOff = function() {\n  delete this._events;\n  delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'desandro-matches-selector/matches-selector'\n    ], function( matchesSelector ) {\n      return factory( window, matchesSelector );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('desandro-matches-selector')\n    );\n  } else {\n    // browser global\n    window.fizzyUIUtils = factory(\n      window,\n      window.matchesSelector\n    );\n  }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n  for ( var prop in b ) {\n    a[ prop ] = b[ prop ];\n  }\n  return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n  return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n  if ( Array.isArray( obj ) ) {\n    // use object if already an array\n    return obj;\n  }\n  // return empty array if undefined or null. #6\n  if ( obj === null || obj === undefined ) {\n    return [];\n  }\n\n  var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n  if ( isArrayLike ) {\n    // convert nodeList to array\n    return arraySlice.call( obj );\n  }\n\n  // array of single index\n  return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n  var index = ary.indexOf( obj );\n  if ( index != -1 ) {\n    ary.splice( index, 1 );\n  }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n  while ( elem.parentNode && elem != document.body ) {\n    elem = elem.parentNode;\n    if ( matchesSelector( elem, selector ) ) {\n      return elem;\n    }\n  }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n  if ( typeof elem == 'string' ) {\n    return document.querySelector( elem );\n  }\n  return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n  // make array of elems\n  elems = utils.makeArray( elems );\n  var ffElems = [];\n\n  elems.forEach( function( elem ) {\n    // check that elem is an actual element\n    if ( !( elem instanceof HTMLElement ) ) {\n      return;\n    }\n    // add elem if no selector\n    if ( !selector ) {\n      ffElems.push( elem );\n      return;\n    }\n    // filter & find items if we have a selector\n    // filter\n    if ( matchesSelector( elem, selector ) ) {\n      ffElems.push( elem );\n    }\n    // find children\n    var childElems = elem.querySelectorAll( selector );\n    // concat childElems to filterFound array\n    for ( var i=0; i < childElems.length; i++ ) {\n      ffElems.push( childElems[i] );\n    }\n  });\n\n  return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n  threshold = threshold || 100;\n  // original method\n  var method = _class.prototype[ methodName ];\n  var timeoutName = methodName + 'Timeout';\n\n  _class.prototype[ methodName ] = function() {\n    var timeout = this[ timeoutName ];\n    clearTimeout( timeout );\n\n    var args = arguments;\n    var _this = this;\n    this[ timeoutName ] = setTimeout( function() {\n      method.apply( _this, args );\n      delete _this[ timeoutName ];\n    }, threshold );\n  };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n  var readyState = document.readyState;\n  if ( readyState == 'complete' || readyState == 'interactive' ) {\n    // do async to allow for other scripts to run. metafizzy/flickity#441\n    setTimeout( callback );\n  } else {\n    document.addEventListener( 'DOMContentLoaded', callback );\n  }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n  return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n    return $1 + '-' + $2;\n  }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n  utils.docReady( function() {\n    var dashedNamespace = utils.toDashed( namespace );\n    var dataAttr = 'data-' + dashedNamespace;\n    var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n    var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n    var elems = utils.makeArray( dataAttrElems )\n      .concat( utils.makeArray( jsDashElems ) );\n    var dataOptionsAttr = dataAttr + '-options';\n    var jQuery = window.jQuery;\n\n    elems.forEach( function( elem ) {\n      var attr = elem.getAttribute( dataAttr ) ||\n        elem.getAttribute( dataOptionsAttr );\n      var options;\n      try {\n        options = attr && JSON.parse( attr );\n      } catch ( error ) {\n        // log error, do not initialize\n        if ( console ) {\n          console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n          ': ' + error );\n        }\n        return;\n      }\n      // initialize\n      var instance = new WidgetClass( elem, options );\n      // make available via $().data('namespace')\n      if ( jQuery ) {\n        jQuery.data( elem, namespace, instance );\n      }\n    });\n\n  });\n};\n\n// -----  ----- //\n\nreturn utils;\n\n}));\n","/*!\n * Flickity imagesLoaded v2.0.0\n * enables imagesLoaded option for Flickity\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'flickity/js/index',\n      'imagesloaded/imagesloaded'\n    ], function( Flickity, imagesLoaded ) {\n      return factory( window, Flickity, imagesLoaded );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('flickity'),\n      require('imagesloaded')\n    );\n  } else {\n    // browser global\n    window.Flickity = factory(\n      window,\n      window.Flickity,\n      window.imagesLoaded\n    );\n  }\n\n}( window, function factory( window, Flickity, imagesLoaded ) {\n'use strict';\n\nFlickity.createMethods.push('_createImagesLoaded');\n\nvar proto = Flickity.prototype;\n\nproto._createImagesLoaded = function() {\n  this.on( 'activate', this.imagesLoaded );\n};\n\nproto.imagesLoaded = function() {\n  if ( !this.options.imagesLoaded ) {\n    return;\n  }\n  var _this = this;\n  function onImagesLoadedProgress( instance, image ) {\n    var cell = _this.getParentCell( image.img );\n    _this.cellSizeChange( cell && cell.element );\n    if ( !_this.options.freeScroll ) {\n      _this.positionSliderAtSelected();\n    }\n  }\n  imagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );\n};\n\nreturn Flickity;\n\n}));\n","// add, remove cell\n( function( window, factory ) {\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      'fizzy-ui-utils/utils',\n    ], function( Flickity, utils ) {\n      return factory( window, Flickity, utils );\n    } );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n        window,\n        require('./flickity'),\n        require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n        window,\n        window.Flickity,\n        window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n  var fragment = document.createDocumentFragment();\n  cells.forEach( function( cell ) {\n    fragment.appendChild( cell.element );\n  } );\n  return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {[Element, Array, NodeList]} elems - Elements to insert\n * @param {Integer} index - Zero-based number to insert\n */\nproto.insert = function( elems, index ) {\n  var cells = this._makeCells( elems );\n  if ( !cells || !cells.length ) {\n    return;\n  }\n  var len = this.cells.length;\n  // default to append\n  index = index === undefined ? len : index;\n  // add cells with document fragment\n  var fragment = getCellsFragment( cells );\n  // append to slider\n  var isAppend = index == len;\n  if ( isAppend ) {\n    this.slider.appendChild( fragment );\n  } else {\n    var insertCellElement = this.cells[ index ].element;\n    this.slider.insertBefore( fragment, insertCellElement );\n  }\n  // add to this.cells\n  if ( index === 0 ) {\n    // prepend, add to start\n    this.cells = cells.concat( this.cells );\n  } else if ( isAppend ) {\n    // append, add to end\n    this.cells = this.cells.concat( cells );\n  } else {\n    // insert in this.cells\n    var endCells = this.cells.splice( index, len - index );\n    this.cells = this.cells.concat( cells ).concat( endCells );\n  }\n\n  this._sizeCells( cells );\n  this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n  this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n  this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\nproto.remove = function( elems ) {\n  var cells = this.getCells( elems );\n  if ( !cells || !cells.length ) {\n    return;\n  }\n\n  var minCellIndex = this.cells.length - 1;\n  // remove cells from collection & DOM\n  cells.forEach( function( cell ) {\n    cell.remove();\n    var index = this.cells.indexOf( cell );\n    minCellIndex = Math.min( index, minCellIndex );\n    utils.removeFrom( this.cells, cell );\n  }, this );\n\n  this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n  var cell = this.getCell( elem );\n  if ( !cell ) {\n    return;\n  }\n  cell.getSize();\n\n  var index = this.cells.indexOf( cell );\n  this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n * @param {Boolean} isPositioningSlider - Positions slider after selection\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n  var prevSelectedElem = this.selectedElement;\n  this._positionCells( changedCellIndex );\n  this._getWrapShiftCells();\n  this.setGallerySize();\n  // update selectedIndex\n  // try to maintain position & select previous selected element\n  var cell = this.getCell( prevSelectedElem );\n  if ( cell ) {\n    this.selectedIndex = this.getCellSlideIndex( cell );\n  }\n  this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n  this.emitEvent( 'cellChange', [ changedCellIndex ] );\n  // position slider\n  this.select( this.selectedIndex );\n  // do not position slider after lazy load\n  if ( isPositioningSlider ) {\n    this.positionSliderAtSelected();\n  }\n};\n\n// -----  ----- //\n\nreturn Flickity;\n\n} ) );\n","// animate\n( function( window, factory ) {\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'fizzy-ui-utils/utils',\n    ], function( utils ) {\n      return factory( window, utils );\n    } );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n        window,\n        require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.animatePrototype = factory(\n        window,\n        window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n  if ( this.isAnimating ) {\n    return;\n  }\n\n  this.isAnimating = true;\n  this.restingFrames = 0;\n  this.animate();\n};\n\nproto.animate = function() {\n  this.applyDragForce();\n  this.applySelectedAttraction();\n\n  var previousX = this.x;\n\n  this.integratePhysics();\n  this.positionSlider();\n  this.settle( previousX );\n  // animate next frame\n  if ( this.isAnimating ) {\n    var _this = this;\n    requestAnimationFrame( function animateFrame() {\n      _this.animate();\n    } );\n  }\n};\n\nproto.positionSlider = function() {\n  var x = this.x;\n  // wrap position around\n  if ( this.options.wrapAround && this.cells.length > 1 ) {\n    x = utils.modulo( x, this.slideableWidth );\n    x -= this.slideableWidth;\n    this.shiftWrapCells( x );\n  }\n\n  this.setTranslateX( x, this.isAnimating );\n  this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n  x += this.cursorPosition;\n  // reverse if right-to-left and using transform\n  x = this.options.rightToLeft ? -x : x;\n  var translateX = this.getPositionValue( x );\n  // use 3D transforms for hardware acceleration on iOS\n  // but use 2D when settled, for better font-rendering\n  this.slider.style.transform = is3d ?\n    'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n  var firstSlide = this.slides[0];\n  if ( !firstSlide ) {\n    return;\n  }\n  var positionX = -this.x - firstSlide.target;\n  var progress = positionX / this.slidesWidth;\n  this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n  if ( !this.cells.length ) {\n    return;\n  }\n  this.x = -this.selectedSlide.target;\n  this.velocity = 0; // stop wobble\n  this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n  if ( this.options.percentPosition ) {\n    // percent position, round to 2 digits, like 12.34%\n    return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 ) + '%';\n  } else {\n    // pixel positioning\n    return Math.round( position ) + 'px';\n  }\n};\n\nproto.settle = function( previousX ) {\n  // keep track of frames where x hasn't moved\n  var isResting = !this.isPointerDown &&\n      Math.round( this.x * 100 ) == Math.round( previousX * 100 );\n  if ( isResting ) {\n    this.restingFrames++;\n  }\n  // stop animating if resting for 3 or more frames\n  if ( this.restingFrames > 2 ) {\n    this.isAnimating = false;\n    delete this.isFreeScrolling;\n    // render position with translateX when settled\n    this.positionSlider();\n    this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n  }\n};\n\nproto.shiftWrapCells = function( x ) {\n  // shift before cells\n  var beforeGap = this.cursorPosition + x;\n  this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n  // shift after cells\n  var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n  this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n  for ( var i = 0; i < cells.length; i++ ) {\n    var cell = cells[i];\n    var cellShift = gap > 0 ? shift : 0;\n    cell.wrapShift( cellShift );\n    gap -= cell.size.outerWidth;\n  }\n};\n\nproto._unshiftCells = function( cells ) {\n  if ( !cells || !cells.length ) {\n    return;\n  }\n  for ( var i = 0; i < cells.length; i++ ) {\n    cells[i].wrapShift( 0 );\n  }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n  this.x += this.velocity;\n  this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n  this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n  return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n  // my thanks to Steven Wittens, who simplified this math greatly\n  return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n  if ( !this.isDraggable || !this.isPointerDown ) {\n    return;\n  }\n  // change the position to drag position by applying force\n  var dragVelocity = this.dragX - this.x;\n  var dragForce = dragVelocity - this.velocity;\n  this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n  // do not attract if pointer down or no slides\n  var dragDown = this.isDraggable && this.isPointerDown;\n  if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n    return;\n  }\n  var distance = this.selectedSlide.target * -1 - this.x;\n  var force = distance * this.options.selectedAttraction;\n  this.applyForce( force );\n};\n\nreturn proto;\n\n} ) );\n","// Flickity.Cell\n( function( window, factory ) {\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'get-size/get-size',\n    ], function( getSize ) {\n      return factory( window, getSize );\n    } );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n        window,\n        require('get-size')\n    );\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.Cell = factory(\n        window,\n        window.getSize\n    );\n  }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n  this.element = elem;\n  this.parent = parent;\n\n  this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n  this.element.style.position = 'absolute';\n  this.element.setAttribute( 'aria-hidden', 'true' );\n  this.x = 0;\n  this.shift = 0;\n  this.element.style[ this.parent.originSide ] = 0;\n};\n\nproto.destroy = function() {\n  // reset style\n  this.unselect();\n  this.element.style.position = '';\n  var side = this.parent.originSide;\n  this.element.style[ side ] = '';\n  this.element.style.transform = '';\n  this.element.removeAttribute('aria-hidden');\n};\n\nproto.getSize = function() {\n  this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n  this.x = x;\n  this.updateTarget();\n  this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n  var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n  this.target = this.x + this.size[ marginProperty ] +\n    this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n  // render position of cell with in slider\n  var sideOffset = this.parent.originSide === 'left' ? 1 : -1;\n\n  var adjustedX = this.parent.options.percentPosition ?\n    x * sideOffset * ( this.parent.size.innerWidth / this.size.width ) :\n    x * sideOffset;\n\n  this.element.style.transform = 'translateX(' +\n    this.parent.getPositionValue( adjustedX ) + ')';\n};\n\nproto.select = function() {\n  this.element.classList.add('is-selected');\n  this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n  this.element.classList.remove('is-selected');\n  this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} shift - 0, 1, or -1\n */\nproto.wrapShift = function( shift ) {\n  this.shift = shift;\n  this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n  this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n} ) );\n","// drag\n( function( window, factory ) {\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      'unidragger/unidragger',\n      'fizzy-ui-utils/utils',\n    ], function( Flickity, Unidragger, utils ) {\n      return factory( window, Flickity, Unidragger, utils );\n    } );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n        window,\n        require('./flickity'),\n        require('unidragger'),\n        require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    window.Flickity = factory(\n        window,\n        window.Flickity,\n        window.Unidragger,\n        window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n  draggable: '>1',\n  dragThreshold: 3,\n} );\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// --------------------------  -------------------------- //\n\nproto._createDrag = function() {\n  this.on( 'activate', this.onActivateDrag );\n  this.on( 'uiChange', this._uiChangeDrag );\n  this.on( 'deactivate', this.onDeactivateDrag );\n  this.on( 'cellChange', this.updateDraggable );\n  // TODO updateDraggable on resize? if groupCells & slides change\n};\n\nproto.onActivateDrag = function() {\n  this.handles = [ this.viewport ];\n  this.bindHandles();\n  this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n  this.unbindHandles();\n  this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n  // disable dragging if less than 2 slides. #278\n  if ( this.options.draggable == '>1' ) {\n    this.isDraggable = this.slides.length > 1;\n  } else {\n    this.isDraggable = this.options.draggable;\n  }\n  if ( this.isDraggable ) {\n    this.element.classList.add('is-draggable');\n  } else {\n    this.element.classList.remove('is-draggable');\n  }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n  this.options.draggable = true;\n  this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n  this.options.draggable = false;\n  this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n  delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    this._pointerDownDefault( event, pointer );\n    return;\n  }\n  var isOkay = this.okayPointerDown( event );\n  if ( !isOkay ) {\n    return;\n  }\n\n  this._pointerDownPreventDefault( event );\n  this.pointerDownFocus( event );\n  // blur\n  if ( document.activeElement != this.element ) {\n    // do not blur if already focused\n    this.pointerDownBlur();\n  }\n\n  // stop if it was moving\n  this.dragX = this.x;\n  this.viewport.classList.add('is-pointer-down');\n  // track scrolling\n  this.pointerDownScroll = getScrollPosition();\n  window.addEventListener( 'scroll', this );\n\n  this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n  // track start event position\n  // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n  this.pointerDownPointer = {\n    pageX: pointer.pageX,\n    pageY: pointer.pageY,\n  };\n  // bind move and end events\n  this._bindPostStartEvents( event );\n  this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n  INPUT: true,\n  TEXTAREA: true,\n  SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n  var isFocusNode = focusNodes[ event.target.nodeName ];\n  if ( !isFocusNode ) {\n    this.focus();\n  }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n  var isTouchStart = event.type == 'touchstart';\n  var isTouchPointer = event.pointerType == 'touch';\n  var isFocusNode = focusNodes[ event.target.nodeName ];\n  if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n    event.preventDefault();\n  }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n  return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n  delete this.isTouchScrolling;\n  this.viewport.classList.remove('is-pointer-down');\n  this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n  this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n  window.removeEventListener( 'scroll', this );\n  delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  this.dragStartPosition = this.x;\n  this.startAnimation();\n  window.removeEventListener( 'scroll', this );\n  this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n  var moveVector = this._dragPointerMove( event, pointer );\n  this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n  this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  event.preventDefault();\n\n  this.previousDragX = this.dragX;\n  // reverse if right-to-left\n  var direction = this.options.rightToLeft ? -1 : 1;\n  if ( this.options.wrapAround ) {\n    // wrap around move. #589\n    moveVector.x %= this.slideableWidth;\n  }\n  var dragX = this.dragStartPosition + moveVector.x * direction;\n\n  if ( !this.options.wrapAround && this.slides.length ) {\n    // slow drag\n    var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n    dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n    var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n    dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n  }\n\n  this.dragX = dragX;\n\n  this.dragMoveTime = new Date();\n  this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  if ( this.options.freeScroll ) {\n    this.isFreeScrolling = true;\n  }\n  // set selectedIndex based on where flick will end up\n  var index = this.dragEndRestingSelect();\n\n  if ( this.options.freeScroll && !this.options.wrapAround ) {\n    // if free-scroll & not wrap around\n    // do not free-scroll if going outside of bounding slides\n    // so bounding slides can attract slider, and keep it in bounds\n    var restingX = this.getRestingPosition();\n    this.isFreeScrolling = -restingX > this.slides[0].target &&\n      -restingX < this.getLastSlide().target;\n  } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n    // boost selection if selected index has not changed\n    index += this.dragEndBoostSelect();\n  }\n  delete this.previousDragX;\n  // apply selection\n  // TODO refactor this, selecting here feels weird\n  // HACK, set flag so dragging stays in correct direction\n  this.isDragSelect = this.options.wrapAround;\n  this.select( index );\n  delete this.isDragSelect;\n  this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n  var restingX = this.getRestingPosition();\n  // how far away from selected slide\n  var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n  // get closet resting going up and going down\n  var positiveResting = this._getClosestResting( restingX, distance, 1 );\n  var negativeResting = this._getClosestResting( restingX, distance, -1 );\n  // use closer resting for wrap-around\n  var index = positiveResting.distance < negativeResting.distance ?\n    positiveResting.index : negativeResting.index;\n  return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n  var index = this.selectedIndex;\n  var minDistance = Infinity;\n  var condition = this.options.contain && !this.options.wrapAround ?\n    // if contain, keep going if distance is equal to minDistance\n    function( dist, minDist ) {\n      return dist <= minDist;\n    } : function( dist, minDist ) {\n      return dist < minDist;\n    };\n  while ( condition( distance, minDistance ) ) {\n    // measure distance to next cell\n    index += increment;\n    minDistance = distance;\n    distance = this.getSlideDistance( -restingX, index );\n    if ( distance === null ) {\n      break;\n    }\n    distance = Math.abs( distance );\n  }\n  return {\n    distance: minDistance,\n    // selected was previous index\n    index: index - increment,\n  };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x - horizontal position\n * @param {Integer} index - slide index\n * @returns {Number} - slide distance\n */\nproto.getSlideDistance = function( x, index ) {\n  var len = this.slides.length;\n  // wrap around if at least 2 slides\n  var isWrapAround = this.options.wrapAround && len > 1;\n  var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n  var slide = this.slides[ slideIndex ];\n  if ( !slide ) {\n    return null;\n  }\n  // add distance for wrap-around slides\n  var wrap = isWrapAround ? this.slideableWidth * Math.floor( index/len ) : 0;\n  return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n  // do not boost if no previousDragX or dragMoveTime\n  if ( this.previousDragX === undefined || !this.dragMoveTime ||\n    // or if drag was held for 100 ms\n    new Date() - this.dragMoveTime > 100 ) {\n    return 0;\n  }\n\n  var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n  var delta = this.previousDragX - this.dragX;\n  if ( distance > 0 && delta > 0 ) {\n    // boost to next if moving towards the right, and positive velocity\n    return 1;\n  } else if ( distance < 0 && delta < 0 ) {\n    // boost to previous if moving towards the left, and negative velocity\n    return -1;\n  }\n  return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n  // get clickedCell, if cell was clicked\n  var clickedCell = this.getParentCell( event.target );\n  var cellElem = clickedCell && clickedCell.element;\n  var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n  this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n  var scroll = getScrollPosition();\n  var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n  var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n  // cancel click/tap if scroll is too much\n  if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n    this._pointerDone();\n  }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n  return {\n    x: window.pageXOffset,\n    y: window.pageYOffset,\n  };\n}\n\n// -----  ----- //\n\nreturn Flickity;\n\n} ) );\n","// Flickity main\n/* eslint-disable max-params */\n( function( window, factory ) {\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'ev-emitter/ev-emitter',\n      'get-size/get-size',\n      'fizzy-ui-utils/utils',\n      './cell',\n      './slide',\n      './animate',\n    ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n      return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n    } );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n        window,\n        require('ev-emitter'),\n        require('get-size'),\n        require('fizzy-ui-utils'),\n        require('./cell'),\n        require('./slide'),\n        require('./animate')\n    );\n  } else {\n    // browser global\n    var _Flickity = window.Flickity;\n\n    window.Flickity = factory(\n        window,\n        window.EvEmitter,\n        window.getSize,\n        window.fizzyUIUtils,\n        _Flickity.Cell,\n        _Flickity.Slide,\n        _Flickity.animatePrototype\n    );\n  }\n\n}( window, function factory( window, EvEmitter, getSize,\n    utils, Cell, Slide, animatePrototype ) {\n\n/* eslint-enable max-params */\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n  elems = utils.makeArray( elems );\n  while ( elems.length ) {\n    toElem.appendChild( elems.shift() );\n  }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n  var queryElement = utils.getQueryElement( element );\n  if ( !queryElement ) {\n    if ( console ) {\n      console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n    }\n    return;\n  }\n  this.element = queryElement;\n  // do not initialize twice on same element\n  if ( this.element.flickityGUID ) {\n    var instance = instances[ this.element.flickityGUID ];\n    if ( instance ) instance.option( options );\n    return instance;\n  }\n\n  // add jQuery\n  if ( jQuery ) {\n    this.$element = jQuery( this.element );\n  }\n  // options\n  this.options = utils.extend( {}, this.constructor.defaults );\n  this.option( options );\n\n  // kick things off\n  this._create();\n}\n\nFlickity.defaults = {\n  accessibility: true,\n  // adaptiveHeight: false,\n  cellAlign: 'center',\n  // cellSelector: undefined,\n  // contain: false,\n  freeScrollFriction: 0.075, // friction when free-scrolling\n  friction: 0.28, // friction when selecting\n  namespaceJQueryEvents: true,\n  // initialIndex: 0,\n  percentPosition: true,\n  resize: true,\n  selectedAttraction: 0.025,\n  setGallerySize: true,\n  // watchCSS: false,\n  // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n  // add id for Flickity.data\n  var id = this.guid = ++GUID;\n  this.element.flickityGUID = id; // expando\n  instances[ id ] = this; // associate via id\n  // initial properties\n  this.selectedIndex = 0;\n  // how many frames slider has been in same position\n  this.restingFrames = 0;\n  // initial physics properties\n  this.x = 0;\n  this.velocity = 0;\n  this.originSide = this.options.rightToLeft ? 'right' : 'left';\n  // create viewport & slider\n  this.viewport = document.createElement('div');\n  this.viewport.className = 'flickity-viewport';\n  this._createSlider();\n\n  if ( this.options.resize || this.options.watchCSS ) {\n    window.addEventListener( 'resize', this );\n  }\n\n  // add listeners from on option\n  for ( var eventName in this.options.on ) {\n    var listener = this.options.on[ eventName ];\n    this.on( eventName, listener );\n  }\n\n  Flickity.createMethods.forEach( function( method ) {\n    this[ method ]();\n  }, this );\n\n  if ( this.options.watchCSS ) {\n    this.watchCSS();\n  } else {\n    this.activate();\n  }\n\n};\n\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n  utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n  if ( this.isActive ) {\n    return;\n  }\n  this.isActive = true;\n  this.element.classList.add('flickity-enabled');\n  if ( this.options.rightToLeft ) {\n    this.element.classList.add('flickity-rtl');\n  }\n\n  this.getSize();\n  // move initial cell elements so they can be loaded as cells\n  var cellElems = this._filterFindCellElements( this.element.children );\n  moveElements( cellElems, this.slider );\n  this.viewport.appendChild( this.slider );\n  this.element.appendChild( this.viewport );\n  // get cells from children\n  this.reloadCells();\n\n  if ( this.options.accessibility ) {\n    // allow element to focusable\n    this.element.tabIndex = 0;\n    // listen for key presses\n    this.element.addEventListener( 'keydown', this );\n  }\n\n  this.emitEvent('activate');\n  this.selectInitialIndex();\n  // flag for initial activation, for using initialIndex\n  this.isInitActivated = true;\n  // ready event. #493\n  this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n  // slider element does all the positioning\n  var slider = document.createElement('div');\n  slider.className = 'flickity-slider';\n  slider.style[ this.originSide ] = 0;\n  this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n  return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n  // collection of item elements\n  this.cells = this._makeCells( this.slider.children );\n  this.positionCells();\n  this._getWrapShiftCells();\n  this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n  var cellElems = this._filterFindCellElements( elems );\n\n  // create new Flickity for collection\n  var cells = cellElems.map( function( cellElem ) {\n    return new Cell( cellElem, this );\n  }, this );\n\n  return cells;\n};\n\nproto.getLastCell = function() {\n  return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n  return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n  // size all cells\n  this._sizeCells( this.cells );\n  // position all cells\n  this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n  index = index || 0;\n  // also measure maxCellHeight\n  // start 0 if positioning all cells\n  this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n  var cellX = 0;\n  // get cellX\n  if ( index > 0 ) {\n    var startCell = this.cells[ index - 1 ];\n    cellX = startCell.x + startCell.size.outerWidth;\n  }\n  var len = this.cells.length;\n  for ( var i = index; i < len; i++ ) {\n    var cell = this.cells[i];\n    cell.setPosition( cellX );\n    cellX += cell.size.outerWidth;\n    this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n  }\n  // keep track of cellX for wrap-around\n  this.slideableWidth = cellX;\n  // slides\n  this.updateSlides();\n  // contain slides target\n  this._containSlides();\n  // update slidesWidth\n  this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n  cells.forEach( function( cell ) {\n    cell.getSize();\n  } );\n};\n\n// --------------------------  -------------------------- //\n\nproto.updateSlides = function() {\n  this.slides = [];\n  if ( !this.cells.length ) {\n    return;\n  }\n\n  var slide = new Slide( this );\n  this.slides.push( slide );\n  var isOriginLeft = this.originSide == 'left';\n  var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n  var canCellFit = this._getCanCellFit();\n\n  this.cells.forEach( function( cell, i ) {\n    // just add cell if first cell in slide\n    if ( !slide.cells.length ) {\n      slide.addCell( cell );\n      return;\n    }\n\n    var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n      ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n    if ( canCellFit.call( this, i, slideWidth ) ) {\n      slide.addCell( cell );\n    } else {\n      // doesn't fit, new slide\n      slide.updateTarget();\n\n      slide = new Slide( this );\n      this.slides.push( slide );\n      slide.addCell( cell );\n    }\n  }, this );\n  // last slide\n  slide.updateTarget();\n  // update .selectedSlide\n  this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n  var groupCells = this.options.groupCells;\n  if ( !groupCells ) {\n    return function() {\n      return false;\n    };\n  } else if ( typeof groupCells == 'number' ) {\n    // group by number. 3 -> [0,1,2], [3,4,5], ...\n    var number = parseInt( groupCells, 10 );\n    return function( i ) {\n      return ( i % number ) !== 0;\n    };\n  }\n  // default, group by width of slide\n  // parse '75%\n  var percentMatch = typeof groupCells == 'string' &&\n    groupCells.match( /^(\\d+)%$/ );\n  var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n  return function( i, slideWidth ) {\n    /* eslint-disable-next-line no-invalid-this */\n    return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n  };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n  this.positionCells();\n  this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n  this.size = getSize( this.element );\n  this.setCellAlign();\n  this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n  // cell align, then based on origin side\n  center: {\n    left: 0.5,\n    right: 0.5,\n  },\n  left: {\n    left: 0,\n    right: 1,\n  },\n  right: {\n    right: 0,\n    left: 1,\n  },\n};\n\nproto.setCellAlign = function() {\n  var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n  this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n  if ( this.options.setGallerySize ) {\n    var height = this.options.adaptiveHeight && this.selectedSlide ?\n      this.selectedSlide.height : this.maxCellHeight;\n    this.viewport.style.height = height + 'px';\n  }\n};\n\nproto._getWrapShiftCells = function() {\n  // only for wrap-around\n  if ( !this.options.wrapAround ) {\n    return;\n  }\n  // unshift previous cells\n  this._unshiftCells( this.beforeShiftCells );\n  this._unshiftCells( this.afterShiftCells );\n  // get before cells\n  // initial gap\n  var gapX = this.cursorPosition;\n  var cellIndex = this.cells.length - 1;\n  this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n  // get after cells\n  // ending gap between last cell and end of gallery viewport\n  gapX = this.size.innerWidth - this.cursorPosition;\n  // start cloning at first cell, working forwards\n  this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n  // keep adding cells until the cover the initial gap\n  var cells = [];\n  while ( gapX > 0 ) {\n    var cell = this.cells[ cellIndex ];\n    if ( !cell ) {\n      break;\n    }\n    cells.push( cell );\n    cellIndex += increment;\n    gapX -= cell.size.outerWidth;\n  }\n  return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n  if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n    return;\n  }\n  var isRightToLeft = this.options.rightToLeft;\n  var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n  var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n  var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n  // content is less than gallery size\n  var isContentSmaller = contentWidth < this.size.innerWidth;\n  // bounds\n  var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n  var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n  // contain each cell target\n  this.slides.forEach( function( slide ) {\n    if ( isContentSmaller ) {\n      // all cells fit inside gallery\n      slide.target = contentWidth * this.cellAlign;\n    } else {\n      // contain to bounds\n      slide.target = Math.max( slide.target, beginBound );\n      slide.target = Math.min( slide.target, endBound );\n    }\n  }, this );\n};\n\n// -----  ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n  var emitArgs = event ? [ event ].concat( args ) : args;\n  this.emitEvent( type, emitArgs );\n\n  if ( jQuery && this.$element ) {\n    // default trigger with type if no event\n    type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n    var $event = type;\n    if ( event ) {\n      // create jQuery event\n      var jQEvent = new jQuery.Event( event );\n      jQEvent.type = type;\n      $event = jQEvent;\n    }\n    this.$element.trigger( $event, args );\n  }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n  if ( !this.isActive ) {\n    return;\n  }\n  index = parseInt( index, 10 );\n  this._wrapSelect( index );\n\n  if ( this.options.wrapAround || isWrap ) {\n    index = utils.modulo( index, this.slides.length );\n  }\n  // bail if invalid index\n  if ( !this.slides[ index ] ) {\n    return;\n  }\n  var prevIndex = this.selectedIndex;\n  this.selectedIndex = index;\n  this.updateSelectedSlide();\n  if ( isInstant ) {\n    this.positionSliderAtSelected();\n  } else {\n    this.startAnimation();\n  }\n  if ( this.options.adaptiveHeight ) {\n    this.setGallerySize();\n  }\n  // events\n  this.dispatchEvent( 'select', null, [ index ] );\n  // change event if new index\n  if ( index != prevIndex ) {\n    this.dispatchEvent( 'change', null, [ index ] );\n  }\n  // old v1 event name, remove in v3\n  this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n  var len = this.slides.length;\n  var isWrapping = this.options.wrapAround && len > 1;\n  if ( !isWrapping ) {\n    return index;\n  }\n  var wrapIndex = utils.modulo( index, len );\n  // go to shortest\n  var delta = Math.abs( wrapIndex - this.selectedIndex );\n  var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n  var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n  if ( !this.isDragSelect && backWrapDelta < delta ) {\n    index += len;\n  } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n    index -= len;\n  }\n  // wrap position so slider is within normal area\n  if ( index < 0 ) {\n    this.x -= this.slideableWidth;\n  } else if ( index >= len ) {\n    this.x += this.slideableWidth;\n  }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n  this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n  this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n  var slide = this.slides[ this.selectedIndex ];\n  // selectedIndex could be outside of slides, if triggered before resize()\n  if ( !slide ) {\n    return;\n  }\n  // unselect previous selected slide\n  this.unselectSelectedSlide();\n  // update new selected slide\n  this.selectedSlide = slide;\n  slide.select();\n  this.selectedCells = slide.cells;\n  this.selectedElements = slide.getCellElements();\n  // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n  // Remove in v3?\n  this.selectedCell = slide.cells[0];\n  this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n  if ( this.selectedSlide ) {\n    this.selectedSlide.unselect();\n  }\n};\n\nproto.selectInitialIndex = function() {\n  var initialIndex = this.options.initialIndex;\n  // already activated, select previous selectedIndex\n  if ( this.isInitActivated ) {\n    this.select( this.selectedIndex, false, true );\n    return;\n  }\n  // select with selector string\n  if ( initialIndex && typeof initialIndex == 'string' ) {\n    var cell = this.queryCell( initialIndex );\n    if ( cell ) {\n      this.selectCell( initialIndex, false, true );\n      return;\n    }\n  }\n\n  var index = 0;\n  // select with number\n  if ( initialIndex && this.slides[ initialIndex ] ) {\n    index = initialIndex;\n  }\n  // select instantly\n  this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n  // get cell\n  var cell = this.queryCell( value );\n  if ( !cell ) {\n    return;\n  }\n\n  var index = this.getCellSlideIndex( cell );\n  this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n  // get index of slides that has cell\n  for ( var i = 0; i < this.slides.length; i++ ) {\n    var slide = this.slides[i];\n    var index = slide.cells.indexOf( cell );\n    if ( index != -1 ) {\n      return i;\n    }\n  }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\nproto.getCell = function( elem ) {\n  // loop through cells to get the one that matches\n  for ( var i = 0; i < this.cells.length; i++ ) {\n    var cell = this.cells[i];\n    if ( cell.element == elem ) {\n      return cell;\n    }\n  }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n  elems = utils.makeArray( elems );\n  var cells = [];\n  elems.forEach( function( elem ) {\n    var cell = this.getCell( elem );\n    if ( cell ) {\n      cells.push( cell );\n    }\n  }, this );\n  return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n  return this.cells.map( function( cell ) {\n    return cell.element;\n  } );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n  // first check if elem is cell\n  var cell = this.getCell( elem );\n  if ( cell ) {\n    return cell;\n  }\n  // try to get parent cell elem\n  elem = utils.getParent( elem, '.flickity-slider > *' );\n  return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n  if ( !adjCount ) {\n    return this.selectedSlide.getCellElements();\n  }\n  index = index === undefined ? this.selectedIndex : index;\n\n  var len = this.slides.length;\n  if ( 1 + ( adjCount * 2 ) >= len ) {\n    return this.getCellElements();\n  }\n\n  var cellElems = [];\n  for ( var i = index - adjCount; i <= index + adjCount; i++ ) {\n    var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n    var slide = this.slides[ slideIndex ];\n    if ( slide ) {\n      cellElems = cellElems.concat( slide.getCellElements() );\n    }\n  }\n  return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\nproto.queryCell = function( selector ) {\n  if ( typeof selector == 'number' ) {\n    // use number as index\n    return this.cells[ selector ];\n  }\n  if ( typeof selector == 'string' ) {\n    // do not select invalid selectors from hash: #123, #/. #791\n    if ( selector.match( /^[#.]?[\\d/]/ ) ) {\n      return;\n    }\n    // use string as selector, get element\n    selector = this.element.querySelector( selector );\n  }\n  // get cell from element\n  return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n  this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n  // HACK iOS does not allow touch events to bubble up?!\n  if ( event.type != 'touchstart' ) {\n    event.preventDefault();\n  }\n  this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n  this.watchCSS();\n  this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n  // #1177 disable resize behavior when animating or dragging for iOS 15\n  if ( !this.isActive || this.isAnimating || this.isDragging ) {\n    return;\n  }\n  this.getSize();\n  // wrap values\n  if ( this.options.wrapAround ) {\n    this.x = utils.modulo( this.x, this.slideableWidth );\n  }\n  this.positionCells();\n  this._getWrapShiftCells();\n  this.setGallerySize();\n  this.emitEvent('resize');\n  // update selected index for group slides, instant\n  // TODO: position can be lost between groups of various numbers\n  var selectedElement = this.selectedElements && this.selectedElements[0];\n  this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n  var watchOption = this.options.watchCSS;\n  if ( !watchOption ) {\n    return;\n  }\n\n  var afterContent = getComputedStyle( this.element, ':after' ).content;\n  // activate if :after { content: 'flickity' }\n  if ( afterContent.indexOf('flickity') != -1 ) {\n    this.activate();\n  } else {\n    this.deactivate();\n  }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n  // only work if element is in focus\n  var isNotFocused = document.activeElement && document.activeElement != this.element;\n  if ( !this.options.accessibility || isNotFocused ) {\n    return;\n  }\n\n  var handler = Flickity.keyboardHandlers[ event.keyCode ];\n  if ( handler ) {\n    handler.call( this );\n  }\n};\n\nFlickity.keyboardHandlers = {\n  // left arrow\n  37: function() {\n    var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n    this.uiChange();\n    this[ leftMethod ]();\n  },\n  // right arrow\n  39: function() {\n    var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n    this.uiChange();\n    this[ rightMethod ]();\n  },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n  // TODO remove scrollTo once focus options gets more support\n  // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n  //    #Browser_compatibility\n  var prevScrollY = window.pageYOffset;\n  this.element.focus({ preventScroll: true });\n  // hack to fix scroll jump after focus, #76\n  if ( window.pageYOffset != prevScrollY ) {\n    window.scrollTo( window.pageXOffset, prevScrollY );\n  }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n  if ( !this.isActive ) {\n    return;\n  }\n  this.element.classList.remove('flickity-enabled');\n  this.element.classList.remove('flickity-rtl');\n  this.unselectSelectedSlide();\n  // destroy cells\n  this.cells.forEach( function( cell ) {\n    cell.destroy();\n  } );\n  this.element.removeChild( this.viewport );\n  // move child elements back into element\n  moveElements( this.slider.children, this.element );\n  if ( this.options.accessibility ) {\n    this.element.removeAttribute('tabIndex');\n    this.element.removeEventListener( 'keydown', this );\n  }\n  // set flags\n  this.isActive = false;\n  this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n  this.deactivate();\n  window.removeEventListener( 'resize', this );\n  this.allOff();\n  this.emitEvent('destroy');\n  if ( jQuery && this.$element ) {\n    jQuery.removeData( this.element, 'flickity' );\n  }\n  delete this.element.flickityGUID;\n  delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\nFlickity.data = function( elem ) {\n  elem = utils.getQueryElement( elem );\n  var id = elem && elem.flickityGUID;\n  return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n  jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n  jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n} ) );\n","/*!\n * Flickity v2.3.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n\n( function( window, factory ) {\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      './drag',\n      './prev-next-button',\n      './page-dots',\n      './player',\n      './add-remove-cell',\n      './lazyload',\n    ], factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n        require('./flickity'),\n        require('./drag'),\n        require('./prev-next-button'),\n        require('./page-dots'),\n        require('./player'),\n        require('./add-remove-cell'),\n        require('./lazyload')\n    );\n  }\n\n} )( window, function factory( Flickity ) {\n  return Flickity;\n} );\n","// lazyload\n( function( window, factory ) {\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      'fizzy-ui-utils/utils',\n    ], function( Flickity, utils ) {\n      return factory( window, Flickity, utils );\n    } );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n        window,\n        require('./flickity'),\n        require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n        window,\n        window.Flickity,\n        window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n  this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n  var lazyLoad = this.options.lazyLoad;\n  if ( !lazyLoad ) {\n    return;\n  }\n  // get adjacent cells, use lazyLoad option for adjacent count\n  var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n  var cellElems = this.getAdjacentCellElements( adjCount );\n  // get lazy images in those cells\n  var lazyImages = [];\n  cellElems.forEach( function( cellElem ) {\n    var lazyCellImages = getCellLazyImages( cellElem );\n    lazyImages = lazyImages.concat( lazyCellImages );\n  } );\n  // load lazy images\n  lazyImages.forEach( function( img ) {\n    new LazyLoader( img, this );\n  }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n  // check if cell element is lazy image\n  if ( cellElem.nodeName == 'IMG' ) {\n    var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n    var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n    var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n    if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n      return [ cellElem ];\n    }\n  }\n  // select lazy images in cell\n  var lazySelector = 'img[data-flickity-lazyload], ' +\n    'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n  var imgs = cellElem.querySelectorAll( lazySelector );\n  return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\nfunction LazyLoader( img, flickity ) {\n  this.img = img;\n  this.flickity = flickity;\n  this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  // get src & srcset\n  var src = this.img.getAttribute('data-flickity-lazyload') ||\n    this.img.getAttribute('data-flickity-lazyload-src');\n  var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n  // set src & serset\n  this.img.src = src;\n  if ( srcset ) {\n    this.img.setAttribute( 'srcset', srcset );\n  }\n  // remove attr\n  this.img.removeAttribute('data-flickity-lazyload');\n  this.img.removeAttribute('data-flickity-lazyload-src');\n  this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n  this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n  this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n  // unbind events\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n\n  var cell = this.flickity.getParentCell( this.img );\n  var cellElem = cell && cell.element;\n  this.flickity.cellSizeChange( cellElem );\n\n  this.img.classList.add( className );\n  this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// -----  ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n} ) );\n","// page dots\n( function( window, factory ) {\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      'unipointer/unipointer',\n      'fizzy-ui-utils/utils',\n    ], function( Flickity, Unipointer, utils ) {\n      return factory( window, Flickity, Unipointer, utils );\n    } );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n        window,\n        require('./flickity'),\n        require('unipointer'),\n        require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n        window,\n        window.Flickity,\n        window.Unipointer,\n        window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n  this.parent = parent;\n  this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n  // create holder element\n  this.holder = document.createElement('ol');\n  this.holder.className = 'flickity-page-dots';\n  // create dots, array of elements\n  this.dots = [];\n  // events\n  this.handleClick = this.onClick.bind( this );\n  this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n  this.setDots();\n  this.holder.addEventListener( 'click', this.handleClick );\n  this.bindStartEvent( this.holder );\n  // add to DOM\n  this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n  this.holder.removeEventListener( 'click', this.handleClick );\n  this.unbindStartEvent( this.holder );\n  // remove from DOM\n  this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n  // get difference between number of slides and number of dots\n  var delta = this.parent.slides.length - this.dots.length;\n  if ( delta > 0 ) {\n    this.addDots( delta );\n  } else if ( delta < 0 ) {\n    this.removeDots( -delta );\n  }\n};\n\nPageDots.prototype.addDots = function( count ) {\n  var fragment = document.createDocumentFragment();\n  var newDots = [];\n  var length = this.dots.length;\n  var max = length + count;\n\n  for ( var i = length; i < max; i++ ) {\n    var dot = document.createElement('li');\n    dot.className = 'dot';\n    dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n    fragment.appendChild( dot );\n    newDots.push( dot );\n  }\n\n  this.holder.appendChild( fragment );\n  this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n  // remove from this.dots collection\n  var removeDots = this.dots.splice( this.dots.length - count, count );\n  // remove from DOM\n  removeDots.forEach( function( dot ) {\n    this.holder.removeChild( dot );\n  }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n  // remove selected class on previous\n  if ( this.selectedDot ) {\n    this.selectedDot.className = 'dot';\n    this.selectedDot.removeAttribute('aria-current');\n  }\n  // don't proceed if no dots\n  if ( !this.dots.length ) {\n    return;\n  }\n  this.selectedDot = this.dots[ this.parent.selectedIndex ];\n  this.selectedDot.className = 'dot is-selected';\n  this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n  var target = event.target;\n  // only care about dot clicks\n  if ( target.nodeName != 'LI' ) {\n    return;\n  }\n\n  this.parent.uiChange();\n  var index = this.dots.indexOf( target );\n  this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n  this.deactivate();\n  this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  pageDots: true,\n} );\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n  if ( !this.options.pageDots ) {\n    return;\n  }\n  this.pageDots = new PageDots( this );\n  // events\n  this.on( 'activate', this.activatePageDots );\n  this.on( 'select', this.updateSelectedPageDots );\n  this.on( 'cellChange', this.updatePageDots );\n  this.on( 'resize', this.updatePageDots );\n  this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n  this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n  this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n  this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n  this.pageDots.deactivate();\n};\n\n// -----  ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n} ) );\n","// player & autoPlay\n( function( window, factory ) {\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'ev-emitter/ev-emitter',\n      'fizzy-ui-utils/utils',\n      './flickity',\n    ], function( EvEmitter, utils, Flickity ) {\n      return factory( EvEmitter, utils, Flickity );\n    } );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n        require('ev-emitter'),\n        require('fizzy-ui-utils'),\n        require('./flickity')\n    );\n  } else {\n    // browser global\n    factory(\n        window.EvEmitter,\n        window.fizzyUIUtils,\n        window.Flickity\n    );\n  }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n  this.parent = parent;\n  this.state = 'stopped';\n  // visibility change event handler\n  this.onVisibilityChange = this.visibilityChange.bind( this );\n  this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n  if ( this.state == 'playing' ) {\n    return;\n  }\n  // do not play if page is hidden, start playing when page is visible\n  var isPageHidden = document.hidden;\n  if ( isPageHidden ) {\n    document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n    return;\n  }\n\n  this.state = 'playing';\n  // listen to visibility change\n  document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n  // start ticking\n  this.tick();\n};\n\nPlayer.prototype.tick = function() {\n  // do not tick if not playing\n  if ( this.state != 'playing' ) {\n    return;\n  }\n\n  var time = this.parent.options.autoPlay;\n  // default to 3 seconds\n  time = typeof time == 'number' ? time : 3000;\n  var _this = this;\n  // HACK: reset ticks if stopped and started within interval\n  this.clear();\n  this.timeout = setTimeout( function() {\n    _this.parent.next( true );\n    _this.tick();\n  }, time );\n};\n\nPlayer.prototype.stop = function() {\n  this.state = 'stopped';\n  this.clear();\n  // remove visibility change event\n  document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n  clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n  if ( this.state == 'playing' ) {\n    this.state = 'paused';\n    this.clear();\n  }\n};\n\nPlayer.prototype.unpause = function() {\n  // re-start play if paused\n  if ( this.state == 'paused' ) {\n    this.play();\n  }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n  var isPageHidden = document.hidden;\n  this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n  this.play();\n  document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  pauseAutoPlayOnHover: true,\n} );\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n  this.player = new Player( this );\n\n  this.on( 'activate', this.activatePlayer );\n  this.on( 'uiChange', this.stopPlayer );\n  this.on( 'pointerDown', this.stopPlayer );\n  this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n  if ( !this.options.autoPlay ) {\n    return;\n  }\n  this.player.play();\n  this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n  this.player.play();\n};\n\nproto.stopPlayer = function() {\n  this.player.stop();\n};\n\nproto.pausePlayer = function() {\n  this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n  this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n  this.player.stop();\n  this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n  if ( !this.options.pauseAutoPlayOnHover ) {\n    return;\n  }\n  this.player.pause();\n  this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n  this.player.unpause();\n  this.element.removeEventListener( 'mouseleave', this );\n};\n\n// -----  ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n} ) );\n","// prev/next buttons\n( function( window, factory ) {\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      'unipointer/unipointer',\n      'fizzy-ui-utils/utils',\n    ], function( Flickity, Unipointer, utils ) {\n      return factory( window, Flickity, Unipointer, utils );\n    } );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n        window,\n        require('./flickity'),\n        require('unipointer'),\n        require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n        window,\n        window.Flickity,\n        window.Unipointer,\n        window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n  this.direction = direction;\n  this.parent = parent;\n  this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n  // properties\n  this.isEnabled = true;\n  this.isPrevious = this.direction == -1;\n  var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n  this.isLeft = this.direction == leftDirection;\n\n  var element = this.element = document.createElement('button');\n  element.className = 'flickity-button flickity-prev-next-button';\n  element.className += this.isPrevious ? ' previous' : ' next';\n  // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n  element.setAttribute( 'type', 'button' );\n  // init as disabled\n  this.disable();\n\n  element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n  // create arrow\n  var svg = this.createSVG();\n  element.appendChild( svg );\n  // events\n  this.parent.on( 'select', this.update.bind( this ) );\n  this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n  this.bindStartEvent( this.element );\n  this.element.addEventListener( 'click', this );\n  // add to DOM\n  this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n  // remove from DOM\n  this.parent.element.removeChild( this.element );\n  // click events\n  this.unbindStartEvent( this.element );\n  this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n  var svg = document.createElementNS( svgURI, 'svg' );\n  svg.setAttribute( 'class', 'flickity-button-icon' );\n  svg.setAttribute( 'viewBox', '0 0 100 100' );\n  var path = document.createElementNS( svgURI, 'path' );\n  var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n  path.setAttribute( 'd', pathMovements );\n  path.setAttribute( 'class', 'arrow' );\n  // rotate arrow\n  if ( !this.isLeft ) {\n    path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n  }\n  svg.appendChild( path );\n  return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n  // use shape as movement if string\n  if ( typeof shape == 'string' ) {\n    return shape;\n  }\n  // create movement string\n  return 'M ' + shape.x0 + ',50' +\n    ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n    ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n    ' L ' + shape.x3 + ',50 ' +\n    ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n    ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n    ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n  if ( !this.isEnabled ) {\n    return;\n  }\n  this.parent.uiChange();\n  var method = this.isPrevious ? 'previous' : 'next';\n  this.parent[ method ]();\n};\n\n// -----  ----- //\n\nPrevNextButton.prototype.enable = function() {\n  if ( this.isEnabled ) {\n    return;\n  }\n  this.element.disabled = false;\n  this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n  if ( !this.isEnabled ) {\n    return;\n  }\n  this.element.disabled = true;\n  this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n  // index of first or last slide, if previous or next\n  var slides = this.parent.slides;\n  // enable is wrapAround and at least 2 slides\n  if ( this.parent.options.wrapAround && slides.length > 1 ) {\n    this.enable();\n    return;\n  }\n  var lastIndex = slides.length ? slides.length - 1 : 0;\n  var boundIndex = this.isPrevious ? 0 : lastIndex;\n  var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n  this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n  this.deactivate();\n  this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  prevNextButtons: true,\n  arrowShape: {\n    x0: 10,\n    x1: 60, y1: 50,\n    x2: 70, y2: 40,\n    x3: 30,\n  },\n} );\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n  if ( !this.options.prevNextButtons ) {\n    return;\n  }\n\n  this.prevButton = new PrevNextButton( -1, this );\n  this.nextButton = new PrevNextButton( 1, this );\n\n  this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n  this.prevButton.activate();\n  this.nextButton.activate();\n  this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n  this.prevButton.deactivate();\n  this.nextButton.deactivate();\n  this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// --------------------------  -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n} ) );\n","// slide\n( function( window, factory ) {\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.Slide = factory();\n  }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n  this.parent = parent;\n  this.isOriginLeft = parent.originSide == 'left';\n  this.cells = [];\n  this.outerWidth = 0;\n  this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n  this.cells.push( cell );\n  this.outerWidth += cell.size.outerWidth;\n  this.height = Math.max( cell.size.outerHeight, this.height );\n  // first cell stuff\n  if ( this.cells.length == 1 ) {\n    this.x = cell.x; // x comes from first cell\n    var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n    this.firstMargin = cell.size[ beginMargin ];\n  }\n};\n\nproto.updateTarget = function() {\n  var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n  var lastCell = this.getLastCell();\n  var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n  var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n  this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n  return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n  this.cells.forEach( function( cell ) {\n    cell.select();\n  } );\n};\n\nproto.unselect = function() {\n  this.cells.forEach( function( cell ) {\n    cell.unselect();\n  } );\n};\n\nproto.getCellElements = function() {\n  return this.cells.map( function( cell ) {\n    return cell.element;\n  } );\n};\n\nreturn Slide;\n\n} ) );\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n  /* jshint strict: false */ /* globals define, module */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.getSize = factory();\n  }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n  var num = parseFloat( value );\n  // not a percent like '100%', and a number\n  var isValid = value.indexOf('%') == -1 && !isNaN( num );\n  return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n  function( message ) {\n    console.error( message );\n  };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n  'paddingLeft',\n  'paddingRight',\n  'paddingTop',\n  'paddingBottom',\n  'marginLeft',\n  'marginRight',\n  'marginTop',\n  'marginBottom',\n  'borderLeftWidth',\n  'borderRightWidth',\n  'borderTopWidth',\n  'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n  var size = {\n    width: 0,\n    height: 0,\n    innerWidth: 0,\n    innerHeight: 0,\n    outerWidth: 0,\n    outerHeight: 0\n  };\n  for ( var i=0; i < measurementsLength; i++ ) {\n    var measurement = measurements[i];\n    size[ measurement ] = 0;\n  }\n  return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n  var style = getComputedStyle( elem );\n  if ( !style ) {\n    logError( 'Style returned ' + style +\n      '. Are you running this code in a hidden iframe on Firefox? ' +\n      'See https://bit.ly/getsizebug1' );\n  }\n  return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n  // setup once\n  if ( isSetup ) {\n    return;\n  }\n  isSetup = true;\n\n  // -------------------------- box sizing -------------------------- //\n\n  /**\n   * Chrome & Safari measure the outer-width on style.width on border-box elems\n   * IE11 & Firefox<29 measures the inner-width\n   */\n  var div = document.createElement('div');\n  div.style.width = '200px';\n  div.style.padding = '1px 2px 3px 4px';\n  div.style.borderStyle = 'solid';\n  div.style.borderWidth = '1px 2px 3px 4px';\n  div.style.boxSizing = 'border-box';\n\n  var body = document.body || document.documentElement;\n  body.appendChild( div );\n  var style = getStyle( div );\n  // round value for browser zoom. desandro/masonry#928\n  isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n  getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n  body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n  setup();\n\n  // use querySeletor if elem is string\n  if ( typeof elem == 'string' ) {\n    elem = document.querySelector( elem );\n  }\n\n  // do not proceed on non-objects\n  if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n    return;\n  }\n\n  var style = getStyle( elem );\n\n  // if hidden, everything is 0\n  if ( style.display == 'none' ) {\n    return getZeroSize();\n  }\n\n  var size = {};\n  size.width = elem.offsetWidth;\n  size.height = elem.offsetHeight;\n\n  var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n  // get all measurements\n  for ( var i=0; i < measurementsLength; i++ ) {\n    var measurement = measurements[i];\n    var value = style[ measurement ];\n    var num = parseFloat( value );\n    // any 'auto', 'medium' value will be 0\n    size[ measurement ] = !isNaN( num ) ? num : 0;\n  }\n\n  var paddingWidth = size.paddingLeft + size.paddingRight;\n  var paddingHeight = size.paddingTop + size.paddingBottom;\n  var marginWidth = size.marginLeft + size.marginRight;\n  var marginHeight = size.marginTop + size.marginBottom;\n  var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n  var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n  var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n  // overwrite width and height if we can get it from style\n  var styleWidth = getStyleSize( style.width );\n  if ( styleWidth !== false ) {\n    size.width = styleWidth +\n      // add padding and border unless it's already including it\n      ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n  }\n\n  var styleHeight = getStyleSize( style.height );\n  if ( styleHeight !== false ) {\n    size.height = styleHeight +\n      // add padding and border unless it's already including it\n      ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n  }\n\n  size.innerWidth = size.width - ( paddingWidth + borderWidth );\n  size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n  size.outerWidth = size.width + marginWidth;\n  size.outerHeight = size.height + marginHeight;\n\n  return size;\n}\n\nreturn getSize;\n\n});\n","/*!\n * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n( function( window, factory ) { 'use strict';\n  // universal module definition\n\n  /*global define: false, module: false, require: false */\n\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'ev-emitter/ev-emitter'\n    ], function( EvEmitter ) {\n      return factory( window, EvEmitter );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('ev-emitter')\n    );\n  } else {\n    // browser global\n    window.imagesLoaded = factory(\n      window,\n      window.EvEmitter\n    );\n  }\n\n})( typeof window !== 'undefined' ? window : this,\n\n// --------------------------  factory -------------------------- //\n\nfunction factory( window, EvEmitter ) {\n\n'use strict';\n\nvar $ = window.jQuery;\nvar console = window.console;\n\n// -------------------------- helpers -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n  for ( var prop in b ) {\n    a[ prop ] = b[ prop ];\n  }\n  return a;\n}\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nfunction makeArray( obj ) {\n  if ( Array.isArray( obj ) ) {\n    // use object if already an array\n    return obj;\n  }\n\n  var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n  if ( isArrayLike ) {\n    // convert nodeList to array\n    return arraySlice.call( obj );\n  }\n\n  // array of single index\n  return [ obj ];\n}\n\n// -------------------------- imagesLoaded -------------------------- //\n\n/**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\nfunction ImagesLoaded( elem, options, onAlways ) {\n  // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n  if ( !( this instanceof ImagesLoaded ) ) {\n    return new ImagesLoaded( elem, options, onAlways );\n  }\n  // use elem as selector string\n  var queryElem = elem;\n  if ( typeof elem == 'string' ) {\n    queryElem = document.querySelectorAll( elem );\n  }\n  // bail if bad element\n  if ( !queryElem ) {\n    console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\n    return;\n  }\n\n  this.elements = makeArray( queryElem );\n  this.options = extend( {}, this.options );\n  // shift arguments if no options set\n  if ( typeof options == 'function' ) {\n    onAlways = options;\n  } else {\n    extend( this.options, options );\n  }\n\n  if ( onAlways ) {\n    this.on( 'always', onAlways );\n  }\n\n  this.getImages();\n\n  if ( $ ) {\n    // add jQuery Deferred object\n    this.jqDeferred = new $.Deferred();\n  }\n\n  // HACK check async to allow time to bind listeners\n  setTimeout( this.check.bind( this ) );\n}\n\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\n\nImagesLoaded.prototype.options = {};\n\nImagesLoaded.prototype.getImages = function() {\n  this.images = [];\n\n  // filter & find items if we have an item selector\n  this.elements.forEach( this.addElementImages, this );\n};\n\n/**\n * @param {Node} element\n */\nImagesLoaded.prototype.addElementImages = function( elem ) {\n  // filter siblings\n  if ( elem.nodeName == 'IMG' ) {\n    this.addImage( elem );\n  }\n  // get background image on element\n  if ( this.options.background === true ) {\n    this.addElementBackgroundImages( elem );\n  }\n\n  // find children\n  // no non-element nodes, #143\n  var nodeType = elem.nodeType;\n  if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\n    return;\n  }\n  var childImgs = elem.querySelectorAll('img');\n  // concat childElems to filterFound array\n  for ( var i=0; i < childImgs.length; i++ ) {\n    var img = childImgs[i];\n    this.addImage( img );\n  }\n\n  // get child background images\n  if ( typeof this.options.background == 'string' ) {\n    var children = elem.querySelectorAll( this.options.background );\n    for ( i=0; i < children.length; i++ ) {\n      var child = children[i];\n      this.addElementBackgroundImages( child );\n    }\n  }\n};\n\nvar elementNodeTypes = {\n  1: true,\n  9: true,\n  11: true\n};\n\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\n  var style = getComputedStyle( elem );\n  if ( !style ) {\n    // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n    return;\n  }\n  // get url inside url(\"...\")\n  var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n  var matches = reURL.exec( style.backgroundImage );\n  while ( matches !== null ) {\n    var url = matches && matches[2];\n    if ( url ) {\n      this.addBackground( url, elem );\n    }\n    matches = reURL.exec( style.backgroundImage );\n  }\n};\n\n/**\n * @param {Image} img\n */\nImagesLoaded.prototype.addImage = function( img ) {\n  var loadingImage = new LoadingImage( img );\n  this.images.push( loadingImage );\n};\n\nImagesLoaded.prototype.addBackground = function( url, elem ) {\n  var background = new Background( url, elem );\n  this.images.push( background );\n};\n\nImagesLoaded.prototype.check = function() {\n  var _this = this;\n  this.progressedCount = 0;\n  this.hasAnyBroken = false;\n  // complete if no images\n  if ( !this.images.length ) {\n    this.complete();\n    return;\n  }\n\n  function onProgress( image, elem, message ) {\n    // HACK - Chrome triggers event before object properties have changed. #83\n    setTimeout( function() {\n      _this.progress( image, elem, message );\n    });\n  }\n\n  this.images.forEach( function( loadingImage ) {\n    loadingImage.once( 'progress', onProgress );\n    loadingImage.check();\n  });\n};\n\nImagesLoaded.prototype.progress = function( image, elem, message ) {\n  this.progressedCount++;\n  this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n  // progress event\n  this.emitEvent( 'progress', [ this, image, elem ] );\n  if ( this.jqDeferred && this.jqDeferred.notify ) {\n    this.jqDeferred.notify( this, image );\n  }\n  // check if completed\n  if ( this.progressedCount == this.images.length ) {\n    this.complete();\n  }\n\n  if ( this.options.debug && console ) {\n    console.log( 'progress: ' + message, image, elem );\n  }\n};\n\nImagesLoaded.prototype.complete = function() {\n  var eventName = this.hasAnyBroken ? 'fail' : 'done';\n  this.isComplete = true;\n  this.emitEvent( eventName, [ this ] );\n  this.emitEvent( 'always', [ this ] );\n  if ( this.jqDeferred ) {\n    var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n    this.jqDeferred[ jqMethod ]( this );\n  }\n};\n\n// --------------------------  -------------------------- //\n\nfunction LoadingImage( img ) {\n  this.img = img;\n}\n\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\n\nLoadingImage.prototype.check = function() {\n  // If complete is true and browser supports natural sizes,\n  // try to check for image status manually.\n  var isComplete = this.getIsImageComplete();\n  if ( isComplete ) {\n    // report based on naturalWidth\n    this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n    return;\n  }\n\n  // If none of the checks above matched, simulate loading on detached element.\n  this.proxyImage = new Image();\n  this.proxyImage.addEventListener( 'load', this );\n  this.proxyImage.addEventListener( 'error', this );\n  // bind to image as well for Firefox. #191\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  this.proxyImage.src = this.img.src;\n};\n\nLoadingImage.prototype.getIsImageComplete = function() {\n  // check for non-zero, non-undefined naturalWidth\n  // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n  return this.img.complete && this.img.naturalWidth;\n};\n\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\n  this.isLoaded = isLoaded;\n  this.emitEvent( 'progress', [ this, this.img, message ] );\n};\n\n// ----- events ----- //\n\n// trigger specified handler for event type\nLoadingImage.prototype.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\nLoadingImage.prototype.onload = function() {\n  this.confirm( true, 'onload' );\n  this.unbindEvents();\n};\n\nLoadingImage.prototype.onerror = function() {\n  this.confirm( false, 'onerror' );\n  this.unbindEvents();\n};\n\nLoadingImage.prototype.unbindEvents = function() {\n  this.proxyImage.removeEventListener( 'load', this );\n  this.proxyImage.removeEventListener( 'error', this );\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n};\n\n// -------------------------- Background -------------------------- //\n\nfunction Background( url, element ) {\n  this.url = url;\n  this.element = element;\n  this.img = new Image();\n}\n\n// inherit LoadingImage prototype\nBackground.prototype = Object.create( LoadingImage.prototype );\n\nBackground.prototype.check = function() {\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  this.img.src = this.url;\n  // check if image is already complete\n  var isComplete = this.getIsImageComplete();\n  if ( isComplete ) {\n    this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n    this.unbindEvents();\n  }\n};\n\nBackground.prototype.unbindEvents = function() {\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n};\n\nBackground.prototype.confirm = function( isLoaded, message ) {\n  this.isLoaded = isLoaded;\n  this.emitEvent( 'progress', [ this, this.element, message ] );\n};\n\n// -------------------------- jQuery -------------------------- //\n\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\n  jQuery = jQuery || window.jQuery;\n  if ( !jQuery ) {\n    return;\n  }\n  // set local variable\n  $ = jQuery;\n  // $().imagesLoaded()\n  $.fn.imagesLoaded = function( options, callback ) {\n    var instance = new ImagesLoaded( this, options, callback );\n    return instance.jqDeferred.promise( $(this) );\n  };\n};\n// try making plugin\nImagesLoaded.makeJQueryPlugin();\n\n// --------------------------  -------------------------- //\n\nreturn ImagesLoaded;\n\n});\n","/*!\n * Unidragger v2.4.0\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'unipointer/unipointer'\n    ], function( Unipointer ) {\n      return factory( window, Unipointer );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('unipointer')\n    );\n  } else {\n    // browser global\n    window.Unidragger = factory(\n      window,\n      window.Unipointer\n    );\n  }\n\n}( window, function factory( window, Unipointer ) {\n\n'use strict';\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n  this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n  this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n  // munge isAdd, default to true\n  isAdd = isAdd === undefined ? true : isAdd;\n  // bind each handle\n  var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n  var touchAction = isAdd ? this._touchActionValue : '';\n  for ( var i=0; i < this.handles.length; i++ ) {\n    var handle = this.handles[i];\n    this._bindStartEvent( handle, isAdd );\n    handle[ bindMethod ]( 'click', this );\n    // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n    if ( window.PointerEvent ) {\n      handle.style.touchAction = touchAction;\n    }\n  }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n  var isOkay = this.okayPointerDown( event );\n  if ( !isOkay ) {\n    return;\n  }\n  // track start event position\n  // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n  this.pointerDownPointer = {\n    pageX: pointer.pageX,\n    pageY: pointer.pageY,\n  };\n\n  event.preventDefault();\n  this.pointerDownBlur();\n  // bind move and end events\n  this._bindPostStartEvents( event );\n  this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n  TEXTAREA: true,\n  INPUT: true,\n  SELECT: true,\n  OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n  radio: true,\n  checkbox: true,\n  button: true,\n  submit: true,\n  image: true,\n  file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n  var isCursorNode = cursorNodes[ event.target.nodeName ];\n  var isClickType = clickTypes[ event.target.type ];\n  var isOkay = !isCursorNode || isClickType;\n  if ( !isOkay ) {\n    this._pointerReset();\n  }\n  return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n  var focused = document.activeElement;\n  // do not blur body for IE10, metafizzy/flickity#117\n  var canBlur = focused && focused.blur && focused != document.body;\n  if ( canBlur ) {\n    focused.blur();\n  }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n  var moveVector = this._dragPointerMove( event, pointer );\n  this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n  this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n  var moveVector = {\n    x: pointer.pageX - this.pointerDownPointer.pageX,\n    y: pointer.pageY - this.pointerDownPointer.pageY\n  };\n  // start drag if pointer has moved far enough to start drag\n  if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n    this._dragStart( event, pointer );\n  }\n  return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n  return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n  this.emitEvent( 'pointerUp', [ event, pointer ] );\n  this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n  if ( this.isDragging ) {\n    this._dragEnd( event, pointer );\n  } else {\n    // pointer didn't move enough for drag to start\n    this._staticClick( event, pointer );\n  }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n  this.isDragging = true;\n  // prevent clicks\n  this.isPreventingClicks = true;\n  this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n  this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n  // do not drag if not dragging yet\n  if ( !this.isDragging ) {\n    return;\n  }\n\n  this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n  event.preventDefault();\n  this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n  // set flags\n  this.isDragging = false;\n  // re-enable clicking async\n  setTimeout( function() {\n    delete this.isPreventingClicks;\n  }.bind( this ) );\n\n  this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n  this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n  if ( this.isPreventingClicks ) {\n    event.preventDefault();\n  }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n  // ignore emulated mouse up clicks\n  if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n    return;\n  }\n\n  this.staticClick( event, pointer );\n\n  // set flag for emulated clicks 300ms after touchend\n  if ( event.type != 'mouseup' ) {\n    this.isIgnoringMouseUp = true;\n    // reset flag after 300ms\n    setTimeout( function() {\n      delete this.isIgnoringMouseUp;\n    }.bind( this ), 400 );\n  }\n};\n\nproto.staticClick = function( event, pointer ) {\n  this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// -----  ----- //\n\nreturn Unidragger;\n\n}));\n","/*!\n * Unipointer v2.4.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /*global define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'ev-emitter/ev-emitter'\n    ], function( EvEmitter ) {\n      return factory( window, EvEmitter );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('ev-emitter')\n    );\n  } else {\n    // browser global\n    window.Unipointer = factory(\n      window,\n      window.EvEmitter\n    );\n  }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n  this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n  this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n  // munge isAdd, default to true\n  isAdd = isAdd === undefined ? true : isAdd;\n  var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n  // default to mouse events\n  var startEvent = 'mousedown';\n  if ( 'ontouchstart' in window ) {\n    // HACK prefer Touch Events as you can preventDefault on touchstart to\n    // disable scroll in iOS & mobile Chrome metafizzy/flickity#1177\n    startEvent = 'touchstart';\n  } else if ( window.PointerEvent ) {\n    // Pointer Events\n    startEvent = 'pointerdown';\n  }\n  elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n  for ( var i=0; i < touches.length; i++ ) {\n    var touch = touches[i];\n    if ( touch.identifier == this.pointerIdentifier ) {\n      return touch;\n    }\n  }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n  // dismiss clicks from right or middle buttons\n  var button = event.button;\n  if ( button && ( button !== 0 && button !== 1 ) ) {\n    return;\n  }\n  this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n  this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n  this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n  // dismiss right click and other pointers\n  // button = 0 is okay, 1-4 not\n  if ( event.button || this.isPointerDown ) {\n    return;\n  }\n\n  this.isPointerDown = true;\n  // save pointer identifier to match up touch events\n  this.pointerIdentifier = pointer.pointerId !== undefined ?\n    // pointerId for pointer events, touch.indentifier for touch events\n    pointer.pointerId : pointer.identifier;\n\n  this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n  this._bindPostStartEvents( event );\n  this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n  mousedown: [ 'mousemove', 'mouseup' ],\n  touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n  pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n  if ( !event ) {\n    return;\n  }\n  // get proper events to match start event\n  var events = postStartEvents[ event.type ];\n  // bind events to node\n  events.forEach( function( eventName ) {\n    window.addEventListener( eventName, this );\n  }, this );\n  // save these arguments\n  this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n  // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n  if ( !this._boundPointerEvents ) {\n    return;\n  }\n  this._boundPointerEvents.forEach( function( eventName ) {\n    window.removeEventListener( eventName, this );\n  }, this );\n\n  delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n  this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerMove( event, event );\n  }\n};\n\nproto.ontouchmove = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerMove( event, touch );\n  }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n  this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n  this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n  this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerUp( event, event );\n  }\n};\n\nproto.ontouchend = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerUp( event, touch );\n  }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n  this._pointerDone();\n  this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n  this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n  this._pointerReset();\n  this._unbindPostStartEvents();\n  this.pointerDone();\n};\n\nproto._pointerReset = function() {\n  // reset properties\n  this.isPointerDown = false;\n  delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerCancel( event, event );\n  }\n};\n\nproto.ontouchcancel = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerCancel( event, touch );\n  }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n  this._pointerDone();\n  this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n  this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// -----  ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n  return {\n    x: pointer.pageX,\n    y: pointer.pageY\n  };\n};\n\n// -----  ----- //\n\nreturn Unipointer;\n\n}));\n"],"names":["window","factory","matchesMethod","ElemProto","Element","prototype","matches","matchesSelector","prefixes","i","length","method","elem","selector","EvEmitter","proto","on","eventName","listener","events","this","_events","listeners","indexOf","push","once","onceEvents","_onceEvents","off","index","splice","emitEvent","args","slice","onceListeners","apply","allOff","utils","a","b","prop","num","div","arraySlice","Array","makeArray","obj","isArray","call","removeFrom","ary","getParent","parentNode","document","body","getQueryElement","querySelector","handleEvent","event","type","filterFindElements","elems","ffElems","forEach","HTMLElement","childElems","querySelectorAll","debounceMethod","_class","methodName","threshold","timeoutName","timeout","clearTimeout","arguments","_this","setTimeout","docReady","callback","readyState","addEventListener","toDashed","str","replace","match","$1","$2","toLowerCase","console","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","jQuery","options","attr","getAttribute","JSON","parse","error","className","instance","data","Flickity","imagesLoaded","createMethods","_createImagesLoaded","slider","onImagesLoadedProgress","image","cell","getParentCell","img","cellSizeChange","element","freeScroll","positionSliderAtSelected","getCellsFragment","cells","fragment","createDocumentFragment","appendChild","insert","_makeCells","len","undefined","isAppend","insertCellElement","insertBefore","endCells","_sizeCells","cellChange","append","prepend","remove","getCells","minCellIndex","Math","min","getCell","getSize","changedCellIndex","isPositioningSlider","prevSelectedElem","selectedElement","_positionCells","_getWrapShiftCells","setGallerySize","selectedIndex","getCellSlideIndex","slides","select","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","x","integratePhysics","positionSlider","settle","requestAnimationFrame","wrapAround","modulo","slideableWidth","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","cursorPosition","rightToLeft","translateX","getPositionValue","style","transform","firstSlide","positionX","target","progress","slidesWidth","dispatchEvent","selectedSlide","velocity","position","percentPosition","round","size","innerWidth","isPointerDown","isFreeScrolling","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","shift","cellShift","wrapShift","outerWidth","getFrictionFactor","force","isDraggable","dragForce","dragX","applyForce","selectedAttraction","Cell","parent","create","setAttribute","originSide","destroy","unselect","side","removeAttribute","setPosition","updateTarget","renderPosition","setDefaultTarget","marginProperty","width","cellAlign","sideOffset","adjustedX","classList","add","removeChild","Unidragger","extend","defaults","draggable","dragThreshold","_touchActionValue","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","viewport","bindHandles","unbindHandles","bindDrag","unbindDrag","pointerDown","pointer","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","activeElement","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","pageX","pageY","_bindPostStartEvents","focusNodes","INPUT","TEXTAREA","SELECT","pageXOffset","y","pageYOffset","nodeName","focus","isTouchStart","isTouchPointer","pointerType","isFocusNode","preventDefault","hasDragStarted","moveVector","abs","pointerUp","isTouchScrolling","_dragPointerUp","pointerDone","removeEventListener","dragStart","dragStartPosition","startAnimation","pointerMove","_dragPointerMove","_dragMove","dragMove","previousDragX","direction","originBound","max","endBound","getLastSlide","dragMoveTime","Date","dragEnd","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","isDragSelect","distance","getSlideDistance","positiveResting","_getClosestResting","negativeResting","increment","minDistance","Infinity","condition","contain","dist","minDist","isWrapAround","slideIndex","slide","wrap","floor","delta","staticClick","clickedCell","cellElem","cellIndex","onscroll","scroll","scrollMoveX","scrollMoveY","_pointerDone","Slide","animatePrototype","getComputedStyle","moveElements","toElem","GUID","instances","queryElement","flickityGUID","option","$element","constructor","_create","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","resize","id","guid","createElement","_createSlider","watchCSS","activate","opts","isActive","_filterFindCellElements","children","reloadCells","tabIndex","selectInitialIndex","isInitActivated","cellSelector","positionCells","map","getLastCell","maxCellHeight","cellX","startCell","outerHeight","updateSlides","_containSlides","nextMargin","canCellFit","_getCanCellFit","slideWidth","firstMargin","addCell","updateSelectedSlide","groupCells","number","parseInt","percentMatch","percent","_init","reposition","setCellAlign","cellAlignShorthands","center","left","right","shorthand","height","adaptiveHeight","_unshiftCells","gapX","_getGapCells","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","emitArgs","$event","jQEvent","Event","trigger","isWrap","isInstant","_wrapSelect","prevIndex","wrapIndex","backWrapDelta","forewardWrapDelta","previous","next","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","initialIndex","queryCell","selectCell","value","getAdjacentCellElements","adjCount","cellElems","uiChange","childUIPointerDown","onresize","isDragging","content","deactivate","onkeydown","isNotFocused","handler","keyboardHandlers","keyCode","leftMethod","rightMethod","prevScrollY","preventScroll","scrollTo","removeData","bridget","setJQuery","jq","getCellLazyImages","lazyloadAttr","srcAttr","srcsetAttr","lazySelector","imgs","LazyLoader","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","src","srcset","onload","complete","onerror","Unipointer","PageDots","Object","holder","dots","handleClick","onClick","bind","setDots","bindStartEvent","unbindStartEvent","addDots","removeDots","count","newDots","dot","updateSelected","selectedDot","onTap","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","hidden","tick","time","autoPlay","clear","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","svgURI","PrevNextButton","getArrowMovements","shape","x0","x1","y1","x2","y2","x3","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","update","createElementNS","path","pathMovements","arrowShape","onclick","enable","disabled","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","isOriginLeft","lastCell","lastMargin","getStyleSize","parseFloat","isNaN","noop","logError","message","measurements","measurementsLength","getZeroSize","innerHeight","getStyle","isBoxSizeOuter","isSetup","setup","padding","borderStyle","borderWidth","boxSizing","documentElement","nodeType","display","offsetWidth","offsetHeight","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","$","ImagesLoaded","onAlways","queryElem","elements","getImages","jqDeferred","Deferred","check","images","addElementImages","addImage","background","addElementBackgroundImages","elementNodeTypes","childImgs","child","LoadingImage","Background","url","Image","reURL","exec","backgroundImage","addBackground","loadingImage","onProgress","progressedCount","hasAnyBroken","isLoaded","notify","debug","log","isComplete","jqMethod","getIsImageComplete","confirm","naturalWidth","proxyImage","unbindEvents","makeJQueryPlugin","fn","promise","_bindHandles","isAdd","bindMethod","touchAction","handle","_bindStartEvent","PointerEvent","cursorNodes","OPTION","clickTypes","radio","checkbox","button","submit","file","isCursorNode","isClickType","isOkay","_pointerReset","focused","blur","_dragStart","_dragEnd","_staticClick","isPreventingClicks","isIgnoringMouseUp","getPointerPoint","startEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointerId","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","onmouseup","_pointerUp","onpointerup","ontouchend","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel"],"sourceRoot":""}