{
  "version": 3,
  "sources": ["/cdn/shop/t/29/assets/code-theme-global-defer.js?ddd=35497"],
  "sourcesContent": ["\"use strict\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nwindow.slate = window.slate || {};\nwindow.theme = window.theme || {};\n$.code = $.code || {}; // adding privacy cookie in global var so we don't need to call it everytime\n\nvar GlobalPrivacyCookie = null;\nvar privacyCookieInterval = window.setInterval(checkPrivacyCookie, 5000);\n\nfunction checkPrivacyCookie() {\n  if (getCookie(\"privacy-cookie\")) {\n    GlobalPrivacyCookie = JSON.parse(getCookie(\"privacy-cookie\"));\n    window.clearInterval(privacyCookieInterval);\n  }\n}\n/****************************************************************\n * Js imports\n ****************************************************************/\n\n/* external scripts */\n\n/**\n * A11y Helpers\n * -----------------------------------------------------------------------------\n * A collection of useful functions that help make your theme more accessible\n * to users with visual impairments.\n *\n *\n * @namespace a11y\n */\n\n\nslate.a11y = {\n  /**\n   * For use when focus shifts to a container rather than a link\n   * eg for In-page links, after scroll, focus shifts to content area so that\n   * next `tab` is where user expects if focusing a link, just $link.focus();\n   *\n   * @param {JQuery} $element - The element to be acted upon\n   */\n  pageLinkFocus: function pageLinkFocus($element) {\n    var focusClass = 'js-focus-hidden';\n    $element.first().attr('tabIndex', '-1').focus().addClass(focusClass).one('blur', callback);\n\n    function callback() {\n      $element.first().removeClass(focusClass).removeAttr('tabindex');\n    }\n  },\n\n  /**\n   * If there's a hash in the url, focus the appropriate element\n   */\n  focusHash: function focusHash() {\n    var hash = window.location.hash; // is there a hash in the url? is it an element on the page?\n\n    if (hash && document.getElementById(hash.slice(1))) {\n      this.pageLinkFocus($(hash));\n    }\n  },\n\n  /**\n   * When an in-page (url w/hash) link is clicked, focus the appropriate element\n   */\n  bindInPageLinks: function bindInPageLinks() {\n    $('a[href*=#]').on('click', function (evt) {\n      this.pageLinkFocus($(evt.currentTarget.hash));\n    }.bind(this));\n  },\n\n  /**\n   * Traps the focus in a particular container\n   *\n   * @param {object} options - Options to be used\n   * @param {jQuery} options.$container - Container to trap focus within\n   * @param {jQuery} options.$elementToFocus - Element to be focused when focus leaves container\n   * @param {string} options.namespace - Namespace used for new focus event handler\n   */\n  trapFocus: function trapFocus(options) {\n    var eventName = options.namespace ? 'focusin.' + options.namespace : 'focusin';\n\n    if (!options.$elementToFocus) {\n      options.$elementToFocus = options.$container;\n    }\n\n    options.$container.attr('tabindex', '-1');\n    options.$elementToFocus.focus();\n    $(document).on(eventName, function (evt) {\n      if (options.$container[0] !== evt.target && !options.$container.has(evt.target).length) {\n        options.$container.focus();\n      }\n    });\n  },\n\n  /**\n   * Removes the trap of focus in a particular container\n   *\n   * @param {object} options - Options to be used\n   * @param {jQuery} options.$container - Container to trap focus within\n   * @param {string} options.namespace - Namespace used for new focus event handler\n   */\n  removeTrapFocus: function removeTrapFocus(options) {\n    var eventName = options.namespace ? 'focusin.' + options.namespace : 'focusin';\n\n    if (options.$container && options.$container.length) {\n      options.$container.removeAttr('tabindex');\n    }\n\n    $(document).off(eventName);\n  }\n};\n/**\n * Cart Template Script\n * ------------------------------------------------------------------------------\n * A file that contains scripts highly couple code to the Cart template.\n *\n * @namespace cart\n */\n\nslate.cart = {\n  /**\n   * Browser cookies are required to use the cart. This function checks if\n   * cookies are enabled in the browser.\n   */\n  cookiesEnabled: function cookiesEnabled() {\n    var cookieEnabled = navigator.cookieEnabled;\n\n    if (!cookieEnabled) {\n      document.cookie = 'testcookie';\n      cookieEnabled = document.cookie.indexOf('testcookie') !== -1;\n    }\n\n    return cookieEnabled;\n  }\n};\n/**\n * Utility helpers\n * -----------------------------------------------------------------------------\n * A collection of useful functions for dealing with arrays and objects\n *\n * @namespace utils\n */\n\nslate.utils = {\n  /**\n   * Return an object from an array of objects that matches the provided key and value\n   *\n   * @param {array} array - Array of objects\n   * @param {string} key - Key to match the value against\n   * @param {string} value - Value to get match of\n   */\n  findInstance: function findInstance(array, key, value) {\n    for (var i = 0; i < array.length; i++) {\n      if (array[i][key] === value) {\n        return array[i];\n      }\n    }\n  },\n\n  /**\n   * Remove an object from an array of objects by matching the provided key and value\n   *\n   * @param {array} array - Array of objects\n   * @param {string} key - Key to match the value against\n   * @param {string} value - Value to get match of\n   */\n  removeInstance: function removeInstance(array, key, value) {\n    var i = array.length;\n\n    while (i--) {\n      if (array[i][key] === value) {\n        array.splice(i, 1);\n        break;\n      }\n    }\n\n    return array;\n  },\n\n  /**\n   * _.compact from lodash\n   * Remove empty/false items from array\n   * Source: https://github.com/lodash/lodash/blob/master/compact.js\n   *\n   * @param {array} array\n   */\n  compact: function compact(array) {\n    var index = -1;\n    var length = array == null ? 0 : array.length;\n    var resIndex = 0;\n    var result = [];\n\n    while (++index < length) {\n      var value = array[index];\n\n      if (value) {\n        result[resIndex++] = value;\n      }\n    }\n\n    return result;\n  },\n\n  /**\n   * _.defaultTo from lodash\n   * Checks `value` to determine whether a default value should be returned in\n   * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n   * or `undefined`.\n   * Source: https://github.com/lodash/lodash/blob/master/defaultTo.js\n   *\n   * @param {*} value - Value to check\n   * @param {*} defaultValue - Default value\n   * @returns {*} - Returns the resolved value\n   */\n  defaultTo: function defaultTo(value, defaultValue) {\n    return value == null || value !== value ? defaultValue : value;\n  }\n};\n/**\n * Rich Text Editor\n * -----------------------------------------------------------------------------\n * Wrap videos in div to force responsive layout.\n *\n * @namespace rte\n */\n\nslate.rte = {\n  wrapTable: function wrapTable() {\n    $('.content-text table').wrap('<div class=\"rte__table-wrapper\"></div>');\n  },\n  iframeReset: function iframeReset() {\n    var $iframeVideo = $('.content-text iframe[src*=\"youtube.com/embed\"], .content-text iframe[src*=\"player.vimeo\"]');\n    var $iframeReset = $iframeVideo.add('.content-text iframe#admin_bar_iframe');\n    $iframeVideo.each(function () {\n      // Add wrapper to make video responsive\n      $(this).wrap('<div class=\"rte__video-wrapper\"></div>');\n    });\n    $iframeReset.each(function () {\n      // Re-set the src attribute on each iframe after page load\n      // for Chrome's \"incorrect iFrame content on 'back'\" bug.\n      // https://code.google.com/p/chromium/issues/detail?id=395791\n      // Need to specifically target video and admin bar\n      this.src = this.src;\n    });\n  }\n};\n\nslate.Sections = function Sections() {\n  this.constructors = {};\n  this.instances = [];\n  $(document).on('shopify:section:load', this._onSectionLoad.bind(this)).on('shopify:section:unload', this._onSectionUnload.bind(this)).on('shopify:section:select', this._onSelect.bind(this)).on('shopify:section:deselect', this._onDeselect.bind(this)).on('shopify:section:reorder', this._onReorder.bind(this)).on('shopify:block:select', this._onBlockSelect.bind(this)).on('shopify:block:deselect', this._onBlockDeselect.bind(this));\n};\n\nslate.Sections.prototype = $.extend({}, slate.Sections.prototype, {\n  _createInstance: function _createInstance(container, constructor) {\n    var $container = $(container);\n    var id = $container.attr('data-section-id');\n    var type = $container.attr('data-section-type');\n    constructor = constructor || this.constructors[type];\n\n    if (typeof constructor === 'undefined') {\n      return;\n    }\n\n    var instance = $.extend(new constructor(container), {\n      id: id,\n      type: type,\n      container: container\n    });\n    this.instances.push(instance);\n  },\n  _onSectionLoad: function _onSectionLoad(evt) {\n    var container = $('[data-section-id]', evt.target)[0];\n\n    if (container) {\n      this._createInstance(container);\n    }\n  },\n  _onSectionUnload: function _onSectionUnload(evt) {\n    var instance = slate.utils.findInstance(this.instances, 'id', evt.detail.sectionId);\n\n    if (!instance) {\n      return;\n    }\n\n    if (typeof instance.onUnload === 'function') {\n      instance.onUnload(evt);\n    }\n\n    this.instances = slate.utils.removeInstance(this.instances, 'id', evt.detail.sectionId);\n  },\n  _onSelect: function _onSelect(evt) {\n    var instance = slate.utils.findInstance(this.instances, 'id', evt.detail.sectionId);\n\n    if (instance && typeof instance.onSelect === 'function') {\n      instance.onSelect(evt);\n    }\n  },\n  _onDeselect: function _onDeselect(evt) {\n    var instance = slate.utils.findInstance(this.instances, 'id', evt.detail.sectionId);\n\n    if (instance && typeof instance.onDeselect === 'function') {\n      instance.onDeselect(evt);\n    }\n  },\n  _onReorder: function _onReorder(evt) {\n    var instance = slate.utils.findInstance(this.instances, 'id', evt.detail.sectionId);\n\n    if (instance && typeof instance.onReorder === 'function') {\n      instance.onReorder(evt);\n    }\n  },\n  _onBlockSelect: function _onBlockSelect(evt) {\n    var instance = slate.utils.findInstance(this.instances, 'id', evt.detail.sectionId);\n\n    if (instance && typeof instance.onBlockSelect === 'function') {\n      instance.onBlockSelect(evt);\n    }\n  },\n  _onBlockDeselect: function _onBlockDeselect(evt) {\n    var instance = slate.utils.findInstance(this.instances, 'id', evt.detail.sectionId);\n\n    if (instance && typeof instance.onBlockDeselect === 'function') {\n      instance.onBlockDeselect(evt);\n    }\n  },\n  register: function register(type, constructor) {\n    this.constructors[type] = constructor;\n    $('[data-section-type=' + type + ']').each(function (index, container) {\n      this._createInstance(container, constructor);\n    }.bind(this));\n  }\n});\n/**\n * Currency Helpers\n * -----------------------------------------------------------------------------\n * A collection of useful functions that help with currency formatting\n *\n * Current contents\n * - formatMoney - Takes an amount in cents and returns it as a formatted dollar value.\n *\n */\n\nslate.Currency = function () {\n  var moneyFormat = '${{amount}}';\n  /**\n   * Format money values based on your shop currency settings\n   * @param  {Number|string} cents - value in cents or dollar amount e.g. 300 cents\n   * or 3.00 dollars\n   * @param  {String} format - shop money_format setting\n   * @return {String} value - formatted value\n   */\n\n  function formatMoney(cents, format) {\n    if (typeof cents === 'string') {\n      cents = cents.replace('.', '');\n    }\n\n    var value = '';\n    var placeholderRegex = /\\{\\{\\s*(\\w+)\\s*\\}\\}/;\n    var formatString = format || moneyFormat;\n    var moneyCentsDelimiter = theme.moneyCentsDelimiter;\n    var moneyThousandsDelimiter = theme.moneyThousandsDelimiter;\n\n    function formatWithDelimiters(number, precision, thousands, decimal) {\n      precision = slate.utils.defaultTo(precision, 2);\n      thousands = slate.utils.defaultTo(thousands, moneyThousandsDelimiter);\n      decimal = slate.utils.defaultTo(decimal, moneyCentsDelimiter);\n\n      if (isNaN(number) || number == null) {\n        return 0;\n      }\n\n      number = (number / 100.0).toFixed(precision);\n      var parts = number.split('.');\n      var dollarsAmount = parts[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1' + thousands);\n      var centsAmount = parts[1] ? decimal + parts[1] : '';\n      return dollarsAmount + centsAmount;\n    }\n\n    switch (formatString.match(placeholderRegex)[1]) {\n      case 'amount':\n        value = formatWithDelimiters(cents, 2);\n        break;\n\n      case 'amount_no_decimals':\n        value = formatWithDelimiters(cents, 0);\n        break;\n\n      case 'amount_with_space_separator':\n        value = formatWithDelimiters(cents, 2, ' ', moneyCentsDelimiter);\n        break;\n\n      case 'amount_with_comma_separator':\n        value = formatWithDelimiters(cents, 2, moneyThousandsDelimiter, moneyCentsDelimiter);\n        break;\n\n      case 'amount_no_decimals_with_comma_separator':\n        value = formatWithDelimiters(cents, 0, moneyThousandsDelimiter, moneyCentsDelimiter);\n        break;\n\n      case 'amount_no_decimals_with_space_separator':\n        value = formatWithDelimiters(cents, 0, ' ');\n        break;\n    }\n\n    return formatString.replace(placeholderRegex, value);\n  }\n\n  return {\n    formatMoney: formatMoney\n  };\n}();\n/**\n * Image Helper Functions\n * -----------------------------------------------------------------------------\n * A collection of functions that help with basic image operations.\n *\n */\n\n\nslate.Image = function () {\n  /**\n   * Preloads an image in memory and uses the browsers cache to store it until needed.\n   *\n   * @param {Array} images - A list of image urls\n   * @param {String} size - A shopify image size attribute\n   */\n  function preload(images, size) {\n    if (typeof images === 'string') {\n      images = [images];\n    }\n\n    for (var i = 0; i < images.length; i++) {\n      var image = images[i];\n      this.loadImage(this.getSizedImageUrl(image, size));\n    }\n  }\n  /**\n   * Loads and caches an image in the browsers cache.\n   * @param {string} path - An image url\n   */\n\n\n  function loadImage(path) {\n    new Image().src = path;\n  }\n  /**\n   * Find the Shopify image attribute size\n   *\n   * @param {string} src\n   * @returns {null}\n   */\n\n\n  function imageSize(src) {\n    var match = src.match(/.+_((?:pico|icon|thumb|small|compact|medium|large|grande)|\\d{1,4}x\\d{0,4}|x\\d{1,4})[_\\.@]/);\n\n    if (match) {\n      return match[1];\n    } else {\n      return null;\n    }\n  }\n  /**\n   * Adds a Shopify size attribute to a URL\n   *\n   * @param src\n   * @param size\n   * @returns {*}\n   */\n\n\n  function getSizedImageUrl(src, size) {\n    if (size === null) {\n      return src;\n    }\n\n    if (size === 'master') {\n      return this.removeProtocol(src);\n    }\n\n    var match = src.match(/\\.(jpg|jpeg|gif|png|bmp|bitmap|tiff|tif)(\\?v=\\d+)?$/i);\n\n    if (match) {\n      var prefix = src.split(match[0]);\n      var suffix = match[0];\n      return this.removeProtocol(prefix[0] + '_' + size + suffix);\n    } else {\n      return null;\n    }\n  }\n\n  function removeProtocol(path) {\n    return path.replace(/http(s)?:/, '');\n  }\n\n  return {\n    preload: preload,\n    loadImage: loadImage,\n    imageSize: imageSize,\n    getSizedImageUrl: getSizedImageUrl,\n    removeProtocol: removeProtocol\n  };\n}();\n/**\n * Variant Selection scripts\n * ------------------------------------------------------------------------------\n *\n * Handles change events from the variant inputs in any `cart/add` forms that may\n * exist. Also updates the master select and triggers updates when the variants\n * price or image changes.\n *\n * @namespace variants\n */\n\n\nslate.Variants = function () {\n  /**\n   * Variant constructor\n   *\n   * @param {object} options - Settings from `product.js`\n   */\n  function Variants(options) {\n    this.$container = options.$container;\n    this.product = options.product;\n    this.singleOptionSelector = options.singleOptionSelector;\n    this.originalSelectorId = options.originalSelectorId;\n    this.enableHistoryState = options.enableHistoryState;\n    this.currentVariant = this._getVariantFromOptions();\n    $(this.singleOptionSelector, this.$container).on('change', this._onSelectChange.bind(this));\n  }\n\n  Variants.prototype = $.extend({}, Variants.prototype, {\n    /**\n     * Get the currently selected options from add-to-cart form. Works with all\n     * form input elements.\n     *\n     * @return {array} options - Values of currently selected variants\n     */\n    _getCurrentOptions: function _getCurrentOptions() {\n      var currentOptions = $.map($(this.singleOptionSelector, this.$container), function (element) {\n        var $element = $(element);\n        var type = $element.attr('type');\n        var currentOption = {};\n\n        if (type === 'radio' || type === 'checkbox') {\n          if ($element[0].checked) {\n            currentOption.value = $element.val();\n            currentOption.index = $element.data('index');\n            $element.closest('label').addClass('checked');\n            return currentOption;\n          } else {\n            $element.closest('label').removeClass('checked');\n            return false;\n          }\n        } else {\n          currentOption.value = $element.val();\n          currentOption.index = $element.data('index');\n          return currentOption;\n        }\n      }); // remove any unchecked input values if using radio buttons or checkboxes\n\n      currentOptions = slate.utils.compact(currentOptions);\n      return currentOptions;\n    },\n\n    /**\n     * Find variant based on selected values.\n     *\n     * @param  {array} selectedValues - Values of variant inputs\n     * @return {object || undefined} found - Variant object from product.variants\n     */\n    _getVariantFromOptions: function _getVariantFromOptions() {\n      var selectedValues = this._getCurrentOptions();\n\n      var variants = this.product.variants;\n      var found = false;\n      variants.forEach(function (variant) {\n        var satisfied = true;\n        selectedValues.forEach(function (option) {\n          if (satisfied) {\n            satisfied = option.value === variant[option.index];\n          }\n        });\n\n        if (satisfied) {\n          found = variant;\n        }\n      });\n      return found || null;\n    },\n\n    /**\n     * Event handler for when a variant input changes.\n     */\n    _onSelectChange: function _onSelectChange() {\n      var variant = this._getVariantFromOptions();\n\n      this.$container.trigger({\n        type: 'variantChange',\n        variant: variant\n      });\n\n      if (!variant) {\n        return;\n      }\n\n      this._updateMasterSelect(variant);\n\n      this._updateImages(variant);\n\n      this._updatePrice(variant);\n\n      this.currentVariant = variant;\n\n      if (variant.compare_at_price > variant.price) {\n        $('.product-images-slider-sale').find('.swiper-slide').first().find('figure').before('<span class=\"offer-sale\" data-pdp-img-sale-badge>' + saleLabel + '</span>');\n      }\n\n      if (this.enableHistoryState) {\n        this._updateHistoryState(variant);\n      }\n    },\n\n    /**\n     * Trigger event when variant image changes\n     *\n     * @param  {object} variant - Currently selected variant\n     * @return {event}  variantImageChange\n     */\n    _updateImages: function _updateImages(variant) {\n      var variantImage = variant.featured_image || {};\n      var currentVariantImage = this.currentVariant.featured_image || {};\n\n      if (!variant.featured_image || variantImage.src === currentVariantImage.src) {\n        return;\n      }\n\n      this.$container.trigger({\n        type: 'variantImageChange',\n        variant: variant\n      });\n    },\n\n    /**\n     * Trigger event when variant price changes.\n     *\n     * @param  {object} variant - Currently selected variant\n     * @return {event} variantPriceChange\n     */\n    _updatePrice: function _updatePrice(variant) {\n      if (variant.price === this.currentVariant.price && variant.compare_at_price === this.currentVariant.compare_at_price) {\n        return;\n      }\n\n      this.$container.trigger({\n        type: 'variantPriceChange',\n        variant: variant\n      });\n    },\n\n    /**\n     * Update history state for product deeplinking\n     *\n     * @param  {variant} variant - Currently selected variant\n     * @return {k}         [description]\n     */\n    _updateHistoryState: function _updateHistoryState(variant) {\n      if (!history.replaceState || !variant) {\n        return;\n      }\n\n      var newurl = window.location.protocol + '//' + window.location.host + window.location.pathname + '?variant=' + variant.id;\n      window.history.replaceState({\n        path: newurl\n      }, '', newurl);\n    },\n\n    /**\n     * Update hidden master select of variant change\n     *\n     * @param  {variant} variant - Currently selected variant\n     */\n    _updateMasterSelect: function _updateMasterSelect(variant) {\n      $(this.originalSelectorId, this.$container)[0].value = variant.id;\n      this.$container.trigger({\n        type: 'masterSelectChange',\n        variant: variant\n      });\n    }\n  });\n  return Variants;\n}();\n/**\n * Product Template Script\n * ------------------------------------------------------------------------------\n * A file that contains scripts highly couple code to the Product template.\n *\n   * @namespace product\n */\n\n\ntheme.Product = function () {\n  var selectors = {\n    addToCart: '[data-add-to-cart]',\n    addToCartButton: '[data-ajax-cart-add-button]',\n    addToCartText: '[data-add-to-cart-text]',\n    comparePrice: '[data-compare-price]',\n    comparePriceText: '[data-compare-text]',\n    savingsBadge: '[data-savings-badge]',\n    originalSelectorId: '[data-product-select]',\n    priceWrapper: '[data-price-wrapper]',\n    productFeaturedImage: '[data-product-featured-image]',\n    productJson: '[data-product-json]',\n    productPrice: '[data-product-price]',\n    productThumbs: '[data-product-single-thumbnail]',\n    singleOptionSelector: '[data-single-option-selector]',\n    noStockMessage: '[data-product-nostock]',\n    amazonMessageLink: '[data-product-nostock-amazon-link]',\n    variantTitle: '[data-variant-title]',\n    globalAmazonRedirectButton: '[data-global-amazon-redirect]',\n    // Shop at Amazon button when redirecting all products to a.com during promo (DE)\n    amazonRedirectText: '[data-amazon-redirect-text]',\n    // button text for the above case\n    secondaryAddToCartLink: '[data-add-to-cart-secondary]',\n    // secondary ATC link under Shop at Amazon button when redirecting all products to a.com during promo (DE)\n    //imgSaleBadge: '[data-pdp-img-sale-badge]'\n    dualCtaAmazonButton: '[data-dual-cta-test-amazon-button]',\n    // Secondary Shop at Amazon CTA for A/B test - EEC-2120/2311\n    dualCtaAmazonButtonVariantUrl: '[data-dual-cta-test-variant-amazon-url]',\n    preorderAmazonCta: '[data-add-to-cart-preorder]'\n  };\n  /**\n   * Product section constructor. Runs on page load as well as Theme Editor\n   * `section:load` events.\n   * @param {string} container - selector for the section container DOM element\n   */\n\n  function Product(container) {\n    this.$container = $(container); // Stop parsing if we don't have the product json script tag when loading\n    // section in the Theme Editor\n\n    if (!$(selectors.productJson, this.$container).html()) {\n      return;\n    }\n\n    var sectionId = this.$container.attr('data-section-id');\n    this.productSingleObject = JSON.parse($(selectors.productJson, this.$container).html());\n    var options = {\n      $container: this.$container,\n      enableHistoryState: this.$container.data('enable-history-state') || false,\n      singleOptionSelector: selectors.singleOptionSelector,\n      originalSelectorId: selectors.originalSelectorId,\n      product: this.productSingleObject\n    };\n    this.settings = {};\n    this.namespace = '.product';\n    this.variants = new slate.Variants(options);\n    this.$featuredImage = $(selectors.productFeaturedImage, this.$container);\n    this.$container.on('variantChange' + this.namespace, this.updateAddToCartState.bind(this));\n    this.$container.on('variantPriceChange' + this.namespace, this.updateProductPrices.bind(this));\n\n    if (this.$featuredImage.length > 0) {\n      this.settings.imageSize = slate.Image.imageSize(this.$featuredImage.attr('src'));\n      slate.Image.preload(this.productSingleObject.images, this.settings.imageSize);\n      this.$container.on('variantImageChange' + this.namespace, this.updateProductImage.bind(this));\n    }\n  }\n\n  Product.prototype = $.extend({}, Product.prototype, {\n    /**\n     * Updates the DOM state of the add to cart button\n     *\n     * @param {boolean} enabled - Decides whether cart is enabled or disabled\n     * @param {string} text - Updates the text notification content of the cart\n     */\n    updateAddToCartState: function updateAddToCartState(evt) {\n      var variant = evt.variant;\n      var variantData = $('.variant-stock > data');\n      var variantinventory = '';\n      var variantPolicy = '';\n      var variantAmazonRedirect = false;\n      var variantAmazonLink = '';\n      var variantStockStatus = '';\n      var variantNotify = '';\n      var variantHideAtfTwisters = '';\n      variantData.each(function () {\n        if ($(this).data(\"id\") == variant.id) {\n          variantinventory = $(this).data(\"inv\");\n          variantPolicy = $(this).data(\"policy\");\n          variantAmazonRedirect = $(this).data(\"amazon-redirect\");\n          variantAmazonLink = $(this).data(\"amazon-url\");\n          variantStockStatus = $(this).data(\"stock-status\");\n          variantNotify = $(this).data(\"variant-notify\");\n          variantHideAtfTwisters = $(this).data(\"hide-atf-twisters\");\n        }\n      });\n\n      if (variantHideAtfTwisters == 1) {\n        $('.twisters-block__multipack, .twisters-block__power-source').slideUp();\n      } else {\n        $('.twisters-block__multipack, .twisters-block__power-source').slideDown();\n      }\n\n      if (variant) {\n        $(selectors.priceWrapper, this.$container).removeClass('hide');\n      } else {\n        $(selectors.addToCart, this.$container).prop('disabled', true);\n        $(selectors.addToCart, this.$container).removeAttr('data-ajax-cart-add-button');\n        $(selectors.addToCart, this.$container).attr('type', 'submit');\n        $(selectors.addToCartText, this.$container).html(theme.strings.unavailable);\n        $(selectors.priceWrapper, this.$container).addClass('hide');\n        return;\n      }\n\n      if (variant.available && variantinventory > 0) {\n        // product variable is available\n        $(selectors.addToCart, this.$container).prop('disabled', false);\n        $(selectors.addToCart, this.$container).removeClass('hide');\n        $(selectors.addToCart, this.$container).attr('data-ajax-cart-add-button', '');\n        $(selectors.addToCart, this.$container).attr('type', 'submit');\n        $(selectors.addToCart, this.$container).attr('disabled', false);\n        $(selectors.addToCart).removeAttr('data-amazon-link');\n        $(selectors.addToCart).attr('data-ajax-cart-add-button', '');\n        $(selectors.addToCartText, this.$container).html(theme.strings.addToCart);\n        $(selectors.amazonRedirectText).html(theme.strings.shopAmazon); // Updates 'Shop at Amazon' CTA text when variant is available\n\n        $(selectors.globalAmazonRedirectButton).attr('href', variantAmazonLink); // Updates a.com redirect link on variant change\n\n        $(selectors.secondaryAddToCartLink).show(); // Show secondary ATC link under 'Shop At Amazon' button\n\n        $(selectors.dualCtaAmazonButton).removeClass('hide'); // Show secondary Shop at Amazon button in dual CTA A/B test - EEC-2120/2311\n\n        $(selectors.dualCtaAmazonButton).attr('href', variantAmazonLink); // Update Shop at Amazon button URL in dual CTA A/B test - EEC-2120/2311\n\n        $(selectors.noStockMessage, this.$container).hide();\n\n        if ($('.variant-notify').length) {\n          $('.variant-notify, .newsletter-section').hide();\n        }\n\n        if ($('#variant-quantity').length) {\n          inventoryQuantity = variantinventory;\n        }\n      } else if (variantStockStatus === 'oos' && variantinventory < 1) {\n        if (variantNotify === 'notify') {\n          $('.variant-notify').show();\n          $('.contact-form__product-handle').val(variant.name.replaceAll(' ', '-').replaceAll(',', '').replaceAll('(', '').replaceAll(')', ''));\n          $(selectors.addToCart, this.$container).addClass('hide');\n        } else {\n          if ($('.variant-notify').length) {\n            $('.variant-notify').hide();\n          } // product variable is temporarily out of stock\n\n\n          $(selectors.addToCart, this.$container).removeAttr('data-ajax-cart-add-button');\n          $(selectors.addToCart, this.$container).prop('disabled', true); // $(selectors.addToCart, this.$container).attr('type', 'reset');\n\n          if (variantAmazonRedirect) {\n            $(selectors.addToCartText, this.$container).html(theme.strings.shopAmazon);\n            $(selectors.addToCart).removeAttr('data-ajax-cart-add-button');\n            $(selectors.addToCart).attr('data-amazon-link', variantAmazonLink);\n            $(selectors.addToCart, this.$container).prop('disabled', false);\n            $(selectors.globalAmazonRedirectButton).attr('href', variantAmazonLink); // Updates a.com redirect link on variant change when redirecting all products to a.com during promo (DE)\n\n            $(selectors.secondaryAddToCartLink).hide(); // Hide secondary ATC link under Shop At Amazon button\n\n            $(selectors.dualCtaAmazonButton).addClass('hide'); // Hide secondary Shop at Amazon button in dual CTA A/B test - EEC-2120/2311\n\n            $(selectors.dualCtaAmazonButton).attr('href', variantAmazonLink); // Update Shop at Amazon button URL in dual CTA A/B test - EEC-2120/2311\n\n            $(selectors.preorderAmazonCta).attr('href', variantAmazonLink); // Add this to make sure the no stock message points to the correct variant on Amazon, otherwise it loads the current_variant from Shopify\n\n            $(selectors.amazonMessageLink).attr('href', variantAmazonLink);\n            $(selectors.variantTitle).html(variant.title); // Show the no-stock message even when redirecting to Amazon\n\n            $(selectors.noStockMessage, this.$container).html(theme.strings.amazonOOSMessage);\n            $(selectors.noStockMessage, this.$container).show();\n          } else {\n            $(selectors.addToCartButton, this.$container).prop('disabled', true);\n            $(selectors.addToCartButton).removeAttr('data-amazon-link');\n            $(selectors.addToCartButton).attr('data-ajax-cart-add-button', '');\n            $(selectors.addToCartText, this.$container).html(theme.strings.unavailable);\n            $(selectors.noStockMessage, this.$container).show();\n            $(selectors.dualCtaAmazonButton).addClass('hide'); // Hide secondary Shop at Amazon button in dual CTA A/B test - EEC-2120/2311\n\n            $(selectors.preorderAmazonCta).attr('href', variantAmazonLink);\n          }\n        }\n      } else if (variant.available && variantinventory < 1) {\n        // product variable is temporarily out of stock\n        $(selectors.addToCart, this.$container).removeAttr('data-ajax-cart-add-button');\n        $(selectors.addToCart, this.$container).attr('type', 'reset');\n\n        if (variantAmazonRedirect) {\n          $(selectors.addToCartText, this.$container).html(theme.strings.shopAmazon);\n          $(selectors.addToCart).removeAttr('data-ajax-cart-add-button');\n          $(selectors.addToCart).attr('data-amazon-link', variantAmazonLink);\n          $(selectors.dualCtaAmazonButton).addClass('hide'); // Hide secondary Shop at Amazon button in dual CTA A/B test - EEC-2120/2311\n\n          $(selectors.preorderAmazonCta).attr('href', variantAmazonLink); // Add this to make sure the no stock message points to the correct variant on Amazon, otherwise it loads the current_variant from Shopify\n\n          $(selectors.amazonMessageLink).attr('href', variantAmazonLink);\n          $(selectors.variantTitle).html(variant.title); // Show the no-stock message even when redirecting to Amazon\n\n          console.log('---', $(selectors.noStockMessage, this.$container));\n          $(selectors.noStockMessage, this.$container).html(theme.strings.amazonOOSMessage);\n          $(selectors.noStockMessage, this.$container).show();\n        } else {\n          $(selectors.addToCart, this.$container).prop('disabled', true);\n          $(selectors.addToCart).removeAttr('data-amazon-link');\n          $(selectors.addToCart).attr('data-ajax-cart-add-button', '');\n          $(selectors.addToCartText, this.$container).html(theme.strings.unavailable);\n          $(selectors.noStockMessage, this.$container).show();\n          $(selectors.dualCtaAmazonButton).addClass('hide'); // Hide secondary Shop at Amazon button in dual CTA A/B test - EEC-2120/2311\n\n          $(selectors.preorderAmazonCta).attr('href', variantAmazonLink);\n        }\n      } else {\n        // product variable is sold out\n        $(selectors.addToCart, this.$container).prop('disabled', true);\n        $(selectors.addToCartText, this.$container).html(theme.strings.soldOut);\n        $(selectors.noStockMessage, this.$container).hide();\n        $(selectors.dualCtaAmazonButton).addClass('hide'); // Hide secondary Shop at Amazon button in dual CTA A/B test - EEC-2120/2311\n\n        $(selectors.preorderAmazonCta).attr('href', variantAmazonLink);\n      }\n    },\n\n    /**\n     * Updates the DOM with specified prices\n     *\n     * @param {string} productPrice - The current price of the product\n     * @param {string} comparePrice - The original price of the product\n     */\n    updateProductPrices: function updateProductPrices(evt) {\n      var variant = evt.variant;\n      var $comparePrice = $(selectors.comparePrice, this.$container);\n      var $compareEls = $comparePrice.add(selectors.comparePriceText, this.$container).add(selectors.savingsBadge);\n      $(selectors.productPrice, this.$container).html(slate.Currency.formatMoney(variant.price, theme.moneyFormat));\n\n      if (variant.compare_at_price > variant.price) {\n        $comparePrice.html(slate.Currency.formatMoney(variant.compare_at_price, theme.moneyFormat));\n        $compareEls.removeClass('hide');\n      } else {\n        $comparePrice.html('');\n        $compareEls.addClass('hide');\n      }\n    },\n\n    /**\n     * Updates the DOM with the specified image URL\n     *\n     * @param {string} src - Image src URL\n     */\n    updateProductImage: function updateProductImage(evt) {\n      var variant = evt.variant;\n      var sizedImgUrl = slate.Image.getSizedImageUrl(variant.featured_image.src, this.settings.imageSize); // this.$featuredImage.attr('src', sizedImgUrl);\n    },\n\n    /**\n     * Event callback for Theme Editor `section:unload` event\n     */\n    onUnload: function onUnload() {\n      this.$container.off(this.namespace);\n    }\n  });\n  return Product;\n}();\n\n$(document).ready(function () {\n  var sections = new slate.Sections();\n  sections.register('product', theme.Product); // Common a11y fixes\n\n  slate.a11y.pageLinkFocus($(window.location.hash));\n  $('[data-page-link-focus]').on('click', function (evt) {\n    slate.a11y.pageLinkFocus($(evt.currentTarget.hash));\n  }); // Wrap videos in div to force responsive layout.\n\n  slate.rte.wrapTable();\n  slate.rte.iframeReset(); // Apply a specific class to the html element for browser support of cookies.\n\n  if (slate.cart.cookiesEnabled()) {\n    document.documentElement.className = document.documentElement.className.replace('supports-no-cookies', 'supports-cookies');\n  }\n});\n!function (e, t) {\n  \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && \"object\" == (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) ? module.exports = t() : \"function\" == typeof define && define.amd ? define([], t) : \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) ? exports.AOS = t() : e.AOS = t();\n}(this, function () {\n  return function (e) {\n    function t(o) {\n      if (n[o]) return n[o].exports;\n      var i = n[o] = {\n        exports: {},\n        id: o,\n        loaded: !1\n      };\n      return e[o].call(i.exports, i, i.exports, t), i.loaded = !0, i.exports;\n    }\n\n    var n = {};\n    return t.m = e, t.c = n, t.p = \"dist/\", t(0);\n  }([function (e, t, n) {\n    \"use strict\";\n\n    function o(e) {\n      return e && e.__esModule ? e : {\n        default: e\n      };\n    }\n\n    var i = Object.assign || function (e) {\n      for (var t = 1; t < arguments.length; t++) {\n        var n = arguments[t];\n\n        for (var o in n) {\n          Object.prototype.hasOwnProperty.call(n, o) && (e[o] = n[o]);\n        }\n      }\n\n      return e;\n    },\n        r = n(1),\n        a = (o(r), n(6)),\n        u = o(a),\n        c = n(7),\n        f = o(c),\n        s = n(8),\n        d = o(s),\n        l = n(9),\n        p = o(l),\n        m = n(10),\n        b = o(m),\n        v = n(11),\n        y = o(v),\n        g = n(14),\n        h = o(g),\n        w = [],\n        k = !1,\n        x = document.all && !window.atob,\n        j = {\n      offset: 120,\n      delay: 0,\n      easing: \"ease\",\n      duration: 400,\n      disable: !1,\n      once: !1,\n      startEvent: \"DOMContentLoaded\",\n      throttleDelay: 99,\n      debounceDelay: 50,\n      disableMutationObserver: !1\n    },\n        O = function O() {\n      var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n      if (e && (k = !0), k) return w = (0, y.default)(w, j), (0, b.default)(w, j.once), w;\n    },\n        _ = function _() {\n      w = (0, h.default)(), O();\n    },\n        S = function S() {\n      w.forEach(function (e, t) {\n        e.node.removeAttribute(\"data-aos\"), e.node.removeAttribute(\"data-aos-easing\"), e.node.removeAttribute(\"data-aos-duration\"), e.node.removeAttribute(\"data-aos-delay\");\n      });\n    },\n        z = function z(e) {\n      return e === !0 || \"mobile\" === e && p.default.mobile() || \"phone\" === e && p.default.phone() || \"tablet\" === e && p.default.tablet() || \"function\" == typeof e && e() === !0;\n    },\n        A = function A(e) {\n      return j = i(j, e), w = (0, h.default)(), z(j.disable) || x ? S() : (document.querySelector(\"body\").setAttribute(\"data-aos-easing\", j.easing), document.querySelector(\"body\").setAttribute(\"data-aos-duration\", j.duration), document.querySelector(\"body\").setAttribute(\"data-aos-delay\", j.delay), \"DOMContentLoaded\" === j.startEvent && [\"complete\", \"interactive\"].indexOf(document.readyState) > -1 ? O(!0) : \"load\" === j.startEvent ? window.addEventListener(j.startEvent, function () {\n        O(!0);\n      }) : document.addEventListener(j.startEvent, function () {\n        O(!0);\n      }), window.addEventListener(\"resize\", (0, f.default)(O, j.debounceDelay, !0)), window.addEventListener(\"orientationchange\", (0, f.default)(O, j.debounceDelay, !0)), window.addEventListener(\"scroll\", (0, u.default)(function () {\n        (0, b.default)(w, j.once);\n      }, j.throttleDelay)), j.disableMutationObserver || (0, d.default)(\"[data-aos]\", _), w);\n    };\n\n    e.exports = {\n      init: A,\n      refresh: O,\n      refreshHard: _\n    };\n  }, function (e, t) {},,,,, function (e, t) {\n    (function (t) {\n      \"use strict\";\n\n      function n(e, t, n) {\n        function o(t) {\n          var n = b,\n              o = v;\n          return b = v = void 0, k = t, g = e.apply(o, n);\n        }\n\n        function r(e) {\n          return k = e, h = setTimeout(s, t), _ ? o(e) : g;\n        }\n\n        function a(e) {\n          var n = e - w,\n              o = e - k,\n              i = t - n;\n          return S ? j(i, y - o) : i;\n        }\n\n        function c(e) {\n          var n = e - w,\n              o = e - k;\n          return void 0 === w || n >= t || n < 0 || S && o >= y;\n        }\n\n        function s() {\n          var e = O();\n          return c(e) ? d(e) : void (h = setTimeout(s, a(e)));\n        }\n\n        function d(e) {\n          return h = void 0, z && b ? o(e) : (b = v = void 0, g);\n        }\n\n        function l() {\n          void 0 !== h && clearTimeout(h), k = 0, b = w = v = h = void 0;\n        }\n\n        function p() {\n          return void 0 === h ? g : d(O());\n        }\n\n        function m() {\n          var e = O(),\n              n = c(e);\n\n          if (b = arguments, v = this, w = e, n) {\n            if (void 0 === h) return r(w);\n            if (S) return h = setTimeout(s, t), o(w);\n          }\n\n          return void 0 === h && (h = setTimeout(s, t)), g;\n        }\n\n        var b,\n            v,\n            y,\n            g,\n            h,\n            w,\n            k = 0,\n            _ = !1,\n            S = !1,\n            z = !0;\n\n        if (\"function\" != typeof e) throw new TypeError(f);\n        return t = u(t) || 0, i(n) && (_ = !!n.leading, S = \"maxWait\" in n, y = S ? x(u(n.maxWait) || 0, t) : y, z = \"trailing\" in n ? !!n.trailing : z), m.cancel = l, m.flush = p, m;\n      }\n\n      function o(e, t, o) {\n        var r = !0,\n            a = !0;\n        if (\"function\" != typeof e) throw new TypeError(f);\n        return i(o) && (r = \"leading\" in o ? !!o.leading : r, a = \"trailing\" in o ? !!o.trailing : a), n(e, t, {\n          leading: r,\n          maxWait: t,\n          trailing: a\n        });\n      }\n\n      function i(e) {\n        var t = \"undefined\" == typeof e ? \"undefined\" : c(e);\n        return !!e && (\"object\" == t || \"function\" == t);\n      }\n\n      function r(e) {\n        return !!e && \"object\" == (\"undefined\" == typeof e ? \"undefined\" : c(e));\n      }\n\n      function a(e) {\n        return \"symbol\" == (\"undefined\" == typeof e ? \"undefined\" : c(e)) || r(e) && k.call(e) == d;\n      }\n\n      function u(e) {\n        if (\"number\" == typeof e) return e;\n        if (a(e)) return s;\n\n        if (i(e)) {\n          var t = \"function\" == typeof e.valueOf ? e.valueOf() : e;\n          e = i(t) ? t + \"\" : t;\n        }\n\n        if (\"string\" != typeof e) return 0 === e ? e : +e;\n        e = e.replace(l, \"\");\n        var n = m.test(e);\n        return n || b.test(e) ? v(e.slice(2), n ? 2 : 8) : p.test(e) ? s : +e;\n      }\n\n      var c = \"function\" == typeof Symbol && \"symbol\" == _typeof(Symbol.iterator) ? function (e) {\n        return _typeof(e);\n      } : function (e) {\n        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : _typeof(e);\n      },\n          f = \"Expected a function\",\n          s = NaN,\n          d = \"[object Symbol]\",\n          l = /^\\s+|\\s+$/g,\n          p = /^[-+]0x[0-9a-f]+$/i,\n          m = /^0b[01]+$/i,\n          b = /^0o[0-7]+$/i,\n          v = parseInt,\n          y = \"object\" == (\"undefined\" == typeof t ? \"undefined\" : c(t)) && t && t.Object === Object && t,\n          g = \"object\" == (\"undefined\" == typeof self ? \"undefined\" : c(self)) && self && self.Object === Object && self,\n          h = y || g || Function(\"return this\")(),\n          w = Object.prototype,\n          k = w.toString,\n          x = Math.max,\n          j = Math.min,\n          O = function O() {\n        return h.Date.now();\n      };\n\n      e.exports = o;\n    }).call(t, function () {\n      return this;\n    }());\n  }, function (e, t) {\n    (function (t) {\n      \"use strict\";\n\n      function n(e, t, n) {\n        function i(t) {\n          var n = b,\n              o = v;\n          return b = v = void 0, O = t, g = e.apply(o, n);\n        }\n\n        function r(e) {\n          return O = e, h = setTimeout(s, t), _ ? i(e) : g;\n        }\n\n        function u(e) {\n          var n = e - w,\n              o = e - O,\n              i = t - n;\n          return S ? x(i, y - o) : i;\n        }\n\n        function f(e) {\n          var n = e - w,\n              o = e - O;\n          return void 0 === w || n >= t || n < 0 || S && o >= y;\n        }\n\n        function s() {\n          var e = j();\n          return f(e) ? d(e) : void (h = setTimeout(s, u(e)));\n        }\n\n        function d(e) {\n          return h = void 0, z && b ? i(e) : (b = v = void 0, g);\n        }\n\n        function l() {\n          void 0 !== h && clearTimeout(h), O = 0, b = w = v = h = void 0;\n        }\n\n        function p() {\n          return void 0 === h ? g : d(j());\n        }\n\n        function m() {\n          var e = j(),\n              n = f(e);\n\n          if (b = arguments, v = this, w = e, n) {\n            if (void 0 === h) return r(w);\n            if (S) return h = setTimeout(s, t), i(w);\n          }\n\n          return void 0 === h && (h = setTimeout(s, t)), g;\n        }\n\n        var b,\n            v,\n            y,\n            g,\n            h,\n            w,\n            O = 0,\n            _ = !1,\n            S = !1,\n            z = !0;\n\n        if (\"function\" != typeof e) throw new TypeError(c);\n        return t = a(t) || 0, o(n) && (_ = !!n.leading, S = \"maxWait\" in n, y = S ? k(a(n.maxWait) || 0, t) : y, z = \"trailing\" in n ? !!n.trailing : z), m.cancel = l, m.flush = p, m;\n      }\n\n      function o(e) {\n        var t = \"undefined\" == typeof e ? \"undefined\" : u(e);\n        return !!e && (\"object\" == t || \"function\" == t);\n      }\n\n      function i(e) {\n        return !!e && \"object\" == (\"undefined\" == typeof e ? \"undefined\" : u(e));\n      }\n\n      function r(e) {\n        return \"symbol\" == (\"undefined\" == typeof e ? \"undefined\" : u(e)) || i(e) && w.call(e) == s;\n      }\n\n      function a(e) {\n        if (\"number\" == typeof e) return e;\n        if (r(e)) return f;\n\n        if (o(e)) {\n          var t = \"function\" == typeof e.valueOf ? e.valueOf() : e;\n          e = o(t) ? t + \"\" : t;\n        }\n\n        if (\"string\" != typeof e) return 0 === e ? e : +e;\n        e = e.replace(d, \"\");\n        var n = p.test(e);\n        return n || m.test(e) ? b(e.slice(2), n ? 2 : 8) : l.test(e) ? f : +e;\n      }\n\n      var u = \"function\" == typeof Symbol && \"symbol\" == _typeof(Symbol.iterator) ? function (e) {\n        return _typeof(e);\n      } : function (e) {\n        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : _typeof(e);\n      },\n          c = \"Expected a function\",\n          f = NaN,\n          s = \"[object Symbol]\",\n          d = /^\\s+|\\s+$/g,\n          l = /^[-+]0x[0-9a-f]+$/i,\n          p = /^0b[01]+$/i,\n          m = /^0o[0-7]+$/i,\n          b = parseInt,\n          v = \"object\" == (\"undefined\" == typeof t ? \"undefined\" : u(t)) && t && t.Object === Object && t,\n          y = \"object\" == (\"undefined\" == typeof self ? \"undefined\" : u(self)) && self && self.Object === Object && self,\n          g = v || y || Function(\"return this\")(),\n          h = Object.prototype,\n          w = h.toString,\n          k = Math.max,\n          x = Math.min,\n          j = function j() {\n        return g.Date.now();\n      };\n\n      e.exports = n;\n    }).call(t, function () {\n      return this;\n    }());\n  }, function (e, t) {\n    \"use strict\";\n\n    function n(e, t) {\n      var n = new r(o);\n      a = t, n.observe(i.documentElement, {\n        childList: !0,\n        subtree: !0,\n        removedNodes: !0\n      });\n    }\n\n    function o(e) {\n      e && e.forEach(function (e) {\n        var t = Array.prototype.slice.call(e.addedNodes),\n            n = Array.prototype.slice.call(e.removedNodes),\n            o = t.concat(n).filter(function (e) {\n          return e.hasAttribute && e.hasAttribute(\"data-aos\");\n        }).length;\n        o && a();\n      });\n    }\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n\n    var i = window.document,\n        r = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,\n        a = function a() {};\n\n    t.default = n;\n  }, function (e, t) {\n    \"use strict\";\n\n    function n(e, t) {\n      if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n    }\n\n    function o() {\n      return navigator.userAgent || navigator.vendor || window.opera || \"\";\n    }\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n\n    var i = function () {\n      function e(e, t) {\n        for (var n = 0; n < t.length; n++) {\n          var o = t[n];\n          o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, o.key, o);\n        }\n      }\n\n      return function (t, n, o) {\n        return n && e(t.prototype, n), o && e(t, o), t;\n      };\n    }(),\n        r = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,\n        a = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,\n        u = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i,\n        c = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,\n        f = function () {\n      function e() {\n        n(this, e);\n      }\n\n      return i(e, [{\n        key: \"phone\",\n        value: function value() {\n          var e = o();\n          return !(!r.test(e) && !a.test(e.substr(0, 4)));\n        }\n      }, {\n        key: \"mobile\",\n        value: function value() {\n          var e = o();\n          return !(!u.test(e) && !c.test(e.substr(0, 4)));\n        }\n      }, {\n        key: \"tablet\",\n        value: function value() {\n          return this.mobile() && !this.phone();\n        }\n      }]), e;\n    }();\n\n    t.default = new f();\n  }, function (e, t) {\n    \"use strict\";\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n\n    var n = function n(e, t, _n) {\n      var o = e.node.getAttribute(\"data-aos-once\");\n      t > e.position ? e.node.classList.add(\"aos-animate\") : \"undefined\" != typeof o && (\"false\" === o || !_n && \"true\" !== o) && e.node.classList.remove(\"aos-animate\");\n    },\n        o = function o(e, t) {\n      var o = window.pageYOffset,\n          i = window.innerHeight;\n      e.forEach(function (e, r) {\n        n(e, i + o, t);\n      });\n    };\n\n    t.default = o;\n  }, function (e, t, n) {\n    \"use strict\";\n\n    function o(e) {\n      return e && e.__esModule ? e : {\n        default: e\n      };\n    }\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n\n    var i = n(12),\n        r = o(i),\n        a = function a(e, t) {\n      return e.forEach(function (e, n) {\n        e.node.classList.add(\"aos-init\"), e.position = (0, r.default)(e.node, t.offset);\n      }), e;\n    };\n\n    t.default = a;\n  }, function (e, t, n) {\n    \"use strict\";\n\n    function o(e) {\n      return e && e.__esModule ? e : {\n        default: e\n      };\n    }\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n\n    var i = n(13),\n        r = o(i),\n        a = function a(e, t) {\n      var n = 0,\n          o = 0,\n          i = window.innerHeight,\n          a = {\n        offset: e.getAttribute(\"data-aos-offset\"),\n        anchor: e.getAttribute(\"data-aos-anchor\"),\n        anchorPlacement: e.getAttribute(\"data-aos-anchor-placement\")\n      };\n\n      switch (a.offset && !isNaN(a.offset) && (o = parseInt(a.offset)), a.anchor && document.querySelectorAll(a.anchor) && (e = document.querySelectorAll(a.anchor)[0]), n = (0, r.default)(e).top, a.anchorPlacement) {\n        case \"top-bottom\":\n          break;\n\n        case \"center-bottom\":\n          n += e.offsetHeight / 2;\n          break;\n\n        case \"bottom-bottom\":\n          n += e.offsetHeight;\n          break;\n\n        case \"top-center\":\n          n += i / 2;\n          break;\n\n        case \"bottom-center\":\n          n += i / 2 + e.offsetHeight;\n          break;\n\n        case \"center-center\":\n          n += i / 2 + e.offsetHeight / 2;\n          break;\n\n        case \"top-top\":\n          n += i;\n          break;\n\n        case \"bottom-top\":\n          n += e.offsetHeight + i;\n          break;\n\n        case \"center-top\":\n          n += e.offsetHeight / 2 + i;\n      }\n\n      return a.anchorPlacement || a.offset || isNaN(t) || (o = t), n + o;\n    };\n\n    t.default = a;\n  }, function (e, t) {\n    \"use strict\";\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n\n    var n = function n(e) {\n      for (var t = 0, n = 0; e && !isNaN(e.offsetLeft) && !isNaN(e.offsetTop);) {\n        t += e.offsetLeft - (\"BODY\" != e.tagName ? e.scrollLeft : 0), n += e.offsetTop - (\"BODY\" != e.tagName ? e.scrollTop : 0), e = e.offsetParent;\n      }\n\n      return {\n        top: n,\n        left: t\n      };\n    };\n\n    t.default = n;\n  }, function (e, t) {\n    \"use strict\";\n\n    Object.defineProperty(t, \"__esModule\", {\n      value: !0\n    });\n\n    var n = function n(e) {\n      return e = e || document.querySelectorAll(\"[data-aos]\"), Array.prototype.map.call(e, function (e) {\n        return {\n          node: e\n        };\n      });\n    };\n\n    t.default = n;\n  }]);\n});\n/*!\n * @name        easyzoom\n * @author       <>\n * @modified    Thursday, November 22nd, 2018\n * @version     2.5.2\n */\n\n!function (t, e) {\n  \"use strict\";\n\n  \"function\" == typeof define && define.amd ? define([\"jquery\"], function (t) {\n    e(t);\n  }) : \"object\" == (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) && module.exports ? module.exports = t.EasyZoom = e(require(\"jquery\")) : t.EasyZoom = e(t.jQuery);\n}(this, function (i) {\n  \"use strict\";\n\n  var c,\n      d,\n      l,\n      p,\n      u,\n      f,\n      o = {\n    loadingNotice: \"Loading image\",\n    errorNotice: \"The image could not be loaded\",\n    errorDuration: 2500,\n    linkAttribute: \"href\",\n    preventClicks: !0,\n    beforeShow: i.noop,\n    beforeHide: i.noop,\n    onShow: i.noop,\n    onHide: i.noop,\n    onMove: i.noop\n  };\n\n  function s(t, e) {\n    this.$target = i(t), this.opts = i.extend({}, o, e, this.$target.data()), void 0 === this.isOpen && this._init();\n  }\n\n  return s.prototype._init = function () {\n    this.$link = this.$target.find(\"a\"), this.$image = this.$target.find(\"img\"), this.$flyout = i('<div class=\"easyzoom-flyout\" />'), this.$notice = i('<div class=\"easyzoom-notice\" />'), this.$target.on({\n      \"mousemove.easyzoom touchmove.easyzoom\": i.proxy(this._onMove, this),\n      \"mouseleave.easyzoom touchend.easyzoom\": i.proxy(this._onLeave, this),\n      \"mouseenter.easyzoom touchstart.easyzoom\": i.proxy(this._onEnter, this)\n    }), this.opts.preventClicks && this.$target.on(\"click.easyzoom\", function (t) {\n      t.preventDefault();\n    });\n  }, s.prototype.show = function (t, e) {\n    var o = this;\n\n    if (!1 !== this.opts.beforeShow.call(this)) {\n      if (!this.isReady) return this._loadImage(this.$link.attr(this.opts.linkAttribute), function () {\n        !o.isMouseOver && e || o.show(t);\n      });\n      this.$target.append(this.$flyout);\n      var i = this.$target.outerWidth(),\n          s = this.$target.outerHeight(),\n          h = this.$flyout.width(),\n          n = this.$flyout.height(),\n          a = this.$zoom.width(),\n          r = this.$zoom.height();\n      (c = a - h) < 0 && (c = 0), (d = r - n) < 0 && (d = 0), l = c / i, p = d / s, this.isOpen = !0, this.opts.onShow.call(this), t && this._move(t);\n    }\n  }, s.prototype._onEnter = function (t) {\n    var e = t.originalEvent.touches;\n    this.isMouseOver = !0, e && 1 != e.length || (t.preventDefault(), this.show(t, !0));\n  }, s.prototype._onMove = function (t) {\n    this.isOpen && (t.preventDefault(), this._move(t));\n  }, s.prototype._onLeave = function () {\n    this.isMouseOver = !1, this.isOpen && this.hide();\n  }, s.prototype._onLoad = function (t) {\n    t.currentTarget.width && (this.isReady = !0, this.$notice.detach(), this.$flyout.html(this.$zoom), this.$target.removeClass(\"is-loading\").addClass(\"is-ready\"), t.data.call && t.data());\n  }, s.prototype._onError = function () {\n    var t = this;\n    this.$notice.text(this.opts.errorNotice), this.$target.removeClass(\"is-loading\").addClass(\"is-error\"), this.detachNotice = setTimeout(function () {\n      t.$notice.detach(), t.detachNotice = null;\n    }, this.opts.errorDuration);\n  }, s.prototype._loadImage = function (t, e) {\n    var o = new Image();\n    this.$target.addClass(\"is-loading\").append(this.$notice.text(this.opts.loadingNotice)), this.$zoom = i(o).on(\"error\", i.proxy(this._onError, this)).on(\"load\", e, i.proxy(this._onLoad, this)), o.style.position = \"absolute\", o.src = t;\n  }, s.prototype._move = function (t) {\n    if (0 === t.type.indexOf(\"touch\")) {\n      var e = t.touches || t.originalEvent.touches;\n      u = e[0].pageX, f = e[0].pageY;\n    } else u = t.pageX || u, f = t.pageY || f;\n\n    var o = this.$target.offset(),\n        i = f - o.top,\n        s = u - o.left,\n        h = Math.ceil(i * p),\n        n = Math.ceil(s * l);\n    if (n < 0 || h < 0 || c < n || d < h) this.hide();else {\n      var a = -1 * h,\n          r = -1 * n;\n      this.$zoom.css({\n        top: a,\n        left: r\n      }), this.opts.onMove.call(this, a, r);\n    }\n  }, s.prototype.hide = function () {\n    this.isOpen && !1 !== this.opts.beforeHide.call(this) && (this.$flyout.detach(), this.isOpen = !1, this.opts.onHide.call(this));\n  }, s.prototype.swap = function (t, e, o) {\n    this.hide(), this.isReady = !1, this.detachNotice && clearTimeout(this.detachNotice), this.$notice.parent().length && this.$notice.detach(), this.$target.removeClass(\"is-loading is-ready is-error\"), this.$image.attr({\n      src: t,\n      srcset: i.isArray(o) ? o.join() : o\n    }), this.$link.attr(this.opts.linkAttribute, e);\n  }, s.prototype.teardown = function () {\n    this.hide(), this.$target.off(\".easyzoom\").removeClass(\"is-loading is-ready is-error\"), this.detachNotice && clearTimeout(this.detachNotice), delete this.$link, delete this.$zoom, delete this.$image, delete this.$notice, delete this.$flyout, delete this.isOpen, delete this.isReady;\n  }, i.fn.easyZoom = function (e) {\n    return this.each(function () {\n      var t = i.data(this, \"easyZoom\");\n      t ? void 0 === t.isOpen && t._init() : i.data(this, \"easyZoom\", new s(this, e));\n    });\n  }, s;\n});\n/*!\n * getParameterByName.min.js\n */\n\nfunction getParameterByName(e, n) {\n  n || (n = window.location.href), e = e.replace(/[\\[\\]]/g, \"\\\\$&\");\n  var r = new RegExp(\"[?&]\" + e + \"(=([^&#]*)|&|#|$)\").exec(n);\n  return r ? r[2] ? decodeURIComponent(r[2].replace(/\\+/g, \" \")) : \"\" : null;\n} // Generated by CoffeeScript 1.9.3\n\n\n(function () {\n  var e;\n  e = function () {\n    function e(e, t) {\n      var n, r;\n      this.options = {\n        target: \"instafeed\",\n        get: \"popular\",\n        resolution: \"thumbnail\",\n        sortBy: \"none\",\n        links: !0,\n        mock: !1,\n        useHttp: !1\n      };\n      if (_typeof(e) == \"object\") for (n in e) {\n        r = e[n], this.options[n] = r;\n      }\n      this.context = t != null ? t : this, this.unique = this._genKey();\n    }\n\n    return e.prototype.hasNext = function () {\n      return typeof this.context.nextUrl == \"string\" && this.context.nextUrl.length > 0;\n    }, e.prototype.next = function () {\n      return this.hasNext() ? this.run(this.context.nextUrl) : !1;\n    }, e.prototype.run = function (t) {\n      var n, r, i;\n      if (typeof this.options.clientId != \"string\" && typeof this.options.accessToken != \"string\") throw new Error(\"Missing clientId or accessToken.\");\n      if (typeof this.options.accessToken != \"string\" && typeof this.options.clientId != \"string\") throw new Error(\"Missing clientId or accessToken.\");\n      return this.options.before != null && typeof this.options.before == \"function\" && this.options.before.call(this), typeof document != \"undefined\" && document !== null && (i = document.createElement(\"script\"), i.id = \"instafeed-fetcher\", i.src = t || this._buildUrl(), n = document.getElementsByTagName(\"head\"), n[0].appendChild(i), r = \"instafeedCache\" + this.unique, window[r] = new e(this.options, this), window[r].unique = this.unique), !0;\n    }, e.prototype.parse = function (e) {\n      var t, n, r, i, s, o, u, a, f, l, c, h, p, d, v, m, g, y, b, w, E, S, x, T, N, C, k, L, A, O, M, _, D;\n\n      if (_typeof(e) != \"object\") {\n        if (this.options.error != null && typeof this.options.error == \"function\") return this.options.error.call(this, \"Invalid JSON data\"), !1;\n        throw new Error(\"Invalid JSON response\");\n      }\n\n      if (e.meta.code !== 200) {\n        if (this.options.error != null && typeof this.options.error == \"function\") return this.options.error.call(this, e.meta.error_message), !1;\n        throw new Error(\"Error from Instagram: \" + e.meta.error_message);\n      }\n\n      if (e.data.length === 0) {\n        if (this.options.error != null && typeof this.options.error == \"function\") return this.options.error.call(this, \"No images were returned from Instagram\"), !1;\n        throw new Error(\"No images were returned from Instagram\");\n      }\n\n      this.options.success != null && typeof this.options.success == \"function\" && this.options.success.call(this, e), this.context.nextUrl = \"\", e.pagination != null && (this.context.nextUrl = e.pagination.next_url);\n\n      if (this.options.sortBy !== \"none\") {\n        this.options.sortBy === \"random\" ? M = [\"\", \"random\"] : M = this.options.sortBy.split(\"-\"), O = M[0] === \"least\" ? !0 : !1;\n\n        switch (M[1]) {\n          case \"random\":\n            e.data.sort(function () {\n              return .5 - Math.random();\n            });\n            break;\n\n          case \"recent\":\n            e.data = this._sortBy(e.data, \"created_time\", O);\n            break;\n\n          case \"liked\":\n            e.data = this._sortBy(e.data, \"likes.count\", O);\n            break;\n\n          case \"commented\":\n            e.data = this._sortBy(e.data, \"comments.count\", O);\n            break;\n\n          default:\n            throw new Error(\"Invalid option for sortBy: '\" + this.options.sortBy + \"'.\");\n        }\n      }\n\n      if (typeof document != \"undefined\" && document !== null && this.options.mock === !1) {\n        m = e.data, A = parseInt(this.options.limit, 10), this.options.limit != null && m.length > A && (m = m.slice(0, A)), u = document.createDocumentFragment(), this.options.filter != null && typeof this.options.filter == \"function\" && (m = this._filter(m, this.options.filter));\n\n        if (this.options.template != null && typeof this.options.template == \"string\") {\n          f = \"\", d = \"\", w = \"\", D = document.createElement(\"div\");\n\n          for (c = 0, N = m.length; c < N; c++) {\n            h = m[c], p = h.images[this.options.resolution];\n            if (_typeof(p) != \"object\") throw o = \"No image found for resolution: \" + this.options.resolution + \".\", new Error(o);\n            E = p.width, y = p.height, b = \"square\", E > y && (b = \"landscape\"), E < y && (b = \"portrait\"), v = p.url, l = window.location.protocol.indexOf(\"http\") >= 0, l && !this.options.useHttp && (v = v.replace(/https?:\\/\\//, \"//\")), d = this._makeTemplate(this.options.template, {\n              model: h,\n              id: h.id,\n              link: h.link,\n              type: h.type,\n              image: v,\n              width: E,\n              height: y,\n              orientation: b,\n              caption: this._getObjectProperty(h, \"caption.text\"),\n              likes: h.likes.count,\n              comments: h.comments.count,\n              location: this._getObjectProperty(h, \"location.name\")\n            }), f += d;\n          }\n\n          D.innerHTML = f, i = [], r = 0, n = D.childNodes.length;\n\n          while (r < n) {\n            i.push(D.childNodes[r]), r += 1;\n          }\n\n          for (x = 0, C = i.length; x < C; x++) {\n            L = i[x], u.appendChild(L);\n          }\n        } else for (T = 0, k = m.length; T < k; T++) {\n          h = m[T], g = document.createElement(\"img\"), p = h.images[this.options.resolution];\n          if (_typeof(p) != \"object\") throw o = \"No image found for resolution: \" + this.options.resolution + \".\", new Error(o);\n          v = p.url, l = window.location.protocol.indexOf(\"http\") >= 0, l && !this.options.useHttp && (v = v.replace(/https?:\\/\\//, \"//\")), g.src = v, this.options.links === !0 ? (t = document.createElement(\"a\"), t.href = h.link, t.appendChild(g), u.appendChild(t)) : u.appendChild(g);\n        }\n\n        _ = this.options.target, typeof _ == \"string\" && (_ = document.getElementById(_));\n        if (_ == null) throw o = 'No element with id=\"' + this.options.target + '\" on page.', new Error(o);\n        _.appendChild(u), a = document.getElementsByTagName(\"head\")[0], a.removeChild(document.getElementById(\"instafeed-fetcher\")), S = \"instafeedCache\" + this.unique, window[S] = void 0;\n\n        try {\n          delete window[S];\n        } catch (P) {\n          s = P;\n        }\n      }\n\n      return this.options.after != null && typeof this.options.after == \"function\" && this.options.after.call(this), !0;\n    }, e.prototype._buildUrl = function () {\n      var e, t, n;\n      e = \"https://api.instagram.com/v1\";\n\n      switch (this.options.get) {\n        case \"popular\":\n          t = \"media/popular\";\n          break;\n\n        case \"tagged\":\n          if (!this.options.tagName) throw new Error(\"No tag name specified. Use the 'tagName' option.\");\n          t = \"tags/\" + this.options.tagName + \"/media/recent\";\n          break;\n\n        case \"location\":\n          if (!this.options.locationId) throw new Error(\"No location specified. Use the 'locationId' option.\");\n          t = \"locations/\" + this.options.locationId + \"/media/recent\";\n          break;\n\n        case \"user\":\n          if (!this.options.userId) throw new Error(\"No user specified. Use the 'userId' option.\");\n          t = \"users/\" + this.options.userId + \"/media/recent\";\n          break;\n\n        default:\n          throw new Error(\"Invalid option for get: '\" + this.options.get + \"'.\");\n      }\n\n      return n = e + \"/\" + t, this.options.accessToken != null ? n += \"?access_token=\" + this.options.accessToken : n += \"?client_id=\" + this.options.clientId, this.options.limit != null && (n += \"&count=\" + this.options.limit), n += \"&callback=instafeedCache\" + this.unique + \".parse\", n;\n    }, e.prototype._genKey = function () {\n      var e;\n      return e = function e() {\n        return ((1 + Math.random()) * 65536 | 0).toString(16).substring(1);\n      }, \"\" + e() + e() + e() + e();\n    }, e.prototype._makeTemplate = function (e, t) {\n      var n, r, i, s, o;\n      r = /(?:\\{{2})([\\w\\[\\]\\.]+)(?:\\}{2})/, n = e;\n\n      while (r.test(n)) {\n        s = n.match(r)[1], o = (i = this._getObjectProperty(t, s)) != null ? i : \"\", n = n.replace(r, function () {\n          return \"\" + o;\n        });\n      }\n\n      return n;\n    }, e.prototype._getObjectProperty = function (e, t) {\n      var n, r;\n      t = t.replace(/\\[(\\w+)\\]/g, \".$1\"), r = t.split(\".\");\n\n      while (r.length) {\n        n = r.shift();\n        if (!(e != null && n in e)) return null;\n        e = e[n];\n      }\n\n      return e;\n    }, e.prototype._sortBy = function (e, t, n) {\n      var r;\n      return r = function r(e, _r) {\n        var i, s;\n        return i = this._getObjectProperty(e, t), s = this._getObjectProperty(_r, t), n ? i > s ? 1 : -1 : i < s ? 1 : -1;\n      }, e.sort(r.bind(this)), e;\n    }, e.prototype._filter = function (e, t) {\n      var n, r, i, s, o;\n      n = [], r = function r(e) {\n        if (t(e)) return n.push(e);\n      };\n\n      for (i = 0, o = e.length; i < o; i++) {\n        s = e[i], r(s);\n      }\n\n      return n;\n    }, e;\n  }(), function (e, t) {\n    return typeof define == \"function\" && define.amd ? define([], t) : (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == \"object\" && module.exports ? module.exports = t() : e.Instafeed = t();\n  }(this, function () {\n    return e;\n  });\n}).call(this);\n/* jQuery elevateZoom 3.0.8 - Demo's and documentation: - www.elevateweb.co.uk/image-zoom - Copyright (c) 2013 Andrew Eades - www.elevateweb.co.uk - Dual licensed under the LGPL licenses. - http://en.wikipedia.org/wiki/MIT_License - http://en.wikipedia.org/wiki/GNU_General_Public_License */\n\n\"function\" !== typeof Object.create && (Object.create = function (d) {\n  function h() {}\n\n  h.prototype = d;\n  return new h();\n});\n\n(function (d, h, l, m) {\n  var k = {\n    init: function init(b, a) {\n      var c = this;\n      c.elem = a;\n      c.$elem = d(a);\n      c.imageSrc = c.$elem.data(\"zoom-image\") ? c.$elem.data(\"zoom-image\") : c.$elem.attr(\"src\");\n      c.options = d.extend({}, d.fn.elevateZoom.options, b);\n      c.options.tint && (c.options.lensColour = \"none\", c.options.lensOpacity = \"1\");\n      \"inner\" == c.options.zoomType && (c.options.showLens = !1);\n      c.$elem.parent().removeAttr(\"title\").removeAttr(\"alt\");\n      c.zoomImage = c.imageSrc;\n      c.refresh(1);\n      d(\"#\" + c.options.gallery + \" a\").click(function (a) {\n        c.options.galleryActiveClass && (d(\"#\" + c.options.gallery + \" a\").removeClass(c.options.galleryActiveClass), d(this).addClass(c.options.galleryActiveClass));\n        a.preventDefault();\n        d(this).data(\"zoom-image\") ? c.zoomImagePre = d(this).data(\"zoom-image\") : c.zoomImagePre = d(this).data(\"image\");\n        c.swaptheimage(d(this).data(\"image\"), c.zoomImagePre);\n        return !1;\n      });\n    },\n    refresh: function refresh(b) {\n      var a = this;\n      setTimeout(function () {\n        a.fetch(a.imageSrc);\n      }, b || a.options.refresh);\n    },\n    fetch: function fetch(b) {\n      var a = this,\n          c = new Image();\n\n      c.onload = function () {\n        a.largeWidth = c.width;\n        a.largeHeight = c.height;\n        a.startZoom();\n        a.currentImage = a.imageSrc;\n        a.options.onZoomedImageLoaded(a.$elem);\n      };\n\n      c.src = b;\n    },\n    startZoom: function startZoom() {\n      var b = this;\n      b.nzWidth = b.$elem.width();\n      b.nzHeight = b.$elem.height();\n      b.isWindowActive = !1;\n      b.isLensActive = !1;\n      b.isTintActive = !1;\n      b.overWindow = !1;\n      b.options.imageCrossfade && (b.zoomWrap = b.$elem.wrap('<div style=\"height:' + b.nzHeight + \"px;width:\" + b.nzWidth + 'px;\" class=\"zoomWrapper\" />'), b.$elem.css(\"position\", \"absolute\"));\n      b.zoomLock = 1;\n      b.scrollingLock = !1;\n      b.changeBgSize = !1;\n      b.currentZoomLevel = b.options.zoomLevel;\n      b.nzOffset = b.$elem.offset();\n      b.widthRatio = b.largeWidth / b.currentZoomLevel / b.nzWidth;\n      b.heightRatio = b.largeHeight / b.currentZoomLevel / b.nzHeight;\n      \"window\" == b.options.zoomType && (b.zoomWindowStyle = \"overflow: hidden;background-position: 0px 0px;text-align:center;background-color: \" + String(b.options.zoomWindowBgColour) + \";width: \" + String(b.options.zoomWindowWidth) + \"px;height: \" + String(b.options.zoomWindowHeight) + \"px;float: left;background-size: \" + b.largeWidth / b.currentZoomLevel + \"px \" + b.largeHeight / b.currentZoomLevel + \"px;display: none;z-index:100;border: \" + String(b.options.borderSize) + \"px solid \" + b.options.borderColour + \";background-repeat: no-repeat;position: absolute;\");\n\n      if (\"inner\" == b.options.zoomType) {\n        var a = b.$elem.css(\"border-left-width\");\n        b.zoomWindowStyle = \"overflow: hidden;margin-left: \" + String(a) + \";margin-top: \" + String(a) + \";background-position: 0px 0px;width: \" + String(b.nzWidth) + \"px;height: \" + String(b.nzHeight) + \"px;float: left;display: none;cursor:\" + b.options.cursor + \";px solid \" + b.options.borderColour + \";background-repeat: no-repeat;position: absolute;\";\n      }\n\n      \"window\" == b.options.zoomType && (lensHeight = b.nzHeight < b.options.zoomWindowWidth / b.widthRatio ? b.nzHeight : String(b.options.zoomWindowHeight / b.heightRatio), lensWidth = b.largeWidth < b.options.zoomWindowWidth ? b.nzWidth : b.options.zoomWindowWidth / b.widthRatio, b.lensStyle = \"background-position: 0px 0px;width: \" + String(b.options.zoomWindowWidth / b.widthRatio) + \"px;height: \" + String(b.options.zoomWindowHeight / b.heightRatio) + \"px;float: right;display: none;overflow: hidden;z-index: 999;-webkit-transform: translateZ(0);opacity:\" + b.options.lensOpacity + \";filter: alpha(opacity = \" + 100 * b.options.lensOpacity + \"); zoom:1;width:\" + lensWidth + \"px;height:\" + lensHeight + \"px;background-color:\" + b.options.lensColour + \";cursor:\" + b.options.cursor + \";border: \" + b.options.lensBorderSize + \"px solid \" + b.options.lensBorderColour + \";background-repeat: no-repeat;position: absolute;\");\n      b.tintStyle = \"display: block;position: absolute;background-color: \" + b.options.tintColour + \";filter:alpha(opacity=0);opacity: 0;width: \" + b.nzWidth + \"px;height: \" + b.nzHeight + \"px;\";\n      b.lensRound = \"\";\n      \"lens\" == b.options.zoomType && (b.lensStyle = \"background-position: 0px 0px;float: left;display: none;border: \" + String(b.options.borderSize) + \"px solid \" + b.options.borderColour + \";width:\" + String(b.options.lensSize) + \"px;height:\" + String(b.options.lensSize) + \"px;background-repeat: no-repeat;position: absolute;\");\n      \"round\" == b.options.lensShape && (b.lensRound = \"border-top-left-radius: \" + String(b.options.lensSize / 2 + b.options.borderSize) + \"px;border-top-right-radius: \" + String(b.options.lensSize / 2 + b.options.borderSize) + \"px;border-bottom-left-radius: \" + String(b.options.lensSize / 2 + b.options.borderSize) + \"px;border-bottom-right-radius: \" + String(b.options.lensSize / 2 + b.options.borderSize) + \"px;\");\n      b.zoomContainer = d('<div class=\"zoomContainer\" style=\"-webkit-transform: translateZ(0);position:absolute;left:' + b.nzOffset.left + \"px;top:\" + b.nzOffset.top + \"px;height:\" + b.nzHeight + \"px;width:\" + b.nzWidth + 'px;\"></div>');\n      d(\"body\").append(b.zoomContainer);\n      b.options.containLensZoom && \"lens\" == b.options.zoomType && b.zoomContainer.css(\"overflow\", \"hidden\");\n      \"inner\" != b.options.zoomType && (b.zoomLens = d(\"<div class='zoomLens' style='\" + b.lensStyle + b.lensRound + \"'>&nbsp;</div>\").appendTo(b.zoomContainer).click(function () {\n        b.$elem.trigger(\"click\");\n      }), b.options.tint && (b.tintContainer = d(\"<div/>\").addClass(\"tintContainer\"), b.zoomTint = d(\"<div class='zoomTint' style='\" + b.tintStyle + \"'></div>\"), b.zoomLens.wrap(b.tintContainer), b.zoomTintcss = b.zoomLens.after(b.zoomTint), b.zoomTintImage = d('<img style=\"position: absolute; left: 0px; top: 0px; max-width: none; width: ' + b.nzWidth + \"px; height: \" + b.nzHeight + 'px;\" src=\"' + b.imageSrc + '\">').appendTo(b.zoomLens).click(function () {\n        b.$elem.trigger(\"click\");\n      })));\n      isNaN(b.options.zoomWindowPosition) ? b.zoomWindow = d(\"<div style='z-index:999;left:\" + b.windowOffsetLeft + \"px;top:\" + b.windowOffsetTop + \"px;\" + b.zoomWindowStyle + \"' class='zoomWindow'>&nbsp;</div>\").appendTo(\"body\").click(function () {\n        b.$elem.trigger(\"click\");\n      }) : b.zoomWindow = d(\"<div style='z-index:999;left:\" + b.windowOffsetLeft + \"px;top:\" + b.windowOffsetTop + \"px;\" + b.zoomWindowStyle + \"' class='zoomWindow'>&nbsp;</div>\").appendTo(b.zoomContainer).click(function () {\n        b.$elem.trigger(\"click\");\n      });\n      b.zoomWindowContainer = d(\"<div/>\").addClass(\"zoomWindowContainer\").css(\"width\", b.options.zoomWindowWidth);\n      b.zoomWindow.wrap(b.zoomWindowContainer);\n      \"lens\" == b.options.zoomType && b.zoomLens.css({\n        backgroundImage: \"url('\" + b.imageSrc + \"')\"\n      });\n      \"window\" == b.options.zoomType && b.zoomWindow.css({\n        backgroundImage: \"url('\" + b.imageSrc + \"')\"\n      });\n      \"inner\" == b.options.zoomType && b.zoomWindow.css({\n        backgroundImage: \"url('\" + b.imageSrc + \"')\"\n      });\n      b.$elem.bind(\"touchmove\", function (a) {\n        a.preventDefault();\n        b.setPosition(a.originalEvent.touches[0] || a.originalEvent.changedTouches[0]);\n      });\n      b.zoomContainer.bind(\"touchmove\", function (a) {\n        \"inner\" == b.options.zoomType && b.showHideWindow(\"show\");\n        a.preventDefault();\n        b.setPosition(a.originalEvent.touches[0] || a.originalEvent.changedTouches[0]);\n      });\n      b.zoomContainer.bind(\"touchend\", function (a) {\n        b.showHideWindow(\"hide\");\n        b.options.showLens && b.showHideLens(\"hide\");\n        b.options.tint && \"inner\" != b.options.zoomType && b.showHideTint(\"hide\");\n      });\n      b.$elem.bind(\"touchend\", function (a) {\n        b.showHideWindow(\"hide\");\n        b.options.showLens && b.showHideLens(\"hide\");\n        b.options.tint && \"inner\" != b.options.zoomType && b.showHideTint(\"hide\");\n      });\n      b.options.showLens && (b.zoomLens.bind(\"touchmove\", function (a) {\n        a.preventDefault();\n        b.setPosition(a.originalEvent.touches[0] || a.originalEvent.changedTouches[0]);\n      }), b.zoomLens.bind(\"touchend\", function (a) {\n        b.showHideWindow(\"hide\");\n        b.options.showLens && b.showHideLens(\"hide\");\n        b.options.tint && \"inner\" != b.options.zoomType && b.showHideTint(\"hide\");\n      }));\n      b.$elem.bind(\"mousemove\", function (a) {\n        !1 == b.overWindow && b.setElements(\"show\");\n        if (b.lastX !== a.clientX || b.lastY !== a.clientY) b.setPosition(a), b.currentLoc = a;\n        b.lastX = a.clientX;\n        b.lastY = a.clientY;\n      });\n      b.zoomContainer.bind(\"mousemove\", function (a) {\n        !1 == b.overWindow && b.setElements(\"show\");\n        if (b.lastX !== a.clientX || b.lastY !== a.clientY) b.setPosition(a), b.currentLoc = a;\n        b.lastX = a.clientX;\n        b.lastY = a.clientY;\n      });\n      \"inner\" != b.options.zoomType && b.zoomLens.bind(\"mousemove\", function (a) {\n        if (b.lastX !== a.clientX || b.lastY !== a.clientY) b.setPosition(a), b.currentLoc = a;\n        b.lastX = a.clientX;\n        b.lastY = a.clientY;\n      });\n      b.options.tint && \"inner\" != b.options.zoomType && b.zoomTint.bind(\"mousemove\", function (a) {\n        if (b.lastX !== a.clientX || b.lastY !== a.clientY) b.setPosition(a), b.currentLoc = a;\n        b.lastX = a.clientX;\n        b.lastY = a.clientY;\n      });\n      \"inner\" == b.options.zoomType && b.zoomWindow.bind(\"mousemove\", function (a) {\n        if (b.lastX !== a.clientX || b.lastY !== a.clientY) b.setPosition(a), b.currentLoc = a;\n        b.lastX = a.clientX;\n        b.lastY = a.clientY;\n      });\n      b.zoomContainer.add(b.$elem).mouseenter(function () {\n        !1 == b.overWindow && b.setElements(\"show\");\n      }).mouseleave(function () {\n        b.scrollLock || b.setElements(\"hide\");\n      });\n      \"inner\" != b.options.zoomType && b.zoomWindow.mouseenter(function () {\n        b.overWindow = !0;\n        b.setElements(\"hide\");\n      }).mouseleave(function () {\n        b.overWindow = !1;\n      });\n      b.minZoomLevel = b.options.minZoomLevel ? b.options.minZoomLevel : 2 * b.options.scrollZoomIncrement;\n      b.options.scrollZoom && b.zoomContainer.add(b.$elem).bind(\"mousewheel DOMMouseScroll MozMousePixelScroll\", function (a) {\n        b.scrollLock = !0;\n        clearTimeout(d.data(this, \"timer\"));\n        d.data(this, \"timer\", setTimeout(function () {\n          b.scrollLock = !1;\n        }, 250));\n        var e = a.originalEvent.wheelDelta || -1 * a.originalEvent.detail;\n        a.stopImmediatePropagation();\n        a.stopPropagation();\n        a.preventDefault();\n        0 < e / 120 ? b.currentZoomLevel >= b.minZoomLevel && b.changeZoomLevel(b.currentZoomLevel - b.options.scrollZoomIncrement) : b.options.maxZoomLevel ? b.currentZoomLevel <= b.options.maxZoomLevel && b.changeZoomLevel(parseFloat(b.currentZoomLevel) + b.options.scrollZoomIncrement) : b.changeZoomLevel(parseFloat(b.currentZoomLevel) + b.options.scrollZoomIncrement);\n        return !1;\n      });\n    },\n    setElements: function setElements(b) {\n      if (!this.options.zoomEnabled) return !1;\n      \"show\" == b && this.isWindowSet && (\"inner\" == this.options.zoomType && this.showHideWindow(\"show\"), \"window\" == this.options.zoomType && this.showHideWindow(\"show\"), this.options.showLens && this.showHideLens(\"show\"), this.options.tint && \"inner\" != this.options.zoomType && this.showHideTint(\"show\"));\n      \"hide\" == b && (\"window\" == this.options.zoomType && this.showHideWindow(\"hide\"), this.options.tint || this.showHideWindow(\"hide\"), this.options.showLens && this.showHideLens(\"hide\"), this.options.tint && this.showHideTint(\"hide\"));\n    },\n    setPosition: function setPosition(b) {\n      if (!this.options.zoomEnabled) return !1;\n      this.nzHeight = this.$elem.height();\n      this.nzWidth = this.$elem.width();\n      this.nzOffset = this.$elem.offset();\n      this.options.tint && \"inner\" != this.options.zoomType && (this.zoomTint.css({\n        top: 0\n      }), this.zoomTint.css({\n        left: 0\n      }));\n      this.options.responsive && !this.options.scrollZoom && this.options.showLens && (lensHeight = this.nzHeight < this.options.zoomWindowWidth / this.widthRatio ? this.nzHeight : String(this.options.zoomWindowHeight / this.heightRatio), lensWidth = this.largeWidth < this.options.zoomWindowWidth ? this.nzWidth : this.options.zoomWindowWidth / this.widthRatio, this.widthRatio = this.largeWidth / this.nzWidth, this.heightRatio = this.largeHeight / this.nzHeight, \"lens\" != this.options.zoomType && (lensHeight = this.nzHeight < this.options.zoomWindowWidth / this.widthRatio ? this.nzHeight : String(this.options.zoomWindowHeight / this.heightRatio), lensWidth = this.options.zoomWindowWidth < this.options.zoomWindowWidth ? this.nzWidth : this.options.zoomWindowWidth / this.widthRatio, this.zoomLens.css(\"width\", lensWidth), this.zoomLens.css(\"height\", lensHeight), this.options.tint && (this.zoomTintImage.css(\"width\", this.nzWidth), this.zoomTintImage.css(\"height\", this.nzHeight))), \"lens\" == this.options.zoomType && this.zoomLens.css({\n        width: String(this.options.lensSize) + \"px\",\n        height: String(this.options.lensSize) + \"px\"\n      }));\n      this.zoomContainer.css({\n        top: this.nzOffset.top\n      });\n      this.zoomContainer.css({\n        left: this.nzOffset.left\n      });\n      this.mouseLeft = parseInt(b.pageX - this.nzOffset.left);\n      this.mouseTop = parseInt(b.pageY - this.nzOffset.top);\n      \"window\" == this.options.zoomType && (this.Etoppos = this.mouseTop < this.zoomLens.height() / 2, this.Eboppos = this.mouseTop > this.nzHeight - this.zoomLens.height() / 2 - 2 * this.options.lensBorderSize, this.Eloppos = this.mouseLeft < 0 + this.zoomLens.width() / 2, this.Eroppos = this.mouseLeft > this.nzWidth - this.zoomLens.width() / 2 - 2 * this.options.lensBorderSize);\n      \"inner\" == this.options.zoomType && (this.Etoppos = this.mouseTop < this.nzHeight / 2 / this.heightRatio, this.Eboppos = this.mouseTop > this.nzHeight - this.nzHeight / 2 / this.heightRatio, this.Eloppos = this.mouseLeft < 0 + this.nzWidth / 2 / this.widthRatio, this.Eroppos = this.mouseLeft > this.nzWidth - this.nzWidth / 2 / this.widthRatio - 2 * this.options.lensBorderSize);\n      0 >= this.mouseLeft || 0 > this.mouseTop || this.mouseLeft > this.nzWidth || this.mouseTop > this.nzHeight ? this.setElements(\"hide\") : (this.options.showLens && (this.lensLeftPos = String(this.mouseLeft - this.zoomLens.width() / 2), this.lensTopPos = String(this.mouseTop - this.zoomLens.height() / 2)), this.Etoppos && (this.lensTopPos = 0), this.Eloppos && (this.tintpos = this.lensLeftPos = this.windowLeftPos = 0), \"window\" == this.options.zoomType && (this.Eboppos && (this.lensTopPos = Math.max(this.nzHeight - this.zoomLens.height() - 2 * this.options.lensBorderSize, 0)), this.Eroppos && (this.lensLeftPos = this.nzWidth - this.zoomLens.width() - 2 * this.options.lensBorderSize)), \"inner\" == this.options.zoomType && (this.Eboppos && (this.lensTopPos = Math.max(this.nzHeight - 2 * this.options.lensBorderSize, 0)), this.Eroppos && (this.lensLeftPos = this.nzWidth - this.nzWidth - 2 * this.options.lensBorderSize)), \"lens\" == this.options.zoomType && (this.windowLeftPos = String(-1 * ((b.pageX - this.nzOffset.left) * this.widthRatio - this.zoomLens.width() / 2)), this.windowTopPos = String(-1 * ((b.pageY - this.nzOffset.top) * this.heightRatio - this.zoomLens.height() / 2)), this.zoomLens.css({\n        backgroundPosition: this.windowLeftPos + \"px \" + this.windowTopPos + \"px\"\n      }), this.changeBgSize && (this.nzHeight > this.nzWidth ? (\"lens\" == this.options.zoomType && this.zoomLens.css({\n        \"background-size\": this.largeWidth / this.newvalueheight + \"px \" + this.largeHeight / this.newvalueheight + \"px\"\n      }), this.zoomWindow.css({\n        \"background-size\": this.largeWidth / this.newvalueheight + \"px \" + this.largeHeight / this.newvalueheight + \"px\"\n      })) : (\"lens\" == this.options.zoomType && this.zoomLens.css({\n        \"background-size\": this.largeWidth / this.newvaluewidth + \"px \" + this.largeHeight / this.newvaluewidth + \"px\"\n      }), this.zoomWindow.css({\n        \"background-size\": this.largeWidth / this.newvaluewidth + \"px \" + this.largeHeight / this.newvaluewidth + \"px\"\n      })), this.changeBgSize = !1), this.setWindowPostition(b)), this.options.tint && \"inner\" != this.options.zoomType && this.setTintPosition(b), \"window\" == this.options.zoomType && this.setWindowPostition(b), \"inner\" == this.options.zoomType && this.setWindowPostition(b), this.options.showLens && (this.fullwidth && \"lens\" != this.options.zoomType && (this.lensLeftPos = 0), this.zoomLens.css({\n        left: this.lensLeftPos + \"px\",\n        top: this.lensTopPos + \"px\"\n      })));\n    },\n    showHideWindow: function showHideWindow(b) {\n      \"show\" != b || this.isWindowActive || (this.options.zoomWindowFadeIn ? this.zoomWindow.stop(!0, !0, !1).fadeIn(this.options.zoomWindowFadeIn) : this.zoomWindow.show(), this.isWindowActive = !0);\n      \"hide\" == b && this.isWindowActive && (this.options.zoomWindowFadeOut ? this.zoomWindow.stop(!0, !0).fadeOut(this.options.zoomWindowFadeOut) : this.zoomWindow.hide(), this.isWindowActive = !1);\n    },\n    showHideLens: function showHideLens(b) {\n      \"show\" != b || this.isLensActive || (this.options.lensFadeIn ? this.zoomLens.stop(!0, !0, !1).fadeIn(this.options.lensFadeIn) : this.zoomLens.show(), this.isLensActive = !0);\n      \"hide\" == b && this.isLensActive && (this.options.lensFadeOut ? this.zoomLens.stop(!0, !0).fadeOut(this.options.lensFadeOut) : this.zoomLens.hide(), this.isLensActive = !1);\n    },\n    showHideTint: function showHideTint(b) {\n      \"show\" != b || this.isTintActive || (this.options.zoomTintFadeIn ? this.zoomTint.css({\n        opacity: this.options.tintOpacity\n      }).animate().stop(!0, !0).fadeIn(\"slow\") : (this.zoomTint.css({\n        opacity: this.options.tintOpacity\n      }).animate(), this.zoomTint.show()), this.isTintActive = !0);\n      \"hide\" == b && this.isTintActive && (this.options.zoomTintFadeOut ? this.zoomTint.stop(!0, !0).fadeOut(this.options.zoomTintFadeOut) : this.zoomTint.hide(), this.isTintActive = !1);\n    },\n    setLensPostition: function setLensPostition(b) {},\n    setWindowPostition: function setWindowPostition(b) {\n      var a = this;\n      if (isNaN(a.options.zoomWindowPosition)) a.externalContainer = d(\"#\" + a.options.zoomWindowPosition), a.externalContainerWidth = a.externalContainer.width(), a.externalContainerHeight = a.externalContainer.height(), a.externalContainerOffset = a.externalContainer.offset(), a.windowOffsetTop = a.externalContainerOffset.top, a.windowOffsetLeft = a.externalContainerOffset.left;else switch (a.options.zoomWindowPosition) {\n        case 1:\n          a.windowOffsetTop = a.options.zoomWindowOffety;\n          a.windowOffsetLeft = +a.nzWidth;\n          break;\n\n        case 2:\n          a.options.zoomWindowHeight > a.nzHeight && (a.windowOffsetTop = -1 * (a.options.zoomWindowHeight / 2 - a.nzHeight / 2), a.windowOffsetLeft = a.nzWidth);\n          break;\n\n        case 3:\n          a.windowOffsetTop = a.nzHeight - a.zoomWindow.height() - 2 * a.options.borderSize;\n          a.windowOffsetLeft = a.nzWidth;\n          break;\n\n        case 4:\n          a.windowOffsetTop = a.nzHeight;\n          a.windowOffsetLeft = a.nzWidth;\n          break;\n\n        case 5:\n          a.windowOffsetTop = a.nzHeight;\n          a.windowOffsetLeft = a.nzWidth - a.zoomWindow.width() - 2 * a.options.borderSize;\n          break;\n\n        case 6:\n          a.options.zoomWindowHeight > a.nzHeight && (a.windowOffsetTop = a.nzHeight, a.windowOffsetLeft = -1 * (a.options.zoomWindowWidth / 2 - a.nzWidth / 2 + 2 * a.options.borderSize));\n          break;\n\n        case 7:\n          a.windowOffsetTop = a.nzHeight;\n          a.windowOffsetLeft = 0;\n          break;\n\n        case 8:\n          a.windowOffsetTop = a.nzHeight;\n          a.windowOffsetLeft = -1 * (a.zoomWindow.width() + 2 * a.options.borderSize);\n          break;\n\n        case 9:\n          a.windowOffsetTop = a.nzHeight - a.zoomWindow.height() - 2 * a.options.borderSize;\n          a.windowOffsetLeft = -1 * (a.zoomWindow.width() + 2 * a.options.borderSize);\n          break;\n\n        case 10:\n          a.options.zoomWindowHeight > a.nzHeight && (a.windowOffsetTop = -1 * (a.options.zoomWindowHeight / 2 - a.nzHeight / 2), a.windowOffsetLeft = -1 * (a.zoomWindow.width() + 2 * a.options.borderSize));\n          break;\n\n        case 11:\n          a.windowOffsetTop = a.options.zoomWindowOffety;\n          a.windowOffsetLeft = -1 * (a.zoomWindow.width() + 2 * a.options.borderSize);\n          break;\n\n        case 12:\n          a.windowOffsetTop = -1 * (a.zoomWindow.height() + 2 * a.options.borderSize);\n          a.windowOffsetLeft = -1 * (a.zoomWindow.width() + 2 * a.options.borderSize);\n          break;\n\n        case 13:\n          a.windowOffsetTop = -1 * (a.zoomWindow.height() + 2 * a.options.borderSize);\n          a.windowOffsetLeft = 0;\n          break;\n\n        case 14:\n          a.options.zoomWindowHeight > a.nzHeight && (a.windowOffsetTop = -1 * (a.zoomWindow.height() + 2 * a.options.borderSize), a.windowOffsetLeft = -1 * (a.options.zoomWindowWidth / 2 - a.nzWidth / 2 + 2 * a.options.borderSize));\n          break;\n\n        case 15:\n          a.windowOffsetTop = -1 * (a.zoomWindow.height() + 2 * a.options.borderSize);\n          a.windowOffsetLeft = a.nzWidth - a.zoomWindow.width() - 2 * a.options.borderSize;\n          break;\n\n        case 16:\n          a.windowOffsetTop = -1 * (a.zoomWindow.height() + 2 * a.options.borderSize);\n          a.windowOffsetLeft = a.nzWidth;\n          break;\n\n        default:\n          a.windowOffsetTop = a.options.zoomWindowOffety, a.windowOffsetLeft = a.nzWidth;\n      }\n      a.isWindowSet = !0;\n      a.windowOffsetTop += a.options.zoomWindowOffety;\n      a.windowOffsetLeft += a.options.zoomWindowOffetx;\n      a.zoomWindow.css({\n        top: a.windowOffsetTop\n      });\n      a.zoomWindow.css({\n        left: a.windowOffsetLeft\n      });\n      \"inner\" == a.options.zoomType && (a.zoomWindow.css({\n        top: 0\n      }), a.zoomWindow.css({\n        left: 0\n      }));\n      a.windowLeftPos = String(-1 * ((b.pageX - a.nzOffset.left) * a.widthRatio - a.zoomWindow.width() / 2));\n      a.windowTopPos = String(-1 * ((b.pageY - a.nzOffset.top) * a.heightRatio - a.zoomWindow.height() / 2));\n      a.Etoppos && (a.windowTopPos = 0);\n      a.Eloppos && (a.windowLeftPos = 0);\n      a.Eboppos && (a.windowTopPos = -1 * (a.largeHeight / a.currentZoomLevel - a.zoomWindow.height()));\n      a.Eroppos && (a.windowLeftPos = -1 * (a.largeWidth / a.currentZoomLevel - a.zoomWindow.width()));\n      a.fullheight && (a.windowTopPos = 0);\n      a.fullwidth && (a.windowLeftPos = 0);\n      if (\"window\" == a.options.zoomType || \"inner\" == a.options.zoomType) 1 == a.zoomLock && (1 >= a.widthRatio && (a.windowLeftPos = 0), 1 >= a.heightRatio && (a.windowTopPos = 0)), a.largeHeight < a.options.zoomWindowHeight && (a.windowTopPos = 0), a.largeWidth < a.options.zoomWindowWidth && (a.windowLeftPos = 0), a.options.easing ? (a.xp || (a.xp = 0), a.yp || (a.yp = 0), a.loop || (a.loop = setInterval(function () {\n        a.xp += (a.windowLeftPos - a.xp) / a.options.easingAmount;\n        a.yp += (a.windowTopPos - a.yp) / a.options.easingAmount;\n        a.scrollingLock ? (clearInterval(a.loop), a.xp = a.windowLeftPos, a.yp = a.windowTopPos, a.xp = -1 * ((b.pageX - a.nzOffset.left) * a.widthRatio - a.zoomWindow.width() / 2), a.yp = -1 * ((b.pageY - a.nzOffset.top) * a.heightRatio - a.zoomWindow.height() / 2), a.changeBgSize && (a.nzHeight > a.nzWidth ? (\"lens\" == a.options.zoomType && a.zoomLens.css({\n          \"background-size\": a.largeWidth / a.newvalueheight + \"px \" + a.largeHeight / a.newvalueheight + \"px\"\n        }), a.zoomWindow.css({\n          \"background-size\": a.largeWidth / a.newvalueheight + \"px \" + a.largeHeight / a.newvalueheight + \"px\"\n        })) : (\"lens\" != a.options.zoomType && a.zoomLens.css({\n          \"background-size\": a.largeWidth / a.newvaluewidth + \"px \" + a.largeHeight / a.newvalueheight + \"px\"\n        }), a.zoomWindow.css({\n          \"background-size\": a.largeWidth / a.newvaluewidth + \"px \" + a.largeHeight / a.newvaluewidth + \"px\"\n        })), a.changeBgSize = !1), a.zoomWindow.css({\n          backgroundPosition: a.windowLeftPos + \"px \" + a.windowTopPos + \"px\"\n        }), a.scrollingLock = !1, a.loop = !1) : (a.changeBgSize && (a.nzHeight > a.nzWidth ? (\"lens\" == a.options.zoomType && a.zoomLens.css({\n          \"background-size\": a.largeWidth / a.newvalueheight + \"px \" + a.largeHeight / a.newvalueheight + \"px\"\n        }), a.zoomWindow.css({\n          \"background-size\": a.largeWidth / a.newvalueheight + \"px \" + a.largeHeight / a.newvalueheight + \"px\"\n        })) : (\"lens\" != a.options.zoomType && a.zoomLens.css({\n          \"background-size\": a.largeWidth / a.newvaluewidth + \"px \" + a.largeHeight / a.newvaluewidth + \"px\"\n        }), a.zoomWindow.css({\n          \"background-size\": a.largeWidth / a.newvaluewidth + \"px \" + a.largeHeight / a.newvaluewidth + \"px\"\n        })), a.changeBgSize = !1), a.zoomWindow.css({\n          backgroundPosition: a.xp + \"px \" + a.yp + \"px\"\n        }));\n      }, 16))) : (a.changeBgSize && (a.nzHeight > a.nzWidth ? (\"lens\" == a.options.zoomType && a.zoomLens.css({\n        \"background-size\": a.largeWidth / a.newvalueheight + \"px \" + a.largeHeight / a.newvalueheight + \"px\"\n      }), a.zoomWindow.css({\n        \"background-size\": a.largeWidth / a.newvalueheight + \"px \" + a.largeHeight / a.newvalueheight + \"px\"\n      })) : (\"lens\" == a.options.zoomType && a.zoomLens.css({\n        \"background-size\": a.largeWidth / a.newvaluewidth + \"px \" + a.largeHeight / a.newvaluewidth + \"px\"\n      }), a.largeHeight / a.newvaluewidth < a.options.zoomWindowHeight ? a.zoomWindow.css({\n        \"background-size\": a.largeWidth / a.newvaluewidth + \"px \" + a.largeHeight / a.newvaluewidth + \"px\"\n      }) : a.zoomWindow.css({\n        \"background-size\": a.largeWidth / a.newvalueheight + \"px \" + a.largeHeight / a.newvalueheight + \"px\"\n      })), a.changeBgSize = !1), a.zoomWindow.css({\n        backgroundPosition: a.windowLeftPos + \"px \" + a.windowTopPos + \"px\"\n      }));\n    },\n    setTintPosition: function setTintPosition(b) {\n      this.nzOffset = this.$elem.offset();\n      this.tintpos = String(-1 * (b.pageX - this.nzOffset.left - this.zoomLens.width() / 2));\n      this.tintposy = String(-1 * (b.pageY - this.nzOffset.top - this.zoomLens.height() / 2));\n      this.Etoppos && (this.tintposy = 0);\n      this.Eloppos && (this.tintpos = 0);\n      this.Eboppos && (this.tintposy = -1 * (this.nzHeight - this.zoomLens.height() - 2 * this.options.lensBorderSize));\n      this.Eroppos && (this.tintpos = -1 * (this.nzWidth - this.zoomLens.width() - 2 * this.options.lensBorderSize));\n      this.options.tint && (this.fullheight && (this.tintposy = 0), this.fullwidth && (this.tintpos = 0), this.zoomTintImage.css({\n        left: this.tintpos + \"px\"\n      }), this.zoomTintImage.css({\n        top: this.tintposy + \"px\"\n      }));\n    },\n    swaptheimage: function swaptheimage(b, a) {\n      var c = this,\n          e = new Image();\n      c.options.loadingIcon && (c.spinner = d(\"<div style=\\\"background: url('\" + c.options.loadingIcon + \"') no-repeat center;height:\" + c.nzHeight + \"px;width:\" + c.nzWidth + 'px;z-index: 2000;position: absolute; background-position: center center;\"></div>'), c.$elem.after(c.spinner));\n      c.options.onImageSwap(c.$elem);\n\n      e.onload = function () {\n        c.largeWidth = e.width;\n        c.largeHeight = e.height;\n        c.zoomImage = a;\n        c.zoomWindow.css({\n          \"background-size\": c.largeWidth + \"px \" + c.largeHeight + \"px\"\n        });\n        c.zoomWindow.css({\n          \"background-size\": c.largeWidth + \"px \" + c.largeHeight + \"px\"\n        });\n        c.swapAction(b, a);\n      };\n\n      e.src = a;\n    },\n    swapAction: function swapAction(b, a) {\n      var c = this,\n          e = new Image();\n\n      e.onload = function () {\n        c.nzHeight = e.height;\n        c.nzWidth = e.width;\n        c.options.onImageSwapComplete(c.$elem);\n        c.doneCallback();\n      };\n\n      e.src = b;\n      c.currentZoomLevel = c.options.zoomLevel;\n      c.options.maxZoomLevel = !1;\n      \"lens\" == c.options.zoomType && c.zoomLens.css({\n        backgroundImage: \"url('\" + a + \"')\"\n      });\n      \"window\" == c.options.zoomType && c.zoomWindow.css({\n        backgroundImage: \"url('\" + a + \"')\"\n      });\n      \"inner\" == c.options.zoomType && c.zoomWindow.css({\n        backgroundImage: \"url('\" + a + \"')\"\n      });\n      c.currentImage = a;\n\n      if (c.options.imageCrossfade) {\n        var f = c.$elem,\n            g = f.clone();\n        c.$elem.attr(\"src\", b);\n        c.$elem.after(g);\n        g.stop(!0).fadeOut(c.options.imageCrossfade, function () {\n          d(this).remove();\n        });\n        c.$elem.width(\"auto\").removeAttr(\"width\");\n        c.$elem.height(\"auto\").removeAttr(\"height\");\n        f.fadeIn(c.options.imageCrossfade);\n        c.options.tint && \"inner\" != c.options.zoomType && (f = c.zoomTintImage, g = f.clone(), c.zoomTintImage.attr(\"src\", a), c.zoomTintImage.after(g), g.stop(!0).fadeOut(c.options.imageCrossfade, function () {\n          d(this).remove();\n        }), f.fadeIn(c.options.imageCrossfade), c.zoomTint.css({\n          height: c.$elem.height()\n        }), c.zoomTint.css({\n          width: c.$elem.width()\n        }));\n        c.zoomContainer.css(\"height\", c.$elem.height());\n        c.zoomContainer.css(\"width\", c.$elem.width());\n        \"inner\" != c.options.zoomType || c.options.constrainType || (c.zoomWrap.parent().css(\"height\", c.$elem.height()), c.zoomWrap.parent().css(\"width\", c.$elem.width()), c.zoomWindow.css(\"height\", c.$elem.height()), c.zoomWindow.css(\"width\", c.$elem.width()));\n      } else c.$elem.attr(\"src\", b), c.options.tint && (c.zoomTintImage.attr(\"src\", a), c.zoomTintImage.attr(\"height\", c.$elem.height()), c.zoomTintImage.css({\n        height: c.$elem.height()\n      }), c.zoomTint.css({\n        height: c.$elem.height()\n      })), c.zoomContainer.css(\"height\", c.$elem.height()), c.zoomContainer.css(\"width\", c.$elem.width());\n\n      c.options.imageCrossfade && (c.zoomWrap.css(\"height\", c.$elem.height()), c.zoomWrap.css(\"width\", c.$elem.width()));\n      c.options.constrainType && (\"height\" == c.options.constrainType && (c.zoomContainer.css(\"height\", c.options.constrainSize), c.zoomContainer.css(\"width\", \"auto\"), c.options.imageCrossfade ? (c.zoomWrap.css(\"height\", c.options.constrainSize), c.zoomWrap.css(\"width\", \"auto\"), c.constwidth = c.zoomWrap.width()) : (c.$elem.css(\"height\", c.options.constrainSize), c.$elem.css(\"width\", \"auto\"), c.constwidth = c.$elem.width()), \"inner\" == c.options.zoomType && (c.zoomWrap.parent().css(\"height\", c.options.constrainSize), c.zoomWrap.parent().css(\"width\", c.constwidth), c.zoomWindow.css(\"height\", c.options.constrainSize), c.zoomWindow.css(\"width\", c.constwidth)), c.options.tint && (c.tintContainer.css(\"height\", c.options.constrainSize), c.tintContainer.css(\"width\", c.constwidth), c.zoomTint.css(\"height\", c.options.constrainSize), c.zoomTint.css(\"width\", c.constwidth), c.zoomTintImage.css(\"height\", c.options.constrainSize), c.zoomTintImage.css(\"width\", c.constwidth))), \"width\" == c.options.constrainType && (c.zoomContainer.css(\"height\", \"auto\"), c.zoomContainer.css(\"width\", c.options.constrainSize), c.options.imageCrossfade ? (c.zoomWrap.css(\"height\", \"auto\"), c.zoomWrap.css(\"width\", c.options.constrainSize), c.constheight = c.zoomWrap.height()) : (c.$elem.css(\"height\", \"auto\"), c.$elem.css(\"width\", c.options.constrainSize), c.constheight = c.$elem.height()), \"inner\" == c.options.zoomType && (c.zoomWrap.parent().css(\"height\", c.constheight), c.zoomWrap.parent().css(\"width\", c.options.constrainSize), c.zoomWindow.css(\"height\", c.constheight), c.zoomWindow.css(\"width\", c.options.constrainSize)), c.options.tint && (c.tintContainer.css(\"height\", c.constheight), c.tintContainer.css(\"width\", c.options.constrainSize), c.zoomTint.css(\"height\", c.constheight), c.zoomTint.css(\"width\", c.options.constrainSize), c.zoomTintImage.css(\"height\", c.constheight), c.zoomTintImage.css(\"width\", c.options.constrainSize))));\n    },\n    doneCallback: function doneCallback() {\n      this.options.loadingIcon && this.spinner.hide();\n      this.nzOffset = this.$elem.offset();\n      this.nzWidth = this.$elem.width();\n      this.nzHeight = this.$elem.height();\n      this.currentZoomLevel = this.options.zoomLevel;\n      this.widthRatio = this.largeWidth / this.nzWidth;\n      this.heightRatio = this.largeHeight / this.nzHeight;\n      \"window\" == this.options.zoomType && (lensHeight = this.nzHeight < this.options.zoomWindowWidth / this.widthRatio ? this.nzHeight : String(this.options.zoomWindowHeight / this.heightRatio), lensWidth = this.options.zoomWindowWidth < this.options.zoomWindowWidth ? this.nzWidth : this.options.zoomWindowWidth / this.widthRatio, this.zoomLens && (this.zoomLens.css(\"width\", lensWidth), this.zoomLens.css(\"height\", lensHeight)));\n    },\n    getCurrentImage: function getCurrentImage() {\n      return this.zoomImage;\n    },\n    getGalleryList: function getGalleryList() {\n      var b = this;\n      b.gallerylist = [];\n      b.options.gallery ? d(\"#\" + b.options.gallery + \" a\").each(function () {\n        var a = \"\";\n        d(this).data(\"zoom-image\") ? a = d(this).data(\"zoom-image\") : d(this).data(\"image\") && (a = d(this).data(\"image\"));\n        a == b.zoomImage ? b.gallerylist.unshift({\n          href: \"\" + a + \"\",\n          title: d(this).find(\"img\").attr(\"title\")\n        }) : b.gallerylist.push({\n          href: \"\" + a + \"\",\n          title: d(this).find(\"img\").attr(\"title\")\n        });\n      }) : b.gallerylist.push({\n        href: \"\" + b.zoomImage + \"\",\n        title: d(this).find(\"img\").attr(\"title\")\n      });\n      return b.gallerylist;\n    },\n    changeZoomLevel: function changeZoomLevel(b) {\n      this.scrollingLock = !0;\n      this.newvalue = parseFloat(b).toFixed(2);\n      newvalue = parseFloat(b).toFixed(2);\n      maxheightnewvalue = this.largeHeight / (this.options.zoomWindowHeight / this.nzHeight * this.nzHeight);\n      maxwidthtnewvalue = this.largeWidth / (this.options.zoomWindowWidth / this.nzWidth * this.nzWidth);\n      \"inner\" != this.options.zoomType && (maxheightnewvalue <= newvalue ? (this.heightRatio = this.largeHeight / maxheightnewvalue / this.nzHeight, this.newvalueheight = maxheightnewvalue, this.fullheight = !0) : (this.heightRatio = this.largeHeight / newvalue / this.nzHeight, this.newvalueheight = newvalue, this.fullheight = !1), maxwidthtnewvalue <= newvalue ? (this.widthRatio = this.largeWidth / maxwidthtnewvalue / this.nzWidth, this.newvaluewidth = maxwidthtnewvalue, this.fullwidth = !0) : (this.widthRatio = this.largeWidth / newvalue / this.nzWidth, this.newvaluewidth = newvalue, this.fullwidth = !1), \"lens\" == this.options.zoomType && (maxheightnewvalue <= newvalue ? (this.fullwidth = !0, this.newvaluewidth = maxheightnewvalue) : (this.widthRatio = this.largeWidth / newvalue / this.nzWidth, this.newvaluewidth = newvalue, this.fullwidth = !1)));\n      \"inner\" == this.options.zoomType && (maxheightnewvalue = parseFloat(this.largeHeight / this.nzHeight).toFixed(2), maxwidthtnewvalue = parseFloat(this.largeWidth / this.nzWidth).toFixed(2), newvalue > maxheightnewvalue && (newvalue = maxheightnewvalue), newvalue > maxwidthtnewvalue && (newvalue = maxwidthtnewvalue), maxheightnewvalue <= newvalue ? (this.heightRatio = this.largeHeight / newvalue / this.nzHeight, this.newvalueheight = newvalue > maxheightnewvalue ? maxheightnewvalue : newvalue, this.fullheight = !0) : (this.heightRatio = this.largeHeight / newvalue / this.nzHeight, this.newvalueheight = newvalue > maxheightnewvalue ? maxheightnewvalue : newvalue, this.fullheight = !1), maxwidthtnewvalue <= newvalue ? (this.widthRatio = this.largeWidth / newvalue / this.nzWidth, this.newvaluewidth = newvalue > maxwidthtnewvalue ? maxwidthtnewvalue : newvalue, this.fullwidth = !0) : (this.widthRatio = this.largeWidth / newvalue / this.nzWidth, this.newvaluewidth = newvalue, this.fullwidth = !1));\n      scrcontinue = !1;\n      \"inner\" == this.options.zoomType && (this.nzWidth > this.nzHeight && (this.newvaluewidth <= maxwidthtnewvalue ? scrcontinue = !0 : (scrcontinue = !1, this.fullwidth = this.fullheight = !0)), this.nzHeight > this.nzWidth && (this.newvaluewidth <= maxwidthtnewvalue ? scrcontinue = !0 : (scrcontinue = !1, this.fullwidth = this.fullheight = !0)));\n      \"inner\" != this.options.zoomType && (scrcontinue = !0);\n      scrcontinue && (this.zoomLock = 0, this.changeZoom = !0, this.options.zoomWindowHeight / this.heightRatio <= this.nzHeight && (this.currentZoomLevel = this.newvalueheight, \"lens\" != this.options.zoomType && \"inner\" != this.options.zoomType && (this.changeBgSize = !0, this.zoomLens.css({\n        height: String(this.options.zoomWindowHeight / this.heightRatio) + \"px\"\n      })), \"lens\" == this.options.zoomType || \"inner\" == this.options.zoomType) && (this.changeBgSize = !0), this.options.zoomWindowWidth / this.widthRatio <= this.nzWidth && (\"inner\" != this.options.zoomType && this.newvaluewidth > this.newvalueheight && (this.currentZoomLevel = this.newvaluewidth), \"lens\" != this.options.zoomType && \"inner\" != this.options.zoomType && (this.changeBgSize = !0, this.zoomLens.css({\n        width: String(this.options.zoomWindowWidth / this.widthRatio) + \"px\"\n      })), \"lens\" == this.options.zoomType || \"inner\" == this.options.zoomType) && (this.changeBgSize = !0), \"inner\" == this.options.zoomType && (this.changeBgSize = !0, this.nzWidth > this.nzHeight && (this.currentZoomLevel = this.newvaluewidth), this.nzHeight > this.nzWidth && (this.currentZoomLevel = this.newvaluewidth)));\n      this.setPosition(this.currentLoc);\n    },\n    closeAll: function closeAll() {\n      self.zoomWindow && self.zoomWindow.hide();\n      self.zoomLens && self.zoomLens.hide();\n      self.zoomTint && self.zoomTint.hide();\n    },\n    changeState: function changeState(b) {\n      \"enable\" == b && (this.options.zoomEnabled = !0);\n      \"disable\" == b && (this.options.zoomEnabled = !1);\n    }\n  };\n\n  d.fn.elevateZoom = function (b) {\n    return this.each(function () {\n      var a = Object.create(k);\n      a.init(b, this);\n      d.data(this, \"elevateZoom\", a);\n    });\n  };\n\n  d.fn.elevateZoom.options = {\n    zoomActivation: \"hover\",\n    zoomEnabled: !0,\n    preloading: 1,\n    zoomLevel: 1,\n    scrollZoom: !1,\n    scrollZoomIncrement: 0.1,\n    minZoomLevel: !1,\n    maxZoomLevel: !1,\n    easing: !1,\n    easingAmount: 12,\n    lensSize: 200,\n    zoomWindowWidth: 400,\n    zoomWindowHeight: 400,\n    zoomWindowOffetx: 0,\n    zoomWindowOffety: 0,\n    zoomWindowPosition: 1,\n    zoomWindowBgColour: \"#fff\",\n    lensFadeIn: !1,\n    lensFadeOut: !1,\n    debug: !1,\n    zoomWindowFadeIn: !1,\n    zoomWindowFadeOut: !1,\n    zoomWindowAlwaysShow: !1,\n    zoomTintFadeIn: !1,\n    zoomTintFadeOut: !1,\n    borderSize: 4,\n    showLens: !0,\n    borderColour: \"#888\",\n    lensBorderSize: 1,\n    lensBorderColour: \"#000\",\n    lensShape: \"square\",\n    zoomType: \"window\",\n    containLensZoom: !1,\n    lensColour: \"white\",\n    lensOpacity: 0.4,\n    lenszoom: !1,\n    tint: !1,\n    tintColour: \"#333\",\n    tintOpacity: 0.4,\n    gallery: !1,\n    galleryActiveClass: \"zoomGalleryActive\",\n    imageCrossfade: !1,\n    constrainType: !1,\n    constrainSize: !1,\n    loadingIcon: !1,\n    cursor: \"default\",\n    responsive: !0,\n    onComplete: d.noop,\n    onZoomedImageLoaded: function onZoomedImageLoaded() {},\n    onImageSwap: d.noop,\n    onImageSwapComplete: d.noop\n  };\n})(jQuery, window, document); // ==================================================\n// fancyBox v3.5.6\n//\n// Licensed GPLv3 for open source use\n// or fancyBox Commercial License for commercial use\n//\n// http://fancyapps.com/fancybox/\n// Copyright 2018 fancyApps\n//\n// ==================================================\n\n\n!function (t, e, n, o) {\n  \"use strict\";\n\n  function i(t, e) {\n    var o,\n        i,\n        a,\n        s = [],\n        r = 0;\n    t && t.isDefaultPrevented() || (t.preventDefault(), e = e || {}, t && t.data && (e = h(t.data.options, e)), o = e.$target || n(t.currentTarget).trigger(\"blur\"), (a = n.fancybox.getInstance()) && a.$trigger && a.$trigger.is(o) || (e.selector ? s = n(e.selector) : (i = o.attr(\"data-fancybox\") || \"\", i ? (s = t.data ? t.data.items : [], s = s.length ? s.filter('[data-fancybox=\"' + i + '\"]') : n('[data-fancybox=\"' + i + '\"]')) : s = [o]), r = n(s).index(o), r < 0 && (r = 0), a = n.fancybox.open(s, e, r), a.$trigger = o));\n  }\n\n  if (t.console = t.console || {\n    info: function info(t) {}\n  }, n) {\n    if (n.fn.fancybox) return void console.info(\"fancyBox already initialized\");\n\n    var a = {\n      closeExisting: !1,\n      loop: !1,\n      gutter: 50,\n      keyboard: !0,\n      preventCaptionOverlap: !0,\n      arrows: !0,\n      infobar: !0,\n      smallBtn: \"auto\",\n      toolbar: \"auto\",\n      buttons: [\"zoom\", \"slideShow\", \"thumbs\", \"close\"],\n      idleTime: 3,\n      protect: !1,\n      modal: !1,\n      image: {\n        preload: !1\n      },\n      ajax: {\n        settings: {\n          data: {\n            fancybox: !0\n          }\n        }\n      },\n      iframe: {\n        tpl: '<iframe sandbox id=\"fancybox-frame{rnd}\" name=\"fancybox-frame{rnd}\" class=\"fancybox-iframe\" allowfullscreen=\"allowfullscreen\" allow=\"autoplay; fullscreen\" src=\"\"></iframe>',\n        preload: !0,\n        css: {},\n        attr: {\n          scrolling: \"auto\"\n        }\n      },\n      video: {\n        tpl: '<video class=\"fancybox-video\" controls controlsList=\"nodownload\" poster=\"{{poster}}\"><source src=\"{{src}}\" type=\"{{format}}\" />Sorry, your browser doesn\\'t support embedded videos, <a href=\"{{src}}\">download</a> and watch with your favorite video player!</video>',\n        format: \"\",\n        autoStart: !0\n      },\n      defaultType: \"image\",\n      animationEffect: \"zoom\",\n      animationDuration: 366,\n      zoomOpacity: \"auto\",\n      transitionEffect: \"fade\",\n      transitionDuration: 366,\n      slideClass: \"\",\n      baseClass: \"\",\n      baseTpl: '<div class=\"fancybox-container\" role=\"dialog\" tabindex=\"-1\"><div class=\"fancybox-bg\"></div><div class=\"fancybox-inner\"><div class=\"fancybox-infobar\"><span data-fancybox-index></span>&nbsp;/&nbsp;<span data-fancybox-count></span></div><div class=\"fancybox-toolbar\">{{buttons}}</div><div class=\"fancybox-navigation\">{{arrows}}</div><div class=\"fancybox-stage\"></div><div class=\"fancybox-caption\"><div class=\"fancybox-caption__body\"></div></div></div></div>',\n      spinnerTpl: '<div class=\"fancybox-loading\"></div>',\n      errorTpl: '<div class=\"fancybox-error\"><p>{{ERROR}}</p></div>',\n      btnTpl: {\n        download: '<a download data-fancybox-download class=\"fancybox-button fancybox-button--download\" title=\"{{DOWNLOAD}}\" href=\"javascript:;\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M18.62 17.09V19H5.38v-1.91zm-2.97-6.96L17 11.45l-5 4.87-5-4.87 1.36-1.32 2.68 2.64V5h1.92v7.77z\"/></svg></a>',\n        zoom: '<button data-fancybox-zoom class=\"fancybox-button fancybox-button--zoom\" title=\"{{ZOOM}}\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M18.7 17.3l-3-3a5.9 5.9 0 0 0-.6-7.6 5.9 5.9 0 0 0-8.4 0 5.9 5.9 0 0 0 0 8.4 5.9 5.9 0 0 0 7.7.7l3 3a1 1 0 0 0 1.3 0c.4-.5.4-1 0-1.5zM8.1 13.8a4 4 0 0 1 0-5.7 4 4 0 0 1 5.7 0 4 4 0 0 1 0 5.7 4 4 0 0 1-5.7 0z\"/></svg></button>',\n        close: '<button data-fancybox-close class=\"fancybox-button fancybox-button--close\" title=\"{{CLOSE}}\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12 10.6L6.6 5.2 5.2 6.6l5.4 5.4-5.4 5.4 1.4 1.4 5.4-5.4 5.4 5.4 1.4-1.4-5.4-5.4 5.4-5.4-1.4-1.4-5.4 5.4z\"/></svg></button>',\n        arrowLeft: '<button data-fancybox-prev class=\"fancybox-button fancybox-button--arrow_left\" title=\"{{PREV}}\"><div><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M11.28 15.7l-1.34 1.37L5 12l4.94-5.07 1.34 1.38-2.68 2.72H19v1.94H8.6z\"/></svg></div></button>',\n        arrowRight: '<button data-fancybox-next class=\"fancybox-button fancybox-button--arrow_right\" title=\"{{NEXT}}\"><div><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M15.4 12.97l-2.68 2.72 1.34 1.38L19 12l-4.94-5.07-1.34 1.38 2.68 2.72H5v1.94z\"/></svg></div></button>',\n        smallBtn: '<button type=\"button\" data-fancybox-close class=\"fancybox-button fancybox-close-small\" title=\"{{CLOSE}}\"><svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1\" viewBox=\"0 0 24 24\"><path d=\"M13 12l5-5-1-1-5 5-5-5-1 1 5 5-5 5 1 1 5-5 5 5 1-1z\"/></svg></button>'\n      },\n      parentEl: \"body\",\n      hideScrollbar: !0,\n      autoFocus: !0,\n      backFocus: !0,\n      trapFocus: !0,\n      fullScreen: {\n        autoStart: !1\n      },\n      touch: {\n        vertical: !0,\n        momentum: !0\n      },\n      hash: null,\n      media: {},\n      slideShow: {\n        autoStart: !1,\n        speed: 3e3\n      },\n      thumbs: {\n        autoStart: !1,\n        hideOnClose: !0,\n        parentEl: \".fancybox-container\",\n        axis: \"y\"\n      },\n      wheel: \"auto\",\n      onInit: n.noop,\n      beforeLoad: n.noop,\n      afterLoad: n.noop,\n      beforeShow: n.noop,\n      afterShow: n.noop,\n      beforeClose: n.noop,\n      afterClose: n.noop,\n      onActivate: n.noop,\n      onDeactivate: n.noop,\n      clickContent: function clickContent(t, e) {\n        return \"image\" === t.type && \"zoom\";\n      },\n      clickSlide: \"close\",\n      clickOutside: \"close\",\n      dblclickContent: !1,\n      dblclickSlide: !1,\n      dblclickOutside: !1,\n      mobile: {\n        preventCaptionOverlap: !1,\n        idleTime: !1,\n        clickContent: function clickContent(t, e) {\n          return \"image\" === t.type && \"toggleControls\";\n        },\n        clickSlide: function clickSlide(t, e) {\n          return \"image\" === t.type ? \"toggleControls\" : \"close\";\n        },\n        dblclickContent: function dblclickContent(t, e) {\n          return \"image\" === t.type && \"zoom\";\n        },\n        dblclickSlide: function dblclickSlide(t, e) {\n          return \"image\" === t.type && \"zoom\";\n        }\n      },\n      lang: \"en\",\n      i18n: {\n        en: {\n          CLOSE: \"Close\",\n          NEXT: \"Next\",\n          PREV: \"Previous\",\n          ERROR: \"The requested content cannot be loaded. <br/> Please try again later.\",\n          PLAY_START: \"Start slideshow\",\n          PLAY_STOP: \"Pause slideshow\",\n          FULL_SCREEN: \"Full screen\",\n          THUMBS: \"Thumbnails\",\n          DOWNLOAD: \"Download\",\n          SHARE: \"Share\",\n          ZOOM: \"Zoom\"\n        },\n        de: {\n          CLOSE: \"Schlie&szlig;en\",\n          NEXT: \"Weiter\",\n          PREV: \"Zur&uuml;ck\",\n          ERROR: \"Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es sp&auml;ter nochmal.\",\n          PLAY_START: \"Diaschau starten\",\n          PLAY_STOP: \"Diaschau beenden\",\n          FULL_SCREEN: \"Vollbild\",\n          THUMBS: \"Vorschaubilder\",\n          DOWNLOAD: \"Herunterladen\",\n          SHARE: \"Teilen\",\n          ZOOM: \"Vergr&ouml;&szlig;ern\"\n        }\n      }\n    },\n        s = n(t),\n        r = n(e),\n        c = 0,\n        l = function l(t) {\n      return t && t.hasOwnProperty && t instanceof n;\n    },\n        d = function () {\n      return t.requestAnimationFrame || t.webkitRequestAnimationFrame || t.mozRequestAnimationFrame || t.oRequestAnimationFrame || function (e) {\n        return t.setTimeout(e, 1e3 / 60);\n      };\n    }(),\n        u = function () {\n      return t.cancelAnimationFrame || t.webkitCancelAnimationFrame || t.mozCancelAnimationFrame || t.oCancelAnimationFrame || function (e) {\n        t.clearTimeout(e);\n      };\n    }(),\n        f = function () {\n      var t,\n          n = e.createElement(\"fakeelement\"),\n          o = {\n        transition: \"transitionend\",\n        OTransition: \"oTransitionEnd\",\n        MozTransition: \"transitionend\",\n        WebkitTransition: \"webkitTransitionEnd\"\n      };\n\n      for (t in o) {\n        if (void 0 !== n.style[t]) return o[t];\n      }\n\n      return \"transitionend\";\n    }(),\n        p = function p(t) {\n      return t && t.length && t[0].offsetHeight;\n    },\n        h = function h(t, e) {\n      var o = n.extend(!0, {}, t, e);\n      return n.each(e, function (t, e) {\n        n.isArray(e) && (o[t] = e);\n      }), o;\n    },\n        g = function g(t) {\n      var o, i;\n      return !(!t || t.ownerDocument !== e) && (n(\".fancybox-container\").css(\"pointer-events\", \"none\"), o = {\n        x: t.getBoundingClientRect().left + t.offsetWidth / 2,\n        y: t.getBoundingClientRect().top + t.offsetHeight / 2\n      }, i = e.elementFromPoint(o.x, o.y) === t, n(\".fancybox-container\").css(\"pointer-events\", \"\"), i);\n    },\n        b = function b(t, e, o) {\n      var i = this;\n      i.opts = h({\n        index: o\n      }, n.fancybox.defaults), n.isPlainObject(e) && (i.opts = h(i.opts, e)), n.fancybox.isMobile && (i.opts = h(i.opts, i.opts.mobile)), i.id = i.opts.id || ++c, i.currIndex = parseInt(i.opts.index, 10) || 0, i.prevIndex = null, i.prevPos = null, i.currPos = 0, i.firstRun = !0, i.group = [], i.slides = {}, i.addContent(t), i.group.length && i.init();\n    };\n\n    n.extend(b.prototype, {\n      init: function init() {\n        var o,\n            i,\n            a = this,\n            s = a.group[a.currIndex],\n            r = s.opts;\n        r.closeExisting && n.fancybox.close(!0), n(\"body\").addClass(\"fancybox-active\"), !n.fancybox.getInstance() && !1 !== r.hideScrollbar && !n.fancybox.isMobile && e.body.scrollHeight > t.innerHeight && (n(\"head\").append('<style id=\"fancybox-style-noscroll\" type=\"text/css\">.compensate-for-scrollbar{margin-right:' + (t.innerWidth - e.documentElement.clientWidth) + \"px;}</style>\"), n(\"body\").addClass(\"compensate-for-scrollbar\")), i = \"\", n.each(r.buttons, function (t, e) {\n          i += r.btnTpl[e] || \"\";\n        }), o = n(a.translate(a, r.baseTpl.replace(\"{{buttons}}\", i).replace(\"{{arrows}}\", r.btnTpl.arrowLeft + r.btnTpl.arrowRight))).attr(\"id\", \"fancybox-container-\" + a.id).addClass(r.baseClass).data(\"FancyBox\", a).appendTo(r.parentEl), a.$refs = {\n          container: o\n        }, [\"bg\", \"inner\", \"infobar\", \"toolbar\", \"stage\", \"caption\", \"navigation\"].forEach(function (t) {\n          a.$refs[t] = o.find(\".fancybox-\" + t);\n        }), a.trigger(\"onInit\"), a.activate(), a.jumpTo(a.currIndex);\n      },\n      translate: function translate(t, e) {\n        var n = t.opts.i18n[t.opts.lang] || t.opts.i18n.en;\n        return e.replace(/\\{\\{(\\w+)\\}\\}/g, function (t, e) {\n          return void 0 === n[e] ? t : n[e];\n        });\n      },\n      addContent: function addContent(t) {\n        var e,\n            o = this,\n            i = n.makeArray(t);\n        n.each(i, function (t, e) {\n          var i,\n              a,\n              s,\n              r,\n              c,\n              l = {},\n              d = {};\n          n.isPlainObject(e) ? (l = e, d = e.opts || e) : \"object\" === n.type(e) && n(e).length ? (i = n(e), d = i.data() || {}, d = n.extend(!0, {}, d, d.options), d.$orig = i, l.src = o.opts.src || d.src || i.attr(\"href\"), l.type || l.src || (l.type = \"inline\", l.src = e)) : l = {\n            type: \"html\",\n            src: e + \"\"\n          }, l.opts = n.extend(!0, {}, o.opts, d), n.isArray(d.buttons) && (l.opts.buttons = d.buttons), n.fancybox.isMobile && l.opts.mobile && (l.opts = h(l.opts, l.opts.mobile)), a = l.type || l.opts.type, r = l.src || \"\", !a && r && ((s = r.match(/\\.(mp4|mov|ogv|webm)((\\?|#).*)?$/i)) ? (a = \"video\", l.opts.video.format || (l.opts.video.format = \"video/\" + (\"ogv\" === s[1] ? \"ogg\" : s[1]))) : r.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i) ? a = \"image\" : r.match(/\\.(pdf)((\\?|#).*)?$/i) ? (a = \"iframe\", l = n.extend(!0, l, {\n            contentType: \"pdf\",\n            opts: {\n              iframe: {\n                preload: !1\n              }\n            }\n          })) : \"#\" === r.charAt(0) && (a = \"inline\")), a ? l.type = a : o.trigger(\"objectNeedsType\", l), l.contentType || (l.contentType = n.inArray(l.type, [\"html\", \"inline\", \"ajax\"]) > -1 ? \"html\" : l.type), l.index = o.group.length, \"auto\" == l.opts.smallBtn && (l.opts.smallBtn = n.inArray(l.type, [\"html\", \"inline\", \"ajax\"]) > -1), \"auto\" === l.opts.toolbar && (l.opts.toolbar = !l.opts.smallBtn), l.$thumb = l.opts.$thumb || null, l.opts.$trigger && l.index === o.opts.index && (l.$thumb = l.opts.$trigger.find(\"img:first\"), l.$thumb.length && (l.opts.$orig = l.opts.$trigger)), l.$thumb && l.$thumb.length || !l.opts.$orig || (l.$thumb = l.opts.$orig.find(\"img:first\")), l.$thumb && !l.$thumb.length && (l.$thumb = null), l.thumb = l.opts.thumb || (l.$thumb ? l.$thumb[0].src : null), \"function\" === n.type(l.opts.caption) && (l.opts.caption = l.opts.caption.apply(e, [o, l])), \"function\" === n.type(o.opts.caption) && (l.opts.caption = o.opts.caption.apply(e, [o, l])), l.opts.caption instanceof n || (l.opts.caption = void 0 === l.opts.caption ? \"\" : l.opts.caption + \"\"), \"ajax\" === l.type && (c = r.split(/\\s+/, 2), c.length > 1 && (l.src = c.shift(), l.opts.filter = c.shift())), l.opts.modal && (l.opts = n.extend(!0, l.opts, {\n            trapFocus: !0,\n            infobar: 0,\n            toolbar: 0,\n            smallBtn: 0,\n            keyboard: 0,\n            slideShow: 0,\n            fullScreen: 0,\n            thumbs: 0,\n            touch: 0,\n            clickContent: !1,\n            clickSlide: !1,\n            clickOutside: !1,\n            dblclickContent: !1,\n            dblclickSlide: !1,\n            dblclickOutside: !1\n          })), o.group.push(l);\n        }), Object.keys(o.slides).length && (o.updateControls(), (e = o.Thumbs) && e.isActive && (e.create(), e.focus()));\n      },\n      addEvents: function addEvents() {\n        var e = this;\n        e.removeEvents(), e.$refs.container.on(\"click.fb-close\", \"[data-fancybox-close]\", function (t) {\n          t.stopPropagation(), t.preventDefault(), e.close(t);\n        }).on(\"touchstart.fb-prev click.fb-prev\", \"[data-fancybox-prev]\", function (t) {\n          t.stopPropagation(), t.preventDefault(), e.previous();\n        }).on(\"touchstart.fb-next click.fb-next\", \"[data-fancybox-next]\", function (t) {\n          t.stopPropagation(), t.preventDefault(), e.next();\n        }).on(\"click.fb\", \"[data-fancybox-zoom]\", function (t) {\n          e[e.isScaledDown() ? \"scaleToActual\" : \"scaleToFit\"]();\n        }), s.on(\"orientationchange.fb resize.fb\", function (t) {\n          t && t.originalEvent && \"resize\" === t.originalEvent.type ? (e.requestId && u(e.requestId), e.requestId = d(function () {\n            e.update(t);\n          })) : (e.current && \"iframe\" === e.current.type && e.$refs.stage.hide(), setTimeout(function () {\n            e.$refs.stage.show(), e.update(t);\n          }, n.fancybox.isMobile ? 600 : 250));\n        }), r.on(\"keydown.fb\", function (t) {\n          var o = n.fancybox ? n.fancybox.getInstance() : null,\n              i = o.current,\n              a = t.keyCode || t.which;\n          if (9 == a) return void (i.opts.trapFocus && e.focus(t));\n          if (!(!i.opts.keyboard || t.ctrlKey || t.altKey || t.shiftKey || n(t.target).is(\"input,textarea,video,audio\"))) return 8 === a || 27 === a ? (t.preventDefault(), void e.close(t)) : 37 === a || 38 === a ? (t.preventDefault(), void e.previous()) : 39 === a || 40 === a ? (t.preventDefault(), void e.next()) : void e.trigger(\"afterKeydown\", t, a);\n        }), e.group[e.currIndex].opts.idleTime && (e.idleSecondsCounter = 0, r.on(\"mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle\", function (t) {\n          e.idleSecondsCounter = 0, e.isIdle && e.showControls(), e.isIdle = !1;\n        }), e.idleInterval = t.setInterval(function () {\n          ++e.idleSecondsCounter >= e.group[e.currIndex].opts.idleTime && !e.isDragging && (e.isIdle = !0, e.idleSecondsCounter = 0, e.hideControls());\n        }, 1e3));\n      },\n      removeEvents: function removeEvents() {\n        var e = this;\n        s.off(\"orientationchange.fb resize.fb\"), r.off(\"keydown.fb .fb-idle\"), this.$refs.container.off(\".fb-close .fb-prev .fb-next\"), e.idleInterval && (t.clearInterval(e.idleInterval), e.idleInterval = null);\n      },\n      previous: function previous(t) {\n        return this.jumpTo(this.currPos - 1, t);\n      },\n      next: function next(t) {\n        return this.jumpTo(this.currPos + 1, t);\n      },\n      jumpTo: function jumpTo(t, e) {\n        var o,\n            i,\n            a,\n            s,\n            r,\n            c,\n            l,\n            d,\n            u,\n            f = this,\n            h = f.group.length;\n\n        if (!(f.isDragging || f.isClosing || f.isAnimating && f.firstRun)) {\n          if (t = parseInt(t, 10), !(a = f.current ? f.current.opts.loop : f.opts.loop) && (t < 0 || t >= h)) return !1;\n          if (o = f.firstRun = !Object.keys(f.slides).length, r = f.current, f.prevIndex = f.currIndex, f.prevPos = f.currPos, s = f.createSlide(t), h > 1 && ((a || s.index < h - 1) && f.createSlide(t + 1), (a || s.index > 0) && f.createSlide(t - 1)), f.current = s, f.currIndex = s.index, f.currPos = s.pos, f.trigger(\"beforeShow\", o), f.updateControls(), s.forcedDuration = void 0, n.isNumeric(e) ? s.forcedDuration = e : e = s.opts[o ? \"animationDuration\" : \"transitionDuration\"], e = parseInt(e, 10), i = f.isMoved(s), s.$slide.addClass(\"fancybox-slide--current\"), o) return s.opts.animationEffect && e && f.$refs.container.css(\"transition-duration\", e + \"ms\"), f.$refs.container.addClass(\"fancybox-is-open\").trigger(\"focus\"), f.loadSlide(s), void f.preload(\"image\");\n          c = n.fancybox.getTranslate(r.$slide), l = n.fancybox.getTranslate(f.$refs.stage), n.each(f.slides, function (t, e) {\n            n.fancybox.stop(e.$slide, !0);\n          }), r.pos !== s.pos && (r.isComplete = !1), r.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--current\"), i ? (u = c.left - (r.pos * c.width + r.pos * r.opts.gutter), n.each(f.slides, function (t, o) {\n            o.$slide.removeClass(\"fancybox-animated\").removeClass(function (t, e) {\n              return (e.match(/(^|\\s)fancybox-fx-\\S+/g) || []).join(\" \");\n            });\n            var i = o.pos * c.width + o.pos * o.opts.gutter;\n            n.fancybox.setTranslate(o.$slide, {\n              top: 0,\n              left: i - l.left + u\n            }), o.pos !== s.pos && o.$slide.addClass(\"fancybox-slide--\" + (o.pos > s.pos ? \"next\" : \"previous\")), p(o.$slide), n.fancybox.animate(o.$slide, {\n              top: 0,\n              left: (o.pos - s.pos) * c.width + (o.pos - s.pos) * o.opts.gutter\n            }, e, function () {\n              o.$slide.css({\n                transform: \"\",\n                opacity: \"\"\n              }).removeClass(\"fancybox-slide--next fancybox-slide--previous\"), o.pos === f.currPos && f.complete();\n            });\n          })) : e && s.opts.transitionEffect && (d = \"fancybox-animated fancybox-fx-\" + s.opts.transitionEffect, r.$slide.addClass(\"fancybox-slide--\" + (r.pos > s.pos ? \"next\" : \"previous\")), n.fancybox.animate(r.$slide, d, e, function () {\n            r.$slide.removeClass(d).removeClass(\"fancybox-slide--next fancybox-slide--previous\");\n          }, !1)), s.isLoaded ? f.revealContent(s) : f.loadSlide(s), f.preload(\"image\");\n        }\n      },\n      createSlide: function createSlide(t) {\n        var e,\n            o,\n            i = this;\n        return o = t % i.group.length, o = o < 0 ? i.group.length + o : o, !i.slides[t] && i.group[o] && (e = n('<div class=\"fancybox-slide\"></div>').appendTo(i.$refs.stage), i.slides[t] = n.extend(!0, {}, i.group[o], {\n          pos: t,\n          $slide: e,\n          isLoaded: !1\n        }), i.updateSlide(i.slides[t])), i.slides[t];\n      },\n      scaleToActual: function scaleToActual(t, e, o) {\n        var i,\n            a,\n            s,\n            r,\n            c,\n            l = this,\n            d = l.current,\n            u = d.$content,\n            f = n.fancybox.getTranslate(d.$slide).width,\n            p = n.fancybox.getTranslate(d.$slide).height,\n            h = d.width,\n            g = d.height;\n        l.isAnimating || l.isMoved() || !u || \"image\" != d.type || !d.isLoaded || d.hasError || (l.isAnimating = !0, n.fancybox.stop(u), t = void 0 === t ? .5 * f : t, e = void 0 === e ? .5 * p : e, i = n.fancybox.getTranslate(u), i.top -= n.fancybox.getTranslate(d.$slide).top, i.left -= n.fancybox.getTranslate(d.$slide).left, r = h / i.width, c = g / i.height, a = .5 * f - .5 * h, s = .5 * p - .5 * g, h > f && (a = i.left * r - (t * r - t), a > 0 && (a = 0), a < f - h && (a = f - h)), g > p && (s = i.top * c - (e * c - e), s > 0 && (s = 0), s < p - g && (s = p - g)), l.updateCursor(h, g), n.fancybox.animate(u, {\n          top: s,\n          left: a,\n          scaleX: r,\n          scaleY: c\n        }, o || 366, function () {\n          l.isAnimating = !1;\n        }), l.SlideShow && l.SlideShow.isActive && l.SlideShow.stop());\n      },\n      scaleToFit: function scaleToFit(t) {\n        var e,\n            o = this,\n            i = o.current,\n            a = i.$content;\n        o.isAnimating || o.isMoved() || !a || \"image\" != i.type || !i.isLoaded || i.hasError || (o.isAnimating = !0, n.fancybox.stop(a), e = o.getFitPos(i), o.updateCursor(e.width, e.height), n.fancybox.animate(a, {\n          top: e.top,\n          left: e.left,\n          scaleX: e.width / a.width(),\n          scaleY: e.height / a.height()\n        }, t || 366, function () {\n          o.isAnimating = !1;\n        }));\n      },\n      getFitPos: function getFitPos(t) {\n        var e,\n            o,\n            i,\n            a,\n            s = this,\n            r = t.$content,\n            c = t.$slide,\n            l = t.width || t.opts.width,\n            d = t.height || t.opts.height,\n            u = {};\n        return !!(t.isLoaded && r && r.length) && (e = n.fancybox.getTranslate(s.$refs.stage).width, o = n.fancybox.getTranslate(s.$refs.stage).height, e -= parseFloat(c.css(\"paddingLeft\")) + parseFloat(c.css(\"paddingRight\")) + parseFloat(r.css(\"marginLeft\")) + parseFloat(r.css(\"marginRight\")), o -= parseFloat(c.css(\"paddingTop\")) + parseFloat(c.css(\"paddingBottom\")) + parseFloat(r.css(\"marginTop\")) + parseFloat(r.css(\"marginBottom\")), l && d || (l = e, d = o), i = Math.min(1, e / l, o / d), l *= i, d *= i, l > e - .5 && (l = e), d > o - .5 && (d = o), \"image\" === t.type ? (u.top = Math.floor(.5 * (o - d)) + parseFloat(c.css(\"paddingTop\")), u.left = Math.floor(.5 * (e - l)) + parseFloat(c.css(\"paddingLeft\"))) : \"video\" === t.contentType && (a = t.opts.width && t.opts.height ? l / d : t.opts.ratio || 16 / 9, d > l / a ? d = l / a : l > d * a && (l = d * a)), u.width = l, u.height = d, u);\n      },\n      update: function update(t) {\n        var e = this;\n        n.each(e.slides, function (n, o) {\n          e.updateSlide(o, t);\n        });\n      },\n      updateSlide: function updateSlide(t, e) {\n        var o = this,\n            i = t && t.$content,\n            a = t.width || t.opts.width,\n            s = t.height || t.opts.height,\n            r = t.$slide;\n        o.adjustCaption(t), i && (a || s || \"video\" === t.contentType) && !t.hasError && (n.fancybox.stop(i), n.fancybox.setTranslate(i, o.getFitPos(t)), t.pos === o.currPos && (o.isAnimating = !1, o.updateCursor())), o.adjustLayout(t), r.length && (r.trigger(\"refresh\"), t.pos === o.currPos && o.$refs.toolbar.add(o.$refs.navigation.find(\".fancybox-button--arrow_right\")).toggleClass(\"compensate-for-scrollbar\", r.get(0).scrollHeight > r.get(0).clientHeight)), o.trigger(\"onUpdate\", t, e);\n      },\n      centerSlide: function centerSlide(t) {\n        var e = this,\n            o = e.current,\n            i = o.$slide;\n        !e.isClosing && o && (i.siblings().css({\n          transform: \"\",\n          opacity: \"\"\n        }), i.parent().children().removeClass(\"fancybox-slide--previous fancybox-slide--next\"), n.fancybox.animate(i, {\n          top: 0,\n          left: 0,\n          opacity: 1\n        }, void 0 === t ? 0 : t, function () {\n          i.css({\n            transform: \"\",\n            opacity: \"\"\n          }), o.isComplete || e.complete();\n        }, !1));\n      },\n      isMoved: function isMoved(t) {\n        var e,\n            o,\n            i = t || this.current;\n        return !!i && (o = n.fancybox.getTranslate(this.$refs.stage), e = n.fancybox.getTranslate(i.$slide), !i.$slide.hasClass(\"fancybox-animated\") && (Math.abs(e.top - o.top) > .5 || Math.abs(e.left - o.left) > .5));\n      },\n      updateCursor: function updateCursor(t, e) {\n        var o,\n            i,\n            a = this,\n            s = a.current,\n            r = a.$refs.container;\n        s && !a.isClosing && a.Guestures && (r.removeClass(\"fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan\"), o = a.canPan(t, e), i = !!o || a.isZoomable(), r.toggleClass(\"fancybox-is-zoomable\", i), n(\"[data-fancybox-zoom]\").prop(\"disabled\", !i), o ? r.addClass(\"fancybox-can-pan\") : i && (\"zoom\" === s.opts.clickContent || n.isFunction(s.opts.clickContent) && \"zoom\" == s.opts.clickContent(s)) ? r.addClass(\"fancybox-can-zoomIn\") : s.opts.touch && (s.opts.touch.vertical || a.group.length > 1) && \"video\" !== s.contentType && r.addClass(\"fancybox-can-swipe\"));\n      },\n      isZoomable: function isZoomable() {\n        var t,\n            e = this,\n            n = e.current;\n\n        if (n && !e.isClosing && \"image\" === n.type && !n.hasError) {\n          if (!n.isLoaded) return !0;\n          if ((t = e.getFitPos(n)) && (n.width > t.width || n.height > t.height)) return !0;\n        }\n\n        return !1;\n      },\n      isScaledDown: function isScaledDown(t, e) {\n        var o = this,\n            i = !1,\n            a = o.current,\n            s = a.$content;\n        return void 0 !== t && void 0 !== e ? i = t < a.width && e < a.height : s && (i = n.fancybox.getTranslate(s), i = i.width < a.width && i.height < a.height), i;\n      },\n      canPan: function canPan(t, e) {\n        var o = this,\n            i = o.current,\n            a = null,\n            s = !1;\n        return \"image\" === i.type && (i.isComplete || t && e) && !i.hasError && (s = o.getFitPos(i), void 0 !== t && void 0 !== e ? a = {\n          width: t,\n          height: e\n        } : i.isComplete && (a = n.fancybox.getTranslate(i.$content)), a && s && (s = Math.abs(a.width - s.width) > 1.5 || Math.abs(a.height - s.height) > 1.5)), s;\n      },\n      loadSlide: function loadSlide(t) {\n        var e,\n            o,\n            i,\n            a = this;\n\n        if (!t.isLoading && !t.isLoaded) {\n          if (t.isLoading = !0, !1 === a.trigger(\"beforeLoad\", t)) return t.isLoading = !1, !1;\n\n          switch (e = t.type, o = t.$slide, o.off(\"refresh\").trigger(\"onReset\").addClass(t.opts.slideClass), e) {\n            case \"image\":\n              a.setImage(t);\n              break;\n\n            case \"iframe\":\n              a.setIframe(t);\n              break;\n\n            case \"html\":\n              a.setContent(t, t.src || t.content);\n              break;\n\n            case \"video\":\n              a.setContent(t, t.opts.video.tpl.replace(/\\{\\{src\\}\\}/gi, t.src).replace(\"{{format}}\", t.opts.videoFormat || t.opts.video.format || \"\").replace(\"{{poster}}\", t.thumb || \"\"));\n              break;\n\n            case \"inline\":\n              n(t.src).length ? a.setContent(t, n(t.src)) : a.setError(t);\n              break;\n\n            case \"ajax\":\n              a.showLoading(t), i = n.ajax(n.extend({}, t.opts.ajax.settings, {\n                url: t.src,\n                success: function success(e, n) {\n                  \"success\" === n && a.setContent(t, e);\n                },\n                error: function error(e, n) {\n                  e && \"abort\" !== n && a.setError(t);\n                }\n              })), o.one(\"onReset\", function () {\n                i.abort();\n              });\n              break;\n\n            default:\n              a.setError(t);\n          }\n\n          return !0;\n        }\n      },\n      setImage: function setImage(t) {\n        var o,\n            i = this;\n        setTimeout(function () {\n          var e = t.$image;\n          i.isClosing || !t.isLoading || e && e.length && e[0].complete || t.hasError || i.showLoading(t);\n        }, 50), i.checkSrcset(t), t.$content = n('<div class=\"fancybox-content\"></div>').addClass(\"fancybox-is-hidden\").appendTo(t.$slide.addClass(\"fancybox-slide--image\")), !1 !== t.opts.preload && t.opts.width && t.opts.height && t.thumb && (t.width = t.opts.width, t.height = t.opts.height, o = e.createElement(\"img\"), o.onerror = function () {\n          n(this).remove(), t.$ghost = null;\n        }, o.onload = function () {\n          i.afterLoad(t);\n        }, t.$ghost = n(o).addClass(\"fancybox-image\").appendTo(t.$content).attr(\"src\", t.thumb)), i.setBigImage(t);\n      },\n      checkSrcset: function checkSrcset(e) {\n        var n,\n            o,\n            i,\n            a,\n            s = e.opts.srcset || e.opts.image.srcset;\n\n        if (s) {\n          i = t.devicePixelRatio || 1, a = t.innerWidth * i, o = s.split(\",\").map(function (t) {\n            var e = {};\n            return t.trim().split(/\\s+/).forEach(function (t, n) {\n              var o = parseInt(t.substring(0, t.length - 1), 10);\n              if (0 === n) return e.url = t;\n              o && (e.value = o, e.postfix = t[t.length - 1]);\n            }), e;\n          }), o.sort(function (t, e) {\n            return t.value - e.value;\n          });\n\n          for (var r = 0; r < o.length; r++) {\n            var c = o[r];\n\n            if (\"w\" === c.postfix && c.value >= a || \"x\" === c.postfix && c.value >= i) {\n              n = c;\n              break;\n            }\n          }\n\n          !n && o.length && (n = o[o.length - 1]), n && (e.src = n.url, e.width && e.height && \"w\" == n.postfix && (e.height = e.width / e.height * n.value, e.width = n.value), e.opts.srcset = s);\n        }\n      },\n      setBigImage: function setBigImage(t) {\n        var o = this,\n            i = e.createElement(\"img\"),\n            a = n(i);\n        t.$image = a.one(\"error\", function () {\n          o.setError(t);\n        }).one(\"load\", function () {\n          var e;\n          t.$ghost || (o.resolveImageSlideSize(t, this.naturalWidth, this.naturalHeight), o.afterLoad(t)), o.isClosing || (t.opts.srcset && (e = t.opts.sizes, e && \"auto\" !== e || (e = (t.width / t.height > 1 && s.width() / s.height() > 1 ? \"100\" : Math.round(t.width / t.height * 100)) + \"vw\"), a.attr(\"sizes\", e).attr(\"srcset\", t.opts.srcset)), t.$ghost && setTimeout(function () {\n            t.$ghost && !o.isClosing && t.$ghost.hide();\n          }, Math.min(300, Math.max(1e3, t.height / 1600))), o.hideLoading(t));\n        }).addClass(\"fancybox-image\").attr(\"src\", t.src).appendTo(t.$content), (i.complete || \"complete\" == i.readyState) && a.naturalWidth && a.naturalHeight ? a.trigger(\"load\") : i.error && a.trigger(\"error\");\n      },\n      resolveImageSlideSize: function resolveImageSlideSize(t, e, n) {\n        var o = parseInt(t.opts.width, 10),\n            i = parseInt(t.opts.height, 10);\n        t.width = e, t.height = n, o > 0 && (t.width = o, t.height = Math.floor(o * n / e)), i > 0 && (t.width = Math.floor(i * e / n), t.height = i);\n      },\n      setIframe: function setIframe(t) {\n        var e,\n            o = this,\n            i = t.opts.iframe,\n            a = t.$slide;\n        t.$content = n('<div class=\"fancybox-content' + (i.preload ? \" fancybox-is-hidden\" : \"\") + '\"></div>').css(i.css).appendTo(a), a.addClass(\"fancybox-slide--\" + t.contentType), t.$iframe = e = n(i.tpl.replace(/\\{rnd\\}/g, new Date().getTime())).attr(i.attr).appendTo(t.$content), i.preload ? (o.showLoading(t), e.on(\"load.fb error.fb\", function (e) {\n          this.isReady = 1, t.$slide.trigger(\"refresh\"), o.afterLoad(t);\n        }), a.on(\"refresh.fb\", function () {\n          var n,\n              o,\n              s = t.$content,\n              r = i.css.width,\n              c = i.css.height;\n\n          if (1 === e[0].isReady) {\n            try {\n              n = e.contents(), o = n.find(\"body\");\n            } catch (t) {}\n\n            o && o.length && o.children().length && (a.css(\"overflow\", \"visible\"), s.css({\n              width: \"100%\",\n              \"max-width\": \"100%\",\n              height: \"9999px\"\n            }), void 0 === r && (r = Math.ceil(Math.max(o[0].clientWidth, o.outerWidth(!0)))), s.css(\"width\", r || \"\").css(\"max-width\", \"\"), void 0 === c && (c = Math.ceil(Math.max(o[0].clientHeight, o.outerHeight(!0)))), s.css(\"height\", c || \"\"), a.css(\"overflow\", \"auto\")), s.removeClass(\"fancybox-is-hidden\");\n          }\n        })) : o.afterLoad(t), e.attr(\"src\", t.src), a.one(\"onReset\", function () {\n          try {\n            n(this).find(\"iframe\").hide().unbind().attr(\"src\", \"//about:blank\");\n          } catch (t) {}\n\n          n(this).off(\"refresh.fb\").empty(), t.isLoaded = !1, t.isRevealed = !1;\n        });\n      },\n      setContent: function setContent(t, e) {\n        var o = this;\n        o.isClosing || (o.hideLoading(t), t.$content && n.fancybox.stop(t.$content), t.$slide.empty(), l(e) && e.parent().length ? ((e.hasClass(\"fancybox-content\") || e.parent().hasClass(\"fancybox-content\")) && e.parents(\".fancybox-slide\").trigger(\"onReset\"), t.$placeholder = n(\"<div>\").hide().insertAfter(e), e.css(\"display\", \"inline-block\")) : t.hasError || (\"string\" === n.type(e) && (e = n(\"<div>\").append(n.trim(e)).contents()), t.opts.filter && (e = n(\"<div>\").html(e).find(t.opts.filter))), t.$slide.one(\"onReset\", function () {\n          n(this).find(\"video,audio\").trigger(\"pause\"), t.$placeholder && (t.$placeholder.after(e.removeClass(\"fancybox-content\").hide()).remove(), t.$placeholder = null), t.$smallBtn && (t.$smallBtn.remove(), t.$smallBtn = null), t.hasError || (n(this).empty(), t.isLoaded = !1, t.isRevealed = !1);\n        }), n(e).appendTo(t.$slide), n(e).is(\"video,audio\") && (n(e).addClass(\"fancybox-video\"), n(e).wrap(\"<div></div>\"), t.contentType = \"video\", t.opts.width = t.opts.width || n(e).attr(\"width\"), t.opts.height = t.opts.height || n(e).attr(\"height\")), t.$content = t.$slide.children().filter(\"div,form,main,video,audio,article,.fancybox-content\").first(), t.$content.siblings().hide(), t.$content.length || (t.$content = t.$slide.wrapInner(\"<div></div>\").children().first()), t.$content.addClass(\"fancybox-content\"), t.$slide.addClass(\"fancybox-slide--\" + t.contentType), o.afterLoad(t));\n      },\n      setError: function setError(t) {\n        t.hasError = !0, t.$slide.trigger(\"onReset\").removeClass(\"fancybox-slide--\" + t.contentType).addClass(\"fancybox-slide--error\"), t.contentType = \"html\", this.setContent(t, this.translate(t, t.opts.errorTpl)), t.pos === this.currPos && (this.isAnimating = !1);\n      },\n      showLoading: function showLoading(t) {\n        var e = this;\n        (t = t || e.current) && !t.$spinner && (t.$spinner = n(e.translate(e, e.opts.spinnerTpl)).appendTo(t.$slide).hide().fadeIn(\"fast\"));\n      },\n      hideLoading: function hideLoading(t) {\n        var e = this;\n        (t = t || e.current) && t.$spinner && (t.$spinner.stop().remove(), delete t.$spinner);\n      },\n      afterLoad: function afterLoad(t) {\n        var e = this;\n        e.isClosing || (t.isLoading = !1, t.isLoaded = !0, e.trigger(\"afterLoad\", t), e.hideLoading(t), !t.opts.smallBtn || t.$smallBtn && t.$smallBtn.length || (t.$smallBtn = n(e.translate(t, t.opts.btnTpl.smallBtn)).appendTo(t.$content)), t.opts.protect && t.$content && !t.hasError && (t.$content.on(\"contextmenu.fb\", function (t) {\n          return 2 == t.button && t.preventDefault(), !0;\n        }), \"image\" === t.type && n('<div class=\"fancybox-spaceball\"></div>').appendTo(t.$content)), e.adjustCaption(t), e.adjustLayout(t), t.pos === e.currPos && e.updateCursor(), e.revealContent(t));\n      },\n      adjustCaption: function adjustCaption(t) {\n        var e,\n            n = this,\n            o = t || n.current,\n            i = o.opts.caption,\n            a = o.opts.preventCaptionOverlap,\n            s = n.$refs.caption,\n            r = !1;\n        s.toggleClass(\"fancybox-caption--separate\", a), a && i && i.length && (o.pos !== n.currPos ? (e = s.clone().appendTo(s.parent()), e.children().eq(0).empty().html(i), r = e.outerHeight(!0), e.empty().remove()) : n.$caption && (r = n.$caption.outerHeight(!0)), o.$slide.css(\"padding-bottom\", r || \"\"));\n      },\n      adjustLayout: function adjustLayout(t) {\n        var e,\n            n,\n            o,\n            i,\n            a = this,\n            s = t || a.current;\n        s.isLoaded && !0 !== s.opts.disableLayoutFix && (s.$content.css(\"margin-bottom\", \"\"), s.$content.outerHeight() > s.$slide.height() + .5 && (o = s.$slide[0].style[\"padding-bottom\"], i = s.$slide.css(\"padding-bottom\"), parseFloat(i) > 0 && (e = s.$slide[0].scrollHeight, s.$slide.css(\"padding-bottom\", 0), Math.abs(e - s.$slide[0].scrollHeight) < 1 && (n = i), s.$slide.css(\"padding-bottom\", o))), s.$content.css(\"margin-bottom\", n));\n      },\n      revealContent: function revealContent(t) {\n        var e,\n            o,\n            i,\n            a,\n            s = this,\n            r = t.$slide,\n            c = !1,\n            l = !1,\n            d = s.isMoved(t),\n            u = t.isRevealed;\n        return t.isRevealed = !0, e = t.opts[s.firstRun ? \"animationEffect\" : \"transitionEffect\"], i = t.opts[s.firstRun ? \"animationDuration\" : \"transitionDuration\"], i = parseInt(void 0 === t.forcedDuration ? i : t.forcedDuration, 10), !d && t.pos === s.currPos && i || (e = !1), \"zoom\" === e && (t.pos === s.currPos && i && \"image\" === t.type && !t.hasError && (l = s.getThumbPos(t)) ? c = s.getFitPos(t) : e = \"fade\"), \"zoom\" === e ? (s.isAnimating = !0, c.scaleX = c.width / l.width, c.scaleY = c.height / l.height, a = t.opts.zoomOpacity, \"auto\" == a && (a = Math.abs(t.width / t.height - l.width / l.height) > .1), a && (l.opacity = .1, c.opacity = 1), n.fancybox.setTranslate(t.$content.removeClass(\"fancybox-is-hidden\"), l), p(t.$content), void n.fancybox.animate(t.$content, c, i, function () {\n          s.isAnimating = !1, s.complete();\n        })) : (s.updateSlide(t), e ? (n.fancybox.stop(r), o = \"fancybox-slide--\" + (t.pos >= s.prevPos ? \"next\" : \"previous\") + \" fancybox-animated fancybox-fx-\" + e, r.addClass(o).removeClass(\"fancybox-slide--current\"), t.$content.removeClass(\"fancybox-is-hidden\"), p(r), \"image\" !== t.type && t.$content.hide().show(0), void n.fancybox.animate(r, \"fancybox-slide--current\", i, function () {\n          r.removeClass(o).css({\n            transform: \"\",\n            opacity: \"\"\n          }), t.pos === s.currPos && s.complete();\n        }, !0)) : (t.$content.removeClass(\"fancybox-is-hidden\"), u || !d || \"image\" !== t.type || t.hasError || t.$content.hide().fadeIn(\"fast\"), void (t.pos === s.currPos && s.complete())));\n      },\n      getThumbPos: function getThumbPos(t) {\n        var e,\n            o,\n            i,\n            a,\n            s,\n            r = !1,\n            c = t.$thumb;\n        return !(!c || !g(c[0])) && (e = n.fancybox.getTranslate(c), o = parseFloat(c.css(\"border-top-width\") || 0), i = parseFloat(c.css(\"border-right-width\") || 0), a = parseFloat(c.css(\"border-bottom-width\") || 0), s = parseFloat(c.css(\"border-left-width\") || 0), r = {\n          top: e.top + o,\n          left: e.left + s,\n          width: e.width - i - s,\n          height: e.height - o - a,\n          scaleX: 1,\n          scaleY: 1\n        }, e.width > 0 && e.height > 0 && r);\n      },\n      complete: function complete() {\n        var t,\n            e = this,\n            o = e.current,\n            i = {};\n        !e.isMoved() && o.isLoaded && (o.isComplete || (o.isComplete = !0, o.$slide.siblings().trigger(\"onReset\"), e.preload(\"inline\"), p(o.$slide), o.$slide.addClass(\"fancybox-slide--complete\"), n.each(e.slides, function (t, o) {\n          o.pos >= e.currPos - 1 && o.pos <= e.currPos + 1 ? i[o.pos] = o : o && (n.fancybox.stop(o.$slide), o.$slide.off().remove());\n        }), e.slides = i), e.isAnimating = !1, e.updateCursor(), e.trigger(\"afterShow\"), o.opts.video.autoStart && o.$slide.find(\"video,audio\").filter(\":visible:first\").trigger(\"play\").one(\"ended\", function () {\n          this.webkitExitFullscreen && this.webkitExitFullscreen(), e.next();\n        }), o.opts.autoFocus && \"html\" === o.contentType && (t = o.$content.find(\"input[autofocus]:enabled:visible:first\"), t.length ? t.trigger(\"focus\") : e.focus(null, !0)), o.$slide.scrollTop(0).scrollLeft(0));\n      },\n      preload: function preload(t) {\n        var e,\n            n,\n            o = this;\n        o.group.length < 2 || (n = o.slides[o.currPos + 1], e = o.slides[o.currPos - 1], e && e.type === t && o.loadSlide(e), n && n.type === t && o.loadSlide(n));\n      },\n      focus: function focus(t, o) {\n        var i,\n            a,\n            s = this,\n            r = [\"a[href]\", \"area[href]\", 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])', \"select:not([disabled]):not([aria-hidden])\", \"textarea:not([disabled]):not([aria-hidden])\", \"button:not([disabled]):not([aria-hidden])\", \"iframe\", \"object\", \"embed\", \"video\", \"audio\", \"[contenteditable]\", '[tabindex]:not([tabindex^=\"-\"])'].join(\",\");\n        s.isClosing || (i = !t && s.current && s.current.isComplete ? s.current.$slide.find(\"*:visible\" + (o ? \":not(.fancybox-close-small)\" : \"\")) : s.$refs.container.find(\"*:visible\"), i = i.filter(r).filter(function () {\n          return \"hidden\" !== n(this).css(\"visibility\") && !n(this).hasClass(\"disabled\");\n        }), i.length ? (a = i.index(e.activeElement), t && t.shiftKey ? (a < 0 || 0 == a) && (t.preventDefault(), i.eq(i.length - 1).trigger(\"focus\")) : (a < 0 || a == i.length - 1) && (t && t.preventDefault(), i.eq(0).trigger(\"focus\"))) : s.$refs.container.trigger(\"focus\"));\n      },\n      activate: function activate() {\n        var t = this;\n        n(\".fancybox-container\").each(function () {\n          var e = n(this).data(\"FancyBox\");\n          e && e.id !== t.id && !e.isClosing && (e.trigger(\"onDeactivate\"), e.removeEvents(), e.isVisible = !1);\n        }), t.isVisible = !0, (t.current || t.isIdle) && (t.update(), t.updateControls()), t.trigger(\"onActivate\"), t.addEvents();\n      },\n      close: function close(t, e) {\n        var o,\n            i,\n            a,\n            s,\n            r,\n            c,\n            l,\n            u = this,\n            f = u.current,\n            h = function h() {\n          u.cleanUp(t);\n        };\n\n        return !u.isClosing && (u.isClosing = !0, !1 === u.trigger(\"beforeClose\", t) ? (u.isClosing = !1, d(function () {\n          u.update();\n        }), !1) : (u.removeEvents(), a = f.$content, o = f.opts.animationEffect, i = n.isNumeric(e) ? e : o ? f.opts.animationDuration : 0, f.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated\"), !0 !== t ? n.fancybox.stop(f.$slide) : o = !1, f.$slide.siblings().trigger(\"onReset\").remove(), i && u.$refs.container.removeClass(\"fancybox-is-open\").addClass(\"fancybox-is-closing\").css(\"transition-duration\", i + \"ms\"), u.hideLoading(f), u.hideControls(!0), u.updateCursor(), \"zoom\" !== o || a && i && \"image\" === f.type && !u.isMoved() && !f.hasError && (l = u.getThumbPos(f)) || (o = \"fade\"), \"zoom\" === o ? (n.fancybox.stop(a), s = n.fancybox.getTranslate(a), c = {\n          top: s.top,\n          left: s.left,\n          scaleX: s.width / l.width,\n          scaleY: s.height / l.height,\n          width: l.width,\n          height: l.height\n        }, r = f.opts.zoomOpacity, \"auto\" == r && (r = Math.abs(f.width / f.height - l.width / l.height) > .1), r && (l.opacity = 0), n.fancybox.setTranslate(a, c), p(a), n.fancybox.animate(a, l, i, h), !0) : (o && i ? n.fancybox.animate(f.$slide.addClass(\"fancybox-slide--previous\").removeClass(\"fancybox-slide--current\"), \"fancybox-animated fancybox-fx-\" + o, i, h) : !0 === t ? setTimeout(h, i) : h(), !0)));\n      },\n      cleanUp: function cleanUp(e) {\n        var o,\n            i,\n            a,\n            s = this,\n            r = s.current.opts.$orig;\n        s.current.$slide.trigger(\"onReset\"), s.$refs.container.empty().remove(), s.trigger(\"afterClose\", e), s.current.opts.backFocus && (r && r.length && r.is(\":visible\") || (r = s.$trigger), r && r.length && (i = t.scrollX, a = t.scrollY, r.trigger(\"focus\"), n(\"html, body\").scrollTop(a).scrollLeft(i))), s.current = null, o = n.fancybox.getInstance(), o ? o.activate() : (n(\"body\").removeClass(\"fancybox-active compensate-for-scrollbar\"), n(\"#fancybox-style-noscroll\").remove());\n      },\n      trigger: function trigger(t, e) {\n        var o,\n            i = Array.prototype.slice.call(arguments, 1),\n            a = this,\n            s = e && e.opts ? e : a.current;\n        if (s ? i.unshift(s) : s = a, i.unshift(a), n.isFunction(s.opts[t]) && (o = s.opts[t].apply(s, i)), !1 === o) return o;\n        \"afterClose\" !== t && a.$refs ? a.$refs.container.trigger(t + \".fb\", i) : r.trigger(t + \".fb\", i);\n      },\n      updateControls: function updateControls() {\n        var t = this,\n            o = t.current,\n            i = o.index,\n            a = t.$refs.container,\n            s = t.$refs.caption,\n            r = o.opts.caption;\n        o.$slide.trigger(\"refresh\"), r && r.length ? (t.$caption = s, s.children().eq(0).html(r)) : t.$caption = null, t.hasHiddenControls || t.isIdle || t.showControls(), a.find(\"[data-fancybox-count]\").html(t.group.length), a.find(\"[data-fancybox-index]\").html(i + 1), a.find(\"[data-fancybox-prev]\").prop(\"disabled\", !o.opts.loop && i <= 0), a.find(\"[data-fancybox-next]\").prop(\"disabled\", !o.opts.loop && i >= t.group.length - 1), \"image\" === o.type ? a.find(\"[data-fancybox-zoom]\").show().end().find(\"[data-fancybox-download]\").attr(\"href\", o.opts.image.src || o.src).show() : o.opts.toolbar && a.find(\"[data-fancybox-download],[data-fancybox-zoom]\").hide(), n(e.activeElement).is(\":hidden,[disabled]\") && t.$refs.container.trigger(\"focus\");\n      },\n      hideControls: function hideControls(t) {\n        var e = this,\n            n = [\"infobar\", \"toolbar\", \"nav\"];\n        !t && e.current.opts.preventCaptionOverlap || n.push(\"caption\"), this.$refs.container.removeClass(n.map(function (t) {\n          return \"fancybox-show-\" + t;\n        }).join(\" \")), this.hasHiddenControls = !0;\n      },\n      showControls: function showControls() {\n        var t = this,\n            e = t.current ? t.current.opts : t.opts,\n            n = t.$refs.container;\n        t.hasHiddenControls = !1, t.idleSecondsCounter = 0, n.toggleClass(\"fancybox-show-toolbar\", !(!e.toolbar || !e.buttons)).toggleClass(\"fancybox-show-infobar\", !!(e.infobar && t.group.length > 1)).toggleClass(\"fancybox-show-caption\", !!t.$caption).toggleClass(\"fancybox-show-nav\", !!(e.arrows && t.group.length > 1)).toggleClass(\"fancybox-is-modal\", !!e.modal);\n      },\n      toggleControls: function toggleControls() {\n        this.hasHiddenControls ? this.showControls() : this.hideControls();\n      }\n    }), n.fancybox = {\n      version: \"3.5.6\",\n      defaults: a,\n      getInstance: function getInstance(t) {\n        var e = n('.fancybox-container:not(\".fancybox-is-closing\"):last').data(\"FancyBox\"),\n            o = Array.prototype.slice.call(arguments, 1);\n        return e instanceof b && (\"string\" === n.type(t) ? e[t].apply(e, o) : \"function\" === n.type(t) && t.apply(e, o), e);\n      },\n      open: function open(t, e, n) {\n        return new b(t, e, n);\n      },\n      close: function close(t) {\n        var e = this.getInstance();\n        e && (e.close(), !0 === t && this.close(t));\n      },\n      destroy: function destroy() {\n        this.close(!0), r.add(\"body\").off(\"click.fb-start\", \"**\");\n      },\n      isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),\n      use3d: function () {\n        var n = e.createElement(\"div\");\n        return t.getComputedStyle && t.getComputedStyle(n) && t.getComputedStyle(n).getPropertyValue(\"transform\") && !(e.documentMode && e.documentMode < 11);\n      }(),\n      getTranslate: function getTranslate(t) {\n        var e;\n        return !(!t || !t.length) && (e = t[0].getBoundingClientRect(), {\n          top: e.top || 0,\n          left: e.left || 0,\n          width: e.width,\n          height: e.height,\n          opacity: parseFloat(t.css(\"opacity\"))\n        });\n      },\n      setTranslate: function setTranslate(t, e) {\n        var n = \"\",\n            o = {};\n        if (t && e) return void 0 === e.left && void 0 === e.top || (n = (void 0 === e.left ? t.position().left : e.left) + \"px, \" + (void 0 === e.top ? t.position().top : e.top) + \"px\", n = this.use3d ? \"translate3d(\" + n + \", 0px)\" : \"translate(\" + n + \")\"), void 0 !== e.scaleX && void 0 !== e.scaleY ? n += \" scale(\" + e.scaleX + \", \" + e.scaleY + \")\" : void 0 !== e.scaleX && (n += \" scaleX(\" + e.scaleX + \")\"), n.length && (o.transform = n), void 0 !== e.opacity && (o.opacity = e.opacity), void 0 !== e.width && (o.width = e.width), void 0 !== e.height && (o.height = e.height), t.css(o);\n      },\n      animate: function animate(t, e, o, i, a) {\n        var s,\n            r = this;\n        n.isFunction(o) && (i = o, o = null), r.stop(t), s = r.getTranslate(t), t.on(f, function (c) {\n          (!c || !c.originalEvent || t.is(c.originalEvent.target) && \"z-index\" != c.originalEvent.propertyName) && (r.stop(t), n.isNumeric(o) && t.css(\"transition-duration\", \"\"), n.isPlainObject(e) ? void 0 !== e.scaleX && void 0 !== e.scaleY && r.setTranslate(t, {\n            top: e.top,\n            left: e.left,\n            width: s.width * e.scaleX,\n            height: s.height * e.scaleY,\n            scaleX: 1,\n            scaleY: 1\n          }) : !0 !== a && t.removeClass(e), n.isFunction(i) && i(c));\n        }), n.isNumeric(o) && t.css(\"transition-duration\", o + \"ms\"), n.isPlainObject(e) ? (void 0 !== e.scaleX && void 0 !== e.scaleY && (delete e.width, delete e.height, t.parent().hasClass(\"fancybox-slide--image\") && t.parent().addClass(\"fancybox-is-scaling\")), n.fancybox.setTranslate(t, e)) : t.addClass(e), t.data(\"timer\", setTimeout(function () {\n          t.trigger(f);\n        }, o + 33));\n      },\n      stop: function stop(t, e) {\n        t && t.length && (clearTimeout(t.data(\"timer\")), e && t.trigger(f), t.off(f).css(\"transition-duration\", \"\"), t.parent().removeClass(\"fancybox-is-scaling\"));\n      }\n    }, n.fn.fancybox = function (t) {\n      var e;\n      return t = t || {}, e = t.selector || !1, e ? n(\"body\").off(\"click.fb-start\", e).on(\"click.fb-start\", e, {\n        options: t\n      }, i) : this.off(\"click.fb-start\").on(\"click.fb-start\", {\n        items: this,\n        options: t\n      }, i), this;\n    }, r.on(\"click.fb-start\", \"[data-fancybox]\", i), r.on(\"click.fb-start\", \"[data-fancybox-trigger]\", function (t) {\n      n('[data-fancybox=\"' + n(this).attr(\"data-fancybox-trigger\") + '\"]').eq(n(this).attr(\"data-fancybox-index\") || 0).trigger(\"click.fb-start\", {\n        $trigger: n(this)\n      });\n    }), function () {\n      var t = null;\n      r.on(\"mousedown mouseup focus blur\", \".fancybox-button\", function (e) {\n        switch (e.type) {\n          case \"mousedown\":\n            t = n(this);\n            break;\n\n          case \"mouseup\":\n            t = null;\n            break;\n\n          case \"focusin\":\n            n(\".fancybox-button\").removeClass(\"fancybox-focus\"), n(this).is(t) || n(this).is(\"[disabled]\") || n(this).addClass(\"fancybox-focus\");\n            break;\n\n          case \"focusout\":\n            n(\".fancybox-button\").removeClass(\"fancybox-focus\");\n        }\n      });\n    }();\n  }\n}(window, document, jQuery), function (t) {\n  \"use strict\";\n\n  var e = {\n    youtube: {\n      matcher: /(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(watch\\?(.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(.*)|[\\w-]{11}|\\?listType=(.*)&list=(.*))(.*)/i,\n      params: {\n        autoplay: 1,\n        autohide: 1,\n        fs: 1,\n        rel: 0,\n        hd: 1,\n        wmode: \"transparent\",\n        enablejsapi: 1,\n        html5: 1\n      },\n      paramPlace: 8,\n      type: \"iframe\",\n      url: \"https://www.youtube-nocookie.com/embed/$4\",\n      thumb: \"https://img.youtube.com/vi/$4/hqdefault.jpg\"\n    },\n    vimeo: {\n      matcher: /^.+vimeo.com\\/(.*\\/)?([\\d]+)(.*)?/,\n      params: {\n        autoplay: 1,\n        hd: 1,\n        show_title: 1,\n        show_byline: 1,\n        show_portrait: 0,\n        fullscreen: 1\n      },\n      paramPlace: 3,\n      type: \"iframe\",\n      url: \"//player.vimeo.com/video/$2\"\n    },\n    instagram: {\n      matcher: /(instagr\\.am|instagram\\.com)\\/p\\/([a-zA-Z0-9_\\-]+)\\/?/i,\n      type: \"image\",\n      url: \"//$1/p/$2/media/?size=l\"\n    },\n    gmap_place: {\n      matcher: /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(((maps\\/(place\\/(.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(\\?ll=))(.*)?/i,\n      type: \"iframe\",\n      url: function url(t) {\n        return \"//maps.google.\" + t[2] + \"/?ll=\" + (t[9] ? t[9] + \"&z=\" + Math.floor(t[10]) + (t[12] ? t[12].replace(/^\\//, \"&\") : \"\") : t[12] + \"\").replace(/\\?/, \"&\") + \"&output=\" + (t[12] && t[12].indexOf(\"layer=c\") > 0 ? \"svembed\" : \"embed\");\n      }\n    },\n    gmap_search: {\n      matcher: /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(maps\\/search\\/)(.*)/i,\n      type: \"iframe\",\n      url: function url(t) {\n        return \"//maps.google.\" + t[2] + \"/maps?q=\" + t[5].replace(\"query=\", \"q=\").replace(\"api=1\", \"\") + \"&output=embed\";\n      }\n    }\n  },\n      n = function n(e, _n2, o) {\n    if (e) return o = o || \"\", \"object\" === t.type(o) && (o = t.param(o, !0)), t.each(_n2, function (t, n) {\n      e = e.replace(\"$\" + t, n || \"\");\n    }), o.length && (e += (e.indexOf(\"?\") > 0 ? \"&\" : \"?\") + o), e;\n  };\n\n  t(document).on(\"objectNeedsType.fb\", function (o, i, a) {\n    var s,\n        r,\n        c,\n        l,\n        d,\n        u,\n        f,\n        p = a.src || \"\",\n        h = !1;\n    s = t.extend(!0, {}, e, a.opts.media), t.each(s, function (e, o) {\n      if (c = p.match(o.matcher)) {\n        if (h = o.type, f = e, u = {}, o.paramPlace && c[o.paramPlace]) {\n          d = c[o.paramPlace], \"?\" == d[0] && (d = d.substring(1)), d = d.split(\"&\");\n\n          for (var i = 0; i < d.length; ++i) {\n            var s = d[i].split(\"=\", 2);\n            2 == s.length && (u[s[0]] = decodeURIComponent(s[1].replace(/\\+/g, \" \")));\n          }\n        }\n\n        return l = t.extend(!0, {}, o.params, a.opts[e], u), p = \"function\" === t.type(o.url) ? o.url.call(this, c, l, a) : n(o.url, c, l), r = \"function\" === t.type(o.thumb) ? o.thumb.call(this, c, l, a) : n(o.thumb, c), \"youtube\" === e ? p = p.replace(/&t=((\\d+)m)?(\\d+)s/, function (t, e, n, o) {\n          return \"&start=\" + ((n ? 60 * parseInt(n, 10) : 0) + parseInt(o, 10));\n        }) : \"vimeo\" === e && (p = p.replace(\"&%23\", \"#\")), !1;\n      }\n    }), h ? (a.opts.thumb || a.opts.$thumb && a.opts.$thumb.length || (a.opts.thumb = r), \"iframe\" === h && (a.opts = t.extend(!0, a.opts, {\n      iframe: {\n        preload: !1,\n        attr: {\n          scrolling: \"no\"\n        }\n      }\n    })), t.extend(a, {\n      type: h,\n      src: p,\n      origSrc: a.src,\n      contentSource: f,\n      contentType: \"image\" === h ? \"image\" : \"gmap_place\" == f || \"gmap_search\" == f ? \"map\" : \"video\"\n    })) : p && (a.type = a.opts.defaultType);\n  });\n  var o = {\n    youtube: {\n      src: \"https://www.youtube.com/iframe_api\",\n      class: \"YT\",\n      loading: !1,\n      loaded: !1\n    },\n    vimeo: {\n      src: \"https://player.vimeo.com/api/player.js\",\n      class: \"Vimeo\",\n      loading: !1,\n      loaded: !1\n    },\n    load: function load(t) {\n      var e,\n          n = this;\n      if (this[t].loaded) return void setTimeout(function () {\n        n.done(t);\n      });\n      this[t].loading || (this[t].loading = !0, e = document.createElement(\"script\"), e.type = \"text/javascript\", e.src = this[t].src, \"youtube\" === t ? window.onYouTubeIframeAPIReady = function () {\n        n[t].loaded = !0, n.done(t);\n      } : e.onload = function () {\n        n[t].loaded = !0, n.done(t);\n      }, document.body.appendChild(e));\n    },\n    done: function done(e) {\n      var n, o, i;\n      \"youtube\" === e && delete window.onYouTubeIframeAPIReady, (n = t.fancybox.getInstance()) && (o = n.current.$content.find(\"iframe\"), \"youtube\" === e && void 0 !== YT && YT ? i = new YT.Player(o.attr(\"id\"), {\n        events: {\n          onStateChange: function onStateChange(t) {\n            0 == t.data && n.next();\n          }\n        }\n      }) : \"vimeo\" === e && void 0 !== Vimeo && Vimeo && (i = new Vimeo.Player(o), i.on(\"ended\", function () {\n        n.next();\n      })));\n    }\n  };\n  t(document).on({\n    \"afterShow.fb\": function afterShowFb(t, e, n) {\n      e.group.length > 1 && (\"youtube\" === n.contentSource || \"vimeo\" === n.contentSource) && o.load(n.contentSource);\n    }\n  });\n}(jQuery), function (t, e, n) {\n  \"use strict\";\n\n  var o = function () {\n    return t.requestAnimationFrame || t.webkitRequestAnimationFrame || t.mozRequestAnimationFrame || t.oRequestAnimationFrame || function (e) {\n      return t.setTimeout(e, 1e3 / 60);\n    };\n  }(),\n      i = function () {\n    return t.cancelAnimationFrame || t.webkitCancelAnimationFrame || t.mozCancelAnimationFrame || t.oCancelAnimationFrame || function (e) {\n      t.clearTimeout(e);\n    };\n  }(),\n      a = function a(e) {\n    var n = [];\n    e = e.originalEvent || e || t.e, e = e.touches && e.touches.length ? e.touches : e.changedTouches && e.changedTouches.length ? e.changedTouches : [e];\n\n    for (var o in e) {\n      e[o].pageX ? n.push({\n        x: e[o].pageX,\n        y: e[o].pageY\n      }) : e[o].clientX && n.push({\n        x: e[o].clientX,\n        y: e[o].clientY\n      });\n    }\n\n    return n;\n  },\n      s = function s(t, e, n) {\n    return e && t ? \"x\" === n ? t.x - e.x : \"y\" === n ? t.y - e.y : Math.sqrt(Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2)) : 0;\n  },\n      r = function r(t) {\n    if (t.is('a,area,button,[role=\"button\"],input,label,select,summary,textarea,video,audio,iframe') || n.isFunction(t.get(0).onclick) || t.data(\"selectable\")) return !0;\n\n    for (var e = 0, o = t[0].attributes, i = o.length; e < i; e++) {\n      if (\"data-fancybox-\" === o[e].nodeName.substr(0, 14)) return !0;\n    }\n\n    return !1;\n  },\n      c = function c(e) {\n    var n = t.getComputedStyle(e)[\"overflow-y\"],\n        o = t.getComputedStyle(e)[\"overflow-x\"],\n        i = (\"scroll\" === n || \"auto\" === n) && e.scrollHeight > e.clientHeight,\n        a = (\"scroll\" === o || \"auto\" === o) && e.scrollWidth > e.clientWidth;\n    return i || a;\n  },\n      l = function l(t) {\n    for (var e = !1;;) {\n      if (e = c(t.get(0))) break;\n      if (t = t.parent(), !t.length || t.hasClass(\"fancybox-stage\") || t.is(\"body\")) break;\n    }\n\n    return e;\n  },\n      d = function d(t) {\n    var e = this;\n    e.instance = t, e.$bg = t.$refs.bg, e.$stage = t.$refs.stage, e.$container = t.$refs.container, e.destroy(), e.$container.on(\"touchstart.fb.touch mousedown.fb.touch\", n.proxy(e, \"ontouchstart\"));\n  };\n\n  d.prototype.destroy = function () {\n    var t = this;\n    t.$container.off(\".fb.touch\"), n(e).off(\".fb.touch\"), t.requestId && (i(t.requestId), t.requestId = null), t.tapped && (clearTimeout(t.tapped), t.tapped = null);\n  }, d.prototype.ontouchstart = function (o) {\n    var i = this,\n        c = n(o.target),\n        d = i.instance,\n        u = d.current,\n        f = u.$slide,\n        p = u.$content,\n        h = \"touchstart\" == o.type;\n\n    if (h && i.$container.off(\"mousedown.fb.touch\"), (!o.originalEvent || 2 != o.originalEvent.button) && f.length && c.length && !r(c) && !r(c.parent()) && (c.is(\"img\") || !(o.originalEvent.clientX > c[0].clientWidth + c.offset().left))) {\n      if (!u || d.isAnimating || u.$slide.hasClass(\"fancybox-animated\")) return o.stopPropagation(), void o.preventDefault();\n      i.realPoints = i.startPoints = a(o), i.startPoints.length && (u.touch && o.stopPropagation(), i.startEvent = o, i.canTap = !0, i.$target = c, i.$content = p, i.opts = u.opts.touch, i.isPanning = !1, i.isSwiping = !1, i.isZooming = !1, i.isScrolling = !1, i.canPan = d.canPan(), i.startTime = new Date().getTime(), i.distanceX = i.distanceY = i.distance = 0, i.canvasWidth = Math.round(f[0].clientWidth), i.canvasHeight = Math.round(f[0].clientHeight), i.contentLastPos = null, i.contentStartPos = n.fancybox.getTranslate(i.$content) || {\n        top: 0,\n        left: 0\n      }, i.sliderStartPos = n.fancybox.getTranslate(f), i.stagePos = n.fancybox.getTranslate(d.$refs.stage), i.sliderStartPos.top -= i.stagePos.top, i.sliderStartPos.left -= i.stagePos.left, i.contentStartPos.top -= i.stagePos.top, i.contentStartPos.left -= i.stagePos.left, n(e).off(\".fb.touch\").on(h ? \"touchend.fb.touch touchcancel.fb.touch\" : \"mouseup.fb.touch mouseleave.fb.touch\", n.proxy(i, \"ontouchend\")).on(h ? \"touchmove.fb.touch\" : \"mousemove.fb.touch\", n.proxy(i, \"ontouchmove\")), n.fancybox.isMobile && e.addEventListener(\"scroll\", i.onscroll, !0), ((i.opts || i.canPan) && (c.is(i.$stage) || i.$stage.find(c).length) || (c.is(\".fancybox-image\") && o.preventDefault(), n.fancybox.isMobile && c.parents(\".fancybox-caption\").length)) && (i.isScrollable = l(c) || l(c.parent()), n.fancybox.isMobile && i.isScrollable || o.preventDefault(), (1 === i.startPoints.length || u.hasError) && (i.canPan ? (n.fancybox.stop(i.$content), i.isPanning = !0) : i.isSwiping = !0, i.$container.addClass(\"fancybox-is-grabbing\")), 2 === i.startPoints.length && \"image\" === u.type && (u.isLoaded || u.$ghost) && (i.canTap = !1, i.isSwiping = !1, i.isPanning = !1, i.isZooming = !0, n.fancybox.stop(i.$content), i.centerPointStartX = .5 * (i.startPoints[0].x + i.startPoints[1].x) - n(t).scrollLeft(), i.centerPointStartY = .5 * (i.startPoints[0].y + i.startPoints[1].y) - n(t).scrollTop(), i.percentageOfImageAtPinchPointX = (i.centerPointStartX - i.contentStartPos.left) / i.contentStartPos.width, i.percentageOfImageAtPinchPointY = (i.centerPointStartY - i.contentStartPos.top) / i.contentStartPos.height, i.startDistanceBetweenFingers = s(i.startPoints[0], i.startPoints[1]))));\n    }\n  }, d.prototype.onscroll = function (t) {\n    var n = this;\n    n.isScrolling = !0, e.removeEventListener(\"scroll\", n.onscroll, !0);\n  }, d.prototype.ontouchmove = function (t) {\n    var e = this;\n    return void 0 !== t.originalEvent.buttons && 0 === t.originalEvent.buttons ? void e.ontouchend(t) : e.isScrolling ? void (e.canTap = !1) : (e.newPoints = a(t), void ((e.opts || e.canPan) && e.newPoints.length && e.newPoints.length && (e.isSwiping && !0 === e.isSwiping || t.preventDefault(), e.distanceX = s(e.newPoints[0], e.startPoints[0], \"x\"), e.distanceY = s(e.newPoints[0], e.startPoints[0], \"y\"), e.distance = s(e.newPoints[0], e.startPoints[0]), e.distance > 0 && (e.isSwiping ? e.onSwipe(t) : e.isPanning ? e.onPan() : e.isZooming && e.onZoom()))));\n  }, d.prototype.onSwipe = function (e) {\n    var a,\n        s = this,\n        r = s.instance,\n        c = s.isSwiping,\n        l = s.sliderStartPos.left || 0;\n    if (!0 !== c) \"x\" == c && (s.distanceX > 0 && (s.instance.group.length < 2 || 0 === s.instance.current.index && !s.instance.current.opts.loop) ? l += Math.pow(s.distanceX, .8) : s.distanceX < 0 && (s.instance.group.length < 2 || s.instance.current.index === s.instance.group.length - 1 && !s.instance.current.opts.loop) ? l -= Math.pow(-s.distanceX, .8) : l += s.distanceX), s.sliderLastPos = {\n      top: \"x\" == c ? 0 : s.sliderStartPos.top + s.distanceY,\n      left: l\n    }, s.requestId && (i(s.requestId), s.requestId = null), s.requestId = o(function () {\n      s.sliderLastPos && (n.each(s.instance.slides, function (t, e) {\n        var o = e.pos - s.instance.currPos;\n        n.fancybox.setTranslate(e.$slide, {\n          top: s.sliderLastPos.top,\n          left: s.sliderLastPos.left + o * s.canvasWidth + o * e.opts.gutter\n        });\n      }), s.$container.addClass(\"fancybox-is-sliding\"));\n    });else if (Math.abs(s.distance) > 10) {\n      if (s.canTap = !1, r.group.length < 2 && s.opts.vertical ? s.isSwiping = \"y\" : r.isDragging || !1 === s.opts.vertical || \"auto\" === s.opts.vertical && n(t).width() > 800 ? s.isSwiping = \"x\" : (a = Math.abs(180 * Math.atan2(s.distanceY, s.distanceX) / Math.PI), s.isSwiping = a > 45 && a < 135 ? \"y\" : \"x\"), \"y\" === s.isSwiping && n.fancybox.isMobile && s.isScrollable) return void (s.isScrolling = !0);\n      r.isDragging = s.isSwiping, s.startPoints = s.newPoints, n.each(r.slides, function (t, e) {\n        var o, i;\n        n.fancybox.stop(e.$slide), o = n.fancybox.getTranslate(e.$slide), i = n.fancybox.getTranslate(r.$refs.stage), e.$slide.css({\n          transform: \"\",\n          opacity: \"\",\n          \"transition-duration\": \"\"\n        }).removeClass(\"fancybox-animated\").removeClass(function (t, e) {\n          return (e.match(/(^|\\s)fancybox-fx-\\S+/g) || []).join(\" \");\n        }), e.pos === r.current.pos && (s.sliderStartPos.top = o.top - i.top, s.sliderStartPos.left = o.left - i.left), n.fancybox.setTranslate(e.$slide, {\n          top: o.top - i.top,\n          left: o.left - i.left\n        });\n      }), r.SlideShow && r.SlideShow.isActive && r.SlideShow.stop();\n    }\n  }, d.prototype.onPan = function () {\n    var t = this;\n    if (s(t.newPoints[0], t.realPoints[0]) < (n.fancybox.isMobile ? 10 : 5)) return void (t.startPoints = t.newPoints);\n    t.canTap = !1, t.contentLastPos = t.limitMovement(), t.requestId && i(t.requestId), t.requestId = o(function () {\n      n.fancybox.setTranslate(t.$content, t.contentLastPos);\n    });\n  }, d.prototype.limitMovement = function () {\n    var t,\n        e,\n        n,\n        o,\n        i,\n        a,\n        s = this,\n        r = s.canvasWidth,\n        c = s.canvasHeight,\n        l = s.distanceX,\n        d = s.distanceY,\n        u = s.contentStartPos,\n        f = u.left,\n        p = u.top,\n        h = u.width,\n        g = u.height;\n    return i = h > r ? f + l : f, a = p + d, t = Math.max(0, .5 * r - .5 * h), e = Math.max(0, .5 * c - .5 * g), n = Math.min(r - h, .5 * r - .5 * h), o = Math.min(c - g, .5 * c - .5 * g), l > 0 && i > t && (i = t - 1 + Math.pow(-t + f + l, .8) || 0), l < 0 && i < n && (i = n + 1 - Math.pow(n - f - l, .8) || 0), d > 0 && a > e && (a = e - 1 + Math.pow(-e + p + d, .8) || 0), d < 0 && a < o && (a = o + 1 - Math.pow(o - p - d, .8) || 0), {\n      top: a,\n      left: i\n    };\n  }, d.prototype.limitPosition = function (t, e, n, o) {\n    var i = this,\n        a = i.canvasWidth,\n        s = i.canvasHeight;\n    return n > a ? (t = t > 0 ? 0 : t, t = t < a - n ? a - n : t) : t = Math.max(0, a / 2 - n / 2), o > s ? (e = e > 0 ? 0 : e, e = e < s - o ? s - o : e) : e = Math.max(0, s / 2 - o / 2), {\n      top: e,\n      left: t\n    };\n  }, d.prototype.onZoom = function () {\n    var e = this,\n        a = e.contentStartPos,\n        r = a.width,\n        c = a.height,\n        l = a.left,\n        d = a.top,\n        u = s(e.newPoints[0], e.newPoints[1]),\n        f = u / e.startDistanceBetweenFingers,\n        p = Math.floor(r * f),\n        h = Math.floor(c * f),\n        g = (r - p) * e.percentageOfImageAtPinchPointX,\n        b = (c - h) * e.percentageOfImageAtPinchPointY,\n        m = (e.newPoints[0].x + e.newPoints[1].x) / 2 - n(t).scrollLeft(),\n        v = (e.newPoints[0].y + e.newPoints[1].y) / 2 - n(t).scrollTop(),\n        y = m - e.centerPointStartX,\n        x = v - e.centerPointStartY,\n        w = l + (g + y),\n        $ = d + (b + x),\n        S = {\n      top: $,\n      left: w,\n      scaleX: f,\n      scaleY: f\n    };\n    e.canTap = !1, e.newWidth = p, e.newHeight = h, e.contentLastPos = S, e.requestId && i(e.requestId), e.requestId = o(function () {\n      n.fancybox.setTranslate(e.$content, e.contentLastPos);\n    });\n  }, d.prototype.ontouchend = function (t) {\n    var o = this,\n        s = o.isSwiping,\n        r = o.isPanning,\n        c = o.isZooming,\n        l = o.isScrolling;\n    if (o.endPoints = a(t), o.dMs = Math.max(new Date().getTime() - o.startTime, 1), o.$container.removeClass(\"fancybox-is-grabbing\"), n(e).off(\".fb.touch\"), e.removeEventListener(\"scroll\", o.onscroll, !0), o.requestId && (i(o.requestId), o.requestId = null), o.isSwiping = !1, o.isPanning = !1, o.isZooming = !1, o.isScrolling = !1, o.instance.isDragging = !1, o.canTap) return o.onTap(t);\n    o.speed = 100, o.velocityX = o.distanceX / o.dMs * .5, o.velocityY = o.distanceY / o.dMs * .5, r ? o.endPanning() : c ? o.endZooming() : o.endSwiping(s, l);\n  }, d.prototype.endSwiping = function (t, e) {\n    var o = this,\n        i = !1,\n        a = o.instance.group.length,\n        s = Math.abs(o.distanceX),\n        r = \"x\" == t && a > 1 && (o.dMs > 130 && s > 10 || s > 50);\n    o.sliderLastPos = null, \"y\" == t && !e && Math.abs(o.distanceY) > 50 ? (n.fancybox.animate(o.instance.current.$slide, {\n      top: o.sliderStartPos.top + o.distanceY + 150 * o.velocityY,\n      opacity: 0\n    }, 200), i = o.instance.close(!0, 250)) : r && o.distanceX > 0 ? i = o.instance.previous(300) : r && o.distanceX < 0 && (i = o.instance.next(300)), !1 !== i || \"x\" != t && \"y\" != t || o.instance.centerSlide(200), o.$container.removeClass(\"fancybox-is-sliding\");\n  }, d.prototype.endPanning = function () {\n    var t,\n        e,\n        o,\n        i = this;\n    i.contentLastPos && (!1 === i.opts.momentum || i.dMs > 350 ? (t = i.contentLastPos.left, e = i.contentLastPos.top) : (t = i.contentLastPos.left + 500 * i.velocityX, e = i.contentLastPos.top + 500 * i.velocityY), o = i.limitPosition(t, e, i.contentStartPos.width, i.contentStartPos.height), o.width = i.contentStartPos.width, o.height = i.contentStartPos.height, n.fancybox.animate(i.$content, o, 366));\n  }, d.prototype.endZooming = function () {\n    var t,\n        e,\n        o,\n        i,\n        a = this,\n        s = a.instance.current,\n        r = a.newWidth,\n        c = a.newHeight;\n    a.contentLastPos && (t = a.contentLastPos.left, e = a.contentLastPos.top, i = {\n      top: e,\n      left: t,\n      width: r,\n      height: c,\n      scaleX: 1,\n      scaleY: 1\n    }, n.fancybox.setTranslate(a.$content, i), r < a.canvasWidth && c < a.canvasHeight ? a.instance.scaleToFit(150) : r > s.width || c > s.height ? a.instance.scaleToActual(a.centerPointStartX, a.centerPointStartY, 150) : (o = a.limitPosition(t, e, r, c), n.fancybox.animate(a.$content, o, 150)));\n  }, d.prototype.onTap = function (e) {\n    var o,\n        i = this,\n        s = n(e.target),\n        r = i.instance,\n        c = r.current,\n        l = e && a(e) || i.startPoints,\n        d = l[0] ? l[0].x - n(t).scrollLeft() - i.stagePos.left : 0,\n        u = l[0] ? l[0].y - n(t).scrollTop() - i.stagePos.top : 0,\n        f = function f(t) {\n      var o = c.opts[t];\n      if (n.isFunction(o) && (o = o.apply(r, [c, e])), o) switch (o) {\n        case \"close\":\n          r.close(i.startEvent);\n          break;\n\n        case \"toggleControls\":\n          r.toggleControls();\n          break;\n\n        case \"next\":\n          r.next();\n          break;\n\n        case \"nextOrClose\":\n          r.group.length > 1 ? r.next() : r.close(i.startEvent);\n          break;\n\n        case \"zoom\":\n          \"image\" == c.type && (c.isLoaded || c.$ghost) && (r.canPan() ? r.scaleToFit() : r.isScaledDown() ? r.scaleToActual(d, u) : r.group.length < 2 && r.close(i.startEvent));\n      }\n    };\n\n    if ((!e.originalEvent || 2 != e.originalEvent.button) && (s.is(\"img\") || !(d > s[0].clientWidth + s.offset().left))) {\n      if (s.is(\".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container\")) o = \"Outside\";else if (s.is(\".fancybox-slide\")) o = \"Slide\";else {\n        if (!r.current.$content || !r.current.$content.find(s).addBack().filter(s).length) return;\n        o = \"Content\";\n      }\n\n      if (i.tapped) {\n        if (clearTimeout(i.tapped), i.tapped = null, Math.abs(d - i.tapX) > 50 || Math.abs(u - i.tapY) > 50) return this;\n        f(\"dblclick\" + o);\n      } else i.tapX = d, i.tapY = u, c.opts[\"dblclick\" + o] && c.opts[\"dblclick\" + o] !== c.opts[\"click\" + o] ? i.tapped = setTimeout(function () {\n        i.tapped = null, r.isAnimating || f(\"click\" + o);\n      }, 500) : f(\"click\" + o);\n\n      return this;\n    }\n  }, n(e).on(\"onActivate.fb\", function (t, e) {\n    e && !e.Guestures && (e.Guestures = new d(e));\n  }).on(\"beforeClose.fb\", function (t, e) {\n    e && e.Guestures && e.Guestures.destroy();\n  });\n}(window, document, jQuery), function (t, e) {\n  \"use strict\";\n\n  e.extend(!0, e.fancybox.defaults, {\n    btnTpl: {\n      slideShow: '<button data-fancybox-play class=\"fancybox-button fancybox-button--play\" title=\"{{PLAY_START}}\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M6.5 5.4v13.2l11-6.6z\"/></svg><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M8.33 5.75h2.2v12.5h-2.2V5.75zm5.15 0h2.2v12.5h-2.2V5.75z\"/></svg></button>'\n    },\n    slideShow: {\n      autoStart: !1,\n      speed: 3e3,\n      progress: !0\n    }\n  });\n\n  var n = function n(t) {\n    this.instance = t, this.init();\n  };\n\n  e.extend(n.prototype, {\n    timer: null,\n    isActive: !1,\n    $button: null,\n    init: function init() {\n      var t = this,\n          n = t.instance,\n          o = n.group[n.currIndex].opts.slideShow;\n      t.$button = n.$refs.toolbar.find(\"[data-fancybox-play]\").on(\"click\", function () {\n        t.toggle();\n      }), n.group.length < 2 || !o ? t.$button.hide() : o.progress && (t.$progress = e('<div class=\"fancybox-progress\"></div>').appendTo(n.$refs.inner));\n    },\n    set: function set(t) {\n      var n = this,\n          o = n.instance,\n          i = o.current;\n      i && (!0 === t || i.opts.loop || o.currIndex < o.group.length - 1) ? n.isActive && \"video\" !== i.contentType && (n.$progress && e.fancybox.animate(n.$progress.show(), {\n        scaleX: 1\n      }, i.opts.slideShow.speed), n.timer = setTimeout(function () {\n        o.current.opts.loop || o.current.index != o.group.length - 1 ? o.next() : o.jumpTo(0);\n      }, i.opts.slideShow.speed)) : (n.stop(), o.idleSecondsCounter = 0, o.showControls());\n    },\n    clear: function clear() {\n      var t = this;\n      clearTimeout(t.timer), t.timer = null, t.$progress && t.$progress.removeAttr(\"style\").hide();\n    },\n    start: function start() {\n      var t = this,\n          e = t.instance.current;\n      e && (t.$button.attr(\"title\", (e.opts.i18n[e.opts.lang] || e.opts.i18n.en).PLAY_STOP).removeClass(\"fancybox-button--play\").addClass(\"fancybox-button--pause\"), t.isActive = !0, e.isComplete && t.set(!0), t.instance.trigger(\"onSlideShowChange\", !0));\n    },\n    stop: function stop() {\n      var t = this,\n          e = t.instance.current;\n      t.clear(), t.$button.attr(\"title\", (e.opts.i18n[e.opts.lang] || e.opts.i18n.en).PLAY_START).removeClass(\"fancybox-button--pause\").addClass(\"fancybox-button--play\"), t.isActive = !1, t.instance.trigger(\"onSlideShowChange\", !1), t.$progress && t.$progress.removeAttr(\"style\").hide();\n    },\n    toggle: function toggle() {\n      var t = this;\n      t.isActive ? t.stop() : t.start();\n    }\n  }), e(t).on({\n    \"onInit.fb\": function onInitFb(t, e) {\n      e && !e.SlideShow && (e.SlideShow = new n(e));\n    },\n    \"beforeShow.fb\": function beforeShowFb(t, e, n, o) {\n      var i = e && e.SlideShow;\n      o ? i && n.opts.slideShow.autoStart && i.start() : i && i.isActive && i.clear();\n    },\n    \"afterShow.fb\": function afterShowFb(t, e, n) {\n      var o = e && e.SlideShow;\n      o && o.isActive && o.set();\n    },\n    \"afterKeydown.fb\": function afterKeydownFb(n, o, i, a, s) {\n      var r = o && o.SlideShow;\n      !r || !i.opts.slideShow || 80 !== s && 32 !== s || e(t.activeElement).is(\"button,a,input\") || (a.preventDefault(), r.toggle());\n    },\n    \"beforeClose.fb onDeactivate.fb\": function beforeCloseFbOnDeactivateFb(t, e) {\n      var n = e && e.SlideShow;\n      n && n.stop();\n    }\n  }), e(t).on(\"visibilitychange\", function () {\n    var n = e.fancybox.getInstance(),\n        o = n && n.SlideShow;\n    o && o.isActive && (t.hidden ? o.clear() : o.set());\n  });\n}(document, jQuery), function (t, e) {\n  \"use strict\";\n\n  var n = function () {\n    for (var e = [[\"requestFullscreen\", \"exitFullscreen\", \"fullscreenElement\", \"fullscreenEnabled\", \"fullscreenchange\", \"fullscreenerror\"], [\"webkitRequestFullscreen\", \"webkitExitFullscreen\", \"webkitFullscreenElement\", \"webkitFullscreenEnabled\", \"webkitfullscreenchange\", \"webkitfullscreenerror\"], [\"webkitRequestFullScreen\", \"webkitCancelFullScreen\", \"webkitCurrentFullScreenElement\", \"webkitCancelFullScreen\", \"webkitfullscreenchange\", \"webkitfullscreenerror\"], [\"mozRequestFullScreen\", \"mozCancelFullScreen\", \"mozFullScreenElement\", \"mozFullScreenEnabled\", \"mozfullscreenchange\", \"mozfullscreenerror\"], [\"msRequestFullscreen\", \"msExitFullscreen\", \"msFullscreenElement\", \"msFullscreenEnabled\", \"MSFullscreenChange\", \"MSFullscreenError\"]], n = {}, o = 0; o < e.length; o++) {\n      var i = e[o];\n\n      if (i && i[1] in t) {\n        for (var a = 0; a < i.length; a++) {\n          n[e[0][a]] = i[a];\n        }\n\n        return n;\n      }\n    }\n\n    return !1;\n  }();\n\n  if (n) {\n    var o = {\n      request: function request(e) {\n        e = e || t.documentElement, e[n.requestFullscreen](e.ALLOW_KEYBOARD_INPUT);\n      },\n      exit: function exit() {\n        t[n.exitFullscreen]();\n      },\n      toggle: function toggle(e) {\n        e = e || t.documentElement, this.isFullscreen() ? this.exit() : this.request(e);\n      },\n      isFullscreen: function isFullscreen() {\n        return Boolean(t[n.fullscreenElement]);\n      },\n      enabled: function enabled() {\n        return Boolean(t[n.fullscreenEnabled]);\n      }\n    };\n    e.extend(!0, e.fancybox.defaults, {\n      btnTpl: {\n        fullScreen: '<button data-fancybox-fullscreen class=\"fancybox-button fancybox-button--fsenter\" title=\"{{FULL_SCREEN}}\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"/></svg><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M5 16h3v3h2v-5H5zm3-8H5v2h5V5H8zm6 11h2v-3h3v-2h-5zm2-11V5h-2v5h5V8z\"/></svg></button>'\n      },\n      fullScreen: {\n        autoStart: !1\n      }\n    }), e(t).on(n.fullscreenchange, function () {\n      var t = o.isFullscreen(),\n          n = e.fancybox.getInstance();\n      n && (n.current && \"image\" === n.current.type && n.isAnimating && (n.isAnimating = !1, n.update(!0, !0, 0), n.isComplete || n.complete()), n.trigger(\"onFullscreenChange\", t), n.$refs.container.toggleClass(\"fancybox-is-fullscreen\", t), n.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").toggleClass(\"fancybox-button--fsenter\", !t).toggleClass(\"fancybox-button--fsexit\", t));\n    });\n  }\n\n  e(t).on({\n    \"onInit.fb\": function onInitFb(t, e) {\n      var i;\n      if (!n) return void e.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").remove();\n      e && e.group[e.currIndex].opts.fullScreen ? (i = e.$refs.container, i.on(\"click.fb-fullscreen\", \"[data-fancybox-fullscreen]\", function (t) {\n        t.stopPropagation(), t.preventDefault(), o.toggle();\n      }), e.opts.fullScreen && !0 === e.opts.fullScreen.autoStart && o.request(), e.FullScreen = o) : e && e.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").hide();\n    },\n    \"afterKeydown.fb\": function afterKeydownFb(t, e, n, o, i) {\n      e && e.FullScreen && 70 === i && (o.preventDefault(), e.FullScreen.toggle());\n    },\n    \"beforeClose.fb\": function beforeCloseFb(t, e) {\n      e && e.FullScreen && e.$refs.container.hasClass(\"fancybox-is-fullscreen\") && o.exit();\n    }\n  });\n}(document, jQuery), function (t, e) {\n  \"use strict\";\n\n  var n = \"fancybox-thumbs\";\n  e.fancybox.defaults = e.extend(!0, {\n    btnTpl: {\n      thumbs: '<button data-fancybox-thumbs class=\"fancybox-button fancybox-button--thumbs\" title=\"{{THUMBS}}\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M14.59 14.59h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76H5.65V5.65z\"/></svg></button>'\n    },\n    thumbs: {\n      autoStart: !1,\n      hideOnClose: !0,\n      parentEl: \".fancybox-container\",\n      axis: \"y\"\n    }\n  }, e.fancybox.defaults);\n\n  var o = function o(t) {\n    this.init(t);\n  };\n\n  e.extend(o.prototype, {\n    $button: null,\n    $grid: null,\n    $list: null,\n    isVisible: !1,\n    isActive: !1,\n    init: function init(t) {\n      var e = this,\n          n = t.group,\n          o = 0;\n      e.instance = t, e.opts = n[t.currIndex].opts.thumbs, t.Thumbs = e, e.$button = t.$refs.toolbar.find(\"[data-fancybox-thumbs]\");\n\n      for (var i = 0, a = n.length; i < a && (n[i].thumb && o++, !(o > 1)); i++) {\n        ;\n      }\n\n      o > 1 && e.opts ? (e.$button.removeAttr(\"style\").on(\"click\", function () {\n        e.toggle();\n      }), e.isActive = !0) : e.$button.hide();\n    },\n    create: function create() {\n      var t,\n          o = this,\n          i = o.instance,\n          a = o.opts.parentEl,\n          s = [];\n      o.$grid || (o.$grid = e('<div class=\"' + n + \" \" + n + \"-\" + o.opts.axis + '\"></div>').appendTo(i.$refs.container.find(a).addBack().filter(a)), o.$grid.on(\"click\", \"a\", function () {\n        i.jumpTo(e(this).attr(\"data-index\"));\n      })), o.$list || (o.$list = e('<div class=\"' + n + '__list\">').appendTo(o.$grid)), e.each(i.group, function (e, n) {\n        t = n.thumb, t || \"image\" !== n.type || (t = n.src), s.push('<a href=\"javascript:;\" tabindex=\"0\" data-index=\"' + e + '\"' + (t && t.length ? ' style=\"background-image:url(' + t + ')\"' : 'class=\"fancybox-thumbs-missing\"') + \"></a>\");\n      }), o.$list[0].innerHTML = s.join(\"\"), \"x\" === o.opts.axis && o.$list.width(parseInt(o.$grid.css(\"padding-right\"), 10) + i.group.length * o.$list.children().eq(0).outerWidth(!0));\n    },\n    focus: function focus(t) {\n      var e,\n          n,\n          o = this,\n          i = o.$list,\n          a = o.$grid;\n      o.instance.current && (e = i.children().removeClass(\"fancybox-thumbs-active\").filter('[data-index=\"' + o.instance.current.index + '\"]').addClass(\"fancybox-thumbs-active\"), n = e.position(), \"y\" === o.opts.axis && (n.top < 0 || n.top > i.height() - e.outerHeight()) ? i.stop().animate({\n        scrollTop: i.scrollTop() + n.top\n      }, t) : \"x\" === o.opts.axis && (n.left < a.scrollLeft() || n.left > a.scrollLeft() + (a.width() - e.outerWidth())) && i.parent().stop().animate({\n        scrollLeft: n.left\n      }, t));\n    },\n    update: function update() {\n      var t = this;\n      t.instance.$refs.container.toggleClass(\"fancybox-show-thumbs\", this.isVisible), t.isVisible ? (t.$grid || t.create(), t.instance.trigger(\"onThumbsShow\"), t.focus(0)) : t.$grid && t.instance.trigger(\"onThumbsHide\"), t.instance.update();\n    },\n    hide: function hide() {\n      this.isVisible = !1, this.update();\n    },\n    show: function show() {\n      this.isVisible = !0, this.update();\n    },\n    toggle: function toggle() {\n      this.isVisible = !this.isVisible, this.update();\n    }\n  }), e(t).on({\n    \"onInit.fb\": function onInitFb(t, e) {\n      var n;\n      e && !e.Thumbs && (n = new o(e), n.isActive && !0 === n.opts.autoStart && n.show());\n    },\n    \"beforeShow.fb\": function beforeShowFb(t, e, n, o) {\n      var i = e && e.Thumbs;\n      i && i.isVisible && i.focus(o ? 0 : 250);\n    },\n    \"afterKeydown.fb\": function afterKeydownFb(t, e, n, o, i) {\n      var a = e && e.Thumbs;\n      a && a.isActive && 71 === i && (o.preventDefault(), a.toggle());\n    },\n    \"beforeClose.fb\": function beforeCloseFb(t, e) {\n      var n = e && e.Thumbs;\n      n && n.isVisible && !1 !== n.opts.hideOnClose && n.$grid.hide();\n    }\n  });\n}(document, jQuery), function (t, e) {\n  \"use strict\";\n\n  function n(t) {\n    var e = {\n      \"&\": \"&amp;\",\n      \"<\": \"&lt;\",\n      \">\": \"&gt;\",\n      '\"': \"&quot;\",\n      \"'\": \"&#39;\",\n      \"/\": \"&#x2F;\",\n      \"`\": \"&#x60;\",\n      \"=\": \"&#x3D;\"\n    };\n    return String(t).replace(/[&<>\"'`=\\/]/g, function (t) {\n      return e[t];\n    });\n  }\n\n  e.extend(!0, e.fancybox.defaults, {\n    btnTpl: {\n      share: '<button data-fancybox-share class=\"fancybox-button fancybox-button--share\" title=\"{{SHARE}}\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M2.55 19c1.4-8.4 9.1-9.8 11.9-9.8V5l7 7-7 6.3v-3.5c-2.8 0-10.5 2.1-11.9 4.2z\"/></svg></button>'\n    },\n    share: {\n      url: function url(t, e) {\n        return !t.currentHash && \"inline\" !== e.type && \"html\" !== e.type && (e.origSrc || e.src) || window.location;\n      },\n      tpl: '<div class=\"fancybox-share\"><h1>{{SHARE}}</h1><p><a class=\"fancybox-share__button fancybox-share__button--fb\" href=\"https://www.facebook.com/sharer/sharer.php?u={{url}}\"><svg viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196\" /></svg><span>Facebook</span></a><a class=\"fancybox-share__button fancybox-share__button--tw\" href=\"https://twitter.com/intent/tweet?url={{url}}&text={{descr}}\"><svg viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z\" /></svg><span>Twitter</span></a><a class=\"fancybox-share__button fancybox-share__button--pt\" href=\"https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}\"><svg viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m265 56c-109 0-164 78-164 144 0 39 15 74 47 87 5 2 10 0 12-5l4-19c2-6 1-8-3-13-9-11-15-25-15-45 0-58 43-110 113-110 62 0 96 38 96 88 0 67-30 122-73 122-24 0-42-19-36-44 6-29 20-60 20-81 0-19-10-35-31-35-25 0-44 26-44 60 0 21 7 36 7 36l-30 125c-8 37-1 83 0 87 0 3 4 4 5 2 2-3 32-39 42-75l16-64c8 16 31 29 56 29 74 0 124-67 124-157 0-69-58-132-146-132z\" fill=\"#fff\"/></svg><span>Pinterest</span></a></p><p><input class=\"fancybox-share__input\" type=\"text\" value=\"{{url_raw}}\" onclick=\"select()\" /></p></div>'\n    }\n  }), e(t).on(\"click\", \"[data-fancybox-share]\", function () {\n    var t,\n        o,\n        i = e.fancybox.getInstance(),\n        a = i.current || null;\n    a && (\"function\" === e.type(a.opts.share.url) && (t = a.opts.share.url.apply(a, [i, a])), o = a.opts.share.tpl.replace(/\\{\\{media\\}\\}/g, \"image\" === a.type ? encodeURIComponent(a.src) : \"\").replace(/\\{\\{url\\}\\}/g, encodeURIComponent(t)).replace(/\\{\\{url_raw\\}\\}/g, n(t)).replace(/\\{\\{descr\\}\\}/g, i.$caption ? encodeURIComponent(i.$caption.text()) : \"\"), e.fancybox.open({\n      src: i.translate(i, o),\n      type: \"html\",\n      opts: {\n        touch: !1,\n        animationEffect: !1,\n        afterLoad: function afterLoad(t, e) {\n          i.$refs.container.one(\"beforeClose.fb\", function () {\n            t.close(null, 0);\n          }), e.$content.find(\".fancybox-share__button\").click(function () {\n            return window.open(this.href, \"Share\", \"width=550, height=450\"), !1;\n          });\n        },\n        mobile: {\n          autoFocus: !1\n        }\n      }\n    }));\n  });\n}(document, jQuery), function (t, e, n) {\n  \"use strict\";\n\n  function o() {\n    var e = t.location.hash.substr(1),\n        n = e.split(\"-\"),\n        o = n.length > 1 && /^\\+?\\d+$/.test(n[n.length - 1]) ? parseInt(n.pop(-1), 10) || 1 : 1,\n        i = n.join(\"-\");\n    return {\n      hash: e,\n      index: o < 1 ? 1 : o,\n      gallery: i\n    };\n  }\n\n  function i(t) {\n    \"\" !== t.gallery && n(\"[data-fancybox='\" + n.escapeSelector(t.gallery) + \"']\").eq(t.index - 1).focus().trigger(\"click.fb-start\");\n  }\n\n  function a(t) {\n    var e, n;\n    return !!t && (e = t.current ? t.current.opts : t.opts, \"\" !== (n = e.hash || (e.$orig ? e.$orig.data(\"fancybox\") || e.$orig.data(\"fancybox-trigger\") : \"\")) && n);\n  }\n\n  n.escapeSelector || (n.escapeSelector = function (t) {\n    return (t + \"\").replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (t, e) {\n      return e ? \"\\0\" === t ? \"\uFFFD\" : t.slice(0, -1) + \"\\\\\" + t.charCodeAt(t.length - 1).toString(16) + \" \" : \"\\\\\" + t;\n    });\n  }), n(function () {\n    !1 !== n.fancybox.defaults.hash && (n(e).on({\n      \"onInit.fb\": function onInitFb(t, e) {\n        var n, i;\n        !1 !== e.group[e.currIndex].opts.hash && (n = o(), (i = a(e)) && n.gallery && i == n.gallery && (e.currIndex = n.index - 1));\n      },\n      \"beforeShow.fb\": function beforeShowFb(n, o, i, s) {\n        var r;\n        i && !1 !== i.opts.hash && (r = a(o)) && (o.currentHash = r + (o.group.length > 1 ? \"-\" + (i.index + 1) : \"\"), t.location.hash !== \"#\" + o.currentHash && (s && !o.origHash && (o.origHash = t.location.hash), o.hashTimer && clearTimeout(o.hashTimer), o.hashTimer = setTimeout(function () {\n          \"replaceState\" in t.history ? (t.history[s ? \"pushState\" : \"replaceState\"]({}, e.title, t.location.pathname + t.location.search + \"#\" + o.currentHash), s && (o.hasCreatedHistory = !0)) : t.location.hash = o.currentHash, o.hashTimer = null;\n        }, 300)));\n      },\n      \"beforeClose.fb\": function beforeCloseFb(n, o, i) {\n        i && !1 !== i.opts.hash && (clearTimeout(o.hashTimer), o.currentHash && o.hasCreatedHistory ? t.history.back() : o.currentHash && (\"replaceState\" in t.history ? t.history.replaceState({}, e.title, t.location.pathname + t.location.search + (o.origHash || \"\")) : t.location.hash = o.origHash), o.currentHash = null);\n      }\n    }), n(t).on(\"hashchange.fb\", function () {\n      var t = o(),\n          e = null;\n      n.each(n(\".fancybox-container\").get().reverse(), function (t, o) {\n        var i = n(o).data(\"FancyBox\");\n        if (i && i.currentHash) return e = i, !1;\n      }), e ? e.currentHash === t.gallery + \"-\" + t.index || 1 === t.index && e.currentHash == t.gallery || (e.currentHash = null, e.close()) : \"\" !== t.gallery && i(t);\n    }), setTimeout(function () {\n      n.fancybox.getInstance() || i(o());\n    }, 50));\n  });\n}(window, document, jQuery), function (t, e) {\n  \"use strict\";\n\n  var n = new Date().getTime();\n  e(t).on({\n    \"onInit.fb\": function onInitFb(t, e, o) {\n      e.$refs.stage.on(\"mousewheel DOMMouseScroll wheel MozMousePixelScroll\", function (t) {\n        var o = e.current,\n            i = new Date().getTime();\n        e.group.length < 2 || !1 === o.opts.wheel || \"auto\" === o.opts.wheel && \"image\" !== o.type || (t.preventDefault(), t.stopPropagation(), o.$slide.hasClass(\"fancybox-animated\") || (t = t.originalEvent || t, i - n < 250 || (n = i, e[(-t.deltaY || -t.deltaX || t.wheelDelta || -t.detail) < 0 ? \"next\" : \"previous\"]())));\n      });\n    }\n  });\n}(document, jQuery);\n/*! lazysizes - v4.1.5 */\n\n!function (a, b) {\n  var c = b(a, a.document);\n  a.lazySizes = c, \"object\" == (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) && module.exports && (module.exports = c);\n}(window, function (a, b) {\n  \"use strict\";\n\n  if (b.getElementsByClassName) {\n    var c,\n        d,\n        e = b.documentElement,\n        f = a.Date,\n        g = a.HTMLPictureElement,\n        h = \"addEventListener\",\n        i = \"getAttribute\",\n        j = a[h],\n        k = a.setTimeout,\n        l = a.requestAnimationFrame || k,\n        m = a.requestIdleCallback,\n        n = /^picture$/i,\n        o = [\"load\", \"error\", \"lazyincluded\", \"_lazyloaded\"],\n        p = {},\n        q = Array.prototype.forEach,\n        r = function r(a, b) {\n      return p[b] || (p[b] = new RegExp(\"(\\\\s|^)\" + b + \"(\\\\s|$)\")), p[b].test(a[i](\"class\") || \"\") && p[b];\n    },\n        s = function s(a, b) {\n      r(a, b) || a.setAttribute(\"class\", (a[i](\"class\") || \"\").trim() + \" \" + b);\n    },\n        t = function t(a, b) {\n      var c;\n      (c = r(a, b)) && a.setAttribute(\"class\", (a[i](\"class\") || \"\").replace(c, \" \"));\n    },\n        u = function u(a, b, c) {\n      var d = c ? h : \"removeEventListener\";\n      c && u(a, b), o.forEach(function (c) {\n        a[d](c, b);\n      });\n    },\n        v = function v(a, d, e, f, g) {\n      var h = b.createEvent(\"Event\");\n      return e || (e = {}), e.instance = c, h.initEvent(d, !f, !g), h.detail = e, a.dispatchEvent(h), h;\n    },\n        w = function w(b, c) {\n      var e;\n      !g && (e = a.picturefill || d.pf) ? (c && c.src && !b[i](\"srcset\") && b.setAttribute(\"srcset\", c.src), e({\n        reevaluate: !0,\n        elements: [b]\n      })) : c && c.src && (b.src = c.src);\n    },\n        x = function x(a, b) {\n      return (getComputedStyle(a, null) || {})[b];\n    },\n        y = function y(a, b, c) {\n      for (c = c || a.offsetWidth; c < d.minSize && b && !a._lazysizesWidth;) {\n        c = b.offsetWidth, b = b.parentNode;\n      }\n\n      return c;\n    },\n        z = function () {\n      var a,\n          c,\n          d = [],\n          e = [],\n          f = d,\n          g = function g() {\n        var b = f;\n\n        for (f = d.length ? e : d, a = !0, c = !1; b.length;) {\n          b.shift()();\n        }\n\n        a = !1;\n      },\n          h = function h(d, e) {\n        a && !e ? d.apply(this, arguments) : (f.push(d), c || (c = !0, (b.hidden ? k : l)(g)));\n      };\n\n      return h._lsFlush = g, h;\n    }(),\n        A = function A(a, b) {\n      return b ? function () {\n        z(a);\n      } : function () {\n        var b = this,\n            c = arguments;\n        z(function () {\n          a.apply(b, c);\n        });\n      };\n    },\n        B = function B(a) {\n      var b,\n          c = 0,\n          e = d.throttleDelay,\n          g = d.ricTimeout,\n          h = function h() {\n        b = !1, c = f.now(), a();\n      },\n          i = m && g > 49 ? function () {\n        m(h, {\n          timeout: g\n        }), g !== d.ricTimeout && (g = d.ricTimeout);\n      } : A(function () {\n        k(h);\n      }, !0);\n\n      return function (a) {\n        var d;\n        (a = !0 === a) && (g = 33), b || (b = !0, d = e - (f.now() - c), d < 0 && (d = 0), a || d < 9 ? i() : k(i, d));\n      };\n    },\n        C = function C(a) {\n      var b,\n          c,\n          d = 99,\n          e = function e() {\n        b = null, a();\n      },\n          g = function g() {\n        var a = f.now() - c;\n        a < d ? k(g, d - a) : (m || e)(e);\n      };\n\n      return function () {\n        c = f.now(), b || (b = k(g, d));\n      };\n    };\n\n    !function () {\n      var b,\n          c = {\n        lazyClass: \"lazyload\",\n        loadedClass: \"lazyloaded\",\n        loadingClass: \"lazyloading\",\n        preloadClass: \"lazypreload\",\n        errorClass: \"lazyerror\",\n        autosizesClass: \"lazyautosizes\",\n        srcAttr: \"data-src\",\n        srcsetAttr: \"data-srcset\",\n        sizesAttr: \"data-sizes\",\n        minSize: 40,\n        customMedia: {},\n        init: !0,\n        expFactor: 1.5,\n        hFac: .8,\n        loadMode: 2,\n        loadHidden: !0,\n        ricTimeout: 0,\n        throttleDelay: 125\n      };\n      d = a.lazySizesConfig || a.lazysizesConfig || {};\n\n      for (b in c) {\n        b in d || (d[b] = c[b]);\n      }\n\n      a.lazySizesConfig = d, k(function () {\n        d.init && F();\n      });\n    }();\n\n    var D = function () {\n      var g,\n          l,\n          m,\n          o,\n          p,\n          y,\n          D,\n          F,\n          G,\n          H,\n          I,\n          J = /^img$/i,\n          K = /^iframe$/i,\n          L = \"onscroll\" in a && !/(gle|ing)bot/.test(navigator.userAgent),\n          M = 0,\n          N = 0,\n          O = 0,\n          P = -1,\n          Q = function Q(a) {\n        O--, a && a.target && u(a.target, Q), (!a || O < 0 || !a.target) && (O = 0);\n      },\n          R = function R(a, c) {\n        var d,\n            f = a,\n            g = \"hidden\" == x(b.body, \"visibility\") || \"hidden\" != x(a.parentNode, \"visibility\") && \"hidden\" != x(a, \"visibility\");\n\n        for (F -= c, I += c, G -= c, H += c; g && (f = f.offsetParent) && f != b.body && f != e;) {\n          (g = (x(f, \"opacity\") || 1) > 0) && \"visible\" != x(f, \"overflow\") && (d = f.getBoundingClientRect(), g = H > d.left && G < d.right && I > d.top - 1 && F < d.bottom + 1);\n        }\n\n        return g;\n      },\n          S = function S() {\n        var a,\n            f,\n            h,\n            j,\n            k,\n            m,\n            n,\n            p,\n            q,\n            r,\n            s,\n            t,\n            u = c.elements;\n\n        if ((o = d.loadMode) && O < 8 && (a = u.length)) {\n          for (f = 0, P++, r = !d.expand || d.expand < 1 ? e.clientHeight > 500 && e.clientWidth > 500 ? 500 : 370 : d.expand, s = r * d.expFactor, t = d.hFac, N < s && O < 1 && P > 2 && o > 2 && !b.hidden ? (N = s, P = 0) : N = o > 1 && P > 1 && O < 6 ? r : M; f < a; f++) {\n            if (u[f] && !u[f]._lazyRace) if (L) {\n              if ((p = u[f][i](\"data-expand\")) && (m = 1 * p) || (m = N), q !== m && (y = innerWidth + m * t, D = innerHeight + m, n = -1 * m, q = m), h = u[f].getBoundingClientRect(), (I = h.bottom) >= n && (F = h.top) <= D && (H = h.right) >= n * t && (G = h.left) <= y && (I || H || G || F) && (d.loadHidden || \"hidden\" != x(u[f], \"visibility\")) && (l && O < 3 && !p && (o < 3 || P < 4) || R(u[f], m))) {\n                if ($(u[f]), k = !0, O > 9) break;\n              } else !k && l && !j && O < 4 && P < 4 && o > 2 && (g[0] || d.preloadAfterLoad) && (g[0] || !p && (I || H || G || F || \"auto\" != u[f][i](d.sizesAttr))) && (j = g[0] || u[f]);\n            } else $(u[f]);\n          }\n\n          j && !k && $(j);\n        }\n      },\n          T = B(S),\n          U = function U(a) {\n        s(a.target, d.loadedClass), t(a.target, d.loadingClass), u(a.target, W), v(a.target, \"lazyloaded\");\n      },\n          V = A(U),\n          W = function W(a) {\n        V({\n          target: a.target\n        });\n      },\n          X = function X(a, b) {\n        try {\n          a.contentWindow.location.replace(b);\n        } catch (c) {\n          a.src = b;\n        }\n      },\n          Y = function Y(a) {\n        var b,\n            c = a[i](d.srcsetAttr);\n        (b = d.customMedia[a[i](\"data-media\") || a[i](\"media\")]) && a.setAttribute(\"media\", b), c && a.setAttribute(\"srcset\", c);\n      },\n          Z = A(function (a, b, c, e, f) {\n        var g, h, j, l, o, p;\n        (o = v(a, \"lazybeforeunveil\", b)).defaultPrevented || (e && (c ? s(a, d.autosizesClass) : a.setAttribute(\"sizes\", e)), h = a[i](d.srcsetAttr), g = a[i](d.srcAttr), f && (j = a.parentNode, l = j && n.test(j.nodeName || \"\")), p = b.firesLoad || \"src\" in a && (h || g || l), o = {\n          target: a\n        }, p && (u(a, Q, !0), clearTimeout(m), m = k(Q, 2500), s(a, d.loadingClass), u(a, W, !0)), l && q.call(j.getElementsByTagName(\"source\"), Y), h ? a.setAttribute(\"srcset\", h) : g && !l && (K.test(a.nodeName) ? X(a, g) : a.src = g), f && (h || l) && w(a, {\n          src: g\n        })), a._lazyRace && delete a._lazyRace, t(a, d.lazyClass), z(function () {\n          (!p || a.complete && a.naturalWidth > 1) && (p ? Q(o) : O--, U(o));\n        }, !0);\n      }),\n          $ = function $(a) {\n        var b,\n            c = J.test(a.nodeName),\n            e = c && (a[i](d.sizesAttr) || a[i](\"sizes\")),\n            f = \"auto\" == e;\n        (!f && l || !c || !a[i](\"src\") && !a.srcset || a.complete || r(a, d.errorClass) || !r(a, d.lazyClass)) && (b = v(a, \"lazyunveilread\").detail, f && E.updateElem(a, !0, a.offsetWidth), a._lazyRace = !0, O++, Z(a, b, f, e, c));\n      },\n          _2 = function _() {\n        if (!l) {\n          if (f.now() - p < 999) return void k(_2, 999);\n          var a = C(function () {\n            d.loadMode = 3, T();\n          });\n          l = !0, d.loadMode = 3, T(), j(\"scroll\", function () {\n            3 == d.loadMode && (d.loadMode = 2), a();\n          }, !0);\n        }\n      };\n\n      return {\n        _: function _() {\n          p = f.now(), c.elements = b.getElementsByClassName(d.lazyClass), g = b.getElementsByClassName(d.lazyClass + \" \" + d.preloadClass), j(\"scroll\", T, !0), j(\"resize\", T, !0), a.MutationObserver ? new MutationObserver(T).observe(e, {\n            childList: !0,\n            subtree: !0,\n            attributes: !0\n          }) : (e[h](\"DOMNodeInserted\", T, !0), e[h](\"DOMAttrModified\", T, !0), setInterval(T, 999)), j(\"hashchange\", T, !0), [\"focus\", \"mouseover\", \"click\", \"load\", \"transitionend\", \"animationend\", \"webkitAnimationEnd\"].forEach(function (a) {\n            b[h](a, T, !0);\n          }), /d$|^c/.test(b.readyState) ? _2() : (j(\"load\", _2), b[h](\"DOMContentLoaded\", T), k(_2, 2e4)), c.elements.length ? (S(), z._lsFlush()) : T();\n        },\n        checkElems: T,\n        unveil: $\n      };\n    }(),\n        E = function () {\n      var a,\n          c = A(function (a, b, c, d) {\n        var e, f, g;\n        if (a._lazysizesWidth = d, d += \"px\", a.setAttribute(\"sizes\", d), n.test(b.nodeName || \"\")) for (e = b.getElementsByTagName(\"source\"), f = 0, g = e.length; f < g; f++) {\n          e[f].setAttribute(\"sizes\", d);\n        }\n        c.detail.dataAttr || w(a, c.detail);\n      }),\n          e = function e(a, b, d) {\n        var e,\n            f = a.parentNode;\n        f && (d = y(a, f, d), e = v(a, \"lazybeforesizes\", {\n          width: d,\n          dataAttr: !!b\n        }), e.defaultPrevented || (d = e.detail.width) && d !== a._lazysizesWidth && c(a, f, e, d));\n      },\n          f = function f() {\n        var b,\n            c = a.length;\n        if (c) for (b = 0; b < c; b++) {\n          e(a[b]);\n        }\n      },\n          g = C(f);\n\n      return {\n        _: function _() {\n          a = b.getElementsByClassName(d.autosizesClass), j(\"resize\", g);\n        },\n        checkElems: g,\n        updateElem: e\n      };\n    }(),\n        F = function F() {\n      F.i || (F.i = !0, E._(), D._());\n    };\n\n    return c = {\n      cfg: d,\n      autoSizer: E,\n      loader: D,\n      init: F,\n      uP: w,\n      aC: s,\n      rC: t,\n      hC: r,\n      fire: v,\n      gW: y,\n      rAF: z\n    };\n  }\n});\n!function (t) {\n  var i = t(window);\n\n  t.fn.visible = function (t, e, o) {\n    if (!(this.length < 1)) {\n      var r = this.length > 1 ? this.eq(0) : this,\n          n = r.get(0),\n          f = i.width(),\n          h = i.height(),\n          o = o ? o : \"both\",\n          l = e === !0 ? n.offsetWidth * n.offsetHeight : !0;\n\n      if (\"function\" == typeof n.getBoundingClientRect) {\n        var g = n.getBoundingClientRect(),\n            u = g.top >= 0 && g.top < h,\n            s = g.bottom > 0 && g.bottom <= h,\n            c = g.left >= 0 && g.left < f,\n            a = g.right > 0 && g.right <= f,\n            v = t ? u || s : u && s,\n            b = t ? c || a : c && a;\n        if (\"both\" === o) return l && v && b;\n        if (\"vertical\" === o) return l && v;\n        if (\"horizontal\" === o) return l && b;\n      } else {\n        var d = i.scrollTop(),\n            p = d + h,\n            w = i.scrollLeft(),\n            m = w + f,\n            y = r.offset(),\n            z = y.top,\n            B = z + r.height(),\n            C = y.left,\n            R = C + r.width(),\n            j = t === !0 ? B : z,\n            q = t === !0 ? z : B,\n            H = t === !0 ? R : C,\n            L = t === !0 ? C : R;\n        if (\"both\" === o) return !!l && p >= q && j >= d && m >= L && H >= w;\n        if (\"vertical\" === o) return !!l && p >= q && j >= d;\n        if (\"horizontal\" === o) return !!l && m >= L && H >= w;\n      }\n    }\n  };\n}(jQuery);\n/*!\n * replaceUrlParam.min.js\n */\n\nfunction replaceUrlParam(t, e, n) {\n  var i = new RegExp(\"(\" + e + \"=).*?(&|$)\"),\n      o = t;\n  return o = t.search(i) >= 0 ? t.replace(i, \"$1\" + n + \"$2\") : o + (o.indexOf(\"?\") > 0 ? \"&\" : \"?\") + e + \"=\" + n;\n}\n/**\n * Swiper 4.5.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://www.idangero.us/swiper/\n *\n * Copyright 2014-2019 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 22, 2019\n */\n\n\n!function (e, t) {\n  \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(t) : (e = e || self).Swiper = t();\n}(this, function () {\n  \"use strict\";\n\n  var f = \"undefined\" == typeof document ? {\n    body: {},\n    addEventListener: function addEventListener() {},\n    removeEventListener: function removeEventListener() {},\n    activeElement: {\n      blur: function blur() {},\n      nodeName: \"\"\n    },\n    querySelector: function querySelector() {\n      return null;\n    },\n    querySelectorAll: function querySelectorAll() {\n      return [];\n    },\n    getElementById: function getElementById() {\n      return null;\n    },\n    createEvent: function createEvent() {\n      return {\n        initEvent: function initEvent() {}\n      };\n    },\n    createElement: function createElement() {\n      return {\n        children: [],\n        childNodes: [],\n        style: {},\n        setAttribute: function setAttribute() {},\n        getElementsByTagName: function getElementsByTagName() {\n          return [];\n        }\n      };\n    },\n    location: {\n      hash: \"\"\n    }\n  } : document,\n      J = \"undefined\" == typeof window ? {\n    document: f,\n    navigator: {\n      userAgent: \"\"\n    },\n    location: {},\n    history: {},\n    CustomEvent: function CustomEvent() {\n      return this;\n    },\n    addEventListener: function addEventListener() {},\n    removeEventListener: function removeEventListener() {},\n    getComputedStyle: function getComputedStyle() {\n      return {\n        getPropertyValue: function getPropertyValue() {\n          return \"\";\n        }\n      };\n    },\n    Image: function Image() {},\n    Date: function Date() {},\n    screen: {},\n    setTimeout: function setTimeout() {},\n    clearTimeout: function clearTimeout() {}\n  } : window,\n      l = function l(e) {\n    for (var t = 0; t < e.length; t += 1) {\n      this[t] = e[t];\n    }\n\n    return this.length = e.length, this;\n  };\n\n  function L(e, t) {\n    var a = [],\n        i = 0;\n    if (e && !t && e instanceof l) return e;\n    if (e) if (\"string\" == typeof e) {\n      var s,\n          r,\n          n = e.trim();\n\n      if (0 <= n.indexOf(\"<\") && 0 <= n.indexOf(\">\")) {\n        var o = \"div\";\n\n        for (0 === n.indexOf(\"<li\") && (o = \"ul\"), 0 === n.indexOf(\"<tr\") && (o = \"tbody\"), 0 !== n.indexOf(\"<td\") && 0 !== n.indexOf(\"<th\") || (o = \"tr\"), 0 === n.indexOf(\"<tbody\") && (o = \"table\"), 0 === n.indexOf(\"<option\") && (o = \"select\"), (r = f.createElement(o)).innerHTML = n, i = 0; i < r.childNodes.length; i += 1) {\n          a.push(r.childNodes[i]);\n        }\n      } else for (s = t || \"#\" !== e[0] || e.match(/[ .<>:~]/) ? (t || f).querySelectorAll(e.trim()) : [f.getElementById(e.trim().split(\"#\")[1])], i = 0; i < s.length; i += 1) {\n        s[i] && a.push(s[i]);\n      }\n    } else if (e.nodeType || e === J || e === f) a.push(e);else if (0 < e.length && e[0].nodeType) for (i = 0; i < e.length; i += 1) {\n      a.push(e[i]);\n    }\n    return new l(a);\n  }\n\n  function r(e) {\n    for (var t = [], a = 0; a < e.length; a += 1) {\n      -1 === t.indexOf(e[a]) && t.push(e[a]);\n    }\n\n    return t;\n  }\n\n  L.fn = l.prototype, L.Class = l, L.Dom7 = l;\n  var t = {\n    addClass: function addClass(e) {\n      if (void 0 === e) return this;\n\n      for (var t = e.split(\" \"), a = 0; a < t.length; a += 1) {\n        for (var i = 0; i < this.length; i += 1) {\n          void 0 !== this[i] && void 0 !== this[i].classList && this[i].classList.add(t[a]);\n        }\n      }\n\n      return this;\n    },\n    removeClass: function removeClass(e) {\n      for (var t = e.split(\" \"), a = 0; a < t.length; a += 1) {\n        for (var i = 0; i < this.length; i += 1) {\n          void 0 !== this[i] && void 0 !== this[i].classList && this[i].classList.remove(t[a]);\n        }\n      }\n\n      return this;\n    },\n    hasClass: function hasClass(e) {\n      return !!this[0] && this[0].classList.contains(e);\n    },\n    toggleClass: function toggleClass(e) {\n      for (var t = e.split(\" \"), a = 0; a < t.length; a += 1) {\n        for (var i = 0; i < this.length; i += 1) {\n          void 0 !== this[i] && void 0 !== this[i].classList && this[i].classList.toggle(t[a]);\n        }\n      }\n\n      return this;\n    },\n    attr: function attr(e, t) {\n      var a = arguments;\n      if (1 === arguments.length && \"string\" == typeof e) return this[0] ? this[0].getAttribute(e) : void 0;\n\n      for (var i = 0; i < this.length; i += 1) {\n        if (2 === a.length) this[i].setAttribute(e, t);else for (var s in e) {\n          this[i][s] = e[s], this[i].setAttribute(s, e[s]);\n        }\n      }\n\n      return this;\n    },\n    removeAttr: function removeAttr(e) {\n      for (var t = 0; t < this.length; t += 1) {\n        this[t].removeAttribute(e);\n      }\n\n      return this;\n    },\n    data: function data(e, t) {\n      var a;\n\n      if (void 0 !== t) {\n        for (var i = 0; i < this.length; i += 1) {\n          (a = this[i]).dom7ElementDataStorage || (a.dom7ElementDataStorage = {}), a.dom7ElementDataStorage[e] = t;\n        }\n\n        return this;\n      }\n\n      if (a = this[0]) {\n        if (a.dom7ElementDataStorage && e in a.dom7ElementDataStorage) return a.dom7ElementDataStorage[e];\n        var s = a.getAttribute(\"data-\" + e);\n        return s || void 0;\n      }\n    },\n    transform: function transform(e) {\n      for (var t = 0; t < this.length; t += 1) {\n        var a = this[t].style;\n        a.webkitTransform = e, a.transform = e;\n      }\n\n      return this;\n    },\n    transition: function transition(e) {\n      \"string\" != typeof e && (e += \"ms\");\n\n      for (var t = 0; t < this.length; t += 1) {\n        var a = this[t].style;\n        a.webkitTransitionDuration = e, a.transitionDuration = e;\n      }\n\n      return this;\n    },\n    on: function on() {\n      for (var e, t = [], a = arguments.length; a--;) {\n        t[a] = arguments[a];\n      }\n\n      var i = t[0],\n          r = t[1],\n          n = t[2],\n          s = t[3];\n\n      function o(e) {\n        var t = e.target;\n\n        if (t) {\n          var a = e.target.dom7EventData || [];\n          if (a.indexOf(e) < 0 && a.unshift(e), L(t).is(r)) n.apply(t, a);else for (var i = L(t).parents(), s = 0; s < i.length; s += 1) {\n            L(i[s]).is(r) && n.apply(i[s], a);\n          }\n        }\n      }\n\n      function l(e) {\n        var t = e && e.target && e.target.dom7EventData || [];\n        t.indexOf(e) < 0 && t.unshift(e), n.apply(this, t);\n      }\n\n      \"function\" == typeof t[1] && (i = (e = t)[0], n = e[1], s = e[2], r = void 0), s || (s = !1);\n\n      for (var d, p = i.split(\" \"), c = 0; c < this.length; c += 1) {\n        var u = this[c];\n        if (r) for (d = 0; d < p.length; d += 1) {\n          var h = p[d];\n          u.dom7LiveListeners || (u.dom7LiveListeners = {}), u.dom7LiveListeners[h] || (u.dom7LiveListeners[h] = []), u.dom7LiveListeners[h].push({\n            listener: n,\n            proxyListener: o\n          }), u.addEventListener(h, o, s);\n        } else for (d = 0; d < p.length; d += 1) {\n          var v = p[d];\n          u.dom7Listeners || (u.dom7Listeners = {}), u.dom7Listeners[v] || (u.dom7Listeners[v] = []), u.dom7Listeners[v].push({\n            listener: n,\n            proxyListener: l\n          }), u.addEventListener(v, l, s);\n        }\n      }\n\n      return this;\n    },\n    off: function off() {\n      for (var e, t = [], a = arguments.length; a--;) {\n        t[a] = arguments[a];\n      }\n\n      var i = t[0],\n          s = t[1],\n          r = t[2],\n          n = t[3];\n      \"function\" == typeof t[1] && (i = (e = t)[0], r = e[1], n = e[2], s = void 0), n || (n = !1);\n\n      for (var o = i.split(\" \"), l = 0; l < o.length; l += 1) {\n        for (var d = o[l], p = 0; p < this.length; p += 1) {\n          var c = this[p],\n              u = void 0;\n          if (!s && c.dom7Listeners ? u = c.dom7Listeners[d] : s && c.dom7LiveListeners && (u = c.dom7LiveListeners[d]), u && u.length) for (var h = u.length - 1; 0 <= h; h -= 1) {\n            var v = u[h];\n            r && v.listener === r ? (c.removeEventListener(d, v.proxyListener, n), u.splice(h, 1)) : r && v.listener && v.listener.dom7proxy && v.listener.dom7proxy === r ? (c.removeEventListener(d, v.proxyListener, n), u.splice(h, 1)) : r || (c.removeEventListener(d, v.proxyListener, n), u.splice(h, 1));\n          }\n        }\n      }\n\n      return this;\n    },\n    trigger: function trigger() {\n      for (var e = [], t = arguments.length; t--;) {\n        e[t] = arguments[t];\n      }\n\n      for (var a = e[0].split(\" \"), i = e[1], s = 0; s < a.length; s += 1) {\n        for (var r = a[s], n = 0; n < this.length; n += 1) {\n          var o = this[n],\n              l = void 0;\n\n          try {\n            l = new J.CustomEvent(r, {\n              detail: i,\n              bubbles: !0,\n              cancelable: !0\n            });\n          } catch (e) {\n            (l = f.createEvent(\"Event\")).initEvent(r, !0, !0), l.detail = i;\n          }\n\n          o.dom7EventData = e.filter(function (e, t) {\n            return 0 < t;\n          }), o.dispatchEvent(l), o.dom7EventData = [], delete o.dom7EventData;\n        }\n      }\n\n      return this;\n    },\n    transitionEnd: function transitionEnd(t) {\n      var a,\n          i = [\"webkitTransitionEnd\", \"transitionend\"],\n          s = this;\n\n      function r(e) {\n        if (e.target === this) for (t.call(this, e), a = 0; a < i.length; a += 1) {\n          s.off(i[a], r);\n        }\n      }\n\n      if (t) for (a = 0; a < i.length; a += 1) {\n        s.on(i[a], r);\n      }\n      return this;\n    },\n    outerWidth: function outerWidth(e) {\n      if (0 < this.length) {\n        if (e) {\n          var t = this.styles();\n          return this[0].offsetWidth + parseFloat(t.getPropertyValue(\"margin-right\")) + parseFloat(t.getPropertyValue(\"margin-left\"));\n        }\n\n        return this[0].offsetWidth;\n      }\n\n      return null;\n    },\n    outerHeight: function outerHeight(e) {\n      if (0 < this.length) {\n        if (e) {\n          var t = this.styles();\n          return this[0].offsetHeight + parseFloat(t.getPropertyValue(\"margin-top\")) + parseFloat(t.getPropertyValue(\"margin-bottom\"));\n        }\n\n        return this[0].offsetHeight;\n      }\n\n      return null;\n    },\n    offset: function offset() {\n      if (0 < this.length) {\n        var e = this[0],\n            t = e.getBoundingClientRect(),\n            a = f.body,\n            i = e.clientTop || a.clientTop || 0,\n            s = e.clientLeft || a.clientLeft || 0,\n            r = e === J ? J.scrollY : e.scrollTop,\n            n = e === J ? J.scrollX : e.scrollLeft;\n        return {\n          top: t.top + r - i,\n          left: t.left + n - s\n        };\n      }\n\n      return null;\n    },\n    css: function css(e, t) {\n      var a;\n\n      if (1 === arguments.length) {\n        if (\"string\" != typeof e) {\n          for (a = 0; a < this.length; a += 1) {\n            for (var i in e) {\n              this[a].style[i] = e[i];\n            }\n          }\n\n          return this;\n        }\n\n        if (this[0]) return J.getComputedStyle(this[0], null).getPropertyValue(e);\n      }\n\n      if (2 === arguments.length && \"string\" == typeof e) {\n        for (a = 0; a < this.length; a += 1) {\n          this[a].style[e] = t;\n        }\n\n        return this;\n      }\n\n      return this;\n    },\n    each: function each(e) {\n      if (!e) return this;\n\n      for (var t = 0; t < this.length; t += 1) {\n        if (!1 === e.call(this[t], t, this[t])) return this;\n      }\n\n      return this;\n    },\n    html: function html(e) {\n      if (void 0 === e) return this[0] ? this[0].innerHTML : void 0;\n\n      for (var t = 0; t < this.length; t += 1) {\n        this[t].innerHTML = e;\n      }\n\n      return this;\n    },\n    text: function text(e) {\n      if (void 0 === e) return this[0] ? this[0].textContent.trim() : null;\n\n      for (var t = 0; t < this.length; t += 1) {\n        this[t].textContent = e;\n      }\n\n      return this;\n    },\n    is: function is(e) {\n      var t,\n          a,\n          i = this[0];\n      if (!i || void 0 === e) return !1;\n\n      if (\"string\" == typeof e) {\n        if (i.matches) return i.matches(e);\n        if (i.webkitMatchesSelector) return i.webkitMatchesSelector(e);\n        if (i.msMatchesSelector) return i.msMatchesSelector(e);\n\n        for (t = L(e), a = 0; a < t.length; a += 1) {\n          if (t[a] === i) return !0;\n        }\n\n        return !1;\n      }\n\n      if (e === f) return i === f;\n      if (e === J) return i === J;\n\n      if (e.nodeType || e instanceof l) {\n        for (t = e.nodeType ? [e] : e, a = 0; a < t.length; a += 1) {\n          if (t[a] === i) return !0;\n        }\n\n        return !1;\n      }\n\n      return !1;\n    },\n    index: function index() {\n      var e,\n          t = this[0];\n\n      if (t) {\n        for (e = 0; null !== (t = t.previousSibling);) {\n          1 === t.nodeType && (e += 1);\n        }\n\n        return e;\n      }\n    },\n    eq: function eq(e) {\n      if (void 0 === e) return this;\n      var t,\n          a = this.length;\n      return new l(a - 1 < e ? [] : e < 0 ? (t = a + e) < 0 ? [] : [this[t]] : [this[e]]);\n    },\n    append: function append() {\n      for (var e, t = [], a = arguments.length; a--;) {\n        t[a] = arguments[a];\n      }\n\n      for (var i = 0; i < t.length; i += 1) {\n        e = t[i];\n\n        for (var s = 0; s < this.length; s += 1) {\n          if (\"string\" == typeof e) {\n            var r = f.createElement(\"div\");\n\n            for (r.innerHTML = e; r.firstChild;) {\n              this[s].appendChild(r.firstChild);\n            }\n          } else if (e instanceof l) for (var n = 0; n < e.length; n += 1) {\n            this[s].appendChild(e[n]);\n          } else this[s].appendChild(e);\n        }\n      }\n\n      return this;\n    },\n    prepend: function prepend(e) {\n      var t, a;\n\n      for (t = 0; t < this.length; t += 1) {\n        if (\"string\" == typeof e) {\n          var i = f.createElement(\"div\");\n\n          for (i.innerHTML = e, a = i.childNodes.length - 1; 0 <= a; a -= 1) {\n            this[t].insertBefore(i.childNodes[a], this[t].childNodes[0]);\n          }\n        } else if (e instanceof l) for (a = 0; a < e.length; a += 1) {\n          this[t].insertBefore(e[a], this[t].childNodes[0]);\n        } else this[t].insertBefore(e, this[t].childNodes[0]);\n      }\n\n      return this;\n    },\n    next: function next(e) {\n      return 0 < this.length ? e ? this[0].nextElementSibling && L(this[0].nextElementSibling).is(e) ? new l([this[0].nextElementSibling]) : new l([]) : this[0].nextElementSibling ? new l([this[0].nextElementSibling]) : new l([]) : new l([]);\n    },\n    nextAll: function nextAll(e) {\n      var t = [],\n          a = this[0];\n      if (!a) return new l([]);\n\n      for (; a.nextElementSibling;) {\n        var i = a.nextElementSibling;\n        e ? L(i).is(e) && t.push(i) : t.push(i), a = i;\n      }\n\n      return new l(t);\n    },\n    prev: function prev(e) {\n      if (0 < this.length) {\n        var t = this[0];\n        return e ? t.previousElementSibling && L(t.previousElementSibling).is(e) ? new l([t.previousElementSibling]) : new l([]) : t.previousElementSibling ? new l([t.previousElementSibling]) : new l([]);\n      }\n\n      return new l([]);\n    },\n    prevAll: function prevAll(e) {\n      var t = [],\n          a = this[0];\n      if (!a) return new l([]);\n\n      for (; a.previousElementSibling;) {\n        var i = a.previousElementSibling;\n        e ? L(i).is(e) && t.push(i) : t.push(i), a = i;\n      }\n\n      return new l(t);\n    },\n    parent: function parent(e) {\n      for (var t = [], a = 0; a < this.length; a += 1) {\n        null !== this[a].parentNode && (e ? L(this[a].parentNode).is(e) && t.push(this[a].parentNode) : t.push(this[a].parentNode));\n      }\n\n      return L(r(t));\n    },\n    parents: function parents(e) {\n      for (var t = [], a = 0; a < this.length; a += 1) {\n        for (var i = this[a].parentNode; i;) {\n          e ? L(i).is(e) && t.push(i) : t.push(i), i = i.parentNode;\n        }\n      }\n\n      return L(r(t));\n    },\n    closest: function closest(e) {\n      var t = this;\n      return void 0 === e ? new l([]) : (t.is(e) || (t = t.parents(e).eq(0)), t);\n    },\n    find: function find(e) {\n      for (var t = [], a = 0; a < this.length; a += 1) {\n        for (var i = this[a].querySelectorAll(e), s = 0; s < i.length; s += 1) {\n          t.push(i[s]);\n        }\n      }\n\n      return new l(t);\n    },\n    children: function children(e) {\n      for (var t = [], a = 0; a < this.length; a += 1) {\n        for (var i = this[a].childNodes, s = 0; s < i.length; s += 1) {\n          e ? 1 === i[s].nodeType && L(i[s]).is(e) && t.push(i[s]) : 1 === i[s].nodeType && t.push(i[s]);\n        }\n      }\n\n      return new l(r(t));\n    },\n    remove: function remove() {\n      for (var e = 0; e < this.length; e += 1) {\n        this[e].parentNode && this[e].parentNode.removeChild(this[e]);\n      }\n\n      return this;\n    },\n    add: function add() {\n      for (var e = [], t = arguments.length; t--;) {\n        e[t] = arguments[t];\n      }\n\n      var a, i;\n\n      for (a = 0; a < e.length; a += 1) {\n        var s = L(e[a]);\n\n        for (i = 0; i < s.length; i += 1) {\n          this[this.length] = s[i], this.length += 1;\n        }\n      }\n\n      return this;\n    },\n    styles: function styles() {\n      return this[0] ? J.getComputedStyle(this[0], null) : {};\n    }\n  };\n  Object.keys(t).forEach(function (e) {\n    L.fn[e] = t[e];\n  });\n\n  var e,\n      a,\n      i,\n      s,\n      ee = {\n    deleteProps: function deleteProps(e) {\n      var t = e;\n      Object.keys(t).forEach(function (e) {\n        try {\n          t[e] = null;\n        } catch (e) {}\n\n        try {\n          delete t[e];\n        } catch (e) {}\n      });\n    },\n    nextTick: function nextTick(e, t) {\n      return void 0 === t && (t = 0), setTimeout(e, t);\n    },\n    now: function now() {\n      return Date.now();\n    },\n    getTranslate: function getTranslate(e, t) {\n      var a, i, s;\n      void 0 === t && (t = \"x\");\n      var r = J.getComputedStyle(e, null);\n      return J.WebKitCSSMatrix ? (6 < (i = r.transform || r.webkitTransform).split(\",\").length && (i = i.split(\", \").map(function (e) {\n        return e.replace(\",\", \".\");\n      }).join(\", \")), s = new J.WebKitCSSMatrix(\"none\" === i ? \"\" : i)) : a = (s = r.MozTransform || r.OTransform || r.MsTransform || r.msTransform || r.transform || r.getPropertyValue(\"transform\").replace(\"translate(\", \"matrix(1, 0, 0, 1,\")).toString().split(\",\"), \"x\" === t && (i = J.WebKitCSSMatrix ? s.m41 : 16 === a.length ? parseFloat(a[12]) : parseFloat(a[4])), \"y\" === t && (i = J.WebKitCSSMatrix ? s.m42 : 16 === a.length ? parseFloat(a[13]) : parseFloat(a[5])), i || 0;\n    },\n    parseUrlQuery: function parseUrlQuery(e) {\n      var t,\n          a,\n          i,\n          s,\n          r = {},\n          n = e || J.location.href;\n      if (\"string\" == typeof n && n.length) for (s = (a = (n = -1 < n.indexOf(\"?\") ? n.replace(/\\S*\\?/, \"\") : \"\").split(\"&\").filter(function (e) {\n        return \"\" !== e;\n      })).length, t = 0; t < s; t += 1) {\n        i = a[t].replace(/#\\S+/g, \"\").split(\"=\"), r[decodeURIComponent(i[0])] = void 0 === i[1] ? void 0 : decodeURIComponent(i[1]) || \"\";\n      }\n      return r;\n    },\n    isObject: function isObject(e) {\n      return \"object\" == _typeof(e) && null !== e && e.constructor && e.constructor === Object;\n    },\n    extend: function extend() {\n      for (var e = [], t = arguments.length; t--;) {\n        e[t] = arguments[t];\n      }\n\n      for (var a = Object(e[0]), i = 1; i < e.length; i += 1) {\n        var s = e[i];\n        if (null != s) for (var r = Object.keys(Object(s)), n = 0, o = r.length; n < o; n += 1) {\n          var l = r[n],\n              d = Object.getOwnPropertyDescriptor(s, l);\n          void 0 !== d && d.enumerable && (ee.isObject(a[l]) && ee.isObject(s[l]) ? ee.extend(a[l], s[l]) : !ee.isObject(a[l]) && ee.isObject(s[l]) ? (a[l] = {}, ee.extend(a[l], s[l])) : a[l] = s[l]);\n        }\n      }\n\n      return a;\n    }\n  },\n      te = (i = f.createElement(\"div\"), {\n    touch: J.Modernizr && !0 === J.Modernizr.touch || !!(0 < J.navigator.maxTouchPoints || \"ontouchstart\" in J || J.DocumentTouch && f instanceof J.DocumentTouch),\n    pointerEvents: !!(J.navigator.pointerEnabled || J.PointerEvent || \"maxTouchPoints\" in J.navigator && 0 < J.navigator.maxTouchPoints),\n    prefixedPointerEvents: !!J.navigator.msPointerEnabled,\n    transition: (a = i.style, \"transition\" in a || \"webkitTransition\" in a || \"MozTransition\" in a),\n    transforms3d: J.Modernizr && !0 === J.Modernizr.csstransforms3d || (e = i.style, \"webkitPerspective\" in e || \"MozPerspective\" in e || \"OPerspective\" in e || \"MsPerspective\" in e || \"perspective\" in e),\n    flexbox: function () {\n      for (var e = i.style, t = \"alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient\".split(\" \"), a = 0; a < t.length; a += 1) {\n        if (t[a] in e) return !0;\n      }\n\n      return !1;\n    }(),\n    observer: \"MutationObserver\" in J || \"WebkitMutationObserver\" in J,\n    passiveListener: function () {\n      var e = !1;\n\n      try {\n        var t = Object.defineProperty({}, \"passive\", {\n          get: function get() {\n            e = !0;\n          }\n        });\n        J.addEventListener(\"testPassiveListener\", null, t);\n      } catch (e) {}\n\n      return e;\n    }(),\n    gestures: \"ongesturestart\" in J\n  }),\n      I = {\n    isIE: !!J.navigator.userAgent.match(/Trident/g) || !!J.navigator.userAgent.match(/MSIE/g),\n    isEdge: !!J.navigator.userAgent.match(/Edge/g),\n    isSafari: (s = J.navigator.userAgent.toLowerCase(), 0 <= s.indexOf(\"safari\") && s.indexOf(\"chrome\") < 0 && s.indexOf(\"android\") < 0),\n    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(J.navigator.userAgent)\n  },\n      n = function n(e) {\n    void 0 === e && (e = {});\n    var t = this;\n    t.params = e, t.eventsListeners = {}, t.params && t.params.on && Object.keys(t.params.on).forEach(function (e) {\n      t.on(e, t.params.on[e]);\n    });\n  },\n      o = {\n    components: {\n      configurable: !0\n    }\n  };\n\n  n.prototype.on = function (e, t, a) {\n    var i = this;\n    if (\"function\" != typeof t) return i;\n    var s = a ? \"unshift\" : \"push\";\n    return e.split(\" \").forEach(function (e) {\n      i.eventsListeners[e] || (i.eventsListeners[e] = []), i.eventsListeners[e][s](t);\n    }), i;\n  }, n.prototype.once = function (a, i, e) {\n    var s = this;\n    if (\"function\" != typeof i) return s;\n\n    function r() {\n      for (var e = [], t = arguments.length; t--;) {\n        e[t] = arguments[t];\n      }\n\n      i.apply(s, e), s.off(a, r), r.f7proxy && delete r.f7proxy;\n    }\n\n    return r.f7proxy = i, s.on(a, r, e);\n  }, n.prototype.off = function (e, i) {\n    var s = this;\n    return s.eventsListeners && e.split(\" \").forEach(function (a) {\n      void 0 === i ? s.eventsListeners[a] = [] : s.eventsListeners[a] && s.eventsListeners[a].length && s.eventsListeners[a].forEach(function (e, t) {\n        (e === i || e.f7proxy && e.f7proxy === i) && s.eventsListeners[a].splice(t, 1);\n      });\n    }), s;\n  }, n.prototype.emit = function () {\n    for (var e = [], t = arguments.length; t--;) {\n      e[t] = arguments[t];\n    }\n\n    var a,\n        i,\n        s,\n        r = this;\n    return r.eventsListeners && (\"string\" == typeof e[0] || Array.isArray(e[0]) ? (a = e[0], i = e.slice(1, e.length), s = r) : (a = e[0].events, i = e[0].data, s = e[0].context || r), (Array.isArray(a) ? a : a.split(\" \")).forEach(function (e) {\n      if (r.eventsListeners && r.eventsListeners[e]) {\n        var t = [];\n        r.eventsListeners[e].forEach(function (e) {\n          t.push(e);\n        }), t.forEach(function (e) {\n          e.apply(s, i);\n        });\n      }\n    })), r;\n  }, n.prototype.useModulesParams = function (a) {\n    var i = this;\n    i.modules && Object.keys(i.modules).forEach(function (e) {\n      var t = i.modules[e];\n      t.params && ee.extend(a, t.params);\n    });\n  }, n.prototype.useModules = function (i) {\n    void 0 === i && (i = {});\n    var s = this;\n    s.modules && Object.keys(s.modules).forEach(function (e) {\n      var a = s.modules[e],\n          t = i[e] || {};\n      a.instance && Object.keys(a.instance).forEach(function (e) {\n        var t = a.instance[e];\n        s[e] = \"function\" == typeof t ? t.bind(s) : t;\n      }), a.on && s.on && Object.keys(a.on).forEach(function (e) {\n        s.on(e, a.on[e]);\n      }), a.create && a.create.bind(s)(t);\n    });\n  }, o.components.set = function (e) {\n    this.use && this.use(e);\n  }, n.installModule = function (t) {\n    for (var e = [], a = arguments.length - 1; 0 < a--;) {\n      e[a] = arguments[a + 1];\n    }\n\n    var i = this;\n    i.prototype.modules || (i.prototype.modules = {});\n    var s = t.name || Object.keys(i.prototype.modules).length + \"_\" + ee.now();\n    return (i.prototype.modules[s] = t).proto && Object.keys(t.proto).forEach(function (e) {\n      i.prototype[e] = t.proto[e];\n    }), t.static && Object.keys(t.static).forEach(function (e) {\n      i[e] = t.static[e];\n    }), t.install && t.install.apply(i, e), i;\n  }, n.use = function (e) {\n    for (var t = [], a = arguments.length - 1; 0 < a--;) {\n      t[a] = arguments[a + 1];\n    }\n\n    var i = this;\n    return Array.isArray(e) ? (e.forEach(function (e) {\n      return i.installModule(e);\n    }), i) : i.installModule.apply(i, [e].concat(t));\n  }, Object.defineProperties(n, o);\n  var d = {\n    updateSize: function updateSize() {\n      var e,\n          t,\n          a = this,\n          i = a.$el;\n      e = void 0 !== a.params.width ? a.params.width : i[0].clientWidth, t = void 0 !== a.params.height ? a.params.height : i[0].clientHeight, 0 === e && a.isHorizontal() || 0 === t && a.isVertical() || (e = e - parseInt(i.css(\"padding-left\"), 10) - parseInt(i.css(\"padding-right\"), 10), t = t - parseInt(i.css(\"padding-top\"), 10) - parseInt(i.css(\"padding-bottom\"), 10), ee.extend(a, {\n        width: e,\n        height: t,\n        size: a.isHorizontal() ? e : t\n      }));\n    },\n    updateSlides: function updateSlides() {\n      var e = this,\n          t = e.params,\n          a = e.$wrapperEl,\n          i = e.size,\n          s = e.rtlTranslate,\n          r = e.wrongRTL,\n          n = e.virtual && t.virtual.enabled,\n          o = n ? e.virtual.slides.length : e.slides.length,\n          l = a.children(\".\" + e.params.slideClass),\n          d = n ? e.virtual.slides.length : l.length,\n          p = [],\n          c = [],\n          u = [],\n          h = t.slidesOffsetBefore;\n      \"function\" == typeof h && (h = t.slidesOffsetBefore.call(e));\n      var v = t.slidesOffsetAfter;\n      \"function\" == typeof v && (v = t.slidesOffsetAfter.call(e));\n      var f = e.snapGrid.length,\n          m = e.snapGrid.length,\n          g = t.spaceBetween,\n          b = -h,\n          w = 0,\n          y = 0;\n\n      if (void 0 !== i) {\n        var x, T;\n        \"string\" == typeof g && 0 <= g.indexOf(\"%\") && (g = parseFloat(g.replace(\"%\", \"\")) / 100 * i), e.virtualSize = -g, s ? l.css({\n          marginLeft: \"\",\n          marginTop: \"\"\n        }) : l.css({\n          marginRight: \"\",\n          marginBottom: \"\"\n        }), 1 < t.slidesPerColumn && (x = Math.floor(d / t.slidesPerColumn) === d / e.params.slidesPerColumn ? d : Math.ceil(d / t.slidesPerColumn) * t.slidesPerColumn, \"auto\" !== t.slidesPerView && \"row\" === t.slidesPerColumnFill && (x = Math.max(x, t.slidesPerView * t.slidesPerColumn)));\n\n        for (var E, S = t.slidesPerColumn, C = x / S, M = Math.floor(d / t.slidesPerColumn), z = 0; z < d; z += 1) {\n          T = 0;\n          var P = l.eq(z);\n\n          if (1 < t.slidesPerColumn) {\n            var k = void 0,\n                $ = void 0,\n                L = void 0;\n            \"column\" === t.slidesPerColumnFill ? (L = z - ($ = Math.floor(z / S)) * S, (M < $ || $ === M && L === S - 1) && S <= (L += 1) && (L = 0, $ += 1), k = $ + L * x / S, P.css({\n              \"-webkit-box-ordinal-group\": k,\n              \"-moz-box-ordinal-group\": k,\n              \"-ms-flex-order\": k,\n              \"-webkit-order\": k,\n              order: k\n            })) : $ = z - (L = Math.floor(z / C)) * C, P.css(\"margin-\" + (e.isHorizontal() ? \"top\" : \"left\"), 0 !== L && t.spaceBetween && t.spaceBetween + \"px\").attr(\"data-swiper-column\", $).attr(\"data-swiper-row\", L);\n          }\n\n          if (\"none\" !== P.css(\"display\")) {\n            if (\"auto\" === t.slidesPerView) {\n              var I = J.getComputedStyle(P[0], null),\n                  D = P[0].style.transform,\n                  O = P[0].style.webkitTransform;\n              if (D && (P[0].style.transform = \"none\"), O && (P[0].style.webkitTransform = \"none\"), t.roundLengths) T = e.isHorizontal() ? P.outerWidth(!0) : P.outerHeight(!0);else if (e.isHorizontal()) {\n                var A = parseFloat(I.getPropertyValue(\"width\")),\n                    H = parseFloat(I.getPropertyValue(\"padding-left\")),\n                    N = parseFloat(I.getPropertyValue(\"padding-right\")),\n                    G = parseFloat(I.getPropertyValue(\"margin-left\")),\n                    B = parseFloat(I.getPropertyValue(\"margin-right\")),\n                    X = I.getPropertyValue(\"box-sizing\");\n                T = X && \"border-box\" === X ? A + G + B : A + H + N + G + B;\n              } else {\n                var Y = parseFloat(I.getPropertyValue(\"height\")),\n                    V = parseFloat(I.getPropertyValue(\"padding-top\")),\n                    F = parseFloat(I.getPropertyValue(\"padding-bottom\")),\n                    R = parseFloat(I.getPropertyValue(\"margin-top\")),\n                    q = parseFloat(I.getPropertyValue(\"margin-bottom\")),\n                    W = I.getPropertyValue(\"box-sizing\");\n                T = W && \"border-box\" === W ? Y + R + q : Y + V + F + R + q;\n              }\n              D && (P[0].style.transform = D), O && (P[0].style.webkitTransform = O), t.roundLengths && (T = Math.floor(T));\n            } else T = (i - (t.slidesPerView - 1) * g) / t.slidesPerView, t.roundLengths && (T = Math.floor(T)), l[z] && (e.isHorizontal() ? l[z].style.width = T + \"px\" : l[z].style.height = T + \"px\");\n\n            l[z] && (l[z].swiperSlideSize = T), u.push(T), t.centeredSlides ? (b = b + T / 2 + w / 2 + g, 0 === w && 0 !== z && (b = b - i / 2 - g), 0 === z && (b = b - i / 2 - g), Math.abs(b) < .001 && (b = 0), t.roundLengths && (b = Math.floor(b)), y % t.slidesPerGroup == 0 && p.push(b), c.push(b)) : (t.roundLengths && (b = Math.floor(b)), y % t.slidesPerGroup == 0 && p.push(b), c.push(b), b = b + T + g), e.virtualSize += T + g, w = T, y += 1;\n          }\n        }\n\n        if (e.virtualSize = Math.max(e.virtualSize, i) + v, s && r && (\"slide\" === t.effect || \"coverflow\" === t.effect) && a.css({\n          width: e.virtualSize + t.spaceBetween + \"px\"\n        }), te.flexbox && !t.setWrapperSize || (e.isHorizontal() ? a.css({\n          width: e.virtualSize + t.spaceBetween + \"px\"\n        }) : a.css({\n          height: e.virtualSize + t.spaceBetween + \"px\"\n        })), 1 < t.slidesPerColumn && (e.virtualSize = (T + t.spaceBetween) * x, e.virtualSize = Math.ceil(e.virtualSize / t.slidesPerColumn) - t.spaceBetween, e.isHorizontal() ? a.css({\n          width: e.virtualSize + t.spaceBetween + \"px\"\n        }) : a.css({\n          height: e.virtualSize + t.spaceBetween + \"px\"\n        }), t.centeredSlides)) {\n          E = [];\n\n          for (var j = 0; j < p.length; j += 1) {\n            var U = p[j];\n            t.roundLengths && (U = Math.floor(U)), p[j] < e.virtualSize + p[0] && E.push(U);\n          }\n\n          p = E;\n        }\n\n        if (!t.centeredSlides) {\n          E = [];\n\n          for (var K = 0; K < p.length; K += 1) {\n            var _ = p[K];\n            t.roundLengths && (_ = Math.floor(_)), p[K] <= e.virtualSize - i && E.push(_);\n          }\n\n          p = E, 1 < Math.floor(e.virtualSize - i) - Math.floor(p[p.length - 1]) && p.push(e.virtualSize - i);\n        }\n\n        if (0 === p.length && (p = [0]), 0 !== t.spaceBetween && (e.isHorizontal() ? s ? l.css({\n          marginLeft: g + \"px\"\n        }) : l.css({\n          marginRight: g + \"px\"\n        }) : l.css({\n          marginBottom: g + \"px\"\n        })), t.centerInsufficientSlides) {\n          var Z = 0;\n\n          if (u.forEach(function (e) {\n            Z += e + (t.spaceBetween ? t.spaceBetween : 0);\n          }), (Z -= t.spaceBetween) < i) {\n            var Q = (i - Z) / 2;\n            p.forEach(function (e, t) {\n              p[t] = e - Q;\n            }), c.forEach(function (e, t) {\n              c[t] = e + Q;\n            });\n          }\n        }\n\n        ee.extend(e, {\n          slides: l,\n          snapGrid: p,\n          slidesGrid: c,\n          slidesSizesGrid: u\n        }), d !== o && e.emit(\"slidesLengthChange\"), p.length !== f && (e.params.watchOverflow && e.checkOverflow(), e.emit(\"snapGridLengthChange\")), c.length !== m && e.emit(\"slidesGridLengthChange\"), (t.watchSlidesProgress || t.watchSlidesVisibility) && e.updateSlidesOffset();\n      }\n    },\n    updateAutoHeight: function updateAutoHeight(e) {\n      var t,\n          a = this,\n          i = [],\n          s = 0;\n      if (\"number\" == typeof e ? a.setTransition(e) : !0 === e && a.setTransition(a.params.speed), \"auto\" !== a.params.slidesPerView && 1 < a.params.slidesPerView) for (t = 0; t < Math.ceil(a.params.slidesPerView); t += 1) {\n        var r = a.activeIndex + t;\n        if (r > a.slides.length) break;\n        i.push(a.slides.eq(r)[0]);\n      } else i.push(a.slides.eq(a.activeIndex)[0]);\n\n      for (t = 0; t < i.length; t += 1) {\n        if (void 0 !== i[t]) {\n          var n = i[t].offsetHeight;\n          s = s < n ? n : s;\n        }\n      }\n\n      s && a.$wrapperEl.css(\"height\", s + \"px\");\n    },\n    updateSlidesOffset: function updateSlidesOffset() {\n      for (var e = this.slides, t = 0; t < e.length; t += 1) {\n        e[t].swiperSlideOffset = this.isHorizontal() ? e[t].offsetLeft : e[t].offsetTop;\n      }\n    },\n    updateSlidesProgress: function updateSlidesProgress(e) {\n      void 0 === e && (e = this && this.translate || 0);\n      var t = this,\n          a = t.params,\n          i = t.slides,\n          s = t.rtlTranslate;\n\n      if (0 !== i.length) {\n        void 0 === i[0].swiperSlideOffset && t.updateSlidesOffset();\n        var r = -e;\n        s && (r = e), i.removeClass(a.slideVisibleClass), t.visibleSlidesIndexes = [], t.visibleSlides = [];\n\n        for (var n = 0; n < i.length; n += 1) {\n          var o = i[n],\n              l = (r + (a.centeredSlides ? t.minTranslate() : 0) - o.swiperSlideOffset) / (o.swiperSlideSize + a.spaceBetween);\n\n          if (a.watchSlidesVisibility) {\n            var d = -(r - o.swiperSlideOffset),\n                p = d + t.slidesSizesGrid[n];\n            (0 <= d && d < t.size || 0 < p && p <= t.size || d <= 0 && p >= t.size) && (t.visibleSlides.push(o), t.visibleSlidesIndexes.push(n), i.eq(n).addClass(a.slideVisibleClass));\n          }\n\n          o.progress = s ? -l : l;\n        }\n\n        t.visibleSlides = L(t.visibleSlides);\n      }\n    },\n    updateProgress: function updateProgress(e) {\n      void 0 === e && (e = this && this.translate || 0);\n      var t = this,\n          a = t.params,\n          i = t.maxTranslate() - t.minTranslate(),\n          s = t.progress,\n          r = t.isBeginning,\n          n = t.isEnd,\n          o = r,\n          l = n;\n      0 === i ? n = r = !(s = 0) : (r = (s = (e - t.minTranslate()) / i) <= 0, n = 1 <= s), ee.extend(t, {\n        progress: s,\n        isBeginning: r,\n        isEnd: n\n      }), (a.watchSlidesProgress || a.watchSlidesVisibility) && t.updateSlidesProgress(e), r && !o && t.emit(\"reachBeginning toEdge\"), n && !l && t.emit(\"reachEnd toEdge\"), (o && !r || l && !n) && t.emit(\"fromEdge\"), t.emit(\"progress\", s);\n    },\n    updateSlidesClasses: function updateSlidesClasses() {\n      var e,\n          t = this,\n          a = t.slides,\n          i = t.params,\n          s = t.$wrapperEl,\n          r = t.activeIndex,\n          n = t.realIndex,\n          o = t.virtual && i.virtual.enabled;\n      a.removeClass(i.slideActiveClass + \" \" + i.slideNextClass + \" \" + i.slidePrevClass + \" \" + i.slideDuplicateActiveClass + \" \" + i.slideDuplicateNextClass + \" \" + i.slideDuplicatePrevClass), (e = o ? t.$wrapperEl.find(\".\" + i.slideClass + '[data-swiper-slide-index=\"' + r + '\"]') : a.eq(r)).addClass(i.slideActiveClass), i.loop && (e.hasClass(i.slideDuplicateClass) ? s.children(\".\" + i.slideClass + \":not(.\" + i.slideDuplicateClass + ')[data-swiper-slide-index=\"' + n + '\"]').addClass(i.slideDuplicateActiveClass) : s.children(\".\" + i.slideClass + \".\" + i.slideDuplicateClass + '[data-swiper-slide-index=\"' + n + '\"]').addClass(i.slideDuplicateActiveClass));\n      var l = e.nextAll(\".\" + i.slideClass).eq(0).addClass(i.slideNextClass);\n      i.loop && 0 === l.length && (l = a.eq(0)).addClass(i.slideNextClass);\n      var d = e.prevAll(\".\" + i.slideClass).eq(0).addClass(i.slidePrevClass);\n      i.loop && 0 === d.length && (d = a.eq(-1)).addClass(i.slidePrevClass), i.loop && (l.hasClass(i.slideDuplicateClass) ? s.children(\".\" + i.slideClass + \":not(.\" + i.slideDuplicateClass + ')[data-swiper-slide-index=\"' + l.attr(\"data-swiper-slide-index\") + '\"]').addClass(i.slideDuplicateNextClass) : s.children(\".\" + i.slideClass + \".\" + i.slideDuplicateClass + '[data-swiper-slide-index=\"' + l.attr(\"data-swiper-slide-index\") + '\"]').addClass(i.slideDuplicateNextClass), d.hasClass(i.slideDuplicateClass) ? s.children(\".\" + i.slideClass + \":not(.\" + i.slideDuplicateClass + ')[data-swiper-slide-index=\"' + d.attr(\"data-swiper-slide-index\") + '\"]').addClass(i.slideDuplicatePrevClass) : s.children(\".\" + i.slideClass + \".\" + i.slideDuplicateClass + '[data-swiper-slide-index=\"' + d.attr(\"data-swiper-slide-index\") + '\"]').addClass(i.slideDuplicatePrevClass));\n    },\n    updateActiveIndex: function updateActiveIndex(e) {\n      var t,\n          a = this,\n          i = a.rtlTranslate ? a.translate : -a.translate,\n          s = a.slidesGrid,\n          r = a.snapGrid,\n          n = a.params,\n          o = a.activeIndex,\n          l = a.realIndex,\n          d = a.snapIndex,\n          p = e;\n\n      if (void 0 === p) {\n        for (var c = 0; c < s.length; c += 1) {\n          void 0 !== s[c + 1] ? i >= s[c] && i < s[c + 1] - (s[c + 1] - s[c]) / 2 ? p = c : i >= s[c] && i < s[c + 1] && (p = c + 1) : i >= s[c] && (p = c);\n        }\n\n        n.normalizeSlideIndex && (p < 0 || void 0 === p) && (p = 0);\n      }\n\n      if ((t = 0 <= r.indexOf(i) ? r.indexOf(i) : Math.floor(p / n.slidesPerGroup)) >= r.length && (t = r.length - 1), p !== o) {\n        var u = parseInt(a.slides.eq(p).attr(\"data-swiper-slide-index\") || p, 10);\n        ee.extend(a, {\n          snapIndex: t,\n          realIndex: u,\n          previousIndex: o,\n          activeIndex: p\n        }), a.emit(\"activeIndexChange\"), a.emit(\"snapIndexChange\"), l !== u && a.emit(\"realIndexChange\"), a.emit(\"slideChange\");\n      } else t !== d && (a.snapIndex = t, a.emit(\"snapIndexChange\"));\n    },\n    updateClickedSlide: function updateClickedSlide(e) {\n      var t = this,\n          a = t.params,\n          i = L(e.target).closest(\".\" + a.slideClass)[0],\n          s = !1;\n      if (i) for (var r = 0; r < t.slides.length; r += 1) {\n        t.slides[r] === i && (s = !0);\n      }\n      if (!i || !s) return t.clickedSlide = void 0, void (t.clickedIndex = void 0);\n      t.clickedSlide = i, t.virtual && t.params.virtual.enabled ? t.clickedIndex = parseInt(L(i).attr(\"data-swiper-slide-index\"), 10) : t.clickedIndex = L(i).index(), a.slideToClickedSlide && void 0 !== t.clickedIndex && t.clickedIndex !== t.activeIndex && t.slideToClickedSlide();\n    }\n  };\n  var p = {\n    getTranslate: function getTranslate(e) {\n      void 0 === e && (e = this.isHorizontal() ? \"x\" : \"y\");\n      var t = this.params,\n          a = this.rtlTranslate,\n          i = this.translate,\n          s = this.$wrapperEl;\n      if (t.virtualTranslate) return a ? -i : i;\n      var r = ee.getTranslate(s[0], e);\n      return a && (r = -r), r || 0;\n    },\n    setTranslate: function setTranslate(e, t) {\n      var a = this,\n          i = a.rtlTranslate,\n          s = a.params,\n          r = a.$wrapperEl,\n          n = a.progress,\n          o = 0,\n          l = 0;\n      a.isHorizontal() ? o = i ? -e : e : l = e, s.roundLengths && (o = Math.floor(o), l = Math.floor(l)), s.virtualTranslate || (te.transforms3d ? r.transform(\"translate3d(\" + o + \"px, \" + l + \"px, 0px)\") : r.transform(\"translate(\" + o + \"px, \" + l + \"px)\")), a.previousTranslate = a.translate, a.translate = a.isHorizontal() ? o : l;\n      var d = a.maxTranslate() - a.minTranslate();\n      (0 === d ? 0 : (e - a.minTranslate()) / d) !== n && a.updateProgress(e), a.emit(\"setTranslate\", a.translate, t);\n    },\n    minTranslate: function minTranslate() {\n      return -this.snapGrid[0];\n    },\n    maxTranslate: function maxTranslate() {\n      return -this.snapGrid[this.snapGrid.length - 1];\n    }\n  };\n  var c = {\n    setTransition: function setTransition(e, t) {\n      this.$wrapperEl.transition(e), this.emit(\"setTransition\", e, t);\n    },\n    transitionStart: function transitionStart(e, t) {\n      void 0 === e && (e = !0);\n      var a = this,\n          i = a.activeIndex,\n          s = a.params,\n          r = a.previousIndex;\n      s.autoHeight && a.updateAutoHeight();\n      var n = t;\n\n      if (n || (n = r < i ? \"next\" : i < r ? \"prev\" : \"reset\"), a.emit(\"transitionStart\"), e && i !== r) {\n        if (\"reset\" === n) return void a.emit(\"slideResetTransitionStart\");\n        a.emit(\"slideChangeTransitionStart\"), \"next\" === n ? a.emit(\"slideNextTransitionStart\") : a.emit(\"slidePrevTransitionStart\");\n      }\n    },\n    transitionEnd: function transitionEnd(e, t) {\n      void 0 === e && (e = !0);\n      var a = this,\n          i = a.activeIndex,\n          s = a.previousIndex;\n      a.animating = !1, a.setTransition(0);\n      var r = t;\n\n      if (r || (r = s < i ? \"next\" : i < s ? \"prev\" : \"reset\"), a.emit(\"transitionEnd\"), e && i !== s) {\n        if (\"reset\" === r) return void a.emit(\"slideResetTransitionEnd\");\n        a.emit(\"slideChangeTransitionEnd\"), \"next\" === r ? a.emit(\"slideNextTransitionEnd\") : a.emit(\"slidePrevTransitionEnd\");\n      }\n    }\n  };\n  var u = {\n    slideTo: function slideTo(e, t, a, i) {\n      void 0 === e && (e = 0), void 0 === t && (t = this.params.speed), void 0 === a && (a = !0);\n      var s = this,\n          r = e;\n      r < 0 && (r = 0);\n      var n = s.params,\n          o = s.snapGrid,\n          l = s.slidesGrid,\n          d = s.previousIndex,\n          p = s.activeIndex,\n          c = s.rtlTranslate;\n      if (s.animating && n.preventInteractionOnTransition) return !1;\n      var u = Math.floor(r / n.slidesPerGroup);\n      u >= o.length && (u = o.length - 1), (p || n.initialSlide || 0) === (d || 0) && a && s.emit(\"beforeSlideChangeStart\");\n      var h,\n          v = -o[u];\n      if (s.updateProgress(v), n.normalizeSlideIndex) for (var f = 0; f < l.length; f += 1) {\n        -Math.floor(100 * v) >= Math.floor(100 * l[f]) && (r = f);\n      }\n\n      if (s.initialized && r !== p) {\n        if (!s.allowSlideNext && v < s.translate && v < s.minTranslate()) return !1;\n        if (!s.allowSlidePrev && v > s.translate && v > s.maxTranslate() && (p || 0) !== r) return !1;\n      }\n\n      return h = p < r ? \"next\" : r < p ? \"prev\" : \"reset\", c && -v === s.translate || !c && v === s.translate ? (s.updateActiveIndex(r), n.autoHeight && s.updateAutoHeight(), s.updateSlidesClasses(), \"slide\" !== n.effect && s.setTranslate(v), \"reset\" !== h && (s.transitionStart(a, h), s.transitionEnd(a, h)), !1) : (0 !== t && te.transition ? (s.setTransition(t), s.setTranslate(v), s.updateActiveIndex(r), s.updateSlidesClasses(), s.emit(\"beforeTransitionStart\", t, i), s.transitionStart(a, h), s.animating || (s.animating = !0, s.onSlideToWrapperTransitionEnd || (s.onSlideToWrapperTransitionEnd = function (e) {\n        s && !s.destroyed && e.target === this && (s.$wrapperEl[0].removeEventListener(\"transitionend\", s.onSlideToWrapperTransitionEnd), s.$wrapperEl[0].removeEventListener(\"webkitTransitionEnd\", s.onSlideToWrapperTransitionEnd), s.onSlideToWrapperTransitionEnd = null, delete s.onSlideToWrapperTransitionEnd, s.transitionEnd(a, h));\n      }), s.$wrapperEl[0].addEventListener(\"transitionend\", s.onSlideToWrapperTransitionEnd), s.$wrapperEl[0].addEventListener(\"webkitTransitionEnd\", s.onSlideToWrapperTransitionEnd))) : (s.setTransition(0), s.setTranslate(v), s.updateActiveIndex(r), s.updateSlidesClasses(), s.emit(\"beforeTransitionStart\", t, i), s.transitionStart(a, h), s.transitionEnd(a, h)), !0);\n    },\n    slideToLoop: function slideToLoop(e, t, a, i) {\n      void 0 === e && (e = 0), void 0 === t && (t = this.params.speed), void 0 === a && (a = !0);\n      var s = e;\n      return this.params.loop && (s += this.loopedSlides), this.slideTo(s, t, a, i);\n    },\n    slideNext: function slideNext(e, t, a) {\n      void 0 === e && (e = this.params.speed), void 0 === t && (t = !0);\n      var i = this,\n          s = i.params,\n          r = i.animating;\n      return s.loop ? !r && (i.loopFix(), i._clientLeft = i.$wrapperEl[0].clientLeft, i.slideTo(i.activeIndex + s.slidesPerGroup, e, t, a)) : i.slideTo(i.activeIndex + s.slidesPerGroup, e, t, a);\n    },\n    slidePrev: function slidePrev(e, t, a) {\n      void 0 === e && (e = this.params.speed), void 0 === t && (t = !0);\n      var i = this,\n          s = i.params,\n          r = i.animating,\n          n = i.snapGrid,\n          o = i.slidesGrid,\n          l = i.rtlTranslate;\n\n      if (s.loop) {\n        if (r) return !1;\n        i.loopFix(), i._clientLeft = i.$wrapperEl[0].clientLeft;\n      }\n\n      function d(e) {\n        return e < 0 ? -Math.floor(Math.abs(e)) : Math.floor(e);\n      }\n\n      var p,\n          c = d(l ? i.translate : -i.translate),\n          u = n.map(function (e) {\n        return d(e);\n      }),\n          h = (o.map(function (e) {\n        return d(e);\n      }), n[u.indexOf(c)], n[u.indexOf(c) - 1]);\n      return void 0 !== h && (p = o.indexOf(h)) < 0 && (p = i.activeIndex - 1), i.slideTo(p, e, t, a);\n    },\n    slideReset: function slideReset(e, t, a) {\n      return void 0 === e && (e = this.params.speed), void 0 === t && (t = !0), this.slideTo(this.activeIndex, e, t, a);\n    },\n    slideToClosest: function slideToClosest(e, t, a) {\n      void 0 === e && (e = this.params.speed), void 0 === t && (t = !0);\n      var i = this,\n          s = i.activeIndex,\n          r = Math.floor(s / i.params.slidesPerGroup);\n\n      if (r < i.snapGrid.length - 1) {\n        var n = i.rtlTranslate ? i.translate : -i.translate,\n            o = i.snapGrid[r];\n        (i.snapGrid[r + 1] - o) / 2 < n - o && (s = i.params.slidesPerGroup);\n      }\n\n      return i.slideTo(s, e, t, a);\n    },\n    slideToClickedSlide: function slideToClickedSlide() {\n      var e,\n          t = this,\n          a = t.params,\n          i = t.$wrapperEl,\n          s = \"auto\" === a.slidesPerView ? t.slidesPerViewDynamic() : a.slidesPerView,\n          r = t.clickedIndex;\n\n      if (a.loop) {\n        if (t.animating) return;\n        e = parseInt(L(t.clickedSlide).attr(\"data-swiper-slide-index\"), 10), a.centeredSlides ? r < t.loopedSlides - s / 2 || r > t.slides.length - t.loopedSlides + s / 2 ? (t.loopFix(), r = i.children(\".\" + a.slideClass + '[data-swiper-slide-index=\"' + e + '\"]:not(.' + a.slideDuplicateClass + \")\").eq(0).index(), ee.nextTick(function () {\n          t.slideTo(r);\n        })) : t.slideTo(r) : r > t.slides.length - s ? (t.loopFix(), r = i.children(\".\" + a.slideClass + '[data-swiper-slide-index=\"' + e + '\"]:not(.' + a.slideDuplicateClass + \")\").eq(0).index(), ee.nextTick(function () {\n          t.slideTo(r);\n        })) : t.slideTo(r);\n      } else t.slideTo(r);\n    }\n  };\n  var h = {\n    loopCreate: function loopCreate() {\n      var i = this,\n          e = i.params,\n          t = i.$wrapperEl;\n      t.children(\".\" + e.slideClass + \".\" + e.slideDuplicateClass).remove();\n      var s = t.children(\".\" + e.slideClass);\n\n      if (e.loopFillGroupWithBlank) {\n        var a = e.slidesPerGroup - s.length % e.slidesPerGroup;\n\n        if (a !== e.slidesPerGroup) {\n          for (var r = 0; r < a; r += 1) {\n            var n = L(f.createElement(\"div\")).addClass(e.slideClass + \" \" + e.slideBlankClass);\n            t.append(n);\n          }\n\n          s = t.children(\".\" + e.slideClass);\n        }\n      }\n\n      \"auto\" !== e.slidesPerView || e.loopedSlides || (e.loopedSlides = s.length), i.loopedSlides = parseInt(e.loopedSlides || e.slidesPerView, 10), i.loopedSlides += e.loopAdditionalSlides, i.loopedSlides > s.length && (i.loopedSlides = s.length);\n      var o = [],\n          l = [];\n      s.each(function (e, t) {\n        var a = L(t);\n        e < i.loopedSlides && l.push(t), e < s.length && e >= s.length - i.loopedSlides && o.push(t), a.attr(\"data-swiper-slide-index\", e);\n      });\n\n      for (var d = 0; d < l.length; d += 1) {\n        t.append(L(l[d].cloneNode(!0)).addClass(e.slideDuplicateClass));\n      }\n\n      for (var p = o.length - 1; 0 <= p; p -= 1) {\n        t.prepend(L(o[p].cloneNode(!0)).addClass(e.slideDuplicateClass));\n      }\n    },\n    loopFix: function loopFix() {\n      var e,\n          t = this,\n          a = t.params,\n          i = t.activeIndex,\n          s = t.slides,\n          r = t.loopedSlides,\n          n = t.allowSlidePrev,\n          o = t.allowSlideNext,\n          l = t.snapGrid,\n          d = t.rtlTranslate;\n      t.allowSlidePrev = !0, t.allowSlideNext = !0;\n      var p = -l[i] - t.getTranslate();\n      i < r ? (e = s.length - 3 * r + i, e += r, t.slideTo(e, 0, !1, !0) && 0 !== p && t.setTranslate((d ? -t.translate : t.translate) - p)) : (\"auto\" === a.slidesPerView && 2 * r <= i || i >= s.length - r) && (e = -s.length + i + r, e += r, t.slideTo(e, 0, !1, !0) && 0 !== p && t.setTranslate((d ? -t.translate : t.translate) - p));\n      t.allowSlidePrev = n, t.allowSlideNext = o;\n    },\n    loopDestroy: function loopDestroy() {\n      var e = this.$wrapperEl,\n          t = this.params,\n          a = this.slides;\n      e.children(\".\" + t.slideClass + \".\" + t.slideDuplicateClass + \",.\" + t.slideClass + \".\" + t.slideBlankClass).remove(), a.removeAttr(\"data-swiper-slide-index\");\n    }\n  };\n  var v = {\n    setGrabCursor: function setGrabCursor(e) {\n      if (!(te.touch || !this.params.simulateTouch || this.params.watchOverflow && this.isLocked)) {\n        var t = this.el;\n        t.style.cursor = \"move\", t.style.cursor = e ? \"-webkit-grabbing\" : \"-webkit-grab\", t.style.cursor = e ? \"-moz-grabbin\" : \"-moz-grab\", t.style.cursor = e ? \"grabbing\" : \"grab\";\n      }\n    },\n    unsetGrabCursor: function unsetGrabCursor() {\n      te.touch || this.params.watchOverflow && this.isLocked || (this.el.style.cursor = \"\");\n    }\n  };\n\n  var m = {\n    appendSlide: function appendSlide(e) {\n      var t = this,\n          a = t.$wrapperEl,\n          i = t.params;\n      if (i.loop && t.loopDestroy(), \"object\" == _typeof(e) && \"length\" in e) for (var s = 0; s < e.length; s += 1) {\n        e[s] && a.append(e[s]);\n      } else a.append(e);\n      i.loop && t.loopCreate(), i.observer && te.observer || t.update();\n    },\n    prependSlide: function prependSlide(e) {\n      var t = this,\n          a = t.params,\n          i = t.$wrapperEl,\n          s = t.activeIndex;\n      a.loop && t.loopDestroy();\n      var r = s + 1;\n\n      if (\"object\" == _typeof(e) && \"length\" in e) {\n        for (var n = 0; n < e.length; n += 1) {\n          e[n] && i.prepend(e[n]);\n        }\n\n        r = s + e.length;\n      } else i.prepend(e);\n\n      a.loop && t.loopCreate(), a.observer && te.observer || t.update(), t.slideTo(r, 0, !1);\n    },\n    addSlide: function addSlide(e, t) {\n      var a = this,\n          i = a.$wrapperEl,\n          s = a.params,\n          r = a.activeIndex;\n      s.loop && (r -= a.loopedSlides, a.loopDestroy(), a.slides = i.children(\".\" + s.slideClass));\n      var n = a.slides.length;\n      if (e <= 0) a.prependSlide(t);else if (n <= e) a.appendSlide(t);else {\n        for (var o = e < r ? r + 1 : r, l = [], d = n - 1; e <= d; d -= 1) {\n          var p = a.slides.eq(d);\n          p.remove(), l.unshift(p);\n        }\n\n        if (\"object\" == _typeof(t) && \"length\" in t) {\n          for (var c = 0; c < t.length; c += 1) {\n            t[c] && i.append(t[c]);\n          }\n\n          o = e < r ? r + t.length : r;\n        } else i.append(t);\n\n        for (var u = 0; u < l.length; u += 1) {\n          i.append(l[u]);\n        }\n\n        s.loop && a.loopCreate(), s.observer && te.observer || a.update(), s.loop ? a.slideTo(o + a.loopedSlides, 0, !1) : a.slideTo(o, 0, !1);\n      }\n    },\n    removeSlide: function removeSlide(e) {\n      var t = this,\n          a = t.params,\n          i = t.$wrapperEl,\n          s = t.activeIndex;\n      a.loop && (s -= t.loopedSlides, t.loopDestroy(), t.slides = i.children(\".\" + a.slideClass));\n      var r,\n          n = s;\n\n      if (\"object\" == _typeof(e) && \"length\" in e) {\n        for (var o = 0; o < e.length; o += 1) {\n          r = e[o], t.slides[r] && t.slides.eq(r).remove(), r < n && (n -= 1);\n        }\n\n        n = Math.max(n, 0);\n      } else r = e, t.slides[r] && t.slides.eq(r).remove(), r < n && (n -= 1), n = Math.max(n, 0);\n\n      a.loop && t.loopCreate(), a.observer && te.observer || t.update(), a.loop ? t.slideTo(n + t.loopedSlides, 0, !1) : t.slideTo(n, 0, !1);\n    },\n    removeAllSlides: function removeAllSlides() {\n      for (var e = [], t = 0; t < this.slides.length; t += 1) {\n        e.push(t);\n      }\n\n      this.removeSlide(e);\n    }\n  },\n      g = function () {\n    var e = J.navigator.userAgent,\n        t = {\n      ios: !1,\n      android: !1,\n      androidChrome: !1,\n      desktop: !1,\n      windows: !1,\n      iphone: !1,\n      ipod: !1,\n      ipad: !1,\n      cordova: J.cordova || J.phonegap,\n      phonegap: J.cordova || J.phonegap\n    },\n        a = e.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/),\n        i = e.match(/(Android);?[\\s\\/]+([\\d.]+)?/),\n        s = e.match(/(iPad).*OS\\s([\\d_]+)/),\n        r = e.match(/(iPod)(.*OS\\s([\\d_]+))?/),\n        n = !s && e.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n\n    if (a && (t.os = \"windows\", t.osVersion = a[2], t.windows = !0), i && !a && (t.os = \"android\", t.osVersion = i[2], t.android = !0, t.androidChrome = 0 <= e.toLowerCase().indexOf(\"chrome\")), (s || n || r) && (t.os = \"ios\", t.ios = !0), n && !r && (t.osVersion = n[2].replace(/_/g, \".\"), t.iphone = !0), s && (t.osVersion = s[2].replace(/_/g, \".\"), t.ipad = !0), r && (t.osVersion = r[3] ? r[3].replace(/_/g, \".\") : null, t.iphone = !0), t.ios && t.osVersion && 0 <= e.indexOf(\"Version/\") && \"10\" === t.osVersion.split(\".\")[0] && (t.osVersion = e.toLowerCase().split(\"version/\")[1].split(\" \")[0]), t.desktop = !(t.os || t.android || t.webView), t.webView = (n || s || r) && e.match(/.*AppleWebKit(?!.*Safari)/i), t.os && \"ios\" === t.os) {\n      var o = t.osVersion.split(\".\"),\n          l = f.querySelector('meta[name=\"viewport\"]');\n      t.minimalUi = !t.webView && (r || n) && (1 * o[0] == 7 ? 1 <= 1 * o[1] : 7 < 1 * o[0]) && l && 0 <= l.getAttribute(\"content\").indexOf(\"minimal-ui\");\n    }\n\n    return t.pixelRatio = J.devicePixelRatio || 1, t;\n  }();\n\n  function b() {\n    var e = this,\n        t = e.params,\n        a = e.el;\n\n    if (!a || 0 !== a.offsetWidth) {\n      t.breakpoints && e.setBreakpoint();\n      var i = e.allowSlideNext,\n          s = e.allowSlidePrev,\n          r = e.snapGrid;\n\n      if (e.allowSlideNext = !0, e.allowSlidePrev = !0, e.updateSize(), e.updateSlides(), t.freeMode) {\n        var n = Math.min(Math.max(e.translate, e.maxTranslate()), e.minTranslate());\n        e.setTranslate(n), e.updateActiveIndex(), e.updateSlidesClasses(), t.autoHeight && e.updateAutoHeight();\n      } else e.updateSlidesClasses(), (\"auto\" === t.slidesPerView || 1 < t.slidesPerView) && e.isEnd && !e.params.centeredSlides ? e.slideTo(e.slides.length - 1, 0, !1, !0) : e.slideTo(e.activeIndex, 0, !1, !0);\n\n      e.allowSlidePrev = s, e.allowSlideNext = i, e.params.watchOverflow && r !== e.snapGrid && e.checkOverflow();\n    }\n  }\n\n  var w = {\n    init: !0,\n    direction: \"horizontal\",\n    touchEventsTarget: \"container\",\n    initialSlide: 0,\n    speed: 300,\n    preventInteractionOnTransition: !1,\n    edgeSwipeDetection: !1,\n    edgeSwipeThreshold: 20,\n    freeMode: !1,\n    freeModeMomentum: !0,\n    freeModeMomentumRatio: 1,\n    freeModeMomentumBounce: !0,\n    freeModeMomentumBounceRatio: 1,\n    freeModeMomentumVelocityRatio: 1,\n    freeModeSticky: !1,\n    freeModeMinimumVelocity: .02,\n    autoHeight: !1,\n    setWrapperSize: !1,\n    virtualTranslate: !1,\n    effect: \"slide\",\n    breakpoints: void 0,\n    breakpointsInverse: !1,\n    spaceBetween: 0,\n    slidesPerView: 1,\n    slidesPerColumn: 1,\n    slidesPerColumnFill: \"column\",\n    slidesPerGroup: 1,\n    centeredSlides: !1,\n    slidesOffsetBefore: 0,\n    slidesOffsetAfter: 0,\n    normalizeSlideIndex: !0,\n    centerInsufficientSlides: !1,\n    watchOverflow: !1,\n    roundLengths: !1,\n    touchRatio: 1,\n    touchAngle: 45,\n    simulateTouch: !0,\n    shortSwipes: !0,\n    longSwipes: !0,\n    longSwipesRatio: .5,\n    longSwipesMs: 300,\n    followFinger: !0,\n    allowTouchMove: !0,\n    threshold: 0,\n    touchMoveStopPropagation: !0,\n    touchStartPreventDefault: !0,\n    touchStartForcePreventDefault: !1,\n    touchReleaseOnEdges: !1,\n    uniqueNavElements: !0,\n    resistance: !0,\n    resistanceRatio: .85,\n    watchSlidesProgress: !1,\n    watchSlidesVisibility: !1,\n    grabCursor: !1,\n    preventClicks: !0,\n    preventClicksPropagation: !0,\n    slideToClickedSlide: !1,\n    preloadImages: !0,\n    updateOnImagesReady: !0,\n    loop: !1,\n    loopAdditionalSlides: 0,\n    loopedSlides: null,\n    loopFillGroupWithBlank: !1,\n    allowSlidePrev: !0,\n    allowSlideNext: !0,\n    swipeHandler: null,\n    noSwiping: !0,\n    noSwipingClass: \"swiper-no-swiping\",\n    noSwipingSelector: null,\n    passiveListeners: !0,\n    containerModifierClass: \"swiper-container-\",\n    slideClass: \"swiper-slide\",\n    slideBlankClass: \"swiper-slide-invisible-blank\",\n    slideActiveClass: \"swiper-slide-active\",\n    slideDuplicateActiveClass: \"swiper-slide-duplicate-active\",\n    slideVisibleClass: \"swiper-slide-visible\",\n    slideDuplicateClass: \"swiper-slide-duplicate\",\n    slideNextClass: \"swiper-slide-next\",\n    slideDuplicateNextClass: \"swiper-slide-duplicate-next\",\n    slidePrevClass: \"swiper-slide-prev\",\n    slideDuplicatePrevClass: \"swiper-slide-duplicate-prev\",\n    wrapperClass: \"swiper-wrapper\",\n    runCallbacksOnInit: !0\n  },\n      y = {\n    update: d,\n    translate: p,\n    transition: c,\n    slide: u,\n    loop: h,\n    grabCursor: v,\n    manipulation: m,\n    events: {\n      attachEvents: function attachEvents() {\n        var e = this,\n            t = e.params,\n            a = e.touchEvents,\n            i = e.el,\n            s = e.wrapperEl;\n        e.onTouchStart = function (e) {\n          var t = this,\n              a = t.touchEventsData,\n              i = t.params,\n              s = t.touches;\n\n          if (!t.animating || !i.preventInteractionOnTransition) {\n            var r = e;\n            if (r.originalEvent && (r = r.originalEvent), a.isTouchEvent = \"touchstart\" === r.type, (a.isTouchEvent || !(\"which\" in r) || 3 !== r.which) && !(!a.isTouchEvent && \"button\" in r && 0 < r.button || a.isTouched && a.isMoved)) if (i.noSwiping && L(r.target).closest(i.noSwipingSelector ? i.noSwipingSelector : \".\" + i.noSwipingClass)[0]) t.allowClick = !0;else if (!i.swipeHandler || L(r).closest(i.swipeHandler)[0]) {\n              s.currentX = \"touchstart\" === r.type ? r.targetTouches[0].pageX : r.pageX, s.currentY = \"touchstart\" === r.type ? r.targetTouches[0].pageY : r.pageY;\n              var n = s.currentX,\n                  o = s.currentY,\n                  l = i.edgeSwipeDetection || i.iOSEdgeSwipeDetection,\n                  d = i.edgeSwipeThreshold || i.iOSEdgeSwipeThreshold;\n\n              if (!l || !(n <= d || n >= J.screen.width - d)) {\n                if (ee.extend(a, {\n                  isTouched: !0,\n                  isMoved: !1,\n                  allowTouchCallbacks: !0,\n                  isScrolling: void 0,\n                  startMoving: void 0\n                }), s.startX = n, s.startY = o, a.touchStartTime = ee.now(), t.allowClick = !0, t.updateSize(), t.swipeDirection = void 0, 0 < i.threshold && (a.allowThresholdMove = !1), \"touchstart\" !== r.type) {\n                  var p = !0;\n                  L(r.target).is(a.formElements) && (p = !1), f.activeElement && L(f.activeElement).is(a.formElements) && f.activeElement !== r.target && f.activeElement.blur();\n                  var c = p && t.allowTouchMove && i.touchStartPreventDefault;\n                  (i.touchStartForcePreventDefault || c) && r.preventDefault();\n                }\n\n                t.emit(\"touchStart\", r);\n              }\n            }\n          }\n        }.bind(e), e.onTouchMove = function (e) {\n          var t = this,\n              a = t.touchEventsData,\n              i = t.params,\n              s = t.touches,\n              r = t.rtlTranslate,\n              n = e;\n\n          if (n.originalEvent && (n = n.originalEvent), a.isTouched) {\n            if (!a.isTouchEvent || \"mousemove\" !== n.type) {\n              var o = \"touchmove\" === n.type ? n.targetTouches[0].pageX : n.pageX,\n                  l = \"touchmove\" === n.type ? n.targetTouches[0].pageY : n.pageY;\n              if (n.preventedByNestedSwiper) return s.startX = o, void (s.startY = l);\n              if (!t.allowTouchMove) return t.allowClick = !1, void (a.isTouched && (ee.extend(s, {\n                startX: o,\n                startY: l,\n                currentX: o,\n                currentY: l\n              }), a.touchStartTime = ee.now()));\n              if (a.isTouchEvent && i.touchReleaseOnEdges && !i.loop) if (t.isVertical()) {\n                if (l < s.startY && t.translate <= t.maxTranslate() || l > s.startY && t.translate >= t.minTranslate()) return a.isTouched = !1, void (a.isMoved = !1);\n              } else if (o < s.startX && t.translate <= t.maxTranslate() || o > s.startX && t.translate >= t.minTranslate()) return;\n              if (a.isTouchEvent && f.activeElement && n.target === f.activeElement && L(n.target).is(a.formElements)) return a.isMoved = !0, void (t.allowClick = !1);\n\n              if (a.allowTouchCallbacks && t.emit(\"touchMove\", n), !(n.targetTouches && 1 < n.targetTouches.length)) {\n                s.currentX = o, s.currentY = l;\n                var d,\n                    p = s.currentX - s.startX,\n                    c = s.currentY - s.startY;\n                if (!(t.params.threshold && Math.sqrt(Math.pow(p, 2) + Math.pow(c, 2)) < t.params.threshold)) if (void 0 === a.isScrolling && (t.isHorizontal() && s.currentY === s.startY || t.isVertical() && s.currentX === s.startX ? a.isScrolling = !1 : 25 <= p * p + c * c && (d = 180 * Math.atan2(Math.abs(c), Math.abs(p)) / Math.PI, a.isScrolling = t.isHorizontal() ? d > i.touchAngle : 90 - d > i.touchAngle)), a.isScrolling && t.emit(\"touchMoveOpposite\", n), void 0 === a.startMoving && (s.currentX === s.startX && s.currentY === s.startY || (a.startMoving = !0)), a.isScrolling) a.isTouched = !1;else if (a.startMoving) {\n                  t.allowClick = !1, n.preventDefault(), i.touchMoveStopPropagation && !i.nested && n.stopPropagation(), a.isMoved || (i.loop && t.loopFix(), a.startTranslate = t.getTranslate(), t.setTransition(0), t.animating && t.$wrapperEl.trigger(\"webkitTransitionEnd transitionend\"), a.allowMomentumBounce = !1, !i.grabCursor || !0 !== t.allowSlideNext && !0 !== t.allowSlidePrev || t.setGrabCursor(!0), t.emit(\"sliderFirstMove\", n)), t.emit(\"sliderMove\", n), a.isMoved = !0;\n                  var u = t.isHorizontal() ? p : c;\n                  s.diff = u, u *= i.touchRatio, r && (u = -u), t.swipeDirection = 0 < u ? \"prev\" : \"next\", a.currentTranslate = u + a.startTranslate;\n                  var h = !0,\n                      v = i.resistanceRatio;\n\n                  if (i.touchReleaseOnEdges && (v = 0), 0 < u && a.currentTranslate > t.minTranslate() ? (h = !1, i.resistance && (a.currentTranslate = t.minTranslate() - 1 + Math.pow(-t.minTranslate() + a.startTranslate + u, v))) : u < 0 && a.currentTranslate < t.maxTranslate() && (h = !1, i.resistance && (a.currentTranslate = t.maxTranslate() + 1 - Math.pow(t.maxTranslate() - a.startTranslate - u, v))), h && (n.preventedByNestedSwiper = !0), !t.allowSlideNext && \"next\" === t.swipeDirection && a.currentTranslate < a.startTranslate && (a.currentTranslate = a.startTranslate), !t.allowSlidePrev && \"prev\" === t.swipeDirection && a.currentTranslate > a.startTranslate && (a.currentTranslate = a.startTranslate), 0 < i.threshold) {\n                    if (!(Math.abs(u) > i.threshold || a.allowThresholdMove)) return void (a.currentTranslate = a.startTranslate);\n                    if (!a.allowThresholdMove) return a.allowThresholdMove = !0, s.startX = s.currentX, s.startY = s.currentY, a.currentTranslate = a.startTranslate, void (s.diff = t.isHorizontal() ? s.currentX - s.startX : s.currentY - s.startY);\n                  }\n\n                  i.followFinger && ((i.freeMode || i.watchSlidesProgress || i.watchSlidesVisibility) && (t.updateActiveIndex(), t.updateSlidesClasses()), i.freeMode && (0 === a.velocities.length && a.velocities.push({\n                    position: s[t.isHorizontal() ? \"startX\" : \"startY\"],\n                    time: a.touchStartTime\n                  }), a.velocities.push({\n                    position: s[t.isHorizontal() ? \"currentX\" : \"currentY\"],\n                    time: ee.now()\n                  })), t.updateProgress(a.currentTranslate), t.setTranslate(a.currentTranslate));\n                }\n              }\n            }\n          } else a.startMoving && a.isScrolling && t.emit(\"touchMoveOpposite\", n);\n        }.bind(e), e.onTouchEnd = function (e) {\n          var t = this,\n              a = t.touchEventsData,\n              i = t.params,\n              s = t.touches,\n              r = t.rtlTranslate,\n              n = t.$wrapperEl,\n              o = t.slidesGrid,\n              l = t.snapGrid,\n              d = e;\n          if (d.originalEvent && (d = d.originalEvent), a.allowTouchCallbacks && t.emit(\"touchEnd\", d), a.allowTouchCallbacks = !1, !a.isTouched) return a.isMoved && i.grabCursor && t.setGrabCursor(!1), a.isMoved = !1, void (a.startMoving = !1);\n          i.grabCursor && a.isMoved && a.isTouched && (!0 === t.allowSlideNext || !0 === t.allowSlidePrev) && t.setGrabCursor(!1);\n          var p,\n              c = ee.now(),\n              u = c - a.touchStartTime;\n          if (t.allowClick && (t.updateClickedSlide(d), t.emit(\"tap\", d), u < 300 && 300 < c - a.lastClickTime && (a.clickTimeout && clearTimeout(a.clickTimeout), a.clickTimeout = ee.nextTick(function () {\n            t && !t.destroyed && t.emit(\"click\", d);\n          }, 300)), u < 300 && c - a.lastClickTime < 300 && (a.clickTimeout && clearTimeout(a.clickTimeout), t.emit(\"doubleTap\", d))), a.lastClickTime = ee.now(), ee.nextTick(function () {\n            t.destroyed || (t.allowClick = !0);\n          }), !a.isTouched || !a.isMoved || !t.swipeDirection || 0 === s.diff || a.currentTranslate === a.startTranslate) return a.isTouched = !1, a.isMoved = !1, void (a.startMoving = !1);\n\n          if (a.isTouched = !1, a.isMoved = !1, a.startMoving = !1, p = i.followFinger ? r ? t.translate : -t.translate : -a.currentTranslate, i.freeMode) {\n            if (p < -t.minTranslate()) return void t.slideTo(t.activeIndex);\n            if (p > -t.maxTranslate()) return void (t.slides.length < l.length ? t.slideTo(l.length - 1) : t.slideTo(t.slides.length - 1));\n\n            if (i.freeModeMomentum) {\n              if (1 < a.velocities.length) {\n                var h = a.velocities.pop(),\n                    v = a.velocities.pop(),\n                    f = h.position - v.position,\n                    m = h.time - v.time;\n                t.velocity = f / m, t.velocity /= 2, Math.abs(t.velocity) < i.freeModeMinimumVelocity && (t.velocity = 0), (150 < m || 300 < ee.now() - h.time) && (t.velocity = 0);\n              } else t.velocity = 0;\n\n              t.velocity *= i.freeModeMomentumVelocityRatio, a.velocities.length = 0;\n              var g = 1e3 * i.freeModeMomentumRatio,\n                  b = t.velocity * g,\n                  w = t.translate + b;\n              r && (w = -w);\n              var y,\n                  x,\n                  T = !1,\n                  E = 20 * Math.abs(t.velocity) * i.freeModeMomentumBounceRatio;\n              if (w < t.maxTranslate()) i.freeModeMomentumBounce ? (w + t.maxTranslate() < -E && (w = t.maxTranslate() - E), y = t.maxTranslate(), T = !0, a.allowMomentumBounce = !0) : w = t.maxTranslate(), i.loop && i.centeredSlides && (x = !0);else if (w > t.minTranslate()) i.freeModeMomentumBounce ? (w - t.minTranslate() > E && (w = t.minTranslate() + E), y = t.minTranslate(), T = !0, a.allowMomentumBounce = !0) : w = t.minTranslate(), i.loop && i.centeredSlides && (x = !0);else if (i.freeModeSticky) {\n                for (var S, C = 0; C < l.length; C += 1) {\n                  if (l[C] > -w) {\n                    S = C;\n                    break;\n                  }\n                }\n\n                w = -(w = Math.abs(l[S] - w) < Math.abs(l[S - 1] - w) || \"next\" === t.swipeDirection ? l[S] : l[S - 1]);\n              }\n              if (x && t.once(\"transitionEnd\", function () {\n                t.loopFix();\n              }), 0 !== t.velocity) g = r ? Math.abs((-w - t.translate) / t.velocity) : Math.abs((w - t.translate) / t.velocity);else if (i.freeModeSticky) return void t.slideToClosest();\n              i.freeModeMomentumBounce && T ? (t.updateProgress(y), t.setTransition(g), t.setTranslate(w), t.transitionStart(!0, t.swipeDirection), t.animating = !0, n.transitionEnd(function () {\n                t && !t.destroyed && a.allowMomentumBounce && (t.emit(\"momentumBounce\"), t.setTransition(i.speed), t.setTranslate(y), n.transitionEnd(function () {\n                  t && !t.destroyed && t.transitionEnd();\n                }));\n              })) : t.velocity ? (t.updateProgress(w), t.setTransition(g), t.setTranslate(w), t.transitionStart(!0, t.swipeDirection), t.animating || (t.animating = !0, n.transitionEnd(function () {\n                t && !t.destroyed && t.transitionEnd();\n              }))) : t.updateProgress(w), t.updateActiveIndex(), t.updateSlidesClasses();\n            } else if (i.freeModeSticky) return void t.slideToClosest();\n\n            (!i.freeModeMomentum || u >= i.longSwipesMs) && (t.updateProgress(), t.updateActiveIndex(), t.updateSlidesClasses());\n          } else {\n            for (var M = 0, z = t.slidesSizesGrid[0], P = 0; P < o.length; P += i.slidesPerGroup) {\n              void 0 !== o[P + i.slidesPerGroup] ? p >= o[P] && p < o[P + i.slidesPerGroup] && (z = o[(M = P) + i.slidesPerGroup] - o[P]) : p >= o[P] && (M = P, z = o[o.length - 1] - o[o.length - 2]);\n            }\n\n            var k = (p - o[M]) / z;\n\n            if (u > i.longSwipesMs) {\n              if (!i.longSwipes) return void t.slideTo(t.activeIndex);\n              \"next\" === t.swipeDirection && (k >= i.longSwipesRatio ? t.slideTo(M + i.slidesPerGroup) : t.slideTo(M)), \"prev\" === t.swipeDirection && (k > 1 - i.longSwipesRatio ? t.slideTo(M + i.slidesPerGroup) : t.slideTo(M));\n            } else {\n              if (!i.shortSwipes) return void t.slideTo(t.activeIndex);\n              \"next\" === t.swipeDirection && t.slideTo(M + i.slidesPerGroup), \"prev\" === t.swipeDirection && t.slideTo(M);\n            }\n          }\n        }.bind(e), e.onClick = function (e) {\n          this.allowClick || (this.params.preventClicks && e.preventDefault(), this.params.preventClicksPropagation && this.animating && (e.stopPropagation(), e.stopImmediatePropagation()));\n        }.bind(e);\n        var r = \"container\" === t.touchEventsTarget ? i : s,\n            n = !!t.nested;\n\n        if (te.touch || !te.pointerEvents && !te.prefixedPointerEvents) {\n          if (te.touch) {\n            var o = !(\"touchstart\" !== a.start || !te.passiveListener || !t.passiveListeners) && {\n              passive: !0,\n              capture: !1\n            };\n            r.addEventListener(a.start, e.onTouchStart, o), r.addEventListener(a.move, e.onTouchMove, te.passiveListener ? {\n              passive: !1,\n              capture: n\n            } : n), r.addEventListener(a.end, e.onTouchEnd, o);\n          }\n\n          (t.simulateTouch && !g.ios && !g.android || t.simulateTouch && !te.touch && g.ios) && (r.addEventListener(\"mousedown\", e.onTouchStart, !1), f.addEventListener(\"mousemove\", e.onTouchMove, n), f.addEventListener(\"mouseup\", e.onTouchEnd, !1));\n        } else r.addEventListener(a.start, e.onTouchStart, !1), f.addEventListener(a.move, e.onTouchMove, n), f.addEventListener(a.end, e.onTouchEnd, !1);\n\n        (t.preventClicks || t.preventClicksPropagation) && r.addEventListener(\"click\", e.onClick, !0), e.on(g.ios || g.android ? \"resize orientationchange observerUpdate\" : \"resize observerUpdate\", b, !0);\n      },\n      detachEvents: function detachEvents() {\n        var e = this,\n            t = e.params,\n            a = e.touchEvents,\n            i = e.el,\n            s = e.wrapperEl,\n            r = \"container\" === t.touchEventsTarget ? i : s,\n            n = !!t.nested;\n\n        if (te.touch || !te.pointerEvents && !te.prefixedPointerEvents) {\n          if (te.touch) {\n            var o = !(\"onTouchStart\" !== a.start || !te.passiveListener || !t.passiveListeners) && {\n              passive: !0,\n              capture: !1\n            };\n            r.removeEventListener(a.start, e.onTouchStart, o), r.removeEventListener(a.move, e.onTouchMove, n), r.removeEventListener(a.end, e.onTouchEnd, o);\n          }\n\n          (t.simulateTouch && !g.ios && !g.android || t.simulateTouch && !te.touch && g.ios) && (r.removeEventListener(\"mousedown\", e.onTouchStart, !1), f.removeEventListener(\"mousemove\", e.onTouchMove, n), f.removeEventListener(\"mouseup\", e.onTouchEnd, !1));\n        } else r.removeEventListener(a.start, e.onTouchStart, !1), f.removeEventListener(a.move, e.onTouchMove, n), f.removeEventListener(a.end, e.onTouchEnd, !1);\n\n        (t.preventClicks || t.preventClicksPropagation) && r.removeEventListener(\"click\", e.onClick, !0), e.off(g.ios || g.android ? \"resize orientationchange observerUpdate\" : \"resize observerUpdate\", b);\n      }\n    },\n    breakpoints: {\n      setBreakpoint: function setBreakpoint() {\n        var e = this,\n            t = e.activeIndex,\n            a = e.initialized,\n            i = e.loopedSlides;\n        void 0 === i && (i = 0);\n        var s = e.params,\n            r = s.breakpoints;\n\n        if (r && (!r || 0 !== Object.keys(r).length)) {\n          var n = e.getBreakpoint(r);\n\n          if (n && e.currentBreakpoint !== n) {\n            var o = n in r ? r[n] : void 0;\n            o && [\"slidesPerView\", \"spaceBetween\", \"slidesPerGroup\"].forEach(function (e) {\n              var t = o[e];\n              void 0 !== t && (o[e] = \"slidesPerView\" !== e || \"AUTO\" !== t && \"auto\" !== t ? \"slidesPerView\" === e ? parseFloat(t) : parseInt(t, 10) : \"auto\");\n            });\n            var l = o || e.originalParams,\n                d = l.direction && l.direction !== s.direction,\n                p = s.loop && (l.slidesPerView !== s.slidesPerView || d);\n            d && a && e.changeDirection(), ee.extend(e.params, l), ee.extend(e, {\n              allowTouchMove: e.params.allowTouchMove,\n              allowSlideNext: e.params.allowSlideNext,\n              allowSlidePrev: e.params.allowSlidePrev\n            }), e.currentBreakpoint = n, p && a && (e.loopDestroy(), e.loopCreate(), e.updateSlides(), e.slideTo(t - i + e.loopedSlides, 0, !1)), e.emit(\"breakpoint\", l);\n          }\n        }\n      },\n      getBreakpoint: function getBreakpoint(e) {\n        if (e) {\n          var t = !1,\n              a = [];\n          Object.keys(e).forEach(function (e) {\n            a.push(e);\n          }), a.sort(function (e, t) {\n            return parseInt(e, 10) - parseInt(t, 10);\n          });\n\n          for (var i = 0; i < a.length; i += 1) {\n            var s = a[i];\n            this.params.breakpointsInverse ? s <= J.innerWidth && (t = s) : s >= J.innerWidth && !t && (t = s);\n          }\n\n          return t || \"max\";\n        }\n      }\n    },\n    checkOverflow: {\n      checkOverflow: function checkOverflow() {\n        var e = this,\n            t = e.isLocked;\n        e.isLocked = 1 === e.snapGrid.length, e.allowSlideNext = !e.isLocked, e.allowSlidePrev = !e.isLocked, t !== e.isLocked && e.emit(e.isLocked ? \"lock\" : \"unlock\"), t && t !== e.isLocked && (e.isEnd = !1, e.navigation.update());\n      }\n    },\n    classes: {\n      addClasses: function addClasses() {\n        var t = this.classNames,\n            a = this.params,\n            e = this.rtl,\n            i = this.$el,\n            s = [];\n        s.push(\"initialized\"), s.push(a.direction), a.freeMode && s.push(\"free-mode\"), te.flexbox || s.push(\"no-flexbox\"), a.autoHeight && s.push(\"autoheight\"), e && s.push(\"rtl\"), 1 < a.slidesPerColumn && s.push(\"multirow\"), g.android && s.push(\"android\"), g.ios && s.push(\"ios\"), (I.isIE || I.isEdge) && (te.pointerEvents || te.prefixedPointerEvents) && s.push(\"wp8-\" + a.direction), s.forEach(function (e) {\n          t.push(a.containerModifierClass + e);\n        }), i.addClass(t.join(\" \"));\n      },\n      removeClasses: function removeClasses() {\n        var e = this.$el,\n            t = this.classNames;\n        e.removeClass(t.join(\" \"));\n      }\n    },\n    images: {\n      loadImage: function loadImage(e, t, a, i, s, r) {\n        var n;\n\n        function o() {\n          r && r();\n        }\n\n        e.complete && s ? o() : t ? ((n = new J.Image()).onload = o, n.onerror = o, i && (n.sizes = i), a && (n.srcset = a), t && (n.src = t)) : o();\n      },\n      preloadImages: function preloadImages() {\n        var e = this;\n\n        function t() {\n          null != e && e && !e.destroyed && (void 0 !== e.imagesLoaded && (e.imagesLoaded += 1), e.imagesLoaded === e.imagesToLoad.length && (e.params.updateOnImagesReady && e.update(), e.emit(\"imagesReady\")));\n        }\n\n        e.imagesToLoad = e.$el.find(\"img\");\n\n        for (var a = 0; a < e.imagesToLoad.length; a += 1) {\n          var i = e.imagesToLoad[a];\n          e.loadImage(i, i.currentSrc || i.getAttribute(\"src\"), i.srcset || i.getAttribute(\"srcset\"), i.sizes || i.getAttribute(\"sizes\"), !0, t);\n        }\n      }\n    }\n  },\n      x = {},\n      T = function (u) {\n    function h() {\n      for (var e, t, s, a = [], i = arguments.length; i--;) {\n        a[i] = arguments[i];\n      }\n\n      1 === a.length && a[0].constructor && a[0].constructor === Object ? s = a[0] : (t = (e = a)[0], s = e[1]), s || (s = {}), s = ee.extend({}, s), t && !s.el && (s.el = t), u.call(this, s), Object.keys(y).forEach(function (t) {\n        Object.keys(y[t]).forEach(function (e) {\n          h.prototype[e] || (h.prototype[e] = y[t][e]);\n        });\n      });\n      var r = this;\n      void 0 === r.modules && (r.modules = {}), Object.keys(r.modules).forEach(function (e) {\n        var t = r.modules[e];\n\n        if (t.params) {\n          var a = Object.keys(t.params)[0],\n              i = t.params[a];\n          if (\"object\" != _typeof(i) || null === i) return;\n          if (!(a in s && \"enabled\" in i)) return;\n          !0 === s[a] && (s[a] = {\n            enabled: !0\n          }), \"object\" != _typeof(s[a]) || \"enabled\" in s[a] || (s[a].enabled = !0), s[a] || (s[a] = {\n            enabled: !1\n          });\n        }\n      });\n      var n = ee.extend({}, w);\n      r.useModulesParams(n), r.params = ee.extend({}, n, x, s), r.originalParams = ee.extend({}, r.params), r.passedParams = ee.extend({}, s);\n      var o = (r.$ = L)(r.params.el);\n\n      if (t = o[0]) {\n        if (1 < o.length) {\n          var l = [];\n          return o.each(function (e, t) {\n            var a = ee.extend({}, s, {\n              el: t\n            });\n            l.push(new h(a));\n          }), l;\n        }\n\n        t.swiper = r, o.data(\"swiper\", r);\n        var d,\n            p,\n            c = o.children(\".\" + r.params.wrapperClass);\n        return ee.extend(r, {\n          $el: o,\n          el: t,\n          $wrapperEl: c,\n          wrapperEl: c[0],\n          classNames: [],\n          slides: L(),\n          slidesGrid: [],\n          snapGrid: [],\n          slidesSizesGrid: [],\n          isHorizontal: function isHorizontal() {\n            return \"horizontal\" === r.params.direction;\n          },\n          isVertical: function isVertical() {\n            return \"vertical\" === r.params.direction;\n          },\n          rtl: \"rtl\" === t.dir.toLowerCase() || \"rtl\" === o.css(\"direction\"),\n          rtlTranslate: \"horizontal\" === r.params.direction && (\"rtl\" === t.dir.toLowerCase() || \"rtl\" === o.css(\"direction\")),\n          wrongRTL: \"-webkit-box\" === c.css(\"display\"),\n          activeIndex: 0,\n          realIndex: 0,\n          isBeginning: !0,\n          isEnd: !1,\n          translate: 0,\n          previousTranslate: 0,\n          progress: 0,\n          velocity: 0,\n          animating: !1,\n          allowSlideNext: r.params.allowSlideNext,\n          allowSlidePrev: r.params.allowSlidePrev,\n          touchEvents: (d = [\"touchstart\", \"touchmove\", \"touchend\"], p = [\"mousedown\", \"mousemove\", \"mouseup\"], te.pointerEvents ? p = [\"pointerdown\", \"pointermove\", \"pointerup\"] : te.prefixedPointerEvents && (p = [\"MSPointerDown\", \"MSPointerMove\", \"MSPointerUp\"]), r.touchEventsTouch = {\n            start: d[0],\n            move: d[1],\n            end: d[2]\n          }, r.touchEventsDesktop = {\n            start: p[0],\n            move: p[1],\n            end: p[2]\n          }, te.touch || !r.params.simulateTouch ? r.touchEventsTouch : r.touchEventsDesktop),\n          touchEventsData: {\n            isTouched: void 0,\n            isMoved: void 0,\n            allowTouchCallbacks: void 0,\n            touchStartTime: void 0,\n            isScrolling: void 0,\n            currentTranslate: void 0,\n            startTranslate: void 0,\n            allowThresholdMove: void 0,\n            formElements: \"input, select, option, textarea, button, video\",\n            lastClickTime: ee.now(),\n            clickTimeout: void 0,\n            velocities: [],\n            allowMomentumBounce: void 0,\n            isTouchEvent: void 0,\n            startMoving: void 0\n          },\n          allowClick: !0,\n          allowTouchMove: r.params.allowTouchMove,\n          touches: {\n            startX: 0,\n            startY: 0,\n            currentX: 0,\n            currentY: 0,\n            diff: 0\n          },\n          imagesToLoad: [],\n          imagesLoaded: 0\n        }), r.useModules(), r.params.init && r.init(), r;\n      }\n    }\n\n    u && (h.__proto__ = u);\n    var e = {\n      extendedDefaults: {\n        configurable: !0\n      },\n      defaults: {\n        configurable: !0\n      },\n      Class: {\n        configurable: !0\n      },\n      $: {\n        configurable: !0\n      }\n    };\n    return ((h.prototype = Object.create(u && u.prototype)).constructor = h).prototype.slidesPerViewDynamic = function () {\n      var e = this,\n          t = e.params,\n          a = e.slides,\n          i = e.slidesGrid,\n          s = e.size,\n          r = e.activeIndex,\n          n = 1;\n\n      if (t.centeredSlides) {\n        for (var o, l = a[r].swiperSlideSize, d = r + 1; d < a.length; d += 1) {\n          a[d] && !o && (n += 1, s < (l += a[d].swiperSlideSize) && (o = !0));\n        }\n\n        for (var p = r - 1; 0 <= p; p -= 1) {\n          a[p] && !o && (n += 1, s < (l += a[p].swiperSlideSize) && (o = !0));\n        }\n      } else for (var c = r + 1; c < a.length; c += 1) {\n        i[c] - i[r] < s && (n += 1);\n      }\n\n      return n;\n    }, h.prototype.update = function () {\n      var a = this;\n\n      if (a && !a.destroyed) {\n        var e = a.snapGrid,\n            t = a.params;\n        t.breakpoints && a.setBreakpoint(), a.updateSize(), a.updateSlides(), a.updateProgress(), a.updateSlidesClasses(), a.params.freeMode ? (i(), a.params.autoHeight && a.updateAutoHeight()) : ((\"auto\" === a.params.slidesPerView || 1 < a.params.slidesPerView) && a.isEnd && !a.params.centeredSlides ? a.slideTo(a.slides.length - 1, 0, !1, !0) : a.slideTo(a.activeIndex, 0, !1, !0)) || i(), t.watchOverflow && e !== a.snapGrid && a.checkOverflow(), a.emit(\"update\");\n      }\n\n      function i() {\n        var e = a.rtlTranslate ? -1 * a.translate : a.translate,\n            t = Math.min(Math.max(e, a.maxTranslate()), a.minTranslate());\n        a.setTranslate(t), a.updateActiveIndex(), a.updateSlidesClasses();\n      }\n    }, h.prototype.changeDirection = function (a, e) {\n      void 0 === e && (e = !0);\n      var t = this,\n          i = t.params.direction;\n      return a || (a = \"horizontal\" === i ? \"vertical\" : \"horizontal\"), a === i || \"horizontal\" !== a && \"vertical\" !== a || (\"vertical\" === i && (t.$el.removeClass(t.params.containerModifierClass + \"vertical wp8-vertical\").addClass(\"\" + t.params.containerModifierClass + a), (I.isIE || I.isEdge) && (te.pointerEvents || te.prefixedPointerEvents) && t.$el.addClass(t.params.containerModifierClass + \"wp8-\" + a)), \"horizontal\" === i && (t.$el.removeClass(t.params.containerModifierClass + \"horizontal wp8-horizontal\").addClass(\"\" + t.params.containerModifierClass + a), (I.isIE || I.isEdge) && (te.pointerEvents || te.prefixedPointerEvents) && t.$el.addClass(t.params.containerModifierClass + \"wp8-\" + a)), t.params.direction = a, t.slides.each(function (e, t) {\n        \"vertical\" === a ? t.style.width = \"\" : t.style.height = \"\";\n      }), t.emit(\"changeDirection\"), e && t.update()), t;\n    }, h.prototype.init = function () {\n      var e = this;\n      e.initialized || (e.emit(\"beforeInit\"), e.params.breakpoints && e.setBreakpoint(), e.addClasses(), e.params.loop && e.loopCreate(), e.updateSize(), e.updateSlides(), e.params.watchOverflow && e.checkOverflow(), e.params.grabCursor && e.setGrabCursor(), e.params.preloadImages && e.preloadImages(), e.params.loop ? e.slideTo(e.params.initialSlide + e.loopedSlides, 0, e.params.runCallbacksOnInit) : e.slideTo(e.params.initialSlide, 0, e.params.runCallbacksOnInit), e.attachEvents(), e.initialized = !0, e.emit(\"init\"));\n    }, h.prototype.destroy = function (e, t) {\n      void 0 === e && (e = !0), void 0 === t && (t = !0);\n      var a = this,\n          i = a.params,\n          s = a.$el,\n          r = a.$wrapperEl,\n          n = a.slides;\n      return void 0 === a.params || a.destroyed || (a.emit(\"beforeDestroy\"), a.initialized = !1, a.detachEvents(), i.loop && a.loopDestroy(), t && (a.removeClasses(), s.removeAttr(\"style\"), r.removeAttr(\"style\"), n && n.length && n.removeClass([i.slideVisibleClass, i.slideActiveClass, i.slideNextClass, i.slidePrevClass].join(\" \")).removeAttr(\"style\").removeAttr(\"data-swiper-slide-index\").removeAttr(\"data-swiper-column\").removeAttr(\"data-swiper-row\")), a.emit(\"destroy\"), Object.keys(a.eventsListeners).forEach(function (e) {\n        a.off(e);\n      }), !1 !== e && (a.$el[0].swiper = null, a.$el.data(\"swiper\", null), ee.deleteProps(a)), a.destroyed = !0), null;\n    }, h.extendDefaults = function (e) {\n      ee.extend(x, e);\n    }, e.extendedDefaults.get = function () {\n      return x;\n    }, e.defaults.get = function () {\n      return w;\n    }, e.Class.get = function () {\n      return u;\n    }, e.$.get = function () {\n      return L;\n    }, Object.defineProperties(h, e), h;\n  }(n),\n      E = {\n    name: \"device\",\n    proto: {\n      device: g\n    },\n    static: {\n      device: g\n    }\n  },\n      S = {\n    name: \"support\",\n    proto: {\n      support: te\n    },\n    static: {\n      support: te\n    }\n  },\n      C = {\n    name: \"browser\",\n    proto: {\n      browser: I\n    },\n    static: {\n      browser: I\n    }\n  },\n      M = {\n    name: \"resize\",\n    create: function create() {\n      var e = this;\n      ee.extend(e, {\n        resize: {\n          resizeHandler: function resizeHandler() {\n            e && !e.destroyed && e.initialized && (e.emit(\"beforeResize\"), e.emit(\"resize\"));\n          },\n          orientationChangeHandler: function orientationChangeHandler() {\n            e && !e.destroyed && e.initialized && e.emit(\"orientationchange\");\n          }\n        }\n      });\n    },\n    on: {\n      init: function init() {\n        J.addEventListener(\"resize\", this.resize.resizeHandler), J.addEventListener(\"orientationchange\", this.resize.orientationChangeHandler);\n      },\n      destroy: function destroy() {\n        J.removeEventListener(\"resize\", this.resize.resizeHandler), J.removeEventListener(\"orientationchange\", this.resize.orientationChangeHandler);\n      }\n    }\n  },\n      z = {\n    func: J.MutationObserver || J.WebkitMutationObserver,\n    attach: function attach(e, t) {\n      void 0 === t && (t = {});\n      var a = this,\n          i = new z.func(function (e) {\n        if (1 !== e.length) {\n          var t = function t() {\n            a.emit(\"observerUpdate\", e[0]);\n          };\n\n          J.requestAnimationFrame ? J.requestAnimationFrame(t) : J.setTimeout(t, 0);\n        } else a.emit(\"observerUpdate\", e[0]);\n      });\n      i.observe(e, {\n        attributes: void 0 === t.attributes || t.attributes,\n        childList: void 0 === t.childList || t.childList,\n        characterData: void 0 === t.characterData || t.characterData\n      }), a.observer.observers.push(i);\n    },\n    init: function init() {\n      var e = this;\n\n      if (te.observer && e.params.observer) {\n        if (e.params.observeParents) for (var t = e.$el.parents(), a = 0; a < t.length; a += 1) {\n          e.observer.attach(t[a]);\n        }\n        e.observer.attach(e.$el[0], {\n          childList: e.params.observeSlideChildren\n        }), e.observer.attach(e.$wrapperEl[0], {\n          attributes: !1\n        });\n      }\n    },\n    destroy: function destroy() {\n      this.observer.observers.forEach(function (e) {\n        e.disconnect();\n      }), this.observer.observers = [];\n    }\n  },\n      P = {\n    name: \"observer\",\n    params: {\n      observer: !1,\n      observeParents: !1,\n      observeSlideChildren: !1\n    },\n    create: function create() {\n      ee.extend(this, {\n        observer: {\n          init: z.init.bind(this),\n          attach: z.attach.bind(this),\n          destroy: z.destroy.bind(this),\n          observers: []\n        }\n      });\n    },\n    on: {\n      init: function init() {\n        this.observer.init();\n      },\n      destroy: function destroy() {\n        this.observer.destroy();\n      }\n    }\n  },\n      k = {\n    update: function update(e) {\n      var t = this,\n          a = t.params,\n          i = a.slidesPerView,\n          s = a.slidesPerGroup,\n          r = a.centeredSlides,\n          n = t.params.virtual,\n          o = n.addSlidesBefore,\n          l = n.addSlidesAfter,\n          d = t.virtual,\n          p = d.from,\n          c = d.to,\n          u = d.slides,\n          h = d.slidesGrid,\n          v = d.renderSlide,\n          f = d.offset;\n      t.updateActiveIndex();\n      var m,\n          g,\n          b,\n          w = t.activeIndex || 0;\n      m = t.rtlTranslate ? \"right\" : t.isHorizontal() ? \"left\" : \"top\", r ? (g = Math.floor(i / 2) + s + o, b = Math.floor(i / 2) + s + l) : (g = i + (s - 1) + o, b = s + l);\n      var y = Math.max((w || 0) - b, 0),\n          x = Math.min((w || 0) + g, u.length - 1),\n          T = (t.slidesGrid[y] || 0) - (t.slidesGrid[0] || 0);\n\n      function E() {\n        t.updateSlides(), t.updateProgress(), t.updateSlidesClasses(), t.lazy && t.params.lazy.enabled && t.lazy.load();\n      }\n\n      if (ee.extend(t.virtual, {\n        from: y,\n        to: x,\n        offset: T,\n        slidesGrid: t.slidesGrid\n      }), p === y && c === x && !e) return t.slidesGrid !== h && T !== f && t.slides.css(m, T + \"px\"), void t.updateProgress();\n      if (t.params.virtual.renderExternal) return t.params.virtual.renderExternal.call(t, {\n        offset: T,\n        from: y,\n        to: x,\n        slides: function () {\n          for (var e = [], t = y; t <= x; t += 1) {\n            e.push(u[t]);\n          }\n\n          return e;\n        }()\n      }), void E();\n      var S = [],\n          C = [];\n      if (e) t.$wrapperEl.find(\".\" + t.params.slideClass).remove();else for (var M = p; M <= c; M += 1) {\n        (M < y || x < M) && t.$wrapperEl.find(\".\" + t.params.slideClass + '[data-swiper-slide-index=\"' + M + '\"]').remove();\n      }\n\n      for (var z = 0; z < u.length; z += 1) {\n        y <= z && z <= x && (void 0 === c || e ? C.push(z) : (c < z && C.push(z), z < p && S.push(z)));\n      }\n\n      C.forEach(function (e) {\n        t.$wrapperEl.append(v(u[e], e));\n      }), S.sort(function (e, t) {\n        return t - e;\n      }).forEach(function (e) {\n        t.$wrapperEl.prepend(v(u[e], e));\n      }), t.$wrapperEl.children(\".swiper-slide\").css(m, T + \"px\"), E();\n    },\n    renderSlide: function renderSlide(e, t) {\n      var a = this,\n          i = a.params.virtual;\n      if (i.cache && a.virtual.cache[t]) return a.virtual.cache[t];\n      var s = i.renderSlide ? L(i.renderSlide.call(a, e, t)) : L('<div class=\"' + a.params.slideClass + '\" data-swiper-slide-index=\"' + t + '\">' + e + \"</div>\");\n      return s.attr(\"data-swiper-slide-index\") || s.attr(\"data-swiper-slide-index\", t), i.cache && (a.virtual.cache[t] = s), s;\n    },\n    appendSlide: function appendSlide(e) {\n      if (\"object\" == _typeof(e) && \"length\" in e) for (var t = 0; t < e.length; t += 1) {\n        e[t] && this.virtual.slides.push(e[t]);\n      } else this.virtual.slides.push(e);\n      this.virtual.update(!0);\n    },\n    prependSlide: function prependSlide(e) {\n      var t = this,\n          a = t.activeIndex,\n          i = a + 1,\n          s = 1;\n\n      if (Array.isArray(e)) {\n        for (var r = 0; r < e.length; r += 1) {\n          e[r] && t.virtual.slides.unshift(e[r]);\n        }\n\n        i = a + e.length, s = e.length;\n      } else t.virtual.slides.unshift(e);\n\n      if (t.params.virtual.cache) {\n        var n = t.virtual.cache,\n            o = {};\n        Object.keys(n).forEach(function (e) {\n          o[parseInt(e, 10) + s] = n[e];\n        }), t.virtual.cache = o;\n      }\n\n      t.virtual.update(!0), t.slideTo(i, 0);\n    },\n    removeSlide: function removeSlide(e) {\n      var t = this;\n\n      if (null != e) {\n        var a = t.activeIndex;\n        if (Array.isArray(e)) for (var i = e.length - 1; 0 <= i; i -= 1) {\n          t.virtual.slides.splice(e[i], 1), t.params.virtual.cache && delete t.virtual.cache[e[i]], e[i] < a && (a -= 1), a = Math.max(a, 0);\n        } else t.virtual.slides.splice(e, 1), t.params.virtual.cache && delete t.virtual.cache[e], e < a && (a -= 1), a = Math.max(a, 0);\n        t.virtual.update(!0), t.slideTo(a, 0);\n      }\n    },\n    removeAllSlides: function removeAllSlides() {\n      var e = this;\n      e.virtual.slides = [], e.params.virtual.cache && (e.virtual.cache = {}), e.virtual.update(!0), e.slideTo(0, 0);\n    }\n  },\n      $ = {\n    name: \"virtual\",\n    params: {\n      virtual: {\n        enabled: !1,\n        slides: [],\n        cache: !0,\n        renderSlide: null,\n        renderExternal: null,\n        addSlidesBefore: 0,\n        addSlidesAfter: 0\n      }\n    },\n    create: function create() {\n      var e = this;\n      ee.extend(e, {\n        virtual: {\n          update: k.update.bind(e),\n          appendSlide: k.appendSlide.bind(e),\n          prependSlide: k.prependSlide.bind(e),\n          removeSlide: k.removeSlide.bind(e),\n          removeAllSlides: k.removeAllSlides.bind(e),\n          renderSlide: k.renderSlide.bind(e),\n          slides: e.params.virtual.slides,\n          cache: {}\n        }\n      });\n    },\n    on: {\n      beforeInit: function beforeInit() {\n        var e = this;\n\n        if (e.params.virtual.enabled) {\n          e.classNames.push(e.params.containerModifierClass + \"virtual\");\n          var t = {\n            watchSlidesProgress: !0\n          };\n          ee.extend(e.params, t), ee.extend(e.originalParams, t), e.params.initialSlide || e.virtual.update();\n        }\n      },\n      setTranslate: function setTranslate() {\n        this.params.virtual.enabled && this.virtual.update();\n      }\n    }\n  },\n      D = {\n    handle: function handle(e) {\n      var t = this,\n          a = t.rtlTranslate,\n          i = e;\n      i.originalEvent && (i = i.originalEvent);\n      var s = i.keyCode || i.charCode;\n      if (!t.allowSlideNext && (t.isHorizontal() && 39 === s || t.isVertical() && 40 === s)) return !1;\n      if (!t.allowSlidePrev && (t.isHorizontal() && 37 === s || t.isVertical() && 38 === s)) return !1;\n\n      if (!(i.shiftKey || i.altKey || i.ctrlKey || i.metaKey || f.activeElement && f.activeElement.nodeName && (\"input\" === f.activeElement.nodeName.toLowerCase() || \"textarea\" === f.activeElement.nodeName.toLowerCase()))) {\n        if (t.params.keyboard.onlyInViewport && (37 === s || 39 === s || 38 === s || 40 === s)) {\n          var r = !1;\n          if (0 < t.$el.parents(\".\" + t.params.slideClass).length && 0 === t.$el.parents(\".\" + t.params.slideActiveClass).length) return;\n          var n = J.innerWidth,\n              o = J.innerHeight,\n              l = t.$el.offset();\n          a && (l.left -= t.$el[0].scrollLeft);\n\n          for (var d = [[l.left, l.top], [l.left + t.width, l.top], [l.left, l.top + t.height], [l.left + t.width, l.top + t.height]], p = 0; p < d.length; p += 1) {\n            var c = d[p];\n            0 <= c[0] && c[0] <= n && 0 <= c[1] && c[1] <= o && (r = !0);\n          }\n\n          if (!r) return;\n        }\n\n        t.isHorizontal() ? (37 !== s && 39 !== s || (i.preventDefault ? i.preventDefault() : i.returnValue = !1), (39 === s && !a || 37 === s && a) && t.slideNext(), (37 === s && !a || 39 === s && a) && t.slidePrev()) : (38 !== s && 40 !== s || (i.preventDefault ? i.preventDefault() : i.returnValue = !1), 40 === s && t.slideNext(), 38 === s && t.slidePrev()), t.emit(\"keyPress\", s);\n      }\n    },\n    enable: function enable() {\n      this.keyboard.enabled || (L(f).on(\"keydown\", this.keyboard.handle), this.keyboard.enabled = !0);\n    },\n    disable: function disable() {\n      this.keyboard.enabled && (L(f).off(\"keydown\", this.keyboard.handle), this.keyboard.enabled = !1);\n    }\n  },\n      O = {\n    name: \"keyboard\",\n    params: {\n      keyboard: {\n        enabled: !1,\n        onlyInViewport: !0\n      }\n    },\n    create: function create() {\n      ee.extend(this, {\n        keyboard: {\n          enabled: !1,\n          enable: D.enable.bind(this),\n          disable: D.disable.bind(this),\n          handle: D.handle.bind(this)\n        }\n      });\n    },\n    on: {\n      init: function init() {\n        this.params.keyboard.enabled && this.keyboard.enable();\n      },\n      destroy: function destroy() {\n        this.keyboard.enabled && this.keyboard.disable();\n      }\n    }\n  };\n\n  var A = {\n    lastScrollTime: ee.now(),\n    event: -1 < J.navigator.userAgent.indexOf(\"firefox\") ? \"DOMMouseScroll\" : function () {\n      var e = \"onwheel\",\n          t = (e in f);\n\n      if (!t) {\n        var a = f.createElement(\"div\");\n        a.setAttribute(e, \"return;\"), t = \"function\" == typeof a[e];\n      }\n\n      return !t && f.implementation && f.implementation.hasFeature && !0 !== f.implementation.hasFeature(\"\", \"\") && (t = f.implementation.hasFeature(\"Events.wheel\", \"3.0\")), t;\n    }() ? \"wheel\" : \"mousewheel\",\n    normalize: function normalize(e) {\n      var t = 0,\n          a = 0,\n          i = 0,\n          s = 0;\n      return \"detail\" in e && (a = e.detail), \"wheelDelta\" in e && (a = -e.wheelDelta / 120), \"wheelDeltaY\" in e && (a = -e.wheelDeltaY / 120), \"wheelDeltaX\" in e && (t = -e.wheelDeltaX / 120), \"axis\" in e && e.axis === e.HORIZONTAL_AXIS && (t = a, a = 0), i = 10 * t, s = 10 * a, \"deltaY\" in e && (s = e.deltaY), \"deltaX\" in e && (i = e.deltaX), (i || s) && e.deltaMode && (1 === e.deltaMode ? (i *= 40, s *= 40) : (i *= 800, s *= 800)), i && !t && (t = i < 1 ? -1 : 1), s && !a && (a = s < 1 ? -1 : 1), {\n        spinX: t,\n        spinY: a,\n        pixelX: i,\n        pixelY: s\n      };\n    },\n    handleMouseEnter: function handleMouseEnter() {\n      this.mouseEntered = !0;\n    },\n    handleMouseLeave: function handleMouseLeave() {\n      this.mouseEntered = !1;\n    },\n    handle: function handle(e) {\n      var t = e,\n          a = this,\n          i = a.params.mousewheel;\n      if (!a.mouseEntered && !i.releaseOnEdges) return !0;\n      t.originalEvent && (t = t.originalEvent);\n      var s = 0,\n          r = a.rtlTranslate ? -1 : 1,\n          n = A.normalize(t);\n      if (i.forceToAxis) {\n        if (a.isHorizontal()) {\n          if (!(Math.abs(n.pixelX) > Math.abs(n.pixelY))) return !0;\n          s = n.pixelX * r;\n        } else {\n          if (!(Math.abs(n.pixelY) > Math.abs(n.pixelX))) return !0;\n          s = n.pixelY;\n        }\n      } else s = Math.abs(n.pixelX) > Math.abs(n.pixelY) ? -n.pixelX * r : -n.pixelY;\n      if (0 === s) return !0;\n\n      if (i.invert && (s = -s), a.params.freeMode) {\n        a.params.loop && a.loopFix();\n        var o = a.getTranslate() + s * i.sensitivity,\n            l = a.isBeginning,\n            d = a.isEnd;\n        if (o >= a.minTranslate() && (o = a.minTranslate()), o <= a.maxTranslate() && (o = a.maxTranslate()), a.setTransition(0), a.setTranslate(o), a.updateProgress(), a.updateActiveIndex(), a.updateSlidesClasses(), (!l && a.isBeginning || !d && a.isEnd) && a.updateSlidesClasses(), a.params.freeModeSticky && (clearTimeout(a.mousewheel.timeout), a.mousewheel.timeout = ee.nextTick(function () {\n          a.slideToClosest();\n        }, 300)), a.emit(\"scroll\", t), a.params.autoplay && a.params.autoplayDisableOnInteraction && a.autoplay.stop(), o === a.minTranslate() || o === a.maxTranslate()) return !0;\n      } else {\n        if (60 < ee.now() - a.mousewheel.lastScrollTime) if (s < 0) {\n          if (a.isEnd && !a.params.loop || a.animating) {\n            if (i.releaseOnEdges) return !0;\n          } else a.slideNext(), a.emit(\"scroll\", t);\n        } else if (a.isBeginning && !a.params.loop || a.animating) {\n          if (i.releaseOnEdges) return !0;\n        } else a.slidePrev(), a.emit(\"scroll\", t);\n        a.mousewheel.lastScrollTime = new J.Date().getTime();\n      }\n\n      return t.preventDefault ? t.preventDefault() : t.returnValue = !1, !1;\n    },\n    enable: function enable() {\n      var e = this;\n      if (!A.event) return !1;\n      if (e.mousewheel.enabled) return !1;\n      var t = e.$el;\n      return \"container\" !== e.params.mousewheel.eventsTarged && (t = L(e.params.mousewheel.eventsTarged)), t.on(\"mouseenter\", e.mousewheel.handleMouseEnter), t.on(\"mouseleave\", e.mousewheel.handleMouseLeave), t.on(A.event, e.mousewheel.handle), e.mousewheel.enabled = !0;\n    },\n    disable: function disable() {\n      var e = this;\n      if (!A.event) return !1;\n      if (!e.mousewheel.enabled) return !1;\n      var t = e.$el;\n      return \"container\" !== e.params.mousewheel.eventsTarged && (t = L(e.params.mousewheel.eventsTarged)), t.off(A.event, e.mousewheel.handle), !(e.mousewheel.enabled = !1);\n    }\n  },\n      H = {\n    update: function update() {\n      var e = this,\n          t = e.params.navigation;\n\n      if (!e.params.loop) {\n        var a = e.navigation,\n            i = a.$nextEl,\n            s = a.$prevEl;\n        s && 0 < s.length && (e.isBeginning ? s.addClass(t.disabledClass) : s.removeClass(t.disabledClass), s[e.params.watchOverflow && e.isLocked ? \"addClass\" : \"removeClass\"](t.lockClass)), i && 0 < i.length && (e.isEnd ? i.addClass(t.disabledClass) : i.removeClass(t.disabledClass), i[e.params.watchOverflow && e.isLocked ? \"addClass\" : \"removeClass\"](t.lockClass));\n      }\n    },\n    onPrevClick: function onPrevClick(e) {\n      e.preventDefault(), this.isBeginning && !this.params.loop || this.slidePrev();\n    },\n    onNextClick: function onNextClick(e) {\n      e.preventDefault(), this.isEnd && !this.params.loop || this.slideNext();\n    },\n    init: function init() {\n      var e,\n          t,\n          a = this,\n          i = a.params.navigation;\n      (i.nextEl || i.prevEl) && (i.nextEl && (e = L(i.nextEl), a.params.uniqueNavElements && \"string\" == typeof i.nextEl && 1 < e.length && 1 === a.$el.find(i.nextEl).length && (e = a.$el.find(i.nextEl))), i.prevEl && (t = L(i.prevEl), a.params.uniqueNavElements && \"string\" == typeof i.prevEl && 1 < t.length && 1 === a.$el.find(i.prevEl).length && (t = a.$el.find(i.prevEl))), e && 0 < e.length && e.on(\"click\", a.navigation.onNextClick), t && 0 < t.length && t.on(\"click\", a.navigation.onPrevClick), ee.extend(a.navigation, {\n        $nextEl: e,\n        nextEl: e && e[0],\n        $prevEl: t,\n        prevEl: t && t[0]\n      }));\n    },\n    destroy: function destroy() {\n      var e = this,\n          t = e.navigation,\n          a = t.$nextEl,\n          i = t.$prevEl;\n      a && a.length && (a.off(\"click\", e.navigation.onNextClick), a.removeClass(e.params.navigation.disabledClass)), i && i.length && (i.off(\"click\", e.navigation.onPrevClick), i.removeClass(e.params.navigation.disabledClass));\n    }\n  },\n      N = {\n    update: function update() {\n      var e = this,\n          t = e.rtl,\n          s = e.params.pagination;\n\n      if (s.el && e.pagination.el && e.pagination.$el && 0 !== e.pagination.$el.length) {\n        var r,\n            a = e.virtual && e.params.virtual.enabled ? e.virtual.slides.length : e.slides.length,\n            i = e.pagination.$el,\n            n = e.params.loop ? Math.ceil((a - 2 * e.loopedSlides) / e.params.slidesPerGroup) : e.snapGrid.length;\n\n        if (e.params.loop ? ((r = Math.ceil((e.activeIndex - e.loopedSlides) / e.params.slidesPerGroup)) > a - 1 - 2 * e.loopedSlides && (r -= a - 2 * e.loopedSlides), n - 1 < r && (r -= n), r < 0 && \"bullets\" !== e.params.paginationType && (r = n + r)) : r = void 0 !== e.snapIndex ? e.snapIndex : e.activeIndex || 0, \"bullets\" === s.type && e.pagination.bullets && 0 < e.pagination.bullets.length) {\n          var o,\n              l,\n              d,\n              p = e.pagination.bullets;\n          if (s.dynamicBullets && (e.pagination.bulletSize = p.eq(0)[e.isHorizontal() ? \"outerWidth\" : \"outerHeight\"](!0), i.css(e.isHorizontal() ? \"width\" : \"height\", e.pagination.bulletSize * (s.dynamicMainBullets + 4) + \"px\"), 1 < s.dynamicMainBullets && void 0 !== e.previousIndex && (e.pagination.dynamicBulletIndex += r - e.previousIndex, e.pagination.dynamicBulletIndex > s.dynamicMainBullets - 1 ? e.pagination.dynamicBulletIndex = s.dynamicMainBullets - 1 : e.pagination.dynamicBulletIndex < 0 && (e.pagination.dynamicBulletIndex = 0)), o = r - e.pagination.dynamicBulletIndex, d = ((l = o + (Math.min(p.length, s.dynamicMainBullets) - 1)) + o) / 2), p.removeClass(s.bulletActiveClass + \" \" + s.bulletActiveClass + \"-next \" + s.bulletActiveClass + \"-next-next \" + s.bulletActiveClass + \"-prev \" + s.bulletActiveClass + \"-prev-prev \" + s.bulletActiveClass + \"-main\"), 1 < i.length) p.each(function (e, t) {\n            var a = L(t),\n                i = a.index();\n            i === r && a.addClass(s.bulletActiveClass), s.dynamicBullets && (o <= i && i <= l && a.addClass(s.bulletActiveClass + \"-main\"), i === o && a.prev().addClass(s.bulletActiveClass + \"-prev\").prev().addClass(s.bulletActiveClass + \"-prev-prev\"), i === l && a.next().addClass(s.bulletActiveClass + \"-next\").next().addClass(s.bulletActiveClass + \"-next-next\"));\n          });else if (p.eq(r).addClass(s.bulletActiveClass), s.dynamicBullets) {\n            for (var c = p.eq(o), u = p.eq(l), h = o; h <= l; h += 1) {\n              p.eq(h).addClass(s.bulletActiveClass + \"-main\");\n            }\n\n            c.prev().addClass(s.bulletActiveClass + \"-prev\").prev().addClass(s.bulletActiveClass + \"-prev-prev\"), u.next().addClass(s.bulletActiveClass + \"-next\").next().addClass(s.bulletActiveClass + \"-next-next\");\n          }\n\n          if (s.dynamicBullets) {\n            var v = Math.min(p.length, s.dynamicMainBullets + 4),\n                f = (e.pagination.bulletSize * v - e.pagination.bulletSize) / 2 - d * e.pagination.bulletSize,\n                m = t ? \"right\" : \"left\";\n            p.css(e.isHorizontal() ? m : \"top\", f + \"px\");\n          }\n        }\n\n        if (\"fraction\" === s.type && (i.find(\".\" + s.currentClass).text(s.formatFractionCurrent(r + 1)), i.find(\".\" + s.totalClass).text(s.formatFractionTotal(n))), \"progressbar\" === s.type) {\n          var g;\n          g = s.progressbarOpposite ? e.isHorizontal() ? \"vertical\" : \"horizontal\" : e.isHorizontal() ? \"horizontal\" : \"vertical\";\n          var b = (r + 1) / n,\n              w = 1,\n              y = 1;\n          \"horizontal\" === g ? w = b : y = b, i.find(\".\" + s.progressbarFillClass).transform(\"translate3d(0,0,0) scaleX(\" + w + \") scaleY(\" + y + \")\").transition(e.params.speed);\n        }\n\n        \"custom\" === s.type && s.renderCustom ? (i.html(s.renderCustom(e, r + 1, n)), e.emit(\"paginationRender\", e, i[0])) : e.emit(\"paginationUpdate\", e, i[0]), i[e.params.watchOverflow && e.isLocked ? \"addClass\" : \"removeClass\"](s.lockClass);\n      }\n    },\n    render: function render() {\n      var e = this,\n          t = e.params.pagination;\n\n      if (t.el && e.pagination.el && e.pagination.$el && 0 !== e.pagination.$el.length) {\n        var a = e.virtual && e.params.virtual.enabled ? e.virtual.slides.length : e.slides.length,\n            i = e.pagination.$el,\n            s = \"\";\n\n        if (\"bullets\" === t.type) {\n          for (var r = e.params.loop ? Math.ceil((a - 2 * e.loopedSlides) / e.params.slidesPerGroup) : e.snapGrid.length, n = 0; n < r; n += 1) {\n            t.renderBullet ? s += t.renderBullet.call(e, n, t.bulletClass) : s += \"<\" + t.bulletElement + ' class=\"' + t.bulletClass + '\"></' + t.bulletElement + \">\";\n          }\n\n          i.html(s), e.pagination.bullets = i.find(\".\" + t.bulletClass);\n        }\n\n        \"fraction\" === t.type && (s = t.renderFraction ? t.renderFraction.call(e, t.currentClass, t.totalClass) : '<span class=\"' + t.currentClass + '\"></span> / <span class=\"' + t.totalClass + '\"></span>', i.html(s)), \"progressbar\" === t.type && (s = t.renderProgressbar ? t.renderProgressbar.call(e, t.progressbarFillClass) : '<span class=\"' + t.progressbarFillClass + '\"></span>', i.html(s)), \"custom\" !== t.type && e.emit(\"paginationRender\", e.pagination.$el[0]);\n      }\n    },\n    init: function init() {\n      var a = this,\n          e = a.params.pagination;\n\n      if (e.el) {\n        var t = L(e.el);\n        0 !== t.length && (a.params.uniqueNavElements && \"string\" == typeof e.el && 1 < t.length && 1 === a.$el.find(e.el).length && (t = a.$el.find(e.el)), \"bullets\" === e.type && e.clickable && t.addClass(e.clickableClass), t.addClass(e.modifierClass + e.type), \"bullets\" === e.type && e.dynamicBullets && (t.addClass(\"\" + e.modifierClass + e.type + \"-dynamic\"), a.pagination.dynamicBulletIndex = 0, e.dynamicMainBullets < 1 && (e.dynamicMainBullets = 1)), \"progressbar\" === e.type && e.progressbarOpposite && t.addClass(e.progressbarOppositeClass), e.clickable && t.on(\"click\", \".\" + e.bulletClass, function (e) {\n          e.preventDefault();\n          var t = L(this).index() * a.params.slidesPerGroup;\n          a.params.loop && (t += a.loopedSlides), a.slideTo(t);\n        }), ee.extend(a.pagination, {\n          $el: t,\n          el: t[0]\n        }));\n      }\n    },\n    destroy: function destroy() {\n      var e = this,\n          t = e.params.pagination;\n\n      if (t.el && e.pagination.el && e.pagination.$el && 0 !== e.pagination.$el.length) {\n        var a = e.pagination.$el;\n        a.removeClass(t.hiddenClass), a.removeClass(t.modifierClass + t.type), e.pagination.bullets && e.pagination.bullets.removeClass(t.bulletActiveClass), t.clickable && a.off(\"click\", \".\" + t.bulletClass);\n      }\n    }\n  },\n      G = {\n    setTranslate: function setTranslate() {\n      var e = this;\n\n      if (e.params.scrollbar.el && e.scrollbar.el) {\n        var t = e.scrollbar,\n            a = e.rtlTranslate,\n            i = e.progress,\n            s = t.dragSize,\n            r = t.trackSize,\n            n = t.$dragEl,\n            o = t.$el,\n            l = e.params.scrollbar,\n            d = s,\n            p = (r - s) * i;\n        a ? 0 < (p = -p) ? (d = s - p, p = 0) : r < -p + s && (d = r + p) : p < 0 ? (d = s + p, p = 0) : r < p + s && (d = r - p), e.isHorizontal() ? (te.transforms3d ? n.transform(\"translate3d(\" + p + \"px, 0, 0)\") : n.transform(\"translateX(\" + p + \"px)\"), n[0].style.width = d + \"px\") : (te.transforms3d ? n.transform(\"translate3d(0px, \" + p + \"px, 0)\") : n.transform(\"translateY(\" + p + \"px)\"), n[0].style.height = d + \"px\"), l.hide && (clearTimeout(e.scrollbar.timeout), o[0].style.opacity = 1, e.scrollbar.timeout = setTimeout(function () {\n          o[0].style.opacity = 0, o.transition(400);\n        }, 1e3));\n      }\n    },\n    setTransition: function setTransition(e) {\n      this.params.scrollbar.el && this.scrollbar.el && this.scrollbar.$dragEl.transition(e);\n    },\n    updateSize: function updateSize() {\n      var e = this;\n\n      if (e.params.scrollbar.el && e.scrollbar.el) {\n        var t = e.scrollbar,\n            a = t.$dragEl,\n            i = t.$el;\n        a[0].style.width = \"\", a[0].style.height = \"\";\n        var s,\n            r = e.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight,\n            n = e.size / e.virtualSize,\n            o = n * (r / e.size);\n        s = \"auto\" === e.params.scrollbar.dragSize ? r * n : parseInt(e.params.scrollbar.dragSize, 10), e.isHorizontal() ? a[0].style.width = s + \"px\" : a[0].style.height = s + \"px\", i[0].style.display = 1 <= n ? \"none\" : \"\", e.params.scrollbar.hide && (i[0].style.opacity = 0), ee.extend(t, {\n          trackSize: r,\n          divider: n,\n          moveDivider: o,\n          dragSize: s\n        }), t.$el[e.params.watchOverflow && e.isLocked ? \"addClass\" : \"removeClass\"](e.params.scrollbar.lockClass);\n      }\n    },\n    setDragPosition: function setDragPosition(e) {\n      var t,\n          a = this,\n          i = a.scrollbar,\n          s = a.rtlTranslate,\n          r = i.$el,\n          n = i.dragSize,\n          o = i.trackSize;\n      t = ((a.isHorizontal() ? \"touchstart\" === e.type || \"touchmove\" === e.type ? e.targetTouches[0].pageX : e.pageX || e.clientX : \"touchstart\" === e.type || \"touchmove\" === e.type ? e.targetTouches[0].pageY : e.pageY || e.clientY) - r.offset()[a.isHorizontal() ? \"left\" : \"top\"] - n / 2) / (o - n), t = Math.max(Math.min(t, 1), 0), s && (t = 1 - t);\n      var l = a.minTranslate() + (a.maxTranslate() - a.minTranslate()) * t;\n      a.updateProgress(l), a.setTranslate(l), a.updateActiveIndex(), a.updateSlidesClasses();\n    },\n    onDragStart: function onDragStart(e) {\n      var t = this,\n          a = t.params.scrollbar,\n          i = t.scrollbar,\n          s = t.$wrapperEl,\n          r = i.$el,\n          n = i.$dragEl;\n      t.scrollbar.isTouched = !0, e.preventDefault(), e.stopPropagation(), s.transition(100), n.transition(100), i.setDragPosition(e), clearTimeout(t.scrollbar.dragTimeout), r.transition(0), a.hide && r.css(\"opacity\", 1), t.emit(\"scrollbarDragStart\", e);\n    },\n    onDragMove: function onDragMove(e) {\n      var t = this.scrollbar,\n          a = this.$wrapperEl,\n          i = t.$el,\n          s = t.$dragEl;\n      this.scrollbar.isTouched && (e.preventDefault ? e.preventDefault() : e.returnValue = !1, t.setDragPosition(e), a.transition(0), i.transition(0), s.transition(0), this.emit(\"scrollbarDragMove\", e));\n    },\n    onDragEnd: function onDragEnd(e) {\n      var t = this,\n          a = t.params.scrollbar,\n          i = t.scrollbar.$el;\n      t.scrollbar.isTouched && (t.scrollbar.isTouched = !1, a.hide && (clearTimeout(t.scrollbar.dragTimeout), t.scrollbar.dragTimeout = ee.nextTick(function () {\n        i.css(\"opacity\", 0), i.transition(400);\n      }, 1e3)), t.emit(\"scrollbarDragEnd\", e), a.snapOnRelease && t.slideToClosest());\n    },\n    enableDraggable: function enableDraggable() {\n      var e = this;\n\n      if (e.params.scrollbar.el) {\n        var t = e.scrollbar,\n            a = e.touchEventsTouch,\n            i = e.touchEventsDesktop,\n            s = e.params,\n            r = t.$el[0],\n            n = !(!te.passiveListener || !s.passiveListeners) && {\n          passive: !1,\n          capture: !1\n        },\n            o = !(!te.passiveListener || !s.passiveListeners) && {\n          passive: !0,\n          capture: !1\n        };\n        te.touch ? (r.addEventListener(a.start, e.scrollbar.onDragStart, n), r.addEventListener(a.move, e.scrollbar.onDragMove, n), r.addEventListener(a.end, e.scrollbar.onDragEnd, o)) : (r.addEventListener(i.start, e.scrollbar.onDragStart, n), f.addEventListener(i.move, e.scrollbar.onDragMove, n), f.addEventListener(i.end, e.scrollbar.onDragEnd, o));\n      }\n    },\n    disableDraggable: function disableDraggable() {\n      var e = this;\n\n      if (e.params.scrollbar.el) {\n        var t = e.scrollbar,\n            a = e.touchEventsTouch,\n            i = e.touchEventsDesktop,\n            s = e.params,\n            r = t.$el[0],\n            n = !(!te.passiveListener || !s.passiveListeners) && {\n          passive: !1,\n          capture: !1\n        },\n            o = !(!te.passiveListener || !s.passiveListeners) && {\n          passive: !0,\n          capture: !1\n        };\n        te.touch ? (r.removeEventListener(a.start, e.scrollbar.onDragStart, n), r.removeEventListener(a.move, e.scrollbar.onDragMove, n), r.removeEventListener(a.end, e.scrollbar.onDragEnd, o)) : (r.removeEventListener(i.start, e.scrollbar.onDragStart, n), f.removeEventListener(i.move, e.scrollbar.onDragMove, n), f.removeEventListener(i.end, e.scrollbar.onDragEnd, o));\n      }\n    },\n    init: function init() {\n      var e = this;\n\n      if (e.params.scrollbar.el) {\n        var t = e.scrollbar,\n            a = e.$el,\n            i = e.params.scrollbar,\n            s = L(i.el);\n        e.params.uniqueNavElements && \"string\" == typeof i.el && 1 < s.length && 1 === a.find(i.el).length && (s = a.find(i.el));\n        var r = s.find(\".\" + e.params.scrollbar.dragClass);\n        0 === r.length && (r = L('<div class=\"' + e.params.scrollbar.dragClass + '\"></div>'), s.append(r)), ee.extend(t, {\n          $el: s,\n          el: s[0],\n          $dragEl: r,\n          dragEl: r[0]\n        }), i.draggable && t.enableDraggable();\n      }\n    },\n    destroy: function destroy() {\n      this.scrollbar.disableDraggable();\n    }\n  },\n      B = {\n    setTransform: function setTransform(e, t) {\n      var a = this.rtl,\n          i = L(e),\n          s = a ? -1 : 1,\n          r = i.attr(\"data-swiper-parallax\") || \"0\",\n          n = i.attr(\"data-swiper-parallax-x\"),\n          o = i.attr(\"data-swiper-parallax-y\"),\n          l = i.attr(\"data-swiper-parallax-scale\"),\n          d = i.attr(\"data-swiper-parallax-opacity\");\n\n      if (n || o ? (n = n || \"0\", o = o || \"0\") : this.isHorizontal() ? (n = r, o = \"0\") : (o = r, n = \"0\"), n = 0 <= n.indexOf(\"%\") ? parseInt(n, 10) * t * s + \"%\" : n * t * s + \"px\", o = 0 <= o.indexOf(\"%\") ? parseInt(o, 10) * t + \"%\" : o * t + \"px\", null != d) {\n        var p = d - (d - 1) * (1 - Math.abs(t));\n        i[0].style.opacity = p;\n      }\n\n      if (null == l) i.transform(\"translate3d(\" + n + \", \" + o + \", 0px)\");else {\n        var c = l - (l - 1) * (1 - Math.abs(t));\n        i.transform(\"translate3d(\" + n + \", \" + o + \", 0px) scale(\" + c + \")\");\n      }\n    },\n    setTranslate: function setTranslate() {\n      var i = this,\n          e = i.$el,\n          t = i.slides,\n          s = i.progress,\n          r = i.snapGrid;\n      e.children(\"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]\").each(function (e, t) {\n        i.parallax.setTransform(t, s);\n      }), t.each(function (e, t) {\n        var a = t.progress;\n        1 < i.params.slidesPerGroup && \"auto\" !== i.params.slidesPerView && (a += Math.ceil(e / 2) - s * (r.length - 1)), a = Math.min(Math.max(a, -1), 1), L(t).find(\"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]\").each(function (e, t) {\n          i.parallax.setTransform(t, a);\n        });\n      });\n    },\n    setTransition: function setTransition(s) {\n      void 0 === s && (s = this.params.speed);\n      this.$el.find(\"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]\").each(function (e, t) {\n        var a = L(t),\n            i = parseInt(a.attr(\"data-swiper-parallax-duration\"), 10) || s;\n        0 === s && (i = 0), a.transition(i);\n      });\n    }\n  },\n      X = {\n    getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n      if (e.targetTouches.length < 2) return 1;\n      var t = e.targetTouches[0].pageX,\n          a = e.targetTouches[0].pageY,\n          i = e.targetTouches[1].pageX,\n          s = e.targetTouches[1].pageY;\n      return Math.sqrt(Math.pow(i - t, 2) + Math.pow(s - a, 2));\n    },\n    onGestureStart: function onGestureStart(e) {\n      var t = this,\n          a = t.params.zoom,\n          i = t.zoom,\n          s = i.gesture;\n\n      if (i.fakeGestureTouched = !1, i.fakeGestureMoved = !1, !te.gestures) {\n        if (\"touchstart\" !== e.type || \"touchstart\" === e.type && e.targetTouches.length < 2) return;\n        i.fakeGestureTouched = !0, s.scaleStart = X.getDistanceBetweenTouches(e);\n      }\n\n      s.$slideEl && s.$slideEl.length || (s.$slideEl = L(e.target).closest(\".swiper-slide\"), 0 === s.$slideEl.length && (s.$slideEl = t.slides.eq(t.activeIndex)), s.$imageEl = s.$slideEl.find(\"img, svg, canvas\"), s.$imageWrapEl = s.$imageEl.parent(\".\" + a.containerClass), s.maxRatio = s.$imageWrapEl.attr(\"data-swiper-zoom\") || a.maxRatio, 0 !== s.$imageWrapEl.length) ? (s.$imageEl.transition(0), t.zoom.isScaling = !0) : s.$imageEl = void 0;\n    },\n    onGestureChange: function onGestureChange(e) {\n      var t = this.params.zoom,\n          a = this.zoom,\n          i = a.gesture;\n\n      if (!te.gestures) {\n        if (\"touchmove\" !== e.type || \"touchmove\" === e.type && e.targetTouches.length < 2) return;\n        a.fakeGestureMoved = !0, i.scaleMove = X.getDistanceBetweenTouches(e);\n      }\n\n      i.$imageEl && 0 !== i.$imageEl.length && (a.scale = te.gestures ? e.scale * a.currentScale : i.scaleMove / i.scaleStart * a.currentScale, a.scale > i.maxRatio && (a.scale = i.maxRatio - 1 + Math.pow(a.scale - i.maxRatio + 1, .5)), a.scale < t.minRatio && (a.scale = t.minRatio + 1 - Math.pow(t.minRatio - a.scale + 1, .5)), i.$imageEl.transform(\"translate3d(0,0,0) scale(\" + a.scale + \")\"));\n    },\n    onGestureEnd: function onGestureEnd(e) {\n      var t = this.params.zoom,\n          a = this.zoom,\n          i = a.gesture;\n\n      if (!te.gestures) {\n        if (!a.fakeGestureTouched || !a.fakeGestureMoved) return;\n        if (\"touchend\" !== e.type || \"touchend\" === e.type && e.changedTouches.length < 2 && !g.android) return;\n        a.fakeGestureTouched = !1, a.fakeGestureMoved = !1;\n      }\n\n      i.$imageEl && 0 !== i.$imageEl.length && (a.scale = Math.max(Math.min(a.scale, i.maxRatio), t.minRatio), i.$imageEl.transition(this.params.speed).transform(\"translate3d(0,0,0) scale(\" + a.scale + \")\"), a.currentScale = a.scale, a.isScaling = !1, 1 === a.scale && (i.$slideEl = void 0));\n    },\n    onTouchStart: function onTouchStart(e) {\n      var t = this.zoom,\n          a = t.gesture,\n          i = t.image;\n      a.$imageEl && 0 !== a.$imageEl.length && (i.isTouched || (g.android && e.preventDefault(), i.isTouched = !0, i.touchesStart.x = \"touchstart\" === e.type ? e.targetTouches[0].pageX : e.pageX, i.touchesStart.y = \"touchstart\" === e.type ? e.targetTouches[0].pageY : e.pageY));\n    },\n    onTouchMove: function onTouchMove(e) {\n      var t = this,\n          a = t.zoom,\n          i = a.gesture,\n          s = a.image,\n          r = a.velocity;\n\n      if (i.$imageEl && 0 !== i.$imageEl.length && (t.allowClick = !1, s.isTouched && i.$slideEl)) {\n        s.isMoved || (s.width = i.$imageEl[0].offsetWidth, s.height = i.$imageEl[0].offsetHeight, s.startX = ee.getTranslate(i.$imageWrapEl[0], \"x\") || 0, s.startY = ee.getTranslate(i.$imageWrapEl[0], \"y\") || 0, i.slideWidth = i.$slideEl[0].offsetWidth, i.slideHeight = i.$slideEl[0].offsetHeight, i.$imageWrapEl.transition(0), t.rtl && (s.startX = -s.startX, s.startY = -s.startY));\n        var n = s.width * a.scale,\n            o = s.height * a.scale;\n\n        if (!(n < i.slideWidth && o < i.slideHeight)) {\n          if (s.minX = Math.min(i.slideWidth / 2 - n / 2, 0), s.maxX = -s.minX, s.minY = Math.min(i.slideHeight / 2 - o / 2, 0), s.maxY = -s.minY, s.touchesCurrent.x = \"touchmove\" === e.type ? e.targetTouches[0].pageX : e.pageX, s.touchesCurrent.y = \"touchmove\" === e.type ? e.targetTouches[0].pageY : e.pageY, !s.isMoved && !a.isScaling) {\n            if (t.isHorizontal() && (Math.floor(s.minX) === Math.floor(s.startX) && s.touchesCurrent.x < s.touchesStart.x || Math.floor(s.maxX) === Math.floor(s.startX) && s.touchesCurrent.x > s.touchesStart.x)) return void (s.isTouched = !1);\n            if (!t.isHorizontal() && (Math.floor(s.minY) === Math.floor(s.startY) && s.touchesCurrent.y < s.touchesStart.y || Math.floor(s.maxY) === Math.floor(s.startY) && s.touchesCurrent.y > s.touchesStart.y)) return void (s.isTouched = !1);\n          }\n\n          e.preventDefault(), e.stopPropagation(), s.isMoved = !0, s.currentX = s.touchesCurrent.x - s.touchesStart.x + s.startX, s.currentY = s.touchesCurrent.y - s.touchesStart.y + s.startY, s.currentX < s.minX && (s.currentX = s.minX + 1 - Math.pow(s.minX - s.currentX + 1, .8)), s.currentX > s.maxX && (s.currentX = s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, .8)), s.currentY < s.minY && (s.currentY = s.minY + 1 - Math.pow(s.minY - s.currentY + 1, .8)), s.currentY > s.maxY && (s.currentY = s.maxY - 1 + Math.pow(s.currentY - s.maxY + 1, .8)), r.prevPositionX || (r.prevPositionX = s.touchesCurrent.x), r.prevPositionY || (r.prevPositionY = s.touchesCurrent.y), r.prevTime || (r.prevTime = Date.now()), r.x = (s.touchesCurrent.x - r.prevPositionX) / (Date.now() - r.prevTime) / 2, r.y = (s.touchesCurrent.y - r.prevPositionY) / (Date.now() - r.prevTime) / 2, Math.abs(s.touchesCurrent.x - r.prevPositionX) < 2 && (r.x = 0), Math.abs(s.touchesCurrent.y - r.prevPositionY) < 2 && (r.y = 0), r.prevPositionX = s.touchesCurrent.x, r.prevPositionY = s.touchesCurrent.y, r.prevTime = Date.now(), i.$imageWrapEl.transform(\"translate3d(\" + s.currentX + \"px, \" + s.currentY + \"px,0)\");\n        }\n      }\n    },\n    onTouchEnd: function onTouchEnd() {\n      var e = this.zoom,\n          t = e.gesture,\n          a = e.image,\n          i = e.velocity;\n\n      if (t.$imageEl && 0 !== t.$imageEl.length) {\n        if (!a.isTouched || !a.isMoved) return a.isTouched = !1, void (a.isMoved = !1);\n        a.isTouched = !1, a.isMoved = !1;\n        var s = 300,\n            r = 300,\n            n = i.x * s,\n            o = a.currentX + n,\n            l = i.y * r,\n            d = a.currentY + l;\n        0 !== i.x && (s = Math.abs((o - a.currentX) / i.x)), 0 !== i.y && (r = Math.abs((d - a.currentY) / i.y));\n        var p = Math.max(s, r);\n        a.currentX = o, a.currentY = d;\n        var c = a.width * e.scale,\n            u = a.height * e.scale;\n        a.minX = Math.min(t.slideWidth / 2 - c / 2, 0), a.maxX = -a.minX, a.minY = Math.min(t.slideHeight / 2 - u / 2, 0), a.maxY = -a.minY, a.currentX = Math.max(Math.min(a.currentX, a.maxX), a.minX), a.currentY = Math.max(Math.min(a.currentY, a.maxY), a.minY), t.$imageWrapEl.transition(p).transform(\"translate3d(\" + a.currentX + \"px, \" + a.currentY + \"px,0)\");\n      }\n    },\n    onTransitionEnd: function onTransitionEnd() {\n      var e = this.zoom,\n          t = e.gesture;\n      t.$slideEl && this.previousIndex !== this.activeIndex && (t.$imageEl.transform(\"translate3d(0,0,0) scale(1)\"), t.$imageWrapEl.transform(\"translate3d(0,0,0)\"), e.scale = 1, e.currentScale = 1, t.$slideEl = void 0, t.$imageEl = void 0, t.$imageWrapEl = void 0);\n    },\n    toggle: function toggle(e) {\n      var t = this.zoom;\n      t.scale && 1 !== t.scale ? t.out() : t.in(e);\n    },\n    in: function _in(e) {\n      var t,\n          a,\n          i,\n          s,\n          r,\n          n,\n          o,\n          l,\n          d,\n          p,\n          c,\n          u,\n          h,\n          v,\n          f,\n          m,\n          g = this,\n          b = g.zoom,\n          w = g.params.zoom,\n          y = b.gesture,\n          x = b.image;\n      (y.$slideEl || (y.$slideEl = g.clickedSlide ? L(g.clickedSlide) : g.slides.eq(g.activeIndex), y.$imageEl = y.$slideEl.find(\"img, svg, canvas\"), y.$imageWrapEl = y.$imageEl.parent(\".\" + w.containerClass)), y.$imageEl && 0 !== y.$imageEl.length) && (y.$slideEl.addClass(\"\" + w.zoomedSlideClass), void 0 === x.touchesStart.x && e ? (t = \"touchend\" === e.type ? e.changedTouches[0].pageX : e.pageX, a = \"touchend\" === e.type ? e.changedTouches[0].pageY : e.pageY) : (t = x.touchesStart.x, a = x.touchesStart.y), b.scale = y.$imageWrapEl.attr(\"data-swiper-zoom\") || w.maxRatio, b.currentScale = y.$imageWrapEl.attr(\"data-swiper-zoom\") || w.maxRatio, e ? (f = y.$slideEl[0].offsetWidth, m = y.$slideEl[0].offsetHeight, i = y.$slideEl.offset().left + f / 2 - t, s = y.$slideEl.offset().top + m / 2 - a, o = y.$imageEl[0].offsetWidth, l = y.$imageEl[0].offsetHeight, d = o * b.scale, p = l * b.scale, h = -(c = Math.min(f / 2 - d / 2, 0)), v = -(u = Math.min(m / 2 - p / 2, 0)), (r = i * b.scale) < c && (r = c), h < r && (r = h), (n = s * b.scale) < u && (n = u), v < n && (n = v)) : n = r = 0, y.$imageWrapEl.transition(300).transform(\"translate3d(\" + r + \"px, \" + n + \"px,0)\"), y.$imageEl.transition(300).transform(\"translate3d(0,0,0) scale(\" + b.scale + \")\"));\n    },\n    out: function out() {\n      var e = this,\n          t = e.zoom,\n          a = e.params.zoom,\n          i = t.gesture;\n      i.$slideEl || (i.$slideEl = e.clickedSlide ? L(e.clickedSlide) : e.slides.eq(e.activeIndex), i.$imageEl = i.$slideEl.find(\"img, svg, canvas\"), i.$imageWrapEl = i.$imageEl.parent(\".\" + a.containerClass)), i.$imageEl && 0 !== i.$imageEl.length && (t.scale = 1, t.currentScale = 1, i.$imageWrapEl.transition(300).transform(\"translate3d(0,0,0)\"), i.$imageEl.transition(300).transform(\"translate3d(0,0,0) scale(1)\"), i.$slideEl.removeClass(\"\" + a.zoomedSlideClass), i.$slideEl = void 0);\n    },\n    enable: function enable() {\n      var e = this,\n          t = e.zoom;\n\n      if (!t.enabled) {\n        t.enabled = !0;\n        var a = !(\"touchstart\" !== e.touchEvents.start || !te.passiveListener || !e.params.passiveListeners) && {\n          passive: !0,\n          capture: !1\n        };\n        te.gestures ? (e.$wrapperEl.on(\"gesturestart\", \".swiper-slide\", t.onGestureStart, a), e.$wrapperEl.on(\"gesturechange\", \".swiper-slide\", t.onGestureChange, a), e.$wrapperEl.on(\"gestureend\", \".swiper-slide\", t.onGestureEnd, a)) : \"touchstart\" === e.touchEvents.start && (e.$wrapperEl.on(e.touchEvents.start, \".swiper-slide\", t.onGestureStart, a), e.$wrapperEl.on(e.touchEvents.move, \".swiper-slide\", t.onGestureChange, a), e.$wrapperEl.on(e.touchEvents.end, \".swiper-slide\", t.onGestureEnd, a)), e.$wrapperEl.on(e.touchEvents.move, \".\" + e.params.zoom.containerClass, t.onTouchMove);\n      }\n    },\n    disable: function disable() {\n      var e = this,\n          t = e.zoom;\n\n      if (t.enabled) {\n        e.zoom.enabled = !1;\n        var a = !(\"touchstart\" !== e.touchEvents.start || !te.passiveListener || !e.params.passiveListeners) && {\n          passive: !0,\n          capture: !1\n        };\n        te.gestures ? (e.$wrapperEl.off(\"gesturestart\", \".swiper-slide\", t.onGestureStart, a), e.$wrapperEl.off(\"gesturechange\", \".swiper-slide\", t.onGestureChange, a), e.$wrapperEl.off(\"gestureend\", \".swiper-slide\", t.onGestureEnd, a)) : \"touchstart\" === e.touchEvents.start && (e.$wrapperEl.off(e.touchEvents.start, \".swiper-slide\", t.onGestureStart, a), e.$wrapperEl.off(e.touchEvents.move, \".swiper-slide\", t.onGestureChange, a), e.$wrapperEl.off(e.touchEvents.end, \".swiper-slide\", t.onGestureEnd, a)), e.$wrapperEl.off(e.touchEvents.move, \".\" + e.params.zoom.containerClass, t.onTouchMove);\n      }\n    }\n  },\n      Y = {\n    loadInSlide: function loadInSlide(e, l) {\n      void 0 === l && (l = !0);\n      var d = this,\n          p = d.params.lazy;\n\n      if (void 0 !== e && 0 !== d.slides.length) {\n        var c = d.virtual && d.params.virtual.enabled ? d.$wrapperEl.children(\".\" + d.params.slideClass + '[data-swiper-slide-index=\"' + e + '\"]') : d.slides.eq(e),\n            t = c.find(\".\" + p.elementClass + \":not(.\" + p.loadedClass + \"):not(.\" + p.loadingClass + \")\");\n        !c.hasClass(p.elementClass) || c.hasClass(p.loadedClass) || c.hasClass(p.loadingClass) || (t = t.add(c[0])), 0 !== t.length && t.each(function (e, t) {\n          var i = L(t);\n          i.addClass(p.loadingClass);\n          var s = i.attr(\"data-background\"),\n              r = i.attr(\"data-src\"),\n              n = i.attr(\"data-srcset\"),\n              o = i.attr(\"data-sizes\");\n          d.loadImage(i[0], r || s, n, o, !1, function () {\n            if (null != d && d && (!d || d.params) && !d.destroyed) {\n              if (s ? (i.css(\"background-image\", 'url(\"' + s + '\")'), i.removeAttr(\"data-background\")) : (n && (i.attr(\"srcset\", n), i.removeAttr(\"data-srcset\")), o && (i.attr(\"sizes\", o), i.removeAttr(\"data-sizes\")), r && (i.attr(\"src\", r), i.removeAttr(\"data-src\"))), i.addClass(p.loadedClass).removeClass(p.loadingClass), c.find(\".\" + p.preloaderClass).remove(), d.params.loop && l) {\n                var e = c.attr(\"data-swiper-slide-index\");\n\n                if (c.hasClass(d.params.slideDuplicateClass)) {\n                  var t = d.$wrapperEl.children('[data-swiper-slide-index=\"' + e + '\"]:not(.' + d.params.slideDuplicateClass + \")\");\n                  d.lazy.loadInSlide(t.index(), !1);\n                } else {\n                  var a = d.$wrapperEl.children(\".\" + d.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + e + '\"]');\n                  d.lazy.loadInSlide(a.index(), !1);\n                }\n              }\n\n              d.emit(\"lazyImageReady\", c[0], i[0]);\n            }\n          }), d.emit(\"lazyImageLoad\", c[0], i[0]);\n        });\n      }\n    },\n    load: function load() {\n      var i = this,\n          t = i.$wrapperEl,\n          a = i.params,\n          s = i.slides,\n          e = i.activeIndex,\n          r = i.virtual && a.virtual.enabled,\n          n = a.lazy,\n          o = a.slidesPerView;\n\n      function l(e) {\n        if (r) {\n          if (t.children(\".\" + a.slideClass + '[data-swiper-slide-index=\"' + e + '\"]').length) return !0;\n        } else if (s[e]) return !0;\n\n        return !1;\n      }\n\n      function d(e) {\n        return r ? L(e).attr(\"data-swiper-slide-index\") : L(e).index();\n      }\n\n      if (\"auto\" === o && (o = 0), i.lazy.initialImageLoaded || (i.lazy.initialImageLoaded = !0), i.params.watchSlidesVisibility) t.children(\".\" + a.slideVisibleClass).each(function (e, t) {\n        var a = r ? L(t).attr(\"data-swiper-slide-index\") : L(t).index();\n        i.lazy.loadInSlide(a);\n      });else if (1 < o) for (var p = e; p < e + o; p += 1) {\n        l(p) && i.lazy.loadInSlide(p);\n      } else i.lazy.loadInSlide(e);\n      if (n.loadPrevNext) if (1 < o || n.loadPrevNextAmount && 1 < n.loadPrevNextAmount) {\n        for (var c = n.loadPrevNextAmount, u = o, h = Math.min(e + u + Math.max(c, u), s.length), v = Math.max(e - Math.max(u, c), 0), f = e + o; f < h; f += 1) {\n          l(f) && i.lazy.loadInSlide(f);\n        }\n\n        for (var m = v; m < e; m += 1) {\n          l(m) && i.lazy.loadInSlide(m);\n        }\n      } else {\n        var g = t.children(\".\" + a.slideNextClass);\n        0 < g.length && i.lazy.loadInSlide(d(g));\n        var b = t.children(\".\" + a.slidePrevClass);\n        0 < b.length && i.lazy.loadInSlide(d(b));\n      }\n    }\n  },\n      V = {\n    LinearSpline: function LinearSpline(e, t) {\n      var a,\n          i,\n          s,\n          r,\n          n,\n          o = function o(e, t) {\n        for (i = -1, a = e.length; 1 < a - i;) {\n          e[s = a + i >> 1] <= t ? i = s : a = s;\n        }\n\n        return a;\n      };\n\n      return this.x = e, this.y = t, this.lastIndex = e.length - 1, this.interpolate = function (e) {\n        return e ? (n = o(this.x, e), r = n - 1, (e - this.x[r]) * (this.y[n] - this.y[r]) / (this.x[n] - this.x[r]) + this.y[r]) : 0;\n      }, this;\n    },\n    getInterpolateFunction: function getInterpolateFunction(e) {\n      var t = this;\n      t.controller.spline || (t.controller.spline = t.params.loop ? new V.LinearSpline(t.slidesGrid, e.slidesGrid) : new V.LinearSpline(t.snapGrid, e.snapGrid));\n    },\n    setTranslate: function setTranslate(e, t) {\n      var a,\n          i,\n          s = this,\n          r = s.controller.control;\n\n      function n(e) {\n        var t = s.rtlTranslate ? -s.translate : s.translate;\n        \"slide\" === s.params.controller.by && (s.controller.getInterpolateFunction(e), i = -s.controller.spline.interpolate(-t)), i && \"container\" !== s.params.controller.by || (a = (e.maxTranslate() - e.minTranslate()) / (s.maxTranslate() - s.minTranslate()), i = (t - s.minTranslate()) * a + e.minTranslate()), s.params.controller.inverse && (i = e.maxTranslate() - i), e.updateProgress(i), e.setTranslate(i, s), e.updateActiveIndex(), e.updateSlidesClasses();\n      }\n\n      if (Array.isArray(r)) for (var o = 0; o < r.length; o += 1) {\n        r[o] !== t && r[o] instanceof T && n(r[o]);\n      } else r instanceof T && t !== r && n(r);\n    },\n    setTransition: function setTransition(t, e) {\n      var a,\n          i = this,\n          s = i.controller.control;\n\n      function r(e) {\n        e.setTransition(t, i), 0 !== t && (e.transitionStart(), e.params.autoHeight && ee.nextTick(function () {\n          e.updateAutoHeight();\n        }), e.$wrapperEl.transitionEnd(function () {\n          s && (e.params.loop && \"slide\" === i.params.controller.by && e.loopFix(), e.transitionEnd());\n        }));\n      }\n\n      if (Array.isArray(s)) for (a = 0; a < s.length; a += 1) {\n        s[a] !== e && s[a] instanceof T && r(s[a]);\n      } else s instanceof T && e !== s && r(s);\n    }\n  },\n      F = {\n    makeElFocusable: function makeElFocusable(e) {\n      return e.attr(\"tabIndex\", \"0\"), e;\n    },\n    addElRole: function addElRole(e, t) {\n      return e.attr(\"role\", t), e;\n    },\n    addElLabel: function addElLabel(e, t) {\n      return e.attr(\"aria-label\", t), e;\n    },\n    disableEl: function disableEl(e) {\n      return e.attr(\"aria-disabled\", !0), e;\n    },\n    enableEl: function enableEl(e) {\n      return e.attr(\"aria-disabled\", !1), e;\n    },\n    onEnterKey: function onEnterKey(e) {\n      var t = this,\n          a = t.params.a11y;\n\n      if (13 === e.keyCode) {\n        var i = L(e.target);\n        t.navigation && t.navigation.$nextEl && i.is(t.navigation.$nextEl) && (t.isEnd && !t.params.loop || t.slideNext(), t.isEnd ? t.a11y.notify(a.lastSlideMessage) : t.a11y.notify(a.nextSlideMessage)), t.navigation && t.navigation.$prevEl && i.is(t.navigation.$prevEl) && (t.isBeginning && !t.params.loop || t.slidePrev(), t.isBeginning ? t.a11y.notify(a.firstSlideMessage) : t.a11y.notify(a.prevSlideMessage)), t.pagination && i.is(\".\" + t.params.pagination.bulletClass) && i[0].click();\n      }\n    },\n    notify: function notify(e) {\n      var t = this.a11y.liveRegion;\n      0 !== t.length && (t.html(\"\"), t.html(e));\n    },\n    updateNavigation: function updateNavigation() {\n      var e = this;\n\n      if (!e.params.loop) {\n        var t = e.navigation,\n            a = t.$nextEl,\n            i = t.$prevEl;\n        i && 0 < i.length && (e.isBeginning ? e.a11y.disableEl(i) : e.a11y.enableEl(i)), a && 0 < a.length && (e.isEnd ? e.a11y.disableEl(a) : e.a11y.enableEl(a));\n      }\n    },\n    updatePagination: function updatePagination() {\n      var i = this,\n          s = i.params.a11y;\n      i.pagination && i.params.pagination.clickable && i.pagination.bullets && i.pagination.bullets.length && i.pagination.bullets.each(function (e, t) {\n        var a = L(t);\n        i.a11y.makeElFocusable(a), i.a11y.addElRole(a, \"button\"), i.a11y.addElLabel(a, s.paginationBulletMessage.replace(/{{index}}/, a.index() + 1));\n      });\n    },\n    init: function init() {\n      var e = this;\n      e.$el.append(e.a11y.liveRegion);\n      var t,\n          a,\n          i = e.params.a11y;\n      e.navigation && e.navigation.$nextEl && (t = e.navigation.$nextEl), e.navigation && e.navigation.$prevEl && (a = e.navigation.$prevEl), t && (e.a11y.makeElFocusable(t), e.a11y.addElRole(t, \"button\"), e.a11y.addElLabel(t, i.nextSlideMessage), t.on(\"keydown\", e.a11y.onEnterKey)), a && (e.a11y.makeElFocusable(a), e.a11y.addElRole(a, \"button\"), e.a11y.addElLabel(a, i.prevSlideMessage), a.on(\"keydown\", e.a11y.onEnterKey)), e.pagination && e.params.pagination.clickable && e.pagination.bullets && e.pagination.bullets.length && e.pagination.$el.on(\"keydown\", \".\" + e.params.pagination.bulletClass, e.a11y.onEnterKey);\n    },\n    destroy: function destroy() {\n      var e,\n          t,\n          a = this;\n      a.a11y.liveRegion && 0 < a.a11y.liveRegion.length && a.a11y.liveRegion.remove(), a.navigation && a.navigation.$nextEl && (e = a.navigation.$nextEl), a.navigation && a.navigation.$prevEl && (t = a.navigation.$prevEl), e && e.off(\"keydown\", a.a11y.onEnterKey), t && t.off(\"keydown\", a.a11y.onEnterKey), a.pagination && a.params.pagination.clickable && a.pagination.bullets && a.pagination.bullets.length && a.pagination.$el.off(\"keydown\", \".\" + a.params.pagination.bulletClass, a.a11y.onEnterKey);\n    }\n  },\n      R = {\n    init: function init() {\n      var e = this;\n\n      if (e.params.history) {\n        if (!J.history || !J.history.pushState) return e.params.history.enabled = !1, void (e.params.hashNavigation.enabled = !0);\n        var t = e.history;\n        t.initialized = !0, t.paths = R.getPathValues(), (t.paths.key || t.paths.value) && (t.scrollToSlide(0, t.paths.value, e.params.runCallbacksOnInit), e.params.history.replaceState || J.addEventListener(\"popstate\", e.history.setHistoryPopState));\n      }\n    },\n    destroy: function destroy() {\n      this.params.history.replaceState || J.removeEventListener(\"popstate\", this.history.setHistoryPopState);\n    },\n    setHistoryPopState: function setHistoryPopState() {\n      this.history.paths = R.getPathValues(), this.history.scrollToSlide(this.params.speed, this.history.paths.value, !1);\n    },\n    getPathValues: function getPathValues() {\n      var e = J.location.pathname.slice(1).split(\"/\").filter(function (e) {\n        return \"\" !== e;\n      }),\n          t = e.length;\n      return {\n        key: e[t - 2],\n        value: e[t - 1]\n      };\n    },\n    setHistory: function setHistory(e, t) {\n      if (this.history.initialized && this.params.history.enabled) {\n        var a = this.slides.eq(t),\n            i = R.slugify(a.attr(\"data-history\"));\n        J.location.pathname.includes(e) || (i = e + \"/\" + i);\n        var s = J.history.state;\n        s && s.value === i || (this.params.history.replaceState ? J.history.replaceState({\n          value: i\n        }, null, i) : J.history.pushState({\n          value: i\n        }, null, i));\n      }\n    },\n    slugify: function slugify(e) {\n      return e.toString().replace(/\\s+/g, \"-\").replace(/[^\\w-]+/g, \"\").replace(/--+/g, \"-\").replace(/^-+/, \"\").replace(/-+$/, \"\");\n    },\n    scrollToSlide: function scrollToSlide(e, t, a) {\n      var i = this;\n      if (t) for (var s = 0, r = i.slides.length; s < r; s += 1) {\n        var n = i.slides.eq(s);\n\n        if (R.slugify(n.attr(\"data-history\")) === t && !n.hasClass(i.params.slideDuplicateClass)) {\n          var o = n.index();\n          i.slideTo(o, e, a);\n        }\n      } else i.slideTo(0, e, a);\n    }\n  },\n      q = {\n    onHashCange: function onHashCange() {\n      var e = this,\n          t = f.location.hash.replace(\"#\", \"\");\n\n      if (t !== e.slides.eq(e.activeIndex).attr(\"data-hash\")) {\n        var a = e.$wrapperEl.children(\".\" + e.params.slideClass + '[data-hash=\"' + t + '\"]').index();\n        if (void 0 === a) return;\n        e.slideTo(a);\n      }\n    },\n    setHash: function setHash() {\n      var e = this;\n      if (e.hashNavigation.initialized && e.params.hashNavigation.enabled) if (e.params.hashNavigation.replaceState && J.history && J.history.replaceState) J.history.replaceState(null, null, \"#\" + e.slides.eq(e.activeIndex).attr(\"data-hash\") || \"\");else {\n        var t = e.slides.eq(e.activeIndex),\n            a = t.attr(\"data-hash\") || t.attr(\"data-history\");\n        f.location.hash = a || \"\";\n      }\n    },\n    init: function init() {\n      var e = this;\n\n      if (!(!e.params.hashNavigation.enabled || e.params.history && e.params.history.enabled)) {\n        e.hashNavigation.initialized = !0;\n        var t = f.location.hash.replace(\"#\", \"\");\n        if (t) for (var a = 0, i = e.slides.length; a < i; a += 1) {\n          var s = e.slides.eq(a);\n\n          if ((s.attr(\"data-hash\") || s.attr(\"data-history\")) === t && !s.hasClass(e.params.slideDuplicateClass)) {\n            var r = s.index();\n            e.slideTo(r, 0, e.params.runCallbacksOnInit, !0);\n          }\n        }\n        e.params.hashNavigation.watchState && L(J).on(\"hashchange\", e.hashNavigation.onHashCange);\n      }\n    },\n    destroy: function destroy() {\n      this.params.hashNavigation.watchState && L(J).off(\"hashchange\", this.hashNavigation.onHashCange);\n    }\n  },\n      W = {\n    run: function run() {\n      var e = this,\n          t = e.slides.eq(e.activeIndex),\n          a = e.params.autoplay.delay;\n      t.attr(\"data-swiper-autoplay\") && (a = t.attr(\"data-swiper-autoplay\") || e.params.autoplay.delay), e.autoplay.timeout = ee.nextTick(function () {\n        e.params.autoplay.reverseDirection ? e.params.loop ? (e.loopFix(), e.slidePrev(e.params.speed, !0, !0), e.emit(\"autoplay\")) : e.isBeginning ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(e.slides.length - 1, e.params.speed, !0, !0), e.emit(\"autoplay\")) : (e.slidePrev(e.params.speed, !0, !0), e.emit(\"autoplay\")) : e.params.loop ? (e.loopFix(), e.slideNext(e.params.speed, !0, !0), e.emit(\"autoplay\")) : e.isEnd ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(0, e.params.speed, !0, !0), e.emit(\"autoplay\")) : (e.slideNext(e.params.speed, !0, !0), e.emit(\"autoplay\"));\n      }, a);\n    },\n    start: function start() {\n      var e = this;\n      return void 0 === e.autoplay.timeout && !e.autoplay.running && (e.autoplay.running = !0, e.emit(\"autoplayStart\"), e.autoplay.run(), !0);\n    },\n    stop: function stop() {\n      var e = this;\n      return !!e.autoplay.running && void 0 !== e.autoplay.timeout && (e.autoplay.timeout && (clearTimeout(e.autoplay.timeout), e.autoplay.timeout = void 0), e.autoplay.running = !1, e.emit(\"autoplayStop\"), !0);\n    },\n    pause: function pause(e) {\n      var t = this;\n      t.autoplay.running && (t.autoplay.paused || (t.autoplay.timeout && clearTimeout(t.autoplay.timeout), t.autoplay.paused = !0, 0 !== e && t.params.autoplay.waitForTransition ? (t.$wrapperEl[0].addEventListener(\"transitionend\", t.autoplay.onTransitionEnd), t.$wrapperEl[0].addEventListener(\"webkitTransitionEnd\", t.autoplay.onTransitionEnd)) : (t.autoplay.paused = !1, t.autoplay.run())));\n    }\n  },\n      j = {\n    setTranslate: function setTranslate() {\n      for (var e = this, t = e.slides, a = 0; a < t.length; a += 1) {\n        var i = e.slides.eq(a),\n            s = -i[0].swiperSlideOffset;\n        e.params.virtualTranslate || (s -= e.translate);\n        var r = 0;\n        e.isHorizontal() || (r = s, s = 0);\n        var n = e.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(i[0].progress), 0) : 1 + Math.min(Math.max(i[0].progress, -1), 0);\n        i.css({\n          opacity: n\n        }).transform(\"translate3d(\" + s + \"px, \" + r + \"px, 0px)\");\n      }\n    },\n    setTransition: function setTransition(e) {\n      var a = this,\n          t = a.slides,\n          i = a.$wrapperEl;\n\n      if (t.transition(e), a.params.virtualTranslate && 0 !== e) {\n        var s = !1;\n        t.transitionEnd(function () {\n          if (!s && a && !a.destroyed) {\n            s = !0, a.animating = !1;\n\n            for (var e = [\"webkitTransitionEnd\", \"transitionend\"], t = 0; t < e.length; t += 1) {\n              i.trigger(e[t]);\n            }\n          }\n        });\n      }\n    }\n  },\n      U = {\n    setTranslate: function setTranslate() {\n      var e,\n          t = this,\n          a = t.$el,\n          i = t.$wrapperEl,\n          s = t.slides,\n          r = t.width,\n          n = t.height,\n          o = t.rtlTranslate,\n          l = t.size,\n          d = t.params.cubeEffect,\n          p = t.isHorizontal(),\n          c = t.virtual && t.params.virtual.enabled,\n          u = 0;\n      d.shadow && (p ? (0 === (e = i.find(\".swiper-cube-shadow\")).length && (e = L('<div class=\"swiper-cube-shadow\"></div>'), i.append(e)), e.css({\n        height: r + \"px\"\n      })) : 0 === (e = a.find(\".swiper-cube-shadow\")).length && (e = L('<div class=\"swiper-cube-shadow\"></div>'), a.append(e)));\n\n      for (var h = 0; h < s.length; h += 1) {\n        var v = s.eq(h),\n            f = h;\n        c && (f = parseInt(v.attr(\"data-swiper-slide-index\"), 10));\n        var m = 90 * f,\n            g = Math.floor(m / 360);\n        o && (m = -m, g = Math.floor(-m / 360));\n        var b = Math.max(Math.min(v[0].progress, 1), -1),\n            w = 0,\n            y = 0,\n            x = 0;\n        f % 4 == 0 ? (w = 4 * -g * l, x = 0) : (f - 1) % 4 == 0 ? (w = 0, x = 4 * -g * l) : (f - 2) % 4 == 0 ? (w = l + 4 * g * l, x = l) : (f - 3) % 4 == 0 && (w = -l, x = 3 * l + 4 * l * g), o && (w = -w), p || (y = w, w = 0);\n        var T = \"rotateX(\" + (p ? 0 : -m) + \"deg) rotateY(\" + (p ? m : 0) + \"deg) translate3d(\" + w + \"px, \" + y + \"px, \" + x + \"px)\";\n\n        if (b <= 1 && -1 < b && (u = 90 * f + 90 * b, o && (u = 90 * -f - 90 * b)), v.transform(T), d.slideShadows) {\n          var E = p ? v.find(\".swiper-slide-shadow-left\") : v.find(\".swiper-slide-shadow-top\"),\n              S = p ? v.find(\".swiper-slide-shadow-right\") : v.find(\".swiper-slide-shadow-bottom\");\n          0 === E.length && (E = L('<div class=\"swiper-slide-shadow-' + (p ? \"left\" : \"top\") + '\"></div>'), v.append(E)), 0 === S.length && (S = L('<div class=\"swiper-slide-shadow-' + (p ? \"right\" : \"bottom\") + '\"></div>'), v.append(S)), E.length && (E[0].style.opacity = Math.max(-b, 0)), S.length && (S[0].style.opacity = Math.max(b, 0));\n        }\n      }\n\n      if (i.css({\n        \"-webkit-transform-origin\": \"50% 50% -\" + l / 2 + \"px\",\n        \"-moz-transform-origin\": \"50% 50% -\" + l / 2 + \"px\",\n        \"-ms-transform-origin\": \"50% 50% -\" + l / 2 + \"px\",\n        \"transform-origin\": \"50% 50% -\" + l / 2 + \"px\"\n      }), d.shadow) if (p) e.transform(\"translate3d(0px, \" + (r / 2 + d.shadowOffset) + \"px, \" + -r / 2 + \"px) rotateX(90deg) rotateZ(0deg) scale(\" + d.shadowScale + \")\");else {\n        var C = Math.abs(u) - 90 * Math.floor(Math.abs(u) / 90),\n            M = 1.5 - (Math.sin(2 * C * Math.PI / 360) / 2 + Math.cos(2 * C * Math.PI / 360) / 2),\n            z = d.shadowScale,\n            P = d.shadowScale / M,\n            k = d.shadowOffset;\n        e.transform(\"scale3d(\" + z + \", 1, \" + P + \") translate3d(0px, \" + (n / 2 + k) + \"px, \" + -n / 2 / P + \"px) rotateX(-90deg)\");\n      }\n      var $ = I.isSafari || I.isUiWebView ? -l / 2 : 0;\n      i.transform(\"translate3d(0px,0,\" + $ + \"px) rotateX(\" + (t.isHorizontal() ? 0 : u) + \"deg) rotateY(\" + (t.isHorizontal() ? -u : 0) + \"deg)\");\n    },\n    setTransition: function setTransition(e) {\n      var t = this.$el;\n      this.slides.transition(e).find(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").transition(e), this.params.cubeEffect.shadow && !this.isHorizontal() && t.find(\".swiper-cube-shadow\").transition(e);\n    }\n  },\n      K = {\n    setTranslate: function setTranslate() {\n      for (var e = this, t = e.slides, a = e.rtlTranslate, i = 0; i < t.length; i += 1) {\n        var s = t.eq(i),\n            r = s[0].progress;\n        e.params.flipEffect.limitRotation && (r = Math.max(Math.min(s[0].progress, 1), -1));\n        var n = -180 * r,\n            o = 0,\n            l = -s[0].swiperSlideOffset,\n            d = 0;\n\n        if (e.isHorizontal() ? a && (n = -n) : (d = l, o = -n, n = l = 0), s[0].style.zIndex = -Math.abs(Math.round(r)) + t.length, e.params.flipEffect.slideShadows) {\n          var p = e.isHorizontal() ? s.find(\".swiper-slide-shadow-left\") : s.find(\".swiper-slide-shadow-top\"),\n              c = e.isHorizontal() ? s.find(\".swiper-slide-shadow-right\") : s.find(\".swiper-slide-shadow-bottom\");\n          0 === p.length && (p = L('<div class=\"swiper-slide-shadow-' + (e.isHorizontal() ? \"left\" : \"top\") + '\"></div>'), s.append(p)), 0 === c.length && (c = L('<div class=\"swiper-slide-shadow-' + (e.isHorizontal() ? \"right\" : \"bottom\") + '\"></div>'), s.append(c)), p.length && (p[0].style.opacity = Math.max(-r, 0)), c.length && (c[0].style.opacity = Math.max(r, 0));\n        }\n\n        s.transform(\"translate3d(\" + l + \"px, \" + d + \"px, 0px) rotateX(\" + o + \"deg) rotateY(\" + n + \"deg)\");\n      }\n    },\n    setTransition: function setTransition(e) {\n      var a = this,\n          t = a.slides,\n          i = a.activeIndex,\n          s = a.$wrapperEl;\n\n      if (t.transition(e).find(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").transition(e), a.params.virtualTranslate && 0 !== e) {\n        var r = !1;\n        t.eq(i).transitionEnd(function () {\n          if (!r && a && !a.destroyed) {\n            r = !0, a.animating = !1;\n\n            for (var e = [\"webkitTransitionEnd\", \"transitionend\"], t = 0; t < e.length; t += 1) {\n              s.trigger(e[t]);\n            }\n          }\n        });\n      }\n    }\n  },\n      _ = {\n    setTranslate: function setTranslate() {\n      for (var e = this, t = e.width, a = e.height, i = e.slides, s = e.$wrapperEl, r = e.slidesSizesGrid, n = e.params.coverflowEffect, o = e.isHorizontal(), l = e.translate, d = o ? t / 2 - l : a / 2 - l, p = o ? n.rotate : -n.rotate, c = n.depth, u = 0, h = i.length; u < h; u += 1) {\n        var v = i.eq(u),\n            f = r[u],\n            m = (d - v[0].swiperSlideOffset - f / 2) / f * n.modifier,\n            g = o ? p * m : 0,\n            b = o ? 0 : p * m,\n            w = -c * Math.abs(m),\n            y = o ? 0 : n.stretch * m,\n            x = o ? n.stretch * m : 0;\n        Math.abs(x) < .001 && (x = 0), Math.abs(y) < .001 && (y = 0), Math.abs(w) < .001 && (w = 0), Math.abs(g) < .001 && (g = 0), Math.abs(b) < .001 && (b = 0);\n        var T = \"translate3d(\" + x + \"px,\" + y + \"px,\" + w + \"px)  rotateX(\" + b + \"deg) rotateY(\" + g + \"deg)\";\n\n        if (v.transform(T), v[0].style.zIndex = 1 - Math.abs(Math.round(m)), n.slideShadows) {\n          var E = o ? v.find(\".swiper-slide-shadow-left\") : v.find(\".swiper-slide-shadow-top\"),\n              S = o ? v.find(\".swiper-slide-shadow-right\") : v.find(\".swiper-slide-shadow-bottom\");\n          0 === E.length && (E = L('<div class=\"swiper-slide-shadow-' + (o ? \"left\" : \"top\") + '\"></div>'), v.append(E)), 0 === S.length && (S = L('<div class=\"swiper-slide-shadow-' + (o ? \"right\" : \"bottom\") + '\"></div>'), v.append(S)), E.length && (E[0].style.opacity = 0 < m ? m : 0), S.length && (S[0].style.opacity = 0 < -m ? -m : 0);\n        }\n      }\n\n      (te.pointerEvents || te.prefixedPointerEvents) && (s[0].style.perspectiveOrigin = d + \"px 50%\");\n    },\n    setTransition: function setTransition(e) {\n      this.slides.transition(e).find(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").transition(e);\n    }\n  },\n      Z = {\n    init: function init() {\n      var e = this,\n          t = e.params.thumbs,\n          a = e.constructor;\n      t.swiper instanceof a ? (e.thumbs.swiper = t.swiper, ee.extend(e.thumbs.swiper.originalParams, {\n        watchSlidesProgress: !0,\n        slideToClickedSlide: !1\n      }), ee.extend(e.thumbs.swiper.params, {\n        watchSlidesProgress: !0,\n        slideToClickedSlide: !1\n      })) : ee.isObject(t.swiper) && (e.thumbs.swiper = new a(ee.extend({}, t.swiper, {\n        watchSlidesVisibility: !0,\n        watchSlidesProgress: !0,\n        slideToClickedSlide: !1\n      })), e.thumbs.swiperCreated = !0), e.thumbs.swiper.$el.addClass(e.params.thumbs.thumbsContainerClass), e.thumbs.swiper.on(\"tap\", e.thumbs.onThumbClick);\n    },\n    onThumbClick: function onThumbClick() {\n      var e = this,\n          t = e.thumbs.swiper;\n\n      if (t) {\n        var a = t.clickedIndex,\n            i = t.clickedSlide;\n\n        if (!(i && L(i).hasClass(e.params.thumbs.slideThumbActiveClass) || null == a)) {\n          var s;\n\n          if (s = t.params.loop ? parseInt(L(t.clickedSlide).attr(\"data-swiper-slide-index\"), 10) : a, e.params.loop) {\n            var r = e.activeIndex;\n            e.slides.eq(r).hasClass(e.params.slideDuplicateClass) && (e.loopFix(), e._clientLeft = e.$wrapperEl[0].clientLeft, r = e.activeIndex);\n            var n = e.slides.eq(r).prevAll('[data-swiper-slide-index=\"' + s + '\"]').eq(0).index(),\n                o = e.slides.eq(r).nextAll('[data-swiper-slide-index=\"' + s + '\"]').eq(0).index();\n            s = void 0 === n ? o : void 0 === o ? n : o - r < r - n ? o : n;\n          }\n\n          e.slideTo(s);\n        }\n      }\n    },\n    update: function update(e) {\n      var t = this,\n          a = t.thumbs.swiper;\n\n      if (a) {\n        var i = \"auto\" === a.params.slidesPerView ? a.slidesPerViewDynamic() : a.params.slidesPerView;\n\n        if (t.realIndex !== a.realIndex) {\n          var s,\n              r = a.activeIndex;\n\n          if (a.params.loop) {\n            a.slides.eq(r).hasClass(a.params.slideDuplicateClass) && (a.loopFix(), a._clientLeft = a.$wrapperEl[0].clientLeft, r = a.activeIndex);\n            var n = a.slides.eq(r).prevAll('[data-swiper-slide-index=\"' + t.realIndex + '\"]').eq(0).index(),\n                o = a.slides.eq(r).nextAll('[data-swiper-slide-index=\"' + t.realIndex + '\"]').eq(0).index();\n            s = void 0 === n ? o : void 0 === o ? n : o - r == r - n ? r : o - r < r - n ? o : n;\n          } else s = t.realIndex;\n\n          a.visibleSlidesIndexes.indexOf(s) < 0 && (a.params.centeredSlides ? s = r < s ? s - Math.floor(i / 2) + 1 : s + Math.floor(i / 2) - 1 : r < s && (s = s - i + 1), a.slideTo(s, e ? 0 : void 0));\n        }\n\n        var l = 1,\n            d = t.params.thumbs.slideThumbActiveClass;\n        if (1 < t.params.slidesPerView && !t.params.centeredSlides && (l = t.params.slidesPerView), a.slides.removeClass(d), a.params.loop) for (var p = 0; p < l; p += 1) {\n          a.$wrapperEl.children('[data-swiper-slide-index=\"' + (t.realIndex + p) + '\"]').addClass(d);\n        } else for (var c = 0; c < l; c += 1) {\n          a.slides.eq(t.realIndex + c).addClass(d);\n        }\n      }\n    }\n  },\n      Q = [E, S, C, M, P, $, O, {\n    name: \"mousewheel\",\n    params: {\n      mousewheel: {\n        enabled: !1,\n        releaseOnEdges: !1,\n        invert: !1,\n        forceToAxis: !1,\n        sensitivity: 1,\n        eventsTarged: \"container\"\n      }\n    },\n    create: function create() {\n      var e = this;\n      ee.extend(e, {\n        mousewheel: {\n          enabled: !1,\n          enable: A.enable.bind(e),\n          disable: A.disable.bind(e),\n          handle: A.handle.bind(e),\n          handleMouseEnter: A.handleMouseEnter.bind(e),\n          handleMouseLeave: A.handleMouseLeave.bind(e),\n          lastScrollTime: ee.now()\n        }\n      });\n    },\n    on: {\n      init: function init() {\n        this.params.mousewheel.enabled && this.mousewheel.enable();\n      },\n      destroy: function destroy() {\n        this.mousewheel.enabled && this.mousewheel.disable();\n      }\n    }\n  }, {\n    name: \"navigation\",\n    params: {\n      navigation: {\n        nextEl: null,\n        prevEl: null,\n        hideOnClick: !1,\n        disabledClass: \"swiper-button-disabled\",\n        hiddenClass: \"swiper-button-hidden\",\n        lockClass: \"swiper-button-lock\"\n      }\n    },\n    create: function create() {\n      var e = this;\n      ee.extend(e, {\n        navigation: {\n          init: H.init.bind(e),\n          update: H.update.bind(e),\n          destroy: H.destroy.bind(e),\n          onNextClick: H.onNextClick.bind(e),\n          onPrevClick: H.onPrevClick.bind(e)\n        }\n      });\n    },\n    on: {\n      init: function init() {\n        this.navigation.init(), this.navigation.update();\n      },\n      toEdge: function toEdge() {\n        this.navigation.update();\n      },\n      fromEdge: function fromEdge() {\n        this.navigation.update();\n      },\n      destroy: function destroy() {\n        this.navigation.destroy();\n      },\n      click: function click(e) {\n        var t,\n            a = this,\n            i = a.navigation,\n            s = i.$nextEl,\n            r = i.$prevEl;\n        !a.params.navigation.hideOnClick || L(e.target).is(r) || L(e.target).is(s) || (s ? t = s.hasClass(a.params.navigation.hiddenClass) : r && (t = r.hasClass(a.params.navigation.hiddenClass)), !0 === t ? a.emit(\"navigationShow\", a) : a.emit(\"navigationHide\", a), s && s.toggleClass(a.params.navigation.hiddenClass), r && r.toggleClass(a.params.navigation.hiddenClass));\n      }\n    }\n  }, {\n    name: \"pagination\",\n    params: {\n      pagination: {\n        el: null,\n        bulletElement: \"span\",\n        clickable: !1,\n        hideOnClick: !1,\n        renderBullet: null,\n        renderProgressbar: null,\n        renderFraction: null,\n        renderCustom: null,\n        progressbarOpposite: !1,\n        type: \"bullets\",\n        dynamicBullets: !1,\n        dynamicMainBullets: 1,\n        formatFractionCurrent: function formatFractionCurrent(e) {\n          return e;\n        },\n        formatFractionTotal: function formatFractionTotal(e) {\n          return e;\n        },\n        bulletClass: \"swiper-pagination-bullet\",\n        bulletActiveClass: \"swiper-pagination-bullet-active\",\n        modifierClass: \"swiper-pagination-\",\n        currentClass: \"swiper-pagination-current\",\n        totalClass: \"swiper-pagination-total\",\n        hiddenClass: \"swiper-pagination-hidden\",\n        progressbarFillClass: \"swiper-pagination-progressbar-fill\",\n        progressbarOppositeClass: \"swiper-pagination-progressbar-opposite\",\n        clickableClass: \"swiper-pagination-clickable\",\n        lockClass: \"swiper-pagination-lock\"\n      }\n    },\n    create: function create() {\n      var e = this;\n      ee.extend(e, {\n        pagination: {\n          init: N.init.bind(e),\n          render: N.render.bind(e),\n          update: N.update.bind(e),\n          destroy: N.destroy.bind(e),\n          dynamicBulletIndex: 0\n        }\n      });\n    },\n    on: {\n      init: function init() {\n        this.pagination.init(), this.pagination.render(), this.pagination.update();\n      },\n      activeIndexChange: function activeIndexChange() {\n        this.params.loop ? this.pagination.update() : void 0 === this.snapIndex && this.pagination.update();\n      },\n      snapIndexChange: function snapIndexChange() {\n        this.params.loop || this.pagination.update();\n      },\n      slidesLengthChange: function slidesLengthChange() {\n        this.params.loop && (this.pagination.render(), this.pagination.update());\n      },\n      snapGridLengthChange: function snapGridLengthChange() {\n        this.params.loop || (this.pagination.render(), this.pagination.update());\n      },\n      destroy: function destroy() {\n        this.pagination.destroy();\n      },\n      click: function click(e) {\n        var t = this;\n        t.params.pagination.el && t.params.pagination.hideOnClick && 0 < t.pagination.$el.length && !L(e.target).hasClass(t.params.pagination.bulletClass) && (!0 === t.pagination.$el.hasClass(t.params.pagination.hiddenClass) ? t.emit(\"paginationShow\", t) : t.emit(\"paginationHide\", t), t.pagination.$el.toggleClass(t.params.pagination.hiddenClass));\n      }\n    }\n  }, {\n    name: \"scrollbar\",\n    params: {\n      scrollbar: {\n        el: null,\n        dragSize: \"auto\",\n        hide: !1,\n        draggable: !1,\n        snapOnRelease: !0,\n        lockClass: \"swiper-scrollbar-lock\",\n        dragClass: \"swiper-scrollbar-drag\"\n      }\n    },\n    create: function create() {\n      var e = this;\n      ee.extend(e, {\n        scrollbar: {\n          init: G.init.bind(e),\n          destroy: G.destroy.bind(e),\n          updateSize: G.updateSize.bind(e),\n          setTranslate: G.setTranslate.bind(e),\n          setTransition: G.setTransition.bind(e),\n          enableDraggable: G.enableDraggable.bind(e),\n          disableDraggable: G.disableDraggable.bind(e),\n          setDragPosition: G.setDragPosition.bind(e),\n          onDragStart: G.onDragStart.bind(e),\n          onDragMove: G.onDragMove.bind(e),\n          onDragEnd: G.onDragEnd.bind(e),\n          isTouched: !1,\n          timeout: null,\n          dragTimeout: null\n        }\n      });\n    },\n    on: {\n      init: function init() {\n        this.scrollbar.init(), this.scrollbar.updateSize(), this.scrollbar.setTranslate();\n      },\n      update: function update() {\n        this.scrollbar.updateSize();\n      },\n      resize: function resize() {\n        this.scrollbar.updateSize();\n      },\n      observerUpdate: function observerUpdate() {\n        this.scrollbar.updateSize();\n      },\n      setTranslate: function setTranslate() {\n        this.scrollbar.setTranslate();\n      },\n      setTransition: function setTransition(e) {\n        this.scrollbar.setTransition(e);\n      },\n      destroy: function destroy() {\n        this.scrollbar.destroy();\n      }\n    }\n  }, {\n    name: \"parallax\",\n    params: {\n      parallax: {\n        enabled: !1\n      }\n    },\n    create: function create() {\n      ee.extend(this, {\n        parallax: {\n          setTransform: B.setTransform.bind(this),\n          setTranslate: B.setTranslate.bind(this),\n          setTransition: B.setTransition.bind(this)\n        }\n      });\n    },\n    on: {\n      beforeInit: function beforeInit() {\n        this.params.parallax.enabled && (this.params.watchSlidesProgress = !0, this.originalParams.watchSlidesProgress = !0);\n      },\n      init: function init() {\n        this.params.parallax.enabled && this.parallax.setTranslate();\n      },\n      setTranslate: function setTranslate() {\n        this.params.parallax.enabled && this.parallax.setTranslate();\n      },\n      setTransition: function setTransition(e) {\n        this.params.parallax.enabled && this.parallax.setTransition(e);\n      }\n    }\n  }, {\n    name: \"zoom\",\n    params: {\n      zoom: {\n        enabled: !1,\n        maxRatio: 3,\n        minRatio: 1,\n        toggle: !0,\n        containerClass: \"swiper-zoom-container\",\n        zoomedSlideClass: \"swiper-slide-zoomed\"\n      }\n    },\n    create: function create() {\n      var i = this,\n          t = {\n        enabled: !1,\n        scale: 1,\n        currentScale: 1,\n        isScaling: !1,\n        gesture: {\n          $slideEl: void 0,\n          slideWidth: void 0,\n          slideHeight: void 0,\n          $imageEl: void 0,\n          $imageWrapEl: void 0,\n          maxRatio: 3\n        },\n        image: {\n          isTouched: void 0,\n          isMoved: void 0,\n          currentX: void 0,\n          currentY: void 0,\n          minX: void 0,\n          minY: void 0,\n          maxX: void 0,\n          maxY: void 0,\n          width: void 0,\n          height: void 0,\n          startX: void 0,\n          startY: void 0,\n          touchesStart: {},\n          touchesCurrent: {}\n        },\n        velocity: {\n          x: void 0,\n          y: void 0,\n          prevPositionX: void 0,\n          prevPositionY: void 0,\n          prevTime: void 0\n        }\n      };\n      \"onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out\".split(\" \").forEach(function (e) {\n        t[e] = X[e].bind(i);\n      }), ee.extend(i, {\n        zoom: t\n      });\n      var s = 1;\n      Object.defineProperty(i.zoom, \"scale\", {\n        get: function get() {\n          return s;\n        },\n        set: function set(e) {\n          if (s !== e) {\n            var t = i.zoom.gesture.$imageEl ? i.zoom.gesture.$imageEl[0] : void 0,\n                a = i.zoom.gesture.$slideEl ? i.zoom.gesture.$slideEl[0] : void 0;\n            i.emit(\"zoomChange\", e, t, a);\n          }\n\n          s = e;\n        }\n      });\n    },\n    on: {\n      init: function init() {\n        this.params.zoom.enabled && this.zoom.enable();\n      },\n      destroy: function destroy() {\n        this.zoom.disable();\n      },\n      touchStart: function touchStart(e) {\n        this.zoom.enabled && this.zoom.onTouchStart(e);\n      },\n      touchEnd: function touchEnd(e) {\n        this.zoom.enabled && this.zoom.onTouchEnd(e);\n      },\n      doubleTap: function doubleTap(e) {\n        this.params.zoom.enabled && this.zoom.enabled && this.params.zoom.toggle && this.zoom.toggle(e);\n      },\n      transitionEnd: function transitionEnd() {\n        this.zoom.enabled && this.params.zoom.enabled && this.zoom.onTransitionEnd();\n      }\n    }\n  }, {\n    name: \"lazy\",\n    params: {\n      lazy: {\n        enabled: !1,\n        loadPrevNext: !1,\n        loadPrevNextAmount: 1,\n        loadOnTransitionStart: !1,\n        elementClass: \"swiper-lazy\",\n        loadingClass: \"swiper-lazy-loading\",\n        loadedClass: \"swiper-lazy-loaded\",\n        preloaderClass: \"swiper-lazy-preloader\"\n      }\n    },\n    create: function create() {\n      ee.extend(this, {\n        lazy: {\n          initialImageLoaded: !1,\n          load: Y.load.bind(this),\n          loadInSlide: Y.loadInSlide.bind(this)\n        }\n      });\n    },\n    on: {\n      beforeInit: function beforeInit() {\n        this.params.lazy.enabled && this.params.preloadImages && (this.params.preloadImages = !1);\n      },\n      init: function init() {\n        this.params.lazy.enabled && !this.params.loop && 0 === this.params.initialSlide && this.lazy.load();\n      },\n      scroll: function scroll() {\n        this.params.freeMode && !this.params.freeModeSticky && this.lazy.load();\n      },\n      resize: function resize() {\n        this.params.lazy.enabled && this.lazy.load();\n      },\n      scrollbarDragMove: function scrollbarDragMove() {\n        this.params.lazy.enabled && this.lazy.load();\n      },\n      transitionStart: function transitionStart() {\n        var e = this;\n        e.params.lazy.enabled && (e.params.lazy.loadOnTransitionStart || !e.params.lazy.loadOnTransitionStart && !e.lazy.initialImageLoaded) && e.lazy.load();\n      },\n      transitionEnd: function transitionEnd() {\n        this.params.lazy.enabled && !this.params.lazy.loadOnTransitionStart && this.lazy.load();\n      }\n    }\n  }, {\n    name: \"controller\",\n    params: {\n      controller: {\n        control: void 0,\n        inverse: !1,\n        by: \"slide\"\n      }\n    },\n    create: function create() {\n      var e = this;\n      ee.extend(e, {\n        controller: {\n          control: e.params.controller.control,\n          getInterpolateFunction: V.getInterpolateFunction.bind(e),\n          setTranslate: V.setTranslate.bind(e),\n          setTransition: V.setTransition.bind(e)\n        }\n      });\n    },\n    on: {\n      update: function update() {\n        this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline);\n      },\n      resize: function resize() {\n        this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline);\n      },\n      observerUpdate: function observerUpdate() {\n        this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline);\n      },\n      setTranslate: function setTranslate(e, t) {\n        this.controller.control && this.controller.setTranslate(e, t);\n      },\n      setTransition: function setTransition(e, t) {\n        this.controller.control && this.controller.setTransition(e, t);\n      }\n    }\n  }, {\n    name: \"a11y\",\n    params: {\n      a11y: {\n        enabled: !0,\n        notificationClass: \"swiper-notification\",\n        prevSlideMessage: \"Previous slide\",\n        nextSlideMessage: \"Next slide\",\n        firstSlideMessage: \"This is the first slide\",\n        lastSlideMessage: \"This is the last slide\",\n        paginationBulletMessage: \"Go to slide {{index}}\"\n      }\n    },\n    create: function create() {\n      var t = this;\n      ee.extend(t, {\n        a11y: {\n          liveRegion: L('<span class=\"' + t.params.a11y.notificationClass + '\" aria-live=\"assertive\" aria-atomic=\"true\"></span>')\n        }\n      }), Object.keys(F).forEach(function (e) {\n        t.a11y[e] = F[e].bind(t);\n      });\n    },\n    on: {\n      init: function init() {\n        this.params.a11y.enabled && (this.a11y.init(), this.a11y.updateNavigation());\n      },\n      toEdge: function toEdge() {\n        this.params.a11y.enabled && this.a11y.updateNavigation();\n      },\n      fromEdge: function fromEdge() {\n        this.params.a11y.enabled && this.a11y.updateNavigation();\n      },\n      paginationUpdate: function paginationUpdate() {\n        this.params.a11y.enabled && this.a11y.updatePagination();\n      },\n      destroy: function destroy() {\n        this.params.a11y.enabled && this.a11y.destroy();\n      }\n    }\n  }, {\n    name: \"history\",\n    params: {\n      history: {\n        enabled: !1,\n        replaceState: !1,\n        key: \"slides\"\n      }\n    },\n    create: function create() {\n      var e = this;\n      ee.extend(e, {\n        history: {\n          init: R.init.bind(e),\n          setHistory: R.setHistory.bind(e),\n          setHistoryPopState: R.setHistoryPopState.bind(e),\n          scrollToSlide: R.scrollToSlide.bind(e),\n          destroy: R.destroy.bind(e)\n        }\n      });\n    },\n    on: {\n      init: function init() {\n        this.params.history.enabled && this.history.init();\n      },\n      destroy: function destroy() {\n        this.params.history.enabled && this.history.destroy();\n      },\n      transitionEnd: function transitionEnd() {\n        this.history.initialized && this.history.setHistory(this.params.history.key, this.activeIndex);\n      }\n    }\n  }, {\n    name: \"hash-navigation\",\n    params: {\n      hashNavigation: {\n        enabled: !1,\n        replaceState: !1,\n        watchState: !1\n      }\n    },\n    create: function create() {\n      var e = this;\n      ee.extend(e, {\n        hashNavigation: {\n          initialized: !1,\n          init: q.init.bind(e),\n          destroy: q.destroy.bind(e),\n          setHash: q.setHash.bind(e),\n          onHashCange: q.onHashCange.bind(e)\n        }\n      });\n    },\n    on: {\n      init: function init() {\n        this.params.hashNavigation.enabled && this.hashNavigation.init();\n      },\n      destroy: function destroy() {\n        this.params.hashNavigation.enabled && this.hashNavigation.destroy();\n      },\n      transitionEnd: function transitionEnd() {\n        this.hashNavigation.initialized && this.hashNavigation.setHash();\n      }\n    }\n  }, {\n    name: \"autoplay\",\n    params: {\n      autoplay: {\n        enabled: !1,\n        delay: 3e3,\n        waitForTransition: !0,\n        disableOnInteraction: !0,\n        stopOnLastSlide: !1,\n        reverseDirection: !1\n      }\n    },\n    create: function create() {\n      var t = this;\n      ee.extend(t, {\n        autoplay: {\n          running: !1,\n          paused: !1,\n          run: W.run.bind(t),\n          start: W.start.bind(t),\n          stop: W.stop.bind(t),\n          pause: W.pause.bind(t),\n          onTransitionEnd: function onTransitionEnd(e) {\n            t && !t.destroyed && t.$wrapperEl && e.target === this && (t.$wrapperEl[0].removeEventListener(\"transitionend\", t.autoplay.onTransitionEnd), t.$wrapperEl[0].removeEventListener(\"webkitTransitionEnd\", t.autoplay.onTransitionEnd), t.autoplay.paused = !1, t.autoplay.running ? t.autoplay.run() : t.autoplay.stop());\n          }\n        }\n      });\n    },\n    on: {\n      init: function init() {\n        this.params.autoplay.enabled && this.autoplay.start();\n      },\n      beforeTransitionStart: function beforeTransitionStart(e, t) {\n        this.autoplay.running && (t || !this.params.autoplay.disableOnInteraction ? this.autoplay.pause(e) : this.autoplay.stop());\n      },\n      sliderFirstMove: function sliderFirstMove() {\n        this.autoplay.running && (this.params.autoplay.disableOnInteraction ? this.autoplay.stop() : this.autoplay.pause());\n      },\n      destroy: function destroy() {\n        this.autoplay.running && this.autoplay.stop();\n      }\n    }\n  }, {\n    name: \"effect-fade\",\n    params: {\n      fadeEffect: {\n        crossFade: !1\n      }\n    },\n    create: function create() {\n      ee.extend(this, {\n        fadeEffect: {\n          setTranslate: j.setTranslate.bind(this),\n          setTransition: j.setTransition.bind(this)\n        }\n      });\n    },\n    on: {\n      beforeInit: function beforeInit() {\n        var e = this;\n\n        if (\"fade\" === e.params.effect) {\n          e.classNames.push(e.params.containerModifierClass + \"fade\");\n          var t = {\n            slidesPerView: 1,\n            slidesPerColumn: 1,\n            slidesPerGroup: 1,\n            watchSlidesProgress: !0,\n            spaceBetween: 0,\n            virtualTranslate: !0\n          };\n          ee.extend(e.params, t), ee.extend(e.originalParams, t);\n        }\n      },\n      setTranslate: function setTranslate() {\n        \"fade\" === this.params.effect && this.fadeEffect.setTranslate();\n      },\n      setTransition: function setTransition(e) {\n        \"fade\" === this.params.effect && this.fadeEffect.setTransition(e);\n      }\n    }\n  }, {\n    name: \"effect-cube\",\n    params: {\n      cubeEffect: {\n        slideShadows: !0,\n        shadow: !0,\n        shadowOffset: 20,\n        shadowScale: .94\n      }\n    },\n    create: function create() {\n      ee.extend(this, {\n        cubeEffect: {\n          setTranslate: U.setTranslate.bind(this),\n          setTransition: U.setTransition.bind(this)\n        }\n      });\n    },\n    on: {\n      beforeInit: function beforeInit() {\n        var e = this;\n\n        if (\"cube\" === e.params.effect) {\n          e.classNames.push(e.params.containerModifierClass + \"cube\"), e.classNames.push(e.params.containerModifierClass + \"3d\");\n          var t = {\n            slidesPerView: 1,\n            slidesPerColumn: 1,\n            slidesPerGroup: 1,\n            watchSlidesProgress: !0,\n            resistanceRatio: 0,\n            spaceBetween: 0,\n            centeredSlides: !1,\n            virtualTranslate: !0\n          };\n          ee.extend(e.params, t), ee.extend(e.originalParams, t);\n        }\n      },\n      setTranslate: function setTranslate() {\n        \"cube\" === this.params.effect && this.cubeEffect.setTranslate();\n      },\n      setTransition: function setTransition(e) {\n        \"cube\" === this.params.effect && this.cubeEffect.setTransition(e);\n      }\n    }\n  }, {\n    name: \"effect-flip\",\n    params: {\n      flipEffect: {\n        slideShadows: !0,\n        limitRotation: !0\n      }\n    },\n    create: function create() {\n      ee.extend(this, {\n        flipEffect: {\n          setTranslate: K.setTranslate.bind(this),\n          setTransition: K.setTransition.bind(this)\n        }\n      });\n    },\n    on: {\n      beforeInit: function beforeInit() {\n        var e = this;\n\n        if (\"flip\" === e.params.effect) {\n          e.classNames.push(e.params.containerModifierClass + \"flip\"), e.classNames.push(e.params.containerModifierClass + \"3d\");\n          var t = {\n            slidesPerView: 1,\n            slidesPerColumn: 1,\n            slidesPerGroup: 1,\n            watchSlidesProgress: !0,\n            spaceBetween: 0,\n            virtualTranslate: !0\n          };\n          ee.extend(e.params, t), ee.extend(e.originalParams, t);\n        }\n      },\n      setTranslate: function setTranslate() {\n        \"flip\" === this.params.effect && this.flipEffect.setTranslate();\n      },\n      setTransition: function setTransition(e) {\n        \"flip\" === this.params.effect && this.flipEffect.setTransition(e);\n      }\n    }\n  }, {\n    name: \"effect-coverflow\",\n    params: {\n      coverflowEffect: {\n        rotate: 50,\n        stretch: 0,\n        depth: 100,\n        modifier: 1,\n        slideShadows: !0\n      }\n    },\n    create: function create() {\n      ee.extend(this, {\n        coverflowEffect: {\n          setTranslate: _.setTranslate.bind(this),\n          setTransition: _.setTransition.bind(this)\n        }\n      });\n    },\n    on: {\n      beforeInit: function beforeInit() {\n        var e = this;\n        \"coverflow\" === e.params.effect && (e.classNames.push(e.params.containerModifierClass + \"coverflow\"), e.classNames.push(e.params.containerModifierClass + \"3d\"), e.params.watchSlidesProgress = !0, e.originalParams.watchSlidesProgress = !0);\n      },\n      setTranslate: function setTranslate() {\n        \"coverflow\" === this.params.effect && this.coverflowEffect.setTranslate();\n      },\n      setTransition: function setTransition(e) {\n        \"coverflow\" === this.params.effect && this.coverflowEffect.setTransition(e);\n      }\n    }\n  }, {\n    name: \"thumbs\",\n    params: {\n      thumbs: {\n        swiper: null,\n        slideThumbActiveClass: \"swiper-slide-thumb-active\",\n        thumbsContainerClass: \"swiper-container-thumbs\"\n      }\n    },\n    create: function create() {\n      ee.extend(this, {\n        thumbs: {\n          swiper: null,\n          init: Z.init.bind(this),\n          update: Z.update.bind(this),\n          onThumbClick: Z.onThumbClick.bind(this)\n        }\n      });\n    },\n    on: {\n      beforeInit: function beforeInit() {\n        var e = this.params.thumbs;\n        e && e.swiper && (this.thumbs.init(), this.thumbs.update(!0));\n      },\n      slideChange: function slideChange() {\n        this.thumbs.swiper && this.thumbs.update();\n      },\n      update: function update() {\n        this.thumbs.swiper && this.thumbs.update();\n      },\n      resize: function resize() {\n        this.thumbs.swiper && this.thumbs.update();\n      },\n      observerUpdate: function observerUpdate() {\n        this.thumbs.swiper && this.thumbs.update();\n      },\n      setTransition: function setTransition(e) {\n        var t = this.thumbs.swiper;\n        t && t.setTransition(e);\n      },\n      beforeDestroy: function beforeDestroy() {\n        var e = this.thumbs.swiper;\n        e && this.thumbs.swiperCreated && e && e.destroy();\n      }\n    }\n  }];\n  return void 0 === T.use && (T.use = T.Class.use, T.installModule = T.Class.installModule), T.use(Q), T;\n});\n/*!\n * VERSION: 2.1.3\n * DATE: 2019-05-17\n * UPDATES AND DOCS AT: http://greensock.com\n * \n * Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, EasePack, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n **/\n\nvar _gsScope = \"undefined\" != typeof module && module.exports && \"undefined\" != typeof global ? global : this || window;\n\n(_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function () {\n  \"use strict\";\n\n  _gsScope._gsDefine(\"TweenMax\", [\"core.Animation\", \"core.SimpleTimeline\", \"TweenLite\"], function (a, b, c) {\n    var d = function d(a) {\n      var b,\n          c = [],\n          d = a.length;\n\n      for (b = 0; b !== d; c.push(a[b++])) {\n        ;\n      }\n\n      return c;\n    },\n        e = function e(a, b, c) {\n      var d,\n          e,\n          f = a.cycle;\n\n      for (d in f) {\n        e = f[d], a[d] = \"function\" == typeof e ? e(c, b[c], b) : e[c % e.length];\n      }\n\n      delete a.cycle;\n    },\n        f = function f(a) {\n      if (\"function\" == typeof a) return a;\n      var b = \"object\" == _typeof(a) ? a : {\n        each: a\n      },\n          c = b.ease,\n          d = b.from || 0,\n          e = b.base || 0,\n          f = {},\n          g = isNaN(d),\n          h = b.axis,\n          i = {\n        center: .5,\n        end: 1\n      }[d] || 0;\n      return function (a, j, k) {\n        var l,\n            m,\n            n,\n            o,\n            p,\n            q,\n            r,\n            s,\n            t,\n            u = (k || b).length,\n            v = f[u];\n\n        if (!v) {\n          if (t = \"auto\" === b.grid ? 0 : (b.grid || [1 / 0])[0], !t) {\n            for (r = -(1 / 0); r < (r = k[t++].getBoundingClientRect().left) && u > t;) {\n              ;\n            }\n\n            t--;\n          }\n\n          for (v = f[u] = [], l = g ? Math.min(t, u) * i - .5 : d % t, m = g ? u * i / t - .5 : d / t | 0, r = 0, s = 1 / 0, q = 0; u > q; q++) {\n            n = q % t - l, o = m - (q / t | 0), v[q] = p = h ? Math.abs(\"y\" === h ? o : n) : Math.sqrt(n * n + o * o), p > r && (r = p), s > p && (s = p);\n          }\n\n          v.max = r - s, v.min = s, v.v = u = b.amount || b.each * (t > u ? u - 1 : h ? \"y\" === h ? u / t : t : Math.max(t, u / t)) || 0, v.b = 0 > u ? e - u : e;\n        }\n\n        return u = (v[a] - v.min) / v.max, v.b + (c ? c.getRatio(u) : u) * v.v;\n      };\n    },\n        g = function g(a, b, d) {\n      c.call(this, a, b, d), this._cycle = 0, this._yoyo = this.vars.yoyo === !0 || !!this.vars.yoyoEase, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._repeat && this._uncache(!0), this.render = g.prototype.render;\n    },\n        h = 1e-8,\n        i = c._internals,\n        j = i.isSelector,\n        k = i.isArray,\n        l = g.prototype = c.to({}, .1, {}),\n        m = [];\n\n    g.version = \"2.1.3\", l.constructor = g, l.kill()._gc = !1, g.killTweensOf = g.killDelayedCallsTo = c.killTweensOf, g.getTweensOf = c.getTweensOf, g.lagSmoothing = c.lagSmoothing, g.ticker = c.ticker, g.render = c.render, g.distribute = f, l.invalidate = function () {\n      return this._yoyo = this.vars.yoyo === !0 || !!this.vars.yoyoEase, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._yoyoEase = null, this._uncache(!0), c.prototype.invalidate.call(this);\n    }, l.updateTo = function (a, b) {\n      var d,\n          e = this,\n          f = e.ratio,\n          g = e.vars.immediateRender || a.immediateRender;\n      b && e._startTime < e._timeline._time && (e._startTime = e._timeline._time, e._uncache(!1), e._gc ? e._enabled(!0, !1) : e._timeline.insert(e, e._startTime - e._delay));\n\n      for (d in a) {\n        e.vars[d] = a[d];\n      }\n\n      if (e._initted || g) if (b) e._initted = !1, g && e.render(0, !0, !0);else if (e._gc && e._enabled(!0, !1), e._notifyPluginsOfEnabled && e._firstPT && c._onPluginEvent(\"_onDisable\", e), e._time / e._duration > .998) {\n        var h = e._totalTime;\n        e.render(0, !0, !1), e._initted = !1, e.render(h, !0, !1);\n      } else if (e._initted = !1, e._init(), e._time > 0 || g) for (var i, j = 1 / (1 - f), k = e._firstPT; k;) {\n        i = k.s + k.c, k.c *= j, k.s = i - k.c, k = k._next;\n      }\n      return e;\n    }, l.render = function (a, b, d) {\n      this._initted || 0 === this._duration && this.vars.repeat && this.invalidate();\n      var e,\n          f,\n          g,\n          j,\n          k,\n          l,\n          m,\n          n,\n          o,\n          p = this,\n          q = p._dirty ? p.totalDuration() : p._totalDuration,\n          r = p._time,\n          s = p._totalTime,\n          t = p._cycle,\n          u = p._duration,\n          v = p._rawPrevTime;\n      if (a >= q - h && a >= 0 ? (p._totalTime = q, p._cycle = p._repeat, p._yoyo && 0 !== (1 & p._cycle) ? (p._time = 0, p.ratio = p._ease._calcEnd ? p._ease.getRatio(0) : 0) : (p._time = u, p.ratio = p._ease._calcEnd ? p._ease.getRatio(1) : 1), p._reversed || (e = !0, f = \"onComplete\", d = d || p._timeline.autoRemoveChildren), 0 === u && (p._initted || !p.vars.lazy || d) && (p._startTime === p._timeline._duration && (a = 0), (0 > v || 0 >= a && a >= -h || v === h && \"isPause\" !== p.data) && v !== a && (d = !0, v > h && (f = \"onReverseComplete\")), p._rawPrevTime = n = !b || a || v === a ? a : h)) : h > a ? (p._totalTime = p._time = p._cycle = 0, p.ratio = p._ease._calcEnd ? p._ease.getRatio(0) : 0, (0 !== s || 0 === u && v > 0) && (f = \"onReverseComplete\", e = p._reversed), a > -h ? a = 0 : 0 > a && (p._active = !1, 0 === u && (p._initted || !p.vars.lazy || d) && (v >= 0 && (d = !0), p._rawPrevTime = n = !b || a || v === a ? a : h)), p._initted || (d = !0)) : (p._totalTime = p._time = a, 0 !== p._repeat && (j = u + p._repeatDelay, p._cycle = p._totalTime / j >> 0, 0 !== p._cycle && p._cycle === p._totalTime / j && a >= s && p._cycle--, p._time = p._totalTime - p._cycle * j, p._yoyo && 0 !== (1 & p._cycle) && (p._time = u - p._time, o = p._yoyoEase || p.vars.yoyoEase, o && (p._yoyoEase || (o !== !0 || p._initted ? p._yoyoEase = o = o === !0 ? p._ease : o instanceof Ease ? o : Ease.map[o] : (o = p.vars.ease, p._yoyoEase = o = o ? o instanceof Ease ? o : \"function\" == typeof o ? new Ease(o, p.vars.easeParams) : Ease.map[o] || c.defaultEase : c.defaultEase)), p.ratio = o ? 1 - o.getRatio((u - p._time) / u) : 0)), p._time > u ? p._time = u : p._time < 0 && (p._time = 0)), p._easeType && !o ? (k = p._time / u, l = p._easeType, m = p._easePower, (1 === l || 3 === l && k >= .5) && (k = 1 - k), 3 === l && (k *= 2), 1 === m ? k *= k : 2 === m ? k *= k * k : 3 === m ? k *= k * k * k : 4 === m && (k *= k * k * k * k), p.ratio = 1 === l ? 1 - k : 2 === l ? k : p._time / u < .5 ? k / 2 : 1 - k / 2) : o || (p.ratio = p._ease.getRatio(p._time / u))), r === p._time && !d && t === p._cycle) return void (s !== p._totalTime && p._onUpdate && (b || p._callback(\"onUpdate\")));\n\n      if (!p._initted) {\n        if (p._init(), !p._initted || p._gc) return;\n        if (!d && p._firstPT && (p.vars.lazy !== !1 && p._duration || p.vars.lazy && !p._duration)) return p._time = r, p._totalTime = s, p._rawPrevTime = v, p._cycle = t, i.lazyTweens.push(p), void (p._lazy = [a, b]);\n        !p._time || e || o ? e && this._ease._calcEnd && !o && (p.ratio = p._ease.getRatio(0 === p._time ? 0 : 1)) : p.ratio = p._ease.getRatio(p._time / u);\n      }\n\n      for (p._lazy !== !1 && (p._lazy = !1), p._active || !p._paused && p._time !== r && a >= 0 && (p._active = !0), 0 === s && (2 === p._initted && a > 0 && p._init(), p._startAt && (a >= 0 ? p._startAt.render(a, !0, d) : f || (f = \"_dummyGS\")), p.vars.onStart && (0 !== p._totalTime || 0 === u) && (b || p._callback(\"onStart\"))), g = p._firstPT; g;) {\n        g.f ? g.t[g.p](g.c * p.ratio + g.s) : g.t[g.p] = g.c * p.ratio + g.s, g = g._next;\n      }\n\n      p._onUpdate && (0 > a && p._startAt && p._startTime && p._startAt.render(a, !0, d), b || (p._totalTime !== s || f) && p._callback(\"onUpdate\")), p._cycle !== t && (b || p._gc || p.vars.onRepeat && p._callback(\"onRepeat\")), f && (!p._gc || d) && (0 > a && p._startAt && !p._onUpdate && p._startTime && p._startAt.render(a, !0, d), e && (p._timeline.autoRemoveChildren && p._enabled(!1, !1), p._active = !1), !b && p.vars[f] && p._callback(f), 0 === u && p._rawPrevTime === h && n !== h && (p._rawPrevTime = 0));\n    }, g.to = function (a, b, c) {\n      return new g(a, b, c);\n    }, g.from = function (a, b, c) {\n      return c.runBackwards = !0, c.immediateRender = 0 != c.immediateRender, new g(a, b, c);\n    }, g.fromTo = function (a, b, c, d) {\n      return d.startAt = c, d.immediateRender = 0 != d.immediateRender && 0 != c.immediateRender, new g(a, b, d);\n    }, g.staggerTo = g.allTo = function (a, b, h, i, l, n, o) {\n      var p,\n          q,\n          r,\n          s,\n          t = [],\n          u = f(h.stagger || i),\n          v = h.cycle,\n          w = (h.startAt || m).cycle;\n\n      for (k(a) || (\"string\" == typeof a && (a = c.selector(a) || a), j(a) && (a = d(a))), a = a || [], p = a.length - 1, r = 0; p >= r; r++) {\n        q = {};\n\n        for (s in h) {\n          q[s] = h[s];\n        }\n\n        if (v && (e(q, a, r), null != q.duration && (b = q.duration, delete q.duration)), w) {\n          w = q.startAt = {};\n\n          for (s in h.startAt) {\n            w[s] = h.startAt[s];\n          }\n\n          e(q.startAt, a, r);\n        }\n\n        q.delay = u(r, a[r], a) + (q.delay || 0), r === p && l && (q.onComplete = function () {\n          h.onComplete && h.onComplete.apply(h.onCompleteScope || this, arguments), l.apply(o || h.callbackScope || this, n || m);\n        }), t[r] = new g(a[r], b, q);\n      }\n\n      return t;\n    }, g.staggerFrom = g.allFrom = function (a, b, c, d, e, f, h) {\n      return c.runBackwards = !0, c.immediateRender = 0 != c.immediateRender, g.staggerTo(a, b, c, d, e, f, h);\n    }, g.staggerFromTo = g.allFromTo = function (a, b, c, d, e, f, h, i) {\n      return d.startAt = c, d.immediateRender = 0 != d.immediateRender && 0 != c.immediateRender, g.staggerTo(a, b, d, e, f, h, i);\n    }, g.delayedCall = function (a, b, c, d, e) {\n      return new g(b, 0, {\n        delay: a,\n        onComplete: b,\n        onCompleteParams: c,\n        callbackScope: d,\n        onReverseComplete: b,\n        onReverseCompleteParams: c,\n        immediateRender: !1,\n        useFrames: e,\n        overwrite: 0\n      });\n    }, g.set = function (a, b) {\n      return new g(a, 0, b);\n    }, g.isTweening = function (a) {\n      return c.getTweensOf(a, !0).length > 0;\n    };\n\n    var n = function n(a, b) {\n      for (var d = [], e = 0, f = a._first; f;) {\n        f instanceof c ? d[e++] = f : (b && (d[e++] = f), d = d.concat(n(f, b)), e = d.length), f = f._next;\n      }\n\n      return d;\n    },\n        o = g.getAllTweens = function (b) {\n      return n(a._rootTimeline, b).concat(n(a._rootFramesTimeline, b));\n    };\n\n    g.killAll = function (a, c, d, e) {\n      null == c && (c = !0), null == d && (d = !0);\n      var f,\n          g,\n          h,\n          i = o(0 != e),\n          j = i.length,\n          k = c && d && e;\n\n      for (h = 0; j > h; h++) {\n        g = i[h], (k || g instanceof b || (f = g.target === g.vars.onComplete) && d || c && !f) && (a ? g.totalTime(g._reversed ? 0 : g.totalDuration()) : g._enabled(!1, !1));\n      }\n    }, g.killChildTweensOf = function (a, b) {\n      if (null != a) {\n        var e,\n            f,\n            h,\n            l,\n            m,\n            n = i.tweenLookup;\n        if (\"string\" == typeof a && (a = c.selector(a) || a), j(a) && (a = d(a)), k(a)) for (l = a.length; --l > -1;) {\n          g.killChildTweensOf(a[l], b);\n        } else {\n          e = [];\n\n          for (h in n) {\n            for (f = n[h].target.parentNode; f;) {\n              f === a && (e = e.concat(n[h].tweens)), f = f.parentNode;\n            }\n          }\n\n          for (m = e.length, l = 0; m > l; l++) {\n            b && e[l].totalTime(e[l].totalDuration()), e[l]._enabled(!1, !1);\n          }\n        }\n      }\n    };\n\n    var p = function p(a, c, d, e) {\n      c = c !== !1, d = d !== !1, e = e !== !1;\n\n      for (var f, g, h = o(e), i = c && d && e, j = h.length; --j > -1;) {\n        g = h[j], (i || g instanceof b || (f = g.target === g.vars.onComplete) && d || c && !f) && g.paused(a);\n      }\n    };\n\n    return g.pauseAll = function (a, b, c) {\n      p(!0, a, b, c);\n    }, g.resumeAll = function (a, b, c) {\n      p(!1, a, b, c);\n    }, g.globalTimeScale = function (b) {\n      var d = a._rootTimeline,\n          e = c.ticker.time;\n      return arguments.length ? (b = b || h, d._startTime = e - (e - d._startTime) * d._timeScale / b, d = a._rootFramesTimeline, e = c.ticker.frame, d._startTime = e - (e - d._startTime) * d._timeScale / b, d._timeScale = a._rootTimeline._timeScale = b, b) : d._timeScale;\n    }, l.progress = function (a, b) {\n      return arguments.length ? this.totalTime(this.duration() * (this._yoyo && 0 !== (1 & this._cycle) ? 1 - a : a) + this._cycle * (this._duration + this._repeatDelay), b) : this.duration() ? this._time / this._duration : this.ratio;\n    }, l.totalProgress = function (a, b) {\n      return arguments.length ? this.totalTime(this.totalDuration() * a, b) : this._totalTime / this.totalDuration();\n    }, l.time = function (a, b) {\n      if (!arguments.length) return this._time;\n      this._dirty && this.totalDuration();\n      var c = this._duration,\n          d = this._cycle,\n          e = d * (c + this._repeatDelay);\n      return a > c && (a = c), this.totalTime(this._yoyo && 1 & d ? c - a + e : this._repeat ? a + e : a, b);\n    }, l.duration = function (b) {\n      return arguments.length ? a.prototype.duration.call(this, b) : this._duration;\n    }, l.totalDuration = function (a) {\n      return arguments.length ? -1 === this._repeat ? this : this.duration((a - this._repeat * this._repeatDelay) / (this._repeat + 1)) : (this._dirty && (this._totalDuration = -1 === this._repeat ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat, this._dirty = !1), this._totalDuration);\n    }, l.repeat = function (a) {\n      return arguments.length ? (this._repeat = a, this._uncache(!0)) : this._repeat;\n    }, l.repeatDelay = function (a) {\n      return arguments.length ? (this._repeatDelay = a, this._uncache(!0)) : this._repeatDelay;\n    }, l.yoyo = function (a) {\n      return arguments.length ? (this._yoyo = a, this) : this._yoyo;\n    }, g;\n  }, !0), _gsScope._gsDefine(\"TimelineLite\", [\"core.Animation\", \"core.SimpleTimeline\", \"TweenLite\"], function (a, b, c) {\n    var d = function d(a) {\n      b.call(this, a);\n      var c,\n          d,\n          e = this,\n          f = e.vars;\n      e._labels = {}, e.autoRemoveChildren = !!f.autoRemoveChildren, e.smoothChildTiming = !!f.smoothChildTiming, e._sortChildren = !0, e._onUpdate = f.onUpdate;\n\n      for (d in f) {\n        c = f[d], i(c) && -1 !== c.join(\"\").indexOf(\"{self}\") && (f[d] = e._swapSelfInParams(c));\n      }\n\n      i(f.tweens) && e.add(f.tweens, 0, f.align, f.stagger);\n    },\n        e = 1e-8,\n        f = c._internals,\n        g = d._internals = {},\n        h = f.isSelector,\n        i = f.isArray,\n        j = f.lazyTweens,\n        k = f.lazyRender,\n        l = _gsScope._gsDefine.globals,\n        m = function m(a) {\n      var b,\n          c = {};\n\n      for (b in a) {\n        c[b] = a[b];\n      }\n\n      return c;\n    },\n        n = function n(a, b, c) {\n      var d,\n          e,\n          f = a.cycle;\n\n      for (d in f) {\n        e = f[d], a[d] = \"function\" == typeof e ? e(c, b[c], b) : e[c % e.length];\n      }\n\n      delete a.cycle;\n    },\n        o = g.pauseCallback = function () {},\n        p = function p(a) {\n      var b,\n          c = [],\n          d = a.length;\n\n      for (b = 0; b !== d; c.push(a[b++])) {\n        ;\n      }\n\n      return c;\n    },\n        q = function q(a, b, c, d) {\n      var e = \"immediateRender\";\n      return e in b || (b[e] = !(c && c[e] === !1 || d)), b;\n    },\n        r = function r(a) {\n      if (\"function\" == typeof a) return a;\n      var b = \"object\" == _typeof(a) ? a : {\n        each: a\n      },\n          c = b.ease,\n          d = b.from || 0,\n          e = b.base || 0,\n          f = {},\n          g = isNaN(d),\n          h = b.axis,\n          i = {\n        center: .5,\n        end: 1\n      }[d] || 0;\n      return function (a, j, k) {\n        var l,\n            m,\n            n,\n            o,\n            p,\n            q,\n            r,\n            s,\n            t,\n            u = (k || b).length,\n            v = f[u];\n\n        if (!v) {\n          if (t = \"auto\" === b.grid ? 0 : (b.grid || [1 / 0])[0], !t) {\n            for (r = -(1 / 0); r < (r = k[t++].getBoundingClientRect().left) && u > t;) {\n              ;\n            }\n\n            t--;\n          }\n\n          for (v = f[u] = [], l = g ? Math.min(t, u) * i - .5 : d % t, m = g ? u * i / t - .5 : d / t | 0, r = 0, s = 1 / 0, q = 0; u > q; q++) {\n            n = q % t - l, o = m - (q / t | 0), v[q] = p = h ? Math.abs(\"y\" === h ? o : n) : Math.sqrt(n * n + o * o), p > r && (r = p), s > p && (s = p);\n          }\n\n          v.max = r - s, v.min = s, v.v = u = b.amount || b.each * (t > u ? u - 1 : h ? \"y\" === h ? u / t : t : Math.max(t, u / t)) || 0, v.b = 0 > u ? e - u : e;\n        }\n\n        return u = (v[a] - v.min) / v.max, v.b + (c ? c.getRatio(u) : u) * v.v;\n      };\n    },\n        s = d.prototype = new b();\n\n    return d.version = \"2.1.3\", d.distribute = r, s.constructor = d, s.kill()._gc = s._forcingPlayhead = s._hasPause = !1, s.to = function (a, b, d, e) {\n      var f = d.repeat && l.TweenMax || c;\n      return b ? this.add(new f(a, b, d), e) : this.set(a, d, e);\n    }, s.from = function (a, b, d, e) {\n      return this.add((d.repeat && l.TweenMax || c).from(a, b, q(this, d)), e);\n    }, s.fromTo = function (a, b, d, e, f) {\n      var g = e.repeat && l.TweenMax || c;\n      return e = q(this, e, d), b ? this.add(g.fromTo(a, b, d, e), f) : this.set(a, e, f);\n    }, s.staggerTo = function (a, b, e, f, g, i, j, k) {\n      var l,\n          o,\n          q = new d({\n        onComplete: i,\n        onCompleteParams: j,\n        callbackScope: k,\n        smoothChildTiming: this.smoothChildTiming\n      }),\n          s = r(e.stagger || f),\n          t = e.startAt,\n          u = e.cycle;\n\n      for (\"string\" == typeof a && (a = c.selector(a) || a), a = a || [], h(a) && (a = p(a)), o = 0; o < a.length; o++) {\n        l = m(e), t && (l.startAt = m(t), t.cycle && n(l.startAt, a, o)), u && (n(l, a, o), null != l.duration && (b = l.duration, delete l.duration)), q.to(a[o], b, l, s(o, a[o], a));\n      }\n\n      return this.add(q, g);\n    }, s.staggerFrom = function (a, b, c, d, e, f, g, h) {\n      return c.runBackwards = !0, this.staggerTo(a, b, q(this, c), d, e, f, g, h);\n    }, s.staggerFromTo = function (a, b, c, d, e, f, g, h, i) {\n      return d.startAt = c, this.staggerTo(a, b, q(this, d, c), e, f, g, h, i);\n    }, s.call = function (a, b, d, e) {\n      return this.add(c.delayedCall(0, a, b, d), e);\n    }, s.set = function (a, b, d) {\n      return this.add(new c(a, 0, q(this, b, null, !0)), d);\n    }, d.exportRoot = function (a, b) {\n      a = a || {}, null == a.smoothChildTiming && (a.smoothChildTiming = !0);\n      var e,\n          f,\n          g,\n          h,\n          i = new d(a),\n          j = i._timeline;\n\n      for (null == b && (b = !0), j._remove(i, !0), i._startTime = 0, i._rawPrevTime = i._time = i._totalTime = j._time, g = j._first; g;) {\n        h = g._next, b && g instanceof c && g.target === g.vars.onComplete || (f = g._startTime - g._delay, 0 > f && (e = 1), i.add(g, f)), g = h;\n      }\n\n      return j.add(i, 0), e && i.totalDuration(), i;\n    }, s.add = function (e, f, g, h) {\n      var j,\n          k,\n          l,\n          m,\n          n,\n          o,\n          p = this;\n\n      if (\"number\" != typeof f && (f = p._parseTimeOrLabel(f, 0, !0, e)), !(e instanceof a)) {\n        if (e instanceof Array || e && e.push && i(e)) {\n          for (g = g || \"normal\", h = h || 0, j = f, k = e.length, l = 0; k > l; l++) {\n            i(m = e[l]) && (m = new d({\n              tweens: m\n            })), p.add(m, j), \"string\" != typeof m && \"function\" != typeof m && (\"sequence\" === g ? j = m._startTime + m.totalDuration() / m._timeScale : \"start\" === g && (m._startTime -= m.delay())), j += h;\n          }\n\n          return p._uncache(!0);\n        }\n\n        if (\"string\" == typeof e) return p.addLabel(e, f);\n        if (\"function\" != typeof e) throw \"Cannot add \" + e + \" into the timeline; it is not a tween, timeline, function, or string.\";\n        e = c.delayedCall(0, e);\n      }\n\n      if (b.prototype.add.call(p, e, f), (e._time || !e._duration && e._initted) && (j = (p.rawTime() - e._startTime) * e._timeScale, (!e._duration || Math.abs(Math.max(0, Math.min(e.totalDuration(), j))) - e._totalTime > 1e-5) && e.render(j, !1, !1)), (p._gc || p._time === p._duration) && !p._paused && p._duration < p.duration()) for (n = p, o = n.rawTime() > e._startTime; n._timeline;) {\n        o && n._timeline.smoothChildTiming ? n.totalTime(n._totalTime, !0) : n._gc && n._enabled(!0, !1), n = n._timeline;\n      }\n      return p;\n    }, s.remove = function (b) {\n      if (b instanceof a) {\n        this._remove(b, !1);\n\n        var c = b._timeline = b.vars.useFrames ? a._rootFramesTimeline : a._rootTimeline;\n        return b._startTime = (b._paused ? b._pauseTime : c._time) - (b._reversed ? b.totalDuration() - b._totalTime : b._totalTime) / b._timeScale, this;\n      }\n\n      if (b instanceof Array || b && b.push && i(b)) {\n        for (var d = b.length; --d > -1;) {\n          this.remove(b[d]);\n        }\n\n        return this;\n      }\n\n      return \"string\" == typeof b ? this.removeLabel(b) : this.kill(null, b);\n    }, s._remove = function (a, c) {\n      b.prototype._remove.call(this, a, c);\n\n      var d = this._last;\n      return d ? this._time > this.duration() && (this._time = this._duration, this._totalTime = this._totalDuration) : this._time = this._totalTime = this._duration = this._totalDuration = 0, this;\n    }, s.append = function (a, b) {\n      return this.add(a, this._parseTimeOrLabel(null, b, !0, a));\n    }, s.insert = s.insertMultiple = function (a, b, c, d) {\n      return this.add(a, b || 0, c, d);\n    }, s.appendMultiple = function (a, b, c, d) {\n      return this.add(a, this._parseTimeOrLabel(null, b, !0, a), c, d);\n    }, s.addLabel = function (a, b) {\n      return this._labels[a] = this._parseTimeOrLabel(b), this;\n    }, s.addPause = function (a, b, d, e) {\n      var f = c.delayedCall(0, o, d, e || this);\n      return f.vars.onComplete = f.vars.onReverseComplete = b, f.data = \"isPause\", this._hasPause = !0, this.add(f, a);\n    }, s.removeLabel = function (a) {\n      return delete this._labels[a], this;\n    }, s.getLabelTime = function (a) {\n      return null != this._labels[a] ? this._labels[a] : -1;\n    }, s._parseTimeOrLabel = function (b, c, d, e) {\n      var f, g;\n      if (e instanceof a && e.timeline === this) this.remove(e);else if (e && (e instanceof Array || e.push && i(e))) for (g = e.length; --g > -1;) {\n        e[g] instanceof a && e[g].timeline === this && this.remove(e[g]);\n      }\n      if (f = \"number\" != typeof b || c ? this.duration() > 99999999999 ? this.recent().endTime(!1) : this._duration : 0, \"string\" == typeof c) return this._parseTimeOrLabel(c, d && \"number\" == typeof b && null == this._labels[c] ? b - f : 0, d);\n      if (c = c || 0, \"string\" != typeof b || !isNaN(b) && null == this._labels[b]) null == b && (b = f);else {\n        if (g = b.indexOf(\"=\"), -1 === g) return null == this._labels[b] ? d ? this._labels[b] = f + c : c : this._labels[b] + c;\n        c = parseInt(b.charAt(g - 1) + \"1\", 10) * Number(b.substr(g + 1)), b = g > 1 ? this._parseTimeOrLabel(b.substr(0, g - 1), 0, d) : f;\n      }\n      return Number(b) + c;\n    }, s.seek = function (a, b) {\n      return this.totalTime(\"number\" == typeof a ? a : this._parseTimeOrLabel(a), b !== !1);\n    }, s.stop = function () {\n      return this.paused(!0);\n    }, s.gotoAndPlay = function (a, b) {\n      return this.play(a, b);\n    }, s.gotoAndStop = function (a, b) {\n      return this.pause(a, b);\n    }, s.render = function (a, b, c) {\n      this._gc && this._enabled(!0, !1);\n      var d,\n          f,\n          g,\n          h,\n          i,\n          l,\n          m,\n          n,\n          o = this,\n          p = o._time,\n          q = o._dirty ? o.totalDuration() : o._totalDuration,\n          r = o._startTime,\n          s = o._timeScale,\n          t = o._paused;\n\n      if (p !== o._time && (a += o._time - p), o._hasPause && !o._forcingPlayhead && !b) {\n        if (a > p) for (d = o._first; d && d._startTime <= a && !l;) {\n          d._duration || \"isPause\" !== d.data || d.ratio || 0 === d._startTime && 0 === o._rawPrevTime || (l = d), d = d._next;\n        } else for (d = o._last; d && d._startTime >= a && !l;) {\n          d._duration || \"isPause\" === d.data && d._rawPrevTime > 0 && (l = d), d = d._prev;\n        }\n        l && (o._time = o._totalTime = a = l._startTime, n = o._startTime + (o._reversed ? o._duration - a : a) / o._timeScale);\n      }\n\n      if (a >= q - e && a >= 0) o._totalTime = o._time = q, o._reversed || o._hasPausedChild() || (f = !0, h = \"onComplete\", i = !!o._timeline.autoRemoveChildren, 0 === o._duration && (0 >= a && a >= -e || o._rawPrevTime < 0 || o._rawPrevTime === e) && o._rawPrevTime !== a && o._first && (i = !0, o._rawPrevTime > e && (h = \"onReverseComplete\"))), o._rawPrevTime = o._duration || !b || a || o._rawPrevTime === a ? a : e, a = q + 1e-4;else if (e > a) {\n        if (o._totalTime = o._time = 0, a > -e && (a = 0), (0 !== p || 0 === o._duration && o._rawPrevTime !== e && (o._rawPrevTime > 0 || 0 > a && o._rawPrevTime >= 0)) && (h = \"onReverseComplete\", f = o._reversed), 0 > a) o._active = !1, o._timeline.autoRemoveChildren && o._reversed ? (i = f = !0, h = \"onReverseComplete\") : o._rawPrevTime >= 0 && o._first && (i = !0), o._rawPrevTime = a;else {\n          if (o._rawPrevTime = o._duration || !b || a || o._rawPrevTime === a ? a : e, 0 === a && f) for (d = o._first; d && 0 === d._startTime;) {\n            d._duration || (f = !1), d = d._next;\n          }\n          a = 0, o._initted || (i = !0);\n        }\n      } else o._totalTime = o._time = o._rawPrevTime = a;\n\n      if (o._time !== p && o._first || c || i || l) {\n        if (o._initted || (o._initted = !0), o._active || !o._paused && o._time !== p && a > 0 && (o._active = !0), 0 === p && o.vars.onStart && (0 === o._time && o._duration || b || o._callback(\"onStart\")), m = o._time, m >= p) for (d = o._first; d && (g = d._next, m === o._time && (!o._paused || t));) {\n          (d._active || d._startTime <= m && !d._paused && !d._gc) && (l === d && (o.pause(), o._pauseTime = n), d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c)), d = g;\n        } else for (d = o._last; d && (g = d._prev, m === o._time && (!o._paused || t));) {\n          if (d._active || d._startTime <= p && !d._paused && !d._gc) {\n            if (l === d) {\n              for (l = d._prev; l && l.endTime() > o._time;) {\n                l.render(l._reversed ? l.totalDuration() - (a - l._startTime) * l._timeScale : (a - l._startTime) * l._timeScale, b, c), l = l._prev;\n              }\n\n              l = null, o.pause(), o._pauseTime = n;\n            }\n\n            d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c);\n          }\n\n          d = g;\n        }\n        o._onUpdate && (b || (j.length && k(), o._callback(\"onUpdate\"))), h && (o._gc || (r === o._startTime || s !== o._timeScale) && (0 === o._time || q >= o.totalDuration()) && (f && (j.length && k(), o._timeline.autoRemoveChildren && o._enabled(!1, !1), o._active = !1), !b && o.vars[h] && o._callback(h)));\n      }\n    }, s._hasPausedChild = function () {\n      for (var a = this._first; a;) {\n        if (a._paused || a instanceof d && a._hasPausedChild()) return !0;\n        a = a._next;\n      }\n\n      return !1;\n    }, s.getChildren = function (a, b, d, e) {\n      e = e || -9999999999;\n\n      for (var f = [], g = this._first, h = 0; g;) {\n        g._startTime < e || (g instanceof c ? b !== !1 && (f[h++] = g) : (d !== !1 && (f[h++] = g), a !== !1 && (f = f.concat(g.getChildren(!0, b, d)), h = f.length))), g = g._next;\n      }\n\n      return f;\n    }, s.getTweensOf = function (a, b) {\n      var d,\n          e,\n          f = this._gc,\n          g = [],\n          h = 0;\n\n      for (f && this._enabled(!0, !0), d = c.getTweensOf(a), e = d.length; --e > -1;) {\n        (d[e].timeline === this || b && this._contains(d[e])) && (g[h++] = d[e]);\n      }\n\n      return f && this._enabled(!1, !0), g;\n    }, s.recent = function () {\n      return this._recent;\n    }, s._contains = function (a) {\n      for (var b = a.timeline; b;) {\n        if (b === this) return !0;\n        b = b.timeline;\n      }\n\n      return !1;\n    }, s.shiftChildren = function (a, b, c) {\n      c = c || 0;\n\n      for (var d, e = this._first, f = this._labels; e;) {\n        e._startTime >= c && (e._startTime += a), e = e._next;\n      }\n\n      if (b) for (d in f) {\n        f[d] >= c && (f[d] += a);\n      }\n      return this._uncache(!0);\n    }, s._kill = function (a, b) {\n      if (!a && !b) return this._enabled(!1, !1);\n\n      for (var c = b ? this.getTweensOf(b) : this.getChildren(!0, !0, !1), d = c.length, e = !1; --d > -1;) {\n        c[d]._kill(a, b) && (e = !0);\n      }\n\n      return e;\n    }, s.clear = function (a) {\n      var b = this.getChildren(!1, !0, !0),\n          c = b.length;\n\n      for (this._time = this._totalTime = 0; --c > -1;) {\n        b[c]._enabled(!1, !1);\n      }\n\n      return a !== !1 && (this._labels = {}), this._uncache(!0);\n    }, s.invalidate = function () {\n      for (var b = this._first; b;) {\n        b.invalidate(), b = b._next;\n      }\n\n      return a.prototype.invalidate.call(this);\n    }, s._enabled = function (a, c) {\n      if (a === this._gc) for (var d = this._first; d;) {\n        d._enabled(a, !0), d = d._next;\n      }\n      return b.prototype._enabled.call(this, a, c);\n    }, s.totalTime = function (b, c, d) {\n      this._forcingPlayhead = !0;\n      var e = a.prototype.totalTime.apply(this, arguments);\n      return this._forcingPlayhead = !1, e;\n    }, s.duration = function (a) {\n      return arguments.length ? (0 !== this.duration() && 0 !== a && this.timeScale(this._duration / a), this) : (this._dirty && this.totalDuration(), this._duration);\n    }, s.totalDuration = function (a) {\n      if (!arguments.length) {\n        if (this._dirty) {\n          for (var b, c, d = 0, e = this, f = e._last, g = 999999999999; f;) {\n            b = f._prev, f._dirty && f.totalDuration(), f._startTime > g && e._sortChildren && !f._paused && !e._calculatingDuration ? (e._calculatingDuration = 1, e.add(f, f._startTime - f._delay), e._calculatingDuration = 0) : g = f._startTime, f._startTime < 0 && !f._paused && (d -= f._startTime, e._timeline.smoothChildTiming && (e._startTime += f._startTime / e._timeScale, e._time -= f._startTime, e._totalTime -= f._startTime, e._rawPrevTime -= f._startTime), e.shiftChildren(-f._startTime, !1, -9999999999), g = 0), c = f._startTime + f._totalDuration / f._timeScale, c > d && (d = c), f = b;\n          }\n\n          e._duration = e._totalDuration = d, e._dirty = !1;\n        }\n\n        return this._totalDuration;\n      }\n\n      return a && this.totalDuration() ? this.timeScale(this._totalDuration / a) : this;\n    }, s.paused = function (b) {\n      if (b === !1 && this._paused) for (var c = this._first; c;) {\n        c._startTime === this._time && \"isPause\" === c.data && (c._rawPrevTime = 0), c = c._next;\n      }\n      return a.prototype.paused.apply(this, arguments);\n    }, s.usesFrames = function () {\n      for (var b = this._timeline; b._timeline;) {\n        b = b._timeline;\n      }\n\n      return b === a._rootFramesTimeline;\n    }, s.rawTime = function (a) {\n      return a && (this._paused || this._repeat && this.time() > 0 && this.totalProgress() < 1) ? this._totalTime % (this._duration + this._repeatDelay) : this._paused ? this._totalTime : (this._timeline.rawTime(a) - this._startTime) * this._timeScale;\n    }, d;\n  }, !0), _gsScope._gsDefine(\"TimelineMax\", [\"TimelineLite\", \"TweenLite\", \"easing.Ease\"], function (a, b, c) {\n    var d = function d(b) {\n      a.call(this, b), this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._cycle = 0, this._yoyo = !!this.vars.yoyo, this._dirty = !0;\n    },\n        e = 1e-8,\n        f = b._internals,\n        g = f.lazyTweens,\n        h = f.lazyRender,\n        i = _gsScope._gsDefine.globals,\n        j = new c(null, null, 1, 0),\n        k = d.prototype = new a();\n\n    return k.constructor = d, k.kill()._gc = !1, d.version = \"2.1.3\", k.invalidate = function () {\n      return this._yoyo = !!this.vars.yoyo, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._uncache(!0), a.prototype.invalidate.call(this);\n    }, k.addCallback = function (a, c, d, e) {\n      return this.add(b.delayedCall(0, a, d, e), c);\n    }, k.removeCallback = function (a, b) {\n      if (a) if (null == b) this._kill(null, a);else for (var c = this.getTweensOf(a, !1), d = c.length, e = this._parseTimeOrLabel(b); --d > -1;) {\n        c[d]._startTime === e && c[d]._enabled(!1, !1);\n      }\n      return this;\n    }, k.removePause = function (b) {\n      return this.removeCallback(a._internals.pauseCallback, b);\n    }, k.tweenTo = function (a, c) {\n      c = c || {};\n      var d,\n          e,\n          f,\n          g = {\n        ease: j,\n        useFrames: this.usesFrames(),\n        immediateRender: !1,\n        lazy: !1\n      },\n          h = c.repeat && i.TweenMax || b;\n\n      for (e in c) {\n        g[e] = c[e];\n      }\n\n      return g.time = this._parseTimeOrLabel(a), d = Math.abs(Number(g.time) - this._time) / this._timeScale || .001, f = new h(this, d, g), g.onStart = function () {\n        f.target.paused(!0), f.vars.time === f.target.time() || d !== f.duration() || f.isFromTo || f.duration(Math.abs(f.vars.time - f.target.time()) / f.target._timeScale).render(f.time(), !0, !0), c.onStart && c.onStart.apply(c.onStartScope || c.callbackScope || f, c.onStartParams || []);\n      }, f;\n    }, k.tweenFromTo = function (a, b, c) {\n      c = c || {}, a = this._parseTimeOrLabel(a), c.startAt = {\n        onComplete: this.seek,\n        onCompleteParams: [a],\n        callbackScope: this\n      }, c.immediateRender = c.immediateRender !== !1;\n      var d = this.tweenTo(b, c);\n      return d.isFromTo = 1, d.duration(Math.abs(d.vars.time - a) / this._timeScale || .001);\n    }, k.render = function (a, b, c) {\n      this._gc && this._enabled(!0, !1);\n      var d,\n          f,\n          i,\n          j,\n          k,\n          l,\n          m,\n          n,\n          o,\n          p = this,\n          q = p._time,\n          r = p._dirty ? p.totalDuration() : p._totalDuration,\n          s = p._duration,\n          t = p._totalTime,\n          u = p._startTime,\n          v = p._timeScale,\n          w = p._rawPrevTime,\n          x = p._paused,\n          y = p._cycle;\n      if (q !== p._time && (a += p._time - q), a >= r - e && a >= 0) p._locked || (p._totalTime = r, p._cycle = p._repeat), p._reversed || p._hasPausedChild() || (f = !0, j = \"onComplete\", k = !!p._timeline.autoRemoveChildren, 0 === p._duration && (0 >= a && a >= -e || 0 > w || w === e) && w !== a && p._first && (k = !0, w > e && (j = \"onReverseComplete\"))), p._rawPrevTime = p._duration || !b || a || p._rawPrevTime === a ? a : e, p._yoyo && 1 & p._cycle ? p._time = a = 0 : (p._time = s, a = s + 1e-4);else if (e > a) {\n        if (p._locked || (p._totalTime = p._cycle = 0), p._time = 0, a > -e && (a = 0), (0 !== q || 0 === s && w !== e && (w > 0 || 0 > a && w >= 0) && !p._locked) && (j = \"onReverseComplete\", f = p._reversed), 0 > a) p._active = !1, p._timeline.autoRemoveChildren && p._reversed ? (k = f = !0, j = \"onReverseComplete\") : w >= 0 && p._first && (k = !0), p._rawPrevTime = a;else {\n          if (p._rawPrevTime = s || !b || a || p._rawPrevTime === a ? a : e, 0 === a && f) for (d = p._first; d && 0 === d._startTime;) {\n            d._duration || (f = !1), d = d._next;\n          }\n          a = 0, p._initted || (k = !0);\n        }\n      } else 0 === s && 0 > w && (k = !0), p._time = p._rawPrevTime = a, p._locked || (p._totalTime = a, 0 !== p._repeat && (l = s + p._repeatDelay, p._cycle = p._totalTime / l >> 0, p._cycle && p._cycle === p._totalTime / l && a >= t && p._cycle--, p._time = p._totalTime - p._cycle * l, p._yoyo && 1 & p._cycle && (p._time = s - p._time), p._time > s ? (p._time = s, a = s + 1e-4) : p._time < 0 ? p._time = a = 0 : a = p._time));\n\n      if (p._hasPause && !p._forcingPlayhead && !b) {\n        if (a = p._time, a > q || p._repeat && y !== p._cycle) for (d = p._first; d && d._startTime <= a && !m;) {\n          d._duration || \"isPause\" !== d.data || d.ratio || 0 === d._startTime && 0 === p._rawPrevTime || (m = d), d = d._next;\n        } else for (d = p._last; d && d._startTime >= a && !m;) {\n          d._duration || \"isPause\" === d.data && d._rawPrevTime > 0 && (m = d), d = d._prev;\n        }\n        m && (o = p._startTime + (p._reversed ? p._duration - m._startTime : m._startTime) / p._timeScale, m._startTime < s && (p._time = p._rawPrevTime = a = m._startTime, p._totalTime = a + p._cycle * (p._totalDuration + p._repeatDelay)));\n      }\n\n      if (p._cycle !== y && !p._locked) {\n        var z = p._yoyo && 0 !== (1 & y),\n            A = z === (p._yoyo && 0 !== (1 & p._cycle)),\n            B = p._totalTime,\n            C = p._cycle,\n            D = p._rawPrevTime,\n            E = p._time;\n        if (p._totalTime = y * s, p._cycle < y ? z = !z : p._totalTime += s, p._time = q, p._rawPrevTime = 0 === s ? w - 1e-4 : w, p._cycle = y, p._locked = !0, q = z ? 0 : s, p.render(q, b, 0 === s), b || p._gc || p.vars.onRepeat && (p._cycle = C, p._locked = !1, p._callback(\"onRepeat\")), q !== p._time) return;\n        if (A && (p._cycle = y, p._locked = !0, q = z ? s + 1e-4 : -1e-4, p.render(q, !0, !1)), p._locked = !1, p._paused && !x) return;\n        p._time = E, p._totalTime = B, p._cycle = C, p._rawPrevTime = D;\n      }\n\n      if (!(p._time !== q && p._first || c || k || m)) return void (t !== p._totalTime && p._onUpdate && (b || p._callback(\"onUpdate\")));\n      if (p._initted || (p._initted = !0), p._active || !p._paused && p._totalTime !== t && a > 0 && (p._active = !0), 0 === t && p.vars.onStart && (0 === p._totalTime && p._totalDuration || b || p._callback(\"onStart\")), n = p._time, n >= q) for (d = p._first; d && (i = d._next, n === p._time && (!p._paused || x));) {\n        (d._active || d._startTime <= p._time && !d._paused && !d._gc) && (m === d && (p.pause(), p._pauseTime = o), d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c)), d = i;\n      } else for (d = p._last; d && (i = d._prev, n === p._time && (!p._paused || x));) {\n        if (d._active || d._startTime <= q && !d._paused && !d._gc) {\n          if (m === d) {\n            for (m = d._prev; m && m.endTime() > p._time;) {\n              m.render(m._reversed ? m.totalDuration() - (a - m._startTime) * m._timeScale : (a - m._startTime) * m._timeScale, b, c), m = m._prev;\n            }\n\n            m = null, p.pause(), p._pauseTime = o;\n          }\n\n          d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c);\n        }\n\n        d = i;\n      }\n      p._onUpdate && (b || (g.length && h(), p._callback(\"onUpdate\"))), j && (p._locked || p._gc || (u === p._startTime || v !== p._timeScale) && (0 === p._time || r >= p.totalDuration()) && (f && (g.length && h(), p._timeline.autoRemoveChildren && p._enabled(!1, !1), p._active = !1), !b && p.vars[j] && p._callback(j)));\n    }, k.getActive = function (a, b, c) {\n      var d,\n          e,\n          f = [],\n          g = this.getChildren(a || null == a, b || null == a, !!c),\n          h = 0,\n          i = g.length;\n\n      for (d = 0; i > d; d++) {\n        e = g[d], e.isActive() && (f[h++] = e);\n      }\n\n      return f;\n    }, k.getLabelAfter = function (a) {\n      a || 0 !== a && (a = this._time);\n      var b,\n          c = this.getLabelsArray(),\n          d = c.length;\n\n      for (b = 0; d > b; b++) {\n        if (c[b].time > a) return c[b].name;\n      }\n\n      return null;\n    }, k.getLabelBefore = function (a) {\n      null == a && (a = this._time);\n\n      for (var b = this.getLabelsArray(), c = b.length; --c > -1;) {\n        if (b[c].time < a) return b[c].name;\n      }\n\n      return null;\n    }, k.getLabelsArray = function () {\n      var a,\n          b = [],\n          c = 0;\n\n      for (a in this._labels) {\n        b[c++] = {\n          time: this._labels[a],\n          name: a\n        };\n      }\n\n      return b.sort(function (a, b) {\n        return a.time - b.time;\n      }), b;\n    }, k.invalidate = function () {\n      return this._locked = !1, a.prototype.invalidate.call(this);\n    }, k.progress = function (a, b) {\n      return arguments.length ? this.totalTime(this.duration() * (this._yoyo && 0 !== (1 & this._cycle) ? 1 - a : a) + this._cycle * (this._duration + this._repeatDelay), b) : this._time / this.duration() || 0;\n    }, k.totalProgress = function (a, b) {\n      return arguments.length ? this.totalTime(this.totalDuration() * a, b) : this._totalTime / this.totalDuration() || 0;\n    }, k.totalDuration = function (b) {\n      return arguments.length ? -1 !== this._repeat && b ? this.timeScale(this.totalDuration() / b) : this : (this._dirty && (a.prototype.totalDuration.call(this), this._totalDuration = -1 === this._repeat ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat), this._totalDuration);\n    }, k.time = function (a, b) {\n      if (!arguments.length) return this._time;\n      this._dirty && this.totalDuration();\n      var c = this._duration,\n          d = this._cycle,\n          e = d * (c + this._repeatDelay);\n      return a > c && (a = c), this.totalTime(this._yoyo && 1 & d ? c - a + e : this._repeat ? a + e : a, b);\n    }, k.repeat = function (a) {\n      return arguments.length ? (this._repeat = a, this._uncache(!0)) : this._repeat;\n    }, k.repeatDelay = function (a) {\n      return arguments.length ? (this._repeatDelay = a, this._uncache(!0)) : this._repeatDelay;\n    }, k.yoyo = function (a) {\n      return arguments.length ? (this._yoyo = a, this) : this._yoyo;\n    }, k.currentLabel = function (a) {\n      return arguments.length ? this.seek(a, !0) : this.getLabelBefore(this._time + e);\n    }, d;\n  }, !0), function () {\n    var a = 180 / Math.PI,\n        b = [],\n        c = [],\n        d = [],\n        e = {},\n        f = _gsScope._gsDefine.globals,\n        g = function g(a, b, c, d) {\n      c === d && (c = d - (d - b) / 1e6), a === b && (b = a + (c - a) / 1e6), this.a = a, this.b = b, this.c = c, this.d = d, this.da = d - a, this.ca = c - a, this.ba = b - a;\n    },\n        h = \",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,\",\n        i = function i(a, b, c, d) {\n      var e = {\n        a: a\n      },\n          f = {},\n          g = {},\n          h = {\n        c: d\n      },\n          i = (a + b) / 2,\n          j = (b + c) / 2,\n          k = (c + d) / 2,\n          l = (i + j) / 2,\n          m = (j + k) / 2,\n          n = (m - l) / 8;\n      return e.b = i + (a - i) / 4, f.b = l + n, e.c = f.a = (e.b + f.b) / 2, f.c = g.a = (l + m) / 2, g.b = m - n, h.b = k + (d - k) / 4, g.c = h.a = (g.b + h.b) / 2, [e, f, g, h];\n    },\n        j = function j(a, e, f, g, h) {\n      var j,\n          k,\n          l,\n          m,\n          n,\n          o,\n          p,\n          q,\n          r,\n          s,\n          t,\n          u,\n          v,\n          w = a.length - 1,\n          x = 0,\n          y = a[0].a;\n\n      for (j = 0; w > j; j++) {\n        n = a[x], k = n.a, l = n.d, m = a[x + 1].d, h ? (t = b[j], u = c[j], v = (u + t) * e * .25 / (g ? .5 : d[j] || .5), o = l - (l - k) * (g ? .5 * e : 0 !== t ? v / t : 0), p = l + (m - l) * (g ? .5 * e : 0 !== u ? v / u : 0), q = l - (o + ((p - o) * (3 * t / (t + u) + .5) / 4 || 0))) : (o = l - (l - k) * e * .5, p = l + (m - l) * e * .5, q = l - (o + p) / 2), o += q, p += q, n.c = r = o, 0 !== j ? n.b = y : n.b = y = n.a + .6 * (n.c - n.a), n.da = l - k, n.ca = r - k, n.ba = y - k, f ? (s = i(k, y, r, l), a.splice(x, 1, s[0], s[1], s[2], s[3]), x += 4) : x++, y = p;\n      }\n\n      n = a[x], n.b = y, n.c = y + .4 * (n.d - y), n.da = n.d - n.a, n.ca = n.c - n.a, n.ba = y - n.a, f && (s = i(n.a, y, n.c, n.d), a.splice(x, 1, s[0], s[1], s[2], s[3]));\n    },\n        k = function k(a, d, e, f) {\n      var h,\n          i,\n          j,\n          k,\n          l,\n          m,\n          n = [];\n      if (f) for (a = [f].concat(a), i = a.length; --i > -1;) {\n        \"string\" == typeof (m = a[i][d]) && \"=\" === m.charAt(1) && (a[i][d] = f[d] + Number(m.charAt(0) + m.substr(2)));\n      }\n      if (h = a.length - 2, 0 > h) return n[0] = new g(a[0][d], 0, 0, a[0][d]), n;\n\n      for (i = 0; h > i; i++) {\n        j = a[i][d], k = a[i + 1][d], n[i] = new g(j, 0, 0, k), e && (l = a[i + 2][d], b[i] = (b[i] || 0) + (k - j) * (k - j), c[i] = (c[i] || 0) + (l - k) * (l - k));\n      }\n\n      return n[i] = new g(a[i][d], 0, 0, a[i + 1][d]), n;\n    },\n        l = function (_l) {\n      function l(_x, _x2, _x3, _x4, _x5, _x6) {\n        return _l.apply(this, arguments);\n      }\n\n      l.toString = function () {\n        return _l.toString();\n      };\n\n      return l;\n    }(function (a, f, g, i, l, m) {\n      var n,\n          o,\n          p,\n          q,\n          r,\n          s,\n          t,\n          u,\n          v = {},\n          w = [],\n          x = m || a[0];\n      l = \"string\" == typeof l ? \",\" + l + \",\" : h, null == f && (f = 1);\n\n      for (o in a[0]) {\n        w.push(o);\n      }\n\n      if (a.length > 1) {\n        for (u = a[a.length - 1], t = !0, n = w.length; --n > -1;) {\n          if (o = w[n], Math.abs(x[o] - u[o]) > .05) {\n            t = !1;\n            break;\n          }\n        }\n\n        t && (a = a.concat(), m && a.unshift(m), a.push(a[1]), m = a[a.length - 3]);\n      }\n\n      for (b.length = c.length = d.length = 0, n = w.length; --n > -1;) {\n        o = w[n], e[o] = -1 !== l.indexOf(\",\" + o + \",\"), v[o] = k(a, o, e[o], m);\n      }\n\n      for (n = b.length; --n > -1;) {\n        b[n] = Math.sqrt(b[n]), c[n] = Math.sqrt(c[n]);\n      }\n\n      if (!i) {\n        for (n = w.length; --n > -1;) {\n          if (e[o]) for (p = v[w[n]], s = p.length - 1, q = 0; s > q; q++) {\n            r = p[q + 1].da / c[q] + p[q].da / b[q] || 0, d[q] = (d[q] || 0) + r * r;\n          }\n        }\n\n        for (n = d.length; --n > -1;) {\n          d[n] = Math.sqrt(d[n]);\n        }\n      }\n\n      for (n = w.length, q = g ? 4 : 1; --n > -1;) {\n        o = w[n], p = v[o], j(p, f, g, i, e[o]), t && (p.splice(0, q), p.splice(p.length - q, q));\n      }\n\n      return v;\n    }),\n        m = function m(a, b, c) {\n      b = b || \"soft\";\n      var d,\n          e,\n          f,\n          h,\n          i,\n          j,\n          k,\n          l,\n          m,\n          n,\n          o,\n          p = {},\n          q = \"cubic\" === b ? 3 : 2,\n          r = \"soft\" === b,\n          s = [];\n      if (r && c && (a = [c].concat(a)), null == a || a.length < q + 1) throw \"invalid Bezier data\";\n\n      for (m in a[0]) {\n        s.push(m);\n      }\n\n      for (j = s.length; --j > -1;) {\n        for (m = s[j], p[m] = i = [], n = 0, l = a.length, k = 0; l > k; k++) {\n          d = null == c ? a[k][m] : \"string\" == typeof (o = a[k][m]) && \"=\" === o.charAt(1) ? c[m] + Number(o.charAt(0) + o.substr(2)) : Number(o), r && k > 1 && l - 1 > k && (i[n++] = (d + i[n - 2]) / 2), i[n++] = d;\n        }\n\n        for (l = n - q + 1, n = 0, k = 0; l > k; k += q) {\n          d = i[k], e = i[k + 1], f = i[k + 2], h = 2 === q ? 0 : i[k + 3], i[n++] = o = 3 === q ? new g(d, e, f, h) : new g(d, (2 * e + d) / 3, (2 * e + f) / 3, f);\n        }\n\n        i.length = n;\n      }\n\n      return p;\n    },\n        n = function n(a, b, c) {\n      for (var d, e, f, g, h, i, j, k, l, m, n, o = 1 / c, p = a.length; --p > -1;) {\n        for (m = a[p], f = m.a, g = m.d - f, h = m.c - f, i = m.b - f, d = e = 0, k = 1; c >= k; k++) {\n          j = o * k, l = 1 - j, d = e - (e = (j * j * g + 3 * l * (j * h + l * i)) * j), n = p * c + k - 1, b[n] = (b[n] || 0) + d * d;\n        }\n      }\n    },\n        o = function o(a, b) {\n      b = b >> 0 || 6;\n      var c,\n          d,\n          e,\n          f,\n          g = [],\n          h = [],\n          i = 0,\n          j = 0,\n          k = b - 1,\n          l = [],\n          m = [];\n\n      for (c in a) {\n        n(a[c], g, b);\n      }\n\n      for (e = g.length, d = 0; e > d; d++) {\n        i += Math.sqrt(g[d]), f = d % b, m[f] = i, f === k && (j += i, f = d / b >> 0, l[f] = m, h[f] = j, i = 0, m = []);\n      }\n\n      return {\n        length: j,\n        lengths: h,\n        segments: l\n      };\n    },\n        p = _gsScope._gsDefine.plugin({\n      propName: \"bezier\",\n      priority: -1,\n      version: \"1.3.9\",\n      API: 2,\n      global: !0,\n      init: function init(a, b, c) {\n        this._target = a, b instanceof Array && (b = {\n          values: b\n        }), this._func = {}, this._mod = {}, this._props = [], this._timeRes = null == b.timeResolution ? 6 : parseInt(b.timeResolution, 10);\n        var d,\n            e,\n            f,\n            g,\n            h,\n            i = b.values || [],\n            j = {},\n            k = i[0],\n            n = b.autoRotate || c.vars.orientToBezier;\n        this._autoRotate = n ? n instanceof Array ? n : [[\"x\", \"y\", \"rotation\", n === !0 ? 0 : Number(n) || 0]] : null;\n\n        for (d in k) {\n          this._props.push(d);\n        }\n\n        for (f = this._props.length; --f > -1;) {\n          d = this._props[f], this._overwriteProps.push(d), e = this._func[d] = \"function\" == typeof a[d], j[d] = e ? a[d.indexOf(\"set\") || \"function\" != typeof a[\"get\" + d.substr(3)] ? d : \"get\" + d.substr(3)]() : parseFloat(a[d]), h || j[d] !== i[0][d] && (h = j);\n        }\n\n        if (this._beziers = \"cubic\" !== b.type && \"quadratic\" !== b.type && \"soft\" !== b.type ? l(i, isNaN(b.curviness) ? 1 : b.curviness, !1, \"thruBasic\" === b.type, b.correlate, h) : m(i, b.type, j), this._segCount = this._beziers[d].length, this._timeRes) {\n          var p = o(this._beziers, this._timeRes);\n          this._length = p.length, this._lengths = p.lengths, this._segments = p.segments, this._l1 = this._li = this._s1 = this._si = 0, this._l2 = this._lengths[0], this._curSeg = this._segments[0], this._s2 = this._curSeg[0], this._prec = 1 / this._curSeg.length;\n        }\n\n        if (n = this._autoRotate) for (this._initialRotations = [], n[0] instanceof Array || (this._autoRotate = n = [n]), f = n.length; --f > -1;) {\n          for (g = 0; 3 > g; g++) {\n            d = n[f][g], this._func[d] = \"function\" == typeof a[d] ? a[d.indexOf(\"set\") || \"function\" != typeof a[\"get\" + d.substr(3)] ? d : \"get\" + d.substr(3)] : !1;\n          }\n\n          d = n[f][2], this._initialRotations[f] = (this._func[d] ? this._func[d].call(this._target) : this._target[d]) || 0, this._overwriteProps.push(d);\n        }\n        return this._startRatio = c.vars.runBackwards ? 1 : 0, !0;\n      },\n      set: function set(b) {\n        var c,\n            d,\n            e,\n            f,\n            g,\n            h,\n            i,\n            j,\n            k,\n            l,\n            m,\n            n = this._segCount,\n            o = this._func,\n            p = this._target,\n            q = b !== this._startRatio;\n\n        if (this._timeRes) {\n          if (k = this._lengths, l = this._curSeg, m = b * this._length, e = this._li, m > this._l2 && n - 1 > e) {\n            for (j = n - 1; j > e && (this._l2 = k[++e]) <= m;) {\n              ;\n            }\n\n            this._l1 = k[e - 1], this._li = e, this._curSeg = l = this._segments[e], this._s2 = l[this._s1 = this._si = 0];\n          } else if (m < this._l1 && e > 0) {\n            for (; e > 0 && (this._l1 = k[--e]) >= m;) {\n              ;\n            }\n\n            0 === e && m < this._l1 ? this._l1 = 0 : e++, this._l2 = k[e], this._li = e, this._curSeg = l = this._segments[e], this._s1 = l[(this._si = l.length - 1) - 1] || 0, this._s2 = l[this._si];\n          }\n\n          if (c = e, m -= this._l1, e = this._si, m > this._s2 && e < l.length - 1) {\n            for (j = l.length - 1; j > e && (this._s2 = l[++e]) <= m;) {\n              ;\n            }\n\n            this._s1 = l[e - 1], this._si = e;\n          } else if (m < this._s1 && e > 0) {\n            for (; e > 0 && (this._s1 = l[--e]) >= m;) {\n              ;\n            }\n\n            0 === e && m < this._s1 ? this._s1 = 0 : e++, this._s2 = l[e], this._si = e;\n          }\n\n          h = 1 === b ? 1 : (e + (m - this._s1) / (this._s2 - this._s1)) * this._prec || 0;\n        } else c = 0 > b ? 0 : b >= 1 ? n - 1 : n * b >> 0, h = (b - c * (1 / n)) * n;\n\n        for (d = 1 - h, e = this._props.length; --e > -1;) {\n          f = this._props[e], g = this._beziers[f][c], i = (h * h * g.da + 3 * d * (h * g.ca + d * g.ba)) * h + g.a, this._mod[f] && (i = this._mod[f](i, p)), o[f] ? p[f](i) : p[f] = i;\n        }\n\n        if (this._autoRotate) {\n          var r,\n              s,\n              t,\n              u,\n              v,\n              w,\n              x,\n              y = this._autoRotate;\n\n          for (e = y.length; --e > -1;) {\n            f = y[e][2], w = y[e][3] || 0, x = y[e][4] === !0 ? 1 : a, g = this._beziers[y[e][0]], r = this._beziers[y[e][1]], g && r && (g = g[c], r = r[c], s = g.a + (g.b - g.a) * h, u = g.b + (g.c - g.b) * h, s += (u - s) * h, u += (g.c + (g.d - g.c) * h - u) * h, t = r.a + (r.b - r.a) * h, v = r.b + (r.c - r.b) * h, t += (v - t) * h, v += (r.c + (r.d - r.c) * h - v) * h, i = q ? Math.atan2(v - t, u - s) * x + w : this._initialRotations[e], this._mod[f] && (i = this._mod[f](i, p)), o[f] ? p[f](i) : p[f] = i);\n          }\n        }\n      }\n    }),\n        q = p.prototype;\n\n    p.bezierThrough = l, p.cubicToQuadratic = i, p._autoCSS = !0, p.quadraticToCubic = function (a, b, c) {\n      return new g(a, (2 * b + a) / 3, (2 * b + c) / 3, c);\n    }, p._cssRegister = function () {\n      var a = f.CSSPlugin;\n\n      if (a) {\n        var b = a._internals,\n            c = b._parseToProxy,\n            d = b._setPluginRatio,\n            e = b.CSSPropTween;\n\n        b._registerComplexSpecialProp(\"bezier\", {\n          parser: function parser(a, b, f, g, h, i) {\n            b instanceof Array && (b = {\n              values: b\n            }), i = new p();\n            var j,\n                k,\n                l,\n                m = b.values,\n                n = m.length - 1,\n                o = [],\n                q = {};\n            if (0 > n) return h;\n\n            for (j = 0; n >= j; j++) {\n              l = c(a, m[j], g, h, i, n !== j), o[j] = l.end;\n            }\n\n            for (k in b) {\n              q[k] = b[k];\n            }\n\n            return q.values = o, h = new e(a, \"bezier\", 0, 0, l.pt, 2), h.data = l, h.plugin = i, h.setRatio = d, 0 === q.autoRotate && (q.autoRotate = !0), !q.autoRotate || q.autoRotate instanceof Array || (j = q.autoRotate === !0 ? 0 : Number(q.autoRotate), q.autoRotate = null != l.end.left ? [[\"left\", \"top\", \"rotation\", j, !1]] : null != l.end.x ? [[\"x\", \"y\", \"rotation\", j, !1]] : !1), q.autoRotate && (g._transform || g._enableTransforms(!1), l.autoRotate = g._target._gsTransform, l.proxy.rotation = l.autoRotate.rotation || 0, g._overwriteProps.push(\"rotation\")), i._onInitTween(l.proxy, q, g._tween), h;\n          }\n        });\n      }\n    }, q._mod = function (a) {\n      for (var b, c = this._overwriteProps, d = c.length; --d > -1;) {\n        b = a[c[d]], b && \"function\" == typeof b && (this._mod[c[d]] = b);\n      }\n    }, q._kill = function (a) {\n      var b,\n          c,\n          d = this._props;\n\n      for (b in this._beziers) {\n        if (b in a) for (delete this._beziers[b], delete this._func[b], c = d.length; --c > -1;) {\n          d[c] === b && d.splice(c, 1);\n        }\n      }\n\n      if (d = this._autoRotate) for (c = d.length; --c > -1;) {\n        a[d[c][2]] && d.splice(c, 1);\n      }\n      return this._super._kill.call(this, a);\n    };\n  }(), _gsScope._gsDefine(\"plugins.CSSPlugin\", [\"plugins.TweenPlugin\", \"TweenLite\"], function (a, b) {\n    var c,\n        d,\n        e,\n        f,\n        g = function g() {\n      a.call(this, \"css\"), this._overwriteProps.length = 0, this.setRatio = g.prototype.setRatio;\n    },\n        h = _gsScope._gsDefine.globals,\n        i = {},\n        j = g.prototype = new a(\"css\");\n\n    j.constructor = g, g.version = \"2.1.3\", g.API = 2, g.defaultTransformPerspective = 0, g.defaultSkewType = \"compensated\", g.defaultSmoothOrigin = !0, j = \"px\", g.suffixMap = {\n      top: j,\n      right: j,\n      bottom: j,\n      left: j,\n      width: j,\n      height: j,\n      fontSize: j,\n      padding: j,\n      margin: j,\n      perspective: j,\n      lineHeight: \"\"\n    };\n\n    var k,\n        l,\n        m,\n        n,\n        o,\n        p,\n        q,\n        r,\n        s = /(?:\\-|\\.|\\b)(\\d|\\.|e\\-)+/g,\n        t = /(?:\\d|\\-\\d|\\.\\d|\\-\\.\\d|\\+=\\d|\\-=\\d|\\+=.\\d|\\-=\\.\\d)+/g,\n        u = /(?:\\+=|\\-=|\\-|\\b)[\\d\\-\\.]+[a-zA-Z0-9]*(?:%|\\b)/gi,\n        v = /(?:\\+=|\\-=|\\-|\\b)[\\d\\-\\.]+[a-zA-Z0-9]*(?:%|\\b),?/gi,\n        w = /(?![+-]?\\d*\\.?\\d+|[+-]|e[+-]\\d+)[^0-9]/g,\n        x = /(?:\\d|\\-|\\+|=|#|\\.)*/g,\n        y = /opacity *= *([^)]*)/i,\n        z = /opacity:([^;]*)/i,\n        A = /alpha\\(opacity *=.+?\\)/i,\n        B = /^(rgb|hsl)/,\n        C = /([A-Z])/g,\n        D = /-([a-z])/gi,\n        E = /(^(?:url\\(\\\"|url\\())|(?:(\\\"\\))$|\\)$)/gi,\n        F = function F(a, b) {\n      return b.toUpperCase();\n    },\n        G = /(?:Left|Right|Width)/i,\n        H = /(M11|M12|M21|M22)=[\\d\\-\\.e]+/gi,\n        I = /progid\\:DXImageTransform\\.Microsoft\\.Matrix\\(.+?\\)/i,\n        J = /,(?=[^\\)]*(?:\\(|$))/gi,\n        K = /[\\s,\\(]/i,\n        L = Math.PI / 180,\n        M = 180 / Math.PI,\n        N = {},\n        O = {\n      style: {}\n    },\n        P = _gsScope.document || {\n      createElement: function createElement() {\n        return O;\n      }\n    },\n        Q = function Q(a, b) {\n      var c = P.createElementNS ? P.createElementNS(b || \"http://www.w3.org/1999/xhtml\", a) : P.createElement(a);\n      return c.style ? c : P.createElement(a);\n    },\n        R = Q(\"div\"),\n        S = Q(\"img\"),\n        T = g._internals = {\n      _specialProps: i\n    },\n        U = (_gsScope.navigator || {}).userAgent || \"\",\n        V = function () {\n      var a = U.indexOf(\"Android\"),\n          b = Q(\"a\");\n      return m = -1 !== U.indexOf(\"Safari\") && -1 === U.indexOf(\"Chrome\") && (-1 === a || parseFloat(U.substr(a + 8, 2)) > 3), o = m && parseFloat(U.substr(U.indexOf(\"Version/\") + 8, 2)) < 6, n = -1 !== U.indexOf(\"Firefox\"), (/MSIE ([0-9]{1,}[\\.0-9]{0,})/.exec(U) || /Trident\\/.*rv:([0-9]{1,}[\\.0-9]{0,})/.exec(U)) && (p = parseFloat(RegExp.$1)), b ? (b.style.cssText = \"top:1px;opacity:.55;\", /^0.55/.test(b.style.opacity)) : !1;\n    }(),\n        W = function W(a) {\n      return y.test(\"string\" == typeof a ? a : (a.currentStyle ? a.currentStyle.filter : a.style.filter) || \"\") ? parseFloat(RegExp.$1) / 100 : 1;\n    },\n        X = function X(a) {\n      _gsScope.console && console.log(a);\n    },\n        Y = \"\",\n        Z = \"\",\n        $ = function $(a, b) {\n      b = b || R;\n      var c,\n          d,\n          e = b.style;\n      if (void 0 !== e[a]) return a;\n\n      for (a = a.charAt(0).toUpperCase() + a.substr(1), c = [\"O\", \"Moz\", \"ms\", \"Ms\", \"Webkit\"], d = 5; --d > -1 && void 0 === e[c[d] + a];) {\n        ;\n      }\n\n      return d >= 0 ? (Z = 3 === d ? \"ms\" : c[d], Y = \"-\" + Z.toLowerCase() + \"-\", Z + a) : null;\n    },\n        _ = \"undefined\" != typeof window ? window : P.defaultView || {\n      getComputedStyle: function getComputedStyle() {}\n    },\n        aa = function aa(a) {\n      return _.getComputedStyle(a);\n    },\n        ba = g.getStyle = function (a, b, c, d, e) {\n      var f;\n      return V || \"opacity\" !== b ? (!d && a.style[b] ? f = a.style[b] : (c = c || aa(a)) ? f = c[b] || c.getPropertyValue(b) || c.getPropertyValue(b.replace(C, \"-$1\").toLowerCase()) : a.currentStyle && (f = a.currentStyle[b]), null == e || f && \"none\" !== f && \"auto\" !== f && \"auto auto\" !== f ? f : e) : W(a);\n    },\n        ca = T.convertToPixels = function (a, c, d, e, f) {\n      if (\"px\" === e || !e && \"lineHeight\" !== c) return d;\n      if (\"auto\" === e || !d) return 0;\n      var h,\n          i,\n          j,\n          k = G.test(c),\n          l = a,\n          m = R.style,\n          n = 0 > d,\n          o = 1 === d;\n      if (n && (d = -d), o && (d *= 100), \"lineHeight\" !== c || e) {\n        if (\"%\" === e && -1 !== c.indexOf(\"border\")) h = d / 100 * (k ? a.clientWidth : a.clientHeight);else {\n          if (m.cssText = \"border:0 solid red;position:\" + ba(a, \"position\") + \";line-height:0;\", \"%\" !== e && l.appendChild && \"v\" !== e.charAt(0) && \"rem\" !== e) m[k ? \"borderLeftWidth\" : \"borderTopWidth\"] = d + e;else {\n            if (l = a.parentNode || P.body, -1 !== ba(l, \"display\").indexOf(\"flex\") && (m.position = \"absolute\"), i = l._gsCache, j = b.ticker.frame, i && k && i.time === j) return i.width * d / 100;\n            m[k ? \"width\" : \"height\"] = d + e;\n          }\n          l.appendChild(R), h = parseFloat(R[k ? \"offsetWidth\" : \"offsetHeight\"]), l.removeChild(R), k && \"%\" === e && g.cacheWidths !== !1 && (i = l._gsCache = l._gsCache || {}, i.time = j, i.width = h / d * 100), 0 !== h || f || (h = ca(a, c, d, e, !0));\n        }\n      } else i = aa(a).lineHeight, a.style.lineHeight = d, h = parseFloat(aa(a).lineHeight), a.style.lineHeight = i;\n      return o && (h /= 100), n ? -h : h;\n    },\n        da = T.calculateOffset = function (a, b, c) {\n      if (\"absolute\" !== ba(a, \"position\", c)) return 0;\n      var d = \"left\" === b ? \"Left\" : \"Top\",\n          e = ba(a, \"margin\" + d, c);\n      return a[\"offset\" + d] - (ca(a, b, parseFloat(e), e.replace(x, \"\")) || 0);\n    },\n        ea = function ea(a, b) {\n      var c,\n          d,\n          e,\n          f = {};\n      if (b = b || aa(a, null)) {\n        if (c = b.length) for (; --c > -1;) {\n          e = b[c], (-1 === e.indexOf(\"-transform\") || Fa === e) && (f[e.replace(D, F)] = b.getPropertyValue(e));\n        } else for (c in b) {\n          (-1 === c.indexOf(\"Transform\") || Ea === c) && (f[c] = b[c]);\n        }\n      } else if (b = a.currentStyle || a.style) for (c in b) {\n        \"string\" == typeof c && void 0 === f[c] && (f[c.replace(D, F)] = b[c]);\n      }\n      return V || (f.opacity = W(a)), d = Ta(a, b, !1), f.rotation = d.rotation, f.skewX = d.skewX, f.scaleX = d.scaleX, f.scaleY = d.scaleY, f.x = d.x, f.y = d.y, Ha && (f.z = d.z, f.rotationX = d.rotationX, f.rotationY = d.rotationY, f.scaleZ = d.scaleZ), f.filters && delete f.filters, f;\n    },\n        fa = function fa(a, b, c, d, e) {\n      var f,\n          g,\n          h,\n          i = {},\n          j = a.style;\n\n      for (g in c) {\n        \"cssText\" !== g && \"length\" !== g && isNaN(g) && (b[g] !== (f = c[g]) || e && e[g]) && -1 === g.indexOf(\"Origin\") && (\"number\" == typeof f || \"string\" == typeof f) && (i[g] = \"auto\" !== f || \"left\" !== g && \"top\" !== g ? \"\" !== f && \"auto\" !== f && \"none\" !== f || \"string\" != typeof b[g] || \"\" === b[g].replace(w, \"\") ? f : 0 : da(a, g), void 0 !== j[g] && (h = new ua(j, g, j[g], h)));\n      }\n\n      if (d) for (g in d) {\n        \"className\" !== g && (i[g] = d[g]);\n      }\n      return {\n        difs: i,\n        firstMPT: h\n      };\n    },\n        ga = {\n      width: [\"Left\", \"Right\"],\n      height: [\"Top\", \"Bottom\"]\n    },\n        ha = [\"marginLeft\", \"marginRight\", \"marginTop\", \"marginBottom\"],\n        ia = function ia(a, b, c) {\n      if (\"svg\" === (a.nodeName + \"\").toLowerCase()) return (c || aa(a))[b] || 0;\n      if (a.getCTM && Qa(a)) return a.getBBox()[b] || 0;\n      var d = parseFloat(\"width\" === b ? a.offsetWidth : a.offsetHeight),\n          e = ga[b],\n          f = e.length;\n\n      for (c = c || aa(a, null); --f > -1;) {\n        d -= parseFloat(ba(a, \"padding\" + e[f], c, !0)) || 0, d -= parseFloat(ba(a, \"border\" + e[f] + \"Width\", c, !0)) || 0;\n      }\n\n      return d;\n    },\n        ja = function ja(a, b) {\n      if (\"contain\" === a || \"auto\" === a || \"auto auto\" === a) return a + \" \";\n      (null == a || \"\" === a) && (a = \"0 0\");\n      var c,\n          d = a.split(\" \"),\n          e = -1 !== a.indexOf(\"left\") ? \"0%\" : -1 !== a.indexOf(\"right\") ? \"100%\" : d[0],\n          f = -1 !== a.indexOf(\"top\") ? \"0%\" : -1 !== a.indexOf(\"bottom\") ? \"100%\" : d[1];\n\n      if (d.length > 3 && !b) {\n        for (d = a.split(\", \").join(\",\").split(\",\"), a = [], c = 0; c < d.length; c++) {\n          a.push(ja(d[c]));\n        }\n\n        return a.join(\",\");\n      }\n\n      return null == f ? f = \"center\" === e ? \"50%\" : \"0\" : \"center\" === f && (f = \"50%\"), (\"center\" === e || isNaN(parseFloat(e)) && -1 === (e + \"\").indexOf(\"=\")) && (e = \"50%\"), a = e + \" \" + f + (d.length > 2 ? \" \" + d[2] : \"\"), b && (b.oxp = -1 !== e.indexOf(\"%\"), b.oyp = -1 !== f.indexOf(\"%\"), b.oxr = \"=\" === e.charAt(1), b.oyr = \"=\" === f.charAt(1), b.ox = parseFloat(e.replace(w, \"\")), b.oy = parseFloat(f.replace(w, \"\")), b.v = a), b || a;\n    },\n        ka = function ka(a, b) {\n      return \"function\" == typeof a && (a = a(r, q)), \"string\" == typeof a && \"=\" === a.charAt(1) ? parseInt(a.charAt(0) + \"1\", 10) * parseFloat(a.substr(2)) : parseFloat(a) - parseFloat(b) || 0;\n    },\n        la = function la(a, b) {\n      \"function\" == typeof a && (a = a(r, q));\n      var c = \"string\" == typeof a && \"=\" === a.charAt(1);\n      return \"string\" == typeof a && \"v\" === a.charAt(a.length - 2) && (a = (c ? a.substr(0, 2) : 0) + window[\"inner\" + (\"vh\" === a.substr(-2) ? \"Height\" : \"Width\")] * (parseFloat(c ? a.substr(2) : a) / 100)), null == a ? b : c ? parseInt(a.charAt(0) + \"1\", 10) * parseFloat(a.substr(2)) + b : parseFloat(a) || 0;\n    },\n        ma = function ma(a, b, c, d) {\n      var e,\n          f,\n          g,\n          h,\n          i,\n          j = 1e-6;\n      return \"function\" == typeof a && (a = a(r, q)), null == a ? h = b : \"number\" == typeof a ? h = a : (e = 360, f = a.split(\"_\"), i = \"=\" === a.charAt(1), g = (i ? parseInt(a.charAt(0) + \"1\", 10) * parseFloat(f[0].substr(2)) : parseFloat(f[0])) * (-1 === a.indexOf(\"rad\") ? 1 : M) - (i ? 0 : b), f.length && (d && (d[c] = b + g), -1 !== a.indexOf(\"short\") && (g %= e, g !== g % (e / 2) && (g = 0 > g ? g + e : g - e)), -1 !== a.indexOf(\"_cw\") && 0 > g ? g = (g + 9999999999 * e) % e - (g / e | 0) * e : -1 !== a.indexOf(\"ccw\") && g > 0 && (g = (g - 9999999999 * e) % e - (g / e | 0) * e)), h = b + g), j > h && h > -j && (h = 0), h;\n    },\n        na = {\n      aqua: [0, 255, 255],\n      lime: [0, 255, 0],\n      silver: [192, 192, 192],\n      black: [0, 0, 0],\n      maroon: [128, 0, 0],\n      teal: [0, 128, 128],\n      blue: [0, 0, 255],\n      navy: [0, 0, 128],\n      white: [255, 255, 255],\n      fuchsia: [255, 0, 255],\n      olive: [128, 128, 0],\n      yellow: [255, 255, 0],\n      orange: [255, 165, 0],\n      gray: [128, 128, 128],\n      purple: [128, 0, 128],\n      green: [0, 128, 0],\n      red: [255, 0, 0],\n      pink: [255, 192, 203],\n      cyan: [0, 255, 255],\n      transparent: [255, 255, 255, 0]\n    },\n        oa = function oa(a, b, c) {\n      return a = 0 > a ? a + 1 : a > 1 ? a - 1 : a, 255 * (1 > 6 * a ? b + (c - b) * a * 6 : .5 > a ? c : 2 > 3 * a ? b + (c - b) * (2 / 3 - a) * 6 : b) + .5 | 0;\n    },\n        pa = g.parseColor = function (a, b) {\n      var c, d, e, f, g, h, i, j, k, l, m;\n      if (a) {\n        if (\"number\" == typeof a) c = [a >> 16, a >> 8 & 255, 255 & a];else {\n          if (\",\" === a.charAt(a.length - 1) && (a = a.substr(0, a.length - 1)), na[a]) c = na[a];else if (\"#\" === a.charAt(0)) 4 === a.length && (d = a.charAt(1), e = a.charAt(2), f = a.charAt(3), a = \"#\" + d + d + e + e + f + f), a = parseInt(a.substr(1), 16), c = [a >> 16, a >> 8 & 255, 255 & a];else if (\"hsl\" === a.substr(0, 3)) {\n            if (c = m = a.match(s), b) {\n              if (-1 !== a.indexOf(\"=\")) return a.match(t);\n            } else g = Number(c[0]) % 360 / 360, h = Number(c[1]) / 100, i = Number(c[2]) / 100, e = .5 >= i ? i * (h + 1) : i + h - i * h, d = 2 * i - e, c.length > 3 && (c[3] = Number(c[3])), c[0] = oa(g + 1 / 3, d, e), c[1] = oa(g, d, e), c[2] = oa(g - 1 / 3, d, e);\n          } else c = a.match(s) || na.transparent;\n          c[0] = Number(c[0]), c[1] = Number(c[1]), c[2] = Number(c[2]), c.length > 3 && (c[3] = Number(c[3]));\n        }\n      } else c = na.black;\n      return b && !m && (d = c[0] / 255, e = c[1] / 255, f = c[2] / 255, j = Math.max(d, e, f), k = Math.min(d, e, f), i = (j + k) / 2, j === k ? g = h = 0 : (l = j - k, h = i > .5 ? l / (2 - j - k) : l / (j + k), g = j === d ? (e - f) / l + (f > e ? 6 : 0) : j === e ? (f - d) / l + 2 : (d - e) / l + 4, g *= 60), c[0] = g + .5 | 0, c[1] = 100 * h + .5 | 0, c[2] = 100 * i + .5 | 0), c;\n    },\n        qa = function qa(a, b) {\n      var c,\n          d,\n          e,\n          f = a.match(ra) || [],\n          g = 0,\n          h = \"\";\n      if (!f.length) return a;\n\n      for (c = 0; c < f.length; c++) {\n        d = f[c], e = a.substr(g, a.indexOf(d, g) - g), g += e.length + d.length, d = pa(d, b), 3 === d.length && d.push(1), h += e + (b ? \"hsla(\" + d[0] + \",\" + d[1] + \"%,\" + d[2] + \"%,\" + d[3] : \"rgba(\" + d.join(\",\")) + \")\";\n      }\n\n      return h + a.substr(g);\n    },\n        ra = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3}){1,2}\\\\b\";\n\n    for (j in na) {\n      ra += \"|\" + j + \"\\\\b\";\n    }\n\n    ra = new RegExp(ra + \")\", \"gi\"), g.colorStringFilter = function (a) {\n      var b,\n          c = a[0] + \" \" + a[1];\n      ra.test(c) && (b = -1 !== c.indexOf(\"hsl(\") || -1 !== c.indexOf(\"hsla(\"), a[0] = qa(a[0], b), a[1] = qa(a[1], b)), ra.lastIndex = 0;\n    }, b.defaultStringFilter || (b.defaultStringFilter = g.colorStringFilter);\n\n    var sa = function sa(a, b, c, d) {\n      if (null == a) return function (a) {\n        return a;\n      };\n      var e,\n          f = b ? (a.match(ra) || [\"\"])[0] : \"\",\n          g = a.split(f).join(\"\").match(u) || [],\n          h = a.substr(0, a.indexOf(g[0])),\n          i = \")\" === a.charAt(a.length - 1) ? \")\" : \"\",\n          j = -1 !== a.indexOf(\" \") ? \" \" : \",\",\n          k = g.length,\n          l = k > 0 ? g[0].replace(s, \"\") : \"\";\n      return k ? e = b ? function (a) {\n        var b, m, n, o;\n        if (\"number\" == typeof a) a += l;else if (d && J.test(a)) {\n          for (o = a.replace(J, \"|\").split(\"|\"), n = 0; n < o.length; n++) {\n            o[n] = e(o[n]);\n          }\n\n          return o.join(\",\");\n        }\n        if (b = (a.match(ra) || [f])[0], m = a.split(b).join(\"\").match(u) || [], n = m.length, k > n--) for (; ++n < k;) {\n          m[n] = c ? m[(n - 1) / 2 | 0] : g[n];\n        }\n        return h + m.join(j) + j + b + i + (-1 !== a.indexOf(\"inset\") ? \" inset\" : \"\");\n      } : function (a) {\n        var b, f, m;\n        if (\"number\" == typeof a) a += l;else if (d && J.test(a)) {\n          for (f = a.replace(J, \"|\").split(\"|\"), m = 0; m < f.length; m++) {\n            f[m] = e(f[m]);\n          }\n\n          return f.join(\",\");\n        }\n        if (b = a.match(\",\" === j ? u : v) || [], m = b.length, k > m--) for (; ++m < k;) {\n          b[m] = c ? b[(m - 1) / 2 | 0] : g[m];\n        }\n        return (h && \"none\" !== a ? a.substr(0, a.indexOf(b[0])) || h : h) + b.join(j) + i;\n      } : function (a) {\n        return a;\n      };\n    },\n        ta = function ta(a) {\n      return a = a.split(\",\"), function (b, c, d, e, f, g, h) {\n        var i,\n            j = (c + \"\").split(\" \");\n\n        for (h = {}, i = 0; 4 > i; i++) {\n          h[a[i]] = j[i] = j[i] || j[(i - 1) / 2 >> 0];\n        }\n\n        return e.parse(b, h, f, g);\n      };\n    },\n        ua = (T._setPluginRatio = function (a) {\n      this.plugin.setRatio(a);\n\n      for (var b, c, d, e, f, g = this.data, h = g.proxy, i = g.firstMPT, j = 1e-6; i;) {\n        b = h[i.v], i.r ? b = i.r(b) : j > b && b > -j && (b = 0), i.t[i.p] = b, i = i._next;\n      }\n\n      if (g.autoRotate && (g.autoRotate.rotation = g.mod ? g.mod.call(this._tween, h.rotation, this.t, this._tween) : h.rotation), 1 === a || 0 === a) for (i = g.firstMPT, f = 1 === a ? \"e\" : \"b\"; i;) {\n        if (c = i.t, c.type) {\n          if (1 === c.type) {\n            for (e = c.xs0 + c.s + c.xs1, d = 1; d < c.l; d++) {\n              e += c[\"xn\" + d] + c[\"xs\" + (d + 1)];\n            }\n\n            c[f] = e;\n          }\n        } else c[f] = c.s + c.xs0;\n\n        i = i._next;\n      }\n    }, function (a, b, c, d, e) {\n      this.t = a, this.p = b, this.v = c, this.r = e, d && (d._prev = this, this._next = d);\n    }),\n        va = (T._parseToProxy = function (a, b, c, d, e, f) {\n      var g,\n          h,\n          i,\n          j,\n          k,\n          l = d,\n          m = {},\n          n = {},\n          o = c._transform,\n          p = N;\n\n      for (c._transform = null, N = b, d = k = c.parse(a, b, d, e), N = p, f && (c._transform = o, l && (l._prev = null, l._prev && (l._prev._next = null))); d && d !== l;) {\n        if (d.type <= 1 && (h = d.p, n[h] = d.s + d.c, m[h] = d.s, f || (j = new ua(d, \"s\", h, j, d.r), d.c = 0), 1 === d.type)) for (g = d.l; --g > 0;) {\n          i = \"xn\" + g, h = d.p + \"_\" + i, n[h] = d.data[i], m[h] = d[i], f || (j = new ua(d, i, h, j, d.rxp[i]));\n        }\n        d = d._next;\n      }\n\n      return {\n        proxy: m,\n        end: n,\n        firstMPT: j,\n        pt: k\n      };\n    }, T.CSSPropTween = function (a, b, d, e, g, h, i, j, k, l, m) {\n      this.t = a, this.p = b, this.s = d, this.c = e, this.n = i || b, a instanceof va || f.push(this.n), this.r = j ? \"function\" == typeof j ? j : Math.round : j, this.type = h || 0, k && (this.pr = k, c = !0), this.b = void 0 === l ? d : l, this.e = void 0 === m ? d + e : m, g && (this._next = g, g._prev = this);\n    }),\n        wa = function wa(a, b, c, d, e, f) {\n      var g = new va(a, b, c, d - c, e, -1, f);\n      return g.b = c, g.e = g.xs0 = d, g;\n    },\n        xa = g.parseComplex = function (a, b, c, d, e, f, h, i, j, l) {\n      c = c || f || \"\", \"function\" == typeof d && (d = d(r, q)), h = new va(a, b, 0, 0, h, l ? 2 : 1, null, !1, i, c, d), d += \"\", e && ra.test(d + c) && (d = [c, d], g.colorStringFilter(d), c = d[0], d = d[1]);\n      var m,\n          n,\n          o,\n          p,\n          u,\n          v,\n          w,\n          x,\n          y,\n          z,\n          A,\n          B,\n          C,\n          D = c.split(\", \").join(\",\").split(\" \"),\n          E = d.split(\", \").join(\",\").split(\" \"),\n          F = D.length,\n          G = k !== !1;\n\n      for ((-1 !== d.indexOf(\",\") || -1 !== c.indexOf(\",\")) && (-1 !== (d + c).indexOf(\"rgb\") || -1 !== (d + c).indexOf(\"hsl\") ? (D = D.join(\" \").replace(J, \", \").split(\" \"), E = E.join(\" \").replace(J, \", \").split(\" \")) : (D = D.join(\" \").split(\",\").join(\", \").split(\" \"), E = E.join(\" \").split(\",\").join(\", \").split(\" \")), F = D.length), F !== E.length && (D = (f || \"\").split(\" \"), F = D.length), h.plugin = j, h.setRatio = l, ra.lastIndex = 0, m = 0; F > m; m++) {\n        if (p = D[m], u = E[m] + \"\", x = parseFloat(p), x || 0 === x) h.appendXtra(\"\", x, ka(u, x), u.replace(t, \"\"), G && -1 !== u.indexOf(\"px\") ? Math.round : !1, !0);else if (e && ra.test(p)) B = u.indexOf(\")\") + 1, B = \")\" + (B ? u.substr(B) : \"\"), C = -1 !== u.indexOf(\"hsl\") && V, z = u, p = pa(p, C), u = pa(u, C), y = p.length + u.length > 6, y && !V && 0 === u[3] ? (h[\"xs\" + h.l] += h.l ? \" transparent\" : \"transparent\", h.e = h.e.split(E[m]).join(\"transparent\")) : (V || (y = !1), C ? h.appendXtra(z.substr(0, z.indexOf(\"hsl\")) + (y ? \"hsla(\" : \"hsl(\"), p[0], ka(u[0], p[0]), \",\", !1, !0).appendXtra(\"\", p[1], ka(u[1], p[1]), \"%,\", !1).appendXtra(\"\", p[2], ka(u[2], p[2]), y ? \"%,\" : \"%\" + B, !1) : h.appendXtra(z.substr(0, z.indexOf(\"rgb\")) + (y ? \"rgba(\" : \"rgb(\"), p[0], u[0] - p[0], \",\", Math.round, !0).appendXtra(\"\", p[1], u[1] - p[1], \",\", Math.round).appendXtra(\"\", p[2], u[2] - p[2], y ? \",\" : B, Math.round), y && (p = p.length < 4 ? 1 : p[3], h.appendXtra(\"\", p, (u.length < 4 ? 1 : u[3]) - p, B, !1))), ra.lastIndex = 0;else if (v = p.match(s)) {\n          if (w = u.match(t), !w || w.length !== v.length) return h;\n\n          for (o = 0, n = 0; n < v.length; n++) {\n            A = v[n], z = p.indexOf(A, o), h.appendXtra(p.substr(o, z - o), Number(A), ka(w[n], A), \"\", G && \"px\" === p.substr(z + A.length, 2) ? Math.round : !1, 0 === n), o = z + A.length;\n          }\n\n          h[\"xs\" + h.l] += p.substr(o);\n        } else h[\"xs\" + h.l] += h.l || h[\"xs\" + h.l] ? \" \" + u : u;\n      }\n\n      if (-1 !== d.indexOf(\"=\") && h.data) {\n        for (B = h.xs0 + h.data.s, m = 1; m < h.l; m++) {\n          B += h[\"xs\" + m] + h.data[\"xn\" + m];\n        }\n\n        h.e = B + h[\"xs\" + m];\n      }\n\n      return h.l || (h.type = -1, h.xs0 = h.e), h.xfirst || h;\n    },\n        ya = 9;\n\n    for (j = va.prototype, j.l = j.pr = 0; --ya > 0;) {\n      j[\"xn\" + ya] = 0, j[\"xs\" + ya] = \"\";\n    }\n\n    j.xs0 = \"\", j._next = j._prev = j.xfirst = j.data = j.plugin = j.setRatio = j.rxp = null, j.appendXtra = function (a, b, c, d, e, f) {\n      var g = this,\n          h = g.l;\n      return g[\"xs\" + h] += f && (h || g[\"xs\" + h]) ? \" \" + a : a || \"\", c || 0 === h || g.plugin ? (g.l++, g.type = g.setRatio ? 2 : 1, g[\"xs\" + g.l] = d || \"\", h > 0 ? (g.data[\"xn\" + h] = b + c, g.rxp[\"xn\" + h] = e, g[\"xn\" + h] = b, g.plugin || (g.xfirst = new va(g, \"xn\" + h, b, c, g.xfirst || g, 0, g.n, e, g.pr), g.xfirst.xs0 = 0), g) : (g.data = {\n        s: b + c\n      }, g.rxp = {}, g.s = b, g.c = c, g.r = e, g)) : (g[\"xs\" + h] += b + (d || \"\"), g);\n    };\n\n    var za = function za(a, b) {\n      b = b || {}, this.p = b.prefix ? $(a) || a : a, i[a] = i[this.p] = this, this.format = b.formatter || sa(b.defaultValue, b.color, b.collapsible, b.multi), b.parser && (this.parse = b.parser), this.clrs = b.color, this.multi = b.multi, this.keyword = b.keyword, this.dflt = b.defaultValue, this.allowFunc = b.allowFunc, this.pr = b.priority || 0;\n    },\n        Aa = T._registerComplexSpecialProp = function (a, b, c) {\n      \"object\" != _typeof(b) && (b = {\n        parser: c\n      });\n      var d,\n          e,\n          f = a.split(\",\"),\n          g = b.defaultValue;\n\n      for (c = c || [g], d = 0; d < f.length; d++) {\n        b.prefix = 0 === d && b.prefix, b.defaultValue = c[d] || g, e = new za(f[d], b);\n      }\n    },\n        Ba = T._registerPluginProp = function (a) {\n      if (!i[a]) {\n        var b = a.charAt(0).toUpperCase() + a.substr(1) + \"Plugin\";\n        Aa(a, {\n          parser: function parser(a, c, d, e, f, g, j) {\n            var k = h.com.greensock.plugins[b];\n            return k ? (k._cssRegister(), i[d].parse(a, c, d, e, f, g, j)) : (X(\"Error: \" + b + \" js file not loaded.\"), f);\n          }\n        });\n      }\n    };\n\n    j = za.prototype, j.parseComplex = function (a, b, c, d, e, f) {\n      var g,\n          h,\n          i,\n          j,\n          k,\n          l,\n          m = this.keyword;\n\n      if (this.multi && (J.test(c) || J.test(b) ? (h = b.replace(J, \"|\").split(\"|\"), i = c.replace(J, \"|\").split(\"|\")) : m && (h = [b], i = [c])), i) {\n        for (j = i.length > h.length ? i.length : h.length, g = 0; j > g; g++) {\n          b = h[g] = h[g] || this.dflt, c = i[g] = i[g] || this.dflt, m && (k = b.indexOf(m), l = c.indexOf(m), k !== l && (-1 === l ? h[g] = h[g].split(m).join(\"\") : -1 === k && (h[g] += \" \" + m)));\n        }\n\n        b = h.join(\", \"), c = i.join(\", \");\n      }\n\n      return xa(a, this.p, b, c, this.clrs, this.dflt, d, this.pr, e, f);\n    }, j.parse = function (a, b, c, d, f, g, h) {\n      return this.parseComplex(a.style, this.format(ba(a, this.p, e, !1, this.dflt)), this.format(b), f, g);\n    }, g.registerSpecialProp = function (a, b, c) {\n      Aa(a, {\n        parser: function parser(a, d, e, f, g, h, i) {\n          var j = new va(a, e, 0, 0, g, 2, e, !1, c);\n          return j.plugin = h, j.setRatio = b(a, d, f._tween, e), j;\n        },\n        priority: c\n      });\n    }, g.useSVGTransformAttr = !0;\n\n    var Ca,\n        Da = \"scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent\".split(\",\"),\n        Ea = $(\"transform\"),\n        Fa = Y + \"transform\",\n        Ga = $(\"transformOrigin\"),\n        Ha = null !== $(\"perspective\"),\n        Ia = T.Transform = function () {\n      this.perspective = parseFloat(g.defaultTransformPerspective) || 0, this.force3D = g.defaultForce3D !== !1 && Ha ? g.defaultForce3D || \"auto\" : !1;\n    },\n        Ja = _gsScope.SVGElement,\n        Ka = function Ka(a, b, c) {\n      var d,\n          e = P.createElementNS(\"http://www.w3.org/2000/svg\", a),\n          f = /([a-z])([A-Z])/g;\n\n      for (d in c) {\n        e.setAttributeNS(null, d.replace(f, \"$1-$2\").toLowerCase(), c[d]);\n      }\n\n      return b.appendChild(e), e;\n    },\n        La = P.documentElement || {},\n        Ma = function () {\n      var a,\n          b,\n          c,\n          d = p || /Android/i.test(U) && !_gsScope.chrome;\n      return P.createElementNS && La.appendChild && !d && (a = Ka(\"svg\", La), b = Ka(\"rect\", a, {\n        width: 100,\n        height: 50,\n        x: 100\n      }), c = b.getBoundingClientRect().width, b.style[Ga] = \"50% 50%\", b.style[Ea] = \"scaleX(0.5)\", d = c === b.getBoundingClientRect().width && !(n && Ha), La.removeChild(a)), d;\n    }(),\n        Na = function Na(a, b, c, d, e, f) {\n      var h,\n          i,\n          j,\n          k,\n          l,\n          m,\n          n,\n          o,\n          p,\n          q,\n          r,\n          s,\n          t,\n          u,\n          v = a._gsTransform,\n          w = Sa(a, !0);\n      v && (t = v.xOrigin, u = v.yOrigin), (!d || (h = d.split(\" \")).length < 2) && (n = a.getBBox(), 0 === n.x && 0 === n.y && n.width + n.height === 0 && (n = {\n        x: parseFloat(a.hasAttribute(\"x\") ? a.getAttribute(\"x\") : a.hasAttribute(\"cx\") ? a.getAttribute(\"cx\") : 0) || 0,\n        y: parseFloat(a.hasAttribute(\"y\") ? a.getAttribute(\"y\") : a.hasAttribute(\"cy\") ? a.getAttribute(\"cy\") : 0) || 0,\n        width: 0,\n        height: 0\n      }), b = ja(b).split(\" \"), h = [(-1 !== b[0].indexOf(\"%\") ? parseFloat(b[0]) / 100 * n.width : parseFloat(b[0])) + n.x, (-1 !== b[1].indexOf(\"%\") ? parseFloat(b[1]) / 100 * n.height : parseFloat(b[1])) + n.y]), c.xOrigin = k = parseFloat(h[0]), c.yOrigin = l = parseFloat(h[1]), d && w !== Ra && (m = w[0], n = w[1], o = w[2], p = w[3], q = w[4], r = w[5], s = m * p - n * o, s && (i = k * (p / s) + l * (-o / s) + (o * r - p * q) / s, j = k * (-n / s) + l * (m / s) - (m * r - n * q) / s, k = c.xOrigin = h[0] = i, l = c.yOrigin = h[1] = j)), v && (f && (c.xOffset = v.xOffset, c.yOffset = v.yOffset, v = c), e || e !== !1 && g.defaultSmoothOrigin !== !1 ? (i = k - t, j = l - u, v.xOffset += i * w[0] + j * w[2] - i, v.yOffset += i * w[1] + j * w[3] - j) : v.xOffset = v.yOffset = 0), f || a.setAttribute(\"data-svg-origin\", h.join(\" \"));\n    },\n        Oa = function Oa(a) {\n      var b,\n          c = Q(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n          d = this.parentNode,\n          e = this.nextSibling,\n          f = this.style.cssText;\n      if (La.appendChild(c), c.appendChild(this), this.style.display = \"block\", a) try {\n        b = this.getBBox(), this._originalGetBBox = this.getBBox, this.getBBox = Oa;\n      } catch (g) {} else this._originalGetBBox && (b = this._originalGetBBox());\n      return e ? d.insertBefore(this, e) : d.appendChild(this), La.removeChild(c), this.style.cssText = f, b;\n    },\n        Pa = function Pa(a) {\n      try {\n        return a.getBBox();\n      } catch (b) {\n        return Oa.call(a, !0);\n      }\n    },\n        Qa = function Qa(a) {\n      return !(!Ja || !a.getCTM || a.parentNode && !a.ownerSVGElement || !Pa(a));\n    },\n        Ra = [1, 0, 0, 1, 0, 0],\n        Sa = function Sa(a, b) {\n      var c,\n          d,\n          e,\n          f,\n          g,\n          h,\n          i,\n          j = a._gsTransform || new Ia(),\n          k = 1e5,\n          l = a.style;\n      if (Ea ? d = ba(a, Fa, null, !0) : a.currentStyle && (d = a.currentStyle.filter.match(H), d = d && 4 === d.length ? [d[0].substr(4), Number(d[2].substr(4)), Number(d[1].substr(4)), d[3].substr(4), j.x || 0, j.y || 0].join(\",\") : \"\"), c = !d || \"none\" === d || \"matrix(1, 0, 0, 1, 0, 0)\" === d, Ea && c && !a.offsetParent && a !== La && (f = l.display, l.display = \"block\", i = a.parentNode, i && a.offsetParent || (g = 1, h = a.nextSibling, La.appendChild(a)), d = ba(a, Fa, null, !0), c = !d || \"none\" === d || \"matrix(1, 0, 0, 1, 0, 0)\" === d, f ? l.display = f : Xa(l, \"display\"), g && (h ? i.insertBefore(a, h) : i ? i.appendChild(a) : La.removeChild(a))), (j.svg || a.getCTM && Qa(a)) && (c && -1 !== (l[Ea] + \"\").indexOf(\"matrix\") && (d = l[Ea], c = 0), e = a.getAttribute(\"transform\"), c && e && (e = a.transform.baseVal.consolidate().matrix, d = \"matrix(\" + e.a + \",\" + e.b + \",\" + e.c + \",\" + e.d + \",\" + e.e + \",\" + e.f + \")\", c = 0)), c) return Ra;\n\n      for (e = (d || \"\").match(s) || [], ya = e.length; --ya > -1;) {\n        f = Number(e[ya]), e[ya] = (g = f - (f |= 0)) ? (g * k + (0 > g ? -.5 : .5) | 0) / k + f : f;\n      }\n\n      return b && e.length > 6 ? [e[0], e[1], e[4], e[5], e[12], e[13]] : e;\n    },\n        Ta = T.getTransform = function (a, c, d, e) {\n      if (a._gsTransform && d && !e) return a._gsTransform;\n      var f,\n          h,\n          i,\n          j,\n          k,\n          l,\n          m = d ? a._gsTransform || new Ia() : new Ia(),\n          n = m.scaleX < 0,\n          o = 2e-5,\n          p = 1e5,\n          q = Ha ? parseFloat(ba(a, Ga, c, !1, \"0 0 0\").split(\" \")[2]) || m.zOrigin || 0 : 0,\n          r = parseFloat(g.defaultTransformPerspective) || 0;\n\n      if (m.svg = !(!a.getCTM || !Qa(a)), m.svg && (Na(a, ba(a, Ga, c, !1, \"50% 50%\") + \"\", m, a.getAttribute(\"data-svg-origin\")), Ca = g.useSVGTransformAttr || Ma), f = Sa(a), f !== Ra) {\n        if (16 === f.length) {\n          var s,\n              t,\n              u,\n              v,\n              w,\n              x = f[0],\n              y = f[1],\n              z = f[2],\n              A = f[3],\n              B = f[4],\n              C = f[5],\n              D = f[6],\n              E = f[7],\n              F = f[8],\n              G = f[9],\n              H = f[10],\n              I = f[12],\n              J = f[13],\n              K = f[14],\n              L = f[11],\n              N = Math.atan2(D, H);\n          m.zOrigin && (K = -m.zOrigin, I = F * K - f[12], J = G * K - f[13], K = H * K + m.zOrigin - f[14]), m.rotationX = N * M, N && (v = Math.cos(-N), w = Math.sin(-N), s = B * v + F * w, t = C * v + G * w, u = D * v + H * w, F = B * -w + F * v, G = C * -w + G * v, H = D * -w + H * v, L = E * -w + L * v, B = s, C = t, D = u), N = Math.atan2(-z, H), m.rotationY = N * M, N && (v = Math.cos(-N), w = Math.sin(-N), s = x * v - F * w, t = y * v - G * w, u = z * v - H * w, G = y * w + G * v, H = z * w + H * v, L = A * w + L * v, x = s, y = t, z = u), N = Math.atan2(y, x), m.rotation = N * M, N && (v = Math.cos(N), w = Math.sin(N), s = x * v + y * w, t = B * v + C * w, u = F * v + G * w, y = y * v - x * w, C = C * v - B * w, G = G * v - F * w, x = s, B = t, F = u), m.rotationX && Math.abs(m.rotationX) + Math.abs(m.rotation) > 359.9 && (m.rotationX = m.rotation = 0, m.rotationY = 180 - m.rotationY), N = Math.atan2(B, C), m.scaleX = (Math.sqrt(x * x + y * y + z * z) * p + .5 | 0) / p, m.scaleY = (Math.sqrt(C * C + D * D) * p + .5 | 0) / p, m.scaleZ = (Math.sqrt(F * F + G * G + H * H) * p + .5 | 0) / p, x /= m.scaleX, B /= m.scaleY, y /= m.scaleX, C /= m.scaleY, Math.abs(N) > o ? (m.skewX = N * M, B = 0, \"simple\" !== m.skewType && (m.scaleY *= 1 / Math.cos(N))) : m.skewX = 0, m.perspective = L ? 1 / (0 > L ? -L : L) : 0, m.x = I, m.y = J, m.z = K, m.svg && (m.x -= m.xOrigin - (m.xOrigin * x - m.yOrigin * B), m.y -= m.yOrigin - (m.yOrigin * y - m.xOrigin * C));\n        } else if (!Ha || e || !f.length || m.x !== f[4] || m.y !== f[5] || !m.rotationX && !m.rotationY) {\n          var O = f.length >= 6,\n              P = O ? f[0] : 1,\n              Q = f[1] || 0,\n              R = f[2] || 0,\n              S = O ? f[3] : 1;\n          m.x = f[4] || 0, m.y = f[5] || 0, i = Math.sqrt(P * P + Q * Q), j = Math.sqrt(S * S + R * R), k = P || Q ? Math.atan2(Q, P) * M : m.rotation || 0, l = R || S ? Math.atan2(R, S) * M + k : m.skewX || 0, m.scaleX = i, m.scaleY = j, m.rotation = k, m.skewX = l, Ha && (m.rotationX = m.rotationY = m.z = 0, m.perspective = r, m.scaleZ = 1), m.svg && (m.x -= m.xOrigin - (m.xOrigin * P + m.yOrigin * R), m.y -= m.yOrigin - (m.xOrigin * Q + m.yOrigin * S));\n        }\n\n        Math.abs(m.skewX) > 90 && Math.abs(m.skewX) < 270 && (n ? (m.scaleX *= -1, m.skewX += m.rotation <= 0 ? 180 : -180, m.rotation += m.rotation <= 0 ? 180 : -180) : (m.scaleY *= -1, m.skewX += m.skewX <= 0 ? 180 : -180)), m.zOrigin = q;\n\n        for (h in m) {\n          m[h] < o && m[h] > -o && (m[h] = 0);\n        }\n      }\n\n      return d && (a._gsTransform = m, m.svg && (Ca && a.style[Ea] ? b.delayedCall(.001, function () {\n        Xa(a.style, Ea);\n      }) : !Ca && a.getAttribute(\"transform\") && b.delayedCall(.001, function () {\n        a.removeAttribute(\"transform\");\n      }))), m;\n    },\n        Ua = function Ua(a) {\n      var b,\n          c,\n          d = this.data,\n          e = -d.rotation * L,\n          f = e + d.skewX * L,\n          g = 1e5,\n          h = (Math.cos(e) * d.scaleX * g | 0) / g,\n          i = (Math.sin(e) * d.scaleX * g | 0) / g,\n          j = (Math.sin(f) * -d.scaleY * g | 0) / g,\n          k = (Math.cos(f) * d.scaleY * g | 0) / g,\n          l = this.t.style,\n          m = this.t.currentStyle;\n\n      if (m) {\n        c = i, i = -j, j = -c, b = m.filter, l.filter = \"\";\n        var n,\n            o,\n            q = this.t.offsetWidth,\n            r = this.t.offsetHeight,\n            s = \"absolute\" !== m.position,\n            t = \"progid:DXImageTransform.Microsoft.Matrix(M11=\" + h + \", M12=\" + i + \", M21=\" + j + \", M22=\" + k,\n            u = d.x + q * d.xPercent / 100,\n            v = d.y + r * d.yPercent / 100;\n\n        if (null != d.ox && (n = (d.oxp ? q * d.ox * .01 : d.ox) - q / 2, o = (d.oyp ? r * d.oy * .01 : d.oy) - r / 2, u += n - (n * h + o * i), v += o - (n * j + o * k)), s ? (n = q / 2, o = r / 2, t += \", Dx=\" + (n - (n * h + o * i) + u) + \", Dy=\" + (o - (n * j + o * k) + v) + \")\") : t += \", sizingMethod='auto expand')\", -1 !== b.indexOf(\"DXImageTransform.Microsoft.Matrix(\") ? l.filter = b.replace(I, t) : l.filter = t + \" \" + b, (0 === a || 1 === a) && 1 === h && 0 === i && 0 === j && 1 === k && (s && -1 === t.indexOf(\"Dx=0, Dy=0\") || y.test(b) && 100 !== parseFloat(RegExp.$1) || -1 === b.indexOf(b.indexOf(\"Alpha\")) && l.removeAttribute(\"filter\")), !s) {\n          var w,\n              z,\n              A,\n              B = 8 > p ? 1 : -1;\n\n          for (n = d.ieOffsetX || 0, o = d.ieOffsetY || 0, d.ieOffsetX = Math.round((q - ((0 > h ? -h : h) * q + (0 > i ? -i : i) * r)) / 2 + u), d.ieOffsetY = Math.round((r - ((0 > k ? -k : k) * r + (0 > j ? -j : j) * q)) / 2 + v), ya = 0; 4 > ya; ya++) {\n            z = ha[ya], w = m[z], c = -1 !== w.indexOf(\"px\") ? parseFloat(w) : ca(this.t, z, parseFloat(w), w.replace(x, \"\")) || 0, A = c !== d[z] ? 2 > ya ? -d.ieOffsetX : -d.ieOffsetY : 2 > ya ? n - d.ieOffsetX : o - d.ieOffsetY, l[z] = (d[z] = Math.round(c - A * (0 === ya || 2 === ya ? 1 : B))) + \"px\";\n          }\n        }\n      }\n    },\n        Va = T.set3DTransformRatio = T.setTransformRatio = function (a) {\n      var b,\n          c,\n          d,\n          e,\n          f,\n          g,\n          h,\n          i,\n          j,\n          k,\n          l,\n          m,\n          o,\n          p,\n          q,\n          r,\n          s,\n          t,\n          u,\n          v,\n          w,\n          x,\n          y,\n          z = this.data,\n          A = this.t.style,\n          B = z.rotation,\n          C = z.rotationX,\n          D = z.rotationY,\n          E = z.scaleX,\n          F = z.scaleY,\n          G = z.scaleZ,\n          H = z.x,\n          I = z.y,\n          J = z.z,\n          K = z.svg,\n          M = z.perspective,\n          N = z.force3D,\n          O = z.skewY,\n          P = z.skewX;\n      if (O && (P += O, B += O), ((1 === a || 0 === a) && \"auto\" === N && (this.tween._totalTime === this.tween._totalDuration || !this.tween._totalTime) || !N) && !J && !M && !D && !C && 1 === G || Ca && K || !Ha) return void (B || P || K ? (B *= L, x = P * L, y = 1e5, c = Math.cos(B) * E, f = Math.sin(B) * E, d = Math.sin(B - x) * -F, g = Math.cos(B - x) * F, x && \"simple\" === z.skewType && (b = Math.tan(x - O * L), b = Math.sqrt(1 + b * b), d *= b, g *= b, O && (b = Math.tan(O * L), b = Math.sqrt(1 + b * b), c *= b, f *= b)), K && (H += z.xOrigin - (z.xOrigin * c + z.yOrigin * d) + z.xOffset, I += z.yOrigin - (z.xOrigin * f + z.yOrigin * g) + z.yOffset, Ca && (z.xPercent || z.yPercent) && (q = this.t.getBBox(), H += .01 * z.xPercent * q.width, I += .01 * z.yPercent * q.height), q = 1e-6, q > H && H > -q && (H = 0), q > I && I > -q && (I = 0)), u = (c * y | 0) / y + \",\" + (f * y | 0) / y + \",\" + (d * y | 0) / y + \",\" + (g * y | 0) / y + \",\" + H + \",\" + I + \")\", K && Ca ? this.t.setAttribute(\"transform\", \"matrix(\" + u) : A[Ea] = (z.xPercent || z.yPercent ? \"translate(\" + z.xPercent + \"%,\" + z.yPercent + \"%) matrix(\" : \"matrix(\") + u) : A[Ea] = (z.xPercent || z.yPercent ? \"translate(\" + z.xPercent + \"%,\" + z.yPercent + \"%) matrix(\" : \"matrix(\") + E + \",0,0,\" + F + \",\" + H + \",\" + I + \")\");\n      if (n && (q = 1e-4, q > E && E > -q && (E = G = 2e-5), q > F && F > -q && (F = G = 2e-5), !M || z.z || z.rotationX || z.rotationY || (M = 0)), B || P) B *= L, r = c = Math.cos(B), s = f = Math.sin(B), P && (B -= P * L, r = Math.cos(B), s = Math.sin(B), \"simple\" === z.skewType && (b = Math.tan((P - O) * L), b = Math.sqrt(1 + b * b), r *= b, s *= b, z.skewY && (b = Math.tan(O * L), b = Math.sqrt(1 + b * b), c *= b, f *= b))), d = -s, g = r;else {\n        if (!(D || C || 1 !== G || M || K)) return void (A[Ea] = (z.xPercent || z.yPercent ? \"translate(\" + z.xPercent + \"%,\" + z.yPercent + \"%) translate3d(\" : \"translate3d(\") + H + \"px,\" + I + \"px,\" + J + \"px)\" + (1 !== E || 1 !== F ? \" scale(\" + E + \",\" + F + \")\" : \"\"));\n        c = g = 1, d = f = 0;\n      }\n      k = 1, e = h = i = j = l = m = 0, o = M ? -1 / M : 0, p = z.zOrigin, q = 1e-6, v = \",\", w = \"0\", B = D * L, B && (r = Math.cos(B), s = Math.sin(B), i = -s, l = o * -s, e = c * s, h = f * s, k = r, o *= r, c *= r, f *= r), B = C * L, B && (r = Math.cos(B), s = Math.sin(B), b = d * r + e * s, t = g * r + h * s, j = k * s, m = o * s, e = d * -s + e * r, h = g * -s + h * r, k *= r, o *= r, d = b, g = t), 1 !== G && (e *= G, h *= G, k *= G, o *= G), 1 !== F && (d *= F, g *= F, j *= F, m *= F), 1 !== E && (c *= E, f *= E, i *= E, l *= E), (p || K) && (p && (H += e * -p, I += h * -p, J += k * -p + p), K && (H += z.xOrigin - (z.xOrigin * c + z.yOrigin * d) + z.xOffset, I += z.yOrigin - (z.xOrigin * f + z.yOrigin * g) + z.yOffset), q > H && H > -q && (H = w), q > I && I > -q && (I = w), q > J && J > -q && (J = 0)), u = z.xPercent || z.yPercent ? \"translate(\" + z.xPercent + \"%,\" + z.yPercent + \"%) matrix3d(\" : \"matrix3d(\", u += (q > c && c > -q ? w : c) + v + (q > f && f > -q ? w : f) + v + (q > i && i > -q ? w : i), u += v + (q > l && l > -q ? w : l) + v + (q > d && d > -q ? w : d) + v + (q > g && g > -q ? w : g), C || D || 1 !== G ? (u += v + (q > j && j > -q ? w : j) + v + (q > m && m > -q ? w : m) + v + (q > e && e > -q ? w : e), u += v + (q > h && h > -q ? w : h) + v + (q > k && k > -q ? w : k) + v + (q > o && o > -q ? w : o) + v) : u += \",0,0,0,0,1,0,\", u += H + v + I + v + J + v + (M ? 1 + -J / M : 1) + \")\", A[Ea] = u;\n    };\n\n    j = Ia.prototype, j.x = j.y = j.z = j.skewX = j.skewY = j.rotation = j.rotationX = j.rotationY = j.zOrigin = j.xPercent = j.yPercent = j.xOffset = j.yOffset = 0, j.scaleX = j.scaleY = j.scaleZ = 1, Aa(\"transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin\", {\n      parser: function parser(a, b, c, d, f, h, i) {\n        if (d._lastParsedTransform === i) return f;\n        d._lastParsedTransform = i;\n        var j = i.scale && \"function\" == typeof i.scale ? i.scale : 0;\n        j && (i.scale = j(r, a));\n        var k,\n            l,\n            m,\n            n,\n            o,\n            p,\n            s,\n            t,\n            u,\n            v = a._gsTransform,\n            w = a.style,\n            x = 1e-6,\n            y = Da.length,\n            z = i,\n            A = {},\n            B = \"transformOrigin\",\n            C = Ta(a, e, !0, z.parseTransform),\n            D = z.transform && (\"function\" == typeof z.transform ? z.transform(r, q) : z.transform);\n        if (C.skewType = z.skewType || C.skewType || g.defaultSkewType, d._transform = C, \"rotationZ\" in z && (z.rotation = z.rotationZ), D && \"string\" == typeof D && Ea) l = R.style, l[Ea] = D, l.display = \"block\", l.position = \"absolute\", -1 !== D.indexOf(\"%\") && (l.width = ba(a, \"width\"), l.height = ba(a, \"height\")), P.body.appendChild(R), k = Ta(R, null, !1), \"simple\" === C.skewType && (k.scaleY *= Math.cos(k.skewX * L)), C.svg && (p = C.xOrigin, s = C.yOrigin, k.x -= C.xOffset, k.y -= C.yOffset, (z.transformOrigin || z.svgOrigin) && (D = {}, Na(a, ja(z.transformOrigin), D, z.svgOrigin, z.smoothOrigin, !0), p = D.xOrigin, s = D.yOrigin, k.x -= D.xOffset - C.xOffset, k.y -= D.yOffset - C.yOffset), (p || s) && (t = Sa(R, !0), k.x -= p - (p * t[0] + s * t[2]), k.y -= s - (p * t[1] + s * t[3]))), P.body.removeChild(R), k.perspective || (k.perspective = C.perspective), null != z.xPercent && (k.xPercent = la(z.xPercent, C.xPercent)), null != z.yPercent && (k.yPercent = la(z.yPercent, C.yPercent));else if (\"object\" == _typeof(z)) {\n          if (k = {\n            scaleX: la(null != z.scaleX ? z.scaleX : z.scale, C.scaleX),\n            scaleY: la(null != z.scaleY ? z.scaleY : z.scale, C.scaleY),\n            scaleZ: la(z.scaleZ, C.scaleZ),\n            x: la(z.x, C.x),\n            y: la(z.y, C.y),\n            z: la(z.z, C.z),\n            xPercent: la(z.xPercent, C.xPercent),\n            yPercent: la(z.yPercent, C.yPercent),\n            perspective: la(z.transformPerspective, C.perspective)\n          }, o = z.directionalRotation, null != o) if (\"object\" == _typeof(o)) for (l in o) {\n            z[l] = o[l];\n          } else z.rotation = o;\n          \"string\" == typeof z.x && -1 !== z.x.indexOf(\"%\") && (k.x = 0, k.xPercent = la(z.x, C.xPercent)), \"string\" == typeof z.y && -1 !== z.y.indexOf(\"%\") && (k.y = 0, k.yPercent = la(z.y, C.yPercent)), k.rotation = ma(\"rotation\" in z ? z.rotation : \"shortRotation\" in z ? z.shortRotation + \"_short\" : C.rotation, C.rotation, \"rotation\", A), Ha && (k.rotationX = ma(\"rotationX\" in z ? z.rotationX : \"shortRotationX\" in z ? z.shortRotationX + \"_short\" : C.rotationX || 0, C.rotationX, \"rotationX\", A), k.rotationY = ma(\"rotationY\" in z ? z.rotationY : \"shortRotationY\" in z ? z.shortRotationY + \"_short\" : C.rotationY || 0, C.rotationY, \"rotationY\", A)), k.skewX = ma(z.skewX, C.skewX), k.skewY = ma(z.skewY, C.skewY);\n        }\n\n        for (Ha && null != z.force3D && (C.force3D = z.force3D, n = !0), m = C.force3D || C.z || C.rotationX || C.rotationY || k.z || k.rotationX || k.rotationY || k.perspective, m || null == z.scale || (k.scaleZ = 1); --y > -1;) {\n          u = Da[y], D = k[u] - C[u], (D > x || -x > D || null != z[u] || null != N[u]) && (n = !0, f = new va(C, u, C[u], D, f), u in A && (f.e = A[u]), f.xs0 = 0, f.plugin = h, d._overwriteProps.push(f.n));\n        }\n\n        return D = \"function\" == typeof z.transformOrigin ? z.transformOrigin(r, q) : z.transformOrigin, C.svg && (D || z.svgOrigin) && (p = C.xOffset, s = C.yOffset, Na(a, ja(D), k, z.svgOrigin, z.smoothOrigin), f = wa(C, \"xOrigin\", (v ? C : k).xOrigin, k.xOrigin, f, B), f = wa(C, \"yOrigin\", (v ? C : k).yOrigin, k.yOrigin, f, B), (p !== C.xOffset || s !== C.yOffset) && (f = wa(C, \"xOffset\", v ? p : C.xOffset, C.xOffset, f, B), f = wa(C, \"yOffset\", v ? s : C.yOffset, C.yOffset, f, B)), D = \"0px 0px\"), (D || Ha && m && C.zOrigin) && (Ea ? (n = !0, u = Ga, D || (D = (ba(a, u, e, !1, \"50% 50%\") + \"\").split(\" \"), D = D[0] + \" \" + D[1] + \" \" + C.zOrigin + \"px\"), D += \"\", f = new va(w, u, 0, 0, f, -1, B), f.b = w[u], f.plugin = h, Ha ? (l = C.zOrigin, D = D.split(\" \"), C.zOrigin = (D.length > 2 ? parseFloat(D[2]) : l) || 0, f.xs0 = f.e = D[0] + \" \" + (D[1] || \"50%\") + \" 0px\", f = new va(C, \"zOrigin\", 0, 0, f, -1, f.n), f.b = l, f.xs0 = f.e = C.zOrigin) : f.xs0 = f.e = D) : ja(D + \"\", C)), n && (d._transformType = C.svg && Ca || !m && 3 !== this._transformType ? 2 : 3), j && (i.scale = j), f;\n      },\n      allowFunc: !0,\n      prefix: !0\n    }), Aa(\"boxShadow\", {\n      defaultValue: \"0px 0px 0px 0px #999\",\n      prefix: !0,\n      color: !0,\n      multi: !0,\n      keyword: \"inset\"\n    }), Aa(\"clipPath\", {\n      defaultValue: \"inset(0%)\",\n      prefix: !0,\n      multi: !0,\n      formatter: sa(\"inset(0% 0% 0% 0%)\", !1, !0)\n    }), Aa(\"borderRadius\", {\n      defaultValue: \"0px\",\n      parser: function parser(a, b, c, f, g, h) {\n        b = this.format(b);\n        var i,\n            j,\n            k,\n            l,\n            m,\n            n,\n            o,\n            p,\n            q,\n            r,\n            s,\n            t,\n            u,\n            v,\n            w,\n            x,\n            y = [\"borderTopLeftRadius\", \"borderTopRightRadius\", \"borderBottomRightRadius\", \"borderBottomLeftRadius\"],\n            z = a.style;\n\n        for (q = parseFloat(a.offsetWidth), r = parseFloat(a.offsetHeight), i = b.split(\" \"), j = 0; j < y.length; j++) {\n          this.p.indexOf(\"border\") && (y[j] = $(y[j])), m = l = ba(a, y[j], e, !1, \"0px\"), -1 !== m.indexOf(\" \") && (l = m.split(\" \"), m = l[0], l = l[1]), n = k = i[j], o = parseFloat(m), t = m.substr((o + \"\").length), u = \"=\" === n.charAt(1), u ? (p = parseInt(n.charAt(0) + \"1\", 10), n = n.substr(2), p *= parseFloat(n), s = n.substr((p + \"\").length - (0 > p ? 1 : 0)) || \"\") : (p = parseFloat(n), s = n.substr((p + \"\").length)), \"\" === s && (s = d[c] || t), s !== t && (v = ca(a, \"borderLeft\", o, t), w = ca(a, \"borderTop\", o, t), \"%\" === s ? (m = v / q * 100 + \"%\", l = w / r * 100 + \"%\") : \"em\" === s ? (x = ca(a, \"borderLeft\", 1, \"em\"), m = v / x + \"em\", l = w / x + \"em\") : (m = v + \"px\", l = w + \"px\"), u && (n = parseFloat(m) + p + s, k = parseFloat(l) + p + s)), g = xa(z, y[j], m + \" \" + l, n + \" \" + k, !1, \"0px\", g);\n        }\n\n        return g;\n      },\n      prefix: !0,\n      formatter: sa(\"0px 0px 0px 0px\", !1, !0)\n    }), Aa(\"borderBottomLeftRadius,borderBottomRightRadius,borderTopLeftRadius,borderTopRightRadius\", {\n      defaultValue: \"0px\",\n      parser: function parser(a, b, c, d, f, g) {\n        return xa(a.style, c, this.format(ba(a, c, e, !1, \"0px 0px\")), this.format(b), !1, \"0px\", f);\n      },\n      prefix: !0,\n      formatter: sa(\"0px 0px\", !1, !0)\n    }), Aa(\"backgroundPosition\", {\n      defaultValue: \"0 0\",\n      parser: function parser(a, b, c, d, f, g) {\n        var h,\n            i,\n            j,\n            k,\n            l,\n            m,\n            n = \"background-position\",\n            o = e || aa(a, null),\n            q = this.format((o ? p ? o.getPropertyValue(n + \"-x\") + \" \" + o.getPropertyValue(n + \"-y\") : o.getPropertyValue(n) : a.currentStyle.backgroundPositionX + \" \" + a.currentStyle.backgroundPositionY) || \"0 0\"),\n            r = this.format(b);\n\n        if (-1 !== q.indexOf(\"%\") != (-1 !== r.indexOf(\"%\")) && r.split(\",\").length < 2 && (m = ba(a, \"backgroundImage\").replace(E, \"\"), m && \"none\" !== m)) {\n          for (h = q.split(\" \"), i = r.split(\" \"), S.setAttribute(\"src\", m), j = 2; --j > -1;) {\n            q = h[j], k = -1 !== q.indexOf(\"%\"), k !== (-1 !== i[j].indexOf(\"%\")) && (l = 0 === j ? a.offsetWidth - S.width : a.offsetHeight - S.height, h[j] = k ? parseFloat(q) / 100 * l + \"px\" : parseFloat(q) / l * 100 + \"%\");\n          }\n\n          q = h.join(\" \");\n        }\n\n        return this.parseComplex(a.style, q, r, f, g);\n      },\n      formatter: ja\n    }), Aa(\"backgroundSize\", {\n      defaultValue: \"0 0\",\n      formatter: function formatter(a) {\n        return a += \"\", \"co\" === a.substr(0, 2) ? a : ja(-1 === a.indexOf(\" \") ? a + \" \" + a : a);\n      }\n    }), Aa(\"perspective\", {\n      defaultValue: \"0px\",\n      prefix: !0\n    }), Aa(\"perspectiveOrigin\", {\n      defaultValue: \"50% 50%\",\n      prefix: !0\n    }), Aa(\"transformStyle\", {\n      prefix: !0\n    }), Aa(\"backfaceVisibility\", {\n      prefix: !0\n    }), Aa(\"userSelect\", {\n      prefix: !0\n    }), Aa(\"margin\", {\n      parser: ta(\"marginTop,marginRight,marginBottom,marginLeft\")\n    }), Aa(\"padding\", {\n      parser: ta(\"paddingTop,paddingRight,paddingBottom,paddingLeft\")\n    }), Aa(\"clip\", {\n      defaultValue: \"rect(0px,0px,0px,0px)\",\n      parser: function parser(a, b, c, d, f, g) {\n        var h, i, j;\n        return 9 > p ? (i = a.currentStyle, j = 8 > p ? \" \" : \",\", h = \"rect(\" + i.clipTop + j + i.clipRight + j + i.clipBottom + j + i.clipLeft + \")\", b = this.format(b).split(\",\").join(j)) : (h = this.format(ba(a, this.p, e, !1, this.dflt)), b = this.format(b)), this.parseComplex(a.style, h, b, f, g);\n      }\n    }), Aa(\"textShadow\", {\n      defaultValue: \"0px 0px 0px #999\",\n      color: !0,\n      multi: !0\n    }), Aa(\"autoRound,strictUnits\", {\n      parser: function parser(a, b, c, d, e) {\n        return e;\n      }\n    }), Aa(\"border\", {\n      defaultValue: \"0px solid #000\",\n      parser: function parser(a, b, c, d, f, g) {\n        var h = ba(a, \"borderTopWidth\", e, !1, \"0px\"),\n            i = this.format(b).split(\" \"),\n            j = i[0].replace(x, \"\");\n        return \"px\" !== j && (h = parseFloat(h) / ca(a, \"borderTopWidth\", 1, j) + j), this.parseComplex(a.style, this.format(h + \" \" + ba(a, \"borderTopStyle\", e, !1, \"solid\") + \" \" + ba(a, \"borderTopColor\", e, !1, \"#000\")), i.join(\" \"), f, g);\n      },\n      color: !0,\n      formatter: function formatter(a) {\n        var b = a.split(\" \");\n        return b[0] + \" \" + (b[1] || \"solid\") + \" \" + (a.match(ra) || [\"#000\"])[0];\n      }\n    }), Aa(\"borderWidth\", {\n      parser: ta(\"borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth\")\n    }), Aa(\"float,cssFloat,styleFloat\", {\n      parser: function parser(a, b, c, d, e, f) {\n        var g = a.style,\n            h = \"cssFloat\" in g ? \"cssFloat\" : \"styleFloat\";\n        return new va(g, h, 0, 0, e, -1, c, !1, 0, g[h], b);\n      }\n    });\n\n    var Wa = function Wa(a) {\n      var b,\n          c = this.t,\n          d = c.filter || ba(this.data, \"filter\") || \"\",\n          e = this.s + this.c * a | 0;\n      100 === e && (-1 === d.indexOf(\"atrix(\") && -1 === d.indexOf(\"radient(\") && -1 === d.indexOf(\"oader(\") ? (c.removeAttribute(\"filter\"), b = !ba(this.data, \"filter\")) : (c.filter = d.replace(A, \"\"), b = !0)), b || (this.xn1 && (c.filter = d = d || \"alpha(opacity=\" + e + \")\"), -1 === d.indexOf(\"pacity\") ? 0 === e && this.xn1 || (c.filter = d + \" alpha(opacity=\" + e + \")\") : c.filter = d.replace(y, \"opacity=\" + e));\n    };\n\n    Aa(\"opacity,alpha,autoAlpha\", {\n      defaultValue: \"1\",\n      parser: function parser(a, b, c, d, f, g) {\n        var h = parseFloat(ba(a, \"opacity\", e, !1, \"1\")),\n            i = a.style,\n            j = \"autoAlpha\" === c;\n        return \"string\" == typeof b && \"=\" === b.charAt(1) && (b = (\"-\" === b.charAt(0) ? -1 : 1) * parseFloat(b.substr(2)) + h), j && 1 === h && \"hidden\" === ba(a, \"visibility\", e) && 0 !== b && (h = 0), V ? f = new va(i, \"opacity\", h, b - h, f) : (f = new va(i, \"opacity\", 100 * h, 100 * (b - h), f), f.xn1 = j ? 1 : 0, i.zoom = 1, f.type = 2, f.b = \"alpha(opacity=\" + f.s + \")\", f.e = \"alpha(opacity=\" + (f.s + f.c) + \")\", f.data = a, f.plugin = g, f.setRatio = Wa), j && (f = new va(i, \"visibility\", 0, 0, f, -1, null, !1, 0, 0 !== h ? \"inherit\" : \"hidden\", 0 === b ? \"hidden\" : \"inherit\"), f.xs0 = \"inherit\", d._overwriteProps.push(f.n), d._overwriteProps.push(c)), f;\n      }\n    });\n\n    var Xa = function Xa(a, b) {\n      b && (a.removeProperty ? ((\"ms\" === b.substr(0, 2) || \"webkit\" === b.substr(0, 6)) && (b = \"-\" + b), a.removeProperty(b.replace(C, \"-$1\").toLowerCase())) : a.removeAttribute(b));\n    },\n        Ya = function Ya(a) {\n      if (this.t._gsClassPT = this, 1 === a || 0 === a) {\n        this.t.setAttribute(\"class\", 0 === a ? this.b : this.e);\n\n        for (var b = this.data, c = this.t.style; b;) {\n          b.v ? c[b.p] = b.v : Xa(c, b.p), b = b._next;\n        }\n\n        1 === a && this.t._gsClassPT === this && (this.t._gsClassPT = null);\n      } else this.t.getAttribute(\"class\") !== this.e && this.t.setAttribute(\"class\", this.e);\n    };\n\n    Aa(\"className\", {\n      parser: function parser(a, b, d, f, g, h, i) {\n        var j,\n            k,\n            l,\n            m,\n            n,\n            o = a.getAttribute(\"class\") || \"\",\n            p = a.style.cssText;\n\n        if (g = f._classNamePT = new va(a, d, 0, 0, g, 2), g.setRatio = Ya, g.pr = -11, c = !0, g.b = o, k = ea(a, e), l = a._gsClassPT) {\n          for (m = {}, n = l.data; n;) {\n            m[n.p] = 1, n = n._next;\n          }\n\n          l.setRatio(1);\n        }\n\n        return a._gsClassPT = g, g.e = \"=\" !== b.charAt(1) ? b : o.replace(new RegExp(\"(?:\\\\s|^)\" + b.substr(2) + \"(?![\\\\w-])\"), \"\") + (\"+\" === b.charAt(0) ? \" \" + b.substr(2) : \"\"), a.setAttribute(\"class\", g.e), j = fa(a, k, ea(a), i, m), a.setAttribute(\"class\", o), g.data = j.firstMPT, a.style.cssText !== p && (a.style.cssText = p), g = g.xfirst = f.parse(a, j.difs, g, h);\n      }\n    });\n\n    var Za = function Za(a) {\n      if ((1 === a || 0 === a) && this.data._totalTime === this.data._totalDuration && \"isFromStart\" !== this.data.data) {\n        var b,\n            c,\n            d,\n            e,\n            f,\n            g = this.t.style,\n            h = i.transform.parse;\n        if (\"all\" === this.e) g.cssText = \"\", e = !0;else for (b = this.e.split(\" \").join(\"\").split(\",\"), d = b.length; --d > -1;) {\n          c = b[d], i[c] && (i[c].parse === h ? e = !0 : c = \"transformOrigin\" === c ? Ga : i[c].p), Xa(g, c);\n        }\n        e && (Xa(g, Ea), f = this.t._gsTransform, f && (f.svg && (this.t.removeAttribute(\"data-svg-origin\"), this.t.removeAttribute(\"transform\")), delete this.t._gsTransform));\n      }\n    };\n\n    for (Aa(\"clearProps\", {\n      parser: function parser(a, b, d, e, f) {\n        return f = new va(a, d, 0, 0, f, 2), f.setRatio = Za, f.e = b, f.pr = -10, f.data = e._tween, c = !0, f;\n      }\n    }), j = \"bezier,throwProps,physicsProps,physics2D\".split(\",\"), ya = j.length; ya--;) {\n      Ba(j[ya]);\n    }\n\n    j = g.prototype, j._firstPT = j._lastParsedTransform = j._transform = null, j._onInitTween = function (a, b, h, j) {\n      if (!a.nodeType) return !1;\n      this._target = q = a, this._tween = h, this._vars = b, r = j, k = b.autoRound, c = !1, d = b.suffixMap || g.suffixMap, e = aa(a, \"\"), f = this._overwriteProps;\n      var n,\n          p,\n          s,\n          t,\n          u,\n          v,\n          w,\n          x,\n          y,\n          A = a.style;\n\n      if (l && \"\" === A.zIndex && (n = ba(a, \"zIndex\", e), (\"auto\" === n || \"\" === n) && this._addLazySet(A, \"zIndex\", 0)), \"string\" == typeof b && (t = A.cssText, n = ea(a, e), A.cssText = t + \";\" + b, n = fa(a, n, ea(a)).difs, !V && z.test(b) && (n.opacity = parseFloat(RegExp.$1)), b = n, A.cssText = t), b.className ? this._firstPT = p = i.className.parse(a, b.className, \"className\", this, null, null, b) : this._firstPT = p = this.parse(a, b, null), this._transformType) {\n        for (y = 3 === this._transformType, Ea ? m && (l = !0, \"\" === A.zIndex && (w = ba(a, \"zIndex\", e), (\"auto\" === w || \"\" === w) && this._addLazySet(A, \"zIndex\", 0)), o && this._addLazySet(A, \"WebkitBackfaceVisibility\", this._vars.WebkitBackfaceVisibility || (y ? \"visible\" : \"hidden\"))) : A.zoom = 1, s = p; s && s._next;) {\n          s = s._next;\n        }\n\n        x = new va(a, \"transform\", 0, 0, null, 2), this._linkCSSP(x, null, s), x.setRatio = Ea ? Va : Ua, x.data = this._transform || Ta(a, e, !0), x.tween = h, x.pr = -1, f.pop();\n      }\n\n      if (c) {\n        for (; p;) {\n          for (v = p._next, s = t; s && s.pr > p.pr;) {\n            s = s._next;\n          }\n\n          (p._prev = s ? s._prev : u) ? p._prev._next = p : t = p, (p._next = s) ? s._prev = p : u = p, p = v;\n        }\n\n        this._firstPT = t;\n      }\n\n      return !0;\n    }, j.parse = function (a, b, c, f) {\n      var g,\n          h,\n          j,\n          l,\n          m,\n          n,\n          o,\n          p,\n          s,\n          t,\n          u = a.style;\n\n      for (g in b) {\n        if (n = b[g], h = i[g], \"function\" != typeof n || h && h.allowFunc || (n = n(r, q)), h) c = h.parse(a, n, g, this, c, f, b);else {\n          if (\"--\" === g.substr(0, 2)) {\n            this._tween._propLookup[g] = this._addTween.call(this._tween, a.style, \"setProperty\", aa(a).getPropertyValue(g) + \"\", n + \"\", g, !1, g);\n            continue;\n          }\n\n          m = ba(a, g, e) + \"\", s = \"string\" == typeof n, \"color\" === g || \"fill\" === g || \"stroke\" === g || -1 !== g.indexOf(\"Color\") || s && B.test(n) ? (s || (n = pa(n), n = (n.length > 3 ? \"rgba(\" : \"rgb(\") + n.join(\",\") + \")\"), c = xa(u, g, m, n, !0, \"transparent\", c, 0, f)) : s && K.test(n) ? c = xa(u, g, m, n, !0, null, c, 0, f) : (j = parseFloat(m), o = j || 0 === j ? m.substr((j + \"\").length) : \"\", (\"\" === m || \"auto\" === m) && (\"width\" === g || \"height\" === g ? (j = ia(a, g, e), o = \"px\") : \"left\" === g || \"top\" === g ? (j = da(a, g, e), o = \"px\") : (j = \"opacity\" !== g ? 0 : 1, o = \"\")), t = s && \"=\" === n.charAt(1), t ? (l = parseInt(n.charAt(0) + \"1\", 10), n = n.substr(2), l *= parseFloat(n), p = n.replace(x, \"\")) : (l = parseFloat(n), p = s ? n.replace(x, \"\") : \"\"), \"\" === p && (p = g in d ? d[g] : o), n = l || 0 === l ? (t ? l + j : l) + p : b[g], o !== p && (\"\" !== p || \"lineHeight\" === g) && (l || 0 === l) && j && (j = ca(a, g, j, o), \"%\" === p ? (j /= ca(a, g, 100, \"%\") / 100, b.strictUnits !== !0 && (m = j + \"%\")) : \"em\" === p || \"rem\" === p || \"vw\" === p || \"vh\" === p ? j /= ca(a, g, 1, p) : \"px\" !== p && (l = ca(a, g, l, p), p = \"px\"), t && (l || 0 === l) && (n = l + j + p)), t && (l += j), !j && 0 !== j || !l && 0 !== l ? void 0 !== u[g] && (n || n + \"\" != \"NaN\" && null != n) ? (c = new va(u, g, l || j || 0, 0, c, -1, g, !1, 0, m, n), c.xs0 = \"none\" !== n || \"display\" !== g && -1 === g.indexOf(\"Style\") ? n : m) : X(\"invalid \" + g + \" tween value: \" + b[g]) : (c = new va(u, g, j, l - j, c, 0, g, k !== !1 && (\"px\" === p || \"zIndex\" === g), 0, m, n), c.xs0 = p));\n        }\n        f && c && !c.plugin && (c.plugin = f);\n      }\n\n      return c;\n    }, j.setRatio = function (a) {\n      var b,\n          c,\n          d,\n          e = this._firstPT,\n          f = 1e-6;\n      if (1 !== a || this._tween._time !== this._tween._duration && 0 !== this._tween._time) {\n        if (a || this._tween._time !== this._tween._duration && 0 !== this._tween._time || this._tween._rawPrevTime === -1e-6) for (; e;) {\n          if (b = e.c * a + e.s, e.r ? b = e.r(b) : f > b && b > -f && (b = 0), e.type) {\n            if (1 === e.type) {\n              if (d = e.l, 2 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2;else if (3 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2 + e.xn2 + e.xs3;else if (4 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2 + e.xn2 + e.xs3 + e.xn3 + e.xs4;else if (5 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2 + e.xn2 + e.xs3 + e.xn3 + e.xs4 + e.xn4 + e.xs5;else {\n                for (c = e.xs0 + b + e.xs1, d = 1; d < e.l; d++) {\n                  c += e[\"xn\" + d] + e[\"xs\" + (d + 1)];\n                }\n\n                e.t[e.p] = c;\n              }\n            } else -1 === e.type ? e.t[e.p] = e.xs0 : e.setRatio && e.setRatio(a);\n          } else e.t[e.p] = b + e.xs0;\n          e = e._next;\n        } else for (; e;) {\n          2 !== e.type ? e.t[e.p] = e.b : e.setRatio(a), e = e._next;\n        }\n      } else for (; e;) {\n        if (2 !== e.type) {\n          if (e.r && -1 !== e.type) {\n            if (b = e.r(e.s + e.c), e.type) {\n              if (1 === e.type) {\n                for (d = e.l, c = e.xs0 + b + e.xs1, d = 1; d < e.l; d++) {\n                  c += e[\"xn\" + d] + e[\"xs\" + (d + 1)];\n                }\n\n                e.t[e.p] = c;\n              }\n            } else e.t[e.p] = b + e.xs0;\n          } else e.t[e.p] = e.e;\n        } else e.setRatio(a);\n        e = e._next;\n      }\n    }, j._enableTransforms = function (a) {\n      this._transform = this._transform || Ta(this._target, e, !0), this._transformType = this._transform.svg && Ca || !a && 3 !== this._transformType ? 2 : 3;\n    };\n\n    var $a = function $a(a) {\n      this.t[this.p] = this.e, this.data._linkCSSP(this, this._next, null, !0);\n    };\n\n    j._addLazySet = function (a, b, c) {\n      var d = this._firstPT = new va(a, b, 0, 0, this._firstPT, 2);\n      d.e = c, d.setRatio = $a, d.data = this;\n    }, j._linkCSSP = function (a, b, c, d) {\n      return a && (b && (b._prev = a), a._next && (a._next._prev = a._prev), a._prev ? a._prev._next = a._next : this._firstPT === a && (this._firstPT = a._next, d = !0), c ? c._next = a : d || null !== this._firstPT || (this._firstPT = a), a._next = b, a._prev = c), a;\n    }, j._mod = function (a) {\n      for (var b = this._firstPT; b;) {\n        \"function\" == typeof a[b.p] && (b.r = a[b.p]), b = b._next;\n      }\n    }, j._kill = function (b) {\n      var c,\n          d,\n          e,\n          f = b;\n\n      if (b.autoAlpha || b.alpha) {\n        f = {};\n\n        for (d in b) {\n          f[d] = b[d];\n        }\n\n        f.opacity = 1, f.autoAlpha && (f.visibility = 1);\n      }\n\n      for (b.className && (c = this._classNamePT) && (e = c.xfirst, e && e._prev ? this._linkCSSP(e._prev, c._next, e._prev._prev) : e === this._firstPT && (this._firstPT = c._next), c._next && this._linkCSSP(c._next, c._next._next, e._prev), this._classNamePT = null), c = this._firstPT; c;) {\n        c.plugin && c.plugin !== d && c.plugin._kill && (c.plugin._kill(b), d = c.plugin), c = c._next;\n      }\n\n      return a.prototype._kill.call(this, f);\n    };\n\n    var _a = function _a(a, b, c) {\n      var d, e, f, g;\n      if (a.slice) for (e = a.length; --e > -1;) {\n        _a(a[e], b, c);\n      } else for (d = a.childNodes, e = d.length; --e > -1;) {\n        f = d[e], g = f.type, f.style && (b.push(ea(f)), c && c.push(f)), 1 !== g && 9 !== g && 11 !== g || !f.childNodes.length || _a(f, b, c);\n      }\n    };\n\n    return g.cascadeTo = function (a, c, d) {\n      var e,\n          f,\n          g,\n          h,\n          i = b.to(a, c, d),\n          j = [i],\n          k = [],\n          l = [],\n          m = [],\n          n = b._internals.reservedProps;\n\n      for (a = i._targets || i.target, _a(a, k, m), i.render(c, !0, !0), _a(a, l), i.render(0, !0, !0), i._enabled(!0), e = m.length; --e > -1;) {\n        if (f = fa(m[e], k[e], l[e]), f.firstMPT) {\n          f = f.difs;\n\n          for (g in d) {\n            n[g] && (f[g] = d[g]);\n          }\n\n          h = {};\n\n          for (g in f) {\n            h[g] = k[e][g];\n          }\n\n          j.push(b.fromTo(m[e], c, h, f));\n        }\n      }\n\n      return j;\n    }, a.activate([g]), g;\n  }, !0), function () {\n    var a = _gsScope._gsDefine.plugin({\n      propName: \"roundProps\",\n      version: \"1.7.0\",\n      priority: -1,\n      API: 2,\n      init: function init(a, b, c) {\n        return this._tween = c, !0;\n      }\n    }),\n        b = function b(a) {\n      var b = 1 > a ? Math.pow(10, (a + \"\").length - 2) : 1;\n      return function (c) {\n        return (Math.round(c / a) * a * b | 0) / b;\n      };\n    },\n        c = function c(a, b) {\n      for (; a;) {\n        a.f || a.blob || (a.m = b || Math.round), a = a._next;\n      }\n    },\n        d = a.prototype;\n\n    d._onInitAllProps = function () {\n      var a,\n          d,\n          e,\n          f,\n          g = this._tween,\n          h = g.vars.roundProps,\n          i = {},\n          j = g._propLookup.roundProps;\n      if (\"object\" != _typeof(h) || h.push) for (\"string\" == typeof h && (h = h.split(\",\")), e = h.length; --e > -1;) {\n        i[h[e]] = Math.round;\n      } else for (f in h) {\n        i[f] = b(h[f]);\n      }\n\n      for (f in i) {\n        for (a = g._firstPT; a;) {\n          d = a._next, a.pg ? a.t._mod(i) : a.n === f && (2 === a.f && a.t ? c(a.t._firstPT, i[f]) : (this._add(a.t, f, a.s, a.c, i[f]), d && (d._prev = a._prev), a._prev ? a._prev._next = d : g._firstPT === a && (g._firstPT = d), a._next = a._prev = null, g._propLookup[f] = j)), a = d;\n        }\n      }\n\n      return !1;\n    }, d._add = function (a, b, c, d, e) {\n      this._addTween(a, b, c, c + d, b, e || Math.round), this._overwriteProps.push(b);\n    };\n  }(), function () {\n    _gsScope._gsDefine.plugin({\n      propName: \"attr\",\n      API: 2,\n      version: \"0.6.1\",\n      init: function init(a, b, c, d) {\n        var e, f;\n        if (\"function\" != typeof a.setAttribute) return !1;\n\n        for (e in b) {\n          f = b[e], \"function\" == typeof f && (f = f(d, a)), this._addTween(a, \"setAttribute\", a.getAttribute(e) + \"\", f + \"\", e, !1, e), this._overwriteProps.push(e);\n        }\n\n        return !0;\n      }\n    });\n  }(), _gsScope._gsDefine.plugin({\n    propName: \"directionalRotation\",\n    version: \"0.3.1\",\n    API: 2,\n    init: function init(a, b, c, d) {\n      \"object\" != _typeof(b) && (b = {\n        rotation: b\n      }), this.finals = {};\n      var e,\n          f,\n          g,\n          h,\n          i,\n          j,\n          k = b.useRadians === !0 ? 2 * Math.PI : 360,\n          l = 1e-6;\n\n      for (e in b) {\n        \"useRadians\" !== e && (h = b[e], \"function\" == typeof h && (h = h(d, a)), j = (h + \"\").split(\"_\"), f = j[0], g = parseFloat(\"function\" != typeof a[e] ? a[e] : a[e.indexOf(\"set\") || \"function\" != typeof a[\"get\" + e.substr(3)] ? e : \"get\" + e.substr(3)]()), h = this.finals[e] = \"string\" == typeof f && \"=\" === f.charAt(1) ? g + parseInt(f.charAt(0) + \"1\", 10) * Number(f.substr(2)) : Number(f) || 0, i = h - g, j.length && (f = j.join(\"_\"), -1 !== f.indexOf(\"short\") && (i %= k, i !== i % (k / 2) && (i = 0 > i ? i + k : i - k)), -1 !== f.indexOf(\"_cw\") && 0 > i ? i = (i + 9999999999 * k) % k - (i / k | 0) * k : -1 !== f.indexOf(\"ccw\") && i > 0 && (i = (i - 9999999999 * k) % k - (i / k | 0) * k)), (i > l || -l > i) && (this._addTween(a, e, g, g + i, e), this._overwriteProps.push(e)));\n      }\n\n      return !0;\n    },\n    set: function set(a) {\n      var b;\n      if (1 !== a) this._super.setRatio.call(this, a);else for (b = this._firstPT; b;) {\n        b.f ? b.t[b.p](this.finals[b.p]) : b.t[b.p] = this.finals[b.p], b = b._next;\n      }\n    }\n  })._autoCSS = !0, _gsScope._gsDefine(\"easing.Back\", [\"easing.Ease\"], function (a) {\n    var b,\n        c,\n        d,\n        e,\n        f = _gsScope.GreenSockGlobals || _gsScope,\n        g = f.com.greensock,\n        h = 2 * Math.PI,\n        i = Math.PI / 2,\n        j = g._class,\n        k = function k(b, c) {\n      var d = j(\"easing.\" + b, function () {}, !0),\n          e = d.prototype = new a();\n      return e.constructor = d, e.getRatio = c, d;\n    },\n        l = a.register || function () {},\n        m = function m(a, b, c, d, e) {\n      var f = j(\"easing.\" + a, {\n        easeOut: new b(),\n        easeIn: new c(),\n        easeInOut: new d()\n      }, !0);\n      return l(f, a), f;\n    },\n        n = function n(a, b, c) {\n      this.t = a, this.v = b, c && (this.next = c, c.prev = this, this.c = c.v - b, this.gap = c.t - a);\n    },\n        o = function o(b, c) {\n      var d = j(\"easing.\" + b, function (a) {\n        this._p1 = a || 0 === a ? a : 1.70158, this._p2 = 1.525 * this._p1;\n      }, !0),\n          e = d.prototype = new a();\n      return e.constructor = d, e.getRatio = c, e.config = function (a) {\n        return new d(a);\n      }, d;\n    },\n        p = m(\"Back\", o(\"BackOut\", function (a) {\n      return (a -= 1) * a * ((this._p1 + 1) * a + this._p1) + 1;\n    }), o(\"BackIn\", function (a) {\n      return a * a * ((this._p1 + 1) * a - this._p1);\n    }), o(\"BackInOut\", function (a) {\n      return (a *= 2) < 1 ? .5 * a * a * ((this._p2 + 1) * a - this._p2) : .5 * ((a -= 2) * a * ((this._p2 + 1) * a + this._p2) + 2);\n    })),\n        q = j(\"easing.SlowMo\", function (a, b, c) {\n      b = b || 0 === b ? b : .7, null == a ? a = .7 : a > 1 && (a = 1), this._p = 1 !== a ? b : 0, this._p1 = (1 - a) / 2, this._p2 = a, this._p3 = this._p1 + this._p2, this._calcEnd = c === !0;\n    }, !0),\n        r = q.prototype = new a();\n\n    return r.constructor = q, r.getRatio = function (a) {\n      var b = a + (.5 - a) * this._p;\n      return a < this._p1 ? this._calcEnd ? 1 - (a = 1 - a / this._p1) * a : b - (a = 1 - a / this._p1) * a * a * a * b : a > this._p3 ? this._calcEnd ? 1 === a ? 0 : 1 - (a = (a - this._p3) / this._p1) * a : b + (a - b) * (a = (a - this._p3) / this._p1) * a * a * a : this._calcEnd ? 1 : b;\n    }, q.ease = new q(.7, .7), r.config = q.config = function (a, b, c) {\n      return new q(a, b, c);\n    }, b = j(\"easing.SteppedEase\", function (a, b) {\n      a = a || 1, this._p1 = 1 / a, this._p2 = a + (b ? 0 : 1), this._p3 = b ? 1 : 0;\n    }, !0), r = b.prototype = new a(), r.constructor = b, r.getRatio = function (a) {\n      return 0 > a ? a = 0 : a >= 1 && (a = .999999999), ((this._p2 * a | 0) + this._p3) * this._p1;\n    }, r.config = b.config = function (a, c) {\n      return new b(a, c);\n    }, c = j(\"easing.ExpoScaleEase\", function (a, b, c) {\n      this._p1 = Math.log(b / a), this._p2 = b - a, this._p3 = a, this._ease = c;\n    }, !0), r = c.prototype = new a(), r.constructor = c, r.getRatio = function (a) {\n      return this._ease && (a = this._ease.getRatio(a)), (this._p3 * Math.exp(this._p1 * a) - this._p3) / this._p2;\n    }, r.config = c.config = function (a, b, d) {\n      return new c(a, b, d);\n    }, d = j(\"easing.RoughEase\", function (b) {\n      b = b || {};\n\n      for (var c, d, e, f, g, h, i = b.taper || \"none\", j = [], k = 0, l = 0 | (b.points || 20), m = l, o = b.randomize !== !1, p = b.clamp === !0, q = b.template instanceof a ? b.template : null, r = \"number\" == typeof b.strength ? .4 * b.strength : .4; --m > -1;) {\n        c = o ? Math.random() : 1 / l * m, d = q ? q.getRatio(c) : c, \"none\" === i ? e = r : \"out\" === i ? (f = 1 - c, e = f * f * r) : \"in\" === i ? e = c * c * r : .5 > c ? (f = 2 * c, e = f * f * .5 * r) : (f = 2 * (1 - c), e = f * f * .5 * r), o ? d += Math.random() * e - .5 * e : m % 2 ? d += .5 * e : d -= .5 * e, p && (d > 1 ? d = 1 : 0 > d && (d = 0)), j[k++] = {\n          x: c,\n          y: d\n        };\n      }\n\n      for (j.sort(function (a, b) {\n        return a.x - b.x;\n      }), h = new n(1, 1, null), m = l; --m > -1;) {\n        g = j[m], h = new n(g.x, g.y, h);\n      }\n\n      this._prev = new n(0, 0, 0 !== h.t ? h : h.next);\n    }, !0), r = d.prototype = new a(), r.constructor = d, r.getRatio = function (a) {\n      var b = this._prev;\n\n      if (a > b.t) {\n        for (; b.next && a >= b.t;) {\n          b = b.next;\n        }\n\n        b = b.prev;\n      } else for (; b.prev && a <= b.t;) {\n        b = b.prev;\n      }\n\n      return this._prev = b, b.v + (a - b.t) / b.gap * b.c;\n    }, r.config = function (a) {\n      return new d(a);\n    }, d.ease = new d(), m(\"Bounce\", k(\"BounceOut\", function (a) {\n      return 1 / 2.75 > a ? 7.5625 * a * a : 2 / 2.75 > a ? 7.5625 * (a -= 1.5 / 2.75) * a + .75 : 2.5 / 2.75 > a ? 7.5625 * (a -= 2.25 / 2.75) * a + .9375 : 7.5625 * (a -= 2.625 / 2.75) * a + .984375;\n    }), k(\"BounceIn\", function (a) {\n      return (a = 1 - a) < 1 / 2.75 ? 1 - 7.5625 * a * a : 2 / 2.75 > a ? 1 - (7.5625 * (a -= 1.5 / 2.75) * a + .75) : 2.5 / 2.75 > a ? 1 - (7.5625 * (a -= 2.25 / 2.75) * a + .9375) : 1 - (7.5625 * (a -= 2.625 / 2.75) * a + .984375);\n    }), k(\"BounceInOut\", function (a) {\n      var b = .5 > a;\n      return a = b ? 1 - 2 * a : 2 * a - 1, a = 1 / 2.75 > a ? 7.5625 * a * a : 2 / 2.75 > a ? 7.5625 * (a -= 1.5 / 2.75) * a + .75 : 2.5 / 2.75 > a ? 7.5625 * (a -= 2.25 / 2.75) * a + .9375 : 7.5625 * (a -= 2.625 / 2.75) * a + .984375, b ? .5 * (1 - a) : .5 * a + .5;\n    })), m(\"Circ\", k(\"CircOut\", function (a) {\n      return Math.sqrt(1 - (a -= 1) * a);\n    }), k(\"CircIn\", function (a) {\n      return -(Math.sqrt(1 - a * a) - 1);\n    }), k(\"CircInOut\", function (a) {\n      return (a *= 2) < 1 ? -.5 * (Math.sqrt(1 - a * a) - 1) : .5 * (Math.sqrt(1 - (a -= 2) * a) + 1);\n    })), e = function e(b, c, d) {\n      var e = j(\"easing.\" + b, function (a, b) {\n        this._p1 = a >= 1 ? a : 1, this._p2 = (b || d) / (1 > a ? a : 1), this._p3 = this._p2 / h * (Math.asin(1 / this._p1) || 0), this._p2 = h / this._p2;\n      }, !0),\n          f = e.prototype = new a();\n      return f.constructor = e, f.getRatio = c, f.config = function (a, b) {\n        return new e(a, b);\n      }, e;\n    }, m(\"Elastic\", e(\"ElasticOut\", function (a) {\n      return this._p1 * Math.pow(2, -10 * a) * Math.sin((a - this._p3) * this._p2) + 1;\n    }, .3), e(\"ElasticIn\", function (a) {\n      return -(this._p1 * Math.pow(2, 10 * (a -= 1)) * Math.sin((a - this._p3) * this._p2));\n    }, .3), e(\"ElasticInOut\", function (a) {\n      return (a *= 2) < 1 ? -.5 * (this._p1 * Math.pow(2, 10 * (a -= 1)) * Math.sin((a - this._p3) * this._p2)) : this._p1 * Math.pow(2, -10 * (a -= 1)) * Math.sin((a - this._p3) * this._p2) * .5 + 1;\n    }, .45)), m(\"Expo\", k(\"ExpoOut\", function (a) {\n      return 1 - Math.pow(2, -10 * a);\n    }), k(\"ExpoIn\", function (a) {\n      return Math.pow(2, 10 * (a - 1)) - .001;\n    }), k(\"ExpoInOut\", function (a) {\n      return (a *= 2) < 1 ? .5 * Math.pow(2, 10 * (a - 1)) : .5 * (2 - Math.pow(2, -10 * (a - 1)));\n    })), m(\"Sine\", k(\"SineOut\", function (a) {\n      return Math.sin(a * i);\n    }), k(\"SineIn\", function (a) {\n      return -Math.cos(a * i) + 1;\n    }), k(\"SineInOut\", function (a) {\n      return -.5 * (Math.cos(Math.PI * a) - 1);\n    })), j(\"easing.EaseLookup\", {\n      find: function find(b) {\n        return a.map[b];\n      }\n    }, !0), l(f.SlowMo, \"SlowMo\", \"ease,\"), l(d, \"RoughEase\", \"ease,\"), l(b, \"SteppedEase\", \"ease,\"), p;\n  }, !0);\n}), _gsScope._gsDefine && _gsScope._gsQueue.pop()(), function (a, b) {\n  \"use strict\";\n\n  var c = {},\n      d = a.document,\n      e = a.GreenSockGlobals = a.GreenSockGlobals || a,\n      f = e[b];\n  if (f) return \"undefined\" != typeof module && module.exports && (module.exports = f), f;\n\n  var g,\n      h,\n      i,\n      j,\n      k,\n      l = function l(a) {\n    var b,\n        c = a.split(\".\"),\n        d = e;\n\n    for (b = 0; b < c.length; b++) {\n      d[c[b]] = d = d[c[b]] || {};\n    }\n\n    return d;\n  },\n      m = l(\"com.greensock\"),\n      n = 1e-8,\n      o = function o(a) {\n    var b,\n        c = [],\n        d = a.length;\n\n    for (b = 0; b !== d; c.push(a[b++])) {\n      ;\n    }\n\n    return c;\n  },\n      p = function p() {},\n      q = function () {\n    var a = Object.prototype.toString,\n        b = a.call([]);\n    return function (c) {\n      return null != c && (c instanceof Array || \"object\" == _typeof(c) && !!c.push && a.call(c) === b);\n    };\n  }(),\n      r = {},\n      s = function s(d, f, g, h) {\n    this.sc = r[d] ? r[d].sc : [], r[d] = this, this.gsClass = null, this.func = g;\n    var i = [];\n    this.check = function (j) {\n      for (var k, m, n, o, p = f.length, q = p; --p > -1;) {\n        (k = r[f[p]] || new s(f[p], [])).gsClass ? (i[p] = k.gsClass, q--) : j && k.sc.push(this);\n      }\n\n      if (0 === q && g) {\n        if (m = (\"com.greensock.\" + d).split(\".\"), n = m.pop(), o = l(m.join(\".\"))[n] = this.gsClass = g.apply(g, i), h) if (e[n] = c[n] = o, \"undefined\" != typeof module && module.exports) {\n          if (d === b) {\n            module.exports = c[b] = o;\n\n            for (p in c) {\n              o[p] = c[p];\n            }\n          } else c[b] && (c[b][n] = o);\n        } else \"function\" == typeof define && define.amd && define((a.GreenSockAMDPath ? a.GreenSockAMDPath + \"/\" : \"\") + d.split(\".\").pop(), [], function () {\n          return o;\n        });\n\n        for (p = 0; p < this.sc.length; p++) {\n          this.sc[p].check();\n        }\n      }\n    }, this.check(!0);\n  },\n      t = a._gsDefine = function (a, b, c, d) {\n    return new s(a, b, c, d);\n  },\n      u = m._class = function (a, b, c) {\n    return b = b || function () {}, t(a, [], function () {\n      return b;\n    }, c), b;\n  };\n\n  t.globals = e;\n\n  var v = [0, 0, 1, 1],\n      w = u(\"easing.Ease\", function (a, b, c, d) {\n    this._func = a, this._type = c || 0, this._power = d || 0, this._params = b ? v.concat(b) : v;\n  }, !0),\n      x = w.map = {},\n      y = w.register = function (a, b, c, d) {\n    for (var e, f, g, h, i = b.split(\",\"), j = i.length, k = (c || \"easeIn,easeOut,easeInOut\").split(\",\"); --j > -1;) {\n      for (f = i[j], e = d ? u(\"easing.\" + f, null, !0) : m.easing[f] || {}, g = k.length; --g > -1;) {\n        h = k[g], x[f + \".\" + h] = x[h + f] = e[h] = a.getRatio ? a : a[h] || new a();\n      }\n    }\n  };\n\n  for (i = w.prototype, i._calcEnd = !1, i.getRatio = function (a) {\n    if (this._func) return this._params[0] = a, this._func.apply(null, this._params);\n    var b = this._type,\n        c = this._power,\n        d = 1 === b ? 1 - a : 2 === b ? a : .5 > a ? 2 * a : 2 * (1 - a);\n    return 1 === c ? d *= d : 2 === c ? d *= d * d : 3 === c ? d *= d * d * d : 4 === c && (d *= d * d * d * d), 1 === b ? 1 - d : 2 === b ? d : .5 > a ? d / 2 : 1 - d / 2;\n  }, g = [\"Linear\", \"Quad\", \"Cubic\", \"Quart\", \"Quint,Strong\"], h = g.length; --h > -1;) {\n    i = g[h] + \",Power\" + h, y(new w(null, null, 1, h), i, \"easeOut\", !0), y(new w(null, null, 2, h), i, \"easeIn\" + (0 === h ? \",easeNone\" : \"\")), y(new w(null, null, 3, h), i, \"easeInOut\");\n  }\n\n  x.linear = m.easing.Linear.easeIn, x.swing = m.easing.Quad.easeInOut;\n  var z = u(\"events.EventDispatcher\", function (a) {\n    this._listeners = {}, this._eventTarget = a || this;\n  });\n  i = z.prototype, i.addEventListener = function (a, b, c, d, e) {\n    e = e || 0;\n    var f,\n        g,\n        h = this._listeners[a],\n        i = 0;\n\n    for (this !== j || k || j.wake(), null == h && (this._listeners[a] = h = []), g = h.length; --g > -1;) {\n      f = h[g], f.c === b && f.s === c ? h.splice(g, 1) : 0 === i && f.pr < e && (i = g + 1);\n    }\n\n    h.splice(i, 0, {\n      c: b,\n      s: c,\n      up: d,\n      pr: e\n    });\n  }, i.removeEventListener = function (a, b) {\n    var c,\n        d = this._listeners[a];\n    if (d) for (c = d.length; --c > -1;) {\n      if (d[c].c === b) return void d.splice(c, 1);\n    }\n  }, i.dispatchEvent = function (a) {\n    var b,\n        c,\n        d,\n        e = this._listeners[a];\n    if (e) for (b = e.length, b > 1 && (e = e.slice(0)), c = this._eventTarget; --b > -1;) {\n      d = e[b], d && (d.up ? d.c.call(d.s || c, {\n        type: a,\n        target: c\n      }) : d.c.call(d.s || c));\n    }\n  };\n\n  var A = a.requestAnimationFrame,\n      B = a.cancelAnimationFrame,\n      C = Date.now || function () {\n    return new Date().getTime();\n  },\n      D = C();\n\n  for (g = [\"ms\", \"moz\", \"webkit\", \"o\"], h = g.length; --h > -1 && !A;) {\n    A = a[g[h] + \"RequestAnimationFrame\"], B = a[g[h] + \"CancelAnimationFrame\"] || a[g[h] + \"CancelRequestAnimationFrame\"];\n  }\n\n  u(\"Ticker\", function (a, b) {\n    var c,\n        e,\n        f,\n        g,\n        h,\n        i = this,\n        l = C(),\n        m = b !== !1 && A ? \"auto\" : !1,\n        o = 500,\n        q = 33,\n        r = \"tick\",\n        s = function s(a) {\n      var b,\n          d,\n          j = C() - D;\n      j > o && (l += j - q), D += j, i.time = (D - l) / 1e3, b = i.time - h, (!c || b > 0 || a === !0) && (i.frame++, h += b + (b >= g ? .004 : g - b), d = !0), a !== !0 && (f = e(s)), d && i.dispatchEvent(r);\n    };\n\n    z.call(i), i.time = i.frame = 0, i.tick = function () {\n      s(!0);\n    }, i.lagSmoothing = function (a, b) {\n      return arguments.length ? (o = a || 1 / n, void (q = Math.min(b, o, 0))) : 1 / n > o;\n    }, i.sleep = function () {\n      null != f && (m && B ? B(f) : clearTimeout(f), e = p, f = null, i === j && (k = !1));\n    }, i.wake = function (a) {\n      null !== f ? i.sleep() : a ? l += -D + (D = C()) : i.frame > 10 && (D = C() - o + 5), e = 0 === c ? p : m && A ? A : function (a) {\n        return setTimeout(a, 1e3 * (h - i.time) + 1 | 0);\n      }, i === j && (k = !0), s(2);\n    }, i.fps = function (a) {\n      return arguments.length ? (c = a, g = 1 / (c || 60), h = this.time + g, void i.wake()) : c;\n    }, i.useRAF = function (a) {\n      return arguments.length ? (i.sleep(), m = a, void i.fps(c)) : m;\n    }, i.fps(a), setTimeout(function () {\n      \"auto\" === m && i.frame < 5 && \"hidden\" !== (d || {}).visibilityState && i.useRAF(!1);\n    }, 1500);\n  }), i = m.Ticker.prototype = new m.events.EventDispatcher(), i.constructor = m.Ticker;\n  var E = u(\"core.Animation\", function (a, b) {\n    if (this.vars = b = b || {}, this._duration = this._totalDuration = a || 0, this._delay = Number(b.delay) || 0, this._timeScale = 1, this._active = !!b.immediateRender, this.data = b.data, this._reversed = !!b.reversed, Z) {\n      k || j.wake();\n      var c = this.vars.useFrames ? Y : Z;\n      c.add(this, c._time), this.vars.paused && this.paused(!0);\n    }\n  });\n  j = E.ticker = new m.Ticker(), i = E.prototype, i._dirty = i._gc = i._initted = i._paused = !1, i._totalTime = i._time = 0, i._rawPrevTime = -1, i._next = i._last = i._onUpdate = i._timeline = i.timeline = null, i._paused = !1;\n\n  var F = function F() {\n    k && C() - D > 2e3 && (\"hidden\" !== (d || {}).visibilityState || !j.lagSmoothing()) && j.wake();\n    var a = setTimeout(F, 2e3);\n    a.unref && a.unref();\n  };\n\n  F(), i.play = function (a, b) {\n    return null != a && this.seek(a, b), this.reversed(!1).paused(!1);\n  }, i.pause = function (a, b) {\n    return null != a && this.seek(a, b), this.paused(!0);\n  }, i.resume = function (a, b) {\n    return null != a && this.seek(a, b), this.paused(!1);\n  }, i.seek = function (a, b) {\n    return this.totalTime(Number(a), b !== !1);\n  }, i.restart = function (a, b) {\n    return this.reversed(!1).paused(!1).totalTime(a ? -this._delay : 0, b !== !1, !0);\n  }, i.reverse = function (a, b) {\n    return null != a && this.seek(a || this.totalDuration(), b), this.reversed(!0).paused(!1);\n  }, i.render = function (a, b, c) {}, i.invalidate = function () {\n    return this._time = this._totalTime = 0, this._initted = this._gc = !1, this._rawPrevTime = -1, (this._gc || !this.timeline) && this._enabled(!0), this;\n  }, i.isActive = function () {\n    var a,\n        b = this._timeline,\n        c = this._startTime;\n    return !b || !this._gc && !this._paused && b.isActive() && (a = b.rawTime(!0)) >= c && a < c + this.totalDuration() / this._timeScale - n;\n  }, i._enabled = function (a, b) {\n    return k || j.wake(), this._gc = !a, this._active = this.isActive(), b !== !0 && (a && !this.timeline ? this._timeline.add(this, this._startTime - this._delay) : !a && this.timeline && this._timeline._remove(this, !0)), !1;\n  }, i._kill = function (a, b) {\n    return this._enabled(!1, !1);\n  }, i.kill = function (a, b) {\n    return this._kill(a, b), this;\n  }, i._uncache = function (a) {\n    for (var b = a ? this : this.timeline; b;) {\n      b._dirty = !0, b = b.timeline;\n    }\n\n    return this;\n  }, i._swapSelfInParams = function (a) {\n    for (var b = a.length, c = a.concat(); --b > -1;) {\n      \"{self}\" === a[b] && (c[b] = this);\n    }\n\n    return c;\n  }, i._callback = function (a) {\n    var b = this.vars,\n        c = b[a],\n        d = b[a + \"Params\"],\n        e = b[a + \"Scope\"] || b.callbackScope || this,\n        f = d ? d.length : 0;\n\n    switch (f) {\n      case 0:\n        c.call(e);\n        break;\n\n      case 1:\n        c.call(e, d[0]);\n        break;\n\n      case 2:\n        c.call(e, d[0], d[1]);\n        break;\n\n      default:\n        c.apply(e, d);\n    }\n  }, i.eventCallback = function (a, b, c, d) {\n    if (\"on\" === (a || \"\").substr(0, 2)) {\n      var e = this.vars;\n      if (1 === arguments.length) return e[a];\n      null == b ? delete e[a] : (e[a] = b, e[a + \"Params\"] = q(c) && -1 !== c.join(\"\").indexOf(\"{self}\") ? this._swapSelfInParams(c) : c, e[a + \"Scope\"] = d), \"onUpdate\" === a && (this._onUpdate = b);\n    }\n\n    return this;\n  }, i.delay = function (a) {\n    return arguments.length ? (this._timeline.smoothChildTiming && this.startTime(this._startTime + a - this._delay), this._delay = a, this) : this._delay;\n  }, i.duration = function (a) {\n    return arguments.length ? (this._duration = this._totalDuration = a, this._uncache(!0), this._timeline.smoothChildTiming && this._time > 0 && this._time < this._duration && 0 !== a && this.totalTime(this._totalTime * (a / this._duration), !0), this) : (this._dirty = !1, this._duration);\n  }, i.totalDuration = function (a) {\n    return this._dirty = !1, arguments.length ? this.duration(a) : this._totalDuration;\n  }, i.time = function (a, b) {\n    return arguments.length ? (this._dirty && this.totalDuration(), this.totalTime(a > this._duration ? this._duration : a, b)) : this._time;\n  }, i.totalTime = function (a, b, c) {\n    if (k || j.wake(), !arguments.length) return this._totalTime;\n\n    if (this._timeline) {\n      if (0 > a && !c && (a += this.totalDuration()), this._timeline.smoothChildTiming) {\n        this._dirty && this.totalDuration();\n        var d = this._totalDuration,\n            e = this._timeline;\n        if (a > d && !c && (a = d), this._startTime = (this._paused ? this._pauseTime : e._time) - (this._reversed ? d - a : a) / this._timeScale, e._dirty || this._uncache(!1), e._timeline) for (; e._timeline;) {\n          e._timeline._time !== (e._startTime + e._totalTime) / e._timeScale && e.totalTime(e._totalTime, !0), e = e._timeline;\n        }\n      }\n\n      this._gc && this._enabled(!0, !1), (this._totalTime !== a || 0 === this._duration) && (K.length && _(), this.render(a, b, !1), K.length && _());\n    }\n\n    return this;\n  }, i.progress = i.totalProgress = function (a, b) {\n    var c = this.duration();\n    return arguments.length ? this.totalTime(c * a, b) : c ? this._time / c : this.ratio;\n  }, i.startTime = function (a) {\n    return arguments.length ? (a !== this._startTime && (this._startTime = a, this.timeline && this.timeline._sortChildren && this.timeline.add(this, a - this._delay)), this) : this._startTime;\n  }, i.endTime = function (a) {\n    return this._startTime + (0 != a ? this.totalDuration() : this.duration()) / this._timeScale;\n  }, i.timeScale = function (a) {\n    if (!arguments.length) return this._timeScale;\n    var b, c;\n\n    for (a = a || n, this._timeline && this._timeline.smoothChildTiming && (b = this._pauseTime, c = b || 0 === b ? b : this._timeline.totalTime(), this._startTime = c - (c - this._startTime) * this._timeScale / a), this._timeScale = a, c = this.timeline; c && c.timeline;) {\n      c._dirty = !0, c.totalDuration(), c = c.timeline;\n    }\n\n    return this;\n  }, i.reversed = function (a) {\n    return arguments.length ? (a != this._reversed && (this._reversed = a, this.totalTime(this._timeline && !this._timeline.smoothChildTiming ? this.totalDuration() - this._totalTime : this._totalTime, !0)), this) : this._reversed;\n  }, i.paused = function (a) {\n    if (!arguments.length) return this._paused;\n    var b,\n        c,\n        d = this._timeline;\n    return a != this._paused && d && (k || a || j.wake(), b = d.rawTime(), c = b - this._pauseTime, !a && d.smoothChildTiming && (this._startTime += c, this._uncache(!1)), this._pauseTime = a ? b : null, this._paused = a, this._active = this.isActive(), !a && 0 !== c && this._initted && this.duration() && (b = d.smoothChildTiming ? this._totalTime : (b - this._startTime) / this._timeScale, this.render(b, b === this._totalTime, !0))), this._gc && !a && this._enabled(!0, !1), this;\n  };\n  var G = u(\"core.SimpleTimeline\", function (a) {\n    E.call(this, 0, a), this.autoRemoveChildren = this.smoothChildTiming = !0;\n  });\n  i = G.prototype = new E(), i.constructor = G, i.kill()._gc = !1, i._first = i._last = i._recent = null, i._sortChildren = !1, i.add = i.insert = function (a, b, c, d) {\n    var e, f;\n    if (a._startTime = Number(b || 0) + a._delay, a._paused && this !== a._timeline && (a._pauseTime = this.rawTime() - (a._timeline.rawTime() - a._pauseTime)), a.timeline && a.timeline._remove(a, !0), a.timeline = a._timeline = this, a._gc && a._enabled(!0, !0), e = this._last, this._sortChildren) for (f = a._startTime; e && e._startTime > f;) {\n      e = e._prev;\n    }\n    return e ? (a._next = e._next, e._next = a) : (a._next = this._first, this._first = a), a._next ? a._next._prev = a : this._last = a, a._prev = e, this._recent = a, this._timeline && this._uncache(!0), this;\n  }, i._remove = function (a, b) {\n    return a.timeline === this && (b || a._enabled(!1, !0), a._prev ? a._prev._next = a._next : this._first === a && (this._first = a._next), a._next ? a._next._prev = a._prev : this._last === a && (this._last = a._prev), a._next = a._prev = a.timeline = null, a === this._recent && (this._recent = this._last), this._timeline && this._uncache(!0)), this;\n  }, i.render = function (a, b, c) {\n    var d,\n        e = this._first;\n\n    for (this._totalTime = this._time = this._rawPrevTime = a; e;) {\n      d = e._next, (e._active || a >= e._startTime && !e._paused && !e._gc) && (e._reversed ? e.render((e._dirty ? e.totalDuration() : e._totalDuration) - (a - e._startTime) * e._timeScale, b, c) : e.render((a - e._startTime) * e._timeScale, b, c)), e = d;\n    }\n  }, i.rawTime = function () {\n    return k || j.wake(), this._totalTime;\n  };\n\n  var H = u(\"TweenLite\", function (b, c, d) {\n    if (E.call(this, c, d), this.render = H.prototype.render, null == b) throw \"Cannot tween a null target.\";\n    this.target = b = \"string\" != typeof b ? b : H.selector(b) || b;\n    var e,\n        f,\n        g,\n        h = b.jquery || b.length && b !== a && b[0] && (b[0] === a || b[0].nodeType && b[0].style && !b.nodeType),\n        i = this.vars.overwrite;\n    if (this._overwrite = i = null == i ? X[H.defaultOverwrite] : \"number\" == typeof i ? i >> 0 : X[i], (h || b instanceof Array || b.push && q(b)) && \"number\" != typeof b[0]) for (this._targets = g = o(b), this._propLookup = [], this._siblings = [], e = 0; e < g.length; e++) {\n      f = g[e], f ? \"string\" != typeof f ? f.length && f !== a && f[0] && (f[0] === a || f[0].nodeType && f[0].style && !f.nodeType) ? (g.splice(e--, 1), this._targets = g = g.concat(o(f))) : (this._siblings[e] = aa(f, this, !1), 1 === i && this._siblings[e].length > 1 && ca(f, this, null, 1, this._siblings[e])) : (f = g[e--] = H.selector(f), \"string\" == typeof f && g.splice(e + 1, 1)) : g.splice(e--, 1);\n    } else this._propLookup = {}, this._siblings = aa(b, this, !1), 1 === i && this._siblings.length > 1 && ca(b, this, null, 1, this._siblings);\n    (this.vars.immediateRender || 0 === c && 0 === this._delay && this.vars.immediateRender !== !1) && (this._time = -n, this.render(Math.min(0, -this._delay)));\n  }, !0),\n      I = function I(b) {\n    return b && b.length && b !== a && b[0] && (b[0] === a || b[0].nodeType && b[0].style && !b.nodeType);\n  },\n      J = function J(a, b) {\n    var c,\n        d = {};\n\n    for (c in a) {\n      W[c] || c in b && \"transform\" !== c && \"x\" !== c && \"y\" !== c && \"width\" !== c && \"height\" !== c && \"className\" !== c && \"border\" !== c || !(!T[c] || T[c] && T[c]._autoCSS) || (d[c] = a[c], delete a[c]);\n    }\n\n    a.css = d;\n  };\n\n  i = H.prototype = new E(), i.constructor = H, i.kill()._gc = !1, i.ratio = 0, i._firstPT = i._targets = i._overwrittenProps = i._startAt = null, i._notifyPluginsOfEnabled = i._lazy = !1, H.version = \"2.1.3\", H.defaultEase = i._ease = new w(null, null, 1, 1), H.defaultOverwrite = \"auto\", H.ticker = j, H.autoSleep = 120, H.lagSmoothing = function (a, b) {\n    j.lagSmoothing(a, b);\n  }, H.selector = a.$ || a.jQuery || function (b) {\n    var c = a.$ || a.jQuery;\n    return c ? (H.selector = c, c(b)) : (d || (d = a.document), d ? d.querySelectorAll ? d.querySelectorAll(b) : d.getElementById(\"#\" === b.charAt(0) ? b.substr(1) : b) : b);\n  };\n\n  var K = [],\n      L = {},\n      M = /(?:(-|-=|\\+=)?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[0-9]/gi,\n      N = /[\\+-]=-?[\\.\\d]/,\n      O = function O(a) {\n    for (var b, c = this._firstPT, d = 1e-6; c;) {\n      b = c.blob ? 1 === a && null != this.end ? this.end : a ? this.join(\"\") : this.start : c.c * a + c.s, c.m ? b = c.m.call(this._tween, b, this._target || c.t, this._tween) : d > b && b > -d && !c.blob && (b = 0), c.f ? c.fp ? c.t[c.p](c.fp, b) : c.t[c.p](b) : c.t[c.p] = b, c = c._next;\n    }\n  },\n      P = function P(a) {\n    return (1e3 * a | 0) / 1e3 + \"\";\n  },\n      Q = function Q(a, b, c, d) {\n    var e,\n        f,\n        g,\n        h,\n        i,\n        j,\n        k,\n        l = [],\n        m = 0,\n        n = \"\",\n        o = 0;\n\n    for (l.start = a, l.end = b, a = l[0] = a + \"\", b = l[1] = b + \"\", c && (c(l), a = l[0], b = l[1]), l.length = 0, e = a.match(M) || [], f = b.match(M) || [], d && (d._next = null, d.blob = 1, l._firstPT = l._applyPT = d), i = f.length, h = 0; i > h; h++) {\n      k = f[h], j = b.substr(m, b.indexOf(k, m) - m), n += j || !h ? j : \",\", m += j.length, o ? o = (o + 1) % 5 : \"rgba(\" === j.substr(-5) && (o = 1), k === e[h] || e.length <= h ? n += k : (n && (l.push(n), n = \"\"), g = parseFloat(e[h]), l.push(g), l._firstPT = {\n        _next: l._firstPT,\n        t: l,\n        p: l.length - 1,\n        s: g,\n        c: (\"=\" === k.charAt(1) ? parseInt(k.charAt(0) + \"1\", 10) * parseFloat(k.substr(2)) : parseFloat(k) - g) || 0,\n        f: 0,\n        m: o && 4 > o ? Math.round : P\n      }), m += k.length;\n    }\n\n    return n += b.substr(m), n && l.push(n), l.setRatio = O, N.test(b) && (l.end = null), l;\n  },\n      R = function R(a, b, c, d, e, f, g, h, i) {\n    \"function\" == typeof d && (d = d(i || 0, a));\n\n    var j,\n        k = _typeof(a[b]),\n        l = \"function\" !== k ? \"\" : b.indexOf(\"set\") || \"function\" != typeof a[\"get\" + b.substr(3)] ? b : \"get\" + b.substr(3),\n        m = \"get\" !== c ? c : l ? g ? a[l](g) : a[l]() : a[b],\n        n = \"string\" == typeof d && \"=\" === d.charAt(1),\n        o = {\n      t: a,\n      p: b,\n      s: m,\n      f: \"function\" === k,\n      pg: 0,\n      n: e || b,\n      m: f ? \"function\" == typeof f ? f : Math.round : 0,\n      pr: 0,\n      c: n ? parseInt(d.charAt(0) + \"1\", 10) * parseFloat(d.substr(2)) : parseFloat(d) - m || 0\n    };\n\n    return (\"number\" != typeof m || \"number\" != typeof d && !n) && (g || isNaN(m) || !n && isNaN(d) || \"boolean\" == typeof m || \"boolean\" == typeof d ? (o.fp = g, j = Q(m, n ? parseFloat(o.s) + o.c + (o.s + \"\").replace(/[0-9\\-\\.]/g, \"\") : d, h || H.defaultStringFilter, o), o = {\n      t: j,\n      p: \"setRatio\",\n      s: 0,\n      c: 1,\n      f: 2,\n      pg: 0,\n      n: e || b,\n      pr: 0,\n      m: 0\n    }) : (o.s = parseFloat(m), n || (o.c = parseFloat(d) - o.s || 0))), o.c ? ((o._next = this._firstPT) && (o._next._prev = o), this._firstPT = o, o) : void 0;\n  },\n      S = H._internals = {\n    isArray: q,\n    isSelector: I,\n    lazyTweens: K,\n    blobDif: Q\n  },\n      T = H._plugins = {},\n      U = S.tweenLookup = {},\n      V = 0,\n      W = S.reservedProps = {\n    ease: 1,\n    delay: 1,\n    overwrite: 1,\n    onComplete: 1,\n    onCompleteParams: 1,\n    onCompleteScope: 1,\n    useFrames: 1,\n    runBackwards: 1,\n    startAt: 1,\n    onUpdate: 1,\n    onUpdateParams: 1,\n    onUpdateScope: 1,\n    onStart: 1,\n    onStartParams: 1,\n    onStartScope: 1,\n    onReverseComplete: 1,\n    onReverseCompleteParams: 1,\n    onReverseCompleteScope: 1,\n    onRepeat: 1,\n    onRepeatParams: 1,\n    onRepeatScope: 1,\n    easeParams: 1,\n    yoyo: 1,\n    immediateRender: 1,\n    repeat: 1,\n    repeatDelay: 1,\n    data: 1,\n    paused: 1,\n    reversed: 1,\n    autoCSS: 1,\n    lazy: 1,\n    onOverwrite: 1,\n    callbackScope: 1,\n    stringFilter: 1,\n    id: 1,\n    yoyoEase: 1,\n    stagger: 1\n  },\n      X = {\n    none: 0,\n    all: 1,\n    auto: 2,\n    concurrent: 3,\n    allOnStart: 4,\n    preexisting: 5,\n    \"true\": 1,\n    \"false\": 0\n  },\n      Y = E._rootFramesTimeline = new G(),\n      Z = E._rootTimeline = new G(),\n      $ = 30,\n      _ = S.lazyRender = function () {\n    var a,\n        b,\n        c = K.length;\n\n    for (L = {}, a = 0; c > a; a++) {\n      b = K[a], b && b._lazy !== !1 && (b.render(b._lazy[0], b._lazy[1], !0), b._lazy = !1);\n    }\n\n    K.length = 0;\n  };\n\n  Z._startTime = j.time, Y._startTime = j.frame, Z._active = Y._active = !0, setTimeout(_, 1), E._updateRoot = H.render = function () {\n    var a, b, c;\n\n    if (K.length && _(), Z.render((j.time - Z._startTime) * Z._timeScale, !1, !1), Y.render((j.frame - Y._startTime) * Y._timeScale, !1, !1), K.length && _(), j.frame >= $) {\n      $ = j.frame + (parseInt(H.autoSleep, 10) || 120);\n\n      for (c in U) {\n        for (b = U[c].tweens, a = b.length; --a > -1;) {\n          b[a]._gc && b.splice(a, 1);\n        }\n\n        0 === b.length && delete U[c];\n      }\n\n      if (c = Z._first, (!c || c._paused) && H.autoSleep && !Y._first && 1 === j._listeners.tick.length) {\n        for (; c && c._paused;) {\n          c = c._next;\n        }\n\n        c || j.sleep();\n      }\n    }\n  }, j.addEventListener(\"tick\", E._updateRoot);\n\n  var aa = function aa(a, b, c) {\n    var d,\n        e,\n        f = a._gsTweenID;\n    if (U[f || (a._gsTweenID = f = \"t\" + V++)] || (U[f] = {\n      target: a,\n      tweens: []\n    }), b && (d = U[f].tweens, d[e = d.length] = b, c)) for (; --e > -1;) {\n      d[e] === b && d.splice(e, 1);\n    }\n    return U[f].tweens;\n  },\n      ba = function ba(a, b, c, d) {\n    var e,\n        f,\n        g = a.vars.onOverwrite;\n    return g && (e = g(a, b, c, d)), g = H.onOverwrite, g && (f = g(a, b, c, d)), e !== !1 && f !== !1;\n  },\n      ca = function ca(a, b, c, d, e) {\n    var f, g, h, i;\n\n    if (1 === d || d >= 4) {\n      for (i = e.length, f = 0; i > f; f++) {\n        if ((h = e[f]) !== b) h._gc || h._kill(null, a, b) && (g = !0);else if (5 === d) break;\n      }\n\n      return g;\n    }\n\n    var j,\n        k = b._startTime + n,\n        l = [],\n        m = 0,\n        o = 0 === b._duration;\n\n    for (f = e.length; --f > -1;) {\n      (h = e[f]) === b || h._gc || h._paused || (h._timeline !== b._timeline ? (j = j || da(b, 0, o), 0 === da(h, j, o) && (l[m++] = h)) : h._startTime <= k && h._startTime + h.totalDuration() / h._timeScale > k && ((o || !h._initted) && k - h._startTime <= 2 * n || (l[m++] = h)));\n    }\n\n    for (f = m; --f > -1;) {\n      if (h = l[f], i = h._firstPT, 2 === d && h._kill(c, a, b) && (g = !0), 2 !== d || !h._firstPT && h._initted && i) {\n        if (2 !== d && !ba(h, b)) continue;\n        h._enabled(!1, !1) && (g = !0);\n      }\n    }\n\n    return g;\n  },\n      da = function da(a, b, c) {\n    for (var d = a._timeline, e = d._timeScale, f = a._startTime; d._timeline;) {\n      if (f += d._startTime, e *= d._timeScale, d._paused) return -100;\n      d = d._timeline;\n    }\n\n    return f /= e, f > b ? f - b : c && f === b || !a._initted && 2 * n > f - b ? n : (f += a.totalDuration() / a._timeScale / e) > b + n ? 0 : f - b - n;\n  };\n\n  i._init = function () {\n    var a,\n        b,\n        c,\n        d,\n        e,\n        f,\n        g = this.vars,\n        h = this._overwrittenProps,\n        i = this._duration,\n        j = !!g.immediateRender,\n        k = g.ease,\n        l = this._startAt;\n\n    if (g.startAt) {\n      l && (l.render(-1, !0), l.kill()), e = {};\n\n      for (d in g.startAt) {\n        e[d] = g.startAt[d];\n      }\n\n      if (e.data = \"isStart\", e.overwrite = !1, e.immediateRender = !0, e.lazy = j && g.lazy !== !1, e.startAt = e.delay = null, e.onUpdate = g.onUpdate, e.onUpdateParams = g.onUpdateParams, e.onUpdateScope = g.onUpdateScope || g.callbackScope || this, this._startAt = H.to(this.target || {}, 0, e), j) if (this._time > 0) this._startAt = null;else if (0 !== i) return;\n    } else if (g.runBackwards && 0 !== i) if (l) l.render(-1, !0), l.kill(), this._startAt = null;else {\n      0 !== this._time && (j = !1), c = {};\n\n      for (d in g) {\n        W[d] && \"autoCSS\" !== d || (c[d] = g[d]);\n      }\n\n      if (c.overwrite = 0, c.data = \"isFromStart\", c.lazy = j && g.lazy !== !1, c.immediateRender = j, this._startAt = H.to(this.target, 0, c), j) {\n        if (0 === this._time) return;\n      } else this._startAt._init(), this._startAt._enabled(!1), this.vars.immediateRender && (this._startAt = null);\n    }\n\n    if (this._ease = k = k ? k instanceof w ? k : \"function\" == typeof k ? new w(k, g.easeParams) : x[k] || H.defaultEase : H.defaultEase, g.easeParams instanceof Array && k.config && (this._ease = k.config.apply(k, g.easeParams)), this._easeType = this._ease._type, this._easePower = this._ease._power, this._firstPT = null, this._targets) for (f = this._targets.length, a = 0; f > a; a++) {\n      this._initProps(this._targets[a], this._propLookup[a] = {}, this._siblings[a], h ? h[a] : null, a) && (b = !0);\n    } else b = this._initProps(this.target, this._propLookup, this._siblings, h, 0);\n    if (b && H._onPluginEvent(\"_onInitAllProps\", this), h && (this._firstPT || \"function\" != typeof this.target && this._enabled(!1, !1)), g.runBackwards) for (c = this._firstPT; c;) {\n      c.s += c.c, c.c = -c.c, c = c._next;\n    }\n    this._onUpdate = g.onUpdate, this._initted = !0;\n  }, i._initProps = function (b, c, d, e, f) {\n    var g, h, i, j, k, l;\n    if (null == b) return !1;\n    L[b._gsTweenID] && _(), this.vars.css || b.style && b !== a && b.nodeType && T.css && this.vars.autoCSS !== !1 && J(this.vars, b);\n\n    for (g in this.vars) {\n      if (l = this.vars[g], W[g]) l && (l instanceof Array || l.push && q(l)) && -1 !== l.join(\"\").indexOf(\"{self}\") && (this.vars[g] = l = this._swapSelfInParams(l, this));else if (T[g] && (j = new T[g]())._onInitTween(b, this.vars[g], this, f)) {\n        for (this._firstPT = k = {\n          _next: this._firstPT,\n          t: j,\n          p: \"setRatio\",\n          s: 0,\n          c: 1,\n          f: 1,\n          n: g,\n          pg: 1,\n          pr: j._priority,\n          m: 0\n        }, h = j._overwriteProps.length; --h > -1;) {\n          c[j._overwriteProps[h]] = this._firstPT;\n        }\n\n        (j._priority || j._onInitAllProps) && (i = !0), (j._onDisable || j._onEnable) && (this._notifyPluginsOfEnabled = !0), k._next && (k._next._prev = k);\n      } else c[g] = R.call(this, b, g, \"get\", l, g, 0, null, this.vars.stringFilter, f);\n    }\n\n    return e && this._kill(e, b) ? this._initProps(b, c, d, e, f) : this._overwrite > 1 && this._firstPT && d.length > 1 && ca(b, this, c, this._overwrite, d) ? (this._kill(c, b), this._initProps(b, c, d, e, f)) : (this._firstPT && (this.vars.lazy !== !1 && this._duration || this.vars.lazy && !this._duration) && (L[b._gsTweenID] = !0), i);\n  }, i.render = function (a, b, c) {\n    var d,\n        e,\n        f,\n        g,\n        h = this,\n        i = h._time,\n        j = h._duration,\n        k = h._rawPrevTime;\n    if (a >= j - n && a >= 0) h._totalTime = h._time = j, h.ratio = h._ease._calcEnd ? h._ease.getRatio(1) : 1, h._reversed || (d = !0, e = \"onComplete\", c = c || h._timeline.autoRemoveChildren), 0 === j && (h._initted || !h.vars.lazy || c) && (h._startTime === h._timeline._duration && (a = 0), (0 > k || 0 >= a && a >= -n || k === n && \"isPause\" !== h.data) && k !== a && (c = !0, k > n && (e = \"onReverseComplete\")), h._rawPrevTime = g = !b || a || k === a ? a : n);else if (n > a) h._totalTime = h._time = 0, h.ratio = h._ease._calcEnd ? h._ease.getRatio(0) : 0, (0 !== i || 0 === j && k > 0) && (e = \"onReverseComplete\", d = h._reversed), a > -n ? a = 0 : 0 > a && (h._active = !1, 0 === j && (h._initted || !h.vars.lazy || c) && (k >= 0 && (k !== n || \"isPause\" !== h.data) && (c = !0), h._rawPrevTime = g = !b || a || k === a ? a : n)), (!h._initted || h._startAt && h._startAt.progress()) && (c = !0);else if (h._totalTime = h._time = a, h._easeType) {\n      var l = a / j,\n          m = h._easeType,\n          o = h._easePower;\n      (1 === m || 3 === m && l >= .5) && (l = 1 - l), 3 === m && (l *= 2), 1 === o ? l *= l : 2 === o ? l *= l * l : 3 === o ? l *= l * l * l : 4 === o && (l *= l * l * l * l), h.ratio = 1 === m ? 1 - l : 2 === m ? l : .5 > a / j ? l / 2 : 1 - l / 2;\n    } else h.ratio = h._ease.getRatio(a / j);\n\n    if (h._time !== i || c) {\n      if (!h._initted) {\n        if (h._init(), !h._initted || h._gc) return;\n        if (!c && h._firstPT && (h.vars.lazy !== !1 && h._duration || h.vars.lazy && !h._duration)) return h._time = h._totalTime = i, h._rawPrevTime = k, K.push(h), void (h._lazy = [a, b]);\n        h._time && !d ? h.ratio = h._ease.getRatio(h._time / j) : d && h._ease._calcEnd && (h.ratio = h._ease.getRatio(0 === h._time ? 0 : 1));\n      }\n\n      for (h._lazy !== !1 && (h._lazy = !1), h._active || !h._paused && h._time !== i && a >= 0 && (h._active = !0), 0 === i && (h._startAt && (a >= 0 ? h._startAt.render(a, !0, c) : e || (e = \"_dummyGS\")), h.vars.onStart && (0 !== h._time || 0 === j) && (b || h._callback(\"onStart\"))), f = h._firstPT; f;) {\n        f.f ? f.t[f.p](f.c * h.ratio + f.s) : f.t[f.p] = f.c * h.ratio + f.s, f = f._next;\n      }\n\n      h._onUpdate && (0 > a && h._startAt && a !== -1e-4 && h._startAt.render(a, !0, c), b || (h._time !== i || d || c) && h._callback(\"onUpdate\")), e && (!h._gc || c) && (0 > a && h._startAt && !h._onUpdate && a !== -1e-4 && h._startAt.render(a, !0, c), d && (h._timeline.autoRemoveChildren && h._enabled(!1, !1), h._active = !1), !b && h.vars[e] && h._callback(e), 0 === j && h._rawPrevTime === n && g !== n && (h._rawPrevTime = 0));\n    }\n  }, i._kill = function (a, b, c) {\n    if (\"all\" === a && (a = null), null == a && (null == b || b === this.target)) return this._lazy = !1, this._enabled(!1, !1);\n    b = \"string\" != typeof b ? b || this._targets || this.target : H.selector(b) || b;\n    var d,\n        e,\n        f,\n        g,\n        h,\n        i,\n        j,\n        k,\n        l,\n        m = c && this._time && c._startTime === this._startTime && this._timeline === c._timeline,\n        n = this._firstPT;\n    if ((q(b) || I(b)) && \"number\" != typeof b[0]) for (d = b.length; --d > -1;) {\n      this._kill(a, b[d], c) && (i = !0);\n    } else {\n      if (this._targets) {\n        for (d = this._targets.length; --d > -1;) {\n          if (b === this._targets[d]) {\n            h = this._propLookup[d] || {}, this._overwrittenProps = this._overwrittenProps || [], e = this._overwrittenProps[d] = a ? this._overwrittenProps[d] || {} : \"all\";\n            break;\n          }\n        }\n      } else {\n        if (b !== this.target) return !1;\n        h = this._propLookup, e = this._overwrittenProps = a ? this._overwrittenProps || {} : \"all\";\n      }\n\n      if (h) {\n        if (j = a || h, k = a !== e && \"all\" !== e && a !== h && (\"object\" != _typeof(a) || !a._tempKill), c && (H.onOverwrite || this.vars.onOverwrite)) {\n          for (f in j) {\n            h[f] && (l || (l = []), l.push(f));\n          }\n\n          if ((l || !a) && !ba(this, c, b, l)) return !1;\n        }\n\n        for (f in j) {\n          (g = h[f]) && (m && (g.f ? g.t[g.p](g.s) : g.t[g.p] = g.s, i = !0), g.pg && g.t._kill(j) && (i = !0), g.pg && 0 !== g.t._overwriteProps.length || (g._prev ? g._prev._next = g._next : g === this._firstPT && (this._firstPT = g._next), g._next && (g._next._prev = g._prev), g._next = g._prev = null), delete h[f]), k && (e[f] = 1);\n        }\n\n        !this._firstPT && this._initted && n && this._enabled(!1, !1);\n      }\n    }\n    return i;\n  }, i.invalidate = function () {\n    this._notifyPluginsOfEnabled && H._onPluginEvent(\"_onDisable\", this);\n    var a = this._time;\n    return this._firstPT = this._overwrittenProps = this._startAt = this._onUpdate = null, this._notifyPluginsOfEnabled = this._active = this._lazy = !1, this._propLookup = this._targets ? {} : [], E.prototype.invalidate.call(this), this.vars.immediateRender && (this._time = -n, this.render(a, !1, this.vars.lazy !== !1)), this;\n  }, i._enabled = function (a, b) {\n    if (k || j.wake(), a && this._gc) {\n      var c,\n          d = this._targets;\n      if (d) for (c = d.length; --c > -1;) {\n        this._siblings[c] = aa(d[c], this, !0);\n      } else this._siblings = aa(this.target, this, !0);\n    }\n\n    return E.prototype._enabled.call(this, a, b), this._notifyPluginsOfEnabled && this._firstPT ? H._onPluginEvent(a ? \"_onEnable\" : \"_onDisable\", this) : !1;\n  }, H.to = function (a, b, c) {\n    return new H(a, b, c);\n  }, H.from = function (a, b, c) {\n    return c.runBackwards = !0, c.immediateRender = 0 != c.immediateRender, new H(a, b, c);\n  }, H.fromTo = function (a, b, c, d) {\n    return d.startAt = c, d.immediateRender = 0 != d.immediateRender && 0 != c.immediateRender, new H(a, b, d);\n  }, H.delayedCall = function (a, b, c, d, e) {\n    return new H(b, 0, {\n      delay: a,\n      onComplete: b,\n      onCompleteParams: c,\n      callbackScope: d,\n      onReverseComplete: b,\n      onReverseCompleteParams: c,\n      immediateRender: !1,\n      lazy: !1,\n      useFrames: e,\n      overwrite: 0\n    });\n  }, H.set = function (a, b) {\n    return new H(a, 0, b);\n  }, H.getTweensOf = function (a, b) {\n    if (null == a) return [];\n    a = \"string\" != typeof a ? a : H.selector(a) || a;\n    var c, d, e, f;\n\n    if ((q(a) || I(a)) && \"number\" != typeof a[0]) {\n      for (c = a.length, d = []; --c > -1;) {\n        d = d.concat(H.getTweensOf(a[c], b));\n      }\n\n      for (c = d.length; --c > -1;) {\n        for (f = d[c], e = c; --e > -1;) {\n          f === d[e] && d.splice(c, 1);\n        }\n      }\n    } else if (a._gsTweenID) for (d = aa(a).concat(), c = d.length; --c > -1;) {\n      (d[c]._gc || b && !d[c].isActive()) && d.splice(c, 1);\n    }\n\n    return d || [];\n  }, H.killTweensOf = H.killDelayedCallsTo = function (a, b, c) {\n    \"object\" == _typeof(b) && (c = b, b = !1);\n\n    for (var d = H.getTweensOf(a, b), e = d.length; --e > -1;) {\n      d[e]._kill(c, a);\n    }\n  };\n  var ea = u(\"plugins.TweenPlugin\", function (a, b) {\n    this._overwriteProps = (a || \"\").split(\",\"), this._propName = this._overwriteProps[0], this._priority = b || 0, this._super = ea.prototype;\n  }, !0);\n\n  if (i = ea.prototype, ea.version = \"1.19.0\", ea.API = 2, i._firstPT = null, i._addTween = R, i.setRatio = O, i._kill = function (a) {\n    var b,\n        c = this._overwriteProps,\n        d = this._firstPT;\n    if (null != a[this._propName]) this._overwriteProps = [];else for (b = c.length; --b > -1;) {\n      null != a[c[b]] && c.splice(b, 1);\n    }\n\n    for (; d;) {\n      null != a[d.n] && (d._next && (d._next._prev = d._prev), d._prev ? (d._prev._next = d._next, d._prev = null) : this._firstPT === d && (this._firstPT = d._next)), d = d._next;\n    }\n\n    return !1;\n  }, i._mod = i._roundProps = function (a) {\n    for (var b, c = this._firstPT; c;) {\n      b = a[this._propName] || null != c.n && a[c.n.split(this._propName + \"_\").join(\"\")], b && \"function\" == typeof b && (2 === c.f ? c.t._applyPT.m = b : c.m = b), c = c._next;\n    }\n  }, H._onPluginEvent = function (a, b) {\n    var c,\n        d,\n        e,\n        f,\n        g,\n        h = b._firstPT;\n\n    if (\"_onInitAllProps\" === a) {\n      for (; h;) {\n        for (g = h._next, d = e; d && d.pr > h.pr;) {\n          d = d._next;\n        }\n\n        (h._prev = d ? d._prev : f) ? h._prev._next = h : e = h, (h._next = d) ? d._prev = h : f = h, h = g;\n      }\n\n      h = b._firstPT = e;\n    }\n\n    for (; h;) {\n      h.pg && \"function\" == typeof h.t[a] && h.t[a]() && (c = !0), h = h._next;\n    }\n\n    return c;\n  }, ea.activate = function (a) {\n    for (var b = a.length; --b > -1;) {\n      a[b].API === ea.API && (T[new a[b]()._propName] = a[b]);\n    }\n\n    return !0;\n  }, t.plugin = function (a) {\n    if (!(a && a.propName && a.init && a.API)) throw \"illegal plugin definition.\";\n    var b,\n        c = a.propName,\n        d = a.priority || 0,\n        e = a.overwriteProps,\n        f = {\n      init: \"_onInitTween\",\n      set: \"setRatio\",\n      kill: \"_kill\",\n      round: \"_mod\",\n      mod: \"_mod\",\n      initAll: \"_onInitAllProps\"\n    },\n        g = u(\"plugins.\" + c.charAt(0).toUpperCase() + c.substr(1) + \"Plugin\", function () {\n      ea.call(this, c, d), this._overwriteProps = e || [];\n    }, a.global === !0),\n        h = g.prototype = new ea(c);\n    h.constructor = g, g.API = a.API;\n\n    for (b in f) {\n      \"function\" == typeof a[b] && (h[f[b]] = a[b]);\n    }\n\n    return g.version = a.version, ea.activate([g]), g;\n  }, g = a._gsQueue) {\n    for (h = 0; h < g.length; h++) {\n      g[h]();\n    }\n\n    for (i in r) {\n      r[i].func || a.console.log(\"GSAP encountered missing dependency: \" + i);\n    }\n  }\n\n  k = !1;\n}(\"undefined\" != typeof module && module.exports && \"undefined\" != typeof global ? global : this || window, \"TweenMax\");\n/*!\n * ScrollMagic v2.0.6 (2018-10-08)\n * The javascript library for magical scroll interactions.\n * (c) 2018 Jan Paepke (@janpaepke)\n * Project Website: http://scrollmagic.io\n * \n * @version 2.0.6\n * @license Dual licensed under MIT license and GPL.\n * @author Jan Paepke - e-mail@janpaepke.de\n *\n * @file ScrollMagic main library.\n */\n\n/**\n * @namespace ScrollMagic\n */\n\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(factory);\n  } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // Browser global\n    root.ScrollMagic = factory();\n  }\n})(this, function () {\n  \"use strict\";\n\n  var ScrollMagic = function ScrollMagic() {\n    _util.log(2, '(COMPATIBILITY NOTICE) -> As of ScrollMagic 2.0.0 you need to use \\'new ScrollMagic.Controller()\\' to create a new controller instance. Use \\'new ScrollMagic.Scene()\\' to instance a scene.');\n  };\n\n  ScrollMagic.version = \"2.0.6\"; // TODO: temporary workaround for chrome's scroll jitter bug\n\n  window.addEventListener(\"mousewheel\", function () {}); // global const\n\n  var PIN_SPACER_ATTRIBUTE = \"data-scrollmagic-pin-spacer\";\n  /**\n   * The main class that is needed once per scroll container.\n   *\n   * @class\n   *\n   * @example\n   * // basic initialization\n   * var controller = new ScrollMagic.Controller();\n   *\n   * // passing options\n   * var controller = new ScrollMagic.Controller({container: \"#myContainer\", loglevel: 3});\n   *\n   * @param {object} [options] - An object containing one or more options for the controller.\n   * @param {(string|object)} [options.container=window] - A selector, DOM object that references the main container for scrolling.\n   * @param {boolean} [options.vertical=true] - Sets the scroll mode to vertical (`true`) or horizontal (`false`) scrolling.\n   * @param {object} [options.globalSceneOptions={}] - These options will be passed to every Scene that is added to the controller using the addScene method. For more information on Scene options see {@link ScrollMagic.Scene}.\n   * @param {number} [options.loglevel=2] Loglevel for debugging. Note that logging is disabled in the minified version of ScrollMagic.\n   ** `0` => silent\n   ** `1` => errors\n   ** `2` => errors, warnings\n   ** `3` => errors, warnings, debuginfo\n   * @param {boolean} [options.refreshInterval=100] - Some changes don't call events by default, like changing the container size or moving a scene trigger element.  \n   This interval polls these parameters to fire the necessary events.  \n   If you don't use custom containers, trigger elements or have static layouts, where the positions of the trigger elements don't change, you can set this to 0 disable interval checking and improve performance.\n   *\n   */\n\n  ScrollMagic.Controller = function (options) {\n    /*\n    \t * ----------------------------------------------------------------\n    \t * settings\n    \t * ----------------------------------------------------------------\n    \t */\n    var NAMESPACE = 'ScrollMagic.Controller',\n        SCROLL_DIRECTION_FORWARD = 'FORWARD',\n        SCROLL_DIRECTION_REVERSE = 'REVERSE',\n        SCROLL_DIRECTION_PAUSED = 'PAUSED',\n        DEFAULT_OPTIONS = CONTROLLER_OPTIONS.defaults;\n    /*\n    \t * ----------------------------------------------------------------\n    \t * private vars\n    \t * ----------------------------------------------------------------\n    \t */\n\n    var Controller = this,\n        _options = _util.extend({}, DEFAULT_OPTIONS, options),\n        _sceneObjects = [],\n        _updateScenesOnNextCycle = false,\n        // can be boolean (true => all scenes) or an array of scenes to be updated\n    _scrollPos = 0,\n        _scrollDirection = SCROLL_DIRECTION_PAUSED,\n        _isDocument = true,\n        _viewPortSize = 0,\n        _enabled = true,\n        _updateTimeout,\n        _refreshTimeout;\n    /*\n    \t * ----------------------------------------------------------------\n    \t * private functions\n    \t * ----------------------------------------------------------------\n    \t */\n\n    /**\n     * Internal constructor function of the ScrollMagic Controller\n     * @private\n     */\n\n\n    var construct = function construct() {\n      for (var key in _options) {\n        if (!DEFAULT_OPTIONS.hasOwnProperty(key)) {\n          log(2, \"WARNING: Unknown option \\\"\" + key + \"\\\"\");\n          delete _options[key];\n        }\n      }\n\n      _options.container = _util.get.elements(_options.container)[0]; // check ScrollContainer\n\n      if (!_options.container) {\n        log(1, \"ERROR creating object \" + NAMESPACE + \": No valid scroll container supplied\");\n        throw NAMESPACE + \" init failed.\"; // cancel\n      }\n\n      _isDocument = _options.container === window || _options.container === document.body || !document.body.contains(_options.container); // normalize to window\n\n      if (_isDocument) {\n        _options.container = window;\n      } // update container size immediately\n\n\n      _viewPortSize = getViewportSize(); // set event handlers\n\n      _options.container.addEventListener(\"resize\", onChange);\n\n      _options.container.addEventListener(\"scroll\", onChange);\n\n      var ri = parseInt(_options.refreshInterval, 10);\n      _options.refreshInterval = _util.type.Number(ri) ? ri : DEFAULT_OPTIONS.refreshInterval;\n      scheduleRefresh();\n      log(3, \"added new \" + NAMESPACE + \" controller (v\" + ScrollMagic.version + \")\");\n    };\n    /**\n     * Schedule the next execution of the refresh function\n     * @private\n     */\n\n\n    var scheduleRefresh = function scheduleRefresh() {\n      if (_options.refreshInterval > 0) {\n        _refreshTimeout = window.setTimeout(refresh, _options.refreshInterval);\n      }\n    };\n    /**\n     * Default function to get scroll pos - overwriteable using `Controller.scrollPos(newFunction)`\n     * @private\n     */\n\n\n    var getScrollPos = function getScrollPos() {\n      return _options.vertical ? _util.get.scrollTop(_options.container) : _util.get.scrollLeft(_options.container);\n    };\n    /**\n     * Returns the current viewport Size (width vor horizontal, height for vertical)\n     * @private\n     */\n\n\n    var getViewportSize = function getViewportSize() {\n      return _options.vertical ? _util.get.height(_options.container) : _util.get.width(_options.container);\n    };\n    /**\n     * Default function to set scroll pos - overwriteable using `Controller.scrollTo(newFunction)`\n     * Make available publicly for pinned mousewheel workaround.\n     * @private\n     */\n\n\n    var setScrollPos = this._setScrollPos = function (pos) {\n      if (_options.vertical) {\n        if (_isDocument) {\n          window.scrollTo(_util.get.scrollLeft(), pos);\n        } else {\n          _options.container.scrollTop = pos;\n        }\n      } else {\n        if (_isDocument) {\n          window.scrollTo(pos, _util.get.scrollTop());\n        } else {\n          _options.container.scrollLeft = pos;\n        }\n      }\n    };\n    /**\n     * Handle updates in cycles instead of on scroll (performance)\n     * @private\n     */\n\n\n    var updateScenes = function updateScenes() {\n      if (_enabled && _updateScenesOnNextCycle) {\n        // determine scenes to update\n        var scenesToUpdate = _util.type.Array(_updateScenesOnNextCycle) ? _updateScenesOnNextCycle : _sceneObjects.slice(0); // reset scenes\n\n        _updateScenesOnNextCycle = false;\n        var oldScrollPos = _scrollPos; // update scroll pos now instead of onChange, as it might have changed since scheduling (i.e. in-browser smooth scroll)\n\n        _scrollPos = Controller.scrollPos();\n        var deltaScroll = _scrollPos - oldScrollPos;\n\n        if (deltaScroll !== 0) {\n          // scroll position changed?\n          _scrollDirection = deltaScroll > 0 ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_REVERSE;\n        } // reverse order of scenes if scrolling reverse\n\n\n        if (_scrollDirection === SCROLL_DIRECTION_REVERSE) {\n          scenesToUpdate.reverse();\n        } // update scenes\n\n\n        scenesToUpdate.forEach(function (scene, index) {\n          log(3, \"updating Scene \" + (index + 1) + \"/\" + scenesToUpdate.length + \" (\" + _sceneObjects.length + \" total)\");\n          scene.update(true);\n        });\n\n        if (scenesToUpdate.length === 0 && _options.loglevel >= 3) {\n          log(3, \"updating 0 Scenes (nothing added to controller)\");\n        }\n      }\n    };\n    /**\n     * Initializes rAF callback\n     * @private\n     */\n\n\n    var debounceUpdate = function debounceUpdate() {\n      _updateTimeout = _util.rAF(updateScenes);\n    };\n    /**\n     * Handles Container changes\n     * @private\n     */\n\n\n    var onChange = function onChange(e) {\n      log(3, \"event fired causing an update:\", e.type);\n\n      if (e.type == \"resize\") {\n        // resize\n        _viewPortSize = getViewportSize();\n        _scrollDirection = SCROLL_DIRECTION_PAUSED;\n      } // schedule update\n\n\n      if (_updateScenesOnNextCycle !== true) {\n        _updateScenesOnNextCycle = true;\n        debounceUpdate();\n      }\n    };\n\n    var refresh = function refresh() {\n      if (!_isDocument) {\n        // simulate resize event. Only works for viewport relevant param (performance)\n        if (_viewPortSize != getViewportSize()) {\n          var resizeEvent;\n\n          try {\n            resizeEvent = new Event('resize', {\n              bubbles: false,\n              cancelable: false\n            });\n          } catch (e) {\n            // stupid IE\n            resizeEvent = document.createEvent(\"Event\");\n            resizeEvent.initEvent(\"resize\", false, false);\n          }\n\n          _options.container.dispatchEvent(resizeEvent);\n        }\n      }\n\n      _sceneObjects.forEach(function (scene, index) {\n        // refresh all scenes\n        scene.refresh();\n      });\n\n      scheduleRefresh();\n    };\n    /**\n     * Send a debug message to the console.\n     * provided publicly with _log for plugins\n     * @private\n     *\n     * @param {number} loglevel - The loglevel required to initiate output for the message.\n     * @param {...mixed} output - One or more variables that should be passed to the console.\n     */\n\n\n    var log = this._log = function (loglevel, output) {\n      if (_options.loglevel >= loglevel) {\n        Array.prototype.splice.call(arguments, 1, 0, \"(\" + NAMESPACE + \") ->\");\n\n        _util.log.apply(window, arguments);\n      }\n    }; // for scenes we have getters for each option, but for the controller we don't, so we need to make it available externally for plugins\n\n\n    this._options = _options;\n    /**\n     * Sort scenes in ascending order of their start offset.\n     * @private\n     *\n     * @param {array} ScenesArray - an array of ScrollMagic Scenes that should be sorted\n     * @return {array} The sorted array of Scenes.\n     */\n\n    var sortScenes = function sortScenes(ScenesArray) {\n      if (ScenesArray.length <= 1) {\n        return ScenesArray;\n      } else {\n        var scenes = ScenesArray.slice(0);\n        scenes.sort(function (a, b) {\n          return a.scrollOffset() > b.scrollOffset() ? 1 : -1;\n        });\n        return scenes;\n      }\n    };\n    /**\n     * ----------------------------------------------------------------\n     * public functions\n     * ----------------------------------------------------------------\n     */\n\n    /**\n     * Add one ore more scene(s) to the controller.  \n     * This is the equivalent to `Scene.addTo(controller)`.\n     * @public\n     * @example\n     * // with a previously defined scene\n     * controller.addScene(scene);\n     *\n     * // with a newly created scene.\n     * controller.addScene(new ScrollMagic.Scene({duration : 0}));\n     *\n     * // adding multiple scenes\n     * controller.addScene([scene, scene2, new ScrollMagic.Scene({duration : 0})]);\n     *\n     * @param {(ScrollMagic.Scene|array)} newScene - ScrollMagic Scene or Array of Scenes to be added to the controller.\n     * @return {Controller} Parent object for chaining.\n     */\n\n\n    this.addScene = function (newScene) {\n      if (_util.type.Array(newScene)) {\n        newScene.forEach(function (scene, index) {\n          Controller.addScene(scene);\n        });\n      } else if (newScene instanceof ScrollMagic.Scene) {\n        if (newScene.controller() !== Controller) {\n          newScene.addTo(Controller);\n        } else if (_sceneObjects.indexOf(newScene) < 0) {\n          // new scene\n          _sceneObjects.push(newScene); // add to array\n\n\n          _sceneObjects = sortScenes(_sceneObjects); // sort\n\n          newScene.on(\"shift.controller_sort\", function () {\n            // resort whenever scene moves\n            _sceneObjects = sortScenes(_sceneObjects);\n          }); // insert Global defaults.\n\n          for (var key in _options.globalSceneOptions) {\n            if (newScene[key]) {\n              newScene[key].call(newScene, _options.globalSceneOptions[key]);\n            }\n          }\n\n          log(3, \"adding Scene (now \" + _sceneObjects.length + \" total)\");\n        }\n      } else {\n        log(1, \"ERROR: invalid argument supplied for '.addScene()'\");\n      }\n\n      return Controller;\n    };\n    /**\n     * Remove one ore more scene(s) from the controller.  \n     * This is the equivalent to `Scene.remove()`.\n     * @public\n     * @example\n     * // remove a scene from the controller\n     * controller.removeScene(scene);\n     *\n     * // remove multiple scenes from the controller\n     * controller.removeScene([scene, scene2, scene3]);\n     *\n     * @param {(ScrollMagic.Scene|array)} Scene - ScrollMagic Scene or Array of Scenes to be removed from the controller.\n     * @returns {Controller} Parent object for chaining.\n     */\n\n\n    this.removeScene = function (Scene) {\n      if (_util.type.Array(Scene)) {\n        Scene.forEach(function (scene, index) {\n          Controller.removeScene(scene);\n        });\n      } else {\n        var index = _sceneObjects.indexOf(Scene);\n\n        if (index > -1) {\n          Scene.off(\"shift.controller_sort\");\n\n          _sceneObjects.splice(index, 1);\n\n          log(3, \"removing Scene (now \" + _sceneObjects.length + \" left)\");\n          Scene.remove();\n        }\n      }\n\n      return Controller;\n    };\n    /**\n     * Update one ore more scene(s) according to the scroll position of the container.  \n     * This is the equivalent to `Scene.update()`.  \n     * The update method calculates the scene's start and end position (based on the trigger element, trigger hook, duration and offset) and checks it against the current scroll position of the container.  \n     * It then updates the current scene state accordingly (or does nothing, if the state is already correct) \u2013 Pins will be set to their correct position and tweens will be updated to their correct progress.  \n     * _**Note:** This method gets called constantly whenever Controller detects a change. The only application for you is if you change something outside of the realm of ScrollMagic, like moving the trigger or changing tween parameters._\n     * @public\n     * @example\n     * // update a specific scene on next cycle\n     * controller.updateScene(scene);\n     *\n     * // update a specific scene immediately\n     * controller.updateScene(scene, true);\n     *\n     * // update multiple scenes scene on next cycle\n     * controller.updateScene([scene1, scene2, scene3]);\n     *\n     * @param {ScrollMagic.Scene} Scene - ScrollMagic Scene or Array of Scenes that is/are supposed to be updated.\n     * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle.  \n     This is useful when changing multiple properties of the scene - this way it will only be updated once all new properties are set (updateScenes).\n     * @return {Controller} Parent object for chaining.\n     */\n\n\n    this.updateScene = function (Scene, immediately) {\n      if (_util.type.Array(Scene)) {\n        Scene.forEach(function (scene, index) {\n          Controller.updateScene(scene, immediately);\n        });\n      } else {\n        if (immediately) {\n          Scene.update(true);\n        } else if (_updateScenesOnNextCycle !== true && Scene instanceof ScrollMagic.Scene) {\n          // if _updateScenesOnNextCycle is true, all connected scenes are already scheduled for update\n          // prep array for next update cycle\n          _updateScenesOnNextCycle = _updateScenesOnNextCycle || [];\n\n          if (_updateScenesOnNextCycle.indexOf(Scene) == -1) {\n            _updateScenesOnNextCycle.push(Scene);\n          }\n\n          _updateScenesOnNextCycle = sortScenes(_updateScenesOnNextCycle); // sort\n\n          debounceUpdate();\n        }\n      }\n\n      return Controller;\n    };\n    /**\n     * Updates the controller params and calls updateScene on every scene, that is attached to the controller.  \n     * See `Controller.updateScene()` for more information about what this means.  \n     * In most cases you will not need this function, as it is called constantly, whenever ScrollMagic detects a state change event, like resize or scroll.  \n     * The only application for this method is when ScrollMagic fails to detect these events.  \n     * One application is with some external scroll libraries (like iScroll) that move an internal container to a negative offset instead of actually scrolling. In this case the update on the controller needs to be called whenever the child container's position changes.\n     * For this case there will also be the need to provide a custom function to calculate the correct scroll position. See `Controller.scrollPos()` for details.\n     * @public\n     * @example\n     * // update the controller on next cycle (saves performance due to elimination of redundant updates)\n     * controller.update();\n     *\n     * // update the controller immediately\n     * controller.update(true);\n     *\n     * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle (better performance)\n     * @return {Controller} Parent object for chaining.\n     */\n\n\n    this.update = function (immediately) {\n      onChange({\n        type: \"resize\"\n      }); // will update size and set _updateScenesOnNextCycle to true\n\n      if (immediately) {\n        updateScenes();\n      }\n\n      return Controller;\n    };\n    /**\n     * Scroll to a numeric scroll offset, a DOM element, the start of a scene or provide an alternate method for scrolling.  \n     * For vertical controllers it will change the top scroll offset and for horizontal applications it will change the left offset.\n     * @public\n     *\n     * @since 1.1.0\n     * @example\n     * // scroll to an offset of 100\n     * controller.scrollTo(100);\n     *\n     * // scroll to a DOM element\n     * controller.scrollTo(\"#anchor\");\n     *\n     * // scroll to the beginning of a scene\n     * var scene = new ScrollMagic.Scene({offset: 200});\n     * controller.scrollTo(scene);\n     *\n     * // define a new scroll position modification function (jQuery animate instead of jump)\n     * controller.scrollTo(function (newScrollPos) {\n     *\t$(\"html, body\").animate({scrollTop: newScrollPos});\n     * });\n     * controller.scrollTo(100); // call as usual, but the new function will be used instead\n     *\n     * // define a new scroll function with an additional parameter\n     * controller.scrollTo(function (newScrollPos, message) {\n     *  console.log(message);\n     *\t$(this).animate({scrollTop: newScrollPos});\n     * });\n     * // call as usual, but supply an extra parameter to the defined custom function\n     * controller.scrollTo(100, \"my message\");\n     *\n     * // define a new scroll function with an additional parameter containing multiple variables\n     * controller.scrollTo(function (newScrollPos, options) {\n     *  someGlobalVar = options.a + options.b;\n     *\t$(this).animate({scrollTop: newScrollPos});\n     * });\n     * // call as usual, but supply an extra parameter containing multiple options\n     * controller.scrollTo(100, {a: 1, b: 2});\n     *\n     * // define a new scroll function with a callback supplied as an additional parameter\n     * controller.scrollTo(function (newScrollPos, callback) {\n     *\t$(this).animate({scrollTop: newScrollPos}, 400, \"swing\", callback);\n     * });\n     * // call as usual, but supply an extra parameter, which is used as a callback in the previously defined custom scroll function\n     * controller.scrollTo(100, function() {\n     *\tconsole.log(\"scroll has finished.\");\n     * });\n     *\n     * @param {mixed} scrollTarget - The supplied argument can be one of these types:\n     * 1. `number` -> The container will scroll to this new scroll offset.\n     * 2. `string` or `object` -> Can be a selector or a DOM object.  \n     *  The container will scroll to the position of this element.\n     * 3. `ScrollMagic Scene` -> The container will scroll to the start of this scene.\n     * 4. `function` -> This function will be used for future scroll position modifications.  \n     *  This provides a way for you to change the behaviour of scrolling and adding new behaviour like animation. The function receives the new scroll position as a parameter and a reference to the container element using `this`.  \n     *  It may also optionally receive an optional additional parameter (see below)  \n     *  _**NOTE:**  \n     *  All other options will still work as expected, using the new function to scroll._\n     * @param {mixed} [additionalParameter] - If a custom scroll function was defined (see above 4.), you may want to supply additional parameters to it, when calling it. You can do this using this parameter \u2013 see examples for details. Please note, that this parameter will have no effect, if you use the default scrolling function.\n     * @returns {Controller} Parent object for chaining.\n     */\n\n\n    this.scrollTo = function (scrollTarget, additionalParameter) {\n      if (_util.type.Number(scrollTarget)) {\n        // excecute\n        setScrollPos.call(_options.container, scrollTarget, additionalParameter);\n      } else if (scrollTarget instanceof ScrollMagic.Scene) {\n        // scroll to scene\n        if (scrollTarget.controller() === Controller) {\n          // check if the controller is associated with this scene\n          Controller.scrollTo(scrollTarget.scrollOffset(), additionalParameter);\n        } else {\n          log(2, \"scrollTo(): The supplied scene does not belong to this controller. Scroll cancelled.\", scrollTarget);\n        }\n      } else if (_util.type.Function(scrollTarget)) {\n        // assign new scroll function\n        setScrollPos = scrollTarget;\n      } else {\n        // scroll to element\n        var elem = _util.get.elements(scrollTarget)[0];\n\n        if (elem) {\n          // if parent is pin spacer, use spacer position instead so correct start position is returned for pinned elements.\n          while (elem.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) {\n            elem = elem.parentNode;\n          }\n\n          var param = _options.vertical ? \"top\" : \"left\",\n              // which param is of interest ?\n          containerOffset = _util.get.offset(_options.container),\n              // container position is needed because element offset is returned in relation to document, not in relation to container.\n          elementOffset = _util.get.offset(elem);\n\n          if (!_isDocument) {\n            // container is not the document root, so substract scroll Position to get correct trigger element position relative to scrollcontent\n            containerOffset[param] -= Controller.scrollPos();\n          }\n\n          Controller.scrollTo(elementOffset[param] - containerOffset[param], additionalParameter);\n        } else {\n          log(2, \"scrollTo(): The supplied argument is invalid. Scroll cancelled.\", scrollTarget);\n        }\n      }\n\n      return Controller;\n    };\n    /**\n     * **Get** the current scrollPosition or **Set** a new method to calculate it.  \n     * -> **GET**:\n     * When used as a getter this function will return the current scroll position.  \n     * To get a cached value use Controller.info(\"scrollPos\"), which will be updated in the update cycle.  \n     * For vertical controllers it will return the top scroll offset and for horizontal applications it will return the left offset.\n     *\n     * -> **SET**:\n     * When used as a setter this method prodes a way to permanently overwrite the controller's scroll position calculation.  \n     * A typical usecase is when the scroll position is not reflected by the containers scrollTop or scrollLeft values, but for example by the inner offset of a child container.  \n     * Moving a child container inside a parent is a commonly used method for several scrolling frameworks, including iScroll.  \n     * By providing an alternate calculation function you can make sure ScrollMagic receives the correct scroll position.  \n     * Please also bear in mind that your function should return y values for vertical scrolls an x for horizontals.\n     *\n     * To change the current scroll position please use `Controller.scrollTo()`.\n     * @public\n     *\n     * @example\n     * // get the current scroll Position\n     * var scrollPos = controller.scrollPos();\n     *\n     * // set a new scroll position calculation method\n     * controller.scrollPos(function () {\n     *\treturn this.info(\"vertical\") ? -mychildcontainer.y : -mychildcontainer.x\n     * });\n     *\n     * @param {function} [scrollPosMethod] - The function to be used for the scroll position calculation of the container.\n     * @returns {(number|Controller)} Current scroll position or parent object for chaining.\n     */\n\n\n    this.scrollPos = function (scrollPosMethod) {\n      if (!arguments.length) {\n        // get\n        return getScrollPos.call(Controller);\n      } else {\n        // set\n        if (_util.type.Function(scrollPosMethod)) {\n          getScrollPos = scrollPosMethod;\n        } else {\n          log(2, \"Provided value for method 'scrollPos' is not a function. To change the current scroll position use 'scrollTo()'.\");\n        }\n      }\n\n      return Controller;\n    };\n    /**\n     * **Get** all infos or one in particular about the controller.\n     * @public\n     * @example\n     * // returns the current scroll position (number)\n     * var scrollPos = controller.info(\"scrollPos\");\n     *\n     * // returns all infos as an object\n     * var infos = controller.info();\n     *\n     * @param {string} [about] - If passed only this info will be returned instead of an object containing all.  \n     Valid options are:\n     ** `\"size\"` => the current viewport size of the container\n     ** `\"vertical\"` => true if vertical scrolling, otherwise false\n     ** `\"scrollPos\"` => the current scroll position\n     ** `\"scrollDirection\"` => the last known direction of the scroll\n     ** `\"container\"` => the container element\n     ** `\"isDocument\"` => true if container element is the document.\n     * @returns {(mixed|object)} The requested info(s).\n     */\n\n\n    this.info = function (about) {\n      var values = {\n        size: _viewPortSize,\n        // contains height or width (in regard to orientation);\n        vertical: _options.vertical,\n        scrollPos: _scrollPos,\n        scrollDirection: _scrollDirection,\n        container: _options.container,\n        isDocument: _isDocument\n      };\n\n      if (!arguments.length) {\n        // get all as an object\n        return values;\n      } else if (values[about] !== undefined) {\n        return values[about];\n      } else {\n        log(1, \"ERROR: option \\\"\" + about + \"\\\" is not available\");\n        return;\n      }\n    };\n    /**\n     * **Get** or **Set** the current loglevel option value.\n     * @public\n     *\n     * @example\n     * // get the current value\n     * var loglevel = controller.loglevel();\n     *\n     * // set a new value\n     * controller.loglevel(3);\n     *\n     * @param {number} [newLoglevel] - The new loglevel setting of the Controller. `[0-3]`\n     * @returns {(number|Controller)} Current loglevel or parent object for chaining.\n     */\n\n\n    this.loglevel = function (newLoglevel) {\n      if (!arguments.length) {\n        // get\n        return _options.loglevel;\n      } else if (_options.loglevel != newLoglevel) {\n        // set\n        _options.loglevel = newLoglevel;\n      }\n\n      return Controller;\n    };\n    /**\n     * **Get** or **Set** the current enabled state of the controller.  \n     * This can be used to disable all Scenes connected to the controller without destroying or removing them.\n     * @public\n     *\n     * @example\n     * // get the current value\n     * var enabled = controller.enabled();\n     *\n     * // disable the controller\n     * controller.enabled(false);\n     *\n     * @param {boolean} [newState] - The new enabled state of the controller `true` or `false`.\n     * @returns {(boolean|Controller)} Current enabled state or parent object for chaining.\n     */\n\n\n    this.enabled = function (newState) {\n      if (!arguments.length) {\n        // get\n        return _enabled;\n      } else if (_enabled != newState) {\n        // set\n        _enabled = !!newState;\n        Controller.updateScene(_sceneObjects, true);\n      }\n\n      return Controller;\n    };\n    /**\n     * Destroy the Controller, all Scenes and everything.\n     * @public\n     *\n     * @example\n     * // without resetting the scenes\n     * controller = controller.destroy();\n     *\n     * // with scene reset\n     * controller = controller.destroy(true);\n     *\n     * @param {boolean} [resetScenes=false] - If `true` the pins and tweens (if existent) of all scenes will be reset.\n     * @returns {null} Null to unset handler variables.\n     */\n\n\n    this.destroy = function (resetScenes) {\n      window.clearTimeout(_refreshTimeout);\n      var i = _sceneObjects.length;\n\n      while (i--) {\n        _sceneObjects[i].destroy(resetScenes);\n      }\n\n      _options.container.removeEventListener(\"resize\", onChange);\n\n      _options.container.removeEventListener(\"scroll\", onChange);\n\n      _util.cAF(_updateTimeout);\n\n      log(3, \"destroyed \" + NAMESPACE + \" (reset: \" + (resetScenes ? \"true\" : \"false\") + \")\");\n      return null;\n    }; // INIT\n\n\n    construct();\n    return Controller;\n  }; // store pagewide controller options\n\n\n  var CONTROLLER_OPTIONS = {\n    defaults: {\n      container: window,\n      vertical: true,\n      globalSceneOptions: {},\n      loglevel: 2,\n      refreshInterval: 100\n    }\n  };\n  /*\n   * method used to add an option to ScrollMagic Scenes.\n   */\n\n  ScrollMagic.Controller.addOption = function (name, defaultValue) {\n    CONTROLLER_OPTIONS.defaults[name] = defaultValue;\n  }; // instance extension function for plugins\n\n\n  ScrollMagic.Controller.extend = function (extension) {\n    var oldClass = this;\n\n    ScrollMagic.Controller = function () {\n      oldClass.apply(this, arguments);\n      this.$super = _util.extend({}, this); // copy parent state\n\n      return extension.apply(this, arguments) || this;\n    };\n\n    _util.extend(ScrollMagic.Controller, oldClass); // copy properties\n\n\n    ScrollMagic.Controller.prototype = oldClass.prototype; // copy prototype\n\n    ScrollMagic.Controller.prototype.constructor = ScrollMagic.Controller; // restore constructor\n  };\n  /**\n   * A Scene defines where the controller should react and how.\n   *\n   * @class\n   *\n   * @example\n   * // create a standard scene and add it to a controller\n   * new ScrollMagic.Scene()\n   *\t\t.addTo(controller);\n   *\n   * // create a scene with custom options and assign a handler to it.\n   * var scene = new ScrollMagic.Scene({\n   * \t\tduration: 100,\n   *\t\toffset: 200,\n   *\t\ttriggerHook: \"onEnter\",\n   *\t\treverse: false\n   * });\n   *\n   * @param {object} [options] - Options for the Scene. The options can be updated at any time.  \n   Instead of setting the options for each scene individually you can also set them globally in the controller as the controllers `globalSceneOptions` option. The object accepts the same properties as the ones below.  \n   When a scene is added to the controller the options defined using the Scene constructor will be overwritten by those set in `globalSceneOptions`.\n   * @param {(number|function)} [options.duration=0] - The duration of the scene. \n   If `0` tweens will auto-play when reaching the scene start point, pins will be pinned indefinetly starting at the start position.  \n   A function retuning the duration value is also supported. Please see `Scene.duration()` for details.\n   * @param {number} [options.offset=0] - Offset Value for the Trigger Position. If no triggerElement is defined this will be the scroll distance from the start of the page, after which the scene will start.\n   * @param {(string|object)} [options.triggerElement=null] - Selector or DOM object that defines the start of the scene. If undefined the scene will start right at the start of the page (unless an offset is set).\n   * @param {(number|string)} [options.triggerHook=\"onCenter\"] - Can be a number between 0 and 1 defining the position of the trigger Hook in relation to the viewport.  \n   Can also be defined using a string:\n   ** `\"onEnter\"` => `1`\n   ** `\"onCenter\"` => `0.5`\n   ** `\"onLeave\"` => `0`\n   * @param {boolean} [options.reverse=true] - Should the scene reverse, when scrolling up?\n   * @param {number} [options.loglevel=2] - Loglevel for debugging. Note that logging is disabled in the minified version of ScrollMagic.\n   ** `0` => silent\n   ** `1` => errors\n   ** `2` => errors, warnings\n   ** `3` => errors, warnings, debuginfo\n   * \n   */\n\n\n  ScrollMagic.Scene = function (options) {\n    /*\n    \t * ----------------------------------------------------------------\n    \t * settings\n    \t * ----------------------------------------------------------------\n    \t */\n    var NAMESPACE = 'ScrollMagic.Scene',\n        SCENE_STATE_BEFORE = 'BEFORE',\n        SCENE_STATE_DURING = 'DURING',\n        SCENE_STATE_AFTER = 'AFTER',\n        DEFAULT_OPTIONS = SCENE_OPTIONS.defaults;\n    /*\n    \t * ----------------------------------------------------------------\n    \t * private vars\n    \t * ----------------------------------------------------------------\n    \t */\n\n    var Scene = this,\n        _options = _util.extend({}, DEFAULT_OPTIONS, options),\n        _state = SCENE_STATE_BEFORE,\n        _progress = 0,\n        _scrollOffset = {\n      start: 0,\n      end: 0\n    },\n        // reflects the controllers's scroll position for the start and end of the scene respectively\n    _triggerPos = 0,\n        _enabled = true,\n        _durationUpdateMethod,\n        _controller;\n    /**\n     * Internal constructor function of the ScrollMagic Scene\n     * @private\n     */\n\n\n    var construct = function construct() {\n      for (var key in _options) {\n        // check supplied options\n        if (!DEFAULT_OPTIONS.hasOwnProperty(key)) {\n          log(2, \"WARNING: Unknown option \\\"\" + key + \"\\\"\");\n          delete _options[key];\n        }\n      } // add getters/setters for all possible options\n\n\n      for (var optionName in DEFAULT_OPTIONS) {\n        addSceneOption(optionName);\n      } // validate all options\n\n\n      validateOption();\n    };\n    /*\n     * ----------------------------------------------------------------\n     * Event Management\n     * ----------------------------------------------------------------\n     */\n\n\n    var _listeners = {};\n    /**\n     * Scene start event.  \n     * Fires whenever the scroll position its the starting point of the scene.  \n     * It will also fire when scrolling back up going over the start position of the scene. If you want something to happen only when scrolling down/right, use the scrollDirection parameter passed to the callback.\n     *\n     * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\n     *\n     * @event ScrollMagic.Scene#start\n     *\n     * @example\n     * scene.on(\"start\", function (event) {\n     * \tconsole.log(\"Hit start point of scene.\");\n     * });\n     *\n     * @property {object} event - The event Object passed to each callback\n     * @property {string} event.type - The name of the event\n     * @property {Scene} event.target - The Scene object that triggered this event\n     * @property {number} event.progress - Reflects the current progress of the scene\n     * @property {string} event.state - The current state of the scene `\"BEFORE\"` or `\"DURING\"`\n     * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\n     */\n\n    /**\n     * Scene end event.  \n     * Fires whenever the scroll position its the ending point of the scene.  \n     * It will also fire when scrolling back up from after the scene and going over its end position. If you want something to happen only when scrolling down/right, use the scrollDirection parameter passed to the callback.\n     *\n     * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\n     *\n     * @event ScrollMagic.Scene#end\n     *\n     * @example\n     * scene.on(\"end\", function (event) {\n     * \tconsole.log(\"Hit end point of scene.\");\n     * });\n     *\n     * @property {object} event - The event Object passed to each callback\n     * @property {string} event.type - The name of the event\n     * @property {Scene} event.target - The Scene object that triggered this event\n     * @property {number} event.progress - Reflects the current progress of the scene\n     * @property {string} event.state - The current state of the scene `\"DURING\"` or `\"AFTER\"`\n     * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\n     */\n\n    /**\n     * Scene enter event.  \n     * Fires whenever the scene enters the \"DURING\" state.  \n     * Keep in mind that it doesn't matter if the scene plays forward or backward: This event always fires when the scene enters its active scroll timeframe, regardless of the scroll-direction.\n     *\n     * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\n     *\n     * @event ScrollMagic.Scene#enter\n     *\n     * @example\n     * scene.on(\"enter\", function (event) {\n     * \tconsole.log(\"Scene entered.\");\n     * });\n     *\n     * @property {object} event - The event Object passed to each callback\n     * @property {string} event.type - The name of the event\n     * @property {Scene} event.target - The Scene object that triggered this event\n     * @property {number} event.progress - Reflects the current progress of the scene\n     * @property {string} event.state - The current state of the scene - always `\"DURING\"`\n     * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\n     */\n\n    /**\n     * Scene leave event.  \n     * Fires whenever the scene's state goes from \"DURING\" to either \"BEFORE\" or \"AFTER\".  \n     * Keep in mind that it doesn't matter if the scene plays forward or backward: This event always fires when the scene leaves its active scroll timeframe, regardless of the scroll-direction.\n     *\n     * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\n     *\n     * @event ScrollMagic.Scene#leave\n     *\n     * @example\n     * scene.on(\"leave\", function (event) {\n     * \tconsole.log(\"Scene left.\");\n     * });\n     *\n     * @property {object} event - The event Object passed to each callback\n     * @property {string} event.type - The name of the event\n     * @property {Scene} event.target - The Scene object that triggered this event\n     * @property {number} event.progress - Reflects the current progress of the scene\n     * @property {string} event.state - The current state of the scene `\"BEFORE\"` or `\"AFTER\"`\n     * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\n     */\n\n    /**\n     * Scene update event.  \n     * Fires whenever the scene is updated (but not necessarily changes the progress).\n     *\n     * @event ScrollMagic.Scene#update\n     *\n     * @example\n     * scene.on(\"update\", function (event) {\n     * \tconsole.log(\"Scene updated.\");\n     * });\n     *\n     * @property {object} event - The event Object passed to each callback\n     * @property {string} event.type - The name of the event\n     * @property {Scene} event.target - The Scene object that triggered this event\n     * @property {number} event.startPos - The starting position of the scene (in relation to the conainer)\n     * @property {number} event.endPos - The ending position of the scene (in relation to the conainer)\n     * @property {number} event.scrollPos - The current scroll position of the container\n     */\n\n    /**\n     * Scene progress event.  \n     * Fires whenever the progress of the scene changes.\n     *\n     * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.\n     *\n     * @event ScrollMagic.Scene#progress\n     *\n     * @example\n     * scene.on(\"progress\", function (event) {\n     * \tconsole.log(\"Scene progress changed to \" + event.progress);\n     * });\n     *\n     * @property {object} event - The event Object passed to each callback\n     * @property {string} event.type - The name of the event\n     * @property {Scene} event.target - The Scene object that triggered this event\n     * @property {number} event.progress - Reflects the current progress of the scene\n     * @property {string} event.state - The current state of the scene `\"BEFORE\"`, `\"DURING\"` or `\"AFTER\"`\n     * @property {string} event.scrollDirection - Indicates which way we are scrolling `\"PAUSED\"`, `\"FORWARD\"` or `\"REVERSE\"`\n     */\n\n    /**\n     * Scene change event.  \n     * Fires whenvever a property of the scene is changed.\n     *\n     * @event ScrollMagic.Scene#change\n     *\n     * @example\n     * scene.on(\"change\", function (event) {\n     * \tconsole.log(\"Scene Property \\\"\" + event.what + \"\\\" changed to \" + event.newval);\n     * });\n     *\n     * @property {object} event - The event Object passed to each callback\n     * @property {string} event.type - The name of the event\n     * @property {Scene} event.target - The Scene object that triggered this event\n     * @property {string} event.what - Indicates what value has been changed\n     * @property {mixed} event.newval - The new value of the changed property\n     */\n\n    /**\n     * Scene shift event.  \n     * Fires whenvever the start or end **scroll offset** of the scene change.\n     * This happens explicitely, when one of these values change: `offset`, `duration` or `triggerHook`.\n     * It will fire implicitly when the `triggerElement` changes, if the new element has a different position (most cases).\n     * It will also fire implicitly when the size of the container changes and the triggerHook is anything other than `onLeave`.\n     *\n     * @event ScrollMagic.Scene#shift\n     * @since 1.1.0\n     *\n     * @example\n     * scene.on(\"shift\", function (event) {\n     * \tconsole.log(\"Scene moved, because the \" + event.reason + \" has changed.)\");\n     * });\n     *\n     * @property {object} event - The event Object passed to each callback\n     * @property {string} event.type - The name of the event\n     * @property {Scene} event.target - The Scene object that triggered this event\n     * @property {string} event.reason - Indicates why the scene has shifted\n     */\n\n    /**\n     * Scene destroy event.  \n     * Fires whenvever the scene is destroyed.\n     * This can be used to tidy up custom behaviour used in events.\n     *\n     * @event ScrollMagic.Scene#destroy\n     * @since 1.1.0\n     *\n     * @example\n     * scene.on(\"enter\", function (event) {\n     *        // add custom action\n     *        $(\"#my-elem\").left(\"200\");\n     *      })\n     *      .on(\"destroy\", function (event) {\n     *        // reset my element to start position\n     *        if (event.reset) {\n     *          $(\"#my-elem\").left(\"0\");\n     *        }\n     *      });\n     *\n     * @property {object} event - The event Object passed to each callback\n     * @property {string} event.type - The name of the event\n     * @property {Scene} event.target - The Scene object that triggered this event\n     * @property {boolean} event.reset - Indicates if the destroy method was called with reset `true` or `false`.\n     */\n\n    /**\n     * Scene add event.  \n     * Fires when the scene is added to a controller.\n     * This is mostly used by plugins to know that change might be due.\n     *\n     * @event ScrollMagic.Scene#add\n     * @since 2.0.0\n     *\n     * @example\n     * scene.on(\"add\", function (event) {\n     * \tconsole.log('Scene was added to a new controller.');\n     * });\n     *\n     * @property {object} event - The event Object passed to each callback\n     * @property {string} event.type - The name of the event\n     * @property {Scene} event.target - The Scene object that triggered this event\n     * @property {boolean} event.controller - The controller object the scene was added to.\n     */\n\n    /**\n     * Scene remove event.  \n     * Fires when the scene is removed from a controller.\n     * This is mostly used by plugins to know that change might be due.\n     *\n     * @event ScrollMagic.Scene#remove\n     * @since 2.0.0\n     *\n     * @example\n     * scene.on(\"remove\", function (event) {\n     * \tconsole.log('Scene was removed from its controller.');\n     * });\n     *\n     * @property {object} event - The event Object passed to each callback\n     * @property {string} event.type - The name of the event\n     * @property {Scene} event.target - The Scene object that triggered this event\n     */\n\n    /**\n     * Add one ore more event listener.  \n     * The callback function will be fired at the respective event, and an object containing relevant data will be passed to the callback.\n     * @method ScrollMagic.Scene#on\n     *\n     * @example\n     * function callback (event) {\n     * \t\tconsole.log(\"Event fired! (\" + event.type + \")\");\n     * }\n     * // add listeners\n     * scene.on(\"change update progress start end enter leave\", callback);\n     *\n     * @param {string} names - The name or names of the event the callback should be attached to.\n     * @param {function} callback - A function that should be executed, when the event is dispatched. An event object will be passed to the callback.\n     * @returns {Scene} Parent object for chaining.\n     */\n\n    this.on = function (names, callback) {\n      if (_util.type.Function(callback)) {\n        names = names.trim().split(' ');\n        names.forEach(function (fullname) {\n          var nameparts = fullname.split('.'),\n              eventname = nameparts[0],\n              namespace = nameparts[1];\n\n          if (eventname != \"*\") {\n            // disallow wildcards\n            if (!_listeners[eventname]) {\n              _listeners[eventname] = [];\n            }\n\n            _listeners[eventname].push({\n              namespace: namespace || '',\n              callback: callback\n            });\n          }\n        });\n      } else {\n        log(1, \"ERROR when calling '.on()': Supplied callback for '\" + names + \"' is not a valid function!\");\n      }\n\n      return Scene;\n    };\n    /**\n     * Remove one or more event listener.\n     * @method ScrollMagic.Scene#off\n     *\n     * @example\n     * function callback (event) {\n     * \t\tconsole.log(\"Event fired! (\" + event.type + \")\");\n     * }\n     * // add listeners\n     * scene.on(\"change update\", callback);\n     * // remove listeners\n     * scene.off(\"change update\", callback);\n     *\n     * @param {string} names - The name or names of the event that should be removed.\n     * @param {function} [callback] - A specific callback function that should be removed. If none is passed all callbacks to the event listener will be removed.\n     * @returns {Scene} Parent object for chaining.\n     */\n\n\n    this.off = function (names, callback) {\n      if (!names) {\n        log(1, \"ERROR: Invalid event name supplied.\");\n        return Scene;\n      }\n\n      names = names.trim().split(' ');\n      names.forEach(function (fullname, key) {\n        var nameparts = fullname.split('.'),\n            eventname = nameparts[0],\n            namespace = nameparts[1] || '',\n            removeList = eventname === '*' ? Object.keys(_listeners) : [eventname];\n        removeList.forEach(function (remove) {\n          var list = _listeners[remove] || [],\n              i = list.length;\n\n          while (i--) {\n            var listener = list[i];\n\n            if (listener && (namespace === listener.namespace || namespace === '*') && (!callback || callback == listener.callback)) {\n              list.splice(i, 1);\n            }\n          }\n\n          if (!list.length) {\n            delete _listeners[remove];\n          }\n        });\n      });\n      return Scene;\n    };\n    /**\n     * Trigger an event.\n     * @method ScrollMagic.Scene#trigger\n     *\n     * @example\n     * this.trigger(\"change\");\n     *\n     * @param {string} name - The name of the event that should be triggered.\n     * @param {object} [vars] - An object containing info that should be passed to the callback.\n     * @returns {Scene} Parent object for chaining.\n     */\n\n\n    this.trigger = function (name, vars) {\n      if (name) {\n        var nameparts = name.trim().split('.'),\n            eventname = nameparts[0],\n            namespace = nameparts[1],\n            listeners = _listeners[eventname];\n        log(3, 'event fired:', eventname, vars ? \"->\" : '', vars || '');\n\n        if (listeners) {\n          listeners.forEach(function (listener, key) {\n            if (!namespace || namespace === listener.namespace) {\n              listener.callback.call(Scene, new ScrollMagic.Event(eventname, listener.namespace, Scene, vars));\n            }\n          });\n        }\n      } else {\n        log(1, \"ERROR: Invalid event name supplied.\");\n      }\n\n      return Scene;\n    }; // set event listeners\n\n\n    Scene.on(\"change.internal\", function (e) {\n      if (e.what !== \"loglevel\" && e.what !== \"tweenChanges\") {\n        // no need for a scene update scene with these options...\n        if (e.what === \"triggerElement\") {\n          updateTriggerElementPosition();\n        } else if (e.what === \"reverse\") {\n          // the only property left that may have an impact on the current scene state. Everything else is handled by the shift event.\n          Scene.update();\n        }\n      }\n    }).on(\"shift.internal\", function (e) {\n      updateScrollOffset();\n      Scene.update(); // update scene to reflect new position\n    });\n    /**\n     * Send a debug message to the console.\n     * @private\n     * but provided publicly with _log for plugins\n     *\n     * @param {number} loglevel - The loglevel required to initiate output for the message.\n     * @param {...mixed} output - One or more variables that should be passed to the console.\n     */\n\n    var log = this._log = function (loglevel, output) {\n      if (_options.loglevel >= loglevel) {\n        Array.prototype.splice.call(arguments, 1, 0, \"(\" + NAMESPACE + \") ->\");\n\n        _util.log.apply(window, arguments);\n      }\n    };\n    /**\n     * Add the scene to a controller.  \n     * This is the equivalent to `Controller.addScene(scene)`.\n     * @method ScrollMagic.Scene#addTo\n     *\n     * @example\n     * // add a scene to a ScrollMagic Controller\n     * scene.addTo(controller);\n     *\n     * @param {ScrollMagic.Controller} controller - The controller to which the scene should be added.\n     * @returns {Scene} Parent object for chaining.\n     */\n\n\n    this.addTo = function (controller) {\n      if (!(controller instanceof ScrollMagic.Controller)) {\n        log(1, \"ERROR: supplied argument of 'addTo()' is not a valid ScrollMagic Controller\");\n      } else if (_controller != controller) {\n        // new controller\n        if (_controller) {\n          // was associated to a different controller before, so remove it...\n          _controller.removeScene(Scene);\n        }\n\n        _controller = controller;\n        validateOption();\n        updateDuration(true);\n        updateTriggerElementPosition(true);\n        updateScrollOffset();\n\n        _controller.info(\"container\").addEventListener('resize', onContainerResize);\n\n        controller.addScene(Scene);\n        Scene.trigger(\"add\", {\n          controller: _controller\n        });\n        log(3, \"added \" + NAMESPACE + \" to controller\");\n        Scene.update();\n      }\n\n      return Scene;\n    };\n    /**\n     * **Get** or **Set** the current enabled state of the scene.  \n     * This can be used to disable this scene without removing or destroying it.\n     * @method ScrollMagic.Scene#enabled\n     *\n     * @example\n     * // get the current value\n     * var enabled = scene.enabled();\n     *\n     * // disable the scene\n     * scene.enabled(false);\n     *\n     * @param {boolean} [newState] - The new enabled state of the scene `true` or `false`.\n     * @returns {(boolean|Scene)} Current enabled state or parent object for chaining.\n     */\n\n\n    this.enabled = function (newState) {\n      if (!arguments.length) {\n        // get\n        return _enabled;\n      } else if (_enabled != newState) {\n        // set\n        _enabled = !!newState;\n        Scene.update(true);\n      }\n\n      return Scene;\n    };\n    /**\n     * Remove the scene from the controller.  \n     * This is the equivalent to `Controller.removeScene(scene)`.\n     * The scene will not be updated anymore until you readd it to a controller.\n     * To remove the pin or the tween you need to call removeTween() or removePin() respectively.\n     * @method ScrollMagic.Scene#remove\n     * @example\n     * // remove the scene from its controller\n     * scene.remove();\n     *\n     * @returns {Scene} Parent object for chaining.\n     */\n\n\n    this.remove = function () {\n      if (_controller) {\n        _controller.info(\"container\").removeEventListener('resize', onContainerResize);\n\n        var tmpParent = _controller;\n        _controller = undefined;\n        tmpParent.removeScene(Scene);\n        Scene.trigger(\"remove\");\n        log(3, \"removed \" + NAMESPACE + \" from controller\");\n      }\n\n      return Scene;\n    };\n    /**\n     * Destroy the scene and everything.\n     * @method ScrollMagic.Scene#destroy\n     * @example\n     * // destroy the scene without resetting the pin and tween to their initial positions\n     * scene = scene.destroy();\n     *\n     * // destroy the scene and reset the pin and tween\n     * scene = scene.destroy(true);\n     *\n     * @param {boolean} [reset=false] - If `true` the pin and tween (if existent) will be reset.\n     * @returns {null} Null to unset handler variables.\n     */\n\n\n    this.destroy = function (reset) {\n      Scene.trigger(\"destroy\", {\n        reset: reset\n      });\n      Scene.remove();\n      Scene.off(\"*.*\");\n      log(3, \"destroyed \" + NAMESPACE + \" (reset: \" + (reset ? \"true\" : \"false\") + \")\");\n      return null;\n    };\n    /**\n     * Updates the Scene to reflect the current state.  \n     * This is the equivalent to `Controller.updateScene(scene, immediately)`.  \n     * The update method calculates the scene's start and end position (based on the trigger element, trigger hook, duration and offset) and checks it against the current scroll position of the container.  \n     * It then updates the current scene state accordingly (or does nothing, if the state is already correct) \u2013 Pins will be set to their correct position and tweens will be updated to their correct progress.\n     * This means an update doesn't necessarily result in a progress change. The `progress` event will be fired if the progress has indeed changed between this update and the last.  \n     * _**NOTE:** This method gets called constantly whenever ScrollMagic detects a change. The only application for you is if you change something outside of the realm of ScrollMagic, like moving the trigger or changing tween parameters._\n     * @method ScrollMagic.Scene#update\n     * @example\n     * // update the scene on next tick\n     * scene.update();\n     *\n     * // update the scene immediately\n     * scene.update(true);\n     *\n     * @fires Scene.update\n     *\n     * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle (better performance).\n     * @returns {Scene} Parent object for chaining.\n     */\n\n\n    this.update = function (immediately) {\n      if (_controller) {\n        if (immediately) {\n          if (_controller.enabled() && _enabled) {\n            var scrollPos = _controller.info(\"scrollPos\"),\n                newProgress;\n\n            if (_options.duration > 0) {\n              newProgress = (scrollPos - _scrollOffset.start) / (_scrollOffset.end - _scrollOffset.start);\n            } else {\n              newProgress = scrollPos >= _scrollOffset.start ? 1 : 0;\n            }\n\n            Scene.trigger(\"update\", {\n              startPos: _scrollOffset.start,\n              endPos: _scrollOffset.end,\n              scrollPos: scrollPos\n            });\n            Scene.progress(newProgress);\n          } else if (_pin && _state === SCENE_STATE_DURING) {\n            updatePinState(true); // unpin in position\n          }\n        } else {\n          _controller.updateScene(Scene, false);\n        }\n      }\n\n      return Scene;\n    };\n    /**\n     * Updates dynamic scene variables like the trigger element position or the duration.\n     * This method is automatically called in regular intervals from the controller. See {@link ScrollMagic.Controller} option `refreshInterval`.\n     * \n     * You can call it to minimize lag, for example when you intentionally change the position of the triggerElement.\n     * If you don't it will simply be updated in the next refresh interval of the container, which is usually sufficient.\n     *\n     * @method ScrollMagic.Scene#refresh\n     * @since 1.1.0\n     * @example\n     * scene = new ScrollMagic.Scene({triggerElement: \"#trigger\"});\n     * \n     * // change the position of the trigger\n     * $(\"#trigger\").css(\"top\", 500);\n     * // immediately let the scene know of this change\n     * scene.refresh();\n     *\n     * @fires {@link Scene.shift}, if the trigger element position or the duration changed\n     * @fires {@link Scene.change}, if the duration changed\n     *\n     * @returns {Scene} Parent object for chaining.\n     */\n\n\n    this.refresh = function () {\n      updateDuration();\n      updateTriggerElementPosition(); // update trigger element position\n\n      return Scene;\n    };\n    /**\n     * **Get** or **Set** the scene's progress.  \n     * Usually it shouldn't be necessary to use this as a setter, as it is set automatically by scene.update().  \n     * The order in which the events are fired depends on the duration of the scene:\n     *  1. Scenes with `duration == 0`:  \n     *  Scenes that have no duration by definition have no ending. Thus the `end` event will never be fired.  \n     *  When the trigger position of the scene is passed the events are always fired in this order:  \n     *  `enter`, `start`, `progress` when scrolling forward  \n     *  and  \n     *  `progress`, `start`, `leave` when scrolling in reverse\n     *  2. Scenes with `duration > 0`:  \n     *  Scenes with a set duration have a defined start and end point.  \n     *  When scrolling past the start position of the scene it will fire these events in this order:  \n     *  `enter`, `start`, `progress`  \n     *  When continuing to scroll and passing the end point it will fire these events:  \n     *  `progress`, `end`, `leave`  \n     *  When reversing through the end point these events are fired:  \n     *  `enter`, `end`, `progress`  \n     *  And when continuing to scroll past the start position in reverse it will fire:  \n     *  `progress`, `start`, `leave`  \n     *  In between start and end the `progress` event will be called constantly, whenever the progress changes.\n     * \n     * In short:  \n     * `enter` events will always trigger **before** the progress update and `leave` envents will trigger **after** the progress update.  \n     * `start` and `end` will always trigger at their respective position.\n     * \n     * Please review the event descriptions for details on the events and the event object that is passed to the callback.\n     * \n     * @method ScrollMagic.Scene#progress\n     * @example\n     * // get the current scene progress\n     * var progress = scene.progress();\n     *\n     * // set new scene progress\n     * scene.progress(0.3);\n     *\n     * @fires {@link Scene.enter}, when used as setter\n     * @fires {@link Scene.start}, when used as setter\n     * @fires {@link Scene.progress}, when used as setter\n     * @fires {@link Scene.end}, when used as setter\n     * @fires {@link Scene.leave}, when used as setter\n     *\n     * @param {number} [progress] - The new progress value of the scene `[0-1]`.\n     * @returns {number} `get` -  Current scene progress.\n     * @returns {Scene} `set` -  Parent object for chaining.\n     */\n\n\n    this.progress = function (progress) {\n      if (!arguments.length) {\n        // get\n        return _progress;\n      } else {\n        // set\n        var doUpdate = false,\n            oldState = _state,\n            scrollDirection = _controller ? _controller.info(\"scrollDirection\") : 'PAUSED',\n            reverseOrForward = _options.reverse || progress >= _progress;\n\n        if (_options.duration === 0) {\n          // zero duration scenes\n          doUpdate = _progress != progress;\n          _progress = progress < 1 && reverseOrForward ? 0 : 1;\n          _state = _progress === 0 ? SCENE_STATE_BEFORE : SCENE_STATE_DURING;\n        } else {\n          // scenes with start and end\n          if (progress < 0 && _state !== SCENE_STATE_BEFORE && reverseOrForward) {\n            // go back to initial state\n            _progress = 0;\n            _state = SCENE_STATE_BEFORE;\n            doUpdate = true;\n          } else if (progress >= 0 && progress < 1 && reverseOrForward) {\n            _progress = progress;\n            _state = SCENE_STATE_DURING;\n            doUpdate = true;\n          } else if (progress >= 1 && _state !== SCENE_STATE_AFTER) {\n            _progress = 1;\n            _state = SCENE_STATE_AFTER;\n            doUpdate = true;\n          } else if (_state === SCENE_STATE_DURING && !reverseOrForward) {\n            updatePinState(); // in case we scrolled backwards mid-scene and reverse is disabled => update the pin position, so it doesn't move back as well.\n          }\n        }\n\n        if (doUpdate) {\n          // fire events\n          var eventVars = {\n            progress: _progress,\n            state: _state,\n            scrollDirection: scrollDirection\n          },\n              stateChanged = _state != oldState;\n\n          var trigger = function trigger(eventName) {\n            // tmp helper to simplify code\n            Scene.trigger(eventName, eventVars);\n          };\n\n          if (stateChanged) {\n            // enter events\n            if (oldState !== SCENE_STATE_DURING) {\n              trigger(\"enter\");\n              trigger(oldState === SCENE_STATE_BEFORE ? \"start\" : \"end\");\n            }\n          }\n\n          trigger(\"progress\");\n\n          if (stateChanged) {\n            // leave events\n            if (_state !== SCENE_STATE_DURING) {\n              trigger(_state === SCENE_STATE_BEFORE ? \"start\" : \"end\");\n              trigger(\"leave\");\n            }\n          }\n        }\n\n        return Scene;\n      }\n    };\n    /**\n     * Update the start and end scrollOffset of the container.\n     * The positions reflect what the controller's scroll position will be at the start and end respectively.\n     * Is called, when:\n     *   - Scene event \"change\" is called with: offset, triggerHook, duration \n     *   - scroll container event \"resize\" is called\n     *   - the position of the triggerElement changes\n     *   - the controller changes -> addTo()\n     * @private\n     */\n\n\n    var updateScrollOffset = function updateScrollOffset() {\n      _scrollOffset = {\n        start: _triggerPos + _options.offset\n      };\n\n      if (_controller && _options.triggerElement) {\n        // take away triggerHook portion to get relative to top\n        _scrollOffset.start -= _controller.info(\"size\") * _options.triggerHook;\n      }\n\n      _scrollOffset.end = _scrollOffset.start + _options.duration;\n    };\n    /**\n     * Updates the duration if set to a dynamic function.\n     * This method is called when the scene is added to a controller and in regular intervals from the controller through scene.refresh().\n     * \n     * @fires {@link Scene.change}, if the duration changed\n     * @fires {@link Scene.shift}, if the duration changed\n     *\n     * @param {boolean} [suppressEvents=false] - If true the shift event will be suppressed.\n     * @private\n     */\n\n\n    var updateDuration = function updateDuration(suppressEvents) {\n      // update duration\n      if (_durationUpdateMethod) {\n        var varname = \"duration\";\n\n        if (changeOption(varname, _durationUpdateMethod.call(Scene)) && !suppressEvents) {\n          // set\n          Scene.trigger(\"change\", {\n            what: varname,\n            newval: _options[varname]\n          });\n          Scene.trigger(\"shift\", {\n            reason: varname\n          });\n        }\n      }\n    };\n    /**\n     * Updates the position of the triggerElement, if present.\n     * This method is called ...\n     *  - ... when the triggerElement is changed\n     *  - ... when the scene is added to a (new) controller\n     *  - ... in regular intervals from the controller through scene.refresh().\n     * \n     * @fires {@link Scene.shift}, if the position changed\n     *\n     * @param {boolean} [suppressEvents=false] - If true the shift event will be suppressed.\n     * @private\n     */\n\n\n    var updateTriggerElementPosition = function updateTriggerElementPosition(suppressEvents) {\n      var elementPos = 0,\n          telem = _options.triggerElement;\n\n      if (_controller && (telem || _triggerPos > 0)) {\n        // either an element exists or was removed and the triggerPos is still > 0\n        if (telem) {\n          // there currently a triggerElement set\n          if (telem.parentNode) {\n            // check if element is still attached to DOM\n            var controllerInfo = _controller.info(),\n                containerOffset = _util.get.offset(controllerInfo.container),\n                // container position is needed because element offset is returned in relation to document, not in relation to container.\n            param = controllerInfo.vertical ? \"top\" : \"left\"; // which param is of interest ?\n            // if parent is spacer, use spacer position instead so correct start position is returned for pinned elements.\n\n\n            while (telem.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) {\n              telem = telem.parentNode;\n            }\n\n            var elementOffset = _util.get.offset(telem);\n\n            if (!controllerInfo.isDocument) {\n              // container is not the document root, so substract scroll Position to get correct trigger element position relative to scrollcontent\n              containerOffset[param] -= _controller.scrollPos();\n            }\n\n            elementPos = elementOffset[param] - containerOffset[param];\n          } else {\n            // there was an element, but it was removed from DOM\n            log(2, \"WARNING: triggerElement was removed from DOM and will be reset to\", undefined);\n            Scene.triggerElement(undefined); // unset, so a change event is triggered\n          }\n        }\n\n        var changed = elementPos != _triggerPos;\n        _triggerPos = elementPos;\n\n        if (changed && !suppressEvents) {\n          Scene.trigger(\"shift\", {\n            reason: \"triggerElementPosition\"\n          });\n        }\n      }\n    };\n    /**\n     * Trigger a shift event, when the container is resized and the triggerHook is > 1.\n     * @private\n     */\n\n\n    var onContainerResize = function onContainerResize(e) {\n      if (_options.triggerHook > 0) {\n        Scene.trigger(\"shift\", {\n          reason: \"containerResize\"\n        });\n      }\n    };\n\n    var _validate = _util.extend(SCENE_OPTIONS.validate, {\n      // validation for duration handled internally for reference to private var _durationMethod\n      duration: function duration(val) {\n        if (_util.type.String(val) && val.match(/^(\\.|\\d)*\\d+%$/)) {\n          // percentage value\n          var perc = parseFloat(val) / 100;\n\n          val = function val() {\n            return _controller ? _controller.info(\"size\") * perc : 0;\n          };\n        }\n\n        if (_util.type.Function(val)) {\n          // function\n          _durationUpdateMethod = val;\n\n          try {\n            val = parseFloat(_durationUpdateMethod());\n          } catch (e) {\n            val = -1; // will cause error below\n          }\n        } // val has to be float\n\n\n        val = parseFloat(val);\n\n        if (!_util.type.Number(val) || val < 0) {\n          if (_durationUpdateMethod) {\n            _durationUpdateMethod = undefined;\n            throw [\"Invalid return value of supplied function for option \\\"duration\\\":\", val];\n          } else {\n            throw [\"Invalid value for option \\\"duration\\\":\", val];\n          }\n        }\n\n        return val;\n      }\n    });\n    /**\n     * Checks the validity of a specific or all options and reset to default if neccessary.\n     * @private\n     */\n\n\n    var validateOption = function validateOption(check) {\n      check = arguments.length ? [check] : Object.keys(_validate);\n      check.forEach(function (optionName, key) {\n        var value;\n\n        if (_validate[optionName]) {\n          // there is a validation method for this option\n          try {\n            // validate value\n            value = _validate[optionName](_options[optionName]);\n          } catch (e) {\n            // validation failed -> reset to default\n            value = DEFAULT_OPTIONS[optionName];\n            var logMSG = _util.type.String(e) ? [e] : e;\n\n            if (_util.type.Array(logMSG)) {\n              logMSG[0] = \"ERROR: \" + logMSG[0];\n              logMSG.unshift(1); // loglevel 1 for error msg\n\n              log.apply(this, logMSG);\n            } else {\n              log(1, \"ERROR: Problem executing validation callback for option '\" + optionName + \"':\", e.message);\n            }\n          } finally {\n            _options[optionName] = value;\n          }\n        }\n      });\n    };\n    /**\n     * Helper used by the setter/getters for scene options\n     * @private\n     */\n\n\n    var changeOption = function changeOption(varname, newval) {\n      var changed = false,\n          oldval = _options[varname];\n\n      if (_options[varname] != newval) {\n        _options[varname] = newval;\n        validateOption(varname); // resets to default if necessary\n\n        changed = oldval != _options[varname];\n      }\n\n      return changed;\n    }; // generate getters/setters for all options\n\n\n    var addSceneOption = function addSceneOption(optionName) {\n      if (!Scene[optionName]) {\n        Scene[optionName] = function (newVal) {\n          if (!arguments.length) {\n            // get\n            return _options[optionName];\n          } else {\n            if (optionName === \"duration\") {\n              // new duration is set, so any previously set function must be unset\n              _durationUpdateMethod = undefined;\n            }\n\n            if (changeOption(optionName, newVal)) {\n              // set\n              Scene.trigger(\"change\", {\n                what: optionName,\n                newval: _options[optionName]\n              });\n\n              if (SCENE_OPTIONS.shifts.indexOf(optionName) > -1) {\n                Scene.trigger(\"shift\", {\n                  reason: optionName\n                });\n              }\n            }\n          }\n\n          return Scene;\n        };\n      }\n    };\n    /**\n     * **Get** or **Set** the duration option value.\n     * As a setter it also accepts a function returning a numeric value.  \n     * This is particularly useful for responsive setups.\n     *\n     * The duration is updated using the supplied function every time `Scene.refresh()` is called, which happens periodically from the controller (see ScrollMagic.Controller option `refreshInterval`).  \n     * _**NOTE:** Be aware that it's an easy way to kill performance, if you supply a function that has high CPU demand.  \n     * Even for size and position calculations it is recommended to use a variable to cache the value. (see example)  \n     * This counts double if you use the same function for multiple scenes._\n     *\n     * @method ScrollMagic.Scene#duration\n     * @example\n     * // get the current duration value\n     * var duration = scene.duration();\n     *\n     * // set a new duration\n     * scene.duration(300);\n     *\n     * // use a function to automatically adjust the duration to the window height.\n     * var durationValueCache;\n     * function getDuration () {\n     *   return durationValueCache;\n     * }\n     * function updateDuration (e) {\n     *   durationValueCache = window.innerHeight;\n     * }\n     * $(window).on(\"resize\", updateDuration); // update the duration when the window size changes\n     * $(window).triggerHandler(\"resize\"); // set to initial value\n     * scene.duration(getDuration); // supply duration method\n     *\n     * @fires {@link Scene.change}, when used as setter\n     * @fires {@link Scene.shift}, when used as setter\n     * @param {(number|function)} [newDuration] - The new duration of the scene.\n     * @returns {number} `get` -  Current scene duration.\n     * @returns {Scene} `set` -  Parent object for chaining.\n     */\n\n    /**\n     * **Get** or **Set** the offset option value.\n     * @method ScrollMagic.Scene#offset\n     * @example\n     * // get the current offset\n     * var offset = scene.offset();\n     *\n     * // set a new offset\n     * scene.offset(100);\n     *\n     * @fires {@link Scene.change}, when used as setter\n     * @fires {@link Scene.shift}, when used as setter\n     * @param {number} [newOffset] - The new offset of the scene.\n     * @returns {number} `get` -  Current scene offset.\n     * @returns {Scene} `set` -  Parent object for chaining.\n     */\n\n    /**\n     * **Get** or **Set** the triggerElement option value.\n     * Does **not** fire `Scene.shift`, because changing the trigger Element doesn't necessarily mean the start position changes. This will be determined in `Scene.refresh()`, which is automatically triggered.\n     * @method ScrollMagic.Scene#triggerElement\n     * @example\n     * // get the current triggerElement\n     * var triggerElement = scene.triggerElement();\n     *\n     * // set a new triggerElement using a selector\n     * scene.triggerElement(\"#trigger\");\n     * // set a new triggerElement using a DOM object\n     * scene.triggerElement(document.getElementById(\"trigger\"));\n     *\n     * @fires {@link Scene.change}, when used as setter\n     * @param {(string|object)} [newTriggerElement] - The new trigger element for the scene.\n     * @returns {(string|object)} `get` -  Current triggerElement.\n     * @returns {Scene} `set` -  Parent object for chaining.\n     */\n\n    /**\n     * **Get** or **Set** the triggerHook option value.\n     * @method ScrollMagic.Scene#triggerHook\n     * @example\n     * // get the current triggerHook value\n     * var triggerHook = scene.triggerHook();\n     *\n     * // set a new triggerHook using a string\n     * scene.triggerHook(\"onLeave\");\n     * // set a new triggerHook using a number\n     * scene.triggerHook(0.7);\n     *\n     * @fires {@link Scene.change}, when used as setter\n     * @fires {@link Scene.shift}, when used as setter\n     * @param {(number|string)} [newTriggerHook] - The new triggerHook of the scene. See {@link Scene} parameter description for value options.\n     * @returns {number} `get` -  Current triggerHook (ALWAYS numerical).\n     * @returns {Scene} `set` -  Parent object for chaining.\n     */\n\n    /**\n     * **Get** or **Set** the reverse option value.\n     * @method ScrollMagic.Scene#reverse\n     * @example\n     * // get the current reverse option\n     * var reverse = scene.reverse();\n     *\n     * // set new reverse option\n     * scene.reverse(false);\n     *\n     * @fires {@link Scene.change}, when used as setter\n     * @param {boolean} [newReverse] - The new reverse setting of the scene.\n     * @returns {boolean} `get` -  Current reverse option value.\n     * @returns {Scene} `set` -  Parent object for chaining.\n     */\n\n    /**\n     * **Get** or **Set** the loglevel option value.\n     * @method ScrollMagic.Scene#loglevel\n     * @example\n     * // get the current loglevel\n     * var loglevel = scene.loglevel();\n     *\n     * // set new loglevel\n     * scene.loglevel(3);\n     *\n     * @fires {@link Scene.change}, when used as setter\n     * @param {number} [newLoglevel] - The new loglevel setting of the scene. `[0-3]`\n     * @returns {number} `get` -  Current loglevel.\n     * @returns {Scene} `set` -  Parent object for chaining.\n     */\n\n    /**\n     * **Get** the associated controller.\n     * @method ScrollMagic.Scene#controller\n     * @example\n     * // get the controller of a scene\n     * var controller = scene.controller();\n     *\n     * @returns {ScrollMagic.Controller} Parent controller or `undefined`\n     */\n\n\n    this.controller = function () {\n      return _controller;\n    };\n    /**\n     * **Get** the current state.\n     * @method ScrollMagic.Scene#state\n     * @example\n     * // get the current state\n     * var state = scene.state();\n     *\n     * @returns {string} `\"BEFORE\"`, `\"DURING\"` or `\"AFTER\"`\n     */\n\n\n    this.state = function () {\n      return _state;\n    };\n    /**\n     * **Get** the current scroll offset for the start of the scene.  \n     * Mind, that the scrollOffset is related to the size of the container, if `triggerHook` is bigger than `0` (or `\"onLeave\"`).  \n     * This means, that resizing the container or changing the `triggerHook` will influence the scene's start offset.\n     * @method ScrollMagic.Scene#scrollOffset\n     * @example\n     * // get the current scroll offset for the start and end of the scene.\n     * var start = scene.scrollOffset();\n     * var end = scene.scrollOffset() + scene.duration();\n     * console.log(\"the scene starts at\", start, \"and ends at\", end);\n     *\n     * @returns {number} The scroll offset (of the container) at which the scene will trigger. Y value for vertical and X value for horizontal scrolls.\n     */\n\n\n    this.scrollOffset = function () {\n      return _scrollOffset.start;\n    };\n    /**\n     * **Get** the trigger position of the scene (including the value of the `offset` option).  \n     * @method ScrollMagic.Scene#triggerPosition\n     * @example\n     * // get the scene's trigger position\n     * var triggerPosition = scene.triggerPosition();\n     *\n     * @returns {number} Start position of the scene. Top position value for vertical and left position value for horizontal scrolls.\n     */\n\n\n    this.triggerPosition = function () {\n      var pos = _options.offset; // the offset is the basis\n\n      if (_controller) {\n        // get the trigger position\n        if (_options.triggerElement) {\n          // Element as trigger\n          pos += _triggerPos;\n        } else {\n          // return the height of the triggerHook to start at the beginning\n          pos += _controller.info(\"size\") * Scene.triggerHook();\n        }\n      }\n\n      return pos;\n    };\n\n    var _pin, _pinOptions;\n\n    Scene.on(\"shift.internal\", function (e) {\n      var durationChanged = e.reason === \"duration\";\n\n      if (_state === SCENE_STATE_AFTER && durationChanged || _state === SCENE_STATE_DURING && _options.duration === 0) {\n        // if [duration changed after a scene (inside scene progress updates pin position)] or [duration is 0, we are in pin phase and some other value changed].\n        updatePinState();\n      }\n\n      if (durationChanged) {\n        updatePinDimensions();\n      }\n    }).on(\"progress.internal\", function (e) {\n      updatePinState();\n    }).on(\"add.internal\", function (e) {\n      updatePinDimensions();\n    }).on(\"destroy.internal\", function (e) {\n      Scene.removePin(e.reset);\n    });\n    /**\n     * Update the pin state.\n     * @private\n     */\n\n    var updatePinState = function updatePinState(forceUnpin) {\n      if (_pin && _controller) {\n        var containerInfo = _controller.info(),\n            pinTarget = _pinOptions.spacer.firstChild; // may be pin element or another spacer, if cascading pins\n\n\n        if (!forceUnpin && _state === SCENE_STATE_DURING) {\n          // during scene or if duration is 0 and we are past the trigger\n          // pinned state\n          if (_util.css(pinTarget, \"position\") != \"fixed\") {\n            // change state before updating pin spacer (position changes due to fixed collapsing might occur.)\n            _util.css(pinTarget, {\n              \"position\": \"fixed\"\n            }); // update pin spacer\n\n\n            updatePinDimensions();\n          }\n\n          var fixedPos = _util.get.offset(_pinOptions.spacer, true),\n              // get viewport position of spacer\n          scrollDistance = _options.reverse || _options.duration === 0 ? containerInfo.scrollPos - _scrollOffset.start // quicker\n          : Math.round(_progress * _options.duration * 10) / 10; // if no reverse and during pin the position needs to be recalculated using the progress\n          // add scrollDistance\n\n\n          fixedPos[containerInfo.vertical ? \"top\" : \"left\"] += scrollDistance; // set new values\n\n          _util.css(_pinOptions.spacer.firstChild, {\n            top: fixedPos.top,\n            left: fixedPos.left\n          });\n        } else {\n          // unpinned state\n          var newCSS = {\n            position: _pinOptions.inFlow ? \"relative\" : \"absolute\",\n            top: 0,\n            left: 0\n          },\n              change = _util.css(pinTarget, \"position\") != newCSS.position;\n\n          if (!_pinOptions.pushFollowers) {\n            newCSS[containerInfo.vertical ? \"top\" : \"left\"] = _options.duration * _progress;\n          } else if (_options.duration > 0) {\n            // only concerns scenes with duration\n            if (_state === SCENE_STATE_AFTER && parseFloat(_util.css(_pinOptions.spacer, \"padding-top\")) === 0) {\n              change = true; // if in after state but havent updated spacer yet (jumped past pin)\n            } else if (_state === SCENE_STATE_BEFORE && parseFloat(_util.css(_pinOptions.spacer, \"padding-bottom\")) === 0) {\n              // before\n              change = true; // jumped past fixed state upward direction\n            }\n          } // set new values\n\n\n          _util.css(pinTarget, newCSS);\n\n          if (change) {\n            // update pin spacer if state changed\n            updatePinDimensions();\n          }\n        }\n      }\n    };\n    /**\n     * Update the pin spacer and/or element size.\n     * The size of the spacer needs to be updated whenever the duration of the scene changes, if it is to push down following elements.\n     * @private\n     */\n\n\n    var updatePinDimensions = function updatePinDimensions() {\n      if (_pin && _controller && _pinOptions.inFlow) {\n        // no spacerresize, if original position is absolute\n        var after = _state === SCENE_STATE_AFTER,\n            before = _state === SCENE_STATE_BEFORE,\n            during = _state === SCENE_STATE_DURING,\n            vertical = _controller.info(\"vertical\"),\n            pinTarget = _pinOptions.spacer.firstChild,\n            // usually the pined element but can also be another spacer (cascaded pins)\n        marginCollapse = _util.isMarginCollapseType(_util.css(_pinOptions.spacer, \"display\")),\n            css = {}; // set new size\n        // if relsize: spacer -> pin | else: pin -> spacer\n\n\n        if (_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) {\n          if (during) {\n            _util.css(_pin, {\n              \"width\": _util.get.width(_pinOptions.spacer)\n            });\n          } else {\n            _util.css(_pin, {\n              \"width\": \"100%\"\n            });\n          }\n        } else {\n          // minwidth is needed for cascaded pins.\n          css[\"min-width\"] = _util.get.width(vertical ? _pin : pinTarget, true, true);\n          css.width = during ? css[\"min-width\"] : \"auto\";\n        }\n\n        if (_pinOptions.relSize.height) {\n          if (during) {\n            // the only padding the spacer should ever include is the duration (if pushFollowers = true), so we need to substract that.\n            _util.css(_pin, {\n              \"height\": _util.get.height(_pinOptions.spacer) - (_pinOptions.pushFollowers ? _options.duration : 0)\n            });\n          } else {\n            _util.css(_pin, {\n              \"height\": \"100%\"\n            });\n          }\n        } else {\n          // margin is only included if it's a cascaded pin to resolve an IE9 bug\n          css[\"min-height\"] = _util.get.height(vertical ? pinTarget : _pin, true, !marginCollapse); // needed for cascading pins\n\n          css.height = during ? css[\"min-height\"] : \"auto\";\n        } // add space for duration if pushFollowers is true\n\n\n        if (_pinOptions.pushFollowers) {\n          css[\"padding\" + (vertical ? \"Top\" : \"Left\")] = _options.duration * _progress;\n          css[\"padding\" + (vertical ? \"Bottom\" : \"Right\")] = _options.duration * (1 - _progress);\n        }\n\n        _util.css(_pinOptions.spacer, css);\n      }\n    };\n    /**\n     * Updates the Pin state (in certain scenarios)\n     * If the controller container is not the document and we are mid-pin-phase scrolling or resizing the main document can result to wrong pin positions.\n     * So this function is called on resize and scroll of the document.\n     * @private\n     */\n\n\n    var updatePinInContainer = function updatePinInContainer() {\n      if (_controller && _pin && _state === SCENE_STATE_DURING && !_controller.info(\"isDocument\")) {\n        updatePinState();\n      }\n    };\n    /**\n     * Updates the Pin spacer size state (in certain scenarios)\n     * If container is resized during pin and relatively sized the size of the pin might need to be updated...\n     * So this function is called on resize of the container.\n     * @private\n     */\n\n\n    var updateRelativePinSpacer = function updateRelativePinSpacer() {\n      if (_controller && _pin && // well, duh\n      _state === SCENE_STATE_DURING && ( // element in pinned state?\n      // is width or height relatively sized, but not in relation to body? then we need to recalc.\n      (_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) && _util.get.width(window) != _util.get.width(_pinOptions.spacer.parentNode) || _pinOptions.relSize.height && _util.get.height(window) != _util.get.height(_pinOptions.spacer.parentNode))) {\n        updatePinDimensions();\n      }\n    };\n    /**\n     * Is called, when the mousewhel is used while over a pinned element inside a div container.\n     * If the scene is in fixed state scroll events would be counted towards the body. This forwards the event to the scroll container.\n     * @private\n     */\n\n\n    var onMousewheelOverPin = function onMousewheelOverPin(e) {\n      if (_controller && _pin && _state === SCENE_STATE_DURING && !_controller.info(\"isDocument\")) {\n        // in pin state\n        e.preventDefault();\n\n        _controller._setScrollPos(_controller.info(\"scrollPos\") - ((e.wheelDelta || e[_controller.info(\"vertical\") ? \"wheelDeltaY\" : \"wheelDeltaX\"]) / 3 || -e.detail * 30));\n      }\n    };\n    /**\n     * Pin an element for the duration of the tween.  \n     * If the scene duration is 0 the element will only be unpinned, if the user scrolls back past the start position.  \n     * Make sure only one pin is applied to an element at the same time.\n     * An element can be pinned multiple times, but only successively.\n     * _**NOTE:** The option `pushFollowers` has no effect, when the scene duration is 0._\n     * @method ScrollMagic.Scene#setPin\n     * @example\n     * // pin element and push all following elements down by the amount of the pin duration.\n     * scene.setPin(\"#pin\");\n     *\n     * // pin element and keeping all following elements in their place. The pinned element will move past them.\n     * scene.setPin(\"#pin\", {pushFollowers: false});\n     *\n     * @param {(string|object)} element - A Selector targeting an element or a DOM object that is supposed to be pinned.\n     * @param {object} [settings] - settings for the pin\n     * @param {boolean} [settings.pushFollowers=true] - If `true` following elements will be \"pushed\" down for the duration of the pin, if `false` the pinned element will just scroll past them.  \n     Ignored, when duration is `0`.\n     * @param {string} [settings.spacerClass=\"scrollmagic-pin-spacer\"] - Classname of the pin spacer element, which is used to replace the element.\n     *\n     * @returns {Scene} Parent object for chaining.\n     */\n\n\n    this.setPin = function (element, settings) {\n      var defaultSettings = {\n        pushFollowers: true,\n        spacerClass: \"scrollmagic-pin-spacer\"\n      };\n      settings = _util.extend({}, defaultSettings, settings); // validate Element\n\n      element = _util.get.elements(element)[0];\n\n      if (!element) {\n        log(1, \"ERROR calling method 'setPin()': Invalid pin element supplied.\");\n        return Scene; // cancel\n      } else if (_util.css(element, \"position\") === \"fixed\") {\n        log(1, \"ERROR calling method 'setPin()': Pin does not work with elements that are positioned 'fixed'.\");\n        return Scene; // cancel\n      }\n\n      if (_pin) {\n        // preexisting pin?\n        if (_pin === element) {\n          // same pin we already have -> do nothing\n          return Scene; // cancel\n        } else {\n          // kill old pin\n          Scene.removePin();\n        }\n      }\n\n      _pin = element;\n      var parentDisplay = _pin.parentNode.style.display,\n          boundsParams = [\"top\", \"left\", \"bottom\", \"right\", \"margin\", \"marginLeft\", \"marginRight\", \"marginTop\", \"marginBottom\"];\n      _pin.parentNode.style.display = 'none'; // hack start to force css to return stylesheet values instead of calculated px values.\n\n      var inFlow = _util.css(_pin, \"position\") != \"absolute\",\n          pinCSS = _util.css(_pin, boundsParams.concat([\"display\"])),\n          sizeCSS = _util.css(_pin, [\"width\", \"height\"]);\n\n      _pin.parentNode.style.display = parentDisplay; // hack end.\n\n      if (!inFlow && settings.pushFollowers) {\n        log(2, \"WARNING: If the pinned element is positioned absolutely pushFollowers will be disabled.\");\n        settings.pushFollowers = false;\n      }\n\n      window.setTimeout(function () {\n        // wait until all finished, because with responsive duration it will only be set after scene is added to controller\n        if (_pin && _options.duration === 0 && settings.pushFollowers) {\n          log(2, \"WARNING: pushFollowers =\", true, \"has no effect, when scene duration is 0.\");\n        }\n      }, 0); // create spacer and insert\n\n      var spacer = _pin.parentNode.insertBefore(document.createElement('div'), _pin),\n          spacerCSS = _util.extend(pinCSS, {\n        position: inFlow ? \"relative\" : \"absolute\",\n        boxSizing: \"content-box\",\n        mozBoxSizing: \"content-box\",\n        webkitBoxSizing: \"content-box\"\n      });\n\n      if (!inFlow) {\n        // copy size if positioned absolutely, to work for bottom/right positioned elements.\n        _util.extend(spacerCSS, _util.css(_pin, [\"width\", \"height\"]));\n      }\n\n      _util.css(spacer, spacerCSS);\n\n      spacer.setAttribute(PIN_SPACER_ATTRIBUTE, \"\");\n\n      _util.addClass(spacer, settings.spacerClass); // set the pin Options\n\n\n      _pinOptions = {\n        spacer: spacer,\n        relSize: {\n          // save if size is defined using % values. if so, handle spacer resize differently...\n          width: sizeCSS.width.slice(-1) === \"%\",\n          height: sizeCSS.height.slice(-1) === \"%\",\n          autoFullWidth: sizeCSS.width === \"auto\" && inFlow && _util.isMarginCollapseType(pinCSS.display)\n        },\n        pushFollowers: settings.pushFollowers,\n        inFlow: inFlow // stores if the element takes up space in the document flow\n\n      };\n\n      if (!_pin.___origStyle) {\n        _pin.___origStyle = {};\n        var pinInlineCSS = _pin.style,\n            copyStyles = boundsParams.concat([\"width\", \"height\", \"position\", \"boxSizing\", \"mozBoxSizing\", \"webkitBoxSizing\"]);\n        copyStyles.forEach(function (val) {\n          _pin.___origStyle[val] = pinInlineCSS[val] || \"\";\n        });\n      } // if relative size, transfer it to spacer and make pin calculate it...\n\n\n      if (_pinOptions.relSize.width) {\n        _util.css(spacer, {\n          width: sizeCSS.width\n        });\n      }\n\n      if (_pinOptions.relSize.height) {\n        _util.css(spacer, {\n          height: sizeCSS.height\n        });\n      } // now place the pin element inside the spacer\t\n\n\n      spacer.appendChild(_pin); // and set new css\n\n      _util.css(_pin, {\n        position: inFlow ? \"relative\" : \"absolute\",\n        margin: \"auto\",\n        top: \"auto\",\n        left: \"auto\",\n        bottom: \"auto\",\n        right: \"auto\"\n      });\n\n      if (_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) {\n        _util.css(_pin, {\n          boxSizing: \"border-box\",\n          mozBoxSizing: \"border-box\",\n          webkitBoxSizing: \"border-box\"\n        });\n      } // add listener to document to update pin position in case controller is not the document.\n\n\n      window.addEventListener('scroll', updatePinInContainer);\n      window.addEventListener('resize', updatePinInContainer);\n      window.addEventListener('resize', updateRelativePinSpacer); // add mousewheel listener to catch scrolls over fixed elements\n\n      _pin.addEventListener(\"mousewheel\", onMousewheelOverPin);\n\n      _pin.addEventListener(\"DOMMouseScroll\", onMousewheelOverPin);\n\n      log(3, \"added pin\"); // finally update the pin to init\n\n      updatePinState();\n      return Scene;\n    };\n    /**\n     * Remove the pin from the scene.\n     * @method ScrollMagic.Scene#removePin\n     * @example\n     * // remove the pin from the scene without resetting it (the spacer is not removed)\n     * scene.removePin();\n     *\n     * // remove the pin from the scene and reset the pin element to its initial position (spacer is removed)\n     * scene.removePin(true);\n     *\n     * @param {boolean} [reset=false] - If `false` the spacer will not be removed and the element's position will not be reset.\n     * @returns {Scene} Parent object for chaining.\n     */\n\n\n    this.removePin = function (reset) {\n      if (_pin) {\n        if (_state === SCENE_STATE_DURING) {\n          updatePinState(true); // force unpin at position\n        }\n\n        if (reset || !_controller) {\n          // if there's no controller no progress was made anyway...\n          var pinTarget = _pinOptions.spacer.firstChild; // usually the pin element, but may be another spacer (cascaded pins)...\n\n          if (pinTarget.hasAttribute(PIN_SPACER_ATTRIBUTE)) {\n            // copy margins to child spacer\n            var style = _pinOptions.spacer.style,\n                values = [\"margin\", \"marginLeft\", \"marginRight\", \"marginTop\", \"marginBottom\"],\n                margins = {};\n            values.forEach(function (val) {\n              margins[val] = style[val] || \"\";\n            });\n\n            _util.css(pinTarget, margins);\n          }\n\n          _pinOptions.spacer.parentNode.insertBefore(pinTarget, _pinOptions.spacer);\n\n          _pinOptions.spacer.parentNode.removeChild(_pinOptions.spacer);\n\n          if (!_pin.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) {\n            // if it's the last pin for this element -> restore inline styles\n            // TODO: only correctly set for first pin (when cascading) - how to fix?\n            _util.css(_pin, _pin.___origStyle);\n\n            delete _pin.___origStyle;\n          }\n        }\n\n        window.removeEventListener('scroll', updatePinInContainer);\n        window.removeEventListener('resize', updatePinInContainer);\n        window.removeEventListener('resize', updateRelativePinSpacer);\n\n        _pin.removeEventListener(\"mousewheel\", onMousewheelOverPin);\n\n        _pin.removeEventListener(\"DOMMouseScroll\", onMousewheelOverPin);\n\n        _pin = undefined;\n        log(3, \"removed pin (reset: \" + (reset ? \"true\" : \"false\") + \")\");\n      }\n\n      return Scene;\n    };\n\n    var _cssClasses,\n        _cssClassElems = [];\n\n    Scene.on(\"destroy.internal\", function (e) {\n      Scene.removeClassToggle(e.reset);\n    });\n    /**\n     * Define a css class modification while the scene is active.  \n     * When the scene triggers the classes will be added to the supplied element and removed, when the scene is over.\n     * If the scene duration is 0 the classes will only be removed if the user scrolls back past the start position.\n     * @method ScrollMagic.Scene#setClassToggle\n     * @example\n     * // add the class 'myclass' to the element with the id 'my-elem' for the duration of the scene\n     * scene.setClassToggle(\"#my-elem\", \"myclass\");\n     *\n     * // add multiple classes to multiple elements defined by the selector '.classChange'\n     * scene.setClassToggle(\".classChange\", \"class1 class2 class3\");\n     *\n     * @param {(string|object)} element - A Selector targeting one or more elements or a DOM object that is supposed to be modified.\n     * @param {string} classes - One or more Classnames (separated by space) that should be added to the element during the scene.\n     *\n     * @returns {Scene} Parent object for chaining.\n     */\n\n    this.setClassToggle = function (element, classes) {\n      var elems = _util.get.elements(element);\n\n      if (elems.length === 0 || !_util.type.String(classes)) {\n        log(1, \"ERROR calling method 'setClassToggle()': Invalid \" + (elems.length === 0 ? \"element\" : \"classes\") + \" supplied.\");\n        return Scene;\n      }\n\n      if (_cssClassElems.length > 0) {\n        // remove old ones\n        Scene.removeClassToggle();\n      }\n\n      _cssClasses = classes;\n      _cssClassElems = elems;\n      Scene.on(\"enter.internal_class leave.internal_class\", function (e) {\n        var toggle = e.type === \"enter\" ? _util.addClass : _util.removeClass;\n\n        _cssClassElems.forEach(function (elem, key) {\n          toggle(elem, _cssClasses);\n        });\n      });\n      return Scene;\n    };\n    /**\n     * Remove the class binding from the scene.\n     * @method ScrollMagic.Scene#removeClassToggle\n     * @example\n     * // remove class binding from the scene without reset\n     * scene.removeClassToggle();\n     *\n     * // remove class binding and remove the changes it caused\n     * scene.removeClassToggle(true);\n     *\n     * @param {boolean} [reset=false] - If `false` and the classes are currently active, they will remain on the element. If `true` they will be removed.\n     * @returns {Scene} Parent object for chaining.\n     */\n\n\n    this.removeClassToggle = function (reset) {\n      if (reset) {\n        _cssClassElems.forEach(function (elem, key) {\n          _util.removeClass(elem, _cssClasses);\n        });\n      }\n\n      Scene.off(\"start.internal_class end.internal_class\");\n      _cssClasses = undefined;\n      _cssClassElems = [];\n      return Scene;\n    }; // INIT\n\n\n    construct();\n    return Scene;\n  }; // store pagewide scene options\n\n\n  var SCENE_OPTIONS = {\n    defaults: {\n      duration: 0,\n      offset: 0,\n      triggerElement: undefined,\n      triggerHook: 0.5,\n      reverse: true,\n      loglevel: 2\n    },\n    validate: {\n      offset: function offset(val) {\n        val = parseFloat(val);\n\n        if (!_util.type.Number(val)) {\n          throw [\"Invalid value for option \\\"offset\\\":\", val];\n        }\n\n        return val;\n      },\n      triggerElement: function triggerElement(val) {\n        val = val || undefined;\n\n        if (val) {\n          var elem = _util.get.elements(val)[0];\n\n          if (elem && elem.parentNode) {\n            val = elem;\n          } else {\n            throw [\"Element defined in option \\\"triggerElement\\\" was not found:\", val];\n          }\n        }\n\n        return val;\n      },\n      triggerHook: function triggerHook(val) {\n        var translate = {\n          \"onCenter\": 0.5,\n          \"onEnter\": 1,\n          \"onLeave\": 0\n        };\n\n        if (_util.type.Number(val)) {\n          val = Math.max(0, Math.min(parseFloat(val), 1)); //  make sure its betweeen 0 and 1\n        } else if (val in translate) {\n          val = translate[val];\n        } else {\n          throw [\"Invalid value for option \\\"triggerHook\\\": \", val];\n        }\n\n        return val;\n      },\n      reverse: function reverse(val) {\n        return !!val; // force boolean\n      },\n      loglevel: function loglevel(val) {\n        val = parseInt(val);\n\n        if (!_util.type.Number(val) || val < 0 || val > 3) {\n          throw [\"Invalid value for option \\\"loglevel\\\":\", val];\n        }\n\n        return val;\n      }\n    },\n    // holder for  validation methods. duration validation is handled in 'getters-setters.js'\n    shifts: [\"duration\", \"offset\", \"triggerHook\"] // list of options that trigger a `shift` event\n\n  };\n  /*\n   * method used to add an option to ScrollMagic Scenes.\n   * TODO: DOC (private for dev)\n   */\n\n  ScrollMagic.Scene.addOption = function (name, defaultValue, validationCallback, shifts) {\n    if (!(name in SCENE_OPTIONS.defaults)) {\n      SCENE_OPTIONS.defaults[name] = defaultValue;\n      SCENE_OPTIONS.validate[name] = validationCallback;\n\n      if (shifts) {\n        SCENE_OPTIONS.shifts.push(name);\n      }\n    } else {\n      ScrollMagic._util.log(1, \"[static] ScrollMagic.Scene -> Cannot add Scene option '\" + name + \"', because it already exists.\");\n    }\n  }; // instance extension function for plugins\n  // TODO: DOC (private for dev)\n\n\n  ScrollMagic.Scene.extend = function (extension) {\n    var oldClass = this;\n\n    ScrollMagic.Scene = function () {\n      oldClass.apply(this, arguments);\n      this.$super = _util.extend({}, this); // copy parent state\n\n      return extension.apply(this, arguments) || this;\n    };\n\n    _util.extend(ScrollMagic.Scene, oldClass); // copy properties\n\n\n    ScrollMagic.Scene.prototype = oldClass.prototype; // copy prototype\n\n    ScrollMagic.Scene.prototype.constructor = ScrollMagic.Scene; // restore constructor\n  };\n  /**\n   * TODO: DOCS (private for dev)\n   * @class\n   * @private\n   */\n\n\n  ScrollMagic.Event = function (type, namespace, target, vars) {\n    vars = vars || {};\n\n    for (var key in vars) {\n      this[key] = vars[key];\n    }\n\n    this.type = type;\n    this.target = this.currentTarget = target;\n    this.namespace = namespace || '';\n    this.timeStamp = this.timestamp = Date.now();\n    return this;\n  };\n  /*\n   * TODO: DOCS (private for dev)\n   */\n\n\n  var _util = ScrollMagic._util = function (window) {\n    var U = {},\n        i;\n    /**\n     * ------------------------------\n     * internal helpers\n     * ------------------------------\n     */\n    // parse float and fall back to 0.\n\n    var floatval = function floatval(number) {\n      return parseFloat(number) || 0;\n    }; // get current style IE safe (otherwise IE would return calculated values for 'auto')\n\n\n    var _getComputedStyle = function _getComputedStyle(elem) {\n      return elem.currentStyle ? elem.currentStyle : window.getComputedStyle(elem);\n    }; // get element dimension (width or height)\n\n\n    var _dimension = function _dimension(which, elem, outer, includeMargin) {\n      elem = elem === document ? window : elem;\n\n      if (elem === window) {\n        includeMargin = false;\n      } else if (!_type.DomElement(elem)) {\n        return 0;\n      }\n\n      which = which.charAt(0).toUpperCase() + which.substr(1).toLowerCase();\n      var dimension = (outer ? elem['offset' + which] || elem['outer' + which] : elem['client' + which] || elem['inner' + which]) || 0;\n\n      if (outer && includeMargin) {\n        var style = _getComputedStyle(elem);\n\n        dimension += which === 'Height' ? floatval(style.marginTop) + floatval(style.marginBottom) : floatval(style.marginLeft) + floatval(style.marginRight);\n      }\n\n      return dimension;\n    }; // converts 'margin-top' into 'marginTop'\n\n\n    var _camelCase = function _camelCase(str) {\n      return str.replace(/^[^a-z]+([a-z])/g, '$1').replace(/-([a-z])/g, function (g) {\n        return g[1].toUpperCase();\n      });\n    };\n    /**\n     * ------------------------------\n     * external helpers\n     * ------------------------------\n     */\n    // extend obj \u2013 same as jQuery.extend({}, objA, objB)\n\n\n    U.extend = function (obj) {\n      obj = obj || {};\n\n      for (i = 1; i < arguments.length; i++) {\n        if (!arguments[i]) {\n          continue;\n        }\n\n        for (var key in arguments[i]) {\n          if (arguments[i].hasOwnProperty(key)) {\n            obj[key] = arguments[i][key];\n          }\n        }\n      }\n\n      return obj;\n    }; // check if a css display type results in margin-collapse or not\n\n\n    U.isMarginCollapseType = function (str) {\n      return [\"block\", \"flex\", \"list-item\", \"table\", \"-webkit-box\"].indexOf(str) > -1;\n    }; // implementation of requestAnimationFrame\n    // based on https://gist.github.com/paulirish/1579671\n\n\n    var lastTime = 0,\n        vendors = ['ms', 'moz', 'webkit', 'o'];\n    var _requestAnimationFrame = window.requestAnimationFrame;\n    var _cancelAnimationFrame = window.cancelAnimationFrame; // try vendor prefixes if the above doesn't work\n\n    for (i = 0; !_requestAnimationFrame && i < vendors.length; ++i) {\n      _requestAnimationFrame = window[vendors[i] + 'RequestAnimationFrame'];\n      _cancelAnimationFrame = window[vendors[i] + 'CancelAnimationFrame'] || window[vendors[i] + 'CancelRequestAnimationFrame'];\n    } // fallbacks\n\n\n    if (!_requestAnimationFrame) {\n      _requestAnimationFrame = function _requestAnimationFrame(callback) {\n        var currTime = new Date().getTime(),\n            timeToCall = Math.max(0, 16 - (currTime - lastTime)),\n            id = window.setTimeout(function () {\n          callback(currTime + timeToCall);\n        }, timeToCall);\n        lastTime = currTime + timeToCall;\n        return id;\n      };\n    }\n\n    if (!_cancelAnimationFrame) {\n      _cancelAnimationFrame = function _cancelAnimationFrame(id) {\n        window.clearTimeout(id);\n      };\n    }\n\n    U.rAF = _requestAnimationFrame.bind(window);\n    U.cAF = _cancelAnimationFrame.bind(window);\n    var loglevels = [\"error\", \"warn\", \"log\"],\n        console = window.console || {};\n\n    console.log = console.log || function () {}; // no console log, well - do nothing then...\n    // make sure methods for all levels exist.\n\n\n    for (i = 0; i < loglevels.length; i++) {\n      var method = loglevels[i];\n\n      if (!console[method]) {\n        console[method] = console.log; // prefer .log over nothing\n      }\n    }\n\n    U.log = function (loglevel) {\n      if (loglevel > loglevels.length || loglevel <= 0) loglevel = loglevels.length;\n      var now = new Date(),\n          time = (\"0\" + now.getHours()).slice(-2) + \":\" + (\"0\" + now.getMinutes()).slice(-2) + \":\" + (\"0\" + now.getSeconds()).slice(-2) + \":\" + (\"00\" + now.getMilliseconds()).slice(-3),\n          method = loglevels[loglevel - 1],\n          args = Array.prototype.splice.call(arguments, 1),\n          func = Function.prototype.bind.call(console[method], console);\n      args.unshift(time);\n      func.apply(console, args);\n    };\n    /**\n     * ------------------------------\n     * type testing\n     * ------------------------------\n     */\n\n\n    var _type = U.type = function (v) {\n      return Object.prototype.toString.call(v).replace(/^\\[object (.+)\\]$/, \"$1\").toLowerCase();\n    };\n\n    _type.String = function (v) {\n      return _type(v) === 'string';\n    };\n\n    _type.Function = function (v) {\n      return _type(v) === 'function';\n    };\n\n    _type.Array = function (v) {\n      return Array.isArray(v);\n    };\n\n    _type.Number = function (v) {\n      return !_type.Array(v) && v - parseFloat(v) + 1 >= 0;\n    };\n\n    _type.DomElement = function (o) {\n      return (typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement)) === \"object\" ? o instanceof HTMLElement : //DOM2\n      o && _typeof(o) === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\";\n    };\n    /**\n     * ------------------------------\n     * DOM Element info\n     * ------------------------------\n     */\n    // always returns a list of matching DOM elements, from a selector, a DOM element or an list of elements or even an array of selectors\n\n\n    var _get = U.get = {};\n\n    _get.elements = function (selector) {\n      var arr = [];\n\n      if (_type.String(selector)) {\n        try {\n          selector = document.querySelectorAll(selector);\n        } catch (e) {\n          // invalid selector\n          return arr;\n        }\n      }\n\n      if (_type(selector) === 'nodelist' || _type.Array(selector)) {\n        for (var i = 0, ref = arr.length = selector.length; i < ref; i++) {\n          // list of elements\n          var elem = selector[i];\n          arr[i] = _type.DomElement(elem) ? elem : _get.elements(elem); // if not an element, try to resolve recursively\n        }\n      } else if (_type.DomElement(selector) || selector === document || selector === window) {\n        arr = [selector]; // only the element\n      }\n\n      return arr;\n    }; // get scroll top value\n\n\n    _get.scrollTop = function (elem) {\n      return elem && typeof elem.scrollTop === 'number' ? elem.scrollTop : window.pageYOffset || 0;\n    }; // get scroll left value\n\n\n    _get.scrollLeft = function (elem) {\n      return elem && typeof elem.scrollLeft === 'number' ? elem.scrollLeft : window.pageXOffset || 0;\n    }; // get element height\n\n\n    _get.width = function (elem, outer, includeMargin) {\n      return _dimension('width', elem, outer, includeMargin);\n    }; // get element width\n\n\n    _get.height = function (elem, outer, includeMargin) {\n      return _dimension('height', elem, outer, includeMargin);\n    }; // get element position (optionally relative to viewport)\n\n\n    _get.offset = function (elem, relativeToViewport) {\n      var offset = {\n        top: 0,\n        left: 0\n      };\n\n      if (elem && elem.getBoundingClientRect) {\n        // check if available\n        var rect = elem.getBoundingClientRect();\n        offset.top = rect.top;\n        offset.left = rect.left;\n\n        if (!relativeToViewport) {\n          // clientRect is by default relative to viewport...\n          offset.top += _get.scrollTop();\n          offset.left += _get.scrollLeft();\n        }\n      }\n\n      return offset;\n    };\n    /**\n     * ------------------------------\n     * DOM Element manipulation\n     * ------------------------------\n     */\n\n\n    U.addClass = function (elem, classname) {\n      if (classname) {\n        if (elem.classList) elem.classList.add(classname);else elem.className += ' ' + classname;\n      }\n    };\n\n    U.removeClass = function (elem, classname) {\n      if (classname) {\n        if (elem.classList) elem.classList.remove(classname);else elem.className = elem.className.replace(new RegExp('(^|\\\\b)' + classname.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n      }\n    }; // if options is string -> returns css value\n    // if options is array -> returns object with css value pairs\n    // if options is object -> set new css values\n\n\n    U.css = function (elem, options) {\n      if (_type.String(options)) {\n        return _getComputedStyle(elem)[_camelCase(options)];\n      } else if (_type.Array(options)) {\n        var obj = {},\n            style = _getComputedStyle(elem);\n\n        options.forEach(function (option, key) {\n          obj[option] = style[_camelCase(option)];\n        });\n        return obj;\n      } else {\n        for (var option in options) {\n          var val = options[option];\n\n          if (val == parseFloat(val)) {\n            // assume pixel for seemingly numerical values\n            val += 'px';\n          }\n\n          elem.style[_camelCase(option)] = val;\n        }\n      }\n    };\n\n    return U;\n  }(window || {});\n\n  ScrollMagic.Scene.prototype.addIndicators = function () {\n    ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling addIndicators() due to missing Plugin \\'debug.addIndicators\\'. Please make sure to include plugins/debug.addIndicators.js');\n\n    return this;\n  };\n\n  ScrollMagic.Scene.prototype.removeIndicators = function () {\n    ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeIndicators() due to missing Plugin \\'debug.addIndicators\\'. Please make sure to include plugins/debug.addIndicators.js');\n\n    return this;\n  };\n\n  ScrollMagic.Scene.prototype.setTween = function () {\n    ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling setTween() due to missing Plugin \\'animation.gsap\\'. Please make sure to include plugins/animation.gsap.js');\n\n    return this;\n  };\n\n  ScrollMagic.Scene.prototype.removeTween = function () {\n    ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeTween() due to missing Plugin \\'animation.gsap\\'. Please make sure to include plugins/animation.gsap.js');\n\n    return this;\n  };\n\n  ScrollMagic.Scene.prototype.setVelocity = function () {\n    ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling setVelocity() due to missing Plugin \\'animation.velocity\\'. Please make sure to include plugins/animation.velocity.js');\n\n    return this;\n  };\n\n  ScrollMagic.Scene.prototype.removeVelocity = function () {\n    ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeVelocity() due to missing Plugin \\'animation.velocity\\'. Please make sure to include plugins/animation.velocity.js');\n\n    return this;\n  };\n\n  return ScrollMagic;\n});\n/*!\n * ScrollMagic v2.0.7 (2019-05-07)\n * The javascript library for magical scroll interactions.\n * (c) 2019 Jan Paepke (@janpaepke)\n * Project Website: http://scrollmagic.io\n * \n * @version 2.0.7\n * @license Dual licensed under MIT license and GPL.\n * @author Jan Paepke - e-mail@janpaepke.de\n *\n * @file ScrollMagic GSAP Animation Plugin.\n *\n * requires: GSAP ~1.14\n * Powered by the Greensock Animation Platform (GSAP): http://www.greensock.com/js\n * Greensock License info at http://www.greensock.com/licensing/\n */\n\n/**\n * This plugin is meant to be used in conjunction with the Greensock Animation Plattform.  \n * It offers an easy API to trigger Tweens or synchronize them to the scrollbar movement.\n *\n * Both the `lite` and the `max` versions of the GSAP library are supported.  \n * The most basic requirement is `TweenLite`.\n * \n * To have access to this extension, please include `plugins/animation.gsap.js`.\n * @requires {@link http://greensock.com/gsap|GSAP ~1.14.x}\n * @mixin animation.GSAP\n */\n\n\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['ScrollMagic', 'TweenMax', 'TimelineMax'], factory);\n  } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n    // CommonJS\n    // Loads whole gsap package onto global scope.\n    require('gsap');\n\n    factory(require('scrollmagic'), TweenMax, TimelineMax);\n  } else {\n    // Browser globals\n    factory(root.ScrollMagic || root.jQuery && root.jQuery.ScrollMagic, root.TweenMax || root.TweenLite, root.TimelineMax || root.TimelineLite);\n  }\n})(this, function (ScrollMagic, Tween, Timeline) {\n  \"use strict\";\n\n  var NAMESPACE = \"animation.gsap\";\n  var console = window.console || {},\n      err = Function.prototype.bind.call(console.error || console.log || function () {}, console);\n\n  if (!ScrollMagic) {\n    err(\"(\" + NAMESPACE + \") -> ERROR: The ScrollMagic main module could not be found. Please make sure it's loaded before this plugin or use an asynchronous loader like requirejs.\");\n  }\n\n  if (!Tween) {\n    err(\"(\" + NAMESPACE + \") -> ERROR: TweenLite or TweenMax could not be found. Please make sure GSAP is loaded before ScrollMagic or use an asynchronous loader like requirejs.\");\n  }\n  /*\n   * ----------------------------------------------------------------\n   * Extensions for Scene\n   * ----------------------------------------------------------------\n   */\n\n  /**\n   * Every instance of ScrollMagic.Scene now accepts an additional option.  \n   * See {@link ScrollMagic.Scene} for a complete list of the standard options.\n   * @memberof! animation.GSAP#\n   * @method new ScrollMagic.Scene(options)\n   * @example\n   * var scene = new ScrollMagic.Scene({tweenChanges: true});\n   *\n   * @param {object} [options] - Options for the Scene. The options can be updated at any time.\n   * @param {boolean} [options.tweenChanges=false] - Tweens Animation to the progress target instead of setting it.  \n   \t\t\t\t\t\t\t\t\t\t\t\t  Does not affect animations where duration is `0`.\n   */\n\n  /**\n   * **Get** or **Set** the tweenChanges option value.  \n   * This only affects scenes with a duration. If `tweenChanges` is `true`, the progress update when scrolling will not be immediate, but instead the animation will smoothly animate to the target state.  \n   * For a better understanding, try enabling and disabling this option in the [Scene Manipulation Example](../examples/basic/scene_manipulation.html).\n   * @memberof! animation.GSAP#\n   * @method Scene.tweenChanges\n   * \n   * @example\n   * // get the current tweenChanges option\n   * var tweenChanges = scene.tweenChanges();\n   *\n   * // set new tweenChanges option\n   * scene.tweenChanges(true);\n   *\n   * @fires {@link Scene.change}, when used as setter\n   * @param {boolean} [newTweenChanges] - The new tweenChanges setting of the scene.\n   * @returns {boolean} `get` -  Current tweenChanges option value.\n   * @returns {Scene} `set` -  Parent object for chaining.\n   */\n  // add option (TODO: DOC (private for dev))\n\n\n  ScrollMagic.Scene.addOption(\"tweenChanges\", // name\n  false, // default\n  function (val) {\n    // validation callback\n    return !!val;\n  }); // extend scene\n\n  ScrollMagic.Scene.extend(function () {\n    var Scene = this,\n        _tween;\n\n    var log = function log() {\n      if (Scene._log) {\n        // not available, when main source minified\n        Array.prototype.splice.call(arguments, 1, 0, \"(\" + NAMESPACE + \")\", \"->\");\n\n        Scene._log.apply(this, arguments);\n      }\n    }; // set listeners\n\n\n    Scene.on(\"progress.plugin_gsap\", function () {\n      updateTweenProgress();\n    });\n    Scene.on(\"destroy.plugin_gsap\", function (e) {\n      Scene.removeTween(e.reset);\n    });\n    /**\n     * Update the tween progress to current position.\n     * @private\n     */\n\n    var updateTweenProgress = function updateTweenProgress() {\n      if (_tween) {\n        var progress = Scene.progress(),\n            state = Scene.state();\n\n        if (_tween.repeat && _tween.repeat() === -1) {\n          // infinite loop, so not in relation to progress\n          if (state === 'DURING' && _tween.paused()) {\n            _tween.play();\n          } else if (state !== 'DURING' && !_tween.paused()) {\n            _tween.pause();\n          }\n        } else if (progress != _tween.progress()) {\n          // do we even need to update the progress?\n          // no infinite loop - so should we just play or go to a specific point in time?\n          if (Scene.duration() === 0) {\n            // play the animation\n            if (progress > 0) {\n              // play from 0 to 1\n              _tween.play();\n            } else {\n              // play from 1 to 0\n              _tween.reverse();\n            }\n          } else {\n            // go to a specific point in time\n            if (Scene.tweenChanges() && _tween.tweenTo) {\n              // go smooth\n              _tween.tweenTo(progress * _tween.duration());\n            } else {\n              // just hard set it\n              _tween.progress(progress).pause();\n            }\n          }\n        }\n      }\n    };\n    /**\n     * Add a tween to the scene.  \n     * If you want to add multiple tweens, add them into a GSAP Timeline object and supply it instead (see example below).  \n     * \n     * If the scene has a duration, the tween's duration will be projected to the scroll distance of the scene, meaning its progress will be synced to scrollbar movement.  \n     * For a scene with a duration of `0`, the tween will be triggered when scrolling forward past the scene's trigger position and reversed, when scrolling back.  \n     * To gain better understanding, check out the [Simple Tweening example](../examples/basic/simple_tweening.html).\n     *\n     * Instead of supplying a tween this method can also be used as a shorthand for `TweenMax.to()` (see example below).\n     * @memberof! animation.GSAP#\n     *\n     * @example\n     * // add a single tween directly\n     * scene.setTween(TweenMax.to(\"obj\"), 1, {x: 100});\n     *\n     * // add a single tween via variable\n     * var tween = TweenMax.to(\"obj\"), 1, {x: 100};\n     * scene.setTween(tween);\n     *\n     * // add multiple tweens, wrapped in a timeline.\n     * var timeline = new TimelineMax();\n     * var tween1 = TweenMax.from(\"obj1\", 1, {x: 100});\n     * var tween2 = TweenMax.to(\"obj2\", 1, {y: 100});\n     * timeline\n     *\t\t.add(tween1)\n     *\t\t.add(tween2);\n     * scene.addTween(timeline);\n     *\n     * // short hand to add a TweenMax.to() tween\n     * scene.setTween(\"obj3\", 0.5, {y: 100});\n     *\n     * // short hand to add a TweenMax.to() tween for 1 second\n     * // this is useful, when the scene has a duration and the tween duration isn't important anyway\n     * scene.setTween(\"obj3\", {y: 100});\n     *\n     * @param {(object|string)} TweenObject - A TweenMax, TweenLite, TimelineMax or TimelineLite object that should be animated in the scene. Can also be a Dom Element or Selector, when using direct tween definition (see examples).\n     * @param {(number|object)} duration - A duration for the tween, or tween parameters. If an object containing parameters are supplied, a default duration of 1 will be used.\n     * @param {object} params - The parameters for the tween\n     * @returns {Scene} Parent object for chaining.\n     */\n\n\n    Scene.setTween = function (TweenObject, duration, params) {\n      var newTween;\n\n      if (arguments.length > 1) {\n        if (arguments.length < 3) {\n          params = duration;\n          duration = 1;\n        }\n\n        TweenObject = Tween.to(TweenObject, duration, params);\n      }\n\n      try {\n        // wrap Tween into a Timeline Object if available to include delay and repeats in the duration and standardize methods.\n        if (Timeline) {\n          newTween = new Timeline({\n            smoothChildTiming: true\n          }).add(TweenObject);\n        } else {\n          newTween = TweenObject;\n        }\n\n        newTween.pause();\n      } catch (e) {\n        log(1, \"ERROR calling method 'setTween()': Supplied argument is not a valid TweenObject\");\n        return Scene;\n      }\n\n      if (_tween) {\n        // kill old tween?\n        Scene.removeTween();\n      }\n\n      _tween = newTween; // some properties need to be transferred it to the wrapper, otherwise they would get lost.\n\n      if (TweenObject.repeat && TweenObject.repeat() === -1) {\n        // TweenMax or TimelineMax Object?\n        _tween.repeat(-1);\n\n        _tween.yoyo(TweenObject.yoyo());\n      } // Some tween validations and debugging helpers\n\n\n      if (Scene.tweenChanges() && !_tween.tweenTo) {\n        log(2, \"WARNING: tweenChanges will only work if the TimelineMax object is available for ScrollMagic.\");\n      } // check if there are position tweens defined for the trigger and warn about it :)\n\n\n      if (_tween && Scene.controller() && Scene.triggerElement() && Scene.loglevel() >= 2) {\n        // controller is needed to know scroll direction.\n        var triggerTweens = Tween.getTweensOf(Scene.triggerElement()),\n            vertical = Scene.controller().info(\"vertical\");\n        triggerTweens.forEach(function (value, index) {\n          var tweenvars = value.vars.css || value.vars,\n              condition = vertical ? tweenvars.top !== undefined || tweenvars.bottom !== undefined : tweenvars.left !== undefined || tweenvars.right !== undefined;\n\n          if (condition) {\n            log(2, \"WARNING: Tweening the position of the trigger element affects the scene timing and should be avoided!\");\n            return false;\n          }\n        });\n      } // warn about tween overwrites, when an element is tweened multiple times\n\n\n      if (parseFloat(TweenLite.version) >= 1.14) {\n        // onOverwrite only present since GSAP v1.14.0\n        var list = _tween.getChildren ? _tween.getChildren(true, true, false) : [_tween],\n            // get all nested tween objects\n        newCallback = function newCallback() {\n          log(2, \"WARNING: tween was overwritten by another. To learn how to avoid this issue see here: https://github.com/janpaepke/ScrollMagic/wiki/WARNING:-tween-was-overwritten-by-another\");\n        };\n\n        for (var i = 0, thisTween, oldCallback; i < list.length; i++) {\n          /*jshint loopfunc: true */\n          thisTween = list[i];\n\n          if (oldCallback !== newCallback) {\n            // if tweens is added more than once\n            oldCallback = thisTween.vars.onOverwrite;\n\n            thisTween.vars.onOverwrite = function () {\n              if (oldCallback) {\n                oldCallback.apply(this, arguments);\n              }\n\n              newCallback.apply(this, arguments);\n            };\n          }\n        }\n      }\n\n      log(3, \"added tween\");\n      updateTweenProgress();\n      return Scene;\n    };\n    /**\n     * Remove the tween from the scene.  \n     * This will terminate the control of the Scene over the tween.\n     *\n     * Using the reset option you can decide if the tween should remain in the current state or be rewound to set the target elements back to the state they were in before the tween was added to the scene.\n     * @memberof! animation.GSAP#\n     *\n     * @example\n     * // remove the tween from the scene without resetting it\n     * scene.removeTween();\n     *\n     * // remove the tween from the scene and reset it to initial position\n     * scene.removeTween(true);\n     *\n     * @param {boolean} [reset=false] - If `true` the tween will be reset to its initial values.\n     * @returns {Scene} Parent object for chaining.\n     */\n\n\n    Scene.removeTween = function (reset) {\n      if (_tween) {\n        if (reset) {\n          _tween.progress(0).pause();\n        }\n\n        _tween.kill();\n\n        _tween = undefined;\n        log(3, \"removed tween (reset: \" + (reset ? \"true\" : \"false\") + \")\");\n      }\n\n      return Scene;\n    };\n  });\n});\n/* Code plugins */\n\n/****************************************************************\n * CODE ajaxCart\n ****************************************************************/\n\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'ajaxCart';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return ajaxCart_plugin\n   */\n\n  var ajaxCart_plugin = function ajaxCart_plugin($element, options) {\n    // Scope it\n    var self = this;\n    self.$body = $('body');\n    self.$element = self.$body.find('[data-ajax-cart]');\n    self.xhrCount = 0; // Set default options\n\n    var defaults = {\n      cart_image_size: \"100x100_crop_center\",\n      notification_image_size: \"100x\",\n      onAddShowNotification: true,\n      onAddShowCart: true,\n      renderCart: true\n    };\n    var metaOptions = self.$element.data('ajax-cart');\n    self.options = $.extend({}, defaults, metaOptions);\n\n    if ($.code.debug) {\n      console.log('Init ajaxCart:', self.$element, self.options);\n    } // Find containers\n\n\n    self.$cartForm = self.$element.find('[data-ajax-cart-form]');\n    self.$ajaxCartWrapper = self.$element.find('[data-ajax-cart-wrapper]');\n    self.$ajaxCartContainer__products = self.$ajaxCartWrapper.find('[data-ajax-cart-container=\"products\"]');\n    self.$ajaxCartContainer__totals = self.$ajaxCartWrapper.find('[data-ajax-cart-container=\"totals\"]');\n    self.$ajaxCartContainer__actions = self.$ajaxCartWrapper.find('[data-ajax-cart-container=\"actions\"]');\n    self.$ajaxCartTemplate__warnings = $('[data-ajax-cart-template=\"warnings\"]').html();\n    self.$ajaxCartTemplate__notifications = $('[data-ajax-cart-template=\"notifications\"]').html();\n    self.$ajaxCartTemplate__products = self.$ajaxCartContainer__products.children();\n    self.$ajaxCartTemplate__totals = self.$ajaxCartContainer__totals.children();\n    self.$ajaxCartTemplate__actions = self.$ajaxCartContainer__actions.children();\n    self.$cartContainer__totals = $('[data-cart-container=\"totals\"]');\n    self.$cartContainer__products = $('[data-cart-container=\"products\"]');\n    self.$cartContainer__emptyMessage = $('[data-ajax-cart-empty-message]');\n    self.$cartIconLink = $('[data-ajax-cart-link]');\n    self.$cartIconWrapper = $('[data-ajax-cart-icon-wrapper]');\n    self.$cartIconQuantity = self.$cartIconWrapper.find('[data-ajax-cart-icon-quantity]'); // Get the cart\n\n    self.getCart(false); // Handle click events\n\n    self.handleEvents();\n  };\n  /**\n   * Handle events\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.handleEvents = function () {\n    var self = this; // Catch click on Add to cart buttons\n\n    self.$body.on('click', '[data-ajax-cart-add-button]', function (event) {\n      event.preventDefault(); // Add product to cart\n\n      if (window.location.href.indexOf('products') > -1) {\n        if (inventoryQuantity > 0) {\n          self.addToCart($(this));\n        } else {\n          self.showWarning('This product is temporary unavailable.');\n        }\n      } else {\n        self.addToCart($(this));\n      }\n    });\n    self.$body.on('click', '[data-ajax-cart-kit-add]', function (event) {\n      event.preventDefault();\n      var $form = $(event.target).closest('form');\n      var addData = $form.serialize(); // Add product to cart\n\n      self.handleAddToCart(addData, $form);\n    }); // Catch click on Add to cart (in product popup)\n\n    self.$body.on('click', '[data-ajax-cart-add-button-popup]', function (event) {\n      event.preventDefault(); // Close product popup before submitting product to cart\n\n      if (typeof closeProductPopup === 'function') {\n        var $el = $('[data-product-popup-show].is-open');\n        closeProductPopup($el);\n      } // Add product to cart\n\n\n      if (window.location.href.indexOf('products') > -1) {\n        self.addToCart($(this));\n      }\n    }); // Catch click on Add to cart (in accessories buy box)\n\n    self.$body.on('click', '[data-ajax-cart-add-button-tile]', function (event) {\n      event.preventDefault(); // Add product to cart\n\n      if (window.location.href.indexOf('products') > -1 || window.location.href.indexOf('wohnungen') > -1 || window.location.href.indexOf('apartments') > -1) {\n        self.addToCart($(this));\n      }\n    }); // Catch click on Add to cart buttons in multiple products section - \"Shop Popular Accessories\"\n\n    self.$body.on('click', '[data-ajax-cart-add-pop-acc]', function (event) {\n      event.preventDefault(); // Add product to cart\n\n      if (window.location.href.indexOf('products') > -1) {\n        if (inventoryQuantity > 0) {\n          self.addToCart($(this));\n        } else {\n          self.showWarning('This product is temporary unavailable.');\n        }\n      } else {\n        self.addToCart($(this));\n      }\n    }); //Catch click on recommendations Add to Cart (slider in ajax cart)\n\n    $(\".ajax-cart-recommendations-wrapper\").on('click', function (event) {\n      event.preventDefault(); // Determine product to be added\n\n      if (event.target && event.target.id == 'ajax-cart-recommendation-atc') {\n        var addData = {\n          id: $(event.target).data('ajax-variant-id'),\n          quantity: 1\n        }; // Add product to cart\n\n        self.addRecommendationToCart(addData);\n      }\n    }); // Catch click on Shop at Amazon button\n\n    self.$body.on('click', '[data-amazon-link]', function (event) {\n      event.preventDefault(); // Add product to cart\n\n      self.redirectToAmazon($(this));\n    }); // Catch click on quantity modifiers in ajax cart\n\n    self.$ajaxCartContainer__products.on('click', '[data-ajax-cart-quantity-modifier]', function (event) {\n      self.handleQuantityUpate(event);\n    }); // Catch click on quantity modifiers on the cart page\n\n    self.$body.on('click', '[data-ajax-cart-quantity-modifier]', function (event) {\n      self.handleQuantityUpate(event);\n    }); // Catch change of quantity in ajax cart\n\n    self.$ajaxCartContainer__products.on('change keyup blur', '[data-ajax-cart-quantity-value]', function (event) {\n      self.handleQuantityUpate(event);\n    }); // Catch change of quantity on the cart page\n\n    self.$body.on('change keyup blur', '[data-ajax-cart-quantity-value]', function (event) {\n      self.handleQuantityUpate(event);\n    }); // Prevent clickthrough on wrapper\n\n    self.$ajaxCartWrapper.on('click', function (event) {\n      event.stopPropagation();\n    }); // Catch click on product remove in ajax cart\n\n    self.$ajaxCartContainer__products.on('click', '[data-ajax-cart-template-element=\"remove\"]', function (event) {\n      event.preventDefault();\n      var $productRow = $(this).closest('[data-ajax-cart-template-element=\"row\"]').slideUp(300);\n      self.removeProduct($productRow);\n    }); // Catch click on product remove on cart page\n\n    self.$cartContainer__products.on('click', '[data-ajax-cart-template-element=\"remove\"]', function (event) {\n      event.preventDefault(); // Find the product row\n\n      var $productRow = $(this).closest('[data-cart-line]'); // Make ajax call to remove this product\n\n      self.removeProduct($productRow); // Slide the product out of view\n\n      $productRow.slideUp(300, function () {\n        // Remove the row\n        $productRow.remove();\n      });\n    });\n  };\n  /**\n   * Remove a product row\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.removeProduct = function ($row) {\n    var self = this; // Set quantity input to 0\n\n    $row.find('[data-ajax-cart-quantity-value]').val(0); // Find product id\n\n    var variantInputId = $row.find('[data-ajax-cart-quantity-id]').val();\n    var postData = {\n      id: variantInputId,\n      quantity: 0\n    };\n\n    if ($.code.debug) {\n      console.log('Update ajaxCart:', postData);\n    } // Post the updates\n\n\n    self.postAjaxCartUpdates(postData);\n  };\n  /**\n   * Modify quantity in cart\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.handleQuantityUpate = function (event) {\n    event.preventDefault();\n    var self = this;\n    var $trigger = $(event.currentTarget);\n    var $wrapper = $trigger.closest('[data-ajax-cart-quantity-modifiers]');\n    var currentQuantityMax = $wrapper.data(\"productQuantityMax\"); // Find quantity input\n\n    var $quantityInput = $wrapper.find('[data-ajax-cart-quantity-value]');\n    var $variantInput = $wrapper.find('[data-ajax-cart-quantity-id]'); // if triggered by +/- button\n\n    if ($trigger.data('ajax-cart-quantity-modifier')) {\n      // Update quantity\n      var oldQuantity = parseInt($quantityInput.val());\n      var newQuantity = Math.max(oldQuantity + parseInt($trigger.data('ajax-cart-quantity-modifier')), 1);\n\n      if (newQuantity > currentQuantityMax) {\n        var errorText = translationQuantityExceeded;\n        errorText = errorText.replace('{{ qty }}', currentQuantityMax);\n\n        if ($wrapper.parent().find('.cart-drawer-quantity__error').length < 1) {\n          $wrapper.parent().append('<p class=\"cart-drawer-quantity__error\">' + errorText + '</p>');\n          setTimeout(function () {\n            $('.cart-drawer-quantity__error').slideUp('slow');\n            $('.cart-drawer-quantity__error').remove();\n          }, 3000);\n        }\n\n        newQuantity = currentQuantityMax;\n        $quantityInput.val(newQuantity);\n      } else {\n        var postData = {\n          id: $variantInput.val(),\n          quantity: newQuantity\n        };\n\n        if ($.code.debug) {\n          console.log('Update ajaxCart:', postData);\n        }\n\n        if ($trigger.data('ajax-cart-quantity-modifier') === -1) {\n          // Post the form\n          self.postAjaxCartUpdates(postData);\n        } else {\n          var addedProductId = parseInt(postData.id);\n          var idsMaxUnits = [];\n          Shopify.getCart(function (cart) {\n            $.each(cart.items, function (index, item) {\n              if (item.product_type === 'Security System' && item.quantity >= 2) {\n                idsMaxUnits.push(item.id);\n              }\n            });\n\n            if (idsMaxUnits.includes(addedProductId)) {\n              var errorText = translationQuantityExceeded;\n              errorText = errorText.replace('{{ qty }}', currentQuantityMax);\n\n              if ($wrapper.parent().find('.cart-drawer-quantity__error').length < 1) {\n                $wrapper.parent().append('<p class=\"cart-drawer-quantity__error\">' + errorText + '</p>');\n                setTimeout(function () {\n                  $('.cart-drawer-quantity__error').slideUp('slow');\n                  $('.cart-drawer-quantity__error').remove();\n                }, 3000);\n              }\n            } else {\n              // Post the form\n              self.postAjaxCartUpdates(postData);\n            }\n          });\n        }\n      }\n    } else {\n      // if triggered by manual input\n      var newQuantity = parseInt($quantityInput.val());\n\n      if (newQuantity > currentQuantityMax) {\n        var errorText = translationQuantityExceeded;\n        errorText = errorText.replace('{{ qty }}', currentQuantityMax);\n\n        if ($wrapper.parent().find('.cart-drawer-quantity__error').length < 1) {\n          $wrapper.parent().append('<p class=\"cart-drawer-quantity__error\">' + errorText + '</p>');\n          setTimeout(function () {\n            $('.cart-drawer-quantity__error').slideUp('slow');\n            $('.cart-drawer-quantity__error').remove();\n          }, 3000);\n        }\n\n        newQuantity = currentQuantityMax;\n        $quantityInput.val(newQuantity);\n      } else {\n        var postData = {\n          id: $variantInput.val(),\n          quantity: newQuantity\n        };\n\n        if ($.code.debug) {\n          console.log('Update ajaxCart:', postData);\n        }\n\n        if (newQuantity <= currentQuantityMax) {\n          // Post the form\n          self.postAjaxCartUpdates(postData);\n        } else {\n          var addedProductId = parseInt(postData.id);\n          var idsMaxUnits = [];\n          Shopify.getCart(function (cart) {\n            $.each(cart.items, function (index, item) {\n              if (item.product_type === 'Security System' && item.quantity >= 2) {\n                idsMaxUnits.push(item.id);\n              }\n            });\n\n            if (idsMaxUnits.includes(addedProductId)) {\n              var errorText = translationQuantityExceeded;\n              errorText = errorText.replace('{{ qty }}', currentQuantityMax);\n\n              if ($wrapper.parent().find('.cart-drawer-quantity__error').length < 1) {\n                $wrapper.parent().append('<p class=\"cart-drawer-quantity__error\">' + errorText + '</p>');\n                setTimeout(function () {\n                  $('.cart-drawer-quantity__error').slideUp('slow');\n                  $('.cart-drawer-quantity__error').remove();\n                }, 3000);\n              }\n            } else {\n              // Post the form\n              self.postAjaxCartUpdates(postData);\n            }\n          });\n        }\n      }\n    }\n  };\n  /**\n   * Show a notification of the added product\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.showAddToCartNotification = function (item) {\n    var self = this;\n\n    if (!self.options.onAddShowNotification) {\n      return;\n    } // Close currently opened fancybox (like Quickshops etc)\n\n\n    $.fancybox.close(); // Clone the notification template\n\n    var $html = $(self.$ajaxCartTemplate__notifications).clone(); // Fill the template with data\n\n    var $response_html = self.fillTemplate($html, item, self.options.notification_image_size); // Show the notification\n\n    $.fancybox.open($response_html, {\n      hideScrollbar: false,\n      hash: false,\n      touch: false,\n      autoFocus: false,\n      backFocus: false,\n      baseClass: \"ajax-cart-notification-popup fancybox-notification\"\n    });\n  };\n  /**\n   * Update Cart Icon Quantity\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.updateCartIconQuantity = function (newQuantity) {\n    var self = this; // Update counter badge text and data attribute\n\n    self.$cartIconQuantity.text(newQuantity).data('ajax-cart-icon-quantity', newQuantity); // Remove hidden to make it in/visible\n\n    if (newQuantity > 0) {\n      self.$cartIconWrapper.removeClass('hidden');\n    } else {\n      self.$cartIconWrapper.addClass('hidden');\n    }\n  };\n  /**\n   * Fill Template\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.fillTemplate = function ($html, data, imageSize) {\n    var self = this;\n    var $linkEl = $html.find('[data-ajax-cart-template-element=\"item-link\"]');\n    var $modifierEl = $html.find('[data-ajax-cart-quantity-modifiers]');\n    var maxQuantity = 10;\n    var linkUrl = '';\n\n    if (data.properties && data.properties._maxQuantity) {\n      maxQuantity = data.properties._maxQuantity;\n    } // Fill data in template\n\n\n    if (data.title) {\n      $html.find('[data-ajax-cart-template-element=\"title\"]').html(data.title.replace(/ *\\[[^)]*\\] */g, \" \").trim());\n    }\n\n    $html.find('[data-ajax-cart-template-element=\"warning\"]').html(data.warning);\n    $html.find('[data-ajax-cart-template-element=\"quantity\"]').html(data.quantity);\n    $html.find('[data-ajax-cart-template-element=\"vendor\"]').html(data.vendor);\n    $html.find('[data-ajax-cart-template-element=\"total\"]').html(Shopify.formatMoney(data.total_price));\n    $html.find('[data-ajax-cart-template-element=\"discounts\"]').html(Shopify.formatMoney(data.discounts));\n\n    if (data.variant_options && data.variant_options[0] === 'Default Title') {\n      var linkStr = data.url.split('?');\n      linkUrl = linkStr[0];\n    } else {\n      linkUrl = data.url;\n    }\n\n    $linkEl.attr('href', linkUrl);\n    $html.find('[data-ajax-cart-template-element=\"remove\"]').attr('href', '/cart/change?quantity=0&id=' + data.id);\n    $html.find('[data-ajax-cart-template-element=\"price\"]').html(Shopify.formatMoney(data.final_price));\n    $html.find('[data-ajax-cart-quantity-value]').attr(\"value\", data.quantity);\n    $html.find('[data-ajax-cart-quantity-id]').attr(\"value\", data.variant_id);\n    $modifierEl.attr(\"data-product-quantity-max\", maxQuantity); // if (data.quantity >= maxQuantity) {\n    // var errorText = translationQuantityExceeded;\n    // errorText = errorText.replace('{{ qty }}', maxQuantity);\n    // $modifierEl.parent().append('<p class=\"cart-drawer-quantity__error\">' + errorText + '</p>');\n    // setTimeout(function(){\n    //   $('.cart-drawer-quantity__error').slideUp();\n    // }, 5000);\n    // }\n\n    if (data.discounts == 0) {\n      $html.find('[data-ajax-cart-template-element=\"discounts\"]').removeClass('hidden');\n    } // Resize the image\n\n\n    if (data.image) {\n      var newSrc = Shopify.resizeImage(data.image, imageSize);\n      $html.find('[data-ajax-cart-template-element=\"image\"] img').attr('src', newSrc);\n    }\n\n    return $html;\n  };\n  /**\n   * Show cart warning\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.showWarning = function (warning) {\n    var self = this; // Close currently opened fancybox (like Quickshops etc)\n\n    $.fancybox.close(); // Create the warning (must be wrapped in a single div for fancyBox)\n\n    var warning_html = warning.replace('All 1 ', 'All ').replace('[', '- ').replace(']', '');\n    var warningObj = {\n      warning: warning_html\n    }; // Clone the warning template\n\n    var $html = $(self.$ajaxCartTemplate__warnings).clone(); // Fill the template with data\n\n    var $response_html = self.fillTemplate($html, warningObj, self.options.notification_image_size); // Show the notification\n\n    $.fancybox.open($response_html, {\n      hash: false,\n      touch: false,\n      baseClass: \"ajax-cart-warning-popup\"\n    });\n  };\n  /**\n   * Add product to cart\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.addToCart = function ($el) {\n    var self = this; // Find the form\n\n    var $form = $el.closest('form');\n    var orderedQuantity = $form.find('[data-ajax-cart-quantity]').val();\n\n    if (isNaN(parseFloat(orderedQuantity))) {\n      return;\n    }\n\n    var addData = $form.serialize();\n    var addObject = JSON.parse('{\"' + addData.replace(/&/g, '\",\"').replace(/=/g, '\":\"') + '\"}', function (key, value) {\n      return key === \"\" ? value : decodeURIComponent(value);\n    });\n    var addedProductId = parseInt(addObject.id);\n    var idsMaxUnits = [];\n    Shopify.getCart(function (cart) {\n      $.each(cart.items, function (index, item) {\n        if (item.product_type === 'Security System' && item.quantity >= 2) {\n          idsMaxUnits.push(item.id);\n        }\n      });\n\n      if (idsMaxUnits.includes(addedProductId)) {\n        self.showWarning(alarm_max_limit_message);\n      } else {\n        self.handleAddToCart(addData, $form);\n      }\n    });\n\n    if ($.code.debug) {\n      console.log('Add to Cart:', addData, orderedQuantity);\n    }\n  };\n  /**\n   * Shop at Amazon redirect for OOS products\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.redirectToAmazon = function ($el) {\n    var self = this; // Find the form\n\n    var clickedEl = document.querySelector('[data-amazon-link]');\n    var amazonLink = clickedEl.dataset.amazonLink;\n\n    if ($.code.debug) {\n      console.log('Amazon link:', amazonLink);\n    }\n\n    window.open(amazonLink, '_blank');\n  };\n  /**\n   * Handle recommended product add to cart Ajax\n   *\n   * @return void\n   * @access public \n   */\n\n\n  ajaxCart_plugin.prototype.addRecommendationToCart = function (addData) {\n    var self = this; // Sequence number for the current invocation of function\n\n    var seqNumber = ++self.xhrCount;\n    $.ajax({\n      type: 'POST',\n      url: '/cart/add.js',\n      data: addData,\n      dataType: 'json',\n      success: function success(data) {\n        if ($.code.debug) {\n          console.log('Recommendation Add to Cart ' + seqNumber + ' success:', data);\n        } // If this is the last ajax Call\n\n\n        if (seqNumber === self.xhrCount) {\n          self.getCart(self.options.onAddShowCart);\n        } // Track add to cart in Kenshoo\n\n\n        try {\n          kenshoo.trackConversion('3609', '32ce12ef-f320-4195-b470-53ca439cbfff', {\n            conversionType: 'add_to_cart'\n          });\n        } catch (e) {\n          if ($.code.debug) {\n            console.log('REC - Add to Cart event (kenshoo) did not fire', e);\n          }\n        } // Amazon display pixels\n\n\n        if (window.location.hostname.indexOf('en-uk') > -1) {\n          try {\n            document.body.appendChild(_pix_add_cart);\n          } catch (e) {\n            console.log('REC - Amazon display pixels did not fire', e);\n          }\n        }\n      },\n      error: function error(XMLHttpRequest) {\n        if ($.code.debug) {\n          console.log('Recommendation Add to Cart unsuccessful:', XMLHttpRequest);\n        }\n      }\n    });\n  };\n  /**\n   * Handle add to cart Ajax\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.handleAddToCart = function (addData, formInfo) {\n    var self = this; // Sequence number for the current invocation of function\n\n    var seqNumber = ++self.xhrCount;\n    $.ajax({\n      url: '/cart/add.js',\n      type: 'POST',\n      data: addData,\n      dataType: 'json',\n      beforeSend: function beforeSend() {\n        if ($.code.debug) {\n          console.log('Send to Cart: ' + seqNumber, addData);\n        }\n      },\n      error: function error(XMLHttpRequest) {\n        if ($.code.debug) {\n          console.log('Add to Cart error:', XMLHttpRequest);\n        } // Show a warning\n\n\n        var responseJSON = XMLHttpRequest.responseJSON;\n        self.showWarning(responseJSON.description);\n      }\n    }).done(function (data) {\n      var currentQuantityMax = formInfo.find('[data-product=\"quantity\"]').data(\"productQuantityMax\");\n\n      if (data.quantity >= currentQuantityMax && data.product_type !== 'Security System') {\n        formInfo.find('[data-ajax-cart-add-button]').attr(\"disabled\", true);\n        formInfo.find('.quantity-error').removeClass('is-hidden');\n      }\n\n      if ($.code.debug) {\n        console.log('Add to Cart ' + seqNumber + ' success:', data);\n      } // If this is the last ajax Call\n\n\n      if (seqNumber === self.xhrCount) {\n        // Show the notification\n        // self.showAddToCartNotification(data);\n        self.getCart(self.options.onAddShowCart);\n        var d = new Date().getTime();\n\n        if (sessionStorage.getItem('atc_time') === null) {\n          sessionStorage.setItem(\"atc_time\", d);\n        }\n      } // Track add to cart in Kenshoo\n\n\n      try {\n        kenshoo.trackConversion('3609', '32ce12ef-f320-4195-b470-53ca439cbfff', {\n          conversionType: 'add_to_cart'\n        });\n      } catch (e) {\n        if ($.code.debug) {\n          console.log('Add to Cart event (kenshoo) did not fire', e);\n        }\n      } // Amazon display pixels\n\n\n      if (window.location.hostname.indexOf('en-uk') > -1) {\n        try {\n          document.body.appendChild(_pix_add_cart);\n        } catch (e) {\n          console.log('Amazon display pixels did not fire', e);\n        }\n      }\n    });\n  };\n  /**\n   * Post cart updates;\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.postAjaxCartUpdates = function (data) {\n    var self = this; // Sequence number for the current invocation of function\n\n    var seqNumber = ++self.xhrCount;\n    $.ajax({\n      type: \"POST\",\n      url: '/cart/change.js',\n      data: data,\n      dataType: 'json',\n      success: function success(cart) {\n        if ($.code.debug) {\n          console.log('Cart update ' + seqNumber + ' success:', cart);\n        } // If this is the last ajax Call\n\n\n        if (seqNumber === self.xhrCount) {\n          self.updateCart(cart);\n        }\n      },\n      error: function error(cart) {\n        // If ( $.code.debug ) { console.log( 'Add to Cart always:', data ); }\n        if (seqNumber === self.xhrCount) {\n          // Get the cart\n          self.getCart(self.options.onAddShowCart);\n        }\n      }\n    });\n  };\n  /**\n   * Update the cart\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.updateCart = function (cart) {\n    var self = this; // If we're on the cart page, with the cart-form still visible but no products in it (user removed the last product)\n\n    if (window.location.href.indexOf('/cart') > -1 && $('#cartform').length && cart.item_count == 0) {\n      // Reload the page to show the ampty cart message\n      window.location.reload(true);\n      return;\n    }\n\n    self.updateAjaxCartProducts(cart.items);\n    self.updateAjaxCartTotals(cart);\n    self.updateAjaxCartActions(cart);\n    self.updateCartProducts(cart.items);\n    self.updateCartRecommendations();\n    self.updateCartTotals(cart);\n    self.updateCartIconQuantity(cart.item_count);\n\n    if ($.code.debug) {\n      console.table(cart.items, [\"title\", \"quantity\", \"id\"]);\n    }\n  };\n  /**\n   * Render the cart\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.getCart = function (openTheCart) {\n    var self = this;\n    Shopify.getCart(function (cart) {\n      if ($.code.debug) {\n        console.log('ajaxCart:', cart);\n      }\n\n      self.updateCart(cart);\n\n      if (openTheCart) {\n        self.openCart();\n      }\n    });\n  };\n  /**\n   * Update the ajax cart products\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.updateAjaxCartProducts = function (cartProducts) {\n    var self = this;\n    var productCount = 0;\n    self.$ajaxCartContainer__products.empty();\n    $.each(cartProducts, function (i, productData) {\n      productCount = productCount + 1; // Clone the product template\n\n      var $html = self.$ajaxCartTemplate__products.clone(); // Fill the template with data\n\n      var $product_html = self.fillTemplate($html, productData, self.options.cart_image_size); // Add product to container\n\n      self.$ajaxCartContainer__products.append($product_html);\n    });\n\n    if (productCount === 0) {\n      self.$cartContainer__emptyMessage.attr('hidden', false);\n    } else {\n      self.$cartContainer__emptyMessage.attr('hidden', true);\n    }\n  };\n  /**\n   * Update the cart page products\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.updateCartProducts = function (cartProducts) {\n    var self = this;\n    self.$cartContainer__products.find('[data-cart-line]').each(function () {\n      var $row = $(this);\n      var row_data = false; // Get row ID\n\n      var rowId = $row.data('cart-line'); // Get data for this row from cart data\n\n      $.each(cartProducts, function (index, item_data) {\n        if (item_data.variant_id == rowId) {\n          row_data = item_data;\n          return false;\n        }\n      }); // Update row data\n\n      if (row_data) {\n        $row.find('[data-ajax-cart-quantity-value]').val(row_data.quantity);\n        $row.find('[data-ajax-cart-template-element=\"line-price\"]').html(Shopify.formatMoney(row_data.final_line_price)); // Product does not exist in cart\n      } else {\n        $row.remove();\n      }\n    });\n  };\n  /**\n   * Update the ajax cart recommendations\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.updateCartRecommendations = function () {\n    var self = this;\n    var cartRecommendations = document.querySelector('.ajax-cart-recommendations-wrapper');\n\n    if (Shopify.designMode === undefined) {\n      if (cartRecommendations !== undefined) {\n        $('[data-cart-rec-loader').fadeOut(100);\n        $('.cart-recommendations__loading-dots').fadeIn(300);\n        fetch('/?section_id=ajax-cart-recommendations').then(function (response) {\n          return response.text();\n        }).then(function (text) {\n          setTimeout(function () {\n            cartRecommendations.innerHTML = text;\n            initCartRecommendationsSlider();\n          }, 200);\n        }).catch(function (e) {\n          if ($.code.debug) {\n            console.log('Recommendations Update event failed', e);\n          }\n        });\n      }\n    }\n  };\n  /**\n   * Update the ajax cart totals\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.updateAjaxCartTotals = function (cart) {\n    var self = this; // Clone the total template\n\n    var $html = self.$ajaxCartTemplate__totals.clone(); // Fill the template with data\n\n    var $ajax_cart_totals_html = self.fillTemplate($html, cart); // Render the Total\n\n    self.$ajaxCartContainer__totals.empty().append($ajax_cart_totals_html);\n  };\n  /**\n   * Update the ajax cart Actions\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.updateAjaxCartActions = function (cart) {\n    var self = this;\n\n    if (cart.item_count > 0) {\n      self.$ajaxCartContainer__actions.show();\n    } else {\n      self.$ajaxCartContainer__actions.hide();\n    }\n  };\n  /**\n   * Update the cart page totals\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.updateCartTotals = function (cart) {\n    var self = this;\n    self.$cartContainer__totals.find('[data-ajax-cart-template-element=\"total\"]').html(Shopify.formatMoney(cart.total_price));\n    self.$cartContainer__totals.find('[data-ajax-cart-template-element=\"discounts\"]').html(Shopify.formatMoney(cart.discounts));\n  };\n  /**\n   * Open the cart\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxCart_plugin.prototype.openCart = function ($el) {\n    var self = this; // Open the dropdown\n\n    $('body').addClass('ajax-cart__is-open'); // self.$cartIconLink.toggleElementClass('addTheClass');\n  };\n  /**\n   * ajaxCart plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.ajaxCart = function (options) {\n    // Put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // Initialize the items\n\n    return this.each(function () {\n      // Store the element the plugin is set on\n      var $element = $(this); // Guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // If plugin was not innited\n\n      if (!instance) {\n        // Init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new ajaxCart_plugin($element, options));\n      } else {\n        // If instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/****************************************************************\n * CODE ajaxPagination\n *\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'ajaxPagination';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return ajaxPagination_plugin\n   */\n\n  var ajaxPagination_plugin = function ajaxPagination_plugin($element, options) {\n    // Scope it\n    var self = this;\n    self.$element = $element; // Set default options\n\n    var defaults = {};\n    var metaOptions = self.$element.data('ajax-pagination');\n    self.options = $.extend({}, defaults, metaOptions);\n\n    if ($.code.debug) {\n      console.log('Init ajaxPagination:', self.$element, self.options);\n    } // Find containers\n\n\n    self.$target = self.$element.find('[data-ajax-pagination-target]:first'); // Init event handlers\n\n    self.handleEvents();\n  };\n  /**\n   * Handle events\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxPagination_plugin.prototype.handleEvents = function () {\n    var self = this; // Catch click on ajax pagination link\n\n    self.$element.on('click', '[data-ajax-pagination-link]', function (event) {\n      event.preventDefault(); // Load the page link\n\n      self.loadPage($(this));\n    }); // Catch click on products with data-ajax-pagination-item.\n    // This will store the collection page that contains this product in history\n    // so browsing back from the PDP will always show the page where you left\n\n    self.$element.on('click', '[data-ajax-pagination-item]', function (event) {\n      event.preventDefault(); // Store the clicked link\n\n      var productUrl = $(this).attr('href'); // Store the page nr this product belongs to in return_page\n\n      var return_page = $(this).data('ajax-pagination-item'); // Replace the page parameter in the current url with return_page\n\n      var currentUrl = replaceUrlParam(document.location.href, 'page', return_page); // Remove the view parameter from the url\n\n      var historyUrl = currentUrl.replace('&view=ajax-pagination', '').replace('?view=ajax-pagination', '?'); // Replace the current url in history so the user can browse back to the page containg the viewed product\n\n      history.replaceState({}, \"\", historyUrl); // Open the clicked link\n\n      document.location = productUrl;\n    });\n  };\n  /**\n   * Create a loading animation on the link wrappers\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxPagination_plugin.prototype.loadingAnimation = function ($wrapper) {\n    $wrapper.slideUp(function () {\n      $wrapper.remove();\n    });\n  };\n  /**\n   * Load the next/previous collection page\n   *\n   * @return void\n   * @access public\n   */\n\n\n  ajaxPagination_plugin.prototype.loadPage = function ($el) {\n    var self = this; // Get the url to load\n\n    var url = $el.attr('href'); // Check if we're paging forward or backward\n\n    var paginationDirection = $el.data('ajax-pagination-link'); // Show loading animation\n\n    var $wrapper = $el.closest('[data-ajax-pagination-link-wrapper]');\n    self.loadingAnimation($wrapper); // Load the url\n\n    $.ajax({\n      url: url,\n      data: {\n        view: 'ajax-pagination'\n      },\n      success: function success(response) {\n        var stateObj = {};\n        var $html; // When loading previous page\n\n        if (paginationDirection === '-') {\n          // Get the elements from the html, remove the next button\n          $html = $(response).find('[data-ajax-pagination-link-wrapper=\"+\"]').remove().end().find('[data-ajax-pagination-target]:first').children().hide(); // Prepend elements to the beginning of the target\n\n          self.$target.prepend($html);\n        } else {\n          // Remove the view parameter from the url\n          var historyUrl = url.replace('&view=ajax-pagination', '').replace('?view=ajax-pagination', '?'); // Set the url in history so the user can browse back\n\n          history.pushState(stateObj, \"\", historyUrl); // Get the elements from the html, remove the previous button\n\n          $html = $(response).find('[data-ajax-pagination-link-wrapper=\"-\"]').remove().end().find('[data-ajax-pagination-target]:first').children().hide(); // Append elements to the end of the target\n\n          self.$target.append($html);\n        } // Slide new elements down\n\n\n        $html.slideDown();\n      }\n    });\n  };\n  /**\n   * ajaxPagination plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.ajaxPagination = function (options) {\n    // Put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // Initialize the items\n\n    return this.each(function () {\n      // Store the element the plugin is set on\n      var $element = $(this); // Guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // If plugin was not innited\n\n      if (!instance) {\n        // Init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new ajaxPagination_plugin($element, options));\n      } else {\n        // If instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/****************************************************************\n * CODE collapsible\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'collapsible';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return collapsible_plugin\n   */\n\n  var collapsible_plugin = function collapsible_plugin($element, options) {\n    // Scope it\n    var self = this;\n    self.$element = $element; // Set default options\n\n    var defaults = {\n      jsAnimation: false,\n      // Open and close animation by JS, if false provide custom css to handle the .collapsible__is-open state\n      openOnHover: false,\n      // Open Parents on mouseOver and close on mouseLeave\n      closeOnMouseleave: false,\n      // Close all Parents when mouse leaves the Wrapper\n      closeSiblings: false,\n      // Close sibling Parents when opening a Parent - value must be a screen width! When >= screenwidth, Parents will close\n      closeAll: false // Close all other Parents in wrapper when opening a Parent\n\n    }; // Get options from element data\n\n    var dataOptions = self.$element.data('collapsible-wrapper'); // Merge data options with default options\n\n    self.options = $.extend({}, defaults, dataOptions);\n\n    if ($.code.debug) {\n      console.log('Init collapsible:', self.$element, self.options);\n    } // Start the collapsible\n\n\n    self.init();\n  };\n  /**\n   * Init\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collapsible_plugin.prototype.init = function () {\n    var self = this; // Catch custom events on Parents [data-collapsible-parent] and on the element itself\n\n    self.$element.on({\n      'collapsibleOpen': function collapsibleOpen(event) {\n        self.open($(event.target));\n      },\n      'collapsibleClose': function collapsibleClose(event) {\n        self.close($(event.target));\n      }\n    }).on({\n      'collapsibleOpen': function collapsibleOpen(event) {\n        self.open($(event.target));\n      },\n      'collapsibleClose': function collapsibleClose(event) {\n        self.close($(event.target));\n      }\n    }, '[data-collapsible-parent]'); // Catch click on Triggers [data-collapsible-trigger]\n\n    self.$element.on({\n      click: function click(event) {\n        event.stopPropagation();\n        var $parent = $(this).closest('[data-collapsible-parent]'); // If Parent is closed - open it\n\n        if (!$parent.hasClass('collapsible__is-open')) {\n          event.preventDefault();\n          $parent.trigger('collapsibleOpen');\n        } else {\n          // Else if Parent is not a link, close it\n          var $trigger = $(this);\n\n          if (!$trigger.is('a')) {\n            $parent.trigger('collapsibleClose');\n          } // Else follow the link\n\n        }\n      }\n    }, '[data-collapsible-trigger]').not('[data-collapsible-wrapper] [data-collapsible-trigger]'); // Catch click on Trigger Icon [data-collapsible-trigger-icon]\n\n    self.$element.on({\n      click: function click(event) {\n        event.stopPropagation();\n        event.preventDefault();\n        var $parent = $(this).closest('[data-collapsible-parent]'); // If Parent is closed - open it\n\n        if (!$parent.hasClass('collapsible__is-open')) {\n          // Self.open( $parent );\n          $parent.trigger('collapsibleOpen');\n        } else {\n          // Else close it\n          $parent.trigger('collapsibleClose');\n        }\n\n        return false;\n      }\n    }, '[data-collapsible-trigger-icon]').not('[data-collapsible-wrapper] [data-collapsible-icon]'); // Catch hover on [data-collapsible-parent]\n\n    if (self.options.openOnHover) {\n      self.$element.on({\n        mouseenter: function mouseenter(event) {\n          // No hover effects on touch devices\n          if ($('html').hasClass('touch')) {\n            return;\n          }\n\n          $(this).trigger('collapsibleOpen');\n        },\n        mouseleave: function mouseleave(event) {\n          // No hover effects on touch devices\n          if ($('html').hasClass('touch')) {\n            return;\n          }\n\n          $(this).trigger('collapsibleClose');\n        }\n      }, '[data-collapsible-parent]').not('[data-collapsible-wrapper] [data-collapsible-parent]');\n    } // Catch mouseleave on [data-collapsible-wrapper]\n\n\n    if (self.options.closeOnMouseleave) {\n      self.$element.on({\n        mouseleave: function mouseleave() {\n          self.reset();\n        }\n      });\n    }\n  };\n  /**\n   * open subnav\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collapsible_plugin.prototype.open = function ($parent) {\n    var self = this; // Find target\n\n    var $target = $parent.find('> [data-collapsible-target]:first');\n\n    if ($target.length && self.options.jsAnimation) {\n      // Animate target open\n      var totalHeight = 0;\n      $target.children().each(function () {\n        totalHeight = totalHeight + $(this).outerHeight(true);\n      });\n      $target.stop().animate({\n        maxHeight: totalHeight\n      }, function () {\n        // Toggle class on parent\n        $parent.addClass('collapsible__is-open');\n        $target.css({\n          maxHeight: ''\n        });\n      });\n    } else {\n      // Toggle class on parent\n      $parent.addClass('collapsible__is-open'); // Close siblings if Window Width >= self.options.closeSiblings\n\n      if (self.options.closeSiblings > 0 && $.code.ww >= self.options.closeSiblings) {\n        $parent.siblings().each(function (index, el) {\n          self.close($(this));\n        });\n      }\n    }\n  };\n  /**\n   * close subnav\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collapsible_plugin.prototype.close = function ($parent) {\n    var self = this; // Find target\n\n    var $target = $parent.find('> [data-collapsible-target]:first');\n\n    if ($target.length && self.options.jsAnimation) {\n      // Animate target closed\n      var totalHeight = 0;\n      $target.children().each(function () {\n        totalHeight = totalHeight + $(this).outerHeight(true);\n      });\n      $target.stop().css({\n        maxHeight: totalHeight\n      }).animate({\n        maxHeight: 0\n      }, function () {\n        // Toggle class on parent and close all children\n        $parent.removeClass('collapsible__is-open').find('.collapsible__is-open').removeClass('collapsible__is-open');\n        $target.css({\n          maxHeight: ''\n        });\n      });\n    } else {\n      // Toggle class on parent and close all children\n      $parent.removeClass('collapsible__is-open').find('.collapsible__is-open').removeClass('collapsible__is-open');\n    }\n  };\n  /**\n   * reset navigation elements\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collapsible_plugin.prototype.reset = function () {\n    var self = this;\n    self.$element.find('[data-collapsible-trigger]').each(function (index, el) {\n      var $parent = $(this).closest('[data-collapsible-parent]');\n\n      if ($parent.hasClass('collapsible__is-open')) {\n        $parent.trigger('collapsibleClose');\n      }\n    });\n  };\n  /**\n   * collapsible plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.collapsible = function (options) {\n    // Put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // Initialize the items\n\n    return this.each(function () {\n      // Store the element the plugin is set on\n      var $element = $(this); // Guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // If plugin was not innited\n\n      if (!instance) {\n        // Init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new collapsible_plugin($element, options));\n      } else {\n        // If instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/****************************************************************\n * CODE collectionFilter\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'collectionFilter';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return collectionFilter_plugin\n   */\n\n  var collectionFilter_plugin = function collectionFilter_plugin($element, options) {\n    // scope it\n    // Get needed elements\n    var self = this;\n    self.$element = $element;\n    self.$filters = self.$element.data('filter-wrapper');\n    self.$checkboxesContainer = self.$element.find('.collection-filter__group-checkbox');\n    self.$collections = self.$element.parent().parent().find('[data-collection-wrapper]');\n    self.$products = self.$collections.find('.product-link-wrapper'); // Get needed Global variables\n\n    self.$filterClasses = self.$element.data('collection-filter-classes').split(',');\n    self.$pointsNeeded = 0;\n    self.$selectedTags = [];\n    self.$checkedFilters = [];\n    self.$paramObj = {};\n\n    if ($.code.debug) {\n      console.log('Init collectionFilter:', self.$element);\n      console.log('Filters categories:', self.$filterClasses);\n    } // Start the collectionFilter\n\n\n    self.init();\n  };\n  /**\n   * Init\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collectionFilter_plugin.prototype.init = function () {\n    var self = this; // Check Url params and check the correct checkbox.\n\n    self.initLinkedProducts();\n    self.readUrlParams(); // Loop all Filter input[type\"checkbox\"]'s\n\n    self.$checkboxesContainer.each(function (i, checkbox) {\n      // Connect onChange to Filter input[type\"checkbox\"]'s\n      $(checkbox).on('change', function (event) {\n        // Limit deselect functionality to UK store\n        if (window.location.href.indexOf(\"en-uk\") > -1) {\n          if (event.target.dataset.filterClass === 'bundles') {\n            $('[data-filter-wrapper=\"category\"]').find('input').prop('checked', false);\n          } else if (event.target.dataset.filterClass === 'category') {\n            $('[data-filter-wrapper=\"bundles\"]').find('input').prop('checked', false);\n          }\n        } // Handle onChange event\n\n\n        self.checkCheckedInputs();\n        self.updateProductPoints();\n        self.updateCollectionPoints();\n        self.updateUrl();\n      });\n    });\n    $(window).on('resize', function (event) {\n      // Handle onChange event\n      self.updateCollectionPoints();\n    });\n    self.initFilterSlider();\n  };\n  /**\n   * Init Filter slider\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collectionFilter_plugin.prototype.initFilterSlider = function () {\n    // Scope it\n    var self = this;\n    var templateWrapper = $(\"[data-collection-all='template-wrapper']\"); // Handle trigger onclick\n\n    $(\"[data-collection-all-filter='trigger']\").on('click', function (event) {\n      // Check if templateWrapper has class 'filters__open'\n      if (templateWrapper.hasClass('filters__open')) {\n        // If templateWrapper has class 'filters__open'\n        // Remove class 'filters__open' from templateWrapper\n        templateWrapper.removeClass('filters__open'); // Remove class 'no_scroll__lg' from body\n\n        $('body').removeClass('no_scroll__max-lg');\n      } else {\n        // If templateWrapper doesn't have class 'filters__open'\n        // Check if clicked trigger isn't the wrapper\n        if ($(event.target).data('collection-all') != 'template-wrapper') {\n          // If clicked trigger isn't the wrapper\n          // Add class 'filters__open' to templateWrapper\n          templateWrapper.addClass('filters__open'); // 'filters__open' will open/show up the filter mobile panel\n          // Add class 'no_scroll__lg' to body\n\n          $('body').addClass('no_scroll__max-lg'); // 'no_scroll__lg' will make body unscrollable when screen smaller lg\n        }\n      }\n    }) // Make sure children don't open the filter\n    .children().on('click', function (event) {\n      event.stopPropagation();\n    });\n  };\n  /**\n   * Check Url paramString and check the correct checkbox.\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collectionFilter_plugin.prototype.readUrlParams = function () {\n    var self = this;\n    var paramArr = []; // Get filter params from URL\n\n    if (window.location.search.length > 0) {\n      paramArr = window.location.search.replace('?', '').split('&');\n    }\n\n    var filterValueCategory = []; // Fill self.$paramObj with the correct parameters\n\n    paramArr.forEach(function (paramString, i) {\n      // Split the paramString into the filterClass and filterValue\n      var filterClass = paramString.split('=')[0];\n      var filterValue = paramString.split('=')[1].split(\"+\"); // Need to set category values in seperate array to be able to add bundles later on if needed\n\n      if (filterClass == \"category\" || filterClass == \"bundles\") {\n        filterValueCategory = filterValue;\n      } // Check if filterClass is an actually a filterClass\n\n\n      if (self.$filterClasses.indexOf(filterClass) != -1) {\n        // If filterClass is an actually a filterClass\n        // Set filterClass: filterValue in self.$paramObj\n        self.$paramObj[filterClass] = filterValue; // if there is no sale on, but sale parameter is set in url, we turn on bundles\n      } else if (filterValue == \"sale\") {\n        // add bundles to the array\n        filterValueCategory.push(\"bundles\"); // create an updated set for the category filters\n\n        self.$paramObj[\"bundles\"] = ['true'];\n      }\n    }); // Check the checked checkboxes\n\n    Object.keys(self.$paramObj).forEach(function (filterClass, i) {\n      // For all filterClass values\n      self.$paramObj[filterClass].forEach(function (value, i) {\n        // If the categor-bundles object exist it will override the original category one\n        if (filterClass == \"category-bundles\") {\n          filterClass = \"category\";\n        } // Find the correct input[type\"checkbox\"] and set checked to true\n\n\n        if (filterClass === 'compatible') {\n          $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').prop('checked', true);\n\n          if ($('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().hasClass('is-hidden')) {\n            $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().toggleClass('is-hidden');\n            $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().parent().find('.is-folded').children().toggleClass('is-hidden');\n          }\n        } else if (filterClass === 'category' && value === 'alarm-pack') {\n          filterClass = 'compatible';\n          $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').prop('checked', true);\n          console.log('filter class', filterClass);\n\n          if ($('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().hasClass('is-hidden')) {\n            $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().toggleClass('is-hidden');\n            $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().parent().find('.is-folded').children().toggleClass('is-hidden');\n          }\n        } else if (filterClass === 'category' && value === 'alarm-camera-pack') {\n          filterClass = 'compatible';\n          $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').prop('checked', true);\n          console.log('filter class', filterClass);\n\n          if ($('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().hasClass('is-hidden')) {\n            $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().toggleClass('is-hidden');\n            $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().parent().find('.is-folded').children().toggleClass('is-hidden');\n          }\n        } else if (filterClass === 'category' && value === 'alarm-camera-doorbell-pack') {\n          filterClass = 'compatible';\n          $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').prop('checked', true);\n          console.log('filter class', filterClass);\n\n          if ($('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().hasClass('is-hidden')) {\n            $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().toggleClass('is-hidden');\n            $('[data-filter-tag=\"' + filterClass + ':' + value + '\"]').parent().parent().find('.is-folded').children().toggleClass('is-hidden');\n          }\n        } else {\n          $('[data-filter-finder=' + filterClass + value + ']').prop('checked', true);\n        }\n      });\n    });\n    self.checkCheckedInputs();\n    self.updateProductPoints();\n    self.updateCollectionPoints();\n  };\n  /**\n   * check category inputs\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collectionFilter_plugin.prototype.checkCheckedInputs = function () {\n    var self = this; // Get needed Local variables\n\n    self.$pointsNeeded = 0;\n    self.$selectedTags = []; // Check input[type\"checkbox\"]'s per filterClass\n\n    self.$filterClasses.forEach(function (filterClass) {\n      // clear params for current filterClass\n      self.$paramObj[filterClass] = [];\n      var hasCheckedCheckbox = false; // Check input[type\"checkbox\"]'s of current filterClass\n\n      $('[data-filter-class=' + filterClass + ']').each(function (i, checkbox) {\n        // Check if current input[type\"checkbox\"] is checked\n        if ($(checkbox).prop('checked')) {\n          // If current input[type\"checkbox\"] is checked\n          self.$paramObj[filterClass].push($(checkbox).data('filter-tag').split(':')[1]); // Set hasCheckedCheckbox to true\n\n          hasCheckedCheckbox = true; // Add selected tag to self.$selectedTags array\n\n          self.$selectedTags.push($(checkbox).data('filter-tag'));\n        }\n      }); // If filterClass hasCheckedCheckbox\n\n      if (hasCheckedCheckbox) {\n        // Add a point to the amount of needed points\n        self.$pointsNeeded += 1;\n      }\n    });\n  };\n  /**\n   * check if products have the correct amount of points assigned\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collectionFilter_plugin.prototype.updateProductPoints = function () {\n    var self = this; // Handle points for all products\n\n    self.$products.each(function (i, productLink) {\n      productLink = $(productLink);\n      var newPoints = 0;\n      var checkedCategories = [];\n      var productTags = productLink.data('collection-product-tags'); // Iterate over all tags the product has (productTags)\n\n      productTags.forEach(function (tag, i) {\n        var tagCategorie = tag.split(':')[0]; // Check If tagCategorie is a checkedCategorie && if Tag is a seleclectedTag\n\n        if (checkedCategories.indexOf(tagCategorie) == -1 && self.$selectedTags.indexOf(tag) != -1) {\n          // If tagCategorie is a checkedCategorie && if Tag is a seleclectedTag\n          checkedCategories.push(tagCategorie);\n          newPoints += 1;\n        }\n      }); // Assign new amount of point to productLink data-collection-product-points\n\n      productLink.attr('data-collection-product-points', newPoints); // Check if productLink has enough points to be displayed\n\n      if (newPoints < self.$pointsNeeded) {\n        // If productLink has enough points to be displayed\n        productLink.removeClass('showing');\n      } else {\n        // If productLink doens't has enough points to be displayed\n        productLink.addClass('showing');\n      }\n    });\n  };\n  /**\n   * check if collection have the correct amount of points assigned\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collectionFilter_plugin.prototype.updateCollectionPoints = function () {\n    var self = this;\n    var collectionsShowing = false; // Iterate over collections\n\n    self.$collections.each(function (i, collection) {\n      collection = $(collection);\n      var bannerImgMobile = collection.find('.banner-img-mobile');\n      var modifier = 1;\n\n      if (bannerImgMobile.length > 0) {\n        // Check if window is smaller than 1024px\n        if ($(window).width() < 1024) {\n          // If window is SMALLER than 1024px\n          // Add 'showing' to banner-img-mobile\n          bannerImgMobile.addClass('showing');\n        } else {\n          // If window is BIGGER than 1024px\n          // Remove 'showing' and 'IE-grid__' from banner-img-mobile\n          self.removeClass(bannerImgMobile, 'IE-grid__');\n          bannerImgMobile.removeClass('showing');\n        }\n      } // Handle linked products in collection\n\n\n      self.handleLinkedProducts(collection); // Get showingProducts in the collection\n\n      var showingProducts = collection.find('.showing:not(\".banner-img-mobile\")'); // Check if showingProducts\n\n      if (showingProducts.length > 0) {\n        // If collection contains showingProducts\n        // Iterate over showingProducts\n        showingProducts.each(function (index, element) {\n          // Check if index == 3 (aka 4th grid position)\n          if (index == 3 && bannerImgMobile.hasClass('showing')) {\n            // If index == 3 (aka 4th grid position)\n            // Assign bannerImgMobile that position by adding the 'IE-grid__' class\n            bannerImgMobile.addClass('IE-grid__' + (index + modifier) + ''); // Modify the modifier\n\n            modifier += 1;\n          } // Remove old 'IE-grid__' class\n\n\n          self.removeClass(element, 'IE-grid__'); // Add new 'IE-grid__' class\n\n          $(element).addClass('IE-grid__' + (index + modifier) + '');\n        }); // If collection contains showingProducts\n        // Set collectionsShowing to true\n\n        collectionsShowing = true; // Add 'showing' class to collection\n\n        collection.addClass('showing');\n      } else {\n        // If collection doesn't contain showingProducts\n        // Remove 'showing' class from collection\n        collection.removeClass('showing');\n      }\n    }); // Check if none of the collections has showingProducts\n\n    if (!collectionsShowing) {\n      // If none of the collections has showingProducts\n      // Show the '.no-products-text' by adding 'showing' class to '.no-products-text'\n      $('.no-products-text').addClass('showing');\n    } else {\n      // If one of the collections has showingProducts\n      // Hide the '.no-products-text' by removing 'showing' class from '.no-products-text'\n      $('.no-products-text').removeClass('showing');\n    }\n  };\n  /**\n   * check if collection will show\n   *\n   * @return bool\n   * @access public\n   */\n\n\n  collectionFilter_plugin.prototype.showCollection = function (collection) {\n    var self = this; // Check if collection contains '.showing:not(\".banner-img-mobile\")'\n\n    if (collection.find('.showing:not(\".banner-img-mobile\")').length != 0) {\n      // If collection contains '.showing:not(\".banner-img-mobile\")'\n      // Return true\n      return true;\n    } else {\n      // If collection doesn't contain '.showing:not(\".banner-img-mobile\")'\n      // Return false\n      return false;\n    }\n  };\n  /**\n   * init Linked Products logic\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collectionFilter_plugin.prototype.initLinkedProducts = function () {\n    var self = this; // Iterate over collections to check if linkedProducts\n\n    self.$collections.each(function (i, collection) {\n      collection = $(collection);\n      var linkedProducts = collection.find('[data-collection-product-link]'); // Check if linkedProducts\n\n      if (linkedProducts.length > 0) {\n        // If linkedProducts Iterate over linkedProducts to check if linkedProductsCollection is showing\n        linkedProducts.each(function (index, linkedProduct) {\n          // Get linkedProduct tags\n          var currentTags = $(linkedProduct).data('collection-product-tags'); // Get categoryTag\n\n          var tagKey = $('[data-collection-filter-category-tag]').data('collection-filter-category-tag'); // Assign new tag\n\n          var newTag = \"\" + tagKey + \"\" + collection.data('collection-wrapper') + \"\"; // Check if newTag isn't included in currentTags;\n\n          if (currentTags.indexOf(newTag) == -1) {\n            // If newTag isn't included in currentTags;\n            // Add newTag to currentTags\n            currentTags[currentTags.length] = newTag; // Remove other collection from currentTags\n\n            currentTags['0'] = ''; // Set set currentTags as linkedProduct data attribute\n\n            $(linkedProduct).attr('data-collection-product-tags', currentTags);\n          }\n        });\n      }\n    });\n  };\n  /**\n   * handle Linked Products logic\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collectionFilter_plugin.prototype.handleLinkedProducts = function (collection) {\n    var self = this; // Get linkedProducts from collection\n\n    var linkedProducts = collection.find('[data-collection-product-link]'); // Check if linkedProducts in collection\n\n    if (linkedProducts.length > 0) {\n      // If linkedProducts in collection\n      // Iterate over linkedProducts\n      linkedProducts.each(function (index, linkedProduct) {\n        // Remove 'IE-grid__' from linkedProduct\n        self.removeClass(linkedProduct, 'IE-grid__'); // Get linkedCollectionHandle from linkedProduct\n\n        var linkedCollectionHandle = $(linkedProduct).data('collection-product-link'); // Find data-collection-wrapper with the correct linkedCollectionHandle and\n        // Check if collection is shown\n\n        if (self.showCollection($('[data-collection-wrapper=' + linkedCollectionHandle + ']'))) {\n          // If collection is shown\n          // Add 'cant_be_showing' class to linkedProduct\n          $(linkedProduct).addClass('cant_be_showing'); // 'cant_be_showing' class makes sure that even 'showing' class is added product won't show\n        } else {\n          // If collection isn't shown\n          // Remove 'cant_be_showing' class from linkedProduct\n          $(linkedProduct).removeClass('cant_be_showing');\n        }\n      });\n    }\n  };\n  /**\n   * remove class\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collectionFilter_plugin.prototype.removeClass = function (element, classnamePart) {\n    var self = this;\n    var newClasses = []; // Get all classes\n\n    var currentClasses = $(element).attr('class').split(' '); // Iterate over current_classes\n\n    currentClasses.forEach(function (classname) {\n      // Check if classname doesn't contain classnamePart\n      if (classname.indexOf(classnamePart) == -1) {\n        // If classname doesn't contain classnamePart\n        // Add classname to newClasses\n        newClasses.push(classname);\n      }\n    }); // Fill element attribute class with newClasses\n\n    $(element).attr('class', newClasses.join(' '));\n  };\n  /**\n   * update Url to match filters\n   *\n   * @return void\n   * @access public\n   */\n\n\n  collectionFilter_plugin.prototype.updateUrl = function () {\n    var self = this;\n    var URL = window.location.href.split(\"?\")[0];\n    var filter_URL = \"\";\n    var isFirstUrlParam = true; // Iterate over the keys in the paramObj\n\n    Object.keys(self.$paramObj).forEach(function (key, i) {\n      // Check if this key has content\n      if (self.$paramObj[key].length > 0) {\n        // If this key has content\n        // Check if the 1st parameter\n        if (isFirstUrlParam) {\n          // If the 1st parameter\n          // Set isFirstUrlParam to false\n          isFirstUrlParam = false; // Assign filter url\n\n          filter_URL = [\"?\", filter_URL, key, \"=\", self.$paramObj[key].join(\"+\")].join('');\n        } else {\n          // If isn't the 1st parameter\n          // Assign filter url\n          filter_URL = [filter_URL, \"&\", key, \"=\", self.$paramObj[key].join(\"+\")].join('');\n        }\n      }\n    }); // Assign URL with filters\n\n    URL = '' + URL + filter_URL + ''; // Set URL in addressbar\n\n    window.history.replaceState(history.state, '', URL);\n  };\n  /**\n   * collectionFilter plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.collectionFilter = function (options) {\n    // put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // initialize the items\n\n    return this.each(function () {\n      // store the element the plugin is set on\n      var $element = $(this); // guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // if plugin was not innited\n\n      if (!instance) {\n        // init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new collectionFilter_plugin($element, options));\n      } else {\n        // if instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n\n  $('.js-enable-second-level').click(function () {\n    $(this).parent().find('.js-checkbox-label__second_level').toggleClass('is-hidden');\n    $(this).parent().find('.is-folded').children().toggleClass('is-hidden');\n  });\n}(jQuery, document, window);\n/****************************************************************\n* CODE collectionNav\n****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n  * Plugin name\n  */\n  var _pluginName = 'collectionNav';\n  /**\n  * @param jQuery Element Wrapping container div\n  * @return collectionNav_plugin\n  */\n\n  var collectionNav_plugin = function collectionNav_plugin($element, options) {\n    // scope it\n    var self = this;\n    self.$element = $element;\n    self.storageId = 'CodeCollectionNav'; // get current values\n\n    self.sort_by = getParameterByName('sort_by');\n    self.view = getParameterByName('view');\n    self.page = parseInt(getParameterByName('page')); // collection sorter\n\n    self.$element.find('[data-sort-collection]').each(function () {\n      // set to current sorting\n      var sortingData = $(this).data('sort-collection');\n\n      if (sortingData.current != 'undefined') {\n        $(this).find('[value=\"' + sortingData.current + '\"]').prop('selected', true);\n      }\n    }); // init collection sorter\n\n    self.$element.on('change', '[data-sort-collection]', function (event) {\n      // on change, reload with sorting parameter\n      event.preventDefault();\n      var sortingData = $(this).data('sort-collection');\n      var newSorting = $(this).val();\n      self.sort_by = ''; // reset paging\n\n      self.page = '';\n\n      if (newSorting != sortingData.default) {\n        self.sort_by = newSorting;\n      }\n\n      self.goToUrl();\n    }); // init collection grid/list view\n\n    self.$element.on('change', '[data-collection-view]', function (event) {\n      // on change, reload page with viewing parameter\n      event.preventDefault();\n      var newView = $(this).val();\n      self.view = newView;\n      self.goToUrl();\n    }); // init collection paging\n\n    self.$element.on('click', '[data-collection-nav-paging] a', function (event) {\n      event.preventDefault(); // on change, reload page with page parameter\n\n      var newPageUrl = $(this).attr('href');\n      self.page = parseInt(getParameterByName('page', newPageUrl));\n      self.goToUrl();\n    }); // THIS DOES NOT WORK WITH FILTERED COLLECTIONS\n\n    if ($.code.localStorage) {\n      // get stored collection objects from localstorage\n      self.getCollectionsNav(); // find links that point to this collection\n\n      self.$element.find('[data-collection-nav-link]').each(function () {\n        // get url of collection\n        var url = $(this).data('collection-nav-link'); // check if localstorage contains params for this url\n\n        var urlData = self.collectionsParams[url];\n\n        if (!urlData) {\n          return;\n        } // create new url\n\n\n        var newUrl;\n\n        if (urlData && urlData.view) {\n          newUrl = self.addtoUrl(url, 'view', urlData.view);\n        }\n\n        if (urlData && urlData.sort_by) {\n          newUrl = self.addtoUrl(newUrl, 'sort_by', urlData.sort_by);\n        }\n\n        if (urlData && urlData.page) {\n          newUrl = self.addtoUrl(newUrl, 'page', urlData.page);\n        } // update href with newUrl\n\n\n        if (newUrl) {\n          $(this).attr('href', newUrl);\n        }\n      });\n    }\n  };\n  /**\n   * Toggle nav\n   */\n\n\n  collectionNav_plugin.prototype.addtoUrl = function (url, param, val) {\n    var q = '';\n\n    if (val) {\n      if (url.indexOf('?') < 0) {\n        q = '?';\n      } else {\n        q = '&';\n      }\n\n      url += q + param + '=' + val;\n    }\n\n    return url;\n  };\n  /**\n   * Go To Url\n   */\n\n\n  collectionNav_plugin.prototype.goToUrl = function () {\n    var self = this;\n    var path = window.location.pathname;\n    var url = window.location.protocol + \"//\" + window.location.host + path;\n    self.storeCollectionsNav(path); // create new url\n\n    var newUrl = self.addtoUrl(url, 'view', self.view);\n    newUrl = self.addtoUrl(newUrl, 'sort_by', self.sort_by);\n    newUrl = self.addtoUrl(newUrl, 'page', self.page); // go to url\n\n    window.location = newUrl;\n  };\n  /**\n   * get collections nav objects\n   */\n\n\n  collectionNav_plugin.prototype.getCollectionsNav = function () {\n    var self = this;\n\n    if ($.code.localStorage) {\n      // get stored collection objects from localstorage\n      self.collectionsParams = {};\n      var storedCollectionsParams = localStorage.getItem(self.storageId);\n\n      if (storedCollectionsParams) {\n        self.collectionsParams = JSON.parse(storedCollectionsParams);\n      }\n    }\n  };\n  /**\n   * Store collections nav objects\n   */\n\n\n  collectionNav_plugin.prototype.storeCollectionsNav = function (url) {\n    var self = this;\n\n    if ($.code.localStorage) {\n      // get stored collection objects from localstorage\n      self.getCollectionsNav(); // add current / update the collection object in collection objects\n\n      self.collectionsParams[url] = {\n        page: self.page,\n        view: self.view,\n        sort_by: self.sort_by\n      }; // store the collection objects\n\n      localStorage.setItem(self.storageId, JSON.stringify(self.collectionsParams));\n    }\n  };\n  /**\n  * collectionNav plugin\n  *\n  * @return jQuery objects\n  */\n\n\n  $.fn.collectionNav = function (options) {\n    // put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // initialize the items\n\n    return this.each(function () {\n      // store the element the plugin is set on\n      var $element = $(this); // guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // if plugin was not innited\n\n      if (!instance) {\n        // init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new collectionNav_plugin($element, options));\n      } else {\n        // if instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/****************************************************************\n * CODE compare\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'compare';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return compare_plugin\n   */\n\n  var compare_plugin = function compare_plugin($element, options) {\n    // Scope it\n    var self = this;\n    self.$element = $element;\n    self.$strings = $('[data-compare-strings]').data('compare-strings');\n    self.$selects = $element.find('[data-custom-select=\"wrapper\"]');\n    self.$currentProductData; // Set default options\n\n    var defaults = {}; // Get options from element data\n\n    var dataOptions = self.$element.data('compare-wrapper'); // Merge data options with default options\n\n    self.options = $.extend({}, defaults, dataOptions);\n\n    if ($.code.debug) {\n      console.log('Init compare:', self.$element, self.options);\n    } // Start the compare\n\n\n    self.init();\n    $(document).on('shopify:section:load', function (event) {\n      self.init();\n    });\n  };\n  /**\n   * Init\n   *\n   * @return void\n   * @access public\n   */\n\n\n  compare_plugin.prototype.init = function () {\n    var self = this; // Fix selects position absolutes\n\n    self.resizeMobileSelects(); // Connect window resize\n\n    $(window).on('resize', function (e) {\n      self.resizeMobileSelects();\n    }); // Connect selects events\n\n    $('[data-custom-select=\"wrapper\"]').on({\n      click: function click(event) {\n        var wrapper = $(this);\n        var target = $(event.target);\n\n        if (wrapper.hasClass('dropdown__open')) {\n          if (target.data('custom-select-value') != undefined) {\n            self.$currentProductData = target.find('#select-value').html();\n            wrapper.find('[data-custom-select=\"selected\"] > div ').html(target.html()).find('#select-value').html(self.$currentProductData);\n            wrapper.find('[data-custom-select=\"selected\"]').trigger('change');\n          }\n\n          wrapper.removeClass('dropdown__open');\n        } else {\n          if ($.code.ww < 440) {} else {\n            wrapper.addClass('dropdown__open');\n          }\n        }\n      },\n      mouseleave: function mouseleave(event) {\n        var wrapper = $(this);\n        wrapper.removeClass('dropdown__open');\n      }\n    }); // Connect select changes\n\n    $('[data-custom-select=\"selected\"]').on({\n      change: function change(event) {\n        self.assingCells(this);\n        self.resizeMobileSelects();\n      }\n    });\n    $('[data-custom-select=\"selected\"]').each(function (i, element) {\n      self.$currentProductData = $(element).find('#select-value').html();\n      self.assingCells(element);\n    }); // Connect mobile select changes\n\n    $('.mobile-selector_dropdown').on('change', function (event) {\n      var selectedProductHandle = $(this).find('.mobile-product-selector').val();\n      var wrapper = $(this).closest('[data-custom-select=\"wrapper\"]');\n      var selectedProduct = wrapper.find('[data-product-handle=\"' + selectedProductHandle + '\"]');\n      selectedProduct.click();\n      self.$currentProductData = selectedProduct.find('#select-value').html();\n      wrapper.find('[data-custom-select=\"selected\"] > div ').html(selectedProduct.html()).find('#select-value').html(self.$currentProductData);\n      wrapper.find('[data-custom-select=\"selected\"]').trigger('change');\n    });\n  };\n  /**\n  * assign Cells\n  *\n  * @return void\n  * @access public\n  */\n\n\n  compare_plugin.prototype.assingCells = function (select) {\n    var self = this;\n    var column = $(select).parent().data('compare-product-select');\n    var productData = self.$currentProductData;\n\n    if (_typeof(productData) != _typeof({})) {\n      productData = JSON.parse(productData);\n    }\n\n    Object.keys(productData).forEach(function (key, index) {\n      var currentCell = $('[data-compare-product-' + key + '=\"' + column + '\"]');\n\n      switch (key) {\n        case 'image':\n          var styles = {\n            'background-image': 'url(\"' + productData[key] + '\")',\n            'background-size': 'contain',\n            'padding-bottom': '100%'\n          };\n          currentCell.css(styles);\n          break;\n\n        case 'available-colours':\n          var coloursArr = productData[key].split('-').sort().reverse();\n          var colourSwatchesArr = [];\n          coloursArr.forEach(function (colour, index) {\n            var colourSwatch = '<div class=\"color-swatch ' + colour + '\"></div>';\n            colourSwatchesArr.push(colourSwatch);\n          });\n          currentCell.html(colourSwatchesArr.join(''));\n          break;\n\n        case 'colours':\n          var coloursArr = productData[key].split('-').sort().reverse();\n          var colourSwatchesArr = [];\n          coloursArr.forEach(function (colour, index) {\n            var colourSwatch = '<div class=\"color-swatch ' + colour + '\"></div>';\n            colourSwatchesArr.push(colourSwatch);\n          });\n          currentCell.html(colourSwatchesArr.join(''));\n          break;\n\n        case 'horizontal-field-of-view':\n          if (productData[key] != undefined && productData[key] != '') {\n            var icon = $('[data-compare-icons=' + key + ']').html().replace('[[REPLACE]]', '' + productData[key] + '\u00B0');\n            currentCell.html(icon);\n          } else {\n            currentCell.html(productData[key]);\n          }\n\n          break;\n\n        case 'internet-connection':\n          var iconsArr = ['<div class=\"internet-connection__icons-wrapper\">'];\n          var check = false;\n\n          if (productData[key].toLowerCase().indexOf('wifi') != -1) {\n            iconsArr.push($('[data-compare-icons=\"wifi\"]').html());\n            check = true;\n          }\n\n          iconsArr.push('</div>');\n\n          if (check) {\n            iconsArr.push(productData[key]);\n            currentCell.html(iconsArr.join(''));\n          } else {\n            currentCell.html(productData[key]);\n          }\n\n          break;\n\n        case 'wifi-connectivity':\n          var iconsArr = ['<div class=\"wifi-connectivity__icons-wrapper\">'];\n          var check = false;\n\n          if (productData[key].toLowerCase().indexOf('wifi') != -1) {\n            iconsArr.push($('[data-compare-icons=\"wifi\"]').html());\n            check = true;\n          }\n\n          iconsArr.push('</div>');\n\n          if (check) {\n            iconsArr.push(productData[key]);\n            currentCell.html(iconsArr.join(''));\n          } else {\n            currentCell.html(productData[key]);\n          }\n\n          break;\n\n        case 'privacy-zones':\n          var iconsArr = ['<div class=\"motion-zones__icons-wrapper\">'];\n          var check = false;\n\n          if (productData[key].toLowerCase().indexOf('privacy zones') != -1) {\n            iconsArr.push($('[data-compare-icons=\"motion-zones\"]').html());\n            check = true;\n          }\n\n          iconsArr.push('</div>');\n\n          if (check) {\n            iconsArr.push(productData[key]);\n            currentCell.html(iconsArr.join(''));\n          } else {\n            currentCell.html(productData[key]);\n          }\n\n          break;\n\n        case 'installation':\n          if (productData[key] != undefined && productData[key] != '') {\n            var icon = $('[data-compare-icons=' + key + ']').html();\n            var replacer = false;\n\n            if (productData[key].indexOf('60') != -1) {\n              replacer = '60';\n            } else if (productData[key].indexOf('15') != -1) {\n              replacer = '15';\n            } else if (productData[key].indexOf('10') != -1) {\n              replacer = '10';\n            } else if (productData[key].indexOf('5') != -1) {\n              replacer = '5';\n            }\n\n            if (replacer) {\n              icon = icon.replace('[[REPLACE]]', replacer).concat('<p>' + productData[key].replace(replacer, '') + '<p/>');\n              currentCell.html(icon);\n              break;\n            } else {\n              currentCell.html(productData[key]);\n              break;\n            }\n          }\n\n          currentCell.html('');\n          break;\n\n        case 'faceplate-finishes-colours':\n          var colors = productData[key].split(',');\n          var colorSwatch = $('[data-compare-icons=\"color-swatches\"]').html();\n          var colorSwatches = [];\n          colors.forEach(function (color) {\n            var swatch = colorSwatch;\n            colorSwatches.push(swatch.replace('[[REPLACE]]', color));\n          });\n          currentCell.html(colorSwatches.join(''));\n          break;\n\n        case 'cta':\n          if (productData[\"available\"] == \"true\") {\n            currentCell.html('<a class=\"button button__primary\" href=\"' + productData[key] + '\">' + self.$strings[key] + '</a>');\n          } else {\n            currentCell.html('<a class=\"button button__secondary\" href=\"' + productData[key] + '\">' + self.$strings[\"cta_secondary\"] + '</a>');\n          }\n\n          break;\n\n        default:\n          if (productData[key].toLowerCase() != 'blank') {\n            if (productData[key].toLowerCase().indexOf('[[') != -1) {\n              currentCell.html($('[data-compare-icons=' + productData[key].replace('[[', '').replace(']]', '') + ']').html());\n            } else {\n              currentCell.html(productData[key]);\n            }\n          }\n\n      }\n    });\n  };\n  /**\n  * resize Mobile Selects\n  *\n  * @return void\n  * @access public\n  */\n\n\n  compare_plugin.prototype.resizeMobileSelects = function () {\n    var self = this;\n    var minheight = 0;\n    self.$selects.each(function (i, elem) {\n      var newHeight = $(elem).find('[data-custom-select-value]').outerHeight(true);\n\n      if (newHeight > minheight) {\n        minheight = newHeight;\n      }\n    });\n    self.$selects.parent().css('height', minheight + parseInt(self.$selects.parent().css('padding-top')));\n  };\n  /**\n   * compare plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.compare = function (options) {\n    // Put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // Initialize the items\n\n    return this.each(function () {\n      // Store the element the plugin is set on\n      var $element = $(this); // Guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // If plugin was not innited\n\n      if (!instance) {\n        // Init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new compare_plugin($element, options));\n      } else {\n        // If instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/****************************************************************\n * CODE Country Popup\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'countryPopup';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return countryPopup_plugin\n   */\n\n  var countryPopup_plugin = function countryPopup_plugin($element, options) {\n    // scope\n    var self = this;\n    self.$element = $element;\n    var country_popup_wrapper_identifier = \"#country-message\";\n    self.country_popup_wrapper = self.$element.find(country_popup_wrapper_identifier);\n    self.button_stay = self.country_popup_wrapper.find('[data-country-message-stay]'); // guard: check country popup exists\n\n    if (self.country_popup_wrapper.length == 0) {\n      return;\n    } // guard: check fancybox object exists\n\n\n    if (_typeof($.fancybox) != 'object') {\n      return;\n    } // get options\n\n\n    var defaults = {\n      'current_country_code': '',\n      'location_api_url': '',\n      'location_field_name': '',\n      'popup_messages': {}\n    };\n    var metaOptions = self.country_popup_wrapper.data('country-message-options');\n    self.options = $.extend({}, defaults, metaOptions); // set country popup cookie identifier\n\n    self.country_popup_cookie_identifier = \"country_popup\"; // set fancybox\n\n    self.fancybox = $.fancybox;\n\n    if ($.code.debug) {\n      console.log('Init country popup:', self.country_popup_wrapper, self.options);\n    } // init country popup\n\n\n    self.init(); // section loaded reload popup\n\n    $(document).on('shopify:section:load', function (e) {\n      if (e.detail.sectionId == \"site-country-popup\") {\n        self.fancybox.close();\n        self.init();\n      }\n    });\n  };\n  /**\n   * Init the country popup plugin\n   *\n   * @return void\n   */\n\n\n  countryPopup_plugin.prototype.init = function () {\n    // scope\n    var self = this; // if country popup days is set to zero, remove cookie if exists\n\n    if (parseInt(self.options.expires_in_days) == 0) {\n      Cookies.remove(self.country_popup_cookie_identifier);\n    } // Get element\n\n\n    self.countryPopupCookie = Cookies.get(self.country_popup_cookie_identifier); // Render country popup if given\n\n    if (!self.mayRenderCountryPopup()) {\n      return false;\n    } // get country location\n\n\n    self.getLocation(function () {\n      // render the country popup\n      self.renderCountryPopup();\n    }); // button close popup\n\n    $(self.button_stay).on('click', function () {\n      self.closeCountryPopup();\n    });\n  };\n  /**\n   * Check if the country popup may be rendered and that there is a message to show\n   *\n   * @return boolean\n   */\n\n\n  countryPopup_plugin.prototype.mayRenderCountryPopup = function () {\n    // scope\n    var self = this; // guard: check if popup cookie is set\n\n    if (self.countryPopupCookie) {\n      return false;\n    } // guard: check if there are messages given\n\n\n    if (self.options.popup_messages.length == 0) {\n      return false;\n    }\n\n    return true;\n  };\n  /**\n   * Get country location from cookie or GeoAPI\n   *\n   * @return string country_code\n   */\n\n\n  countryPopup_plugin.prototype.getLocation = function (callback) {\n    // scope\n    var self = this; // get country code from cookie\n\n    self.country_code = Cookies.get(self.country_popup_cookie_identifier + '-country_code'); // if country code is given, return the code\n\n    if (self.country_code) {\n      return callback();\n    } // get country code from api, if done call the callback\n\n\n    self.getCountryCodeFromAPI().done(function (country_code) {\n      self.setCountryCode(country_code);\n      return callback();\n    });\n    return self.country_code;\n  };\n  /**\n   * Get country code from API service\n   *\n   * @return string country_code\n   */\n\n\n  countryPopup_plugin.prototype.getCountryCodeFromAPI = function () {\n    // scope\n    var self = this;\n    var default_api_url = '//extreme-ip-lookup.com/json/';\n    var country_code_api = self.options.location_api_url || default_api_url;\n    var country_code_fieldname_identifier = self.options.location_field_name || 'country_code'; // guard: get country code api url from options\n\n    if (country_code_api == '') {\n      return self;\n    } // guard: get country code field name\n\n\n    if (country_code_fieldname_identifier == '') {\n      return self;\n    } // get country coude from api\n\n\n    return $.getJSON(country_code_api).then(function (response) {\n      if (typeof response[country_code_fieldname_identifier] != \"undefined\" && response[country_code_fieldname_identifier] != '') {\n        return response[country_code_fieldname_identifier];\n      }\n    });\n  };\n  /**\n   * Render the country popup\n   *\n   * @return string country_code\n   */\n\n\n  countryPopup_plugin.prototype.setCountryCode = function (country_code) {\n    // scope\n    var self = this; // guard: check country code is given\n\n    if (typeof country_code == \"undefined\" || country_code == '') {\n      return '';\n    } // set the country code\n\n\n    self.country_code = country_code; // create a cookie with the country code\n\n    var inOneHourMinutes = new Date(new Date().getTime() + 60 * 1000);\n    Cookies.set(self.country_popup_cookie_identifier + '-country_code', country_code, {\n      expires: inOneHourMinutes\n    });\n    return country_code;\n  };\n  /**\n   * Internal function for when calling done from a cookie state\n   * @param  callback\n   * @return object\n   */\n\n\n  countryPopup_plugin.prototype.done = function (callback) {\n    // scope\n    var self = this;\n\n    if ((typeof calback === \"undefined\" ? \"undefined\" : _typeof(calback)) == \"object\") {\n      callback(self.country_code);\n    }\n\n    return self;\n  };\n  /**\n   * Render the country popup\n   *\n   * @return string country_code\n   */\n\n\n  countryPopup_plugin.prototype.renderCountryPopup = function () {\n    // scope\n    var self = this; // check country code is given\n\n    if (self.country_code == '' || self.options.current_country_code == '') {\n      return;\n    } // guard: if the given country_Code is the same as the shop country code then skip!\n\n\n    if (self.country_code == self.options.current_country_code) {\n      return;\n    }\n\n    var countryData; // get the data by country code if available\n\n    if (typeof self.options.popup_messages[self.country_code] != 'undefined') {\n      countryData = self.options.popup_messages[self.country_code]; // if country option does not exists shop ROW\n    } else if (typeof self.options.popup_messages['ROW'] != 'undefined') {\n      countryData = self.options.popup_messages['ROW']; // guard: no country data to render\n    } else {\n      return;\n    } // populate the wrapper with the country data\n\n\n    $(self.country_popup_wrapper).find('[data-country-message-title]').text(countryData.country_title || '');\n    $(self.country_popup_wrapper).find('[data-country-message-name-title]').text(countryData.country_name || '');\n    $(self.country_popup_wrapper).find('[data-country-message-text]').text(countryData.country_body || '');\n    $(self.country_popup_wrapper).find('[data-country-message-url]').attr(\"href\", countryData.country_url || '');\n    $(self.country_popup_wrapper).find('[data-country-message-label]').text(countryData.country_button || '');\n    $(self.country_popup_wrapper).find('[data-country-message-stay]').val(countryData.country_stay || ''); // open fancybox\n\n    self.fancybox.open(self.country_popup_wrapper, {\n      afterClose: function afterClose() {\n        self.closeCountryPopup();\n      }\n    }); // set enable cookie\n\n    Cookies.set(self.country_popup_cookie_identifier, true, {\n      expires: self.options.expires_in_days\n    });\n  };\n  /**\n   * Close country popup\n   *\n   * @return void\n   */\n\n\n  countryPopup_plugin.prototype.closeCountryPopup = function () {\n    // scope\n    var self = this;\n    Cookies.set(self.country_popup_cookie_identifier, false, {\n      expires: self.options.expires_in_days\n    });\n    self.fancybox.close();\n  };\n  /**\n   * countryPopup plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.countryPopup = function (options) {\n    // put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // initialize the items\n\n    return this.each(function () {\n      // store the element the plugin is set on\n      var $element = $(this); // guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // if plugin was not innited\n\n      if (!instance) {\n        // init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new countryPopup_plugin($element, options));\n      } else {\n        // if instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/****************************************************************\n * CODE Filters\n ****************************************************************/\n\nvar storageUrlId = 'CodeFilterBackUrl';\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   *\n   * @var string\n   */\n  var _pluginName = 'collectionFiltering';\n  /**\n   * Constructor collectionFiltering_plugin\n   *\n   * @param jQuery Element Wrapping container div\n   * @return collectionFiltering_plugin\n   */\n\n  var collectionFiltering_plugin = function collectionFiltering_plugin($element, options) {\n    // Scope it\n    var self = this;\n    self.$element = $element;\n    self.storagePanesId = false;\n    self.storageUrlId = false; // Create local storage ID's\n\n    if ($.code.localStorage) {\n      self.storagePanesId = 'CodeFilterPanesState';\n      self.storageUrlId = storageUrlId;\n    } // Init\n\n\n    self.init();\n  };\n  /**\n   * init\n   *\n   * @access public\n   * @return void\n   */\n\n\n  collectionFiltering_plugin.prototype.init = function () {\n    var self = this; // Create ajax url from current url\n\n    var path = window.location.pathname;\n    path = path.substr(path.indexOf('collections'));\n    var ajaxFilterUrl = \"/\" + path + '?view=filters-ajax';\n\n    if ($.code.debug) {\n      console.log('Filter init:', window.location.protocol + \"//\" + window.location.host + ajaxFilterUrl);\n    } // Find the filter wrapper\n\n\n    self.$filterWrapper = $('#filters [data-filter-wrapper]'); // Get filter data from ajax\n\n    $.get(ajaxFilterUrl).done(function (dataReceived) {\n      // Remove comments\n      dataReceived = dataReceived.replace(/<!--[\\s\\S]*?-->/g, \"\"); // Render filters\n\n      self.render(dataReceived);\n    }); // Catch change of radio inputs\n\n    self.$element.on('change', 'input[type=\"checkbox\"]', function () {\n      // uncheck all others in this list\n      $(this).closest('[data-key-filter]').find('input[type=\"checkbox\"]').not(this).prop('checked', false); // Update url url parameters.\n\n      self.updateUrl();\n    }); // catch click on 'remove a filter'.\n\n    self.$element.on('click', '[data-remove-tag]', function (event) {\n      event.preventDefault(); // uncheck the checkbox\n\n      var removeTagValue = $(this).data('remove-tag');\n      self.$element.find('.filter-pane input[type=\"checkbox\"][value=\"' + removeTagValue + '\"]').prop('checked', false); // update url\n\n      self.updateUrl();\n    }); // catch click on 'clear all'\n\n    self.$element.on('click', '[data-filter-clear_all]', function (event) {\n      event.preventDefault(); // uncheck all radio's\n\n      self.$element.find('.filter-pane input[type=\"checkbox\"]').prop('checked', false); // update url to nothing\n\n      self.updateUrl();\n    }); // If localstorage\n\n    if ($.code.localStorage) {\n      // Catch click on open/close filter panes\n      self.$element.on('click', '[data-collapsible-trigger], [data-collapsible-trigger-icon]', function () {\n        // get current state\n        self.filterState = {};\n        self.$element.find('[data-filter]').each(function (i, el) {\n          var name = $(el).data('filter');\n          self.filterState[name] = $(el).hasClass('collapsible__is-open');\n        });\n        self.$element.find('[data-filter-list]').each(function (i, el) {\n          var name = $(el).data('filter-list');\n          self.filterState[name] = $(el).hasClass('collapsible__is-open');\n        }); // Store state in localstorage\n\n        localStorage.setItem(self.storagePanesId, JSON.stringify(self.filterState));\n      });\n    }\n  };\n  /**\n   * Render filters\n   *\n   * @access public\n   * @return void\n   */\n\n\n  collectionFiltering_plugin.prototype.render = function (html) {\n    var self = this;\n\n    if ($.code.debug) {\n      console.log('Filter data received:', $(html));\n    }\n\n    if (!$(html).children().length) {\n      return;\n    }\n\n    var $filterHtml = $(html).children(); // get options from html\n\n    self.options = $filterHtml.data('filter-options'); // Remove existing filters\n\n    self.$filterWrapper.find('.filter-ajax').remove(); // Add filters html to pane\n\n    self.$filterWrapper.append($filterHtml); // set state of collapsible panes from local storage\n\n    self.setTabState(); // Show the element\n\n    self.$element.find('.filter-load-wrapper:first').removeClass('filter-load-wrapper');\n  };\n  /**\n   * Get state of Tabs\n   *\n   * @access public\n   * @return void\n   */\n\n\n  collectionFiltering_plugin.prototype.setTabState = function () {\n    var self = this; // Get tabs state from localstorage\n\n    var backLinkData = localStorage.getItem(self.storagePanesId);\n\n    if ($.code.localStorage && backLinkData) {\n      self.filterState = JSON.parse(backLinkData); // Apply state to tabs\n\n      $.each(self.filterState, function (name, isOpen) {\n        var $pane = self.$element.find('[data-filter=\"' + name + '\"]');\n\n        if (name.indexOf('-list') > -1) {\n          $pane = self.$element.find('[data-filter-list=\"' + name + '\"]');\n        }\n\n        if (isOpen) {\n          // Open the tab\n          $pane.addClass('collapsible__is-open');\n        } else {\n          // Unless checked checkboxes\n          if ($pane.find('input:checked').length > 0) {\n            $pane.addClass('collapsible__is-open');\n          } else {\n            // Close the tab\n            $pane.removeClass('collapsible__is-open');\n          }\n        }\n      });\n    }\n  };\n  /**\n   * Update URL\n   * Update the url with a given query.\n   *\n   * @access public\n   * @return void\n   */\n\n\n  collectionFiltering_plugin.prototype.updateUrl = function () {\n    var self = this; // Loop over the checked radios to build url Query\n\n    var urlQuery = []; // loop all checked inputs\n\n    self.$element.find('.filter-pane input[type=\"checkbox\"]:checked').each(function () {\n      var value = $(this).val();\n\n      if (urlQuery.indexOf(value) === -1) {\n        urlQuery.push(value);\n      }\n    });\n    urlQuery = urlQuery.join('+'); // Create path from current url\n\n    var path = window.location.pathname;\n    path = path.substr(path.indexOf('collections'));\n    var paths = path.split(\"/\");\n    var page = 1;\n    var current_page = getParameterByName('page');\n\n    if (current_page != page) {\n      page = current_page;\n    }\n\n    var view = 'grid';\n    var current_view = getParameterByName('view');\n\n    if (current_view != view) {\n      view = current_view;\n    }\n\n    var sort_by = 'grid';\n    var current_sort_by = getParameterByName('sort_by');\n\n    if (current_sort_by != sort_by) {\n      sort_by = current_sort_by;\n    }\n\n    if ($.code.localStorage) {\n      // Store Url in storage so the Product Detail Page Back link can use it\n      localStorage.setItem(self.storageUrlId, JSON.stringify({\n        url: urlQuery,\n        collection: paths[1],\n        page: page,\n        view: view,\n        sort_by: sort_by\n      }));\n    } // create new url\n\n\n    var filterUrl = \"/\" + paths[0] + '/' + paths[1] + '/' + urlQuery; // add view and sort_by to url (ignore paging)\n\n    filterUrl = self.addtoUrl(filterUrl, 'view', view);\n    filterUrl = self.addtoUrl(filterUrl, 'sort_by', sort_by);\n\n    if ($.code.debug) {\n      console.log('Filter update Url:', window.location.protocol + \"//\" + window.location.host + filterUrl);\n    }\n\n    window.location.href = filterUrl;\n  };\n  /**\n   * Add param to url\n   *\n   * @return {string} [url]\n   */\n\n\n  collectionFiltering_plugin.prototype.addtoUrl = function (url, param, val) {\n    var q = '';\n\n    if (val) {\n      if (url.indexOf('?') < 0) {\n        q = '?';\n      } else {\n        q = '&';\n      }\n\n      url += q + param + '=' + val;\n    }\n\n    return url;\n  };\n  /**\n   * collectionFiltering plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.collectionFiltering = function (options) {\n    // Put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // Initialize the items\n\n    return this.each(function () {\n      // Store the element the plugin is set on\n      var $element = $(this); // Guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // If plugin was not innited\n\n      if (!instance) {\n        // Init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new collectionFiltering_plugin($element, options));\n      } else {\n        // If instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n$(document).ready(function () {\n  // Init filters\n  $('#filters').collectionFiltering(); // Get filter url data\n\n  var backLinkData = localStorage.getItem(storageUrlId);\n\n  if (backLinkData) {\n    backLinkData = JSON.parse(backLinkData); // Find backlink on product detail page\n\n    var $backLink = $('[data-filter=\"backlink\"]'); // if we are on product detail page\n\n    if ($backLink.length) {\n      var backUrl = $backLink.attr('href');\n      var backUrlCollection = backUrl.replace('/collections/', ''); // If backlink goes to the collection we filtered last time, apply the filtering and paging to the url\n\n      if (backUrlCollection == backLinkData.collection) {\n        var pager = '';\n\n        if (backLinkData.page > 1) {\n          pager = '?page=' + backLinkData.page;\n        } // change url of product backlink to include the filter parameters\n\n\n        $backLink.attr('href', '/' + backLinkData.url + pager);\n      }\n    }\n  } // if we are on a collection page\n\n\n  if ($('#filters').length) {\n    var current_page = getParameterByName('page') || 1; // if data exists\n\n    if (backLinkData) {\n      // get page from data\n      var page = parseInt(backLinkData.page); // if we changed page\n\n      if (current_page != page) {\n        // Store Url in storage so the Product Detail Page Back link can use it\n        localStorage.setItem(storageUrlId, JSON.stringify({\n          url: backLinkData.url,\n          collection: backLinkData.collection,\n          page: current_page\n        }));\n      }\n    } else {\n      var path = window.location.pathname;\n      path = path.substr(path.indexOf('collections'));\n      var paths = path.split(\"/\");\n      var page_current = getParameterByName('page');\n      var collection = paths[1]; // Store Url in storage so the Product Detail Page Back link can use it\n\n      localStorage.setItem(storageUrlId, JSON.stringify({\n        url: path,\n        collection: collection,\n        page: page_current\n      }));\n    }\n  }\n}).on('shopify:section:load', function (e) {\n  var $parentSection = $('#shopify-section-' + e.detail.sectionId); // Filter: init\n\n  if ($parentSection.hasClass('filter-section')) {\n    $('#filters').collectionFiltering('init');\n  }\n});\n/**\n * Minified by jsDelivr using UglifyJS v3.3.25.\n * Original file: /npm/js-cookie@2.2.0/src/js.cookie.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n\n!function (e) {\n  var n = !1;\n\n  if (\"function\" == typeof define && define.amd && (define(e), n = !0), \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && (module.exports = e(), n = !0), !n) {\n    var o = window.Cookies,\n        t = window.Cookies = e();\n\n    t.noConflict = function () {\n      return window.Cookies = o, t;\n    };\n  }\n}(function () {\n  function g() {\n    for (var e = 0, n = {}; e < arguments.length; e++) {\n      var o = arguments[e];\n\n      for (var t in o) {\n        n[t] = o[t];\n      }\n    }\n\n    return n;\n  }\n\n  return function e(l) {\n    function C(e, n, o) {\n      var t;\n\n      if (\"undefined\" != typeof document) {\n        if (1 < arguments.length) {\n          if (\"number\" == typeof (o = g({\n            path: \"/\"\n          }, C.defaults, o)).expires) {\n            var r = new Date();\n            r.setMilliseconds(r.getMilliseconds() + 864e5 * o.expires), o.expires = r;\n          }\n\n          o.expires = o.expires ? o.expires.toUTCString() : \"\";\n\n          try {\n            t = JSON.stringify(n), /^[\\{\\[]/.test(t) && (n = t);\n          } catch (e) {}\n\n          n = l.write ? l.write(n, e) : encodeURIComponent(String(n)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent), e = (e = (e = encodeURIComponent(String(e))).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)).replace(/[\\(\\)]/g, escape);\n          var i = \"\";\n\n          for (var c in o) {\n            o[c] && (i += \"; \" + c, !0 !== o[c] && (i += \"=\" + o[c]));\n          }\n\n          return document.cookie = e + \"=\" + n + i;\n        }\n\n        e || (t = {});\n\n        for (var a = document.cookie ? document.cookie.split(\"; \") : [], s = /(%[0-9A-Z]{2})+/g, f = 0; f < a.length; f++) {\n          var p = a[f].split(\"=\"),\n              d = p.slice(1).join(\"=\");\n          this.json || '\"' !== d.charAt(0) || (d = d.slice(1, -1));\n\n          try {\n            var u = p[0].replace(s, decodeURIComponent);\n            if (d = l.read ? l.read(d, u) : l(d, u) || d.replace(s, decodeURIComponent), this.json) try {\n              d = JSON.parse(d);\n            } catch (e) {}\n\n            if (e === u) {\n              t = d;\n              break;\n            }\n\n            e || (t[u] = d);\n          } catch (e) {}\n        }\n\n        return t;\n      }\n    }\n\n    return (C.set = C).get = function (e) {\n      return C.call(C, e);\n    }, C.getJSON = function () {\n      return C.apply({\n        json: !0\n      }, [].slice.call(arguments));\n    }, C.defaults = {}, C.remove = function (e, n) {\n      C(e, \"\", g(n, {\n        expires: -1\n      }));\n    }, C.withConverter = e, C;\n  }(function () {});\n});\n/****************************************************************\n * CODE mediaAccordion\n ****************************************************************/\n\n/**\n * Keeps a Swiper gallery and an accordion in sync in both directions:\n * opening a row slides its paired slide into view, and changing slide opens the\n * paired row. Exactly one row is open at a time.\n *\n * This does not own the Swiper or the collapsible. swiperLoader still owns the\n * gallery and collapsible still owns open/close; this only wires the two\n * together, so their own behaviour (arrows, bullets, swipe, animation) is\n * unchanged.\n *\n * Expected markup (see snippets/media-accordion.liquid):\n *\n *   [data-media-accordion]\n *     [data-swiper]                                   <- swiperLoader\n *       .swiper-container > .swiper-wrapper\n *         .swiper-slide[data-media-accordion-slide=\"0\"]\n *     [data-collapsible-wrapper]                      <- collapsible\n *       [data-collapsible-parent][data-media-accordion-slide=\"0\"]\n *\n * Pairing is by the explicit data-media-accordion-slide index rather than DOM\n * order, because a block can produce a row without a slide (a title but no\n * image). Such a row never moves the gallery, but it does still close the others.\n *\n * Two details of collapsible drive the design here:\n *\n *   - It only toggles `collapsible__is-open` inside its animation callback, so\n *     for the length of the animation the class does not reflect the row's real\n *     state. Anything reading it has to consider `:animated` too.\n *   - A row's `collapsibleOpen` reaches handlers bound to the row (this plugin)\n *     before it bubbles to the wrapper where collapsible acts on it, so this\n *     plugin must not open a row in response to that row's own event.\n */\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'mediaAccordion';\n  var SLIDE_ATTR = 'data-media-accordion-slide';\n  var OPEN_CLASS = 'collapsible__is-open';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return mediaAccordion_plugin\n   */\n\n  var mediaAccordion_plugin = function mediaAccordion_plugin($element, options) {\n    // scope it\n    var self = this;\n    self.$element = $element;\n    self.$gallery = $element.find('[data-swiper]').first(); // Every row, and the subset that is paired with a slide. A block with a\n    // title but no image produces an unpaired row: it cannot move the gallery,\n    // but it still has to take part in \"only one row open at a time\".\n\n    self.$allRows = $element.find('[data-collapsible-parent]');\n    self.$rows = self.$allRows.filter('[' + SLIDE_ATTR + ']'); // Index of the row currently treated as open. Single source of truth.\n\n    self.currentIndex = null; // True while setIndex is applying a change, so the collapsibleOpen and\n    // slideChange it causes are ignored instead of re-entering.\n\n    self.isSyncing = false;\n\n    if ($.code.debug) {\n      console.log('Init mediaAccordion:', self.$element, 'rows:', self.$rows.length);\n    } // Nothing to sync without a gallery and at least two paired rows.\n\n\n    if (!self.$gallery.length || self.$rows.length < 2) {\n      return;\n    }\n\n    self.init();\n  };\n  /**\n   * Get the Swiper instance owned by swiperLoader\n   *\n   * @return Swiper|null\n   * @access public\n   */\n\n\n  mediaAccordion_plugin.prototype.getSwiper = function () {\n    var self = this;\n    var instance = self.$gallery.data('plugin_swiperLoader');\n    return instance ? instance.swiperInst : null;\n  };\n  /**\n   * Slide index paired with a row\n   *\n   * @return number\n   * @access public\n   */\n\n\n  mediaAccordion_plugin.prototype.indexOfRow = function ($row) {\n    return parseInt($row.attr(SLIDE_ATTR), 10);\n  };\n  /**\n   * Row paired with a slide index\n   *\n   * @return jQuery object\n   * @access public\n   */\n\n\n  mediaAccordion_plugin.prototype.rowForIndex = function (index) {\n    var self = this;\n    return self.$rows.filter('[' + SLIDE_ATTR + '=\"' + index + '\"]').first();\n  };\n  /**\n   * Position of a paired index in Swiper's slide list.\n   *\n   * Read from the markup rather than assumed to equal the index, so the pairing\n   * survives Swiper adding or reordering slides.\n   *\n   * @return number  -1 when the index has no slide\n   * @access public\n   */\n\n\n  mediaAccordion_plugin.prototype.slidePositionForIndex = function (index) {\n    var self = this;\n    var swiper = self.getSwiper();\n\n    if (!swiper || !swiper.slides) {\n      return -1;\n    }\n\n    for (var position = 0; position < swiper.slides.length; position++) {\n      if ($(swiper.slides[position]).attr(SLIDE_ATTR) === String(index)) {\n        return position;\n      }\n    }\n\n    return -1;\n  };\n  /**\n   * Paired index of a position in Swiper's slide list\n   *\n   * @return number  NaN when the slide is not paired\n   * @access public\n   */\n\n\n  mediaAccordion_plugin.prototype.indexForSlidePosition = function (position) {\n    var self = this;\n    var swiper = self.getSwiper();\n\n    if (!swiper || !swiper.slides || !swiper.slides[position]) {\n      return NaN;\n    }\n\n    return parseInt($(swiper.slides[position]).attr(SLIDE_ATTR), 10);\n  };\n  /**\n   * Is a row open, or on its way to being open?\n   *\n   * collapsible only adds and removes `collapsible__is-open` inside its\n   * animation callback, so for the length of the animation a row that is\n   * opening still has no class and a row that is closing still has one. Reading\n   * the class alone therefore misses rows that are mid-flight, which is what\n   * allowed two rows to end up open at once: a row that was still opening was\n   * skipped by \"close the others\", then finished and added its class.\n   *\n   * @return boolean\n   * @access public\n   */\n\n\n  mediaAccordion_plugin.prototype.isRowActive = function ($row) {\n    var $target = $row.find('> [data-collapsible-target]').first();\n    return $row.hasClass(OPEN_CLASS) || $target.is(':animated');\n  };\n  /**\n   * Collapse every row except one.\n   *\n   * Only rows that are open or opening are touched. Skipping the ones that are\n   * genuinely closed matters: collapsible's close() sets max-height to the\n   * measured height before animating it to 0, so closing an already-closed row\n   * flashes it open.\n   *\n   * @return void\n   * @access public\n   */\n\n\n  mediaAccordion_plugin.prototype.closeOtherRows = function ($row) {\n    var self = this;\n    self.$allRows.not($row).each(function () {\n      var $other = $(this);\n\n      if (self.isRowActive($other)) {\n        $other.trigger('collapsibleClose');\n      }\n    });\n  };\n  /**\n   * Align the gallery with an index, if it is not already there\n   *\n   * @return void\n   * @access public\n   */\n\n\n  mediaAccordion_plugin.prototype.goToIndex = function (index, speed) {\n    var self = this;\n    var swiper = self.getSwiper();\n\n    if (!swiper) {\n      return;\n    }\n\n    var position = self.slidePositionForIndex(index);\n\n    if (position < 0 || position === swiper.activeIndex) {\n      return;\n    }\n\n    self.$gallery.swiperLoader('goToSlide', position, speed);\n  };\n  /**\n   * Move both the accordion and the gallery to an index.\n   *\n   * Both directions funnel through here. Two things keep them from feeding each\n   * other: the no-op when the index has not changed, and `isSyncing`. Opening a\n   * row and moving the gallery both fire the events this plugin listens to, and\n   * both fire synchronously from inside this method, so the flag swallows the\n   * echo. Without it a re-entrant call could reach `goToIndex` with a stale\n   * index and send the gallery back a slide.\n   *\n   * @param number  index\n   * @param number  speed         transition speed, defaults to the gallery's\n   * @param boolean isRowOpening  true when the caller is reacting to the row\n   *                              already being opened by collapsible, so this\n   *                              must not open it a second time\n   * @return void\n   * @access public\n   */\n\n\n  mediaAccordion_plugin.prototype.setIndex = function (index, speed, isRowOpening) {\n    var self = this;\n\n    if (isNaN(index) || index === self.currentIndex || self.isSyncing) {\n      return;\n    } // An unpaired slide (a block with an image but no title) has no row. Leave\n    // the accordion untouched and keep currentIndex where it was.\n\n\n    var $row = self.rowForIndex(index);\n\n    if (!$row.length) {\n      return;\n    }\n\n    self.isSyncing = true;\n    self.currentIndex = index;\n    self.closeOtherRows($row); // Only open the row when something other than the row itself started this.\n    // A row's own collapsibleOpen reaches this plugin before it bubbles to\n    // collapsible, so triggering it again here would open it twice. Re-opening a\n    // row that is already fully open is worse than redundant: with no inline\n    // max-height, open() animates down from the CSS fallback (10000px) to the\n    // measured height, which reads as a jump.\n\n    if (!isRowOpening && !self.isRowActive($row)) {\n      $row.trigger('collapsibleOpen');\n    }\n\n    self.goToIndex(index, speed);\n    self.isSyncing = false;\n  };\n  /**\n   * Init\n   *\n   * @return void\n   * @access public\n   */\n\n\n  mediaAccordion_plugin.prototype.init = function () {\n    var self = this; // Adopt the starting row: whichever is flagged \"Open by default\", else the\n    // first paired one. Any other row that starts open in the markup has its\n    // class stripped rather than being animated closed, because it was never\n    // opened by the user and there is nothing to animate from.\n\n    var $start = self.$rows.filter('.' + OPEN_CLASS).first();\n\n    if (!$start.length) {\n      $start = self.$rows.first();\n    }\n\n    self.$allRows.not($start).removeClass(OPEN_CLASS);\n    self.currentIndex = self.indexOfRow($start); // Set up before the listeners are attached, so none of this echoes back.\n\n    if (!$start.hasClass(OPEN_CLASS)) {\n      $start.trigger('collapsibleOpen');\n    }\n\n    self.goToIndex(self.currentIndex, 0); // Accordion -> gallery. Listening on the collapsible's own event rather\n    // than a click covers the trigger, the chevron icon and programmatic opens.\n    // collapsible opens the row itself, hence isRowOpening.\n\n    self.$allRows.on('collapsibleOpen', function () {\n      var $row = $(this);\n      var index = self.indexOfRow($row); // An unpaired row still collapses the others, but leaves the gallery\n      // alone -- it has no slide to show. currentIndex is cleared so the next\n      // slide change or paired row is not mistaken for a no-op.\n\n      if (isNaN(index)) {\n        self.closeOtherRows($row);\n        self.currentIndex = null;\n        return;\n      }\n\n      self.setIndex(index, undefined, true);\n    }); // Gallery -> accordion. Covers arrows, pagination bullets and swipes.\n\n    var swiper = self.getSwiper();\n\n    if (swiper) {\n      swiper.on('slideChange', function () {\n        self.setIndex(self.indexForSlidePosition(swiper.activeIndex));\n      });\n    }\n  };\n  /**\n   * mediaAccordion plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.mediaAccordion = function (options) {\n    // put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // initialize the items\n\n    return this.each(function () {\n      // store the element the plugin is set on\n      var $element = $(this); // guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // if plugin was not innited\n\n      if (!instance) {\n        // init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new mediaAccordion_plugin($element, options));\n      } else {\n        // if instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n  /**\n   * Re-init after the Shopify theme editor swaps a section's markup.\n   *\n   * The editor replaces the section element wholesale when blocks are added,\n   * reordered or removed, which throws away the instance stored on the old\n   * node. The new node carries no guard data, so this is a fresh init rather\n   * than a double one. Outside the theme editor these events never fire.\n   */\n\n\n  $(document).on('shopify:section:load', function (event) {\n    $('[data-media-accordion]', event.target).mediaAccordion();\n  });\n}(jQuery, document, window);\n/****************************************************************\n * CODE product\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'product';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return product_plugin\n   */\n\n  var product_plugin = function product_plugin($element, options) {\n    // Scope it\n    var self = this;\n    self.$element = $element; // Create product Options\n\n    var defaultOptions = {\n      onMasterSelectChange: {\n        updateSpecs: true,\n        // On variant change, update the specs\n        updateVariantImagesInSwiper: true,\n        // On variant change, show the image of the variant\n        triggerOnPageLoad: true // Trigger a variant change when the PDP is loaded with a variant parameter to show the image of the variant\n\n      },\n      easyzoom: {\n        loadingNotice: \"\",\n        errorNotice: \"\"\n      },\n      fancybox: {\n        hash: false,\n        backFocus: false,\n        baseClass: \"product-detail-popup\",\n        thumbs: {\n          autoStart: true,\n          hideOnClose: true\n        }\n      }\n    };\n    var metaOptions = self.$element.data('product-options');\n    self.options = $.extend({}, defaultOptions, metaOptions);\n\n    if ($.code.debug) {\n      console.log('Init product:', self.$element, self.options);\n    }\n\n    self.$element.find('[data-product=\"form\"]').each(function () {\n      var $form = $(this); // find quantity element\n\n      var $quantityInput = $form.find('[data-product=\"quantity\"]'); // find min quantity\n\n      var currentQuantity = parseInt($quantityInput.val());\n      var currentQuantityMax = $quantityInput.data(\"productQuantityMax\"); // catch blur of quantity\n\n      $form.on('input', '[data-product=\"quantity\"]', function (event) {\n        currentQuantity = parseInt($quantityInput.val()); // if quantity is to little\n\n        if (currentQuantity < 1) {\n          currentQuantity = 1;\n        }\n\n        if (currentQuantity > currentQuantityMax) {\n          currentQuantity = currentQuantityMax;\n          $('.quantity-error').removeClass('is-hidden');\n        }\n\n        $quantityInput.val(currentQuantity).trigger('change');\n      }); // catch click on plus\n\n      $form.on('click', '[data-product=\"plus\"]', function (event) {\n        event.preventDefault();\n        currentQuantity += 1;\n\n        if (currentQuantity > currentQuantityMax) {\n          currentQuantity = currentQuantityMax;\n          $('.quantity-error').removeClass('is-hidden');\n        }\n\n        $quantityInput.val(currentQuantity).trigger('change');\n      }); // catch click on minus\n\n      $form.on('click', '[data-product=\"minus\"]', function (event) {\n        event.preventDefault();\n        currentQuantity -= 1;\n\n        if (currentQuantity < 1) {\n          currentQuantity = 1;\n        }\n\n        $quantityInput.val(currentQuantity).trigger('change');\n      });\n    }); // Get elements\n\n    self.productImagesSwiper = $('.product-images-slider');\n    self.productImagesSwiperNav = $('.product-images-slider-nav');\n    self.$specsWrapper = self.$element.find('[data-product-specs-wrapper]');\n    self.$specs = self.$element.find('[data-product-specs]');\n    self.specs_data = self.$specs.data('product-specs'); // Check compare price to conditionally load savings and sale badges if offer is variant specific\n\n    var comp_price = $('[data-compare-price]').first().text().trim();\n\n    if (comp_price === '') {\n      $('[data-savings-badge]').addClass('hide');\n    }\n\n    if (self.productImagesSwiper.length) {\n      // Init product Swipers\n      self.initProductSwipers();\n\n      if ($('.product-images-slider-sale').length > -1 && comp_price !== '') {\n        $('.product-images-slider-sale').find('.swiper-slide').first().find('figure').before('<span class=\"offer-sale\" data-pdp-img-sale-badge>' + saleLabel + '</span>');\n      } // $('.product-images-slider-sale').find('.swiper-slide').first().find('figure').before('<span class=\"offer-sale\">sale</span>');\n\n    } else {\n      if ($('.product-images-slider-sale').length > -1) {\n        $('.product-images-slider-sale figure').before('<span class=\"offer-sale\" data-pdp-img-sale-badge>' + saleLabel + '</span>');\n      } // Init productzoom on product image\n\n\n      self.initProductZoom(); // Init productzoom popup gallery\n\n      self.initProductFancyboxGallery();\n    } // Capture masterSelectChange from slate variants.js\n\n\n    self.$element.on('masterSelectChange', function (event) {\n      if ($.code.debug) {\n        console.log('masterSelectChange:', event.variant);\n      } // Get variant id from event\n\n\n      var variant_id = event.variant.id; // Update the specs\n\n      if (self.options.onMasterSelectChange.updateSpecs) {\n        self.updateSpecs(variant_id);\n      } // Tell slideshow to go to slide i\n\n\n      if (self.options.onMasterSelectChange.updateVariantImagesInSwiper) {\n        self.goToVariant(variant_id);\n      } // Toggle Sale badge if not all variants are on sale\n\n\n      if (!(event.variant.compare_at_price > event.variant.price)) {\n        $('.product-images-slider-sale').find('.offer-sale').addClass('hide');\n      }\n    });\n    var amazonLink = self.$element.find('[data-amazon-link]');\n    var nostockMessage = self.$element.find('.product__nostock-text--show');\n\n    if (nostockMessage.length) {\n      nostockMessage.show();\n    }\n  };\n  /**\n   * Init the product zoom\n   *\n   * @return void\n   * @access public\n   */\n\n\n  product_plugin.prototype.initProductZoom = function () {\n    var self = this; // Init easyzoom\n\n    self.$element.find('[data-product-easy-zoom]').each(function () {\n      $(this).easyZoom(self.options.easyzoom);\n    });\n  };\n  /**\n   * Update Product Specs\n   *\n   * @return void\n   * @access public\n   */\n\n\n  product_plugin.prototype.updateSpecs = function (currentVariantId) {\n    var self = this;\n\n    if (!self.$specs.length || !self.specs_data.specs || !self.specs_data.row_template || !self.specs_data.divider) {\n      return;\n    } // Loop the specs\n\n\n    $.each(self.specs_data.specs, function (index, value) {\n      var variantSpecs = value.split(self.specs_data.divider);\n      var variantId = variantSpecs[0].split(':')[1];\n\n      if (variantId == currentVariantId) {\n        var rowHtml = self.specs_data.row_template;\n        var specHtml = ''; // Loop the specs to create html from the template\n\n        $.each(variantSpecs, function (i, specs) {\n          var pair = variantSpecs[i];\n          var key = pair.split(':')[0];\n          var value = pair.split(':')[1]; // Skip the variant ID\n\n          if (key == 'variant_id') {\n            return;\n          }\n\n          specHtml = specHtml + rowHtml.replace('[key]', key).replace('[value]', value);\n        }); // Insert the html\n\n        self.$specs.html(specHtml); // break the loop\n\n        return false;\n      }\n    });\n  };\n  /**\n   * Init the product fancybox Image popup slideshow\n   *\n   * @return void\n   * @access public\n   */\n\n\n  product_plugin.prototype.initProductFancyboxGallery = function () {\n    ;\n    var self = this; // Init fancybox on all Product images, except for slide duplicates\n\n    self.$element.find(\"[data-fancybox]\").not('.swiper-slide-duplicate [data-fancybox]').fancybox(self.options.fancybox);\n  };\n  /**\n   * Init the product slideshow\n   *\n   * @return void\n   * @access public\n   */\n\n\n  product_plugin.prototype.initProductSwipers = function () {\n    var self = this;\n    var swiperOptions = {}; // If thumbnails must be a swiper\n\n    if (typeof self.productImagesSwiperNav.data('swiper-options') != 'undefined') {\n      // Init thumbnail Swiper\n      self.productImagesSwiperNav.swiperLoader(); // Get the thumbnail Swiper Instance\n\n      var productImagesSwiperNavInstance = self.productImagesSwiperNav.find('.swiper-container:first')[0].swiper; // Set thumbnail instance as thumbs in options for Product image Swiper\n\n      swiperOptions = {\n        thumbs: {\n          swiper: productImagesSwiperNavInstance\n        }\n      };\n    } else {\n      // Find all thumbnails\n      var $thumbs = self.productImagesSwiperNav.find('[data-product-thumb]'); // Catch click on a thumbnail\n\n      self.productImagesSwiperNav.on('click', '[data-product-thumb]', function () {\n        var slideIndex = $thumbs.index($(this)); // Tell Product images Swiper to show that image\n\n        self.productImagesSwiper.swiperLoader('goToSlide', slideIndex);\n      });\n    } // Init Product images Swiper\n\n\n    self.productImagesSwiper.swiperLoader(swiperOptions); // Get Swiper options for gotovariant\n\n    self.swiperOptions = self.productImagesSwiper.data('swiper-options'); // Get the Product image Swiper Instance\n\n    self.productImagesSwiperInstance = self.productImagesSwiper.find('.swiper-container:first')[0].swiper; // If the PDP is loaded with a variant parameter, show the image of the variant\n\n    if (self.options.onMasterSelectChange.triggerOnPageLoad && window.location.href.indexOf('variant') === -1 && typeof alarmPack === 'undefined') {\n      // Find the current variant\n      var sel = document.querySelector('[name=\"id\"]');\n      var currentVariantId = sel.options[sel.selectedIndex].value;\n      var allVariants = self.$element.find('[name=\"id\"]')[0].childElementCount;\n\n      if (allVariants > 1) {\n        self.goToVariant(currentVariantId, 0);\n      }\n    } // Init productzoom on product image\n\n\n    self.initProductZoom(); // Init productzoom popup gallery\n\n    self.initProductFancyboxGallery();\n  };\n  /**\n   * Slideshow GoToVariant\n   *\n   * @return void\n   * @access public\n   */\n\n\n  product_plugin.prototype.goToVariant = function (variantId, speed) {\n    var self = this;\n\n    if (typeof self.productImagesSwiperInstance == 'undefined') {\n      return;\n    }\n    /*\n      * Search all thumbs and slides in a hidden dom element\n      * parse the ones matching the current variant ID them into an array\n      * Shoot array to function to reload the slider with new images\n    */\n\n\n    var $thumbnails = $('.js-all-thumbs').find('[data-product-thumb]');\n    var newThumbs = [];\n    $thumbnails.each(function () {\n      var id = $(this).data('product-variant-image');\n      var thumbHTML = $(this)[0].outerHTML; // If this slide has the variantId\n\n      if (id == variantId) {\n        newThumbs.push(thumbHTML);\n      }\n    });\n    self.productImagesSwiperNav.swiperLoader('newSlides', newThumbs); // Find all slides in a hidden dom element\n\n    var $mainImages = $('.js-all-slides').find('[data-product-variant-image]');\n    var newSlides = [];\n    $mainImages.each(function () {\n      var id = $(this).data('product-variant-image');\n      var slideHTML = $(this)[0].outerHTML; // If this slide has the variantId\n\n      if (id == variantId) {\n        newSlides.push(slideHTML);\n      }\n    });\n    self.productImagesSwiper.swiperLoader('newSlides', newSlides);\n    self.initProductZoom();\n  };\n  /**\n   * product plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.product = function (options) {\n    // Put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // Initialize the items\n\n    return this.each(function () {\n      // Store the element the plugin is set on\n      var $element = $(this); // Guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // If plugin was not innited\n\n      if (!instance) {\n        // Init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new product_plugin($element, options));\n      } else {\n        // If instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  }; // EMWA form code to handle a small UX hack\n\n\n  $('.newsletter-section .contact-form').submit(function (event) {\n    var $contact_input = $('.newsletter__input');\n    var $product_handle = $('.contact-form__product-handle').val().replaceAll(' ', '-').replaceAll(',', '').replaceAll('(', '').replaceAll(')', '');\n    var $replace_content = '+' + $product_handle + '@';\n    var $input_val = $contact_input.val().replace('@', $replace_content);\n    $contact_input.val($input_val).addClass('is-sending');\n    return true;\n  });\n}(jQuery, document, window);\n/****************************************************************\n * CODE relatedProducts\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'relatedProducts';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return relatedProducts_plugin\n   */\n\n  var relatedProducts_plugin = function relatedProducts_plugin($element, options) {\n    // Scope it\n    var self = this;\n    self.$element = $element;\n    self.xhrCount = 0; // Set default options\n\n    var defaults = {\n      view: 'product-related',\n      // view for liquid files collection.product-related.liquid and product.product-related.liquid\n      max: 5,\n      // max products\n      currentHandle: '',\n      // handle of the current product\n      relatedMetaHandles: '',\n      // array of product handles\n      relatedSameCollectionHandles: '',\n      // array of product handles\n      relatedPrimaryTag: '',\n      // tag to filter primary collection\n      relatedPrimaryCollection: '',\n      // primary collection handle\n      relatedSecondaryTag: '',\n      // tag to filter secondary collection\n      relatedSecondaryCollection: '',\n      // secondary collection handle\n      columnClasses: '',\n      // classes for no-slider columns\n      wrapper: '' // jQuery selector to show hide wrapper\n\n    }; // Get options from html element\n\n    var metaOptions = self.$element.data('relatedProducts');\n    self.options = $.extend({}, defaults, metaOptions);\n\n    if ($.code.debug) {\n      console.log(self.options);\n    }\n\n    ; // Create the ajax url for the Primary collection\n    // This uses collection.product-related.liquid\n\n    if (self.options.relatedPrimaryCollection != '' && self.options.relatedPrimaryTag != '') {\n      self.options.relatedPrimaryCollectionUrl = '/collections/' + self.options.relatedPrimaryCollection + '/' + self.options.relatedPrimaryTag + '?view=' + self.options.view;\n    } // Create the ajax url for the Secondary collection\n    // This uses collection.product-related.liquid\n\n\n    if (self.options.relatedSecondaryCollection != '' && self.options.relatedSecondaryTag != '') {\n      self.options.relatedSecondaryCollectionUrl = '/collections/' + self.options.relatedSecondaryCollection + '/' + self.options.relatedSecondaryTag + '?view=' + self.options.view;\n    } // Create array for Metafield related products\n\n\n    var relatedProducts_Metafield = [];\n\n    if (Array.isArray(self.options.relatedMetaHandles)) {\n      relatedProducts_Metafield = self.options.relatedMetaHandles;\n    } // Create array for products from the same collection (without tag filtering)\n\n\n    var relatedProducts_SameCollection = [];\n\n    if (Array.isArray(self.options.relatedSameCollectionHandles)) {\n      relatedProducts_SameCollection = self.options.relatedSameCollectionHandles;\n    }\n\n    var ajax1, ajax2; // Get an array of collection products filtered by relatedPrimaryTag (only first 1000 of this collection)\n\n    if (typeof self.options.relatedPrimaryCollectionUrl != 'undefined') {\n      ajax1 = $.ajax(self.options.relatedPrimaryCollectionUrl);\n    } // Get an array of all products filtered by tag (only first 1000 of all_products)\n\n\n    if (typeof self.options.relatedSecondaryCollectionUrl != 'undefined') {\n      ajax2 = $.ajax(self.options.relatedSecondaryCollectionUrl);\n    }\n\n    if ($.code.debug) {\n      console.log('Init relatedProducts:', self.$element, self.options);\n    } // Find wrapper element\n\n\n    self.$wrapper = $(self.options.wrapper);\n    self.$container = self.$element.find('[data-related-products-container]');\n\n    if (!self.$wrapper.length) {\n      self.$wrapper = self.$element;\n    }\n\n    $.when(ajax1, ajax2).done(function (a1, a2) {\n      var relatedProducts_PrimaryCollection = [];\n      var relatedProducts_SecondaryCollection = [];\n\n      if (typeof a1 != 'undefined') {\n        relatedProducts_PrimaryCollection = a1[0].split(',');\n      }\n\n      if (typeof a2 != 'undefined') {\n        relatedProducts_SecondaryCollection = a2[0].split(',');\n      } // Concat all arrays and remove duplicates\n\n\n      var relatedProductHandles = [].concat(relatedProducts_Metafield, relatedProducts_PrimaryCollection, relatedProducts_SecondaryCollection, relatedProducts_SameCollection); // Make the product handles unique, regardless of the collection prefix\n\n      var relatedProductHandles_unique = [];\n      var testArr = [];\n      $.each(relatedProductHandles, function (index, handle) {\n        var shortHandle = handle; // Remove collection prefix from handle\n\n        if (handle.indexOf('|') > -1) {\n          var res = handle.split('|');\n          shortHandle = res[1];\n        } // if shortHandle is not in testarray and not the current product\n\n\n        if ($.inArray(shortHandle, testArr) == -1 && shortHandle !== self.options.currentHandle) {\n          // Add shortHandle to testarray\n          testArr.push(shortHandle); // Add real handle to unique array\n\n          relatedProductHandles_unique.push(handle);\n        }\n      }); // Remove products > max items\n\n      var relatedProductHandles_arr = relatedProductHandles_unique.slice(0, self.options.max);\n\n      if ($.code.debug) {\n        console.log('relatedProducts_Metafield ' + self.options.wrapper, relatedProducts_Metafield);\n        console.log('relatedProducts_PrimaryCollection ' + self.options.wrapper, self.options.relatedPrimaryCollectionUrl, relatedProducts_PrimaryCollection);\n        console.log('relatedProducts_SecondaryCollection ' + self.options.wrapper, self.options.relatedSecondaryCollectionUrl, relatedProducts_SecondaryCollection);\n        console.log('relatedProducts_SameCollection ' + self.options.wrapper, relatedProducts_SameCollection);\n        console.log('relatedProductHandles ' + self.options.wrapper, relatedProductHandles_arr);\n      } // create empty array to hold our items\n\n\n      var responseArray = []; // map product urls to array\n\n      var productsArray = $.map(relatedProductHandles_arr, function (handle, i) {\n        var collectionHandle = 'all';\n        var shortHandle = handle; // Split the collection|product_handle\n\n        if (handle.indexOf('|') > -1) {\n          var res = handle.split('|');\n          collectionHandle = res[0];\n          shortHandle = res[1];\n        }\n\n        var productUrl = '/collections/' + collectionHandle + '/products/' + shortHandle; // Store the relation\n\n        var relation = '';\n\n        if ($.inArray(handle, relatedProducts_SecondaryCollection) > -1) {\n          relation = 'secondary collection';\n        }\n\n        if ($.inArray(handle, relatedProducts_PrimaryCollection) > -1) {\n          relation = 'primary collection';\n        }\n\n        if ($.inArray(handle, relatedProducts_SameCollection) > -1) {\n          relation = 'same collection';\n        }\n\n        if ($.inArray(handle, relatedProducts_Metafield) > -1) {\n          relation = 'metafield';\n        } // Related product original object\n\n\n        return {\n          index: i,\n          collectionHandle: collectionHandle,\n          relation: relation,\n          url: productUrl\n        };\n      }); // create deferred ajax request to pass product urls to\n\n      var ajax_request = function ajax_request(product) {\n        var deferred = $.Deferred();\n        $.ajax({\n          url: product.url + '?view=' + self.options.view,\n          success: function success(data) {\n            // mark the ajax call as completed\n            deferred.resolve(data).done(function (data) {\n              // Related product response/final object\n              responseArray[product.index] = {\n                index: product.index,\n                collectionHandle: product.collectionHandle,\n                relation: product.relation,\n                html: data\n              };\n\n              if ($.code.debug) {\n                console.log(data);\n              }\n\n              ;\n            });\n          },\n          error: function error(_error) {\n            // mark the ajax call as completed\n            deferred.reject(_error);\n          }\n        });\n        return deferred.promise();\n      }; // define looper\n\n\n      var looper = $.Deferred().resolve(); // go through each product url and call the ajax function\n\n      $.when.apply($, $.map(productsArray, function (product, i) {\n        looper = looper.then(function () {\n          // trigger ajax call with product data\n          return ajax_request(product);\n        });\n        return looper;\n      })).done(function () {\n        // All ajax calls have completed\n        if ($.code.debug) {\n          console.log('Related products original array', productsArray);\n          console.log('Related products ajax response array', responseArray);\n        } // empty the container\n\n\n        self.$container.empty();\n\n        for (var index = 0; index < responseArray.length; index++) {\n          var element = responseArray[index];\n\n          if (typeof element != 'undefined') {\n            // Create element\n            var $element = $(element.html).attr('data-related-by', element.relation); // Add to container\n\n            self.$container.append($element);\n          }\n        }\n\n        self.render(); // add .active class to the current product block\n\n        var currenProductHandle = window.location.href.split('/products/')[1];\n        setTimeout(function () {\n          $('[data-handle=\"' + currenProductHandle + '\"]').addClass('active');\n        }, 2000);\n      });\n    });\n  };\n  /**\n   * Render products\n   *\n   * @return void\n   * @access public\n   */\n\n\n  relatedProducts_plugin.prototype.render = function () {\n    var self = this;\n\n    if (self.$container.children().length > 0) {\n      // Show the wrapper\n      self.$wrapper.show();\n    } else {\n      // Hide the wrapper\n      self.$wrapper.remove();\n      return;\n    } // Init Swiper\n\n\n    var $swiperWrapper = self.$container.closest('[data-swiper-options]');\n\n    if ($swiperWrapper.length) {\n      // Add classes\n      self.$container.children().addClass('swiper-slide'); // Start swiper\n\n      $swiperWrapper.swiperLoader();\n    } else {\n      self.$container.children().addClass(self.options.columnClasses);\n    }\n  };\n  /**\n   * relatedProducts plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.relatedProducts = function (options) {\n    // Put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // Initialize the items\n\n    return this.each(function () {\n      // Store the element the plugin is set on\n      var $element = $(this); // Guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // If plugin was not innited\n\n      if (!instance) {\n        // Init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new relatedProducts_plugin($element, options));\n      } else {\n        // If instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/****************************************************************\n * CODE enhancedSearch\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'enhancedSearch';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return enhancedSearch_plugin\n   */\n\n  var enhancedSearch_plugin = function enhancedSearch_plugin($element, options) {\n    // Scope it\n    var self = this; // Find elements\n\n    self.$element = $element;\n    self.$input = self.$element.find('input[type=\"search\"]');\n    self.type = self.$element.data('enhanced-search'); // Set options\n\n    var defaults = {\n      wildcard: true,\n      livesearch: true,\n      show_all: \"See all results\"\n    };\n    var metaOptions = self.$element.data('enhanced-search');\n    self.options = $.extend({}, defaults, metaOptions);\n\n    if ($.code.debug) {\n      console.log('Init Enhanced Search:', self.$element, self.options);\n    }\n\n    if (self.options.wildcard) {\n      self.initWildcard();\n    }\n\n    if (self.options.livesearch) {\n      self.initLiveSearch();\n    }\n  };\n  /**\n   * Search with product dropdown\n   */\n\n\n  enhancedSearch_plugin.prototype.initLiveSearch = function () {\n    var self = this; // Current Ajax request.\n\n    var currentAjaxRequest = null; // Grabbing text input.\n\n    var $input = self.$element.find('input[name=\"q\"]'); // Create a list\n\n    var $dropdown = $('<ul class=\"search-dropdown-results\" data-enhanced-search=\"results\"></ul>'); // Adding a list for showing search results.\n\n    $($dropdown).appendTo(self.$element); // Listening to keyup and change on the text field within these search forms.\n\n    $input.attr('autocomplete', 'off').on('keyup change', function () {\n      // What are the search terms\n      var terms = self.$element.serialize().replace('+', '*+') + '*'.trim(); // Create search URL\n\n      var searchURL = '/search?' + terms; // If that's a new term and it contains at least 2 characters.\n\n      if (terms.length > 2 && terms != $input.attr('data-old-terms')) {\n        // Saving old query.\n        $input.attr('data-old-terms', terms); // Killing any Ajax request that's currently being processed.\n\n        if (currentAjaxRequest != null) currentAjaxRequest.abort(); // Pulling results.\n\n        currentAjaxRequest = $.getJSON(searchURL + '&view=json', function (data) {\n          // Reset results.\n          $dropdown.empty(); // If we have no results.\n\n          if (data.results_count == 0) {\n            self.closeDropdown();\n          } else {\n            // If we have results.\n            $.each(data.results, function (index, item) {\n              var link = $('<a></a>').attr('href', item.url);\n\n              if (item.image != '') {\n                link.append('<span class=\"thumbnail\"><img src=\"' + item.image + '\" /></span>');\n              } else {\n                link.append('<span class=\"thumbnail no-image\"></span>');\n              }\n\n              link.append('<span class=\"title\">' + item.title + '</span>');\n              link.wrap('<li></li>');\n              $dropdown.append(link.parent());\n            });\n            $dropdown.append('<li class=\"search-show_all\"><a href=\"' + searchURL + '\">' + self.options.show_all + ' (' + data.results_count + ')</a></li>');\n            self.openDropdown();\n          }\n        });\n      }\n    });\n    $input.keydown(function (e) {\n      if (!self.dropdownVisible) {\n        // on key arrow down and if results are filled\n        if (e.which == 40 && self.$element.find('[data-enhanced-search=\"results\"]').children().length) {\n          self.openDropdown();\n        } else {\n          return;\n        }\n      }\n\n      var i = $dropdown.find('.is-active').index();\n\n      switch (e.which) {\n        case 38:\n          // up\n          i--;\n          break;\n\n        case 40:\n          // down\n          i++;\n          break;\n\n        case 27:\n          self.closeDropdown();\n          break;\n\n        case 13:\n          // enter\n          if ($dropdown.find('li.is-active').length) {\n            e.preventDefault();\n            var url = $dropdown.find('li.is-active a').attr('href');\n            document.location.href = url;\n          }\n\n          break;\n\n        default:\n          return;\n        // exit this handler for other keys\n      }\n\n      $dropdown.find('li:eq(' + i + ')').addClass('is-active').siblings('.is-active').removeClass('is-active'); // e.preventDefault(); // prevent the default action (scroll / move caret)\n    }); // Clicking outside makes the results disappear.\n\n    $('body').on('click', function () {\n      self.closeDropdown();\n    });\n  };\n  /**\n   * Open livesearch dropdown\n   */\n\n\n  enhancedSearch_plugin.prototype.openDropdown = function () {\n    var self = this;\n    self.$element.find('[data-enhanced-search=\"results\"]').addClass('search-dropdown__is-open');\n    self.dropdownVisible = true;\n  };\n  /**\n   * Close livesearch dropdown\n   */\n\n\n  enhancedSearch_plugin.prototype.closeDropdown = function () {\n    var self = this;\n    self.$element.find('[data-enhanced-search=\"results\"]').removeClass('search-dropdown__is-open');\n    self.dropdownVisible = false;\n  };\n  /**\n   * search with automatic Wildcard\n   */\n\n\n  enhancedSearch_plugin.prototype.initWildcard = function () {\n    var self = this; // on submit form\n\n    self.$element.on('submit', function (e) {\n      if ($.code.debug) {\n        console.log('Enhanced Search:', self.type);\n      } // prevent default\n\n\n      e.preventDefault(); // What are the search terms\n\n      var terms = self.$element.serialize(); // prevent double **\n\n      if (terms.indexOf('*') == -1) {\n        terms = terms.replace('+', '*+') + '*'.trim();\n      } // submit form\n\n\n      location.href = '/search?' + terms;\n    });\n  };\n  /**\n   * enhancedSearch plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.enhancedSearch = function (options) {\n    // put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // initialize the items\n\n    return this.each(function () {\n      // store the element the plugin is set on\n      var $element = $(this); // guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // if plugin was not innited\n\n      if (!instance) {\n        // init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new enhancedSearch_plugin($element, options));\n      } else {\n        // if instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/****************************************************************\n * CODE swiperLoader\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'swiperLoader';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return swiperLoader_plugin\n   */\n\n  var swiperLoader_plugin = function swiperLoader_plugin($element, options) {\n    // scope it\n    var self = this;\n    self.$element = $element; // For more options, check https://idangero.us/swiper/api/\n\n    var defaults = {\n      loop: false,\n      initialSlide: 0,\n      // Index number of initial slide.\n      speed: 300,\n      // Duration of transition between slides (in ms)\n      direction: 'horizontal',\n      // Could be 'horizontal' or 'vertical' (for vertical slider).\n      autoHeight: false,\n      // Set to true and slider wrapper will adopt its height to the height of the currently active slide\n      roundLengths: true,\n      // Set to true to round values of slides width and height to prevent blurry texts on usual resolution screens (if you have such)\n      effect: 'slide',\n      // Transition effect. Could be \"slide\", \"fade\", \"cube\", \"coverflow\" or \"flip\"\n      spaceBetween: 0,\n      // Distance between slides in px.\n      slidesPerView: 1,\n      // Number of slides per view (slides visible at the same time on slider's container).\n      centeredSlides: false,\n      // \tIf true, then active slide will be centered, not always on the left side.\n      centerInsufficientSlides: false,\n      // When enabled it center slides if the amount of slides less than `slidesPerView`. Not intended to be used loop mode\n      grabCursor: false,\n      // This option may a little improve desktop usability. If true, user will see the \"grab\" cursor when hover on Swiper\n      touchEventsTarget: 'wrapper',\n      // Target element to listen touch events on. Can be 'container' (to listen for touch events on swiper-container) or 'wrapper' (to listen for touch events on swiper-wrapper)\n      watchOverflow: true,\n      // When enabled Swiper will be disabled and hide navigation buttons on case there are not enough slides for sliding\n      shortSwipes: true,\n      // Set to false if you want to disable short swipes\n      threshold: 10,\n      // Threshold value in px. If \"touch distance\" will be lower than this value then swiper will not move\n      navigation: {\n        nextEl: '.swiper-button-next',\n        //\tstring / HTMLElement\tnull\tString with CSS selector or HTML element of the element that will work like \"next\" button after click on it\n        prevEl: '.swiper-button-prev',\n        // string / HTMLElement\tnull\tString with CSS selector or HTML element of the element that will work like \"prev\" button after click on it\n        hideOnClick: false,\n        //\tToggle navigation buttons visibility after click on Slider's container\n        disabledClass: 'swiper-button-disabled',\n        // CSS class name added to navigation button when it becomes disabled\n        hiddenClass: 'swiper-button-hidden' // CSS class name added to navigation button when it becomes hidden\n\n      },\n      pagination: {\n        el: '.swiper-pagination',\n        type: 'bullets',\n        //String with type of pagination. Can be \"bullets\", \"fraction\", \"progressbar\" or \"custom\"\n        bulletElement: 'span',\n        //\tDefines which HTML tag will be use to represent single pagination bullet. Only for bullets pagination type.\n        hideOnClick: false,\n        // Toggle (hide/true) pagination container visibility after click on Slider's container\n        clickable: true //\tIf true then clicking on pagination button will cause transition to appropriate slide. Only for bullets pagination type\n\n      },\n      scrollbar: {\n        el: '.swiper-scrollbar',\n        hide: true,\n        //\tHide scrollbar automatically after user interaction\n        draggable: true,\n        //\tSet to true to enable make scrollbar draggable that allows you to control slider position\n        snapOnRelease: true,\n        //\tSet to false to unsnap slider position to slides when you release scrollbar\n        dragSize: 'auto',\n        // string/number\tSize of scrollbar draggable element in px\n        lockClass: 'swiper-scrollbar-lock',\n        //\tScrollbar element additional CSS class when it is disabled\n        dragClass: 'swiper-scrollbar-drag' //\tScrollbar draggable element CSS class\n\n      }\n    }; // get options from element\n\n    var metaOptions = self.$element.data('swiper-options');\n    self.options = $.extend({}, defaults, metaOptions, options);\n\n    if ($.code.debug) {\n      console.log('Init swiper:', self.$element, self.options);\n    }\n\n    if ($.code.themeEditor) {\n      $(document).on('shopify:section:load', function (event) {\n        self.refreshSwiper();\n      }).on('shopify:section:unload', function (event) {\n        self.refreshSwiper();\n      }).on('shopify:section:select', function (event) {\n        self.refreshSwiper();\n      }).on('shopify:section:deselect', function (event) {\n        self.refreshSwiper();\n      }).on('shopify:section:reorder', function (event) {\n        self.refreshSwiper();\n      }).on('shopify:block:select', function (event) {\n        self.refreshSwiper();\n      }).on('shopify:block:deselect', function (event) {\n        self.refreshSwiper();\n      });\n    }\n\n    self.init();\n  };\n  /**\n   * Init Plugin\n   *\n   * @return void\n   * @access public\n   */\n\n\n  swiperLoader_plugin.prototype.init = function () {\n    var self = this;\n    self.$element.removeClass('row');\n    self.$sliderContainer = self.$element.find('.swiper-container:first'); // Add elements from options\n\n    if (self.options.scrollbar) {\n      self.$sliderContainer.append('<div class=\"swiper-scrollbar\"></div>');\n    } // a .swiper-navigation has been added to align nav arrows based on image/video inside the slide, instead of the full height slide.\n\n\n    if (self.options.navigation) {\n      self.$sliderContainer.append('<div class=\"swiper-navigation\"><div class=\"swiper-button-prev\"></div><div class=\"swiper-button-next\"></div></div>');\n    }\n\n    if (self.options.pagination) {\n      self.$sliderContainer.append('<div class=\"swiper-pagination\"></div>');\n    } // start the swiper\n\n\n    self.swiperInst = new Swiper(self.$sliderContainer[0], self.options); // check if the swiper has video's inside\n\n    var videos = $(self.$sliderContainer[0]).find('[data-video]');\n    var videoPlayButtons = $(self.$sliderContainer[0]).find('[data-video-play-button]');\n\n    if (videos.length > 0) {\n      // reset all videos on slide change\n      self.swiperInst.on('slideChange', function () {\n        videos.each(function (index, video) {\n          video.pause();\n          video.currentTime = 0;\n          video.load();\n          $('[data-video-wrapper]').removeClass('is-playing');\n        });\n      }); // connect all the playButtons onclick events\n\n      videoPlayButtons.each(function (index, element) {\n        $(element).on('click', function (e) {\n          var id = $(this).data('video-play-button');\n          var video = $('[data-video=\"' + id + '\"]');\n          video.each(function (index, element) {\n            element.muted = false;\n            element.volume = 1;\n            $(element).removeClass('hidden');\n\n            if (!$(element).parent().hasClass('swiper-slide-duplicate')) {\n              element.muted = true;\n              element.volume = 0;\n            }\n\n            element.play();\n          });\n        });\n      }); // connect all video events\n\n      videos.each(function (index, element) {\n        $(element).on('click', function (e) {\n          var id = $(this).data('video');\n          var video = $('[data-video=\"' + id + '\"]');\n          video.each(function (index, element) {\n            element.pause();\n          });\n        }).on('play', function (e) {\n          var video = $(this);\n          var id = video.data('video');\n          var playButton = $('[data-video-play-button=\"' + id + '\"]');\n          playButton.hide();\n        }).on('pause', function (e) {\n          var video = $(this);\n          var id = video.data('video');\n          var video = $('[data-video=\"' + id + '\"]');\n          video.each(function (index, element) {\n            element.pause();\n          });\n          var playButton = $('[data-video-play-button=\"' + id + '\"]');\n          playButton.show();\n        }).on('ended', function (e) {\n          var video = $(this);\n          var id = video.data('video');\n          var playButton = $('[data-video-play-button=\"' + id + '\"]');\n          playButton.show();\n        });\n      });\n    } // Custom next navigation (must be [data-swiper] > [data-swiper-nav=\"next\"])\n\n\n    self.$element.on('click', '[data-swiper-nav=\"next\"]', function () {\n      self.swiperInst.slideNext();\n    }); // Custom prev navigation (must be [data-swiper] > [data-swiper-nav=\"prev\"])\n\n    self.$element.on('click', '[data-swiper-nav=\"prev\"]', function () {\n      self.swiperInst.slidePrev();\n    });\n  };\n  /**\n   * Update Swiper\n   *\n   * @return void\n   * @access public\n   */\n\n\n  swiperLoader_plugin.prototype.refreshSwiper = function () {\n    var self = this;\n\n    if (self.swiperInst != undefined) {\n      setTimeout(function () {\n        self.swiperInst.update();\n      }, 1000);\n    }\n  };\n  /**\n   * Resize Swiper\n   *\n   * @return void\n   * @access public\n   */\n\n\n  swiperLoader_plugin.prototype.resizeSwiper = function () {\n    var self = this;\n\n    if (self.swiperInst != undefined) {\n      self.swiperInst.updateSize();\n    }\n  };\n  /**\n   * Empty and Add new slides Swiper\n   *\n   * @return void\n   * @access public\n   */\n\n\n  swiperLoader_plugin.prototype.newSlides = function ($newSlides) {\n    var self = this;\n\n    if (self.swiperInst != undefined) {\n      self.swiperInst.removeAllSlides();\n      $newSlides.forEach(function (element) {\n        return self.swiperInst.appendSlide(element);\n      });\n      self.swiperInst.updateSize();\n    }\n  };\n  /**\n   * Edit slide\n   *\n   * @return void\n   * @access public\n   */\n\n\n  swiperLoader_plugin.prototype.editSlide = function ($slide) {\n    var self = this;\n    var index = $(self.swiperInst.slides).index($slide);\n    self.goToSlide(index - 1);\n  };\n  /**\n   * Go To slide\n   *\n   * @return void\n   * @access public\n   */\n\n\n  swiperLoader_plugin.prototype.goToSlide = function (index, speed) {\n    var self = this; // If no speed is defined, use the speed from options (speed can be 0)\n\n    if (!speed && speed !== 0) {\n      speed = self.options.speed;\n    } // slide to index\n\n\n    if (self.options.loop) {\n      self.swiperInst.slideToLoop(index, speed);\n    } else {\n      self.swiperInst.slideTo(index, speed);\n    }\n  };\n  /**\n   * swiperLoader plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.swiperLoader = function (options) {\n    // put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // initialize the items\n\n    return this.each(function () {\n      // store the element the plugin is set on\n      var $element = $(this); // guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // if plugin was not innited\n\n      if (!instance) {\n        // init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new swiperLoader_plugin($element, options));\n      } else {\n        // if instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/****************************************************************\n * CODE swiperTabsLoader\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'swiperTabsLoader';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return swiperTabsLoader_plugin\n   */\n\n  var swiperTabsLoader_plugin = function swiperTabsLoader_plugin($element, options) {\n    // scope it\n    var self = this;\n    self.$element = $element;\n    self.$element.removeClass('row'); // For more options, check https://idangero.us/swiper/api/\n\n    var defaults = {\n      loop: false,\n      initialSlide: 0,\n      // Index number of initial slide.\n      speed: 500,\n      // Duration of transition between slides (in ms)\n      direction: 'horizontal',\n      // Could be 'horizontal' or 'vertical' (for vertical slider).\n      autoHeight: false,\n      // Set to true and slider wrapper will adopt its height to the height of the currently active slide\n      roundLengths: true,\n      // Set to true to round values of slides width and height to prevent blurry texts on usual resolution screens (if you have such)\n      effect: 'fade',\n      // Transition effect. Could be \"slide\", \"fade\", \"cube\", \"coverflow\" or \"flip\"\n      spaceBetween: 0,\n      // Distance between slides in px.\n      slidesPerView: 1,\n      // Number of slides per view (slides visible at the same time on slider's container).\n      centeredSlides: false,\n      // \tIf true, then active slide will be centered, not always on the left side.\n      centerInsufficientSlides: false,\n      // When enabled it center slides if the amount of slides less than `slidesPerView`. Not intended to be used loop mode\n      grabCursor: false,\n      // This option may a little improve desktop usability. If true, user will see the \"grab\" cursor when hover on Swiper\n      touchEventsTarget: 'wrapper',\n      // Target element to listen touch events on. Can be 'container' (to listen for touch events on swiper-container) or 'wrapper' (to listen for touch events on swiper-wrapper)\n      watchOverflow: true,\n      // When enabled Swiper will be disabled and hide navigation buttons on case there are not enough slides for sliding\n      shortSwipes: true,\n      // Set to false if you want to disable short swipes\n      threshold: 10 // Threshold value in px. If \"touch distance\" will be lower than this value then swiper will not move\n\n    }; // get options from element\n\n    var metaOptions = self.$element.data('swiper-options');\n    self.options = $.extend({}, defaults, metaOptions, options);\n\n    if ($.code.debug) {\n      console.log('Init swiper with tabs:', self.$element, self.options);\n    }\n\n    self.$tabs = $element.find('[data-swiper-tabs]');\n    self.$sliderContainer = self.$element.find('.swiper-container:first');\n    self.$nextButton = self.$element.find('[data-swiper-nav=\"next\"]');\n    self.$prevButton = self.$element.find('[data-swiper-nav=\"prev\"]'); // start the swiper\n\n    self.swiperInst = new Swiper(self.$sliderContainer[0], self.options);\n    self.handleButtonVisibility();\n    self.swiperInst.on('slideChange', function () {\n      var index = self.swiperInst.activeIndex; // add active to correct tab\n\n      self.$tabs.removeClass('active');\n      self.$element.find('[data-swiper-tabs=' + index + ']').addClass('active');\n      self.handleButtonVisibility();\n    }); // Set 1st tab\n\n    self.$element.find('[data-swiper-tabs=' + self.options.initialSlide + ']').addClass('active'); // Custom tabs navigation\n\n    self.$tabs.on('click', function () {\n      self.goToSlide($(this).data('swiper-tabs'));\n    }); // Custom next navigation (must be [data-swiper] > [data-swiper-nav=\"next\"])\n\n    self.$nextButton.on('click', function () {\n      self.swiperInst.slideNext();\n    }); // Custom prev navigation (must be [data-swiper] > [data-swiper-nav=\"prev\"])\n\n    self.$prevButton.on('click', function () {\n      self.swiperInst.slidePrev();\n    });\n  };\n  /**\n  * Handle buttons visibility\n  *\n  * @return void\n  * @access public\n  */\n\n\n  swiperTabsLoader_plugin.prototype.handleButtonVisibility = function ($slide) {\n    var self = this;\n\n    if (!self.options.loop) {\n      // check if first slide and hide previous button\n      if (self.swiperInst.isBeginning) {\n        self.$prevButton.addClass('swiper-button-disabled');\n      } else {\n        self.$prevButton.removeClass('swiper-button-disabled');\n      } // check if last slide and hide next button\n\n\n      if (self.swiperInst.isEnd) {\n        self.$nextButton.addClass('swiper-button-disabled');\n      } else {\n        self.$nextButton.removeClass('swiper-button-disabled');\n      }\n    }\n  };\n  /**\n   * Edit slide\n   *\n   * @return void\n   * @access public\n   */\n\n\n  swiperTabsLoader_plugin.prototype.editSlide = function ($slide) {\n    var self = this;\n    var index = $(self.swiperInst.slides).index($slide);\n    self.goToSlide(index - 1);\n  };\n  /**\n   * Go To slide\n   *\n   * @return void\n   * @access public\n   */\n\n\n  swiperTabsLoader_plugin.prototype.goToSlide = function (index, speed) {\n    var self = this; // If no speed is defined, use the speed from options (speed can be 0)\n\n    if (!speed && speed !== 0) {\n      speed = self.options.speed;\n    } // slide to index\n\n\n    if (self.options.loop) {\n      self.swiperInst.slideToLoop(index, speed);\n    } else {\n      self.swiperInst.slideTo(index, speed);\n    }\n  };\n  /**\n   * swiperTabsLoader plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.swiperTabsLoader = function (options) {\n    // put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // initialize the items\n\n    return this.each(function () {\n      // store the element the plugin is set on\n      var $element = $(this); // guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // if plugin was not innited\n\n      if (!instance) {\n        // init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new swiperTabsLoader_plugin($element, options));\n      } else {\n        // if instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/****************************************************************\n * CODE tabs\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'tabs';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return tabs_plugin\n   */\n\n  var tabs_plugin = function tabs_plugin($element, options) {\n    // Scope it\n    var self = this;\n    self.$element = $element; // Get options\n\n    var defaults = {};\n    var metaOptions = self.$element.data('tabs');\n    self.options = $.extend({}, defaults, metaOptions);\n\n    if ($.code.debug) {\n      console.log('Init tabs:', self.$element, self.options);\n    } // Start the tabs\n\n\n    self.init();\n  };\n  /**\n   * Init\n   *\n   * @return void\n   * @access public\n   */\n\n\n  tabs_plugin.prototype.init = function () {\n    var self = this;\n    self.$tabsContent = self.$element.find('[data-tabs-content]');\n    self.$tabsNav = self.$element.find('[data-tabs-nav]');\n\n    if (self.options.create) {\n      self.createTabs();\n    } // Catch click on desktop tab navigation\n\n\n    self.$tabsNav.on({\n      click: function click(event) {\n        event.preventDefault();\n\n        if (!$(this).is('.is-active')) {\n          $(this).trigger('open');\n        }\n      },\n      open: function open() {\n        var title = $(this).data('tabs-link'); // Close the active tab and open the clicked tab after that\n\n        self.closeActiveTab(title, self.openTab(title)); // Open the clicked tag link\n\n        self.openTabNavLink(title);\n      }\n    }, '[data-tabs-link]'); // Catch click on mobile tab navigation\n\n    self.$tabsContent.on('click', '[data-tabs-link]', function (event) {\n      var title = $(this).data('tabs-link');\n\n      if ($(this).hasClass('is-active')) {\n        // Close the tab and link in content\n        self.closeTab(title);\n      } else {\n        // Open the tab and link in content\n        self.openTab(title);\n      }\n    }); // Catch open tab by url hash\n\n    if (window.location.hash) {\n      var hash = window.location.hash.substring(1);\n      self.$tabsNav.find('[data-tabs-link=\"' + hash + '\"]').trigger('open');\n    } else {\n      self.$tabsNav.find('[data-tabs-link]:first').trigger('open');\n    }\n  };\n  /**\n   * create tabs\n   *\n   * @return void\n   * @access public\n   */\n\n\n  tabs_plugin.prototype.createTabs = function () {\n    var self = this;\n    self.$tabsContent.find('h2').each(function (i, tabDivider) {\n      // Get tab title from h2\n      var tabTitle = $(tabDivider).text();\n      var tabLink = tabTitle.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/-$/, '').replace(/^-/, ''); // Make tab html\n\n      var $parent = $(tabDivider).closest('.tabs-content-pane');\n      var $link = $('<div class=\"tabs-content-link\" data-tabs-link=\"' + tabLink + '\"><span>' + tabTitle + '</span></div>');\n      $parent.attr('data-tabs-content-pane', tabLink);\n      $link.insertBefore($parent);\n      $(tabDivider).remove(); // Add to tab nav\n\n      self.$tabsNav.find('ol').append('<li class=\"tabs-nav-item\" data-tabs-link=\"' + tabLink + '\"><a href=\"#' + tabLink + '\">' + tabTitle + '</a></li>');\n    });\n  };\n  /**\n   * close tab\n   *\n   * @return void\n   * @access public\n   */\n\n\n  tabs_plugin.prototype.closeActiveTab = function (title, callback) {\n    var self = this;\n    var $activeTab = self.$tabsNav.find('.is-active').not('[data-tabs-link=\"' + title + '\"]'); // If there is an active tab\n\n    if ($activeTab.length) {\n      // Get title\n      var activeTitle = $activeTab.data('tabs-link'); // Don't reopen self\n\n      if (activeTitle == title) {\n        return;\n      }\n\n      self.closeTab(activeTitle);\n      self.closeTabNavLink(activeTitle);\n    }\n\n    if (typeof callback == 'function') {\n      callback();\n    }\n  };\n  /**\n   * close tab\n   *\n   * @return void\n   * @access public\n   */\n\n\n  tabs_plugin.prototype.closeTab = function (title) {\n    var self = this; // Close the tab\n\n    self.$tabsContent.find('[data-tabs-content-pane=\"' + title + '\"]').removeClass('is-active'); // Close the tablink in content (on mobile)\n\n    self.$tabsContent.find('[data-tabs-link=\"' + title + '\"]').removeClass('is-active');\n  };\n  /**\n   * close link in tab nav\n   *\n   * @return void\n   * @access public\n   */\n\n\n  tabs_plugin.prototype.closeTabNavLink = function (title) {\n    var self = this; // Close the tablink in nav\n\n    self.$tabsNav.find('[data-tabs-link=\"' + title + '\"]').removeClass('is-active');\n  };\n  /**\n   * open tab\n   *\n   * @return void\n   * @access public\n   */\n\n\n  tabs_plugin.prototype.openTab = function (title) {\n    var self = this; // Open new tab\n\n    self.$tabsContent.find('[data-tabs-content-pane=\"' + title + '\"]').addClass('is-active'); // Close the tablink in content (on mobile)\n\n    self.$tabsContent.find('[data-tabs-link=\"' + title + '\"]').addClass('is-active');\n  };\n  /**\n   * open tablink in Nav\n   *\n   * @return void\n   * @access public\n   */\n\n\n  tabs_plugin.prototype.openTabNavLink = function (title) {\n    var self = this; // Open new tab\n\n    self.$tabsNav.find('[data-tabs-link=\"' + title + '\"]').addClass('is-active');\n  };\n  /**\n   * Reset the tab navigation and tabs\n   *\n   * @return void\n   * @access public\n   */\n\n\n  tabs_plugin.prototype.reset = function () {\n    var self = this; // If there is no active tab in navigation or content\n\n    if (self.$tabsNav.find('.is-active').length == 0 || self.$tabsContent.find('.is-active').length == 0) {\n      // Remove all active classes\n      self.$element.find('.is-active').removeClass('is-active'); // open the first tab in navigation\n\n      self.$tabsNav.find('[data-tabs-link]').first().trigger('click');\n    }\n  };\n  /**\n   * tabs plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.tabs = function (options) {\n    // Put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // Initialize the items\n\n    return this.each(function () {\n      // Store the element the plugin is set on\n      var $element = $(this); // Guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // If plugin was not innited\n\n      if (!instance) {\n        // Init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new tabs_plugin($element, options));\n      } else {\n        // If instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/****************************************************************\n * CODE toggleElementClass\n ****************************************************************/\n\n!function ($, document, window, undefined) {\n  /**\n   * Plugin name\n   */\n  var _pluginName = 'toggleElementClass';\n  /**\n   * @param jQuery Element Wrapping container div\n   * @return toggleElementClass_plugin\n   */\n\n  var toggleElementClass_plugin = function toggleElementClass_plugin($element, options) {\n    // scope it\n    var self = this;\n    self.$element = $element;\n\n    if ($.code.debug) {\n      console.log('Init toggleElementClass:', self.$element);\n    } // Catch click on element\n\n\n    self.$element.on(\"click\", function (event) {\n      self.getOptions(self.$element);\n\n      if (!self.$target.length || !self.options.class) {\n        return;\n      }\n\n      self.handleEvents(event);\n      self.toggleTheClass();\n    });\n  };\n  /**\n   * get options\n   *\n   * @return void\n   * @access public\n   */\n\n\n  toggleElementClass_plugin.prototype.getOptions = function ($element) {\n    var self = this;\n\n    if (self.options) {\n      return;\n    }\n\n    var defaults = {\n      target: \"body\",\n      stopPropagation: true,\n      preventDefault: true\n    };\n    var metaOptions = $element.data('toggle-element-class');\n    self.options = $.extend({}, defaults, metaOptions);\n    self.$target = $(self.options.target);\n  };\n  /**\n   * Handle events\n   *\n   * @return void\n   * @access public\n   */\n\n\n  toggleElementClass_plugin.prototype.handleEvents = function (event) {\n    var self = this;\n\n    if (self.options.preventDefault) {\n      event.preventDefault();\n    }\n\n    if (self.options.stopPropagation) {\n      event.stopPropagation();\n    }\n  };\n  /**\n   * Toggle the Class\n   *\n   * @return void\n   * @access public\n   */\n\n\n  toggleElementClass_plugin.prototype.toggleTheClass = function () {\n    var self = this;\n\n    if (self.$target.hasClass(self.options.class)) {\n      // if class is set, remove it\n      self.removeTheClass();\n    } else {\n      // if class is not set, add it\n      self.addTheClass();\n    }\n  };\n  /**\n   * Add the Class\n   *\n   * @return void\n   * @access public\n   */\n\n\n  toggleElementClass_plugin.prototype.addTheClass = function () {\n    var self = this; // Get the options again in case this is called from outside\n\n    self.getOptions(self.$element);\n    self.$target.addClass(self.options.class);\n  };\n  /**\n   * Remove the Class\n   *\n   * @return void\n   * @access public\n   */\n\n\n  toggleElementClass_plugin.prototype.removeTheClass = function () {\n    var self = this; // Get the options again in case this is called from outside\n\n    self.getOptions(self.$element);\n    self.$target.removeClass(self.options.class);\n  };\n  /**\n   * toggleElementClass plugin\n   *\n   * @return jQuery objects\n   */\n\n\n  $.fn.toggleElementClass = function (options) {\n    // put args in array\n    var args = Array.prototype.slice.call(arguments, 1); // initialize the items\n\n    return this.each(function () {\n      // store the element the plugin is set on\n      var $element = $(this); // guard if plugin was already initted\n\n      var instance = $element.data('plugin_' + _pluginName); // if plugin was not innited\n\n      if (!instance) {\n        // init plugin on element and set guard data on element\n        $element.data('plugin_' + _pluginName, new toggleElementClass_plugin($element, options));\n      } else {\n        // if instance already created call method from plugin\n        if (typeof options === 'string') {\n          instance[options].apply(instance, args);\n        }\n      }\n    });\n  };\n}(jQuery, document, window);\n/* Ring plugins */\n\nif (!Element.prototype.matches) {\n  Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n}\n\nif (!Element.prototype.closest) {\n  Element.prototype.closest = function (s) {\n    var el = this;\n\n    do {\n      if (Element.prototype.matches.call(el, s)) return el;\n      el = el.parentElement || el.parentNode;\n    } while (el !== null && el.nodeType === 1);\n\n    return null;\n  };\n}\n\nif (!NodeList.prototype.forEach && Array.prototype.forEach) {\n  NodeList.prototype.forEach = Array.prototype.forEach;\n}\n/**\n *  Compare chart script\n *  ------------------------------------------\n *  Responsible for adding primary and secondary filtering logic to the compare page\n */\n\n\nvar PRIMARY_NAV_ITEM_ACTIVE_CLASS = 'compare__nav-item--active';\nvar SECONDARY_NAV_ITEM_ACTIVE_CLASS = 'compare__nav-item--active';\n\nvar CompareChart = /*#__PURE__*/function () {\n  function CompareChart() {\n    _classCallCheck(this, CompareChart);\n\n    this.element = document.querySelector('[data-compare-charts]'); // Desktop\n\n    this.primaryNav = this.element.querySelector('[data-primary-filter-nav]');\n    this.primaryNavGroups = this.primaryNav.querySelectorAll('li[data-nav-has-children]');\n    this.secondaryNav = this.element.querySelector('[data-secondary-filter-nav]');\n    this.secondaryNavLinks = this.secondaryNav.querySelectorAll('[data-secondary-filter-category]');\n    this.displayDifferencesLink = this.element.querySelector('[data-display-differences]');\n    this.productSlider = null;\n    this.contentRows = this.element.querySelector('[data-compare-content-rows]');\n    this.stickyFooter = this.element.querySelector('[data-product-sticky-footer]');\n    this.stickyFooterSlider = null;\n    this.colImgs = document.querySelectorAll('[data-gif-figure]');\n\n    if (this.primaryNav.hasAttribute('data-has-subnavigation')) {\n      this.toggleSubNavButtons = this.primaryNav.querySelectorAll('[data-toggle-subnav]');\n    } // Mobile\n\n\n    this.mobileProductSelectBoxes = this.element.querySelectorAll('[data-mobile-product-select]');\n    this.mobileProductSelectBoxOne = this.element.querySelector('[data-mobile-product-select=\"1\"]');\n    this.mobileProductSelectBoxTwo = this.element.querySelector('[data-mobile-product-select=\"2\"]');\n    this.mobileProductDropdown = this.element.querySelector('[data-mobile-product-dropdown]');\n    this.productCompareBoxSelected = null;\n    this.currentSelectedId = null;\n    this.freshlySelectedId = null; // Init plugin\n\n    this.init();\n  }\n\n  _createClass(CompareChart, [{\n    key: \"init\",\n    value: function init() {\n      // Primary nav links event listeners\n      var primaryNavLinks = this.primaryNav.querySelectorAll('[data-primary-filter-id]:not([data-nav-has-children])');\n\n      var _iterator = _createForOfIteratorHelper(primaryNavLinks),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var primaryNavLink = _step.value;\n          primaryNavLink.addEventListener('click', this.handlePrimaryFilterClick.bind(this), false);\n        } // Primary nav grouped links event listeners\n\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      var _iterator2 = _createForOfIteratorHelper(this.primaryNavGroups),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var primaryNavGroup = _step2.value;\n          primaryNavGroup.addEventListener('click', this.handlePrimaryNavGroupClick.bind(this), false);\n        } // Eventlistener for clicking outside of sub nav to close it\n\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n\n      if (this.primaryNav.hasAttribute('data-has-subnavigation')) {\n        this.element.querySelector('.compare__content-wrapper').addEventListener('click', this.handleOutsideSubNavClick.bind(this), false);\n      } // Secondary nav links event listeners\n\n\n      var _iterator3 = _createForOfIteratorHelper(this.secondaryNavLinks),\n          _step3;\n\n      try {\n        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n          var secondaryNavLink = _step3.value;\n          secondaryNavLink.addEventListener('click', this.handleSecondaryFilterClick.bind(this), false);\n        } // Display differences button click event listener\n\n      } catch (err) {\n        _iterator3.e(err);\n      } finally {\n        _iterator3.f();\n      }\n\n      this.displayDifferencesLink.addEventListener('change', this.handleDisplayDifferencesClick.bind(this), false); // Color picker event listeners\n\n      var colorPickers = this.contentRows.querySelectorAll('[data-color-picker]');\n\n      if (colorPickers) {\n        var _iterator4 = _createForOfIteratorHelper(colorPickers),\n            _step4;\n\n        try {\n          for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n            var colorPicker = _step4.value;\n            var colorPickerInputs = colorPicker.querySelectorAll('input');\n\n            var _iterator5 = _createForOfIteratorHelper(colorPickerInputs),\n                _step5;\n\n            try {\n              for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n                var colorPickerInput = _step5.value;\n                colorPickerInput.addEventListener('change', this.handleColorPickerInputChange.bind(this), false);\n              }\n            } catch (err) {\n              _iterator5.e(err);\n            } finally {\n              _iterator5.f();\n            }\n          }\n        } catch (err) {\n          _iterator4.e(err);\n        } finally {\n          _iterator4.f();\n        }\n      } // Initiate the desktop product slider (disabled for now)\n      // this.initProductSlider(this.contentRows.querySelector('[data-compare-content-category] .compare__swiper')) \n      // Add listener for mobile product compare selection (both one and two)\n\n\n      var _iterator6 = _createForOfIteratorHelper(this.mobileProductSelectBoxes),\n          _step6;\n\n      try {\n        for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n          var mobileProductSelectBox = _step6.value;\n          var productSelectionLinks = mobileProductSelectBox.querySelectorAll('.compare__nav-title');\n\n          var _iterator9 = _createForOfIteratorHelper(productSelectionLinks),\n              _step9;\n\n          try {\n            for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n              var productSelectionLink = _step9.value;\n              productSelectionLink.addEventListener('click', this.handleMobileProductSelectClick.bind(this), false);\n              productSelectionLink.compareBoxSelected = mobileProductSelectBox.getAttribute('data-mobile-product-select');\n            }\n          } catch (err) {\n            _iterator9.e(err);\n          } finally {\n            _iterator9.f();\n          }\n        } // Make sure the mobile product compare selection boxes are equal height..\n\n      } catch (err) {\n        _iterator6.e(err);\n      } finally {\n        _iterator6.f();\n      }\n\n      this.equalizeProductSelectBoxesHeight(); // Add listener for mobile product dropdown selection (which will show after selecting the compare dropdown)\n\n      var productDropdownLinks = this.mobileProductDropdown.querySelectorAll('.compare__nav-title');\n\n      var _iterator7 = _createForOfIteratorHelper(productDropdownLinks),\n          _step7;\n\n      try {\n        for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n          var productDropdownLink = _step7.value;\n          productDropdownLink.addEventListener('click', this.handleMobileProductDropdownClick.bind(this), false);\n        } // Small hack to make sure to hide third item for mobile / tablet portrait (on initial load)\n\n      } catch (err) {\n        _iterator7.e(err);\n      } finally {\n        _iterator7.f();\n      }\n\n      var vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\n\n      if (vw < 768) {\n        this.hideProductsMobileInitialLoad();\n      } // Gif Toggle\n\n\n      var _iterator8 = _createForOfIteratorHelper(this.colImgs),\n          _step8;\n\n      try {\n        for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n          var colImg = _step8.value;\n          colImg.addEventListener('click', this.handleGifToggle.bind(this), false);\n        }\n      } catch (err) {\n        _iterator8.e(err);\n      } finally {\n        _iterator8.f();\n      }\n    }\n  }, {\n    key: \"initProductSlider\",\n    value: function initProductSlider() {\n      var _this = this,\n          _Swiper;\n\n      var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n      var slidePrevNextHooksEnabled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      var disableSwipe = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var noSwipingClass = '';\n\n      if (disableSwipe) {\n        noSwipingClass = 'no-swiping';\n      }\n\n      this.productSlider = new Swiper(el !== null ? el : '.compare__swiper', (_Swiper = {\n        speed: 400,\n        spaceBetween: 100,\n        pagination: false,\n        slidesPerView: 4\n      }, _defineProperty(_Swiper, \"spaceBetween\", 0), _defineProperty(_Swiper, \"centerInsufficientSlides\", true), _defineProperty(_Swiper, \"scrollbar\", false), _defineProperty(_Swiper, \"noSwipingClass\", noSwipingClass), _defineProperty(_Swiper, \"noSwiping\", disableSwipe), _defineProperty(_Swiper, \"shortSwipes\", true), _defineProperty(_Swiper, \"navigation\", {\n        nextEl: '.swiper-button-next',\n        prevEl: '.swiper-button-prev',\n        hideOnClick: false,\n        disabledClass: 'swiper-button-disabled',\n        hiddenClass: 'swiper-button-hidden'\n      }), _defineProperty(_Swiper, \"breakpointsInverse\", true), _defineProperty(_Swiper, \"breakpoints\", {\n        320: {\n          navigation: false,\n          centerInsufficientSlides: false,\n          slidesPerView: 2\n        },\n        1024: {\n          centerInsufficientSlides: true,\n          slidesPerView: 3\n        },\n        1280: {\n          centerInsufficientSlides: true,\n          slidesPerView: 4\n        }\n      }), _defineProperty(_Swiper, \"on\", {\n        slidePrevTransitionStart: function slidePrevTransitionStart() {\n          if (_this.stickyFooterSlider && slidePrevNextHooksEnabled === true) {\n            _this.stickyFooterSlider.slidePrev();\n          }\n        },\n        slideNextTransitionStart: function slideNextTransitionStart() {\n          if (_this.stickyFooterSlider && slidePrevNextHooksEnabled === true) {\n            _this.stickyFooterSlider.slideNext();\n          }\n        }\n      }), _Swiper));\n    }\n  }, {\n    key: \"initStickyFooterSlider\",\n    value: function initStickyFooterSlider() {\n      this.stickyFooterSlider = new Swiper('[data-product-sticky-footer-slider]', {\n        spaceBetween: 0,\n        slidesPerView: 4,\n        centerInsufficientSlides: true,\n        freeMode: true,\n        breakpointsInverse: true,\n        scrollbar: false,\n        navigation: false,\n        breakpoints: {\n          320: {\n            navigation: false,\n            centerInsufficientSlides: false,\n            slidesPerView: 2\n          },\n          1024: {\n            centerInsufficientSlides: true,\n            slidesPerView: 3\n          },\n          1280: {\n            centerInsufficientSlides: true,\n            slidesPerView: 4\n          }\n        }\n      });\n    }\n  }, {\n    key: \"handlePrimaryFilterClick\",\n    value: function handlePrimaryFilterClick(e) {\n      // Get closest a element (should the image be clicked and not the a)\n      var linkEl = e.target.closest('li'); // When deselecting - check if this not the last selected product - if so do nothing and always keep one primary nav\n\n      if (linkEl.classList.contains(PRIMARY_NAV_ITEM_ACTIVE_CLASS) && this.primaryNav.querySelectorAll(\".\".concat(PRIMARY_NAV_ITEM_ACTIVE_CLASS, \":not([data-nav-has-children])\")).length === 1) {\n        return;\n      } // Temporary fix: do not select more than four products\n\n\n      if (!linkEl.classList.contains(PRIMARY_NAV_ITEM_ACTIVE_CLASS) && this.primaryNav.querySelectorAll(\".\".concat(PRIMARY_NAV_ITEM_ACTIVE_CLASS, \":not([data-nav-has-children])\")).length >= 4) {\n        return;\n      } // Toggle active state class of the link item\n\n\n      linkEl.classList.toggle(PRIMARY_NAV_ITEM_ACTIVE_CLASS); // Get product id from clicked link element\n\n      var productId = linkEl.getAttribute('data-primary-filter-id'); // Hide or unhide content product row\n\n      var contentProductRows = this.contentRows.querySelectorAll(\"[data-compare-content-id=\\\"\".concat(productId, \"\\\"]\"));\n\n      var _iterator10 = _createForOfIteratorHelper(contentProductRows),\n          _step10;\n\n      try {\n        for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n          var productRow = _step10.value;\n          productRow.hidden = !linkEl.classList.contains(PRIMARY_NAV_ITEM_ACTIVE_CLASS);\n        } // Hide or unhide footer product row\n\n      } catch (err) {\n        _iterator10.e(err);\n      } finally {\n        _iterator10.f();\n      }\n\n      var footerProductRows = this.stickyFooter.querySelectorAll(\"[data-compare-content-id=\\\"\".concat(productId, \"\\\"]\"));\n\n      var _iterator11 = _createForOfIteratorHelper(footerProductRows),\n          _step11;\n\n      try {\n        for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n          var _productRow = _step11.value;\n          _productRow.hidden = !linkEl.classList.contains(PRIMARY_NAV_ITEM_ACTIVE_CLASS);\n        } // Check if display differences is selected, if so rerun the comparison script\n\n      } catch (err) {\n        _iterator11.e(err);\n      } finally {\n        _iterator11.f();\n      }\n\n      if (this.displayDifferencesLink.checked) {\n        this.compareDifferences();\n      }\n    }\n  }, {\n    key: \"handlePrimaryNavGroupClick\",\n    value: function handlePrimaryNavGroupClick(e) {\n      // Get closest a element (should the image be clicked and not the a)\n      var linkEl = e.target.closest('li'); // Make sure to only approach groups, not li within li\n\n      if (linkEl.parentNode.hasAttribute('data-subnav')) {\n        return;\n      }\n\n      var subMenu = linkEl.querySelector('[data-subnav]');\n      linkEl.classList.toggle('compare__nav-item--open');\n\n      if (subMenu) {\n        subMenu.hidden = !subMenu.hidden;\n      }\n\n      this.checkForParentActiveState();\n    }\n  }, {\n    key: \"handleOutsideSubNavClick\",\n    value: function handleOutsideSubNavClick(e) {\n      // Check if there is a nav group currently open, if so close it\n      var _iterator12 = _createForOfIteratorHelper(this.primaryNavGroups),\n          _step12;\n\n      try {\n        for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n          var primaryNavGroup = _step12.value;\n\n          if (primaryNavGroup.classList.contains('compare__nav-item--open')) {\n            primaryNavGroup.classList.remove('compare__nav-item--open');\n            var subMenu = primaryNavGroup.querySelector('[data-subnav]');\n\n            if (subMenu) {\n              subMenu.hidden = !subMenu.hidden;\n            }\n\n            this.checkForParentActiveState();\n          }\n        }\n      } catch (err) {\n        _iterator12.e(err);\n      } finally {\n        _iterator12.f();\n      }\n    }\n  }, {\n    key: \"handleSecondaryFilterClick\",\n    value: function handleSecondaryFilterClick(e) {\n      // Get closest a element (should the image be clicked and not the a)    \n      var linkEl = e.target.closest('a'); // Get the category from the clicked link element\n\n      var clickedCategory = linkEl.getAttribute('data-secondary-filter-category'); // Remove all secondary filter active classes except for the one clicked\n\n      var _iterator13 = _createForOfIteratorHelper(this.secondaryNavLinks),\n          _step13;\n\n      try {\n        for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n          var secondaryNavLink = _step13.value;\n\n          // Add or remove active nav item class\n          if (secondaryNavLink.getAttribute('data-secondary-filter-category') === clickedCategory) {\n            secondaryNavLink.classList.add(SECONDARY_NAV_ITEM_ACTIVE_CLASS);\n          } else {\n            secondaryNavLink.classList.remove(SECONDARY_NAV_ITEM_ACTIVE_CLASS);\n          }\n        } // Loop through content rows to check which one should be hidden/shown\n\n      } catch (err) {\n        _iterator13.e(err);\n      } finally {\n        _iterator13.f();\n      }\n\n      var contentRows = this.contentRows.querySelectorAll('[data-compare-content-category]');\n\n      var _iterator14 = _createForOfIteratorHelper(contentRows),\n          _step14;\n\n      try {\n        for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n          var contentRow = _step14.value;\n\n          // Unhide the content row of the selected category\n          if (contentRow.getAttribute('data-compare-content-category') === clickedCategory) {\n            contentRow.hidden = false; // Initiate product slider(s) for this tab (currently disabled)\n            // for(const [i, sliderEl] of contentRow.querySelectorAll('.compare__swiper').entries()) {\n            //   const disableSwipe = contentRow.getAttribute('data-compare-content-category') === 'installation'\n            //   this.initProductSlider(sliderEl, i === 0, disableSwipe)\n            // }\n            // Check if the product sticky footer needs to be displayed\n\n            this.stickyFooter.hidden = !contentRow.hasAttribute('data-enable-sticky-product-footer'); // Destroy if there is a current sticky footer slider (currently disabled)\n            // if(this.stickyFooterSlider) {\n            //   this.stickyFooterSlider.destroy()\n            // }\n            // Init sticky footer slider\n            // this.initStickyFooterSlider() \n          } else {\n            contentRow.hidden = true;\n          }\n        }\n      } catch (err) {\n        _iterator14.e(err);\n      } finally {\n        _iterator14.f();\n      }\n    }\n  }, {\n    key: \"checkForParentActiveState\",\n    value: function checkForParentActiveState() {\n      // Loop through all primary nav groups and check if any of children have active state\n      var _iterator15 = _createForOfIteratorHelper(this.primaryNavGroups),\n          _step15;\n\n      try {\n        for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n          var primaryNavGroup = _step15.value;\n          primaryNavGroup.classList.remove(PRIMARY_NAV_ITEM_ACTIVE_CLASS);\n\n          var _iterator16 = _createForOfIteratorHelper(primaryNavGroup.querySelectorAll('[data-subnav] li')),\n              _step16;\n\n          try {\n            for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n              var primaryNavLink = _step16.value;\n\n              if (primaryNavLink.classList.contains(PRIMARY_NAV_ITEM_ACTIVE_CLASS)) {\n                primaryNavGroup.classList.add(PRIMARY_NAV_ITEM_ACTIVE_CLASS);\n              }\n            }\n          } catch (err) {\n            _iterator16.e(err);\n          } finally {\n            _iterator16.f();\n          }\n        }\n      } catch (err) {\n        _iterator15.e(err);\n      } finally {\n        _iterator15.f();\n      }\n    }\n  }, {\n    key: \"handleDisplayDifferencesClick\",\n    value: function handleDisplayDifferencesClick(e) {\n      var showDifferences = e.target.checked;\n      this.compareDifferences(showDifferences);\n    }\n  }, {\n    key: \"compareDifferences\",\n    value: function compareDifferences() {\n      var showDifferences = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      // If deselecting the checkbox make sure to remove all deactived classes from secondary menu\n      if (showDifferences === false) {\n        var _iterator17 = _createForOfIteratorHelper(this.secondaryNavLinks),\n            _step17;\n\n        try {\n          for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n            var secondaryNavLink = _step17.value;\n\n            if (secondaryNavLink.classList.contains('compare__nav-item--deactivated')) {\n              secondaryNavLink.classList.remove('compare__nav-item--deactivated');\n            }\n          }\n        } catch (err) {\n          _iterator17.e(err);\n        } finally {\n          _iterator17.f();\n        }\n\n        return;\n      } // Check all category groups for differences on ACTIVE productRows\n\n\n      var _iterator18 = _createForOfIteratorHelper(this.element.querySelectorAll('[data-compare-content-category]')),\n          _step18;\n\n      try {\n        for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n          var categoryGroup = _step18.value;\n          var rowsHaveDifferences = false;\n          var productRows = categoryGroup.querySelectorAll('[data-compare-content-id]:not([hidden])');\n\n          var _iterator19 = _createForOfIteratorHelper(productRows),\n              _step19;\n\n          try {\n            for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n              var productRow = _step19.value;\n\n              if (productRow.hidden === false && productRows[0].innerHTML.trim() !== productRow.innerHTML.trim()) {\n                rowsHaveDifferences = true;\n              }\n            } // If there are no row differences in this category group make sure to deactivate the related secondary link\n\n          } catch (err) {\n            _iterator19.e(err);\n          } finally {\n            _iterator19.f();\n          }\n\n          if (!rowsHaveDifferences) {\n            var _secondaryNavLink = this.secondaryNav.querySelector(\"a[data-secondary-filter-category=\\\"\".concat(categoryGroup.getAttribute('data-compare-content-category'), \"\\\"]\"));\n\n            if (_secondaryNavLink) {\n              if (_secondaryNavLink.classList.contains('compare__nav-item--deactivated')) {\n                _secondaryNavLink.classList.remove('compare__nav-item--deactivated');\n              }\n\n              _secondaryNavLink.classList.add('compare__nav-item--deactivated');\n            }\n          }\n        }\n      } catch (err) {\n        _iterator18.e(err);\n      } finally {\n        _iterator18.f();\n      }\n    }\n  }, {\n    key: \"handleColorPickerInputChange\",\n    value: function handleColorPickerInputChange(e) {\n      // If you click an active color swatch nothing needs to happen\n      if (e.target.parentNode.classList.contains('checked')) return; // Hide all variant images\n\n      e.target.closest('[data-device-color-options]').querySelectorAll('[data-variant-img-index-id]').forEach(function (el) {\n        return el.hidden = true;\n      }); // Get index from radio input\n\n      var selectedIndex = e.target.getAttribute('data-color-swatch-index-id'); // Show variant image for selected index swatch\n\n      e.target.closest('[data-device-color-options]').querySelector(\"[data-variant-img-index-id=\\\"\".concat(selectedIndex, \"\\\"]\")).hidden = false; // Remove all active states from radios\n\n      e.target.closest('[data-color-picker]').querySelectorAll('label').forEach(function (e) {\n        return e.classList.remove('checked');\n      }); // Add active state to selected radio\n\n      e.target.closest('label').classList.toggle('checked');\n    }\n  }, {\n    key: \"hideProductsMobileInitialLoad\",\n    value: function hideProductsMobileInitialLoad() {\n      var contentCategories = this.element.querySelectorAll('[data-compare-content-category]');\n\n      var _iterator20 = _createForOfIteratorHelper(contentCategories),\n          _step20;\n\n      try {\n        for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n          var contentCategory = _step20.value;\n          var wrappers = contentCategory.querySelectorAll('.compare__product-info-wrapper');\n\n          var _iterator22 = _createForOfIteratorHelper(wrappers),\n              _step22;\n\n          try {\n            for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n              var wrapper = _step22.value;\n              var contentProductRows = wrapper.querySelectorAll('[data-compare-content-id]:not([hidden])');\n\n              var _iterator23 = _createForOfIteratorHelper(contentProductRows.entries()),\n                  _step23;\n\n              try {\n                for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n                  var _step23$value = _slicedToArray(_step23.value, 2),\n                      i = _step23$value[0],\n                      productRow = _step23$value[1];\n\n                  if (i > 1) {\n                    productRow.hidden = true;\n                  }\n                }\n              } catch (err) {\n                _iterator23.e(err);\n              } finally {\n                _iterator23.f();\n              }\n            }\n          } catch (err) {\n            _iterator22.e(err);\n          } finally {\n            _iterator22.f();\n          }\n        }\n      } catch (err) {\n        _iterator20.e(err);\n      } finally {\n        _iterator20.f();\n      }\n\n      var stickyFooterRows = this.stickyFooter.querySelectorAll('[data-compare-content-id]:not([hidden])');\n\n      var _iterator21 = _createForOfIteratorHelper(stickyFooterRows.entries()),\n          _step21;\n\n      try {\n        for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n          var _step21$value = _slicedToArray(_step21.value, 2),\n              _i2 = _step21$value[0],\n              stickyFooterRow = _step21$value[1];\n\n          if (_i2 > 1) {\n            stickyFooterRow.hidden = true;\n          }\n        }\n      } catch (err) {\n        _iterator21.e(err);\n      } finally {\n        _iterator21.f();\n      }\n    }\n  }, {\n    key: \"handleMobileProductSelectClick\",\n    value: function handleMobileProductSelectClick(e) {\n      e.preventDefault();\n      var linkEl = e.target.closest('li'); // Add the compare box selected (one or two) to a variable so we can use it later on to determine what to update\n\n      this.productCompareBoxSelected = e.currentTarget.compareBoxSelected; // Check if another selectbox is already open, if so close that one first\n\n      var mobileProductDropdownOpen = false;\n\n      var _iterator24 = _createForOfIteratorHelper(this.mobileProductSelectBoxes),\n          _step24;\n\n      try {\n        for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n          var productSelect = _step24.value;\n          var item = productSelect.querySelector('[data-primary-filter-id]:not([hidden])');\n\n          if (item.classList.contains(PRIMARY_NAV_ITEM_ACTIVE_CLASS) && item.getAttribute('data-primary-filter-id') != linkEl.getAttribute('data-primary-filter-id')) {\n            item.classList.remove(PRIMARY_NAV_ITEM_ACTIVE_CLASS);\n            mobileProductDropdownOpen = true;\n          }\n        } // Toggle active class\n\n      } catch (err) {\n        _iterator24.e(err);\n      } finally {\n        _iterator24.f();\n      }\n\n      linkEl.classList.toggle(PRIMARY_NAV_ITEM_ACTIVE_CLASS); // Show selection popup if its not open already\n\n      if (!mobileProductDropdownOpen) {\n        this.mobileProductDropdown.hidden = !this.mobileProductDropdown.hidden;\n      } // Disable already selected products in dropdown options\n\n\n      var selectBoxOneProductId = this.mobileProductSelectBoxOne.querySelector('[data-primary-filter-id]:not([hidden])').getAttribute('data-primary-filter-id');\n      var selectBoxTwoProductId = this.mobileProductSelectBoxTwo.querySelector('[data-primary-filter-id]:not([hidden])').getAttribute('data-primary-filter-id');\n\n      var _iterator25 = _createForOfIteratorHelper(this.mobileProductDropdown.querySelectorAll('[data-primary-filter-id]')),\n          _step25;\n\n      try {\n        for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n          var productRow = _step25.value;\n          var productId = productRow.getAttribute('data-primary-filter-id');\n          productRow.classList.remove('selection-disabled');\n\n          if (productId == selectBoxOneProductId || productId == selectBoxTwoProductId) {\n            productRow.classList.add('selection-disabled');\n          }\n        } // Save current selected product id\n\n      } catch (err) {\n        _iterator25.e(err);\n      } finally {\n        _iterator25.f();\n      }\n\n      this.currentSelectedId = linkEl.getAttribute('data-primary-filter-id');\n    }\n  }, {\n    key: \"handleMobileProductDropdownClick\",\n    value: function handleMobileProductDropdownClick(e) {\n      e.preventDefault();\n      var linkEl = e.target.closest('li'); // Check which new product id to use in comparison chart\n\n      this.freshlySelectedId = linkEl.getAttribute('data-primary-filter-id'); // Hide selection popup\n\n      this.mobileProductDropdown.hidden = true; // Update product selection new product info in the compare box\n\n      var _iterator26 = _createForOfIteratorHelper(this.mobileProductSelectBoxes),\n          _step26;\n\n      try {\n        for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {\n          var mobileProductSelectBox = _step26.value;\n\n          if (mobileProductSelectBox.getAttribute('data-mobile-product-select') === this.productCompareBoxSelected) {\n            mobileProductSelectBox.querySelector(\"[data-primary-filter-id=\\\"\".concat(this.currentSelectedId, \"\\\"]\")).hidden = true;\n            mobileProductSelectBox.querySelector(\"[data-primary-filter-id=\\\"\".concat(this.freshlySelectedId, \"\\\"]\")).hidden = false;\n          }\n        } // Update content rows + sticky footer with new product info\n\n      } catch (err) {\n        _iterator26.e(err);\n      } finally {\n        _iterator26.f();\n      }\n\n      this.contentRows.querySelectorAll(\"[data-compare-content-id=\\\"\".concat(this.currentSelectedId, \"\\\"]\")).forEach(function (contentRow) {\n        return contentRow.hidden = true;\n      });\n      this.contentRows.querySelectorAll(\"[data-compare-content-id=\\\"\".concat(this.freshlySelectedId, \"\\\"]\")).forEach(function (contentRow) {\n        return contentRow.hidden = false;\n      });\n      this.stickyFooter.querySelector(\"[data-compare-content-id=\\\"\".concat(this.currentSelectedId, \"\\\"]\")).hidden = true;\n      this.stickyFooter.querySelector(\"[data-compare-content-id=\\\"\".concat(this.freshlySelectedId, \"\\\"]\")).hidden = false; // Check if the the compare selection matches the ordering. If not: apply a row reverse css class\n\n      var selectBoxOneProductId = this.mobileProductSelectBoxOne.querySelector('[data-primary-filter-id]:not([hidden])').getAttribute('data-primary-filter-id');\n      var contentRowOneProductId = this.contentRows.querySelector('[data-compare-content-id]:not([hidden])').getAttribute('data-compare-content-id');\n      this.contentRows.querySelectorAll('.compare__product-info-wrapper').forEach(function (wrapper) {\n        return wrapper.classList.remove('compare__product-info--reverse');\n      });\n      this.stickyFooter.querySelectorAll('.swiper-wrapper').forEach(function (wrapper) {\n        return wrapper.classList.remove('swiper-rows-reverse');\n      });\n\n      if (selectBoxOneProductId != contentRowOneProductId) {\n        this.contentRows.querySelectorAll('.compare__product-info-wrapper').forEach(function (wrapper) {\n          return wrapper.classList.add('compare__product-info--reverse');\n        });\n        this.stickyFooter.querySelectorAll('.swiper-wrapper').forEach(function (wrapper) {\n          return wrapper.classList.add('swiper-rows-reverse');\n        });\n      } // Reset current product id and compare box selected\n\n\n      this.currentSelectedId = null;\n      this.productCompareBoxSelected = null; // Make sure the mobile product compare selection boxes are equal height..\n\n      this.equalizeProductSelectBoxesHeight();\n    }\n  }, {\n    key: \"equalizeProductSelectBoxesHeight\",\n    value: function equalizeProductSelectBoxesHeight() {\n      var selectBoxHeights = _toConsumableArray(this.element.querySelectorAll('[data-mobile-product-select-boxes] [data-primary-filter-id]:not([hidden]) .compare__nav-title')).map(function (el) {\n        return el.clientHeight;\n      });\n\n      var maxBoxHeight = Math.max.apply(Math, _toConsumableArray(selectBoxHeights));\n\n      if (maxBoxHeight !== null && !isNaN(maxBoxHeight)) {\n        var _iterator27 = _createForOfIteratorHelper(this.element.querySelectorAll('[data-mobile-product-select-boxes] [data-primary-filter-id]:not([hidden]) .compare__nav-title')),\n            _step27;\n\n        try {\n          for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {\n            var selectBox = _step27.value;\n            // We need to substract padding unfortunately because JS cant find element height without padding\n            selectBox.style.height = \"\".concat(maxBoxHeight - parseFloat(getComputedStyle(selectBox).paddingTop) * 2, \"px\");\n          }\n        } catch (err) {\n          _iterator27.e(err);\n        } finally {\n          _iterator27.f();\n        }\n      }\n    }\n  }, {\n    key: \"handleGifToggle\",\n    value: function handleGifToggle(e) {\n      var parentElement = e.target.closest('[data-gif-figure]');\n      var targetImg = parentElement.querySelector('.img__gif');\n      var imgSrc = targetImg.src;\n      var imgAlt = targetImg.getAttribute('data-alt');\n\n      if (!parentElement.classList.contains('is__play')) {\n        parentElement.classList.add('is__play');\n        targetImg.setAttribute('src', imgAlt);\n        targetImg.setAttribute('data-alt', imgSrc);\n      } else {\n        parentElement.classList.remove('is__play');\n        targetImg.setAttribute('src', imgAlt);\n        targetImg.setAttribute('data-alt', imgSrc);\n      }\n    }\n  }]);\n\n  return CompareChart;\n}();\n/**\n *  Generic video component\n *  ------------------------------------------\n *  Responsible for handling video blocks\n */\n\n\nvar VideoBlock = /*#__PURE__*/function () {\n  function VideoBlock(element) {\n    _classCallCheck(this, VideoBlock);\n\n    this.element = element;\n    this.type = this.element.getAttribute('data-video-element');\n    this.playButton = this.element.querySelector('[data-play-button]');\n\n    if (this.type == 'video') {\n      this.video = this.element.querySelector('video');\n      this.videoIsPlaying = false;\n      this.placeholderImg = this.element.querySelector('[data-placeholder-image]');\n    } else if (this.type == 'gif') {\n      this.image = this.element.querySelector('img');\n    }\n\n    this.init();\n  }\n\n  _createClass(VideoBlock, [{\n    key: \"init\",\n    value: function init() {\n      if (this.playButton) {\n        this.playButton.addEventListener('click', this.handlePlayClick.bind(this), false);\n      }\n\n      if (this.type == 'video' && this.video) {\n        this.video.addEventListener('click', this.handleVideoClick.bind(this), false);\n      }\n\n      if (this.type == 'gif') {\n        this.image.addEventListener('click', this.toggleGifState.bind(this), false);\n      }\n    }\n  }, {\n    key: \"handlePlayClick\",\n    value: function handlePlayClick(e) {\n      e.preventDefault();\n\n      if (this.type == 'video') {\n        this.handlePlayVideoClick();\n      } else if (this.type == 'gif') {\n        this.toggleGifState();\n      }\n    }\n  }, {\n    key: \"handlePlayVideoClick\",\n    value: function handlePlayVideoClick() {\n      this.video.play();\n      this.videoIsPlaying = true;\n      this.element.classList.toggle('is__play');\n    }\n  }, {\n    key: \"handleVideoClick\",\n    value: function handleVideoClick(e) {\n      e.preventDefault();\n\n      if (this.videoIsPlaying) {\n        this.video.pause();\n        this.videoIsPlaying = false;\n        this.element.classList.toggle('is__play');\n      }\n    }\n  }, {\n    key: \"toggleGifState\",\n    value: function toggleGifState(e) {\n      this.element.classList.toggle('is__play');\n      this.image.src = this.element.classList.contains('is__play') ? this.image.getAttribute('data-gif') : this.image.getAttribute('data-img');\n    }\n  }]);\n\n  return VideoBlock;\n}();\n/**\n *  Banner video script\n *  ------------------------------------------\n *  Responsible for handling banner video on pmp-banner.liquid\n */\n\n\nvar BannerVideo = /*#__PURE__*/function () {\n  function BannerVideo() {\n    _classCallCheck(this, BannerVideo);\n\n    this.videoFull = document.querySelector('[data-banner-video-high-res]');\n    this.playButton = document.querySelector('[data-video-play-button]');\n    this.bannerContent = document.querySelector('[data-banner-content]');\n    this.videoOverlay = document.querySelector('[data-banner-overlay]');\n    this.bannerImage = document.querySelector('[data-banner-image]'); // Check wether to use preview video or not\n\n    this.hasPreviewVideo = false;\n\n    if (document.querySelector('[data-banner-video-preview]')) {\n      this.hasPreviewVideo = true;\n      this.videoPreview = document.getElementById('hero-video-preview');\n    }\n\n    this.init();\n  }\n\n  _createClass(BannerVideo, [{\n    key: \"init\",\n    value: function init() {\n      var _this2 = this;\n\n      this.playButton.addEventListener('click', this.handlePlayVideoClick.bind(this), false);\n      this.videoFull.addEventListener('pause', function (event) {\n        if (_this2.hasPreviewVideo) {\n          _this2.bannerContent.hidden = false;\n          _this2.videoOverlay.hidden = false;\n        }\n      });\n      this.videoFull.addEventListener('play', function (event) {\n        if (_this2.hasPreviewVideo) {\n          _this2.bannerContent.hidden = true;\n          _this2.videoOverlay.hidden = true;\n        }\n      });\n    }\n  }, {\n    key: \"handlePlayVideoClick\",\n    value: function handlePlayVideoClick() {\n      this.videoFull.style.display = 'block';\n      this.videoFull.play();\n      this.videoFull.setAttribute('controls', 'controls');\n      this.bannerContent.hidden = true;\n      this.videoOverlay.hidden = true;\n\n      if (this.hasPreviewVideo) {\n        this.videoPreview.style.display = 'none';\n      }\n\n      if (this.bannerImage) {\n        this.bannerImage.style.display = 'none';\n      }\n    }\n  }]);\n\n  return BannerVideo;\n}();\n/**\n *  PDP video script\n *  ------------------------------------------\n *  Responsible for handling videos on PDP's\n */\n\n\nvar PdpVideo = /*#__PURE__*/function () {\n  function PdpVideo(videoWrapper) {\n    _classCallCheck(this, PdpVideo);\n\n    this.pdpVideoWrapper = videoWrapper;\n    this.video = this.pdpVideoWrapper.querySelector('[data-video]');\n    this.controls = this.pdpVideoWrapper.querySelector('[data-video-play]');\n    this.init();\n  }\n\n  _createClass(PdpVideo, [{\n    key: \"init\",\n    value: function init() {\n      var _this3 = this;\n\n      this.pdpVideoWrapper.addEventListener('click', function () {\n        _this3.controlVideo();\n      });\n      this.video.addEventListener('ended', function () {\n        _this3.controlVideo(true);\n      });\n    }\n  }, {\n    key: \"controlVideo\",\n    value: function controlVideo(ended) {\n      var pause = this.pdpVideoWrapper.classList.contains('is-playing');\n\n      if (ended) {\n        this.pdpVideoWrapper.classList.remove('is-playing');\n      } else {\n        if (pause) {\n          this.video.pause();\n          this.pdpVideoWrapper.classList.remove('is-playing');\n        } else {\n          this.video.play();\n          this.pdpVideoWrapper.classList.add('is-playing');\n        }\n      }\n    }\n  }]);\n\n  return PdpVideo;\n}();\n\nvar SCENE_DURATION = 2200;\nvar SCENE_OFFSET = 400;\nvar CATEGORY_ICON_SELECTOR = '.interactive-house__category-icon';\nvar CATEGORY_ICON_LINK_SELECTOR = '.interactive-house__category-icon-link';\nvar TOGGLED_STATE_CLASS = 'toggled-state';\n\nvar InteractiveHouse = /*#__PURE__*/function () {\n  function InteractiveHouse(selector) {\n    _classCallCheck(this, InteractiveHouse);\n\n    this.selector = selector;\n    this.element = document.querySelector(selector);\n    this.scene = null; // Initialize scrollmagic controller\n\n    this.controller = new ScrollMagic.Controller();\n    this.scrollAnimation = new TimelineMax();\n    this.init();\n  }\n\n  _createClass(InteractiveHouse, [{\n    key: \"init\",\n    value: function init() {\n      // Setting scroll animations for the interactive house stage\n      this.setScrollAnimation(); // Building the scene for scrollmagic\n\n      this.buildScene(); // Scrollbar fix for smoother scrolling\n      // const scrollbar = Scrollbar.init(document.querySelector('main'))\n      // scrollbar.addListener(() => {\n      //   this.scene.refresh()\n      // })\n      // Add event listener for product icon clicks (desktop)\n\n      var productIcons = this.element.querySelectorAll('[data-product]');\n\n      var _iterator28 = _createForOfIteratorHelper(productIcons),\n          _step28;\n\n      try {\n        for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {\n          var productIcon = _step28.value;\n          productIcon.addEventListener('click', this.handleProductIconClick.bind(this), false);\n        } // Add event listener for product icon clicks (mobile)\n\n      } catch (err) {\n        _iterator28.e(err);\n      } finally {\n        _iterator28.f();\n      }\n\n      var hotspotIcons = this.element.querySelectorAll('[data-hotspot]');\n\n      var _iterator29 = _createForOfIteratorHelper(hotspotIcons),\n          _step29;\n\n      try {\n        for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {\n          var hotspotIcon = _step29.value;\n          hotspotIcon.addEventListener('click', this.handleHotspotIconClick.bind(this), false);\n        } // Add event listener for nav icon clicks\n        // const navIcons = this.element.querySelectorAll('[data-nav]')\n        // for (const navIcon of navIcons) {\n        //   navIcon.addEventListener('click', this.handleNavIconClick.bind(this), false)\n        // }\n\n      } catch (err) {\n        _iterator29.e(err);\n      } finally {\n        _iterator29.f();\n      }\n    }\n  }, {\n    key: \"setScrollAnimation\",\n    value: function setScrollAnimation() {\n      var _this4 = this;\n\n      this.scrollAnimation.set('.interactive-house__stage', {\n        autoAlpha: 1\n      }).to('[data-interactive-house-empty]', 1, {\n        autoAlpha: 1,\n        ease: Power1.easeInOut,\n        delay: 0.5,\n        onReverseComplete: function onReverseComplete() {\n          return _this4.hideAllProductThumbnails();\n        },\n        onComplete: function onComplete() {\n          _this4.hideAllProductThumbnails();\n        }\n      }, 'trans1').to('[data-interactive-house-text-intro]', 0, {\n        autoAlpha: 1,\n        ease: Power1.easeInOut,\n        delay: 0.5\n      }, 'trans1').to('[data-interactive-house-empty]', 1, {\n        autoAlpha: 1,\n        ease: Power1.easeInOut\n      }, 'trans2').to('[data-interactive-house-doorbells]', 1, {\n        autoAlpha: 1,\n        ease: Power1.easeInOut,\n        delay: 0.3,\n        onReverseComplete: function onReverseComplete() {\n          return _this4.hideAllProductThumbnails();\n        },\n        onComplete: function onComplete() {\n          _this4.hideAllProductThumbnails();\n        }\n      }, 'trans2').from('[data-interactive-house-text-intro]', 0.5, {\n        opacity: 1,\n        yPercent: 0\n      }, 'trans2').to('[data-interactive-house-text-intro]', 0.5, {\n        opacity: 0,\n        yPercent: -10,\n        ease: Power1.easeInOut\n      }, 'trans2').fromTo('[data-interactive-house-text-doorbells]', 0.5, {\n        opacity: 0,\n        yPercent: 10\n      }, {\n        opacity: 1,\n        yPercent: 0,\n        ease: Power1.easeInOut,\n        delay: 0.4,\n        onReverseComplete: function onReverseComplete() {\n          return _this4.toggleNavItem('intro');\n        },\n        onComplete: function onComplete() {\n          return _this4.toggleNavItem('doorbells');\n        }\n      }, 'trans2').to('[data-interactive-house-doorbells]', 1, {\n        autoAlpha: 0,\n        ease: Power1.easeInOut,\n        onComplete: function onComplete() {\n          return _this4.hideAllProductThumbnails();\n        }\n      }, 'trans3').to('[data-interactive-house-security-cams]', 1, {\n        autoAlpha: 1,\n        ease: Power1.easeInOut,\n        delay: 0.3,\n        onReverseComplete: function onReverseComplete() {\n          return _this4.hideAllProductThumbnails();\n        },\n        onComplete: function onComplete() {\n          return _this4.hideAllProductThumbnails();\n        }\n      }, 'trans3').to('[data-interactive-house-text-doorbells]', 0.5, {\n        autoAlpha: 0,\n        yPercent: -10,\n        ease: Power1.easeInOut\n      }, 'trans3').fromTo('[data-interactive-house-text-security-cams]', 0.5, {\n        opacity: 0,\n        yPercent: 10\n      }, {\n        opacity: 1,\n        yPercent: 0,\n        ease: Power1.easeInOut,\n        delay: 0.4,\n        onReverseComplete: function onReverseComplete() {\n          return _this4.toggleNavItem('doorbells');\n        },\n        onComplete: function onComplete() {\n          return _this4.toggleNavItem('security-cams');\n        }\n      }, 'trans3').to('[data-interactive-house-security-cams]', 1, {\n        autoAlpha: 0,\n        ease: Power1.easeInOut\n      }, 'trans4').to('[data-interactive-house-security-system]', 1, {\n        autoAlpha: 1,\n        ease: Power1.easeInOut,\n        delay: 0.3,\n        onReverseComplete: function onReverseComplete() {\n          return _this4.hideAllProductThumbnails();\n        },\n        onComplete: function onComplete() {\n          return _this4.hideAllProductThumbnails();\n        }\n      }, 'trans4').to('[data-interactive-house-text-security-cams]', 0.5, {\n        autoAlpha: 0,\n        yPercent: -10,\n        ease: Power1.easeInOut\n      }, 'trans4').fromTo('[data-interactive-house-text-security-system]', 0.5, {\n        opacity: 0,\n        yPercent: 10\n      }, {\n        opacity: 1,\n        yPercent: 0,\n        ease: Power1.easeInOut,\n        delay: 0.4,\n        onReverseComplete: function onReverseComplete() {\n          return _this4.toggleNavItem('security-cams');\n        },\n        onComplete: function onComplete() {\n          return _this4.toggleNavItem('security-system');\n        }\n      }, 'trans4');\n      this.scrollAnimation.eventCallback('onComplete', function () {\n        // Hide thumbnails popups\n        var _iterator30 = _createForOfIteratorHelper(_this4.element.querySelectorAll('[data-interactive-house-product-thumbnail]')),\n            _step30;\n\n        try {\n          for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {\n            var thumbnail = _step30.value;\n            thumbnail.hidden = true;\n          } // scene.removePin(true);\n          // window.scrollBy(0, -1750); \n\n        } catch (err) {\n          _iterator30.e(err);\n        } finally {\n          _iterator30.f();\n        }\n      });\n    }\n  }, {\n    key: \"buildScene\",\n    value: function buildScene() {\n      this.scene = new ScrollMagic.Scene({\n        triggerElement: this.selector,\n        duration: SCENE_DURATION\n      }).setPin('.interactive-house__stage').addTo(this.controller).setTween(this.scrollAnimation);\n      this.scene.offset(SCENE_OFFSET);\n      this.toggleNavItem('intro'); // change behaviour of controller to animate scroll instead of jump\n\n      this.controller.scrollTo(function (newpos) {\n        TweenMax.to(window, 0.5, {\n          scrollTo: {\n            y: newpos\n          }\n        });\n      }); // Callbacks per scene (for active state in nav bullets)\n      // new ScrollMagic.Scene({\n      //     triggerElement: \"[data-interactive-house-doorbells]\"\n      //   })\n      //   .setClassToggle('[data-nav=\"doorbells\"]', \"active\")\n      //   .addTo(this.controller);\n      // new ScrollMagic.Scene({\n      //     triggerElement: \"[data-interactive-house-security-cams]\"\n      //   })\n      //   .setClassToggle('[data-nav=\"security-cams\"]', \"active\")\n      //   .addTo(this.controller);\n      // new ScrollMagic.Scene({\n      //     triggerElement: \"[data-interactive-house-security-system]\"\n      //   })\n      //   .setClassToggle('[data-nav=\"security-systems\"]', \"active\")\n      //   .addTo(this.controller);\n    }\n  }, {\n    key: \"handleProductIconClick\",\n    value: function handleProductIconClick(event) {\n      event.preventDefault(); // Get closest a element (should the image be clicked and not the a)\n\n      var linkEl = event.target.closest(CATEGORY_ICON_LINK_SELECTOR); // Get the data-product-id from linkEl attr\n\n      var productId = linkEl.dataset.product;\n      if (!productId) return;\n      this.showHideProductThumbnail(productId, linkEl, event);\n    }\n  }, {\n    key: \"handleHotspotIconClick\",\n    value: function handleHotspotIconClick(event) {\n      // Get closest a element (should the image be clicked and not the a)\n      var linkEl = event.target.closest('[data-hotspot]'); // Get the data-product-id from linkEl attr\n\n      var productId = linkEl.dataset.hotspot;\n      if (!productId) return;\n      this.showHideProductThumbnail(productId, linkEl, event, 'mobile');\n    } // handleNavIconClick(event) {\n    //   event.preventDefault()\n    //   // Get closest a element (should the image be clicked and not the a)\n    //   const linkEl = event.target.closest('[data-nav]')\n    //   this.controller.scrollTo(`#scroll-${linkEl.dataset.nav}`)\n    //   console.log('123',linkEl.dataset.nav)\n    //   console.log('234', this.element.querySelector(`[data-interactive-house-${linkEl.dataset.nav}]`))\n    // }\n\n  }, {\n    key: \"showHideProductThumbnail\",\n    value: function showHideProductThumbnail(productId, linkEl, event) {\n      var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'desktop';\n\n      // Hide all other product thumbnails \n      var _iterator31 = _createForOfIteratorHelper(this.element.querySelectorAll('[data-interactive-house-product-thumbnail]')),\n          _step31;\n\n      try {\n        for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {\n          var thumbnail = _step31.value;\n\n          if (thumbnail.dataset.interactiveHouseProductThumbnail !== productId) {\n            thumbnail.hidden = true;\n          }\n        } // De-toggle states for all product icons\n        // Add a toggle-state class on product icon for styling purposes\n\n      } catch (err) {\n        _iterator31.e(err);\n      } finally {\n        _iterator31.f();\n      }\n\n      var iconEl = linkEl.parentElement.querySelector(CATEGORY_ICON_SELECTOR);\n      var deselectProduct = false;\n\n      if (iconEl) {\n        if (iconEl.classList.contains(TOGGLED_STATE_CLASS)) {\n          deselectProduct = true;\n        } else {\n          var _iterator32 = _createForOfIteratorHelper(this.element.querySelectorAll(CATEGORY_ICON_SELECTOR)),\n              _step32;\n\n          try {\n            for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) {\n              var productIcon = _step32.value;\n\n              if (productIcon.dataset.product !== productId) {\n                productIcon.classList.remove(TOGGLED_STATE_CLASS);\n              }\n            }\n          } catch (err) {\n            _iterator32.e(err);\n          } finally {\n            _iterator32.f();\n          }\n        }\n\n        iconEl.classList.toggle(TOGGLED_STATE_CLASS);\n      } // Find related product thumbnail element\n\n\n      var productThumbnail = this.element.querySelector(\"[data-interactive-house-product-thumbnail=\\\"\".concat(productId, \"\\\"]\"));\n      if (!productThumbnail) return; // Show or hide the thumbnail\n\n      productThumbnail.hidden = !productThumbnail.hidden; // No need to execute rest of the code when hiding productThumbnail\n\n      if (productThumbnail.hidden === true) return; // Get viewport width\n\n      var viewportWidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0); // Set client cursor x pos\n\n      var cursorXPos = event.clientX; // Update position absolute left/right/top values for product thumbnail based on event cursor click, different for desktop/mobile\n\n      if (type == 'desktop') {\n        if (typeof productThumbnail.dataset.thumbnailAlignedLeft !== 'undefined') {\n          cursorXPos = cursorXPos - productThumbnail.offsetWidth * 1.32;\n        }\n\n        if (viewportWidth > 1600) {\n          cursorXPos = cursorXPos - (viewportWidth - 1600) / 2;\n        }\n\n        var heightDivider = typeof productThumbnail.dataset.heightDivider !== 'undefined' ? productThumbnail.dataset.heightDivider : 2.7;\n        productThumbnail.style.left = \"\".concat(cursorXPos, \"px\");\n        productThumbnail.style.top = \"\".concat(event.clientY / heightDivider, \"px\");\n      } else if (type == 'mobile') {\n        cursorXPos = cursorXPos - productThumbnail.offsetWidth / 2; // Make sure the product thumbnail does not go outside the screen\n\n        if (cursorXPos + productThumbnail.offsetWidth > viewportWidth) {\n          cursorXPos = viewportWidth - 195;\n        } // Get distance of stage wrapper in browser window for correct product thumbnail top placement\n\n\n        var distanceReduce = 0;\n        var wrapperEl = document.querySelector('.interactive-house__sketch');\n\n        if (wrapperEl) {\n          var rect = wrapperEl.getBoundingClientRect();\n\n          if (rect.top) {\n            distanceReduce += rect.top - 15; // minus 15 for some icon spacing\n          }\n        }\n\n        productThumbnail.style.left = \"\".concat(cursorXPos, \"px\");\n        productThumbnail.style.top = \"\".concat(event.clientY - distanceReduce, \"px\");\n      }\n    } // Hide product thumbnails \n\n  }, {\n    key: \"hideAllProductThumbnails\",\n    value: function hideAllProductThumbnails() {\n      var _iterator33 = _createForOfIteratorHelper(this.element.querySelectorAll('[data-interactive-house-product-thumbnail]')),\n          _step33;\n\n      try {\n        for (_iterator33.s(); !(_step33 = _iterator33.n()).done;) {\n          var thumbnail = _step33.value;\n          thumbnail.hidden = true;\n        } // De-toggle states for all product icons\n\n      } catch (err) {\n        _iterator33.e(err);\n      } finally {\n        _iterator33.f();\n      }\n\n      var _iterator34 = _createForOfIteratorHelper(this.element.querySelectorAll(CATEGORY_ICON_SELECTOR)),\n          _step34;\n\n      try {\n        for (_iterator34.s(); !(_step34 = _iterator34.n()).done;) {\n          var productIcon = _step34.value;\n          productIcon.classList.remove(TOGGLED_STATE_CLASS);\n        }\n      } catch (err) {\n        _iterator34.e(err);\n      } finally {\n        _iterator34.f();\n      }\n    } // Toggle nav item based on name of section\n\n  }, {\n    key: \"toggleNavItem\",\n    value: function toggleNavItem(name) {\n      if (name === null || typeof this.element.querySelector(\"[data-nav-wrapper] [data-nav=\\\"\".concat(name, \"\\\"]\")) === 'undefined') {\n        return;\n      }\n\n      var navItems = this.element.querySelectorAll('[data-nav-wrapper] [data-nav]');\n\n      var _iterator35 = _createForOfIteratorHelper(navItems),\n          _step35;\n\n      try {\n        for (_iterator35.s(); !(_step35 = _iterator35.n()).done;) {\n          var navItem = _step35.value;\n          navItem.classList.remove('active');\n        }\n      } catch (err) {\n        _iterator35.e(err);\n      } finally {\n        _iterator35.f();\n      }\n\n      if (name !== null && typeof this.element.querySelector(\"[data-nav-wrapper] [data-nav=\\\"\".concat(name, \"\\\"]\")) !== 'undefined') {\n        this.element.querySelector(\"[data-nav-wrapper] [data-nav=\\\"\".concat(name, \"\\\"]\")).classList.add('active');\n      }\n    }\n  }]);\n\n  return InteractiveHouse;\n}();\n/**\n *  Sticky nav script\n *  ------------------------------------------\n *  Responsible for handling sticky navigation on sticky-nav.liquid\n * \n *  Note: Contains code related to the sticky filters feature on the Offers page. \n *  To avoid future conflicts, refactoring is needed to extract sticky filters into a standalone feature, independent of sticky nav. \n */\n\n\nvar ANCHOR_ACTIVE_CLASS = 'active';\nvar MOBILE_NAV_OPEN_CLASS = 'sticky-nav__mobile-nav-opened';\nvar TABLET_BREAKPOINT = 768;\n\nvar StickyNav = /*#__PURE__*/function () {\n  function StickyNav() {\n    _classCallCheck(this, StickyNav);\n\n    this.headerOffsetPx = -150; // Default offset from header menu\n\n    this.stickyNavWrapper = document.querySelector('[data-sticky-nav]');\n    this.stickyNavItems = document.querySelector('[data-sticky-nav-items]');\n    this.stickyFilters = document.querySelector('[data-sticky-filters]'); // Offers page sticky filters\n\n    this.toggleMobileNav = document.querySelector('[data-toggle-mobile-nav]');\n    this.pageWrapper = document.querySelector('.page-wrapper');\n    this.viewportWidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\n    this.init();\n  }\n\n  _createClass(StickyNav, [{\n    key: \"init\",\n    value: function init() {\n      var _this5 = this;\n\n      if (typeof this.stickyNavWrapper === 'undefined') return; // Add class to .page-wrapper\n\n      this.pageWrapper.classList.add('with-sticky-nav'); // Check for announcement bar (announcebar only shows on top on desktop)\n\n      if (this.viewportWidth >= TABLET_BREAKPOINT && document.querySelector('#announcement-bar')) {\n        this.headerOffsetPx -= 50;\n      } // Offers page sticky filters - account for header offset\n\n\n      if (this.viewportWidth >= TABLET_BREAKPOINT && document.querySelector('.sticky-filters')) {\n        this.headerOffsetPx -= 40;\n      } // Activate anchor when scrolling through page\n\n\n      window.addEventListener('scroll', this.handleWindowScroll.bind(this), false); // Loop through all anchor links in sticky nav and add click event listener\n\n      this.stickyNavWrapper.querySelectorAll('a[href^=\"#\"]').forEach(function (anchor) {\n        anchor.addEventListener('click', _this5.handleAnchorClick.bind(_this5), false);\n      }); // Do not run if in the context of sticky filters\n\n      if (this.toggleMobileNav != undefined) {\n        // Toggle mobile nav dropdown\n        this.toggleMobileNav.addEventListener('click', this.handleToggleMobileNav.bind(this), false);\n      }\n    }\n  }, {\n    key: \"handleWindowScroll\",\n    value: function handleWindowScroll(e) {\n      var _this6 = this;\n\n      this.stickyNavWrapper.querySelectorAll('a[href^=\"#\"]').forEach(function (anchor) {\n        var element = document.getElementById(anchor.href.split('#')[1]);\n        if (element === null) return;\n\n        var elTopPos = element.getBoundingClientRect().top + window.pageYOffset + _this6.headerOffsetPx;\n\n        var elBottomBos = element.getBoundingClientRect().bottom + window.pageYOffset + _this6.headerOffsetPx; // Check if the window scroll is currently in the anchored block range - then add active class\n\n\n        if (window.pageYOffset >= elTopPos + _this6.headerOffsetPx && window.pageYOffset <= elBottomBos) {\n          // Offers page sticky filters - horizontally scroll active filter into view\n          if (document.querySelector('.sticky-filters')) {\n            _this6.stickyFilters.scrollLeft = anchor.closest('li').offsetLeft - 32;\n            $(anchor).parents('li').siblings().children('a').removeClass('active');\n          }\n\n          anchor.classList.add(ANCHOR_ACTIVE_CLASS);\n        } else if (anchor.classList.contains(ANCHOR_ACTIVE_CLASS)) {\n          anchor.classList.remove(ANCHOR_ACTIVE_CLASS);\n        }\n      });\n    }\n  }, {\n    key: \"handleAnchorClick\",\n    value: function handleAnchorClick(e) {\n      var _this7 = this;\n\n      e.preventDefault();\n      var anchor = e.target;\n      var offsetPx = this.headerOffsetPx; // Adjust for smaller screens\n\n      if (this.viewportWidth < TABLET_BREAKPOINT) {\n        if (this.stickyFilters != 'undefined') {\n          offsetPx = -170; // for sticky filters\n        } else {\n          offsetPx = -130;\n        }\n      }\n\n      var element = document.getElementById(anchor.href.split('#')[1]);\n      var yAxisOffset = element.getBoundingClientRect().top + window.pageYOffset + offsetPx;\n      window.scrollTo({\n        top: yAxisOffset,\n        behavior: 'smooth'\n      }); // Remove active classes from all links\n\n      this.stickyNavWrapper.querySelectorAll('a[href^=\"#\"]').forEach(function (anchor) {\n        anchor.classList.remove(ANCHOR_ACTIVE_CLASS); // also for sticky filters \n\n        if (_this7.stickyFilters != 'undefined') {\n          $(anchor).parents('li').siblings().children('a').removeClass('active');\n        }\n      });\n\n      if (this.viewportWidth < TABLET_BREAKPOINT) {\n        // Toggle dropdown nav state\n        this.toggleMobileNavDropdown();\n      } // Set active class to clicked anchor\n\n\n      anchor.classList.add(ANCHOR_ACTIVE_CLASS); // handle sticky filter horizontal scroll and active anchor\n\n      if (this.stickyFilters != 'undefined') {\n        this.stickyFilters.scrollLeft = anchor.closest('li').offsetLeft - 32;\n        $(anchor).parents('li').siblings().children('a').removeClass('active');\n      }\n    }\n  }, {\n    key: \"handleToggleMobileNav\",\n    value: function handleToggleMobileNav(e) {\n      this.toggleMobileNavDropdown();\n    }\n  }, {\n    key: \"toggleMobileNavDropdown\",\n    value: function toggleMobileNavDropdown() {\n      // do not run for sticky filters section\n      if (this.toggleMobileNav != undefined) {\n        // Toggle opened class\n        this.toggleMobileNav.classList.toggle(MOBILE_NAV_OPEN_CLASS); // Show or hide sticky nav items dropdown\n\n        this.stickyNavItems.style.display = window.getComputedStyle(this.stickyNavItems).display === 'block' ? 'none' : 'block';\n      }\n    }\n  }]);\n\n  return StickyNav;\n}();\n\nvar countdownTimer = /*#__PURE__*/function () {\n  function countdownTimer() {\n    _classCallCheck(this, countdownTimer);\n\n    this.countdownBar = document.querySelector('.announcement-bar__countdown-timer');\n    this.clockWrapper = document.querySelector('.countdown-timer__clock');\n    this.countdownEndDate = this.clockWrapper.getAttribute('data-countdown-end-date');\n    this.countdownShowDays = this.clockWrapper.getAttribute('data-display-days');\n    this.init();\n  }\n\n  _createClass(countdownTimer, [{\n    key: \"init\",\n    value: function init() {\n      // Display Days\n      var showDays = this.countdownShowDays; // Declare the UI elements\n\n      var dayBoxOne = document.getElementById('day-1');\n      var dayBoxTwo = document.getElementById('day-2');\n      var hourBoxOne = document.getElementById('hour-1');\n      var hourBoxTwo = document.getElementById('hour-2');\n      var minuteBoxOne = document.getElementById('minute-1');\n      var minuteBoxTwo = document.getElementById('minute-2');\n      var secondBoxOne = document.getElementById('second-1');\n      var secondBoxTwo = document.getElementById('second-2');\n      var counterBoxes = [dayBoxOne, dayBoxTwo, hourBoxOne, hourBoxTwo, minuteBoxOne, minuteBoxTwo, secondBoxOne, secondBoxTwo]; //Convert date for iOS\n\n      function convertDateForIos(date) {\n        date = date.replace(/ /g, \"T\");\n        date = new Date(date).getTime();\n        return date;\n      } // Get countdown end date\n\n\n      var endDate = this.countdownEndDate; // Get Countdown End timestamp\n\n      var endTimestamp = convertDateForIos(endDate); // Get store timezone\n\n      var shopTimezone = '';\n\n      if (window.location.hostname.indexOf('en-uk') > -1) {\n        shopTimezone = 'Europe/London';\n      } else {\n        shopTimezone = 'Europe/Berlin';\n      } // Calculations for time\n\n\n      var _second = 1000,\n          _minute = _second * 60,\n          _hour = _minute * 60,\n          _day = _hour * 24; // Add leading zero when the number goeas into single digits\n\n\n      var addLeadingZeros = function addLeadingZeros(number) {\n        return number < 10 ? \"0\" + number : number;\n      }; // Run countdown timer\n\n\n      var timer = setInterval(function updateTimer() {\n        // Lock the timezone and get a timestamp of the users time\n        var timezoneLockedNowDate = new Date().toLocaleString('en-US', {\n          timeZone: shopTimezone\n        });\n        var formattedNowDate = new Date(timezoneLockedNowDate);\n        var nowTimestamp = formattedNowDate.getTime(); // Calculate time remaining\n\n        var timeLeft = endTimestamp - nowTimestamp; // Break loop and set counters to 0 when countdown ends\n\n        if (timeLeft < 0) {\n          clearInterval(timer);\n          counterBoxes.forEach(function (element) {\n            element.innerHTML = \"0\";\n          });\n          return;\n        } // If displaying days\n\n\n        if (showDays == 'true') {\n          var days = Math.floor(timeLeft / _day);\n          days = addLeadingZeros(days);\n          var split_days = (days + \"\").split('');\n          dayBoxOne.innerHTML = split_days[0];\n          dayBoxTwo.innerHTML = split_days[1];\n\n          var hours = Math.floor(timeLeft % _day) / _hour; // if displaying days set limit on hour counter to 24\n\n        } else {\n          var hours = Math.floor(timeLeft / _hour); // otherwise output total hours remaining - the countdown should not be longer than 4 days (96h) \n        } // Timer calculations\n\n\n        hours = addLeadingZeros(hours);\n        var minutes = Math.floor(timeLeft % _hour / _minute);\n        minutes = addLeadingZeros(minutes);\n        var seconds = Math.floor(timeLeft % _minute / _second);\n        seconds = addLeadingZeros(seconds); // Split digits to be displayed seperately\n\n        var split_hours = (hours + \"\").split('');\n        var split_minutes = (minutes + \"\").split('');\n        var split_seconds = (seconds + \"\").split(''); // Update UI\n\n        hourBoxOne.innerHTML = split_hours[0];\n        hourBoxTwo.innerHTML = split_hours[1];\n        minuteBoxOne.innerHTML = split_minutes[0];\n        minuteBoxTwo.innerHTML = split_minutes[1];\n        secondBoxOne.innerHTML = split_seconds[0];\n        secondBoxTwo.innerHTML = split_seconds[1]; //Repeat\n\n        return updateTimer;\n      }(), 1000);\n    }\n  }]);\n\n  return countdownTimer;\n}();\n/**\n * EEC-2003 - PDP Sticky ATC/Scroll Navigation A/B test\n \nconst body = document.body;\nconst pdpNavTestActive = \"optimizely-test-pdp-nav\";\nconst header = document.getElementById(\"header\");\nconst announcementBar = document.getElementById(\"announcement-bar\");\nconst scrollUp = \"scroll-up\";\nconst scrollDown = \"scroll-down\";\nlet lastScroll = 0;\nconst stickyAtcBar = document.querySelector(\".sticky-atc-bar\");\nconst atfContainer = document.querySelector(\".product-detail-section\");\nconst stickyAtcBarID = document.getElementById('sticky-atc-bar');\n\nwindow.addEventListener(\"scroll\", () => {\n\n  // Hotfix for duplication of atc events through sticky nav\n  if (!body.classList.contains(pdpNavTestActive)) {\n    stickyAtcBarID.remove();\n  }\n\n  // SCROLL NAV\n  var currentScroll = window.scrollY;\n  //Top of viewport\n  if (currentScroll <= 66) {\n    body.classList.remove(scrollUp);\n    return;\n  }\n  if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\n    // user scrolls down\n    body.classList.remove(scrollUp);\n    body.classList.add(scrollDown);\n  } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {\n    // user scrolls up\n    body.classList.remove(scrollDown);\n    body.classList.add(scrollUp);\n  }\n  // set new scroll position\n  lastScroll = window.scrollY;\n\n  if (body.classList.contains(pdpNavTestActive)){\n    // STICKY ATC BAR\n    var barHeight = document.querySelector(\".sticky-atc-bar\").offsetHeight;\n    // Display bottom bar when user scrolls down\n    if (atfContainer.getBoundingClientRect().y < -500) {\n      stickyAtcBar.classList.add(\"sticky-bar-active\");\n      document.getElementById('solvvy-widget-iframe').style.bottom = `${barHeight}px`;\n    } else {\n      stickyAtcBar.classList.remove(\"sticky-bar-active\");\n      document.getElementById('solvvy-widget-iframe').style.bottom = 0;\n    }\n  }\n  \n});\n\n*/\n\n/****************************************************************\n * CODE init\n ****************************************************************/\n\n\n$.code.init = function () {\n  // Disable scroll to when url hash is supplied\n  if (window.location.hash) {\n    scroll(0, 0); // void some browsers issue\n\n    setTimeout(function () {\n      scroll(0, 0);\n    }, 1);\n  } // Set debugging flag\n\n\n  $.code.debug = false; // Set global variables\n\n  $.code.setVars(); // Handle window resizing\n\n  $.code.windowResizeHandler();\n  /**\n   * init plugins\n   */\n  // Init ajax cart\n\n  $('body').ajaxCart(); // Init Swipers\n\n  $('[data-swiper]').swiperLoader(); // Init product events\n\n  $('[data-section-type=\"product\"]').product(); // Init collapsible panes\n\n  $('[data-collapsible-wrapper]').collapsible(); // Init media + accordion sync (needs swiperLoader and collapsible above)\n\n  $('[data-media-accordion]').mediaAccordion(); // Init enhanced search\n\n  $('[data-enhanced-search]').enhancedSearch(); // Init collection navigation\n\n  $('body').collectionNav(); // Init Ajax pagination\n\n  $('[data-ajax-pagination]').ajaxPagination(); // Init class togglers\n\n  $('[data-toggle-element-class]').toggleElementClass(); // Init related products\n\n  $('[data-related-products]').relatedProducts(); // Init tabs\n\n  $('[data-tabs]').tabs(); // Init country popup\n\n  $('body').countryPopup(); // Init collection/all Filters\n\n  $('[data-colection-filter-wrapper]').collectionFilter(); // Init swiper with tabs\n\n  $('[data-swiper-tabs]').swiperTabsLoader(); // Init compare\n\n  $('[data-compare-page=\"wrapper\"]').compare(); // Init announcement bar countdown timer\n\n  if (document.querySelector('[data-countdown-timer]')) {\n    new countdownTimer();\n  } // Init new compare charts\n\n\n  if (document.querySelector('[data-compare-charts]')) {\n    new CompareChart();\n  } // Generic video component\n\n\n  var _iterator36 = _createForOfIteratorHelper(document.querySelectorAll('[data-video-element]')),\n      _step36;\n\n  try {\n    for (_iterator36.s(); !(_step36 = _iterator36.n()).done;) {\n      var videoEl = _step36.value;\n      new VideoBlock(videoEl);\n    } // Init homepage interactive house scroller\n\n  } catch (err) {\n    _iterator36.e(err);\n  } finally {\n    _iterator36.f();\n  }\n\n  if (document.querySelector('[data-interactive-house-scroller]')) {\n    new InteractiveHouse('#interactive-house-scroller');\n  } // Init sticky nav\n\n\n  if (document.querySelector('[data-sticky-nav]')) {\n    new StickyNav();\n  } // Init banner video\n\n\n  if (document.querySelector('[data-banner-video-high-res]')) {\n    new BannerVideo();\n  }\n\n  var _iterator37 = _createForOfIteratorHelper(document.querySelectorAll('[data-video-wrapper]')),\n      _step37;\n\n  try {\n    for (_iterator37.s(); !(_step37 = _iterator37.n()).done;) {\n      var pdpVideoEl = _step37.value;\n      new PdpVideo(pdpVideoEl);\n    } // Scroll to element on page load\n\n  } catch (err) {\n    _iterator37.e(err);\n  } finally {\n    _iterator37.f();\n  }\n\n  var $scrollEl = $('[data-scroll-here]');\n\n  if ($scrollEl.length) {\n    $('html, body').animate({\n      scrollTop: $scrollEl.offset().top\n    }, 1000);\n  } // Scroll to window location hash if provided\n\n\n  if (window.location.hash) {\n    setTimeout(function () {\n      $('html, body').animate({\n        scrollTop: $(window.location.hash).offset().top + 'px'\n      }, 500, 'swing');\n    }, 200);\n  } // Scroll smoothly to div id when anchor is clicked\n  // Do not use this for sticky nav component ([data-sticky-anchor])\n\n\n  $('a[href*=\\\\#]:not([data-sticky-anchor]):not([data-kit-nostock-amazon-link])').on('click', function (e) {\n    e.preventDefault();\n    $('html,body').animate({\n      scrollTop: $(this.hash).offset().top\n    }, 500, 'swing'); // update the URL in location bar\n\n    if ($.attr(this, 'href').length) {\n      window.location.hash = $.attr(this, 'href').substring($.attr(this, 'href').indexOf(\"#\") + 1);\n    }\n  }); // Execute alarm block\n\n  alarmBlock();\n};\n/**\n * Quiz section on PMP\n */\n\n\n$('.pmp-quiz .quiz-button').click(function () {\n  var quizans = $(this).attr('data-quiz-ans');\n  $('.pmp-quiz-main').removeClass('active');\n  $('.pmp-quiz').find('[data-quiz-id=\"' + quizans + '\"]').addClass('active');\n});\n/**\n * Interactive houses on PMP\n */\n\n$('[data-interactive-icon]').click(function () {\n  $(this).closest('.products-wrapper').find('.product').removeClass('active');\n  $(this).addClass('active');\n  var interactiveProduct = $(this).attr('data-interactive-icon');\n  $(this).closest('.interactive-house-section').find('.product-overlay').removeClass('active');\n  $(this).closest('.interactive-house-section').find('.product-overlay[data-interactive-product=\"' + interactiveProduct + '\"]').addClass('active');\n});\n/********** Interactive Banners **********/\n\nvar shopAllInteractiveBannerBackground = $('#shop-all-interactive-banner-bg');\nvar shopAllInteractiveBannerContent = $('.pmp-banner-collections .interactive-banner-content');\nvar homeInteractiveBannerBackground = $('.interactive-banner-hp-bg-mobile, .interactive-video-banner-bg');\nvar homeInteractiveBannerContent = $('.pmp-banner-homepage .interactive-banner-content');\nvar interactiveBannerTouchpoints = $('.interactive-touchpoint'); // Interactive touchpoint fade-in sequence\n\nfunction touchpointFadeInSequence(icon, delay) {\n  setTimeout(function () {\n    $(icon).each(function (i) {\n      (function (self) {\n        setTimeout(function () {\n          $(self).show();\n        }, i * 150);\n      })(this);\n    });\n  }, delay);\n}\n\n; // Shop All Products page interactive banner\n\n$('[data-interactive-banner-icon]').click(function () {\n  var interactiveProduct = $(this).attr('data-interactive-banner-icon');\n  var interactivePopup = $('.product-overlay[data-interactive-banner-product=\"' + interactiveProduct + '\"]');\n  $(interactivePopup).show().removeClass('not-active').addClass('active');\n  $(interactiveBannerTouchpoints).hide();\n  $('.interactive-banner').addClass('active-state');\n\n  if ($(window).width() > 1024) {\n    $(shopAllInteractiveBannerBackground).removeClass();\n    $(shopAllInteractiveBannerBackground).addClass('zoom-' + interactiveProduct);\n    $(shopAllInteractiveBannerContent).fadeOut(300);\n  } else {\n    $(shopAllInteractiveBannerBackground).addClass('darken');\n  }\n}); // Homepage interactive banner\n\n$('[data-interactive-banner-hp-icon]').click(function () {\n  var interactiveProductHome = $(this).attr('data-interactive-banner-hp-icon');\n  var interactivePopupHome = $('.product-overlay[data-interactive-banner-hp-product=\"' + interactiveProductHome + '\"]');\n  $(interactivePopupHome).show().removeClass('not-active').addClass('active');\n  $('.interactive-banner').addClass('active-state');\n\n  if ($(window).width() < 1024) {\n    $(homeInteractiveBannerBackground).addClass('darken');\n    $(interactiveBannerTouchpoints).fadeOut(300);\n  } else if ($(window).width() < 1300) {\n    $(interactiveBannerTouchpoints).fadeOut(400);\n    $(homeInteractiveBannerContent).fadeOut(300);\n  } else {\n    $(interactiveBannerTouchpoints).fadeOut(400);\n  }\n}); // Close popup and return to initial  state\n\nfunction closeInteractiveBannerPopup(i, p) {\n  $(p).removeClass('active').addClass('not-active');\n  setTimeout(function () {\n    $(p).removeClass('not-active').hide();\n  }, 1000);\n\n  if ($(window).width() > 1024) {\n    $(homeInteractiveBannerContent).delay(200).fadeIn(500);\n    $(shopAllInteractiveBannerBackground).removeClass('zoom-' + i).addClass('zoom-out');\n    $(shopAllInteractiveBannerContent).delay(500).fadeIn(500);\n    touchpointFadeInSequence($('.active-state [data-interactive-banner-icon]'), 650);\n    touchpointFadeInSequence($('.active-state [data-interactive-banner-hp-icon]'), 200);\n  } else {\n    $(shopAllInteractiveBannerBackground).removeClass('darken');\n    $(homeInteractiveBannerBackground).removeClass('darken');\n    touchpointFadeInSequence($('.active-state [data-interactive-banner-icon]'), 250);\n    touchpointFadeInSequence($('.active-state [data-interactive-banner-hp-icon]'), 300);\n  }\n\n  $('.interactive-banner').removeClass('active-state');\n} // Close popup when clicking cross icon\n\n\n$('.icon-close-interactive-popup').click(function () {\n  var activeProduct = $('.product-overlay.active').attr('data-interactive-banner-product');\n  var activePopup = $('.product-overlay.active');\n  closeInteractiveBannerPopup(activeProduct, activePopup);\n}); // Close popup when clicking outside of it\n\n$([homeInteractiveBannerBackground, shopAllInteractiveBannerBackground]).each(function () {\n  $(this).mouseup(function (e) {\n    var activeProduct = $('.product-overlay.active').attr('data-interactive-banner-product');\n    var activePopup = $('.product-overlay.active');\n\n    if (!activePopup.is(e.target) && activePopup.has(e.target).length === 0) {\n      closeInteractiveBannerPopup(activeProduct, activePopup);\n    }\n  });\n});\n/************** Security Around Home ***************/\n\n$('.security-icon').click(function () {\n  var category = $(this).attr('data-id');\n  var active_img = $(this).attr('active-img');\n  var inactive_img = $('.security-icon.active').attr('inactive-img');\n  var img_inactive_class_name = \".img-overlay-\" + $('.security-icon.active').attr('data-id');\n  $('.security-icon.active').find('.img').css({\n    backgroundImage: 'url(' + inactive_img + ')'\n  });\n  $('.security-icon').removeClass('active');\n  $('.security-icons').find('[data-id=\"' + category + '\"]').addClass('active');\n  $('.security-icons').find('[data-id=\"' + category + '\"]').find('.img').css({\n    backgroundImage: 'url(' + active_img + ')'\n  });\n  $(img_inactive_class_name).removeClass('active');\n  $('.security-around-home').find('[data-id=\"' + category + '\"]').addClass('active');\n});\n/**\n * Video play - PMP video on mobile\n */\n\n$('.play-btn').click(function (e) {\n  var video_block = $(e.target).closest('.video-in-iphone');\n  var vid = video_block.find('video');\n  vid.get()[0].play();\n  $(e.target).hide();\n  l;\n});\n$('.video-in-iphone.mobile #video').click(function (e) {\n  $(this).get(0).pause();\n  $(this).siblings('.play-btn').children('.icon-play').show();\n});\n/** \n * PDP Recommendation cards slider\n */\n\nfunction initRecommendationsSlider() {\n  // Swiper data\n  var mySwiper = new Swiper('.recommendations-slider', {\n    loop: false,\n    init: true,\n    centerInsufficientSlides: true,\n    observer: true,\n    speed: 400,\n    slidesPerView: 4,\n    slidesPerGroup: 4,\n    spaceBetween: 30,\n    breakpoints: {\n      1024: {\n        slidesPerGroup: 3,\n        slidesPerView: 3\n      },\n      767: {\n        slidesPerGroup: 2,\n        slidesPerView: 2\n      },\n      560: {\n        slidesPerGroup: 1,\n        slidesPerView: 1.1\n      }\n    },\n    on: {\n      init: function init() {\n        $('.product-recommendations__loading-dots').hide();\n        $('.recommendations-slider').fadeIn(1000);\n      }\n    }\n  });\n}\n\nvar productRecommendationsSection = document.querySelector('.product-recommendations'); // init only if there is a recommendations section on the specific PDP\n\nif (productRecommendationsSection !== null) {\n  var url = productRecommendationsSection.dataset.url;\n  fetch(url).then(function (response) {\n    return response.text();\n  }).then(function (text) {\n    var html = document.createElement('div');\n    html.innerHTML = text;\n    var recommendations = html.querySelector('.product-recommendations');\n\n    if (recommendations && recommendations.innerHTML.trim().length) {\n      productRecommendationsSection.innerHTML = recommendations.innerHTML;\n    } // init swiper after recommendations have been populated\n\n\n    initRecommendationsSlider();\n  }).catch(function (e) {\n    console.error(e);\n  });\n}\n\n;\n/**\n * Empty Cart Recommendations Slider\n */\n\nvar mySwiper = new Swiper('.empty-cart-recommendations-slider', {\n  loop: false,\n  init: true,\n  centerInsufficientSlides: true,\n  observer: true,\n  speed: 400,\n  slidesPerView: 4,\n  slidesPerGroup: 4,\n  spaceBetween: 30,\n  breakpoints: {\n    1024: {\n      slidesPerGroup: 3,\n      slidesPerView: 3\n    },\n    767: {\n      slidesPerGroup: 2,\n      slidesPerView: 2\n    },\n    560: {\n      slidesPerGroup: 1,\n      slidesPerView: 1.1\n    }\n  }\n});\n/**\n * UGC page Video slider\n */\n\nvar mySwiper = new Swiper('.ugc-video-slider', {\n  loop: false,\n  centerInsufficientSlides: true,\n  speed: 400,\n  slidesPerView: 4,\n  slidesPerGroup: 4,\n  spaceBetween: 30,\n  pagination: {\n    el: \".swiper-pagination\",\n    clickable: true\n  },\n  navigation: {\n    nextEl: \".swiper-button-next\",\n    prevEl: \".swiper-button-prev\",\n    hideOnClick: true\n  },\n  breakpoints: {\n    1024: {\n      slidesPerGroup: 3,\n      slidesPerView: 3\n    },\n    767: {\n      slidesPerGroup: 2,\n      slidesPerView: 2\n    },\n    560: {\n      slidesPerGroup: 1,\n      slidesPerView: 1\n    }\n  }\n});\n/**\n * Three graphics slider section on PMP\n */\n\nvar mySwiper = new Swiper('.graphics-container', {\n  speed: 400,\n  spaceBetween: 100,\n  slidesPerView: 3,\n  scrollbar: {\n    el: '.swiper-scrollbar',\n    draggable: true\n  },\n  breakpoints: {\n    767: {\n      centeredSlides: true,\n      slidesPerView: 1.3,\n      spaceBetween: 10\n    }\n  }\n});\n/**\n * Card slider\n */\n\nvar mySwiper = new Swiper('.cards-slider', {\n  loop: false,\n  speed: 400,\n  slidesPerView: 3,\n  slidesPerGroup: 3,\n  spaceBetween: 30,\n  keyboard: {\n    enabled: true\n  },\n  pagination: {\n    el: \".swiper-pagination\",\n    clickable: true\n  },\n  navigation: {\n    nextEl: \".swiper-button-next\",\n    prevEl: \".swiper-button-prev\",\n    hideOnClick: true\n  },\n  breakpoints: {\n    767: {\n      slidesPerGroup: 2,\n      slidesPerView: 2\n    },\n    560: {\n      slidesPerGroup: 1,\n      slidesPerView: 1.3\n    }\n  }\n});\nvar mySwiper = new Swiper('.quotes-slider', {\n  loop: false,\n  speed: 400,\n  direction: \"vertical\",\n  mousewheel: true,\n  slidesPerView: 1,\n  spaceBetween: 30,\n  keyboard: {\n    enabled: true\n  },\n  pagination: {\n    el: \".swiper-pagination\",\n    clickable: true\n  },\n  navigation: {\n    nextEl: \".swiper-button-next\",\n    prevEl: \".swiper-button-prev\",\n    hideOnClick: true\n  }\n});\n/**\n * Protect plans coverage plans houses (switch button)\n */\n\nif ($('[data-coverage-house]').length > 0) {\n  var switchLeft = function switchLeft() {\n    switchBtnRight.classList.remove('active-case');\n    switchBtnLeft.classList.add('active-case');\n    activeSwitch.style.right = '50%';\n  };\n\n  var switchRight = function switchRight() {\n    switchBtnRight.classList.add('active-case');\n    switchBtnLeft.classList.remove('active-case');\n    activeSwitch.style.right = '0%';\n  };\n\n  var switchImagesButtonChange = function switchImagesButtonChange() {\n    if ($('.switch-button-case.left').hasClass('active-case')) {\n      $('.content.basic-plan').show();\n      $('.content.plus-plan').hide();\n    } else if ($('.switch-button-case.right').hasClass('active-case')) {\n      $('.content.basic-plan').hide();\n      $('.content.plus-plan').show();\n    }\n  };\n\n  var switchButton = document.querySelector('.switch-button');\n  var switchBtnRight = document.querySelector('.switch-button-case.right');\n  var switchBtnLeft = document.querySelector('.switch-button-case.left');\n  var activeSwitch = document.querySelector('.active-switch');\n  switchBtnLeft.addEventListener('click', function () {\n    switchLeft();\n  }, false);\n  switchBtnRight.addEventListener('click', function () {\n    switchRight();\n  }, false);\n  $('.switch-button-case').click(function (e) {\n    switchImagesButtonChange();\n  });\n  switchImagesButtonChange();\n  $(document).ready(function () {\n    $(\"a\").on('click', function (event) {\n      if (this.hash !== \"\") {\n        event.preventDefault();\n        var hash = this.hash;\n        $('html, body').animate({\n          scrollTop: $(hash).offset().top\n        }, 800, function () {\n          window.location.hash = hash;\n        });\n      }\n    });\n  });\n}\n/**\n * Product Stripe dropdown\n */\n\n\n$('.product-stripe__heading i').click(function () {\n  var toggleClass = $(this).closest('.product-stripe__product').find('.product-stripe__dropdown').hasClass('show');\n  $('.product-stripe__heading').removeClass('active');\n  $('.product-stripe__dropdown').removeClass('show');\n  $(this).closest('.product-stripe__heading').toggleClass('active', !toggleClass);\n  $(this).closest('.product-stripe__product').find('.product-stripe__dropdown').toggleClass('show', !toggleClass);\n});\n/**\n * Testimonials\n */\n// show testimonials\n\nvar activeCategory = $('.testimonials-categories').attr('data-active-category');\n$('.testimonials-categories .category[data-category=\"' + activeCategory + '\"]').addClass('active');\n$('.testimonials-wrapper [data-testimonial-category=\"' + activeCategory + '\"]').addClass('show'); // Show the testimonials when clicking on another category\n\n$('.testimonials-categories .category').click(function () {\n  var category = $(this).attr('data-category');\n  $('.testimonials-categories .category').removeClass('active');\n  $(this).addClass('active');\n  $(this).closest('.testimonials-section').find('[data-testimonial-category').removeClass('show');\n  $(this).closest('.testimonials-section').find('[data-testimonial-category=\"' + category + '\"]').addClass('show');\n});\n$('.testimonials-categories').insertBefore('.testimonials-wrapper');\n/**\n * Functions to be called after window resizing is finished\n */\n\n$.code.onWindowResize = function () {\n  var self = this; // Get new global window width\n\n  $.code.ww = $(window).width(); // Change Responsive Video src\n\n  responsiveVideoSetSize(); // Adjust header offset for longer announcement bars\n\n  adjustAnnouncementOffset();\n};\n/**\n * Handle window resizing\n */\n\n\n$.code.windowResizeHandler = function () {\n  // Call window resize functions 200ms after window stops being resized\n  var timeoutOffset = false;\n  $(window).resize(function () {\n    if (timeoutOffset !== false) {\n      clearTimeout(timeoutOffset);\n    }\n\n    timeoutOffset = setTimeout(function () {\n      $.code.onWindowResize();\n    }, 200);\n  });\n};\n/**\n * Set global variables\n */\n\n\n$.code.setVars = function () {\n  var self = this;\n\n  if (window.location.host.indexOf('localhost') > -1 || window.location.host.indexOf('myshopify') > -1) {\n    $.code.debug = true;\n  }\n\n  if ($.code.debug) {\n    console.log('Init CODE js with debugging');\n  } // Get window width\n\n\n  $.code.onWindowResize(); // Check for localstorage\n\n  $.code.localStorage = $.code.localStorageTest(); // Set if page is in theme editor\n\n  if (Shopify.designMode) {\n    $.code.themeEditor = true;\n    $('body').addClass('theme-editor');\n\n    if ($.code.debug) {\n      console.log('Theme editor active');\n    }\n  }\n};\n/**\n * Test for localStorage\n */\n\n\n$.code.localStorageTest = function () {\n  var test = 'test';\n\n  try {\n    localStorage.setItem(test, test);\n    localStorage.removeItem(test);\n    return true;\n  } catch (e) {\n    return false;\n  }\n};\n/**\n * Download Files\n */\n\n\n$('[data-download-files]').on('click', function (event) {\n  $('[data-download-files]').html('Assembling List');\n  /*\n  Get a list of all files within the Shopify Admin (/admin/settings/files)\n  This needs to be run within the Chrome Browser. Paste into the debug console and run...\n  A text file will download when done.\n  */\n\n  var counter = 0;\n  var fileCounter = 0;\n  var fileArray = [];\n\n  var saveList = function saveList(fileArray) {\n    var a = document.createElement(\"a\");\n    document.body.appendChild(a);\n    a.style = \"display: none\";\n    var blob = new Blob([\"\\uFEFF\", fileArray.join('\\n')], {\n      type: 'text/plain'\n    }),\n        link = window.URL.createObjectURL(blob);\n    a.href = link;\n    a.download = 'file-urls-list' + '.txt';\n    console.log(fileCounter, ' files added to file.');\n    console.log(counter, ' iterations');\n    a.click();\n    $('[data-download-files]').html('Assembling Done<br>Click to Download again.');\n    window.URL.revokeObjectURL(link);\n  };\n\n  var getFiles = function getFiles(url) {\n    fetch(url).then(function (response) {\n      response.text().then(function (text) {\n        var parser = new DOMParser();\n        var htmlDoc = parser.parseFromString(text, 'text/html');\n        var fields = htmlDoc.getElementsByTagName('img');\n\n        for (var i = 0; i < fields.length; i++) {\n          var source = fields[i].src.replace('_60x60', '');\n          fileArray.push(source);\n          fileCounter += 1;\n        }\n\n        ;\n      });\n    });\n  };\n\n  var adminUrls = ['https://ring-uk.myshopify.com/admin/settings/files?limit=250', 'https://ring-uk.myshopify.com/admin/settings/files?limit=250&after=eyJsYXN0X2lkIjoyMDE3NDY1Mzk4MDc2NSwibGFzdF92YWx1ZSI6IjIwMjEtMDEtMjcgMTQ6MzM6NTguMDAwMDAwIn0%3D', 'https://ring-uk.myshopify.com/admin/settings/files?limit=250&after=eyJsYXN0X2lkIjo5NDQyODgwODgwNzMzLCJsYXN0X3ZhbHVlIjoiMjAyMC0wNS0wNCAwODowNToyOS4wMDAwMDAifQ%3D%3D', 'https://ring-uk.myshopify.com/admin/settings/files?limit=250&after=eyJsYXN0X2lkIjo5NDM5NzI2MDc1OTk3LCJsYXN0X3ZhbHVlIjoiMjAyMC0wMy0zMCAxNjozMzoyOS4wMDAwMDAifQ%3D%3D', 'https://ring-uk.myshopify.com/admin/settings/files?limit=250&after=eyJsYXN0X2lkIjo5Mzk1ODc0OTU1MzU3LCJsYXN0X3ZhbHVlIjoiMjAxOS0wMy0xNSAxMToxMjo1MC4wMDAwMDAifQ%3D%3D'];\n\n  for (var i = 0; i < adminUrls.length; i++) {\n    var url = adminUrls[i];\n    getFiles(url);\n    counter += 1;\n  }\n\n  ;\n\n  if (counter === 5) {\n    saveList(fileArray);\n  }\n});\n/**\n * Initialize CODE JS\n */\n\n$.code.init();\n/**\n * shopify Theme editor Events\n */\n\nif ($.code.themeEditor) {\n  $(document).on('shopify:section:load', function (e) {\n    var $parentSection = $('#shopify-section-' + e.detail.sectionId);\n    var blockId = e.detail.blockId; // Re-init featured product\n\n    if ($parentSection.hasClass('product-featured-section')) {\n      $('[data-section-type=\"product\"]', $parentSection).product();\n    } // Re-init swiper\n\n\n    if ($parentSection.hasClass('swiper-section')) {\n      $('[data-swiper]', $parentSection).swiperLoader();\n    }\n  }).on('shopify:section:reorder', function (e) {}).on('shopify:section:unload', function (e) {\n    var $parentSection = $('#shopify-section-' + e.detail.sectionId);\n    var blockId = e.detail.blockId;\n  }).on('shopify:block:select', function (e) {\n    var $parentSection = $('#shopify-section-' + e.detail.sectionId);\n    var blockId = e.detail.blockId; // Edit swiper slide\n\n    if ($parentSection.hasClass('swiper-section')) {\n      var $slide = $(e.target);\n      $('[data-swiper]', $parentSection).swiperLoader('editSlide', $slide);\n    }\n  }).on('shopify:block:deselect', function (e) {\n    var $parentSection = $('#shopify-section-' + e.detail.sectionId);\n    var blockId = e.detail.blockId;\n  });\n} // Legacy country selector page, to be deleted soon\n\n\n$('.country-selector-title').bind({\n  click: function click() {\n    $(this).parent().toggleClass('on');\n    $(this).toggleClass('on');\n  }\n}); // temporarily remove shopify analytics\n\nvar shopifyAnalyticsTag = document.querySelector('.analytics');\n\nif (shopifyAnalyticsTag) {\n  shopifyAnalyticsTag.remove();\n} // video mute function\n\n\n$('.js-tab-button__mute').bind({\n  click: function click() {\n    var self = $(this);\n    var videoId = $(this).data('button-mute');\n    var video = self.prev('.js-tab-video__mute');\n\n    if (self.hasClass('is-muted')) {\n      video.prop('muted', false);\n      self.toggleClass('is-muted', false);\n    } else {\n      video.prop('muted', true);\n      self.toggleClass('is-muted', true);\n    }\n  }\n}); // Privacy page videos (protect plan sections)\n\n$(window).on('scroll', function () {\n  $('video.privacy-protect-video').each(function () {\n    // check if the video is in the viewport to autoplay and remove the play button\n    if ($(this).visible()) {\n      $(this)[0].play();\n      $(this).siblings('#video-overlay').removeClass('playing');\n    } // check if video is ended and show the play button and first frame of the video\n\n\n    $(this).on('ended', function () {\n      $(this)[0].currentTime = 0;\n      $(this).siblings('#video-overlay').addClass('playing');\n    });\n  });\n}); //  video onclick play\n\n$('[data-onclick-toggle-play]').bind({\n  click: function click() {\n    var self = $(this);\n    var videoId = self.data('onclick-toggle-play');\n    var video = $('#' + videoId);\n    console.log(!video[0].paused);\n    var elem = document.getElementById(videoId);\n    elem.addEventListener(\"ended\", function () {\n      elem.currentTime = 0;\n      self.addClass('playing');\n    });\n\n    if (!video[0].paused) {\n      video[0].pause();\n      video.prop('muted', true);\n      self.toggleClass('playing');\n    } else {\n      video.prop('muted', false);\n      video[0].play();\n      self.toggleClass('playing');\n    }\n  }\n}); // show offline message for chat icon\n\n$(\".js-kustomer-offline-icon\").hover(function () {\n  $(\".js-offline-message\").show();\n}, function () {\n  $(\".js-offline-message\").hide();\n}); // Cookie getter\n\nfunction getCookie(c_name) {\n  if (document.cookie.length > 0) {\n    var c_start = document.cookie.indexOf(c_name + \"=\");\n\n    if (c_start != -1) {\n      c_start = c_start + c_name.length + 1;\n      var c_end = document.cookie.indexOf(\";\", c_start);\n\n      if (c_end == -1) {\n        c_end = document.cookie.length;\n      }\n\n      return unescape(document.cookie.substring(c_start, c_end));\n    }\n  }\n\n  return \"\";\n} // Implement a hover swap of featured image for product variant color swatches\n\n\n$('label.color-swatch').mouseenter(function () {\n  var imgUrl = $(this).data('featured-image');\n\n  if ($(window).width() > 1024) {\n    var featuredImage = $(this).closest('.primary-image').find('img');\n    $(featuredImage).attr('src', imgUrl);\n  } else {\n    var featuredImage = $(this).closest('.primary-image').find('picture source');\n    $(featuredImage).attr('srcset', imgUrl);\n  }\n}).mouseleave(function () {\n  var originalImage = $(this).closest('.primary-image').find('img');\n  var originalSrc = $(originalImage).data('original-src');\n\n  if ($(window).width() > 1024) {\n    $(originalImage).attr('src', originalSrc);\n  } else {\n    var responsiveImage = $(this).closest('.primary-image').find('picture source[media=\"(max-width: 1024px)\"]');\n    $(responsiveImage).attr('srcset', originalSrc);\n  }\n});\n$('.color-label').click(function () {\n  var originalSrc = $(originalImage).data('original-src');\n  $(originalImage).attr('srcset', originalSrc);\n  window.location.href = originalSrc;\n}); // Country select page mobile accordion functionality\n\n$('.region_title').bind({\n  click: function click() {\n    $(this).parent().toggleClass('on');\n    $(this).toggleClass('on');\n  }\n}); // Show and hide Alarm Ireland content for visitors\n\nfunction alarmBlock() {\n  var country = \"\";\n  var visitCountry = getCookie('_shopify_country');\n  var chosenCountry = getCookie('chosen_country');\n\n  if (chosenCountry) {\n    country = chosenCountry;\n  } else {\n    country = visitCountry;\n  }\n\n  var modalClosed = sessionStorage.getItem('modalClosed');\n  var AlarmCountries = ['Ireland', 'IE', 'Germany', 'DE', 'Austria', 'AT', 'Netherlands', 'NL', 'Belgium', 'BE', 'France', 'FR', 'Luxembourg', 'LU', 'Monaco', 'MC', 'Switzerland', 'CH', 'Spain', 'ES', 'Sweden', 'SE', 'Norway', 'NO', 'Finland', 'FI', 'Denmark', 'DK', 'Iceland', 'IS', 'United+Kingdom', 'GB']; // Added ireland only for coming soon button on PDP, since german launch was delayed\n\n  var IrelandOnly = ['Ireland', 'IE'];\n\n  if ($.inArray(country, AlarmCountries) === -1) {\n    if (modalClosed === \"true\") {\n      $('.js-alarm-unavailable-messaging:not(.js-modal)').removeClass('is-hidden');\n    } else {\n      $('.js-alarm-unavailable-messaging').removeClass('is-hidden');\n    }\n  }\n\n  if ($.inArray(country, AlarmCountries) > -1) {\n    $('.js-alarm-available-messaging').removeClass('is-hidden');\n  }\n} // Closes modal and saves a boolean in session storage.\n\n\nfunction modalClose() {\n  $('.js-modal').addClass('is-closing');\n  $('.js-modal__container').addClass('is-closing');\n  sessionStorage.setItem('modalClosed', 'true');\n  setTimeout(function () {\n    $('.js-modal').hide();\n  }, 400);\n} // AOS (Animate on scroll)\n// if(typeof AOS !== null) {\n//   AOS.init({\n//     disable: 'mobile',\n//     easing: 'ease-in-out',\n//     once: true\n//   });\n// }\n\n\n$(document).ready(function () {\n  // if (window.location.hash.length > 0) {\n  //   var cleanHash = window.location.hash.substring(1).split('?')[0];\n  //   $('[data-kit-builder-wrapper]').removeClass('selected');\n  //   var selector = '[data-selected-product=\"' + cleanHash + '\"]';\n  //\n  //   switch (cleanHash) {\n  //     // Alarm Pack S\n  //     case 'alarm-security-5-piece-kit-gen-2':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-security-5-piece-kit-gen-2\"]').click();\n  //       break;\n  //     // Alarm Pack M\n  //     case 'alarm-security-7-piece-kit-gen-2':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-security-7-piece-kit-gen-2\"]').click();\n  //       break;\n  //     // Alarm Pack L\n  //     case 'alarm-security-10-piece-kit-gen-2':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2\"]').click();\n  //       break;\n  //     // Alarm Pack M - siren\n  //     case 'alarm-security-8-piece-kit-gen-2':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2\"]').click();\n  //       break;\n  //     // Alarm Pack L - siren\n  //     case 'alarm-security-11-piece-kit-gen-2':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-security-11-piece-kit-gen-2\"]').click();\n  //       break;\n  //     // Alarm Pack XL\n  //     case 'alarm-security-13-piece-kit-gen-2':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-security-13-piece-kit-gen-2\"]').click();\n  //       break;\n  //     // Alarm Stick Up Cam Pack M\n  //     case 'alarm-stick-up-cam-pack-m':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-stick-up-cam-pack-m\"]').click();\n  //       break;\n  //     // Alarm Stick Up Cam Pack L\n  //     case 'alarm-stick-up-cam-pack-l':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-stick-up-cam-pack-l\"]').click();\n  //       break;\n  //     // Alarm Stick Up Cam Pack M - siren\n  //     case 'alarm-stick-up-cam-siren-pack-m':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-stick-up-cam-siren-pack-m\"]').click();\n  //       break;\n  //     // Alarm Stick Up Cam Pack L - siren\n  //     case 'alarm-stick-up-cam-siren-pack-l':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-stick-up-cam-siren-pack-l\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Pack S\n  //     case 'alarm-security-5-piece-kit-gen-2-indoor-cam':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-security-5-piece-kit-gen-2-indoor-cam\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Pack M\n  //     case 'alarm-security-7-piece-kit-gen-2-indoor-cam':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-security-7-piece-kit-gen-2-indoor-cam\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Pack L\n  //     case 'alarm-security-10-piece-kit-gen-2-indoor-cam':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2-indoor-cam\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Pack M - siren\n  //     case 'alarm-security-8-piece-kit-gen-2-indoor-cam':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2-indoor-cam\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Pack L - siren\n  //     case 'alarm-security-11-piece-kit-gen-2-indoor-cam':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-security-11-piece-kit-gen-2-indoor-cam\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Pack XL\n  //     case 'alarm-security-13-piece-kit-gen-2-indoor-cam':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-security-13-piece-kit-gen-2-indoor-cam\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Black Pack S\n  //     case 'alarm-black-indoor-cam-pack-s':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-black-indoor-cam-pack-s\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Black Pack M\n  //     case 'alarm-black-indoor-cam-pack-m':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-black-indoor-cam-pack-m\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Black Pack L\n  //     case 'alarm-black-indoor-cam-pack-l':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-black-indoor-cam-pack-l\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Black Pack M - siren\n  //     case 'alarm-black-indoor-cam-siren-pack-m':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-black-indoor-cam-siren-pack-m\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Black Pack L - siren\n  //     case 'alarm-black-indoor-cam-siren-pack-l':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-black-indoor-cam-siren-pack-l\"]').click();\n  //       break;\n  //     // Alarm Indoor Camera Black Pack XL\n  //     case 'alarm-black-indoor-cam-siren-pack-xl':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-black-indoor-cam-siren-pack-xl\"]').click();\n  //       break;\n  //     // Alarm Doorbell Camera Pack S\n  //     case 'alarm-doorbell-camera-pack-s':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-doorbell-camera-pack-s\"]').click();\n  //       break;\n  //     // Alarm Doorbell Camera Pack M\n  //     case 'alarm-doorbell-camera-pack-m':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-doorbell-camera-pack-m\"]').click();\n  //       break;\n  //     // Alarm Doorbell Camera Pack L\n  //     case 'alarm-doorbell-camera-pack-l':\n  //       $('[data-select-nosiren]').click();\n  //       $('[data-selected-product=\"alarm-doorbell-camera-pack-l\"]').click();\n  //       break;\n  //     // Alarm Doorbell Camera Pack M - siren\n  //     case 'alarm-doorbell-camera-siren-pack-m':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-doorbell-camera-siren-pack-m\"]').click();\n  //       break;\n  //     // Alarm Doorbell Camera Pack L - siren\n  //     case 'alarm-doorbell-camera-siren-pack-l':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-doorbell-camera-siren-pack-l\"]').click();\n  //       break;\n  //     // Alarm Doorbell Camera Pack XL\n  //     case 'alarm-doorbell-camera-siren-pack-xl':\n  //       $('[data-select-siren]').click();\n  //       $('[data-selected-product=\"alarm-doorbell-camera-siren-pack-xl\"]').click();\n  //       break;\n  //   }\n  // } else {\n  var $firstOptionProduct = $('[data-kit-builder-wrapper]').first();\n  var optionAvailable = $firstOptionProduct.data('available');\n  var optionAmazonLink = $firstOptionProduct.data('external-link');\n  var optionTitle = $firstOptionProduct.data('selected-title');\n  var optionCta = $firstOptionProduct.data('cta-type');\n  var optionDualCta = $firstOptionProduct.data('dual-cta');\n\n  if (optionAvailable === false) {\n    if (optionCta === 'amazon') {\n      $('[data-kit-product-title]').text(optionTitle);\n      $('[data-kit-nostock-amazon-link]').attr('href', optionAmazonLink);\n      $('[data-kit-nostock-amazon]').removeClass('is-hidden');\n      $('.cta-type-amazon').removeClass('is-hidden');\n      $('.cta-type-amazon').attr('data-amazon-link', optionAmazonLink);\n      $('[data-dual-cta-test-amazon-button]').addClass('is-hidden');\n    } else if (optionCta === 'soldout') {\n      $('.cta-type-soldout').removeClass('is-hidden');\n      $('[data-dual-cta-test-amazon-button]').addClass('is-hidden');\n    } else if (optionCta === 'unavailable') {\n      $('[data-kit-nostock]').removeClass('is-hidden');\n      $('.cta-type-unavailable').removeClass('is-hidden');\n      $('[data-dual-cta-test-amazon-button]').addClass('is-hidden');\n    } else if (optionCta === 'comingsoon') {\n      $('.cta-type-comingsoon').removeClass('is-hidden');\n      $('[data-dual-cta-test-amazon-button]').addClass('is-hidden');\n    }\n  } else if (optionAvailable === true && optionCta === 'amazon') {\n    // when redirect to Amazon setting is turned on during promo periods (DE)\n    $('.cta-type-amazon').removeClass('is-hidden');\n    $('.cta-type-amazon').attr('data-amazon-link', optionAmazonLink);\n    $('.cta-type-cart-secondary').removeClass('is-hidden');\n  } else if (optionAvailable === true && optionDualCta === true && optionAmazonLink !== \"\") {\n    // when Dual CTAs are active\n    $('.cta-type-cart').removeClass('is-hidden');\n    $('[data-dual-cta-test-amazon-button]').removeClass('is-hidden');\n    $('[data-dual-cta-test-amazon-button]').attr('href', optionAmazonLink);\n  } else {\n    $('.cta-type-cart').removeClass('is-hidden');\n  }\n\n  var cleanPath = window.location.pathname.split('/products/')[1];\n  $('[data-kit-builder-wrapper]').removeClass('selected');\n  var selector = '[data-selected-product=\"' + cleanPath + '\"]';\n\n  switch (cleanPath) {\n    // Alarm Pack S\n    case 'alarm-security-5-piece-kit-gen-2':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-5-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Pack M\n\n    case 'alarm-security-7-piece-kit-gen-2':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-7-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Pack L\n\n    case 'alarm-security-10-piece-kit-gen-2':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Pack M - siren\n\n    case 'alarm-security-8-piece-kit-gen-2':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Pack L - siren\n\n    case 'alarm-security-11-piece-kit-gen-2':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-11-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Pack XL\n\n    case 'alarm-security-13-piece-kit-gen-2':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-13-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Stick Up Cam Pack M\n\n    case 'alarm-stick-up-cam-pack-m':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-stick-up-cam-pack-m\"]').click();\n      break;\n    // Alarm Stick Up Cam Pack L\n\n    case 'alarm-stick-up-cam-pack-l':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-stick-up-cam-pack-l\"]').click();\n      break;\n    // Alarm Stick Up Cam Pack M - siren\n\n    case 'alarm-stick-up-cam-siren-pack-m':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-stick-up-cam-siren-pack-m\"]').click();\n      break;\n    // Alarm Stick Up Cam Pack L - siren\n\n    case 'alarm-stick-up-cam-siren-pack-l':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-stick-up-cam-siren-pack-l\"]').click();\n      break;\n    // Alarm Indoor Camera Pack S\n\n    case 'alarm-security-5-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-5-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Camera Pack M\n\n    case 'alarm-security-7-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-7-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Camera Pack L\n\n    case 'alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Camera Pack M - siren\n\n    case 'alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Camera Pack L - siren\n\n    case 'alarm-security-11-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-11-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Camera Pack XL\n\n    case 'alarm-security-13-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-13-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack S\n\n    case 'alarm-security-5-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-5-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack M\n\n    case 'alarm-security-7-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-7-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack L\n\n    case 'alarm-security-10-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack M - siren\n\n    case 'alarm-security-8-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack L - siren\n\n    case 'alarm-security-11-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-11-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack XL - siren\n\n    case 'alarm-security-13-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-13-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack S\n\n    case 'alarm-black-indoor-cam-pack-s':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-black-indoor-cam-pack-s\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack M\n\n    case 'alarm-black-indoor-cam-pack-m':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-black-indoor-cam-pack-m\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack L\n\n    case 'alarm-black-indoor-cam-pack-l':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-black-indoor-cam-pack-l\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack M - siren\n\n    case 'alarm-black-indoor-cam-siren-pack-m':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-black-indoor-cam-siren-pack-m\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack L - siren\n\n    case 'alarm-black-indoor-cam-siren-pack-l':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-black-indoor-cam-siren-pack-l\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack XL\n\n    case 'alarm-black-indoor-cam-siren-pack-xl':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-black-indoor-cam-siren-pack-xl\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack S\n\n    case 'alarm-doorbell-camera-pack-s':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-doorbell-camera-pack-s\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack M\n\n    case 'alarm-doorbell-camera-pack-m':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-doorbell-camera-pack-m\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack L\n\n    case 'alarm-doorbell-camera-pack-l':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-doorbell-camera-pack-l\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack M - siren\n\n    case 'alarm-doorbell-camera-siren-pack-m':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-doorbell-camera-siren-pack-m\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack L - siren\n\n    case 'alarm-doorbell-camera-siren-pack-l':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-doorbell-camera-siren-pack-l\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack XL\n\n    case 'alarm-doorbell-camera-siren-pack-xl':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-doorbell-camera-siren-pack-xl\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack S 2024\n\n    case 'alarm-5-pc-security-kit-battery-doorbell-bundle':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-5-pc-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack M 2024\n\n    case 'alarm-7-pc-security-kit-battery-doorbell-bundle':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-7-pc-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack L 2024\n\n    case 'alarm-10-pc-security-kit-battery-doorbell-bundle':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-10-pc-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack M - siren 2024\n\n    case 'alarm-8-pc-siren-security-kit-battery-doorbell-bundle':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-8-pc-siren-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack L - siren 2024\n\n    case 'alarm-11-pc-siren-security-kit-battery-doorbell-bundle':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-11-pc-siren-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack XL - siren 2024\n\n    case 'alarm-13-pc-siren-security-kit-battery-doorbell-bundle':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-13-pc-siren-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack S\n\n    case 'alarm-security-5-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-5-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack M\n\n    case 'alarm-security-7-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-7-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack L\n\n    case 'alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-select-nosiren]').click();\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack M - siren\n\n    case 'alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack L - siren\n\n    case 'alarm-security-11-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-11-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack XL - siren\n\n    case 'alarm-security-13-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-select-siren]').click();\n      $('[data-selected-product=\"alarm-security-13-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n  } // $('[data-kit-builder-wrapper].selected').removeClass('expanded');\n  // $('[data-kit-builder-wrapper].selected').find('[data-product-panel]').slideUp();\n  // $('[data-kit-builder-wrapper].selected').find('[data-collapsible-trigger-icon] i').removeClass('la-angle-up').addClass('la-angle-down');\n  // }\n\n});\n$('[data-kit-builder-wrapper]').on('click', function (e) {\n  var selectedProduct = $(this).data('selected-product');\n  var selectedTitle = $(this).data('selected-title');\n  var available = $(this).data('available');\n  var amazonLink = $(this).data('external-link');\n  var cta = $(this).data('cta-type');\n  var dualCta = $(this).data('dual-cta'); // var newHash = '#' + selectedProduct;\n\n  $('.button__funnel').addClass('is-hidden');\n  $('.kit__nostock-text').addClass('is-hidden');\n  $('.product-kit-notification--soon').addClass('is-hidden');\n\n  if (available === false) {\n    if (cta === 'amazon') {\n      $('[data-kit-product-title]').text(selectedTitle);\n      $('[data-kit-nostock-amazon-link]').attr('href', amazonLink);\n      $('[data-kit-nostock-amazon]').removeClass('is-hidden');\n      $('.cta-type-amazon').removeClass('is-hidden');\n      $('.cta-type-amazon').attr('data-amazon-link', amazonLink);\n      $('.cta-type-cart-secondary').addClass('is-hidden');\n      $('[data-dual-cta-test-amazon-button]').addClass('is-hidden');\n    } else if (cta === 'soldout') {\n      $('.cta-type-soldout').removeClass('is-hidden');\n      $('[data-dual-cta-test-amazon-button]').addClass('is-hidden');\n    } else if (cta === 'unavailable') {\n      $('[data-dual-cta-test-amazon-button]').addClass('is-hidden');\n      $('[data-kit-nostock]').removeClass('is-hidden');\n      $('.cta-type-unavailable').removeClass('is-hidden');\n    } else if (cta === 'comingsoon') {\n      $('.cta-type-comingsoon').removeClass('is-hidden');\n      $('[data-dual-cta-test-amazon-button]').addClass('is-hidden');\n    }\n  } else if (available === true && cta === 'amazon') {\n    // when redirect to Amazon setting is turned on during promo periods (DE)\n    $('.cta-type-amazon').removeClass('is-hidden');\n    $('.cta-type-amazon').attr('data-amazon-link', amazonLink);\n    $('.cta-type-cart-secondary').removeClass('is-hidden');\n  } else if (available === true && dualCta === true && amazonLink !== \"\") {\n    // when Dual CTAs are active\n    $('.cta-type-cart').removeClass('is-hidden');\n    $('[data-dual-cta-test-amazon-button]').attr('href', amazonLink);\n    $('[data-dual-cta-test-amazon-button]').removeClass('is-hidden');\n  } else {\n    $('.cta-type-cart').removeClass('is-hidden');\n  } // history.pushState(null, null, newHash);\n\n\n  if ($(this).hasClass('selected') && $(this).hasClass('expanded')) {// $(this).removeClass('expanded');\n    // $(this).find('[data-product-panel]').slideUp();\n    // $('[data-kit-builder-wrapper]').find('[data-collapsible-trigger-icon] i').removeClass('la-angle-up').addClass('la-angle-down');\n  } else if ($(this).hasClass('selected') && !$(this).hasClass('expanded')) {\n    $(this).addClass('expanded');\n    $(this).find('[data-product-panel]').slideDown();\n    $(this).find('[data-collapsible-trigger-icon] i').removeClass('la-angle-down').addClass('la-angle-up');\n  } else {\n    $('[data-kit-builder-wrapper]').removeClass('selected');\n    $('[data-kit-builder-wrapper]').find('[data-product-panel]').slideUp();\n    $('[data-kit-builder-wrapper]').find('[data-collapsible-trigger-icon] i').removeClass('la-angle-up').addClass('la-angle-down');\n    $(this).addClass('selected expanded');\n    $(this).find('[data-product-panel]').slideDown();\n    $(this).find('[data-collapsible-trigger-icon] i').removeClass('la-angle-down').addClass('la-angle-up');\n  }\n\n  $('input[data-kit-builder-product]').attr('checked', false);\n  $(this).find('input[data-kit-builder-product]').attr('checked', true);\n\n  if ($('label.color-swatch-idc').length > 0) {\n    $(this).find('label.color-swatch-idc').removeClass('checked');\n    $(this).find('label.color-swatch-idc').first().addClass('checked');\n    $(this).find('.indoor-cam-addon img').attr('src', 'https://cdn.shopify.com/s/files/1/2418/9735/products/IDC_front_150x150@3x.png?v=1642603774');\n  }\n\n  $(this)[0].scrollIntoView({\n    behavior: \"smooth\",\n    block: \"end\",\n    inline: \"nearest\"\n  });\n  var handle = $(this).data('selected-product');\n  var imageSelector = '[data-selected-product-image=\"' + handle + '\"]';\n  $('.product-single-image').addClass('is-hidden');\n\n  if ($('.product-single-image').length > 0) {\n    $(imageSelector).removeClass('is-hidden');\n  } else if ($('[data-product-thumb]').length > 0) {\n    $('[data-product-thumb]').addClass('is-hidden');\n    $(imageSelector).removeClass('is-hidden');\n    var mainIndex = $(imageSelector).first().data('thumb-index');\n    mainIndex -= 1;\n    var swiper = document.querySelector('.swiper-container-horizontal').swiper;\n    swiper.slideTo(mainIndex, false, false);\n  }\n});\n$('[data-select-siren]').on('click', function () {\n  $('.kit-builder-item-siren').removeClass('selected');\n  $(this).addClass('selected');\n  var currentSelected = $('.kit-builder-item.selected');\n  currentSelected.removeClass('selected');\n\n  switch (currentSelected.data('selected-product')) {\n    // Alarm Pack S\n    case 'alarm-security-5-piece-kit-gen-2':\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Pack M\n\n    case 'alarm-security-7-piece-kit-gen-2':\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Pack L\n\n    case 'alarm-security-10-piece-kit-gen-2':\n      $('[data-selected-product=\"alarm-security-11-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Stick Up Cam Pack M\n\n    case 'alarm-stick-up-cam-pack-m':\n      $('[data-selected-product=\"alarm-stick-up-cam-siren-pack-m\"]').click();\n      break;\n    // Alarm Stick Up Cam Pack L\n\n    case 'alarm-stick-up-cam-pack-l':\n      $('[data-selected-product=\"alarm-stick-up-cam-siren-pack-l\"]').click();\n      break;\n    // Alarm Indoor Camera Pack S\n\n    case 'alarm-security-5-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Camera Pack M\n\n    case 'alarm-security-7-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Camera Pack L\n\n    case 'alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-selected-product=\"alarm-security-11-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack S\n\n    case 'alarm-security-5-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack M\n\n    case 'alarm-security-7-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack L\n\n    case 'alarm-security-10-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-selected-product=\"alarm-security-11-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack S\n\n    case 'alarm-black-indoor-cam-pack-s':\n      $('[data-selected-product=\"alarm-black-indoor-cam-siren-pack-m\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack M\n\n    case 'alarm-black-indoor-cam-pack-m':\n      $('[data-selected-product=\"alarm-black-indoor-cam-siren-pack-m\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack L\n\n    case 'alarm-black-indoor-cam-pack-l':\n      $('[data-selected-product=\"alarm-black-indoor-cam-siren-pack-l\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack S\n\n    case 'alarm-doorbell-camera-pack-s':\n      $('[data-selected-product=\"alarm-doorbell-camera-siren-pack-m\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack M\n\n    case 'alarm-doorbell-camera-pack-m':\n      $('[data-selected-product=\"alarm-doorbell-camera-siren-pack-m\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack L\n\n    case 'alarm-doorbell-camera-pack-l':\n      $('[data-selected-product=\"alarm-doorbell-camera-siren-pack-l\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack S 2024\n\n    case 'alarm-5-pc-security-kit-battery-doorbell-bundle':\n      $('[data-selected-product=\"alarm-8-pc-siren-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack M 2024\n\n    case 'alarm-7-pc-security-kit-battery-doorbell-bundle':\n      $('[data-selected-product=\"alarm-11-pc-siren-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack L 2024\n\n    case 'alarm-10-pc-security-kit-battery-doorbell-bundle':\n      $('[data-selected-product=\"alarm-13-pc-siren-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack S\n\n    case 'alarm-security-5-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack M\n\n    case 'alarm-security-7-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-selected-product=\"alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack L\n\n    case 'alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-selected-product=\"alarm-security-11-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n  }\n\n  $('.siren').show();\n  $('.no-siren').hide();\n  window.scrollTo(0, 0);\n});\n$('[data-select-nosiren]').on('click', function () {\n  $('.kit-builder-item-siren').removeClass('selected');\n  $(this).addClass('selected');\n  var currentSelected = $('.kit-builder-item.selected');\n  currentSelected.removeClass('selected');\n\n  switch (currentSelected.data('selected-product')) {\n    // Alarm Pack M with Siren\n    case 'alarm-security-8-piece-kit-gen-2':\n      $('[data-selected-product=\"alarm-security-7-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Pack L with Siren\n\n    case 'alarm-security-11-piece-kit-gen-2':\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Pack XL with Siren\n\n    case 'alarm-security-13-piece-kit-gen-2':\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2\"]').click();\n      break;\n    // Alarm Stick Up Cam Pack M with Siren\n\n    case 'alarm-stick-up-cam-siren-pack-m':\n      $('[data-selected-product=\"alarm-stick-up-cam-pack-m\"]').click();\n      break;\n    // Alarm Stick Up Cam Pack L with Siren\n\n    case 'alarm-stick-up-cam-siren-pack-l':\n      $('[data-selected-product=\"alarm-stick-up-cam-pack-l\"]').click();\n      break;\n    // Alarm Indoor Camera Pack M with Siren\n\n    case 'alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-selected-product=\"alarm-security-7-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Camera Pack L with Siren\n\n    case 'alarm-security-11-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Camera Pack XL with Siren\n\n    case 'alarm-security-13-piece-kit-gen-2-indoor-cam-gen-2':\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack M with Siren\n\n    case 'alarm-security-8-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-selected-product=\"alarm-security-7-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack L with Siren\n\n    case 'alarm-security-11-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Cam Plus Pack XL with Siren\n\n    case 'alarm-security-13-piece-kit-gen-2-indoor-cam-plus':\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2-indoor-cam-plus\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack M with Siren\n\n    case 'alarm-black-indoor-cam-siren-pack-m':\n      $('[data-selected-product=\"alarm-black-indoor-cam-pack-m\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack L with Siren\n\n    case 'alarm-black-indoor-cam-siren-pack-l':\n      $('[data-selected-product=\"alarm-black-indoor-cam-pack-l\"]').click();\n      break;\n    // Alarm Indoor Camera Black Pack XL\n\n    case 'alarm-black-indoor-cam-siren-pack-xl':\n      $('[data-selected-product=\"alarm-black-indoor-cam-pack-l\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack M with Siren\n\n    case 'alarm-doorbell-camera-siren-pack-m':\n      $('[data-selected-product=\"alarm-doorbell-camera-pack-m\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack L with Siren\n\n    case 'alarm-doorbell-camera-siren-pack-l':\n      $('[data-selected-product=\"alarm-doorbell-camera-pack-l\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack XL with Siren\n\n    case 'alarm-doorbell-camera-siren-pack-xl':\n      $('[data-selected-product=\"alarm-doorbell-camera-pack-l\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack M - siren 2024\n\n    case 'alarm-8-pc-siren-security-kit-battery-doorbell-bundle':\n      $('[data-selected-product=\"alarm-5-pc-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack L - siren 2024\n\n    case 'alarm-11-pc-siren-security-kit-battery-doorbell-bundle':\n      $('[data-selected-product=\"alarm-7-pc-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm Doorbell Camera Pack XL - siren 2024\n\n    case 'alarm-13-pc-siren-security-kit-battery-doorbell-bundle':\n      $('[data-selected-product=\"alarm-10-pc-security-kit-battery-doorbell-bundle\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack M - siren\n\n    case 'alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-selected-product=\"alarm-security-7-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack L - siren\n\n    case 'alarm-security-11-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n    // Alarm + RPP + Indoor Camera Pack XL - siren\n\n    case 'alarm-security-13-piece-kit-gen-2-indoor-cam-gen-2-rpp':\n      $('[data-selected-product=\"alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2-rpp\"]').click();\n      break;\n  }\n\n  $('.siren').hide();\n  $('.no-siren').show();\n  window.scrollTo(0, 0);\n});\n\nif (window.innerWidth > 768 && typeof alarmPack !== 'undefined') {\n  var adjustHeight = $('.product-col-order').height();\n  $('.product-primary').height(adjustHeight);\n\n  if (window.location.hash.length > 0) {\n    $('.product-primary').height(adjustHeight + 500);\n  }\n} // Fancybox popup for hero video\n\n\n$('[data-hero-video-popup]').fancybox({\n  src: \"#hero-video-content\",\n  type: \"inline\",\n  arrows: false,\n  touch: false\n}); // Fancybox popup for Energy label images\n\n$('[data-energy-label-popup]').fancybox({\n  src: \"#energy-label-content\",\n  type: \"inline\",\n  arrows: false,\n  touch: false\n}); // Fancybox popup for battery use Longfin\n\n$('[data-battery-details-popup]').fancybox({\n  src: \"#battery-details-content\",\n  type: \"inline\",\n  arrows: false,\n  touch: false\n}); // Fancybox popup for Alarm + Subs commitment confirmation\n\n$('[data-confirm-subscription-popup]').fancybox({\n  src: \"#subscription-confirmation-content\",\n  type: \"inline\",\n  arrows: false,\n  touch: false\n}); // Hide announce bar while scrolling on mobile\n\nvar announceBarExists = $('#announcement-bar').length > 0;\n\nif (announceBarExists) {\n  $(window).on('scroll', function () {\n    var $announceBar = $('#announcement-bar');\n    var $mobileMenu = $('#header');\n    var $pageWrapper = $('.page-wrapper');\n\n    if ($(window).scrollTop() > $announceBar.outerHeight()) {\n      $mobileMenu.addClass('header--fixed');\n      $pageWrapper.addClass('has-fixed-nav-mobile');\n    } else {\n      $mobileMenu.removeClass('header--fixed');\n      $pageWrapper.removeClass('has-fixed-nav-mobile');\n    }\n  });\n} // assign header offset for longer announcement bar text\n\n\nfunction adjustAnnouncementOffset() {\n  var $announceHeight = $('#announcement-bar').outerHeight();\n\n  if ($.code.ww > 1024 && $announceHeight === 76) {\n    $('#header').addClass('offset-xl');\n  } else if ($.code.ww > 1024 && $announceHeight === 50) {\n    $('#header').removeClass('offset-xl');\n  }\n}\n\n;\nadjustAnnouncementOffset(); // Sticky nav show on scroll after product-wrapper\n// Update - excluding sticky filters on offers page, that will be developed into a standalone feature\n\nvar stickyNav = $('.sticky-nav:not(.sticky-filters)');\n\nif (stickyNav.length > 0) {\n  // Determine what kind of page it is and thus change the selector class\n  var wrapperClassSelector = $('.product-wrapper').length > 0 ? '.product-wrapper' : '.pmp-banner-section';\n  $(window).on('scroll', function () {\n    // Check if we can find the wrapper html\n    if (!$(wrapperClassSelector)) return;\n    var scrollTop = $(window).scrollTop(),\n        elementOffset = $(wrapperClassSelector).offset().top,\n        height = $(wrapperClassSelector).outerHeight(),\n        distance = elementOffset + height - 116;\n\n    if (scrollTop > 300 && scrollTop > distance) {\n      // Announce bar messes up the white space in combination with transform -100%\n      if (announceBarExists) {\n        stickyNav.addClass('sticky-nav--show');\n      }\n\n      setTimeout(function () {\n        stickyNav.addClass('sticky-nav--opened');\n      }, 200);\n      $('.header-wrapper, .header-small').addClass('no-box-shadow');\n    } else {\n      if (announceBarExists) {\n        stickyNav.removeClass('sticky-nav--show');\n      }\n\n      setTimeout(function () {\n        stickyNav.removeClass('sticky-nav--opened');\n      }, 200);\n      $('.header-wrapper, .header-small').removeClass('no-box-shadow');\n    }\n  });\n} // Mimic add to cart click from sticky nav menu\n\n\n$('[data-sticky-atc]').on('click', function (e) {\n  e.preventDefault();\n  $('[data-ajax-cart-add-button]').trigger('click');\n});\n\nif (window.location.href.indexOf('products') > -1) {\n  $('[data-media-play]').on('click', function () {\n    var playerSlider = $(this).prev();\n\n    if ($(playerSlider).hasClass('external_video')) {\n      $(playerSlider)[0].src += \"&autoplay=1\";\n    } else {\n      $(playerSlider)[0].play();\n    }\n\n    $(this).hide();\n  });\n} // Product popular accesoires box product popup: OPEN\n\n\n$('[data-product-popup-toggle]').on('click', function (e) {\n  var variantId = $(this).data('product-popup-toggle');\n  if (variantId === null) return;\n  $(\"[data-product-popup-show=\\\"\".concat(variantId, \"\\\"\")).addClass('is-open has-padding');\n  $('body').addClass('no-scroll');\n}); // Product popular accesoires box product popup: CLOSE ON CROSS\n\n$('[data-product-popup-close]').on('click', function (e) {\n  e.preventDefault();\n  var $el = $('[data-product-popup-show].is-open');\n  closeProductPopup($el);\n}); // Product popular accesoires box product popup: CLOSE ON ESC KEY\n\n$(document).keyup(function (e) {\n  if (e.keyCode == 27 && $('[data-product-popup-show]').hasClass('is-open')) {\n    var $el = $('[data-product-popup-show].is-open');\n    closeProductPopup($el);\n  }\n}); // Function to close product popup (called several times)\n\nfunction closeProductPopup($el) {\n  if (typeof $el === 'undefined') return;\n  $el.removeClass('is-open');\n  setTimeout(function () {\n    $el.removeClass('has-padding');\n    $('body').removeClass('no-scroll');\n  }, 200);\n} // Close product popup on outside click\n\n\n$('html').click(function (e) {\n  if (!$('.product-pop-acc__popup.is-open').length) return;\n\n  if ($(e.target).hasClass('product-pop-acc__popup') && $(e.target).hasClass('is-open')) {\n    var $el = $('[data-product-popup-show].is-open');\n    closeProductPopup($el);\n  }\n\n  ;\n});\n$('[data-show-rest]').on('click', function () {\n  var text = $('[data-show-rest]').text().trim();\n  var showLess = $('[data-show-rest]').data('less-text');\n  var showMore = $('[data-show-rest]').data('more-text');\n  $('.block-hidden-articles').slideToggle();\n  $('[data-show-rest]').text(text == showMore ? showLess : showMore);\n});\n$(window).scroll(function (e) {\n  if ($(window).scrollTop() >= ($(document).height() - $(window).height()) * 0.5) {\n    try {\n      versaTagObj.onready(function () {\n        versaTagObj.setConditionalParam(\"scroll_rate\", \"percent_50\");\n        versaTagObj.generateRequest();\n      });\n      $(this).off(e);\n    } catch (e) {\n      console.log(e);\n    }\n  }\n});\n\nvar selectIDC = function selectIDC(handleIDC, colorValue) {\n  if (colorValue === 'Black') {\n    $('.indoor-cam-addon img').attr('src', 'https://cdn.shopify.com/s/files/1/2418/9735/products/IDCBlack_front2_1000x1000_c7fed1e4-794a-4571-87df-98c7977dd0aa_150x150@3x.png?v=1642603774');\n  } else {\n    $('.indoor-cam-addon img').attr('src', 'https://cdn.shopify.com/s/files/1/2418/9735/products/IDC_front_150x150@3x.png?v=1642603774');\n  }\n\n  $('input[data-kit-builder-product]').attr('checked', false);\n  $(\"[data-selected-product=\\\"\".concat(handleIDC, \"\\\"]\")).find('[data-kit-builder-product]').attr(\"checked\", true);\n  var url = new URL(window.location.href);\n\n  if (colorValue === 'Black') {\n    url.searchParams.set('variant', 'black');\n  } else {\n    url.searchParams.delete('variant');\n  }\n\n  history.pushState('', '', url);\n  var handle = $(\"[data-selected-product=\\\"\".concat(handleIDC, \"\\\"]\")).data('selected-product');\n  var imageSelector = '[data-selected-product-image=\"' + handle + '\"]';\n\n  if ($('.product-single-image').length > 0) {\n    $(imageSelector).removeClass('is-hidden');\n  } else if ($('[data-product-thumb]').length > 0) {\n    $('[data-product-thumb]').addClass('is-hidden');\n    $(imageSelector).removeClass('is-hidden');\n    var mainIndex = $(imageSelector).first().data('thumb-index');\n    mainIndex -= 1;\n    var swiper = document.querySelector('.swiper-container-horizontal').swiper;\n    swiper.slideTo(mainIndex, false, false);\n  }\n};\n\n$('label.color-swatch-idc').on('click', function (e) {\n  e.stopImmediatePropagation();\n  $('label.color-swatch-idc').removeClass('checked');\n  $(this).addClass('checked');\n  var mainProduct = $(this).data('main-product');\n  var colorValue = $(this).attr('value');\n\n  if (mainProduct === 'alarm-security-5-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'Black') {\n    selectIDC('alarm-black-indoor-cam-pack-s', colorValue);\n  } else if (mainProduct === 'alarm-security-5-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'White') {\n    selectIDC('alarm-security-5-piece-kit-gen-2-indoor-cam-gen-2', colorValue);\n  } else if (mainProduct === 'alarm-security-7-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'Black') {\n    selectIDC('alarm-black-indoor-cam-pack-m', colorValue);\n  } else if (mainProduct === 'alarm-security-7-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'White') {\n    selectIDC('alarm-security-7-piece-kit-gen-2-indoor-cam-gen-2', colorValue);\n  } else if (mainProduct === 'alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'Black') {\n    selectIDC('alarm-black-indoor-cam-pack-l', colorValue);\n  } else if (mainProduct === 'alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'White') {\n    selectIDC('alarm-security-10-piece-kit-gen-2-indoor-cam-gen-2', colorValue);\n  } else if (mainProduct === 'alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'Black') {\n    selectIDC('alarm-black-indoor-cam-siren-pack-m', colorValue);\n  } else if (mainProduct === 'alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'White') {\n    selectIDC('alarm-security-8-piece-kit-gen-2-indoor-cam-gen-2', colorValue);\n  } else if (mainProduct === 'alarm-security-11-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'Black') {\n    selectIDC('alarm-black-indoor-cam-siren-pack-l', colorValue);\n  } else if (mainProduct === 'alarm-security-11-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'White') {\n    selectIDC('alarm-security-11-piece-kit-gen-2-indoor-cam-gen-2', colorValue);\n  } else if (mainProduct === 'alarm-security-13-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'Black') {\n    selectIDC('alarm-black-indoor-cam-siren-pack-xl', colorValue);\n  } else if (mainProduct === 'alarm-security-13-piece-kit-gen-2-indoor-cam-gen-2' && colorValue === 'White') {\n    selectIDC('alarm-security-13-piece-kit-gen-2-indoor-cam-gen-2', colorValue);\n  }\n});\n$(document).ready(function () {\n  if (window.location.search.indexOf('black') > -1) {\n    $('.kit-builder-item.selected').find('label.color-swatch-idc').click();\n  }\n});\n/********** Responsive Video **********/\n//get all responsive videos\n\nvar responsiveVideo = document.querySelectorAll('#responsive-video'); //set video src and poster\n\nfunction setResponsiveVideoSource(element, src, poster) {\n  element.setAttribute('src', src);\n  element.setAttribute('poster', poster);\n} //determine screen size and select mobile, tablet, or desktop video src and poster/fallback\n\n\nfunction whichSizeVideo(element, src) {\n  var currentSrc = element.getAttribute('src');\n  var desktopSrc = src.dataset.desktopVid;\n  var tabletSrc = src.dataset.tabletVid;\n  var mobileSrc = src.dataset.mobileVid;\n  var currentPoster = element.getAttribute('poster');\n  var desktopPoster = element.dataset.desktopPoster;\n  var tabletPoster = element.dataset.tabletPoster;\n  var mobilePoster = element.dataset.mobilePoster;\n\n  if ($.code.ww > 1024 && desktopSrc != currentSrc && desktopPoster != currentPoster) {\n    setResponsiveVideoSource(element, desktopSrc, desktopPoster);\n  } else if ($.code.ww > 768 && $.code.ww < 1024 && tabletSrc != currentSrc && tabletPoster != currentPoster) {\n    setResponsiveVideoSource(element, tabletSrc, tabletPoster);\n  } else if ($.code.ww < 767 && mobileSrc != currentSrc && mobilePoster != currentPoster) {\n    setResponsiveVideoSource(element, mobileSrc, mobilePoster);\n  }\n} //init only if page has responsive videos\n\n\nfunction responsiveVideoSetSize() {\n  if (responsiveVideo !== undefined) {\n    responsiveVideo.forEach(function (element, index) {\n      whichSizeVideo(element, //element\n      element //src locations\n      );\n    });\n  }\n}\n\nresponsiveVideoSetSize(); //PROMO EMAIL POPUP\n\nif ($(\"#promo-email-popup\").length > 0) {\n  // Convert hours to milliseconds \n  // Cookie Getter\n  var getCookieValue = function getCookieValue(cookieName) {\n    var cookie = document.cookie.split('; ').find(function (cookie) {\n      return cookie.startsWith(cookieName + '=');\n    });\n    return cookie ? cookie.split('=')[1] : null;\n  }; // Cookie Setter\n\n\n  var setCookie = function setCookie(cookieName, cookieValue, expirationMilliseconds) {\n    var expirationDate = new Date();\n    expirationDate.setTime(expirationDate.getTime() + expirationMilliseconds);\n    var cookieString = cookieName + '=' + cookieValue + '; expires=' + expirationDate.toUTCString() + '; path=/';\n    document.cookie = cookieString;\n  }; // Fancybox Popup\n\n\n  var initPromoEmailPopup = function initPromoEmailPopup(delay) {\n    setTimeout(function () {\n      $.fancybox.open({\n        src: '#promo-email-content',\n        type: 'inline',\n        beforeClose: function beforeClose() {\n          // Set the 'popupClosed' cookie when the popup is closed\n          var lastClosedTime = new Date().getTime();\n          setCookie(popupClosedCookieName, lastClosedTime, popupCooldown);\n        },\n        afterClose: function afterClose() {\n          // Set the 'popupSubmitted' cookie after the form is submitted\n          var formSubmitted = $('#contact_form').data('submitted');\n\n          if (formSubmitted) {\n            setCookie(popupSubmittedCookieName, 1, 365 * 24 * 60 * 60 * 1000); // 1 year expiration\n          }\n        }\n      });\n    }, delay);\n  };\n\n  var popupSubmittedCookieName = 'promoPopupSubmitted';\n  var popupClosedCookieName = 'promoPopupClosed';\n  var popupAutoClose = $('#promo-email-popup').data('popup-autoclose') * 1000; // Convert seconds to milliseconds\n\n  if (window.location.href.indexOf(\"?customer_posted=true\") > -1) {\n    var popupDelay = 0;\n    setTimeout(function () {\n      $.fancybox.close();\n    }, popupAutoClose);\n  } else {\n    var popupDelay = $('#promo-email-popup').data('popup-delay') * 1000;\n  }\n\n  var popupCooldown = $('#promo-email-popup').data('popup-cooldown') * 60 * 60 * 1000;\n  $(document).ready(function () {\n    var popupSubmittedValue = getCookieValue(popupSubmittedCookieName);\n\n    if (!popupSubmittedValue) {\n      var popupClosedValue = getCookieValue(popupClosedCookieName);\n\n      if (!popupClosedValue || popupClosedValue && new Date().getTime() - popupClosedValue >= popupCooldown) {\n        initPromoEmailPopup(popupDelay);\n      }\n    }\n  });\n} //Ring Home module accordion image changes\n\n\nvar subsModuleTrigger = $('.accordion-frame [data-collapsible-trigger]');\nvar subsModuleActiveImage = $('[data-ring-home-module-img]');\nsubsModuleTrigger.on('click', function () {\n  var $target = $(this).parent().siblings('.collapsible__is-open').children('[data-collapsible-target]'); // Animate target closed\n\n  var totalHeight = 0;\n  $target.children().each(function () {\n    totalHeight = totalHeight + $(this).outerHeight(true);\n  });\n  $target.stop().css({\n    maxHeight: totalHeight\n  }).animate({\n    maxHeight: 0\n  }, function () {\n    // Toggle class on parent and close all children\n    $(this).parent().removeClass('collapsible__is-open').find('.collapsible__is-open').removeClass('collapsible__is-open');\n    $target.css({\n      maxHeight: ''\n    });\n  });\n  var newImageUrl = $(this).data(\"img-src\");\n  subsModuleActiveImage.attr('src', newImageUrl);\n});"],
  "mappings": "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",
  "names": ["obj", "e", "t", "n", "o", "l", "b", "v", "k", "g", "r", "h", "s", "a", "w", "i", "y", "c", "d", "p", "m", "u", "f", "$", "D", "F", "Q", "j", "q", "x", "T", "E", "S", "C", "M", "z", "P", "L", "I", "O", "A", "H", "N", "G", "B", "X", "Y", "V", "R", "W", "U", "K", "_", "Z", "ja", "Oa", "J", "_a", "ScrollMagic", "index", "window", "console", "method", "option", "document", "undefined", "self", "errorText", "url", "URL", "value", "data", "$element", "element", "CompareChart", "VideoBlock", "BannerVideo", "PdpVideo", "InteractiveHouse", "StickyNav", "anchor", "countdownTimer", "mySwiper", "fileArray", "originalImage", "cookie"]
}
